@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
@@ -44,12 +44,6 @@ export const SLOW_SYNC_THRESHOLD_MS = ((): number => {
44
44
  return Number.isFinite(raw) && raw > 0 ? raw : 1000;
45
45
  })();
46
46
 
47
- /**
48
- * `check_name` for slow-sync telemetry events. Stable so downstream
49
- * grouping stays consistent; keep it in sync with any admin query.
50
- */
51
- export const SLOW_SYNC_CHECK_NAME = "slow_sync_operation";
52
-
53
47
  /** One recorded section entry: a static label plus monotonic start/end stamps. */
54
48
  export interface SectionMark {
55
49
  label: string;
@@ -157,23 +151,6 @@ export function reportSlowSync(
157
151
  { label, elapsedMs, ...detail },
158
152
  "Slow synchronous DB operation blocked the event loop",
159
153
  );
160
- // Record telemetry via a lazy dynamic import. A static import would pull the
161
- // telemetry → consent-cache → config/loader chain into the module graph of
162
- // every raw-query / conversation-load caller, where a test's `mock.module`
163
- // of the loader leaks across the shared test process and breaks unrelated
164
- // files at eval time. Loading it only on the rare slow path keeps that chain
165
- // off the hot path's static graph; best-effort, so a failure is swallowed.
166
- void import("../telemetry/watchdog-events-store.js")
167
- .then(({ recordWatchdogEvent }) => {
168
- recordWatchdogEvent({
169
- checkName: SLOW_SYNC_CHECK_NAME,
170
- value: elapsedMs,
171
- detail: { label, ...detail },
172
- });
173
- })
174
- .catch(() => {
175
- // Telemetry is best-effort — never let it escape the timed section.
176
- });
177
154
  }
178
155
 
179
156
  /**
@@ -497,6 +497,7 @@ import { migrateNormalizeOpencodeHostConnections } from "./migrations/383-normal
497
497
  import { migrateAddDocumentRevision } from "./migrations/384-add-document-revision.js";
498
498
  import { migrateCreateDocumentRevisions } from "./migrations/385-create-document-revisions.js";
499
499
  import { migrateConversationsLastReopenedAt } from "./migrations/386-conversations-last-reopened-at.js";
500
+ import { migrateDropTelemetryTables } from "./migrations/387-drop-telemetry-tables.js";
500
501
  import type { MigrationStep } from "./migrations/run-migrations.js";
501
502
 
502
503
  export const migrationSteps: MigrationStep[] = [
@@ -1667,4 +1668,5 @@ export const migrationSteps: MigrationStep[] = [
1667
1668
  migrateAddDocumentRevision,
1668
1669
  migrateCreateDocumentRevisions,
1669
1670
  migrateConversationsLastReopenedAt,
1671
+ migrateDropTelemetryTables,
1670
1672
  ];
@@ -1,36 +1,20 @@
1
1
  /**
2
- * Direct terminals for tool-execution auditing and telemetry.
2
+ * Direct terminals for tool-execution auditing.
3
3
  *
4
4
  * The executor and its permission/approval collaborators call these functions
5
5
  * inline as each tool call reaches a terminal outcome (executed / error /
6
- * denied / prompted). Each function owns exactly one side effect:
6
+ * denied). Each function owns exactly one side effect:
7
7
  *
8
8
  * - `recordToolExecuted` / `recordToolError` / `recordToolDenied` write the
9
9
  * always-on `tool_invocations` audit row (redacting secrets from the
10
10
  * stored input/result).
11
- * - `recordToolPermissionPrompted` / `recordToolPermissionDecided` write the
12
- * consent-gated `permission_prompt` and `permission_decided`
13
- * lifecycle-telemetry rows. Both are called from the one site that owns an
14
- * interactive prompt (`tools/permission-checker.ts`), so every prompt has
15
- * exactly one decision and the two series reconcile.
16
11
  * - `logToolFailure` emits the operator-facing failure log.
17
12
  *
18
- * The telemetry-only columns (payload sizes + model attribution) are the
19
- * single write-time privacy gate for `tool_executed` telemetry: on a confirmed
20
- * `share_analytics` opt-out they persist as NULL, which the projection's
21
- * `arg_bytes IS NOT NULL` filter excludes permanently. An unknown consent
22
- * state (cold cache) populates the columns — NULLing them would destroy the
23
- * data irreversibly, and consent is enforced again at flush time and platform
24
- * ingest, so opted-out rows never leave the device. The audit fields
25
- * themselves (tool name, decision, redacted input/result previews, duration)
26
- * are unaffected — `tool_invocations` is a local always-on audit log.
13
+ * The payload-size + model-attribution columns are part of the local audit
14
+ * row — `tool_invocations` is a local always-on audit log and nothing in it
15
+ * ever leaves the device.
27
16
  */
