@mycadet/assistant 0.12.9 → 0.12.10

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 (651) hide show
  1. package/Dockerfile +0 -8
  2. package/eslint-rules/__tests__/cli-no-daemon-internals.test.ts +1 -1
  3. package/openapi.yaml +62 -910
  4. package/package.json +3 -7
  5. package/scripts/build-test-fixtures.ts +1 -1
  6. package/scripts/generate-openapi.ts +22 -6
  7. package/scripts/postinstall.ts +4 -10
  8. package/scripts/run-tests.ts +0 -21
  9. package/src/__tests__/adaptive-thinking-repair.test.ts +19 -57
  10. package/src/__tests__/agent-loop.test.ts +0 -76
  11. package/src/__tests__/anthropic-provider.test.ts +6 -6
  12. package/src/__tests__/assert-not-live-db.ts +1 -1
  13. package/src/__tests__/assistant-id-boundary-guard.test.ts +3 -3
  14. package/src/__tests__/attachments-store-heic-normalize.test.ts +1 -1
  15. package/src/__tests__/attachments-store.test.ts +1 -1
  16. package/src/__tests__/audit-log-rotation.test.ts +1 -1
  17. package/src/__tests__/btw-routes.test.ts +1 -1
  18. package/src/__tests__/byok-default-profile-ensure.test.ts +21 -27
  19. package/src/__tests__/call-conversation-messages.test.ts +0 -5
  20. package/src/__tests__/call-recovery.test.ts +2 -7
  21. package/src/__tests__/call-routes-http.test.ts +0 -12
  22. package/src/__tests__/call-store.test.ts +2 -7
  23. package/src/__tests__/catalog-files.test.ts +7 -5
  24. package/src/__tests__/checker.test.ts +1 -1
  25. package/src/__tests__/cli-memory-v2-reembed-skills.test.ts +4 -4
  26. package/src/__tests__/cloud-client-verify-credential.test.ts +0 -4
  27. package/src/__tests__/cloud-credential-catalog-cli.test.ts +14 -14
  28. package/src/__tests__/cloud-profile-guard.test.ts +48 -401
  29. package/src/__tests__/compaction-events.test.ts +2 -2
  30. package/src/__tests__/config-loader-backfill.test.ts +74 -163
  31. package/src/__tests__/config-loader-cloud-defaults.test.ts +11 -11
  32. package/src/__tests__/config-loader-corrupt.test.ts +10 -10
  33. package/src/__tests__/config-loader-quarantine-notice.test.ts +7 -7
  34. package/src/__tests__/config-loader-validation-reset-notice.test.ts +11 -11
  35. package/src/__tests__/config-schema.test.ts +26 -27
  36. package/src/__tests__/config-set-route.test.ts +2 -6
  37. package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +28 -300
  38. package/src/__tests__/conversation-agent-loop-overflow.test.ts +39 -246
  39. package/src/__tests__/conversation-agent-loop.test.ts +2 -58
  40. package/src/__tests__/conversation-clear-safety.test.ts +0 -30
  41. package/src/__tests__/conversation-inference-profile-route.test.ts +1 -1
  42. package/src/__tests__/conversation-queue.test.ts +1 -1
  43. package/src/__tests__/conversation-runtime-assembly.test.ts +1 -1
  44. package/src/__tests__/conversation-skill-tools.test.ts +4 -444
  45. package/src/__tests__/conversation-slash-commands.test.ts +1 -1
  46. package/src/__tests__/conversation-store.test.ts +1 -84
  47. package/src/__tests__/conversation-surface-state.test.ts +0 -16
  48. package/src/__tests__/credential-health-service.test.ts +14 -1
  49. package/src/__tests__/credential-record-retire.test.ts +1 -1
  50. package/src/__tests__/credential-record-write-through.test.ts +1 -1
  51. package/src/__tests__/credential-security-invariants.test.ts +0 -145
  52. package/src/__tests__/custom-profile-ensure.test.ts +1 -1
  53. package/src/__tests__/default-profile-catalog-fallback.test.ts +5 -15
  54. package/src/__tests__/deterministic-verification-control-plane.test.ts +0 -2
  55. package/src/__tests__/dictation-profile-store.test.ts +6 -6
  56. package/src/__tests__/disk-usage.test.ts +28 -164
  57. package/src/__tests__/docker-signing-key-bootstrap.test.ts +1 -1
  58. package/src/__tests__/embedding-cloud-proxy-selection.test.ts +1 -1
  59. package/src/__tests__/emit-event-signal.test.ts +1 -1
  60. package/src/__tests__/gateway-client-cloud-outbound.test.ts +3 -3
  61. package/src/__tests__/gateway-only-enforcement.test.ts +1 -1
  62. package/src/__tests__/guardian-dispatch.test.ts +0 -13
  63. package/src/__tests__/helpers/seed-app.ts +1 -1
  64. package/src/__tests__/host-cu-routes-targeted.test.ts +1 -1
  65. package/src/__tests__/host-shell-tool.test.ts +1 -1
  66. package/src/__tests__/identity-routes.test.ts +1 -1
  67. package/src/__tests__/inference-profile-session-handler.test.ts +1 -1
  68. package/src/__tests__/inference-profile-session-ipc.test.ts +1 -1
  69. package/src/__tests__/injector-chain.test.ts +1 -1
  70. package/src/__tests__/injector-config-quarantine-notice.test.ts +1 -1
  71. package/src/__tests__/injector-config-validation-reset-notice.test.ts +1 -1
  72. package/src/__tests__/injector-pkb-v2-silenced.test.ts +1 -1
  73. package/src/__tests__/{platform.test.ts → layout.test.ts} +1 -1
  74. package/src/__tests__/list-all-apps.test.ts +1 -1
  75. package/src/__tests__/live-workspace-guard.test.ts +2 -2
  76. package/src/__tests__/llm-resolver-override-or-default.test.ts +5 -6
  77. package/src/__tests__/llm-resolver.test.ts +7 -7
  78. package/src/__tests__/llm-schema-fallback-profile.test.ts +9 -10
  79. package/src/__tests__/llm-usage-store.test.ts +0 -495
  80. package/src/__tests__/log-export-routes.test.ts +1 -1
  81. package/src/__tests__/mcp-config-secret-boundary.test.ts +12 -53
  82. package/src/__tests__/mcp-list-plugin-servers.test.ts +1 -1
  83. package/src/__tests__/memory-config-file-parity.test.ts +1 -1
  84. package/src/__tests__/memory-v2-static-injector.test.ts +1 -1
  85. package/src/__tests__/messages-read-boundary-guard.test.ts +0 -2
  86. package/src/__tests__/notification-guardian-path.test.ts +0 -7
  87. package/src/__tests__/onboarding-persona-write.test.ts +1 -1
  88. package/src/__tests__/openai-provider.test.ts +8 -8
  89. package/src/__tests__/path-policy.test.ts +1 -1
  90. package/src/__tests__/persona-resolver.test.ts +1 -1
  91. package/src/__tests__/plugin-app-serve-routes.test.ts +1 -1
  92. package/src/__tests__/plugin-effective-enabled-set.test.ts +1 -1
  93. package/src/__tests__/plugin-import-boundary-guard.test.ts +4 -6
  94. package/src/__tests__/plugin-import-boundary-reverse-guard.test.ts +0 -3
  95. package/src/__tests__/provider-cloud-proxy-integration.test.ts +1 -5
  96. package/src/__tests__/provider-connections-backfill.test.ts +10 -10
  97. package/src/__tests__/prune-old-conversations-job.test.ts +6 -31
  98. package/src/__tests__/resolve-app.test.ts +1 -1
  99. package/src/__tests__/run-due-schedules.test.ts +1 -1
  100. package/src/__tests__/scaffold-managed-skill-tool.test.ts +0 -53
  101. package/src/__tests__/schedule-routes.test.ts +1 -1
  102. package/src/__tests__/schedule-store.test.ts +1 -1
  103. package/src/__tests__/secret-routes-cloud-proxy.test.ts +1 -1
  104. package/src/__tests__/skill-load-plugin-scope.test.ts +1 -1
  105. package/src/__tests__/surface-completion-compaction-boundary.test.ts +1 -1
  106. package/src/__tests__/tool-approval-handler.test.ts +1 -1
  107. package/src/__tests__/tool-audit.test.ts +5 -235
  108. package/src/__tests__/tool-executor-lifecycle-events.test.ts +54 -114
  109. package/src/__tests__/tools-get-route.test.ts +1 -1
  110. package/src/__tests__/turn-outcome-read.test.ts +1 -1
  111. package/src/__tests__/twilio-routes.test.ts +0 -1
  112. package/src/__tests__/usage-attribution.test.ts +0 -31
  113. package/src/__tests__/verification-control-plane-policy.test.ts +3 -10
  114. package/src/__tests__/visible-app-context.test.ts +1 -1
  115. package/src/__tests__/voice-ingress-preflight.test.ts +1 -1
  116. package/src/__tests__/workspace-git-service.test.ts +1 -1
  117. package/src/__tests__/workspace-greetings.test.ts +1 -1
  118. package/src/acp/__tests__/helpers/acp-config-stub.ts +1 -1
  119. package/src/activation/progress-store.ts +1 -1
  120. package/src/activation/turn-hooks.ts +1 -1
  121. package/src/agent/loop.ts +0 -51
  122. package/src/apps/app-store.ts +1 -1
  123. package/src/avatar/__tests__/avatar-store.test.ts +2 -172
  124. package/src/avatar/accent-backfill.ts +1 -1
  125. package/src/avatar/avatar-manifest.ts +1 -1
  126. package/src/avatar/avatar-store.ts +10 -69
  127. package/src/avatar/ensure-raster.ts +1 -1
  128. package/src/avatar/identity-avatar.ts +1 -1
  129. package/src/avatar/sync-avatar.ts +1 -1
  130. package/src/avatar/traits-png-sync.ts +1 -1
  131. package/src/bundler/compiler-tools.ts +1 -1
  132. package/src/bundler/package-resolver.ts +1 -1
  133. package/src/calls/__tests__/call-controller.test.ts +25 -27
  134. package/src/calls/active-call-lease.ts +1 -1
  135. package/src/calls/call-controller.ts +3 -3
  136. package/src/calls/call-domain.ts +4 -8
  137. package/src/calls/call-store.ts +2 -76
  138. package/src/calls/resolve-call-tts-provider.ts +3 -3
  139. package/src/calls/twilio-config.ts +3 -3
  140. package/src/calls/twilio-rest.ts +2 -2
  141. package/src/calls/voice-ingress-preflight.ts +2 -2
  142. package/src/cli/bundled-modules.ts +0 -2
  143. package/src/cli/commands/__tests__/apps.test.ts +1 -1
  144. package/src/cli/commands/__tests__/plugins.test.ts +9 -66
  145. package/src/cli/commands/__tests__/ps.test.ts +67 -0
  146. package/src/cli/commands/auth.help.ts +2 -2
  147. package/src/cli/commands/avatar.ts +1 -1
  148. package/src/cli/commands/changelog.ts +1 -1
  149. package/src/cli/commands/cloud/__tests__/subscription.test.ts +2 -2
  150. package/src/cli/commands/cloud/index.help.ts +1 -1
  151. package/src/cli/commands/cloud/index.ts +2 -2
  152. package/src/cli/commands/db/refresh.ts +1 -1
  153. package/src/cli/commands/db/repair-step-conversation-backfill.ts +1 -1
  154. package/src/cli/commands/db/repair.ts +1 -1
  155. package/src/cli/commands/db/status.ts +1 -1
  156. package/src/cli/commands/inference-profiles.ts +1 -12
  157. package/src/cli/commands/memory/__tests__/memory-v3.test.ts +1 -116
  158. package/src/cli/commands/memory/index.help.ts +1 -43
  159. package/src/cli/commands/memory/memory-v3.ts +0 -64
  160. package/src/cli/commands/plugins.ts +54 -205
  161. package/src/cli/commands/ps.ts +5 -2
  162. package/src/cli/commands/status.ts +1 -1
  163. package/src/cli/index.help.ts +0 -2
  164. package/src/cli/lib/__tests__/inspect-plugin.test.ts +36 -66
  165. package/src/cli/lib/__tests__/install-from-cloud.test.ts +1 -1
  166. package/src/cli/lib/__tests__/install-from-github.test.ts +41 -117
  167. package/src/cli/lib/__tests__/plugin-catalog-cache.test.ts +2 -185
  168. package/src/cli/lib/__tests__/plugin-catalog-resolve.test.ts +36 -66
  169. package/src/cli/lib/__tests__/plugin-catalog-visibility.test.ts +4 -6
  170. package/src/cli/lib/__tests__/plugin-details.test.ts +113 -96
  171. package/src/cli/lib/__tests__/search-plugins.test.ts +9 -16
  172. package/src/cli/lib/__tests__/uninstall-plugin.test.ts +1 -1
  173. package/src/cli/lib/__tests__/upgrade-plugin.test.ts +38 -15
  174. package/src/cli/lib/diff-plugin.ts +1 -1
  175. package/src/cli/lib/inspect-plugin.ts +13 -97
  176. package/src/cli/lib/install-from-cloud.ts +1 -1
  177. package/src/cli/lib/install-from-github.ts +75 -154
  178. package/src/cli/lib/install-plugin-dependencies.ts +1 -1
  179. package/src/cli/lib/list-installed-plugins.ts +1 -1
  180. package/src/cli/lib/open-browser.ts +1 -1
  181. package/src/cli/lib/plugin-catalog-cache.ts +8 -51
  182. package/src/cli/lib/plugin-catalog-resolve.ts +3 -22
  183. package/src/cli/lib/plugin-details.ts +5 -27
  184. package/src/cli/lib/plugin-marketplace.ts +18 -266
  185. package/src/cli/lib/search-plugins.ts +23 -43
  186. package/src/cli/lib/toggle-plugin.ts +1 -1
  187. package/src/cli/lib/uninstall-plugin.ts +1 -1
  188. package/src/cli/lib/upgrade-plugin.ts +3 -49
  189. package/src/cli/program.ts +1 -3
  190. package/src/cli.ts +1 -1
  191. package/src/cloud/client.ts +0 -6
  192. package/src/cloud/consent-cache.test.ts +22 -201
  193. package/src/cloud/consent-cache.ts +16 -111
  194. package/src/cloud/sync-identity.ts +1 -1
  195. package/src/config/__tests__/chat-settings.test.ts +1 -1
  196. package/src/config/__tests__/cloud-identity.test.ts +15 -2
  197. package/src/config/__tests__/default-plugin-skill-discovery.test.ts +1 -1
  198. package/src/config/__tests__/default-profile-catalog.test.ts +12 -51
  199. package/src/config/__tests__/deployment-context-defaults.test.ts +13 -13
  200. package/src/config/__tests__/loader-callsite-strip-fallback.test.ts +4 -4
  201. package/src/config/__tests__/loader-last-known-good.test.ts +9 -9
  202. package/src/config/__tests__/loader-sparse-array-cleanup.test.ts +7 -7
  203. package/src/config/__tests__/plugin-resident-skill-discovery.test.ts +1 -1
  204. package/src/config/__tests__/profile-materialization.test.ts +2 -4
  205. package/src/config/__tests__/sync-gated-profiles.test.ts +1 -106
  206. package/src/config/acp-agent-write.ts +1 -1
  207. package/src/config/bundled-skills/settings/tools/open-system-settings.test.ts +1 -1
  208. package/src/config/bundled-skills/settings/tools/open-system-settings.ts +1 -1
  209. package/src/config/call-site-defaults.ts +0 -6
  210. package/src/config/cloud-identity.ts +12 -5
  211. package/src/config/composer-preferences.ts +1 -1
  212. package/src/config/default-profile-catalog.ts +8 -75
  213. package/src/config/default-profile-names.ts +2 -25
  214. package/src/config/env-registry.ts +1 -14
  215. package/src/config/env.ts +8 -6
  216. package/src/config/llm-resolver.ts +1 -2
  217. package/src/config/loader.ts +13 -17
  218. package/src/config/profile-materialization.ts +1 -1
  219. package/src/config/schema.ts +1 -7
  220. package/src/config/schemas/call-site-catalog.ts +0 -7
  221. package/src/config/schemas/llm.ts +22 -27
  222. package/src/config/seed-inference-profiles.ts +16 -17
  223. package/src/config/skills.ts +2 -2
  224. package/src/config/sync-gated-profiles.ts +6 -24
  225. package/src/credential-health/credential-health-service.ts +10 -3
  226. package/src/daemon/approval-generators.ts +3 -3
  227. package/src/daemon/config-watcher.ts +2 -2
  228. package/src/daemon/conversation-agent-loop-handlers.ts +0 -18
  229. package/src/daemon/conversation-agent-loop.ts +6 -97
  230. package/src/daemon/conversation-process.ts +1 -1
  231. package/src/daemon/conversation-skill-tools.ts +4 -72
  232. package/src/daemon/conversation-store.ts +1 -1
  233. package/src/daemon/conversation-surface-state.ts +0 -33
  234. package/src/daemon/conversation-surfaces.ts +1 -86
  235. package/src/daemon/conversation-tool-setup.test.ts +1 -1
  236. package/src/daemon/conversation-tool-setup.ts +0 -23
  237. package/src/daemon/conversation.ts +3 -5
  238. package/src/daemon/daemon-control.ts +3 -3
  239. package/src/daemon/dictation-profile-store.ts +3 -3
  240. package/src/daemon/event-loop-watchdog.test.ts +2 -198
  241. package/src/daemon/event-loop-watchdog.ts +0 -185
  242. package/src/daemon/external-plugins-bootstrap.ts +1 -1
  243. package/src/daemon/first-greeting.ts +1 -1
  244. package/src/daemon/handlers/skills.ts +1 -1
  245. package/src/daemon/host-app-control-proxy.ts +1 -1
  246. package/src/daemon/host-cu-proxy.ts +2 -2
  247. package/src/daemon/identity-helpers.ts +1 -1
  248. package/src/daemon/lifecycle.ts +11 -15
  249. package/src/daemon/main.ts +1 -1
  250. package/src/daemon/now-scratchpad.ts +1 -1
  251. package/src/daemon/process-message.ts +4 -4
  252. package/src/daemon/profiler-run-store.ts +2 -2
  253. package/src/daemon/providers-setup.ts +2 -2
  254. package/src/daemon/shutdown-handlers.ts +0 -10
  255. package/src/daemon/sqlite-corruption-watchdog.test.ts +2 -142
  256. package/src/daemon/sqlite-corruption-watchdog.ts +17 -81
  257. package/src/daemon/tool-side-effects.ts +1 -1
  258. package/src/desktop/desktop-session-manager.ts +1 -1
  259. package/src/desktop/desktop-wallpaper-renderer.ts +1 -1
  260. package/src/heartbeat/heartbeat-service.ts +1 -1
  261. package/src/home/feed-writer.ts +1 -1
  262. package/src/home/home-greeting-cache.ts +1 -1
  263. package/src/home/relationship-state-writer.ts +2 -2
  264. package/src/hooks/__tests__/hook-live-reload.test.ts +1 -1
  265. package/src/hooks/hook-loader.ts +2 -2
  266. package/src/inbound/__tests__/oauth-callback-url.test.ts +2 -2
  267. package/src/inbound/oauth-callback-url.ts +3 -3
  268. package/src/ipc/__tests__/attachment-ipc.test.ts +1 -1
  269. package/src/ipc/socket-path.ts +1 -1
  270. package/src/live-voice/__tests__/live-voice-archive.test.ts +1 -1
  271. package/src/live-voice/__tests__/live-voice-vad.test.ts +1 -1
  272. package/src/live-voice/live-voice-session.ts +3 -66
  273. package/src/mcp/__tests__/effective-config.test.ts +1 -1
  274. package/src/mcp/__tests__/mcp-oauth-client-registration.test.ts +2 -2
  275. package/src/mcp/__tests__/mcp-oauth-provider.test.ts +2 -3
  276. package/src/mcp/__tests__/reload-signal-emission.test.ts +1 -1
  277. package/src/mcp/__tests__/reload-signal.test.ts +1 -1
  278. package/src/mcp/__tests__/workspace-mcp-config.test.ts +19 -21
  279. package/src/mcp/reload-signal.ts +1 -1
  280. package/src/mcp/workspace-mcp-config.ts +1 -23
  281. package/src/messaging/draft-store.ts +1 -1
  282. package/src/monitoring/__tests__/active-conversations.test.ts +1 -1
  283. package/src/monitoring/__tests__/page-cache.test.ts +1 -1
  284. package/src/monitoring/__tests__/stall-capture.test.ts +1 -1
  285. package/src/monitoring/__tests__/workspace-git-heartbeat.test.ts +1 -1
  286. package/src/monitoring/active-conversations.ts +1 -1
  287. package/src/monitoring/control.ts +1 -1
  288. package/src/monitoring/daemon-boot-time.ts +1 -1
  289. package/src/monitoring/daemon-heartbeat.ts +1 -1
  290. package/src/monitoring/page-cache.ts +1 -1
  291. package/src/monitoring/plugin-auto-update.ts +1 -7
  292. package/src/monitoring/plugin-source-watch.ts +1 -1
  293. package/src/monitoring/recovery/db.ts +1 -1
  294. package/src/monitoring/recovery/inflight-content.ts +1 -1
  295. package/src/monitoring/resource-sampler.ts +3 -14
  296. package/src/monitoring/stall-capture.ts +1 -1
  297. package/src/monitoring/worker.ts +9 -76
  298. package/src/monitoring/workspace-git-heartbeat.ts +1 -1
  299. package/src/oauth/connect-orchestrator.ts +4 -4
  300. package/src/permissions/checker.ts +1 -1
  301. package/src/permissions/workspace-policy.ts +1 -1
  302. package/src/persistence/__tests__/main-db-readonly-probe.ts +27 -52
  303. package/src/persistence/__tests__/message-content-file.test.ts +1 -1
  304. package/src/persistence/__tests__/slow-sync-log.test.ts +0 -2
  305. package/src/persistence/attachments-store.ts +1 -1
  306. package/src/persistence/conversation-crud.ts +1 -38
  307. package/src/persistence/conversation-directories.ts +1 -1
  308. package/src/persistence/conversation-types.ts +0 -8
  309. package/src/persistence/db-async-query.ts +1 -1
  310. package/src/persistence/db-connection.ts +11 -1
  311. package/src/persistence/db-init.ts +1 -1
  312. package/src/persistence/db-maintenance.ts +1 -1
  313. package/src/persistence/embeddings/__tests__/embedding-local-lifecycle.test.ts +1 -1
  314. package/src/persistence/embeddings/embedding-local.ts +4 -4
  315. package/src/persistence/embeddings/embedding-runtime-manager.ts +1 -1
  316. package/src/persistence/embeddings/qdrant-client.ts +1 -1
  317. package/src/persistence/embeddings/qdrant-manager.ts +1 -1
  318. package/src/persistence/job-handlers/__tests__/message-lexical-backfill.test.ts +1 -1
  319. package/src/persistence/job-handlers/__tests__/message-lexical-enqueue.test.ts +1 -1
  320. package/src/persistence/job-handlers/cleanup.ts +8 -17
  321. package/src/persistence/llm-usage-store.ts +2 -229
  322. package/src/persistence/message-content-file.ts +1 -1
  323. package/src/persistence/migrations/209-strip-thinking-from-consolidated.ts +1 -1
  324. package/src/persistence/migrations/222-strip-placeholder-sentinels-from-messages.ts +1 -1
  325. package/src/persistence/migrations/296-rewrite-balanced-economy-profile-pins.test.ts +1 -1
  326. package/src/persistence/migrations/306-rewrite-frontier-profile-pins.test.ts +1 -1
  327. package/src/persistence/migrations/329-move-onboarding-events-to-telemetry-db.test.ts +13 -0
  328. package/src/persistence/migrations/330-move-auth-fallback-events-to-telemetry-db.test.ts +13 -0
  329. package/src/persistence/migrations/331-move-lifecycle-events-to-telemetry-db.test.ts +13 -0
  330. package/src/persistence/migrations/332-move-skill-loaded-events-to-telemetry-db.test.ts +13 -0
  331. package/src/persistence/migrations/333-create-telemetry-events-table.test.ts +7 -4
  332. package/src/persistence/migrations/334-backfill-telemetry-events-outbox.test.ts +13 -0
  333. package/src/persistence/migrations/387-drop-telemetry-tables.ts +51 -0
  334. package/src/persistence/migrations/__tests__/327-create-flush-checkpoints.test.ts +9 -1
  335. package/src/persistence/migrations/__tests__/387-drop-telemetry-tables.test.ts +79 -0
  336. package/src/persistence/migrations/helpers/relocation.ts +1 -1
  337. package/src/persistence/migrations/run-migrations.ts +1 -1
  338. package/src/persistence/migrations/validate-migration-state.ts +1 -1
  339. package/src/persistence/raw-query.ts +1 -29
  340. package/src/persistence/slow-sync-log.ts +0 -23
  341. package/src/persistence/steps.ts +2 -0
  342. package/src/{telemetry → persistence}/tool-audit.ts +6 -121
  343. package/src/plugin-api/index.ts +1 -1
  344. package/src/plugin-api/plugin-name-env.ts +1 -1
  345. package/src/plugins/__tests__/installed-plugin-dirs.test.ts +1 -1
  346. package/src/plugins/collect-source-versions.ts +1 -1
  347. package/src/plugins/defaults/channel/package.json +1 -1
  348. package/src/plugins/defaults/cloud-hosted/package.json +1 -1
  349. package/src/plugins/defaults/compaction/package.json +1 -1
  350. package/src/plugins/defaults/documents/package.json +1 -1
  351. package/src/plugins/defaults/empty-response/package.json +1 -1
  352. package/src/plugins/defaults/exploration-drift/package.json +1 -1
  353. package/src/plugins/defaults/image-fallback/package.json +1 -1
  354. package/src/plugins/defaults/image-recovery/package.json +1 -1
  355. package/src/plugins/defaults/max-tokens-continue/package.json +1 -1
  356. package/src/plugins/defaults/memory/__tests__/db-async-query.test.ts +1 -1
  357. package/src/plugins/defaults/memory/__tests__/db-maintenance.test.ts +1 -1
  358. package/src/plugins/defaults/memory/__tests__/memory-retrospective-job.test.ts +0 -82
  359. package/src/plugins/defaults/memory/__tests__/memory-retrospective-skill-card.test.ts +0 -41
  360. package/src/plugins/defaults/memory/__tests__/memory-tier-boundary-guard.test.ts +0 -2
  361. package/src/plugins/defaults/memory/memory-retrospective-job.ts +3 -52
  362. package/src/plugins/defaults/memory/memory-retrospective-skill-card.ts +0 -18
  363. package/src/plugins/defaults/memory/package.json +1 -1
  364. package/src/plugins/defaults/memory/paths.ts +4 -4
  365. package/src/plugins/defaults/memory/src/__tests__/memory-worker-routes.test.ts +1 -1
  366. package/src/plugins/defaults/memory/src/memory-v2-routes.ts +5 -5
  367. package/src/plugins/defaults/memory/src/memory-v3-routes.ts +0 -207
  368. package/src/plugins/defaults/memory/src/memory-worker-routes.ts +1 -1
  369. package/src/plugins/defaults/memory/startup.ts +1 -22
  370. package/src/plugins/defaults/memory/v3/__tests__/orchestrate.test.ts +2 -253
  371. package/src/plugins/defaults/memory/v3/orchestrate.ts +5 -129
  372. package/src/plugins/defaults/memory/worker-control.ts +1 -1
  373. package/src/plugins/defaults/memory/worker.ts +2 -2
  374. package/src/plugins/defaults/session/package.json +1 -1
  375. package/src/plugins/defaults/surface-completion-nudge/package.json +1 -1
  376. package/src/plugins/defaults/task-progress/package.json +1 -1
  377. package/src/plugins/defaults/task-progress-nudge/package.json +1 -1
  378. package/src/plugins/defaults/title-generate/package.json +1 -1
  379. package/src/plugins/defaults/tool-error/package.json +1 -1
  380. package/src/plugins/defaults/tool-result-truncate/package.json +1 -1
  381. package/src/plugins/defaults/turn-context/package.json +1 -1
  382. package/src/plugins/defaults/workspace/injectors.ts +1 -1
  383. package/src/plugins/defaults/workspace/package.json +1 -1
  384. package/src/plugins/disabled-state.ts +1 -1
  385. package/src/plugins/ensure-plugin-api-shim.ts +1 -1
  386. package/src/plugins/ensure-shared-dep-links.ts +1 -1
  387. package/src/plugins/installed-plugin-dirs.ts +1 -1
  388. package/src/plugins/mcp-servers.ts +7 -9
  389. package/src/plugins/mtime-cache.ts +2 -2
  390. package/src/plugins/source-versions.ts +1 -1
  391. package/src/prompts/bootstrap-cleanup.ts +1 -1
  392. package/src/prompts/persona-resolver.ts +1 -1
  393. package/src/prompts/sections.ts +2 -2
  394. package/src/prompts/system-prompt.ts +10 -42
  395. package/src/prompts/templates/BOOTSTRAP-ACTIVATION-RAIL.md +0 -37
  396. package/src/providers/__tests__/cadet-connection-routing.test.ts +2 -2
  397. package/src/providers/cadet/client.ts +1 -1
  398. package/src/providers/inference/__tests__/base-url-route-validation.test.ts +1 -1
  399. package/src/providers/inference/adapter-factory.ts +1 -1
  400. package/src/providers/inference/backfill.ts +3 -10
  401. package/src/providers/inference/profile-probe.ts +1 -1
  402. package/src/providers/retry.ts +0 -2
  403. package/src/providers/types.ts +0 -7
  404. package/src/providers/usage-tracking.ts +1 -1
  405. package/src/routes/__tests__/route-host.test.ts +1 -1
  406. package/src/routes/control.ts +1 -1
  407. package/src/routes/route-host-client.ts +1 -1
  408. package/src/routes/worker.ts +2 -2
  409. package/src/runtime/agent-wake.ts +1 -1
  410. package/src/runtime/assistant-stream-state.ts +1 -1
  411. package/src/runtime/auth/token-service.ts +1 -1
  412. package/src/runtime/background-job-runner.ts +1 -1
  413. package/src/runtime/middleware/twilio-validation.ts +2 -2
  414. package/src/runtime/routes/__tests__/app-pin-routes.test.ts +1 -1
  415. package/src/runtime/routes/__tests__/apps-refresh-route.test.ts +1 -1
  416. package/src/runtime/routes/__tests__/avatar-state-routes.test.ts +3 -33
  417. package/src/runtime/routes/__tests__/cloud-credits-routes.test.ts +5 -4
  418. package/src/runtime/routes/__tests__/cloud-invoice-routes.test.ts +4 -3
  419. package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +59 -287
  420. package/src/runtime/routes/__tests__/default-plugin-routes.test.ts +1 -1
  421. package/src/runtime/routes/__tests__/deprecated-route-context.test.ts +15 -62
  422. package/src/runtime/routes/__tests__/inference-profiles-routes.test.ts +105 -12
  423. package/src/runtime/routes/__tests__/ingress-status-routes.test.ts +1 -1
  424. package/src/runtime/routes/__tests__/monitoring-routes.test.ts +1 -1
  425. package/src/runtime/routes/__tests__/plugins-routes.test.ts +47 -211
  426. package/src/runtime/routes/__tests__/route-host-worker-routes.test.ts +1 -1
  427. package/src/runtime/routes/__tests__/schedule-routes-disarm-reason.test.ts +1 -1
  428. package/src/runtime/routes/__tests__/schedule-worker-routes.test.ts +1 -1
  429. package/src/runtime/routes/__tests__/user-route-dispatcher-host.test.ts +1 -1
  430. package/src/runtime/routes/__tests__/user-route-dispatcher.test.ts +1 -1
  431. package/src/runtime/routes/__tests__/user-routes-cli.test.ts +1 -1
  432. package/src/runtime/routes/__tests__/user-routes-notices.test.ts +1 -1
  433. package/src/runtime/routes/__tests__/user-routes-request.test.ts +1 -1
  434. package/src/runtime/routes/app-management-routes.ts +1 -1
  435. package/src/runtime/routes/attachment-routes.ts +1 -1
  436. package/src/runtime/routes/audit-routes.ts +1 -1
  437. package/src/runtime/routes/avatar-routes.ts +3 -10
  438. package/src/runtime/routes/cloud-routes.ts +3 -3
  439. package/src/runtime/routes/content-source-routes.ts +1 -1
  440. package/src/runtime/routes/conversation-query-routes.ts +60 -621
  441. package/src/runtime/routes/conversation-routes.ts +1 -38
  442. package/src/runtime/routes/debug-routes.ts +1 -1
  443. package/src/runtime/routes/deprecated-route-context.ts +5 -61
  444. package/src/runtime/routes/heartbeat-routes.ts +1 -1
  445. package/src/runtime/routes/identity-routes.ts +1 -1
  446. package/src/runtime/routes/index.ts +0 -6
  447. package/src/runtime/routes/inference-profile-session-handler.ts +3 -3
  448. package/src/runtime/routes/inference-profiles-routes.ts +48 -21
  449. package/src/runtime/routes/inference-provider-connection-routes.ts +0 -1
  450. package/src/runtime/routes/llm-call-sites-routes.ts +3 -3
  451. package/src/runtime/routes/log-export/__tests__/installed-inventory.test.ts +1 -1
  452. package/src/runtime/routes/log-export/__tests__/workspace-allowlist-error-contract.test.ts +1 -1
  453. package/src/runtime/routes/log-export/__tests__/workspace-allowlist.test.ts +1 -1
  454. package/src/runtime/routes/log-export/workspace-allowlist.ts +1 -1
  455. package/src/runtime/routes/log-export-routes.ts +17 -15
  456. package/src/runtime/routes/migration-rollback-routes.ts +1 -1
  457. package/src/runtime/routes/migration-routes.ts +2 -3
  458. package/src/runtime/routes/monitoring-routes.ts +2 -2
  459. package/src/runtime/routes/oauth-providers.ts +5 -5
  460. package/src/runtime/routes/plugins-routes.ts +38 -163
  461. package/src/runtime/routes/profiler-routes.ts +1 -1
  462. package/src/runtime/routes/route-host-worker-routes.ts +1 -1
  463. package/src/runtime/routes/sanity-routes.ts +1 -1
  464. package/src/runtime/routes/schedule-routes.ts +1 -1
  465. package/src/runtime/routes/schedule-worker-routes.ts +1 -1
  466. package/src/runtime/routes/settings-routes.ts +1 -1
  467. package/src/runtime/routes/sounds-config-routes.ts +1 -1
  468. package/src/runtime/routes/surface-conversation-resolver.ts +1 -7
  469. package/src/runtime/routes/user-route-dispatcher.ts +1 -3
  470. package/src/runtime/routes/user-route-import.ts +1 -1
  471. package/src/runtime/routes/user-route-resolution.ts +1 -1
  472. package/src/runtime/routes/user-routes-cli.ts +1 -1
  473. package/src/runtime/routes/workspace-commit-routes.ts +1 -1
  474. package/src/runtime/routes/workspace-greetings.ts +1 -1
  475. package/src/runtime/routes/workspace-routes.ts +1 -1
  476. package/src/runtime/routes/workspace-utils.ts +1 -1
  477. package/src/runtime/sync/resource-sync-events.ts +1 -1
  478. package/src/schedule/__tests__/plugin-schedule-declarations.test.ts +1 -1
  479. package/src/schedule/__tests__/plugin-schedule-reconciler.test.ts +1 -1
  480. package/src/schedule/plugin-schedule-availability.ts +1 -1
  481. package/src/schedule/plugin-schedule-declarations.ts +1 -1
  482. package/src/schedule/run-script.ts +1 -1
  483. package/src/schedule/scheduler.ts +1 -11
  484. package/src/schedule/worker-control.ts +1 -1
  485. package/src/schedule/worker.ts +3 -3
  486. package/src/security/oauth2.ts +2 -2
  487. package/src/security/secret-allowlist.ts +1 -1
  488. package/src/signals/cancel.ts +1 -1
  489. package/src/signals/conversation-undo.ts +1 -1
  490. package/src/signals/emit-event.ts +1 -1
  491. package/src/signals/event-stream.ts +1 -1
  492. package/src/signals/user-message.ts +1 -1
  493. package/src/skills/catalog-install.ts +2 -1
  494. package/src/skills/clawhub.ts +1 -1
  495. package/src/skills/cloud-store.ts +1 -1
  496. package/src/skills/path-classifier.ts +1 -1
  497. package/src/skills/skill-history.ts +1 -1
  498. package/src/skills/skillssh-registry.ts +1 -1
  499. package/src/skills/uninstall.ts +1 -1
  500. package/src/skills/workspace-skill-md-signature.ts +1 -1
  501. package/src/subagent/manager.ts +1 -1
  502. package/src/theme/workspace-theme.ts +1 -1
  503. package/src/tools/browser/auth-cache.ts +1 -1
  504. package/src/tools/browser/browser-manager.ts +1 -1
  505. package/src/tools/browser/runtime-check.ts +1 -1
  506. package/src/tools/executor.ts +4 -4
  507. package/src/tools/filesystem/write.ts +1 -1
  508. package/src/tools/permission-checker.ts +2 -51
  509. package/src/tools/run-standalone.ts +1 -1
  510. package/src/tools/skills/format-input-schema.ts +1 -1
  511. package/src/tools/skills/load.ts +1 -1
  512. package/src/tools/skills/scaffold-cloud.ts +0 -32
  513. package/src/tools/terminal/safe-env.ts +1 -2
  514. package/src/tools/terminal/sanitized-bash.ts +1 -1
  515. package/src/tools/terminal/shell.ts +1 -1
  516. package/src/tools/tool-approval-handler.ts +4 -1
  517. package/src/tools/workflows/manage-workflows.ts +2 -2
  518. package/src/tools/workflows/run-workflow.test.ts +1 -1
  519. package/src/tools/workspace-tools/loader.ts +1 -1
  520. package/src/tts/synthesis-stream.ts +2 -2
  521. package/src/usage/attribution.ts +1 -11
  522. package/src/util/browser.ts +1 -1
  523. package/src/util/bun-runtime.ts +2 -1
  524. package/src/util/device-id.ts +1 -1
  525. package/src/util/disk-usage.ts +4 -139
  526. package/src/util/layout.ts +3 -3
  527. package/src/util/logger.ts +1 -1
  528. package/src/util/logs-db-path.ts +1 -1
  529. package/src/util/memory-db-path.ts +1 -1
  530. package/src/util/{platform.ts → os.ts} +5 -30
  531. package/src/util/process-tree.ts +19 -0
  532. package/src/util/sqlite3-runtime.ts +1 -1
  533. package/src/util/telemetry-db-path.ts +1 -1
  534. package/src/watcher/__tests__/engine.test.ts +0 -23
  535. package/src/watcher/engine.ts +0 -7
  536. package/src/windows-compiled-cli.ts +0 -4
  537. package/src/windows-compiled-worker-entry.ts +0 -6
  538. package/src/workflows/leaf-runner.test.ts +1 -1
  539. package/src/workflows/leaf-runner.ts +1 -1
  540. package/src/workflows/library.ts +1 -1
  541. package/src/workspace/adaptive-thinking-repair.ts +5 -24
  542. package/src/workspace/byok-default-profile-ensure.ts +24 -26
  543. package/src/workspace/custom-profile-ensure.ts +2 -2
  544. package/src/workspace/git-service.ts +1 -1
  545. package/src/workspace/hatched-date.ts +1 -1
  546. package/src/workspace/migrations/038-unify-llm-callsite-configs.ts +2 -2
  547. package/src/workspace/migrations/040-seed-latency-callsite-defaults.ts +1 -1
  548. package/src/workspace/migrations/050-seed-main-agent-opus-callsite.ts +1 -1
  549. package/src/workspace/migrations/077-seed-memory-router-callsite.ts +1 -1
  550. package/src/workspace/migrations/registry.ts +0 -4
  551. package/src/workspace/turn-commit.ts +1 -1
  552. package/docs/activation-funnel-telemetry.md +0 -324
  553. package/scripts/bundled-plugin-packages.ts +0 -154
  554. package/scripts/generate-bundled-plugin-packages.ts +0 -29
  555. package/src/__tests__/activation-early-marking.test.ts +0 -114
  556. package/src/__tests__/auth-fallback-events-store.test.ts +0 -99
  557. package/src/__tests__/config-get-vision-flag.test.ts +0 -139
  558. package/src/__tests__/conversation-surfaces-activation-emit.test.ts +0 -400
  559. package/src/__tests__/internal-telemetry-routes.test.ts +0 -213
  560. package/src/__tests__/telemetry-routes.test.ts +0 -182
  561. package/src/__tests__/turn-events-store.test.ts +0 -376
  562. package/src/__tests__/ui-channel-variants.test.ts +0 -53
  563. package/src/avatar/__tests__/avatar-changed-telemetry.test.ts +0 -217
  564. package/src/avatar/avatar-changed-telemetry.ts +0 -128
  565. package/src/calls/__tests__/call-funnel-telemetry.test.ts +0 -204
  566. package/src/cli/commands/telemetry.help.ts +0 -27
  567. package/src/cli/commands/telemetry.ts +0 -83
  568. package/src/cli/lib/__tests__/local-plugin-upgrade.test.ts +0 -251
  569. package/src/cli/lib/__tests__/plugin-catalog-local.test.ts +0 -113
  570. package/src/cli/lib/__tests__/plugin-marketplace.test.ts +0 -384
  571. package/src/cli/lib/__tests__/plugin-pin-history.test.ts +0 -164
  572. package/src/cli/lib/__tests__/plugins-install-offline.test.ts +0 -228
  573. package/src/cli/lib/bundled-marketplace.json +0 -1575
  574. package/src/cli/lib/bundled-plugin-packages.json +0 -827
  575. package/src/cli/lib/bundled-plugin-packages.ts +0 -87
  576. package/src/cli/lib/plugin-catalog-local.ts +0 -94
  577. package/src/cli/lib/plugin-pin-history.ts +0 -276
  578. package/src/cloud/feature-gate.ts +0 -8
  579. package/src/config/__tests__/cloud-rehydration.test.ts +0 -180
  580. package/src/config/cloud-rehydration.ts +0 -35
  581. package/src/daemon/__tests__/auto-profile-router.test.ts +0 -380
  582. package/src/daemon/auto-profile-router.ts +0 -428
  583. package/src/live-voice/__tests__/live-voice-session-telemetry.test.ts +0 -391
  584. package/src/monitoring/__tests__/db-integrity-sample.test.ts +0 -113
  585. package/src/monitoring/__tests__/oom-kill-reporter.test.ts +0 -374
  586. package/src/monitoring/db-integrity-check.ts +0 -163
  587. package/src/monitoring/db-integrity-sample.ts +0 -176
  588. package/src/monitoring/oom-kill-reporter.ts +0 -469
  589. package/src/onboarding/__tests__/onboarding-events-store.test.ts +0 -158
  590. package/src/onboarding/onboarding-events-store.ts +0 -296
  591. package/src/persistence/__tests__/raw-query-telemetry.test.ts +0 -76
  592. package/src/persistence/lifecycle-events-store.test.ts +0 -134
  593. package/src/persistence/lifecycle-events-store.ts +0 -110
  594. package/src/plugins/defaults/memory/__tests__/activation-session-store.test.ts +0 -76
  595. package/src/plugins/defaults/memory/activation-session-store.ts +0 -50
  596. package/src/plugins/defaults/memory/src/__tests__/memory-v3-gate-stats.test.ts +0 -281
  597. package/src/runtime/routes/auto-profile-routes.ts +0 -83
  598. package/src/runtime/routes/internal-telemetry-routes.ts +0 -142
  599. package/src/runtime/routes/telemetry-routes.ts +0 -274
  600. package/src/security/auth-fallback-events-store.ts +0 -57
  601. package/src/telemetry/__tests__/activation-funnel.test.ts +0 -95
  602. package/src/telemetry/__tests__/config-setting-events-store.test.ts +0 -63
  603. package/src/telemetry/__tests__/config-setting-snapshot.test.ts +0 -143
  604. package/src/telemetry/__tests__/flush-checkpoints.test.ts +0 -56
  605. package/src/telemetry/__tests__/live-voice-funnel.test.ts +0 -174
  606. package/src/telemetry/__tests__/outbox-test-harness.ts +0 -85
  607. package/src/telemetry/__tests__/phone-call-funnel.test.ts +0 -72
  608. package/src/telemetry/__tests__/telemetry-event-fixtures.ts +0 -282
  609. package/src/telemetry/__tests__/watchdog-events-store.test.ts +0 -71
  610. package/src/telemetry/activation-funnel.ts +0 -172
  611. package/src/telemetry/config-setting-events-store.ts +0 -40
  612. package/src/telemetry/config-setting-snapshot.ts +0 -170
  613. package/src/telemetry/flush-checkpoints.ts +0 -70
  614. package/src/telemetry/live-voice-funnel.ts +0 -185
  615. package/src/telemetry/memory-corpus-size.test.ts +0 -120
  616. package/src/telemetry/memory-corpus-size.ts +0 -184
  617. package/src/telemetry/memory-tier-reporter.test.ts +0 -195
  618. package/src/telemetry/memory-tier-reporter.ts +0 -130
  619. package/src/telemetry/phone-call-funnel.ts +0 -144
  620. package/src/telemetry/skill-loaded-events-store.test.ts +0 -93
  621. package/src/telemetry/skill-loaded-events-store.ts +0 -39
  622. package/src/telemetry/telemetry-event-sources.test.ts +0 -223
  623. package/src/telemetry/telemetry-event-sources.ts +0 -597
  624. package/src/telemetry/telemetry-events-outbox.test.ts +0 -375
  625. package/src/telemetry/telemetry-events-outbox.ts +0 -237
  626. package/src/telemetry/telemetry-main-db.ts +0 -48
  627. package/src/telemetry/telemetry-wire-source.json +0 -4
  628. package/src/telemetry/telemetry-wire-validation.test.ts +0 -157
  629. package/src/telemetry/telemetry-wire-validation.ts +0 -162
  630. package/src/telemetry/telemetry-wire.generated.ts +0 -483
  631. package/src/telemetry/tool-executed-events-store.test.ts +0 -210
  632. package/src/telemetry/tool-executed-events-store.ts +0 -102
  633. package/src/telemetry/trace-collection-policy.test.ts +0 -28
  634. package/src/telemetry/trace-collection-policy.ts +0 -30
  635. package/src/telemetry/turn-events-store.ts +0 -216
  636. package/src/telemetry/turn-trace-store.test.ts +0 -884
  637. package/src/telemetry/turn-trace-store.ts +0 -399
  638. package/src/telemetry/types.test.ts +0 -38
  639. package/src/telemetry/types.ts +0 -780
  640. package/src/telemetry/usage-telemetry-reporter.test.ts +0 -3445
  641. package/src/telemetry/usage-telemetry-reporter.ts +0 -566
  642. package/src/telemetry/watchdog-direct-emit.test.ts +0 -112
  643. package/src/telemetry/watchdog-direct-emit.ts +0 -104
  644. package/src/telemetry/watchdog-events-store.ts +0 -31
  645. package/src/tools/ui-surface/channel-variants.ts +0 -52
  646. package/src/watcher/__tests__/telemetry.test.ts +0 -178
  647. package/src/watcher/telemetry.ts +0 -93
  648. package/src/workspace/migrations/097-enable-adaptive-thinking-managed-profiles.ts +0 -165
  649. package/src/workspace/migrations/104-recheck-adaptive-thinking-model-implied-anthropic.ts +0 -151
  650. /package/src/{telemetry → persistence}/tool-usage-store.ts +0 -0
  651. /package/src/{telemetry → persistence}/turn-outcome.ts +0 -0
