@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,6 +9,6 @@
9
9
  "node": ">=20.12.0"
10
10
  },
11
11
  "peerDependencies": {
12
- "@mycadet/plugin-api": "^0.8.0"
12
+ "@mycadet/plugin-api": "^0.12.7"
13
13
  }
14
14
  }
@@ -23,7 +23,7 @@ import type { TrustContext } from "../../../daemon/trust-context-types.js";
23
23
  import {
24
24
  getConfigQuarantineNoticePath,
25
25
  getConfigValidationResetNoticePath,
26
- } from "../../../util/platform.js";
26
+ } from "../../../util/layout.js";
27
27
  import {
28
28
  type InjectionBlock,
29
29
  type Injector,
@@ -9,6 +9,6 @@
9
9
  "node": ">=20.12.0"
10
10
  },
11
11
  "peerDependencies": {
12
- "@mycadet/plugin-api": "^0.8.0"
12
+ "@mycadet/plugin-api": "^0.12.7"
13
13
  }
14
14
  }
@@ -15,7 +15,7 @@
15
15
  import { existsSync } from "node:fs";
16
16
  import { join } from "node:path";
17
17
 
18
- import { getWorkspacePluginsDir } from "../util/platform.js";
18
+ import { getWorkspacePluginsDir } from "../util/layout.js";
19
19
 
20
20
  /**
21
21
  * Return `true` when the `.disabled` sentinel exists for `pluginName`.
@@ -42,8 +42,8 @@ import {
42
42
  PLUGIN_API_EXPORTS,
43
43
  PLUGIN_API_REGISTRY_KEY,
44
44
  } from "../embedded/plugin-api.js";
45
+ import { getWorkspaceDir } from "../util/layout.js";
45
46
  import { getLogger } from "../util/logger.js";
46
- import { getWorkspaceDir } from "../util/platform.js";
47
47
 
48
48
  const log = getLogger("plugin-api-shim");
49
49
 
@@ -56,8 +56,8 @@ import { existsSync, readFileSync } from "node:fs";
56
56
  import { mkdir, symlink } from "node:fs/promises";
57
57
  import { dirname, join } from "node:path";
58
58
 
59
+ import { getWorkspaceDir } from "../util/layout.js";
59
60
  import { getLogger } from "../util/logger.js";
60
- import { getWorkspaceDir } from "../util/platform.js";
61
61
 
62
62
  const log = getLogger("shared-dep-links");
63
63
 
@@ -21,7 +21,7 @@
21
21
  import { readdirSync, realpathSync, statSync } from "node:fs";
22
22
  import { join, sep } from "node:path";
23
23
 
24
- import { getWorkspacePluginsDir } from "../util/platform.js";
24
+ import { getWorkspacePluginsDir } from "../util/layout.js";
25
25
  import { hasPluginManifest } from "../util/plugin-manifest.js";
26
26
 
27
27
  export interface InstalledPluginDir {
@@ -54,17 +54,15 @@ export const PLUGIN_MCP_MANIFEST = "mcp.json";
54
54
  * `mcp.json` has no risk field, since the spec defines none, so a host
55
55
  * default applies.
56
56
  *
57
- * The review happens earlier: the marketplace catalog
58
- * (`plugins/marketplace.json`) is a curated whitelist of SHA-pinned
59
- * entries, and installing a plugin is itself the user's decision to run
60
- * the code it ships. Gating every call afterwards prompts on the tools
61
- * the user installed the plugin to get.
57
+ * The review happens earlier: the installable catalog is the Cadet Cloud
58
+ * marketplace's reviewed entries, and installing a plugin is itself the
59
+ * user's decision to run the code it ships. Gating every call afterwards
60
+ * prompts on the tools the user installed the plugin to get.
62
61
  *
63
62
  * The gap this leaves is deliberate and known: a plugin installed
64
- * off-marketplace straight from a GitHub URL gets the same default, and
65
- * nothing recorded at install time distinguishes the two afterwards. A
66
- * provenance signal is what would let this default be curation-gated
67
- * rather than blanket. A workspace entry of the same id replaces the
63
+ * straight from a GitHub URL gets the same default, and nothing recorded
64
+ * at install time distinguishes the two afterwards. A provenance signal
65
+ * is what would let this default be curation-gated rather than blanket. A workspace entry of the same id replaces the
68
66
  * plugin server wholesale (transport included) and uses the workspace
69
67
  * origin risk.
70
68
  */
