@mycadet/assistant 0.12.7 → 0.12.8

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 (892) hide show
  1. package/README.md +1 -1
  2. package/docs/activation-funnel-telemetry.md +6 -6
  3. package/docs/cadet-doctor.md +7 -7
  4. package/docs/desktop-browser-cli.md +7 -7
  5. package/docs/skills.md +2 -2
  6. package/docs/voice-input-diagnostics.md +1 -1
  7. package/eslint-rules/__tests__/cli-no-daemon-internals.test.ts +2 -2
  8. package/node_modules/@mycadet/avatar-manifest/src/__tests__/notification-avatar.test.ts +1 -1
  9. package/node_modules/@mycadet/avatar-manifest/src/notification-avatar.ts +2 -2
  10. package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/package.json +1 -1
  11. package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/{platform-credential.ts → cloud-credential.ts} +9 -9
  12. package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/handles.ts +3 -3
  13. package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/index.ts +1 -1
  14. package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/ingress.ts +11 -5
  15. package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/remote-web-pairing.ts +1 -1
  16. package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/rpc.ts +14 -14
  17. package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/trust-rules.ts +5 -5
  18. package/node_modules/@mycadet/ces-client/src/rpc-client.ts +1 -1
  19. package/node_modules/@mycadet/credential-storage/src/oauth-runtime.ts +1 -1
  20. package/node_modules/@mycadet/credential-storage/src/static-credentials.ts +1 -1
  21. package/node_modules/@mycadet/environments/src/seeds.ts +6 -6
  22. package/node_modules/@mycadet/environments/src/shell.test.ts +1 -1
  23. package/node_modules/@mycadet/environments/src/types.ts +6 -6
  24. package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/package.json +1 -1
  25. package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/{platform-credential.ts → cloud-credential.ts} +9 -9
  26. package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/handles.ts +3 -3
  27. package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/index.ts +1 -1
  28. package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/ingress.ts +11 -5
  29. package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/remote-web-pairing.ts +1 -1
  30. package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/rpc.ts +14 -14
  31. package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/trust-rules.ts +5 -5
  32. package/node_modules/@mycadet/gateway-client/src/binding-strength-contract.ts +5 -5
  33. package/node_modules/@mycadet/gateway-client/src/gateway-ipc-contracts.ts +1 -1
  34. package/node_modules/@mycadet/gateway-client/src/inbound-contract.ts +2 -2
  35. package/node_modules/@mycadet/gateway-client/src/outbound-contract.ts +1 -1
  36. package/node_modules/@mycadet/service-contracts/package.json +1 -1
  37. package/node_modules/@mycadet/service-contracts/src/{platform-credential.ts → cloud-credential.ts} +9 -9
  38. package/node_modules/@mycadet/service-contracts/src/handles.ts +3 -3
  39. package/node_modules/@mycadet/service-contracts/src/index.ts +1 -1
  40. package/node_modules/@mycadet/service-contracts/src/ingress.ts +11 -5
  41. package/node_modules/@mycadet/service-contracts/src/remote-web-pairing.ts +1 -1
  42. package/node_modules/@mycadet/service-contracts/src/rpc.ts +14 -14
  43. package/node_modules/@mycadet/service-contracts/src/trust-rules.ts +5 -5
  44. package/openapi.yaml +6815 -794
  45. package/package.json +2 -2
  46. package/scripts/build-test-fixtures.ts +1 -1
  47. package/scripts/probe-skill-retrieval.ts +1 -1
  48. package/scripts/sync-llm-catalog.ts +2 -2
  49. package/scripts/voice-ttft-spike.ts +2 -2
  50. package/src/__tests__/adaptive-thinking-repair.test.ts +4 -4
  51. package/src/__tests__/agent-loop-override-profile.test.ts +4 -4
  52. package/src/__tests__/agent-loop-subagent-billing-headers.test.ts +1 -1
  53. package/src/__tests__/anthropic-provider.test.ts +2 -2
  54. package/src/__tests__/available-skills.test.ts +11 -12
  55. package/src/__tests__/avatar-identity-sync.test.ts +1 -1
  56. package/src/__tests__/byok-default-profile-ensure.test.ts +7 -7
  57. package/src/__tests__/call-domain.test.ts +1 -1
  58. package/src/__tests__/call-site-routing-connection-auto-resolve.test.ts +2 -2
  59. package/src/__tests__/catalog-files.test.ts +10 -10
  60. package/src/__tests__/catalog-install-normalize.test.ts +3 -3
  61. package/src/__tests__/channel-availability-routes.test.ts +8 -8
  62. package/src/__tests__/channel-readiness-routes.test.ts +4 -4
  63. package/src/__tests__/channel-readiness-service.test.ts +14 -14
  64. package/src/__tests__/channel-readiness-telegram-remote.test.ts +1 -1
  65. package/src/__tests__/chat-reveal-guard-priming.test.ts +5 -6
  66. package/src/__tests__/checker.test.ts +6 -6
  67. package/src/__tests__/clawhub.test.ts +1 -1
  68. package/src/__tests__/{platform-callback-registration.test.ts → cloud-callback-registration.test.ts} +66 -90
  69. package/src/__tests__/{platform-client-verify-credential.test.ts → cloud-client-verify-credential.test.ts} +14 -14
  70. package/src/__tests__/{managed-credential-catalog-cli.test.ts → cloud-credential-catalog-cli.test.ts} +41 -41
  71. package/src/__tests__/{managed-fallback-dispatch.test.ts → cloud-fallback-dispatch.test.ts} +21 -16
  72. package/src/__tests__/{managed-profile-guard.test.ts → cloud-profile-guard.test.ts} +60 -60
  73. package/src/__tests__/{platform-proxy-context.test.ts → cloud-proxy-context.test.ts} +44 -44
  74. package/src/__tests__/{managed-speech-defaults.test.ts → cloud-speech-defaults.test.ts} +41 -41
  75. package/src/__tests__/{managed-store.test.ts → cloud-store.test.ts} +99 -99
  76. package/src/__tests__/compaction-events.test.ts +7 -5
  77. package/src/__tests__/config-loader-backfill.test.ts +65 -65
  78. package/src/__tests__/config-loader-cloud-defaults.test.ts +373 -0
  79. package/src/__tests__/config-loader-corrupt.test.ts +1 -1
  80. package/src/__tests__/config-loader-validation-reset-notice.test.ts +1 -1
  81. package/src/__tests__/config-schema.test.ts +3 -3
  82. package/src/__tests__/{config-set-platform-guard.test.ts → config-set-cloud-guard.test.ts} +6 -6
  83. package/src/__tests__/config-watcher-cleanup-throttle.test.ts +0 -8
  84. package/src/__tests__/config-watcher.test.ts +1 -1
  85. package/src/__tests__/contacts-write.test.ts +1 -1
  86. package/src/__tests__/conversation-agent-loop.test.ts +2 -2
  87. package/src/__tests__/conversation-app-control-instantiation.test.ts +18 -18
  88. package/src/__tests__/conversation-error.test.ts +45 -45
  89. package/src/__tests__/conversation-inference-profile-route.test.ts +4 -4
  90. package/src/__tests__/conversation-rendered-delegation-state.test.ts +4 -4
  91. package/src/__tests__/conversation-skill-tools.test.ts +7 -8
  92. package/src/__tests__/conversation-slash.test.ts +2 -2
  93. package/src/__tests__/conversation-speed-override.test.ts +8 -10
  94. package/src/__tests__/conversation-summarize-up-to.test.ts +4 -4
  95. package/src/__tests__/conversation-surfaces-activation-emit.test.ts +1 -1
  96. package/src/__tests__/conversation-wait-for-idle.test.ts +7 -5
  97. package/src/__tests__/credential-execution-api-key-propagation.test.ts +5 -5
  98. package/src/__tests__/{credential-execution-managed-contract.test.ts → credential-execution-cloud-contract.test.ts} +24 -24
  99. package/src/__tests__/credential-health-service.test.ts +27 -41
  100. package/src/__tests__/credential-routes.test.ts +85 -165
  101. package/src/__tests__/credential-security-invariants.test.ts +6 -7
  102. package/src/__tests__/custom-profile-ensure.test.ts +1 -1
  103. package/src/__tests__/date-context.test.ts +1 -1
  104. package/src/__tests__/default-profile-catalog-fallback.test.ts +15 -15
  105. package/src/__tests__/delete-managed-skill-tool.test.ts +8 -8
  106. package/src/__tests__/discord-callback-round-trip.test.ts +1 -1
  107. package/src/__tests__/disk-usage.test.ts +3 -3
  108. package/src/__tests__/email-invite-adapter.test.ts +5 -5
  109. package/src/__tests__/{embedding-managed-proxy-selection.test.ts → embedding-cloud-proxy-selection.test.ts} +44 -43
  110. package/src/__tests__/emit-signal-routing-intent.test.ts +13 -15
  111. package/src/__tests__/events-dev-bypass-actor.test.ts +2 -2
  112. package/src/__tests__/fallback-breaker.test.ts +7 -7
  113. package/src/__tests__/feature-flag-test-helpers.ts +106 -0
  114. package/src/__tests__/gateway-flag-listener.test.ts +1 -1
  115. package/src/__tests__/gemini-image-service.test.ts +2 -2
  116. package/src/__tests__/gemini-provider.test.ts +5 -5
  117. package/src/__tests__/get-skill-detail-audit.test.ts +9 -8
  118. package/src/__tests__/guardian-verification-voice-binding.test.ts +1 -1
  119. package/src/__tests__/handlers-skills-memory-v2-reseed.test.ts +5 -5
  120. package/src/__tests__/host-cu-routes-targeted.test.ts +8 -8
  121. package/src/__tests__/image-credentials.test.ts +13 -13
  122. package/src/__tests__/inbound-admitted-introduction-nudge.test.ts +14 -6
  123. package/src/__tests__/inbound-trust-verdict.test.ts +14 -6
  124. package/src/__tests__/inference-no-mode-boot-e2e.test.ts +11 -11
  125. package/src/__tests__/inference-profile-session-handler.test.ts +7 -7
  126. package/src/__tests__/inference-profile-session-ipc.test.ts +5 -5
  127. package/src/__tests__/inference-profile-validation-jev.test.ts +1 -1
  128. package/src/__tests__/init-feature-flag-overrides.test.ts +40 -24
  129. package/src/__tests__/input-repairs.test.ts +1 -1
  130. package/src/__tests__/install-skill-routing.test.ts +10 -8
  131. package/src/__tests__/integration-status.test.ts +5 -5
  132. package/src/__tests__/internal-telemetry-routes.test.ts +3 -3
  133. package/src/__tests__/invite-routes-http.test.ts +1 -1
  134. package/src/__tests__/llm-catalog-parity.test.ts +5 -7
  135. package/src/__tests__/llm-request-log-source-clickhouse.test.ts +2 -2
  136. package/src/__tests__/llm-resolver-override-or-default.test.ts +3 -3
  137. package/src/__tests__/llm-resolver.test.ts +1 -1
  138. package/src/__tests__/llm-schema-fallback-profile.test.ts +25 -19
  139. package/src/__tests__/llm-usage-store.test.ts +1 -1
  140. package/src/__tests__/managed-skill-lifecycle.test.ts +12 -12
  141. package/src/__tests__/mcp-abort-signal.test.ts +2 -2
  142. package/src/__tests__/mcp-client-auth.test.ts +2 -2
  143. package/src/__tests__/mcp-tool-annotations-risk.test.ts +2 -2
  144. package/src/__tests__/media-generate-image.test.ts +30 -30
  145. package/src/__tests__/memory-config-file-parity.test.ts +6 -6
  146. package/src/__tests__/migration-export-to-gcs.test.ts +4 -4
  147. package/src/__tests__/migration-import-commit-http.test.ts +1 -1
  148. package/src/__tests__/mtime-cache.test.ts +2 -2
  149. package/src/__tests__/{notification-platform-adapter.test.ts → notification-cloud-adapter.test.ts} +39 -39
  150. package/src/__tests__/notification-deep-link.test.ts +40 -40
  151. package/src/__tests__/oauth-apps-routes.test.ts +3 -3
  152. package/src/__tests__/oauth-cli.test.ts +9 -9
  153. package/src/__tests__/oauth-commands-routes.test.ts +16 -16
  154. package/src/__tests__/oauth-connect-orchestrator.test.ts +2 -2
  155. package/src/__tests__/oauth-provider-serializer.test.ts +11 -11
  156. package/src/__tests__/oauth-providers-routes.test.ts +12 -12
  157. package/src/__tests__/oauth-store.test.ts +1 -1
  158. package/src/__tests__/oauth2-gateway-transport.test.ts +3 -3
  159. package/src/__tests__/onboarding-persona-write.test.ts +2 -2
  160. package/src/__tests__/openai-image-service.test.ts +2 -2
  161. package/src/__tests__/openai-responses-cutover-guard.test.ts +2 -2
  162. package/src/__tests__/openai-responses-provider.test.ts +1 -1
  163. package/src/__tests__/path-policy.test.ts +4 -4
  164. package/src/__tests__/personal-memory-auth-bypass.test.ts +1 -1
  165. package/src/__tests__/platform-bash-auto-approve.test.ts +18 -18
  166. package/src/__tests__/plugin-api-model-profiles.test.ts +1 -1
  167. package/src/__tests__/plugin-api-provider.test.ts +1 -1
  168. package/src/__tests__/plugin-api-webhook-url.test.ts +4 -5
  169. package/src/__tests__/plugin-import-boundary-guard.test.ts +8 -39
  170. package/src/__tests__/plugin-import-boundary-reverse-guard.test.ts +2 -2
  171. package/src/__tests__/{provider-platform-proxy-integration.test.ts → provider-cloud-proxy-integration.test.ts} +70 -72
  172. package/src/__tests__/provider-commit-message-generator.test.ts +1 -1
  173. package/src/__tests__/provider-connections-backfill.test.ts +9 -9
  174. package/src/__tests__/provider-error-scenarios.test.ts +8 -8
  175. package/src/__tests__/provider-registry-ollama.test.ts +1 -1
  176. package/src/__tests__/provider-send-message-override-profile.test.ts +5 -5
  177. package/src/__tests__/registry.test.ts +3 -3
  178. package/src/__tests__/requests-mock.ts +972 -0
  179. package/src/__tests__/resolve-trust-class.test.ts +1 -1
  180. package/src/__tests__/resource-pressure-guard.test.ts +6 -6
  181. package/src/__tests__/resource-pressure-routes.test.ts +5 -5
  182. package/src/__tests__/retry-fallback-escalation.test.ts +5 -5
  183. package/src/__tests__/sanitize-config-for-transfer.test.ts +1 -1
  184. package/src/__tests__/scaffold-managed-skill-tool.test.ts +97 -97
  185. package/src/__tests__/schedule-store.test.ts +1 -1
  186. package/src/__tests__/search-skills-unified.test.ts +9 -7
  187. package/src/__tests__/{secret-routes-platform-proxy.test.ts → secret-routes-cloud-proxy.test.ts} +48 -95
  188. package/src/__tests__/secret-routes-scrub.test.ts +2 -59
  189. package/src/__tests__/secure-keys.test.ts +1 -1
  190. package/src/__tests__/skill-load-plugin-scope.test.ts +2 -2
  191. package/src/__tests__/skill-load-tool.test.ts +1 -1
  192. package/src/__tests__/skill-projection-feature-flag.test.ts +0 -19
  193. package/src/__tests__/skill-projection.benchmark.test.ts +5 -7
  194. package/src/__tests__/skill-tool-factory.test.ts +1 -1
  195. package/src/__tests__/skills-file-content-endpoint.test.ts +12 -12
  196. package/src/__tests__/skills-files-catalog-fallback.test.ts +9 -9
  197. package/src/__tests__/skills.test.ts +1 -1
  198. package/src/__tests__/slim-skill-category.test.ts +11 -9
  199. package/src/__tests__/stt-stream-session.test.ts +3 -3
  200. package/src/__tests__/subagent-call-site-routing.test.ts +1 -1
  201. package/src/__tests__/subagent-disposal.test.ts +5 -5
  202. package/src/__tests__/subagent-fork-notifications.test.ts +4 -4
  203. package/src/__tests__/subagent-fork-spawn.test.ts +5 -5
  204. package/src/__tests__/subagent-manager-notify.test.ts +5 -5
  205. package/src/__tests__/subagent-tool-gate-mode.test.ts +2 -2
  206. package/src/__tests__/system-prompt.test.ts +1 -1
  207. package/src/__tests__/telegram-bot-username-resolution.test.ts +34 -52
  208. package/src/__tests__/telegram-config.test.ts +16 -16
  209. package/src/__tests__/telephony-tts-guard.test.ts +13 -13
  210. package/src/__tests__/test-preload.ts +17 -7
  211. package/src/__tests__/tool-audit.test.ts +1 -1
  212. package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +7 -5
  213. package/src/__tests__/tool-executor-lifecycle-events.test.ts +1 -1
  214. package/src/__tests__/turn-events-store.test.ts +1 -1
  215. package/src/__tests__/twilio-routes.test.ts +2 -1
  216. package/src/__tests__/ui-choice-copy-surfaces.test.ts +1 -1
  217. package/src/__tests__/unified-turn-context-client-os.test.ts +1 -1
  218. package/src/__tests__/validate-input.test.ts +5 -5
  219. package/src/__tests__/verification-outbound-delivery.test.ts +1 -1
  220. package/src/__tests__/voice-config-update.test.ts +15 -15
  221. package/src/__tests__/voice-ingress-preflight.test.ts +4 -4
  222. package/src/__tests__/web-search.test.ts +340 -859
  223. package/src/__tests__/workspace-git-service.test.ts +1 -1
  224. package/src/__tests__/workspace-migration-082-backfill-managed-profile-labels.test.ts +12 -12
  225. package/src/__tests__/workspace-migration-087-memory-router-balanced-profile.test.ts +1 -1
  226. package/src/__tests__/workspace-migration-090-memory-router-cost-optimized-profile.test.ts +1 -1
  227. package/src/__tests__/workspace-migration-100-upgrade-quality-profile-to-fable-5.test.ts +1 -1
  228. package/src/__tests__/workspace-migration-103-upgrade-quality-profile-to-opus-4-8.test.ts +1 -1
  229. package/src/__tests__/workspace-migration-110-flip-balanced-profile-to-together.test.ts +1 -1
  230. package/src/__tests__/workspace-migration-113-swap-balanced-profile-to-glm-5p2.test.ts +1 -1
  231. package/src/__tests__/workspace-migration-114-swap-quality-profile-to-opus.test.ts +1 -1
  232. package/src/__tests__/workspace-migration-123-swap-quality-profile-to-fable.test.ts +1 -1
  233. package/src/__tests__/workspace-migration-125-repoint-managed-connections-to-cadet.test.ts +3 -3
  234. package/src/__tests__/workspace-migration-126-strip-managed-profile-bodies.test.ts +9 -9
  235. package/src/__tests__/workspace-migration-127-backfill-default-provider.test.ts +11 -11
  236. package/src/__tests__/workspace-migration-130-speech-mode-to-provider.test.ts +3 -3
  237. package/src/__tests__/workspace-migration-132-web-search-mode-to-provider.test.ts +6 -6
  238. package/src/__tests__/workspace-migration-133-collapse-provider-connections.test.ts +3 -3
  239. package/src/__tests__/workspace-migration-134-image-generation-mode-to-provider.test.ts +6 -6
  240. package/src/__tests__/workspace-migration-136-repair-stale-fireworks-kimi-model-id.test.ts +1 -1
  241. package/src/__tests__/workspace-migration-137-repair-retired-fireworks-minimax-model-id.test.ts +1 -1
  242. package/src/__tests__/workspace-migration-146-repair-retired-fireworks-deepseek-flash-model-id.test.ts +1 -1
  243. package/src/__tests__/workspace-migration-147-rename-colliding-backup-profile-names.test.ts +1 -1
  244. package/src/__tests__/workspace-migration-151-repair-renamed-fireworks-deepseek-pro-model-id.test.ts +1 -1
  245. package/src/__tests__/workspace-migration-152-repair-retired-fireworks-minimax-m2p7-model-id.test.ts +1 -1
  246. package/src/__tests__/workspace-migration-159-rename-colliding-jev-profile-name.test.ts +1 -1
  247. package/src/__tests__/workspace-migration-160-repair-retired-fireworks-model-ids.test.ts +1 -1
  248. package/src/__tests__/workspace-migration-161-repair-retired-fireworks-glm-5p2-model-id.test.ts +1 -1
  249. package/src/api/events/cloud-disconnected.ts +21 -0
  250. package/src/api/events/host-bash.ts +1 -1
  251. package/src/api/events/host-cu.ts +1 -1
  252. package/src/api/events/host-file.ts +1 -1
  253. package/src/api/events/notification-intent.ts +1 -1
  254. package/src/api/events/{show-platform-login.ts → show-cloud-login.ts} +3 -5
  255. package/src/api/index.ts +11 -11
  256. package/src/api/responses/home.ts +1 -1
  257. package/src/api/surfaces.ts +4 -4
  258. package/src/approvals/guardian-request-resolvers.ts +2 -2
  259. package/src/avatar/accent-backfill.ts +1 -1
  260. package/src/avatar/identity-avatar.ts +1 -1
  261. package/src/avatar/notification-avatar.test.ts +2 -2
  262. package/src/avatar/notification-avatar.ts +2 -2
  263. package/src/avatar/resvg-lazy.test.ts +1 -1
  264. package/src/avatar/resvg-lazy.ts +3 -3
  265. package/src/avatar/sync-avatar.test.ts +76 -76
  266. package/src/avatar/sync-avatar.ts +15 -15
  267. package/src/avatar/traits-png-sync.ts +1 -1
  268. package/src/background-wake/background-wake-routes.test.ts +39 -39
  269. package/src/background-wake/{platform-client.test.ts → cloud-client.test.ts} +11 -11
  270. package/src/background-wake/{platform-client.ts → cloud-client.ts} +14 -14
  271. package/src/background-wake/publisher.ts +4 -4
  272. package/src/background-wake/wake-intent-hooks.test.ts +3 -3
  273. package/src/calls/__tests__/call-controller.test.ts +2 -2
  274. package/src/calls/__tests__/voice-session-bridge.test.ts +1 -1
  275. package/src/calls/call-domain.ts +1 -1
  276. package/src/calls/resolve-call-tts-provider.ts +6 -6
  277. package/src/calls/telephony-credential-preflight.ts +3 -3
  278. package/src/calls/telephony-tts-capability.ts +5 -6
  279. package/src/calls/tts-call-strategy.ts +1 -1
  280. package/src/calls/voice-escalation-judge.ts +1 -1
  281. package/src/calls/voice-ingress-preflight.ts +4 -4
  282. package/src/cli/bundled-modules.ts +1 -1
  283. package/src/cli/commands/__tests__/apps.test.ts +18 -53
  284. package/src/cli/commands/__tests__/plugins.test.ts +13 -13
  285. package/src/cli/commands/__tests__/tts.test.ts +1 -1
  286. package/src/cli/commands/auth.help.ts +3 -3
  287. package/src/cli/commands/auth.ts +2 -4
  288. package/src/cli/commands/browser.help.ts +2 -2
  289. package/src/cli/commands/channels/index.help.ts +2 -2
  290. package/src/cli/commands/channels/index.ts +1 -1
  291. package/src/cli/commands/channels/send.ts +1 -1
  292. package/src/cli/commands/cloud/__tests__/connect.test.ts +1 -1
  293. package/src/cli/commands/cloud/__tests__/disconnect.test.ts +3 -4
  294. package/src/cli/commands/cloud/connect.ts +2 -2
  295. package/src/cli/commands/cloud/credits-format.ts +1 -1
  296. package/src/cli/commands/cloud/index.help.ts +35 -35
  297. package/src/cli/commands/config.ts +1 -1
  298. package/src/cli/commands/credentials.ts +10 -12
  299. package/src/cli/commands/domain.ts +1 -1
  300. package/src/cli/commands/email.help.ts +1 -1
  301. package/src/cli/commands/email.ts +2 -2
  302. package/src/cli/commands/gateway.help.ts +1 -1
  303. package/src/cli/commands/gateway.ts +1 -1
  304. package/src/cli/commands/image-generation.help.ts +1 -1
  305. package/src/cli/commands/inference-providers.ts +1 -1
  306. package/src/cli/commands/inference.help.ts +2 -2
  307. package/src/cli/commands/memory/index.help.ts +1 -1
  308. package/src/cli/commands/oauth/connect.test.ts +2 -2
  309. package/src/cli/commands/oauth/connect.ts +1 -1
  310. package/src/cli/commands/oauth/index.help.ts +5 -5
  311. package/src/cli/commands/oauth/providers.ts +2 -2
  312. package/src/cli/commands/oauth/shared.ts +3 -3
  313. package/src/cli/commands/plugins.help.ts +2 -3
  314. package/src/cli/commands/plugins.ts +5 -5
  315. package/src/cli/commands/roadmap.help.ts +1 -1
  316. package/src/cli/commands/telemetry.help.ts +2 -2
  317. package/src/cli/commands/telemetry.ts +2 -2
  318. package/src/cli/commands/tts.help.ts +3 -3
  319. package/src/cli/commands/webhooks.help.ts +9 -9
  320. package/src/cli/commands/webhooks.ts +1 -1
  321. package/src/cli/lib/__tests__/inspect-plugin.test.ts +8 -8
  322. package/src/cli/lib/__tests__/{install-from-platform.test.ts → install-from-cloud.test.ts} +54 -54
  323. package/src/cli/lib/__tests__/plugin-catalog-cache.test.ts +18 -18
  324. package/src/cli/lib/__tests__/{plugin-catalog-platform.test.ts → plugin-catalog-cloud.test.ts} +2 -2
  325. package/src/cli/lib/__tests__/plugin-catalog-local.test.ts +1 -1
  326. package/src/cli/lib/__tests__/plugin-catalog-resolve.test.ts +9 -9
  327. package/src/cli/lib/__tests__/plugin-details.test.ts +10 -10
  328. package/src/cli/lib/__tests__/plugins-install-offline.test.ts +24 -24
  329. package/src/cli/lib/bundled-marketplace.json +1 -1
  330. package/src/cli/lib/inspect-plugin.ts +2 -2
  331. package/src/cli/lib/{install-from-platform.ts → install-from-cloud.ts} +29 -29
  332. package/src/cli/lib/install-from-github.ts +4 -4
  333. package/src/cli/lib/plugin-catalog-cache.ts +7 -7
  334. package/src/cli/lib/{plugin-catalog-platform.ts → plugin-catalog-cloud.ts} +6 -6
  335. package/src/cli/lib/plugin-catalog-local.ts +2 -2
  336. package/src/cli/lib/publish-plugin.ts +9 -10
  337. package/src/cli/lib/search-plugins.ts +2 -2
  338. package/src/{platform → cloud}/client.test.ts +85 -86
  339. package/src/{platform → cloud}/client.ts +38 -46
  340. package/src/{platform/platform-patch-queue.test.ts → cloud/cloud-patch-queue.test.ts} +6 -9
  341. package/src/{platform/platform-patch-queue.ts → cloud/cloud-patch-queue.ts} +11 -11
  342. package/src/{platform/managed-speech.test.ts → cloud/cloud-speech.test.ts} +19 -19
  343. package/src/{platform/managed-speech.ts → cloud/cloud-speech.ts} +41 -41
  344. package/src/{platform → cloud}/consent-cache.test.ts +5 -5
  345. package/src/{platform → cloud}/consent-cache.ts +8 -8
  346. package/src/cloud/feature-gate.ts +8 -0
  347. package/src/{platform → cloud}/sync-identity.test.ts +4 -4
  348. package/src/{platform → cloud}/sync-identity.ts +6 -6
  349. package/src/config/__tests__/{platform-identity.test.ts → cloud-identity.test.ts} +54 -56
  350. package/src/config/__tests__/{platform-rehydration.test.ts → cloud-rehydration.test.ts} +47 -80
  351. package/src/config/__tests__/default-profile-catalog.test.ts +12 -12
  352. package/src/config/__tests__/default-provider.test.ts +4 -4
  353. package/src/config/__tests__/deployment-context-defaults.test.ts +23 -23
  354. package/src/config/__tests__/{jev-managed-profile.test.ts → jev-cloud-profile.test.ts} +3 -5
  355. package/src/config/__tests__/loader-callsite-strip-fallback.test.ts +2 -2
  356. package/src/config/__tests__/loader-last-known-good.test.ts +6 -6
  357. package/src/config/__tests__/loader-sparse-array-cleanup.test.ts +2 -2
  358. package/src/config/__tests__/profile-materialization.test.ts +7 -7
  359. package/src/config/__tests__/seed-default-provider.test.ts +17 -17
  360. package/src/config/__tests__/sync-gated-profiles.test.ts +20 -20
  361. package/src/config/__tests__/webhook-routing.test.ts +51 -51
  362. package/src/config/bundled-skills/computer-use/TOOLS.json +12 -12
  363. package/src/config/bundled-skills/messaging/SKILL.md +8 -8
  364. package/src/config/bundled-skills/messaging/TOOLS.json +2 -2
  365. package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +1 -1
  366. package/src/config/bundled-skills/messaging/tools/shared.ts +1 -1
  367. package/src/config/bundled-skills/phone-calls/references/TROUBLESHOOTING.md +2 -2
  368. package/src/config/bundled-skills/settings/TOOLS.json +3 -3
  369. package/src/config/bundled-skills/settings/tools/shared.ts +1 -1
  370. package/src/config/bundled-skills/settings/tools/voice-config-update.ts +12 -12
  371. package/src/config/bundled-skills/skill-management/SKILL.md +3 -3
  372. package/src/config/bundled-skills/skill-management/TOOLS.json +8 -8
  373. package/src/config/bundled-skills/skill-management/tools/{delete-managed.ts → delete-cloud.ts} +2 -2
  374. package/src/config/bundled-skills/skill-management/tools/{scaffold-managed.ts → scaffold-cloud.ts} +2 -2
  375. package/src/config/call-site-defaults.ts +6 -6
  376. package/src/config/{platform-identity.ts → cloud-identity.ts} +39 -42
  377. package/src/config/cloud-rehydration.ts +35 -0
  378. package/src/config/{managed-speech-defaults.ts → cloud-speech-defaults.ts} +13 -13
  379. package/src/config/default-profile-catalog.ts +36 -38
  380. package/src/config/default-profile-names.ts +11 -11
  381. package/src/config/default-provider-resolution.ts +2 -2
  382. package/src/config/default-provider.ts +1 -1
  383. package/src/config/env-registry.ts +23 -21
  384. package/src/config/env.ts +33 -46
  385. package/src/config/feature-flag-registry.json +5 -5
  386. package/src/config/inference-profile-validation.ts +1 -1
  387. package/src/config/llm-resolver.ts +9 -10
  388. package/src/config/loader.ts +33 -17
  389. package/src/config/profile-materialization.ts +8 -8
  390. package/src/config/profile-text-generation.test.ts +1 -1
  391. package/src/config/sanitize-for-transfer.ts +1 -1
  392. package/src/config/schema.ts +6 -6
  393. package/src/config/schemas/__tests__/stt.test.ts +2 -2
  394. package/src/config/schemas/call-site-catalog.ts +1 -1
  395. package/src/config/schemas/channels.ts +8 -0
  396. package/src/config/schemas/{platform.ts → cloud.ts} +7 -6
  397. package/src/config/schemas/host-browser.ts +1 -0
  398. package/src/config/schemas/ingress.ts +1 -12
  399. package/src/config/schemas/llm.ts +45 -36
  400. package/src/config/schemas/memory-lifecycle.ts +11 -1
  401. package/src/config/schemas/services.ts +4 -4
  402. package/src/config/schemas/stt.ts +3 -3
  403. package/src/config/schemas/tts.ts +10 -5
  404. package/src/config/schemas/voice.ts +1 -1
  405. package/src/config/seed-inference-profiles.ts +19 -19
  406. package/src/config/skill-state.ts +2 -2
  407. package/src/config/skills.ts +4 -4
  408. package/src/config/sync-gated-profiles.ts +8 -8
  409. package/src/config/webhook-routing.ts +19 -19
  410. package/src/contacts/contacts-write.ts +1 -1
  411. package/src/credential-execution/ces-runtime.ts +6 -6
  412. package/src/credential-execution/{managed-catalog.ts → cloud-catalog.ts} +24 -24
  413. package/src/credential-execution/prompted-credential.ts +6 -18
  414. package/src/credential-health/credential-health-service.ts +61 -76
  415. package/src/daemon/__tests__/can-spawn-subagents.test.ts +1 -1
  416. package/src/daemon/__tests__/conversation-tool-setup-exclude.test.ts +4 -4
  417. package/src/daemon/config-watcher.ts +2 -2
  418. package/src/daemon/conversation-agent-loop.ts +9 -9
  419. package/src/daemon/conversation-error.ts +36 -36
  420. package/src/daemon/conversation-skill-tools.ts +7 -7
  421. package/src/daemon/conversation-surfaces.ts +1 -1
  422. package/src/daemon/conversation-tool-setup.ts +2 -2
  423. package/src/daemon/conversation-turn-finalize.ts +1 -1
  424. package/src/daemon/conversation-workspace.ts +1 -1
  425. package/src/daemon/conversation.ts +1 -1
  426. package/src/daemon/credential-transcript-scrub.ts +21 -35
  427. package/src/daemon/daemon-readiness.ts +1 -1
  428. package/src/daemon/event-loop-watchdog.ts +2 -2
  429. package/src/daemon/handlers/config-ingress.ts +9 -9
  430. package/src/daemon/handlers/config-telegram.ts +6 -6
  431. package/src/daemon/handlers/skills.ts +20 -20
  432. package/src/daemon/host-cu-proxy.ts +1 -1
  433. package/src/daemon/lifecycle.ts +19 -19
  434. package/src/daemon/parse-actual-tokens-from-error.ts +3 -3
  435. package/src/daemon/providers-setup.ts +6 -6
  436. package/src/daemon/resource-pressure-guard-lifecycle.ts +1 -1
  437. package/src/daemon/resource-pressure-guard.ts +6 -6
  438. package/src/daemon/shutdown-handlers.ts +1 -1
  439. package/src/daemon/sqlite-corruption-watchdog.ts +3 -3
  440. package/src/daemon/trust-context.ts +1 -1
  441. package/src/desktop/desktop-automation-lease.ts +1 -1
  442. package/src/desktop/desktop-browser-endpoint.ts +2 -4
  443. package/src/desktop/desktop-computer-use-routing.test.ts +6 -6
  444. package/src/desktop/desktop-stream-bridge.test.ts +4 -4
  445. package/src/desktop/desktop-stream-bridge.ts +1 -1
  446. package/src/desktop/{virtual-desktop-platform.test.ts → virtual-desktop-cloud.test.ts} +6 -6
  447. package/src/desktop/virtual-desktop-feature.ts +7 -7
  448. package/src/email/byo-email-credential.ts +1 -1
  449. package/src/email/registered-inbox.test.ts +16 -16
  450. package/src/email/registered-inbox.ts +20 -20
  451. package/src/heartbeat/heartbeat-service.ts +1 -1
  452. package/src/hooks/hook-loader.ts +2 -2
  453. package/src/inbound/__tests__/oauth-callback-url.test.ts +2 -2
  454. package/src/inbound/__tests__/tunnel-probe.test.ts +8 -8
  455. package/src/inbound/{platform-callback-registration.ts → cloud-callback-registration.ts} +49 -60
  456. package/src/inbound/oauth-callback-url.ts +6 -6
  457. package/src/inbound/pod-webhook-claim.ts +2 -2
  458. package/src/inbound/public-ingress-urls.ts +3 -3
  459. package/src/inbound/tunnel-probe.ts +21 -15
  460. package/src/inbound/tunnel-webhooks-gate.ts +3 -3
  461. package/src/ipc/__tests__/db-readiness-ipc-gate.test.ts +1 -1
  462. package/src/ipc/__tests__/email-ipc.test.ts +8 -8
  463. package/src/ipc/gateway-client.test.ts +55 -59
  464. package/src/ipc/gateway-flag-listener.ts +3 -3
  465. package/src/ipc/routes/db-proxy.ts +1 -1
  466. package/src/live-voice/__tests__/live-activity-reporter.test.ts +2 -2
  467. package/src/live-voice/__tests__/{live-voice-managed-speech-fallback.test.ts → live-voice-cloud-speech-fallback.test.ts} +15 -15
  468. package/src/live-voice/__tests__/live-voice-credential-preflight.test.ts +7 -7
  469. package/src/live-voice/__tests__/live-voice-stt.test.ts +1 -1
  470. package/src/live-voice/live-activity-reporter.ts +7 -7
  471. package/src/live-voice/live-voice-credential-preflight.ts +6 -6
  472. package/src/live-voice/live-voice-session.ts +3 -3
  473. package/src/live-voice/live-voice-tts.ts +1 -1
  474. package/src/mcp/__tests__/mcp-oauth-client-registration.test.ts +4 -4
  475. package/src/mcp/__tests__/mcp-oauth-provider.test.ts +1 -1
  476. package/src/mcp/mcp-oauth-provider.ts +2 -2
  477. package/src/media/gemini-image-service.ts +11 -13
  478. package/src/media/image-credentials.ts +9 -9
  479. package/src/media/openai-image-service.ts +1 -1
  480. package/src/media/types.ts +3 -3
  481. package/src/messaging/providers/channel-transport.ts +1 -1
  482. package/src/messaging/providers/discord/transport.ts +1 -1
  483. package/src/messaging/providers/gmail/adapter.ts +1 -1
  484. package/src/messaging/providers/gmail/client.ts +4 -4
  485. package/src/messaging/providers/outlook/adapter.ts +1 -1
  486. package/src/messaging/providers/slack/adapter.ts +1 -1
  487. package/src/messaging/providers/slack/transport.ts +1 -1
  488. package/src/messaging/providers/telegram-bot/transport.ts +1 -1
  489. package/src/monitoring/db-integrity-check.ts +1 -1
  490. package/src/monitoring/db-integrity-sample.ts +2 -2
  491. package/src/monitoring/mount-watch.ts +1 -1
  492. package/src/monitoring/oom-kill-reporter.ts +1 -1
  493. package/src/monitoring/worker.ts +5 -5
  494. package/src/notifications/README.md +2 -2
  495. package/src/notifications/__tests__/broadcaster.test.ts +9 -9
  496. package/src/notifications/__tests__/completion-policy.test.ts +1 -1
  497. package/src/notifications/__tests__/emit-signal-pipeline-failure.test.ts +4 -4
  498. package/src/notifications/activity-failed-dedupe.ts +1 -1
  499. package/src/notifications/adapters/{platform.ts → cloud.ts} +8 -8
  500. package/src/notifications/broadcaster.ts +10 -10
  501. package/src/notifications/decision-engine.ts +1 -1
  502. package/src/notifications/destination-resolver.ts +1 -1
  503. package/src/notifications/emit-signal.ts +6 -6
  504. package/src/notifications/types.ts +2 -2
  505. package/src/oauth/__tests__/identity-verifier.test.ts +1 -1
  506. package/src/oauth/__tests__/{seed-providers-managed.test.ts → seed-providers-cloud.test.ts} +13 -13
  507. package/src/oauth/byo-connection.test.ts +2 -2
  508. package/src/oauth/{platform-connection.test.ts → cloud-connection.test.ts} +41 -43
  509. package/src/oauth/{platform-connection.ts → cloud-connection.ts} +19 -19
  510. package/src/oauth/connection-resolver.test.ts +59 -61
  511. package/src/oauth/connection-resolver.ts +22 -22
  512. package/src/oauth/connection.ts +1 -1
  513. package/src/oauth/oauth-store.ts +8 -8
  514. package/src/oauth/provider-serializer.ts +4 -4
  515. package/src/oauth/revoke.ts +1 -1
  516. package/src/oauth/seed-providers.ts +32 -32
  517. package/src/permissions/approval-provenance.ts +1 -1
  518. package/src/permissions/checker.test.ts +18 -16
  519. package/src/permissions/checker.ts +3 -3
  520. package/src/persistence/compaction-log-store-clickhouse.ts +3 -3
  521. package/src/persistence/embeddings/embedding-backend.test.ts +16 -16
  522. package/src/persistence/embeddings/embedding-backend.ts +13 -13
  523. package/src/persistence/embeddings/embedding-gemini.test.ts +9 -12
  524. package/src/persistence/embeddings/embedding-gemini.ts +11 -11
  525. package/src/persistence/embeddings/embedding-runtime-manager.ts +2 -2
  526. package/src/persistence/jobs-store.ts +1 -1
  527. package/src/persistence/lifecycle-events-store.ts +1 -1
  528. package/src/persistence/llm-request-log-sink-clickhouse.ts +3 -3
  529. package/src/persistence/llm-request-log-source-clickhouse.ts +3 -3
  530. package/src/persistence/migrations/224-oauth-providers-managed-service-is-paid.ts +1 -1
  531. package/src/persistence/migrations/296-rewrite-balanced-economy-profile-pins.test.ts +1 -1
  532. package/src/persistence/migrations/296-rewrite-balanced-economy-profile-pins.ts +2 -2
  533. package/src/persistence/migrations/306-rewrite-frontier-profile-pins.test.ts +1 -1
  534. package/src/persistence/migrations/306-rewrite-frontier-profile-pins.ts +1 -1
  535. package/src/persistence/migrations/351-schedule-skill-script-handoff.ts +1 -1
  536. package/src/persistence/migrations/361-normalize-managed-connection-rows.test.ts +3 -3
  537. package/src/persistence/migrations/361-normalize-managed-connection-rows.ts +7 -7
  538. package/src/persistence/migrations/__tests__/319-remove-legacy-managed-connections.test.ts +2 -2
  539. package/src/persistence/schema/oauth.ts +1 -1
  540. package/src/plugin-api/index.ts +4 -4
  541. package/src/plugin-api/model-profiles.test.ts +1 -1
  542. package/src/plugin-api/model-profiles.ts +1 -1
  543. package/src/plugin-api/transcription-session.ts +1 -1
  544. package/src/plugin-api/vision-support.test.ts +1 -1
  545. package/src/plugin-api/webhook-url.ts +12 -12
  546. package/src/plugins/__tests__/source-fingerprint.test.ts +1 -1
  547. package/src/plugins/defaults/{platform-hosted → cloud-hosted}/__tests__/reengage.test.ts +5 -6
  548. package/src/plugins/defaults/cloud-hosted/package.json +14 -0
  549. package/src/plugins/defaults/{platform-hosted → cloud-hosted}/routes/reengage.ts +3 -3
  550. package/src/plugins/defaults/index.ts +6 -6
  551. package/src/plugins/defaults/main.ts +5 -5
  552. package/src/plugins/defaults/memory/__tests__/memory-retrospective-job.test.ts +5 -5
  553. package/src/plugins/defaults/memory/__tests__/memory-retrospective-prompt.test.ts +1 -1
  554. package/src/plugins/defaults/memory/__tests__/memory-retrospective-provider-path.test.ts +1 -1
  555. package/src/plugins/defaults/memory/config.ts +4 -4
  556. package/src/plugins/defaults/memory/memory-retrospective-constants.ts +2 -2
  557. package/src/plugins/defaults/memory/memory-retrospective-job.ts +7 -7
  558. package/src/plugins/defaults/memory/memory-retrospective-prompt.ts +5 -5
  559. package/src/plugins/defaults/memory/memory-retrospective-skill-card.ts +2 -2
  560. package/src/plugins/defaults/memory/src/__tests__/memory-v2-routes.test.ts +1 -1
  561. package/src/plugins/defaults/memory/src/__tests__/memory-worker-routes.test.ts +1 -1
  562. package/src/plugins/defaults/memory/substrate/__tests__/boot-maintenance.test.ts +20 -20
  563. package/src/plugins/defaults/memory/substrate/__tests__/cli-command-store.test.ts +1 -1
  564. package/src/plugins/defaults/memory/substrate/__tests__/skill-store.test.ts +3 -3
  565. package/src/plugins/defaults/memory/substrate/boot-maintenance.ts +17 -17
  566. package/src/plugins/defaults/memory/substrate/cli-command-store.ts +2 -2
  567. package/src/plugins/defaults/memory/substrate/prompts/consolidation.ts +1 -1
  568. package/src/plugins/defaults/memory/substrate/skill-store.ts +4 -4
  569. package/src/plugins/defaults/memory/v3/__tests__/maintain-job.test.ts +3 -3
  570. package/src/plugins/defaults/memory/v3/__tests__/pool-select.test.ts +2 -2
  571. package/src/plugins/defaults/memory/v3/maintain-job.ts +10 -10
  572. package/src/plugins/defaults/memory/v3/orchestrate.ts +3 -3
  573. package/src/plugins/defaults/memory/worker.ts +5 -5
  574. package/src/plugins/defaults/workspace/injectors.ts +2 -2
  575. package/src/plugins/mtime-cache.ts +1 -1
  576. package/src/plugins/source-versions.ts +1 -1
  577. package/src/plugins/types.ts +1 -1
  578. package/src/prompts/__tests__/system-prompt.test.ts +1 -1
  579. package/src/prompts/normalize-onboarding.ts +1 -1
  580. package/src/prompts/persona-resolver.ts +1 -1
  581. package/src/prompts/templates/system-sections.ts +3 -3
  582. package/src/providers/__tests__/cadet-connection-routing.test.ts +7 -7
  583. package/src/providers/__tests__/cadet-mismatch-routing.test.ts +12 -12
  584. package/src/providers/__tests__/connection-model-compat.test.ts +2 -2
  585. package/src/providers/__tests__/dispatch-connection-routing.test.ts +10 -10
  586. package/src/providers/__tests__/inference.test.ts +2 -2
  587. package/src/providers/__tests__/preflight-resolved-config.test.ts +16 -16
  588. package/src/providers/__tests__/retry-callsite.test.ts +1 -1
  589. package/src/providers/__tests__/satellite-connection-routing.test.ts +4 -4
  590. package/src/providers/__tests__/search-provider-catalog.test.ts +2 -2
  591. package/src/providers/__tests__/voice-error-copy.test.ts +3 -3
  592. package/src/providers/anthropic/client.ts +1 -1
  593. package/src/providers/cadet/client.ts +1 -1
  594. package/src/providers/cadet-model-routing.test.ts +19 -19
  595. package/src/providers/cadet-model-routing.ts +23 -23
  596. package/src/providers/call-site-routing.ts +10 -10
  597. package/src/providers/{platform-proxy → cloud-proxy}/constants.ts +11 -11
  598. package/src/providers/{platform-proxy → cloud-proxy}/context.ts +26 -26
  599. package/src/providers/connection-resolution.ts +43 -43
  600. package/src/providers/fallback-breaker.ts +2 -2
  601. package/src/providers/fetch-provider-catalog.ts +3 -3
  602. package/src/providers/gemini/client.ts +5 -5
  603. package/src/providers/inference/__tests__/adapter-factory-openai-compatible.test.ts +3 -3
  604. package/src/providers/inference/__tests__/base-url-route-validation.test.ts +8 -8
  605. package/src/providers/inference/__tests__/base-url-security.test.ts +4 -4
  606. package/src/providers/inference/adapter-factory.ts +35 -35
  607. package/src/providers/inference/auth.ts +10 -10
  608. package/src/providers/inference/backfill.ts +11 -11
  609. package/src/providers/inference/connection-availability.ts +24 -24
  610. package/src/providers/inference/connections.ts +18 -20
  611. package/src/providers/inference/profile-probe.ts +4 -4
  612. package/src/providers/inference/resolve-auth.ts +8 -8
  613. package/src/providers/jev/ask.test.ts +1 -1
  614. package/src/providers/jev/ask.ts +2 -2
  615. package/src/providers/model-catalog.ts +8 -9
  616. package/src/providers/openai/__tests__/api-error-normalization.test.ts +3 -3
  617. package/src/providers/openai/api-error-normalization.ts +2 -2
  618. package/src/providers/provider-availability.ts +4 -4
  619. package/src/providers/provider-env-vars.ts +1 -1
  620. package/src/providers/provider-secret-catalog.ts +1 -1
  621. package/src/providers/registry.ts +20 -20
  622. package/src/providers/retry.ts +26 -26
  623. package/src/providers/routing-identity.ts +10 -10
  624. package/src/providers/search-provider-catalog.ts +2 -2
  625. package/src/providers/speech-to-text/__tests__/{cadet-managed-realtime.test.ts → cadet-cloud-realtime.test.ts} +3 -3
  626. package/src/providers/speech-to-text/__tests__/{cadet-managed.test.ts → cadet-cloud.test.ts} +35 -35
  627. package/src/providers/speech-to-text/__tests__/deepgram-flux-realtime.test.ts +1 -1
  628. package/src/providers/speech-to-text/__tests__/resolve.test.ts +27 -27
  629. package/src/providers/speech-to-text/{cadet-managed-flux-realtime.ts → cadet-cloud-flux-realtime.ts} +6 -8
  630. package/src/providers/speech-to-text/{cadet-managed-realtime.ts → cadet-cloud-realtime.ts} +3 -3
  631. package/src/providers/speech-to-text/{cadet-managed.ts → cadet-cloud.ts} +18 -20
  632. package/src/providers/speech-to-text/cadet-speech-relay-connection.ts +7 -7
  633. package/src/providers/speech-to-text/deepgram-flux-frames.ts +3 -3
  634. package/src/providers/speech-to-text/deepgram-flux-realtime.ts +4 -4
  635. package/src/providers/speech-to-text/provider-catalog.ts +3 -3
  636. package/src/providers/speech-to-text/resolve.ts +26 -28
  637. package/src/providers/together/client.ts +1 -1
  638. package/src/providers/types.ts +4 -4
  639. package/src/providers/voice-error-copy.ts +1 -1
  640. package/src/runtime/__tests__/desktop-stream-upgrade.test.ts +10 -10
  641. package/src/runtime/agent-wake.ts +1 -1
  642. package/src/runtime/auth/__tests__/middleware.test.ts +1 -1
  643. package/src/runtime/auth/middleware.ts +1 -1
  644. package/src/runtime/auth/scopes.ts +1 -1
  645. package/src/runtime/capabilities.ts +1 -1
  646. package/src/runtime/channel-invite-transports/discord.ts +1 -1
  647. package/src/runtime/channel-invite-transports/email.ts +2 -2
  648. package/src/runtime/channel-readiness-service.ts +15 -13
  649. package/src/runtime/channel-reply-session.test.ts +1 -1
  650. package/src/runtime/channel-reply-session.ts +1 -1
  651. package/src/runtime/http-server.ts +4 -4
  652. package/src/runtime/introduction-policy.ts +4 -4
  653. package/src/runtime/migrations/__tests__/origin-mode.test.ts +14 -14
  654. package/src/runtime/migrations/__tests__/v1-test-helpers.ts +1 -1
  655. package/src/runtime/migrations/__tests__/vbundle-import-version-compat.test.ts +2 -2
  656. package/src/runtime/migrations/__tests__/vbundle-metadata-merge-integration.test.ts +3 -4
  657. package/src/runtime/migrations/__tests__/vbundle-metadata-merge.test.ts +6 -7
  658. package/src/runtime/migrations/__tests__/vbundle-validator-v1-schema.test.ts +1 -1
  659. package/src/runtime/migrations/migration-transport.ts +3 -3
  660. package/src/runtime/migrations/origin-mode.ts +6 -9
  661. package/src/runtime/migrations/vbundle-import-policy.ts +2 -2
  662. package/src/runtime/migrations/vbundle-importer.ts +4 -4
  663. package/src/runtime/migrations/vbundle-streaming-importer.ts +6 -6
  664. package/src/runtime/migrations/vbundle-validator.ts +1 -1
  665. package/src/runtime/routes/__tests__/{platform-credits-routes.test.ts → cloud-credits-routes.test.ts} +9 -9
  666. package/src/runtime/routes/__tests__/{platform-invoice-routes.test.ts → cloud-invoice-routes.test.ts} +13 -13
  667. package/src/runtime/routes/__tests__/connection-routes-vs-cli-parity.test.ts +1 -1
  668. package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +26 -25
  669. package/src/runtime/routes/__tests__/default-plugin-routes.test.ts +5 -5
  670. package/src/runtime/routes/__tests__/default-provider-routes.test.ts +10 -10
  671. package/src/runtime/routes/__tests__/inference-profiles-routes.test.ts +18 -18
  672. package/src/runtime/routes/__tests__/inference-provider-connection-routes.test.ts +18 -16
  673. package/src/runtime/routes/__tests__/inference-send-routes.test.ts +1 -1
  674. package/src/runtime/routes/__tests__/ingress-status-routes.test.ts +1 -1
  675. package/src/runtime/routes/__tests__/migration-cadet-metadata-reconcile.test.ts +5 -20
  676. package/src/runtime/routes/__tests__/migration-import-credential-filter.test.ts +19 -22
  677. package/src/runtime/routes/__tests__/oauth-proxy-routes.test.ts +27 -27
  678. package/src/runtime/routes/__tests__/plugins-routes.test.ts +5 -5
  679. package/src/runtime/routes/__tests__/ps-routes.test.ts +5 -3
  680. package/src/runtime/routes/__tests__/roadmap-routes.test.ts +15 -15
  681. package/src/runtime/routes/__tests__/webhook-routes.test.ts +31 -31
  682. package/src/runtime/routes/app-management-routes.ts +1 -1
  683. package/src/runtime/routes/attachment-routes.ts +1 -1
  684. package/src/runtime/routes/auth-routes.ts +14 -14
  685. package/src/runtime/routes/avatar-routes.ts +0 -14
  686. package/src/runtime/routes/background-wake-routes.ts +4 -4
  687. package/src/runtime/routes/channel-availability-routes.ts +4 -4
  688. package/src/runtime/routes/client-routes.ts +5 -5
  689. package/src/runtime/routes/cloud-credentials.ts +45 -0
  690. package/src/runtime/routes/{platform-routes.ts → cloud-routes.ts} +83 -116
  691. package/src/runtime/routes/conversation-compaction-routes.ts +1 -1
  692. package/src/runtime/routes/conversation-query-routes.ts +82 -282
  693. package/src/runtime/routes/credential-routes.ts +28 -30
  694. package/src/runtime/routes/default-provider-routes.ts +1 -1
  695. package/src/runtime/routes/desktop-setup-routes.test.ts +5 -5
  696. package/src/runtime/routes/desktop-setup-routes.ts +1 -1
  697. package/src/runtime/routes/domain-routes.ts +15 -21
  698. package/src/runtime/routes/email-routes.ts +13 -13
  699. package/src/runtime/routes/errors.ts +1 -1
  700. package/src/runtime/routes/gateway-status-routes.ts +1 -1
  701. package/src/runtime/routes/identity-routes.ts +3 -3
  702. package/src/runtime/routes/inbound-message-handler.ts +1 -1
  703. package/src/runtime/routes/inbound-stages/acl-enforcement.ts +1 -1
  704. package/src/runtime/routes/inbound-stages/transcribe-audio.test.ts +1 -1
  705. package/src/runtime/routes/index.ts +1 -1
  706. package/src/runtime/routes/inference-profile-availability-guard.ts +5 -5
  707. package/src/runtime/routes/inference-profiles-routes.ts +11 -11
  708. package/src/runtime/routes/inference-provider-connection-routes.ts +24 -24
  709. package/src/runtime/routes/ingress-status-routes.ts +1 -1
  710. package/src/runtime/routes/integrations/a2a.ts +2 -2
  711. package/src/runtime/routes/integrations/twilio.ts +21 -35
  712. package/src/runtime/routes/internal-telemetry-routes.ts +2 -2
  713. package/src/runtime/routes/live-voice-routes.test.ts +4 -4
  714. package/src/runtime/routes/live-voice-routes.ts +6 -6
  715. package/src/runtime/routes/migration-routes.ts +34 -40
  716. package/src/runtime/routes/oauth-commands-routes.ts +31 -31
  717. package/src/runtime/routes/oauth-providers.ts +5 -5
  718. package/src/runtime/routes/oauth-proxy-passthrough.test.ts +1 -1
  719. package/src/runtime/routes/oauth-proxy-passthrough.ts +8 -8
  720. package/src/runtime/routes/oauth-proxy-routes.ts +15 -17
  721. package/src/runtime/routes/oauth-request-hints.test.ts +1 -1
  722. package/src/runtime/routes/oauth-request-hints.ts +1 -1
  723. package/src/runtime/routes/plugins-routes.ts +9 -9
  724. package/src/runtime/routes/profiler-routes.ts +1 -1
  725. package/src/runtime/routes/ps-routes.ts +4 -0
  726. package/src/runtime/routes/roadmap-routes.ts +18 -20
  727. package/src/runtime/routes/secret-routes.ts +29 -55
  728. package/src/runtime/routes/settings-routes.ts +18 -23
  729. package/src/runtime/routes/telemetry-routes.ts +4 -4
  730. package/src/runtime/routes/tts-routes.ts +4 -4
  731. package/src/runtime/routes/user-route-resolution.ts +1 -1
  732. package/src/runtime/routes/webhook-routes.ts +18 -18
  733. package/src/runtime/routes/workflow-routes.ts +5 -5
  734. package/src/runtime/sync/resource-sync-events.ts +2 -2
  735. package/src/runtime/verification-outbound-actions.ts +4 -4
  736. package/src/schedule/integration-status.ts +6 -6
  737. package/src/schedule/run-script.ts +1 -1
  738. package/src/schedule/schedule-timezone.ts +1 -1
  739. package/src/schedule/worker.ts +5 -5
  740. package/src/security/auth-fallback-events-store.ts +1 -1
  741. package/src/security/oauth2.ts +4 -4
  742. package/src/skills/available-skills.ts +4 -4
  743. package/src/skills/catalog-files.ts +8 -8
  744. package/src/skills/catalog-install.ts +12 -12
  745. package/src/skills/categories-cache.ts +3 -3
  746. package/src/skills/clawhub.ts +1 -1
  747. package/src/skills/{platform-compatibility.test.ts → cloud-compatibility.test.ts} +7 -7
  748. package/src/skills/{platform-compatibility.ts → cloud-compatibility.ts} +2 -4
  749. package/src/skills/{managed-store.ts → cloud-store.ts} +21 -23
  750. package/src/skills/inline-command-runner.ts +1 -1
  751. package/src/skills/install-meta.ts +1 -1
  752. package/src/skills/path-classifier.ts +4 -4
  753. package/src/skills/skill-history.ts +4 -4
  754. package/src/skills/skillssh-registry.ts +1 -1
  755. package/src/stt/__tests__/daemon-batch-transcriber.test.ts +1 -1
  756. package/src/stt/daemon-batch-transcriber.ts +7 -7
  757. package/src/stt/types.ts +3 -3
  758. package/src/subagent/manager.ts +15 -15
  759. package/src/subagent/types.ts +1 -1
  760. package/src/telegram/__tests__/webhook-health.test.ts +16 -16
  761. package/src/telegram/webhook-health.ts +10 -10
  762. package/src/telemetry/__tests__/config-setting-events-store.test.ts +1 -1
  763. package/src/telemetry/__tests__/outbox-test-harness.ts +2 -2
  764. package/src/telemetry/config-setting-events-store.ts +1 -1
  765. package/src/telemetry/config-setting-snapshot.ts +1 -1
  766. package/src/telemetry/memory-corpus-size.ts +1 -1
  767. package/src/telemetry/memory-tier-reporter.test.ts +2 -2
  768. package/src/telemetry/memory-tier-reporter.ts +3 -3
  769. package/src/telemetry/telemetry-event-sources.test.ts +2 -2
  770. package/src/telemetry/telemetry-event-sources.ts +9 -9
  771. package/src/telemetry/telemetry-events-outbox.ts +2 -2
  772. package/src/telemetry/telemetry-wire-validation.test.ts +1 -1
  773. package/src/telemetry/telemetry-wire-validation.ts +3 -3
  774. package/src/telemetry/telemetry-wire.generated.ts +1 -1
  775. package/src/telemetry/tool-audit.ts +1 -1
  776. package/src/telemetry/tool-executed-events-store.test.ts +1 -1
  777. package/src/telemetry/trace-collection-policy.ts +4 -4
  778. package/src/telemetry/turn-events-store.ts +1 -1
  779. package/src/telemetry/turn-outcome.ts +1 -1
  780. package/src/telemetry/turn-trace-store.ts +2 -2
  781. package/src/telemetry/types.test.ts +1 -1
  782. package/src/telemetry/types.ts +19 -19
  783. package/src/telemetry/usage-telemetry-reporter.test.ts +42 -42
  784. package/src/telemetry/usage-telemetry-reporter.ts +17 -17
  785. package/src/telemetry/watchdog-direct-emit.test.ts +9 -9
  786. package/src/telemetry/watchdog-direct-emit.ts +10 -10
  787. package/src/tools/__tests__/side-effect-abort-guard.test.ts +2 -2
  788. package/src/tools/browser/cdp-client/factory.ts +1 -1
  789. package/src/tools/computer-use/target.ts +2 -2
  790. package/src/tools/credentials/store.ts +6 -15
  791. package/src/tools/network/__tests__/{managed-search-proxy.test.ts → cloud-search-proxy.test.ts} +20 -20
  792. package/src/tools/network/__tests__/web-search.test.ts +14 -14
  793. package/src/tools/network/{managed-search-proxy.ts → cloud-search-proxy.ts} +13 -13
  794. package/src/tools/network/web-search.ts +9 -9
  795. package/src/tools/permission-checker.ts +2 -2
  796. package/src/tools/shared/input-misuse.ts +1 -1
  797. package/src/tools/shared/input-repairs.ts +4 -4
  798. package/src/tools/skills/{delete-managed.ts → delete-cloud.ts} +4 -4
  799. package/src/tools/skills/find-similar-skills.test.ts +7 -7
  800. package/src/tools/skills/find-similar-skills.ts +15 -15
  801. package/src/tools/skills/load.ts +6 -6
  802. package/src/tools/skills/{scaffold-managed.ts → scaffold-cloud.ts} +16 -16
  803. package/src/tools/skills/skill-script-runner.ts +2 -2
  804. package/src/tools/terminal/safe-env.ts +3 -3
  805. package/src/tools/tool-types.ts +2 -2
  806. package/src/tools/types.ts +2 -2
  807. package/src/tools/ui-surface/surface-shape-docs.ts +2 -2
  808. package/src/tools/workflows/manage-workflows.ts +1 -1
  809. package/src/tools/workspace-tools/loader.ts +1 -1
  810. package/src/tts/__tests__/cadet-provider.test.ts +5 -5
  811. package/src/tts/provider-catalog.ts +1 -1
  812. package/src/tts/providers/cadet-provider.ts +23 -23
  813. package/src/tts/providers/cadet-tts-socket.ts +2 -2
  814. package/src/tts/tts-config-resolver.ts +1 -1
  815. package/src/tts/tts-voice-field.ts +3 -3
  816. package/src/usage/subagent-attribution.ts +1 -1
  817. package/src/util/__tests__/process-table.test.ts +47 -0
  818. package/src/util/canonicalize-identity.ts +1 -1
  819. package/src/util/cgroup-cpu.ts +5 -5
  820. package/src/util/cgroup-memory.ts +2 -2
  821. package/src/util/container-cpu-sampler.ts +4 -4
  822. package/src/util/disk-usage.ts +4 -4
  823. package/src/util/errors.ts +3 -3
  824. package/src/util/oom-priority.ts +1 -1
  825. package/src/util/platform.ts +5 -5
  826. package/src/util/process-table.ts +39 -5
  827. package/src/util/provider-error-patterns.ts +2 -2
  828. package/src/watch/__tests__/watch-retro.test.ts +2 -2
  829. package/src/watch/watch-retro.ts +1 -1
  830. package/src/watcher/__tests__/telemetry.test.ts +2 -2
  831. package/src/watcher/telemetry.ts +1 -1
  832. package/src/windows-compiled-cli.ts +1 -1
  833. package/src/workspace/adaptive-thinking-repair.ts +4 -4
  834. package/src/workspace/byok-default-profile-ensure.ts +7 -7
  835. package/src/workspace/git-service.ts +2 -2
  836. package/src/workspace/migrations/006-services-config.ts +1 -1
  837. package/src/workspace/migrations/040-seed-latency-callsite-defaults.ts +1 -1
  838. package/src/workspace/migrations/052-seed-default-inference-profiles.ts +1 -1
  839. package/src/workspace/migrations/063-release-notes-dynamic-model-context.ts +1 -1
  840. package/src/workspace/migrations/066-seed-heartbeat-callsite-cost-default.ts +1 -1
  841. package/src/workspace/migrations/082-backfill-managed-profile-labels.ts +4 -4
  842. package/src/workspace/migrations/087-memory-router-balanced-profile.ts +3 -3
  843. package/src/workspace/migrations/090-memory-router-cost-optimized-profile.ts +4 -4
  844. package/src/workspace/migrations/097-enable-adaptive-thinking-managed-profiles.ts +5 -5
  845. package/src/workspace/migrations/100-upgrade-quality-profile-to-fable-5.ts +4 -4
  846. package/src/workspace/migrations/101-upgrade-balanced-economy-to-minimax-m3.ts +4 -4
  847. package/src/workspace/migrations/103-upgrade-quality-profile-to-opus-4-8.ts +5 -5
  848. package/src/workspace/migrations/104-recheck-adaptive-thinking-model-implied-anthropic.ts +1 -1
  849. package/src/workspace/migrations/106-drop-collect-usage-data.ts +1 -1
  850. package/src/workspace/migrations/108-drop-balanced-economy-profile.ts +4 -4
  851. package/src/workspace/migrations/109-swap-quality-profile-to-glm-5p2.ts +11 -11
  852. package/src/workspace/migrations/110-flip-balanced-profile-to-together.ts +6 -6
  853. package/src/workspace/migrations/113-swap-balanced-profile-to-glm-5p2.ts +5 -5
  854. package/src/workspace/migrations/114-swap-quality-profile-to-opus.ts +4 -4
  855. package/src/workspace/migrations/115-drop-frontier-profile.ts +5 -5
  856. package/src/workspace/migrations/123-swap-quality-profile-to-fable.ts +5 -5
  857. package/src/workspace/migrations/125-repoint-managed-connections-to-cadet.ts +3 -3
  858. package/src/workspace/migrations/126-strip-managed-profile-bodies.ts +2 -2
  859. package/src/workspace/migrations/127-backfill-default-provider.ts +4 -4
  860. package/src/workspace/migrations/130-speech-mode-to-provider.ts +4 -4
  861. package/src/workspace/migrations/131-drop-web-fetch-mode.ts +1 -1
  862. package/src/workspace/migrations/132-web-search-mode-to-provider.ts +6 -6
  863. package/src/workspace/migrations/133-collapse-provider-connections.ts +3 -3
  864. package/src/workspace/migrations/134-image-generation-mode-to-provider.ts +4 -4
  865. package/src/workspace/migrations/136-repair-stale-fireworks-kimi-model-id.ts +2 -2
  866. package/src/workspace/migrations/137-repair-retired-fireworks-minimax-model-id.ts +2 -2
  867. package/src/workspace/migrations/139-clear-renamed-cost-profile-label.ts +2 -2
  868. package/src/workspace/migrations/141-stt-english-default-to-multilingual.ts +4 -4
  869. package/src/workspace/migrations/144-convert-stranded-subscription-openai-profiles.ts +1 -1
  870. package/src/workspace/migrations/145-collapse-profile-bindings-to-entries.ts +2 -2
  871. package/src/workspace/migrations/146-repair-retired-fireworks-deepseek-flash-model-id.ts +2 -2
  872. package/src/workspace/migrations/148-strip-unsupported-fallback-profiles.ts +2 -2
  873. package/src/workspace/migrations/150-stt-flux-provider-to-model-family.ts +1 -1
  874. package/src/workspace/migrations/151-repair-renamed-fireworks-deepseek-pro-model-id.ts +2 -2
  875. package/src/workspace/migrations/152-repair-retired-fireworks-minimax-m2p7-model-id.ts +2 -2
  876. package/src/workspace/migrations/159-rename-colliding-jev-profile-name.ts +2 -2
  877. package/src/workspace/migrations/160-repair-retired-fireworks-model-ids.ts +2 -2
  878. package/src/workspace/migrations/161-repair-retired-fireworks-glm-5p2-model-id.ts +2 -2
  879. package/src/workspace/migrations/__tests__/141-stt-english-default-to-multilingual.test.ts +1 -1
  880. package/src/workspace/migrations/__tests__/150-stt-flux-provider-to-model-family.test.ts +1 -1
  881. package/src/workspace/migrations/registry.ts +6 -6
  882. package/src/workspace/top-level-renderer.ts +1 -1
  883. package/src/workspace/turn-commit.ts +2 -2
  884. package/src/__tests__/config-loader-platform-defaults.test.ts +0 -606
  885. package/src/__tests__/mock-gateway-ipc.ts +0 -260
  886. package/src/api/events/platform-disconnected.ts +0 -21
  887. package/src/config/platform-rehydration.ts +0 -60
  888. package/src/platform/feature-gate.ts +0 -8
  889. package/src/plugins/defaults/platform-hosted/package.json +0 -14
  890. package/src/runtime/routes/platform-managed-credentials.ts +0 -50
  891. /package/src/__tests__/{gateway-client-managed-outbound.test.ts → gateway-client-cloud-outbound.test.ts} +0 -0
  892. /package/src/__tests__/{secure-keys-managed-failover.test.ts → secure-keys-cloud-failover.test.ts} +0 -0