28
17
 
29
- import { getRawShareAnalytics } from "../cloud/consent-cache.js";
30
- import {
31
- type LifecycleEventAttributes,
32
- recordLifecycleEvent,
33
- } from "../persistence/lifecycle-events-store.js";
34
18
  import { redactJsonStringLeaves } from "../security/redact-json.js";
35
19
  import { redactSensitiveFields } from "../security/redaction.js";
36
20
  import { redactSecrets } from "../security/secret-scanner.js";
@@ -154,87 +138,6 @@ export function recordToolDenied(entry: DeniedAuditEntry): void {
154
138
  });
155
139
  }
156
140
 
157
- /**
158
- * How an interactive permission prompt ended.
159
- *
160
- * `allow` / `deny` are answers a human gave. `abandoned` covers every way a
161
- * prompt stops without one: it timed out, a new user message superseded it,
162
- * the turn was cancelled, or the prompter was disposed (client disconnect /
163
- * conversation teardown). The daemon resolves all of those to a deny for the
164
- * agent loop, so without this bucket they are indistinguishable from a human
165
- * saying no.
166
- */
167
- export type PermissionPromptOutcome = "allow" | "deny" | "abandoned";
168
-
169
- /**
170
- * Grouping dimensions recorded on both halves of a permission-prompt pair.
171
- * The tool and its risk are always known at the prompt site, so they tighten
172
- * to required; the rest are the lifecycle attributes as declared. Metadata
173
- * only: never a file path, a command string, or any tool input.
174
- */
175
- export interface PermissionPromptTelemetry extends LifecycleEventAttributes {
176
- toolName: string;
177
- riskLevel: string;
178
- }
179
-
180
- /**
181
- * Server bounds on the lifecycle `event_name` and `tool_name`. A field over
182
- * its bound fails validation, and a failed event is acked and discarded rather
183
- * than retried, so both are clamped here. `event_name` has one variable-length
184
- * part (the tool name, which can be a long `mcp__server__tool` id) and is much
185
- * the tighter of the two, which is why `tool_name` carries the full-length
186
- * value consumers join a prompt to its decision on.
187
- */
188
- const LIFECYCLE_EVENT_NAME_LIMIT = 64;
189
- const LIFECYCLE_TOOL_NAME_LIMIT = 255;
190
-
191
- function permissionEventName(
192
- prefix: string,
193
- toolName: string,
194
- suffix: string,
195
- ): string {
196
- const budget = LIFECYCLE_EVENT_NAME_LIMIT - prefix.length - suffix.length;
197
- return `${prefix}${toolName.slice(0, Math.max(budget, 0))}${suffix}`;
198
- }
199
-
200
- function recordPermissionLifecycleEvent(
201
- eventName: string,
202
- entry: PermissionPromptTelemetry,
203
- failureMessage: string,
204
- ): void {
205
- try {
206
- recordLifecycleEvent(eventName, {
207
- ...entry,
208
- toolName: entry.toolName.slice(0, LIFECYCLE_TOOL_NAME_LIMIT),
209
- });
210
- } catch (err) {
211
- log.warn({ err, eventName, toolName: entry.toolName }, failureMessage);
212
- }
213
- }
214
-
215
- /** Record the consent-gated telemetry row for an interactive permission prompt. */
216
- export function recordToolPermissionPrompted(
217
- entry: PermissionPromptTelemetry,
218
- ): void {
219
- recordPermissionLifecycleEvent(
220
- permissionEventName("permission_prompt:", entry.toolName, ""),
221
- entry,
222
- "Failed to record permission prompt telemetry",
223
- );
224
- }
225
-
226
- /** Record the consent-gated telemetry row for how that prompt ended. */
227
- export function recordToolPermissionDecided(
228
- entry: PermissionPromptTelemetry,
229
- outcome: PermissionPromptOutcome,
230
- ): void {
231
- recordPermissionLifecycleEvent(
232
- permissionEventName("permission_decided:", entry.toolName, `:${outcome}`),
233
- entry,
234
- "Failed to record permission decision telemetry",
235
- );
236
- }
237
-
238
141
  /** Operator-facing failure log: warn for expected failures, error otherwise. */
