@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
@@ -16,7 +16,7 @@ import { auth } from "@modelcontextprotocol/sdk/client/auth.js";
16
16
  import { useMemorySecureKeyMap } from "../../__tests__/helpers/secure-keys.js";
17
17
 
18
18
  const CALLBACK_URL =
19
- "https://platform.example/v1/gateway/callbacks/abc/webhooks/oauth/callback/";
19
+ "https://test-cloud.mycadet.ai/v1/gateway/callbacks/abc/webhooks/oauth/callback/";
20
20
  const PUBLIC_BASE_URL = "https://tunnel.example/assistant-123";
21
21
  const DIRECT_CALLBACK_URL = `${PUBLIC_BASE_URL}/webhooks/oauth/callback`;
22
22
  const CLIENT_METADATA_URL = `${PUBLIC_BASE_URL}/oauth/client-metadata.json`;
@@ -35,7 +35,7 @@ mock.module("../../inbound/public-ingress-urls.js", () => ({
35
35
  }));
36
36
 
37
37
  mock.module("../../config/loader.js", () => ({
38
- loadConfig: () => ({ ingress: { publicBaseUrl } }),
38
+ getConfig: () => ({ ingress: { publicBaseUrl } }),
39
39
  }));
40
40
 
41
41
  /** In-memory stand-in for the credential store. */
@@ -6,18 +6,17 @@ import { describe, expect, mock, test } from "bun:test";
6
6
 
7
7
  mock.module("../../inbound/cloud-callback-registration.js", () => ({
8
8
  resolveCallbackUrl: async () =>
9
- "https://platform.example/v1/gateway/callbacks/abc/webhooks/oauth/callback/",
9
+ "https://test-cloud.mycadet.ai/v1/gateway/callbacks/abc/webhooks/oauth/callback/",
10
10
  }));
11
11
 
12
12
  mock.module("../../inbound/public-ingress-urls.js", () => ({
13
13
  getOAuthCallbackUrl: () =>
14
- "https://platform.example/v1/gateway/callbacks/abc/webhooks/oauth/callback/",
14
+ "https://test-cloud.mycadet.ai/v1/gateway/callbacks/abc/webhooks/oauth/callback/",
15
15
  getMcpOAuthClientMetadataUrl: () =>
16
16
  "http://localhost/oauth/client-metadata.json",
17
17
  }));
18
18
 
