merge: upstream v2026.6.11 into fork main (dependability release)#93
Conversation
… runtime compaction (openclaw#89886) Merged via squash. Prepared head SHA: ff5a439 Co-authored-by: openperf <[email protected]> Co-authored-by: vincentkoc <[email protected]> Reviewed-by: @vincentkoc
…l result (openclaw#95860) findCutPoint defaulted cutIndex to the earliest valid cut (cutPoints[0], keep everything) and only moved it forward to a cut point at or after the backward token cursor. When the final entry is a toolResult whose estimate alone meets keepRecentTokens, the cursor stops at that trailing toolResult index, no valid cut point sits at or after it (toolResult entries are not valid cut points), and the default stuck at keep-everything. Compaction then summarized zero messages, so preflight and overflow compaction silently no-op and the session loops on a context it cannot shrink. Default cutIndex to the most recent valid cut before the forward search. When a cut point exists at or after the cursor the search still finds it and behavior is unchanged; only the trailing-tool-result case now keeps the recent tail and summarizes the prefix.
… 128K (openclaw#95934) * fix(xiaomi): correct mimo-v2.5 and mimo-v2.5-pro max output tokens to 131072 * docs(xiaomi): correct mimo-v2.5 and mimo-v2.5-pro max output tokens to 131072
…law#95886) Merged via squash. Prepared head SHA: 400e87c Co-authored-by: fuller-stack-dev <[email protected]> Reviewed-by: @fuller-stack-dev
Subagent runs do not have a live stream consumer; their result is delivered from the terminal message path after the child run finishes. The intermediate message_update stream work only feeds live preview output. Thread suppressLiveStreamOutput from the subagent lane into the embedded runner subscription and return from handleMessageUpdate after accumulating the raw chunk. This keeps final delivery unchanged while skipping per-chunk visible text and reasoning stream parsing for subagents, which reduces event-loop pressure when multiple child agents stream long answers in parallel. Interactive and Control UI runs keep the existing live preview path. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]> (cherry picked from commit e0382c2c58c3eabdf64638777ec82cb1e68514e9)
…alues (openclaw#87861) Merged via squash. Prepared head SHA: 11bb571 Co-authored-by: coder999999999 <[email protected]> Co-authored-by: vincentkoc <[email protected]> Reviewed-by: @vincentkoc
…penclaw#94369) Merged via squash. Prepared head SHA: c2dca7e Co-authored-by: SunnyShu0925 <[email protected]> Co-authored-by: vincentkoc <[email protected]> Reviewed-by: @vincentkoc
Merged via squash. Prepared head SHA: 8102961 Co-authored-by: rohitjavvadi <[email protected]> Co-authored-by: vincentkoc <[email protected]> Reviewed-by: @vincentkoc
openclaw#92356) Merged via squash. Prepared head SHA: 5885fbb Co-authored-by: tangtaizong666 <[email protected]> Co-authored-by: vincentkoc <[email protected]> Reviewed-by: @vincentkoc
Backport of openclaw#97118 to release/2026.6.11.
* ci(docker): publish releases to Docker Hub * ci(docker): clarify beta image tags (cherry picked from commit b70d1aa)
Merges openclaw/openclaw v2026.6.11 (e085fa1, 3811 commits since merge-base a3d5e5b) into BenchAGI fork main (594c91e). Conflict resolutions (30 files): - extensions/anthropic/openclaw.plugin.json: upstream base (icon, fable-5, haiku-4-5 catalog) + fork deltas: claude-cli-ultracode backend, claude-sonnet-5 in both model lists, sonnet-5 alias, onStartup=true. - extensions/anthropic/cli-shared.ts: union — fork --settings ultracode injection + upstream side-question arg stripping. - src/agents/cli-runner/prepare.ts: upstream side-question restructure + fork tier1 retrieval-at-start + sonnet-5 context aliases. - src/agents/cli-runner/reliability.ts: both watchdog features combined (fork interactive-webchat 240s profile + upstream explicit-run-timeout). - src/gateway/openai-http.ts: union imports/buffers; upstream conditional allowModelOverride + fork toolsAllow passthrough; C1/C3 salvage kept. - src/gateway/openresponses-http.ts: same allowModelOverride + toolsAllow. - src/gateway/server-methods/sessions.ts: fork thinkingLevel/reasoningLevel + inherit-selection woven into upstream createSessionEntryWithTranscript. - src/gateway/agent-event-assistant-text.ts: union (fork stream-salvage + upstream replaceable-snapshot helpers). - src/daemon/launchd.ts + diagnostics.ts: upstream structure + fork #87 real stderr log preserved. - src/commands/models/auth.ts: upstream remote-env path + fork provider-default-model imports. - deps: upstream pins preferred (vitest 4.1.8, protobufjs 7.6.3 override — outside GHSA-wcpc-wj8m-hjx6 range; @vitest/browser override aligned 4.1.8). - lockfiles/shrinkwraps/generated baselines: upstream taken; pnpm install reconciles fork-only packages. - tests: unions of both sides' additions; upstream fixture variants where both fixed the same gap. - codeql workflow: fork repo-guard + upstream ubuntu-24.04 runners. Co-Authored-By: Claude Fable 5 <[email protected]>
Test-surface alignment after the upstream merge (no runtime behavior changes): - restore the fork's readSessionStore gateway test helper (dropped by auto-merge when upstream restructured test-helpers.server.ts); used by the #71 thinkingLevel sessions.create tests - bundled-plugin-metadata: include anthropic in the expected startup plugin sets (fork #88 activates it eagerly for claude-cli-ultracode durability) - workspace.load-extra-bootstrap-files test: upstream removed the loadExtraBootstrapFiles wrapper; use loadExtraBootstrapFilesWithDiagnostics - models/auth test: upstream masked the paste-token prompt (text -> password); mock clackPassword - plugin-sdk-surface-report: raise default budgets to the fork's actual surface (fork ships extra public exports: tier1, promote-file, injectClaudeSettings, memory-durability, session-digest) Verified NOT merge-caused (fail identically on pristine v2026.6.11 with a built dist): model-compat/moonshot/qwen/image/provider-catalog-shared streaming-usage cluster (manifest scan prefers dist/extensions which excludes non-bundled provider plugins), resolve-openclaw-ref (env), backup-create, exec-approvals-analysis. Co-Authored-By: Claude Fable 5 <[email protected]>
Dependency GuardThis PR changes dependency-related files. Maintainers should confirm these changes are intentional. Changed files:
Maintainer follow-up:
|
Dependency graph changes are blockedOpenClaw does not accept dependency graph changes through PRs unless a repository admin or security explicitly authorizes the current head SHA. Dependency updates are generated internally by maintainers so external PRs cannot change the resolved graph. Detected dependency graph changes:
Auto-scrub was not attempted because this PR changes package manifest dependency graph fields:
Dependency graph changes must be reviewed by security or handled by maintainers internally. Please remove lockfile changes manually if they are not needed. To remove lockfile changes, restore them from the target branch: git fetch origin
git checkout 'origin/main' -- 'extensions/acpx/npm-shrinkwrap.json' 'extensions/amazon-bedrock-mantle/npm-shrinkwrap.json' 'extensions/amazon-bedrock/npm-shrinkwrap.json' 'extensions/anthropic-vertex/npm-shrinkwrap.json' 'extensions/arcee/npm-shrinkwrap.json' 'extensions/brave/npm-shrinkwrap.json' 'extensions/cerebras/npm-shrinkwrap.json' 'extensions/chutes/npm-shrinkwrap.json' 'extensions/clickclack/npm-shrinkwrap.json' 'extensions/cloudflare-ai-gateway/npm-shrinkwrap.json' 'extensions/codex/npm-shrinkwrap.json' 'extensions/cohere/npm-shrinkwrap.json' 'extensions/copilot/npm-shrinkwrap.json' 'extensions/deepinfra/npm-shrinkwrap.json' 'extensions/deepseek/npm-shrinkwrap.json' 'extensions/diagnostics-otel/npm-shrinkwrap.json' 'extensions/diagnostics-prometheus/npm-shrinkwrap.json' 'extensions/diffs-language-pack/npm-shrinkwrap.json' 'extensions/diffs/npm-shrinkwrap.json' 'extensions/discord/npm-shrinkwrap.json' 'extensions/exa/npm-shrinkwrap.json' 'extensions/feishu/npm-shrinkwrap.json' 'extensions/firecrawl/npm-shrinkwrap.json' 'extensions/fireworks/npm-shrinkwrap.json' 'extensions/gmi/npm-shrinkwrap.json' 'extensions/google-meet/npm-shrinkwrap.json' 'extensions/googlechat/npm-shrinkwrap.json' 'extensions/gradium/npm-shrinkwrap.json' 'extensions/groq/npm-shrinkwrap.json' 'extensions/inworld/npm-shrinkwrap.json' 'extensions/irc/npm-shrinkwrap.json' 'extensions/kilocode/npm-shrinkwrap.json' 'extensions/kimi-coding/npm-shrinkwrap.json' 'extensions/line/npm-shrinkwrap.json' 'extensions/llama-cpp/npm-shrinkwrap.json' 'extensions/lobster/npm-shrinkwrap.json' 'extensions/matrix/npm-shrinkwrap.json' 'extensions/mattermost/npm-shrinkwrap.json' 'extensions/memory-lancedb/npm-shrinkwrap.json' 'extensions/moonshot/npm-shrinkwrap.json' 'extensions/msteams/npm-shrinkwrap.json' 'extensions/nextcloud-talk/npm-shrinkwrap.json' 'extensions/nostr/npm-shrinkwrap.json' 'extensions/openshell/npm-shrinkwrap.json' 'extensions/parallel/npm-shrinkwrap.json' 'extensions/perplexity/npm-shrinkwrap.json' 'extensions/pixverse/npm-shrinkwrap.json' 'extensions/qianfan/npm-shrinkwrap.json' 'extensions/qqbot/npm-shrinkwrap.json' 'extensions/qwen/npm-shrinkwrap.json' 'extensions/raft/npm-shrinkwrap.json' 'extensions/searxng/npm-shrinkwrap.json' 'extensions/signal/npm-shrinkwrap.json' 'extensions/slack/npm-shrinkwrap.json' 'extensions/sms/npm-shrinkwrap.json' 'extensions/stepfun/npm-shrinkwrap.json' 'extensions/synology-chat/npm-shrinkwrap.json' 'extensions/tavily/npm-shrinkwrap.json' 'extensions/tencent/npm-shrinkwrap.json' 'extensions/tlon/npm-shrinkwrap.json' 'extensions/tokenjuice/npm-shrinkwrap.json' 'extensions/twitch/npm-shrinkwrap.json' 'extensions/venice/npm-shrinkwrap.json' 'extensions/vercel-ai-gateway/npm-shrinkwrap.json' 'extensions/voice-call/npm-shrinkwrap.json' 'extensions/whatsapp/npm-shrinkwrap.json' 'extensions/zai/npm-shrinkwrap.json' 'extensions/zalo/npm-shrinkwrap.json' 'extensions/zalouser/npm-shrinkwrap.json' 'npm-shrinkwrap.json' 'pnpm-lock.yaml'
git commit -m 'chore: remove dependency lockfile change'
git pushIf this PR intentionally needs a dependency graph change, ask a repository admin or member of The action will approve the current head SHA ( |
…bol (TS2527/TS4058 after #92 merge)
…merge/upstream-v2026.6.11
merge: upstream v2026.6.11 into fork main (dependability release)
Merges
openclaw/openclawv2026.6.11 (e085fa1a3ff, 3,811 commits since merge-basea3d5e5bc724) into BenchAGI forkmain(594c91e71d8, 68 fork commits). Zero live impact: built and gated in a fresh worktree (wt-merge-2026611).Conflicts (30 files) and how each was resolved
extensions/anthropic/openclaw.plugin.jsonclaude-fable-5,claude-haiku-4-5catalog) + re-applied fork deltas:claude-cli-ultracodeincliBackends,claude-sonnet-5in both CLI+API model lists,sonnet-5alias,onStartup: trueextensions/anthropic/cli-shared.ts--settings {"ultracode":true}injection (injectClaudeSettings/mergeClaudeSettingsJson) + upstream's side-question arg stripping (resolveClaudeCliSideQuestionExecutionArgs)src/agents/cli-runner/prepare.tssonnet-5/sonnet-5.0context aliasessrc/agents/cli-runner/reliability.ts(+ test)useResumevs!useResume). Tests unionedsrc/gateway/openai-http.ts(+ test)allowModelOverrideadopted + forktoolsAllow(plan/review read-only #79) passthrough kept. Tests unioned (fork SSE-keepalive test + upstream replaceable tests)src/gateway/openresponses-http.tsallowModelOverride+ forktoolsAllowsrc/gateway/server-methods/sessions.tsthinkingLevel/reasoningLevelat create (#71) + inherit-parent-selection woven into upstream's new atomiccreateSessionEntryWithTranscript(explicit levels still win over inherited — inherit is pre-seeded before patch)src/gateway/agent-event-assistant-text.tssrc/daemon/launchd.ts,src/daemon/diagnostics.tssrc/commands/models/auth.tsinfra/remote-env.jsimport + fork's provider-default-model (#75) imports; feature body auto-mergedsrc/commands/agent-via-gateway.test.tsextensions/memory-core/src/cli.test.tsextensions/slack/.../prepare.test.tssessionIdto the same fixtures; took upstream id strings (not asserted anywhere)test/scripts/docker-build-helper.test.ts.github/workflows/codeql-critical-quality.ymlgithub.repository == 'openclaw/openclaw', #48/#49) kept on all 3 jobs + upstream'subuntu-24.04runner migrationpackage.json,ui/package.jsonpnpm-workspace.yamlprotobufjs: 7.6.3(upstream; outside GHSA-wcpc-wj8m-hjx6 range>=8.0.0 <=8.4.0— fork's 8.4.2 pin superseded), hono/form-data identical values -> upstream lines, fork esbuild release-age excludes + upstream crabline exclude both kept, fork@vitest/browseroverride aligned to 4.1.8pnpm-lock.yaml, 4xnpm-shrinkwrap.json,docs/.generated/*,docs/plugins/*, glossaryGate results
594c91e71d8+e085fa1a3ff;package.jsonversion2026.6.11npx [email protected]), 28.3s, supply-chain policy check passed, nominimumReleaseAgeholdsnode scripts/build-all.mjs75–78s;dist/build-info.jsoncommit == HEAD; fork #85 lineage self-report works:v2026.6.11-67-g<sha>.nodemodules (plan expected ~86 — upstream dep changes account for the delta);dist/index.js --versionprintsOpenClaw 2026.6.11on brew node 26.4.0 and pinned~/.local/node-v26.3.0-darwin-arm64node scripts/test-projects.mjs(89 shards). 9 merge-caused test failures found and fixed in the follow-up integration commit (all re-run green, incl. the #90 two-backend contract tests and #71 sessions.create thinkingLevel suite). All remaining failures verified pre-existing: they fail byte-identically on a pristine v2026.6.11 checkout under the same conditions (see below)OPENCLAW_HOME+HOMEscratch dir, minimal config (gateway.mode=local, token auth, chatCompletions enabled) — gateway refuses to boot unconfigured (expected);/ready200,/v1/modelsfake-bearer 401, no-bearer 401, correct-bearer 200; killed + scratch removedG5 detail — merge-caused fixes (commit 2 on this branch)
server.sessions.create.test.ts×3 — restored the fork'sreadSessionStoregateway test helper (auto-merge dropped it when upstream restructuredtest-helpers.server.ts)bundled-plugin-metadata.test.ts×2 — upstream's new expected-startup-plugin sets now includeanthropic(fork fix(plugins): ultracode harness durability — declare claude-cli-ultracode in the anthropic manifest #88 deliberately activates it eagerly forclaude-cli-ultracodeharness durability)workspace.load-extra-bootstrap-files.test.ts×1 — fork test updated toloadExtraBootstrapFilesWithDiagnostics(upstream removed the thin wrapper)models/auth.test.ts×1 — upstream masked the paste-token prompt (text → password); fork feat(onboarding): adopt the provider's recommended model on first key placement (draft) #75 test now mocksclackPasswordplugin-sdk-surface-report×2 — default budgets raised to the fork's actual public surface (fork ships extra exports: tier1 retrieval, promote-file, injectClaudeSettings, memory-durability + session-digest plugins)G5 detail — verified pre-existing (NOT merge-caused; no action)
model-compat×3,models-config.moonshot×1,openai-transport-streamDSML ×~9,media-understanding/image×1,provider-catalog-shared×2,extensions/{moonshot,qwen}×3): whendist/extensionsexists, the manifest scan prefers the built bundle, which excludes non-bundled provider plugins (qwen/moonshot) → capability lookups miss. Fails identically on pristine v2026.6.11 with a dist build present; passes on unbuilt checkouts (60/60 etc.), which is how upstream CI and fork CI run. The merge tree's agents-core failure set is a strict subset of pristine upstream's under identical conditions.resolve-openclaw-ref×5,backup-create×2,exec-approvals-analysis×1): fail identically on pristine v2026.6.11 on this box.Typechecks:
tsgocore + core-test + extensions-test all clean on the final tree.Ultracode survival (the fork's dual-subscription runtime)
cliBackends: ["claude-cli", "claude-cli-ultracode"]in the shipped anthropic manifest (fix(plugins): ultracode harness durability — declare claude-cli-ultracode in the anthropic manifest #88)isClaudeCliProviderrecognizes the wholeclaude-cli-*family in the stream-json dialect gate (fix(agents): recognize the claude-cli-* family in the stream-json dialect gate #80) —src/agents/cli-output.ts--settings {"ultracode":true}injection intact —extensions/anthropic/cli-shared.ts(feat(anthropic): commit the ultracode claude-cli backend to source #77)src/gateway/agent-event-assistant-text.ts,openai-http.ts(feat(gateway): land console C1 stream-salvage + C3 ask_choice bridge #82)src/plugins/anthropic-manifest-cli-backends.test.ts("declares both claude-cli backends so the setup fallback can resolve ultracode") +plugin-registration-contract-cases.ts(cliBackendIds: ["claude-cli", "claude-cli-ultracode"])Upstream changes that touch our bridges / relay / web lane (heads-up for canary)
x-openclaw-modelheader now requires owner identity (else 403 missingoperator.admin) on OpenAI-compat HTTP (authorizeOpenAiCompatibleHttpModelOverride). Any lane passing a model override header with a non-owner token will start 403ing.allowModelOverrideis now conditional (params.modelOverride !== undefined) on chat-completions/responses turns — previously unconditionallytrue.x-openclaw-agent-idmust name a configured agent — unknown/invalid agent ids now error instead of falling back.x-openclaw-session-keyrejects reserved namespaces (subagent:,cron:,acp:). Our lanes useagent:main:*/ webchat keys — unaffected, but do not point lanes at internal keys.buildRateLimitIdentityKey) — failed-auth storms are limited even from loopback; a bridge with a stale bearer will get rate-limited faster. Newnode-reapprovallimiter scope.resolveGatewayConnectionAuthFromConfigremoved from gateway public surface — no fork/bridge code references it (verified).mcp-http.loopback-runtime.ts, +339 lines) and larger mcp-http changes — relevant to Claude-Code-bridge MCP surfaces; behavior verified only via test suite here, worth a bridge healthz + tool-list check at canary.createSessionEntryWithTranscript) — the durable-state restart-handoff headline feature; kickstart continuity test at canary (fix(webchat): sessions persist after reconnects openclaw/openclaw#89017) exercises this.Canary
Canary: mini2 → 24h soak → aerie per approved runbook.
🤖 Generated with Claude Code