Commit Graph

1838 Commits

Author SHA1 Message Date
Peter Steinberger
f76b426e2b perf: reduce jiti loader alias work 2026-04-20 18:06:45 +01:00
Peter Steinberger
47d42606ac fix: repair bundled plugin runtime deps on startup 2026-04-20 17:47:55 +01:00
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