@mycadet/assistant 0.12.9 → 0.12.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (658) hide show
  1. package/Dockerfile +0 -8
  2. package/eslint-rules/__tests__/cli-no-daemon-internals.test.ts +1 -1
  3. package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/__tests__/ingress.test.ts +8 -8
  4. package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/ingress.ts +1 -1
  5. package/node_modules/@mycadet/ces-client/src/http-credentials.ts +18 -1
  6. package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/__tests__/ingress.test.ts +8 -8
  7. package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/ingress.ts +1 -1
  8. package/node_modules/@mycadet/service-contracts/src/__tests__/ingress.test.ts +8 -8
  9. package/node_modules/@mycadet/service-contracts/src/ingress.ts +1 -1
  10. package/openapi.yaml +62 -910
  11. package/package.json +3 -7
  12. package/scripts/build-test-fixtures.ts +1 -1
  13. package/scripts/generate-openapi.ts +22 -6
  14. package/scripts/postinstall.ts +4 -10
  15. package/scripts/run-tests.ts +0 -21
  16. package/src/__tests__/adaptive-thinking-repair.test.ts +19 -57
  17. package/src/__tests__/agent-loop.test.ts +0 -76
  18. package/src/__tests__/anthropic-provider.test.ts +6 -6
  19. package/src/__tests__/assert-not-live-db.ts +1 -1
  20. package/src/__tests__/assistant-id-boundary-guard.test.ts +3 -3
  21. package/src/__tests__/attachments-store-heic-normalize.test.ts +1 -1
  22. package/src/__tests__/attachments-store.test.ts +1 -1
  23. package/src/__tests__/audit-log-rotation.test.ts +1 -1
  24. package/src/__tests__/btw-routes.test.ts +1 -1
  25. package/src/__tests__/byok-default-profile-ensure.test.ts +21 -27
  26. package/src/__tests__/call-conversation-messages.test.ts +0 -5
  27. package/src/__tests__/call-recovery.test.ts +2 -7
  28. package/src/__tests__/call-routes-http.test.ts +0 -12
  29. package/src/__tests__/call-store.test.ts +2 -7
  30. package/src/__tests__/catalog-files.test.ts +7 -5
  31. package/src/__tests__/checker.test.ts +1 -1
  32. package/src/__tests__/cli-memory-v2-reembed-skills.test.ts +4 -4
  33. package/src/__tests__/cloud-client-verify-credential.test.ts +0 -4
  34. package/src/__tests__/cloud-credential-catalog-cli.test.ts +14 -14
  35. package/src/__tests__/cloud-profile-guard.test.ts +87 -404
  36. package/src/__tests__/compaction-events.test.ts +2 -2
  37. package/src/__tests__/config-loader-backfill.test.ts +74 -163
  38. package/src/__tests__/config-loader-cloud-defaults.test.ts +11 -11
  39. package/src/__tests__/config-loader-corrupt.test.ts +10 -10
  40. package/src/__tests__/config-loader-quarantine-notice.test.ts +7 -7
  41. package/src/__tests__/config-loader-validation-reset-notice.test.ts +11 -11
  42. package/src/__tests__/config-schema.test.ts +26 -27
  43. package/src/__tests__/config-set-route.test.ts +2 -6
  44. package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +28 -300
  45. package/src/__tests__/conversation-agent-loop-overflow.test.ts +39 -246
  46. package/src/__tests__/conversation-agent-loop.test.ts +2 -58
  47. package/src/__tests__/conversation-clear-safety.test.ts +0 -30
  48. package/src/__tests__/conversation-inference-profile-route.test.ts +1 -1
  49. package/src/__tests__/conversation-queue.test.ts +1 -1
  50. package/src/__tests__/conversation-runtime-assembly.test.ts +1 -1
  51. package/src/__tests__/conversation-skill-tools.test.ts +4 -444
  52. package/src/__tests__/conversation-slash-commands.test.ts +1 -1
  53. package/src/__tests__/conversation-store.test.ts +1 -84
  54. package/src/__tests__/conversation-surface-state.test.ts +0 -16
  55. package/src/__tests__/credential-health-service.test.ts +14 -1
  56. package/src/__tests__/credential-record-retire.test.ts +1 -1
  57. package/src/__tests__/credential-record-write-through.test.ts +1 -1
  58. package/src/__tests__/credential-security-invariants.test.ts +0 -145
  59. package/src/__tests__/custom-profile-ensure.test.ts +1 -1
  60. package/src/__tests__/default-profile-catalog-fallback.test.ts +5 -15
  61. package/src/__tests__/deterministic-verification-control-plane.test.ts +0 -2
  62. package/src/__tests__/dictation-profile-store.test.ts +6 -6
  63. package/src/__tests__/disk-usage.test.ts +28 -164
  64. package/src/__tests__/docker-signing-key-bootstrap.test.ts +1 -1
  65. package/src/__tests__/embedding-cloud-proxy-selection.test.ts +1 -1
  66. package/src/__tests__/emit-event-signal.test.ts +1 -1
  67. package/src/__tests__/gateway-client-cloud-outbound.test.ts +3 -3
  68. package/src/__tests__/gateway-only-enforcement.test.ts +1 -1
  69. package/src/__tests__/guardian-dispatch.test.ts +0 -13
  70. package/src/__tests__/helpers/seed-app.ts +1 -1
  71. package/src/__tests__/host-cu-routes-targeted.test.ts +1 -1
  72. package/src/__tests__/host-shell-tool.test.ts +1 -1
  73. package/src/__tests__/identity-routes.test.ts +1 -1
  74. package/src/__tests__/inference-profile-session-handler.test.ts +1 -1
  75. package/src/__tests__/inference-profile-session-ipc.test.ts +1 -1
  76. package/src/__tests__/injector-chain.test.ts +1 -1
  77. package/src/__tests__/injector-config-quarantine-notice.test.ts +1 -1
  78. package/src/__tests__/injector-config-validation-reset-notice.test.ts +1 -1
  79. package/src/__tests__/injector-pkb-v2-silenced.test.ts +1 -1
  80. package/src/__tests__/{platform.test.ts → layout.test.ts} +1 -1
  81. package/src/__tests__/list-all-apps.test.ts +1 -1
  82. package/src/__tests__/live-workspace-guard.test.ts +2 -2
  83. package/src/__tests__/llm-resolver-override-or-default.test.ts +5 -6
  84. package/src/__tests__/llm-resolver.test.ts +7 -7
  85. package/src/__tests__/llm-schema-fallback-profile.test.ts +9 -10
  86. package/src/__tests__/llm-usage-store.test.ts +0 -495
  87. package/src/__tests__/log-export-routes.test.ts +1 -1
  88. package/src/__tests__/mcp-config-secret-boundary.test.ts +12 -53
  89. package/src/__tests__/mcp-list-plugin-servers.test.ts +1 -1
  90. package/src/__tests__/memory-config-file-parity.test.ts +1 -1
  91. package/src/__tests__/memory-v2-static-injector.test.ts +1 -1
  92. package/src/__tests__/messages-read-boundary-guard.test.ts +0 -2
  93. package/src/__tests__/notification-guardian-path.test.ts +0 -7
  94. package/src/__tests__/onboarding-persona-write.test.ts +1 -1
  95. package/src/__tests__/openai-provider.test.ts +8 -8
  96. package/src/__tests__/path-policy.test.ts +1 -1
  97. package/src/__tests__/persona-resolver.test.ts +1 -1
  98. package/src/__tests__/plugin-app-serve-routes.test.ts +1 -1
  99. package/src/__tests__/plugin-effective-enabled-set.test.ts +1 -1
  100. package/src/__tests__/plugin-import-boundary-guard.test.ts +4 -6
  101. package/src/__tests__/plugin-import-boundary-reverse-guard.test.ts +0 -3
  102. package/src/__tests__/provider-cloud-proxy-integration.test.ts +1 -5
  103. package/src/__tests__/provider-connections-backfill.test.ts +10 -10
  104. package/src/__tests__/prune-old-conversations-job.test.ts +6 -31
  105. package/src/__tests__/resolve-app.test.ts +1 -1
  106. package/src/__tests__/run-due-schedules.test.ts +1 -1
  107. package/src/__tests__/scaffold-managed-skill-tool.test.ts +0 -53
  108. package/src/__tests__/schedule-routes.test.ts +1 -1
  109. package/src/__tests__/schedule-store.test.ts +1 -1
  110. package/src/__tests__/secret-routes-cloud-proxy.test.ts +1 -1
  111. package/src/__tests__/skill-load-plugin-scope.test.ts +1 -1
  112. package/src/__tests__/surface-completion-compaction-boundary.test.ts +1 -1
  113. package/src/__tests__/tool-approval-handler.test.ts +1 -1
  114. package/src/__tests__/tool-audit.test.ts +5 -235
  115. package/src/__tests__/tool-executor-lifecycle-events.test.ts +54 -114
  116. package/src/__tests__/tools-get-route.test.ts +1 -1
  117. package/src/__tests__/turn-outcome-read.test.ts +1 -1
  118. package/src/__tests__/twilio-routes.test.ts +0 -1
  119. package/src/__tests__/usage-attribution.test.ts +0 -31
  120. package/src/__tests__/verification-control-plane-policy.test.ts +3 -10
  121. package/src/__tests__/visible-app-context.test.ts +1 -1
  122. package/src/__tests__/voice-ingress-preflight.test.ts +1 -1
  123. package/src/__tests__/workspace-git-service.test.ts +1 -1
  124. package/src/__tests__/workspace-greetings.test.ts +1 -1
  125. package/src/acp/__tests__/helpers/acp-config-stub.ts +1 -1
  126. package/src/activation/progress-store.ts +1 -1
  127. package/src/activation/turn-hooks.ts +1 -1
  128. package/src/agent/loop.ts +0 -51
  129. package/src/apps/app-store.ts +1 -1
  130. package/src/avatar/__tests__/avatar-store.test.ts +2 -172
  131. package/src/avatar/accent-backfill.ts +1 -1
  132. package/src/avatar/avatar-manifest.ts +1 -1
  133. package/src/avatar/avatar-store.ts +10 -69
  134. package/src/avatar/ensure-raster.ts +1 -1
  135. package/src/avatar/identity-avatar.ts +1 -1
  136. package/src/avatar/sync-avatar.ts +1 -1
  137. package/src/avatar/traits-png-sync.ts +1 -1
  138. package/src/bundler/compiler-tools.ts +1 -1
  139. package/src/bundler/package-resolver.ts +1 -1
  140. package/src/calls/__tests__/call-controller.test.ts +25 -27
  141. package/src/calls/active-call-lease.ts +1 -1
  142. package/src/calls/call-controller.ts +3 -3
  143. package/src/calls/call-domain.ts +4 -8
  144. package/src/calls/call-store.ts +2 -76
  145. package/src/calls/resolve-call-tts-provider.ts +3 -3
  146. package/src/calls/twilio-config.ts +3 -3
  147. package/src/calls/twilio-rest.ts +2 -2
  148. package/src/calls/voice-ingress-preflight.ts +2 -2
  149. package/src/cli/bundled-modules.ts +0 -2
  150. package/src/cli/commands/__tests__/apps.test.ts +1 -1
  151. package/src/cli/commands/__tests__/plugins.test.ts +9 -66
  152. package/src/cli/commands/__tests__/ps.test.ts +67 -0
  153. package/src/cli/commands/auth.help.ts +2 -2
  154. package/src/cli/commands/avatar.ts +1 -1
  155. package/src/cli/commands/changelog.ts +1 -1
  156. package/src/cli/commands/cloud/__tests__/subscription.test.ts +2 -2
  157. package/src/cli/commands/cloud/index.help.ts +1 -1
  158. package/src/cli/commands/cloud/index.ts +2 -2
  159. package/src/cli/commands/db/refresh.ts +1 -1
  160. package/src/cli/commands/db/repair-step-conversation-backfill.ts +1 -1
  161. package/src/cli/commands/db/repair.ts +1 -1
  162. package/src/cli/commands/db/status.ts +1 -1
  163. package/src/cli/commands/inference-profiles.ts +1 -12
  164. package/src/cli/commands/memory/__tests__/memory-v3.test.ts +1 -116
  165. package/src/cli/commands/memory/index.help.ts +1 -43
  166. package/src/cli/commands/memory/memory-v3.ts +0 -64
  167. package/src/cli/commands/plugins.ts +54 -205
  168. package/src/cli/commands/ps.ts +5 -2
  169. package/src/cli/commands/status.ts +1 -1
  170. package/src/cli/index.help.ts +0 -2
  171. package/src/cli/lib/__tests__/inspect-plugin.test.ts +36 -66
  172. package/src/cli/lib/__tests__/install-from-cloud.test.ts +1 -1
  173. package/src/cli/lib/__tests__/install-from-github.test.ts +41 -117
  174. package/src/cli/lib/__tests__/plugin-catalog-cache.test.ts +2 -185
  175. package/src/cli/lib/__tests__/plugin-catalog-resolve.test.ts +36 -66
  176. package/src/cli/lib/__tests__/plugin-catalog-visibility.test.ts +4 -6
  177. package/src/cli/lib/__tests__/plugin-details.test.ts +113 -96
  178. package/src/cli/lib/__tests__/search-plugins.test.ts +9 -16
  179. package/src/cli/lib/__tests__/uninstall-plugin.test.ts +1 -1
  180. package/src/cli/lib/__tests__/upgrade-plugin.test.ts +38 -15
  181. package/src/cli/lib/diff-plugin.ts +1 -1
  182. package/src/cli/lib/inspect-plugin.ts +13 -97
  183. package/src/cli/lib/install-from-cloud.ts +1 -1
  184. package/src/cli/lib/install-from-github.ts +75 -154
  185. package/src/cli/lib/install-plugin-dependencies.ts +1 -1
  186. package/src/cli/lib/list-installed-plugins.ts +1 -1
  187. package/src/cli/lib/open-browser.ts +1 -1
  188. package/src/cli/lib/plugin-catalog-cache.ts +8 -51
  189. package/src/cli/lib/plugin-catalog-resolve.ts +3 -22
  190. package/src/cli/lib/plugin-details.ts +5 -27
  191. package/src/cli/lib/plugin-marketplace.ts +18 -266
  192. package/src/cli/lib/search-plugins.ts +23 -43
  193. package/src/cli/lib/toggle-plugin.ts +1 -1
  194. package/src/cli/lib/uninstall-plugin.ts +1 -1
  195. package/src/cli/lib/upgrade-plugin.ts +3 -49
  196. package/src/cli/program.ts +1 -3
  197. package/src/cli.ts +1 -1
  198. package/src/cloud/client.ts +0 -6
  199. package/src/cloud/consent-cache.test.ts +22 -201
  200. package/src/cloud/consent-cache.ts +16 -111
  201. package/src/cloud/sync-identity.ts +1 -1
  202. package/src/config/__tests__/chat-settings.test.ts +1 -1
  203. package/src/config/__tests__/cloud-identity.test.ts +15 -2
  204. package/src/config/__tests__/default-plugin-skill-discovery.test.ts +1 -1
  205. package/src/config/__tests__/default-profile-catalog.test.ts +12 -51
  206. package/src/config/__tests__/deployment-context-defaults.test.ts +13 -13
  207. package/src/config/__tests__/loader-callsite-strip-fallback.test.ts +4 -4
  208. package/src/config/__tests__/loader-last-known-good.test.ts +9 -9
  209. package/src/config/__tests__/loader-sparse-array-cleanup.test.ts +7 -7
  210. package/src/config/__tests__/plugin-resident-skill-discovery.test.ts +1 -1
  211. package/src/config/__tests__/profile-materialization.test.ts +2 -4
  212. package/src/config/__tests__/sync-gated-profiles.test.ts +1 -106
  213. package/src/config/acp-agent-write.ts +1 -1
  214. package/src/config/bundled-skills/settings/tools/open-system-settings.test.ts +1 -1
  215. package/src/config/bundled-skills/settings/tools/open-system-settings.ts +1 -1
  216. package/src/config/call-site-defaults.ts +0 -6
  217. package/src/config/cloud-identity.ts +12 -5
  218. package/src/config/composer-preferences.ts +1 -1
  219. package/src/config/default-profile-catalog.ts +8 -75
  220. package/src/config/default-profile-names.ts +2 -25
  221. package/src/config/env-registry.ts +1 -14
  222. package/src/config/env.ts +8 -6
  223. package/src/config/llm-resolver.ts +1 -2
  224. package/src/config/loader.ts +13 -17
  225. package/src/config/profile-materialization.ts +1 -1
  226. package/src/config/schema.ts +1 -7
  227. package/src/config/schemas/call-site-catalog.ts +0 -7
  228. package/src/config/schemas/llm.ts +25 -32
  229. package/src/config/seed-inference-profiles.ts +16 -17
  230. package/src/config/skills.ts +2 -2
  231. package/src/config/sync-gated-profiles.ts +6 -24
  232. package/src/credential-health/credential-health-service.ts +10 -3
  233. package/src/daemon/approval-generators.ts +3 -3
  234. package/src/daemon/config-watcher.ts +2 -2
  235. package/src/daemon/conversation-agent-loop-handlers.ts +0 -18
  236. package/src/daemon/conversation-agent-loop.ts +6 -97
  237. package/src/daemon/conversation-process.ts +1 -1
  238. package/src/daemon/conversation-skill-tools.ts +4 -72
  239. package/src/daemon/conversation-store.ts +1 -1
  240. package/src/daemon/conversation-surface-state.ts +0 -33
  241. package/src/daemon/conversation-surfaces.ts +1 -86
  242. package/src/daemon/conversation-tool-setup.test.ts +1 -1
  243. package/src/daemon/conversation-tool-setup.ts +0 -23
  244. package/src/daemon/conversation.ts +3 -5
  245. package/src/daemon/daemon-control.ts +3 -3
  246. package/src/daemon/dictation-profile-store.ts +3 -3
  247. package/src/daemon/event-loop-watchdog.test.ts +2 -198
  248. package/src/daemon/event-loop-watchdog.ts +0 -185
  249. package/src/daemon/external-plugins-bootstrap.ts +1 -1
  250. package/src/daemon/first-greeting.ts +1 -1
  251. package/src/daemon/handlers/skills.ts +1 -1
  252. package/src/daemon/host-app-control-proxy.ts +1 -1
  253. package/src/daemon/host-cu-proxy.ts +2 -2
  254. package/src/daemon/identity-helpers.ts +1 -1
  255. package/src/daemon/lifecycle.ts +11 -15
  256. package/src/daemon/main.ts +1 -1
  257. package/src/daemon/now-scratchpad.ts +1 -1
  258. package/src/daemon/process-message.ts +4 -4
  259. package/src/daemon/profiler-run-store.ts +2 -2
  260. package/src/daemon/providers-setup.ts +2 -2
  261. package/src/daemon/shutdown-handlers.ts +0 -10
  262. package/src/daemon/sqlite-corruption-watchdog.test.ts +2 -142
  263. package/src/daemon/sqlite-corruption-watchdog.ts +17 -81
  264. package/src/daemon/tool-side-effects.ts +1 -1
  265. package/src/desktop/desktop-session-manager.ts +1 -1
  266. package/src/desktop/desktop-wallpaper-renderer.ts +1 -1
  267. package/src/heartbeat/heartbeat-service.ts +1 -1
  268. package/src/home/feed-writer.ts +1 -1
  269. package/src/home/home-greeting-cache.ts +1 -1
  270. package/src/home/relationship-state-writer.ts +2 -2
  271. package/src/hooks/__tests__/hook-live-reload.test.ts +1 -1
  272. package/src/hooks/hook-loader.ts +2 -2
  273. package/src/inbound/__tests__/oauth-callback-url.test.ts +2 -2
  274. package/src/inbound/oauth-callback-url.ts +3 -3
  275. package/src/ipc/__tests__/attachment-ipc.test.ts +1 -1
  276. package/src/ipc/socket-path.ts +1 -1
  277. package/src/live-voice/__tests__/live-voice-archive.test.ts +1 -1
  278. package/src/live-voice/__tests__/live-voice-vad.test.ts +1 -1
  279. package/src/live-voice/live-voice-session.ts +3 -66
  280. package/src/mcp/__tests__/effective-config.test.ts +1 -1
  281. package/src/mcp/__tests__/mcp-oauth-client-registration.test.ts +2 -2
  282. package/src/mcp/__tests__/mcp-oauth-provider.test.ts +2 -3
  283. package/src/mcp/__tests__/reload-signal-emission.test.ts +1 -1
  284. package/src/mcp/__tests__/reload-signal.test.ts +1 -1
  285. package/src/mcp/__tests__/workspace-mcp-config.test.ts +19 -21
  286. package/src/mcp/reload-signal.ts +1 -1
  287. package/src/mcp/workspace-mcp-config.ts +1 -23
  288. package/src/messaging/draft-store.ts +1 -1
  289. package/src/monitoring/__tests__/active-conversations.test.ts +1 -1
  290. package/src/monitoring/__tests__/page-cache.test.ts +1 -1
  291. package/src/monitoring/__tests__/stall-capture.test.ts +1 -1
  292. package/src/monitoring/__tests__/workspace-git-heartbeat.test.ts +1 -1
  293. package/src/monitoring/active-conversations.ts +1 -1
  294. package/src/monitoring/control.ts +1 -1
  295. package/src/monitoring/daemon-boot-time.ts +1 -1
  296. package/src/monitoring/daemon-heartbeat.ts +1 -1
  297. package/src/monitoring/page-cache.ts +1 -1
  298. package/src/monitoring/plugin-auto-update.ts +1 -7
  299. package/src/monitoring/plugin-source-watch.ts +1 -1
  300. package/src/monitoring/recovery/db.ts +1 -1
  301. package/src/monitoring/recovery/inflight-content.ts +1 -1
  302. package/src/monitoring/resource-sampler.ts +3 -14
  303. package/src/monitoring/stall-capture.ts +1 -1
  304. package/src/monitoring/worker.ts +9 -76
  305. package/src/monitoring/workspace-git-heartbeat.ts +1 -1
  306. package/src/oauth/connect-orchestrator.ts +4 -4
  307. package/src/permissions/checker.ts +1 -1
  308. package/src/permissions/workspace-policy.ts +1 -1
  309. package/src/persistence/__tests__/main-db-readonly-probe.ts +27 -52
  310. package/src/persistence/__tests__/message-content-file.test.ts +1 -1
  311. package/src/persistence/__tests__/slow-sync-log.test.ts +0 -2
  312. package/src/persistence/attachments-store.ts +1 -1
  313. package/src/persistence/conversation-crud.ts +1 -38
  314. package/src/persistence/conversation-directories.ts +1 -1
  315. package/src/persistence/conversation-types.ts +0 -8
  316. package/src/persistence/db-async-query.ts +1 -1
  317. package/src/persistence/db-connection.ts +11 -1
  318. package/src/persistence/db-init.ts +1 -1
  319. package/src/persistence/db-maintenance.ts +1 -1
  320. package/src/persistence/embeddings/__tests__/embedding-local-lifecycle.test.ts +1 -1
  321. package/src/persistence/embeddings/embedding-local.ts +4 -4
  322. package/src/persistence/embeddings/embedding-runtime-manager.ts +1 -1
  323. package/src/persistence/embeddings/qdrant-client.ts +1 -1
  324. package/src/persistence/embeddings/qdrant-manager.ts +1 -1
  325. package/src/persistence/job-handlers/__tests__/message-lexical-backfill.test.ts +1 -1
  326. package/src/persistence/job-handlers/__tests__/message-lexical-enqueue.test.ts +1 -1
  327. package/src/persistence/job-handlers/cleanup.ts +8 -17
  328. package/src/persistence/llm-usage-store.ts +2 -229
  329. package/src/persistence/message-content-file.ts +1 -1
  330. package/src/persistence/migrations/209-strip-thinking-from-consolidated.ts +1 -1
  331. package/src/persistence/migrations/222-strip-placeholder-sentinels-from-messages.ts +1 -1
  332. package/src/persistence/migrations/296-rewrite-balanced-economy-profile-pins.test.ts +1 -1
  333. package/src/persistence/migrations/306-rewrite-frontier-profile-pins.test.ts +1 -1
  334. package/src/persistence/migrations/329-move-onboarding-events-to-telemetry-db.test.ts +13 -0
  335. package/src/persistence/migrations/330-move-auth-fallback-events-to-telemetry-db.test.ts +13 -0
  336. package/src/persistence/migrations/331-move-lifecycle-events-to-telemetry-db.test.ts +13 -0
  337. package/src/persistence/migrations/332-move-skill-loaded-events-to-telemetry-db.test.ts +13 -0
  338. package/src/persistence/migrations/333-create-telemetry-events-table.test.ts +7 -4
  339. package/src/persistence/migrations/334-backfill-telemetry-events-outbox.test.ts +13 -0
  340. package/src/persistence/migrations/387-drop-telemetry-tables.ts +51 -0
  341. package/src/persistence/migrations/__tests__/327-create-flush-checkpoints.test.ts +9 -1
  342. package/src/persistence/migrations/__tests__/387-drop-telemetry-tables.test.ts +79 -0
  343. package/src/persistence/migrations/helpers/relocation.ts +1 -1
  344. package/src/persistence/migrations/run-migrations.ts +1 -1
  345. package/src/persistence/migrations/validate-migration-state.ts +1 -1
  346. package/src/persistence/raw-query.ts +1 -29
  347. package/src/persistence/slow-sync-log.ts +0 -23
  348. package/src/persistence/steps.ts +2 -0
  349. package/src/{telemetry → persistence}/tool-audit.ts +6 -121
  350. package/src/plugin-api/index.ts +1 -1
  351. package/src/plugin-api/plugin-name-env.ts +1 -1
  352. package/src/plugins/__tests__/installed-plugin-dirs.test.ts +1 -1
  353. package/src/plugins/collect-source-versions.ts +1 -1
  354. package/src/plugins/defaults/channel/package.json +1 -1
  355. package/src/plugins/defaults/cloud-hosted/package.json +1 -1
  356. package/src/plugins/defaults/compaction/package.json +1 -1
  357. package/src/plugins/defaults/documents/package.json +1 -1
  358. package/src/plugins/defaults/empty-response/package.json +1 -1
  359. package/src/plugins/defaults/exploration-drift/package.json +1 -1
  360. package/src/plugins/defaults/image-fallback/package.json +1 -1
  361. package/src/plugins/defaults/image-recovery/package.json +1 -1
  362. package/src/plugins/defaults/max-tokens-continue/package.json +1 -1
  363. package/src/plugins/defaults/memory/__tests__/db-async-query.test.ts +1 -1
  364. package/src/plugins/defaults/memory/__tests__/db-maintenance.test.ts +1 -1
  365. package/src/plugins/defaults/memory/__tests__/memory-retrospective-job.test.ts +0 -82
  366. package/src/plugins/defaults/memory/__tests__/memory-retrospective-skill-card.test.ts +0 -41
  367. package/src/plugins/defaults/memory/__tests__/memory-tier-boundary-guard.test.ts +0 -2
  368. package/src/plugins/defaults/memory/memory-retrospective-job.ts +3 -52
  369. package/src/plugins/defaults/memory/memory-retrospective-skill-card.ts +0 -18
  370. package/src/plugins/defaults/memory/package.json +1 -1
  371. package/src/plugins/defaults/memory/paths.ts +4 -4
  372. package/src/plugins/defaults/memory/src/__tests__/memory-worker-routes.test.ts +1 -1
  373. package/src/plugins/defaults/memory/src/memory-v2-routes.ts +5 -5
  374. package/src/plugins/defaults/memory/src/memory-v3-routes.ts +0 -207
  375. package/src/plugins/defaults/memory/src/memory-worker-routes.ts +1 -1
  376. package/src/plugins/defaults/memory/startup.ts +1 -22
  377. package/src/plugins/defaults/memory/v3/__tests__/orchestrate.test.ts +2 -253
  378. package/src/plugins/defaults/memory/v3/orchestrate.ts +5 -129
  379. package/src/plugins/defaults/memory/worker-control.ts +1 -1
  380. package/src/plugins/defaults/memory/worker.ts +2 -2
  381. package/src/plugins/defaults/session/package.json +1 -1
  382. package/src/plugins/defaults/surface-completion-nudge/package.json +1 -1
  383. package/src/plugins/defaults/task-progress/package.json +1 -1
  384. package/src/plugins/defaults/task-progress-nudge/package.json +1 -1
  385. package/src/plugins/defaults/title-generate/package.json +1 -1
  386. package/src/plugins/defaults/tool-error/package.json +1 -1
  387. package/src/plugins/defaults/tool-result-truncate/package.json +1 -1
  388. package/src/plugins/defaults/turn-context/package.json +1 -1
  389. package/src/plugins/defaults/workspace/injectors.ts +1 -1
  390. package/src/plugins/defaults/workspace/package.json +1 -1
  391. package/src/plugins/disabled-state.ts +1 -1
  392. package/src/plugins/ensure-plugin-api-shim.ts +1 -1
  393. package/src/plugins/ensure-shared-dep-links.ts +1 -1
  394. package/src/plugins/installed-plugin-dirs.ts +1 -1
  395. package/src/plugins/mcp-servers.ts +7 -9
  396. package/src/plugins/mtime-cache.ts +2 -2
  397. package/src/plugins/source-versions.ts +1 -1
  398. package/src/prompts/bootstrap-cleanup.ts +1 -1
  399. package/src/prompts/persona-resolver.ts +1 -1
  400. package/src/prompts/sections.ts +2 -2
  401. package/src/prompts/system-prompt.ts +10 -42
  402. package/src/prompts/templates/BOOTSTRAP-ACTIVATION-RAIL.md +0 -37
  403. package/src/providers/__tests__/cadet-connection-routing.test.ts +2 -2
  404. package/src/providers/cadet/client.ts +1 -1
  405. package/src/providers/inference/__tests__/base-url-route-validation.test.ts +1 -1
  406. package/src/providers/inference/adapter-factory.ts +1 -1
  407. package/src/providers/inference/backfill.ts +3 -10
  408. package/src/providers/inference/profile-probe.ts +1 -1
  409. package/src/providers/retry.ts +0 -2
  410. package/src/providers/types.ts +0 -7
  411. package/src/providers/usage-tracking.ts +1 -1
  412. package/src/routes/__tests__/route-host.test.ts +1 -1
  413. package/src/routes/control.ts +1 -1
  414. package/src/routes/route-host-client.ts +1 -1
  415. package/src/routes/worker.ts +2 -2
  416. package/src/runtime/agent-wake.ts +1 -1
  417. package/src/runtime/assistant-stream-state.ts +1 -1
  418. package/src/runtime/auth/token-service.ts +1 -1
  419. package/src/runtime/background-job-runner.ts +1 -1
  420. package/src/runtime/middleware/twilio-validation.ts +2 -2
  421. package/src/runtime/routes/__tests__/app-pin-routes.test.ts +1 -1
  422. package/src/runtime/routes/__tests__/apps-refresh-route.test.ts +1 -1
  423. package/src/runtime/routes/__tests__/avatar-state-routes.test.ts +3 -33
  424. package/src/runtime/routes/__tests__/cloud-credits-routes.test.ts +5 -4
  425. package/src/runtime/routes/__tests__/cloud-invoice-routes.test.ts +4 -3
  426. package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +72 -298
  427. package/src/runtime/routes/__tests__/default-plugin-routes.test.ts +1 -1
  428. package/src/runtime/routes/__tests__/deprecated-route-context.test.ts +15 -62
  429. package/src/runtime/routes/__tests__/inference-profiles-routes.test.ts +105 -12
  430. package/src/runtime/routes/__tests__/ingress-status-routes.test.ts +1 -1
  431. package/src/runtime/routes/__tests__/monitoring-routes.test.ts +1 -1
  432. package/src/runtime/routes/__tests__/plugins-routes.test.ts +47 -211
  433. package/src/runtime/routes/__tests__/route-host-worker-routes.test.ts +1 -1
  434. package/src/runtime/routes/__tests__/schedule-routes-disarm-reason.test.ts +1 -1
  435. package/src/runtime/routes/__tests__/schedule-worker-routes.test.ts +1 -1
  436. package/src/runtime/routes/__tests__/user-route-dispatcher-host.test.ts +1 -1
  437. package/src/runtime/routes/__tests__/user-route-dispatcher.test.ts +1 -1
  438. package/src/runtime/routes/__tests__/user-routes-cli.test.ts +1 -1
  439. package/src/runtime/routes/__tests__/user-routes-notices.test.ts +1 -1
  440. package/src/runtime/routes/__tests__/user-routes-request.test.ts +1 -1
  441. package/src/runtime/routes/app-management-routes.ts +1 -1
  442. package/src/runtime/routes/attachment-routes.ts +1 -1
  443. package/src/runtime/routes/audit-routes.ts +1 -1
  444. package/src/runtime/routes/avatar-routes.ts +3 -10
  445. package/src/runtime/routes/cloud-routes.ts +3 -3
  446. package/src/runtime/routes/content-source-routes.ts +1 -1
  447. package/src/runtime/routes/conversation-query-routes.ts +49 -706
  448. package/src/runtime/routes/conversation-routes.ts +1 -38
  449. package/src/runtime/routes/debug-routes.ts +1 -1
  450. package/src/runtime/routes/deprecated-route-context.ts +5 -61
  451. package/src/runtime/routes/heartbeat-routes.ts +1 -1
  452. package/src/runtime/routes/identity-routes.ts +1 -1
  453. package/src/runtime/routes/index.ts +0 -6
  454. package/src/runtime/routes/inference-profile-session-handler.ts +3 -3
  455. package/src/runtime/routes/inference-profiles-routes.ts +48 -21
  456. package/src/runtime/routes/inference-provider-connection-routes.ts +0 -1
  457. package/src/runtime/routes/llm-call-sites-routes.ts +3 -3
  458. package/src/runtime/routes/log-export/__tests__/installed-inventory.test.ts +1 -1
  459. package/src/runtime/routes/log-export/__tests__/workspace-allowlist-error-contract.test.ts +1 -1
  460. package/src/runtime/routes/log-export/__tests__/workspace-allowlist.test.ts +1 -1
  461. package/src/runtime/routes/log-export/workspace-allowlist.ts +1 -1
  462. package/src/runtime/routes/log-export-routes.ts +17 -15
  463. package/src/runtime/routes/migration-rollback-routes.ts +1 -1
  464. package/src/runtime/routes/migration-routes.ts +2 -3
  465. package/src/runtime/routes/monitoring-routes.ts +2 -2
  466. package/src/runtime/routes/oauth-providers.ts +5 -5
  467. package/src/runtime/routes/plugins-routes.ts +38 -163
  468. package/src/runtime/routes/profiler-routes.ts +1 -1
  469. package/src/runtime/routes/route-host-worker-routes.ts +1 -1
  470. package/src/runtime/routes/sanity-routes.ts +1 -1
  471. package/src/runtime/routes/schedule-routes.ts +1 -1
  472. package/src/runtime/routes/schedule-worker-routes.ts +1 -1
  473. package/src/runtime/routes/settings-routes.ts +1 -1
  474. package/src/runtime/routes/sounds-config-routes.ts +1 -1
  475. package/src/runtime/routes/surface-conversation-resolver.ts +1 -7
  476. package/src/runtime/routes/user-route-dispatcher.ts +1 -3
  477. package/src/runtime/routes/user-route-import.ts +1 -1
  478. package/src/runtime/routes/user-route-resolution.ts +1 -1
  479. package/src/runtime/routes/user-routes-cli.ts +1 -1
  480. package/src/runtime/routes/workspace-commit-routes.ts +1 -1
  481. package/src/runtime/routes/workspace-greetings.ts +1 -1
  482. package/src/runtime/routes/workspace-routes.ts +1 -1
  483. package/src/runtime/routes/workspace-utils.ts +1 -1
  484. package/src/runtime/sync/resource-sync-events.ts +1 -1
  485. package/src/schedule/__tests__/plugin-schedule-declarations.test.ts +1 -1
  486. package/src/schedule/__tests__/plugin-schedule-reconciler.test.ts +1 -1
  487. package/src/schedule/plugin-schedule-availability.ts +1 -1
  488. package/src/schedule/plugin-schedule-declarations.ts +1 -1
  489. package/src/schedule/run-script.ts +1 -1
  490. package/src/schedule/scheduler.ts +1 -11
  491. package/src/schedule/worker-control.ts +1 -1
  492. package/src/schedule/worker.ts +3 -3
  493. package/src/security/oauth2.ts +2 -2
  494. package/src/security/secret-allowlist.ts +1 -1
  495. package/src/signals/cancel.ts +1 -1
  496. package/src/signals/conversation-undo.ts +1 -1
  497. package/src/signals/emit-event.ts +1 -1
  498. package/src/signals/event-stream.ts +1 -1
  499. package/src/signals/user-message.ts +1 -1
  500. package/src/skills/catalog-install.ts +2 -1
  501. package/src/skills/clawhub.ts +1 -1
  502. package/src/skills/cloud-store.ts +1 -1
  503. package/src/skills/path-classifier.ts +1 -1
  504. package/src/skills/skill-history.ts +1 -1
  505. package/src/skills/skillssh-registry.ts +1 -1
  506. package/src/skills/uninstall.ts +1 -1
  507. package/src/skills/workspace-skill-md-signature.ts +1 -1
  508. package/src/subagent/manager.ts +1 -1
  509. package/src/theme/workspace-theme.ts +1 -1
  510. package/src/tools/browser/auth-cache.ts +1 -1
  511. package/src/tools/browser/browser-manager.ts +1 -1
  512. package/src/tools/browser/runtime-check.ts +1 -1
  513. package/src/tools/executor.ts +4 -4
  514. package/src/tools/filesystem/write.ts +1 -1
  515. package/src/tools/permission-checker.ts +2 -51
  516. package/src/tools/run-standalone.ts +1 -1
  517. package/src/tools/skills/format-input-schema.ts +1 -1
  518. package/src/tools/skills/load.ts +1 -1
  519. package/src/tools/skills/scaffold-cloud.ts +0 -32
  520. package/src/tools/terminal/safe-env.ts +1 -2
  521. package/src/tools/terminal/sanitized-bash.ts +1 -1
  522. package/src/tools/terminal/shell.ts +1 -1
  523. package/src/tools/tool-approval-handler.ts +4 -1
  524. package/src/tools/workflows/manage-workflows.ts +2 -2
  525. package/src/tools/workflows/run-workflow.test.ts +1 -1
  526. package/src/tools/workspace-tools/loader.ts +1 -1
  527. package/src/tts/synthesis-stream.ts +2 -2
  528. package/src/usage/attribution.ts +1 -11
  529. package/src/util/browser.ts +1 -1
  530. package/src/util/bun-runtime.ts +2 -1
  531. package/src/util/device-id.ts +1 -1
  532. package/src/util/disk-usage.ts +4 -139
  533. package/src/util/layout.ts +3 -3
  534. package/src/util/logger.ts +1 -1
  535. package/src/util/logs-db-path.ts +1 -1
  536. package/src/util/memory-db-path.ts +1 -1
  537. package/src/util/{platform.ts → os.ts} +5 -30
  538. package/src/util/process-tree.ts +19 -0
  539. package/src/util/sqlite3-runtime.ts +1 -1
  540. package/src/util/telemetry-db-path.ts +1 -1
  541. package/src/watcher/__tests__/engine.test.ts +0 -23
  542. package/src/watcher/engine.ts +0 -7
  543. package/src/windows-compiled-cli.ts +0 -4
  544. package/src/windows-compiled-worker-entry.ts +0 -6
  545. package/src/workflows/leaf-runner.test.ts +1 -1
  546. package/src/workflows/leaf-runner.ts +1 -1
  547. package/src/workflows/library.ts +1 -1
  548. package/src/workspace/adaptive-thinking-repair.ts +5 -24
  549. package/src/workspace/byok-default-profile-ensure.ts +24 -26
  550. package/src/workspace/custom-profile-ensure.ts +2 -2
  551. package/src/workspace/git-service.ts +1 -1
  552. package/src/workspace/hatched-date.ts +1 -1
  553. package/src/workspace/migrations/038-unify-llm-callsite-configs.ts +2 -2
  554. package/src/workspace/migrations/040-seed-latency-callsite-defaults.ts +1 -1
  555. package/src/workspace/migrations/050-seed-main-agent-opus-callsite.ts +1 -1
  556. package/src/workspace/migrations/077-seed-memory-router-callsite.ts +1 -1
  557. package/src/workspace/migrations/registry.ts +0 -4
  558. package/src/workspace/turn-commit.ts +1 -1
  559. package/docs/activation-funnel-telemetry.md +0 -324
  560. package/scripts/bundled-plugin-packages.ts +0 -154
  561. package/scripts/generate-bundled-plugin-packages.ts +0 -29
  562. package/src/__tests__/activation-early-marking.test.ts +0 -114
  563. package/src/__tests__/auth-fallback-events-store.test.ts +0 -99
  564. package/src/__tests__/config-get-vision-flag.test.ts +0 -139
  565. package/src/__tests__/conversation-surfaces-activation-emit.test.ts +0 -400
  566. package/src/__tests__/internal-telemetry-routes.test.ts +0 -213
  567. package/src/__tests__/telemetry-routes.test.ts +0 -182
  568. package/src/__tests__/turn-events-store.test.ts +0 -376
  569. package/src/__tests__/ui-channel-variants.test.ts +0 -53
  570. package/src/avatar/__tests__/avatar-changed-telemetry.test.ts +0 -217
  571. package/src/avatar/avatar-changed-telemetry.ts +0 -128
  572. package/src/calls/__tests__/call-funnel-telemetry.test.ts +0 -204
  573. package/src/cli/commands/telemetry.help.ts +0 -27
  574. package/src/cli/commands/telemetry.ts +0 -83
  575. package/src/cli/lib/__tests__/local-plugin-upgrade.test.ts +0 -251
  576. package/src/cli/lib/__tests__/plugin-catalog-local.test.ts +0 -113
  577. package/src/cli/lib/__tests__/plugin-marketplace.test.ts +0 -384
  578. package/src/cli/lib/__tests__/plugin-pin-history.test.ts +0 -164
  579. package/src/cli/lib/__tests__/plugins-install-offline.test.ts +0 -228
  580. package/src/cli/lib/bundled-marketplace.json +0 -1575
  581. package/src/cli/lib/bundled-plugin-packages.json +0 -827
  582. package/src/cli/lib/bundled-plugin-packages.ts +0 -87
  583. package/src/cli/lib/plugin-catalog-local.ts +0 -94
  584. package/src/cli/lib/plugin-pin-history.ts +0 -276
  585. package/src/cloud/feature-gate.ts +0 -8
  586. package/src/config/__tests__/cloud-rehydration.test.ts +0 -180
  587. package/src/config/cloud-rehydration.ts +0 -35
  588. package/src/daemon/__tests__/auto-profile-router.test.ts +0 -380
  589. package/src/daemon/auto-profile-router.ts +0 -428
  590. package/src/live-voice/__tests__/live-voice-session-telemetry.test.ts +0 -391
  591. package/src/monitoring/__tests__/db-integrity-sample.test.ts +0 -113
  592. package/src/monitoring/__tests__/oom-kill-reporter.test.ts +0 -374
  593. package/src/monitoring/db-integrity-check.ts +0 -163
  594. package/src/monitoring/db-integrity-sample.ts +0 -176
  595. package/src/monitoring/oom-kill-reporter.ts +0 -469
  596. package/src/onboarding/__tests__/onboarding-events-store.test.ts +0 -158
  597. package/src/onboarding/onboarding-events-store.ts +0 -296
  598. package/src/persistence/__tests__/raw-query-telemetry.test.ts +0 -76
  599. package/src/persistence/lifecycle-events-store.test.ts +0 -134
  600. package/src/persistence/lifecycle-events-store.ts +0 -110
  601. package/src/plugins/defaults/memory/__tests__/activation-session-store.test.ts +0 -76
  602. package/src/plugins/defaults/memory/activation-session-store.ts +0 -50
  603. package/src/plugins/defaults/memory/src/__tests__/memory-v3-gate-stats.test.ts +0 -281
  604. package/src/runtime/routes/auto-profile-routes.ts +0 -83
  605. package/src/runtime/routes/internal-telemetry-routes.ts +0 -142
  606. package/src/runtime/routes/telemetry-routes.ts +0 -274
  607. package/src/security/auth-fallback-events-store.ts +0 -57
  608. package/src/telemetry/__tests__/activation-funnel.test.ts +0 -95
  609. package/src/telemetry/__tests__/config-setting-events-store.test.ts +0 -63
  610. package/src/telemetry/__tests__/config-setting-snapshot.test.ts +0 -143
  611. package/src/telemetry/__tests__/flush-checkpoints.test.ts +0 -56
  612. package/src/telemetry/__tests__/live-voice-funnel.test.ts +0 -174
  613. package/src/telemetry/__tests__/outbox-test-harness.ts +0 -85
  614. package/src/telemetry/__tests__/phone-call-funnel.test.ts +0 -72
  615. package/src/telemetry/__tests__/telemetry-event-fixtures.ts +0 -282
  616. package/src/telemetry/__tests__/watchdog-events-store.test.ts +0 -71
  617. package/src/telemetry/activation-funnel.ts +0 -172
  618. package/src/telemetry/config-setting-events-store.ts +0 -40
  619. package/src/telemetry/config-setting-snapshot.ts +0 -170
  620. package/src/telemetry/flush-checkpoints.ts +0 -70
  621. package/src/telemetry/live-voice-funnel.ts +0 -185
  622. package/src/telemetry/memory-corpus-size.test.ts +0 -120
  623. package/src/telemetry/memory-corpus-size.ts +0 -184
  624. package/src/telemetry/memory-tier-reporter.test.ts +0 -195
  625. package/src/telemetry/memory-tier-reporter.ts +0 -130
  626. package/src/telemetry/phone-call-funnel.ts +0 -144
  627. package/src/telemetry/skill-loaded-events-store.test.ts +0 -93
  628. package/src/telemetry/skill-loaded-events-store.ts +0 -39
  629. package/src/telemetry/telemetry-event-sources.test.ts +0 -223
  630. package/src/telemetry/telemetry-event-sources.ts +0 -597
  631. package/src/telemetry/telemetry-events-outbox.test.ts +0 -375
  632. package/src/telemetry/telemetry-events-outbox.ts +0 -237
  633. package/src/telemetry/telemetry-main-db.ts +0 -48
  634. package/src/telemetry/telemetry-wire-source.json +0 -4
  635. package/src/telemetry/telemetry-wire-validation.test.ts +0 -157
  636. package/src/telemetry/telemetry-wire-validation.ts +0 -162
  637. package/src/telemetry/telemetry-wire.generated.ts +0 -483
  638. package/src/telemetry/tool-executed-events-store.test.ts +0 -210
  639. package/src/telemetry/tool-executed-events-store.ts +0 -102
  640. package/src/telemetry/trace-collection-policy.test.ts +0 -28
  641. package/src/telemetry/trace-collection-policy.ts +0 -30
  642. package/src/telemetry/turn-events-store.ts +0 -216
  643. package/src/telemetry/turn-trace-store.test.ts +0 -884
  644. package/src/telemetry/turn-trace-store.ts +0 -399
  645. package/src/telemetry/types.test.ts +0 -38
  646. package/src/telemetry/types.ts +0 -780
  647. package/src/telemetry/usage-telemetry-reporter.test.ts +0 -3445
  648. package/src/telemetry/usage-telemetry-reporter.ts +0 -566
  649. package/src/telemetry/watchdog-direct-emit.test.ts +0 -112
  650. package/src/telemetry/watchdog-direct-emit.ts +0 -104
  651. package/src/telemetry/watchdog-events-store.ts +0 -31
  652. package/src/tools/ui-surface/channel-variants.ts +0 -52
  653. package/src/watcher/__tests__/telemetry.test.ts +0 -178
  654. package/src/watcher/telemetry.ts +0 -93
  655. package/src/workspace/migrations/097-enable-adaptive-thinking-managed-profiles.ts +0 -165
  656. package/src/workspace/migrations/104-recheck-adaptive-thinking-model-implied-anthropic.ts +0 -151
  657. /package/src/{telemetry → persistence}/tool-usage-store.ts +0 -0
  658. /package/src/{telemetry → persistence}/turn-outcome.ts +0 -0
