@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
@@ -13,7 +13,7 @@ import type { Command } from "commander";
13
13
 
14
14
  import { cliIpcCall } from "../../ipc/cli-client.js";
15
15
  import { stripAnsiAndControlChars } from "../../util/ansi.js";
16
- import { getWorkspacePluginsDir } from "../../util/platform.js";
16
+ import { getWorkspacePluginsDir } from "../../util/layout.js";
17
17
  import { truncate } from "../../util/truncate.js";
18
18
  import { resolveBundledCliModule } from "../bundled-modules.js";
19
19
  import { yellow } from "../lib/cli-colors.js";
@@ -36,13 +36,13 @@ import {
36
36
  looksLikeGitHubSpec,
37
37
  parseGitHubPluginSpec,
38
38
  } from "../lib/parse-github-plugin-spec.js";
39
+ import { isPluginCatalogEntryVisible } from "../lib/plugin-catalog-visibility.js";
39
40
  import {
40
41
  DEFAULT_PLUGIN_REF,
41
42
  PLUGIN_UPGRADE_STRATEGIES,
42
43
  type PluginUpgradeStrategy,
43
44
  } from "../lib/plugin-constants.js";
44
45
  import type { FingerprintComparison } from "../lib/plugin-fingerprint.js";
45
- import type { PluginPinHistoryEntry } from "../lib/plugin-pin-history.js";
46
46
  import type { PluginScheduleSurface } from "../lib/plugin-surfaces.js";
47
47
  import { runPublish } from "../lib/publish-plugin.js";
48
48
  import { registerCommand } from "../lib/register-command.js";
@@ -71,15 +71,6 @@ const libs = {
71
71
  ) as typeof import("../lib/plugin-catalog-cache.js"),
72
72
  );
73
73
  },
74
- get catalogLocal() {
75
- return resolveBundledCliModule(
76
- "pluginCatalogLocal",
77
- () =>
78
- loadModule(
79
- "../lib/plugin-catalog-local.js",
80
- ) as typeof import("../lib/plugin-catalog-local.js"),
81
- );
82
- },
83
74
  get diff() {
84
75
  return resolveBundledCliModule(
85
76
  "pluginDiff",
@@ -125,15 +116,6 @@ const libs = {
125
116
  ) as typeof import("../lib/list-installed-plugins.js"),
126
117
  );
127
118
  },
