Commit Graph

1836 Commits

Author SHA1 Message Date
Peter Steinberger decdb92f34 test: enforce extension dependency ownership 2026-04-20 16:07:14 +01:00
Peter Steinberger 1148f245c8 build(deps): declare extension runtime dependencies 2026-04-20 16:07:14 +01:00
Peter Steinberger f163432674 fix(discord): avoid native opus install path (#69339)
* fix(discord): avoid native opus install path

* test(tts): mock lazy facade values
2026-04-20 15:25:07 +01:00
Peter Steinberger f6360da116 fix(deps): remove extension-owned deps from root install (#69335)
* fix(deps): remove extension runtime deps from root install

* fix(deps): keep bundled plugin deps local

* test(plugins): assert matrix deps stay plugin-local
2026-04-20 15:03:09 +01:00
Peter Steinberger 8642137252 refactor: share model allowlist entry helper 2026-04-20 15:02:51 +01:00
Peter Steinberger 3664119029 perf: reuse plugin loader config cache 2026-04-20 15:00:50 +01:00
Peter Steinberger 099d4b50b6 docs: clarify alias map memoization rationale 2026-04-20 15:00:50 +01:00
Peter Steinberger 53176153a2 test: cover alias map cache context 2026-04-20 15:00:50 +01:00
Alex Knight 2b64f4bf4b perf: memoize buildPluginLoaderAliasMap to enable jiti sentinel reuse
buildPluginLoaderAliasMap() creates a new alias object via spread on every
call. jiti's normalizeAliases() uses a reference-identity sentinel
(`if (e[pt]) return e`) to skip its O(N²) normalization work — but fresh
object refs defeat the sentinel, causing the full cycle to repeat on
every call.

This change caches alias maps by their inputs (modulePath, argv1,
moduleUrl, pluginSdkResolution) so identical parameters return the same
object reference. Subsequent jiti calls hit the sentinel fast-path
instead of re-running normalization.

Includes 5 new tests covering:
  - reference identity for identical inputs
  - cache isolation (different modulePath, pluginSdkResolution, argv1
    each produce distinct objects)
  - content equivalence between cached and freshly-computed results

Refs #68983, #63948
2026-04-20 15:00:50 +01:00
Peter Steinberger eaea16f166 refactor: share google turn ordering sanitizer 2026-04-20 14:29:16 +01:00
Peter Steinberger 1ea02d231d refactor: reuse plugin contract snapshot type 2026-04-20 14:17:39 +01:00
Peter Steinberger 100e587243 refactor: share provider auth choice selection 2026-04-20 14:10:06 +01:00
Peter Steinberger 283b72f2de refactor: share setup registry scaffolding 2026-04-20 14:08:29 +01:00
Peter Steinberger 60818959b0 refactor: share bundled plugin compat decisions 2026-04-20 14:04:16 +01:00
Peter Steinberger 848348f423 refactor: share active plugin runtime lookup 2026-04-20 14:01:54 +01:00
Peter Steinberger abe2296daf refactor: share plugin activation decisions 2026-04-20 13:31:00 +01:00
Peter Steinberger 1e4f3f2123 refactor(test): remove legacy extension test seams 2026-04-20 13:18:49 +01:00
Peter Steinberger dafc31502a refactor: share provider and outbound helpers 2026-04-20 13:18:02 +01:00
竹田賢史 1d5b58ac18 feat(plugins): pass attachment metadata to before_model_resolve hook (#67322)
Merged via squash.

Prepared head SHA: 8af0ba9703
Co-authored-by: estack-takeda-yorichika <47170408+estack-takeda-yorichika@users.noreply.github.com>
Co-authored-by: sallyom <11166065+sallyom@users.noreply.github.com>
Reviewed-by: @sallyom
2026-04-20 00:14:50 -04:00
Mariano bd3ad3436e tasks: add detached runtime plugin registration contract (#68915)
* tasks: register detached runtime plugins

* tasks: harden detached runtime ownership

* tasks: extract detached runtime contract types

* changelog: note detached runtime contract

* changelog: attribute detached runtime contract
2026-04-19 13:13:11 +02:00
Peter Steinberger 34abb441f6 refactor: share provider plugin id filtering 2026-04-19 05:09:57 +01:00
Peter Steinberger 2a14f76964 refactor: share plugin validation diagnostics 2026-04-19 04:59:40 +01:00
Peter Steinberger 4862d34925 fix: package plugin SDK alias wrappers 2026-04-19 03:01:25 +01:00
Peter Steinberger 6ffcf4523d test: share bundled plugin hotfix types 2026-04-19 00:29:26 +01:00
Peter Steinberger e88a9e5ee4 test: share plugin root alias diagnostics harness 2026-04-19 00:25:12 +01:00
Peter Steinberger 17fcbcefbc refactor: share plugin config trust helpers 2026-04-18 23:55:05 +01:00
Peter Steinberger 212c4af50d perf: skip disabled bundle MCP scans 2026-04-18 23:34:48 +01:00
Peter Steinberger e069169765 perf: decouple plugin facades from extension types 2026-04-18 22:06:45 +01:00
Vincent Koc a018257487 fix(auth): harden codex oauth bridge security 2026-04-18 21:27:27 +01:00
Vincent Koc 859eb06662 refactor(auth): route codex runtimes through canonical oauth 2026-04-18 21:27:27 +01:00
Peter Steinberger 2d59395883 refactor: move provider endpoint metadata into manifests 2026-04-18 21:06:50 +01:00
Peter Steinberger 155162a8cd chore(lint): enable additional cleanup rules 2026-04-18 20:37:13 +01:00
Peter Steinberger 4fa961d4f1 refactor(lint): enable map spread rule 2026-04-18 20:37:12 +01:00
Peter Steinberger 2b7b5774b6 chore: remove dead code 2026-04-18 20:27:42 +01:00
Peter Steinberger 85912849cc refactor: move extension markers into manifests 2026-04-18 20:16:44 +01:00
Peter Steinberger 58759bb565 test: genericize synthetic auth coverage 2026-04-18 19:59:36 +01:00
Peter Steinberger 796f272f7d refactor: move synthetic auth refs to manifests 2026-04-18 19:53:54 +01:00
Peter Steinberger 1f1ff0567a refactor(lint): reduce map spread patterns 2026-04-18 19:27:43 +01:00
Peter Steinberger 235cdb3f81 refactor: remove ollama core facades 2026-04-18 18:53:04 +01:00
Peter Steinberger df525b90f2 chore(lint): enable unnecessary type parameter rule 2026-04-18 18:31:13 +01:00
Peter Steinberger fa2f53993a test: trim skills and bundle mcp overhead 2026-04-18 17:42:02 +01:00
Val Alexander f45bc09206 [codex] fix(auth): harden OAuth refresh and Codex CLI bootstrap flows (#68396)
* Harden OAuth refresh and Codex CLI bootstrap flows

- Treat near-expiry OAuth credentials as unusable for bootstrap and refresh
- Add clearer timeout and callback validation handling for OpenAI Codex OAuth
- Tighten file lock retry behavior for stale OAuth refresh contention

* fix(auth): address PR review threads

* fix(auth): adopt fresher imported refresh tokens

* test(auth): align oauth expiry fixtures with refresh margin

* fix(auth): tighten Codex OAuth bootstrap and local fallback

* Keep explicit local auth over CLI bootstrap

- Preserve existing non-OAuth local profiles during external CLI OAuth sync
- Add regression coverage for OpenAI Codex and generic external OAuth overlays

* fix(auth): distinguish oauth lock timeout sources

* fix(auth): reject cross-account external oauth bootstrap

* fix(auth): narrow refresh contention classification
2026-04-18 01:02:29 -05:00
Gustavo Madeira Santana 110f8bd2e1 fix(plugins): resolve checkout plugin sdk imports 2026-04-17 23:04:11 -04:00
Peter Steinberger 27f34f0491 test: merge provider contract wrappers 2026-04-18 01:36:33 +01:00
Peter Steinberger 3abb5fd291 test: slim channel contract hotspots 2026-04-18 01:36:33 +01:00
Peter Steinberger 569247cff8 test: speed channel contract hotspots 2026-04-18 01:36:15 +01:00
Peter Steinberger 30cbfa3457 test: slim plugin shape contracts 2026-04-18 01:36:15 +01:00
Peter Steinberger 4c12ff6d23 test: merge provider web-search contracts 2026-04-18 01:36:15 +01:00
Peter Steinberger 7db9a53254 test: slim contract suite imports 2026-04-18 01:36:15 +01:00
Gustavo Madeira Santana 6f4d13f3bd test: narrow setup auto-enable probes
Run setup auto-enable probes only for plugin ids made relevant by the
current config instead of loading every setup API. This keeps provider
plugin auto-enable checks from paying unrelated setup registration cost.
2026-04-17 18:23:20 -04:00