@@ -54,11 +54,11 @@ import {
54
54
  } from "../security/plugin-secret-patterns.js";
55
55
  import { finalizeTool } from "../tools/tool-defaults.js";
56
56
  import type { Tool, ToolDefinition } from "../tools/types.js";
57
- import { getLogger } from "../util/logger.js";
58
57
  import {
59
58
  getWorkspaceHooksDir,
60
59
  getWorkspacePluginsDir,
61
- } from "../util/platform.js";
60
+ } from "../util/layout.js";
61
+ import { getLogger } from "../util/logger.js";
62
62
  import { hasPluginManifest } from "../util/plugin-manifest.js";
63
63
  import { collectSourceVersions } from "./collect-source-versions.js";
64
64
  import {
@@ -21,7 +21,7 @@
21
21
  import { readFileSync } from "node:fs";
22
22
  import { join } from "node:path";
23
23
 
24
- import { getMonitoringDataDir } from "../util/platform.js";
24
+ import { getMonitoringDataDir } from "../util/layout.js";
25
25
 
26
26
  /**
27
27
  * Sentinel filename, under the monitoring data directory
@@ -1,7 +1,7 @@
1
1
  import { existsSync, unlinkSync } from "node:fs";
2
2
 
3
+ import { getWorkspacePromptPath } from "../util/layout.js";
3
4
  import { getLogger } from "../util/logger.js";
4
- import { getWorkspacePromptPath } from "../util/platform.js";
5
5
 
6
6
  const log = getLogger("bootstrap-cleanup");
7
7
 
@@ -11,8 +11,8 @@ import {
11
11
  } from "../contacts/guardian-delivery-reader.js";
12
12
  import type { ChannelCapabilities } from "../daemon/conversation-runtime-assembly.js";
13
13
  import type { TrustContext } from "../daemon/trust-context-types.js";
14
+ import { getWorkspaceDir, getWorkspacePromptPath } from "../util/layout.js";
14
15
  import { getLogger } from "../util/logger.js";
15
- import { getWorkspaceDir, getWorkspacePromptPath } from "../util/platform.js";
16
16
  import { stripCommentLines } from "../util/strip-comment-lines.js";
17
17
  import type { NormalizedOnboarding } from "./normalize-onboarding.js";
18
18
 
@@ -2,11 +2,11 @@ import { existsSync, readdirSync, readFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
 
4
4
  import { parseFrontmatterFields } from "../skills/frontmatter.js";
5
- import { getLogger } from "../util/logger.js";
6
5
  import {
7
6
  getWorkspacePromptPath,
8
7
  getWorkspaceSystemPromptDir,
9
- } from "../util/platform.js";
8
+ } from "../util/layout.js";
9
+ import { getLogger } from "../util/logger.js";
10
10
  import { stripCommentLines } from "../util/strip-comment-lines.js";
11
11
  import {
12
12
  BUNDLED_SYSTEM_SECTIONS,
@@ -12,17 +12,15 @@ import { getIsContainerized } from "../config/env-registry.js";
12
12
  import type { ChannelCapabilities } from "../daemon/conversation-runtime-assembly.js";
13
13
  import { resolveTrustClass } from "../daemon/trust-context.js";
14
14
  import type { TrustContext } from "../daemon/trust-context-types.js";
15
- import { markActivationSession } from "../plugins/defaults/memory/activation-session-store.js";
16
15
  import { derivePersonaTrustFlags } from "../runtime/trust-class.js";
17
- import { ACTIVATION_RAIL_BOOTSTRAP_TEMPLATE } from "../telemetry/activation-funnel.js";
18
16
  import type { OnboardingContext } from "../types/onboarding-context.js";
19
17
  import { resolveBundledDir } from "../util/bundled-asset.js";
20
- import { getLogger } from "../util/logger.js";
21
18
  import {
22
19
  getConversationsDir,
23
20
  getWorkspaceDir,
24
21
  getWorkspacePromptPath,
25
- } from "../util/platform.js";
22
+ } from "../util/layout.js";
23
+ import { getLogger } from "../util/logger.js";
26
24
  import { stripCommentLines } from "../util/strip-comment-lines.js";
27
25
  import { cleanupBootstrapFiles } from "./bootstrap-cleanup.js";
28
26
  import { SYSTEM_PROMPT_CACHE_BOUNDARY } from "./cache-boundary.js";
@@ -336,40 +334,11 @@ export function maybeReseedBootstrap(templateFileName: string): boolean {
336
334
 
337
335
  /**
338
336
  * Reseed BOOTSTRAP.md from the requested onboarding template (one-shot,
339
- * idempotent) and, when that template is the activation rail AND the rail is
340
- * now the active bootstrap, mark the conversation as an activation session.
341
- *
342
- * Marking happens here — at the single point where the bootstrap selection is
343
- * known — so it lands BEFORE the agent loop resolves tools and BEFORE the model
344
- * can call the emit tool on the first activation-rail turn. (`resolveTools`
345
- * runs before the system-prompt build in the loop, so the system-prompt build is
346
- * too late to be the *only* marking site.) The marker write is best-effort and
347
- * idempotent (`markActivationSession` swallows errors and dedups on the PK), so
348
- * calling this from both `setOnboardingContext` and `buildSystemPrompt` is safe.
349
- *
350
- * The activation mark is gated on the rail actually being the active bootstrap —
351
- * either this call just installed it, OR BOOTSTRAP.md already holds the
352
- * activation-rail template. When the reseed no-ops because BOOTSTRAP.md is
353
- * missing or customized to something else, the rail is NOT active, so we must
354
- * NOT mark (otherwise non-rail conversations would pollute activation
355
- * telemetry).
337
+ * idempotent). No-op when the workspace's BOOTSTRAP.md is missing or has been
338
+ * customized away from the generic template.
356
339
  */
357
- export function applyBootstrapTemplate(
358
- bootstrapTemplate: string,
359
- conversationId?: string,
360
- ): void {
361
- const installedActivationRail = maybeReseedBootstrap(bootstrapTemplate);
362
- if (
363
- bootstrapTemplate === ACTIVATION_RAIL_BOOTSTRAP_TEMPLATE &&
364
- conversationId &&
365
- (installedActivationRail ||
366
- isTemplateContent(
367
- readPromptFile(getWorkspacePromptPath("BOOTSTRAP.md")),
368
- ACTIVATION_RAIL_BOOTSTRAP_TEMPLATE,
369
- ))
370
- ) {
371
- markActivationSession(conversationId);
372
- }
340
+ export function applyBootstrapTemplate(bootstrapTemplate: string): void {
341
+ maybeReseedBootstrap(bootstrapTemplate);
373
342
  }
374
343
 
375
344
  /**
@@ -460,13 +429,12 @@ export interface BuildSystemPromptOptions {
460
429
  * file-backed bodies, and runtime-computed transforms.
461
430
  */
462
431
  export function buildSystemPrompt(options?: BuildSystemPromptOptions): string {
463
- // One-shot bootstrap reseed + activation-rail marking. The marking also runs
464
- // earlier, at `setOnboardingContext`, so the activation session is recorded
465
- // before the agent loop resolves tools on the first turn; this call is a
466
- // harmless idempotent backstop for prompt builds outside that path.
432
+ // One-shot bootstrap reseed, at prompt build for prompt paths outside the
433
+ // onboarding-context entry point (idempotent — no-op once BOOTSTRAP.md is
434
+ // customized).
467
435
  const bootstrapTemplate = options?.onboardingContext?.bootstrapTemplate;
468
436
  if (bootstrapTemplate) {
469
- applyBootstrapTemplate(bootstrapTemplate, options?.conversationId);
437
+ applyBootstrapTemplate(bootstrapTemplate);
470
438
  }
471
439
 
472
440
  // Slugs used by the persona sections (`10-user-persona`,
@@ -16,8 +16,6 @@ The prompt itself must be one-click copyable. Inline paragraph text the user has
16
16
 
17
17
  DONE: the user has the copyable prompt in hand (or you've explicitly backfilled/skipped Port per the task-first opener below).
18
18
 
19
- <!-- Funnel: segment activation events by port_accepted vs port_declined so the no-port branch can be tuned separately. Instrumentation is a follow-up; this template only defines the branch. -->
20
-
21
19
  _If the user declines the port (`port_declined`)._ Don't re-pitch and don't ask two questions to make up for the missing paste. Ask exactly ONE question — the one that buys the most signal for Propose ("what's the one thing you most want off your plate this week?"). Their answer is the Moment 1 output that Port would have produced. Stay in a bounded context loop: at most two context-gathering turns total. If you still don't have a surface to point at after that, propose anyway with what you have — a thin proposal beats stalling for more input.
22
20
 
23
21
  On `port_declined`, render exactly ONE small structured intake surface before moving to Propose — a `ui_show` `choice` surface (`display: "inline"`, single-select) whose options are a short background list (Founder / Engineer / Creative / Operator / Investor / Student / Other), so the no-port branch still hands Propose a structured signal. (A `form` with one short field, or a `choice` phrased as a single top-of-mind question, is an acceptable substitute — pick one; the background `choice` is the default.) This is the deliberate structured-intake exception to the "don't enumerate options / the recommendation IS the click" guidance — scoped to the no-port branch only, where there's no paste to infer from, so a small menu is the cheapest way to get traction. The port (paste) branch is unchanged: it never renders this surface.
@@ -85,41 +83,6 @@ Identity writes (IDENTITY.md, SOUL.md), user-profile writes, journal entries: al
85
83
 
86
84
  Your opener is the Port pitch — no other intake surface precedes it.
87
85
 
88
- ## Telemetry: tag your `ui_show` surfaces
89
-
90
- The activation funnel is measured passively — there is no separate tool to call.
91
- When you render the `ui_show` surface for a rail move that IS a funnel moment,
92
- add the optional `activation_moment` parameter to that same `ui_show` call. It's
93
- a tag on a surface you're already showing, not extra work.
94
-
95
- Most moments record when the user COMMITS the tagged surface (clicks an action /
96
- submits / selects). The one exception is `first_wow_executed`, which records the
97
- moment the surface RENDERS — because the wow has already happened by the time you
98
- show its result, and a result card is often display-only with nothing to commit.
99
-
100
- Which surface to tag with which moment:
101
-
102
- - `moment_1` — the no-port intake `choice` surface, OR the Port-summary card
103
- (background + top-of-mind captured, or the user explicitly skipped). Records on
104
- commit (when the intake resolves).
105
- - `moment_2` — the Propose offer surface (the `ui_show` offer card/choice where
106
- the user picks an outcome). Records on commit.
107
- - `moment_3` — the task-selection surface (the specific thing you're about to
108
- run is chosen). Records on commit.
109
- - `first_wow_executed` — the Run result surface (e.g. `work_result` / the result
110
- the user sees after the wow ran against real data). Records on RENDER — you do
111
- not need the user to click anything; just tag the result surface.
112
- - `first_wow_interacted` — the user's first engagement AFTER the wow. Tag the
113
- surface they act on (a result-card action button, or the follow-through
114
- `choice` you render next). Records on commit. Don't put this on the same
115
- surface as `first_wow_executed` — one tag per surface, and that surface already
116
- records "executed" on render.
117
-
118
- A surface carries at most one `activation_moment`. The milestone no-ops outside
119
- an activation session, and a missing or mistimed tag is non-fatal — but accurate,
120
- move-bound tags are what make the funnel meaningful. Omit `activation_moment` on
121
- every non-funnel surface.
122
-
123
86
  ## Wrap
124
87
 
125
88
  <!-- Open question: the default wrap tone below is opinionated (brisk, dataset-first). Whether that's the right note to end the activation rail on is a conscious call we haven't made yet — flag, don't silently change. -->
@@ -39,7 +39,7 @@ const cadetConnection = {
39
39
  const resolvedAuth: ResolvedAuth = {
40
40
  kind: "header",
41
41
  headers: { Authorization: "Bearer test-key" },
42
- baseUrl: "https://platform.example/v1/runtime-proxy/fireworks",
42
+ baseUrl: "https://test-cloud.mycadet.ai/v1/runtime-proxy/fireworks",
43
43
  };
44
44
 
45
45
  describe("cadet connection routing", () => {
@@ -76,7 +76,7 @@ describe("cadet connection routing", () => {
76
76
  {
77
77
  kind: "header",
78
78
  headers: { Authorization: "Bearer test-key" },
79
- baseUrl: "https://platform.example/v1/runtime-proxy/cadet",
79
+ baseUrl: "https://test-cloud.mycadet.ai/v1/runtime-proxy/cadet",
80
80
  },
81
81
  {
82
82
  model: "qwen/qwen3-8b",
@@ -1,4 +1,4 @@
1
- import { getWorkspaceDir } from "../../util/platform.js";
1
+ import { getWorkspaceDir } from "../../util/layout.js";
2
2
  import { OpenAIChatCompletionsProvider } from "../openai/chat-completions-provider.js";
3
3
  import type { SendMessageOptions } from "../types.js";
4
4
  import { hostedDirectionsExtraBody } from "./personality-directions.js";
@@ -42,7 +42,7 @@ mock.module("../../../config/assistant-feature-flags.js", () => ({
42
42
 
43
43
  // Mock platform detection: tests default to platform mode (SSRF enforced).
44
44
  // Individual tests can override via `mockIsPlatform = false`. Spread the real
45
- // module so the config loader's transitive `util/platform` imports still
45
+ // module so the config loader's transitive `util/layout` imports still
46
46
  // resolve — only `getIsCloud` is overridden.
47
47
  let mockIsPlatform = true;
48
48
 
@@ -371,7 +371,7 @@ export function createAdapterFromConnection(
371
371
  }
372
372
  const expectedFallback = FALLBACK_PROFILE_BY_KEY[primaryProfile];
373
373
  if (
374
- winner.entry?.source !== "managed" ||
374
+ winner.entry?.provider !== "cadet" ||
375
375
  winner.entry.fallbackProfile !== expectedFallback
376
376
  ) {
377
377
  return null;
@@ -17,7 +17,6 @@
17
17
  * default profile and on any legacy bare-`provider` callsite override.
18
18
  */
19
19
 
20
- import { MANAGED_PROFILE_NAMES } from "../../config/default-profile-catalog.js";
21
20
  import { getIsCloud } from "../../config/env-registry.js";
22
21
  import { loadRawConfig, saveRawConfig } from "../../config/loader.js";
23
22
  import type { DrizzleDb } from "../../persistence/db-connection.js";
@@ -207,17 +206,11 @@ function ensureProviderConnection(
207
206
  // custom-named connection already exists.
208
207
  //
209
208
  // Managed-owned entries are excluded: a cloud preset must stay on the
210
- // cloud route, not start dispatching against a key the user
211
- // brought for their own profiles. Managed-owned means `source: "managed"`
212
- // or a canonical managed name without an explicit `source: "user"` —
213
- // legacy seeders wrote canonical entries source-less, and only an explicit
214
- // user source marks a shadow the user took ownership of (mirrors
215
- // workspace migration 109). `entryLabel` is the profile name for the
209
+ // cloud route, not start dispatching against a key the user brought for
210
+ // their own profiles. `entryLabel` is the profile name for the
216
211
  // `llm.profiles.*` walk; the other walks pass bracketed labels that never
217
212
  // collide with canonical names.
218
- const isManagedOwned =
219
- entry.source === "managed" ||
220
- (entry.source !== "user" && MANAGED_PROFILE_NAMES.has(entryLabel));
213
+ const isManagedOwned = entry.provider === "cadet";
221
214
  const entryModel = typeof entry.model === "string" ? entry.model : undefined;
222
215
  const existingForProvider = isManagedOwned
223
216
  ? undefined
@@ -127,7 +127,7 @@ export async function probeInferenceProfile(
127
127
  ): Promise<ProfileCheck | null> {
128
128
  const { llm } = getConfigReadOnly();
129
129
  const entry = llm.profiles?.[name] as Record<string, unknown> | undefined;
130
- if (!entry || entry.status === "disabled" || entry.source === "managed") {
130
+ if (!entry || entry.status === "disabled" || entry.provider === "cadet") {
131
131
  return null;
132
132
  }
133
133
 
@@ -710,7 +710,6 @@ function normalizeSendMessageOptions(
710
710
  // (after the `openai` promptCacheKey copy above) so they never leak into
711
711
  // provider request bodies even when callers set them without a `callSite`.
712
712
  delete nextConfig.overrideProfile;
713
- delete nextConfig.overrideProfileOrigin;
714
713
  delete nextConfig.forceOverrideProfile;
715
714
  delete nextConfig.selectionSeed;
716
715
  delete nextConfig.conversationId;
@@ -725,7 +724,6 @@ function normalizeSendMessageOptions(
725
724
  const attribution = resolveUsageAttribution({
726
725
  callSite: config.callSite,
727
726
  overrideProfile: config.overrideProfile,
728
- overrideProfileOrigin: config.overrideProfileOrigin,
729
727
  forceOverrideProfile: config.forceOverrideProfile,
730
728
  selectionSeed: config.selectionSeed,
731
729
  });
@@ -346,13 +346,6 @@ export interface SendMessageConfig {
346
346
  * silently fall through.
347
347
  */
348
348
  overrideProfile?: string;
349
- /**
350
- * Who chose `overrideProfile`: `"auto"` when the Auto profile's router
351
- * picked it for the turn. Usage attribution reports it as the profile
352
- * source so a routed turn is not counted as a user pin. A routing-time
353
- * concern only; stripped before any provider wire request.
354
- */
355
- overrideProfileOrigin?: "auto";
356
349
  /**
357
350
  * When true, the resolver floats `overrideProfile` above the call-site
358
351
  * layers (named site profile + call-site override) for non-main-agent call
@@ -80,7 +80,7 @@ export class UsageTrackingProvider implements Provider {
80
80
  // A rerouted serve ran on the backup the wrapper chose, not on the
81
81
  // router's pick, so the origin applies only to the original route.
82
82
  ...(response.actualInferenceProfile === undefined
83
- ? { overrideProfileOrigin: config.overrideProfileOrigin }
83
+ ? {}
84
84
  : { forceOverrideProfile: true }),
85
85
  });
86
86
  const providerName = response.actualProvider ?? this.inner.name;
@@ -17,7 +17,7 @@ import {
17
17
  test,
18
18
  } from "bun:test";
19
19
 
20
- import { getProcPidPath, getProcSocketPath } from "../../util/platform.js";
20
+ import { getProcPidPath, getProcSocketPath } from "../../util/layout.js";
21
21
  import {
22
22
  RouteHostClient,
23
23
  RouteHostTimeoutError,
@@ -17,8 +17,8 @@
17
17
  */
18
18
 
19
19
  import { getConfigReadOnly } from "../config/loader.js";
20
+ import { getProcPidPath } from "../util/layout.js";
20
21
  import { getLogger } from "../util/logger.js";
21
- import { getProcPidPath } from "../util/platform.js";
22
22
  import {
23
23
  probeWorkerPidFile,
24
24
  spawnWorkerProcess,
@@ -23,8 +23,8 @@ import { connect, type Socket } from "node:net";
23
23
  import type { IpcEnvelope } from "@mycadet/ipc-server-utils";
24
24
  import { IpcFrameReader, writeMessage } from "@mycadet/ipc-server-utils";
25
25
 
26
+ import { getProcPidPath, getProcSocketPath } from "../util/layout.js";
26
27
  import { getLogger } from "../util/logger.js";
27
- import { getProcPidPath, getProcSocketPath } from "../util/platform.js";
28
28
  import { spawnWorkerProcess } from "../util/worker-process.js";
29
29
  import {
30
30
  ROUTE_HOST_PROC_NAME,
@@ -31,12 +31,12 @@ import {
31
31
  importRouteModule,
32
32
  sourceRootForHandler,
33
33
  } from "../runtime/routes/user-route-import.js";
34
- import { getLogger } from "../util/logger.js";
35
34
  import {
36
35
  ensureProcDir,
37
36
  getProcPidPath,
38
37
  getProcSocketPath,
39
- } from "../util/platform.js";
38
+ } from "../util/layout.js";
39
+ import { getLogger } from "../util/logger.js";
40
40
  import {
41
41
  cleanupWorkerPidFile,
42
42
  startWorkerPidFileGuard,
@@ -120,6 +120,7 @@ import {
120
120
  recordRequestLog,
121
121
  setAgentLoopExitReasonOnLatestLog,
122
122
  } from "../persistence/llm-request-log-store.js";
123
+ import { stampTurnOutcome } from "../persistence/turn-outcome.js";
123
124
  import type { SystemPromptPersonaOverride } from "../prompts/system-prompt.js";
124
125
  import type { Message, ToolDefinition } from "../providers/types.js";
125
126
  import { getScheduleRunStatus } from "../schedule/schedule-store.js";
@@ -127,7 +128,6 @@ import {
127
128
  type UntrustedContentSource,
128
129
  wrapUntrustedContent,
129
130
  } from "../security/untrusted-content.js";
130
- import { stampTurnOutcome } from "../telemetry/turn-outcome.js";
131
131
  import type { CompletedBackgroundTool } from "../tools/background-tool-registry.js";
132
132
  import { getLogger } from "../util/logger.js";
133
133
  import { safeStringSlice } from "../util/unicode.js";
@@ -68,8 +68,8 @@ import {
68
68
  SSE_REPLAY_RING_COUNT_LIMIT,
69
69
  } from "../api/constants/sse-replay.js";
70
70
  import type { AssistantEventEnvelope } from "../api/index.js";
71
+ import { getWorkspaceDir } from "../util/layout.js";
71
72
  import { getLogger } from "../util/logger.js";
72
- import { getWorkspaceDir } from "../util/platform.js";
73
73
  import type { AssistantEventPublishOptions } from "./assistant-event-publish-options.js";
74
74
  import {
75
75
  matchesTargeting,
@@ -22,8 +22,8 @@ import {
22
22
  import { dirname, join } from "node:path";
23
23
 
24
24
  import { getIsContainerized } from "../../config/env-registry.js";
25
+ import { getDeprecatedDir } from "../../util/layout.js";
25
26
  import { getLogger } from "../../util/logger.js";
26
- import { getDeprecatedDir } from "../../util/platform.js";
27
27
  import { isStaleEpoch } from "./policy.js";
28
28
  import type { ScopeProfile, TokenAudience, TokenClaims } from "./types.js";
29
29
 
@@ -28,8 +28,8 @@ import { emitBackgroundFailureSignal } from "../notifications/background-failure
28
28
  import { bootstrapConversation } from "../persistence/conversation-bootstrap.js";
29
29
  import { addMessage } from "../persistence/conversation-crud.js";
30
30
  import type { TitleOrigin } from "../persistence/conversation-title-service.js";
31
+ import type { TurnFailure } from "../persistence/turn-outcome.js";
31
32
  import { dispatchProviderResolvable } from "../providers/provider-resolvability.js";
32
- import type { TurnFailure } from "../telemetry/turn-outcome.js";
33
33
  import { getLogger } from "../util/logger.js";
34
34
  import { hasReceivedUserMessage } from "./pre-first-message-gate.js";
35
35
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
 
5
5
  import { TwilioVoiceProvider } from "../../calls/twilio-provider.js";
6
- import { loadConfig } from "../../config/loader.js";
6
+ import { getConfig } from "../../config/loader.js";
7
7
  import { getPublicBaseUrl } from "../../inbound/public-ingress-urls.js";
8
8
  import { getLogger } from "../../util/logger.js";
9
9
  import { httpError } from "../http-errors.js";
@@ -84,7 +84,7 @@ export async function validateTwilioWebhook(
84
84
  // signature.
85
85
  let publicBaseUrl: string | undefined;
86
86
  try {
87
- publicBaseUrl = getPublicBaseUrl(loadConfig());
87
+ publicBaseUrl = getPublicBaseUrl(getConfig());
88
88
  } catch {
89
89
  // No webhook base URL configured -- fall back to using req.url as-is
90
90
  }
@@ -29,7 +29,7 @@ import {
29
29
  import { getDb } from "../../../persistence/db-connection.js";
30
30
  import { initializeDb } from "../../../persistence/db-init.js";
31
31
  import { appPins } from "../../../persistence/schema/index.js";
32
- import { getWorkspacePluginsDir } from "../../../util/platform.js";
32
+ import { getWorkspacePluginsDir } from "../../../util/layout.js";
33
33
  import { ROUTES as APP_ROUTES } from "../app-management-routes.js";
34
34
  import { BadRequestError } from "../errors.js";
35
35
  import type { RouteDefinition, RouteHandlerArgs } from "../types.js";
@@ -84,7 +84,7 @@ mock.module("../../../apps/app-pin-store.js", () => ({
84
84
  }));
85
85
 
86
86
  const { createApp } = await import("../../../apps/app-store.js");
87
- const { getWorkspacePluginsDir } = await import("../../../util/platform.js");
87
+ const { getWorkspacePluginsDir } = await import("../../../util/layout.js");
88
88
  const { ROUTES } = await import("../app-management-routes.js");
89
89
 
90
90
  function findHandler(operationId: string) {
@@ -22,15 +22,6 @@ mock.module("../../sync/resource-sync-events.js", () => ({
22
22
  },
23
23
  }));
24
24
 
25
- /** Every telemetry event the store records, in order. */
26
- const recorded: Array<{ name: string; fields: Record<string, unknown> }> = [];
27
- mock.module("../../../telemetry/telemetry-events-outbox.js", () => ({
28
- recordTelemetryEvent: (name: string, fields: Record<string, unknown>) => {
29
- recorded.push({ name, fields });
30
- return { id: "evt", createdAt: 0 };
31
- },
32
- }));
33
-
34
25
  import type { AvatarState } from "../../../avatar/avatar-manifest.js";
35
26
  import { writeManifest } from "../../../avatar/avatar-manifest.js";
36
27
  import { ROUTES } from "../avatar-routes.js";
@@ -253,7 +244,6 @@ describe("avatar write/remove handlers", () => {
253
244
  prevWorkspaceDir = process.env.CADET_WORKSPACE_DIR;
254
245
  process.env.CADET_WORKSPACE_DIR = workspaceDir;
255
246
  publishedOrigins.length = 0;
256
- recorded.length = 0;
257
247
  });
258
248
 
259
249
  afterEach(() => {
@@ -585,30 +575,10 @@ describe("avatar write/remove handlers", () => {
585
575
  });
586
576
  });
587
577
 
588
- describe("client OS on avatar_changed", () => {
589
- test("the client-os header reaches the event, sanitized", async () => {
590
- await uploadRed({ "x-cadet-client-os": " macOS " });
591
-
592
- expect(recorded).toHaveLength(1);
593
- expect(recorded[0]!.name).toBe("avatar_changed");
594
- expect(recorded[0]!.fields).toMatchObject({
595
- action: "upload_image",
596
- client_os: "macos",
597
- });
598
- });
578
+ test("the client id reaches the fan-out", async () => {
579
+ await uploadRed({ "x-cadet-client-id": "web-1" });
599
580
 
600
- test("an out-of-bounds client-os header is dropped, not forwarded", async () => {
601
- await uploadRed({ "x-cadet-client-os": "a".repeat(65) });
602
-
603
- expect(recorded).toHaveLength(1);
604
- expect(recorded[0]!.fields).not.toHaveProperty("client_os");
605
- });
606
-
607
- test("the client id reaches the fan-out", async () => {
608
- await uploadRed({ "x-cadet-client-id": "web-1" });
609
-
610
- expect(publishedOrigins).toEqual(["web-1"]);
611
- });
581
+ expect(publishedOrigins).toEqual(["web-1"]);
612
582
  });
613
583
  });
614
584