@@ -35,7 +35,7 @@ import {
35
35
  } from "../../archive/ustar-size.js";
36
36
  import { getCloudBaseUrl } from "../../config/env.js";
37
37
  import { getExistingDeviceId } from "../../util/device-id.js";
38
- import { getWorkspacePluginsDir } from "../../util/platform.js";
38
+ import { getWorkspacePluginsDir } from "../../util/layout.js";
39
39
  import { getPluginManifestInstallAction } from "../../util/plugin-manifest.js";
40
40
  import { APP_VERSION } from "../../version.js";
41
41
  import type { FetchLike } from "./fetch-like.js";
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Install a reviewed plugin by name from its catalog source.
3
3
  *
4
- * A name resolves to an entry in the curated `plugins/marketplace.json`
5
- * manifest. A GitHub source is fetched with a shallow clone at its pinned ref.
4
+ * A name resolves to an entry in the curated plugin catalog (Cadet Cloud's
5
+ * marketplace). A GitHub source is fetched with a shallow clone at its pinned ref.
6
6
  * A local source is read from the exact package version embedded in the
7
7
  * assistant distribution. Both are materialized into
8
8
  * `<workspacePluginsDir>/<name>/` and record their source in the provenance
@@ -45,34 +45,31 @@ import {
45
45
  stripPreservedUserState,
46
46
  } from "../../plugins/plugin-tree-walk.js";
