@mycadet/assistant 0.12.9 → 0.12.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (651) hide show
  1. package/Dockerfile +0 -8
  2. package/eslint-rules/__tests__/cli-no-daemon-internals.test.ts +1 -1
  3. package/openapi.yaml +62 -910
  4. package/package.json +3 -7
  5. package/scripts/build-test-fixtures.ts +1 -1
  6. package/scripts/generate-openapi.ts +22 -6
  7. package/scripts/postinstall.ts +4 -10
  8. package/scripts/run-tests.ts +0 -21
  9. package/src/__tests__/adaptive-thinking-repair.test.ts +19 -57
  10. package/src/__tests__/agent-loop.test.ts +0 -76
  11. package/src/__tests__/anthropic-provider.test.ts +6 -6
  12. package/src/__tests__/assert-not-live-db.ts +1 -1
  13. package/src/__tests__/assistant-id-boundary-guard.test.ts +3 -3
  14. package/src/__tests__/attachments-store-heic-normalize.test.ts +1 -1
  15. package/src/__tests__/attachments-store.test.ts +1 -1
  16. package/src/__tests__/audit-log-rotation.test.ts +1 -1
  17. package/src/__tests__/btw-routes.test.ts +1 -1
  18. package/src/__tests__/byok-default-profile-ensure.test.ts +21 -27
  19. package/src/__tests__/call-conversation-messages.test.ts +0 -5
  20. package/src/__tests__/call-recovery.test.ts +2 -7
  21. package/src/__tests__/call-routes-http.test.ts +0 -12
  22. package/src/__tests__/call-store.test.ts +2 -7
  23. package/src/__tests__/catalog-files.test.ts +7 -5
  24. package/src/__tests__/checker.test.ts +1 -1
  25. package/src/__tests__/cli-memory-v2-reembed-skills.test.ts +4 -4
  26. package/src/__tests__/cloud-client-verify-credential.test.ts +0 -4
  27. package/src/__tests__/cloud-credential-catalog-cli.test.ts +14 -14
  28. package/src/__tests__/cloud-profile-guard.test.ts +48 -401
  29. package/src/__tests__/compaction-events.test.ts +2 -2
  30. package/src/__tests__/config-loader-backfill.test.ts +74 -163
  31. package/src/__tests__/config-loader-cloud-defaults.test.ts +11 -11
  32. package/src/__tests__/config-loader-corrupt.test.ts +10 -10
  33. package/src/__tests__/config-loader-quarantine-notice.test.ts +7 -7
  34. package/src/__tests__/config-loader-validation-reset-notice.test.ts +11 -11
  35. package/src/__tests__/config-schema.test.ts +26 -27
  36. package/src/__tests__/config-set-route.test.ts +2 -6
  37. package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +28 -300
  38. package/src/__tests__/conversation-agent-loop-overflow.test.ts +39 -246
  39. package/src/__tests__/conversation-agent-loop.test.ts +2 -58
  40. package/src/__tests__/conversation-clear-safety.test.ts +0 -30
  41. package/src/__tests__/conversation-inference-profile-route.test.ts +1 -1
  42. package/src/__tests__/conversation-queue.test.ts +1 -1
  43. package/src/__tests__/conversation-runtime-assembly.test.ts +1 -1
  44. package/src/__tests__/conversation-skill-tools.test.ts +4 -444
  45. package/src/__tests__/conversation-slash-commands.test.ts +1 -1
  46. package/src/__tests__/conversation-store.test.ts +1 -84
  47. package/src/__tests__/conversation-surface-state.test.ts +0 -16
  48. package/src/__tests__/credential-health-service.test.ts +14 -1
  49. package/src/__tests__/credential-record-retire.test.ts +1 -1
  50. package/src/__tests__/credential-record-write-through.test.ts +1 -1
  51. package/src/__tests__/credential-security-invariants.test.ts +0 -145
  52. package/src/__tests__/custom-profile-ensure.test.ts +1 -1
  53. package/src/__tests__/default-profile-catalog-fallback.test.ts +5 -15
  54. package/src/__tests__/deterministic-verification-control-plane.test.ts +0 -2
  55. package/src/__tests__/dictation-profile-store.test.ts +6 -6
  56. package/src/__tests__/disk-usage.test.ts +28 -164
  57. package/src/__tests__/docker-signing-key-bootstrap.test.ts +1 -1
  58. package/src/__tests__/embedding-cloud-proxy-selection.test.ts +1 -1
  59. package/src/__tests__/emit-event-signal.test.ts +1 -1
  60. package/src/__tests__/gateway-client-cloud-outbound.test.ts +3 -3
  61. package/src/__tests__/gateway-only-enforcement.test.ts +1 -1
  62. package/src/__tests__/guardian-dispatch.test.ts +0 -13
  63. package/src/__tests__/helpers/seed-app.ts +1 -1
  64. package/src/__tests__/host-cu-routes-targeted.test.ts +1 -1
  65. package/src/__tests__/host-shell-tool.test.ts +1 -1
  66. package/src/__tests__/identity-routes.test.ts +1 -1
  67. package/src/__tests__/inference-profile-session-handler.test.ts +1 -1
  68. package/src/__tests__/inference-profile-session-ipc.test.ts +1 -1
  69. package/src/__tests__/injector-chain.test.ts +1 -1
  70. package/src/__tests__/injector-config-quarantine-notice.test.ts +1 -1
  71. package/src/__tests__/injector-config-validation-reset-notice.test.ts +1 -1
  72. package/src/__tests__/injector-pkb-v2-silenced.test.ts +1 -1
  73. package/src/__tests__/{platform.test.ts → layout.test.ts} +1 -1
  74. package/src/__tests__/list-all-apps.test.ts +1 -1
  75. package/src/__tests__/live-workspace-guard.test.ts +2 -2
  76. package/src/__tests__/llm-resolver-override-or-default.test.ts +5 -6
  77. package/src/__tests__/llm-resolver.test.ts +7 -7
  78. package/src/__tests__/llm-schema-fallback-profile.test.ts +9 -10
  79. package/src/__tests__/llm-usage-store.test.ts +0 -495
  80. package/src/__tests__/log-export-routes.test.ts +1 -1
  81. package/src/__tests__/mcp-config-secret-boundary.test.ts +12 -53
  82. package/src/__tests__/mcp-list-plugin-servers.test.ts +1 -1
  83. package/src/__tests__/memory-config-file-parity.test.ts +1 -1
  84. package/src/__tests__/memory-v2-static-injector.test.ts +1 -1
  85. package/src/__tests__/messages-read-boundary-guard.test.ts +0 -2
  86. package/src/__tests__/notification-guardian-path.test.ts +0 -7
  87. package/src/__tests__/onboarding-persona-write.test.ts +1 -1
  88. package/src/__tests__/openai-provider.test.ts +8 -8
  89. package/src/__tests__/path-policy.test.ts +1 -1
  90. package/src/__tests__/persona-resolver.test.ts +1 -1
  91. package/src/__tests__/plugin-app-serve-routes.test.ts +1 -1
  92. package/src/__tests__/plugin-effective-enabled-set.test.ts +1 -1
  93. package/src/__tests__/plugin-import-boundary-guard.test.ts +4 -6
  94. package/src/__tests__/plugin-import-boundary-reverse-guard.test.ts +0 -3
  95. package/src/__tests__/provider-cloud-proxy-integration.test.ts +1 -5
  96. package/src/__tests__/provider-connections-backfill.test.ts +10 -10
  97. package/src/__tests__/prune-old-conversations-job.test.ts +6 -31
  98. package/src/__tests__/resolve-app.test.ts +1 -1
  99. package/src/__tests__/run-due-schedules.test.ts +1 -1
  100. package/src/__tests__/scaffold-managed-skill-tool.test.ts +0 -53
  101. package/src/__tests__/schedule-routes.test.ts +1 -1
  102. package/src/__tests__/schedule-store.test.ts +1 -1
  103. package/src/__tests__/secret-routes-cloud-proxy.test.ts +1 -1
  104. package/src/__tests__/skill-load-plugin-scope.test.ts +1 -1
  105. package/src/__tests__/surface-completion-compaction-boundary.test.ts +1 -1
  106. package/src/__tests__/tool-approval-handler.test.ts +1 -1
  107. package/src/__tests__/tool-audit.test.ts +5 -235
  108. package/src/__tests__/tool-executor-lifecycle-events.test.ts +54 -114
  109. package/src/__tests__/tools-get-route.test.ts +1 -1
  110. package/src/__tests__/turn-outcome-read.test.ts +1 -1
  111. package/src/__tests__/twilio-routes.test.ts +0 -1
  112. package/src/__tests__/usage-attribution.test.ts +0 -31
  113. package/src/__tests__/verification-control-plane-policy.test.ts +3 -10
  114. package/src/__tests__/visible-app-context.test.ts +1 -1
  115. package/src/__tests__/voice-ingress-preflight.test.ts +1 -1
  116. package/src/__tests__/workspace-git-service.test.ts +1 -1
  117. package/src/__tests__/workspace-greetings.test.ts +1 -1
  118. package/src/acp/__tests__/helpers/acp-config-stub.ts +1 -1
  119. package/src/activation/progress-store.ts +1 -1
  120. package/src/activation/turn-hooks.ts +1 -1
  121. package/src/agent/loop.ts +0 -51
  122. package/src/apps/app-store.ts +1 -1
  123. package/src/avatar/__tests__/avatar-store.test.ts +2 -172
  124. package/src/avatar/accent-backfill.ts +1 -1
  125. package/src/avatar/avatar-manifest.ts +1 -1
  126. package/src/avatar/avatar-store.ts +10 -69
  127. package/src/avatar/ensure-raster.ts +1 -1
  128. package/src/avatar/identity-avatar.ts +1 -1
  129. package/src/avatar/sync-avatar.ts +1 -1
  130. package/src/avatar/traits-png-sync.ts +1 -1
  131. package/src/bundler/compiler-tools.ts +1 -1
  132. package/src/bundler/package-resolver.ts +1 -1
  133. package/src/calls/__tests__/call-controller.test.ts +25 -27
  134. package/src/calls/active-call-lease.ts +1 -1
  135. package/src/calls/call-controller.ts +3 -3
  136. package/src/calls/call-domain.ts +4 -8
  137. package/src/calls/call-store.ts +2 -76
  138. package/src/calls/resolve-call-tts-provider.ts +3 -3
  139. package/src/calls/twilio-config.ts +3 -3
  140. package/src/calls/twilio-rest.ts +2 -2
  141. package/src/calls/voice-ingress-preflight.ts +2 -2
  142. package/src/cli/bundled-modules.ts +0 -2
  143. package/src/cli/commands/__tests__/apps.test.ts +1 -1
  144. package/src/cli/commands/__tests__/plugins.test.ts +9 -66
  145. package/src/cli/commands/__tests__/ps.test.ts +67 -0
  146. package/src/cli/commands/auth.help.ts +2 -2
  147. package/src/cli/commands/avatar.ts +1 -1
  148. package/src/cli/commands/changelog.ts +1 -1
  149. package/src/cli/commands/cloud/__tests__/subscription.test.ts +2 -2
  150. package/src/cli/commands/cloud/index.help.ts +1 -1
  151. package/src/cli/commands/cloud/index.ts +2 -2
  152. package/src/cli/commands/db/refresh.ts +1 -1
  153. package/src/cli/commands/db/repair-step-conversation-backfill.ts +1 -1
  154. package/src/cli/commands/db/repair.ts +1 -1
  155. package/src/cli/commands/db/status.ts +1 -1
  156. package/src/cli/commands/inference-profiles.ts +1 -12
  157. package/src/cli/commands/memory/__tests__/memory-v3.test.ts +1 -116
  158. package/src/cli/commands/memory/index.help.ts +1 -43
  159. package/src/cli/commands/memory/memory-v3.ts +0 -64
  160. package/src/cli/commands/plugins.ts +54 -205
  161. package/src/cli/commands/ps.ts +5 -2
  162. package/src/cli/commands/status.ts +1 -1
  163. package/src/cli/index.help.ts +0 -2
  164. package/src/cli/lib/__tests__/inspect-plugin.test.ts +36 -66
  165. package/src/cli/lib/__tests__/install-from-cloud.test.ts +1 -1
  166. package/src/cli/lib/__tests__/install-from-github.test.ts +41 -117
  167. package/src/cli/lib/__tests__/plugin-catalog-cache.test.ts +2 -185
  168. package/src/cli/lib/__tests__/plugin-catalog-resolve.test.ts +36 -66
  169. package/src/cli/lib/__tests__/plugin-catalog-visibility.test.ts +4 -6
  170. package/src/cli/lib/__tests__/plugin-details.test.ts +113 -96
  171. package/src/cli/lib/__tests__/search-plugins.test.ts +9 -16
  172. package/src/cli/lib/__tests__/uninstall-plugin.test.ts +1 -1
  173. package/src/cli/lib/__tests__/upgrade-plugin.test.ts +38 -15
  174. package/src/cli/lib/diff-plugin.ts +1 -1
  175. package/src/cli/lib/inspect-plugin.ts +13 -97
  176. package/src/cli/lib/install-from-cloud.ts +1 -1
  177. package/src/cli/lib/install-from-github.ts +75 -154
  178. package/src/cli/lib/install-plugin-dependencies.ts +1 -1
  179. package/src/cli/lib/list-installed-plugins.ts +1 -1
  180. package/src/cli/lib/open-browser.ts +1 -1
  181. package/src/cli/lib/plugin-catalog-cache.ts +8 -51
  182. package/src/cli/lib/plugin-catalog-resolve.ts +3 -22
  183. package/src/cli/lib/plugin-details.ts +5 -27
  184. package/src/cli/lib/plugin-marketplace.ts +18 -266
  185. package/src/cli/lib/search-plugins.ts +23 -43
  186. package/src/cli/lib/toggle-plugin.ts +1 -1
  187. package/src/cli/lib/uninstall-plugin.ts +1 -1
  188. package/src/cli/lib/upgrade-plugin.ts +3 -49
  189. package/src/cli/program.ts +1 -3
  190. package/src/cli.ts +1 -1
  191. package/src/cloud/client.ts +0 -6
  192. package/src/cloud/consent-cache.test.ts +22 -201
  193. package/src/cloud/consent-cache.ts +16 -111
  194. package/src/cloud/sync-identity.ts +1 -1
  195. package/src/config/__tests__/chat-settings.test.ts +1 -1
  196. package/src/config/__tests__/cloud-identity.test.ts +15 -2
  197. package/src/config/__tests__/default-plugin-skill-discovery.test.ts +1 -1
  198. package/src/config/__tests__/default-profile-catalog.test.ts +12 -51
  199. package/src/config/__tests__/deployment-context-defaults.test.ts +13 -13
  200. package/src/config/__tests__/loader-callsite-strip-fallback.test.ts +4 -4
  201. package/src/config/__tests__/loader-last-known-good.test.ts +9 -9
  202. package/src/config/__tests__/loader-sparse-array-cleanup.test.ts +7 -7
  203. package/src/config/__tests__/plugin-resident-skill-discovery.test.ts +1 -1
  204. package/src/config/__tests__/profile-materialization.test.ts +2 -4
  205. package/src/config/__tests__/sync-gated-profiles.test.ts +1 -106
  206. package/src/config/acp-agent-write.ts +1 -1
  207. package/src/config/bundled-skills/settings/tools/open-system-settings.test.ts +1 -1
  208. package/src/config/bundled-skills/settings/tools/open-system-settings.ts +1 -1
  209. package/src/config/call-site-defaults.ts +0 -6
  210. package/src/config/cloud-identity.ts +12 -5
  211. package/src/config/composer-preferences.ts +1 -1
  212. package/src/config/default-profile-catalog.ts +8 -75
  213. package/src/config/default-profile-names.ts +2 -25
  214. package/src/config/env-registry.ts +1 -14
  215. package/src/config/env.ts +8 -6
  216. package/src/config/llm-resolver.ts +1 -2
  217. package/src/config/loader.ts +13 -17
  218. package/src/config/profile-materialization.ts +1 -1
  219. package/src/config/schema.ts +1 -7
  220. package/src/config/schemas/call-site-catalog.ts +0 -7
  221. package/src/config/schemas/llm.ts +22 -27
  222. package/src/config/seed-inference-profiles.ts +16 -17
  223. package/src/config/skills.ts +2 -2
  224. package/src/config/sync-gated-profiles.ts +6 -24
  225. package/src/credential-health/credential-health-service.ts +10 -3
  226. package/src/daemon/approval-generators.ts +3 -3
  227. package/src/daemon/config-watcher.ts +2 -2
  228. package/src/daemon/conversation-agent-loop-handlers.ts +0 -18
  229. package/src/daemon/conversation-agent-loop.ts +6 -97
  230. package/src/daemon/conversation-process.ts +1 -1
  231. package/src/daemon/conversation-skill-tools.ts +4 -72
  232. package/src/daemon/conversation-store.ts +1 -1
  233. package/src/daemon/conversation-surface-state.ts +0 -33
  234. package/src/daemon/conversation-surfaces.ts +1 -86
  235. package/src/daemon/conversation-tool-setup.test.ts +1 -1
  236. package/src/daemon/conversation-tool-setup.ts +0 -23
  237. package/src/daemon/conversation.ts +3 -5
  238. package/src/daemon/daemon-control.ts +3 -3
  239. package/src/daemon/dictation-profile-store.ts +3 -3
  240. package/src/daemon/event-loop-watchdog.test.ts +2 -198
  241. package/src/daemon/event-loop-watchdog.ts +0 -185
  242. package/src/daemon/external-plugins-bootstrap.ts +1 -1
  243. package/src/daemon/first-greeting.ts +1 -1
  244. package/src/daemon/handlers/skills.ts +1 -1
  245. package/src/daemon/host-app-control-proxy.ts +1 -1
  246. package/src/daemon/host-cu-proxy.ts +2 -2
  247. package/src/daemon/identity-helpers.ts +1 -1
  248. package/src/daemon/lifecycle.ts +11 -15
  249. package/src/daemon/main.ts +1 -1
  250. package/src/daemon/now-scratchpad.ts +1 -1
  251. package/src/daemon/process-message.ts +4 -4
  252. package/src/daemon/profiler-run-store.ts +2 -2
  253. package/src/daemon/providers-setup.ts +2 -2
  254. package/src/daemon/shutdown-handlers.ts +0 -10
  255. package/src/daemon/sqlite-corruption-watchdog.test.ts +2 -142
  256. package/src/daemon/sqlite-corruption-watchdog.ts +17 -81
  257. package/src/daemon/tool-side-effects.ts +1 -1
  258. package/src/desktop/desktop-session-manager.ts +1 -1
  259. package/src/desktop/desktop-wallpaper-renderer.ts +1 -1
  260. package/src/heartbeat/heartbeat-service.ts +1 -1
  261. package/src/home/feed-writer.ts +1 -1
  262. package/src/home/home-greeting-cache.ts +1 -1
  263. package/src/home/relationship-state-writer.ts +2 -2
  264. package/src/hooks/__tests__/hook-live-reload.test.ts +1 -1
  265. package/src/hooks/hook-loader.ts +2 -2
  266. package/src/inbound/__tests__/oauth-callback-url.test.ts +2 -2
  267. package/src/inbound/oauth-callback-url.ts +3 -3
  268. package/src/ipc/__tests__/attachment-ipc.test.ts +1 -1
  269. package/src/ipc/socket-path.ts +1 -1
  270. package/src/live-voice/__tests__/live-voice-archive.test.ts +1 -1
  271. package/src/live-voice/__tests__/live-voice-vad.test.ts +1 -1
  272. package/src/live-voice/live-voice-session.ts +3 -66
  273. package/src/mcp/__tests__/effective-config.test.ts +1 -1
  274. package/src/mcp/__tests__/mcp-oauth-client-registration.test.ts +2 -2
  275. package/src/mcp/__tests__/mcp-oauth-provider.test.ts +2 -3
  276. package/src/mcp/__tests__/reload-signal-emission.test.ts +1 -1
  277. package/src/mcp/__tests__/reload-signal.test.ts +1 -1
  278. package/src/mcp/__tests__/workspace-mcp-config.test.ts +19 -21
  279. package/src/mcp/reload-signal.ts +1 -1
  280. package/src/mcp/workspace-mcp-config.ts +1 -23
  281. package/src/messaging/draft-store.ts +1 -1
  282. package/src/monitoring/__tests__/active-conversations.test.ts +1 -1
  283. package/src/monitoring/__tests__/page-cache.test.ts +1 -1
  284. package/src/monitoring/__tests__/stall-capture.test.ts +1 -1
  285. package/src/monitoring/__tests__/workspace-git-heartbeat.test.ts +1 -1
  286. package/src/monitoring/active-conversations.ts +1 -1
  287. package/src/monitoring/control.ts +1 -1
  288. package/src/monitoring/daemon-boot-time.ts +1 -1
  289. package/src/monitoring/daemon-heartbeat.ts +1 -1
  290. package/src/monitoring/page-cache.ts +1 -1
  291. package/src/monitoring/plugin-auto-update.ts +1 -7
  292. package/src/monitoring/plugin-source-watch.ts +1 -1
  293. package/src/monitoring/recovery/db.ts +1 -1
  294. package/src/monitoring/recovery/inflight-content.ts +1 -1
  295. package/src/monitoring/resource-sampler.ts +3 -14
  296. package/src/monitoring/stall-capture.ts +1 -1
  297. package/src/monitoring/worker.ts +9 -76
  298. package/src/monitoring/workspace-git-heartbeat.ts +1 -1
  299. package/src/oauth/connect-orchestrator.ts +4 -4
  300. package/src/permissions/checker.ts +1 -1
  301. package/src/permissions/workspace-policy.ts +1 -1
  302. package/src/persistence/__tests__/main-db-readonly-probe.ts +27 -52
  303. package/src/persistence/__tests__/message-content-file.test.ts +1 -1
  304. package/src/persistence/__tests__/slow-sync-log.test.ts +0 -2
  305. package/src/persistence/attachments-store.ts +1 -1
  306. package/src/persistence/conversation-crud.ts +1 -38
  307. package/src/persistence/conversation-directories.ts +1 -1
  308. package/src/persistence/conversation-types.ts +0 -8
  309. package/src/persistence/db-async-query.ts +1 -1
  310. package/src/persistence/db-connection.ts +11 -1
  311. package/src/persistence/db-init.ts +1 -1
  312. package/src/persistence/db-maintenance.ts +1 -1
  313. package/src/persistence/embeddings/__tests__/embedding-local-lifecycle.test.ts +1 -1
  314. package/src/persistence/embeddings/embedding-local.ts +4 -4
  315. package/src/persistence/embeddings/embedding-runtime-manager.ts +1 -1
  316. package/src/persistence/embeddings/qdrant-client.ts +1 -1
  317. package/src/persistence/embeddings/qdrant-manager.ts +1 -1
  318. package/src/persistence/job-handlers/__tests__/message-lexical-backfill.test.ts +1 -1
  319. package/src/persistence/job-handlers/__tests__/message-lexical-enqueue.test.ts +1 -1
  320. package/src/persistence/job-handlers/cleanup.ts +8 -17
  321. package/src/persistence/llm-usage-store.ts +2 -229
  322. package/src/persistence/message-content-file.ts +1 -1
  323. package/src/persistence/migrations/209-strip-thinking-from-consolidated.ts +1 -1
  324. package/src/persistence/migrations/222-strip-placeholder-sentinels-from-messages.ts +1 -1
  325. package/src/persistence/migrations/296-rewrite-balanced-economy-profile-pins.test.ts +1 -1
  326. package/src/persistence/migrations/306-rewrite-frontier-profile-pins.test.ts +1 -1
  327. package/src/persistence/migrations/329-move-onboarding-events-to-telemetry-db.test.ts +13 -0
  328. package/src/persistence/migrations/330-move-auth-fallback-events-to-telemetry-db.test.ts +13 -0
  329. package/src/persistence/migrations/331-move-lifecycle-events-to-telemetry-db.test.ts +13 -0
  330. package/src/persistence/migrations/332-move-skill-loaded-events-to-telemetry-db.test.ts +13 -0
  331. package/src/persistence/migrations/333-create-telemetry-events-table.test.ts +7 -4
  332. package/src/persistence/migrations/334-backfill-telemetry-events-outbox.test.ts +13 -0
  333. package/src/persistence/migrations/387-drop-telemetry-tables.ts +51 -0
  334. package/src/persistence/migrations/__tests__/327-create-flush-checkpoints.test.ts +9 -1
  335. package/src/persistence/migrations/__tests__/387-drop-telemetry-tables.test.ts +79 -0
  336. package/src/persistence/migrations/helpers/relocation.ts +1 -1
  337. package/src/persistence/migrations/run-migrations.ts +1 -1
  338. package/src/persistence/migrations/validate-migration-state.ts +1 -1
  339. package/src/persistence/raw-query.ts +1 -29
  340. package/src/persistence/slow-sync-log.ts +0 -23
  341. package/src/persistence/steps.ts +2 -0
  342. package/src/{telemetry → persistence}/tool-audit.ts +6 -121
  343. package/src/plugin-api/index.ts +1 -1
  344. package/src/plugin-api/plugin-name-env.ts +1 -1
  345. package/src/plugins/__tests__/installed-plugin-dirs.test.ts +1 -1
  346. package/src/plugins/collect-source-versions.ts +1 -1
  347. package/src/plugins/defaults/channel/package.json +1 -1
  348. package/src/plugins/defaults/cloud-hosted/package.json +1 -1
  349. package/src/plugins/defaults/compaction/package.json +1 -1
  350. package/src/plugins/defaults/documents/package.json +1 -1
  351. package/src/plugins/defaults/empty-response/package.json +1 -1
  352. package/src/plugins/defaults/exploration-drift/package.json +1 -1
  353. package/src/plugins/defaults/image-fallback/package.json +1 -1
  354. package/src/plugins/defaults/image-recovery/package.json +1 -1
  355. package/src/plugins/defaults/max-tokens-continue/package.json +1 -1
  356. package/src/plugins/defaults/memory/__tests__/db-async-query.test.ts +1 -1
  357. package/src/plugins/defaults/memory/__tests__/db-maintenance.test.ts +1 -1
  358. package/src/plugins/defaults/memory/__tests__/memory-retrospective-job.test.ts +0 -82
  359. package/src/plugins/defaults/memory/__tests__/memory-retrospective-skill-card.test.ts +0 -41
  360. package/src/plugins/defaults/memory/__tests__/memory-tier-boundary-guard.test.ts +0 -2
  361. package/src/plugins/defaults/memory/memory-retrospective-job.ts +3 -52
  362. package/src/plugins/defaults/memory/memory-retrospective-skill-card.ts +0 -18
  363. package/src/plugins/defaults/memory/package.json +1 -1
  364. package/src/plugins/defaults/memory/paths.ts +4 -4
  365. package/src/plugins/defaults/memory/src/__tests__/memory-worker-routes.test.ts +1 -1
  366. package/src/plugins/defaults/memory/src/memory-v2-routes.ts +5 -5
  367. package/src/plugins/defaults/memory/src/memory-v3-routes.ts +0 -207
  368. package/src/plugins/defaults/memory/src/memory-worker-routes.ts +1 -1
  369. package/src/plugins/defaults/memory/startup.ts +1 -22
  370. package/src/plugins/defaults/memory/v3/__tests__/orchestrate.test.ts +2 -253
  371. package/src/plugins/defaults/memory/v3/orchestrate.ts +5 -129
  372. package/src/plugins/defaults/memory/worker-control.ts +1 -1
  373. package/src/plugins/defaults/memory/worker.ts +2 -2
  374. package/src/plugins/defaults/session/package.json +1 -1
  375. package/src/plugins/defaults/surface-completion-nudge/package.json +1 -1
  376. package/src/plugins/defaults/task-progress/package.json +1 -1
  377. package/src/plugins/defaults/task-progress-nudge/package.json +1 -1
  378. package/src/plugins/defaults/title-generate/package.json +1 -1
  379. package/src/plugins/defaults/tool-error/package.json +1 -1
  380. package/src/plugins/defaults/tool-result-truncate/package.json +1 -1
  381. package/src/plugins/defaults/turn-context/package.json +1 -1
  382. package/src/plugins/defaults/workspace/injectors.ts +1 -1
  383. package/src/plugins/defaults/workspace/package.json +1 -1
  384. package/src/plugins/disabled-state.ts +1 -1
  385. package/src/plugins/ensure-plugin-api-shim.ts +1 -1
  386. package/src/plugins/ensure-shared-dep-links.ts +1 -1
  387. package/src/plugins/installed-plugin-dirs.ts +1 -1
  388. package/src/plugins/mcp-servers.ts +7 -9
  389. package/src/plugins/mtime-cache.ts +2 -2
  390. package/src/plugins/source-versions.ts +1 -1
  391. package/src/prompts/bootstrap-cleanup.ts +1 -1
  392. package/src/prompts/persona-resolver.ts +1 -1
  393. package/src/prompts/sections.ts +2 -2
  394. package/src/prompts/system-prompt.ts +10 -42
  395. package/src/prompts/templates/BOOTSTRAP-ACTIVATION-RAIL.md +0 -37
  396. package/src/providers/__tests__/cadet-connection-routing.test.ts +2 -2
  397. package/src/providers/cadet/client.ts +1 -1
  398. package/src/providers/inference/__tests__/base-url-route-validation.test.ts +1 -1
  399. package/src/providers/inference/adapter-factory.ts +1 -1
  400. package/src/providers/inference/backfill.ts +3 -10
  401. package/src/providers/inference/profile-probe.ts +1 -1
  402. package/src/providers/retry.ts +0 -2
  403. package/src/providers/types.ts +0 -7
  404. package/src/providers/usage-tracking.ts +1 -1
  405. package/src/routes/__tests__/route-host.test.ts +1 -1
  406. package/src/routes/control.ts +1 -1
  407. package/src/routes/route-host-client.ts +1 -1
  408. package/src/routes/worker.ts +2 -2
  409. package/src/runtime/agent-wake.ts +1 -1
  410. package/src/runtime/assistant-stream-state.ts +1 -1
  411. package/src/runtime/auth/token-service.ts +1 -1
  412. package/src/runtime/background-job-runner.ts +1 -1
  413. package/src/runtime/middleware/twilio-validation.ts +2 -2
  414. package/src/runtime/routes/__tests__/app-pin-routes.test.ts +1 -1
  415. package/src/runtime/routes/__tests__/apps-refresh-route.test.ts +1 -1
  416. package/src/runtime/routes/__tests__/avatar-state-routes.test.ts +3 -33
  417. package/src/runtime/routes/__tests__/cloud-credits-routes.test.ts +5 -4
  418. package/src/runtime/routes/__tests__/cloud-invoice-routes.test.ts +4 -3
  419. package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +59 -287
  420. package/src/runtime/routes/__tests__/default-plugin-routes.test.ts +1 -1
  421. package/src/runtime/routes/__tests__/deprecated-route-context.test.ts +15 -62
  422. package/src/runtime/routes/__tests__/inference-profiles-routes.test.ts +105 -12
  423. package/src/runtime/routes/__tests__/ingress-status-routes.test.ts +1 -1
  424. package/src/runtime/routes/__tests__/monitoring-routes.test.ts +1 -1
  425. package/src/runtime/routes/__tests__/plugins-routes.test.ts +47 -211
  426. package/src/runtime/routes/__tests__/route-host-worker-routes.test.ts +1 -1
  427. package/src/runtime/routes/__tests__/schedule-routes-disarm-reason.test.ts +1 -1
  428. package/src/runtime/routes/__tests__/schedule-worker-routes.test.ts +1 -1
  429. package/src/runtime/routes/__tests__/user-route-dispatcher-host.test.ts +1 -1
  430. package/src/runtime/routes/__tests__/user-route-dispatcher.test.ts +1 -1
  431. package/src/runtime/routes/__tests__/user-routes-cli.test.ts +1 -1
  432. package/src/runtime/routes/__tests__/user-routes-notices.test.ts +1 -1
  433. package/src/runtime/routes/__tests__/user-routes-request.test.ts +1 -1
  434. package/src/runtime/routes/app-management-routes.ts +1 -1
  435. package/src/runtime/routes/attachment-routes.ts +1 -1
  436. package/src/runtime/routes/audit-routes.ts +1 -1
  437. package/src/runtime/routes/avatar-routes.ts +3 -10
  438. package/src/runtime/routes/cloud-routes.ts +3 -3
  439. package/src/runtime/routes/content-source-routes.ts +1 -1
  440. package/src/runtime/routes/conversation-query-routes.ts +60 -621
  441. package/src/runtime/routes/conversation-routes.ts +1 -38
  442. package/src/runtime/routes/debug-routes.ts +1 -1
  443. package/src/runtime/routes/deprecated-route-context.ts +5 -61
  444. package/src/runtime/routes/heartbeat-routes.ts +1 -1
  445. package/src/runtime/routes/identity-routes.ts +1 -1
  446. package/src/runtime/routes/index.ts +0 -6
  447. package/src/runtime/routes/inference-profile-session-handler.ts +3 -3
  448. package/src/runtime/routes/inference-profiles-routes.ts +48 -21
  449. package/src/runtime/routes/inference-provider-connection-routes.ts +0 -1
  450. package/src/runtime/routes/llm-call-sites-routes.ts +3 -3
  451. package/src/runtime/routes/log-export/__tests__/installed-inventory.test.ts +1 -1
  452. package/src/runtime/routes/log-export/__tests__/workspace-allowlist-error-contract.test.ts +1 -1
  453. package/src/runtime/routes/log-export/__tests__/workspace-allowlist.test.ts +1 -1
  454. package/src/runtime/routes/log-export/workspace-allowlist.ts +1 -1
  455. package/src/runtime/routes/log-export-routes.ts +17 -15
  456. package/src/runtime/routes/migration-rollback-routes.ts +1 -1
  457. package/src/runtime/routes/migration-routes.ts +2 -3
  458. package/src/runtime/routes/monitoring-routes.ts +2 -2
  459. package/src/runtime/routes/oauth-providers.ts +5 -5
  460. package/src/runtime/routes/plugins-routes.ts +38 -163
  461. package/src/runtime/routes/profiler-routes.ts +1 -1
  462. package/src/runtime/routes/route-host-worker-routes.ts +1 -1
  463. package/src/runtime/routes/sanity-routes.ts +1 -1
  464. package/src/runtime/routes/schedule-routes.ts +1 -1
  465. package/src/runtime/routes/schedule-worker-routes.ts +1 -1
  466. package/src/runtime/routes/settings-routes.ts +1 -1
  467. package/src/runtime/routes/sounds-config-routes.ts +1 -1
  468. package/src/runtime/routes/surface-conversation-resolver.ts +1 -7
  469. package/src/runtime/routes/user-route-dispatcher.ts +1 -3
  470. package/src/runtime/routes/user-route-import.ts +1 -1
  471. package/src/runtime/routes/user-route-resolution.ts +1 -1
  472. package/src/runtime/routes/user-routes-cli.ts +1 -1
  473. package/src/runtime/routes/workspace-commit-routes.ts +1 -1
  474. package/src/runtime/routes/workspace-greetings.ts +1 -1
  475. package/src/runtime/routes/workspace-routes.ts +1 -1
  476. package/src/runtime/routes/workspace-utils.ts +1 -1
  477. package/src/runtime/sync/resource-sync-events.ts +1 -1
  478. package/src/schedule/__tests__/plugin-schedule-declarations.test.ts +1 -1
  479. package/src/schedule/__tests__/plugin-schedule-reconciler.test.ts +1 -1
  480. package/src/schedule/plugin-schedule-availability.ts +1 -1
  481. package/src/schedule/plugin-schedule-declarations.ts +1 -1
  482. package/src/schedule/run-script.ts +1 -1
  483. package/src/schedule/scheduler.ts +1 -11
  484. package/src/schedule/worker-control.ts +1 -1
  485. package/src/schedule/worker.ts +3 -3
  486. package/src/security/oauth2.ts +2 -2
  487. package/src/security/secret-allowlist.ts +1 -1
  488. package/src/signals/cancel.ts +1 -1
  489. package/src/signals/conversation-undo.ts +1 -1
  490. package/src/signals/emit-event.ts +1 -1
  491. package/src/signals/event-stream.ts +1 -1
  492. package/src/signals/user-message.ts +1 -1
  493. package/src/skills/catalog-install.ts +2 -1
  494. package/src/skills/clawhub.ts +1 -1
  495. package/src/skills/cloud-store.ts +1 -1
  496. package/src/skills/path-classifier.ts +1 -1
  497. package/src/skills/skill-history.ts +1 -1
  498. package/src/skills/skillssh-registry.ts +1 -1
  499. package/src/skills/uninstall.ts +1 -1
  500. package/src/skills/workspace-skill-md-signature.ts +1 -1
  501. package/src/subagent/manager.ts +1 -1
  502. package/src/theme/workspace-theme.ts +1 -1
  503. package/src/tools/browser/auth-cache.ts +1 -1
  504. package/src/tools/browser/browser-manager.ts +1 -1
  505. package/src/tools/browser/runtime-check.ts +1 -1
  506. package/src/tools/executor.ts +4 -4
  507. package/src/tools/filesystem/write.ts +1 -1
  508. package/src/tools/permission-checker.ts +2 -51
  509. package/src/tools/run-standalone.ts +1 -1
  510. package/src/tools/skills/format-input-schema.ts +1 -1
  511. package/src/tools/skills/load.ts +1 -1
  512. package/src/tools/skills/scaffold-cloud.ts +0 -32
  513. package/src/tools/terminal/safe-env.ts +1 -2
  514. package/src/tools/terminal/sanitized-bash.ts +1 -1
  515. package/src/tools/terminal/shell.ts +1 -1
  516. package/src/tools/tool-approval-handler.ts +4 -1
  517. package/src/tools/workflows/manage-workflows.ts +2 -2
  518. package/src/tools/workflows/run-workflow.test.ts +1 -1
  519. package/src/tools/workspace-tools/loader.ts +1 -1
  520. package/src/tts/synthesis-stream.ts +2 -2
  521. package/src/usage/attribution.ts +1 -11
  522. package/src/util/browser.ts +1 -1
  523. package/src/util/bun-runtime.ts +2 -1
  524. package/src/util/device-id.ts +1 -1
  525. package/src/util/disk-usage.ts +4 -139
  526. package/src/util/layout.ts +3 -3
  527. package/src/util/logger.ts +1 -1
  528. package/src/util/logs-db-path.ts +1 -1
  529. package/src/util/memory-db-path.ts +1 -1
  530. package/src/util/{platform.ts → os.ts} +5 -30
  531. package/src/util/process-tree.ts +19 -0
  532. package/src/util/sqlite3-runtime.ts +1 -1
  533. package/src/util/telemetry-db-path.ts +1 -1
  534. package/src/watcher/__tests__/engine.test.ts +0 -23
  535. package/src/watcher/engine.ts +0 -7
  536. package/src/windows-compiled-cli.ts +0 -4
  537. package/src/windows-compiled-worker-entry.ts +0 -6
  538. package/src/workflows/leaf-runner.test.ts +1 -1
  539. package/src/workflows/leaf-runner.ts +1 -1
  540. package/src/workflows/library.ts +1 -1
  541. package/src/workspace/adaptive-thinking-repair.ts +5 -24
  542. package/src/workspace/byok-default-profile-ensure.ts +24 -26
  543. package/src/workspace/custom-profile-ensure.ts +2 -2
  544. package/src/workspace/git-service.ts +1 -1
  545. package/src/workspace/hatched-date.ts +1 -1
  546. package/src/workspace/migrations/038-unify-llm-callsite-configs.ts +2 -2
  547. package/src/workspace/migrations/040-seed-latency-callsite-defaults.ts +1 -1
  548. package/src/workspace/migrations/050-seed-main-agent-opus-callsite.ts +1 -1
  549. package/src/workspace/migrations/077-seed-memory-router-callsite.ts +1 -1
  550. package/src/workspace/migrations/registry.ts +0 -4
  551. package/src/workspace/turn-commit.ts +1 -1
  552. package/docs/activation-funnel-telemetry.md +0 -324
  553. package/scripts/bundled-plugin-packages.ts +0 -154
  554. package/scripts/generate-bundled-plugin-packages.ts +0 -29
  555. package/src/__tests__/activation-early-marking.test.ts +0 -114
  556. package/src/__tests__/auth-fallback-events-store.test.ts +0 -99
  557. package/src/__tests__/config-get-vision-flag.test.ts +0 -139
  558. package/src/__tests__/conversation-surfaces-activation-emit.test.ts +0 -400
  559. package/src/__tests__/internal-telemetry-routes.test.ts +0 -213
  560. package/src/__tests__/telemetry-routes.test.ts +0 -182
  561. package/src/__tests__/turn-events-store.test.ts +0 -376
  562. package/src/__tests__/ui-channel-variants.test.ts +0 -53
  563. package/src/avatar/__tests__/avatar-changed-telemetry.test.ts +0 -217
  564. package/src/avatar/avatar-changed-telemetry.ts +0 -128
  565. package/src/calls/__tests__/call-funnel-telemetry.test.ts +0 -204
  566. package/src/cli/commands/telemetry.help.ts +0 -27
  567. package/src/cli/commands/telemetry.ts +0 -83
  568. package/src/cli/lib/__tests__/local-plugin-upgrade.test.ts +0 -251
  569. package/src/cli/lib/__tests__/plugin-catalog-local.test.ts +0 -113
  570. package/src/cli/lib/__tests__/plugin-marketplace.test.ts +0 -384
  571. package/src/cli/lib/__tests__/plugin-pin-history.test.ts +0 -164
  572. package/src/cli/lib/__tests__/plugins-install-offline.test.ts +0 -228
  573. package/src/cli/lib/bundled-marketplace.json +0 -1575
  574. package/src/cli/lib/bundled-plugin-packages.json +0 -827
  575. package/src/cli/lib/bundled-plugin-packages.ts +0 -87
  576. package/src/cli/lib/plugin-catalog-local.ts +0 -94
  577. package/src/cli/lib/plugin-pin-history.ts +0 -276
  578. package/src/cloud/feature-gate.ts +0 -8
  579. package/src/config/__tests__/cloud-rehydration.test.ts +0 -180
  580. package/src/config/cloud-rehydration.ts +0 -35
  581. package/src/daemon/__tests__/auto-profile-router.test.ts +0 -380
  582. package/src/daemon/auto-profile-router.ts +0 -428
  583. package/src/live-voice/__tests__/live-voice-session-telemetry.test.ts +0 -391
  584. package/src/monitoring/__tests__/db-integrity-sample.test.ts +0 -113
  585. package/src/monitoring/__tests__/oom-kill-reporter.test.ts +0 -374
  586. package/src/monitoring/db-integrity-check.ts +0 -163
  587. package/src/monitoring/db-integrity-sample.ts +0 -176
  588. package/src/monitoring/oom-kill-reporter.ts +0 -469
  589. package/src/onboarding/__tests__/onboarding-events-store.test.ts +0 -158
  590. package/src/onboarding/onboarding-events-store.ts +0 -296
  591. package/src/persistence/__tests__/raw-query-telemetry.test.ts +0 -76
  592. package/src/persistence/lifecycle-events-store.test.ts +0 -134
  593. package/src/persistence/lifecycle-events-store.ts +0 -110
  594. package/src/plugins/defaults/memory/__tests__/activation-session-store.test.ts +0 -76
  595. package/src/plugins/defaults/memory/activation-session-store.ts +0 -50
  596. package/src/plugins/defaults/memory/src/__tests__/memory-v3-gate-stats.test.ts +0 -281
  597. package/src/runtime/routes/auto-profile-routes.ts +0 -83
  598. package/src/runtime/routes/internal-telemetry-routes.ts +0 -142
  599. package/src/runtime/routes/telemetry-routes.ts +0 -274
  600. package/src/security/auth-fallback-events-store.ts +0 -57
  601. package/src/telemetry/__tests__/activation-funnel.test.ts +0 -95
  602. package/src/telemetry/__tests__/config-setting-events-store.test.ts +0 -63
  603. package/src/telemetry/__tests__/config-setting-snapshot.test.ts +0 -143
  604. package/src/telemetry/__tests__/flush-checkpoints.test.ts +0 -56
  605. package/src/telemetry/__tests__/live-voice-funnel.test.ts +0 -174
  606. package/src/telemetry/__tests__/outbox-test-harness.ts +0 -85
  607. package/src/telemetry/__tests__/phone-call-funnel.test.ts +0 -72
  608. package/src/telemetry/__tests__/telemetry-event-fixtures.ts +0 -282
  609. package/src/telemetry/__tests__/watchdog-events-store.test.ts +0 -71
  610. package/src/telemetry/activation-funnel.ts +0 -172
  611. package/src/telemetry/config-setting-events-store.ts +0 -40
  612. package/src/telemetry/config-setting-snapshot.ts +0 -170
  613. package/src/telemetry/flush-checkpoints.ts +0 -70
  614. package/src/telemetry/live-voice-funnel.ts +0 -185
  615. package/src/telemetry/memory-corpus-size.test.ts +0 -120
  616. package/src/telemetry/memory-corpus-size.ts +0 -184
  617. package/src/telemetry/memory-tier-reporter.test.ts +0 -195
  618. package/src/telemetry/memory-tier-reporter.ts +0 -130
  619. package/src/telemetry/phone-call-funnel.ts +0 -144
  620. package/src/telemetry/skill-loaded-events-store.test.ts +0 -93
  621. package/src/telemetry/skill-loaded-events-store.ts +0 -39
  622. package/src/telemetry/telemetry-event-sources.test.ts +0 -223
  623. package/src/telemetry/telemetry-event-sources.ts +0 -597
  624. package/src/telemetry/telemetry-events-outbox.test.ts +0 -375
  625. package/src/telemetry/telemetry-events-outbox.ts +0 -237
  626. package/src/telemetry/telemetry-main-db.ts +0 -48
  627. package/src/telemetry/telemetry-wire-source.json +0 -4
  628. package/src/telemetry/telemetry-wire-validation.test.ts +0 -157
  629. package/src/telemetry/telemetry-wire-validation.ts +0 -162
  630. package/src/telemetry/telemetry-wire.generated.ts +0 -483
  631. package/src/telemetry/tool-executed-events-store.test.ts +0 -210
  632. package/src/telemetry/tool-executed-events-store.ts +0 -102
  633. package/src/telemetry/trace-collection-policy.test.ts +0 -28
  634. package/src/telemetry/trace-collection-policy.ts +0 -30
  635. package/src/telemetry/turn-events-store.ts +0 -216
  636. package/src/telemetry/turn-trace-store.test.ts +0 -884
  637. package/src/telemetry/turn-trace-store.ts +0 -399
  638. package/src/telemetry/types.test.ts +0 -38
  639. package/src/telemetry/types.ts +0 -780
  640. package/src/telemetry/usage-telemetry-reporter.test.ts +0 -3445
  641. package/src/telemetry/usage-telemetry-reporter.ts +0 -566
  642. package/src/telemetry/watchdog-direct-emit.test.ts +0 -112
  643. package/src/telemetry/watchdog-direct-emit.ts +0 -104
  644. package/src/telemetry/watchdog-events-store.ts +0 -31
  645. package/src/tools/ui-surface/channel-variants.ts +0 -52
  646. package/src/watcher/__tests__/telemetry.test.ts +0 -178
  647. package/src/watcher/telemetry.ts +0 -93
  648. package/src/workspace/migrations/097-enable-adaptive-thinking-managed-profiles.ts +0 -165
  649. package/src/workspace/migrations/104-recheck-adaptive-thinking-model-implied-anthropic.ts +0 -151
  650. /package/src/{telemetry → persistence}/tool-usage-store.ts +0 -0
  651. /package/src/{telemetry → persistence}/turn-outcome.ts +0 -0
