@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
@@ -62,7 +62,6 @@ import {
62
62
  deepMergeOverwrite,
63
63
  getConfig,
64
64
  invalidateConfigCache,
65
- loadConfig,
66
65
  mergeDefaultWorkspaceConfig,
67
66
  } from "../config/loader.js";
68
67
  import { LLMSchema } from "../config/schemas/llm.js";
@@ -74,7 +73,7 @@ import { migrateProviderConnectionBaseUrlAndModels } from "../persistence/migrat
74
73
  import * as schema from "../persistence/schema/index.js";
75
74
  import { getConnection } from "../providers/inference/connections.js";
76
75
  import { getProviderDefaultModel } from "../providers/model-intents.js";
77
- import { getConfigQuarantineNoticePath } from "../util/platform.js";
76
+ import { getConfigQuarantineNoticePath } from "../util/layout.js";
78
77
 
79
78
  // ---------------------------------------------------------------------------
80
79
  // Helpers
@@ -364,15 +363,15 @@ describe("deepMergeOverwrite", () => {
364
363
  });
365
364
 
366
365
  // ---------------------------------------------------------------------------
367
- // Tests: loadConfig() startup behavior
366
+ // Tests: getConfig() startup behavior
368
367
  //
369
- // Contract: disk = user intent, in-memory cache = effective values. loadConfig
368
+ // Contract: disk = user intent, in-memory cache = effective values. getConfig
370
369
  // must NOT silently materialize schema defaults into config.json on load.
371
370
  // The legitimate self-healing paths that DO rewrite the file (deprecated-key
372
371
  // strip, fresh-config seed, corrupt-JSON quarantine) are protected below.
373
372
  // ---------------------------------------------------------------------------
374
373
 
