Commit Graph

19908 Commits

Author SHA1 Message Date
Josh Lehman ffa45893e0
fix: restore post-rebase prepare gates 2026-03-17 07:10:59 -07:00
Josh Lehman 0e5552bd2c
tests: satisfy gateway plugin error shape 2026-03-17 07:10:59 -07:00
Josh Lehman ad52e6bc08
docs: record plugin subagent override forwarding 2026-03-17 07:10:59 -07:00
Josh Lehman 5da5a229af
test(gateway): cover fallback subagent session reads 2026-03-17 07:10:59 -07:00
Josh Lehman 8d36f0368e
docs(plugins): document subagent override trust 2026-03-17 07:10:59 -07:00
Josh Lehman deea56c529
fix(discord): declare ingress override trust 2026-03-17 07:10:59 -07:00
Josh Lehman 1b223b2fa4
fix(gateway): fail closed on invalid subagent allowlists 2026-03-17 07:10:58 -07:00
Josh Lehman e2ece61cdd
fix(gateway): preserve trusted subagent cleanup 2026-03-17 07:10:58 -07:00
Josh Lehman f69cc431af
Security: validate and sanitize agent overrides 2026-03-17 07:10:58 -07:00
Josh Lehman cf7f401228
Security: gate gateway model overrides separately 2026-03-17 07:10:58 -07:00
Josh Lehman c675c80fce
Security: add trusted plugin override policy 2026-03-17 07:10:58 -07:00
Josh Lehman d1aa55b13c
fix(agent): preserve auth profiles on one-off overrides
Regeneration-Prompt: |
  Address the live PR review comment on plugin-subagent provider/model override forwarding.
  A one-off per-run provider/model override in agentCommand must stay non-persistent: it should
  not clear a stored session authProfileOverride, and it also should not pass that stored auth
  profile into the temporary cross-provider run. Keep the existing persisted override cleanup
  behavior for real session/default provider mismatches. Add a regression test in
  src/commands/agent.test.ts that seeds a session with an Anthropic auth profile, runs a single
  OpenAI override, verifies the run uses the override without an auth profile, and confirms the
  stored auth profile fields remain intact.
2026-03-17 07:10:58 -07:00
Josh Lehman cfd9191d4a
fix(gateway): sync plugin override protocol artifacts
Regeneration-Prompt: |
  Rebase PR #48277 onto current origin/main without changing its intent: gateway-owned plugin subagent runs should be able to forward per-run provider and model overrides through the internal agent RPC, while admin-only gating stays in the gateway agent handler.

  After rebasing, keep the PR scoped to prep fallout instead of broad unrelated cleanup. Commit the generated Swift protocol models required by adding provider/model to AgentParams, add the required Unreleased changelog entry, and update the new commands/agent test fixture so the explicit openai/gpt-4.1-mini override is allowed under the current model allowlist rules. Do not fold in unrelated existing main-branch test failures.
2026-03-17 07:10:58 -07:00
Josh Lehman 305a8119a7
fix(gateway): gate agent model overrides by admin scope
Keep plugin subagent provider/model overrides working for synthetic admin dispatch, but stop forwarding those overrides for plain operator.write gateway callers. Add regressions for both the admin-allowed and write-scoped paths.

Regeneration-Prompt: |
  After the first fix for PR #48277, Codex flagged that gateway agent requests were now forwarding provider/model overrides for every operator.write caller. Verify that claim against the current gateway trust model and method scopes.

  Preserve the plugin subagent use case, which dispatches with the synthetic admin gateway client, but restore least-privilege behavior for normal write-scoped agent RPC callers. The boundary should be enforced at the gateway handler so the core agent command path can still support trusted callers. Add focused tests proving admin callers keep override forwarding while write-scoped callers do not.
2026-03-17 07:10:58 -07:00
Josh Lehman c75f8c607c
fix(gateway): support plugin subagent model overrides
Allow plugin subagent runs to pass provider/model overrides through the typed runtime, gateway validation, and ingress agent path. Apply explicit per-run overrides without persisting them to session state, and cover the gateway + agent behavior with regressions.

Regeneration-Prompt: |
  PR #48277 already forwarded provider and model from plugin subagent runtime calls, but review found two contract gaps: the typed plugin runtime did not declare those fields, and the gateway agent RPC rejected them because the schema and handler path did not accept or propagate them. Make the override path end-to-end valid without broad refactors.

  Keep the change additive. Extend the plugin runtime and gateway agent request types just enough to carry provider/model overrides. Ensure gateway ingress passes those fields into the existing agent command path, and let agent runs honor explicit per-call overrides without persisting them as session overrides. Add focused regression coverage for the gateway forwarding path and for non-persistent per-run overrides.
