fix(upstream-sync): selective cherry-picks from openclaw 58e9628300..fa39bef389#232
Merged
Merged
Conversation
…ion (openclaw#85862) Summary: - The PR skips agent-harness compaction preflight for provider-owned or configured CLI runtime sessions, adds claude-cli regression coverage, includes a changelog entry, and applies small test/type cleanups. - Reproducibility: yes. at source level. Current main still routes provider-owned `claude-cli` runtime compaction preflight through harness selection, where `claude-cli` is not a registered embedded harness. Automerge notes: - PR branch already contained follow-up commit before automerge: fix openclaw#84857: skip CLI runtime harness preflight during compaction - PR branch already contained follow-up commit before automerge: fix(clawsweeper): address review for automerge-openclaw-openclaw-8487… Validation: - ClawSweeper review passed for head 1dd8a88. - Required merge gates passed before the squash merge. Prepared head SHA: 1dd8a88 Review: openclaw#85862 (comment) Co-authored-by: 张贵萍0668001030 <zhang.guiping@xydigit.com> Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com> Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com> Approved-by: takhoffman Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com> # Conflicts: # CHANGELOG.md # extensions/meeting-notes/index.test.ts # extensions/meeting-notes/src/tool.ts # src/agents/harness/selection.test.ts # src/agents/harness/selection.ts # src/gateway/server-startup-post-attach.test.ts
# Conflicts: # src/agents/sandbox/fs-paths.ts
# Conflicts: # src/agents/sandbox/workspace-skills-bridge-readonly.test.ts
# Conflicts: # src/agents/sandbox/browser.create.test.ts # src/agents/sandbox/docker.config-hash-recreate.test.ts
# Conflicts: # src/commands/backup-verify.test.ts # src/infra/backup-create.test.ts # src/infra/backup-create.ts
…5777) The auto-reply "delivery failed" log path passes a raw Error under the `err` field. tslog's default JSON serialization renders bare Error instances as `{}` because Error own data properties are non-enumerable. Every delivery failure in production therefore logs `err: {}`, forcing operators to guess the underlying Baileys error from timestamp alone. Convert Error to `{ type, message, stack }` plus own-enumerable properties at the log site, so Boom-style subclass diagnostics (output.statusCode, data) and custom OutboundDeliveryError fields (stage, results) survive. Non-Error rejection values pass through unchanged. Tests cover Error, Error subclass (Boom-style), string rejection, and object rejection paths. AI-assisted: Claude Code (Opus 4.7) authored, codex review locally addressed. # Conflicts: # extensions/whatsapp/src/auto-reply/monitor/inbound-dispatch.test.ts # extensions/whatsapp/src/auto-reply/monitor/inbound-dispatch.ts
…rry-pick conflict resolution artifact)
- Add AgentRuntimePolicyConfig to types.agents-shared.ts - Add agentRuntime field to AgentModelEntryConfig, ModelDefinitionConfig, ModelProviderConfig - Add models field to AgentConfig - Add relativePathEscapesContainerRoot to sandbox/path-utils.ts - Add backup-volatile-filter.ts from upstream (isVolatileBackupPath) - Add writeTarArchiveWithRetry, buildExtensionsNodeModulesFilter to backup-create.ts - Fix resolveConfiguredAgentHarnessPolicy -> resolveAgentHarnessPolicy in selection.ts
…75a7 patch The previous cherry-pick of c8b75a7 (and fa39bef duplicate) introduced upstream-only files (v2.ts, policy.ts, result-classification.ts, etc.) that depend on types not present in gemmaclaw, and corrupted several test files. This commit reverts all wrongly-introduced upstream-only files to their gemmaclaw branch-point state and applies only the actual c8b75a7 change: - Add isCliRuntimeProvider/isCliRuntimeAliasForProvider guards to maybeCompactAgentHarnessSession to skip compaction preflight for CLI runtimes - Add minimal gemmaclaw-compatible tests for the new skip behavior - Remove dead code introduced by the rollback (staging-based archive helpers, unused imports, unreachable functions) - Delete upstream-only meeting-notes extension files not in gemmaclaw - Restore all test files to their gemmaclaw-compatible versions
…root-owned files) Docker git clones create root-owned .promisor files that are unreadable on the host. Add accessSync R_OK check in tarFilter to skip such files gracefully. Also fix sandbox tests to use real temp directories instead of hardcoded /tmp/workspace paths for more robust test isolation.
…re logging The cherry-pick of f0ec730 added logWhatsAppReplyDeliveryError and normalizeErrForLog but missed wiring onError in dispatcherOptions because the upstream base already had the onError call site (added in a prior upstream commit not in our range). Add the missing onError handler so delivery failures are logged with serialized Error objects.
…commit Commit 0696195 was overly aggressive: it reverted upstream-only harness files but also stripped ReplyDeliveryInfo, normalizeErrForLog, and logWhatsAppReplyDeliveryError that were legitimately added by our WhatsApp cherry-pick (2688cf4). Restore them so onError can call logWhatsAppReplyDeliveryError correctly.
…line extensions/whatsapp/runtime-setter-api.ts was added by cherry-pick but the generated baseline JSON was not updated. Run runtime-sidecars:gen to add dist/extensions/whatsapp/runtime-setter-api.js.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Selective cherry-pick sync of relevant upstream openclaw commits (range
58e9628300..fa39bef389), skipping commits that conflict with gemmaclaw architecture or introduce incompatible harness restructuring.Changes included
BackupLinkCachedisables hardlink deduplication in tartarFilterviaaccessSync(R_OK)check — handles root-owned.promisorfiles created by Docker git clonesresolveReadOnlyWorkspaceSkillMountsoverlays skills directories read-only; split agent workspace mountscomputeSandboxConfigHashincludes mount format version and explicit env policy epochTest fixes
workspace-mounts.test.ts: replaced hardcoded/tmp/workspacewith isolated temp dirs to prevent false positives when/tmp/workspace/skillsexists on disk from prior smoke runsdocker.config-hash-recreate.test.ts: same isolation fix for 3 tests that computed config hashes against hardcoded pathsSkipped upstream commits
Skipped harness restructuring (c8b75a7) that conflicts with gemmaclaw-specific harness layout; applied only the minimal relevant subset via cherry-pick conflict resolution.
Test plan
pnpm test src/agents/sandbox/workspace-mounts.test.ts src/agents/sandbox/docker.config-hash-recreate.test.ts— 20/20 passGEMMACLAW_LOCAL_AGENT_SMOKE_REQUIRED=1 pnpm test:docker:gemmaclaw-setup-live-smoke