239
142
  function logToolFailure(entry: ErrorAuditEntry): void {
240
143
  const meta = {
@@ -303,32 +206,14 @@ function redactToolInput(
303
206
  type TelemetryColumns = Pick<ToolInvocationRecord, "argBytes" | "resultBytes"> &
304
207
  UsageAttributionColumns;
305
208
 
306
- const NULL_TELEMETRY_COLUMNS: TelemetryColumns = {
307
- argBytes: null,
308
- resultBytes: null,
309
- provider: null,
310
- model: null,
311
- inferenceProfile: null,
312
- inferenceProfileSource: null,
313
- };
314
-
315
209
  /**
316
- * Telemetry-only columns (payload sizes + model attribution). NULLed only on a
317
- * confirmed `share_analytics` opt-out — the projection's `arg_bytes IS NOT
318
- * NULL` filter excludes NULL rows permanently (the same mechanism that
319
- * excludes legacy pre-migration rows, see tool-executed-events-store.ts), so
320
- * an unknown consent state (cold cache) must populate the columns rather than
321
- * destroy them. Consent is enforced again at flush time and platform ingest,
322
- * so opted-out rows never ship.
210
+ * Payload sizes + model attribution, part of the local audit row.
323
211
  */
324
212
  function telemetryColumns(
325
213
  attribution: UsageAttributionSnapshot | null,
326
214
  rawInput: string,
327
215
  resultBytes: number,
328
216
  ): TelemetryColumns {
329
- if (getRawShareAnalytics() === false) {
330
- return NULL_TELEMETRY_COLUMNS;
331
- }
332
217
  return {
333
218
  argBytes: Buffer.byteLength(rawInput, "utf8"),
334
219
  resultBytes,
@@ -294,7 +294,7 @@ export {
294
294
  // Absolute path to the active workspace directory. A plugin that reads or
295
295
  // writes files under the workspace (e.g. its own `plugins/<name>/data/`
296
296
  // directory) resolves them against this instead of hardcoding a base path.
297
- export { getWorkspaceDir } from "../util/platform.js";
297
+ export { getWorkspaceDir } from "../util/layout.js";
298
298
  // `String.prototype.slice` that never cuts a UTF-16 surrogate pair in half.
299
299
  // Any text a plugin truncates by character budget and hands to a model must
300
300
  // go through this: an orphaned half is invalid UTF-16 that strict provider
@@ -12,7 +12,7 @@ import { isAbsolute, relative, resolve, sep } from "node:path";
12
12
  import { fileURLToPath } from "node:url";
13
13
 
14
14
  import { getCurrentPluginName } from "../plugins/plugin-execution-context.js";
15
- import { getWorkspacePluginsDir } from "../util/platform.js";
15
+ import { getWorkspacePluginsDir } from "../util/layout.js";
16
16
 
17
17
  export const PLUGIN_NAME_ENV = "CADET_PLUGIN_NAME";
18
18
 
@@ -15,7 +15,7 @@ import { tmpdir } from "node:os";
15
15
  import { join } from "node:path";
16
16
  import { afterAll, beforeEach, describe, expect, test } from "bun:test";
17
17
 
18
- import { getWorkspacePluginsDir } from "../../util/platform.js";
18
+ import { getWorkspacePluginsDir } from "../../util/layout.js";
19
19
  import { listInstalledPluginDirs } from "../installed-plugin-dirs.js";
20
20
 
21
21
  const pluginsDir = getWorkspacePluginsDir();
@@ -15,7 +15,7 @@
15
15
  import { existsSync } from "node:fs";
16
16
  import { join } from "node:path";
17
17
 
18
- import { getWorkspaceHooksDir } from "../util/platform.js";
18
+ import { getWorkspaceHooksDir } from "../util/layout.js";
19
19
  import { listInstalledPluginDirs } from "./installed-plugin-dirs.js";
20
20
  import { snapshotPluginSource } from "./source-fingerprint.js";
21
21
  import type { PluginSourceVersion } from "./source-versions.js";
@@ -9,6 +9,6 @@
9
9
  "node": ">=20.12.0"
10
10
  },
11
11
  "peerDependencies": {
12
- "@mycadet/plugin-api": "^0.8.0"
12
+ "@mycadet/plugin-api": "^0.12.7"
13
13
  }
14
14
  }
@@ -9,6 +9,6 @@
9
9
  "node": ">=20.12.0"
10
10
  },
11
11
  "peerDependencies": {
12
- "@mycadet/plugin-api": "^0.10.9"
12
+ "@mycadet/plugin-api": "^0.12.7"
13
13
  }
14
14
  }
@@ -9,6 +9,6 @@
9
9
  "node": ">=20.12.0"
10
10
  },
11
11
  "peerDependencies": {
12
- "@mycadet/plugin-api": "^0.8.0"
12
+ "@mycadet/plugin-api": "^0.12.7"
13
13
  }
14
14
  }