19
19
  mock.module("../../config/loader.js", () => ({
20
- loadConfig: () => ({}),
21
20
  // `clientMetadata` reads the assistant's name, which pulls the persona
22
21
  // resolver into the provider's import graph, and that reads config.
23
22
  getConfig: () => ({}),
@@ -40,7 +40,7 @@ mock.module("../../plugins/mcp-servers.js", () => ({
40
40
  readPluginMcpServers: () => ({ servers: [], issues: [] }),
41
41
  }));
42
42
 
43
- const { getSignalsDir } = await import("../../util/platform.js");
43
+ const { getSignalsDir } = await import("../../util/layout.js");
44
44
  const { MCP_RELOAD_SIGNAL_FILE } = await import("../reload-signal.js");
45
45
  const { reloadMcpServers } = await import("../../daemon/mcp-reload-service.js");
46
46
 
@@ -12,7 +12,7 @@ import { existsSync, mkdirSync, readFileSync, rmSync } from "node:fs";
12
12
  import { join } from "node:path";
13
13
  import { beforeEach, describe, expect, test } from "bun:test";
14
14
 
15
- import { getSignalsDir } from "../../util/platform.js";
15
+ import { getSignalsDir } from "../../util/layout.js";
16
16
  import { MCP_RELOAD_SIGNAL_FILE, signalMcpReloaded } from "../reload-signal.js";
17
17
 
18
18
  const signalPath = () => join(getSignalsDir(), MCP_RELOAD_SIGNAL_FILE);
@@ -5,7 +5,6 @@ import { beforeEach, describe, expect, test } from "bun:test";
5
5
  import { AGENT_PLUGINS_MCP_SCHEMA_URL } from "../spec-schema.js";
6
6
  import {
7
7
  loadWorkspaceMcpConfig,
8
- overlayWorkspaceMcpForConfigRead,
9
8
  readWorkspaceMcpFile,
10
9
  saveWorkspaceMcpConfig,
11
10
  } from "../workspace-mcp-config.js";
@@ -109,31 +108,30 @@ describe("workspace mcp.json", () => {
109
108
  );
110
109
  });
111
110
 
112
- test("overlay projects transport-only servers for config reads", () => {
113
- saveWorkspaceMcpConfig({
114
- servers: {
115
- remote: {
116
- transport: {
111
+ test("raw load passes hand-authored headers through — serving layers strip them", () => {
112
+ mkdirSync(process.env.CADET_WORKSPACE_DIR!, { recursive: true });
113
+ writeFileSync(
114
+ mcpPath(),
115
+ JSON.stringify({
116
+ $schema: AGENT_PLUGINS_MCP_SCHEMA_URL,
117
+ mcpServers: {
118
+ remote: {
117
119
  type: "streamable-http",
118
120
  url: "https://example.com/mcp",
121
+ headers: { authorization: "Bearer secret" },
119
122
  },
120
123
  },
121
- },
122
- });
124
+ }),
125
+ );
123
126
 
124
- const config: Record<string, unknown> = {
125
- llm: { activeProfile: "balanced" },
126
- };
127
- overlayWorkspaceMcpForConfigRead(config);
128
- expect(config.mcp).toEqual({
129
- servers: {
130
- remote: {
131
- transport: {
132
- type: "streamable-http",
133
- url: "https://example.com/mcp",
134
- },
135
- },
136
- },
127
+ // The module API returns the file's content unfiltered: a hand-authored
128
+ // mcp.json may carry headers, so anything serving this raw — config
129
+ // responses, exports — would leak secrets. The MCP list handler is the
130
+ // serving layer and strips them.
131
+ expect(loadWorkspaceMcpConfig().servers.remote?.transport).toEqual({
132
+ type: "streamable-http",
133
+ url: "https://example.com/mcp",
134
+ headers: { authorization: "Bearer secret" },
137
135
  });
138
136
  });
139
137
  });
@@ -21,8 +21,8 @@
21
21
  import { mkdirSync, writeFileSync } from "node:fs";
22
22
  import { join } from "node:path";
23
23
 
24
+ import { getSignalsDir } from "../util/layout.js";
24
25
  import { getLogger } from "../util/logger.js";
25
- import { getSignalsDir } from "../util/platform.js";
26
26
 
27
27
  const log = getLogger("mcp-reload-signal");
28
28
 
@@ -17,8 +17,8 @@ import { dirname } from "node:path";
17
17
 
18
18
  import type { McpConfig, McpServerConfig } from "../config/schemas/mcp.js";
19
19
  import { McpConfigSchema } from "../config/schemas/mcp.js";
20
+ import { getWorkspaceMcpConfigPath } from "../util/layout.js";
20
21
  import { getLogger } from "../util/logger.js";
21
- import { getWorkspaceMcpConfigPath } from "../util/platform.js";
22
22
  import {
23
23
  AGENT_PLUGINS_MCP_SCHEMA_URL,
24
24
  projectSpecServerToTransport,
@@ -168,25 +168,3 @@ export function saveWorkspaceMcpConfig(config: McpConfig): void {
168
168
  writeFileSync(tmpPath, JSON.stringify(document, null, 2) + "\n");
169
169
  renameSync(tmpPath, path);
170
170
  }
171
-
172
- /**
173
- * Replace `config.mcp` on a settings/export payload with the projected
174
- * workspace servers (transport only, headers stripped). Old clients that
175
- * still read `mcp.servers` from `/v1/config` keep seeing the same shape.
176
- */
177
- export function overlayWorkspaceMcpForConfigRead(config: unknown): void {
178
- if (config === null || typeof config !== "object" || Array.isArray(config)) {
179
- return;
180
- }
181
- const root = config as Record<string, unknown>;
182
- const { servers } = loadWorkspaceMcpConfig();
183
- const projected: Record<string, unknown> = {};
184
- for (const [id, server] of Object.entries(servers)) {
185
- const { headers: _headers, ...safeTransport } = server.transport as Record<
186
- string,
187
- unknown
188
- >;
189
- projected[id] = { transport: safeTransport };
190
- }
191
- root.mcp = { servers: projected };
192
- }
@@ -10,7 +10,7 @@ import { readdirSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
10
10
  import { join } from "node:path";
11
11
 
12
12
  import { ensureDir, pathExists } from "../util/fs.js";
13
- import { getWorkspaceDir } from "../util/platform.js";
13
+ import { getWorkspaceDir } from "../util/layout.js";
14
14
 
15
15
  export interface Draft {
16
16
  id: string;
@@ -10,7 +10,7 @@ import { dirname } from "node:path";
10
10
  import { Database } from "bun:sqlite";
11
11
  import { beforeEach, describe, expect, test } from "bun:test";
12
12
 
13
- import { getDbPath } from "../../util/platform.js";
13
+ import { getDbPath } from "../../util/layout.js";
14
14
  import { readActiveConversations } from "../active-conversations.js";
15
15
 
16
16
  function openWriter(): Database {
@@ -2,7 +2,7 @@ import { mkdirSync, writeFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { describe, expect, test } from "bun:test";
4
4
 
5
- import { getDataDir, getDbPath } from "../../util/platform.js";
5
+ import { getDataDir, getDbPath } from "../../util/layout.js";
6
6
  import { getTrackedDataFiles, parseFincoreJson } from "../page-cache.js";
7
7
 
8
8
  describe("parseFincoreJson", () => {
@@ -9,7 +9,7 @@ import { mkdirSync, readdirSync, rmSync, writeFileSync } from "node:fs";
9
9
  import { dirname, join } from "node:path";
10
10
  import { beforeEach, describe, expect, test } from "bun:test";
11
11
 
12
- import { getMonitoringDataDir } from "../../util/platform.js";
12
+ import { getMonitoringDataDir } from "../../util/layout.js";
13
13
  import { getDaemonHeartbeatPath } from "../daemon-heartbeat.js";
14
14
  import type { ResourceSample } from "../resource-sample-types.js";
15
15
  import {
@@ -9,7 +9,7 @@ import { readFileSync } from "node:fs";
9
9
  import { join } from "node:path";
10
10
  import { afterEach, describe, expect, test } from "bun:test";
11
11
 
12
- import { getWorkspaceDir } from "../../util/platform.js";
12
+ import { getWorkspaceDir } from "../../util/layout.js";
13
13
  import {
14
14
  _resetGitServiceRegistry,
15
15
  getAllWorkspaceGitServices,
@@ -15,7 +15,7 @@
15
15
 
16
16
  import { Database } from "bun:sqlite";
17
17
 
18
- import { getDbPath } from "../util/platform.js";
18
+ import { getDbPath } from "../util/layout.js";
19
19
 
20
20
  /** Cap on entries recorded per sample so a pathological burst stays bounded. */
21
21
  const MAX_ENTRIES = 20;
@@ -8,9 +8,9 @@
8
8
  * binds them to the monitor's PID path and entry point.
9
9
  */
10
10
 
11
+ import { getMonitoringPidPath } from "../util/layout.js";
11
12
  import { getLogger } from "../util/logger.js";
12
13
  import { MONITOR_OOM_SCORE_ADJ } from "../util/oom-priority.js";
13
- import { getMonitoringPidPath } from "../util/platform.js";
14
14
  import {
15
15
  probeWorkerPidFile,
16
16
  spawnWorkerProcess,
@@ -15,7 +15,7 @@
15
15
  import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
16
16
  import { dirname, join } from "node:path";
17
17
 
18
- import { getMonitoringDataDir } from "../util/platform.js";
18
+ import { getMonitoringDataDir } from "../util/layout.js";
19
19
 
20
20
  const BOOT_TIME_FILE = "daemon-boot-time";
21
21
 
@@ -21,7 +21,7 @@ import {
21
21
  } from "node:fs";
22
22
  import { dirname, join } from "node:path";
23
23
 
24
- import { getMonitoringDataDir } from "../util/platform.js";
24
+ import { getMonitoringDataDir } from "../util/layout.js";
25
25
 
26
26
  const HEARTBEAT_FILE = "daemon-heartbeat";
27
27
 
@@ -14,7 +14,7 @@ import { existsSync, readdirSync, statSync } from "node:fs";
14
14
  import { join } from "node:path";
15
15
  import { promisify } from "node:util";
16
16
 
17
- import { getDataDir, getDbPath } from "../util/platform.js";
17
+ import { getDataDir, getDbPath } from "../util/layout.js";
18
18
 
19
19
  const execFileAsync = promisify(execFile);
20
20
 
@@ -55,8 +55,8 @@ import { getConfigReadOnly } from "../config/loader.js";
55
55
  import type { PluginUpdatesConfig } from "../config/schemas/plugin-updates.js";
56
56
  import { cliIpcCall } from "../ipc/cli-client.js";
57
57
  import { isPluginDisabled } from "../plugins/disabled-state.js";
58
+ import { getMonitoringDataDir } from "../util/layout.js";
58
59
  import { getLogger } from "../util/logger.js";
59
- import { getMonitoringDataDir } from "../util/platform.js";
60
60
 
61
61
  const log = getLogger("plugin-auto-update");
62
62
 
@@ -155,12 +155,6 @@ function tracksCuratedSource(inspection: PluginInspection): boolean {
155
155
  if (!remote) {
156
156
  return false;
157
157
  }
158
- if (source.kind === "local") {
159
- return remote.kind === "local" && source.path === remote.path;
160
- }
161
- if (remote.kind === "local") {
162
- return false;
163
- }
164
158
  return (
165
159
  `${source.owner}/${source.repo}`.toLowerCase() ===
166
160
  remote.repo.toLowerCase() && (source.path ?? "") === remote.path
@@ -42,8 +42,8 @@ import {
42
42
  readSourceVersions,
43
43
  SOURCE_VERSIONS_FORMAT,
44
44
  } from "../plugins/source-versions.js";
45
+ import { getMonitoringDataDir } from "../util/layout.js";
45
46
  import { getLogger } from "../util/logger.js";
46
- import { getMonitoringDataDir } from "../util/platform.js";
47
47
 
48
48
  const log = getLogger("plugin-source-watch");
49
49
 
@@ -10,8 +10,8 @@
10
10
  import { existsSync } from "node:fs";
11
11
  import { Database } from "bun:sqlite";
12
12
 
13
+ import { getDbPath } from "../../util/layout.js";
13
14
  import { getLogger } from "../../util/logger.js";
14
- import { getDbPath } from "../../util/platform.js";
15
15
  import { readDaemonBootTime } from "../daemon-boot-time.js";
16
16
 
17
17
  const log = getLogger("recovery-db");
@@ -43,8 +43,8 @@ import {
43
43
  resolveContentRefPath,
44
44
  resolveMessageContentBlocks,
45
45
  } from "../../persistence/message-content-file.js";
46
+ import { getConversationsDir } from "../../util/layout.js";
46
47
  import { getLogger } from "../../util/logger.js";
47
- import { getConversationsDir } from "../../util/platform.js";
48
48
  import { openRecoveryDb } from "./db.js";
49
49
 
50
50
  const log = getLogger("recovery-inflight-content");
@@ -32,8 +32,8 @@ import {
32
32
  } from "../util/cgroup-memory.js";
33
33
  import { diffCounters } from "../util/counter-diff.js";
34
34
  import { getDiskUsageInfo } from "../util/disk-usage.js";
35
+ import { getMonitoringDataDir } from "../util/layout.js";
35
36
  import { getLogger } from "../util/logger.js";
36
- import { getMonitoringDataDir } from "../util/platform.js";
37
37
  import {
38
38
  listProcessTableAsync,
39
39
  type ProcessTableRow,
@@ -47,7 +47,6 @@ import { readActiveConversations } from "./active-conversations.js";
47
47
  import { readDaemonHeartbeat } from "./daemon-heartbeat.js";
48
48
  import { topProcessesByFd } from "./file-descriptors.js";
49
49
  import { sweepInheritedOomProtection } from "./oom-inheritance-sweep.js";
50
- import { createOomKillReporter } from "./oom-kill-reporter.js";
51
50
  import { getTrackedDataFiles, readFileResidency } from "./page-cache.js";
52
51
  import { topProcessesByMemory } from "./process-memory.js";
53
52
  import {
@@ -139,8 +138,7 @@ export async function takeSample(
139
138
  }
140
139
  : null,
141
140
  activeConversations: readActiveConversations(),
142
- // Timestamped at the scan, not the tick start: the disk read above can
143
- // take seconds, and the CPU rate needs the counters' real interval.
141
+ // Timestamped at the process scan so CPU rates use the real interval.
144
142
  processes:
145
143
  processUsage?.sample(Date.now(), readDaemonHeartbeat(now)?.pid ?? null) ??
146
144
  null,
@@ -268,12 +266,9 @@ export function startResourceSampler(
268
266
  // thread's kernel state mid-stall when the heartbeat goes stale.
269
267
  const stallCapture = createStallCaptureMonitor(dataDir);
270
268
  const processUsage = createProcessUsageTracker();
271
- const oomKills = createOomKillReporter();
272
269
  let lastOomSweepAt = 0;
273
270
 
274
- // Skip ticks while a sample is in flight: the disk measurement can take
275
- // seconds (du over the workspace), and overlapping ticks would all delta
276
- // against the same stale prevSample and land in one burst.
271
+ // Skip overlapping samples so deltas always use the previous completed sample.
277
272
  let sampleInFlight = false;
278
273
  const tick = async () => {
279
274
  if (sampleInFlight) {
@@ -308,12 +303,6 @@ export function startResourceSampler(
308
303
  log.warn({ err }, "Daemon stall check failed");
309
304
  }
310
305
 
311
- try {
312
- await oomKills.check(sample, now, readDaemonHeartbeat(now)?.pid ?? null);
313
- } catch (err) {
314
- log.warn({ err }, "OOM kill report failed");
315
- }
316
-
317
306
  if (now - lastOomSweepAt >= OOM_SWEEP_INTERVAL_MS) {
318
307
  lastOomSweepAt = now;
319
308
  const daemonPid = readDaemonHeartbeat(now)?.pid;
@@ -19,8 +19,8 @@ import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
19
19
  import { readdir, readFile } from "node:fs/promises";
20
20
  import { join } from "node:path";
21
21
 
22
+ import { getMonitoringDataDir } from "../util/layout.js";
22
23
  import { getLogger } from "../util/logger.js";
23
- import { getMonitoringDataDir } from "../util/platform.js";
24
24
  import { readDaemonHeartbeat } from "./daemon-heartbeat.js";
25
25
  import { readStallWaitState, type StallWaitState } from "./proc-wait-state.js";
26
26
  import { prunePrefixedJsonFiles } from "./prune-snapshots.js";
@@ -2,49 +2,27 @@
2
2
  * Standalone entry point for the resource monitor as its own OS process.
3
3
  *
4
4
  * Spawned at every daemon startup (and on demand by `assistant monitoring
5
- * start`). Loads config, starts the sampling loop and the non-turn telemetry
6
- * reporter, writes a PID file, and stays alive until SIGTERM/SIGINT.
5
+ * start`). Loads config, starts the sampling loop, writes a PID file, and
6
+ * stays alive until SIGTERM/SIGINT.
7
7
  *
8
8
  * Running as a separate process — off the assistant's main event loop — is the
9
- * whole point: the sampler keeps recording during a main-thread freeze, its
10
- * on-disk ring buffer survives the OOM SIGKILL that resets all in-VM state,
11
- * and telemetry keeps flushing while the daemon is busy or stalled.
12
- * Periodic workspace git auto-commits also run here so large `git add` /
13
- * `git commit` work cannot stall the daemon event loop.
9
+ * whole point: the sampler keeps recording during a main-thread freeze, and
10
+ * its on-disk ring buffer survives the OOM SIGKILL that resets all in-VM
11
+ * state. Periodic workspace git auto-commits also run here so large `git add`
12
+ * / `git commit` work cannot stall the daemon event loop.
14
13
  */
15
14
 
16
15
  import { mkdirSync, writeFileSync } from "node:fs";
17
16
 
18
- import { startConsentRefresh } from "../cloud/consent-cache.js";
19
- import { rehydrateCloudCredentials } from "../config/cloud-rehydration.js";
20
17
  import { getConfig } from "../config/loader.js";
21
18
  import { resetDb } from "../persistence/db-connection.js";
22
19
  import { disableStreamSeqStamping } from "../runtime/assistant-stream-state.js";
23
- import {
24
- startConfigSnapshotReporter,
25
- stopConfigSnapshotReporter,
26
- } from "../telemetry/config-setting-snapshot.js";
27
- import {
28
- startMemoryTierReporter,
29
- stopMemoryTierReporter,
30
- } from "../telemetry/memory-tier-reporter.js";
31
- import {
32
- startMonitorUsageTelemetryReporter,
33
- stopUsageTelemetryReporter,
34
- } from "../telemetry/usage-telemetry-reporter.js";
20
+ import { getMonitoringDataDir, getMonitoringPidPath } from "../util/layout.js";
35
21
  import { getLogger } from "../util/logger.js";
36
- import {
37
- getMonitoringDataDir,
38
- getMonitoringPidPath,
39
- } from "../util/platform.js";
40
22
  import {
41
23
  cleanupWorkerPidFile,
42
24
  startWorkerPidFileGuard,
43
25
  } from "../util/worker-process.js";
44
- import {
45
- startDbIntegritySampler,
46
- stopDbIntegritySampler,
47
- } from "./db-integrity-sample.js";
48
26
  import {
49
27
  type FileDescriptorMonitorHandle,
50
28
  startFileDescriptorMonitor,
@@ -91,13 +69,6 @@ async function main(): Promise<void> {
91
69
  "Resource monitor process started",
92
70
  );
93
71
 
94
- // Rehydrate the cloud base URL and IDs from the credential store before
95
- // the telemetry reporter starts. The daemon does this in
96
- // initializeProvidersAndTools(); this standalone process must do it itself so
97
- // the non-turn telemetry it flushes carries the cloud organization and
98
- // user context instead of shipping with those fields empty.
99
- await rehydrateCloudCredentials();
100
-
101
72
  let sampler: ResourceSamplerHandle | null = null;
102
73
  let fdMonitor: FileDescriptorMonitorHandle | null = null;
103
74
  let mountWatch: MountWatchHandle | null = null;
@@ -122,28 +93,10 @@ async function main(): Promise<void> {
122
93
  }
123
94
  workspaceGitHeartbeat = null;
124
95
  recovery?.stop();
125
- stopConfigSnapshotReporter();
126
- stopMemoryTierReporter();
127
- stopDbIntegritySampler();
128
96
  autoUpdate?.stop();
129
97
  sourceWatch?.stop();
130
98
  mountWatch?.stop();
131
99
  fdMonitor?.stop();
132
- sampler?.stop();
133
- // Bounded final telemetry flush, mirroring the daemon's shutdown. This
134
- // is load-bearing for the opt-out contract: when share_analytics is
135
- // off, flush() is what advances this process's watermarks past rows
136
- // recorded during the opt-out window — without it, rows since the last
137
- // 5-minute cycle would ship after a later opt-in. When opted in, it
138
- // ships the tail instead of leaving it for the next boot.
139
- try {
140
- const timeout = new Promise<void>((_, reject) =>
141
- setTimeout(() => reject(new Error("Telemetry flush timed out")), 3_000),
142
- );
143
- await Promise.race([stopUsageTelemetryReporter(), timeout]);
144
- } catch (err) {
145
- log.warn({ err }, "Telemetry reporter shutdown failed (non-fatal)");
146
- }
147
100
  disposePidGuard?.();
148
101
  cleanupWorkerPidFile(pidPath);
149
102
  process.exit(0);
@@ -154,8 +107,8 @@ async function main(): Promise<void> {
154
107
 
155
108
  // Arm the identity guard before the monitoring subsystems start. Its on-arm
156
109
  // check runs synchronously, so a worker superseded during startup begins
157
- // shutting down here. shutdown() is async (it flushes telemetry), so bail
158
- // out explicitly rather than fall through and start the subsystems.
110
+ // shutting down here. shutdown() is async, so bail out explicitly rather
111
+ // than fall through and start the subsystems.
159
112
  disposePidGuard = startWorkerPidFileGuard(pidPath, {
160
113
  onEvicted: (reason) => {
161
114
  log.warn(
@@ -190,23 +143,6 @@ async function main(): Promise<void> {
190
143
  // `git commit` work stalls the event loop.
191
144
  workspaceGitHeartbeat = startWorkspaceGitHeartbeat();
192
145
 
193
- // Flush the non-turn telemetry sources from this process, off the daemon's
194
- // event loop. The reporter's share_analytics gate reads the consent cache,
195
- // so this process runs its own refresh loop.
196
- startConsentRefresh();
197
- startMonitorUsageTelemetryReporter();
198
-
199
- // Emit the tracked config settings into the config_setting pipeline this
200
- // process flushes.
201
- startConfigSnapshotReporter();
202
-
203
- // Emit the coarse memory tier as a periodic per-assistant watchdog heartbeat.
204
- startMemoryTierReporter();
205
-
206
- // Sample the database's structural integrity (at most daily) so the fleet's
207
- // corruption prevalence is measurable.
208
- startDbIntegritySampler();
209
-
210
146
  process.on("SIGUSR1", () => {
211
147
  log.info("Received SIGUSR1 — refreshing database connections");
212
148
  resetDb();
@@ -220,7 +156,6 @@ async function main(): Promise<void> {
220
156
  mountWatch?.stop();
221
157
  fdMonitor?.stop();
222
158
  sampler?.stop();
223
- stopDbIntegritySampler();
224
159
  cleanupWorkerPidFile(getMonitoringPidPath());
225
160
  process.exit(1);
226
161
  });
@@ -233,7 +168,6 @@ async function main(): Promise<void> {
233
168
  mountWatch?.stop();
234
169
  fdMonitor?.stop();
235
170
  sampler?.stop();
236
- stopDbIntegritySampler();
237
171
  cleanupWorkerPidFile(getMonitoringPidPath());
238
172
  process.exit(1);
239
173
  });
@@ -245,7 +179,6 @@ async function main(): Promise<void> {
245
179
  mountWatch?.stop();
246
180
  fdMonitor?.stop();
247
181
  sampler?.stop();
248
- stopDbIntegritySampler();
249
182
  cleanupWorkerPidFile(getMonitoringPidPath());
250
183
  });
251
184
  }
@@ -15,8 +15,8 @@
15
15
  * against the daemon's turn-boundary commits.
16
16
  */
17
17
 
18
+ import { getWorkspaceDir } from "../util/layout.js";
18
19
  import { getLogger } from "../util/logger.js";
19
- import { getWorkspaceDir } from "../util/platform.js";
20
20
  import { getWorkspaceGitService } from "../workspace/git-service.js";
21
21
  import {
22
22
  startWorkspaceHeartbeatService,
@@ -19,7 +19,7 @@
19
19
  * - Running identity verifiers
20
20
  */
21
21
 
22
- import { loadConfig } from "../config/loader.js";
22
+ import { getConfig } from "../config/loader.js";
23
23
  import { emitPostConnectNudge } from "../home/post-connect-feed.js";
24
24
  import { invalidateAssistantSuggestedPromptsCache } from "../home/suggested-prompts-cache.js";
25
25
  import type { TokenEndpointAuthMethod } from "../security/oauth2.js";
@@ -138,7 +138,7 @@ export async function orchestrateOAuthConnect(
138
138
  // them rather than relying on each entry point to check. The error matches
139
139
  // the not-found case above so a gated provider is indistinguishable from an
140
140
  // absent one, mirroring the provider routes.
141
- if (!isProviderVisible(providerRow, loadConfig())) {
141
+ if (!isProviderVisible(providerRow, getConfig())) {
142
142
  return {
143
143
  success: false,
144
144
  error: `No OAuth provider registered for "${options.service}". Ensure the provider is seeded in the database.`,
@@ -227,11 +227,11 @@ export async function orchestrateOAuthConnect(
227
227
  try {
228
228
  // Gateway transport needs a public ingress URL
229
229
  if (callbackTransport !== "loopback") {
230
- const { loadConfig } = await import("../config/loader.js");
230
+ const { getConfig } = await import("../config/loader.js");
231
231
  const { getPublicBaseUrl } =
232
232
  await import("../inbound/public-ingress-urls.js");
233
233
  try {
234
- getPublicBaseUrl(loadConfig());
234
+ getPublicBaseUrl(getConfig());
235
235
  } catch {
236
236
  return {
237
237
  success: false,
@@ -29,7 +29,7 @@ import {
29
29
  getWorkspaceRoutesDir,
30
30
  getWorkspaceToolsDir,
31
31
  getWorkspaceWorkflowsDir,
32
- } from "../util/platform.js";
32
+ } from "../util/layout.js";
33
33
  import {
34
34
  type ApprovalContext,
35
35
  DefaultApprovalPolicy,
@@ -12,7 +12,7 @@ import {
12
12
  getWorkspaceSystemPromptDir,
13
13
  getWorkspaceToolsDir,
14
14
  getWorkspaceWorkflowsDir,
15
- } from "../util/platform.js";
15
+ } from "../util/layout.js";
16
16
 
17
17
  /**
18
18
  * Resolve a path to its canonical form. A trailing (possibly dangling)