@@ -35,7 +35,6 @@ import {
35
35
  scrubNulledChatSettings,
36
36
  validateChatSettingsWrite,
37
37
  } from "../../config/chat-settings.js";
38
- import { DefaultProviderSelectionSchema } from "../../config/default-provider.js";
39
38
  import {
40
39
  catalogEntryFor,
41
40
  type InputModalities,
@@ -44,10 +43,9 @@ import {
44
43
  } from "../../config/input-modalities.js";
45
44
  import {
46
45
  deepMergeOverwrite,
47
- fillContextDefaultsForMissingKeys,
48
46
  getConfig,
49
- getDeploymentContextDefaults,
50
47
  invalidateConfigCache,
48
+ loadConfig,
51
49
  loadRawConfig,
52
50
  saveRawConfig,
53
51
  setNestedValue,
@@ -58,22 +56,21 @@ import {
58
56
  completeCustomProfile,
59
57
  mergePreservingUnknownKeys,
60
58
  } from "../../config/profile-materialization.js";
61
- import { AssistantConfigSchema } from "../../config/schema.js";
59
+ import {
60
+ type AssistantConfig,
61
+ AssistantConfigSchema,
62
+ } from "../../config/schema.js";
62
63
  import { getSchemaAtPath } from "../../config/schema-utils.js";
63
- import { AutoArchiveConfigSchema } from "../../config/schemas/conversations.js";
64
64
  import {
65
65
  collectFallbackProfileIssues,
66
- isDefaultProviderChoice,
67
66
  LLMConfigBase,
68
67
  LLMConfigFragment,
69
- LLMDefaultConfigSchema,
70
68
  LLMSchema,
71
69
  ProfileEntry,
72
70
  routingIdentityModelIssue,
73
71
  unknownLlmProviderIssue,
74
72
  } from "../../config/schemas/llm.js";
75
73
  import { VALID_MEMORY_EMBEDDING_PROVIDERS } from "../../config/schemas/memory-storage.js";
76
- import { NotificationsConfigSchema } from "../../config/schemas/notifications.js";
77
74
  import { ServiceModeSchema } from "../../config/schemas/services.js";
78
75
  import { isSidebarDoneEnabled } from "../../config/sidebar-done-gate.js";
79
76
  import {
@@ -123,12 +120,12 @@ import { type LogRow } from "../../persistence/llm-request-log-store.js";
123
120
  import { getMemoryRecallLogByMessageIds } from "../../plugins/defaults/memory/memory-recall-log-store.js";
124
121
  import { getMemoryV2ActivationLogByMessageIds } from "../../plugins/defaults/memory/v2/activation-log-store.js";
125
122
  import { getMemoryV3SelectionForInspectorByMessageIds } from "../../plugins/defaults/memory/v3/selection-log-store.js";
126
- import { MANAGED_ROUTABLE_PROVIDERS } from "../../providers/cadet-model-routing.js";
123
+ import { CLOUD_ROUTABLE_PROVIDERS } from "../../providers/cadet-model-routing.js";
127
124
  import { writableProfileProviderIssue } from "../../providers/connection-resolution.js";
128
125
  import { ROUTING_IDENTITY_PROVIDERS } from "../../providers/inference/auth.js";
129
126
  import { PROVIDERS_REQUIRING_BASE_URL_AND_MODELS } from "../../providers/inference/auth.js";
130
127
  import {
131
- CADET_MANAGED_CONNECTION_NAME,
128
+ CADET_CLOUD_CONNECTION_NAME,
132
129
  createConnection,
133
130
  getConnection,
134
131
  LEGACY_MANAGED_CONNECTION_NAMES,
@@ -526,85 +523,6 @@ async function handleSetEmbeddingConfig({ body }: RouteHandlerArgs) {
526
523
  }
527
524
  }
528
525
 
529
- /**
530
- * Apply deployment-context defaults to a raw config payload before it goes
531
- * out over the wire from `GET /v1/config`. The in-memory `loadConfig()`
532
- * already layers these defaults for daemon-internal consumers; the GET
533
- * response needs the same treatment so external clients (macOS, web, CLI)
534
- * see the effective value rather than `undefined` when the daemon hasn't
535
- * persisted an explicit choice yet. For example, on a freshly-hatched
536
- * platform-managed assistant, `services.image-generation.provider` may be
537
- * absent from disk (only `llm.profiles` was written by
538
- * `seedInferenceProfiles`); the fill pass ensures clients receive `"cadet"`
539
- * rather than falling back to their own defaults.
540
- *
541
- * Guards against `loadRawConfig()` handing us a value that is technically
542
- * valid JSON but not a plain object (e.g. literal `null`, a number, or an
543
- * array). `loadRawConfig` is typed `Record<string, unknown>` but `JSON.parse`
544
- * itself doesn't enforce that — a malformed-but-parseable `config.json`
545
- * would blow up `fillContextDefaultsForMissingKeys` on its `target[key]` /
546
- * `fileConfig[key]` accesses, turning `GET /v1/config` into a 500 where it
547
- * used to succeed (returning the malformed payload as-is). When `raw` is
548
- * not a plain object, we return it unchanged.
549
- *
550
- * Exported for direct unit testing.
551
- */
552
- export function applyContextDefaultsToRawConfig(raw: unknown): unknown {
553
- const contextDefaults = getDeploymentContextDefaults();
554
- if (
555
- Object.keys(contextDefaults).length === 0 ||
556
- raw === null ||
557
- typeof raw !== "object" ||
558
- Array.isArray(raw)
559
- ) {
560
- return raw;
561
- }
562
- fillContextDefaultsForMissingKeys(
563
- raw as Record<string, unknown>,
564
- raw as Record<string, unknown>,
565
- contextDefaults,
566
- );
567
- synthesizeLegacyInferenceModeForPlatform(raw as Record<string, unknown>);
568
- return raw;
569
- }
570
-
571
- /**
572
- * Backwards-compat wire field for `GET /v1/config`. PR removed
573
- * `services.inference.mode` from the typed schema (routing is governed by
574
- * `provider_connections` rows + per-profile `provider_connection`), but
575
- * the macOS settings client (`SettingsStore.swift:loadServiceModes`) still
576
- * reads this field and falls back to its `@Published` default of "your-own"
577
- * when absent. On a platform-managed assistant served by a newer daemon and
578
- * an older macOS client, that fallback would show the wrong mode in the UI
579
- * until the user explicitly saved. Synthesize the value here so the wire
580
- * shape stays compatible during the rollout window. Remove once the macOS
581
- * Providers UI (the follow-up PR that retires this field on the client) has
582
- * shipped to the majority of installs.
583
- *
584
- * The synthesis is wire-only: it never persists to disk and never reaches
585
- * the typed `AssistantConfig` consumed by daemon-internal code. The on-disk
586
- * config is stripped of `mode` by workspace migration 076.
587
- *
588
- * Only runs when this function is reached, which is guarded by
589
- * `getDeploymentContextDefaults()` returning non-empty (IS_PLATFORM=true).
590
- */
591
- function synthesizeLegacyInferenceModeForPlatform(
592
- root: Record<string, unknown>,
593
- ): void {
594
- const services = readPlainObject(root.services);
595
- if (!services) {
596
- return;
597
- }
598
- let inference = readPlainObject(services.inference);
599
- if (!inference) {
600
- inference = {};
601
- services.inference = inference;
602
- }
603
- if (inference.mode === undefined) {
604
- inference.mode = "managed";
605
- }
606
- }
607
-
608
526
  function readPlainObject(value: unknown): Record<string, unknown> | undefined {
609
527
  if (value === null || typeof value !== "object" || Array.isArray(value)) {
610
528
  return undefined;
@@ -732,13 +650,6 @@ function nestPath(path: string, value: unknown): unknown {
732
650
  return current;
733
651
  }
734
652
 
735
- const WireProfileEntry = ProfileEntry.extend({
736
- supportsVision: z.boolean().optional(),
737
- invariant: z.boolean().optional(),
738
- })
739
- .passthrough()
740
- .meta({ id: "ProfileEntry" });
741
-
742
653
  /**
743
654
  * Wire shape of the `memory` section in config responses. Passthrough
744
655
  * preserves fields beyond `enabled` and `v2` so the client doesn't strip
@@ -752,97 +663,6 @@ const MemoryWireConfigSchema = z
752
663
  .passthrough()
753
664
  .meta({ id: "MemoryConfig" });
754
665
 
755
- /**
756
- * Response schema for `GET /v1/config`.
757
- *
758
- * Describes the wire shape of the raw `settings.json` response after
759
- * context-default filling and vision-flag enrichment. Chat settings include
760
- * effective defaults. Fields remain optional for older assistants and sparse
761
- * on-disk config. Additional top-level sections are preserved via
762
- * passthrough. This schema types the fields that web/macOS clients consume
763
- * without restricting the full config surface.
764
- */
765
- const ConfigGetResponseSchema = z
766
- .object({
767
- // A malformed or absent stored chat-settings subtree falls back to its
768
- // schema defaults so one bad leaf can't fail the whole wire parse (which
769
- // would strip every derived field from the response); the chat-settings
770
- // read overlay refills both from the effective config.
771
- conversations: z
772
- .object({
773
- autoArchive: AutoArchiveConfigSchema.passthrough().catch(
774
- AutoArchiveConfigSchema.parse({}),
775
- ),
776
- })
777
- .passthrough()
778
- .optional(),
779
- notifications: NotificationsConfigSchema.passthrough()
780
- .optional()
781
- .catch(undefined),
782
- llm: z
783
- .object({
784
- default: LLMDefaultConfigSchema.optional(),
785
- // Wire-compat view of the default provider, derived from `default`
786
- // by the read overlay (the key is never stored anymore).
787
- defaultProvider: DefaultProviderSelectionSchema.optional(),
788
- profiles: z.record(z.string(), WireProfileEntry).optional(),
789
- profileOrder: z.array(z.string()).optional(),
790
- activeProfile: z.string().optional(),
791
- // The profile the advisor consults; excluded from chat-profile pickers.
792
- advisorProfile: z.string().optional(),
793
- callSites: z
794
- .record(
795
- z.string(),
796
- LLMConfigFragment.extend({
797
- profile: z.string().optional(),
798
- }).nullable(),
799
- )
800
- .optional(),
801
- profileSession: z
802
- .object({
803
- defaultTtlSeconds: z.number().optional(),
804
- maxTtlSeconds: z.number().optional(),
805
- })
806
- .optional(),
807
- pricingOverrides: z.array(z.unknown()).optional(),
808
- })
809
- .passthrough()
810
- .optional(),
811
- memory: MemoryWireConfigSchema.optional(),
812
- services: z
813
- .object({
814
- "web-search": z
815
- .object({
816
- provider: z.string().optional(),
817
- })
818
- .passthrough()
819
- .optional(),
820
- "web-fetch": z
821
- .object({
822
- provider: z.string().optional(),
823
- })
824
- .passthrough()
825
- .optional(),
826
- "image-generation": z
827
- .object({
828
- provider: z.string().optional(),
829
- model: z.string().optional(),
830
- })
831
- .passthrough()
832
- .optional(),
833
- inference: z
834
- .object({ mode: ServiceModeSchema.optional() })
835
- .passthrough()
836
- .optional(),
837
- })
838
- .passthrough()
839
- .optional(),
840
- })
841
- .passthrough()
842
- .meta({ id: "ConfigGetResponse" });
843
-
844
- type ConfigGetResponse = z.infer<typeof ConfigGetResponseSchema>;
845
-
846
666
  /**
847
667
  * Given a `z.object(...)` schema, returns a new schema where every property
848
668
  * is `.nullable().optional()`. Used to express PATCH body semantics where any
@@ -880,7 +700,7 @@ const CallSiteOverrideDraftSchema = nullablePartial(
880
700
  *
881
701
  * Mirrors the response shape but every field is `.nullable().optional()`:
882
702
  * omitted keys are left unchanged by the daemon's deep-merge, `null` values
883
- * delete the key. Uses the same Zod enums as `ConfigGetResponseSchema` so
703
+ * delete the key. Uses the same Zod enums as `AssistantConfigSchema` so
884
704
  * the generated SDK produces literal-union types — no hand-written patch
885
705
  * types needed downstream.
886
706
  */
@@ -953,54 +773,37 @@ const ConfigPatchRequestSchema = z
953
773
  .passthrough()
954
774
  .meta({ id: "ConfigPatchRequest" });
955
775
 
776
+ /**
777
+ * The response contract for `GET`/`PATCH /v1/config` — the five subtrees
778
+ * external clients actually read, picked out of the full graph. Rendering
779
+ * the whole `AssistantConfigSchema` into the spec blasted openapi.yaml past
780
+ * 12K lines; we're not ready to trim the response schema itself yet, so the
781
+ * runtime still returns the full config and the spec documents these.
782
+ */
783
+ const ConfigGetResponseSchema = AssistantConfigSchema.pick({
784
+ conversations: true,
785
+ notifications: true,
786
+ llm: true,
787
+ memory: true,
788
+ services: true,
789
+ });
790
+
956
791
  function handleGetConfig() {
957
792
  try {
958
- const config = applyContextDefaultsToRawConfig(loadRawConfig());
959
- // One zod pass shapes the response: ConfigGetResponseSchema is this
960
- // route's wire contract, so the overlays stamp their derived fields on
961
- // the parsed view instead of digging handles out of raw objects. A
962
- // config the schema rejects gets no overlays and is served raw.
963
- const parsed = ConfigGetResponseSchema.safeParse(config);
964
- if (!parsed.success) {
965
- return config;
966
- }
967
- const wire = parsed.data;
968
- overlayWorkspaceMcpForConfigRead(wire);
969
- sanitizeMcpTransportHeadersForSettingsRead(wire);
970
- overlayEffectiveProfilesForWire(wire);
971
- enrichProfilesForWire(wire);
972
- overlayDefaultProviderForWire(wire);
973
- overlayChatSettingsForWire(wire);
974
- return wire;
793
+ const config = loadConfig();
794
+ overlayWorkspaceMcpForConfigRead(config);
795
+ sanitizeMcpTransportHeadersForSettingsRead(config);
796
+ overlayEffectiveProfilesForWire(config);
797
+ enrichProfilesForWire(config);
798
+ overlayChatSettingsForWire(config);
799
+ return config;
975
800
  } catch (err) {
976
801
  const message = err instanceof Error ? err.message : String(err);
977
802
  throw new InternalError(`Failed to read config: ${message}`);
978
803
  }
979
804
  }
980
805
 
981
- /**
982
- * Surface the default-provider selection on config reads. The selection lives
983
- * in the `llm.default` blob; the dedicated `defaultProvider` response field is
984
- * a derived wire-compat view (readers of the config GET predate the blob) and
985
- * is never stored on disk — it is stamped here from the blob on every read.
986
- */
987
- function overlayDefaultProviderForWire(config: ConfigGetResponse): void {
988
- if (!config.llm) {
989
- return;
990
- }
991
- const blob = config.llm.default;
992
- const provider = blob?.provider;
993
- if (provider != null && isDefaultProviderChoice(provider)) {
994
- config.llm.defaultProvider = {
995
- provider,
996
- connectionName: blob?.provider_connection,
997
- };
998
- } else {
999
- delete config.llm.defaultProvider;
1000
- }
1001
- }
1002
-
1003
- function overlayChatSettingsForWire(config: ConfigGetResponse): void {
806
+ function overlayChatSettingsForWire(config: AssistantConfig): void {
1004
807
  const effective = getConfig();
1005
808
  config.conversations = {
1006
809
  ...config.conversations,
@@ -1023,7 +826,7 @@ function overlayChatSettingsForWire(config: ConfigGetResponse): void {
1023
826
  * render labels/models — so the wire view materializes them, resolved through
1024
827
  * `llm.default`'s column of the intent × provider matrix so a BYO
1025
828
  * install sees the provider/model that actually dispatches. Wire-only:
1026
- * `normalizeManagedProfileWrites` reduces echoed bodies back to the
829
+ * `normalizeCloudProfileWrites` reduces echoed bodies back to the
1027
830
  * workspace-owned fields on the write paths, so a `config get` →
1028
831
  * `config set` round-trip never persists catalog content — the two must
1029
832
  * resolve through the same column or honest round-trips are rejected.
@@ -1033,10 +836,7 @@ function overlayChatSettingsForWire(config: ConfigGetResponse): void {
1033
836
  * shields the matrix lookup from a persisted value the matrix cannot
1034
837
  * implement, which a raw read would feed straight into resolution.
1035
838
  */
1036
- function overlayEffectiveProfilesForWire(config: ConfigGetResponse): void {
1037
- if (!config.llm) {
1038
- config.llm = {};
1039
- }
839
+ function overlayEffectiveProfilesForWire(config: AssistantConfig): void {
1040
840
  const parsedLlm = LLMSchema.safeParse(config.llm);
1041
841
  config.llm.profiles = getUserSelectableProfilesForProvider(
1042
842
  parsedLlm.success ? parsedLlm.data : undefined,
@@ -1097,7 +897,7 @@ function stripWireOnlyProfileKeys(patch: unknown): void {
1097
897
  * `handleSetConfig`'s `raw` write, which shares object references with the
1098
898
  * inspected patch shape.
1099
899
  */
1100
- export function normalizeManagedProfileWrites(patch: unknown): void {
900
+ export function normalizeCloudProfileWrites(patch: unknown): void {
1101
901
  const root = readPlainObject(patch);
1102
902
  const llm = readPlainObject(root?.llm);
1103
903
  const profiles = readPlainObject(llm?.profiles);
@@ -1182,15 +982,15 @@ export function normalizeManagedProfileWrites(patch: unknown): void {
1182
982
  entry.status != null &&
1183
983
  entry.status !== "active"
1184
984
  ) {
1185
- throw new BadRequestError(`Cannot disable managed profile "${name}".`);
985
+ throw new BadRequestError(`Cannot disable cloud profile "${name}".`);
1186
986
  }
1187
987
  const residual = Object.keys(entry).filter(
1188
988
  (key) => key !== "source" && key !== "status",
1189
989
  );
1190
990
  if (residual.length > 0) {
1191
991
  throw new BadRequestError(
1192
- `Cannot edit managed profile "${name}" fields [${residual.join(", ")}]. ` +
1193
- `Managed profiles are read-only; duplicate to a custom profile to customize.`,
992
+ `Cannot edit cloud profile "${name}" fields [${residual.join(", ")}]. ` +
993
+ `Cloud profiles are read-only; duplicate to a custom profile to customize.`,
1194
994
  );
1195
995
  }
1196
996
  entry.source = "managed";
@@ -1205,10 +1005,10 @@ export function normalizeManagedProfileWrites(patch: unknown): void {
1205
1005
  * `inputModalities.image` override winning when set. Unknown (provider,
1206
1006
  * model) pairs with no override default to `true` (fail-open) so image
1207
1007
  * upload remains available for custom / unlisted models.
1208
- * - `invariant`: `true` for managed-source entries of the managed profile
1008
+ * - `invariant`: `true` for managed-source entries of the cloud profile
1209
1009
  * names (`INVARIANT_PROFILE_NAMES`); absent otherwise. Source-gated to
1210
1010
  * match `assertInvariantProfilesPreserved` — a user-owned profile sharing
1211
- * a managed name is fully editable, so it must render as a normal custom
1011
+ * a cloud name is fully editable, so it must render as a normal custom
1212
1012
  * profile.
1213
1013
  */
1214
1014
  function enrichProfilesForWire(config: unknown): void {
@@ -1281,7 +1081,7 @@ function handleGetConfigSchema({ queryParams = {} }: RouteHandlerArgs) {
1281
1081
  };
1282
1082
  }
1283
1083
 
1284
- export function rejectManagedProfileDeletion(
1084
+ export function rejectCloudProfileDeletion(
1285
1085
  body: Record<string, unknown>,
1286
1086
  ): void {
1287
1087
  const llm = asMutablePlainObject(body.llm);
@@ -1290,7 +1090,7 @@ export function rejectManagedProfileDeletion(
1290
1090
  }
1291
1091
  if ("profiles" in llm && llm.profiles === null) {
1292
1092
  throw new BadRequestError(
1293
- "Cannot null llm.profiles — managed profiles would be deleted.",
1093
+ "Cannot null llm.profiles — cloud profiles would be deleted.",
1294
1094
  );
1295
1095
  }
1296
1096
  const profiles = asMutablePlainObject(llm.profiles);
@@ -1302,23 +1102,23 @@ export function rejectManagedProfileDeletion(
1302
1102
  if (profiles[name] !== null || !MANAGED_PROFILE_NAMES.has(name)) {
1303
1103
  continue;
1304
1104
  }
1305
- // Only block deletion when the on-disk entry is Cadet-managed. A
1306
- // user-owned profile sharing a managed name carries a non-managed `source`
1105
+ // Only block deletion when the on-disk entry is Cadet Cloud. A
1106
+ // user-owned profile sharing a cloud name carries a non-managed `source`
1307
1107
  // and is freely deletable.
1308
1108
  const existing = asMutablePlainObject(existingProfiles[name]);
1309
1109
  if (existing?.source === "managed") {
1310
- throw new BadRequestError(`Cannot delete managed profile "${name}".`);
1110
+ throw new BadRequestError(`Cannot delete cloud profile "${name}".`);
1311
1111
  }
1312
1112
  }
1313
1113
  }
1314
1114
 
1315
1115
  /**
1316
- * Enforce the managed-profile invariants at the config-write choke point.
1116
+ * Enforce the cloud-profile invariants at the config-write choke point.
1317
1117
  *
1318
1118
  * Protects the thin managed stubs (`INVARIANT_PROFILE_NAMES`) that live in
1319
1119
  * workspace config. Default profile CONTENT is code-owned and only exists on
1320
1120
  * the wire, so the guard's job is the stub itself: it checks entries present
1321
- * in the OLD config, and `normalizeManagedProfileWrites` reduces incoming
1121
+ * in the OLD config, and `normalizeCloudProfileWrites` reduces incoming
1322
1122
  * managed entries to the workspace-owned fields before this comparison runs.
1323
1123
  *
1324
1124
  * Invariance is gated on managed ownership: a name is enforced only when the
@@ -1327,7 +1127,7 @@ export function rejectManagedProfileDeletion(
1327
1127
  * is real and supported, because the flag-gated reconcile refuses to
1328
1128
  * overwrite a same-named user profile.
1329
1129
  *
1330
- * For each invariant name where the OLD raw config carries a managed-source
1130
+ * For each invariant name where the OLD raw config carries a cloud-source
1331
1131
  * plain-object entry at `llm.profiles[name]`:
1332
1132
  *
1333
1133
  * - The NEW raw config must still carry a plain-object entry at the same
@@ -1376,17 +1176,17 @@ function assertInvariantProfilesPreserved(
1376
1176
  : null;
1377
1177
  if (!newEntry) {
1378
1178
  throw new BadRequestError(
1379
- `Cannot delete or replace managed profile "${name}". Managed profiles are read-only.`,
1179
+ `Cannot delete or replace cloud profile "${name}". Cloud profiles are read-only.`,
1380
1180
  );
1381
1181
  }
1382
1182
 
1383
1183
  if (!isDeepStrictEqual(oldEntry.status, newEntry.status)) {
1384
1184
  if (newEntry.status === "disabled") {
1385
- throw new BadRequestError(`Cannot disable managed profile "${name}".`);
1185
+ throw new BadRequestError(`Cannot disable cloud profile "${name}".`);
1386
1186
  }
1387
1187
  if (newEntry.status !== "active" && newEntry.status != null) {
1388
1188
  throw new BadRequestError(
1389
- `Cannot set status ${JSON.stringify(newEntry.status)} on managed profile "${name}". ` +
1189
+ `Cannot set status ${JSON.stringify(newEntry.status)} on cloud profile "${name}". ` +
1390
1190
  `Only re-enabling (status "active") is allowed.`,
1391
1191
  );
1392
1192
  }
@@ -1402,8 +1202,8 @@ function assertInvariantProfilesPreserved(
1402
1202
  );
1403
1203
  if (changedKeys.length > 0) {
1404
1204
  throw new BadRequestError(
1405
- `Cannot edit managed profile "${name}" fields [${changedKeys.join(", ")}]. ` +
1406
- `Managed profiles are read-only; duplicate to a custom profile to customize.`,
1205
+ `Cannot edit cloud profile "${name}" fields [${changedKeys.join(", ")}]. ` +
1206
+ `Cloud profiles are read-only; duplicate to a custom profile to customize.`,
1407
1207
  );
1408
1208
  }
1409
1209
  }
@@ -1561,8 +1361,8 @@ function assertRoutableIdentityEntries(
1561
1361
  function assertCodeOwnedFallbackProfiles(raw: Record<string, unknown>): void {
1562
1362
  const llm = readPlainObject(raw.llm);
1563
1363
  const profiles = readPlainObject(llm?.profiles);
1564
- // The sibling `llm.default` decides whether the managed backups are valid
1565
- // fallback targets: they resolve on the managed column alone.
1364
+ // The sibling `llm.default` decides whether the cloud backups are valid
1365
+ // fallback targets: they resolve on the cloud column alone.
1566
1366
  const issues = collectFallbackProfileIssues(
1567
1367
  profiles ?? undefined,
1568
1368
  llm?.default,
@@ -1703,8 +1503,8 @@ async function handlePatchConfig({ body }: RouteHandlerArgs) {
1703
1503
  throw new BadRequestError(chatSettings.error.message);
1704
1504
  }
1705
1505
  stripWireOnlyProfileKeys(body);
1706
- normalizeManagedProfileWrites(body);
1707
- rejectManagedProfileDeletion(body as Record<string, unknown>);
1506
+ normalizeCloudProfileWrites(body);
1507
+ rejectCloudProfileDeletion(body as Record<string, unknown>);
1708
1508
  rejectMcpTransportHeaderWrite(body);
1709
1509
  stripMcpFromConfigWrite(body as Record<string, unknown>);
1710
1510
 
@@ -1772,24 +1572,24 @@ async function handleSetConfig({ body }: RouteHandlerArgs) {
1772
1572
  ) {
1773
1573
  return { ok: true };
1774
1574
  }
1775
- // Build the equivalent patch shape so the managed-profile guard can
1575
+ // Build the equivalent patch shape so the cloud-profile guard can
1776
1576
  // inspect the touched subtree. `setNestedValue` places `value` into
1777
1577
  // `patchShape` by reference, so stripping wire-only profile keys here
1778
1578
  // also strips the object written to `raw` below.
1779
1579
  const patchShape: Record<string, unknown> = {};
1780
1580
  setNestedValue(patchShape, path, value);
1781
1581
  stripWireOnlyProfileKeys(patchShape);
1782
- normalizeManagedProfileWrites(patchShape);
1783
- rejectManagedProfileDeletion(patchShape);
1582
+ normalizeCloudProfileWrites(patchShape);
1583
+ rejectCloudProfileDeletion(patchShape);
1784
1584
  rejectMcpConfigSetPath(path, value);
1785
1585
  rejectMcpTransportHeaderWrite(patchShape);
1786
1586
 
1787
1587
  const raw = loadRawConfig();
1788
1588
  // A SET below the entry level (`llm.profiles.<name>.<leaf>`) writes the
1789
1589
  // primitive leaf directly into `raw`, bypassing the by-reference
1790
- // normalization above — creating an entry for a managed-owned name would
1590
+ // normalization above — creating an entry for a cloud-owned name would
1791
1591
  // leave it source-less, and a source-less entry reads as a user shadow
1792
- // that blocks the catalog body. Stamp the managed marker onto the written
1592
+ // that blocks the catalog body. Stamp the cloud marker onto the written
1793
1593
  // entry when the name was absent or managed-owned before this write.
1794
1594
  const managedEntryName =
1795
1595
  pathSegments[0] === "llm" &&
@@ -1890,12 +1690,12 @@ async function handleReplaceInferenceProfile({
1890
1690
  throw new BadRequestError(`Invalid profile fragment: ${detail}`);
1891
1691
  }
1892
1692
  // A managed name with no existing entry stays protected so users can't
1893
- // shadow a seeded managed profile. An existing entry carrying a non-managed
1693
+ // shadow a seeded cloud profile. An existing entry carrying a non-managed
1894
1694
  // `source` is user-owned and remains fully editable.
1895
1695
  const existingProfile = asMutablePlainObject(
1896
1696
  getConfig().llm.profiles?.[name],
1897
1697
  );
1898
- const isManaged =
1698
+ const isCloud =
1899
1699
  MANAGED_PROFILE_NAMES.has(name) &&
1900
1700
  (existingProfile == null || existingProfile.source === "managed");
1901
1701
  if (CODE_OWNED_PROFILE_NAMES.has(name)) {
@@ -1924,11 +1724,11 @@ async function handleReplaceInferenceProfile({
1924
1724
  `Profile "${name}" is not currently available and cannot be edited.`,
1925
1725
  );
1926
1726
  }
1927
- if (isManaged) {
1928
- // Managed profiles are daemon-seeded and read-only — the commit guard
1727
+ if (isCloud) {
1728
+ // Cloud profiles are daemon-seeded and read-only — the commit guard
1929
1729
  // (`assertInvariantProfilesPreserved`) rejects every write to them
1930
1730
  // except re-enabling a disabled profile. Enforce the same contract up
1931
- // front: the only body a managed PUT accepts is a pure status re-enable
1731
+ // front: the only body a cloud PUT accepts is a pure status re-enable
1932
1732
  // (`{status: "active"}`, or `{status: null}` to clear back to
1933
1733
  // active-by-absence). Rejecting here keeps the error message ahead of
1934
1734
  // any side effects and mirrors the guard's wording.
@@ -1942,8 +1742,8 @@ async function handleReplaceInferenceProfile({
1942
1742
  const detail =
1943
1743
  disallowed.length > 0 ? ` fields [${disallowed.join(", ")}]` : "";
1944
1744
  throw new BadRequestError(
1945
- `Cannot edit managed profile "${name}"${detail}. ` +
1946
- `Managed profiles are read-only (a disabled profile can be re-enabled); ` +
1745
+ `Cannot edit cloud profile "${name}"${detail}. ` +
1746
+ `Cloud profiles are read-only (a disabled profile can be re-enabled); ` +
1947
1747
  `duplicate to a custom profile to customize.`,
1948
1748
  );
1949
1749
  }
@@ -2046,10 +1846,10 @@ async function handleReplaceInferenceProfile({
2046
1846
 
2047
1847
  // When the UI sends provider but no provider_connection, derive the connection
2048
1848
  // now so the config deep-merge doesn't inherit a stale connection from the
2049
- // default layer. Managed entries are excluded: the managed gate above
1849
+ // default layer. Managed entries are excluded: the cloud gate above
2050
1850
  // already rejected any provider-carrying fragment, so their only surviving
2051
1851
  // body is a status re-enable, which derives no connection. A user-owned
2052
- // profile sharing a managed name is fully editable, so it takes the
1852
+ // profile sharing a cloud name is fully editable, so it takes the
2053
1853
  // derivation like any other custom profile.
2054
1854
  const fragment = parsed.data as Record<string, unknown>;
2055
1855
  // Routing identities resolve their connection per-request from the
@@ -2057,7 +1857,7 @@ async function handleReplaceInferenceProfile({
2057
1857
  // ("cadet" is its stored provider) or create a junk "<identity>-personal"
2058
1858
  // connection for chatgpt.
2059
1859
  if (
2060
- !isManaged &&
1860
+ !isCloud &&
2061
1861
  fragment.provider &&
2062
1862
  !fragment.provider_connection &&
2063
1863
  !ROUTING_IDENTITY_PROVIDERS.has(fragment.provider as string)
@@ -2074,12 +1874,12 @@ async function handleReplaceInferenceProfile({
2074
1874
  if (active) {
2075
1875
  fragment.provider_connection = active.name;
2076
1876
  } else if (
2077
- MANAGED_ROUTABLE_PROVIDERS.has(provider) &&
2078
- getConnection(db, CADET_MANAGED_CONNECTION_NAME)
1877
+ CLOUD_ROUTABLE_PROVIDERS.has(provider) &&
1878
+ getConnection(db, CADET_CLOUD_CONNECTION_NAME)
2079
1879
  ) {
2080
- // Managed-routable providers are served by the single Cadet-managed
1880
+ // Managed-routable providers are served by the single Cadet Cloud
2081
1881
  // connection; prefer it over lazily creating a personal connection.
2082
- fragment.provider_connection = CADET_MANAGED_CONNECTION_NAME;
1882
+ fragment.provider_connection = CADET_CLOUD_CONNECTION_NAME;
2083
1883
  } else if (!PROVIDERS_REQUIRING_BASE_URL_AND_MODELS.has(provider)) {
2084
1884
  const connectionName = `${provider}-personal`;
2085
1885
  const isKeyless = provider === "ollama";
@@ -2100,13 +1900,13 @@ async function handleReplaceInferenceProfile({
2100
1900
  }
2101
1901
 
2102
1902
  const raw = loadRawConfig();
2103
- if (isManaged) {
1903
+ if (isCloud) {
2104
1904
  // Partial overlay: keep every existing key intact, only apply the status
2105
- // re-enable (the sole body the managed gate above admits). Using
1905
+ // re-enable (the sole body the cloud gate above admits). Using
2106
1906
  // `replaceInferenceProfileConfig` here would wipe the seed-owned fields
2107
1907
  // (provider, model, advanced params) because that function assumes the
2108
1908
  // body carries the full UI surface.
2109
- applyManagedProfileReenable(raw, name, fragment.status as "active" | null);
1909
+ applyCloudProfileReenable(raw, name, fragment.status as "active" | null);
2110
1910
  } else {
2111
1911
  replaceInferenceProfileConfig(raw, name, fragment);
2112
1912
  }
@@ -2115,7 +1915,7 @@ async function handleReplaceInferenceProfile({
2115
1915
  // `handleSetConfig`: file-watcher suppression so the in-process reload
2116
1916
  // doesn't race the explicit reinit, embedding backend cache clear,
2117
1917
  // in-process `getConfig` cache invalidation, and provider registry
2118
- // reinitialization. `status: "disabled"` on a managed profile (and any
1918
+ // reinitialization. `status: "disabled"` on a cloud profile (and any
2119
1919
  // `provider` / `model` / `provider_connection` change on a custom
2120
1920
  // profile) must take effect immediately rather than waiting for the
2121
1921
  // next watcher tick.
@@ -2124,11 +1924,11 @@ async function handleReplaceInferenceProfile({
2124
1924
  }
2125
1925
 
2126
1926
  /**
2127
- * Apply the disabled→active re-enable to a managed profile entry, preserving
1927
+ * Apply the disabled→active re-enable to a cloud profile entry, preserving
2128
1928
  * every other field already on disk (provider, model, advanced params, etc).
2129
1929
  * `status: "active"` sets the key; `null` clears it (active-by-absence).
2130
1930
  */
2131
- function applyManagedProfileReenable(
1931
+ function applyCloudProfileReenable(
2132
1932
  raw: Record<string, unknown>,
2133
1933
  name: string,
2134
1934
  status: "active" | null,
@@ -2149,7 +1949,7 @@ function applyManagedProfileReenable(
2149
1949
  ...(asMutablePlainObject(profiles[name]) ?? {}),
2150
1950
  };
2151
1951
  // Only reached for managed-owned names (the route's managed gate), so a
2152
- // freshly created stub must carry the managed marker the effective view
1952
+ // freshly created stub must carry the cloud marker the effective view
2153
1953
  // and write guards key on.
2154
1954
  nextProfile.source = "managed";
2155
1955
  if (status === null) {