@mycadet/assistant 0.12.9 → 0.12.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (658) hide show
  1. package/Dockerfile +0 -8
  2. package/eslint-rules/__tests__/cli-no-daemon-internals.test.ts +1 -1
  3. package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/__tests__/ingress.test.ts +8 -8
  4. package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/ingress.ts +1 -1
  5. package/node_modules/@mycadet/ces-client/src/http-credentials.ts +18 -1
  6. package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/__tests__/ingress.test.ts +8 -8
  7. package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/ingress.ts +1 -1
  8. package/node_modules/@mycadet/service-contracts/src/__tests__/ingress.test.ts +8 -8
  9. package/node_modules/@mycadet/service-contracts/src/ingress.ts +1 -1
  10. package/openapi.yaml +62 -910
  11. package/package.json +3 -7
  12. package/scripts/build-test-fixtures.ts +1 -1
  13. package/scripts/generate-openapi.ts +22 -6
  14. package/scripts/postinstall.ts +4 -10
  15. package/scripts/run-tests.ts +0 -21
  16. package/src/__tests__/adaptive-thinking-repair.test.ts +19 -57
  17. package/src/__tests__/agent-loop.test.ts +0 -76
  18. package/src/__tests__/anthropic-provider.test.ts +6 -6
  19. package/src/__tests__/assert-not-live-db.ts +1 -1
  20. package/src/__tests__/assistant-id-boundary-guard.test.ts +3 -3
  21. package/src/__tests__/attachments-store-heic-normalize.test.ts +1 -1
  22. package/src/__tests__/attachments-store.test.ts +1 -1
  23. package/src/__tests__/audit-log-rotation.test.ts +1 -1
  24. package/src/__tests__/btw-routes.test.ts +1 -1
  25. package/src/__tests__/byok-default-profile-ensure.test.ts +21 -27
  26. package/src/__tests__/call-conversation-messages.test.ts +0 -5
  27. package/src/__tests__/call-recovery.test.ts +2 -7
  28. package/src/__tests__/call-routes-http.test.ts +0 -12
  29. package/src/__tests__/call-store.test.ts +2 -7
  30. package/src/__tests__/catalog-files.test.ts +7 -5
  31. package/src/__tests__/checker.test.ts +1 -1
  32. package/src/__tests__/cli-memory-v2-reembed-skills.test.ts +4 -4
  33. package/src/__tests__/cloud-client-verify-credential.test.ts +0 -4
  34. package/src/__tests__/cloud-credential-catalog-cli.test.ts +14 -14
  35. package/src/__tests__/cloud-profile-guard.test.ts +87 -404
  36. package/src/__tests__/compaction-events.test.ts +2 -2
  37. package/src/__tests__/config-loader-backfill.test.ts +74 -163
  38. package/src/__tests__/config-loader-cloud-defaults.test.ts +11 -11
  39. package/src/__tests__/config-loader-corrupt.test.ts +10 -10
  40. package/src/__tests__/config-loader-quarantine-notice.test.ts +7 -7
  41. package/src/__tests__/config-loader-validation-reset-notice.test.ts +11 -11
  42. package/src/__tests__/config-schema.test.ts +26 -27
  43. package/src/__tests__/config-set-route.test.ts +2 -6
  44. package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +28 -300
  45. package/src/__tests__/conversation-agent-loop-overflow.test.ts +39 -246
  46. package/src/__tests__/conversation-agent-loop.test.ts +2 -58
  47. package/src/__tests__/conversation-clear-safety.test.ts +0 -30
  48. package/src/__tests__/conversation-inference-profile-route.test.ts +1 -1
  49. package/src/__tests__/conversation-queue.test.ts +1 -1
  50. package/src/__tests__/conversation-runtime-assembly.test.ts +1 -1
  51. package/src/__tests__/conversation-skill-tools.test.ts +4 -444
  52. package/src/__tests__/conversation-slash-commands.test.ts +1 -1
  53. package/src/__tests__/conversation-store.test.ts +1 -84
  54. package/src/__tests__/conversation-surface-state.test.ts +0 -16
  55. package/src/__tests__/credential-health-service.test.ts +14 -1
  56. package/src/__tests__/credential-record-retire.test.ts +1 -1
  57. package/src/__tests__/credential-record-write-through.test.ts +1 -1
  58. package/src/__tests__/credential-security-invariants.test.ts +0 -145
  59. package/src/__tests__/custom-profile-ensure.test.ts +1 -1
  60. package/src/__tests__/default-profile-catalog-fallback.test.ts +5 -15
  61. package/src/__tests__/deterministic-verification-control-plane.test.ts +0 -2
  62. package/src/__tests__/dictation-profile-store.test.ts +6 -6
  63. package/src/__tests__/disk-usage.test.ts +28 -164
  64. package/src/__tests__/docker-signing-key-bootstrap.test.ts +1 -1
  65. package/src/__tests__/embedding-cloud-proxy-selection.test.ts +1 -1
  66. package/src/__tests__/emit-event-signal.test.ts +1 -1
  67. package/src/__tests__/gateway-client-cloud-outbound.test.ts +3 -3
  68. package/src/__tests__/gateway-only-enforcement.test.ts +1 -1
  69. package/src/__tests__/guardian-dispatch.test.ts +0 -13
  70. package/src/__tests__/helpers/seed-app.ts +1 -1
  71. package/src/__tests__/host-cu-routes-targeted.test.ts +1 -1
  72. package/src/__tests__/host-shell-tool.test.ts +1 -1
  73. package/src/__tests__/identity-routes.test.ts +1 -1
  74. package/src/__tests__/inference-profile-session-handler.test.ts +1 -1
  75. package/src/__tests__/inference-profile-session-ipc.test.ts +1 -1
  76. package/src/__tests__/injector-chain.test.ts +1 -1
  77. package/src/__tests__/injector-config-quarantine-notice.test.ts +1 -1
  78. package/src/__tests__/injector-config-validation-reset-notice.test.ts +1 -1
  79. package/src/__tests__/injector-pkb-v2-silenced.test.ts +1 -1
  80. package/src/__tests__/{platform.test.ts → layout.test.ts} +1 -1
  81. package/src/__tests__/list-all-apps.test.ts +1 -1
  82. package/src/__tests__/live-workspace-guard.test.ts +2 -2
  83. package/src/__tests__/llm-resolver-override-or-default.test.ts +5 -6
  84. package/src/__tests__/llm-resolver.test.ts +7 -7
  85. package/src/__tests__/llm-schema-fallback-profile.test.ts +9 -10
  86. package/src/__tests__/llm-usage-store.test.ts +0 -495
  87. package/src/__tests__/log-export-routes.test.ts +1 -1
  88. package/src/__tests__/mcp-config-secret-boundary.test.ts +12 -53
  89. package/src/__tests__/mcp-list-plugin-servers.test.ts +1 -1
  90. package/src/__tests__/memory-config-file-parity.test.ts +1 -1
  91. package/src/__tests__/memory-v2-static-injector.test.ts +1 -1
  92. package/src/__tests__/messages-read-boundary-guard.test.ts +0 -2
  93. package/src/__tests__/notification-guardian-path.test.ts +0 -7
  94. package/src/__tests__/onboarding-persona-write.test.ts +1 -1
  95. package/src/__tests__/openai-provider.test.ts +8 -8
  96. package/src/__tests__/path-policy.test.ts +1 -1
  97. package/src/__tests__/persona-resolver.test.ts +1 -1
  98. package/src/__tests__/plugin-app-serve-routes.test.ts +1 -1
  99. package/src/__tests__/plugin-effective-enabled-set.test.ts +1 -1
  100. package/src/__tests__/plugin-import-boundary-guard.test.ts +4 -6
  101. package/src/__tests__/plugin-import-boundary-reverse-guard.test.ts +0 -3
  102. package/src/__tests__/provider-cloud-proxy-integration.test.ts +1 -5
  103. package/src/__tests__/provider-connections-backfill.test.ts +10 -10
  104. package/src/__tests__/prune-old-conversations-job.test.ts +6 -31
  105. package/src/__tests__/resolve-app.test.ts +1 -1
  106. package/src/__tests__/run-due-schedules.test.ts +1 -1
  107. package/src/__tests__/scaffold-managed-skill-tool.test.ts +0 -53
  108. package/src/__tests__/schedule-routes.test.ts +1 -1
  109. package/src/__tests__/schedule-store.test.ts +1 -1
  110. package/src/__tests__/secret-routes-cloud-proxy.test.ts +1 -1
  111. package/src/__tests__/skill-load-plugin-scope.test.ts +1 -1
  112. package/src/__tests__/surface-completion-compaction-boundary.test.ts +1 -1
  113. package/src/__tests__/tool-approval-handler.test.ts +1 -1
  114. package/src/__tests__/tool-audit.test.ts +5 -235
  115. package/src/__tests__/tool-executor-lifecycle-events.test.ts +54 -114
  116. package/src/__tests__/tools-get-route.test.ts +1 -1
  117. package/src/__tests__/turn-outcome-read.test.ts +1 -1
  118. package/src/__tests__/twilio-routes.test.ts +0 -1
  119. package/src/__tests__/usage-attribution.test.ts +0 -31
  120. package/src/__tests__/verification-control-plane-policy.test.ts +3 -10
  121. package/src/__tests__/visible-app-context.test.ts +1 -1
  122. package/src/__tests__/voice-ingress-preflight.test.ts +1 -1
  123. package/src/__tests__/workspace-git-service.test.ts +1 -1
  124. package/src/__tests__/workspace-greetings.test.ts +1 -1
  125. package/src/acp/__tests__/helpers/acp-config-stub.ts +1 -1
  126. package/src/activation/progress-store.ts +1 -1
  127. package/src/activation/turn-hooks.ts +1 -1
  128. package/src/agent/loop.ts +0 -51
  129. package/src/apps/app-store.ts +1 -1
  130. package/src/avatar/__tests__/avatar-store.test.ts +2 -172
  131. package/src/avatar/accent-backfill.ts +1 -1
  132. package/src/avatar/avatar-manifest.ts +1 -1
  133. package/src/avatar/avatar-store.ts +10 -69
  134. package/src/avatar/ensure-raster.ts +1 -1
  135. package/src/avatar/identity-avatar.ts +1 -1
  136. package/src/avatar/sync-avatar.ts +1 -1
  137. package/src/avatar/traits-png-sync.ts +1 -1
  138. package/src/bundler/compiler-tools.ts +1 -1
  139. package/src/bundler/package-resolver.ts +1 -1
  140. package/src/calls/__tests__/call-controller.test.ts +25 -27
  141. package/src/calls/active-call-lease.ts +1 -1
  142. package/src/calls/call-controller.ts +3 -3
  143. package/src/calls/call-domain.ts +4 -8
  144. package/src/calls/call-store.ts +2 -76
  145. package/src/calls/resolve-call-tts-provider.ts +3 -3
  146. package/src/calls/twilio-config.ts +3 -3
  147. package/src/calls/twilio-rest.ts +2 -2
  148. package/src/calls/voice-ingress-preflight.ts +2 -2
  149. package/src/cli/bundled-modules.ts +0 -2
  150. package/src/cli/commands/__tests__/apps.test.ts +1 -1
  151. package/src/cli/commands/__tests__/plugins.test.ts +9 -66
  152. package/src/cli/commands/__tests__/ps.test.ts +67 -0
  153. package/src/cli/commands/auth.help.ts +2 -2
  154. package/src/cli/commands/avatar.ts +1 -1
  155. package/src/cli/commands/changelog.ts +1 -1
  156. package/src/cli/commands/cloud/__tests__/subscription.test.ts +2 -2
  157. package/src/cli/commands/cloud/index.help.ts +1 -1
  158. package/src/cli/commands/cloud/index.ts +2 -2
  159. package/src/cli/commands/db/refresh.ts +1 -1
  160. package/src/cli/commands/db/repair-step-conversation-backfill.ts +1 -1
  161. package/src/cli/commands/db/repair.ts +1 -1
  162. package/src/cli/commands/db/status.ts +1 -1
  163. package/src/cli/commands/inference-profiles.ts +1 -12
  164. package/src/cli/commands/memory/__tests__/memory-v3.test.ts +1 -116
  165. package/src/cli/commands/memory/index.help.ts +1 -43
  166. package/src/cli/commands/memory/memory-v3.ts +0 -64
  167. package/src/cli/commands/plugins.ts +54 -205
  168. package/src/cli/commands/ps.ts +5 -2
  169. package/src/cli/commands/status.ts +1 -1
  170. package/src/cli/index.help.ts +0 -2
  171. package/src/cli/lib/__tests__/inspect-plugin.test.ts +36 -66
  172. package/src/cli/lib/__tests__/install-from-cloud.test.ts +1 -1
  173. package/src/cli/lib/__tests__/install-from-github.test.ts +41 -117
  174. package/src/cli/lib/__tests__/plugin-catalog-cache.test.ts +2 -185
  175. package/src/cli/lib/__tests__/plugin-catalog-resolve.test.ts +36 -66
  176. package/src/cli/lib/__tests__/plugin-catalog-visibility.test.ts +4 -6
  177. package/src/cli/lib/__tests__/plugin-details.test.ts +113 -96
  178. package/src/cli/lib/__tests__/search-plugins.test.ts +9 -16
  179. package/src/cli/lib/__tests__/uninstall-plugin.test.ts +1 -1
  180. package/src/cli/lib/__tests__/upgrade-plugin.test.ts +38 -15
  181. package/src/cli/lib/diff-plugin.ts +1 -1
  182. package/src/cli/lib/inspect-plugin.ts +13 -97
  183. package/src/cli/lib/install-from-cloud.ts +1 -1
  184. package/src/cli/lib/install-from-github.ts +75 -154
  185. package/src/cli/lib/install-plugin-dependencies.ts +1 -1
  186. package/src/cli/lib/list-installed-plugins.ts +1 -1
  187. package/src/cli/lib/open-browser.ts +1 -1
  188. package/src/cli/lib/plugin-catalog-cache.ts +8 -51
  189. package/src/cli/lib/plugin-catalog-resolve.ts +3 -22
  190. package/src/cli/lib/plugin-details.ts +5 -27
  191. package/src/cli/lib/plugin-marketplace.ts +18 -266
  192. package/src/cli/lib/search-plugins.ts +23 -43
  193. package/src/cli/lib/toggle-plugin.ts +1 -1
  194. package/src/cli/lib/uninstall-plugin.ts +1 -1
  195. package/src/cli/lib/upgrade-plugin.ts +3 -49
  196. package/src/cli/program.ts +1 -3
  197. package/src/cli.ts +1 -1
  198. package/src/cloud/client.ts +0 -6
  199. package/src/cloud/consent-cache.test.ts +22 -201
  200. package/src/cloud/consent-cache.ts +16 -111
  201. package/src/cloud/sync-identity.ts +1 -1
  202. package/src/config/__tests__/chat-settings.test.ts +1 -1
  203. package/src/config/__tests__/cloud-identity.test.ts +15 -2
  204. package/src/config/__tests__/default-plugin-skill-discovery.test.ts +1 -1
  205. package/src/config/__tests__/default-profile-catalog.test.ts +12 -51
  206. package/src/config/__tests__/deployment-context-defaults.test.ts +13 -13
  207. package/src/config/__tests__/loader-callsite-strip-fallback.test.ts +4 -4
  208. package/src/config/__tests__/loader-last-known-good.test.ts +9 -9
  209. package/src/config/__tests__/loader-sparse-array-cleanup.test.ts +7 -7
  210. package/src/config/__tests__/plugin-resident-skill-discovery.test.ts +1 -1
  211. package/src/config/__tests__/profile-materialization.test.ts +2 -4
  212. package/src/config/__tests__/sync-gated-profiles.test.ts +1 -106
  213. package/src/config/acp-agent-write.ts +1 -1
  214. package/src/config/bundled-skills/settings/tools/open-system-settings.test.ts +1 -1
  215. package/src/config/bundled-skills/settings/tools/open-system-settings.ts +1 -1
  216. package/src/config/call-site-defaults.ts +0 -6
  217. package/src/config/cloud-identity.ts +12 -5
  218. package/src/config/composer-preferences.ts +1 -1
  219. package/src/config/default-profile-catalog.ts +8 -75
  220. package/src/config/default-profile-names.ts +2 -25
  221. package/src/config/env-registry.ts +1 -14
  222. package/src/config/env.ts +8 -6
  223. package/src/config/llm-resolver.ts +1 -2
  224. package/src/config/loader.ts +13 -17
  225. package/src/config/profile-materialization.ts +1 -1
  226. package/src/config/schema.ts +1 -7
  227. package/src/config/schemas/call-site-catalog.ts +0 -7
  228. package/src/config/schemas/llm.ts +25 -32
  229. package/src/config/seed-inference-profiles.ts +16 -17
  230. package/src/config/skills.ts +2 -2
  231. package/src/config/sync-gated-profiles.ts +6 -24
  232. package/src/credential-health/credential-health-service.ts +10 -3
  233. package/src/daemon/approval-generators.ts +3 -3
  234. package/src/daemon/config-watcher.ts +2 -2
  235. package/src/daemon/conversation-agent-loop-handlers.ts +0 -18
  236. package/src/daemon/conversation-agent-loop.ts +6 -97
  237. package/src/daemon/conversation-process.ts +1 -1
  238. package/src/daemon/conversation-skill-tools.ts +4 -72
  239. package/src/daemon/conversation-store.ts +1 -1
  240. package/src/daemon/conversation-surface-state.ts +0 -33
  241. package/src/daemon/conversation-surfaces.ts +1 -86
  242. package/src/daemon/conversation-tool-setup.test.ts +1 -1
  243. package/src/daemon/conversation-tool-setup.ts +0 -23
  244. package/src/daemon/conversation.ts +3 -5
  245. package/src/daemon/daemon-control.ts +3 -3
  246. package/src/daemon/dictation-profile-store.ts +3 -3
  247. package/src/daemon/event-loop-watchdog.test.ts +2 -198
  248. package/src/daemon/event-loop-watchdog.ts +0 -185
  249. package/src/daemon/external-plugins-bootstrap.ts +1 -1
  250. package/src/daemon/first-greeting.ts +1 -1
  251. package/src/daemon/handlers/skills.ts +1 -1
  252. package/src/daemon/host-app-control-proxy.ts +1 -1
  253. package/src/daemon/host-cu-proxy.ts +2 -2
  254. package/src/daemon/identity-helpers.ts +1 -1
  255. package/src/daemon/lifecycle.ts +11 -15
  256. package/src/daemon/main.ts +1 -1
  257. package/src/daemon/now-scratchpad.ts +1 -1
  258. package/src/daemon/process-message.ts +4 -4
  259. package/src/daemon/profiler-run-store.ts +2 -2
  260. package/src/daemon/providers-setup.ts +2 -2
  261. package/src/daemon/shutdown-handlers.ts +0 -10
  262. package/src/daemon/sqlite-corruption-watchdog.test.ts +2 -142
  263. package/src/daemon/sqlite-corruption-watchdog.ts +17 -81
  264. package/src/daemon/tool-side-effects.ts +1 -1
  265. package/src/desktop/desktop-session-manager.ts +1 -1
  266. package/src/desktop/desktop-wallpaper-renderer.ts +1 -1
  267. package/src/heartbeat/heartbeat-service.ts +1 -1
  268. package/src/home/feed-writer.ts +1 -1
  269. package/src/home/home-greeting-cache.ts +1 -1
  270. package/src/home/relationship-state-writer.ts +2 -2
  271. package/src/hooks/__tests__/hook-live-reload.test.ts +1 -1
  272. package/src/hooks/hook-loader.ts +2 -2
  273. package/src/inbound/__tests__/oauth-callback-url.test.ts +2 -2
  274. package/src/inbound/oauth-callback-url.ts +3 -3
  275. package/src/ipc/__tests__/attachment-ipc.test.ts +1 -1
  276. package/src/ipc/socket-path.ts +1 -1
  277. package/src/live-voice/__tests__/live-voice-archive.test.ts +1 -1
  278. package/src/live-voice/__tests__/live-voice-vad.test.ts +1 -1
  279. package/src/live-voice/live-voice-session.ts +3 -66
  280. package/src/mcp/__tests__/effective-config.test.ts +1 -1
  281. package/src/mcp/__tests__/mcp-oauth-client-registration.test.ts +2 -2
  282. package/src/mcp/__tests__/mcp-oauth-provider.test.ts +2 -3
  283. package/src/mcp/__tests__/reload-signal-emission.test.ts +1 -1
  284. package/src/mcp/__tests__/reload-signal.test.ts +1 -1
  285. package/src/mcp/__tests__/workspace-mcp-config.test.ts +19 -21
  286. package/src/mcp/reload-signal.ts +1 -1
  287. package/src/mcp/workspace-mcp-config.ts +1 -23
  288. package/src/messaging/draft-store.ts +1 -1
  289. package/src/monitoring/__tests__/active-conversations.test.ts +1 -1
  290. package/src/monitoring/__tests__/page-cache.test.ts +1 -1
  291. package/src/monitoring/__tests__/stall-capture.test.ts +1 -1
  292. package/src/monitoring/__tests__/workspace-git-heartbeat.test.ts +1 -1
  293. package/src/monitoring/active-conversations.ts +1 -1
  294. package/src/monitoring/control.ts +1 -1
  295. package/src/monitoring/daemon-boot-time.ts +1 -1
  296. package/src/monitoring/daemon-heartbeat.ts +1 -1
  297. package/src/monitoring/page-cache.ts +1 -1
  298. package/src/monitoring/plugin-auto-update.ts +1 -7
  299. package/src/monitoring/plugin-source-watch.ts +1 -1
  300. package/src/monitoring/recovery/db.ts +1 -1
  301. package/src/monitoring/recovery/inflight-content.ts +1 -1
  302. package/src/monitoring/resource-sampler.ts +3 -14
  303. package/src/monitoring/stall-capture.ts +1 -1
  304. package/src/monitoring/worker.ts +9 -76
  305. package/src/monitoring/workspace-git-heartbeat.ts +1 -1
  306. package/src/oauth/connect-orchestrator.ts +4 -4
  307. package/src/permissions/checker.ts +1 -1
  308. package/src/permissions/workspace-policy.ts +1 -1
  309. package/src/persistence/__tests__/main-db-readonly-probe.ts +27 -52
  310. package/src/persistence/__tests__/message-content-file.test.ts +1 -1
  311. package/src/persistence/__tests__/slow-sync-log.test.ts +0 -2
  312. package/src/persistence/attachments-store.ts +1 -1
  313. package/src/persistence/conversation-crud.ts +1 -38
  314. package/src/persistence/conversation-directories.ts +1 -1
  315. package/src/persistence/conversation-types.ts +0 -8
  316. package/src/persistence/db-async-query.ts +1 -1
  317. package/src/persistence/db-connection.ts +11 -1
  318. package/src/persistence/db-init.ts +1 -1
  319. package/src/persistence/db-maintenance.ts +1 -1
  320. package/src/persistence/embeddings/__tests__/embedding-local-lifecycle.test.ts +1 -1
  321. package/src/persistence/embeddings/embedding-local.ts +4 -4
  322. package/src/persistence/embeddings/embedding-runtime-manager.ts +1 -1
  323. package/src/persistence/embeddings/qdrant-client.ts +1 -1
  324. package/src/persistence/embeddings/qdrant-manager.ts +1 -1
  325. package/src/persistence/job-handlers/__tests__/message-lexical-backfill.test.ts +1 -1
  326. package/src/persistence/job-handlers/__tests__/message-lexical-enqueue.test.ts +1 -1
  327. package/src/persistence/job-handlers/cleanup.ts +8 -17
  328. package/src/persistence/llm-usage-store.ts +2 -229
  329. package/src/persistence/message-content-file.ts +1 -1
  330. package/src/persistence/migrations/209-strip-thinking-from-consolidated.ts +1 -1
  331. package/src/persistence/migrations/222-strip-placeholder-sentinels-from-messages.ts +1 -1
  332. package/src/persistence/migrations/296-rewrite-balanced-economy-profile-pins.test.ts +1 -1
  333. package/src/persistence/migrations/306-rewrite-frontier-profile-pins.test.ts +1 -1
  334. package/src/persistence/migrations/329-move-onboarding-events-to-telemetry-db.test.ts +13 -0
  335. package/src/persistence/migrations/330-move-auth-fallback-events-to-telemetry-db.test.ts +13 -0
  336. package/src/persistence/migrations/331-move-lifecycle-events-to-telemetry-db.test.ts +13 -0
  337. package/src/persistence/migrations/332-move-skill-loaded-events-to-telemetry-db.test.ts +13 -0
  338. package/src/persistence/migrations/333-create-telemetry-events-table.test.ts +7 -4
  339. package/src/persistence/migrations/334-backfill-telemetry-events-outbox.test.ts +13 -0
  340. package/src/persistence/migrations/387-drop-telemetry-tables.ts +51 -0
  341. package/src/persistence/migrations/__tests__/327-create-flush-checkpoints.test.ts +9 -1
  342. package/src/persistence/migrations/__tests__/387-drop-telemetry-tables.test.ts +79 -0
  343. package/src/persistence/migrations/helpers/relocation.ts +1 -1
  344. package/src/persistence/migrations/run-migrations.ts +1 -1
  345. package/src/persistence/migrations/validate-migration-state.ts +1 -1
  346. package/src/persistence/raw-query.ts +1 -29
  347. package/src/persistence/slow-sync-log.ts +0 -23
  348. package/src/persistence/steps.ts +2 -0
  349. package/src/{telemetry → persistence}/tool-audit.ts +6 -121
  350. package/src/plugin-api/index.ts +1 -1
  351. package/src/plugin-api/plugin-name-env.ts +1 -1
  352. package/src/plugins/__tests__/installed-plugin-dirs.test.ts +1 -1
  353. package/src/plugins/collect-source-versions.ts +1 -1
  354. package/src/plugins/defaults/channel/package.json +1 -1
  355. package/src/plugins/defaults/cloud-hosted/package.json +1 -1
  356. package/src/plugins/defaults/compaction/package.json +1 -1
  357. package/src/plugins/defaults/documents/package.json +1 -1
  358. package/src/plugins/defaults/empty-response/package.json +1 -1
  359. package/src/plugins/defaults/exploration-drift/package.json +1 -1
  360. package/src/plugins/defaults/image-fallback/package.json +1 -1
  361. package/src/plugins/defaults/image-recovery/package.json +1 -1
  362. package/src/plugins/defaults/max-tokens-continue/package.json +1 -1
  363. package/src/plugins/defaults/memory/__tests__/db-async-query.test.ts +1 -1
  364. package/src/plugins/defaults/memory/__tests__/db-maintenance.test.ts +1 -1
  365. package/src/plugins/defaults/memory/__tests__/memory-retrospective-job.test.ts +0 -82
  366. package/src/plugins/defaults/memory/__tests__/memory-retrospective-skill-card.test.ts +0 -41
  367. package/src/plugins/defaults/memory/__tests__/memory-tier-boundary-guard.test.ts +0 -2
  368. package/src/plugins/defaults/memory/memory-retrospective-job.ts +3 -52
  369. package/src/plugins/defaults/memory/memory-retrospective-skill-card.ts +0 -18
  370. package/src/plugins/defaults/memory/package.json +1 -1
  371. package/src/plugins/defaults/memory/paths.ts +4 -4
  372. package/src/plugins/defaults/memory/src/__tests__/memory-worker-routes.test.ts +1 -1
  373. package/src/plugins/defaults/memory/src/memory-v2-routes.ts +5 -5
  374. package/src/plugins/defaults/memory/src/memory-v3-routes.ts +0 -207
  375. package/src/plugins/defaults/memory/src/memory-worker-routes.ts +1 -1
  376. package/src/plugins/defaults/memory/startup.ts +1 -22
  377. package/src/plugins/defaults/memory/v3/__tests__/orchestrate.test.ts +2 -253
  378. package/src/plugins/defaults/memory/v3/orchestrate.ts +5 -129
  379. package/src/plugins/defaults/memory/worker-control.ts +1 -1
  380. package/src/plugins/defaults/memory/worker.ts +2 -2
  381. package/src/plugins/defaults/session/package.json +1 -1
  382. package/src/plugins/defaults/surface-completion-nudge/package.json +1 -1
  383. package/src/plugins/defaults/task-progress/package.json +1 -1
  384. package/src/plugins/defaults/task-progress-nudge/package.json +1 -1
  385. package/src/plugins/defaults/title-generate/package.json +1 -1
  386. package/src/plugins/defaults/tool-error/package.json +1 -1
  387. package/src/plugins/defaults/tool-result-truncate/package.json +1 -1
  388. package/src/plugins/defaults/turn-context/package.json +1 -1
  389. package/src/plugins/defaults/workspace/injectors.ts +1 -1
  390. package/src/plugins/defaults/workspace/package.json +1 -1
  391. package/src/plugins/disabled-state.ts +1 -1
  392. package/src/plugins/ensure-plugin-api-shim.ts +1 -1
  393. package/src/plugins/ensure-shared-dep-links.ts +1 -1
  394. package/src/plugins/installed-plugin-dirs.ts +1 -1
  395. package/src/plugins/mcp-servers.ts +7 -9
  396. package/src/plugins/mtime-cache.ts +2 -2
  397. package/src/plugins/source-versions.ts +1 -1
  398. package/src/prompts/bootstrap-cleanup.ts +1 -1
  399. package/src/prompts/persona-resolver.ts +1 -1
  400. package/src/prompts/sections.ts +2 -2
  401. package/src/prompts/system-prompt.ts +10 -42
  402. package/src/prompts/templates/BOOTSTRAP-ACTIVATION-RAIL.md +0 -37
  403. package/src/providers/__tests__/cadet-connection-routing.test.ts +2 -2
  404. package/src/providers/cadet/client.ts +1 -1
  405. package/src/providers/inference/__tests__/base-url-route-validation.test.ts +1 -1
  406. package/src/providers/inference/adapter-factory.ts +1 -1
  407. package/src/providers/inference/backfill.ts +3 -10
  408. package/src/providers/inference/profile-probe.ts +1 -1
  409. package/src/providers/retry.ts +0 -2
  410. package/src/providers/types.ts +0 -7
  411. package/src/providers/usage-tracking.ts +1 -1
  412. package/src/routes/__tests__/route-host.test.ts +1 -1
  413. package/src/routes/control.ts +1 -1
  414. package/src/routes/route-host-client.ts +1 -1
  415. package/src/routes/worker.ts +2 -2
  416. package/src/runtime/agent-wake.ts +1 -1
  417. package/src/runtime/assistant-stream-state.ts +1 -1
  418. package/src/runtime/auth/token-service.ts +1 -1
  419. package/src/runtime/background-job-runner.ts +1 -1
  420. package/src/runtime/middleware/twilio-validation.ts +2 -2
  421. package/src/runtime/routes/__tests__/app-pin-routes.test.ts +1 -1
  422. package/src/runtime/routes/__tests__/apps-refresh-route.test.ts +1 -1
  423. package/src/runtime/routes/__tests__/avatar-state-routes.test.ts +3 -33
  424. package/src/runtime/routes/__tests__/cloud-credits-routes.test.ts +5 -4
  425. package/src/runtime/routes/__tests__/cloud-invoice-routes.test.ts +4 -3
  426. package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +72 -298
  427. package/src/runtime/routes/__tests__/default-plugin-routes.test.ts +1 -1
  428. package/src/runtime/routes/__tests__/deprecated-route-context.test.ts +15 -62
  429. package/src/runtime/routes/__tests__/inference-profiles-routes.test.ts +105 -12
  430. package/src/runtime/routes/__tests__/ingress-status-routes.test.ts +1 -1
  431. package/src/runtime/routes/__tests__/monitoring-routes.test.ts +1 -1
  432. package/src/runtime/routes/__tests__/plugins-routes.test.ts +47 -211
  433. package/src/runtime/routes/__tests__/route-host-worker-routes.test.ts +1 -1
  434. package/src/runtime/routes/__tests__/schedule-routes-disarm-reason.test.ts +1 -1
  435. package/src/runtime/routes/__tests__/schedule-worker-routes.test.ts +1 -1
  436. package/src/runtime/routes/__tests__/user-route-dispatcher-host.test.ts +1 -1
  437. package/src/runtime/routes/__tests__/user-route-dispatcher.test.ts +1 -1
  438. package/src/runtime/routes/__tests__/user-routes-cli.test.ts +1 -1
  439. package/src/runtime/routes/__tests__/user-routes-notices.test.ts +1 -1
  440. package/src/runtime/routes/__tests__/user-routes-request.test.ts +1 -1
  441. package/src/runtime/routes/app-management-routes.ts +1 -1
  442. package/src/runtime/routes/attachment-routes.ts +1 -1
  443. package/src/runtime/routes/audit-routes.ts +1 -1
  444. package/src/runtime/routes/avatar-routes.ts +3 -10
  445. package/src/runtime/routes/cloud-routes.ts +3 -3
  446. package/src/runtime/routes/content-source-routes.ts +1 -1
  447. package/src/runtime/routes/conversation-query-routes.ts +49 -706
  448. package/src/runtime/routes/conversation-routes.ts +1 -38
  449. package/src/runtime/routes/debug-routes.ts +1 -1
  450. package/src/runtime/routes/deprecated-route-context.ts +5 -61
  451. package/src/runtime/routes/heartbeat-routes.ts +1 -1
  452. package/src/runtime/routes/identity-routes.ts +1 -1
  453. package/src/runtime/routes/index.ts +0 -6
  454. package/src/runtime/routes/inference-profile-session-handler.ts +3 -3
  455. package/src/runtime/routes/inference-profiles-routes.ts +48 -21
  456. package/src/runtime/routes/inference-provider-connection-routes.ts +0 -1
  457. package/src/runtime/routes/llm-call-sites-routes.ts +3 -3
  458. package/src/runtime/routes/log-export/__tests__/installed-inventory.test.ts +1 -1
  459. package/src/runtime/routes/log-export/__tests__/workspace-allowlist-error-contract.test.ts +1 -1
  460. package/src/runtime/routes/log-export/__tests__/workspace-allowlist.test.ts +1 -1
  461. package/src/runtime/routes/log-export/workspace-allowlist.ts +1 -1
  462. package/src/runtime/routes/log-export-routes.ts +17 -15
  463. package/src/runtime/routes/migration-rollback-routes.ts +1 -1
  464. package/src/runtime/routes/migration-routes.ts +2 -3
  465. package/src/runtime/routes/monitoring-routes.ts +2 -2
  466. package/src/runtime/routes/oauth-providers.ts +5 -5
  467. package/src/runtime/routes/plugins-routes.ts +38 -163
  468. package/src/runtime/routes/profiler-routes.ts +1 -1
  469. package/src/runtime/routes/route-host-worker-routes.ts +1 -1
  470. package/src/runtime/routes/sanity-routes.ts +1 -1
  471. package/src/runtime/routes/schedule-routes.ts +1 -1
  472. package/src/runtime/routes/schedule-worker-routes.ts +1 -1
  473. package/src/runtime/routes/settings-routes.ts +1 -1
  474. package/src/runtime/routes/sounds-config-routes.ts +1 -1
  475. package/src/runtime/routes/surface-conversation-resolver.ts +1 -7
  476. package/src/runtime/routes/user-route-dispatcher.ts +1 -3
  477. package/src/runtime/routes/user-route-import.ts +1 -1
  478. package/src/runtime/routes/user-route-resolution.ts +1 -1
  479. package/src/runtime/routes/user-routes-cli.ts +1 -1
  480. package/src/runtime/routes/workspace-commit-routes.ts +1 -1
  481. package/src/runtime/routes/workspace-greetings.ts +1 -1
  482. package/src/runtime/routes/workspace-routes.ts +1 -1
  483. package/src/runtime/routes/workspace-utils.ts +1 -1
  484. package/src/runtime/sync/resource-sync-events.ts +1 -1
  485. package/src/schedule/__tests__/plugin-schedule-declarations.test.ts +1 -1
  486. package/src/schedule/__tests__/plugin-schedule-reconciler.test.ts +1 -1
  487. package/src/schedule/plugin-schedule-availability.ts +1 -1
  488. package/src/schedule/plugin-schedule-declarations.ts +1 -1
  489. package/src/schedule/run-script.ts +1 -1
  490. package/src/schedule/scheduler.ts +1 -11
  491. package/src/schedule/worker-control.ts +1 -1
  492. package/src/schedule/worker.ts +3 -3
  493. package/src/security/oauth2.ts +2 -2
  494. package/src/security/secret-allowlist.ts +1 -1
  495. package/src/signals/cancel.ts +1 -1
  496. package/src/signals/conversation-undo.ts +1 -1
  497. package/src/signals/emit-event.ts +1 -1
  498. package/src/signals/event-stream.ts +1 -1
  499. package/src/signals/user-message.ts +1 -1
  500. package/src/skills/catalog-install.ts +2 -1
  501. package/src/skills/clawhub.ts +1 -1
  502. package/src/skills/cloud-store.ts +1 -1
  503. package/src/skills/path-classifier.ts +1 -1
  504. package/src/skills/skill-history.ts +1 -1
  505. package/src/skills/skillssh-registry.ts +1 -1
  506. package/src/skills/uninstall.ts +1 -1
  507. package/src/skills/workspace-skill-md-signature.ts +1 -1
  508. package/src/subagent/manager.ts +1 -1
  509. package/src/theme/workspace-theme.ts +1 -1
  510. package/src/tools/browser/auth-cache.ts +1 -1
  511. package/src/tools/browser/browser-manager.ts +1 -1
  512. package/src/tools/browser/runtime-check.ts +1 -1
  513. package/src/tools/executor.ts +4 -4
  514. package/src/tools/filesystem/write.ts +1 -1
  515. package/src/tools/permission-checker.ts +2 -51
  516. package/src/tools/run-standalone.ts +1 -1
  517. package/src/tools/skills/format-input-schema.ts +1 -1
  518. package/src/tools/skills/load.ts +1 -1
  519. package/src/tools/skills/scaffold-cloud.ts +0 -32
  520. package/src/tools/terminal/safe-env.ts +1 -2
  521. package/src/tools/terminal/sanitized-bash.ts +1 -1
  522. package/src/tools/terminal/shell.ts +1 -1
  523. package/src/tools/tool-approval-handler.ts +4 -1
  524. package/src/tools/workflows/manage-workflows.ts +2 -2
  525. package/src/tools/workflows/run-workflow.test.ts +1 -1
  526. package/src/tools/workspace-tools/loader.ts +1 -1
  527. package/src/tts/synthesis-stream.ts +2 -2
  528. package/src/usage/attribution.ts +1 -11
  529. package/src/util/browser.ts +1 -1
  530. package/src/util/bun-runtime.ts +2 -1
  531. package/src/util/device-id.ts +1 -1
  532. package/src/util/disk-usage.ts +4 -139
  533. package/src/util/layout.ts +3 -3
  534. package/src/util/logger.ts +1 -1
  535. package/src/util/logs-db-path.ts +1 -1
  536. package/src/util/memory-db-path.ts +1 -1
  537. package/src/util/{platform.ts → os.ts} +5 -30
  538. package/src/util/process-tree.ts +19 -0
  539. package/src/util/sqlite3-runtime.ts +1 -1
  540. package/src/util/telemetry-db-path.ts +1 -1
  541. package/src/watcher/__tests__/engine.test.ts +0 -23
  542. package/src/watcher/engine.ts +0 -7
  543. package/src/windows-compiled-cli.ts +0 -4
  544. package/src/windows-compiled-worker-entry.ts +0 -6
  545. package/src/workflows/leaf-runner.test.ts +1 -1
  546. package/src/workflows/leaf-runner.ts +1 -1
  547. package/src/workflows/library.ts +1 -1
  548. package/src/workspace/adaptive-thinking-repair.ts +5 -24
  549. package/src/workspace/byok-default-profile-ensure.ts +24 -26
  550. package/src/workspace/custom-profile-ensure.ts +2 -2
  551. package/src/workspace/git-service.ts +1 -1
  552. package/src/workspace/hatched-date.ts +1 -1
  553. package/src/workspace/migrations/038-unify-llm-callsite-configs.ts +2 -2
  554. package/src/workspace/migrations/040-seed-latency-callsite-defaults.ts +1 -1
  555. package/src/workspace/migrations/050-seed-main-agent-opus-callsite.ts +1 -1
  556. package/src/workspace/migrations/077-seed-memory-router-callsite.ts +1 -1
  557. package/src/workspace/migrations/registry.ts +0 -4
  558. package/src/workspace/turn-commit.ts +1 -1
  559. package/docs/activation-funnel-telemetry.md +0 -324
  560. package/scripts/bundled-plugin-packages.ts +0 -154
  561. package/scripts/generate-bundled-plugin-packages.ts +0 -29
  562. package/src/__tests__/activation-early-marking.test.ts +0 -114
  563. package/src/__tests__/auth-fallback-events-store.test.ts +0 -99
  564. package/src/__tests__/config-get-vision-flag.test.ts +0 -139
  565. package/src/__tests__/conversation-surfaces-activation-emit.test.ts +0 -400
  566. package/src/__tests__/internal-telemetry-routes.test.ts +0 -213
  567. package/src/__tests__/telemetry-routes.test.ts +0 -182
  568. package/src/__tests__/turn-events-store.test.ts +0 -376
  569. package/src/__tests__/ui-channel-variants.test.ts +0 -53
  570. package/src/avatar/__tests__/avatar-changed-telemetry.test.ts +0 -217
  571. package/src/avatar/avatar-changed-telemetry.ts +0 -128
  572. package/src/calls/__tests__/call-funnel-telemetry.test.ts +0 -204
  573. package/src/cli/commands/telemetry.help.ts +0 -27
  574. package/src/cli/commands/telemetry.ts +0 -83
  575. package/src/cli/lib/__tests__/local-plugin-upgrade.test.ts +0 -251
  576. package/src/cli/lib/__tests__/plugin-catalog-local.test.ts +0 -113
  577. package/src/cli/lib/__tests__/plugin-marketplace.test.ts +0 -384
  578. package/src/cli/lib/__tests__/plugin-pin-history.test.ts +0 -164
  579. package/src/cli/lib/__tests__/plugins-install-offline.test.ts +0 -228
  580. package/src/cli/lib/bundled-marketplace.json +0 -1575
  581. package/src/cli/lib/bundled-plugin-packages.json +0 -827
  582. package/src/cli/lib/bundled-plugin-packages.ts +0 -87
  583. package/src/cli/lib/plugin-catalog-local.ts +0 -94
  584. package/src/cli/lib/plugin-pin-history.ts +0 -276
  585. package/src/cloud/feature-gate.ts +0 -8
  586. package/src/config/__tests__/cloud-rehydration.test.ts +0 -180
  587. package/src/config/cloud-rehydration.ts +0 -35
  588. package/src/daemon/__tests__/auto-profile-router.test.ts +0 -380
  589. package/src/daemon/auto-profile-router.ts +0 -428
  590. package/src/live-voice/__tests__/live-voice-session-telemetry.test.ts +0 -391
  591. package/src/monitoring/__tests__/db-integrity-sample.test.ts +0 -113
  592. package/src/monitoring/__tests__/oom-kill-reporter.test.ts +0 -374
  593. package/src/monitoring/db-integrity-check.ts +0 -163
  594. package/src/monitoring/db-integrity-sample.ts +0 -176
  595. package/src/monitoring/oom-kill-reporter.ts +0 -469
  596. package/src/onboarding/__tests__/onboarding-events-store.test.ts +0 -158
  597. package/src/onboarding/onboarding-events-store.ts +0 -296
  598. package/src/persistence/__tests__/raw-query-telemetry.test.ts +0 -76
  599. package/src/persistence/lifecycle-events-store.test.ts +0 -134
  600. package/src/persistence/lifecycle-events-store.ts +0 -110
  601. package/src/plugins/defaults/memory/__tests__/activation-session-store.test.ts +0 -76
  602. package/src/plugins/defaults/memory/activation-session-store.ts +0 -50
  603. package/src/plugins/defaults/memory/src/__tests__/memory-v3-gate-stats.test.ts +0 -281
  604. package/src/runtime/routes/auto-profile-routes.ts +0 -83
  605. package/src/runtime/routes/internal-telemetry-routes.ts +0 -142
  606. package/src/runtime/routes/telemetry-routes.ts +0 -274
  607. package/src/security/auth-fallback-events-store.ts +0 -57
  608. package/src/telemetry/__tests__/activation-funnel.test.ts +0 -95
  609. package/src/telemetry/__tests__/config-setting-events-store.test.ts +0 -63
  610. package/src/telemetry/__tests__/config-setting-snapshot.test.ts +0 -143
  611. package/src/telemetry/__tests__/flush-checkpoints.test.ts +0 -56
  612. package/src/telemetry/__tests__/live-voice-funnel.test.ts +0 -174
  613. package/src/telemetry/__tests__/outbox-test-harness.ts +0 -85
  614. package/src/telemetry/__tests__/phone-call-funnel.test.ts +0 -72
  615. package/src/telemetry/__tests__/telemetry-event-fixtures.ts +0 -282
  616. package/src/telemetry/__tests__/watchdog-events-store.test.ts +0 -71
  617. package/src/telemetry/activation-funnel.ts +0 -172
  618. package/src/telemetry/config-setting-events-store.ts +0 -40
  619. package/src/telemetry/config-setting-snapshot.ts +0 -170
  620. package/src/telemetry/flush-checkpoints.ts +0 -70
  621. package/src/telemetry/live-voice-funnel.ts +0 -185
  622. package/src/telemetry/memory-corpus-size.test.ts +0 -120
  623. package/src/telemetry/memory-corpus-size.ts +0 -184
  624. package/src/telemetry/memory-tier-reporter.test.ts +0 -195
  625. package/src/telemetry/memory-tier-reporter.ts +0 -130
  626. package/src/telemetry/phone-call-funnel.ts +0 -144
  627. package/src/telemetry/skill-loaded-events-store.test.ts +0 -93
  628. package/src/telemetry/skill-loaded-events-store.ts +0 -39
  629. package/src/telemetry/telemetry-event-sources.test.ts +0 -223
  630. package/src/telemetry/telemetry-event-sources.ts +0 -597
  631. package/src/telemetry/telemetry-events-outbox.test.ts +0 -375
  632. package/src/telemetry/telemetry-events-outbox.ts +0 -237
  633. package/src/telemetry/telemetry-main-db.ts +0 -48
  634. package/src/telemetry/telemetry-wire-source.json +0 -4
  635. package/src/telemetry/telemetry-wire-validation.test.ts +0 -157
  636. package/src/telemetry/telemetry-wire-validation.ts +0 -162
  637. package/src/telemetry/telemetry-wire.generated.ts +0 -483
  638. package/src/telemetry/tool-executed-events-store.test.ts +0 -210
  639. package/src/telemetry/tool-executed-events-store.ts +0 -102
  640. package/src/telemetry/trace-collection-policy.test.ts +0 -28
  641. package/src/telemetry/trace-collection-policy.ts +0 -30
  642. package/src/telemetry/turn-events-store.ts +0 -216
  643. package/src/telemetry/turn-trace-store.test.ts +0 -884
  644. package/src/telemetry/turn-trace-store.ts +0 -399
  645. package/src/telemetry/types.test.ts +0 -38
  646. package/src/telemetry/types.ts +0 -780
  647. package/src/telemetry/usage-telemetry-reporter.test.ts +0 -3445
  648. package/src/telemetry/usage-telemetry-reporter.ts +0 -566
  649. package/src/telemetry/watchdog-direct-emit.test.ts +0 -112
  650. package/src/telemetry/watchdog-direct-emit.ts +0 -104
  651. package/src/telemetry/watchdog-events-store.ts +0 -31
  652. package/src/tools/ui-surface/channel-variants.ts +0 -52
  653. package/src/watcher/__tests__/telemetry.test.ts +0 -178
  654. package/src/watcher/telemetry.ts +0 -93
  655. package/src/workspace/migrations/097-enable-adaptive-thinking-managed-profiles.ts +0 -165
  656. package/src/workspace/migrations/104-recheck-adaptive-thinking-model-implied-anthropic.ts +0 -151
  657. /package/src/{telemetry → persistence}/tool-usage-store.ts +0 -0
  658. /package/src/{telemetry → persistence}/turn-outcome.ts +0 -0
