@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
@@ -9,7 +9,7 @@
9
9
  import { INTEGRATION_CATEGORIES } from "@mycadet/service-contracts/integration-categories";
10
10
  import { z } from "zod";
11
11
 
12
- import { loadConfig } from "../../config/loader.js";
12
+ import { getConfig } from "../../config/loader.js";
13
13
  import { getOAuthCallbackUrl } from "../../inbound/public-ingress-urls.js";
14
14
  import {
15
15
  deleteApp,
@@ -66,7 +66,7 @@ function serializeProviderFull(row: ReturnType<typeof getProvider>) {
66
66
 
67
67
  function handleListProviders({ queryParams = {} }: RouteHandlerArgs) {
68
68
  const rows = listProviders();
69
- const config = loadConfig();
69
+ const config = getConfig();
70
70
  const visibleRows = rows.filter((r) => isProviderVisible(r, config));
71
71
  let serialized = visibleRows
72
72
  .map((row) => serializeProviderSummary(row))
@@ -91,7 +91,7 @@ function handleGetProvider({ pathParams = {} }: RouteHandlerArgs) {
91
91
  );
92
92
  }
93
93
 
94
- const config = loadConfig();
94
+ const config = getConfig();
95
95
  if (!isProviderVisible(row, config)) {
96
96
  throw new NotFoundError(
97
97
  `No OAuth provider registered for "${providerKey}"`,
@@ -203,7 +203,7 @@ function handleUpdateProvider({
203
203
  );
204
204
  }
205
205
 
206
- if (!isProviderVisible(existing, loadConfig())) {
206
+ if (!isProviderVisible(existing, getConfig())) {
207
207
  throw new NotFoundError(
208
208
  `No OAuth provider registered for "${providerKey}"`,
209
209
  );
@@ -341,7 +341,7 @@ async function handleDeleteProvider({
341
341
  );
342
342
  }
343
343
 
344
- if (!isProviderVisible(existing, loadConfig())) {
344
+ if (!isProviderVisible(existing, getConfig())) {
345
345
  throw new NotFoundError(
346
346
  `No OAuth provider registered for "${providerKey}"`,
347
347
  );
@@ -54,7 +54,6 @@ import {
54
54
  } from "../../cli/lib/plugin-catalog-cache.js";
55
55
  import { resolvePluginSourceFromCatalog } from "../../cli/lib/plugin-catalog-resolve.js";
56
56
  import {
57
- DEFAULT_PIN_HISTORY_LIMIT,
58
57
  DEFAULT_PLUGIN_REF,
59
58
  type PluginUpgradeStrategy,
60
59
  } from "../../cli/lib/plugin-constants.js";
@@ -63,11 +62,6 @@ import {
63
62
  PluginDetailsNotFoundError,
64
63
  } from "../../cli/lib/plugin-details.js";
65
64
  import { readValidatedPluginIcon } from "../../cli/lib/plugin-icon-file.js";
66
- import {
67
- listPinHistory,
68
- PluginPinHistoryError,
69
- resolvePinToMarketplaceCommit,
70
- } from "../../cli/lib/plugin-pin-history.js";
71
65
  import {
72
66
  assertValidSearchPattern,
73
67
  filterPluginCatalog,
@@ -101,8 +95,8 @@ import {
101
95
  reconcilePluginSourcesNow,
102
96
  } from "../../plugins/mtime-cache.js";
103
97
  import { getLocalCategorySlugs } from "../../skills/categories-cache.js";
98
+ import { getWorkspacePluginsDir } from "../../util/layout.js";
104
99
  import { getLogger } from "../../util/logger.js";
105
- import { getWorkspacePluginsDir } from "../../util/platform.js";
106
100
  import { ACTOR_PRINCIPALS } from "../auth/route-policy.js";
107
101
  import {
108
102
  getOriginClientId,
@@ -383,7 +377,7 @@ const pluginInstallRequestSchema = z.object({
383
377
  .string()
384
378
  .optional()
385
379
  .describe(
386
- "Install a specific reviewed marketplace pin (full commit SHA) instead of the current one. The pin is validated against the plugin's marketplace pin history (`GET /v1/plugins/:name/versions`) and installed from the marketplace revision that introduced it; an unreviewed SHA is rejected. Use this to roll a plugin back to an older reviewed version.",
380
+ "Install a specific reviewed pin (full commit SHA). The pin must be the revision the catalog currently holds for the plugin; an unreviewed or older SHA is rejected.",
387
381
  ),
388
382
  });
389
383
 
@@ -399,32 +393,6 @@ const pluginInstallResponseSchema = z.object({
399
393
  ref: z.string().describe("Git ref the plugin was fetched from."),
400
394
  });
401
395
 
402
- const pluginPinHistoryEntrySchema = z.object({
403
- pin: z
404
- .string()
405
- .describe("Plugin commit SHA pinned at this point in marketplace history."),
406
- marketplaceCommit: z
407
- .string()
408
- .describe(
409
- "Marketplace-manifest commit to install this pin from (the newest commit carrying it).",
410
- ),
411
- promotedAt: z
412
- .string()
413
- .nullable()
414
- .describe(
415
- "ISO-8601 committer date (UTC) of the marketplace commit that promoted this pin; null when unreadable.",
416
- ),
417
- current: z
418
- .boolean()
419
- .describe("True for the pin currently active on the default branch."),
420
- });
421
-
422
- const pluginVersionsResponseSchema = z
423
- .array(pluginPinHistoryEntrySchema)
424
- .describe(
425
- "Distinct marketplace pins a plugin has been promoted to, newest first; the first entry is the current pin. Empty when the plugin has no resolvable history.",
426
- );
427
-
428
396
  const fingerprintComparisonSchema = z
429
397
  .object({
430
398
  modified: z
@@ -1227,32 +1195,6 @@ async function handleGetPluginDetails({
1227
1195
  // Handler — install
1228
1196
  // ---------------------------------------------------------------------------
1229
1197
 
1230
- /**
1231
- * Resolve the marketplace ref an install should read from. With no `pin`, that
1232
- * is the default reviewed branch. With a `pin`, it is the marketplace commit
1233
- * that introduced that pin — but only when the pin appears in the plugin's
1234
- * reviewed history; an unreviewed SHA is rejected as a bad request so the route
1235
- * never installs an unvetted revision.
1236
- */
1237
- async function resolveInstallMarketplaceRef(
1238
- name: string,
1239
- pin: string | undefined,
1240
- ): Promise<string> {
1241
- if (!pin) {
1242
- return DEFAULT_PLUGIN_REF;
1243
- }
1244
- const entry = await resolvePinToMarketplaceCommit(name, pin, {
1245
- fetch: globalThis.fetch.bind(globalThis),
1246
- });
1247
- if (!entry) {
1248
- throw new BadRequestError(
1249
- `"${pin}" is not a reviewed marketplace pin for "${name}". ` +
1250
- `Use GET /v1/plugins/${name}/versions to list installable pins.`,
1251
- );
1252
- }
1253
- return entry.marketplaceCommit;
1254
- }
1255
-
1256
1198
  async function handleInstallPlugin({ body = {}, headers }: RouteHandlerArgs) {
1257
1199
  const rawName = typeof body.name === "string" ? body.name : "";
1258
1200
  if (!rawName) {
@@ -1264,15 +1206,14 @@ async function handleInstallPlugin({ body = {}, headers }: RouteHandlerArgs) {
1264
1206
  // The install source is never taken raw from the request: a caller-supplied
1265
1207
  // ref would let any `settings.write` principal install from an unreviewed
1266
1208
  // revision (a PR branch, fork ref, ...) whose manifest could carry attacker
1267
- // code the loader then dynamically imports. The default (no-pin) install
1268
- // resolves owner/repo/ref from the gated catalog — platform-first, or the
1269
- // bundled manifest when platform features are disabled — which is the same
1270
- // reviewed source of truth `handleSearchPlugins` advertises, and installs via
1271
- // a trusted pre-resolved source (no direct `plugins/marketplace.json` fetch).
1272
- // A `pin` is honored by mapping it — server-side — to the marketplace commit
1273
- // that introduced it through the plugin's reviewed pin history; an unreviewed
1274
- // SHA is refused. Operators who need an unreviewed revision use the local
1275
- // CLI's `assistant plugins install --pin <sha> --allow-unreviewed`.
1209
+ // code the loader then dynamically imports. Every install resolves
1210
+ // owner/repo/ref from the gated catalog — the same reviewed source of truth
1211
+ // `handleSearchPlugins` advertises — and installs via a trusted
1212
+ // pre-resolved source. A `pin` is accepted only when it is the revision the
1213
+ // catalog currently holds; older reviewed pins cannot be resolved without
1214
+ // the retired local marketplace manifest, so they are refused. Operators who
1215
+ // need an unreviewed revision use the local
1216
+ // CLI's `assistant plugins install <owner/repo> --pin <sha> --allow-unreviewed`.
1276
1217
  //
1277
1218
  // No `confirmStaged` consent gate: the daemon route is unattended by design
1278
1219
  // (there is no interactive surface to prompt on). Declared schedules the
@@ -1286,9 +1227,29 @@ async function handleInstallPlugin({ body = {}, headers }: RouteHandlerArgs) {
1286
1227
  const name = sanitizePluginName(rawName);
1287
1228
  let result;
1288
1229
  if (pin) {
1289
- const marketplaceRef = await resolveInstallMarketplaceRef(name, pin);
1230
+ // Without the old local marketplace manifest there is no pin history to
1231
+ // resolve against: the only reviewed revision is the one the live
1232
+ // catalog currently pins, so a mismatched SHA is refused outright.
1233
+ const source = await resolvePluginSourceFromCatalog(name, {
1234
+ fetch: globalThis.fetch.bind(globalThis),
1235
+ });
1236
+ if (!source || source.kind !== "github" || source.ref !== pin) {
1237
+ throw new BadRequestError(
1238
+ `"${pin}" is not the pin the catalog currently holds for "${name}". ` +
1239
+ "Rolling back to older reviewed pins is no longer supported.",
1240
+ );
1241
+ }
1290
1242
  result = await installPlugin(
1291
- { name, ref: marketplaceRef, force },
1243
+ {
1244
+ name,
1245
+ force,
1246
+ trustedSource: {
1247
+ owner: source.owner,
1248
+ repo: source.repo,
1249
+ rootPath: source.path,
1250
+ ref: source.ref,
1251
+ },
1252
+ },
1292
1253
  { fetch: globalThis.fetch.bind(globalThis) },
1293
1254
  );
1294
1255
  } else {
@@ -1302,15 +1263,12 @@ async function handleInstallPlugin({ body = {}, headers }: RouteHandlerArgs) {
1302
1263
  {
1303
1264
  name,
1304
1265
  force,
1305
- trustedSource:
1306
- source.kind === "local"
1307
- ? source
1308
- : {
1309
- owner: source.owner,
1310
- repo: source.repo,
1311
- rootPath: source.path,
1312
- ref: source.ref,
1313
- },
1266
+ trustedSource: {
1267
+ owner: source.owner,
1268
+ repo: source.repo,
1269
+ rootPath: source.path,
1270
+ ref: source.ref,
1271
+ },
1314
1272
  },
1315
1273
  { fetch: globalThis.fetch.bind(globalThis) },
1316
1274
  );
@@ -1349,10 +1307,6 @@ async function handleInstallPlugin({ body = {}, headers }: RouteHandlerArgs) {
1349
1307
  if (err instanceof PluginSourceUnavailableError) {
1350
1308
  throw new ServiceUnavailableError(err.message);
1351
1309
  }
1352
- // The pin-history read hits GitHub too; treat its failures as retryable.
1353
- if (err instanceof PluginPinHistoryError) {
1354
- throw new ServiceUnavailableError(err.message);
1355
- }
1356
1310
  // A rate-limited or unavailable platform catalog (no stale fallback) is
1357
1311
  // transient — surface it as retryable rather than a misleading 500.
1358
1312
  if (err instanceof PluginCatalogUnavailableError) {
@@ -1393,45 +1347,6 @@ async function handleInspectPlugin({ pathParams = {} }: RouteHandlerArgs) {
1393
1347
  }
1394
1348
  }
1395
1349
 
1396
- // ---------------------------------------------------------------------------
1397
- // Handler — versions (marketplace pin history)
1398
- // ---------------------------------------------------------------------------
1399
-
1400
- async function handlePluginVersions({
1401
- pathParams = {},
1402
- queryParams = {},
1403
- }: RouteHandlerArgs) {
1404
- const rawName = pathParams.name ?? "";
1405
-
1406
- let limit: number | undefined;
1407
- if (queryParams.limit !== undefined) {
1408
- const parsed = Number.parseInt(queryParams.limit, 10);
1409
- if (!Number.isInteger(parsed) || parsed < 1) {
1410
- throw new BadRequestError("`limit` must be a positive integer.");
1411
- }
1412
- limit = parsed;
1413
- }
1414
-
1415
- try {
1416
- return await listPinHistory(
1417
- rawName,
1418
- { fetch: globalThis.fetch.bind(globalThis) },
1419
- limit !== undefined ? { limit } : {},
1420
- );
1421
- } catch (err) {
1422
- if (err instanceof InvalidPluginNameError) {
1423
- throw new BadRequestError(err.message);
1424
- }
1425
- // The history read hits GitHub; its failures are retryable upstream errors.
1426
- if (err instanceof PluginPinHistoryError) {
1427
- throw new ServiceUnavailableError(err.message);
1428
- }
1429
- throw new InternalError(
1430
- err instanceof Error ? err.message : "plugin versions failed",
1431
- );
1432
- }
1433
- }
1434
-
1435
1350
  // ---------------------------------------------------------------------------
1436
1351
  // Handler — diff
1437
1352
  // ---------------------------------------------------------------------------
@@ -2004,46 +1919,6 @@ export const ROUTES: RouteDefinition[] = [
2004
1919
  },
2005
1920
  handler: handleInspectPlugin,
2006
1921
  },
2007
- {
2008
- operationId: "plugins_versions",
2009
- endpoint: "plugins/:name/versions",
2010
- method: "GET",
2011
- policy: {
2012
- requiredScopes: ["settings.read"],
2013
- allowedPrincipalTypes: ACTOR_PRINCIPALS,
2014
- },
2015
- summary: "List a plugin's reviewed marketplace pins",
2016
- description: `Report the distinct marketplace pins a plugin has been promoted to over time, newest first (the first entry is the current pin), capped at \`limit\` (default ${DEFAULT_PIN_HISTORY_LIMIT}). The curated \`marketplace.json\` stores only the current pin, so this is reconstructed from the manifest's own commit history on the default branch — every entry is therefore a reviewed, known-good revision. Pair with \`POST /v1/plugins/install\`'s \`pin\` field to roll a plugin back to an older reviewed version. An unknown name (never in the manifest) returns an empty array, not 404.`,
2017
- tags: ["plugins"],
2018
- pathParams: [
2019
- {
2020
- name: "name",
2021
- type: "string",
2022
- description:
2023
- "Install name. Must match the kebab-case name accepted by `assistant plugins install`.",
2024
- },
2025
- ],
2026
- queryParams: [
2027
- {
2028
- name: "limit",
2029
- type: "string",
2030
- required: false,
2031
- description: `Maximum number of pins to return (positive integer; default ${DEFAULT_PIN_HISTORY_LIMIT}).`,
2032
- },
2033
- ],
2034
- responseBody: pluginVersionsResponseSchema,
2035
- additionalResponses: {
2036
- "400": {
2037
- description:
2038
- "The plugin name failed sanitization, or `limit` was not a positive integer.",
2039
- },
2040
- "503": {
2041
- description:
2042
- "The marketplace pin history could not be read from GitHub (rate-limited or upstream error); retryable.",
2043
- },
2044
- },
2045
- handler: handlePluginVersions,
2046
- },
2047
1922
  {
2048
1923
  operationId: "plugins_diff",
2049
1924
  endpoint: "plugins/:name/diff",
@@ -35,8 +35,8 @@ import {
35
35
  rescanRuns,
36
36
  runProfilerSweep,
37
37
  } from "../../daemon/profiler-run-store.js";
38
+ import { getProfilerRunDir } from "../../util/layout.js";
38
39
  import { getLogger } from "../../util/logger.js";
39
- import { getProfilerRunDir } from "../../util/platform.js";
40
40
  import { GATEWAY_PRINCIPALS } from "../auth/route-policy.js";
41
41
  import { createTarGz, MAX_ARCHIVE_BYTES } from "./archive-utils.js";
42
42
  import {
@@ -22,8 +22,8 @@ import {
22
22
  stopRouteHostWorkerProcess,
23
23
  } from "../../routes/control.js";
24
24
  import { ROUTE_HOST_PROC_NAME } from "../../routes/route-host-protocol.js";
25
+ import { getProcPidPath } from "../../util/layout.js";
25
26
  import { getLogger } from "../../util/logger.js";
26
- import { getProcPidPath } from "../../util/platform.js";
27
27
  import { ACTOR_PRINCIPALS } from "../auth/route-policy.js";
28
28
  import { InternalError } from "./errors.js";
29
29
  import type { RouteDefinition } from "./types.js";
@@ -15,7 +15,7 @@ import { z } from "zod";
15
15
 
16
16
  import { credentialKey } from "../../security/credential-key.js";
17
17
  import { getSecureKeyAsync } from "../../security/secure-keys.js";
18
- import { getWorkspaceDir } from "../../util/platform.js";
18
+ import { getWorkspaceDir } from "../../util/layout.js";
19
19
  import { ACTOR_PRINCIPALS } from "../auth/route-policy.js";
20
20
  import { BadRequestError } from "./errors.js";
21
21
  import type { RouteDefinition, RouteHandlerArgs } from "./types.js";
@@ -54,8 +54,8 @@ import { getScheduleUsageSummaries } from "../../schedule/schedule-usage-store.j
54
54
  import { buildWakeScheduleOptions } from "../../schedule/wake-schedule-options.js";
55
55
  import { initializeTools } from "../../tools/registry.js";
56
56
  import { UserError } from "../../util/errors.js";
57
+ import { getWorkspacePluginsDir } from "../../util/layout.js";
57
58
  import { getLogger } from "../../util/logger.js";
58
- import { getWorkspacePluginsDir } from "../../util/platform.js";
59
59
  import { normalizeCapabilityManifest } from "../../workflows/capabilities.js";
60
60
  import { getWorkflowRunManager } from "../../workflows/run-manager.js";
61
61
  import { isOwnerCaller } from "../auth/owner-caller.js";
@@ -18,8 +18,8 @@ import {
18
18
  spawnScheduleWorkerProcess,
19
19
  stopScheduleWorkerProcess,
20
20
  } from "../../schedule/worker-control.js";
21
+ import { getScheduleWorkerPidPath } from "../../util/layout.js";
21
22
  import { getLogger } from "../../util/logger.js";
22
- import { getScheduleWorkerPidPath } from "../../util/platform.js";
23
23
  import { ACTOR_PRINCIPALS } from "../auth/route-policy.js";
24
24
  import { InternalError } from "./errors.js";
25
25
  import type { RouteDefinition } from "./types.js";
@@ -69,8 +69,8 @@ import {
69
69
  injectActivityField,
70
70
  } from "../../tools/schema-transforms.js";
71
71
  import { pathExists } from "../../util/fs.js";
72
+ import { getWorkspaceDir } from "../../util/layout.js";
72
73
  import { getLogger } from "../../util/logger.js";
73
- import { getWorkspaceDir } from "../../util/platform.js";
74
74
  import { broadcastMessage } from "../assistant-event-hub.js";
75
75
  import { ACTOR_PRINCIPALS } from "../auth/route-policy.js";
76
76
  import { BadRequestError, InternalError, NotFoundError } from "./errors.js";
@@ -18,7 +18,7 @@ import { join } from "node:path";
18
18
 
19
19
  import { z } from "zod";
20
20
 
21
- import { getSoundsDir } from "../../util/platform.js";
21
+ import { getSoundsDir } from "../../util/layout.js";
22
22
  import { ACTOR_PRINCIPALS } from "../auth/route-policy.js";
23
23
  import { publishSoundsConfigUpdated } from "../sync/resource-sync-events.js";
24
24
  import { BadRequestError } from "./errors.js";
@@ -22,13 +22,11 @@ import {
22
22
  } from "../../daemon/conversation-registry.js";
23
23
  import { getOrCreateConversation } from "../../daemon/conversation-store.js";
24
24
  import {
25
- parseActivationMomentTag,
26
25
  parseStoredActions,
27
26
  type StoredSurfaceAction,
28
27
  } from "../../daemon/conversation-surface-state.js";
29
28
  import { isRowVisibleToUntrustedActor } from "../../daemon/message-provenance.js";
30
29
  import { rawAll, rawGet } from "../../persistence/raw-query.js";
31
- import type { ActivationMomentParam } from "../../telemetry/activation-funnel.js";
32
30
 
33
31
  /**
34
32
  * Resolve the {@link Conversation} that owns the given surface.
@@ -97,7 +95,6 @@ export interface PersistedSurfaceState {
97
95
  data: Record<string, unknown>;
98
96
  title?: string;
99
97
  actions?: StoredSurfaceAction[];
100
- activationMoment?: ActivationMomentParam;
101
98
  }
102
99
 
103
100
  /**
@@ -193,16 +190,13 @@ export function findPersistedSurfaceState(
193
190
  }
194
191
  // Serve verbatim: preserve the persisted `surfaceType` string and
195
192
  // `data` object as-is (the client parses them), applying only the same
196
- // light shared parsing for `actions` and the daemon-only
197
- // `activationMoment` tag that the live restore uses.
198
- const activationMoment = parseActivationMomentTag(b.activationMoment);
193
+ // light shared parsing for `actions` that the live restore uses.
199
194
  return {
200
195
  surfaceType:
201
196
  typeof b.surfaceType === "string" ? b.surfaceType : "dynamic_page",
202
197
  data: coerceSurfaceDataRecord(b.data),
203
198
  title: typeof b.title === "string" ? b.title : undefined,
204
199
  actions: parseStoredActions(b.actions),
205
- ...(activationMoment ? { activationMoment } : {}),
206
200
  };
207
201
  }
208
202
  }
@@ -339,9 +339,7 @@ export class UserRouteDispatcher {
339
339
  ): Promise<Response> {
340
340
  try {
341
341
  return await Promise.race([
342
- Promise.resolve(
343
- handler(request, buildDeprecatedRouteContext(routePath)),
344
- ),
342
+ Promise.resolve(handler(request, buildDeprecatedRouteContext())),
345
343
  new Promise<never>((_, reject) =>
346
344
  setTimeout(
347
345
  () => reject(new Error("Handler timed out")),
@@ -19,7 +19,7 @@ import { fileURLToPath, pathToFileURL } from "node:url";
19
19
 
20
20
  import { snapshotPluginSource } from "../../plugins/source-fingerprint.js";
21
21
  import { evictModule } from "../../plugins/surface-import.js";
22
- import { getWorkspaceRoutesDir } from "../../util/platform.js";
22
+ import { getWorkspaceRoutesDir } from "../../util/layout.js";
23
23
 
24
24
  /**
25
25
  * Directory whose source files must stay mutually consistent with this
@@ -35,7 +35,7 @@ import { isPluginDisabled } from "../../plugins/disabled-state.js";
35
35
  import {
36
36
  getWorkspacePluginsDir,
37
37
  getWorkspaceRoutesDir,
38
- } from "../../util/platform.js";
38
+ } from "../../util/layout.js";
39
39
 
40
40
  /** Supported file extensions for handler modules (`.js` preferred over `.ts`). */
41
41
  export const HANDLER_EXTENSIONS = [".ts", ".js"] as const;
@@ -13,7 +13,7 @@ import { z } from "zod";
13
13
 
14
14
  import { getConfig } from "../../config/loader.js";
15
15
  import { getPublicBaseUrl } from "../../inbound/public-ingress-urls.js";
16
- import { getWorkspaceDir, getWorkspaceRoutesDir } from "../../util/platform.js";
16
+ import { getWorkspaceDir, getWorkspaceRoutesDir } from "../../util/layout.js";
17
17
  import { LOCAL_PRINCIPALS } from "../auth/route-policy.js";
18
18
  import { NotFoundError } from "./errors.js";
19
19
  import { parseBody } from "./parse-body.js";
@@ -5,7 +5,7 @@
5
5
 
6
6
  import { z } from "zod";
7
7
 
8
- import { getWorkspaceDir } from "../../util/platform.js";
8
+ import { getWorkspaceDir } from "../../util/layout.js";
9
9
  import { getWorkspaceGitService } from "../../workspace/git-service.js";
10
10
  import { GATEWAY_PRINCIPALS } from "../auth/route-policy.js";
11
11
  import { BadRequestError } from "./errors.js";
@@ -1,6 +1,6 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
2
 
3
- import { getWorkspacePromptPath } from "../../util/platform.js";
3
+ import { getWorkspacePromptPath } from "../../util/layout.js";
4
4
 
5
5
  function readWorkspaceFile(name: string): string {
6
6
  try {
@@ -19,7 +19,7 @@ import { basename, dirname, join } from "node:path";
19
19
 
20
20
  import { z } from "zod";
21
21
 
22
- import { getWorkspaceDir } from "../../util/platform.js";
22
+ import { getWorkspaceDir } from "../../util/layout.js";
23
23
  import { ACTOR_PRINCIPALS } from "../auth/route-policy.js";
24
24
  import { publishSoundsConfigUpdated } from "../sync/resource-sync-events.js";
25
25
  import {
@@ -10,7 +10,7 @@ import { dirname, resolve, sep } from "node:path";
10
10
 
11
11
  import { z } from "zod";
12
12
 
13
- import { getWorkspaceDir } from "../../util/platform.js";
13
+ import { getWorkspaceDir } from "../../util/layout.js";
14
14
  import { BadRequestError, ConflictError } from "./errors.js";
15
15
 
16
16
  /**
@@ -6,7 +6,7 @@ import {
6
6
  SYNC_TAGS,
7
7
  } from "../../daemon/message-types/sync.js";
8
8
  import { resolveConversationTitle } from "../../i18n/index.js";
9
- import { getAvatarImagePath } from "../../util/platform.js";
9
+ import { getAvatarImagePath } from "../../util/layout.js";
10
10
  import { broadcastMessage } from "../assistant-event-hub.js";
11
11
  import { isStreamSeqStampingDisabled } from "../assistant-stream-state.js";
12
12
  import { publishSyncInvalidation } from "./sync-publisher.js";
@@ -17,7 +17,7 @@ import {
17
17
  test,
18
18
  } from "bun:test";
19
19
 
20
- import { getWorkspacePluginsDir } from "../../util/platform.js";
20
+ import { getWorkspacePluginsDir } from "../../util/layout.js";
21
21
  import {
22
22
  declarationExistsOnDisk,
23
23
  parsePluginScheduleDeclarations,
@@ -68,7 +68,7 @@ import { setOverridesForTesting } from "../../__tests__/feature-flag-test-helper
68
68
  import { getDb } from "../../persistence/db-connection.js";
69
69
  import { initializeDb } from "../../persistence/db-init.js";
70
70
  import { listInstalledPluginDirs } from "../../plugins/installed-plugin-dirs.js";
71
- import { getWorkspacePluginsDir } from "../../util/platform.js";
71
+ import { getWorkspacePluginsDir } from "../../util/layout.js";
72
72
  import {
73
73
  reconcilePluginSchedules,
74
74
  resetDefinitionErrorEmitGuardForTests,
@@ -29,7 +29,7 @@
29
29
  import { join } from "node:path";
30
30
 
31
31
  import { isPluginDirActivated } from "../plugins/mtime-cache.js";
32
- import { getWorkspacePluginsDir } from "../util/platform.js";
32
+ import { getWorkspacePluginsDir } from "../util/layout.js";
33
33
  import { declarationExistsOnDisk } from "./plugin-schedule-declarations.js";
34
34
 
35
35
  /**
@@ -31,7 +31,7 @@ import { isPluginDisabled } from "../plugins/disabled-state.js";
31
31
  import { parsePluginManifest } from "../plugins/external-plugin-loader.js";
32
32
  import { isInsidePluginRoot } from "../plugins/installed-plugin-dirs.js";
33
33
  import { FRONTMATTER_REGEX } from "../skills/frontmatter.js";
34
- import { getWorkspacePluginsDir } from "../util/platform.js";
34
+ import { getWorkspacePluginsDir } from "../util/layout.js";
35
35
  import {
36
36
  computeNextRunAt,
37
37
  isSingleFireRRule,
@@ -4,8 +4,8 @@ import {
4
4
  buildShellSpawnFlags,
5
5
  terminateProcessTree,
6
6
  } from "../util/host-process.js";
7
+ import { getWorkspaceDir } from "../util/layout.js";
7
8
  import { getLogger } from "../util/logger.js";
8
- import { getWorkspaceDir } from "../util/platform.js";
9
9
  import { safeStringSlice } from "../util/unicode.js";
10
10
 
11
11
  const log = getLogger("run-script");
@@ -14,6 +14,7 @@ import { emitNotificationSignal } from "../notifications/emit-signal.js";
14
14
  import { emitScheduleResultNotification } from "../notifications/schedule-result-producer.js";
15
15
  import { getConversation } from "../persistence/conversation-crud.js";
16
16
  import { isLifecycleQuiesced } from "../persistence/lifecycle-quiesce.js";
17
+ import type { TurnFailure } from "../persistence/turn-outcome.js";
17
18
  import { invalidateAssistantInferredItemsForConversation } from "../plugins/defaults/memory/task-memory-cleanup.js";
18
19
  import { dispatchProviderResolvable } from "../providers/provider-resolvability.js";
19
20
  import {
@@ -28,8 +29,6 @@ import {
28
29
  import { publishConversationListChanged } from "../runtime/sync/resource-sync-events.js";
29
30
  import { runSequencesOnce } from "../sequence/engine.js";
30
31
  import { getSubagentManager } from "../subagent/index.js";
31
- import type { TurnFailure } from "../telemetry/turn-outcome.js";
32
- import { recordWatchdogEvent } from "../telemetry/watchdog-events-store.js";
33
32
  import {
34
33
  cancelBackgroundTools,
35
34
  hasBackgroundToolWork,
@@ -506,21 +505,12 @@ export function startScheduler(): SchedulerHandle {
506
505
  { pid },
507
506
  "Schedule worker was not running — respawned by watchdog",
508
507
  );
509
- recordWatchdogEvent({
510
- checkName: "schedule_worker_respawn",
511
- detail: { pid },
512
- });
513
508
  },
514
509
  onPersistentFailure: (consecutiveFailures, err) => {
515
510
  log.error(
516
511
  { err, consecutiveFailures },
517
512
  "Schedule worker repeatedly failed to respawn — schedules are paused",
518
513
  );
519
- recordWatchdogEvent({
520
- checkName: "schedule_worker_down",
521
- value: consecutiveFailures,
522
- detail: { consecutiveFailures },
523
- });
524
514
  emitScheduleWorkerDownNotification(consecutiveFailures);
525
515
  },
526
516
  });
@@ -8,8 +8,8 @@
8
8
  * path and entry point.
9
9
  */
10
10
 
11
+ import { getScheduleWorkerPidPath } from "../util/layout.js";
11
12
  import { getLogger } from "../util/logger.js";
12
- import { getScheduleWorkerPidPath } from "../util/platform.js";
13
13
  import {
14
14
  probeWorkerPidFile,
15
15
  spawnWorkerProcess,