47
47
  import { ensureBun } from "../../util/bun-runtime.js";
48
+ import { getWorkspacePluginsDir } from "../../util/layout.js";
48
49
  import {
49
50
  addToPathEnv,
50
51
  getExtraToolPathDirs,
51
- getWorkspacePluginsDir,
52
52
  isWindows,
53
- } from "../../util/platform.js";
53
+ } from "../../util/os.js";
54
54
  import {
55
55
  getPluginManifestInstallAction,
56
56
  readPluginManifest,
57
57
  } from "../../util/plugin-manifest.js";
58
- import { materializeBundledPluginPackage } from "./bundled-plugin-packages.js";
59
58
  import type { FetchLike } from "./fetch-like.js";
60
59
  import {
61
60
  type DependencyInstaller,
62
61
  installPluginDependencies,
63
62
  } from "./install-plugin-dependencies.js";
63
+ import { getPluginCatalog } from "./plugin-catalog-cache.js";
64
+ import { resolveSourceFromMatch } from "./plugin-catalog-resolve.js";
64
65
  import {
65
66
  computeContentHash,
66
67
  computeFingerprint,
67
68
  type Fingerprint,
68
69
  parseFingerprint,
69
70
  } from "./plugin-fingerprint.js";
70
- import {
71
- fetchMarketplaceEntries,
72
- MarketplaceFetchError,
73
- type ResolvedPluginSource,
74
- resolveMarketplaceSource,
75
- } from "./plugin-marketplace.js";
71
+ import type { ResolvedPluginSource } from "./plugin-marketplace.js";
72
+ import { PluginCatalogUnavailableError } from "./search-plugins.js";
76
73
 