@@ -9,6 +9,6 @@
9
9
  "node": ">=20.12.0"
10
10
  },
11
11
  "peerDependencies": {
12
- "@mycadet/plugin-api": "^0.8.0"
12
+ "@mycadet/plugin-api": "^0.12.7"
13
13
  }
14
14
  }
@@ -9,6 +9,6 @@
9
9
  "node": ">=20.12.0"
10
10
  },
11
11
  "peerDependencies": {
12
- "@mycadet/plugin-api": "^0.8.0"
12
+ "@mycadet/plugin-api": "^0.12.7"
13
13
  }
14
14
  }
@@ -10,6 +10,6 @@
10
10
  "node": ">=20.12.0"
11
11
  },
12
12
  "peerDependencies": {
13
- "@mycadet/plugin-api": "^0.8.0"
13
+ "@mycadet/plugin-api": "^0.12.7"
14
14
  }
15
15
  }
@@ -9,6 +9,6 @@
9
9
  "node": ">=20.12.0"
10
10
  },
11
11
  "peerDependencies": {
12
- "@mycadet/plugin-api": "^0.8.0"
12
+ "@mycadet/plugin-api": "^0.12.7"
13
13
  }
14
14
  }
@@ -9,6 +9,6 @@
9
9
  "node": ">=20.12.0"
10
10
  },
11
11
  "peerDependencies": {
12
- "@mycadet/plugin-api": "^0.8.0"
12
+ "@mycadet/plugin-api": "^0.12.7"
13
13
  }
14
14
  }
@@ -9,6 +9,6 @@
9
9
  "node": ">=20.12.0"
10
10
  },
11
11
  "peerDependencies": {
12
- "@mycadet/plugin-api": ">=0.8.0"
12
+ "@mycadet/plugin-api": "^0.12.7"
13
13
  }
14
14
  }
@@ -34,7 +34,7 @@ const {
34
34
  parseChangesFromStdout,
35
35
  } = await import("../../../../persistence/db-async-query.js");
36
36
  const { findSqlite3 } = await import("../../../../util/sqlite3-runtime.js");
37
- const { getDbPath } = await import("../../../../util/platform.js");
37
+ const { getDbPath } = await import("../../../../util/layout.js");
38
38
 
39
39
  await initializeDb();
40
40
 
@@ -26,7 +26,7 @@ const { maybeRunDbMaintenance, maybeRunPassiveWalCheckpoint } =
26
26
  await import("../../../../persistence/db-maintenance.js");
27
27
  const { getLastInteractiveUserMessageTimestamp } =
28
28
  await import("../../../../persistence/conversation-crud.js");
29
- const { getDbPath } = await import("../../../../util/platform.js");
29
+ const { getDbPath } = await import("../../../../util/layout.js");
30
30
 
31
31
  await initializeDb();
32
32
 
@@ -132,21 +132,6 @@ mock.module("../../../../persistence/conversation-tool-surface.js", () => ({
132
132
  },
133
133
  }));
134
134
 
