feat: add managed provider plugin infrastructure - #3121
Conversation
|
Size Report
Startup median (7 runs, lower is better):
|
There was a problem hiding this comment.
All reported issues were addressed across 35 files
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
|
At 36d958f, Coverage fails only in Not blocking, and you can take or leave these: the size report shows +108.6 kB unpacked (+27 kB download) for about 530 production lines, far above the 3 kB threshold in docs/agents/pull-requests.md, and I could not build to find the cause. A type-only entry plus a CLI handler and loader should cost a few kB, so please diff the dist file list against main and look for duplicated chunks from the new entry or the dynamic import of plugins/load.ts. Then explain any remaining growth in the PR body. Also, Could the loader keep only the owner and provider match check and let the gateway reject the rest? I did not run the local-registry npm smoke or any tests. I could not attribute the size growth without building both bases. I did not trace the daemon held-lock branch behind the open thread on daemon-runtime.ts:350, but the mechanism it states still applies, so that thread stands. I also did not check whether provider IDs outside DEFAULT_PROVIDER_RUNTIME_REQUIRED_IDS, such as connection or proxy names used by |
36d958f to
2860f56
Compare
|
Addressed in
Built both main and the updated head: dist grows 108,507 bytes, of which 99,645 are declarations and 8,862 JavaScript. There are no repeated declaration regions. The plugin ABI exposes existing runtime/host contracts; Claude's independent review agreed that shrinking it would require an adapter layer. Removed unused production exports identified by that review. I kept runtime function checks: the gateway checks owner matching/duplicate registration, and provider-device-runtime.ts checks duplicate IDs; neither validates third-party runtime methods at composition. Registry-derived CLI routing remains a follow-up. Connection/proxy transports are not additional bundled provider runtime IDs; connect-extension naming belongs with that future registration seam.
Update at |
There was a problem hiding this comment.
All reported issues were addressed across 19 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
2860f56 to
d535379
Compare
|
This PR is ready on the code. The 36d958f findings from the earlier review (#3121 (comment)) are fixed at 2860f56, and I found no new problems in the changes since then. Not blocking, and you can take or leave these: Smoke Tests was still running with no log, so CI is not green yet. This PR touches that route: every daemon start now runs Before merge, Smoke Tests needs to pass. The open Cubic threads on the weakened This review covers 2860f56. The newer head d535379 changes one line in |
d535379 to
0a69fc4
Compare
|
Both problems from the earlier review at 36d958f are fixed at 0a69fc4, and I found nothing new. The regression tests now cover the cases from that review. I judged them by reading the code before and after the fix. I did not run the tests or a local-registry npm smoke. All 22 checks pass, including Coverage and Smoke Tests. Smoke Tests exercises the daemon startup composition this PR changes. There are no conflicts. No further changes are needed from my side. I did not re-check the bundle-size numbers. The earlier note stands: +108.5 kB, of which 99.6 kB is declarations. |
0a69fc4 to
986b32b
Compare
|
The changes since 0a69fc4 look good at 986b32b, and I found no new problems. CI is green, with 22 of 22 checks passing at this head, and there are no conflicts. I did not build the package, so I could not confirm that the emitted dist/src/plugins.d.ts exports |
…lugin * origin/main: (628 commits) fix(ios): pin runner build roots under derived data (callstack#3158) feat: add managed provider plugin infrastructure (callstack#3121) fix(ios): report keyboard focus from the AX bridge's is-editing trait (callstack#3163) feat(devices): report model and osVersion (callstack#3119) fix: guard alert deadline before native tap synthesis (callstack#3113) feat(install-source): accept archive URLs from any public host (callstack#3110) test: keep uptime responsive behind busy runner work (callstack#3114) fix(apple): read the launch confirmation whenever the open cannot see the app (callstack#3115) fix(host-kit): keep extracted directories owner-accessible (callstack#3111) fix(daemon): run Apple tools with the requesting client's DEVELOPER_DIR (callstack#3109) fix(daemon): fence daemon.json removal to its owning process (callstack#3102) fix(snapshot): stop sibling-sized chrome containers from covering their own region (callstack#2996) (callstack#3097) fix(ios): stop reading windows past the one the runner resolved (callstack#3103) refactor(daemon): apply one dispatch-disclosure rule to returned and thrown failures (callstack#3099) chore: drop unused production exports and suppress dynamic consumers (callstack#3100) docs(help): document wait readiness and restart exhaustion (callstack#3098) docs: simplify Host to fresh Simlock devices and lease recovery (callstack#3095) feat(capture): report the display rotation a screenshot was rendered in (callstack#3088) refactor(snapshot): preserve normalized node attributes through presentation (callstack#3092) refactor(help): colocate fold guidance and extract workflows (callstack#3093) ... # Conflicts: # README.md # package.json # packages/kernel/src/snapshot.ts # src/__tests__/eager-closure-budgets.ts # src/cli/commands/connection-presentation.ts # src/commands/schema/cli-help.ts # src/commands/schema/command-overrides.ts
Summary
Add managed npm provider plugins under
AGENT_DEVICE_HOME:agent-device plugins add @vendor/provider@^1agent-device plugins listagent-device plugins update @vendor/providerInstall immutable npm directories before atomically activating user config; check metadata and compatibility before loading factory code. Removal leaves active daemon sessions alone until restart. Existing providers remain bundled; Doublespeed and TestMu are the first external adapter targets.
Keep the experimental
agent-device/pluginsSDK to the factory context (env,options,createError). Provider implementation contracts remain private to core, with their source declarations linked in the author guide. Removing the transitive runtime exports cuts added declarations from 99.6 kB to 0.4 kB. A packed declaration-size guard prevents recurrence.36 files; 1,000 gross changed lines. Implementation precedes the final enforcement commit.
Validation
Tested commit:
986b32b54190637d16d32a25ae652f0d0ce61007.pnpm check:affected --run: all runnable checks passed, including 518 related files / 4,565 tests and package gates.