77
74
  const execFileAsync = promisify(execFile);
78
75
 
@@ -142,21 +139,19 @@ export interface InstallPluginOptions {
142
139
  readonly commitOverride?: string;
143
140
  /**
144
141
  * Install directly from these GitHub coordinates, bypassing the curated
145
- * `plugins/marketplace.json` whitelist. The tree is materialized verbatim —
146
- * no curated adapter stub is overlaid — and the source is *untrusted*, so the
147
- * caller is responsible for surfacing a warning. Used to install a plugin not
148
- * yet in the marketplace (typically one still under development). When set,
142
+ * plugin catalog. The tree is materialized verbatim — no curated adapter stub
143
+ * is overlaid — and the source is *untrusted*, so the caller is responsible
144
+ * for surfacing a warning. Used to install a plugin not yet in the catalog
145
+ * (typically one still under development). When set,
149
146
  * {@link InstallPluginOptions.ref}, {@link InstallPluginOptions.commitOverride},
150
147
  * and marketplace resolution are all skipped; `directSource.ref` selects the
151
148
  * commit to clone (a branch, tag, `HEAD`, or full SHA).
152
149
  */
153
150
  readonly directSource?: PluginFetchSource;
154
151
  /**
155
- * Install from an exact source resolved by the reviewed catalog. GitHub
156
- * sources retain the curated adapter overlay. Local sources are complete
157
- * packages embedded in the assistant distribution and do not use an adapter.
158
- * Marketplace resolution and {@link InstallPluginOptions.commitOverride} are
159
- * skipped when this is set.
152
+ * Install from an exact source resolved by the reviewed catalog; retains
153
+ * the curated adapter overlay. Marketplace resolution and
154
+ * {@link InstallPluginOptions.commitOverride} are skipped when this is set.
160
155
  */
161
156
  readonly trustedSource?: PluginMaterializeSource;
162
157
  }