@@ -100,47 +100,8 @@ mock.module("../dense.js", () => ({
100
100
  },
101
101
  }));
102
102
 
103
- // The watchdog telemetry store is stubbed with the same active-flag delegation
104
- // as the dense lane: gate tests capture the per-run gate telemetry; any other
105
- // test file sharing the process falls through to the real store. Spread the
106
- // real module so the query/type exports stay present.
107
- const realWatchdogStore = {
108
- ...(await import("../../../../../telemetry/watchdog-events-store.js")),
109
- };
110
- let watchdogMockActive = false;
111
- type RecordedEvent = {
112
- checkName: string;
113
- value?: number | null;
114
- detail?: Record<string, unknown> | null;
115
- };
116
- let recordedGateEvents: RecordedEvent[] = [];
117
- // Split by check_name rather than into one bucket: orchestrate emits a gate
118
- // event AND a selection event per turn, and the gate assertions below count
119
- // their events exactly.
120
- let recordedSelectionEvents: RecordedEvent[] = [];
121
- mock.module("../../../../../telemetry/watchdog-events-store.js", () => ({
122
- ...realWatchdogStore,
123
- recordWatchdogEvent: (
124
- record: Parameters<typeof realWatchdogStore.recordWatchdogEvent>[0],
125
- ) => {
126
- if (!watchdogMockActive) {
127
- return realWatchdogStore.recordWatchdogEvent(record);
128
- }
129
- if (record.checkName === MEMORY_V3_SELECTION_CHECK_NAME) {
130
- recordedSelectionEvents.push(record);
131
- return;
132
- }
133
- recordedGateEvents.push(record);
134
- },
135
- }));
136
-
137
- const {
138
- orchestrate,
139
- DEFAULT_NEEDLE_K,
140
- DEFAULT_DENSE_K,
141
- MEMORY_V3_INJECTION_GATE_CHECK_NAME,
142
- MEMORY_V3_SELECTION_CHECK_NAME,
143
- } = await import("../orchestrate.js");
103
+ const { orchestrate, DEFAULT_NEEDLE_K, DEFAULT_DENSE_K } =
104
+ await import("../orchestrate.js");
144
105
  const { MemoryV3RetrievalUnavailableError } = await import("../pool-select.js");