135
- const watchdogEvents: Array<{
136
- checkName: string;
137
- value?: number | null;
138
- detail?: Record<string, unknown> | null;
139
- }> = [];
140
- mock.module("../../../../telemetry/watchdog-events-store.js", () => ({
141
- recordWatchdogEvent: (record: {
142
- checkName: string;
143
- value?: number | null;
144
- detail?: Record<string, unknown> | null;
145
- }) => {
146
- watchdogEvents.push(record);
147
- },
148
- }));
149
-
150
135
  mock.module("../../../../daemon/conversation-registry.js", () => ({
151
136
  findConversation: (id: string | undefined) => {
152
137
  if (!id) {
@@ -494,7 +479,6 @@ function priorRetroMessage(rememberContents: string[]) {
494
479
 
495
480
  describe("memoryRetrospectiveJob", () => {
496
481
  beforeEach(() => {
497
- watchdogEvents.length = 0;
498
482
  mockState = null;
499
483
  stateUpserts = [];
500
484
  lastRunAtBumps = [];
@@ -604,16 +588,6 @@ describe("memoryRetrospectiveJob", () => {
604
588
  expect(lastRunAtBumps).toHaveLength(0);
605
589
  expect(wakeCalls).toHaveLength(0);
606
590
  expect(forkCalls).toHaveLength(0);
607
- // Every job run emits exactly one outcome counter for the health chart.
608
- expect(
609
- watchdogEvents.filter((e) => e.checkName === "memory_retrospective_run"),
610
- ).toEqual([
611
- {
612
- checkName: "memory_retrospective_run",
613
- value: 1,
614
- detail: { outcome: "no_new_messages" },
615
- },
616
- ]);
617
591
  });
618
592
 
619
593
  test("assistant-only slice with the user-activity gate on: completed as a no-op, both pointers untouched", async () => {
@@ -642,15 +616,6 @@ describe("memoryRetrospectiveJob", () => {
642
616
  expect(lastRunAtBumps).toHaveLength(0);
643
617
  expect(wakeCalls).toHaveLength(0);
644
618
  expect(forkCalls).toHaveLength(0);
645
- expect(
646
- watchdogEvents.filter((e) => e.checkName === "memory_retrospective_run"),
647
- ).toEqual([
648
- {
649
- checkName: "memory_retrospective_run",
650
- value: 1,
651
- detail: { outcome: "no_user_activity" },
652
- },
653
- ]);
654
619
  });
655
620
 
656
621
  test("a user text row in the slice passes the user-activity gate", async () => {
@@ -828,17 +793,6 @@ describe("memoryRetrospectiveJob", () => {
828
793
  const outcome = await memoryRetrospectiveJob(makeJob(), stubConfig);
829
794
 
830
795
  expect(outcome.kind).toBe("wake_failed");
831
- // The outcome counter carries the wake-failure reason so a fleet-wide
832
- // spike is attributable (e.g. provider outage vs busy conversations).
833
- expect(
834
- watchdogEvents.filter((e) => e.checkName === "memory_retrospective_run"),
835
- ).toEqual([
836
- {
837
- checkName: "memory_retrospective_run",
838
- value: 1,
839
- detail: { outcome: "wake_failed", reason: "timeout" },
840
- },
841
- ]);
842
796
  if (outcome.kind === "wake_failed") {
843
797
  expect(outcome.reason).toBe("timeout");
844
798
  }
@@ -869,20 +823,6 @@ describe("memoryRetrospectiveJob", () => {
869
823
  // Retryable: cooldown bump only, orphan fork cleaned up.
870
824
  expect(lastRunAtBumps).toHaveLength(1);
871
825
  expect(deletedConversationIds).toEqual(["fork-conv-1"]);
872
- expect(
873
- watchdogEvents.filter((e) => e.checkName === "memory_retrospective_run"),
874
- ).toEqual([
875
- {
876
- checkName: "memory_retrospective_run",
877
- value: 1,
878
- detail: {
879
- outcome: "no_usable_output",
880
- // The failure reason names what was missing, so an operator reading
881
- // the job row can tell a lost write from an unfinished review.
882
- reason: "run committed neither a memory write nor a concluding reply",
883
- },
884
- },
885
- ]);
886
826
  });
887
827
 
888
828
  test("a run whose reply reads as a conclusion but that the provider cut short: no_usable_output, prior retrospective preserved", async () => {
@@ -1118,17 +1058,6 @@ describe("memoryRetrospectiveJob", () => {
1118
1058
  expect(stateUpserts).toHaveLength(1);
1119
1059
  expect(stateUpserts[0]!.lastProcessedMessageId).toBe("m3");
1120
1060
  expect(stateUpserts[0]!.rememberedLog).toEqual([]);
1121
- expect(
1122
- watchdogEvents.filter(
1123
- (e) => e.checkName === "memory_retrospective_run",
1124
- ),
1125
- ).toEqual([
1126
- {
1127
- checkName: "memory_retrospective_run",
1128
- value: 1,
1129
- detail: { outcome: "invoked", noFindings: true },
1130
- },
1131
- ]);
1132
1061
  },
1133
1062
  );
1134
1063
 
@@ -1309,17 +1238,6 @@ describe("memoryRetrospectiveJob", () => {
1309
1238
  expect(stateUpserts).toHaveLength(0);
1310
1239
  expect(lastRunAtBumps).toHaveLength(1);
1311
1240
  expect(deletedConversationIds).toEqual(["fork-conv-1"]);
1312
- // A thrown run still records an outcome counter (as "error") before the
1313
- // rethrow — exception-flavored outages must show in the health metric.
1314
- expect(
1315
- watchdogEvents.filter((e) => e.checkName === "memory_retrospective_run"),
1316
- ).toEqual([
1317
- {
1318
- checkName: "memory_retrospective_run",
1319
- value: 1,
1320
- detail: { outcome: "error", reason: "LLM provider 503" },
1321
- },
1322
- ]);
1323
1241
  });
1324
1242
 
1325
1243
  test("missing conversationId payload: no_new_messages, no side effects", async () => {
@@ -35,21 +35,6 @@ type ConversationStub = {
35
35
  } | null;
36
36
  let conversationOverrides: Record<string, ConversationStub> = {};
37
37
 
38
- const watchdogEvents: Array<{
39
- checkName: string;
40
- value?: number | null;
41
- detail?: Record<string, unknown> | null;
42
- }> = [];
43
- mock.module("../../../../telemetry/watchdog-events-store.js", () => ({
44
- recordWatchdogEvent: (record: {
45
- checkName: string;
46
- value?: number | null;
47
- detail?: Record<string, unknown> | null;
48
- }) => {
49
- watchdogEvents.push(record);
50
- },
51
- }));
52
-
53
38
  mock.module("../../../../persistence/conversation-crud.js", () => ({
54
39
  getMessagesAfter: (_id: string, _afterId: string | null) => [],
55
40
  getMessages: (_id: string) => [],
@@ -171,7 +156,6 @@ function makeInsertJob(payload: Record<string, unknown>): MemoryJob {
171
156
 
172
157
  describe("memory-retrospective skill card", () => {
173
158
  beforeEach(() => {
174
- watchdogEvents.length = 0;
175
159
  addMessageCalls = [];
176
160
  addMessageThrowsFor = null;
177
161
  addMessageDeduplicatesFor = null;
@@ -334,31 +318,6 @@ describe("memory-retrospective skill card", () => {
334
318
  expect(publishedConversationIds).toHaveLength(0);
335
319
  });
336
320
 
337
- test("a delivered card emits the skill_card_delivered counter; a dedup does not", async () => {
338
- await insertSkillCardMessage("conv-source", "conv-run-telemetry", [
339
- { skillId: "s-1", name: "Skill One", description: "d1" },
340
- { skillId: "s-2", name: "Skill Two", description: "d2" },
341
- ]);
342
- expect(
343
- watchdogEvents.filter((e) => e.checkName === "skill_card_delivered"),
344
- ).toEqual([
345
- {
346
- checkName: "skill_card_delivered",
347
- value: 2,
348
- detail: { skill_count: 2 },
349
- },
350
- ]);
351
-
352
- // Retried delivery for the same run dedups on clientMessageId — the
353
- // counter must not fire again.
354
- await insertSkillCardMessage("conv-source", "conv-run-telemetry", [
355
- { skillId: "s-1", name: "Skill One", description: "d1" },
356
- ]);
357
- expect(
358
- watchdogEvents.filter((e) => e.checkName === "skill_card_delivered"),
359
- ).toHaveLength(1);
360
- });
361
-
362
321
  test("insert is best-effort: a persistence failure never throws", async () => {
363
322
  addMessageThrowsFor = "src-conv-9";
364
323
 
@@ -193,7 +193,6 @@ interface TierKeyExemption {
193
193
  * home for raw tier-predicate reads, and it compares v2 against v3.
194
194
  * - `config/loader.ts` (v3) — seeds/normalizes the persisted `memory.v3`
195
195
  * shape.
196
- * - `telemetry/config-setting-snapshot.ts` (both) — reports both tier keys
197
196
  * as-is.
198
197
  * - the named migrations: append-only history that rewrites or reads the
199
198
  * historical tier keys it was written for. Listed per file, not per
@@ -240,7 +239,6 @@ const TIER_KEY_READ_ALLOWLIST: readonly TierKeyExemption[] = [
240
239
  },
241
240
  { path: "src/plugins/defaults/memory/v2/", keys: ["v2"] },
242
241
  { path: "src/plugins/defaults/memory/v3/", keys: ["v3"] },
243
- { path: "src/telemetry/config-setting-snapshot.ts", keys: ["v2", "v3"] },
244
242
  {
245
243
  path: "src/workspace/migrations/085-memory-v2-bm25-b-reembed-disabled-v2-pages.ts",
246
244
  keys: ["v2"],
@@ -80,7 +80,6 @@ import {
80
80
  import { resolveUserSlug } from "../../../prompts/persona-resolver.js";
81
81
  import type { SystemPromptPersonaOverride } from "../../../prompts/system-prompt.js";
82
82
  import { wakeAgentForOpportunity } from "../../../runtime/agent-wake.js";
83
- import { recordWatchdogEvent } from "../../../telemetry/watchdog-events-store.js";
84
83
  import { findMostRecentRetrospectiveFor } from "./find-most-recent-retrospective-for.js";
85
84
  import { getLogger } from "./logging.js";
86
85
  import {
@@ -134,9 +133,6 @@ const FOLLOW_UP_JOB_TYPES: readonly MemoryJobType[] = [] as const;
134
133
  */
135
134
  export const STALE_SOURCE_PROCESSING_OVERRIDE_MS = 6 * 60 * 60 * 1000;
136
135
 
137
- /** Watchdog check_name for the per-run retrospective outcome counter. */
138
- const MEMORY_RETROSPECTIVE_RUN_CHECK_NAME = "memory_retrospective_run";
139
-
140
136
  /**
141
137
  * The agent-loop exit that means the MODEL ended the run: it answered without
142
138
  * asking for another tool. Under every other exit something ended the run for
@@ -191,55 +187,10 @@ export async function memoryRetrospectiveJob(
191
187
  return { kind: "disabled" };
192
188
  }
193
189
 
194
- // Central health counter (admin analytics groups on the watchdog
195
- // check_name): one event per run with its outcome kind. A run that
196
- // throws records outcome "error" before the exception continues to the
197
- // jobs worker's retry machinery, so a fleet-wide spike in
198
- // `wake_failed`/`error` (e.g. a provider outage on the retrospective's
199
- // resolved model) is visible without log access. The emitter itself
200
- // never throws — the run's outcome must reach the jobs worker
201
- // regardless.
202
- const emitRunOutcome = (
203
- outcome: string,
204
- detail?: { reason?: string; noFindings?: boolean },
205
- ): void => {
206
- try {
207
- recordWatchdogEvent({
208
- checkName: MEMORY_RETROSPECTIVE_RUN_CHECK_NAME,
209
- value: 1,
210
- detail: {
211
- outcome,
212
- ...(detail?.reason ? { reason: detail.reason.slice(0, 200) } : {}),
213
- ...(detail?.noFindings !== undefined
214
- ? { noFindings: detail.noFindings }
215
- : {}),
216
- },
217
- });
218
- } catch {
219
- // recordWatchdogEvent already no-ops on opt-out and a missing
220
- // telemetry DB; anything past that is not worth surfacing here.
221
- }
222
- };
223
-
224
- let outcome: MemoryRetrospectiveOutcome;
225
- try {
226
- outcome = await runForkBasedRetrospective(sourceConversationId, config, {
227
- enforceSweepLookback: true,
228
- enforceUserActivityGate: true,
229
- });
230
- } catch (err) {
231
- emitRunOutcome("error", {
232
- reason: err instanceof Error ? err.message : String(err),
233
- });
234
- throw err;
235
- }
236
- emitRunOutcome(outcome.kind, {
237
- ...(outcome.kind === "wake_failed" || outcome.kind === "no_usable_output"
238
- ? { reason: outcome.reason }
239
- : {}),
240
- ...(outcome.kind === "invoked" ? { noFindings: outcome.noFindings } : {}),
190
+ return await runForkBasedRetrospective(sourceConversationId, config, {
191
+ enforceSweepLookback: true,
192
+ enforceUserActivityGate: true,
241
193
  });
242
- return outcome;
243
194
  }
244
195
 
245
196
  // ---------------------------------------------------------------------------