@@ -191,8 +186,6 @@ export interface InstallPluginDeps {
191
186
  readonly beforeSwap?: () => Promise<void>;
192
187
  /** Consent gate between staging and finalize; see {@link ConfirmStagedInstall}. */
193
188
  readonly confirmStaged?: ConfirmStagedInstall;
194
- /** Override embedded-package materialization for focused tests. */
195
- readonly materializeLocalPackage?: typeof materializeBundledPluginPackage;
196
189
  }
197
190
 
198
191
  /** Successful install result. */
@@ -315,29 +308,10 @@ export interface PluginFetchSource {
315
308
  readonly ref: string;
316
309
  }
317
310
 
318
- /** Reviewed package embedded in the assistant distribution. */
319
- export interface LocalPluginFetchSource {
320
- readonly kind: "local";
321
- readonly path: string;
322
- readonly version: string;
323
- readonly ref?: undefined;
324
- }
325
-
326
- export type PluginMaterializeSource =
327
- | PluginFetchSource
328
- | LocalPluginFetchSource;
329
-
330
- export function isLocalPluginSource(
331
- source: PluginMaterializeSource,
332
- ): source is LocalPluginFetchSource {
333
- return "kind" in source && source.kind === "local";
334
- }
311
+ export type PluginMaterializeSource = PluginFetchSource;
335
312
 