@@ -12,6 +12,8 @@ import { beforeEach, describe, expect, mock, test } from "bun:test";
12
12
 
13
13
  import { Command } from "commander";
14
14
 
15
+ import { MAX_COMMAND_LABEL_LENGTH } from "../../../util/process-tree.js";
16
+
15
17
  // ---------------------------------------------------------------------------
16
18
  // Mock state
17
19
  // ---------------------------------------------------------------------------
@@ -264,3 +266,68 @@ describe("ps command — failures", () => {
264
266
  expect(exitCode).toBe(1);
265
267
  });
266
268
  });
269
+
270
+ describe("ps command — long labels stay bounded", () => {
271
+ const longName =
272
+ "bun x -y @some/org/deeply-nested-mcp-server --stdio --port 8080 --verbose";
273
+
274
+ test("caps a command-derived name that runs long, keeping head and tail", async () => {
275
+ mockResponse = {
276
+ ok: true,
277
+ result: {
278
+ processes: [{ name: longName, status: "running", origin: "workspace" }],
279
+ },
280
+ };
281
+
282
+ await runPsCommand();
283
+ const line = logLines.find((l) => l.trimStart().startsWith("bun x"))!;
284
+
285
+ // The interpreter survives at the head, the args' tail stays intact ahead
286
+ // of the origin column, and the middle collapses to one ellipsis so no
287
+ // column runs unbounded.
288
+ expect(line).toBeDefined();
289
+ expect(line.trimStart().startsWith(longName.slice(0, 16))).toBe(true);
290
+ expect(line).toContain("--stdio --port 8080 --verbose");
291
+ expect(line).toContain("…");
292
+ // Bounded end to end: capped label + two-space gutter + origin column.
293
+ expect(line.trimStart().length).toBeLessThanOrEqual(
294
+ MAX_COMMAND_LABEL_LENGTH + 2 + "workspace".length,
295
+ );
296
+ });
297
+
298
+ test("keeps the hierarchy indentation on a capped child label", async () => {
299
+ mockResponse = {
300
+ ok: true,
301
+ result: {
302
+ processes: [
303
+ {
304
+ name: "assistant",
305
+ status: "running",
306
+ origin: "workspace",
307
+ children: [
308
+ { name: longName, status: "running", origin: "workspace" },
309
+ ],
310
+ },
311
+ ],
312
+ },
313
+ };
314
+
315
+ await runPsCommand();
316
+ const line = logLines.find((l) => l.trimStart().startsWith("bun x"))!;
317
+ expect(line).toMatch(/^ {2}bun x/);
318
+ });
319
+
320
+ test("leaves short labels untouched", async () => {
321
+ mockResponse = {
322
+ ok: true,
323
+ result: {
324
+ processes: [{ name: "qdrant", status: "running", origin: "workspace" }],
325
+ },
326
+ };
327
+
328
+ await runPsCommand();
329
+ const line = logLines.find((l) => l.trimStart().startsWith("qdrant"))!;
330
+ expect(line).not.toContain("…");
331
+ expect(line.trimStart().startsWith("qdrant")).toBe(true);
332
+ });
333
+ });
@@ -31,8 +31,8 @@ Examples:
31
31
  Fields:
