Commit Graph

372 Commits

Author SHA1 Message Date
Gustavo Madeira Santana afb6e4b185
Plugins: extract provider auth and wizard flows 2026-03-15 17:47:31 +00:00
Gustavo Madeira Santana 1303419471
Plugins: extract provider discovery 2026-03-15 17:41:46 +00:00
Gustavo Madeira Santana 19087405d2
Plugins: extract provider runtime 2026-03-15 17:35:54 +00:00
Gustavo Madeira Santana af7ac14eed
Plugins: extract tool runtime 2026-03-15 17:33:53 +00:00
Gustavo Madeira Santana b5757a6625
Plugins: extract CLI lifecycle 2026-03-15 17:27:26 +00:00
Gustavo Madeira Santana 6b24e65719
Plugins: extract service lifecycle 2026-03-15 17:25:32 +00:00
Gustavo Madeira Santana 0e190d64d4
Plugins: extract registry compatibility facade 2026-03-15 17:10:47 +00:00
Gustavo Madeira Santana a1e1dcc01a
Plugins: extract plugin api facade 2026-03-15 17:04:07 +00:00
Gustavo Madeira Santana b407d7f476
Plugins: extract hook compatibility 2026-03-15 16:58:05 +00:00
Gustavo Madeira Santana 27fc645484
Plugins: extend registry writes for hooks 2026-03-15 16:55:12 +00:00
Gustavo Madeira Santana bc71592270
Plugins: extend registry write helpers 2026-03-15 16:52:40 +00:00
Gustavo Madeira Santana 07c3ae9c87
Plugins: extract low-risk registry writes 2026-03-15 16:49:35 +00:00
Gustavo Madeira Santana d32f65eb5e
Plugins: add loader lifecycle state machine 2026-03-15 14:42:33 +00:00
Gustavo Madeira Santana c8d82a8f19
Plugins: extract loader orchestration 2026-03-15 14:39:44 +00:00
Gustavo Madeira Santana 6590e19095
Plugins: extract loader cache control 2026-03-15 11:54:43 +00:00
Gustavo Madeira Santana 33ef55a9ee
Plugins: add loader lifecycle state mapping 2026-03-15 11:51:44 +00:00
Gustavo Madeira Santana 0c44d8049b
Plugins: extract loader finalization 2026-03-15 11:48:32 +00:00
Gustavo Madeira Santana e1b207f4cf
Plugins: extract loader candidate orchestration 2026-03-15 11:43:44 +00:00
Gustavo Madeira Santana fc81454038
Plugins: extract loader import flow 2026-03-15 11:36:50 +00:00
Gustavo Madeira Santana 3a122c95fa
Plugins: extract loader register flow 2026-03-15 11:34:19 +00:00
Gustavo Madeira Santana 7bc3135082
Plugins: extract loader candidate planning 2026-03-15 11:30:50 +00:00
Gustavo Madeira Santana 1aab89e820
Plugins: extract loader host seams 2026-03-15 11:27:05 +00:00
Gustavo Madeira Santana 6abf6750ee
Plugins: add extension host registry boundary 2026-03-15 11:26:41 +00: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
Xinhua Gu 4790e40ac6
fix(plugins): expose model auth API to context-engine plugins (#41090)
Merged via squash.

Prepared head SHA: ee96e96bb9
Co-authored-by: xinhuagu <562450+xinhuagu@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-03-09 16:07:26 -07:00
Vincent Koc 12702e11a5
plugins: harden global hook runner state (#40184) 2026-03-09 11:20:33 -07:00
Peter Steinberger e8775cda93 fix(agents): re-expose configured tools under restrictive profiles 2026-03-09 03:49:50 +00:00