336
313
  /** Build the `owner/repo/path` label used in not-found errors. */
337
314
  function sourceLabel(source: PluginMaterializeSource): string {
338
- if (isLocalPluginSource(source)) {
339
- return source.path;
340
- }
341
315
  return source.rootPath
342
316
  ? `${source.owner}/${source.repo}/${source.rootPath}`
343
317
  : `${source.owner}/${source.repo}`;
@@ -345,14 +319,11 @@ function sourceLabel(source: PluginMaterializeSource): string {
345
319
 
346
320
  /**
347
321
  * Resolve a plugin name to its exact marketplace source, or `null` when no
348
- * entry claims the name. A GitHub entry may have a same-named adapter stub
349
- * under `plugins/<name>` that is overlaid onto the clone. A local entry refers
350
- * to a fully self-contained package embedded in the assistant distribution.
322
+ * entry claims the name. A GitHub entry resolves to exact repo coordinates.
351
323
  *
352
- * A transient marketplace failure (rate-limit / 5xx) surfaces as a retryable
353
- * {@link PluginSourceUnavailableError}; a malformed manifest propagates as a
354
- * hard error, since the marketplace is the source of truth for what is
355
- * installable.
324
+ * A transient catalog failure (rate-limit / 5xx) surfaces as a retryable
325
+ * {@link PluginSourceUnavailableError}; a malformed row propagates as a hard
326
+ * error, since the catalog is the source of truth for what is installable.
356
327
  */
357
328
  async function resolvePluginSource(
358
329
  name: string,
@@ -361,14 +332,12 @@ async function resolvePluginSource(
361
332
  ): Promise<PluginMaterializeSource | null> {
362
333
  let resolved: ResolvedPluginSource | null;
363
334
  try {
364
- const entries = await fetchMarketplaceEntries(
365
- { fetch: fetchFn },
366
- { ref: marketplaceRef },
367
- );
368
- resolved = resolveMarketplaceSource(name, entries);
335
+ const catalog = await getPluginCatalog(marketplaceRef, { fetch: fetchFn });
336
+ const match = catalog.matches.find((candidate) => candidate.name === name);
337
+ resolved = match ? resolveSourceFromMatch(match) : null;
369
338
  } catch (err) {
370
- if (err instanceof MarketplaceFetchError && err.transient) {
371
- throw new PluginSourceUnavailableError(err.message, err.status ?? 503);
339
+ if (err instanceof PluginCatalogUnavailableError) {
340
+ throw new PluginSourceUnavailableError(err.message, err.status);
372
341
  }
373
342
  throw err;
374
343
  }
@@ -377,14 +346,6 @@ async function resolvePluginSource(
377
346
  return null;
378
347
  }
379
348
 
380
- if (resolved.kind === "local") {
381
- return {
382
- kind: "local",
383
- path: resolved.path,
384
- version: resolved.version,
385
- };
386
- }
387
-
388
349
  return {
389
350
  owner: resolved.owner,
390
351
  repo: resolved.repo,
@@ -479,9 +440,9 @@ export async function installPlugin(
479
440
 
480
441
  // A direct install bypasses the marketplace whitelist entirely: the source is
481
442
  // supplied by the caller and the tree is materialized verbatim (no curated
482
- // adapter stub). A trusted pre-resolved source (offline bundled-catalog
483
- // install) supplies its coordinates too but keeps the curated overlay.
484
- // Otherwise the name is resolved against the reviewed manifest.
443
+ // adapter stub). A trusted pre-resolved source (catalog-backed install)
444
+ // supplies its coordinates too but keeps the curated overlay. Otherwise the
445
+ // name is resolved against the reviewed catalog.
485
446
  let effectiveSource: PluginMaterializeSource;
486
447
  // Ref the curated adapter stub is fetched at, or `null` to skip the overlay.
487
448
  let stubRef: string | null;
@@ -489,35 +450,27 @@ export async function installPlugin(
489
450
  effectiveSource = opts.directSource;
490
451
  stubRef = null;
491
452
  } else if (opts.trustedSource) {
492
- // Offline bundled-catalog install: clone the external content verbatim but
493
- // keep the curated adapter overlay (like the marketplace-git trusted path).
494
- // The stub lives in this repo, not in `trustedSource` (the external plugin),
495
- // so `trustedSource.ref` can't address it; with no canonical-repo pin
496
- // recorded offline, the stub is fetched at `marketplaceRef` (its default,
497
- // DEFAULT_PLUGIN_REF).
453
+ // Trusted-catalog install: clone the external content verbatim but keep
454
+ // the curated adapter overlay (like the marketplace-git trusted path).
455
+ // The stub lives in this repo, not in `trustedSource` (the external
456
+ // plugin), so `trustedSource.ref` can't address it; the stub is fetched
457
+ // at `marketplaceRef` (its default, DEFAULT_PLUGIN_REF).
498
458
  effectiveSource = opts.trustedSource;
499
- stubRef = isLocalPluginSource(effectiveSource) ? null : marketplaceRef;
459
+ stubRef = marketplaceRef;
500
460
  } else {
501
461
  const source = await resolvePluginSource(name, marketplaceRef, deps.fetch);
502
462
  if (!source) {
503
- throw new PluginNotFoundError(
504
- name,
505
- marketplaceRef,
506
- "plugins/marketplace.json",
507
- );
463
+ throw new PluginNotFoundError(name, marketplaceRef, "the plugin catalog");
508
464
  }
509
465
  // A commit override installs a specific plugin revision while still taking
510
466
  // owner/repo/path (and the adapter stub, via `marketplaceRef`) from the
511
467
  // manifest; otherwise the reviewed pin from the manifest is materialized.
512
- effectiveSource =
513
- opts.commitOverride && !isLocalPluginSource(source)
514
- ? { ...source, ref: opts.commitOverride }
515
- : source;
516
- stubRef = isLocalPluginSource(effectiveSource) ? null : marketplaceRef;
468
+ effectiveSource = opts.commitOverride
469
+ ? { ...source, ref: opts.commitOverride }
470
+ : source;
471
+ stubRef = marketplaceRef;
517
472
  }
518
- const ref = isLocalPluginSource(effectiveSource)
519
- ? effectiveSource.version
520
- : effectiveSource.ref;
473
+ const ref = effectiveSource.ref;
521
474
 
522
475
  const pluginsDir = deps.workspacePluginsDir ?? getWorkspacePluginsDir();
523
476
  const target = join(pluginsDir, name);
@@ -754,28 +707,19 @@ export const INSTALL_META_FILENAME = "install-meta.json";
754
707
  /**
755
708
  * Which catalog manages an installed plugin. Mirrors the skill origin values
756
709
  * (`SkillInstallMeta.origin` in `src/skills/install-meta.ts`) so the two
757
- * systems keep a consistent vocabulary. `"cadet"` denotes the first-party
758
- * `marketplace.json`; the union widens as new sources are supported.
710
+ * systems keep a consistent vocabulary. `"cadet"` denotes first-party; the
711
+ * union widens as new sources are supported.
759
712
  */
760
713
  export type InstallOrigin = "cadet";
761
714
 
762
715
  /** Resolved source coordinates recorded in the provenance sidecar. */
763
- export type InstallMetaSource =
764
- | {
765
- readonly kind: "github";
766
- readonly owner: string;
767
- readonly repo: string;
768
- readonly path?: string;
769
- readonly ref: string;
770
- }
771
- | {
772
- readonly kind: "local";
773
- readonly path: string;
774
- readonly version: string;
775
- readonly owner?: undefined;
776
- readonly repo?: undefined;
777
- readonly ref?: undefined;
778
- };
716
+ export type InstallMetaSource = {
717
+ readonly kind: "github";
718
+ readonly owner: string;
719
+ readonly repo: string;
720
+ readonly path?: string;
721
+ readonly ref: string;
722
+ };
779
723
 
780
724
  /**
781
725
  * Parsed contents of the `install-meta.json` provenance sidecar — what was
@@ -885,19 +829,11 @@ export async function materializePluginTree(
885
829
  },
886
830
  deps: InstallPluginDeps,
887
831
  ): Promise<MaterializedTree> {
888
- const cloned = isLocalPluginSource(opts.source)
889
- ? {
890
- fileCount: (
891
- deps.materializeLocalPackage ?? materializeBundledPluginPackage
892
- )(opts.source.path, opts.source.version, opts.destDir),
893
- commit: null,
894
- committedAt: null,
895
- }
896
- : await copyExternalViaGit(
897
- opts.source,
898
- opts.destDir,
899
- deps.runGit ?? defaultGitRunner,
900
- );
832
+ const cloned = await copyExternalViaGit(
833
+ opts.source,
834
+ opts.destDir,
835
+ deps.runGit ?? defaultGitRunner,
836
+ );
901
837
  // An external clone is often a foreign-ecosystem plugin (e.g. a Claude Code
902
838
  // plugin) that the Cadet loader can't run as-is. When we curate an adapter
903
839
  // stub for it, overlay the stub and run its transform so the materialized
@@ -1637,24 +1573,21 @@ function writeInstallMeta(
1637
1573
  contentHash,
1638
1574
  }: WriteInstallMetaParams,
1639
1575
  ): void {
1640
- const local = isLocalPluginSource(source);
1641
1576
  const meta: InstallMeta = {
1642
1577
  origin: "cadet",
1643
1578
  installedAt: new Date().toISOString(),
1644
1579
  version: readStagedManifestVersion(stagingDir),
1645
- sourceRepo: local ? undefined : `${source.owner}/${source.repo}`,
1580
+ sourceRepo: `${source.owner}/${source.repo}`,
1646
1581
  contentHash,
1647
1582
  author: "user",
1648
1583
  name,
1649
- source: local
1650
- ? { kind: "local", path: source.path, version: source.version }
1651
- : {
1652
- kind: "github",
1653
- owner: source.owner,
1654
- repo: source.repo,
1655
- path: source.rootPath || undefined,
1656
- ref,
1657
- },
1584
+ source: {
1585
+ kind: "github",
1586
+ owner: source.owner,
1587
+ repo: source.repo,
1588
+ path: source.rootPath || undefined,
1589
+ ref,
1590
+ },
1658
1591
  commit,
1659
1592
  committedAt,
1660
1593
  ...(etag ? { etag } : {}),
@@ -1702,32 +1635,20 @@ export function readInstallMeta(pluginDir: string): InstallMeta | null {
1702
1635
  return null;
1703
1636
  }
1704
1637
 
1705
- let parsedSource: InstallMetaSource;
1706
- if (source.kind === "local") {
1707
- if (typeof source.path !== "string" || typeof source.version !== "string") {
1708
- return null;
1709
- }
1710
- parsedSource = {
1711
- kind: "local",
1712
- path: source.path,
1713
- version: source.version,
1714
- };
1715
- } else {
1716
- if (
1717
- typeof source.owner !== "string" ||
1718
- typeof source.repo !== "string" ||
1719
- typeof source.ref !== "string"
1720
- ) {
1721
- return null;
1722
- }
1723
- parsedSource = {
1724
- kind: "github",
1725
- owner: source.owner,
1726
- repo: source.repo,
1727
- path: typeof source.path === "string" ? source.path : undefined,
1728
- ref: source.ref,
1729
- };
1638
+ if (
1639
+ typeof source.owner !== "string" ||
1640
+ typeof source.repo !== "string" ||
1641
+ typeof source.ref !== "string"
1642
+ ) {
1643
+ return null;
1730
1644
  }
1645
+ const parsedSource: InstallMetaSource = {
1646
+ kind: "github",
1647
+ owner: source.owner,
1648
+ repo: source.repo,
1649
+ path: typeof source.path === "string" ? source.path : undefined,
1650
+ ref: source.ref,
1651
+ };
1731
1652
 
1732
1653
  const optionalString = (value: unknown): string | undefined =>
1733
1654
  typeof value === "string" ? value : undefined;
@@ -59,7 +59,7 @@ import { promisify } from "node:util";
59
59
 
60
60
  import { ensureBun } from "../../util/bun-runtime.js";
61
61
  import { getLogger } from "../../util/logger.js";
62
- import { addToPathEnv } from "../../util/platform.js";
62
+ import { addToPathEnv } from "../../util/os.js";
63
63
 
64
64
  const execFileAsync = promisify(execFile);
65
65
 
@@ -18,7 +18,7 @@ import { fileURLToPath } from "node:url";
18
18
 
19
19
  import { z } from "zod";
20
20
 
21
- import { getWorkspacePluginsDir } from "../../util/platform.js";
21
+ import { getWorkspacePluginsDir } from "../../util/layout.js";
22
22
  import {
23
23
  LEGACY_PLUGIN_MANIFEST,
24
24
  readPluginManifest,
@@ -16,7 +16,7 @@ import { spawn } from "node:child_process";
16
16
  import { mkdirSync, writeFileSync } from "node:fs";
17
17
  import { join } from "node:path";
18
18
 
19
- import { getWorkspaceDir } from "../../util/platform.js";
19
+ import { getWorkspaceDir } from "../../util/layout.js";
20
20
 
21
21
  export function openInHostBrowser(
22
22
  url: string,
@@ -1,19 +1,13 @@
1
1
  /**
2
2
  * In-memory cache for the installable plugin catalog.
3
3
  *
4
- * Platform-first: when platform features are enabled the catalog is fetched
5
- * from Cadet Cloud and any fetch failure propagates (fail hard — no
4
+ * The catalog is fetched from Cadet Cloud (`CADET_CLOUD_URL`, overridable for
5
+ * air-gapped installs) and any fetch failure propagates (fail hard — no
6
6
  * stale-cache smoothing). Successful loads are held per git ref for a short
7
- * TTL. When `CADET_DISABLE_CLOUD` disables platform features the bundled
8
- * offline manifest is read instead, with zero network calls.
7
+ * TTL.
9
8
  */
10
9
 
11
- import { areCloudFeaturesEnabled } from "../../cloud/feature-gate.js";
12
10
  import { fetchPluginCatalogFromPlatform } from "./plugin-catalog-cloud.js";
13
- import {
14
- readBundledLocalPluginCatalog,
15
- readBundledPluginCatalog,
16
- } from "./plugin-catalog-local.js";
17
11
  import { filterPluginCatalogByFeatureFlags } from "./plugin-catalog-visibility.js";
18
12
  import type { PluginCatalog, SearchPluginsDeps } from "./search-plugins.js";
19
13
 
@@ -29,62 +23,25 @@ type PluginCatalogLoadDeps = Pick<SearchPluginsDeps, "fetch">;
29
23
 
30
24
  const cache = new Map<string, CacheEntry>();
31
25
 
32
- /**
33
- * Add bundled local packages without overriding cloud-authoritative rows.
34
- * A platform row without an integration borrows the bundled row's
35
- * integration of the same name, so an integration the cloud omits or
36
- * serves malformed never disappears from the catalog.
37
- */
38
- export function mergePlatformCatalogWithBundledLocals(
39
- platform: PluginCatalog,
40
- bundledLocal: PluginCatalog = readBundledLocalPluginCatalog(),
41
- ): PluginCatalog {
42
- const bundledByName = new Map(
43
- bundledLocal.matches.map((match) => [match.name, match]),
44
- );
45
- const platformMatches = platform.matches.map((match) => {
46
- const bundledIntegration = bundledByName.get(match.name)?.integration;
47
- if (match.integration || !bundledIntegration) {
48
- return match;
49
- }
50
- return { ...match, integration: bundledIntegration };
51
- });
52
- const seen = new Set(platform.matches.map((match) => match.name));
53
- return {
54
- ref: platform.ref,
55
- matches: [
56
- ...platformMatches,
57
- ...bundledLocal.matches.filter((match) => !seen.has(match.name)),
58
- ].sort((a, b) => a.name.localeCompare(b.name)),
59
- };
60
- }
61
-
62
26
  /**
63
27
  * Resolve the full plugin catalog at {@link ref}.
64
28
  *
65
- * With platform features disabled the bundled manifest is returned directly —
66
- * an in-memory constant, no network and no TTL. Otherwise the catalog is
67
- * fetched from the cloud and, on success, cached per ref for the TTL; a
68
- * fetch failure propagates so the caller can surface it (e.g. map a rate-limit
69
- * to 503) — no stale catalog is ever served.
29
+ * The catalog is fetched from the cloud and, on success, cached per ref for
30
+ * the TTL; a fetch failure propagates so the caller can surface it (e.g. map
31
+ * a rate-limit to 503) — no stale catalog is ever served.
70
32
  */
71
33
  async function loadPluginCatalog(
72
34
  ref: string,
73
35
  deps: PluginCatalogLoadDeps,
74
36
  ): Promise<PluginCatalog> {
75
- if (!areCloudFeaturesEnabled()) {
76
- return { ...readBundledPluginCatalog(), ref };
77
- }
78
-
79
37
  const cached = cache.get(ref);
80
38
  if (cached && Date.now() - cached.timestamp < PLUGIN_CATALOG_CACHE_TTL_MS) {
81
39
  return cached.catalog;
82
40
  }
83
41
 
84
42
  const catalog = await fetchPluginCatalogFromPlatform(deps, { ref });
85
- const merged = mergePlatformCatalogWithBundledLocals(catalog);
86
- cache.set(ref, { catalog: merged, timestamp: Date.now() });
87
- return merged;
43
+ cache.set(ref, { catalog, timestamp: Date.now() });
44
+ return catalog;
88
45
  }
89
46
 
90
47
  /** Installable catalog with feature-flag visibility applied. */
@@ -3,16 +3,15 @@
3
3
  *
4
4
  * The gated analogues of {@link ./plugin-marketplace}'s `resolveMarketplaceSource`
5
5
  * / GitHub `findMarketplaceEntry`: install-by-name and the detail lookup resolve
6
- * the SAME catalog `search` uses (platform-first via {@link ./plugin-catalog-cache}'s
7
- * `getPluginCatalog`, bundled offline) instead of a direct GitHub
8
- * `plugins/marketplace.json` fetch — so search, install, and details read one source.
6
+ * the SAME catalog `search` uses (via {@link ./plugin-catalog-cache}'s
7
+ * `getPluginCatalog`) instead of a direct GitHub `plugins/marketplace.json`
8
+ * fetch — so search, install, and details read one source.
9
9
  */
10
10
 
11
11
  import { getPluginCatalog } from "./plugin-catalog-cache.js";
12
12
  import { DEFAULT_PLUGIN_REF } from "./plugin-constants.js";
13
13
  import {
14
14
  githubSourceSchema,
15
- localSourceSchema,
16
15
  type ResolvedPluginSource,
17
16
  } from "./plugin-marketplace.js";
18
17
  import type { PluginSearchMatch, SearchPluginsDeps } from "./search-plugins.js";
@@ -41,24 +40,6 @@ export async function findCatalogEntry(
41
40
  export function resolveSourceFromMatch(
42
41
  match: PluginSearchMatch,
43
42
  ): ResolvedPluginSource {
44
- if (match.source.kind === "local") {
45
- const parsed = localSourceSchema.safeParse({
46
- source: "local",
47
- path: match.source.path,
48
- version: match.source.version,
49
- });
50
- if (!parsed.success) {
51
- throw new Error(
52
- `Catalog entry "${match.name}" (${match.source.path}) has an invalid source: ` +
53
- parsed.error.issues.map((issue) => issue.message).join("; "),
54
- );
55
- }
56
- return {
57
- kind: "local",
58
- path: parsed.data.path,
59
- version: parsed.data.version,
60
- };
61
- }
62
43
  // Repo-root `""` maps to `undefined` (omitted = root) so the schema's
63
44
  // non-empty path refine does not reject a valid repo-root entry.
64
45
  const path = match.source.path || undefined;
@@ -34,9 +34,8 @@ import { join } from "node:path";
34
34
 
35
35
  import { z } from "zod";
36
36
 
37
- import { getWorkspacePluginsDir } from "../../util/platform.js";
37
+ import { getWorkspacePluginsDir } from "../../util/layout.js";
38
38
  import { readPluginManifest } from "../../util/plugin-manifest.js";
39
- import { readBundledPluginFile } from "./bundled-plugin-packages.js";
40
39
  import type { FetchLike } from "./fetch-like.js";
41
40
  import { sanitizePluginName } from "./install-from-github.js";
42
41
  import {
@@ -50,9 +49,7 @@ import {
50
49
  import { isPluginCatalogEntryVisible } from "./plugin-catalog-visibility.js";
51
50
  import { DEFAULT_PLUGIN_REF } from "./plugin-constants.js";
52
51
  import { readValidatedPluginIcon } from "./plugin-icon-file.js";
53
- import { fetchMarketplaceEntries } from "./plugin-marketplace.js";
54
52
  import {
55
- marketplaceMatch,
56
53
  PluginCatalogUnavailableError,
57
54
  type PluginMatchSource,
58
55
  type PluginSearchMatch,
@@ -311,17 +308,6 @@ async function readRemotePlugin(
311
308
  source: PluginMatchSource,
312
309
  fetchFn: FetchLike,
313
310
  ): Promise<RemotePlugin> {
314
- if (source.kind === "local") {
315
- const manifest = readBundledPluginFile(
316
- source.path,
317
- source.version,
318
- "plugin.json",
319
- );
320
- return {
321
- manifest: manifest ? safeParseManifest(manifest) : emptyManifest(),
322
- readme: null,
323
- };
324
- }
325
311
  const [owner, repo] = source.repo.split("/", 2) as [string, string];
326
312
  const entries = await listDirSafe(
327
313
  owner,
@@ -430,10 +416,13 @@ async function resolveCatalogEntry(
430
416
  return null;
431
417
  }
432
418
  try {
419
+ // Non-default refs named historical revisions of the old local marketplace
420
+ // manifest; with the catalog living in Cadet Cloud there is nothing to
421
+ // resolve a historical ref against.
433
422
  const match =
434
423
  ref === DEFAULT_PLUGIN_REF
435
424
  ? await findCatalogEntry(name, { fetch: fetchFn })
436
- : await findMarketplaceMatch(name, ref, fetchFn);
425
+ : null;
437
426
  return validateCatalogMatchSource(match);
438
427
  } catch (err) {
439
428
  if (err instanceof PluginCatalogUnavailableError && !installed) {
@@ -466,17 +455,6 @@ function validateCatalogMatchSource(
466
455
  }
467
456
  }
468
457
 
469
- /** Read the GitHub marketplace at {@link ref} and project the named entry. */
470
- async function findMarketplaceMatch(
471
- name: string,
472
- ref: string,
473
- fetchFn: FetchLike,
474
- ): Promise<PluginSearchMatch | null> {
475
- const entries = await fetchMarketplaceEntries({ fetch: fetchFn }, { ref });
476
- const entry = entries.find((e) => e.name === name);
477
- return entry ? marketplaceMatch(entry) : null;
478
- }
479
-
480
458
  function githubFetch(
481
459
  url: string,
482
460
  accept: string,