32
32
  cloudUrl The Cadet Cloud base URL this assistant connects to
33
33
  assistantId This assistant's platform UUID
34
- organizationId The organization this assistant belongs to (from CLOUD_ORGANIZATION_ID)
35
- userId The user who owns this assistant (from CLOUD_USER_ID)
34
+ organizationId The organization this assistant belongs to
35
+ userId The user who owns this assistant
36
36
  authenticated Whether all prerequisites for platform authentication are met
37
37
  (platform URL and assistant API key both present)
38
38
 
@@ -4,7 +4,7 @@ import { isAbsolute, join } from "node:path";
4
4
  import type { Command } from "commander";
5
5
 
6
6
  import { cliIpcCall, exitFromIpcResult } from "../../ipc/cli-client.js";
7
- import { getWorkspaceDir } from "../../util/platform.js";
7
+ import { getWorkspaceDir } from "../../util/layout.js";
8
8
  import { applyCommandHelp, subcommand } from "../lib/cli-command-help.js";
9
9
  import { registerCommand } from "../lib/register-command.js";
10
10
  import { log } from "../logger.js";
@@ -22,7 +22,7 @@ import { dirname, join } from "node:path";
22
22
 
23
23
  import type { Command } from "commander";
24
24
 
25
- import { getWorkspaceDir } from "../../util/platform.js";
25
+ import { getWorkspaceDir } from "../../util/layout.js";
26
26
  import { applyCommandHelp, subcommand } from "../lib/cli-command-help.js";
