@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
@@ -1,14 +1,14 @@
1
1
  /**
2
2
  * Tests the two layers protecting managed inference profiles:
3
3
  *
4
- * - Route-level managed guards: managed profiles can't be deleted via PATCH
4
+ * - Route-level managed guards: cloud profiles can't be deleted via PATCH
5
5
  * and the PUT profile route accepts only a pure status re-enable body for
6
6
  * them.
7
- * - The commitConfigWrite invariant guard: every managed profile name
7
+ * - The commitConfigWrite invariant guard: every cloud profile name
8
8
  * ("quality-optimized", "balanced", "cost-optimized", "os-beta") is fully
9
9
  * read-only across PATCH/SET/PUT while its on-disk entry is
10
10
  * managed-source — the only writable transition is re-enabling a disabled
11
- * profile. A user-owned (`source: "user"`) entry sharing a managed name is
11
+ * profile. A user-owned (`source: "user"`) entry sharing a cloud name is
12
12
  * not locked.
13
13
  *
14
14
  * Plus the wire-only profile keys (`invariant`, `supportsVision`) stamped on
@@ -105,7 +105,7 @@ mock.module("../providers/inference/connections.js", () => ({
105
105
  listConnections: () => [],
106
106
  createConnection: () => ({ ok: false, error: { code: "already_exists" } }),
107
107
  getConnection: () => null,
108
- CADET_MANAGED_CONNECTION_NAME: "cadet",
108
+ CADET_CLOUD_CONNECTION_NAME: "cadet",
109
109
  }));
110
110
 
111
111
  import { ROUTES } from "../runtime/routes/conversation-query-routes.js";
@@ -145,7 +145,7 @@ function savedProfile(name: string): Record<string, unknown> {
145
145
  // PUT /v1/config/llm/profiles/:name — replace inference profile
146
146
  // ---------------------------------------------------------------------------
147
147
 
148
- describe("PUT /v1/config/llm/profiles/:name — managed profile guard", () => {
148
+ describe("PUT /v1/config/llm/profiles/:name — cloud profile guard", () => {
149
149
  test("rejects provider/model edits to quality-optimized", async () => {
150
150
  await expect(
151
151
  replaceRoute.handler({
@@ -153,8 +153,8 @@ describe("PUT /v1/config/llm/profiles/:name — managed profile guard", () => {
153
153
  body: { provider: "openai", model: "gpt-4o" },
154
154
  }),
155
155
  ).rejects.toThrow(
156
- 'Cannot edit managed profile "quality-optimized" fields [provider, model]. ' +
157
- "Managed profiles are read-only (a disabled profile can be re-enabled); " +
156
+ 'Cannot edit cloud profile "quality-optimized" fields [provider, model]. ' +
157
+ "Cloud profiles are read-only (a disabled profile can be re-enabled); " +
158
158
  "duplicate to a custom profile to customize.",
159
159
  );
160
160
  });
@@ -219,7 +219,7 @@ describe("PUT /v1/config/llm/profiles/:name — managed profile guard", () => {
219
219
  pathParams: { name: "my-custom" },
220
220
  body: { provider: "cadet", model: "not-a-real-model" },
221
221
  }),
222
- ).rejects.toThrow(/not served by the Cadet managed route/);
222
+ ).rejects.toThrow(/not served by the Cadet Cloud route/);
223
223
  expect(committedRaw()).toBeNull();
224
224
  });
225
225
 
@@ -234,14 +234,14 @@ describe("PUT /v1/config/llm/profiles/:name — managed profile guard", () => {
234
234
 
235
235
  // -------------------------------------------------------------------------
236
236
  // Null-as-clear sentinel: clients send `{ label: null }` or
237
- // `{ status: null }` to clear a managed profile's overrides back to the
237
+ // `{ status: null }` to clear a cloud profile's overrides back to the
238
238
  // seed defaults. The Zod `ProfileEntry` schema accepts null for both
239
239
  // fields. Every managed name is invariant, so on managed-source entries
240
240
  // only the status clear is allowed (re-enable) — every other field is
241
241
  // frozen at commit time.
242
242
  // -------------------------------------------------------------------------
243
243
 
244
- test("PUT { label: null } on a managed profile is rejected (label is frozen)", async () => {
244
+ test("PUT { label: null } on a cloud profile is rejected (label is frozen)", async () => {
245
245
  seedRawConfig({
246
246
  llm: {
247
247
  profiles: {
@@ -259,13 +259,13 @@ describe("PUT /v1/config/llm/profiles/:name — managed profile guard", () => {
259
259
  pathParams: { name: "balanced" },
260
260
  body: { label: null },
261
261
  }),
262
- ).rejects.toThrow('Cannot edit managed profile "balanced" fields [label]');
262
+ ).rejects.toThrow('Cannot edit cloud profile "balanced" fields [label]');
263
263
  expectNothingCommitted();
264
264
  });
265
265
 
266
266
  test("PUT on the code-owned latency profile is rejected, status re-enable included", async () => {
267
267
  // Fast fronts live voice, so it takes no writes at all: the re-enable
268
- // escape hatch the other managed profiles keep would persist a stub that
268
+ // escape hatch the other cloud profiles keep would persist a stub that
269
269
  // never governs what the name resolves to.
270
270
  seedRawConfig({ llm: { profiles: {} } });
271
271
 
@@ -286,7 +286,7 @@ describe("PUT /v1/config/llm/profiles/:name — managed profile guard", () => {
286
286
  expectNothingCommitted();
287
287
  });
288
288
 
289
- test("PUT on a managed backup profile is rejected as code-owned", async () => {
289
+ test("PUT on a cloud backup profile is rejected as code-owned", async () => {
290
290
  // Backups are code-owned too, and they carry no on-disk entry, so the
291
291
  // code-owned rejection has to win over the availability gate: reporting
292
292
  // "not currently available" would be wrong for a profile the picker
@@ -314,7 +314,7 @@ describe("PUT /v1/config/llm/profiles/:name — managed profile guard", () => {
314
314
  expectNothingCommitted();
315
315
  });
316
316
 
317
- test("PUT { status: null } on managed profile clears status (back to active-by-absence)", async () => {
317
+ test("PUT { status: null } on cloud profile clears status (back to active-by-absence)", async () => {
318
318
  seedRawConfig({
319
319
  llm: {
320
320
  profiles: {
@@ -359,7 +359,7 @@ describe("PUT /v1/config/llm/profiles/:name — managed profile guard", () => {
359
359
  pathParams: { name: "os-beta" },
360
360
  body: { label: null, status: null },
361
361
  }),
362
- ).rejects.toThrow('Cannot edit managed profile "os-beta" fields [label]');
362
+ ).rejects.toThrow('Cannot edit cloud profile "os-beta" fields [label]');
363
363
  expectNothingCommitted();
364
364
  });
365
365
 
@@ -382,7 +382,7 @@ describe("PUT /v1/config/llm/profiles/:name — managed profile guard", () => {
382
382
  body: { status: "disabled" },
383
383
  }),
384
384
  ).rejects.toThrow(
385
- 'Cannot edit managed profile "os-beta". Managed profiles are read-only',
385
+ 'Cannot edit cloud profile "os-beta". Cloud profiles are read-only',
386
386
  );
387
387
  expectNothingCommitted();
388
388
  });
@@ -404,7 +404,7 @@ describe("PUT /v1/config/llm/profiles/:name — managed profile guard", () => {
404
404
  pathParams: { name: "os-beta" },
405
405
  body: { topP: 0.9 },
406
406
  }),
407
- ).rejects.toThrow('Cannot edit managed profile "os-beta" fields [topP]');
407
+ ).rejects.toThrow('Cannot edit cloud profile "os-beta" fields [topP]');
408
408
  expectNothingCommitted();
409
409
  });
410
410
 
@@ -426,7 +426,7 @@ describe("PUT /v1/config/llm/profiles/:name — managed profile guard", () => {
426
426
  pathParams: { name: "os-beta" },
427
427
  body: { topP: null },
428
428
  }),
429
- ).rejects.toThrow('Cannot edit managed profile "os-beta" fields [topP]');
429
+ ).rejects.toThrow('Cannot edit cloud profile "os-beta" fields [topP]');
430
430
  expectNothingCommitted();
431
431
  });
432
432
 
@@ -455,7 +455,7 @@ describe("PUT /v1/config/llm/profiles/:name — managed profile guard", () => {
455
455
  expect(profile.model).toBe("zai-org/GLM-5.2");
456
456
  });
457
457
 
458
- test("allows edits to a user-owned profile sharing a managed name (os-beta)", async () => {
458
+ test("allows edits to a user-owned profile sharing a cloud name (os-beta)", async () => {
459
459
  seedRawConfig({
460
460
  llm: {
461
461
  profiles: {
@@ -477,7 +477,7 @@ describe("PUT /v1/config/llm/profiles/:name — managed profile guard", () => {
477
477
  expect(profile.model).toBe("gpt-4o");
478
478
  });
479
479
 
480
- test("rejects edits to a managed os-beta profile", async () => {
480
+ test("rejects edits to a cloud os-beta profile", async () => {
481
481
  seedRawConfig({
482
482
  llm: {
483
483
  profiles: {
@@ -513,7 +513,7 @@ describe("PUT /v1/config/llm/profiles/:name — managed profile guard", () => {
513
513
  expect(onDisk?.llm?.profiles?.["os-beta"]).toBeUndefined();
514
514
  });
515
515
 
516
- test("PUT { label: '' } on managed profile still rejected by `.min(1)`", async () => {
516
+ test("PUT { label: '' } on cloud profile still rejected by `.min(1)`", async () => {
517
517
  // `.nullable()` only widens the type to accept null — empty strings
518
518
  // still fail the min-length check, which is correct: an empty string
519
519
  // would persist as a literal "" override, not the clear-to-seed
@@ -528,16 +528,16 @@ describe("PUT /v1/config/llm/profiles/:name — managed profile guard", () => {
528
528
  });
529
529
 
530
530
  // ---------------------------------------------------------------------------
531
- // PATCH /v1/config — managed profile deletion guard
531
+ // PATCH /v1/config — cloud profile deletion guard
532
532
  // ---------------------------------------------------------------------------
533
533
 
534
- describe("PATCH /v1/config — managed profile deletion guard", () => {
534
+ describe("PATCH /v1/config — cloud profile deletion guard", () => {
535
535
  test("rejects deletion of quality-optimized via null with descriptive message", async () => {
536
536
  await expect(
537
537
  patchRoute.handler({
538
538
  body: { llm: { profiles: { "quality-optimized": null } } },
539
539
  }),
540
- ).rejects.toThrow('Cannot delete managed profile "quality-optimized".');
540
+ ).rejects.toThrow('Cannot delete cloud profile "quality-optimized".');
541
541
  });
542
542
 
543
543
  test("rejects deletion of balanced via null", async () => {
@@ -600,7 +600,7 @@ describe("PATCH /v1/config — managed profile deletion guard", () => {
600
600
  });
601
601
  });
602
602
 
603
- test("allows patches that modify a managed profile (non-null)", async () => {
603
+ test("allows patches that modify a cloud profile (non-null)", async () => {
604
604
  const result = await patchRoute.handler({
605
605
  body: {
606
606
  llm: {
@@ -611,7 +611,7 @@ describe("PATCH /v1/config — managed profile deletion guard", () => {
611
611
  expect(result).toHaveProperty("llm");
612
612
  });
613
613
 
614
- test("allows deletion of a user-owned profile sharing a managed name (os-beta)", async () => {
614
+ test("allows deletion of a user-owned profile sharing a cloud name (os-beta)", async () => {
615
615
  seedRawConfig({
616
616
  llm: {
617
617
  profiles: {
@@ -629,7 +629,7 @@ describe("PATCH /v1/config — managed profile deletion guard", () => {
629
629
  expect(result).toHaveProperty("llm");
630
630
  });
631
631
 
632
- test("rejects deletion of a managed os-beta profile", async () => {
632
+ test("rejects deletion of a cloud os-beta profile", async () => {
633
633
  seedRawConfig({
634
634
  llm: {
635
635
  profiles: {
@@ -645,7 +645,7 @@ describe("PATCH /v1/config — managed profile deletion guard", () => {
645
645
  patchRoute.handler({
646
646
  body: { llm: { profiles: { "os-beta": null } } },
647
647
  }),
648
- ).rejects.toThrow('Cannot delete managed profile "os-beta".');
648
+ ).rejects.toThrow('Cannot delete cloud profile "os-beta".');
649
649
  });
650
650
 
651
651
  test("rejects nulling the entire profiles map", async () => {
@@ -658,23 +658,23 @@ describe("PATCH /v1/config — managed profile deletion guard", () => {
658
658
  });
659
659
 
660
660
  // ---------------------------------------------------------------------------
661
- // commitConfigWrite — managed-profile invariant guard
661
+ // commitConfigWrite — cloud-profile invariant guard
662
662
  //
663
- // Every managed profile name (balanced, quality-optimized, cost-optimized,
663
+ // Every cloud profile name (balanced, quality-optimized, cost-optimized,
664
664
  // os-beta) is read-only to every config-write route while its on-disk entry
665
665
  // is managed-source; the only writable transition is re-enabling a disabled
666
- // profile. A user-owned entry sharing a managed name is not locked. Enforced
666
+ // profile. A user-owned entry sharing a cloud name is not locked. Enforced
667
667
  // by `assertInvariantProfilesPreserved` at the commitConfigWrite choke
668
668
  // point, so PATCH, SET, and PUT are all covered by the same checks.
669
669
  // ---------------------------------------------------------------------------
670
670
 
671
- describe("managed-profile invariant guard — rejected writes", () => {
671
+ describe("cloud-profile invariant guard — rejected writes", () => {
672
672
  test("PATCH disabling balanced is rejected (active → disabled)", async () => {
673
673
  await expect(
674
674
  patchRoute.handler({
675
675
  body: { llm: { profiles: { balanced: { status: "disabled" } } } },
676
676
  }),
677
- ).rejects.toThrow('Cannot disable managed profile "balanced".');
677
+ ).rejects.toThrow('Cannot disable cloud profile "balanced".');
678
678
  expectNothingCommitted();
679
679
  });
680
680
 
@@ -684,8 +684,8 @@ describe("managed-profile invariant guard — rejected writes", () => {
684
684
  body: { llm: { profiles: { balanced: { label: "X" } } } },
685
685
  }),
686
686
  ).rejects.toThrow(
687
- 'Cannot edit managed profile "balanced" fields [label]. ' +
688
- "Managed profiles are read-only; duplicate to a custom profile to customize.",
687
+ 'Cannot edit cloud profile "balanced" fields [label]. ' +
688
+ "Cloud profiles are read-only; duplicate to a custom profile to customize.",
689
689
  );
690
690
  expectNothingCommitted();
691
691
  });
@@ -697,7 +697,7 @@ describe("managed-profile invariant guard — rejected writes", () => {
697
697
  patchRoute.handler({
698
698
  body: { llm: { profiles: { balanced: { label: null } } } },
699
699
  }),
700
- ).rejects.toThrow('Cannot edit managed profile "balanced" fields [label]');
700
+ ).rejects.toThrow('Cannot edit cloud profile "balanced" fields [label]');
701
701
  expectNothingCommitted();
702
702
  });
703
703
 
@@ -706,7 +706,7 @@ describe("managed-profile invariant guard — rejected writes", () => {
706
706
  patchRoute.handler({
707
707
  body: { llm: { profiles: { balanced: { topP: 0.8 } } } },
708
708
  }),
709
- ).rejects.toThrow('Cannot edit managed profile "balanced" fields [topP]');
709
+ ).rejects.toThrow('Cannot edit cloud profile "balanced" fields [topP]');
710
710
  expectNothingCommitted();
711
711
  });
712
712
 
@@ -717,11 +717,11 @@ describe("managed-profile invariant guard — rejected writes", () => {
717
717
  patchRoute.handler({
718
718
  body: { llm: { profiles: { balanced: { topP: null } } } },
719
719
  }),
720
- ).rejects.toThrow('Cannot edit managed profile "balanced" fields [topP]');
720
+ ).rejects.toThrow('Cannot edit cloud profile "balanced" fields [topP]');
721
721
  expectNothingCommitted();
722
722
  });
723
723
 
724
- test("PATCH disabling a managed-source os-beta is rejected (active → disabled)", async () => {
724
+ test("PATCH disabling a cloud-source os-beta is rejected (active → disabled)", async () => {
725
725
  (rawConfig as Record<string, any>).llm.profiles["os-beta"] = {
726
726
  provider: "together",
727
727
  model: "zai-org/GLM-5.2",
@@ -732,11 +732,11 @@ describe("managed-profile invariant guard — rejected writes", () => {
732
732
  patchRoute.handler({
733
733
  body: { llm: { profiles: { "os-beta": { status: "disabled" } } } },
734
734
  }),
735
- ).rejects.toThrow('Cannot disable managed profile "os-beta".');
735
+ ).rejects.toThrow('Cannot disable cloud profile "os-beta".');
736
736
  expectNothingCommitted();
737
737
  });
738
738
 
739
- test("SET llm.profiles.os-beta.label is rejected on a managed-source entry", async () => {
739
+ test("SET llm.profiles.os-beta.label is rejected on a cloud-source entry", async () => {
740
740
  (rawConfig as Record<string, any>).llm.profiles["os-beta"] = {
741
741
  provider: "together",
742
742
  model: "zai-org/GLM-5.2",
@@ -747,7 +747,7 @@ describe("managed-profile invariant guard — rejected writes", () => {
747
747
  setRoute.handler({
748
748
  body: { path: "llm.profiles.os-beta.label", value: "My OS Beta" },
749
749
  }),
750
- ).rejects.toThrow('Cannot edit managed profile "os-beta" fields [label]');
750
+ ).rejects.toThrow('Cannot edit cloud profile "os-beta" fields [label]');
751
751
  expectNothingCommitted();
752
752
  });
753
753
 
@@ -756,7 +756,7 @@ describe("managed-profile invariant guard — rejected writes", () => {
756
756
  patchRoute.handler({
757
757
  body: { llm: { profiles: { balanced: "junk" } } },
758
758
  }),
759
- ).rejects.toThrow('Cannot delete or replace managed profile "balanced".');
759
+ ).rejects.toThrow('Cannot delete or replace cloud profile "balanced".');
760
760
  expectNothingCommitted();
761
761
  });
762
762
 
@@ -765,7 +765,7 @@ describe("managed-profile invariant guard — rejected writes", () => {
765
765
  patchRoute.handler({
766
766
  body: { llm: { profiles: { balanced: ["disabled"] } } },
767
767
  }),
768
- ).rejects.toThrow('Cannot delete or replace managed profile "balanced".');
768
+ ).rejects.toThrow('Cannot delete or replace cloud profile "balanced".');
769
769
  expectNothingCommitted();
770
770
  });
771
771
 
@@ -780,7 +780,7 @@ describe("managed-profile invariant guard — rejected writes", () => {
780
780
  body: { status: "disabled" },
781
781
  }),
782
782
  ).rejects.toThrow(
783
- 'Cannot edit managed profile "balanced". Managed profiles are read-only',
783
+ 'Cannot edit cloud profile "balanced". Cloud profiles are read-only',
784
784
  );
785
785
  expectNothingCommitted();
786
786
  });
@@ -790,14 +790,14 @@ describe("managed-profile invariant guard — rejected writes", () => {
790
790
  setRoute.handler({
791
791
  body: { path: "llm.profiles.balanced.status", value: "disabled" },
792
792
  }),
793
- ).rejects.toThrow('Cannot disable managed profile "balanced".');
793
+ ).rejects.toThrow('Cannot disable cloud profile "balanced".');
794
794
  expectNothingCommitted();
795
795
  });
796
796
 
797
797
  test("SET llm = {} is rejected (would drop all defaults)", async () => {
798
798
  await expect(
799
799
  setRoute.handler({ body: { path: "llm", value: {} } }),
800
- ).rejects.toThrow(/Cannot delete or replace managed profile/);
800
+ ).rejects.toThrow(/Cannot delete or replace cloud profile/);
801
801
  expectNothingCommitted();
802
802
  });
803
803
 
@@ -807,7 +807,7 @@ describe("managed-profile invariant guard — rejected writes", () => {
807
807
  body: { llm: { profiles: { balanced: { status: "weird" } } } },
808
808
  }),
809
809
  ).rejects.toThrow(
810
- 'Cannot set status "weird" on managed profile "balanced". ' +
810
+ 'Cannot set status "weird" on cloud profile "balanced". ' +
811
811
  'Only re-enabling (status "active") is allowed.',
812
812
  );
813
813
  expectNothingCommitted();
@@ -818,13 +818,13 @@ describe("managed-profile invariant guard — rejected writes", () => {
818
818
  setRoute.handler({
819
819
  body: { path: "llm.profiles.balanced.status", value: 123 },
820
820
  }),
821
- ).rejects.toThrow('Cannot set status 123 on managed profile "balanced"');
821
+ ).rejects.toThrow('Cannot set status 123 on cloud profile "balanced"');
822
822
  expectNothingCommitted();
823
823
  });
824
824
  });
825
825
 
826
826
  describe("default-profile invariant guard — allowed writes", () => {
827
- test("PATCH re-enables a disabled managed profile (BYOK re-enable)", async () => {
827
+ test("PATCH re-enables a disabled cloud profile (BYOK re-enable)", async () => {
828
828
  (rawConfig as Record<string, any>).llm.profiles.balanced.status =
829
829
  "disabled";
830
830
  seedRawConfig(rawConfig);
@@ -848,7 +848,7 @@ describe("default-profile invariant guard — allowed writes", () => {
848
848
  expect(savedProfile("balanced").status ?? null).toBeNull();
849
849
  });
850
850
 
851
- test("PUT { status: 'active' } re-enables a disabled managed profile", async () => {
851
+ test("PUT { status: 'active' } re-enables a disabled cloud profile", async () => {
852
852
  (rawConfig as Record<string, any>).llm.profiles.balanced.status =
853
853
  "disabled";
854
854
  seedRawConfig(rawConfig);
@@ -861,7 +861,7 @@ describe("default-profile invariant guard — allowed writes", () => {
861
861
  expect(savedProfile("balanced").status).toBe("active");
862
862
  });
863
863
 
864
- test("SET llm.profiles.balanced.status = 'active' re-enables a disabled managed profile", async () => {
864
+ test("SET llm.profiles.balanced.status = 'active' re-enables a disabled cloud profile", async () => {
865
865
  (rawConfig as Record<string, any>).llm.profiles.balanced.status =
866
866
  "disabled";
867
867
  seedRawConfig(rawConfig);
@@ -893,9 +893,9 @@ describe("default-profile invariant guard — allowed writes", () => {
893
893
  });
894
894
 
895
895
  test("PATCH deleting a user-sourced balanced entry is allowed (invariance is source-gated)", async () => {
896
- // A `source: "user"` entry passes the managed-deletion guard AND the
896
+ // A `source: "user"` entry passes the cloud-deletion guard AND the
897
897
  // invariant guard — both key on the on-disk entry's managed source, so
898
- // a user-owned profile sharing a managed name stays deletable.
898
+ // a user-owned profile sharing a cloud name stays deletable.
899
899
  (rawConfig as Record<string, any>).llm.profiles.balanced.source = "user";
900
900
  seedRawConfig(rawConfig);
901
901
  const result = await patchRoute.handler({
@@ -1014,13 +1014,13 @@ describe("wire-only profile keys are stripped from writes", () => {
1014
1014
 
1015
1015
  // -------------------------------------------------------------------------
1016
1016
  // Stale wire-only keys on disk: configs written before the write-side strip
1017
- // existed can carry `supportsVision` under a managed profile. The invariant
1017
+ // existed can carry `supportsVision` under a cloud profile. The invariant
1018
1018
  // guard ignores wire-only keys on both sides, so a GET → write round-trip
1019
1019
  // (whose incoming copy is stripped) is not rejected for "removing" the
1020
1020
  // stale key — and a full-entry SET drops it from disk.
1021
1021
  // -------------------------------------------------------------------------
1022
1022
 
1023
- test("SET round-trip re-enabling a managed profile with stale on-disk supportsVision succeeds and drops the stale key", async () => {
1023
+ test("SET round-trip re-enabling a cloud profile with stale on-disk supportsVision succeeds and drops the stale key", async () => {
1024
1024
  const balanced = (rawConfig as Record<string, any>).llm.profiles.balanced;
1025
1025
  balanced.supportsVision = true; // stale pre-strip persistence
1026
1026
  balanced.status = "disabled";
@@ -1186,7 +1186,7 @@ describe("code-owned default profiles — wire view and write normalization", ()
1186
1186
  },
1187
1187
  }),
1188
1188
  ).rejects.toThrow(
1189
- 'Cannot edit managed profile "cost-optimized" fields [model].',
1189
+ 'Cannot edit cloud profile "cost-optimized" fields [model].',
1190
1190
  );
1191
1191
  expectNothingCommitted();
1192
1192
  });
@@ -1201,7 +1201,7 @@ describe("code-owned default profiles — wire view and write normalization", ()
1201
1201
  },
1202
1202
  },
1203
1203
  }),
1204
- ).rejects.toThrow('Cannot disable managed profile "balanced".');
1204
+ ).rejects.toThrow('Cannot disable cloud profile "balanced".');
1205
1205
  expectNothingCommitted();
1206
1206
  });
1207
1207
 
@@ -1302,7 +1302,7 @@ describe("code-owned default profiles — BYO default provider wire view", () =>
1302
1302
  });
1303
1303
 
1304
1304
  describe("code-owned default profiles — leaf SET source stamping", () => {
1305
- test("a leaf SET creating a managed entry stamps the managed marker", async () => {
1305
+ test("a leaf SET creating a cloud entry stamps the cloud marker", async () => {
1306
1306
  seedRawConfig({ llm: { profiles: {} } });
1307
1307
  const result = await setRoute.handler({
1308
1308
  body: { path: "llm.profiles.balanced.status", value: "active" },
@@ -1348,7 +1348,7 @@ describe("code-owned default profiles — leaf SET source stamping", () => {
1348
1348
  });
1349
1349
 
1350
1350
  describe("code-owned default profiles — echoes over stale on-disk bodies", () => {
1351
- // An overlay can persist a managed entry whose content differs from the
1351
+ // An overlay can persist a cloud entry whose content differs from the
1352
1352
  // catalog; GET serves catalog content, so a client echo carries values
1353
1353
  // that match neither nothing — they match the wire view. The round-trip
1354
1354
  // must still be a no-op.
@@ -8,139 +8,139 @@ const secureKeys = useMemorySecureKeyMap();
8
8
  const ASSISTANT_API_KEY = credentialKey("cadet", "assistant_api_key");
9
9
 
10
10
  // Mutable state for env stubs
11
- let mockPlatformBaseUrl = "";
11
+ let mockCloudBaseUrl = "";
12
12
 
13
13
  mock.module("../config/env.js", () => ({
14
- getPlatformBaseUrl: () => mockPlatformBaseUrl,
14
+ getCloudBaseUrl: () => mockCloudBaseUrl,
15
15
  }));
16
16
 
17
17
  import {
18
- buildManagedBaseUrl,
19
- hasManagedProxyPrereqs,
18
+ buildCloudBaseUrl,
19
+ hasCloudProxyPrereqs,
20
20
  managedFallbackEnabledFor,
21
- resolveManagedProxyContext,
22
- } from "../providers/platform-proxy/context.js";
21
+ resolveCloudProxyContext,
22
+ } from "../providers/cloud-proxy/context.js";
23
23
 
24
- describe("resolveManagedProxyContext", () => {
24
+ describe("resolveCloudProxyContext", () => {
25
25
  beforeEach(() => {
26
- mockPlatformBaseUrl = "";
26
+ mockCloudBaseUrl = "";
27
27
  secureKeys.delete(ASSISTANT_API_KEY);
28
28
  });
29
29
 
30
30
  test("returns disabled when platform URL is empty", async () => {
31
- mockPlatformBaseUrl = "";
31
+ mockCloudBaseUrl = "";
32
32
  secureKeys.set(ASSISTANT_API_KEY, "sk-test-key");
33
33
 
34
- const ctx = await resolveManagedProxyContext();
34
+ const ctx = await resolveCloudProxyContext();
35
35
  expect(ctx.enabled).toBe(false);
36
- expect(ctx.platformBaseUrl).toBe("");
36
+ expect(ctx.cloudBaseUrl).toBe("");
37
37
  });
38
38
 
39
39
  test("returns disabled when assistant API key is missing", async () => {
40
- mockPlatformBaseUrl = "https://platform.example.com";
40
+ mockCloudBaseUrl = "https://platform.example.com";
41
41
  secureKeys.delete(ASSISTANT_API_KEY);
42
42
 
43
- const ctx = await resolveManagedProxyContext();
43
+ const ctx = await resolveCloudProxyContext();
44
44
  expect(ctx.enabled).toBe(false);
45
45
  expect(ctx.assistantApiKey).toBe("");
46
46
  });
47
47
 
48
48
  test("returns disabled when both are missing", async () => {
49
- const ctx = await resolveManagedProxyContext();
49
+ const ctx = await resolveCloudProxyContext();
50
50
  expect(ctx.enabled).toBe(false);
51
51
  });
52
52
 
53
53
  test("returns enabled when both platform URL and API key are present", async () => {
54
- mockPlatformBaseUrl = "https://platform.example.com/";
54
+ mockCloudBaseUrl = "https://platform.example.com/";
55
55
  secureKeys.set(ASSISTANT_API_KEY, "sk-test-key");
56
56
 
57
- const ctx = await resolveManagedProxyContext();
57
+ const ctx = await resolveCloudProxyContext();
58
58
  expect(ctx.enabled).toBe(true);
59
- expect(ctx.platformBaseUrl).toBe("https://platform.example.com");
59
+ expect(ctx.cloudBaseUrl).toBe("https://platform.example.com");
60
60
  expect(ctx.assistantApiKey).toBe("sk-test-key");
61
61
  });
62
62
 
63
63
  test("strips trailing slashes from platform URL", async () => {
64
- mockPlatformBaseUrl = "https://platform.example.com///";
64
+ mockCloudBaseUrl = "https://platform.example.com///";
65
65
  secureKeys.set(ASSISTANT_API_KEY, "sk-test-key");
66
66
 
67
- const ctx = await resolveManagedProxyContext();
68
- expect(ctx.platformBaseUrl).toBe("https://platform.example.com");
67
+ const ctx = await resolveCloudProxyContext();
68
+ expect(ctx.cloudBaseUrl).toBe("https://platform.example.com");
69
69
  });
70
70
  });
71
71
 
72
- describe("hasManagedProxyPrereqs", () => {
72
+ describe("hasCloudProxyPrereqs", () => {
73
73
  beforeEach(() => {
74
- mockPlatformBaseUrl = "";
74
+ mockCloudBaseUrl = "";
75
75
  secureKeys.delete(ASSISTANT_API_KEY);
76
76
  });
77
77
 
78
78
  test("returns false when prerequisites are missing", async () => {
79
- expect(await hasManagedProxyPrereqs()).toBe(false);
79
+ expect(await hasCloudProxyPrereqs()).toBe(false);
80
80
  });
81
81
 
82
82
  test("returns true when prerequisites are satisfied", async () => {
83
- mockPlatformBaseUrl = "https://platform.example.com";
83
+ mockCloudBaseUrl = "https://platform.example.com";
84
84
  secureKeys.set(ASSISTANT_API_KEY, "sk-test-key");
85
- expect(await hasManagedProxyPrereqs()).toBe(true);
85
+ expect(await hasCloudProxyPrereqs()).toBe(true);
86
86
  });
87
87
  });
88
88
 
89
- describe("buildManagedBaseUrl", () => {
89
+ describe("buildCloudBaseUrl", () => {
90
90
  beforeEach(() => {
91
- mockPlatformBaseUrl = "https://platform.example.com";
91
+ mockCloudBaseUrl = "https://platform.example.com";
92
92
  secureKeys.set(ASSISTANT_API_KEY, "sk-test-key");
93
93
  });
94
94
 
95
- test("builds correct URL for managed providers", async () => {
96
- expect(await buildManagedBaseUrl("anthropic")).toBe(
95
+ test("builds correct URL for cloud providers", async () => {
96
+ expect(await buildCloudBaseUrl("anthropic")).toBe(
97
97
  "https://platform.example.com/v1/runtime-proxy/anthropic",
98
98
  );
99
- expect(await buildManagedBaseUrl("gemini")).toBe(
99
+ expect(await buildCloudBaseUrl("gemini")).toBe(
100
100
  "https://platform.example.com/v1/runtime-proxy/gemini",
101
101
  );
102
- expect(await buildManagedBaseUrl("openai")).toBe(
102
+ expect(await buildCloudBaseUrl("openai")).toBe(
103
103
  "https://platform.example.com/v1/runtime-proxy/openai",
104
104
  );
105
105
  });
106
106
 
107
107
  test("returns managed URL for fireworks", async () => {
108
- expect(await buildManagedBaseUrl("fireworks")).toBe(
108
+ expect(await buildCloudBaseUrl("fireworks")).toBe(
109
109
  "https://platform.example.com/v1/runtime-proxy/fireworks",
110
110
  );
111
111
  });
112
112
 
113
- test("returns undefined for non-managed providers", async () => {
114
- expect(await buildManagedBaseUrl("openrouter")).toBeUndefined();
115
- expect(await buildManagedBaseUrl("ollama")).toBeUndefined();
113
+ test("returns undefined for non-cloud providers", async () => {
114
+ expect(await buildCloudBaseUrl("openrouter")).toBeUndefined();
115
+ expect(await buildCloudBaseUrl("ollama")).toBeUndefined();
116
116
  });
117
117
 
118
118
  test("returns undefined for unknown provider", async () => {
119
- expect(await buildManagedBaseUrl("unknown-provider")).toBeUndefined();
119
+ expect(await buildCloudBaseUrl("unknown-provider")).toBeUndefined();
120
120
  });
121
121
 
122
122
  test("returns undefined when prerequisites are missing", async () => {
123
- mockPlatformBaseUrl = "";
123
+ mockCloudBaseUrl = "";
124
124
  secureKeys.delete(ASSISTANT_API_KEY);
125
- expect(await buildManagedBaseUrl("anthropic")).toBeUndefined();
126
- expect(await buildManagedBaseUrl("gemini")).toBeUndefined();
127
- expect(await buildManagedBaseUrl("openai")).toBeUndefined();
125
+ expect(await buildCloudBaseUrl("anthropic")).toBeUndefined();
126
+ expect(await buildCloudBaseUrl("gemini")).toBeUndefined();
127
+ expect(await buildCloudBaseUrl("openai")).toBeUndefined();
128
128
  });
129
129
  });
130
130
 
131
131
  describe("managedFallbackEnabledFor", () => {
132
132
  beforeEach(() => {
133
- mockPlatformBaseUrl = "https://platform.example.com";
133
+ mockCloudBaseUrl = "https://platform.example.com";
134
134
  secureKeys.set(ASSISTANT_API_KEY, "sk-test-key");
135
135
  });
136
136
 
137
- test("returns true only for managed fallback providers with prerequisites", async () => {
137
+ test("returns true only for cloud fallback providers with prerequisites", async () => {
138
138
  expect(await managedFallbackEnabledFor("anthropic")).toBe(true);
139
139
  expect(await managedFallbackEnabledFor("gemini")).toBe(true);
140
140
  expect(await managedFallbackEnabledFor("openai")).toBe(true);
141
141
  });
142
142
 
143
- test("returns false for non-managed provider", async () => {
143
+ test("returns false for non-cloud provider", async () => {
144
144
  expect(await managedFallbackEnabledFor("ollama")).toBe(false);
145
145
  });
146
146
 
@@ -149,7 +149,7 @@ describe("managedFallbackEnabledFor", () => {
149
149
  });
150
150
 
151
151
  test("returns false when prerequisites are missing", async () => {
152
- mockPlatformBaseUrl = "";
152
+ mockCloudBaseUrl = "";
153
153
  secureKeys.delete(ASSISTANT_API_KEY);
154
154
  expect(await managedFallbackEnabledFor("anthropic")).toBe(false);
155
155
  expect(await managedFallbackEnabledFor("gemini")).toBe(false);