2026-03-17 07:10:57 -07:00
Josh Lehman 76e36720ba
fix(plugins): forward plugin subagent overrides 2026-03-17 07:10:57 -07:00
Harold Hunt 1561c6a71c
tests(contracts): fix provider catalog runtime wiring (#49040) 2026-03-17 10:05:41 -04:00
huntharo 8448f48cc5 tests(feishu): inject client runtime seam 2026-03-17 09:46:58 -04:00
huntharo 3e8bf845cb tests(feishu): mock conversation runtime seam 2026-03-17 09:46:58 -04:00
huntharo a413da9cca tests(google): inject oauth credential fs stubs 2026-03-17 09:46:58 -04:00
huntharo 4234d9b42c tests: fix googlechat outbound partial mock 2026-03-17 09:46:58 -04:00
Sally O'Malley 59cd98068f
fix ssh sandbox key cp (#48924)
Signed-off-by: sallyom <somalley@redhat.com>
2026-03-17 07:22:33 -04:00
Chris Kimpton f404ff32d5 tests: add missing useNoBundledPlugins() to bundle MCP loader test
The "treats bundle MCP as a supported bundle surface" test was missing
the useNoBundledPlugins() call present in all surrounding bundle plugin
tests. Without it, loadOpenClawPlugins() scanned and loaded the full
real bundled plugins directory on every call (with cache:false), causing
excessive memory pressure and an OOM crash on Linux CI, which manifested
as the test timing out at 120s.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 15:49:08 +05:30
Stable Genius 6b6942552d
fix(macos): stop relaunching the app after quit when launch-at-login is enabled (#40213)
Merged via squash.

Prepared head SHA: c702d98bd6
Co-authored-by: stablegenius49 <259448942+stablegenius49@users.noreply.github.com>
Co-authored-by: ImLukeF <92253590+ImLukeF@users.noreply.github.com>
Reviewed-by: @ImLukeF
2026-03-17 20:59:56 +11:00
Br1an 7303253427
fix: update macOS node service to use current CLI command shape (closes #43171) (#46843)
Merged via squash.

Prepared head SHA: dbf2edd6f4
Co-authored-by: Br1an67 <29810238+Br1an67@users.noreply.github.com>
Co-authored-by: ImLukeF <92253590+ImLukeF@users.noreply.github.com>
Reviewed-by: @ImLukeF
2026-03-17 20:46:54 +11:00
stim64045-spec 6101c023bb
fix(ui): restore control-ui query token compatibility (#43979)
* fix(ui): restore control-ui query token imports

* chore(changelog): add entry for openclaw#43979 thanks @stim64045-spec

---------

Co-authored-by: 大禹 <dayu@dayudeMac-mini.local>
Co-authored-by: Val Alexander <bunsthedev@gmail.com>
Co-authored-by: Val Alexander <68980965+BunsDev@users.noreply.github.com>
2026-03-17 04:03:35 -05:00
Frank Yang 6bec21bf00 chore: sync pnpm lockfile importers 2026-03-17 16:48:46 +08:00
Peter Steinberger 6bf07b5075 fix(ci): restore local check suite 2026-03-17 08:14:03 +00:00
Peter Steinberger 990d0d7261
docs(image-generation): remove nano banana stock docs 2026-03-17 01:09:58 -07:00
Peter Steinberger 0ff82497e9
test(image-generation): add live variant coverage 2026-03-17 01:09:58 -07:00
Peter Steinberger 3a456678ee
feat(image-generation): add image_generate tool 2026-03-17 01:09:58 -07:00
Peter Steinberger 916db21fe5 fix(ci): harden zizmor workflow diffing 2026-03-17 08:08:33 +00:00
Vincent Koc 99c7750c2d Changelog: add Telegram DM topic session-key fix 2026-03-17 01:07:47 -07:00
Peter Steinberger ce486292a1
test: fix discord provider helper import 2026-03-17 01:05:09 -07:00
Peter Steinberger f9588da3e0
refactor: split plugin testing seam from bundled extension helpers 2026-03-17 01:05:09 -07:00
Peter Steinberger 527a1919ea fix(ci): quote changed extension matrix input 2026-03-17 08:04:47 +00:00
Peter Steinberger 85e610e4e7 refactor(extension-tests): share safeguard runtime assertions 2026-03-17 08:02:44 +00:00
Peter Steinberger 774b351982 refactor(failover-tests): share observation base 2026-03-17 08:02:44 +00:00
Peter Steinberger 4db3fed299 refactor(history-tests): share pruned image assertions 2026-03-17 08:02:44 +00:00
Peter Steinberger 2971c52343 refactor(payload-tests): table-drive sessions send suppressions 2026-03-17 08:02:44 +00:00
Peter Steinberger bc36ed8e1e refactor(payload-tests): table-drive recoverable tool suppressions 2026-03-17 08:02:44 +00:00
Peter Steinberger d46f3bd739 refactor(payload-tests): share single payload summary assertion 2026-03-17 08:02:44 +00:00
Peter Steinberger e510132f3c refactor(skills-tests): share bundled diffs setup 2026-03-17 08:02:44 +00:00
Peter Steinberger 8c8b0ab224 refactor(runs-tests): share run handle factory 2026-03-17 08:02:44 +00:00
Peter Steinberger b531af82d5 refactor(history-tests): share array content assertion 2026-03-17 08:02:44 +00:00
Peter Steinberger 2847ad1f8f refactor(image-tests): share ref count assertions 2026-03-17 08:02:44 +00:00
Peter Steinberger 1373821470 refactor(image-tests): share single-ref detection helper 2026-03-17 08:02:44 +00:00
Peter Steinberger 93d829b7f6 refactor(image-tests): share empty ref assertions 2026-03-17 08:02:44 +00:00
Peter Steinberger 535475e4cb refactor(payload-tests): reuse empty payload helper 2026-03-17 08:02:44 +00:00
Peter Steinberger ec1b80809d
refactor: remove remaining extension core imports 2026-03-17 00:59:46 -07:00