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