27
27
  import { registerCommand } from "../lib/register-command.js";
28
28
  import { USER_AGENT } from "../lib/user-agent.js";
@@ -18,7 +18,7 @@ describe("assistant cloud subscription", () => {
18
18
  cancelAt: null,
19
19
  selectedCreditTier: "credits_50",
20
20
  package: { key: "super", name: "Super", version: 2, customized: false },
21
- entitlements: { managedEmail: true, phoneNumber: false },
21
+ entitlements: { cloudEmail: true, phoneNumber: false },
22
22
  },
23
23
  };
24
24
  });
@@ -32,7 +32,7 @@ describe("assistant cloud subscription", () => {
32
32
  expect(parsed.planId).toBe("pro");
33
33
  expect(parsed.status).toBe("active");
34
34
  expect(parsed.package.name).toBe("Super");
35
- expect(parsed.entitlements.managedEmail).toBe(true);
35
+ expect(parsed.entitlements.cloudEmail).toBe(true);
36
36
  });
37
37
 
38
38
  test("plain text mode does not emit JSON to stdout", async () => {
@@ -136,7 +136,7 @@ Fields:
136
136
  selectedCreditTier The selected Pro credit bundle tier, or null
137
137
  package The named Pro package pin ({ key, name, version,
138
138
  customized }), or null
139
- entitlements Plan-gated features ({ managedEmail, phoneNumber })
139
+ entitlements Plan-gated features ({ cloudEmail, phoneNumber })
140
140
 
141
141
  For the credit balance (not the plan), use 'assistant cloud credits'. For
142
142
  plan pricing, use 'assistant cloud plans'.
@@ -46,7 +46,7 @@ interface CloudSubscriptionResult {
46
46
  customized: boolean;
47
47
  } | null;
48
48
  entitlements: {
49
- managedEmail: boolean;
49
+ cloudEmail: boolean;
50
50
  phoneNumber: boolean;
51
51
  };
52
52
  }
@@ -187,7 +187,7 @@ export function registerCloudCommand(program: Command): void {
187
187
  log.info(`Credit tier: ${result.selectedCreditTier}`);
188
188
  }
189
189
  const ent: string[] = [];
190
- if (result.entitlements.managedEmail) {
190
+ if (result.entitlements.cloudEmail) {
191
191
  ent.push("managed email");
192
192
  }
193
193
  if (result.entitlements.phoneNumber) {
@@ -20,9 +20,9 @@ import { execFileSync } from "node:child_process";
20
20
 
21
21
  import type { Command } from "commander";
22
22
 
23
+ import { getDbPath } from "../../../util/layout.js";
23
24
  import { getLogsDbPath } from "../../../util/logs-db-path.js";
24
25
  import { getMemoryDbPath } from "../../../util/memory-db-path.js";
25
- import { getDbPath } from "../../../util/platform.js";
26
26
  import { getTelemetryDbPath } from "../../../util/telemetry-db-path.js";
27
27
  import { dim, green, red } from "../../lib/cli-colors.js";
28
28
  import { subcommand } from "../../lib/cli-command-help.js";
@@ -28,7 +28,7 @@ import { Database } from "bun:sqlite";
28
28
  import { eq } from "drizzle-orm";
29
29
  import { drizzle } from "drizzle-orm/bun-sqlite";
30
30
 
31
- import { getWorkspaceDir } from "../../../util/platform.js";
31
+ import { getWorkspaceDir } from "../../../util/layout.js";
32
32
  import type { RepairContext, RepairStep, StepResult } from "./repair-steps.js";
33
33
 
34
34
  /**
@@ -18,7 +18,7 @@ import { existsSync } from "node:fs";
18
18
 
19
19
  import type { Command } from "commander";
20
20
 
21
- import { getDbPath } from "../../../util/platform.js";
21
+ import { getDbPath } from "../../../util/layout.js";
22
22
  import { dim, green, red } from "../../lib/cli-colors.js";
23
23
  import { subcommand } from "../../lib/cli-command-help.js";
24
24
  import { shouldOutputJson, writeOutput } from "../../output.js";
@@ -31,9 +31,9 @@ import { Database } from "bun:sqlite";
31
31
  import type { Command } from "commander";
32
32
 
33
33
  import type { SchemaContractReport } from "../../../persistence/schema-contract.js";
34
+ import { getDbPath } from "../../../util/layout.js";
34
35
  import { getLogsDbPath } from "../../../util/logs-db-path.js";
35
36
  import { getMemoryDbPath } from "../../../util/memory-db-path.js";
36
- import { getDbPath } from "../../../util/platform.js";
37
37
  import { getTelemetryDbPath } from "../../../util/telemetry-db-path.js";
38
38
  import { red } from "../../lib/cli-colors.js";
39
39
  import { subcommand } from "../../lib/cli-command-help.js";
@@ -25,7 +25,6 @@ interface ProfileSummary {
25
25
  provider: string | null;
26
26
  model: string | null;
27
27
  status: "active" | "disabled";
28
- source: "managed" | "user";
29
28
  provider_connection?: string;
30
29
  availability: { status: string; message?: string } | null;
31
30
  /** Static problem with the stored entry itself; absent when it checks out. */
@@ -180,23 +179,13 @@ export function attachProfilesSubcommand(inference: Command): void {
180
179
  return;
181
180
  }
182
181
  renderTable(
183
- [
184
- "NAME",
185
- "LABEL",
186
- "PROVIDER",
187
- "MODEL",
188
- "STATUS",
189
- "SOURCE",
190
- "AVAIL",
191
- "CONFIG",
192
- ],
182
+ ["NAME", "LABEL", "PROVIDER", "MODEL", "STATUS", "AVAIL", "CONFIG"],
193
183
  rows.map((p) => [
194
184
  p.name,
195
185
  p.label ?? "-",
196
186
  p.provider ?? "-",
197
187
  p.model ?? "-",
198
188
  p.status,
199
- p.source,
200
189
  p.availability ? p.availability.status : "-",
201
190
  p.config_issue ? p.config_issue.code : "ok",
202
191
  ]),
@@ -2,12 +2,11 @@
2
2
  * Tests for the `assistant memory v3` CLI subgroup (section-lane model).
3
3
  *
4
4
  * Validates:
5
- * - Subcommand registration (rebuild-index, backfill-sections, gate-stats)
5
+ * - Subcommand registration (rebuild-index, backfill-sections)
6
6
  * under `memory v3`.
7
7
  * - `rebuild-index` and `backfill-sections` route through IPC to the daemon.
8
8
  * - `backfill-sections` passes a long IPC timeout (the one-time full-corpus
9
9
  * embed easily outlasts the default 60s).
10
- * - `gate-stats` calls handleMemoryV3GateStats directly — no daemon required.
11
10
  * - Error paths return a non-zero exit code without throwing.
12
11
  */
13
12
 
@@ -40,47 +39,6 @@ let mockIpcResult: {
40
39
  /** Captured log output for assertion. */
41
40
  let logOutput: string[] = [];
42
41
 
43
- /** Shared fake gate-stats payload used across gate-stats tests. */
44
- const fakeGateStats = {
45
- lookbackDays: 30,
46
- totalRuns: 10,
47
- buckets: [
48
- {
49
- pageCountRange: "0–9",
50
- total: 2,
51
- scored: 1,
52
- passed: 2,
53
- scoredPassRate: 1,
54
- reasons: { dense_pass: 1, dense_disabled: 1 },
55
- },
56
- {
57
- pageCountRange: "10–49",
58
- total: 5,
59
- scored: 4,
60
- passed: 3,
61
- scoredPassRate: 0.75,
62
- reasons: { dense_pass: 3, fail_no_signal: 1 },
63
- },
64
- {
65
- pageCountRange: "50–199",
66
- total: 2,
67
- scored: 2,
68
- passed: 1,
69
- scoredPassRate: 0.5,
70
- reasons: { dense_pass: 1, fail_no_signal: 1 },
71
- },
72
- {
73
- pageCountRange: "200+",
74
- total: 1,
75
- scored: 1,
76
- passed: 0,
77
- scoredPassRate: 0,
78
- reasons: { fail_no_signal: 1 },
79
- },
80
- ],
81
- unknownPageCount: { total: 0, passed: 0, reasons: {} },
82
- };
83
-
84
42
  // ---------------------------------------------------------------------------
85
43
  // Mocks
86
44
  // ---------------------------------------------------------------------------
@@ -111,27 +69,6 @@ mock.module("../../../../util/logger.js", () => ({
111
69
  }));
112
70
 
113
71
  // ---------------------------------------------------------------------------
114
- // gate-stats direct-invocation mocks
115
- // ---------------------------------------------------------------------------
116
-
117
- /** Args captured from the last handleMemoryV3GateStats call. */
118
- let lastGateStatsArgs: { lookbackDays: number; db: unknown } | null = null;
119
-
120
- /** What handleMemoryV3GateStats returns, or an error to throw. */
121
- let gateStatsImpl: (() => unknown) | null = null;
122
-
123
- mock.module(
124
- "../../../../plugins/defaults/memory/src/memory-v3-routes.js",
125
- () => ({
126
- handleMemoryV3GateStats: (lookbackDays: number, db: unknown) => {
127
- lastGateStatsArgs = { lookbackDays, db };
128
- if (gateStatsImpl) {
129
- return gateStatsImpl();
130
- }
131
- return fakeGateStats;
132
- },
133
- }),
134
- );
135
72
 
136
73
  mock.module("../../../../persistence/db-connection.js", () => ({
137
74
  getTelemetrySqlite: () => ({}),
@@ -204,8 +141,6 @@ beforeEach(() => {
204
141
  ok: true,
205
142
  result: { articles: 3, sections: 12, failures: 0 },
206
143
  };
207
- lastGateStatsArgs = null;
208
- gateStatsImpl = null;
209
144
  logOutput = [];
210
145
  process.exitCode = 0;
211
146
  });
@@ -226,7 +161,6 @@ describe("subcommand registration", () => {
226
161
  "backfill-sections",
227
162
  "eval",
228
163
  "eval-tally",
229
- "gate-stats",
230
164
  "rebuild-index",
231
165
  ]);
232
166
  });
@@ -310,52 +244,3 @@ describe("memory v3 backfill-sections", () => {
310
244
  });
311
245
 
312
246
  // ---------------------------------------------------------------------------
313
- // gate-stats (direct invocation — no daemon required)
314
- // ---------------------------------------------------------------------------
315
-
316
- describe("memory v3 gate-stats", () => {
317
- test("calls handleMemoryV3GateStats directly with default lookback (no IPC)", async () => {
318
- const { exitCode } = await runCommand(["memory", "v3", "gate-stats"]);
319
-
320
- expect(exitCode).toBe(0);
321
- // Must NOT have gone through IPC.
322
- expect(lastIpcCall).toBeNull();
323
- // Must have called the handler directly with the default lookback.
324
- expect(lastGateStatsArgs!.lookbackDays).toBe(30);
325
- });
326
-
327
- test("forwards --lookback-days directly to handleMemoryV3GateStats", async () => {
328
- await runCommand(["memory", "v3", "gate-stats", "--lookback-days", "7"]);
329
-
330
- expect(lastIpcCall).toBeNull();
331
- expect(lastGateStatsArgs!.lookbackDays).toBe(7);
332
- });
333
-
334
- test("prints formatted table on success (no --json)", async () => {
335
- await runCommand(["memory", "v3", "gate-stats"]);
336
-
337
- expect(logOutput.some((l) => l.includes("Gate-stats"))).toBe(true);
338
- expect(logOutput.some((l) => l.includes("10–49"))).toBe(true);
339
- expect(logOutput.some((l) => l.includes("75.0%"))).toBe(true);
340
- });
341
-
342
- test("emits raw JSON with --json", async () => {
343
- await runCommand(["memory", "v3", "gate-stats", "--json"]);
344
-
345
- const raw = logOutput.join("");
346
- const parsed = JSON.parse(raw) as typeof fakeGateStats;
347
- expect(parsed.totalRuns).toBe(10);
348
- expect(parsed.buckets).toHaveLength(4);
349
- });
350
-
351
- test("exits with code 1 when handleMemoryV3GateStats throws", async () => {
352
- gateStatsImpl = () => {
353
- throw new Error("telemetry DB locked");
354
- };
355
-
356
- const { exitCode } = await runCommand(["memory", "v3", "gate-stats"]);
357
-
358
- expect(exitCode).toBe(1);
359
- expect(logOutput.some((l) => l.includes("telemetry DB locked"))).toBe(true);
360
- });
361
- });
@@ -600,9 +600,7 @@ safely.
600
600
 
601
601
  Examples:
602
602
  $ assistant memory v3 rebuild-index
603
- $ assistant memory v3 backfill-sections
604
- $ assistant memory v3 gate-stats
605
- $ assistant memory v3 gate-stats --lookback-days 7 --json`,
603
+ $ assistant memory v3 backfill-sections`,
606
604
  subcommands: [
607
605
  {
608
606
  name: "rebuild-index",
@@ -712,46 +710,6 @@ Examples:
712
710
  $ assistant memory v3 eval --snapshot .mv3/snapshot/concepts --staging .mv3/staging --out .mv3/eval
713
711
  $ assistant memory v3 eval --snapshot .mv3/snapshot/concepts --staging .mv3/staging --out .mv3/eval --turns-file .mv3/eval/key.json
714
712
  $ assistant memory v3 eval --snapshot .mv3/snapshot/concepts --staging .mv3/staging --out .mv3/eval --exclude-conversation <migration-conv-id>`,
715
- },
716
- {
717
- name: "gate-stats",
718
- description:
719
- "Show injection gate pass rates bucketed by corpus size (read-only)",
720
- options: [
721
- {
722
- flags: "--lookback-days <n>",
723
- description: "Days of telemetry to aggregate (1–90, default 30)",
724
- defaultValue: "30",
725
- },
726
- {
727
- flags: "--json",
728
- description: "Emit raw JSON instead of a formatted table",
729
- },
730
- ],
731
- helpText: `
732
- Reads the memory v3 injection gate telemetry outbox and prints pass rates
733
- and reason distributions grouped by concept page count bucket
734
- (0–9 / 10–49 / 50–199 / 200+). Scored runs (dense lane was available and
735
- actually weighed scores) are reported separately from pass-open shortcuts
736
- (dense disabled / unavailable / gate threw) so scoredPassRate reflects
737
- only contested gate decisions — the signal relevant for threshold calibration.
738
-
739
- Coverage is limited to runs still pending platform flush. In a healthy system
740
- the outbox holds only the last few minutes to hours of events, so
741
- --lookback-days is an upper bound, not a guarantee; long-window aggregation
742
- lives on the cloud side on top of flushed watchdog events.
743
-
744
- Reads the telemetry database directly — the assistant does not need to be
745
- running.
746
-
747
- Intended use: verify that gate firing rates shift as expected after a
748
- config or threshold change, and check whether the bm25-auto-calibration
749
- flag is worth enabling for large corpora.
750
-
751
- Examples:
752
- $ assistant memory v3 gate-stats
753
- $ assistant memory v3 gate-stats --lookback-days 7
754
- $ assistant memory v3 gate-stats --json | jq '.buckets[] | select(.pageCountRange == "200+")'`,
755
713
  },
756
714
  {
757
715
  name: "eval-tally",
@@ -25,7 +25,6 @@ import type {
25
25
  MemoryEvalTallyResult,
26
26
  } from "../../../plugins/defaults/memory/src/memory-eval-routes.js";
27
27
  import type {
28
- GateStatsResponse,
29
28
  MemoryV3BackfillSectionsResult,
30
29
  MemoryV3RebuildIndexResult,
31
30
  } from "../../../plugins/defaults/memory/src/memory-v3-routes.js";
@@ -53,36 +52,6 @@ function collectRepeatable(value: string, acc: string[]): string[] {
53
52
  return [...acc, value];
54
53
  }
55
54
 
56
- /** Render gate-stats as a human-readable table. */
57
- function formatGateStats(r: GateStatsResponse): string {
58
- const lines: string[] = [
59
- `Gate-stats (last ${r.lookbackDays} day${r.lookbackDays === 1 ? "" : "s"}, ${r.totalRuns} run${r.totalRuns === 1 ? "" : "s"})`,
60
- "",
61
- `Bucket Total Scored Passed ScoredPassRate Top reasons`,
62
- ];
63
- for (const b of r.buckets) {
64
- const rate =
65
- b.scoredPassRate !== null
66
- ? `${(b.scoredPassRate * 100).toFixed(1)}%`
67
- : "n/a";
68
- const topReasons = Object.entries(b.reasons)
69
- .sort(([, a], [, bv]) => (bv as number) - (a as number))
70
- .slice(0, 3)
71
- .map(([k, v]) => `${k}: ${v}`)
72
- .join(", ");
73
- lines.push(
74
- `${b.pageCountRange.padEnd(10)} ${String(b.total).padStart(5)} ${String(b.scored).padStart(6)} ${String(b.passed).padStart(6)} ${rate.padStart(14)} ${topReasons}`,
75
- );
76
- }
77
- if (r.unknownPageCount.total > 0) {
78
- lines.push("");
79
- lines.push(
80
- `Unknown page count: ${r.unknownPageCount.total} total, ${r.unknownPageCount.passed} passed`,
81
- );
82
- }
83
- return lines.join("\n");
84
- }
85
-
86
55
  /**
87
56
  * Read the `turn` ids from a prior run's `key.json` or `packets.json` (both are
88
57
  * arrays of objects carrying a `turn` field). Used to pin `--turns-file` so a
@@ -302,37 +271,4 @@ export function registerMemoryV3Command(memory: Command): void {
302
271
  log.info(formatTally(payload));
303
272
  },
304
273
  );
305
-
306
- // ── gate-stats ────────────────────────────────────────────────────────
307
- // Reads the telemetry DB directly — no daemon required.
308
-
309
- subcommand(v3, "gate-stats").action(
310
- async (opts: { lookbackDays: string; json?: boolean }) => {
311
- const lookbackDays = Number(opts.lookbackDays);
312
- const [{ handleMemoryV3GateStats }, { getTelemetrySqlite }] =
313
- await Promise.all([
314
- import("../../../plugins/defaults/memory/src/memory-v3-routes.js"),
315
- import("../../../persistence/db-connection.js"),
316
- ]);
317
- let payload;
318
- try {
319
- payload = handleMemoryV3GateStats(
320
- Number.isFinite(lookbackDays) ? lookbackDays : 30,
321
- getTelemetrySqlite(),
322
- );
323
- } catch (err) {
324
- log.error(
325
- "Failed to read gate stats: %s",
326
- err instanceof Error ? err.message : String(err),
327
- );
328
- process.exitCode = 1;
329
- return;
330
- }
331
- if (opts.json === true) {
332
- log.info(JSON.stringify(payload, null, 2));
333
- return;
334
- }
335
- log.info(formatGateStats(payload));
336
- },
337
- );
338
274
  }