128
- get pinHistory() {
129
- return resolveBundledCliModule(
130
- "pluginPinHistory",
131
- () =>
132
- loadModule(
133
- "../lib/plugin-pin-history.js",
134
- ) as typeof import("../lib/plugin-pin-history.js"),
135
- );
136
- },
137
119
  get search() {
138
120
  return resolveBundledCliModule(
139
121
  "pluginSearch",
@@ -232,90 +214,38 @@ export function registerPluginsCommand(program: Command): void {
232
214
  let untrusted = false;
233
215
  if (!direct && !usesMarketplaceGit) {
234
216
  // Platform-managed install serves a verified tarball from the
235
- // pinned commit. With platform features disabled (air-gapped /
236
- // self-hosted) there is no platform to call, so resolve the pin
237
- // from the bundled catalog and install through the GitHub path.
238
- const platformEnabled =
239
- libs.catalogLocal.areCloudFeaturesEnabled();
240
- if (platformEnabled) {
241
- if (!libs.catalogLocal.isPluginCatalogEntryVisible(nameOrUrl)) {
242
- console.error(
243
- `Plugin "${nameOrUrl}" is not in the marketplace catalog.`,
244
- );
245
- process.exitCode = 1;
246
- return;
247
- }
248
- let match;
249
- let catalogResolved = false;
250
- try {
251
- match = (
252
- await libs.catalogCache.getPluginCatalog(
253
- DEFAULT_PLUGIN_REF,
254
- { fetch: globalThis.fetch.bind(globalThis) },
255
- )
256
- ).matches.find((candidate) => candidate.name === nameOrUrl);
257
- catalogResolved = true;
258
- } catch {
259
- // The install endpoint remains authoritative and can succeed
260
- // independently when catalog discovery is unavailable.
261
- }
262
- if (!match && catalogResolved) {
263
- console.error(
264
- `Plugin "${nameOrUrl}" is not in the marketplace catalog.`,
265
- );
266
- process.exitCode = 1;
267
- return;
268
- }
269
- if (match?.source.kind === "local") {
270
- result = await libs.installGitHub.installPlugin(
271
- {
272
- name: nameOrUrl,
273
- force: opts.force,
274
- trustedSource: match.source,
275
- },
276
- { fetch: globalThis.fetch.bind(globalThis), confirmStaged },
277
- );
278
- } else {
279
- result = await libs.installPlatform.installPluginViaPlatform(
280
- { name: nameOrUrl, force: opts.force },
281
- { fetch: globalThis.fetch.bind(globalThis), confirmStaged },
282
- );
283
- }
284
- } else {
285
- const source =
286
- libs.catalogLocal.resolveBundledPluginSource(nameOrUrl);
287
- if (!source) {
288
- console.error(
289
- `Plugin "${nameOrUrl}" is not in the bundled marketplace catalog.`,
290
- );
291
- process.exitCode = 1;
292
- return;
293
- }
294
- if (source.kind === "local") {
295
- result = await libs.installGitHub.installPlugin(
296
- {
297
- name: nameOrUrl,
298
- force: opts.force,
299
- trustedSource: source,
300
- },
301
- { fetch: globalThis.fetch.bind(globalThis), confirmStaged },
302
- );
303
- } else {
304
- result = await libs.installGitHub.installPlugin(
305
- {
306
- name: nameOrUrl,
307
- force: opts.force,
308
- trustedSource: {
309
- owner: source.owner,
310
- repo: source.repo,
311
- rootPath: source.path,
312
- ref: source.ref,
313
- },
314
- },
315
- { fetch: globalThis.fetch.bind(globalThis), confirmStaged },
316
- );
317
- }
217
+ // pinned commit.
218
+ if (!isPluginCatalogEntryVisible(nameOrUrl)) {
219
+ console.error(
220
+ `Plugin "${nameOrUrl}" is not in the marketplace catalog.`,
221
+ );
222
+ process.exitCode = 1;
223
+ return;
224
+ }
225
+ let match;
226
+ let catalogResolved = false;
227
+ try {
228
+ match = (
229
+ await libs.catalogCache.getPluginCatalog(DEFAULT_PLUGIN_REF, {
230
+ fetch: globalThis.fetch.bind(globalThis),
231
+ })
232
+ ).matches.find((candidate) => candidate.name === nameOrUrl);
233
+ catalogResolved = true;
234
+ } catch {
235
+ // The install endpoint remains authoritative and can succeed
236
+ // independently when catalog discovery is unavailable.
237
+ }
238
+ if (!match && catalogResolved) {
239
+ console.error(
240
+ `Plugin "${nameOrUrl}" is not in the marketplace catalog.`,
241
+ );
242
+ process.exitCode = 1;
243
+ return;
318
244
  }
245
+ result = await libs.installPlatform.installPluginViaPlatform(
246
+ { name: nameOrUrl, force: opts.force },
247
+ { fetch: globalThis.fetch.bind(globalThis), confirmStaged },
248
+ );
319
249
  } else {
320
250
  const installOpts = direct
321
251
  ? await resolveDirectInstallOptions(nameOrUrl, opts)
@@ -380,10 +310,7 @@ export function registerPluginsCommand(program: Command): void {
380
310
  process.exitCode = 1;
381
311
  return;
382
312
  }
383
- if (
384
- err instanceof libs.installGitHub.InvalidPluginNameError ||
385
- err instanceof libs.pinHistory.PluginPinHistoryError
386
- ) {
313
+ if (err instanceof libs.installGitHub.InvalidPluginNameError) {
387
314
  console.error(err.message);
388
315
  process.exitCode = 1;
389
316
  return;
@@ -395,51 +322,6 @@ export function registerPluginsCommand(program: Command): void {
395
322
  },
396
323
  );
397
324
 
398
- subcommand(plugins, "versions").action(
399
- async (name: string, opts: { json?: boolean; limit?: string }) => {
400
- let limit: number | undefined;
401
- if (opts.limit !== undefined) {
402
- limit = Number.parseInt(opts.limit, 10);
403
- if (!Number.isInteger(limit) || limit < 1) {
404
- console.error("--limit must be a positive integer.");
405
- process.exitCode = 1;
406
- return;
407
- }
408
- }
409
- try {
410
- const history = await libs.pinHistory.listPinHistory(
411
- name,
412
- { fetch: globalThis.fetch.bind(globalThis) },
413
- limit !== undefined ? { limit } : {},
414
- );
415
-
416
- if (opts.json) {
417
- process.stdout.write(JSON.stringify(history, null, 2) + "\n");
418
- return;
419
- }
420
-
421
- // Logged after the JSON early-return so the logger's stdout
422
- // writes never corrupt --json output.
423
- log.info({ name, count: history.length }, "plugin versions");
424
- for (const line of formatVersions(name, history)) {
425
- console.log(line);
426
- }
427
- } catch (err) {
428
- if (
429
- err instanceof libs.installGitHub.InvalidPluginNameError ||
430
- err instanceof libs.pinHistory.PluginPinHistoryError
431
- ) {
432
- console.error(err.message);
433
- process.exitCode = 1;
434
- return;
435
- }
436
- const message = err instanceof Error ? err.message : String(err);
437
- console.error(`Plugin versions failed: ${message}`);
438
- process.exitCode = 1;
439
- }
440
- },
441
- );
442
-
443
325
  subcommand(plugins, "list").action(
444
326
  (opts: { json?: boolean; all?: boolean }) => {
445
327
  if (opts.all) {
@@ -976,12 +858,19 @@ async function resolveInstallOptions(
976
858
  ): Promise<InstallPluginOptions | null> {
977
859
  const force = opts.force ?? false;
978
860
 
861
+ if (opts.ref) {
862
+ console.error(
863
+ "--ref named a revision of the retired local marketplace manifest; the catalog now lives in Cadet Cloud. Install by GitHub URL instead.",
864
+ );
865
+ return null;
866
+ }
867
+
979
868
  if (!opts.pin) {
980
869
  if (opts.allowUnreviewed) {
981
870
  console.error("--allow-unreviewed only applies together with --pin.");
982
871
  return null;
983
872
  }
984
- return { name, force, ref: opts.ref ?? DEFAULT_PLUGIN_REF };
873
+ return { name, force, ref: DEFAULT_PLUGIN_REF };
985
874
  }
986
875
 
987
876
  const pin = opts.pin.trim();
@@ -991,32 +880,29 @@ async function resolveInstallOptions(
991
880
  );
992
881
  return null;
993
882
  }
994
- if (opts.ref) {
995
- console.error(
996
- "--ref and --pin cannot be combined; --pin already selects the revision.",
997
- );
998
- return null;
999
- }
1000
883
 
1001
884
  if (opts.allowUnreviewed) {
1002
- // Materialize the exact SHA from the plugin's current-manifest repo,
1003
- // bypassing the reviewed-history check. The adapter stub still comes from
885
+ // Materialize the exact SHA from the plugin's current-catalog repo,
886
+ // bypassing the reviewed-pin check. The adapter stub still comes from
1004
887
  // the default ref, so an adapted plugin may not reproduce faithfully.
1005
888
  return { name, force, ref: DEFAULT_PLUGIN_REF, commitOverride: pin };
1006
889
  }
1007
890
 
1008
- const entry = await libs.pinHistory.resolvePinToMarketplaceCommit(name, pin, {
891
+ // Without the old manifest's git history there is no rollback surface: the
892
+ // only reviewed revision of a plugin is the one the live catalog pins now.
893
+ const catalog = await libs.catalogCache.getPluginCatalog(DEFAULT_PLUGIN_REF, {
1009
894
  fetch: globalThis.fetch.bind(globalThis),
1010
895
  });
1011
- if (!entry) {
896
+ const match = catalog.matches.find((candidate) => candidate.name === name);
897
+ if (!match || match.source.kind !== "github" || match.source.ref !== pin) {
1012
898
  console.error(
1013
- `"${pin}" is not a reviewed marketplace pin for "${name}".\n` +
1014
- `Run \`assistant plugins versions ${name}\` to see available pins, ` +
1015
- "or pass --allow-unreviewed to install it anyway.",
899
+ `"${pin}" is not the pin the catalog currently holds for "${name}".\n` +
900
+ "Rolling back to older reviewed pins is no longer supported; " +
901
+ "pass --allow-unreviewed to install it anyway.",
1016
902
  );
1017
903
  return null;
1018
904
  }
1019
- return { name, force, ref: entry.marketplaceCommit };
905
+ return { name, force, ref: DEFAULT_PLUGIN_REF, commitOverride: pin };
1020
906
  }
1021
907
 
1022
908
  /**
@@ -1330,40 +1216,6 @@ async function printDeclaredSchedulesAfterUpgrade(
1330
1216
  }
1331
1217
  }
1332
1218
 
1333
- /**
1334
- * Render a plugin's marketplace-pin history as a table: the pinned commit (short
1335
- * SHA), when it was promoted, and a marker for the pin currently active. An
1336
- * empty history reports that none was found.
1337
- */
1338
- function formatVersions(
1339
- name: string,
1340
- history: readonly PluginPinHistoryEntry[],
1341
- ): string[] {
1342
- if (history.length === 0) {
1343
- return [`No marketplace pin history found for "${name}".`];
1344
- }
1345
- const rows = history.map((entry) => ({
1346
- pin: shortSha(entry.pin),
1347
- promoted: formatTimestamp(entry.promotedAt),
1348
- marker: entry.current ? "(current)" : "",
1349
- }));
1350
- const pinW = Math.max(3, ...rows.map((r) => r.pin.length));
1351
- const promotedW = Math.max(8, ...rows.map((r) => r.promoted.length));
1352
- const pad = (s: string, w: number) => s + " ".repeat(w - s.length);
1353
- const lines = [
1354
- `${pad("PIN", pinW)} ${pad("PROMOTED", promotedW)} `.trimEnd(),
1355
- ];
1356
- for (const r of rows) {
1357
- lines.push(
1358
- `${pad(r.pin, pinW)} ${pad(r.promoted, promotedW)} ${r.marker}`.trimEnd(),
1359
- );
1360
- }
1361
- lines.push("");
1362
- lines.push("Install an older pin with:");
1363
- lines.push(` assistant plugins install ${name} --pin <sha> --force`);
1364
- return lines;
1365
- }
1366
-
1367
1219
  function shortSha(sha: string | null): string {
1368
1220
  return sha ? sha.slice(0, 7) : "—";
1369
1221
  }
@@ -1442,11 +1294,8 @@ function driftLine(changes: FingerprintComparison | null): string {
1442
1294
  return parts.join(", ");
1443
1295
  }
1444
1296
 
1445
- /** Build the display location for a bundled package or GitHub pin. */
1297
+ /** Build the display location for a plugin's GitHub pin. */
1446
1298
  function remoteLocation(remote: PluginRemoteInfo): string {
1447
- if (remote.kind === "local") {
1448
- return `bundled:${remote.path}`;
1449
- }
1450
1299
  const base = `https://github.com/${remote.repo}`;
1451
1300
  return remote.path ? `${base}/tree/${remote.commit}/${remote.path}` : base;
1452
1301
  }
@@ -10,6 +10,7 @@
10
10
  import type { Command } from "commander";
11
11
 
12
12
  import { cliIpcCall, exitFromIpcResult } from "../../ipc/cli-client.js";
13
+ import { truncateCommandLabel } from "../../util/process-tree.js";
13
14
  import { applyCommandHelp } from "../lib/cli-command-help.js";
14
15
  import { registerCommand } from "../lib/register-command.js";
15
16
  import { log } from "../logger.js";
@@ -43,9 +44,11 @@ interface Row {
43
44
  /** Flatten the tree into rows, indenting each name to reflect tree depth. */
44
45
  function flattenEntries(entry: ProcessEntry, depth: number, rows: Row[]): void {
45
46
  rows.push({
46
- name: " ".repeat(depth) + entry.name,
47
+ // Command-derived labels (and the `pid N` info line) are capped at
48
+ // render time: a long label pads every row and stretches the table.
49
+ name: " ".repeat(depth) + truncateCommandLabel(entry.name),
47
50
  origin: entry.origin,
48
- info: entry.info ?? "",
51
+ info: entry.info ? truncateCommandLabel(entry.info) : "",
49
52
  });
50
53
  for (const child of entry.children ?? []) {
51
54
  flattenEntries(child, depth + 1, rows);
@@ -4,7 +4,7 @@ import type { Command } from "commander";
4
4
 
5
5
  import { cliIpcCall } from "../../ipc/cli-client.js";
6
6
  import { getAssistantSocketPath } from "../../ipc/socket-path.js";
7
- import { getWorkspaceDirDisplay } from "../../util/platform.js";
7
+ import { getWorkspaceDirDisplay } from "../../util/layout.js";
8
8
  import { APP_VERSION } from "../../version.js";
9
9
  import { applyCommandHelp } from "../lib/cli-command-help.js";
10
10
  import { registerCommand } from "../lib/register-command.js";
@@ -52,7 +52,6 @@ import { sequenceHelp } from "./commands/sequence.help.js";
52
52
  import { skillsHelp } from "./commands/skills.help.js";
53
53
  import { statusHelp } from "./commands/status.help.js";
54
54
  import { sttHelp } from "./commands/stt.help.js";
55
- import { telemetryHelp } from "./commands/telemetry.help.js";
56
55
  import { toolsHelp } from "./commands/tools.help.js";
57
56
  import { trustHelp } from "./commands/trust.help.js";
58
57
  import { ttsHelp } from "./commands/tts.help.js";
@@ -105,7 +104,6 @@ export const CLI_COMMAND_HELP: readonly CliCommandHelp[] = [
105
104
  skillsHelp,
106
105
  statusHelp,
107
106
  sttHelp,
108
- telemetryHelp,
109
107
  toolsHelp,
110
108
  trustHelp,
111
109
  ttsHelp,
@@ -18,8 +18,8 @@ import {
18
18
  inspectPlugin,
19
19
  PluginInspectNotFoundError,
20
20
  } from "../inspect-plugin.js";
21
+ import { invalidatePluginCatalogCache } from "../plugin-catalog-cache.js";
21
22
  import { computeFingerprint } from "../plugin-fingerprint.js";
22
- import type { PluginCatalog } from "../search-plugins.js";
23
23
 
24
24
  const SHA_A = "a".repeat(40);
25
25
  const SHA_B = "b".repeat(40);
@@ -42,12 +42,12 @@ function manifestWith(name: string, ref: string): unknown {
42
42
  }
43
43
 
44
44
  /**
45
- * Build a `fetch` that serves the marketplace manifest and the GitHub commit
46
- * API. `marketplace: undefined` answers 404 (empty catalog); `fail: true`
47
- * rejects the marketplace request with a network error. `remoteCommitDate`
48
- * seeds the committer date the GitHub commit endpoint returns (its absence
49
- * 404s, so the remote timestamp degrades to `null`). Anything else surfaces a
50
- * 500 so test bugs are loud.
45
+ * Build a `fetch` that serves the plugin catalog (a manifest flattened into
46
+ * cloud rows) and the GitHub commit API. `marketplace: undefined` answers 404
47
+ * (empty catalog); `fail: true` rejects the catalog request with a network
48
+ * error. `remoteCommitDate` is unused by the catalog-backed reader (the cloud
49
+ * catalog carries no commit dates). Anything else surfaces a 500 so test bugs
50
+ * are loud.
51
51
  */
52
52
  function makeFetch(opts: {
53
53
  marketplace?: unknown;
@@ -56,14 +56,33 @@ function makeFetch(opts: {
56
56
  }): FetchLike {
57
57
  return (async (input: RequestInfo | URL) => {
58
58
  const url = typeof input === "string" ? input : input.toString();
59
- if (url.includes("marketplace.json")) {
59
+ if (url.includes("/v1/plugins")) {
60
60
  if (opts.fail) {
61
61
  throw new Error("network down");
62
62
  }
63
63
  if (opts.marketplace === undefined) {
64
- return new Response("not found", { status: 404 });
64
+ return new Response(JSON.stringify({ plugins: [] }), { status: 200 });
65
65
  }
66
- return new Response(JSON.stringify(opts.marketplace), { status: 200 });
66
+ const manifest = opts.marketplace as {
67
+ plugins?: Array<{
68
+ name: string;
69
+ source?: { source: string; repo?: string; ref?: string };
70
+ description?: string;
71
+ category?: string;
72
+ homepage?: string;
73
+ license?: string;
74
+ }>;
75
+ };
76
+ const rows = (manifest.plugins ?? []).map((entry) => ({
77
+ name: entry.name,
78
+ ...(entry.source?.repo ? { repo: entry.source.repo } : {}),
79
+ ...(entry.source?.ref ? { ref: entry.source.ref } : {}),
80
+ description: entry.description,
81
+ category: entry.category,
82
+ homepage: entry.homepage,
83
+ license: entry.license,
84
+ }));
85
+ return new Response(JSON.stringify({ plugins: rows }), { status: 200 });
67
86
  }
68
87
  if (url.includes("api.github.com") && url.includes("/commits/")) {
69
88
  if (opts.remoteCommitDate === undefined) {
@@ -150,6 +169,9 @@ let workspace: string;
150
169
 
151
170
  beforeEach(() => {
152
171
  workspace = mkdtempSync(join(tmpdir(), "inspect-plugin-"));
172
+ invalidatePluginCatalogCache();
173
+ delete process.env.CADET_DISABLE_CLOUD;
174
+ delete process.env.IS_CLOUD;
153
175
  });
154
176
 
155
177
  afterEach(() => {
@@ -196,10 +218,11 @@ describe("inspectPlugin", () => {
196
218
  { fetch, workspacePluginsDir: workspace },
197
219
  );
198
220
 
199
- // THEN the installed timestamp comes from the sidecar and the remote one
200
- // is resolved from GitHub — both as ISO-8601 UTC strings
221
+ // THEN the installed timestamp comes from the sidecar; the cloud catalog
222
+ // carries no commit dates, so the remote side reports the bare SHA
201
223
  expect(result.local?.committedAt).toBe("2026-06-01T12:34:56.000Z");
202
- expect(result.remote?.committedAt).toBe("2026-06-05T08:12:24.000Z");
224
+ expect(result.remote?.committedAt).toBeNull();
225
+ expect(result.remote?.commit).toBe(SHA_B);
203
226
  });
204
227
 
205
228
  test("leaves the remote timestamp null when the commit date cannot be fetched", async () => {
@@ -335,59 +358,6 @@ describe("inspectPlugin", () => {
335
358
  expect(result.local?.description).toBe("Installed copy.");
336
359
  });
337
360
 
338
- test("previews an uninstalled bundled provider offline without fetching GitHub", async () => {
339
- const savedDisablePlatform = process.env.CADET_DISABLE_CLOUD;
340
- const savedIsPlatform = process.env.IS_CLOUD;
341
- process.env.CADET_DISABLE_CLOUD = "true";
342
- delete process.env.IS_CLOUD;
343
- let fetchCalls = 0;
344
- const fetch = (async () => {
345
- fetchCalls += 1;
346
- throw new Error("offline");
347
- }) as FetchLike;
348
- const localCatalog: PluginCatalog = {
349
- ref: "bundled",
350
- matches: [
351
- {
352
- name: "fathom",
353
- path: "local:plugins/mcp-catalog/fathom@1.0.0",
354
- category: "productivity",
355
- source: {
356
- kind: "local",
357
- path: "plugins/mcp-catalog/fathom",
358
- version: "1.0.0",
359
- },
360
- },
361
- ],
362
- };
363
-
364
- try {
365
- const result = await inspectPlugin(
366
- { name: "fathom" },
367
- { fetch, workspacePluginsDir: workspace, localCatalog },
368
- );
369
-
370
- expect(result.status).toBe("not-installed");
371
- expect(result.remote).toMatchObject({
372
- kind: "local",
373
- path: "plugins/mcp-catalog/fathom",
374
- version: "1.0.0",
375
- });
376
- expect(fetchCalls).toBe(0);
377
- } finally {
378
- if (savedDisablePlatform === undefined) {
379
- delete process.env.CADET_DISABLE_CLOUD;
380
- } else {
381
- process.env.CADET_DISABLE_CLOUD = savedDisablePlatform;
382
- }
383
- if (savedIsPlatform === undefined) {
384
- delete process.env.IS_CLOUD;
385
- } else {
386
- process.env.IS_CLOUD = savedIsPlatform;
387
- }
388
- }
389
- });
390
-
391
361
  test("reports remote-unavailable when the marketplace cannot be reached", async () => {
392
362
  // GIVEN an installed plugin and a failing marketplace fetch
393
363
  installPlugin(workspace, "level-up", { sidecar: { commit: SHA_A } });
@@ -30,7 +30,7 @@ import {
30
30
  readInstallMeta,
31
31
  } from "../install-from-github.js";
32
32
 
33
- const PLATFORM = "https://platform.test";
33
+ const PLATFORM = "https://test-cloud.mycadet.ai";
34
34
 
35
35
  // ─── Tar/gzip fixtures ───────────────────────────────────────────────────────
36
36