145
106
 
146
107
  // ---------------------------------------------------------------------------
@@ -350,13 +311,10 @@ function selectProvider(keep: Slug[]): Provider {
350
311
 
351
312
  beforeEach(() => {
352
313
  denseMockActive = true;
353
- watchdogMockActive = true;
354
314
  providerStub = null;
355
315
  denseHits = [];
356
316
  denseHitsByQuery = new Map();
357
317
  denseCalls = [];
358
- recordedGateEvents = [];
359
- recordedSelectionEvents = [];
360
318
  lastPool = [];
361
319
  lastPoolLines = [];
362
320
  lastPrefixBlock = null;
@@ -365,7 +323,6 @@ beforeEach(() => {
365
323
 
366
324
  afterAll(() => {
367
325
  denseMockActive = false;
368
- watchdogMockActive = false;
369
326
  });
370
327
 
371
328
  // ---------------------------------------------------------------------------
@@ -1306,11 +1263,6 @@ describe("orchestrate — injection gate", () => {
1306
1263
  expect(result.selections.map((s) => s.slug)).toContain("topic-a");
1307
1264
  // The stale deleted page never reaches the pool either.
1308
1265
  expect(lastPool).not.toContain("gone-page");
1309
- // The lane WAS enabled, so this reports as an outage, not as disabled.
1310
- expect(recordedGateEvents[0]!.detail).toMatchObject({
1311
- pass: true,
1312
- reason: "dense_unavailable",
1313
- });
1314
1266
  });
1315
1267
 
1316
1268
  test("bypassForCore: true on a closed gate selects the stable prefix only (no finder lines)", async () => {
@@ -1407,47 +1359,6 @@ describe("orchestrate — injection gate", () => {
1407
1359
  expect(result.selections.map((s) => s.slug)).toContain("topic-a");
1408
1360
  });
1409
1361
 
1410
- test("a scored gate run records ONE telemetry event carrying the decision", async () => {
1411
- const lanes = await buildLanes();
1412
- // Dense top-1 (0.9) clears denseThreshold (0.52) → dense_pass.
1413
- denseHits = [{ article: "topic-b", section: 0, score: 0.9 }];
1414
- providerStub = selectProvider(["topic-a"]);
1415
-
1416
- await orchestrate(
1417
- makeTurn(1, "apple"),
1418
- depsOf(lanes, { denseK: 100, gateConfig: gateConfigOf() }),
1419
- );
1420
-
1421
- expect(recordedGateEvents).toHaveLength(1);
1422
- const event = recordedGateEvents[0]!;
1423
- expect(event.checkName).toBe(MEMORY_V3_INJECTION_GATE_CHECK_NAME);
1424
- expect(event.value).toBe(1);
1425
- expect(event.detail).toMatchObject({
1426
- pass: true,
1427
- reason: "dense_pass",
1428
- scored: true,
1429
- top_dense_score: 0.9,
1430
- });
1431
- });
1432
-
1433
- test("a closed gate records pass:false with the failure reason", async () => {
1434
- const lanes = await buildLanes();
1435
- // No needle-term overlap and sub-threshold dense → fail_no_signal.
1436
- denseHits = [{ article: "topic-b", section: 0, score: 0.1 }];
1437
- providerStub = selectProvider([]);
1438
-
1439
- await orchestrate(
1440
- makeTurn(1, "zzzz nomatch"),
1441
- depsOf(lanes, { denseK: 100, gateConfig: gateConfigOf() }),
1442
- );
1443
-
1444
- expect(recordedGateEvents).toHaveLength(1);
1445
- expect(recordedGateEvents[0]!.detail).toMatchObject({
1446
- pass: false,
1447
- reason: "fail_no_signal",
1448
- });
1449
- });
1450
-
1451
1362
  test("denseK: 0 records reason dense_disabled, not dense_unavailable", async () => {
1452
1363
  const lanes = await buildLanes();
1453
1364
  // denseK: 0 → the lane never ran → the gate passes open without scoring.
@@ -1468,13 +1379,6 @@ describe("orchestrate — injection gate", () => {
1468
1379
  makeTurn(1, "apple"),
1469
1380
  depsOf(lanes, { needle, denseK: 0, gateConfig: gateConfigOf() }),
1470
1381
  );
1471
-
1472
- expect(recordedGateEvents).toHaveLength(1);
1473
- expect(recordedGateEvents[0]!.detail).toMatchObject({
1474
- pass: true,
1475
- reason: "dense_disabled",
1476
- scored: false,
1477
- });
1478
1382
  });
1479
1383
 
1480
1384
  test("an enabled dense lane yielding no live hits records reason dense_unavailable", async () => {
@@ -1498,13 +1402,6 @@ describe("orchestrate — injection gate", () => {
1498
1402
  makeTurn(1, "apple"),
1499
1403
  depsOf(lanes, { needle, denseK: 100, gateConfig: gateConfigOf() }),
1500
1404
  );
1501
-
1502
- expect(recordedGateEvents).toHaveLength(1);
1503
- expect(recordedGateEvents[0]!.detail).toMatchObject({
1504
- pass: true,
1505
- reason: "dense_unavailable",
1506
- scored: false,
1507
- });
1508
1405
  });
1509
1406
 
1510
1407
  test("records the corpus size on a scored run", async () => {
@@ -1520,11 +1417,6 @@ describe("orchestrate — injection gate", () => {
1520
1417
  gateConfig: gateConfigOf(),
1521
1418
  }),
1522
1419
  );
1523
-
1524
- expect(recordedGateEvents[0]!.detail).toMatchObject({
1525
- reason: "dense_pass",
1526
- real_concept_page_count: 42,
1527
- });
1528
1420
  });
1529
1421
 
1530
1422
  test("records the corpus size on a dense_disabled run", async () => {
@@ -1551,11 +1443,6 @@ describe("orchestrate — injection gate", () => {
1551
1443
  gateConfig: gateConfigOf(),
1552
1444
  }),
1553
1445
  );
1554
-
1555
- expect(recordedGateEvents[0]!.detail).toMatchObject({
1556
- reason: "dense_disabled",
1557
- real_concept_page_count: 3,
1558
- });
1559
1446
  });
1560
1447
 
1561
1448
  test("omits the corpus size when the dep is not threaded", async () => {
@@ -1567,93 +1454,6 @@ describe("orchestrate — injection gate", () => {
1567
1454
  makeTurn(1, "apple"),
1568
1455
  depsOf(lanes, { denseK: 100, gateConfig: gateConfigOf() }),
1569
1456
  );
1570
-
1571
- expect(recordedGateEvents).toHaveLength(1);
1572
- expect(recordedGateEvents[0]!.detail).not.toHaveProperty(
1573
- "real_concept_page_count",
1574
- );
1575
- });
1576
-
1577
- test("a passed gate that selects NOTHING is recorded as a zero selection", async () => {
1578
- const lanes = await buildLanes();
1579
- // The case the gate's own pass rate cannot see: retrieval was confident
1580
- // enough to spend the selector call, and the selector judged that no
1581
- // candidate was relevant. Pass rate says 100%; injection rate says 0%.
1582
- denseHits = [{ article: "topic-b", section: 0, score: 0.9 }];
1583
- providerStub = selectProvider([]);
1584
-
1585
- await orchestrate(
1586
- makeTurn(1, "apple"),
1587
- depsOf(lanes, { denseK: 100, gateConfig: gateConfigOf() }),
1588
- );
1589
-
1590
- expect(recordedGateEvents[0]!.detail).toMatchObject({
1591
- pass: true,
1592
- reason: "dense_pass",
1593
- });
1594
- expect(recordedSelectionEvents).toHaveLength(1);
1595
- const event = recordedSelectionEvents[0]!;
1596
- expect(event.checkName).toBe(MEMORY_V3_SELECTION_CHECK_NAME);
1597
- expect(event.value).toBe(0);
1598
- expect(event.detail).toMatchObject({
1599
- gate_reason: "dense_pass",
1600
- gate_pass: true,
1601
- selector_ran: true,
1602
- selected_count: 0,
1603
- });
1604
- });
1605
-
1606
- test("the selection event carries the gate reason and a non-zero count", async () => {
1607
- const lanes = await buildLanes();
1608
- denseHits = [{ article: "topic-b", section: 0, score: 0.9 }];
1609
- providerStub = selectProvider(["topic-a"]);
1610
-
1611
- await orchestrate(
1612
- makeTurn(1, "apple"),
1613
- depsOf(lanes, {
1614
- denseK: 100,
1615
- realConceptPageCount: 42,
1616
- gateConfig: gateConfigOf(),
1617
- }),
1618
- );
1619
-
1620
- expect(recordedSelectionEvents).toHaveLength(1);
1621
- expect(recordedSelectionEvents[0]!.value).toBe(1);
1622
- expect(recordedSelectionEvents[0]!.detail).toMatchObject({
1623
- gate_reason: "dense_pass",
1624
- selector_ran: true,
1625
- selected_count: 1,
1626
- real_concept_page_count: 42,
1627
- });
1628
- expect(
1629
- Number(recordedSelectionEvents[0]!.detail!.pool_size),
1630
- ).toBeGreaterThan(0);
1631
- });
1632
-
1633
- test("selectorEnabled: false marks the passthrough as selector_ran: false", async () => {
1634
- const lanes = await buildLanes();
1635
- // The lean profile passes the whole pool through without consulting the
1636
- // selector, so `selected_count` there is pool size, not a relevance
1637
- // judgment. Without this flag those turns would read as a 100% hit rate.
1638
- denseHits = [{ article: "topic-b", section: 0, score: 0.9 }];
1639
-
1640
- await orchestrate(
1641
- makeTurn(1, "apple"),
1642
- depsOf(lanes, {
1643
- denseK: 100,
1644
- coreSlugs: ["topic-a"],
1645
- selectorEnabled: false,
1646
- gateConfig: gateConfigOf(),
1647
- }),
1648
- );
1649
-
1650
- expect(recordedSelectionEvents).toHaveLength(1);
1651
- expect(recordedSelectionEvents[0]!.detail).toMatchObject({
1652
- selector_ran: false,
1653
- });
1654
- expect(
1655
- Number(recordedSelectionEvents[0]!.detail!.selected_count),
1656
- ).toBeGreaterThan(0);
1657
1457
  });
1658
1458
 
1659
1459
  test("the recall-safe fallback (omitted ids) records selector_kept_all: true", async () => {
@@ -1675,12 +1475,6 @@ describe("orchestrate — injection gate", () => {
1675
1475
  gateConfig: gateConfigOf(),
1676
1476
  }),
1677
1477
  );
1678
-
1679
- expect(recordedSelectionEvents).toHaveLength(1);
1680
- expect(recordedSelectionEvents[0]!.detail).toMatchObject({
1681
- selector_ran: true,
1682
- selector_kept_all: true,
1683
- });
1684
1478
  });
1685
1479
 
1686
1480
  test("an explicit selection records selector_kept_all: false", async () => {
@@ -1692,10 +1486,6 @@ describe("orchestrate — injection gate", () => {
1692
1486
  makeTurn(1, "apple"),
1693
1487
  depsOf(lanes, { denseK: 100, gateConfig: gateConfigOf() }),
1694
1488
  );
1695
-
1696
- expect(recordedSelectionEvents[0]!.detail).toMatchObject({
1697
- selector_kept_all: false,
1698
- });
1699
1489
  });
1700
1490
 
1701
1491
  test("net_new_count counts only selections not already live in the conversation", async () => {
@@ -1713,11 +1503,6 @@ describe("orchestrate — injection gate", () => {
1713
1503
  gateConfig: gateConfigOf(),
1714
1504
  }),
1715
1505
  );
1716
-
1717
- expect(recordedSelectionEvents[0]!.detail).toMatchObject({
1718
- selected_count: 2,
1719
- net_new_count: 1,
1720
- });
1721
1506
  });
1722
1507
 
1723
1508
  test("net_new_count is omitted when isResident is not threaded", async () => {
@@ -1729,10 +1514,6 @@ describe("orchestrate — injection gate", () => {
1729
1514
  makeTurn(1, "apple"),
1730
1515
  depsOf(lanes, { denseK: 100, gateConfig: gateConfigOf() }),
1731
1516
  );
1732
-
1733
- expect(recordedSelectionEvents[0]!.detail).not.toHaveProperty(
1734
- "net_new_count",
1735
- );
1736
1517
  });
1737
1518
 
1738
1519
  test("an empty pool is not a selector judgment", async () => {
@@ -1766,12 +1547,6 @@ describe("orchestrate — injection gate", () => {
1766
1547
  }),
1767
1548
  );
1768
1549
 
1769
- expect(recordedSelectionEvents).toHaveLength(1);
1770
- expect(recordedSelectionEvents[0]!.detail).toMatchObject({
1771
- selector_ran: false,
1772
- selected_count: 0,
1773
- pool_size: 0,
1774
- });
1775
1550
  expect(result.selectorRan).toBe(false);
1776
1551
  });
1777
1552
 
@@ -1791,14 +1566,6 @@ describe("orchestrate — injection gate", () => {
1791
1566
  }),
1792
1567
  );
1793
1568
 
1794
- expect(recordedSelectionEvents).toHaveLength(1);
1795
- expect(recordedSelectionEvents[0]!.detail).toMatchObject({
1796
- gate_reason: "fail_no_signal",
1797
- gate_pass: false,
1798
- selector_ran: false,
1799
- selected_count: 0,
1800
- pool_size: 0,
1801
- });
1802
1569
  // The result carries the same fact for the pool record: the stable prefix
1803
1570
  // is still reported as a lane, as computed, but the
1804
1571
  // selector never ran over it.
@@ -1813,14 +1580,6 @@ describe("orchestrate — injection gate", () => {
1813
1580
  providerStub = selectProvider(["topic-a"]);
1814
1581
 
1815
1582
  await orchestrate(makeTurn(1, "apple"), depsOf(lanes, { denseK: 100 }));
1816
-
1817
- expect(recordedGateEvents).toEqual([]);
1818
- expect(recordedSelectionEvents).toHaveLength(1);
1819
- expect(recordedSelectionEvents[0]!.detail).toMatchObject({
1820
- gate_reason: null,
1821
- gate_pass: null,
1822
- selected_count: 1,
1823
- });
1824
1583
  });
1825
1584
 
1826
1585
  test("no gate telemetry when the gate is disabled or omitted", async () => {
@@ -1836,8 +1595,6 @@ describe("orchestrate — injection gate", () => {
1836
1595
  }),
1837
1596
  );
1838
1597
  await orchestrate(makeTurn(2, "apple"), depsOf(lanes));
1839
-
1840
- expect(recordedGateEvents).toEqual([]);
1841
1598
  });
1842
1599
  });
1843
1600
 
@@ -2552,14 +2309,6 @@ describe("selector infrastructure failure", () => {
2552
2309
  expect(result.selectorFailure).toBeInstanceOf(
2553
2310
  MemoryV3RetrievalUnavailableError,
2554
2311
  );
2555
- expect(recordedSelectionEvents).toHaveLength(1);
2556
- expect(recordedSelectionEvents[0]!.detail).toMatchObject({
2557
- selector_ran: false,
2558
- selector_failed: true,
2559
- selector_kept_all: false,
2560
- selected_count: 2,
2561
- pool_size: 3,
2562
- });
2563
2312
  });
2564
2313
 
2565
2314
  test("with no stable prefix the turn keeps nothing, and the failure still rides the result", async () => {
@@ -77,9 +77,7 @@ import {
77
77
  recordLatencySubSpan,
78
78
  timeLatencySubSpan,
79
79
  } from "../../../../daemon/turn-latency-sub-spans.js";
80
- import { recordWatchdogEvent } from "../../../../telemetry/watchdog-events-store.js";
81
80
  import { getLogger } from "../logging.js";
82
- import { injectionUnits } from "./capabilities.js";
83
81
  import { denseLaneScored } from "./dense.js";
84
82
  import type { EdgeGraph } from "./edge.js";
85
83
  import { edgeExpand } from "./edge.js";
@@ -117,66 +115,6 @@ import {
117
115
  // logger names the per-turn INJECTION gate wired in below.
118
116
  const log = getLogger("memory-v3-injection-gate");
119
117
 
120
- /** `check_name` of the `watchdog` telemetry event recorded once per
121
- * injection-gate run. The cloud's memory admin analytics count and filter
122
- * on this exact string — keep it stable. */
123
- export const MEMORY_V3_INJECTION_GATE_CHECK_NAME = "memory_v3_injection_gate";
124
-
125
- /** Record one injection-gate run to usage telemetry. `detail` keys are the
126
- * platform-side contract (snake_case; scores, reason codes, and corpus-size
127
- * counts only — never page titles, slugs, or conversation content). Never
128
- * throws: the gate is pass-open by design, and a telemetry failure must not
129
- * cost the turn its memory either.
130
- *
131
- * `detail.scored` says whether checkV3Gate actually weighed scores this run, as
132
- * opposed to the run taking a pass-open shortcut (dense off, dense unavailable,
133
- * gate threw). Pass rate is only meaningful over scored runs — the shortcuts are
134
- * all unconditional passes and would otherwise inflate it. It is derivable from
135
- * `reason`, but the daemon owns the reason set and adds to it freely, so it is
136
- * reported explicitly rather than left for the cloud to re-derive from a
137
- * hardcoded list that would silently miscount the next reason we add. */
138
- function recordGateRun(detail: Record<string, unknown>): void {
139
- try {
140
- recordWatchdogEvent({
141
- checkName: MEMORY_V3_INJECTION_GATE_CHECK_NAME,
142
- value: 1,
143
- detail,
144
- });
145
- } catch {
146
- // recordWatchdogEvent already no-ops on opt-out and a missing telemetry
147
- // DB; anything past that is not worth failing the turn over.
148
- }
149
- }
150
-
151
- /** `check_name` of the `watchdog` telemetry event recorded once per orchestrated
152
- * turn, carrying what the SELECTOR did. Keep this string stable — the cloud's
153
- * memory admin analytics filter on it. */
154
- export const MEMORY_V3_SELECTION_CHECK_NAME = "memory_v3_selection";
155
-
156
- /** Record one turn's selection outcome. Deliberately a SEPARATE event from
157
- * {@link MEMORY_V3_INJECTION_GATE_CHECK_NAME} rather than extra keys on it: the
158
- * gate records at decision time, before selection has run, so folding the
159
- * outcome in would mean deferring the gate event until after `selectPool` — and
160
- * losing every gate run whenever selection throws, which is exactly the
161
- * incident we would want the gate telemetry for. This event carries
162
- * `gate_reason` so the two still group together without a join.
163
- *
164
- * `value` is the selection count. Never throws, same as the gate counter. */
165
- function recordSelectionRun(
166
- value: number,
167
- detail: Record<string, unknown>,
168
- ): void {
169
- try {
170
- recordWatchdogEvent({
171
- checkName: MEMORY_V3_SELECTION_CHECK_NAME,
172
- value,
173
- detail,
174
- });
175
- } catch {
176
- // Same contract as recordGateRun: telemetry must never cost a turn.
177
- }
178
- }
179
-
180
118
  /** Default number of BM25 needle articles to fold into the pool. */
181
119
  export const DEFAULT_NEEDLE_K = 12;
182
120
  /** Default number of dense-lane articles to fold into the pool. */
@@ -797,15 +735,8 @@ export async function orchestrate(
797
735
  // profile threshold rather than guessed at: `dense_disabled` is sub-threshold
798
736
  // by construction, and whether those assistants sit at 1 page or 9 is the
799
737
  // difference between "empty" and "about to cross".
800
- const recordGate = (detail: Record<string, unknown>): void =>
801
- recordGateRun(
802
- deps.realConceptPageCount === undefined
803
- ? detail
804
- : { ...detail, real_concept_page_count: deps.realConceptPageCount },
805
- );
806
-
807
- // This turn's gate decision, carried to the selection event so the two group
808
- // together without a join. Null when the gate never ran (disabled/omitted).
738
+ // This turn's gate decision, carried on the result as `gateReason`. Null
739
+ // when the gate never ran (disabled/omitted).
809
740
  let gateOutcome: { reason: string; pass: boolean } | null = null;
810
741
 
811
742
  // What the SELECTOR did with the pool the gate let through — the outcome the
@@ -825,54 +756,13 @@ export async function orchestrate(
825
756
  // the provider (also a 0%).
826
757
  // The last is why `poolSize` decides this rather than each call site: an empty
827
758
  // pool is not a judgment that nothing was relevant, and no caller has to
828
- // remember that. `selectorRanOver` is that rule; the selection event and the
829
- // result's `selectorRan` both read it.
830
- // `selector_kept_all` and `net_new_count` separate what the selector JUDGED
831
- // from what actually reaches the turn, which `selected_count` alone conflates:
832
- // - kept_all: the recall-safe fallback fired (model omitted `ids`), so every
833
- // candidate was kept without a real judgment. Distinguishes "kept the whole
834
- // pool because it gave up" from "explicitly selected a large set", which
835
- // otherwise look identical and inflate the same way.
836
- // - net_new: the injection units among the selections (`injectionUnits`:
837
- // each selected section, or the lead of a page selected with none, a
838
- // capability page as one unit) not already live in the conversation,
839
- // the injector renders only these (prior turns' sections ride
840
- // history), so it is the real incremental injection, where
841
- // `selected_count` re-counts the whole standing set every turn.
842
- // Omitted when the caller did not supply `isResident` (tests,
843
- // shadow-less paths). The count reads the same units the injector will
844
- // (a closed gate's selections carry no sections, so it counts leads).
759
+ // remember that. `selectorRanOver` is that rule; the result's `selectorRan`
760
+ // reads it.
845
761
  const selectorRanOver = (
846
762
  poolSize: number,
847
763
  failure?: MemoryV3RetrievalUnavailableError,
848
764
  ): boolean =>
849
765
  deps.selectorEnabled !== false && poolSize > 0 && failure === undefined;
850
- const recordSelection = (
851
- selections: SelectedPage[],
852
- poolSize: number,
853
- keptAll: boolean,
854
- failure?: MemoryV3RetrievalUnavailableError,
855
- ): void => {
856
- const detail: Record<string, unknown> = {
857
- gate_reason: gateOutcome?.reason ?? null,
858
- gate_pass: gateOutcome?.pass ?? null,
859
- selector_ran: selectorRanOver(poolSize, failure),
860
- selector_failed: failure !== undefined,
861
- selector_kept_all: keptAll,
862
- selected_count: selections.length,
863
- pool_size: poolSize,
864
- };
865
- const isResident = deps.isResident;
866
- if (isResident !== undefined) {
867
- detail.net_new_count = injectionUnits(selections).filter(
868
- ({ slug, key }) => !isResident(slug, key),
869
- ).length;
870
- }
871
- if (deps.realConceptPageCount !== undefined) {
872
- detail.real_concept_page_count = deps.realConceptPageCount;
873
- }
874
- recordSelectionRun(selections.length, detail);
875
- };
876
766
  if (deps.gateConfig?.enabled) {
877
767
  if (liveDensed.length === 0) {
878
768
  const reason = denseEnabled ? "dense_unavailable" : "dense_disabled";
@@ -888,7 +778,6 @@ export async function orchestrate(
888
778
  : "memory-v3 injection gate: dense lane disabled, passing open",
889
779
  );
890
780
  gateOutcome = { reason, pass: true };
891
- recordGate({ pass: true, reason, scored: false });
892
781
  } else {
893
782
  let gate: V3GateResult | null = null;
894
783
  try {
@@ -906,7 +795,6 @@ export async function orchestrate(
906
795
  "memory-v3 injection gate threw; passing open (proceeding with selection)",
907
796
  );
908
797
  gateOutcome = { reason: "gate_error", pass: true };
909
- recordGate({ pass: true, reason: "gate_error", scored: false });
910
798
  }
911
799
  if (gate) {
912
800
  log.info(
@@ -918,14 +806,6 @@ export async function orchestrate(
918
806
  "memory-v3 injection gate decision",
919
807
  );
920
808
  gateOutcome = { reason: gate.reason, pass: gate.pass };
921
- recordGate({
922
- pass: gate.pass,
923
- reason: gate.reason,
924
- scored: true,
925
- top_dense_score: gate.topDenseScore,
926
- top_norm_sparse_score: gate.topNormSparseScore,
927
- checked_articles: gate.checkedArticles,
928
- });
929
809
  if (!gate.pass) {
930
810
  // A closed gate produces no finder lane; only `selections` and
931
811
  // `selectorRan` differ between bypass (stable prefix) and hard-skip.
@@ -975,7 +855,6 @@ export async function orchestrate(
975
855
  } = await runSelection(stableOnly);
976
856
  const selectedPoolSize =
977
857
  selectedPool.stable.length + selectedPool.finder.length;
978
- recordSelection(bypassed, selectedPoolSize, keptAll, failure);
979
858
  return closed(
980
859
  bypassed,
981
860
  selectorRanOver(selectedPoolSize, failure),
@@ -985,9 +864,7 @@ export async function orchestrate(
985
864
  }
986
865
  // Hard skip: the selector is never consulted, so this is a zero
987
866
  // selection BY CONSTRUCTION, not a judgment that nothing was relevant.
988
- // `selector_ran: false` keeps it out of any relevance rate, and the
989
- // result's `selectorRan` keeps it out of the persisted pool record.
990
- recordSelection([], 0, false);
867
+ // The result's `selectorRan` is false.
991
868
  return closed([], false);
992
869
  }
993
870
  }
@@ -1095,7 +972,6 @@ export async function orchestrate(
1095
972
  } = await runSelection(pool);
1096
973
  const selectedPoolSize =
1097
974
  selectedPool.stable.length + selectedPool.finder.length;
1098
- recordSelection(selections, selectedPoolSize, keptAll, failure);
1099
975
 
1100
976
  return {
1101
977
  selections,
@@ -8,7 +8,7 @@
8
8
  * path and entry point.
9
9
  */
10
10
 
11
- import { getMemoryWorkerPidPath } from "../../../util/platform.js";
11
+ import { getMemoryWorkerPidPath } from "../../../util/layout.js";
12
12
  import {
13
13
  probeWorkerPidFile,
14
14
  spawnWorkerProcess,
@@ -12,7 +12,7 @@
12
12
 
13
13
  import { writeFileSync } from "node:fs";
14
14
 
15
- import { rehydrateCloudCredentials } from "../../../config/cloud-rehydration.js";
15
+ import { ensureCloudIdentityIds } from "../../../config/cloud-identity.js";
16
16
  import { getConfig } from "../../../config/loader.js";
17
17
  import { isMemoryEnabled } from "../../../config/memory-v3-gate.js";
18
18
  import { startConversationEvictor } from "../../../daemon/conversation-evictor.js";
@@ -63,7 +63,7 @@ async function main(): Promise<void> {
63
63
  // conversations whose inference and background-wake requests go through the
64
64
  // cloud proxy — without rehydration those requests hit the wrong platform
65
65
  // and are rejected.
66
- await rehydrateCloudCredentials();
66
+ await ensureCloudIdentityIds();
67
67
 
68
68
  // Jobs in this process wake real agent conversations, so it registers the
69
69
  // default plugin hook surface (hooks and injectors, no init hooks) the same
@@ -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.12.2"
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
  }