@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
@@ -39,7 +39,11 @@ import {
39
39
  resolveTreeRefPath,
40
40
  sanitizePluginName,
41
41
  } from "../install-from-github.js";
42
- import { readValidatedPluginIcon } from "../plugin-icon-file.js";
42
+ import { invalidatePluginCatalogCache } from "../plugin-catalog-cache.js";
43
+
44
+ beforeEach(() => {
45
+ invalidatePluginCatalogCache();
46
+ });
43
47
 
44
48
  const CANON_REPO = "vargasjr-dev/mycadet";
45
49
  /** Synthetic host the fixtures use for Contents API `download_url`s. */
@@ -54,21 +58,21 @@ const DOWNLOAD_HOST = "https://files.test/";
54
58
  * Directory listings are derived from the key set; file `download_url`s point
55
59
  * at {@link DOWNLOAD_HOST} and are served with the stored bytes.
56
60
  *
57
- * The marketplace manifest lookup is answered with `manifest` (or a 404 when
58
- * omitted, so the name resolves to no installable source).
61
+ * The plugin catalog lookup is answered with `manifest` flattened into cloud
62
+ * rows (or a 404 when omitted, so the name resolves to no installable source).
59
63
  */
60
64
  function makeContentsFetch(opts: {
61
65
  tree: Record<string, Uint8Array | string | null>;
62
66
  manifest?: unknown;
63
67
  /**
64
- * HTTP status to answer the manifest fetch with. Defaults to 200 (when
68
+ * HTTP status to answer the catalog fetch with. Defaults to 200 (when
65
69
  * `manifest` is provided) or 404 (when omitted). Set to a transient status
66
- * (e.g. 500) to simulate a marketplace lookup that fails rather than being
70
+ * (e.g. 500) to simulate a catalog lookup that fails rather than being
67
71
  * absent.
68
72
  */
69
73
  manifestStatus?: number;
70
74
  }): FetchLike {
71
- const MANIFEST_URL = `https://api.github.com/repos/${CANON_REPO}/contents/plugins/marketplace.json`;
75
+ const CATALOG_URL = "https://test-cloud.mycadet.ai/v1/plugins/";
72
76
  const CONTENTS = `https://api.github.com/repos/${CANON_REPO}/contents/`;
73
77
  const { tree } = opts;
74
78
 
@@ -108,16 +112,43 @@ function makeContentsFetch(opts: {
108
112
  return (async (input: RequestInfo | URL) => {
109
113
  const url = typeof input === "string" ? input : input.toString();
110
114
 
111
- if (url.startsWith(MANIFEST_URL)) {
115
+ if (url.startsWith(CATALOG_URL)) {
112
116
  if (opts.manifestStatus !== undefined && opts.manifestStatus !== 200) {
113
- return new Response("manifest unavailable", {
117
+ return new Response("catalog unavailable", {
114
118
  status: opts.manifestStatus,
115
119
  });
116
120
  }
117
121
  if (opts.manifest === undefined) {
118
122
  return new Response("not found", { status: 404 });
119
123
  }
120
- return new Response(JSON.stringify(opts.manifest), { status: 200 });
124
+ const manifest = opts.manifest as {
125
+ plugins?: Array<{
126
+ name: string;
127
+ source?: {
128
+ source: string;
129
+ repo?: string;
130
+ ref?: string;
131
+ path?: string;
132
+ };
133
+ description?: string;
134
+ category?: string;
135
+ homepage?: string;
136
+ license?: string;
137
+ icon?: string;
138
+ }>;
139
+ };
140
+ const rows = (manifest.plugins ?? []).map((entry) => ({
141
+ name: entry.name,
142
+ ...(entry.source?.repo ? { repo: entry.source.repo } : {}),
143
+ ...(entry.source?.ref ? { ref: entry.source.ref } : {}),
144
+ ...(entry.source?.path ? { path: entry.source.path } : {}),
145
+ description: entry.description,
146
+ category: entry.category,
147
+ homepage: entry.homepage,
148
+ license: entry.license,
149
+ icon: entry.icon,
150
+ }));
151
+ return new Response(JSON.stringify({ plugins: rows }), { status: 200 });
121
152
  }
122
153
 
123
154
  if (url.startsWith(DOWNLOAD_HOST)) {
@@ -254,113 +285,6 @@ describe("installPlugin — install lifecycle", () => {
254
285
  rmSync(ws, { recursive: true, force: true });
255
286
  });
256
287
 
257
- test("installs a bundled standard package and discovers its MCP server", async () => {
258
- const result = await installPlugin(
259
- {
260
- name: "fathom",
261
- trustedSource: {
262
- kind: "local",
263
- path: "plugins/mcp-catalog/fathom",
264
- version: "1.0.0",
265
- },
266
- },
267
- {
268
- fetch: (async () => {
269
- throw new Error("local package install must not fetch");
270
- }) as FetchLike,
271
- runGit: unusedGitRunner,
272
- workspacePluginsDir: pluginsDir,
273
- materializeLocalPackage: (path, version, destination) => {
274
- expect(path).toBe("plugins/mcp-catalog/fathom");
275
- expect(version).toBe("1.0.0");
276
- writeFileSync(
277
- join(destination, "plugin.json"),
278
- JSON.stringify({
279
- $schema:
280
- "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
281
- name: "fathom",
282
- version: "1.0.0",
283
- }),
284
- );
285
- writeFileSync(
286
- join(destination, "mcp.json"),
287
- JSON.stringify({
288
- $schema:
289
- "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
290
- mcpServers: {
291
- fathom: {
292
- type: "streamable-http",
293
- url: "https://api.fathom.ai/mcp",
294
- },
295
- },
296
- }),
297
- );
298
- return 2;
299
- },
300
- },
301
- );
302
-
303
- expect(result).toMatchObject({
304
- name: "fathom",
305
- fileCount: 2,
306
- ref: "1.0.0",
307
- commit: null,
308
- });
309
- expect(readInstallMeta(result.target)?.source).toEqual({
310
- kind: "local",
311
- path: "plugins/mcp-catalog/fathom",
312
- version: "1.0.0",
313
- });
314
- expect(
315
- readPluginMcpServers({ workspacePluginsDir: pluginsDir }).servers,
316
- ).toEqual([
317
- expect.objectContaining({
318
- pluginName: "fathom",
319
- serverKey: "fathom",
320
- }),
321
- ]);
322
- });
323
-
324
- test("installs the reviewed Fathom package from the generated bundle", async () => {
325
- const result = await installPlugin(
326
- {
327
- name: "fathom",
328
- trustedSource: {
329
- kind: "local",
330
- path: "plugins/mcp-catalog/fathom",
331
- version: "1.0.2",
332
- },
333
- },
334
- {
335
- fetch: (async () => {
336
- throw new Error("local package install must not fetch");
337
- }) as FetchLike,
338
- runGit: unusedGitRunner,
339
- workspacePluginsDir: pluginsDir,
340
- },
341
- );
342
-
343
- expect(result).toMatchObject({
344
- name: "fathom",
345
- ref: "1.0.2",
346
- commit: null,
347
- });
348
- expect(readValidatedPluginIcon(result.target).hasIcon).toBe(true);
349
- expect(
350
- readPluginMcpServers({ workspacePluginsDir: pluginsDir }).servers,
351
- ).toEqual([
352
- expect.objectContaining({
353
- pluginName: "fathom",
354
- serverKey: "fathom",
355
- config: expect.objectContaining({
356
- transport: expect.objectContaining({
357
- url: "https://api.fathom.ai/mcp",
358
- }),
359
- }),
360
- }),
361
- ]);
362
- });
363
-
364
288
  test("refuses to overwrite an existing install without --force", async () => {
365
289
  // GIVEN a plugin already installed at <pluginsDir>/caveman
366
290
  const target = join(pluginsDir, "caveman");
@@ -845,7 +769,7 @@ describe("installPlugin — marketplace resolution", () => {
845
769
  ),
846
770
  ).rejects.toMatchObject({
847
771
  constructor: PluginNotFoundError,
848
- message: expect.stringContaining("plugins/marketplace.json"),
772
+ message: expect.stringContaining("the plugin catalog"),
849
773
  });
850
774
  });
851
775
 
@@ -1,10 +1,8 @@
1
1
  /**
2
2
  * Tests for {@link getPluginCatalog}.
3
3
  *
4
- * Exercises the gate between the cloud fetcher and the bundled reader plus
5
- * the per-ref TTL cache. Platform paths drive a fake `deps.fetch` returning a
6
- * `/v1/plugins/` payload (no real network); the offline path reads the bundled
7
- * manifest and must touch the network zero times.
4
+ * Exercises the cloud fetcher wiring and the per-ref TTL cache via a fake
5
+ * `deps.fetch` returning a `/v1/plugins/` payload (no real network).
8
6
  */
9
7
 
10
8
  import {
@@ -19,12 +17,9 @@ import {
19
17
  import type { FetchLike } from "../fetch-like.js";
20
18
  import {
21
19
  getPluginCatalog,
22
- getPluginCatalogForInstalledMetadata,
23
20
  invalidatePluginCatalogCache,
24
- mergePlatformCatalogWithBundledLocals,
25
21
  PLUGIN_CATALOG_CACHE_TTL_MS,
26
22
  } from "../plugin-catalog-cache.js";
27
- import { readBundledPluginCatalog } from "../plugin-catalog-local.js";
28
23
  import type { SearchPluginsDeps } from "../search-plugins.js";
29
24
  import type { PluginCatalog } from "../search-plugins.js";
30
25
 
@@ -68,28 +63,13 @@ function failingFetch(): { fetch: FetchLike; calls: () => number } {
68
63
  return { fetch, calls: () => calls };
69
64
  }
70
65
 
71
- const ORIGINAL_ENV = {
72
- IS_CLOUD: process.env.IS_CLOUD,
73
- CADET_DISABLE_CLOUD: process.env.CADET_DISABLE_CLOUD,
74
- };
75
-
76
66
  describe("getPluginCatalog", () => {
77
67
  beforeEach(() => {
78
68
  invalidatePluginCatalogCache();
79
- // Default: platform features enabled (neither flag set).
80
- delete process.env.IS_CLOUD;
81
- delete process.env.CADET_DISABLE_CLOUD;
82
69
  });
83
70
 
84
71
  afterEach(() => {
85
72
  setSystemTime();
86
- for (const [key, value] of Object.entries(ORIGINAL_ENV)) {
87
- if (value === undefined) {
88
- delete process.env[key];
89
- } else {
90
- process.env[key] = value;
91
- }
92
- }
93
73
  });
94
74
 
95
75
  test("fetches from the cloud once, then serves cache within the TTL", async () => {
@@ -155,167 +135,4 @@ describe("getPluginCatalog", () => {
155
135
  expect(err).toBeInstanceOf(Error);
156
136
  expect(failing.calls()).toBe(1);
157
137
  });
158
-
159
- test("reads the bundled catalog with zero network when platform is disabled", async () => {
160
- // GIVEN platform features disabled (offline / self-hosted)
161
- process.env.CADET_DISABLE_CLOUD = "true";
162
- delete process.env.IS_CLOUD;
163
-
164
- const { fetch, calls } = platformFetch(["ignored"]);
165
- const deps: SearchPluginsDeps = {
166
- fetch,
167
- featureFlagEnabled: () => true,
168
- };
169
-
170
- // WHEN we request the catalog
171
- const result = await getPluginCatalog("main", deps);
172
-
173
- // THEN it comes from the bundled manifest and no fetch is made
174
- expect(calls()).toBe(0);
175
- const bundled = readBundledPluginCatalog();
176
- expect(result.matches).toEqual(bundled.matches);
177
- // The requested ref is echoed onto the wire contract.
178
- expect(result.ref).toBe("main");
179
- });
180
-
181
- test("applies feature-flag visibility to bundled catalog entries", async () => {
182
- process.env.CADET_DISABLE_CLOUD = "true";
183
- delete process.env.IS_CLOUD;
184
-
185
- const { fetch } = platformFetch(["ignored"]);
186
- const result = await getPluginCatalog("main", {
187
- fetch,
188
- featureFlagEnabled: () => false,
189
- });
190
-
191
- expect(result.matches.map((match) => match.name)).not.toContain("gamma");
192
- expect(result.matches.map((match) => match.name)).toContain("fathom");
193
- });
194
-
195
- test("preserves hidden entries for installed-plugin metadata", async () => {
196
- process.env.CADET_DISABLE_CLOUD = "true";
197
- delete process.env.IS_CLOUD;
198
-
199
- const { fetch } = platformFetch(["ignored"]);
200
- const result = await getPluginCatalogForInstalledMetadata("main", {
201
- fetch,
202
- });
203
-
204
- expect(result.matches.map((match) => match.name)).toContain("gamma");
205
- });
206
- });
207
-
208
- describe("mergePlatformCatalogWithBundledLocals", () => {
209
- test("adds local packages while keeping a cloud row on name collision", () => {
210
- const platform: PluginCatalog = {
211
- ref: "main",
212
- matches: [
213
- {
214
- name: "fathom",
215
- path: "github:provider/fathom@pin",
216
- category: null,
217
- source: {
218
- kind: "github",
219
- repo: "provider/fathom",
220
- ref: "0".repeat(40),
221
- },
222
- },
223
- ],
224
- };
225
- const bundled: PluginCatalog = {
226
- ref: "bundled",
227
- matches: [
228
- {
229
- name: "fathom",
230
- path: "local:plugins/mcp-catalog/fathom@1.0.0",
231
- category: null,
232
- source: {
233
- kind: "local",
234
- path: "plugins/mcp-catalog/fathom",
235
- version: "1.0.0",
236
- },
237
- },
238
- {
239
- name: "notion",
240
- path: "local:plugins/mcp-catalog/notion@1.0.0",
241
- category: null,
242
- source: {
243
- kind: "local",
244
- path: "plugins/mcp-catalog/notion",
245
- version: "1.0.0",
246
- },
247
- },
248
- ],
249
- };
250
-
251
- const merged = mergePlatformCatalogWithBundledLocals(platform, bundled);
252
-
253
- expect(merged.matches.map((match) => match.name)).toEqual([
254
- "fathom",
255
- "notion",
256
- ]);
257
- expect(merged.matches[0]?.source.kind).toBe("github");
258
- expect(merged.matches[1]?.source.kind).toBe("local");
259
- expect(merged.ref).toBe("main");
260
- });
261
- test("keeps the bundled integration when a cloud row without one shadows it", () => {
262
- const integration = {
263
- kind: "mcp",
264
- displayName: "Fathom",
265
- documentationUrl: "https://example.com/docs",
266
- verifiedAt: "2026-09-10",
267
- verification: "documentation-only",
268
- setup: { mode: "oauth", instructions: "Sign in." },
269
- logo: "fathom.png",
270
- } as const;
271
- const platformIntegration = { ...integration, displayName: "Platform" };
272
- const platform: PluginCatalog = {
273
- ref: "main",
274
- matches: [
275
- {
276
- name: "fathom",
277
- path: "github:provider/fathom@pin",
278
- category: null,
279
- source: {
280
- kind: "github",
281
- repo: "provider/fathom",
282
- ref: "0".repeat(40),
283
- },
284
- },
285
- {
286
- name: "linear",
287
- path: "github:provider/linear@pin",
288
- category: null,
289
- integration: platformIntegration,
290
- source: {
291
- kind: "github",
292
- repo: "provider/linear",
293
- ref: "0".repeat(40),
294
- },
295
- },
296
- ],
297
- };
298
- const bundled: PluginCatalog = {
299
- ref: "bundled",
300
- matches: ["fathom", "linear"].map((name) => ({
301
- name,
302
- path: `local:plugins/mcp-catalog/${name}@1.0.0`,
303
- category: null,
304
- integration,
305
- source: {
306
- kind: "local",
307
- path: `plugins/mcp-catalog/${name}`,
308
- version: "1.0.0",
309
- },
310
- })),
311
- };
312
-
313
- const merged = mergePlatformCatalogWithBundledLocals(platform, bundled);
314
-
315
- const [fathom, linear] = merged.matches;
316
- expect(fathom?.source.kind).toBe("github");
317
- expect(fathom?.integration).toEqual(integration);
318
- expect(linear?.source.kind).toBe("github");
319
- expect(linear?.integration).toEqual(platformIntegration);
320
- });
321
138
  });
@@ -2,9 +2,9 @@
2
2
  * Tests for the gated catalog resolvers.
3
3
  *
4
4
  * `resolveSourceFromMatch` is exercised as a pure function. The catalog-backed
5
- * resolvers run against the bundled manifest with platform features disabled
6
- * (`CADET_DISABLE_CLOUD`, zero network), plus a cloud-enabled case that
7
- * asserts a rejecting catalog fetch propagates rather than resolving to `null`.
5
+ * resolvers run against a mocked cloud catalog (zero real network), plus a
6
+ * case that asserts a rejecting catalog fetch propagates rather than
7
+ * resolving to `null`.
8
8
  */
9
9
 
10
10
  import { afterEach, beforeEach, describe, expect, test } from "bun:test";
@@ -39,25 +39,6 @@ function match(
39
39
  }
40
40
 
41
41
  describe("resolveSourceFromMatch", () => {
42
- test("returns an exact bundled package path and version", () => {
43
- expect(
44
- resolveSourceFromMatch({
45
- name: "fathom",
46
- path: "local:plugins/mcp-catalog/fathom@1.0.0",
47
- category: null,
48
- source: {
49
- kind: "local",
50
- path: "plugins/mcp-catalog/fathom",
51
- version: "1.0.0",
52
- },
53
- }),
54
- ).toEqual({
55
- kind: "local",
56
- path: "plugins/mcp-catalog/fathom",
57
- version: "1.0.0",
58
- });
59
- });
60
-
61
42
  test("returns owner/repo/path/ref for a full-SHA match", () => {
62
43
  expect(
63
44
  resolveSourceFromMatch(
@@ -138,37 +119,39 @@ describe("resolveSourceFromMatch", () => {
138
119
  });
139
120
  });
140
121
 
141
- describe("catalog-backed resolvers (bundled, offline)", () => {
142
- const ORIGINAL_ENV = {
143
- IS_CLOUD: process.env.IS_CLOUD,
144
- CADET_DISABLE_CLOUD: process.env.CADET_DISABLE_CLOUD,
145
- };
146
-
122
+ describe("catalog-backed resolvers (cloud catalog)", () => {
147
123
  beforeEach(() => {
148
124
  invalidatePluginCatalogCache();
149
- process.env.CADET_DISABLE_CLOUD = "true";
150
- delete process.env.IS_CLOUD;
151
125
  });
152
126
 
153
127
  afterEach(() => {
154
- for (const [key, value] of Object.entries(ORIGINAL_ENV)) {
155
- if (value === undefined) {
156
- delete process.env[key];
157
- } else {
158
- process.env[key] = value;
159
- }
160
- }
161
- });
162
-
163
- // A rejecting fetch proves the bundled path never touches the network.
164
- const rejectingDeps: SearchPluginsDeps = {
165
- fetch: (async () => {
166
- throw new Error("network must not be used");
167
- }) as FetchLike,
128
+ invalidatePluginCatalogCache();
129
+ });
130
+
131
+ /** A `deps.fetch` serving a small `/v1/plugins/` payload. */
132
+ const catalogDeps: SearchPluginsDeps = {
133
+ fetch: (async () =>
134
+ new Response(
135
+ JSON.stringify({
136
+ plugins: [
137
+ {
138
+ name: "caveman",
139
+ repo: "JuliusBrussee/caveman",
140
+ ref: FULL_SHA,
141
+ },
142
+ {
143
+ name: "gamma",
144
+ repo: "acme/gamma",
145
+ ref: FULL_SHA,
146
+ },
147
+ ],
148
+ }),
149
+ { status: 200 },
150
+ )) as FetchLike,
168
151
  };
169
152
 
170
- test("findCatalogEntry returns the bundled entry for a known name", async () => {
171
- const entry = await findCatalogEntry("caveman", rejectingDeps);
153
+ test("findCatalogEntry returns the catalog entry for a known name", async () => {
154
+ const entry = await findCatalogEntry("caveman", catalogDeps);
172
155
  expect(entry?.name).toBe("caveman");
173
156
  expect(entry?.source).toEqual({
174
157
  kind: "github",
@@ -180,7 +163,7 @@ describe("catalog-backed resolvers (bundled, offline)", () => {
180
163
 
181
164
  test("resolvePluginSourceFromCatalog resolves a known name to its pinned source", async () => {
182
165
  expect(
183
- await resolvePluginSourceFromCatalog("caveman", rejectingDeps),
166
+ await resolvePluginSourceFromCatalog("caveman", catalogDeps),
184
167
  ).toEqual({
185
168
  kind: "github",
186
169
  owner: "JuliusBrussee",
@@ -192,14 +175,14 @@ describe("catalog-backed resolvers (bundled, offline)", () => {
192
175
 
193
176
  test("resolvePluginSourceFromCatalog returns null for an unknown name", async () => {
194
177
  expect(
195
- await resolvePluginSourceFromCatalog("no-such-plugin", rejectingDeps),
178
+ await resolvePluginSourceFromCatalog("no-such-plugin", catalogDeps),
196
179
  ).toBeNull();
197
180
  });
198
181
 
199
182
  test("does not resolve a QA integration while its feature flag is off", async () => {
200
183
  expect(
201
184
  await resolvePluginSourceFromCatalog("gamma", {
202
- ...rejectingDeps,
185
+ ...catalogDeps,
203
186
  featureFlagEnabled: () => false,
204
187
  }),
205
188
  ).toBeNull();
@@ -208,37 +191,24 @@ describe("catalog-backed resolvers (bundled, offline)", () => {
208
191
  test("resolves a QA integration while its feature flag is on", async () => {
209
192
  expect(
210
193
  await resolvePluginSourceFromCatalog("gamma", {
211
- ...rejectingDeps,
194
+ ...catalogDeps,
212
195
  featureFlagEnabled: () => true,
213
196
  }),
214
197
  ).toMatchObject({
215
- kind: "local",
216
- path: "plugins/mcp-catalog/gamma",
198
+ kind: "github",
199
+ owner: "acme",
200
+ repo: "gamma",
217
201
  });
218
202
  });
219
203
  });
220
204
 
221
205
  describe("catalog-backed resolvers (platform enabled)", () => {
222
- const ORIGINAL_ENV = {
223
- IS_CLOUD: process.env.IS_CLOUD,
224
- CADET_DISABLE_CLOUD: process.env.CADET_DISABLE_CLOUD,
225
- };
226
-
227
206
  beforeEach(() => {
228
207
  invalidatePluginCatalogCache();
229
- delete process.env.IS_CLOUD;
230
- delete process.env.CADET_DISABLE_CLOUD;
231
208
  });
232
209
 
233
210
  afterEach(() => {
234
211
  invalidatePluginCatalogCache();
235
- for (const [key, value] of Object.entries(ORIGINAL_ENV)) {
236
- if (value === undefined) {
237
- delete process.env[key];
238
- } else {
239
- process.env[key] = value;
240
- }
241
- }
242
212
  });
243
213
 
244
214
  test("propagates PluginCatalogUnavailableError instead of resolving to null", async () => {
@@ -6,16 +6,14 @@ import {
6
6
  } from "../plugin-catalog-visibility.js";
7
7
  import type { PluginCatalog, PluginSearchMatch } from "../search-plugins.js";
8
8
 
9
+ const SHA = "0".repeat(40);
10
+
9
11
  function match(name: string): PluginSearchMatch {
10
12
  return {
11
13
  name,
12
- path: `local:plugins/mcp-catalog/${name}@1.0.0`,
14
+ path: `github:acme/${name}@${SHA}`,
13
15
  category: null,
14
- source: {
15
- kind: "local",
16
- path: `plugins/mcp-catalog/${name}`,
17
- version: "1.0.0",
18
- },
16
+ source: { kind: "github", repo: `acme/${name}`, ref: SHA },
19
17
  };
20
18
  }
21
19