375
- describe("loadConfig startup behavior", () => {
374
+ describe("getConfig startup behavior", () => {
376
375
  beforeEach(() => {
377
376
  ensureTestDir();
378
377
  const resetPaths = [
@@ -415,19 +414,19 @@ describe("loadConfig startup behavior", () => {
415
414
 
416
415
  test("does not modify existing config.json on load", () => {
417
416
  // Write a partial config and confirm the file's bytes are unchanged
418
- // after loadConfig(). Schema defaults must apply in-memory only; disk
417
+ // after getConfig(). Schema defaults must apply in-memory only; disk
419
418
  // is the user's source of truth.
420
419
  writeConfig({ provider: "anthropic" });
421
420
  const before = readFileSync(CONFIG_PATH);
422
421
 
423
- loadConfig();
422
+ getConfig();
424
423
 
425
424
  const after = readFileSync(CONFIG_PATH);
426
425
  expect(after.equals(before)).toBe(true);
427
426
  });
428
427
 
429
428
  test("getConfig().memory.v2.bm25_b returns schema default when absent on disk", () => {
430
- // Consumer-side correctness: even though loadConfig no longer writes
429
+ // Consumer-side correctness: even though getConfig no longer writes
431
430
  // schema defaults back to disk, accessors still see them via the
432
431
  // in-memory `cached: AssistantConfig` populated by `applyNestedDefaults`.
433
432
  writeConfig({ provider: "anthropic" });
@@ -491,15 +490,13 @@ describe("loadConfig startup behavior", () => {
491
490
  // Models a CLI subprocess writing twilio.accountSid while the assistant
492
491
  // process already has an effective config cached in memory.
493
492
  writeConfig({ twilio: { accountSid: "AC_cached_before" } });
494
- expect(loadConfig().twilio.accountSid).toBe("AC_cached_before");
493
+ expect(getConfig().twilio.accountSid).toBe("AC_cached_before");
495
494
 
496
495
  writeConfig({
497
496
  twilio: { accountSid: "AC_fresh_after_external_write" },
498
497
  });
499
498
 
500
- expect(loadConfig().twilio.accountSid).toBe(
501
- "AC_fresh_after_external_write",
502
- );
499
+ expect(getConfig().twilio.accountSid).toBe("AC_fresh_after_external_write");
503
500
  });
504
501
 
505
502
  test("still strips deprecated fields and rewrites", () => {
@@ -511,7 +508,7 @@ describe("loadConfig startup behavior", () => {
511
508
  rateLimit: { maxTokensPerSession: 100_000 },
512
509
  });
513
510
 
514
- loadConfig();
511
+ getConfig();
515
512
 
516
513
  const raw = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
517
514
  expect(raw.rateLimit?.maxTokensPerSession).toBeUndefined();
@@ -529,7 +526,7 @@ describe("loadConfig startup behavior", () => {
529
526
  memory: { jobs: { batchSize: 25, workerConcurrency: 4 } },
530
527
  });
531
528
 
532
- loadConfig();
529
+ getConfig();
533
530
 
534
531
  const raw = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
535
532
  expect(raw.memory?.jobs?.batchSize).toBeUndefined();
@@ -547,7 +544,7 @@ describe("loadConfig startup behavior", () => {
547
544
  daemon: { reapOrphanedSubprocesses: true, standaloneRecording: false },
548
545
  });
549
546
 
550
- loadConfig();
547
+ getConfig();
551
548
 
552
549
  const raw = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
553
550
  expect(raw.daemon?.reapOrphanedSubprocesses).toBeUndefined();
@@ -566,7 +563,7 @@ describe("loadConfig startup behavior", () => {
566
563
  calls: { voice: { language: "es-ES", telephonyStreaming: false } },
567
564
  });
568
565
 
569
- loadConfig();
566
+ getConfig();
570
567
 
571
568
  const raw = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
572
569
  expect(raw.calls?.voice?.language).toBeUndefined();
@@ -579,7 +576,7 @@ describe("loadConfig startup behavior", () => {
579
576
  // all schema defaults so users can see and edit available options.
580
577
  expect(existsSync(CONFIG_PATH)).toBe(false);
581
578
 
582
- loadConfig();
579
+ getConfig();
583
580
 
584
581
  expect(existsSync(CONFIG_PATH)).toBe(true);
585
582
  const raw = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
@@ -609,7 +606,7 @@ describe("loadConfig startup behavior", () => {
609
606
  const db = createProviderConnectionsDb();
610
607
 
611
608
  mergeDefaultConfigAndSeedInferenceProfiles(db);
612
- const config = loadConfig();
609
+ const config = getConfig();
613
610
 
614
611
  // `llm.default` is the base blob — the overlay blob reaches the parsed
615
612
  // config as a partial fragment and the seed never writes a separate key.
@@ -640,7 +637,6 @@ describe("loadConfig startup behavior", () => {
640
637
  expect(effective.balanced?.provider).toBe("anthropic");
641
638
  expect(effective.balanced?.provider_connection).toBe("anthropic-personal");
642
639
  expect(effective.balanced?.model).toBe("claude-sonnet-4-6");
643
- expect(effective.balanced?.source).toBe("managed");
644
640
  expect("status" in (effective.balanced ?? {})).toBe(false);
645
641
  });
646
642
 
@@ -689,7 +685,6 @@ describe("loadConfig startup behavior", () => {
689
685
  default: { provider: "openai", model: "gpt-5.4-mini" },
690
686
  profiles: {
691
687
  "custom-balanced": {
692
- source: "user",
693
688
  provider: "openai",
694
689
  model: "gpt-5.4-mini",
695
690
  },
@@ -720,7 +715,6 @@ describe("loadConfig startup behavior", () => {
720
715
  });
721
716
  // The pre-existing custom profile is user-owned and never rewritten.
722
717
  expect(raw.llm.profiles["custom-balanced"]).toEqual({
723
- source: "user",
724
718
  provider: "openai",
725
719
  model: "gpt-5.4-mini",
726
720
  });
@@ -740,7 +734,6 @@ describe("loadConfig startup behavior", () => {
740
734
  default: { provider: "openai", model: "gpt-5.4-mini" },
741
735
  profiles: {
742
736
  "custom-balanced": {
743
- source: "user",
744
737
  provider: "openai",
745
738
  model: "gpt-5.4-mini",
746
739
  },
@@ -884,7 +877,6 @@ describe("loadConfig startup behavior", () => {
884
877
  expect(effective.balanced?.provider).toBe("openai");
885
878
  expect(effective.balanced?.model).toBe("gpt-5.6-luna");
886
879
  expect(effective.balanced?.provider_connection).toBe("openai-personal");
887
- expect(effective.balanced?.source).toBe("managed");
888
880
  expect(effective["quality-optimized"]?.provider).toBe("openai");
889
881
  expect(effective["quality-optimized"]?.model).toBe("gpt-5.6-sol");
890
882
  expect(effective["cost-optimized"]?.provider).toBe("openai");
@@ -905,7 +897,7 @@ describe("loadConfig startup behavior", () => {
905
897
  const db = createProviderConnectionsDb();
906
898
 
907
899
  mergeDefaultConfigAndSeedInferenceProfiles(db);
908
- const config = loadConfig();
900
+ const config = getConfig();
909
901
  const raw = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
910
902
 
911
903
  expect(raw.llm.activeProfile).toBe("balanced");
@@ -927,7 +919,6 @@ describe("loadConfig startup behavior", () => {
927
919
  expect(effective[name]?.provider).toBe("together");
928
920
  expect(effective[name]?.provider_connection).toBe("together-personal");
929
921
  expect(effective[name]?.model).toBe(getProviderDefaultModel("together"));
930
- expect(effective[name]?.source).toBe("managed");
931
922
  }
932
923
  });
933
924
 
@@ -951,7 +942,7 @@ describe("loadConfig startup behavior", () => {
951
942
  const db = createProviderConnectionsDb();
952
943
 
953
944
  mergeDefaultConfigAndSeedInferenceProfiles(db);
954
- const config = loadConfig();
945
+ const config = getConfig();
955
946
  const raw = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
956
947
 
957
948
  expect(raw.llm.activeProfile).toBe("balanced");
@@ -974,14 +965,12 @@ describe("loadConfig startup behavior", () => {
974
965
  });
975
966
 
976
967
  test("off-cloud boot leaves an existing managed entry byte-identical", () => {
977
- // A drifted legacy full-body entry left by a previous release stays
978
- // exactly as written — boots never rewrite managed entries. Content is
979
- // served from the code catalog at resolution time instead.
968
+ // A drifted full-body entry left by a previous release stays exactly
969
+ // as written — boots never rewrite managed entries. Content is served
970
+ // from the code catalog at resolution time instead.
980
971
  const drifted = {
981
- source: "managed",
982
- provider: "anthropic",
983
- model: "old-model-from-previous-release",
984
- provider_connection: "anthropic-managed",
972
+ provider: "cadet",
973
+ model: "claude-sonnet-4-6",
985
974
  };
986
975
  writeConfig({
987
976
  llm: {
@@ -996,43 +985,14 @@ describe("loadConfig startup behavior", () => {
996
985
 
997
986
  expect(raw.llm.profiles.balanced).toEqual(drifted);
998
987
  expect(raw.llm.activeProfile).toBe("balanced");
999
- // Resolution ignores the drifted body: a cloud-source entry contributes
1000
- // only label/status/topP, everything else comes from the catalog.
988
+ // Resolution ignores the drifted body: a cadet-provider entry
989
+ // contributes only label/status/topP, everything else comes from the
990
+ // catalog.
1001
991
  const effectiveBalanced = getEffectiveProfile(raw.llm.profiles, "balanced");
1002
992
  expect(effectiveBalanced?.model).toBe(MANAGED_BALANCED_MODEL);
1003
993
  expect(effectiveBalanced?.provider_connection).toBeUndefined();
1004
994
  });
1005
995
 
1006
- test("boot leaves a source-less legacy canonical profile as a user-owned shadow", () => {
1007
- // Migration 052 seeded canonical profiles without a `source`. A
1008
- // source-less entry on a default name is user-owned: boots leave it
1009
- // byte-identical (never reclaimed or tagged managed), and it shadows the
1010
- // code catalog in the effective view.
1011
- const legacy = {
1012
- provider: "fireworks",
1013
- model: "accounts/fireworks/models/glm-5p2",
1014
- provider_connection: "fireworks-managed",
1015
- };
1016
- writeConfig({
1017
- llm: {
1018
- profiles: { "quality-optimized": legacy },
1019
- },
1020
- });
1021
-
1022
- mergeDefaultConfigAndSeedInferenceProfiles();
1023
- const raw = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
1024
-
1025
- expect(raw.llm.profiles["quality-optimized"]).toEqual(legacy);
1026
- // The shadow wins over the catalog body (which serves gpt-5.6-sol).
1027
- const effectiveQuality = getEffectiveProfile(
1028
- raw.llm.profiles,
1029
- "quality-optimized",
1030
- );
1031
- expect(effectiveQuality?.model).toBe("accounts/fireworks/models/glm-5p2");
1032
- expect(effectiveQuality?.provider_connection).toBe("fireworks-managed");
1033
- expect(effectiveQuality?.source).toBeUndefined();
1034
- });
1035
-
1036
996
  test("defaults the advisor profile to the cloud Quality profile", () => {
1037
997
  writeConfig({ llm: { default: { provider: "anthropic" } } });
1038
998
 
@@ -1047,7 +1007,6 @@ describe("loadConfig startup behavior", () => {
1047
1007
  raw.llm.profiles,
1048
1008
  "quality-optimized",
1049
1009
  );
1050
- expect(effectiveQuality?.source).toBe("managed");
1051
1010
  expect(effectiveQuality?.model).toBe("gpt-5.6-sol");
1052
1011
  });
1053
1012
 
@@ -1059,11 +1018,9 @@ describe("loadConfig startup behavior", () => {
1059
1018
  process.env.IS_CLOUD = "true";
1060
1019
 
1061
1020
  const drifted = {
1062
- source: "managed",
1063
- provider: "anthropic",
1064
- model: "old-model-from-previous-release",
1021
+ provider: "cadet",
1022
+ model: "gpt-5.4",
1065
1023
  maxTokens: 1,
1066
- provider_connection: "anthropic-managed",
1067
1024
  };
1068
1025
  writeConfig({
1069
1026
  llm: {
@@ -1087,14 +1044,14 @@ describe("loadConfig startup behavior", () => {
1087
1044
  expect("topP" in (effectiveBalanced ?? {})).toBe(false);
1088
1045
  });
1089
1046
 
1090
- test("platform boot preserves user-edited label and status on a cloud stub", () => {
1047
+ test("platform boot preserves user-edited label and status on a managed stub", () => {
1091
1048
  // The workspace-owned fields a user may set on a cloud profile — label
1092
1049
  // and status — live on the stub, which boots never touch. The effective
1093
1050
  // view overlays them onto the code-owned body.
1094
1051
  process.env.IS_CLOUD = "true";
1095
1052
 
1096
1053
  const edited = {
1097
- source: "managed",
1054
+ provider: "cadet",
1098
1055
  label: "My Default",
1099
1056
  status: "disabled",
1100
1057
  };
@@ -1117,10 +1074,10 @@ describe("loadConfig startup behavior", () => {
1117
1074
  expect(effectiveBalanced?.status).toBe("disabled");
1118
1075
  });
1119
1076
 
1120
- test("off-cloud boot preserves a user-edited label on a cloud stub (Codex P1 on PR #30362)", () => {
1077
+ test("off-cloud boot preserves a user-edited label on a managed stub (Codex P1 on PR #30362)", () => {
1121
1078
  // Simulate a user who renamed the cloud "balanced" profile via
1122
1079
  // PUT /v1/config/llm/profiles/balanced { label: "My Default" }.
1123
- const stub = { source: "managed", label: "My Default" };
1080
+ const stub = { provider: "cadet", label: "My Default" };
1124
1081
  writeConfig({
1125
1082
  llm: {
1126
1083
  profiles: { balanced: stub },
@@ -1139,10 +1096,10 @@ describe("loadConfig startup behavior", () => {
1139
1096
  expect(effectiveBalanced?.model).toBe(MANAGED_BALANCED_MODEL);
1140
1097
  });
1141
1098
 
1142
- test("off-cloud boot preserves user-toggled status on a cloud stub", () => {
1099
+ test("off-cloud boot preserves user-toggled status on a managed stub", () => {
1143
1100
  // Simulate a user who disabled the cloud "balanced" profile via
1144
1101
  // PUT /v1/config/llm/profiles/balanced { status: "disabled" }.
1145
- const stub = { source: "managed", status: "disabled" };
1102
+ const stub = { provider: "cadet", status: "disabled" };
1146
1103
  writeConfig({
1147
1104
  llm: {
1148
1105
  profiles: { balanced: stub },
@@ -1161,12 +1118,12 @@ describe("loadConfig startup behavior", () => {
1161
1118
  expect(effectiveBalanced?.model).toBe(MANAGED_BALANCED_MODEL);
1162
1119
  });
1163
1120
 
1164
- test("boot preserves a user-edited topP override on a cloud stub", () => {
1121
+ test("boot preserves a user-edited topP override on a managed stub", () => {
1165
1122
  // Simulate a user who overrode topP on the cloud "balanced" profile via
1166
1123
  // PUT /v1/config/llm/profiles/balanced { topP: 0.5 }. The override lives
1167
1124
  // on the stub, survives boots untouched, and overlays the catalog body
1168
1125
  // (which carries no topP of its own).
1169
- const stub = { source: "managed", topP: 0.5 };
1126
+ const stub = { provider: "cadet", topP: 0.5 };
1170
1127
  writeConfig({
1171
1128
  llm: {
1172
1129
  profiles: { balanced: stub },
@@ -1207,10 +1164,8 @@ describe("loadConfig startup behavior", () => {
1207
1164
  llm: {
1208
1165
  profiles: {
1209
1166
  balanced: {
1210
- source: "managed",
1211
- provider: "anthropic",
1167
+ provider: "cadet",
1212
1168
  model: "old-model",
1213
- provider_connection: "anthropic-managed",
1214
1169
  label: null,
1215
1170
  },
1216
1171
  },
@@ -1259,8 +1214,7 @@ describe("loadConfig startup behavior", () => {
1259
1214
  },
1260
1215
  profiles: {
1261
1216
  balanced: {
1262
- source: "managed",
1263
- provider: "anthropic",
1217
+ provider: "cadet",
1264
1218
  model: "claude-sonnet-4-6",
1265
1219
  maxTokens: 16000,
1266
1220
  effort: "high",
@@ -1283,8 +1237,7 @@ describe("loadConfig startup behavior", () => {
1283
1237
  },
1284
1238
  profiles: {
1285
1239
  balanced: {
1286
- source: "managed",
1287
- provider: "openai",
1240
+ provider: "cadet",
1288
1241
  model: "gpt-5.4",
1289
1242
  label: "Cloud Balanced",
1290
1243
  },
@@ -1299,15 +1252,14 @@ describe("loadConfig startup behavior", () => {
1299
1252
  process.env.CADET_DEFAULT_WORKSPACE_CONFIG_PATH = overlayPath;
1300
1253
 
1301
1254
  mergeDefaultConfigAndSeedInferenceProfiles();
1302
- const config = loadConfig();
1255
+ const config = getConfig();
1303
1256
  const mainAgentConfig = resolveCallSiteConfig("mainAgent", config.llm);
1304
1257
 
1305
1258
  // Hatch boot: overlay fragment is preserved verbatim on disk
1306
1259
  // (preserveProfileNames).
1307
1260
  expect(config.llm.activeProfile).toBe("balanced");
1308
1261
  expect(config.llm.profiles.balanced).toEqual({
1309
- source: "managed",
1310
- provider: "openai",
1262
+ provider: "cadet",
1311
1263
  model: "gpt-5.4",
1312
1264
  label: "Cloud Balanced",
1313
1265
  });
@@ -1320,8 +1272,7 @@ describe("loadConfig startup behavior", () => {
1320
1272
 
1321
1273
  const raw = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
1322
1274
  expect(raw.llm.profiles.balanced).toEqual({
1323
- source: "managed",
1324
- provider: "openai",
1275
+ provider: "cadet",
1325
1276
  model: "gpt-5.4",
1326
1277
  label: "Cloud Balanced",
1327
1278
  });
@@ -1336,8 +1287,7 @@ describe("loadConfig startup behavior", () => {
1336
1287
  const afterRestart = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
1337
1288
  expect(afterRestart.llm.activeProfile).toBe("balanced");
1338
1289
  expect(afterRestart.llm.profiles.balanced).toEqual({
1339
- source: "managed",
1340
- provider: "openai",
1290
+ provider: "cadet",
1341
1291
  model: "gpt-5.4",
1342
1292
  label: "Cloud Balanced",
1343
1293
  });
@@ -1408,7 +1358,7 @@ describe("loadConfig startup behavior", () => {
1408
1358
  // A managed backup resolves from the code catalog without being
1409
1359
  // materialized in `llm.profiles`, so selecting one persists nothing but
1410
1360
  // the reference. If the schema did not treat backup keys as
1411
- // always-available references, the strip-and-reparse in `loadConfig`
1361
+ // always-available references, the strip-and-reparse in `getConfig`
1412
1362
  // would drop `activeProfile` and the seeder would reset the user's
1413
1363
  // chat-model selection to `balanced` on the next boot.
1414
1364
  writeConfig({
@@ -1421,7 +1371,7 @@ describe("loadConfig startup behavior", () => {
1421
1371
  },
1422
1372
  });
1423
1373
 
1424
- const config = loadConfig();
1374
+ const config = getConfig();
1425
1375
  expect(config.llm.activeProfile).toBe("balanced-backup");
1426
1376
 
1427
1377
  mergeDefaultConfigAndSeedInferenceProfiles();
@@ -1447,7 +1397,7 @@ describe("loadConfig startup behavior", () => {
1447
1397
  },
1448
1398
  });
1449
1399
 
1450
- const config = loadConfig();
1400
+ const config = getConfig();
1451
1401
  expect(config.llm.activeProfile).toBeUndefined();
1452
1402
 
1453
1403
  mergeDefaultConfigAndSeedInferenceProfiles();
@@ -1468,7 +1418,7 @@ describe("loadConfig startup behavior", () => {
1468
1418
  },
1469
1419
  });
1470
1420
 
1471
- const config = loadConfig();
1421
+ const config = getConfig();
1472
1422
  expect(config.llm.callSites.recall?.profile).toBe("cost-optimized-backup");
1473
1423
 
1474
1424
  const raw = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
@@ -1481,7 +1431,7 @@ describe("loadConfig startup behavior", () => {
1481
1431
  // with defaults. This must keep working.
1482
1432
  writeFileSync(CONFIG_PATH, "{not valid json");
1483
1433
 
1484
- loadConfig();
1434
+ getConfig();
1485
1435
 
1486
1436
  // A new defaults-populated config.json is written in place
1487
1437
  expect(existsSync(CONFIG_PATH)).toBe(true);
@@ -1574,7 +1524,7 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
1574
1524
  process.env.CADET_DEFAULT_WORKSPACE_CONFIG_PATH = overlayPath;
1575
1525
 
1576
1526
  mergeDefaultConfigAndSeedInferenceProfiles();
1577
- const config = loadConfig();
1527
+ const config = getConfig();
1578
1528
 
1579
1529
  expect(config.llm.activeProfile).toBe("balanced");
1580
1530
  expect(config.llm.advisorProfile).toBe("quality-optimized");
@@ -1586,36 +1536,27 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
1586
1536
  advisorProfile: "frontier",
1587
1537
  profiles: {
1588
1538
  frontier: {
1589
- source: "managed",
1590
- provider: "anthropic",
1591
- provider_connection: "anthropic-managed",
1539
+ provider: "cadet",
1592
1540
  model: "claude-opus-4-8",
1593
1541
  status: "disabled",
1594
1542
  },
1595
1543
  balanced: {
1596
- source: "managed",
1597
- provider: "together",
1598
- provider_connection: "together-managed",
1544
+ provider: "cadet",
1599
1545
  model: "open-model",
1600
1546
  status: "disabled",
1601
1547
  },
1602
1548
  "quality-optimized": {
1603
- source: "managed",
1604
- provider: "fireworks",
1605
- provider_connection: "fireworks-managed",
1549
+ provider: "cadet",
1606
1550
  model: "accounts/fireworks/models/glm-5p2",
1607
1551
  status: "disabled",
1608
1552
  },
1609
1553
  "cost-optimized": {
1610
- source: "managed",
1611
- provider: "fireworks",
1612
- provider_connection: "fireworks-managed",
1554
+ provider: "cadet",
1613
1555
  model: "accounts/fireworks/models/deepseek-v4-flash",
1614
1556
  status: "disabled",
1615
1557
  },
1616
1558
  "custom-quality-optimized": {
1617
- source: "user",
1618
- provider: "anthropic",
1559
+ provider: "cadet",
1619
1560
  provider_connection: "anthropic-personal",
1620
1561
  model: "claude-opus-4-8",
1621
1562
  label: "Quality",
@@ -1625,7 +1566,7 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
1625
1566
  });
1626
1567
 
1627
1568
  mergeDefaultConfigAndSeedInferenceProfiles();
1628
- const config = loadConfig();
1569
+ const config = getConfig();
1629
1570
 
1630
1571
  // Advisor repair only considers the cloud defaults; a user profile is
1631
1572
  // never auto-selected, so a fully-disabled managed set clears the field.
@@ -1639,15 +1580,12 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
1639
1580
  advisorProfile: "frontier",
1640
1581
  profiles: {
1641
1582
  frontier: {
1642
- source: "managed",
1643
- provider: "anthropic",
1644
- provider_connection: "anthropic-managed",
1583
+ provider: "cadet",
1645
1584
  model: "claude-opus-4-8",
1646
1585
  status: "disabled",
1647
1586
  },
1648
1587
  "custom-quality-optimized": {
1649
- source: "user",
1650
- provider: "anthropic",
1588
+ provider: "cadet",
1651
1589
  provider_connection: "anthropic-personal",
1652
1590
  model: "claude-opus-4-8",
1653
1591
  label: "Quality",
@@ -1657,7 +1595,7 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
1657
1595
  });
1658
1596
 
1659
1597
  mergeDefaultConfigAndSeedInferenceProfiles();
1660
- const config = loadConfig();
1598
+ const config = getConfig();
1661
1599
 
1662
1600
  expect(config.llm.advisorProfile).toBe("quality-optimized");
1663
1601
  });
@@ -1668,30 +1606,22 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
1668
1606
  advisorProfile: "frontier",
1669
1607
  profiles: {
1670
1608
  frontier: {
1671
- source: "managed",
1672
- provider: "anthropic",
1673
- provider_connection: "anthropic-managed",
1609
+ provider: "cadet",
1674
1610
  model: "claude-opus-4-8",
1675
1611
  status: "disabled",
1676
1612
  },
1677
1613
  balanced: {
1678
- source: "managed",
1679
- provider: "together",
1680
- provider_connection: "together-managed",
1614
+ provider: "cadet",
1681
1615
  model: "open-model",
1682
1616
  status: "disabled",
1683
1617
  },
1684
1618
  "quality-optimized": {
1685
- source: "managed",
1686
- provider: "fireworks",
1687
- provider_connection: "fireworks-managed",
1619
+ provider: "cadet",
1688
1620
  model: "accounts/fireworks/models/glm-5p2",
1689
1621
  status: "disabled",
1690
1622
  },
1691
1623
  "cost-optimized": {
1692
- source: "managed",
1693
- provider: "fireworks",
1694
- provider_connection: "fireworks-managed",
1624
+ provider: "cadet",
1695
1625
  model: "accounts/fireworks/models/deepseek-v4-flash",
1696
1626
  status: "disabled",
1697
1627
  },
@@ -1700,7 +1630,7 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
1700
1630
  });
1701
1631
 
1702
1632
  mergeDefaultConfigAndSeedInferenceProfiles();
1703
- const config = loadConfig();
1633
+ const config = getConfig();
1704
1634
 
1705
1635
  expect(config.llm.advisorProfile).toBeUndefined();
1706
1636
  });
@@ -1749,8 +1679,7 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
1749
1679
  default: { provider: "anthropic" },
1750
1680
  profiles: {
1751
1681
  balanced: {
1752
- source: "managed",
1753
- provider: "anthropic",
1682
+ provider: "cadet",
1754
1683
  provider_connection: "anthropic-personal",
1755
1684
  model: "claude-sonnet-4-6",
1756
1685
  },
@@ -1875,22 +1804,16 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
1875
1804
  // and the bare labels flow through the effective view.
1876
1805
  const legacyProfiles = {
1877
1806
  balanced: {
1878
- source: "managed",
1879
- provider: "anthropic",
1880
- provider_connection: "anthropic-managed",
1807
+ provider: "cadet",
1881
1808
  model: "claude-sonnet-4-6",
1882
1809
  label: "Balanced",
1883
1810
  },
1884
1811
  "quality-optimized": {
1885
- source: "managed",
1886
- provider: "anthropic",
1887
- provider_connection: "anthropic-managed",
1812
+ provider: "cadet",
1888
1813
  label: "Quality",
1889
1814
  },
1890
1815
  "cost-optimized": {
1891
- source: "managed",
1892
- provider: "anthropic",
1893
- provider_connection: "anthropic-managed",
1816
+ provider: "cadet",
1894
1817
  label: "Speed",
1895
1818
  },
1896
1819
  };
@@ -1922,23 +1845,17 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
1922
1845
  default: { provider: "anthropic", model: "claude-opus-4-7" },
1923
1846
  profiles: {
1924
1847
  balanced: {
1925
- source: "managed",
1926
- provider: "anthropic",
1927
- provider_connection: "anthropic-managed",
1848
+ provider: "cadet",
1928
1849
  model: "claude-sonnet-4-6",
1929
1850
  label: "My Balanced",
1930
1851
  },
1931
1852
  "quality-optimized": {
1932
- source: "managed",
1933
- provider: "anthropic",
1934
- provider_connection: "anthropic-managed",
1853
+ provider: "cadet",
1935
1854
  label: null,
1936
1855
  },
1937
1856
  // Already-suffixed labels are also preserved (idempotency).
1938
1857
  "cost-optimized": {
1939
- source: "managed",
1940
- provider: "anthropic",
1941
- provider_connection: "anthropic-managed",
1858
+ provider: "cadet",
1942
1859
  label: "Speed (Managed)",
1943
1860
  },
1944
1861
  },
@@ -1963,9 +1880,7 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
1963
1880
  default: { provider: "anthropic", model: "claude-opus-4-7" },
1964
1881
  profiles: {
1965
1882
  balanced: {
1966
- source: "managed",
1967
- provider: "anthropic",
1968
- provider_connection: "anthropic-managed",
1883
+ provider: "cadet",
1969
1884
  model: "claude-sonnet-4-6",
1970
1885
  label: "Balanced",
1971
1886
  },
@@ -1975,7 +1890,7 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
1975
1890
  });
1976
1891
 
1977
1892
  mergeDefaultConfigAndSeedInferenceProfiles();
1978
- const config = loadConfig();
1893
+ const config = getConfig();
1979
1894
 
1980
1895
  expect(config.llm.profiles.balanced?.label).toBe("Balanced");
1981
1896
  });
@@ -1988,16 +1903,13 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
1988
1903
  default: { provider: "anthropic", model: "claude-opus-4-7" },
1989
1904
  profiles: {
1990
1905
  balanced: {
1991
- source: "managed",
1992
- provider: "anthropic",
1993
- provider_connection: "anthropic-managed",
1906
+ provider: "cadet",
1994
1907
  model: "claude-sonnet-4-6",
1995
1908
  label: "Balanced (Managed)",
1996
1909
  status: "active",
1997
1910
  },
1998
1911
  "custom-balanced": {
1999
- source: "user",
2000
- provider: "anthropic",
1912
+ provider: "cadet",
2001
1913
  provider_connection: "anthropic-personal",
2002
1914
  model: "claude-sonnet-4-6",
2003
1915
  label: "Balanced",
@@ -2009,7 +1921,7 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
2009
1921
 
2010
1922
  // No overlay → this is a normal boot, not a hatch.
2011
1923
  mergeDefaultConfigAndSeedInferenceProfiles();
2012
- const config = loadConfig();
1924
+ const config = getConfig();
2013
1925
 
2014
1926
  // User's "active" decision survives the boot upsert.
2015
1927
  expect(config.llm.profiles.balanced?.status).toBe("active");
@@ -2078,7 +1990,6 @@ describe("OS Beta cloud profile template", () => {
2078
1990
  expect(entry.provider_connection).toBe("cadet");
2079
1991
  expect(entry.provider).toBe("together");
2080
1992
  expect(entry.label).toBe("OS Beta");
2081
- expect(entry.source).toBe("managed");
2082
1993
  expect(entry.maxTokens).toBe(32000);
2083
1994
  expect(entry.effort).toBe("low");
2084
1995
  expect(entry.thinking?.enabled).toBe(true);