@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
@@ -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
  }