Peter Steinberger
579d0ebe2b
refactor(web-search): move providers into company plugins
2026-03-16 01:07:45 +00:00
Peter Steinberger
3aa5f2703c
fix(web-search): restore build after plugin rebase
2026-03-16 01:07:45 +00:00
Peter Steinberger
e8156c8281
feat(web-search): add plugin-backed search providers
2026-03-16 01:07:44 +00:00
Peter Steinberger
59bcac472e
fix: gate setup-only plugin side effects
2026-03-16 01:05:42 +00:00
Peter Steinberger
dd96be4e95
chore: raise plugin registry cache cap
2026-03-15 17:29:17 -07:00
Peter Steinberger
c156f7c7e3
fix: reduce plugin and discord warning noise
2026-03-16 00:24:44 +00:00
Peter Steinberger
ee7ecb2dd4
feat(plugins): move anthropic and openai vendors to plugins
2026-03-15 17:07:28 -07:00
Peter Steinberger
8e2a1d0941
feat(plugins): move bundled providers behind plugin hooks
2026-03-15 16:57:24 -07:00
Peter Steinberger
e7555724af
feat(plugins): add provider usage runtime hooks
2026-03-15 16:57:16 -07:00
Mason
f4cc93dc7d
fix(onboarding): use scoped plugin snapshots to prevent OOM on low-memory hosts ( #46763 )
...
* fix(onboarding): use scoped plugin snapshots to prevent OOM on low-memory hosts
Onboarding and channel-add flows previously loaded the full plugin registry,
which caused OOM crashes on memory-constrained hosts. This patch introduces
scoped, non-activating plugin registry snapshots that load only the selected
channel plugin without replacing the running gateway's global state.
Key changes:
- Add onlyPluginIds and activate options to loadOpenClawPlugins for scoped loads
- Add suppressGlobalCommands to plugin registry to avoid leaking commands
- Replace full registry reloads in onboarding with per-channel scoped snapshots
- Validate command definitions in snapshot loads without writing global registry
- Preload configured external plugins via scoped discovery during onboarding
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* fix(test): add return type annotation to hoisted mock to resolve TS2322
* fix(plugins): enforce cache:false invariant for non-activating snapshot loads
* Channels: preserve lazy scoped snapshot import after rebase
* Onboarding: scope channel snapshots by plugin id
* Catalog: trust manifest ids for channel plugin mapping
* Onboarding: preserve scoped setup channel loading
* Onboarding: restore built-in adapter fallback
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-03-15 16:52:08 -07:00
Peter Steinberger
a058bf918d
feat(plugins): test bundle MCP end to end
2026-03-15 16:51:13 -07:00
Peter Steinberger
74c762beb0
refactor: decouple channel setup discovery
2026-03-15 16:26:09 -07:00
Peter Steinberger
9eed6e674b
fix(plugins): restore provider compatibility fallbacks
2026-03-15 16:09:40 -07:00
Peter Steinberger
4adcfa3256
feat(plugins): move provider runtimes into bundled plugins
2026-03-15 16:09:40 -07:00
Peter Steinberger
dd40741e18
feat(plugins): add compatible bundle support
2026-03-15 16:08:50 -07:00
Harold Hunt
aa1454d1a8
Plugins: broaden plugin surface for Codex App Server ( #45318 )
...
* Plugins: add inbound claim and Telegram interaction seams
* Plugins: add Discord interaction surface
* Chore: fix formatting after plugin rebase
* fix(hooks): preserve observers after inbound claim
* test(hooks): cover claimed inbound observer delivery
* fix(plugins): harden typing lease refreshes
* fix(discord): pass real auth to plugin interactions
* fix(plugins): remove raw session binding runtime exposure
* fix(plugins): tighten interactive callback handling
* Plugins: gate conversation binding with approvals
* Plugins: migrate legacy plugin binding records
* Plugins/phone-control: update test command context
* Plugins: migrate legacy binding ids
* Plugins: migrate legacy codex session bindings
* Discord: fix plugin interaction handling
* Discord: support direct plugin conversation binds
* Plugins: preserve Discord command bind targets
* Tests: fix plugin binding and interactive fallout
* Discord: stabilize directory lookup tests
* Discord: route bound DMs to plugins
* Discord: restore plugin bindings after restart
* Telegram: persist detached plugin bindings
* Plugins: limit binding APIs to Telegram and Discord
* Plugins: harden bound conversation routing
* Plugins: fix extension target imports
* Plugins: fix Telegram runtime extension imports
* Plugins: format rebased binding handlers
* Discord: bind group DM interactions by channel
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-03-15 16:06:11 -07:00
Peter Steinberger
4a0f72866b
feat(plugins): move provider runtimes into bundled plugins
2026-03-15 15:18:32 -07:00
Gustavo Madeira Santana
14137bef22
Plugins: clean stale bundled skill outputs
2026-03-15 21:48:09 +00:00
Gustavo Madeira Santana
50a6902a9a
Plugins: skip nested node_modules in bundled skills
2026-03-15 21:43:13 +00:00
Gustavo Madeira Santana
1839bc0b1a
Plugins: relocate bundled skill assets
2026-03-15 21:42:02 +00:00
Nimrod Gutman
47fd8558cd
fix(plugins): fix bundled plugin roots and skill assets ( #47601 )
...
* fix(acpx): resolve bundled plugin root correctly
* fix(plugins): copy bundled plugin skill assets
* fix(plugins): tolerate missing bundled skill paths
2026-03-15 23:00:30 +02:00
Vincent Koc
7931f06c00
Plugins: harden context engine ownership
2026-03-15 13:51:15 -07:00
Vincent Koc
51631e5797
Plugins: reserve context engine ownership
2026-03-15 12:27:29 -07:00
Nimrod Gutman
e2dac5d5cb
fix(plugins): load bundled extensions from dist ( #47560 )
2026-03-15 21:16:27 +02:00
xiaoyi
bbb0c3e5d7
CLI/completion: fix generator OOM and harden plugin registries ( #45537 )
...
* fix: avoid OOM during completion script generation
* CLI/completion: fix PowerShell nested command paths
* CLI/completion: cover generated shell scripts
* Changelog: note completion generator follow-up
* Plugins: reserve shared registry names
---------
Co-authored-by: Xiaoyi <xiaoyi@example.com >
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-03-15 12:14:30 -07:00
Vincent Koc
8d44b16b7c
Plugins: preserve scoped ids and reserve bundled duplicates ( #47413 )
...
* Plugins: preserve scoped ids and reserve bundled duplicates
* Changelog: add plugin scoped id note
* Plugins: harden scoped install ids
* Plugins: reserve scoped install dirs
* Plugins: migrate legacy scoped update ids
2026-03-15 09:07:10 -07:00
Tak Hoffman
f00db91590
fix(plugins): prefer explicit installs over bundled duplicates ( #46722 )
...
* fix(plugins): prefer explicit installs over bundled duplicates
* test(feishu): mock structured card sends in outbound tests
* fix(plugins): align duplicate diagnostics with loader precedence
2026-03-14 21:08:32 -05:00
ufhy
3928b4872a
fix: persist context-engine auto-compaction counts ( #42629 )
...
Merged via squash.
Prepared head SHA: df8f292039
Co-authored-by: uf-hy <41638541+uf-hy@users.noreply.github.com >
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com >
Reviewed-by: @jalehman
2026-03-14 16:22:10 -07:00
Tak Hoffman
e81442ac80
Fix full local gate on main
2026-03-14 15:52:11 -05:00
Nimrod Gutman
9aac55d306
Add /btw side questions ( #45444 )
...
* feat(agent): add /btw side questions
* fix(agent): gate and log /btw reviews
* feat(btw): isolate side-question delivery
* test(reply): update route reply runtime mocks
* fix(btw): complete side-result delivery across clients
* fix(gateway): handle streamed btw side results
* fix(telegram): unblock btw side questions
* fix(reply): make external btw replies explicit
* fix(chat): keep btw side results ephemeral in internal history
* fix(btw): address remaining review feedback
* fix(chat): preserve btw history on mobile refresh
* fix(acp): keep btw replies out of prompt history
* refactor(btw): narrow side questions to live channels
* fix(btw): preserve channel typing indicators
* fix(btw): keep side questions isolated in chat
* fix(outbound): restore typed channel send deps
* fix(btw): avoid blocking replies on transcript persistence
* fix(btw): keep side questions fast
* docs(commands): document btw slash command
* docs(changelog): add btw side questions entry
* test(outbound): align session transcript mocks
2026-03-14 17:27:54 +02:00
scoootscooob
439c21e078
refactor: remove channel shim directories, point all imports to extensions ( #45967 )
...
* refactor: remove channel shim directories, point all imports to extensions
Delete the 6 backward-compat shim directories (src/telegram, src/discord,
src/slack, src/signal, src/imessage, src/web) that were re-exporting from
extensions. Update all 112+ source files to import directly from
extensions/{channel}/src/ instead of through the shims.
Also:
- Move src/channels/telegram/ (allow-from, api) to extensions/telegram/src/
- Fix outbound adapters to use resolveOutboundSendDep (fixes 5 pre-existing TS errors)
- Update cross-extension imports (src/web/media.js → extensions/whatsapp/src/media.js)
- Update vitest, tsdown, knip, labeler, and script configs for new paths
- Update guard test allowlists for extension paths
After this, src/ has zero channel-specific implementation code — only the
generic plugin framework remains.
* fix: update raw-fetch guard allowlist line numbers after shim removal
* refactor: document direct extension channel imports
* test: mock transcript module in delivery helpers
2026-03-14 03:43:07 -07:00
Vincent Koc
bcbfbb831e
Plugins: fail fast on channel and binding collisions ( #45628 )
...
* Plugins: reject duplicate channel ids
* Bindings: reject duplicate adapter registration
* Plugins: fail on export id mismatch
2026-03-13 19:13:35 -07:00
Peter Steinberger
e794417623
fix: resolve current ci regressions
2026-03-14 00:51:12 +00:00
Peter Steinberger
da1ec45505
refactor: share plugin temp dir helpers
2026-03-13 20:19:39 +00:00
Peter Steinberger
4ec0fcf1b6
refactor: share plugin test fixtures
2026-03-13 20:19:38 +00:00
Peter Steinberger
60d308cff0
test: fix CI type regressions
2026-03-13 19:53:40 +00:00
Vincent Koc
cc5168b5c3
Fix plugin update dependency failures and dedupe warnings
2026-03-13 11:26:14 -07:00
Peter Steinberger
3cf06f7939
docs(plugins): clarify workspace shadowing
2026-03-13 13:15:46 +00:00
Peter Steinberger
6472949f25
fix(plugins): normalize bundled provider ids
2026-03-13 04:10:06 +00:00
Peter Steinberger
ec3c20d96d
test: harden plugin fixture permissions on macos
2026-03-13 03:13:25 +00:00
Peter Steinberger
21fa50f564
test: harden plugin env-scoped fixtures
2026-03-13 03:01:47 +00:00
Peter Steinberger
c80da4e72f
refactor: validate provider plugin metadata
2026-03-13 01:19:35 +00:00
Peter Steinberger
87ad1ce9b1
refactor: add non-interactive provider plugin setup
2026-03-13 01:19:35 +00:00
Peter Steinberger
2c8f31135b
test: cover provider plugin boundaries
2026-03-12 22:43:55 +00:00
Peter Steinberger
d83491e751
feat: modularize provider plugin architecture
2026-03-12 22:24:35 +00:00
Vincent Koc
3e28e10c2f
Plugins: require explicit trust for workspace-discovered plugins ( #44174 )
...
* Plugins: disable implicit workspace plugin auto-load
* Tests: cover workspace plugin trust gating
* Changelog: note workspace plugin trust hardening
* Plugins: keep workspace trust gate ahead of memory slot defaults
* Tests: cover workspace memory-slot trust bypass
2026-03-12 12:12:41 -04:00
Gustavo Madeira Santana
e6897c800b
Plugins: fix env-aware root resolution and caching ( #44046 )
...
Merged via squash.
Prepared head SHA: 6e8852a188
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-03-12 15:31:31 +00:00
Peter Steinberger
43a10677ed
fix: isolate plugin discovery env from global state
2026-03-12 02:46:29 +00:00
Peter Steinberger
e11be576fb
fix: repair bundled plugin dirs after npm install
2026-03-11 23:53:50 +00:00
Robin Waslander
a1520d70ff
fix(gateway): propagate real gateway client into plugin subagent runtime
...
Plugin subagent dispatch used a hardcoded synthetic client carrying
operator.admin, operator.approvals, and operator.pairing for all
runtime.subagent.* calls. Plugin HTTP routes with auth:"plugin" require
no gateway auth by design, so an unauthenticated external request could
drive admin-only gateway methods (sessions.delete, agent.run) through
the subagent runtime.
Propagate the real gateway client into the plugin runtime request scope
when one is available. Plugin HTTP routes now run inside a scoped
runtime client: auth:"plugin" routes receive a non-admin synthetic
operator.write client; gateway-authenticated routes retain admin-capable
scopes. The security boundary is enforced at the HTTP handler level.
Fixes GHSA-xw77-45gv-p728
2026-03-11 14:17:01 +01:00