@@ -3,7 +3,7 @@ import { afterEach, beforeEach, describe, expect, test } from "bun:test";
3
3
  import type { ToolContext } from "../../../../tools/types.js";
4
4
 
5
5
  // The real isWindows() reads process.platform, so simulate the host platform
6
- // directly instead of mocking util/platform.js.
6
+ // directly instead of mocking util/os.js.
7
7
  const originalProcessPlatform = process.platform;
8
8
 
9
9
  function setProcessPlatform(value: string): void {
@@ -3,7 +3,7 @@ import type {
3
3
  ToolContext,
4
4
  ToolExecutionResult,
5
5
  } from "../../../../tools/types.js";
6
- import { isWindows } from "../../../../util/platform.js";
6
+ import { isWindows } from "../../../../util/os.js";
7
7
 
8
8
  const PANES = {
9
9
  microphone: {
@@ -159,12 +159,6 @@ export const CALL_SITE_DEFAULTS: Record<LLMCallSite, CallSiteDefaultConfig> = {
159
159
  voiceEscalationJudge: {
160
160
  profile: JEV_MANAGED_PROFILE_KEY,
161
161
  },
162
- // Picks the default profile for a turn pinned to the Auto profile. On a
163
- // BYOK install the cloud-only Jev profile has no body, so the router is
164
- // unavailable and the turn runs on Balanced.
165
- autoProfileRouter: {
166
- profile: JEV_MANAGED_PROFILE_KEY,
167
- },
168
162
  // The barge-in continuation judge remains off until a TypeSafe profile is
169
163
  // pinned here (see live-voice/continuation-judge.ts).
170
164
  voiceContinuationJudge: { profile: "cost-optimized" },
@@ -3,11 +3,10 @@
3
3
  *
4
4
  * Django maps an assistant API key to these ids via
5
5
  * `POST /v1/internal/assistants/validate/`. Process startup rehydrates from
6
- * that endpoint into the in-memory overrides. Resolution reads those
7
- * overrides (and `CLOUD_ORGANIZATION_ID` / `CLOUD_USER_ID` when set).
8
- * When the in-memory assistant id is empty, the next resolve retries
9
- * validate (single-flight, with a cooldown after a failed attempt that holds
10
- * only while the same API key and base URL are stored).
6
+ * that endpoint into the in-memory overrides. Resolution reads only those
7
+ * overrides. When the in-memory assistant id is empty, the next resolve
8
+ * retries validate (single-flight, with a cooldown after a failed attempt
9
+ * that holds only while the same API key and base URL are stored).
11
10
  */
12
11
 
13
12
  import { credentialKey } from "../security/credential-key.js";
@@ -174,6 +173,14 @@ export async function ensureCloudIdentityIds(): Promise<void> {
174
173
  failedFingerprint = null;
175
174
  nextEnsureAttemptAt = 0;
176
175
  log.info("Loaded platform identity from platform validate");
176
+ } catch (err) {
177
+ // Startup rehydration must never take a process down: an
178
+ // unreachable credential store only means identity is not bound
179
+ // yet, and the next resolve retries.
180
+ log.warn(
181
+ { error: err instanceof Error ? err.message : String(err) },
182
+ "Failed to ensure cloud identity ids (non-fatal)",
183
+ );
177
184
  } finally {
178
185
  ensureInFlight = null;
179
186
  }
@@ -10,7 +10,7 @@ import { join } from "node:path";
10
10
 
11
11
  import { z } from "zod";
12
12
 
13
- import { getDataDir } from "../util/platform.js";
13
+ import { getDataDir } from "../util/layout.js";
14
14
 
15
15
  export const ComposerPreferencesSchema = z.object({
16
16
  favoriteModeIds: z.array(z.string().min(1).max(200)).max(5).default([]),
@@ -8,7 +8,6 @@ import { resolveModelIntent } from "../providers/model-intents.js";
8
8
  import { isCodexSubscriptionModel } from "../providers/openai/codex-models.js";
9
9
  import type { ModelIntent } from "../providers/types.js";
10
10
  import {
11
- AUTO_PROFILE_KEY,
12
11
  BACKUP_PROFILE_KEYS,
13
12
  type BackupProfileKey,
14
13
  DEFAULT_PROFILE_KEYS,
@@ -93,7 +92,6 @@ const CADET_PROFILE_IMPLS: ProfileImpls = {
93
92
  balanced: {
94
93
  model: "accounts/fireworks/models/glm-5p3-flash",
95
94
  provider: "cadet",
96
- source: "managed",
97
95
  label: "Balanced",
98
96
  description: "Good balance of quality, cost, and speed",
99
97
  fallbackProfile: FALLBACK_PROFILE_BY_KEY.balanced,
@@ -107,7 +105,6 @@ const CADET_PROFILE_IMPLS: ProfileImpls = {
107
105
  "quality-optimized": {
108
106
  model: "gpt-5.6-sol",
109
107
  provider: "cadet",
110
- source: "managed",
111
108
  label: "Quality",
112
109
  description: "High-quality results with the most capable model",
113
110
  fallbackProfile: FALLBACK_PROFILE_BY_KEY["quality-optimized"],
@@ -121,7 +118,6 @@ const CADET_PROFILE_IMPLS: ProfileImpls = {
121
118
  "cost-optimized": {
122
119
  model: "accounts/fireworks/models/deepseek-v4p1-flash",
123
120
  provider: "cadet",
124
- source: "managed",
125
121
  label: "Budget",
126
122
  // Tier intent only - never name the concrete model here. Clients
127
123
  // surface the live model beside the description, so a model name in
@@ -154,7 +150,6 @@ const CADET_PROFILE_IMPLS: ProfileImpls = {
154
150
  // owner. This model is the one live-voice TTFT drives validated.
155
151
  model: "gpt-5.6-luna",
156
152
  provider: "cadet",
157
- source: "managed",
158
153
  label: "Fast",
159
154
  description: "Fastest responses, with reasoning turned off",
160
155
  fallbackProfile: FALLBACK_PROFILE_BY_KEY["latency-optimized"],
@@ -189,7 +184,6 @@ const BACKUP_PROFILE_IMPLS: Record<BackupProfileKey, DefaultProfileTemplate> = {
189
184
  "balanced-backup": {
190
185
  model: "claude-sonnet-5",
191
186
  provider: "cadet",
192
- source: "managed",
193
187
  label: "Balanced Backup",
194
188
  description: "Automatic backup for the Balanced profile",
195
189
  maxTokens: 32000,
@@ -202,7 +196,6 @@ const BACKUP_PROFILE_IMPLS: Record<BackupProfileKey, DefaultProfileTemplate> = {
202
196
  "quality-optimized-backup": {
203
197
  model: "claude-opus-5",
204
198
  provider: "cadet",
205
- source: "managed",
206
199
  label: "Quality Backup",
207
200
  description: "Automatic backup for the Quality profile",
208
201
  maxTokens: 32000,
@@ -215,7 +208,6 @@ const BACKUP_PROFILE_IMPLS: Record<BackupProfileKey, DefaultProfileTemplate> = {
215
208
  "cost-optimized-backup": {
216
209
  model: "gemini-3.1-flash-lite",
217
210
  provider: "cadet",
218
- source: "managed",
219
211
  label: "Budget Backup",
220
212
  description: "Automatic backup for the Budget profile",
221
213
  maxTokens: 8192,
@@ -233,7 +225,6 @@ const BACKUP_PROFILE_IMPLS: Record<BackupProfileKey, DefaultProfileTemplate> = {
233
225
  "latency-optimized-backup": {
234
226
  model: "claude-haiku-4-5-20251001",
235
227
  provider: "cadet",
236
- source: "managed",
237
228
  label: "Fast Backup",
238
229
  description: "Automatic backup for the Fast profile",
239
230
  maxTokens: 8192,
@@ -259,7 +250,6 @@ const CHATGPT_PROFILE_IMPLS: ProfileImpls = {
259
250
  balanced: {
260
251
  model: "gpt-5.6-luna",
261
252
  provider: "chatgpt",
262
- source: "managed",
263
253
  label: "Balanced",
264
254
  description: "Good balance of quality, cost, and speed",
265
255
  // Matches the cadet column's Balanced token budget: the Codex path
@@ -272,7 +262,6 @@ const CHATGPT_PROFILE_IMPLS: ProfileImpls = {
272
262
  "quality-optimized": {
273
263
  model: "gpt-5.6-sol",
274
264
  provider: "chatgpt",
275
- source: "managed",
276
265
  label: "Quality",
277
266
  description: "Best results with the most capable model",
278
267
  maxTokens: 32000,
@@ -283,7 +272,6 @@ const CHATGPT_PROFILE_IMPLS: ProfileImpls = {
283
272
  "cost-optimized": {
284
273
  model: "gpt-5.6-luna",
285
274
  provider: "chatgpt",
286
- source: "managed",
287
275
  label: "Budget",
288
276
  description: "Cheapest responses, for high-volume work",
289
277
  maxTokens: 8192,
@@ -294,7 +282,6 @@ const CHATGPT_PROFILE_IMPLS: ProfileImpls = {
294
282
  "latency-optimized": {
295
283
  model: "gpt-5.6-luna",
296
284
  provider: "chatgpt",
297
- source: "managed",
298
285
  label: "Fast",
299
286
  description: "Fastest responses, with reasoning turned off",
300
287
  maxTokens: 8192,
@@ -322,7 +309,6 @@ const BYOK_PROFILE_IMPLS: Record<
322
309
  > = {
323
310
  balanced: {
324
311
  intent: "balanced",
325
- source: "user",
326
312
  label: "Balanced",
327
313
  description: "Good balance of quality, cost, and speed",
328
314
  maxTokens: 16000,
@@ -332,7 +318,6 @@ const BYOK_PROFILE_IMPLS: Record<
332
318
  },
333
319
  "quality-optimized": {
334
320
  intent: "quality-optimized",
335
- source: "user",
336
321
  label: "Quality",
337
322
  description: "Best results with the most capable model",
338
323
  maxTokens: 32000,
@@ -345,7 +330,6 @@ const BYOK_PROFILE_IMPLS: Record<
345
330
  // is effort alone (see PROVIDER_MODEL_INTENTS).
346
331
  "cost-optimized": {
347
332
  intent: "cost-optimized",
348
- source: "user",
349
333
  label: "Budget",
350
334
  description: "Cheapest responses, for high-volume work",
351
335
  maxTokens: 8192,
@@ -355,7 +339,6 @@ const BYOK_PROFILE_IMPLS: Record<
355
339
  },
356
340
  "latency-optimized": {
357
341
  intent: "latency-optimized",
358
- source: "user",
359
342
  label: "Fast",
360
343
  description: "Fastest responses, with reasoning turned off",
361
344
  maxTokens: 8192,
@@ -402,7 +385,6 @@ export const PROFILE_IMPLS: Record<
402
385
  export const JEV_MANAGED_PROFILE_TEMPLATE: DefaultProfileTemplate = {
403
386
  model: "jev-latest",
404
387
  provider: "cadet",
405
- source: "managed",
406
388
  label: "Jev",
407
389
  description:
408
390
  "TypeSafe decision model for yes/no verdicts, for the voice judges and memory selection",
@@ -411,27 +393,6 @@ export const JEV_MANAGED_PROFILE_TEMPLATE: DefaultProfileTemplate = {
411
393
  contextWindow: { maxInputTokens: 32_000 },
412
394
  };
413
395
 
414
- /**
415
- * The Auto profile: the cloud Balanced body under its own label, so that
416
- * anything dispatching the name directly runs Balanced. The per-message
417
- * choice among the defaults happens in the agent loop, not here (see
418
- * `AUTO_PROFILE_KEY`). No `fallbackProfile`: the code-owned fallback mapping
419
- * is keyed by default profile, and a direct dispatch of this name is already
420
- * the fallback path. Flag-gated like `os-beta`: NOT in
421
- * `MANAGED_PROFILE_TEMPLATES`, so the unconditional boot seed never creates
422
- * it; the flag-gated profile reconcile materializes it while the
423
- * `auto-profile` feature flag is on.
424
- */
425
- export const AUTO_PROFILE_TEMPLATE: DefaultProfileTemplate = (() => {
426
- const { fallbackProfile: _fallbackProfile, ...balanced } =
427
- CADET_PROFILE_IMPLS.balanced;
428
- return {
429
- ...balanced,
430
- label: "Auto",
431
- description: "Picks the profile that fits each message, in beta",
432
- };
433
- })();
434
-
435
396
  /**
436
397
  * Cloud profiles, i.e. the `cadet` column keyed by profile name, plus the
437
398
  * managed backup profiles and the cloud Jev profile. Backups come after the
@@ -498,7 +459,6 @@ export const USER_PROFILE_TEMPLATES: Record<string, DefaultProfileTemplate> =
498
459
  export const OS_BETA_PROFILE_TEMPLATE: DefaultProfileTemplate = {
499
460
  model: "MiniMaxAI/MiniMax-M3",
500
461
  provider: "cadet",
501
- source: "managed",
502
462
  label: "OS Beta",
503
463
  description: "Good balance of quality, cost, and speed, in beta",
504
464
  maxTokens: 32000,
@@ -537,31 +497,13 @@ export const CODE_OWNED_PROFILE_NAMES = new Set<string>([
537
497
  JEV_MANAGED_PROFILE_KEY,
538
498
  ]);
539
499
 
540
- // All cloud profiles, including the flag-gated os-beta, are invariant:
541
- // their MANAGED-SOURCE entries are read-only to user-facing writes except
542
- // re-enabling a disabled one (enforced at commitConfigWrite). A user-owned
543
- // profile sharing one of these names is NOT locked — invariance is gated on
544
- // the on-disk entry's `source` being `managed`.
545
- export const INVARIANT_PROFILE_NAMES = new Set<string>([
546
- ...DEFAULT_PROFILE_KEYS,
547
- ...BACKUP_PROFILE_KEYS,
548
- JEV_MANAGED_PROFILE_KEY,
549
- AUTO_PROFILE_KEY,
550
- OS_BETA_PROFILE_KEY,
551
- ]);
552
-
553
- // Membership here marks a name as managed. The route layer applies managed
554
- // restrictions (blocking model/provider edits and deletion) only to entries
555
- // whose on-disk `source` is `managed`; `INVARIANT_PROFILE_NAMES` marks the
556
- // names whose managed-source entries are additionally frozen at the
557
- // `commitConfigWrite` choke point. `OS_BETA_PROFILE_KEY` is flag-gated: it is
558
- // materialized by the flag-gated profile reconcile, which refuses to touch a
559
- // same-named user profile.
500
+ // Names reserved for code-defined default profiles. Users cannot create or
501
+ // edit profiles under these names — a workspace entry on a non-`cadet`
502
+ // provider under one would be a shadow, which the route layer refuses.
560
503
  export const MANAGED_PROFILE_NAMES = new Set<string>([
561
504
  ...DEFAULT_PROFILE_KEYS,
562
505
  ...BACKUP_PROFILE_KEYS,
563
506
  JEV_MANAGED_PROFILE_KEY,
564
- AUTO_PROFILE_KEY,
565
507
  OS_BETA_PROFILE_KEY,
566
508
  ]);
567
509
 
@@ -691,10 +633,6 @@ function buildDefaultProfileEntries(): Record<string, ProfileEntry> {
691
633
  JEV_MANAGED_PROFILE_TEMPLATE,
692
634
  JEV_MANAGED_PROFILE_TEMPLATE.provider,
693
635
  );
694
- entries[AUTO_PROFILE_KEY] = materializeProfile(
695
- AUTO_PROFILE_TEMPLATE,
696
- AUTO_PROFILE_TEMPLATE.provider,
697
- );
698
636
  entries[OS_BETA_PROFILE_KEY] = materializeProfile(
699
637
  OS_BETA_PROFILE_TEMPLATE,
700
638
  OS_BETA_PROFILE_TEMPLATE.provider,
@@ -734,9 +672,9 @@ const WORKSPACE_OWNED_DEFAULT_FIELDS = ["label", "status", "topP"] as const;
734
672
  * Precedence:
735
673
  * - A name with no code default resolves to the workspace entry (custom
736
674
  * profiles pass through untouched).
737
- * - A workspace entry whose `source` is not `managed` wins over the code
675
+ * - A workspace entry on a non-`cadet` provider wins over the code
738
676
  * default — a user-owned profile sharing a default name shadows it.
739
- * - A managed-source workspace entry contributes only its
677
+ * - A `cadet`-provider workspace entry contributes only its
740
678
  * `WORKSPACE_OWNED_DEFAULT_FIELDS`; all other content comes from the code
741
679
  * default body.
742
680
  * - A default absent from the workspace resolves to the catalog body as-is —
@@ -777,7 +715,7 @@ function resolveAgainstBody(
777
715
  // to the stub would list a profile with no provider or model and let a
778
716
  // reference to it look valid, which is precisely what `LLMSchema` rejects
779
717
  // on those columns.
780
- if (isCloudOnlyProfileKey(name) && workspace?.source === "managed") {
718
+ if (isCloudOnlyProfileKey(name) && workspace?.provider === "cadet") {
781
719
  return undefined;
782
720
  }
783
721
  return workspace;
@@ -788,7 +726,7 @@ function resolveAgainstBody(
788
726
  if (workspace == null) {
789
727
  return isFlagGatedProfileKey(name) ? undefined : { ...body };
790
728
  }
791
- if (workspace.source !== "managed") {
729
+ if (workspace.provider !== "cadet") {
792
730
  return workspace;
793
731
  }
794
732
  const merged: ProfileEntry = { ...body };
@@ -816,11 +754,7 @@ function resolveAgainstBody(
816
754
  * - A default provider without a named matrix column materializes from the
817
755
  * shared `BYOK_PROFILE_IMPLS` templates, with `resolveModelIntent`
818
756
  * falling back to the provider's catalog `defaultModel`.
819
- * - The resolved body carries `source: "managed"` regardless of provider:
820
- * default profile content is code-owned whichever provider implements it.
821
- * The BYOK templates' `source: "user"` exists for the conversion pass's
822
- * frozen `custom-*` reference bodies (`USER_PROFILE_TEMPLATES`), not as
823
- * an ownership claim on the body.
757
+ * Default profile content is code-owned whichever provider implements it.
824
758
  */
825
759
  export function resolveDefaultProfileForProvider(
826
760
  workspaceProfiles: Record<string, ProfileEntry> | undefined,
@@ -892,7 +826,6 @@ function defaultProfileBodyForProvider(
892
826
  impl.provider,
893
827
  resolveDefaultConnectionName(defaultBlob) ?? undefined,
894
828
  ),
895
- source: "managed",
896
829
  });
897
830
  }
898
831
 
@@ -77,24 +77,6 @@ export function isBackupProfileKey(value: string): value is BackupProfileKey {
77
77
  */
78
78
  export const JEV_MANAGED_PROFILE_KEY = "jev-managed";
79
79
 
80
- /**
81
- * Cloud profile that picks one of the default profiles per message: the
82
- * agent loop asks Jev which default fits the user's latest message and runs
83
- * the turn on that profile (`daemon/auto-profile-router.ts`). Its own body
84
- * is the cloud Balanced body, so any path that dispatches the name
85
- * directly, or a turn on which the router is unavailable, runs Balanced.
86
- * Managed column only, because the router depends on the cloud Jev route,
87
- * and flag-gated: it exists only while the `auto-profile` feature flag has
88
- * reconciled it into the workspace (see `sync-gated-profiles.ts`).
89
- * Deliberately NOT part of `DEFAULT_PROFILE_KEYS`: it is a selection over
90
- * those keys, not a fifth intent.
91
- */
92
- export const AUTO_PROFILE_KEY = "auto";
93
- export const AUTO_PROFILE_FEATURE_FLAG_KEY = "auto-profile";
94
-
95
- /** The call site the automatic profile router asks Jev through. */
96
- export const AUTO_PROFILE_ROUTER_CALL_SITE = "autoProfileRouter";
97
-
98
80
  /**
99
81
  * The call sites that consume a structured verdict and so may be pinned to
100
82
  * the Jev profile. Every other site expects chat text or a tool call, which
@@ -104,18 +86,16 @@ export const JEV_MANAGED_PROFILE_CALL_SITES = [
104
86
  "voiceEscalationJudge",
105
87
  "voiceContinuationJudge",
106
88
  "memoryV3SelectL2",
107
- AUTO_PROFILE_ROUTER_CALL_SITE,
108
89
  ] as const;
109
90
 
110
91
  /**
111
92
  * Keys whose profile exists on the cloud (`cadet`) column only: the
112
- * backups, the Jev profile, and the Auto profile. Under a BYOK or ChatGPT
93
+ * backups and the Jev profile. Under a BYOK or ChatGPT
113
94
  * default provider these names have no body to resolve to.
114
95
  */
115
96
  export const MANAGED_ONLY_PROFILE_KEYS = [
116
97
  ...BACKUP_PROFILE_KEYS,
117
98
  JEV_MANAGED_PROFILE_KEY,
118
- AUTO_PROFILE_KEY,
119
99
  ] as const;
120
100
 
121
101
  export function isCloudOnlyProfileKey(value: string): boolean {
@@ -136,10 +116,7 @@ export const OS_BETA_PROFILE_KEY = "os-beta";
136
116
  * a feature flag reconciles that entry in and out. Never always-valid
137
117
  * reference targets: a reference to one is valid only with the entry present.
138
118
  */
139
- export const FLAG_GATED_PROFILE_KEYS = [
140
- OS_BETA_PROFILE_KEY,
141
- AUTO_PROFILE_KEY,
142
- ] as const;
119
+ export const FLAG_GATED_PROFILE_KEYS = [OS_BETA_PROFILE_KEY] as const;
143
120
 
144
121
  export function isFlagGatedProfileKey(value: string): boolean {
145
122
  return (FLAG_GATED_PROFILE_KEYS as readonly string[]).includes(value);
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * IMPORTANT: This module has NO internal imports (no logger, no platform
8
8
  * utilities) so it can be safely imported from bootstrap-level code like
9
- * util/platform.ts and util/logger.ts without circular dependencies.
9
+ * util/layout.ts and util/logger.ts without circular dependencies.
10
10
  *
11
11
  * Higher-level env vars that depend on the logger or config system live in
12
12
  * config/env.ts, which re-exports selected accessors from this module.
@@ -68,18 +68,6 @@ export function getIsCloud(): boolean {
68
68
  return flag("IS_CLOUD");
69
69
  }
70
70
 
71
- /**
72
- * CADET_DISABLE_CLOUD — boolean, default: false
73
- * When true, all outbound cloud API calls in local mode are suppressed.
74
- * The daemon, gateway, and web UI each no-op cloud requests with a
75
- * debug log. Has no effect when IS_CLOUD is true (cloud-managed
76
- * instances always connect to the cloud). Reads the legacy
77
- * CADET_DISABLE_CLOUD name as a fallback for older deployments.
78
- */
79
- export function getDisableCloud(): boolean {
80
- return flag("CADET_DISABLE_CLOUD") || flag("CADET_DISABLE_CLOUD");
81
- }
82
-
83
71
  /**
84
72
  * CADET_DEVICE_ID — string, default: undefined
85
73
  * Host-stable device id injected by the CLI into containerized deployments,
@@ -182,7 +170,6 @@ const KNOWN_CADET_VARS = new Set([
182
170
  "CADET_DESKTOP_APP",
183
171
  "CADET_DEV",
184
172
  "CADET_DEVICE_ID",
185
- "CADET_DISABLE_CLOUD",
186
173
  "CADET_DOCS_BASE_URL",
187
174
  "CADET_ENVIRONMENT",
188
175
  "CADET_HATCHED_BY",
package/src/config/env.ts CHANGED
@@ -232,11 +232,12 @@ export function setCloudOrganizationId(value: string | undefined): void {
232
232
  }
233
233
 
234
234
  /**
235
- * CLOUD_ORGANIZATION_ID — UUID of the organization this assistant belongs to.
236
- * Used for platform tagging and API calls.
235
+ * Organization ID — UUID of the organization this assistant belongs to.
236
+ * Resolved from the in-memory override (populated by cloud identity
237
+ * validation); the API key resolves the credentials.
237
238
  */
238
239
  export function getCloudOrganizationId(): string {
239
- return str("CLOUD_ORGANIZATION_ID") ?? _cloudOrganizationIdOverride ?? "";
240
+ return _cloudOrganizationIdOverride ?? "";
240
241
  }
241
242
 
242
243
  let _platformUserIdOverride: string | undefined;
@@ -246,11 +247,12 @@ export function setCloudUserId(value: string | undefined): void {
246
247
  }
247
248
 
248
249
  /**
249
- * CLOUD_USER_ID — UUID of the user who owns this assistant.
250
- * Used for telemetry and platform API calls.
250
+ * User ID — UUID of the user who owns this assistant.
251
+ * Resolved from the in-memory override (populated by cloud identity
252
+ * validation); the API key resolves the credentials.
251
253
  */
252
254
  export function getCloudUserId(): string {
253
- return str("CLOUD_USER_ID") ?? _platformUserIdOverride ?? "";
255
+ return _platformUserIdOverride ?? "";
254
256
  }
255
257
 
256
258
  // ── Startup validation ──────────────────────────────────────────────────────
@@ -278,7 +278,7 @@ function providerAwareEntry(
278
278
  return entry;
279
279
  }
280
280
  const workspace = llm.profiles?.[name];
281
- if (workspace != null && workspace.source !== "managed") {
281
+ if (workspace != null && workspace.provider !== "cadet") {
282
282
  return entry;
283
283
  }
284
284
  return resolveDefaultProfileForProvider(undefined, name, llm.default);
@@ -477,7 +477,6 @@ function resolveOverrideOrDefault(
477
477
  * kept — with a single winner there is no cross-profile leakage to guard. */
478
478
  function winnerConfigFragment(entry: ProfileEntry): Mergeable {
479
479
  const {
480
- source: _source,
481
480
  label: _label,
482
481
  description: _description,
483
482
  status: _status,
@@ -10,13 +10,13 @@ import {
10
10
  import { basename, dirname, join } from "node:path";
11
11
 
12
12
  import { safeStatSync } from "../util/fs.js";
13
- import { getLogger } from "../util/logger.js";
14
13
  import {
15
14
  ensureDataDir,
16
15
  getConfigQuarantineNoticePath,
17
16
  getConfigValidationResetNoticePath,
18
17
  getWorkspaceConfigPath,
19
- } from "../util/platform.js";
18
+ } from "../util/layout.js";
19
+ import { getLogger } from "../util/logger.js";
20
20
  import { validateChatSettingsWrite } from "./chat-settings.js";
21
21
  import { pruneSeededCallsiteDefaultsFromConfig } from "./prune-seeded-callsite-defaults.js";
22
22
  import { AssistantConfigSchema } from "./schema.js";
@@ -32,7 +32,7 @@ let suppressConfigDiskWritesDepth = 0;
32
32
  /**
33
33
  * The most recent effective config in this process. Captured inside
34
34
  * {@link validateWithSchema} on every validation-success path, then overwritten
35
- * by {@link loadConfig} with the deployment-context-filled config whenever
35
+ * by {@link getConfig} with the deployment-context-filled config whenever
36
36
  * context defaults apply — so it reflects the config as consumers actually see
37
37
  * it (cloud service modes and all), not just the pre-fill schema-defaulted
38
38
  * view. It is a safety net for the recovery ladder — when config.json later
@@ -126,7 +126,7 @@ function cloneDefaultConfig(): AssistantConfig {
126
126
 
127
127
  /**
128
128
  * Returns deployment-context-aware config defaults that override schema
129
- * defaults for cloud assistants. Applied to every `loadConfig()`
129
+ * defaults for cloud assistants. Applied to every `getConfig()`
130
130
  * call as a fill-only pass — they only fill keys that are absent from the
131
131
  * raw config on disk, so an explicit user choice (e.g. saving "your-own"
132
132
  * via the macOS Models & Services UI) always wins.
@@ -473,7 +473,7 @@ function clearConfigValidationResetNotice(): void {
473
473
  * 3. full schema defaults as the true last resort.
474
474
  *
475
475
  * Every success path records a `structuredClone` of the returned config as the
476
- * last-known-good safety net. Cloning is required because `loadConfig` mutates
476
+ * last-known-good safety net. Cloning is required because `getConfig` mutates
477
477
  * the returned object in place via `fillContextDefaultsForMissingKeys`.
478
478
  */
479
479
  function validateWithSchema(raw: Record<string, unknown>): AssistantConfig {
@@ -939,10 +939,10 @@ function emptyDefaultWorkspaceConfigMergeResult(): DefaultWorkspaceConfigMergeRe
939
939
  * Merge default workspace config from the file referenced by
940
940
  * CADET_DEFAULT_WORKSPACE_CONFIG_PATH into the workspace config on disk.
941
941
  *
942
- * Called once at daemon startup (before the first loadConfig()) so platform
942
+ * Called once at daemon startup (before the first getConfig()) so platform
943
943
  * overrides are persisted to disk before the daemon's first config read.
944
944
  * Schema defaults are no longer materialized into the file on load — the
945
- * in-memory `loadConfig()` cache applies them at access time instead.
945
+ * in-memory `getConfig()` cache applies them at access time instead.
946
946
  */
947
947
  /**
948
948
  * Whether an unconsumed onboarding overlay is waiting to be merged this boot.
@@ -1048,14 +1048,14 @@ export function mergeDefaultWorkspaceConfig(): DefaultWorkspaceConfigMergeResult
1048
1048
  return mergeResult;
1049
1049
  }
1050
1050
 
1051
- export function loadConfig(): AssistantConfig {
1051
+ export function getConfig(): AssistantConfig {
1052
1052
  const freshCached = getCachedConfigIfFresh();
1053
1053
  if (freshCached) {
1054
1054
  return freshCached;
1055
1055
  }
1056
1056
 
1057
1057
  // Re-entrancy guard: log calls during loading (e.g. file-mode warning)
1058
- // can trigger loadConfig again. Return defaults to break the cycle
1058
+ // can trigger getConfig again. Return defaults to break the cycle
1059
1059
  // instead of recursing to stack overflow.
1060
1060
  if (loading) {
1061
1061
  return cloneDefaultConfig();
@@ -1123,7 +1123,7 @@ export function loadConfig(): AssistantConfig {
1123
1123
  // explicitly set in `fileConfig`. This runs on every load — not just the
1124
1124
  // first — because the workspace config file is written by upstream
1125
1125
  // lifecycle steps (`mergeDefaultWorkspaceConfig`, `seedInferenceProfiles`)
1126
- // before `loadConfig()` is reached. Gating on `!configFileExisted` would
1126
+ // before `getConfig()` is reached. Gating on `!configFileExisted` would
1127
1127
  // make the context defaults dead code on cloud-managed daemons whose
1128
1128
  // config.json was created by those earlier steps without service-mode
1129
1129
  // entries. Explicit user choices on disk are preserved because the helper
@@ -1234,14 +1234,10 @@ export function loadConfig(): AssistantConfig {
1234
1234
  }
1235
1235
  }
1236
1236
 
1237
- export function getConfig(): AssistantConfig {
1238
- return loadConfig();
1239
- }
1240
-
1241
1237
  /**
1242
1238
  * Read-only config accessor: returns the current config without creating
1243
1239
  * directories or writing files. Reads config.json if it exists on disk;
1244
- * returns schema defaults otherwise. Unlike `getConfig()` / `loadConfig()`,
1240
+ * returns schema defaults otherwise. Unlike `getConfig()`,
1245
1241
  * this never calls `ensureDataDir()` or writes a default config to disk,
1246
1242
  * making it safe to call during CLI program construction before the
1247
1243
  * workspace-existence check runs.
@@ -1315,7 +1311,7 @@ export function loadRawConfig(): Record<string, unknown> {
1315
1311
  try {
1316
1312
  parsed = JSON.parse(readFileSync(configPath, "utf-8"));
1317
1313
  } catch (err) {
1318
- // Mirror loadConfig(): quarantine the corrupt file and return an empty
1314
+ // Mirror getConfig(): quarantine the corrupt file and return an empty
1319
1315
  // object rather than throwing. This prevents /v1/config from surfacing
1320
1316
  // a 500 when the user's config.json is malformed.
1321
1317
  quarantineCorruptConfig(configPath, err);
@@ -1440,7 +1436,7 @@ export const _writeQuarantineNotice = writeQuarantineNotice;
1440
1436
  * Test-only alias for `recoverFromInvalidConfig`. The strip-and-reparse
1441
1437
  * cleanup (including sparse-array compaction) repairs every known real-world
1442
1438
  * config shape, so no config.json fixture reliably reaches the recovery
1443
- * ladder through `loadConfig` — the ladder is defense-in-depth for schema
1439
+ * ladder through `getConfig` — the ladder is defense-in-depth for schema
1444
1440
  * shapes the cleanup does not anticipate. Tests exercise its rungs (last
1445
1441
  * known good, per-section salvage, full defaults) by calling it directly.
1446
1442
  * Not for production use.
@@ -41,7 +41,7 @@ export function completeCustomProfile(
41
41
  dflt: LLMConfigBase,
42
42
  profile: ProfileEntry,
43
43
  ): ProfileEntry {
44
- if (profile.mix != null || profile.source === "managed") {
44
+ if (profile.mix != null || profile.provider === "cadet") {
45
45
  return profile;
46
46
  }
47
47
 
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
 
3
- import { getDataDir } from "../util/platform.js";
3
+ import { getDataDir } from "../util/layout.js";
4
4
 
5
5
  // Re-export domain schemas that have external consumers
6
6
  export { VALID_CALLER_IDENTITY_MODES } from "./schemas/calls.js";
@@ -146,12 +146,6 @@ export const AssistantConfigSchema = z.object({
146
146
  pluginUpdates: PluginUpdatesConfigSchema.default(
147
147
  PluginUpdatesConfigSchema.parse({}),
148
148
  ),
149
- legacyTelemetryOptOut: z
150
- .boolean()
151
- .optional()
152
- .describe(
153
- "Fail-closed telemetry marker: set for a workspace that had an explicit local usage-data opt-out before telemetry moved to platform share_analytics consent. While set, usage telemetry stays disabled regardless of platform consent.",
154
- ),
155
149
  legacyDiagnosticsOptOut: z
156
150
  .boolean()
157
151
  .optional()
@@ -317,13 +317,6 @@ const CATALOG_RECORD: CatalogRecord = {
317
317
  "Decides from the caller's interruption whether a barged-in request should keep running in the background. Runs only when pinned to a TypeSafe profile.",
318
318
  domain: "agentLoop",
319
319
  },
320
- autoProfileRouter: {
321
- id: "autoProfileRouter",
322
- displayName: "Auto Profile Router",
323
- description:
324
- "Picks which default profile answers a message when the conversation runs on the Auto profile. Asks managed Jev one choice question over the latest message; when unavailable the turn runs on Balanced.",
325
- domain: "agentLoop",
326
- },
327
320
  voiceContinuationLabel: {
328
321
  id: "voiceContinuationLabel",
329
322
  displayName: "Voice Continuation Label",