@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
@@ -2,15 +2,15 @@
2
2
  * Tests for `getOriginMode` — the vbundle manifest `origin.mode` derivation.
3
3
  *
4
4
  * Covers:
5
- * - `IS_PLATFORM=true` → "managed" (wins over IS_CONTAINERIZED).
6
- * - `IS_CONTAINERIZED=true` (no IS_PLATFORM) → "self-hosted-remote".
5
+ * - `IS_CLOUD=true` → "managed" (wins over IS_CONTAINERIZED).
6
+ * - `IS_CONTAINERIZED=true` (no IS_CLOUD) → "self-hosted-remote".
7
7
  * - Neither → "self-hosted-local".
8
- * - Regression: a logged-in local assistant holding managed-proxy
8
+ * - Regression: a logged-in local assistant holding cloud-proxy
9
9
  * credentials (platform URL + assistant_api_key) must NOT be classified
10
10
  * "managed" — every logged-in local has those credentials, and a
11
11
  * "managed" stamp trips the importer's `secrets_redacted must be true
12
12
  * when origin.mode is 'managed'` refine, breaking local→platform
13
- * teleport. The helper keys on the IS_PLATFORM deployment env only —
13
+ * teleport. The helper keys on the IS_CLOUD deployment env only —
14
14
  * nothing here consults the credential store, so the regression case is
15
15
  * simply "no env flags set".
16
16
  */
@@ -19,7 +19,7 @@ import { afterEach, describe, expect, test } from "bun:test";
19
19
 
20
20
  import { getOriginMode } from "../origin-mode.js";
21
21
 
22
- const ORIGINAL_IS_PLATFORM = process.env.IS_PLATFORM;
22
+ const ORIGINAL_IS_CLOUD = process.env.IS_CLOUD;
23
23
  const ORIGINAL_IS_CONTAINERIZED = process.env.IS_CONTAINERIZED;
24
24
 
25
25
  function restore(name: string, value: string | undefined): void {
@@ -31,31 +31,31 @@ function restore(name: string, value: string | undefined): void {
31
31
  }
32
32
 
33
33
  afterEach(() => {
34
- restore("IS_PLATFORM", ORIGINAL_IS_PLATFORM);
34
+ restore("IS_CLOUD", ORIGINAL_IS_CLOUD);
35
35
  restore("IS_CONTAINERIZED", ORIGINAL_IS_CONTAINERIZED);
36
36
  });
37
37
 
38
38
  describe("getOriginMode", () => {
39
- test("IS_PLATFORM=true → managed", async () => {
40
- process.env.IS_PLATFORM = "true";
39
+ test("IS_CLOUD=true → managed", async () => {
40
+ process.env.IS_CLOUD = "true";
41
41
  delete process.env.IS_CONTAINERIZED;
42
42
  expect(await getOriginMode()).toBe("managed");
43
43
  });
44
44
 
45
- test("IS_PLATFORM wins over IS_CONTAINERIZED", async () => {
46
- process.env.IS_PLATFORM = "1";
45
+ test("IS_CLOUD wins over IS_CONTAINERIZED", async () => {
46
+ process.env.IS_CLOUD = "1";
47
47
  process.env.IS_CONTAINERIZED = "true";
48
48
  expect(await getOriginMode()).toBe("managed");
49
49
  });
50
50
 
51
- test("IS_CONTAINERIZED=true without IS_PLATFORM → self-hosted-remote", async () => {
52
- delete process.env.IS_PLATFORM;
51
+ test("IS_CONTAINERIZED=true without IS_CLOUD → self-hosted-remote", async () => {
52
+ delete process.env.IS_CLOUD;
53
53
  process.env.IS_CONTAINERIZED = "true";
54
54
  expect(await getOriginMode()).toBe("self-hosted-remote");
55
55
  });
56
56
 
57
- test("neither flag → self-hosted-local (incl. logged-in locals with managed-proxy creds)", async () => {
58
- delete process.env.IS_PLATFORM;
57
+ test("neither flag → self-hosted-local (incl. logged-in locals with cloud-proxy creds)", async () => {
58
+ delete process.env.IS_CLOUD;
59
59
  delete process.env.IS_CONTAINERIZED;
60
60
  expect(await getOriginMode()).toBe("self-hosted-local");
61
61
  });
@@ -34,7 +34,7 @@ export interface DefaultV1Options {
34
34
  * Sensible defaults for the six caller-required v1 manifest options.
35
35
  *
36
36
  * `secretsRedacted` defaults to false to match the runtime's typical
37
- * "credentials included by design" path; tests that exercise the managed
37
+ * "credentials included by design" path; tests that exercise the cloud
38
38
  * cross-field refine override `origin.mode` and `secretsRedacted` directly.
39
39
  */
40
40
  export function defaultV1Options(): DefaultV1Options {
@@ -2,9 +2,9 @@
2
2
  * Buffer importer runtime-version compat gate.
3
3
  *
4
4
  * Wires `commitImport` to `policy.evaluateRuntimeCompatibility` BEFORE any
5
- * state mutation. The platform-side gate is the primary check; this catches
5
+ * state mutation. The cloud-side gate is the primary check; this catches
6
6
  * legacy bundles whose ExportJob row predates PR #5470 (compat columns NULL
7
- * → platform gate skipped) and any caller that bypasses the platform-issued
7
+ * → platform gate skipped) and any caller that bypasses the cloud-issued
8
8
  * signed URL flow.
9
9
  *
10
10
  * Invariants pinned here:
@@ -48,10 +48,9 @@ interface Record {
48
48
  }
49
49
 
50
50
  const CADET_FIELDS = [
51
- "platform_base_url",
51
+ "webhook_secret",
52
52
  "assistant_api_key",
53
53
  "platform_assistant_id",
54
- "webhook_secret",
55
54
  ] as const;
56
55
 
57
56
  function record(service: string, field: string, prefix = "id"): Record {
@@ -180,7 +179,7 @@ describe("commitImport — credential metadata merge", () => {
180
179
  const metadataPath = seedTargetMetadata(workspaceDir, cadetRecords());
181
180
  const bundleMetadata = metadataJson([
182
181
  record("cadet", "assistant_api_key", "source-rogue"),
183
- record("cadet", "platform_base_url", "source-rogue"),
182
+ record("cadet", "webhook_secret", "source-rogue"),
184
183
  record("telegram", "bot_token", "source"),
185
184
  ]);
186
185
  const { archive } = buildVBundle({
@@ -207,7 +206,7 @@ describe("commitImport — credential metadata merge", () => {
207
206
 
208
207
  const merged = readMetadata(metadataPath);
209
208
  const legacyRows = merged.credentials.filter((r) => r.service === "cadet");
210
- expect(legacyRows.length).toBe(4);
209
+ expect(legacyRows.length).toBe(3);
211
210
  for (const r of legacyRows) {
212
211
  expect(r.credentialId.startsWith("target-")).toBe(true);
213
212
  }
@@ -59,10 +59,9 @@ function keys(records: Record[]): Set<string> {
59
59
  }
60
60
 
61
61
  const CADET_FIELDS = [
62
- "platform_base_url",
62
+ "webhook_secret",
63
63
  "assistant_api_key",
64
64
  "platform_assistant_id",
65
- "webhook_secret",
66
65
  ] as const;
67
66
 
68
67
  function cadetRecords(): Record[] {
@@ -103,9 +102,9 @@ describe("mergeMetadataPreservingCadet", () => {
103
102
  mergeMetadataPreservingCadet(file(bundle), file(target)),
104
103
  );
105
104
 
106
- // 4 cadet + 3 user = 7 total.
107
- expect(merged.credentials.length).toBe(7);
108
- expect(keys(merged.credentials).size).toBe(7);
105
+ // 3 cadet + 3 user = 6 total.
106
+ expect(merged.credentials.length).toBe(6);
107
+ expect(keys(merged.credentials).size).toBe(6);
109
108
 
110
109
  // Target's credentialIds for cadet are preserved (not the bundle's).
111
110
  for (const r of merged.credentials) {
@@ -128,7 +127,7 @@ describe("mergeMetadataPreservingCadet", () => {
128
127
  }),
129
128
  record({
130
129
  service: "cadet",
131
- field: "platform_base_url",
130
+ field: "webhook_secret",
132
131
  credentialId: "source-rogue-url",
133
132
  }),
134
133
  record({ service: "telegram", field: "bot_token" }),
@@ -141,7 +140,7 @@ describe("mergeMetadataPreservingCadet", () => {
141
140
  const cadetRecordsOut = merged.credentials.filter(
142
141
  (r) => r.service === "cadet",
143
142
  );
144
- expect(cadetRecordsOut.length).toBe(4);
143
+ expect(cadetRecordsOut.length).toBe(3);
145
144
  for (const r of cadetRecordsOut) {
146
145
  expect(r.credentialId.startsWith("target-")).toBe(true);
147
146
  }
@@ -5,7 +5,7 @@
5
5
  * - Accepts a v1 ten-field manifest produced by `buildVBundle`.
6
6
  * - Rejects every legacy six-field manifest shape.
7
7
  * - Rejects when `schema_version` is anything other than `1`.
8
- * - Enforces the managed-mode redaction `.refine()` (`origin.mode === "managed" ⇒ secrets_redacted === true`).
8
+ * - Enforces the cloud-mode redaction `.refine()` (`origin.mode === "managed" ⇒ secrets_redacted === true`).
9
9
  * - Enforces the `data/db/assistant.db`-in-contents `.refine()`.
10
10
  * - Rejects when the declared `checksum` doesn't match the recomputed self-checksum.
11
11
  */
@@ -478,7 +478,7 @@ export async function importCommit(
478
478
  }
479
479
 
480
480
  /**
481
- * Poll the status of a managed export job.
481
+ * Poll the status of a cloud export job.
482
482
  *
483
483
  * Only applicable to managed targets. Runtime exports are synchronous
484
484
  * and do not require status polling.
@@ -491,7 +491,7 @@ export async function pollExportStatus(
491
491
  }
492
492
 
493
493
  /**
494
- * Poll the status of a managed import job.
494
+ * Poll the status of a cloud import job.
495
495
  *
496
496
  * Only applicable to managed targets. Runtime imports are synchronous
497
497
  * and do not require status polling.
@@ -579,7 +579,7 @@ interface PollOptions {
579
579
  }
580
580
 
581
581
  /**
582
- * Poll a managed job until it reaches a terminal state (complete or failed).
582
+ * Poll a cloud job until it reaches a terminal state (complete or failed).
583
583
  *
584
584
  * Returns the final status response. Throws if maxAttempts is exceeded.
585
585
  */
@@ -4,13 +4,13 @@
4
4
  * The vbundle manifest v1 schema's `origin.mode` enum captures the deployment
5
5
  * shape that produced the bundle. The runtime's two underlying signals are:
6
6
  *
7
- * - `getIsPlatform()` — true when the daemon runs as a platform-managed
8
- * deployment (`IS_PLATFORM`, set only on platform pods).
7
+ * - `getIsCloud()` — true when the daemon runs as a cloud-managed
8
+ * deployment (`IS_CLOUD`, set only on cloud pods).
9
9
  * - `getIsContainerized()` — true when the daemon runs inside a container
10
10
  * (`IS_CONTAINERIZED`), identifying where the daemon process is running.
11
11
  *
12
- * Deliberately NOT keyed on managed-proxy prerequisites: any logged-in
13
- * local assistant holds a platform URL and `assistant_api_key` (to use the
12
+ * Deliberately NOT keyed on cloud-proxy prerequisites: any logged-in
13
+ * local assistant holds a cloud URL and `assistant_api_key` (to use the
14
14
  * platform LLM proxy), so proxy-prereq presence does not distinguish a
15
15
  * managed deployment from a local one. Stamping a local export as
16
16
  * "managed" would trip the importer's `secrets_redacted must be true when
@@ -18,10 +18,7 @@
18
18
  * every logged-in local assistant.
19
19
  */
20
20
 
21
- import {
22
- getIsContainerized,
23
- getIsPlatform,
24
- } from "../../config/env-registry.js";
21
+ import { getIsCloud, getIsContainerized } from "../../config/env-registry.js";
25
22
 
26
23
  export type VBundleOriginMode =
27
24
  | "managed"
@@ -35,7 +32,7 @@ export type VBundleOriginMode =
35
32
  * "self-hosted-remote", bare-metal → "self-hosted-local".
36
33
  */
37
34
  export async function getOriginMode(): Promise<VBundleOriginMode> {
38
- if (getIsPlatform()) {
35
+ if (getIsCloud()) {
39
36
  return "managed";
40
37
  }
41
38
  if (getIsContainerized()) {
@@ -114,7 +114,7 @@ type SemverTriple = readonly [number, number, number];
114
114
  function parseSemverTriple(version: string): SemverTriple | null {
115
115
  // Strip optional prerelease/build suffix ("-foo", "+sha"). We treat
116
116
  // "0.7.1-staging.1" as equal-to-release "0.7.1" for gating purposes.
117
- // The platform-side check uses packaging.version.Version, which sorts
117
+ // The cloud-side check uses packaging.version.Version, which sorts
118
118
  // prereleases BEFORE the corresponding release; matching that exactly
119
119
  // would require a fuller parser — for runtime-side defense-in-depth
120
120
  // this conservative read is sufficient (matches release of the same
@@ -184,7 +184,7 @@ export function formatRuntimeCompatibilityMessage(
184
184
 
185
185
  /**
186
186
  * Whether `version` names a runtime built from a source checkout: the
187
- * `<pkg.version>-local.<timestamp>.<sha>` `APP_VERSION` that the platform
187
+ * `<pkg.version>-local.<timestamp>.<sha>` `APP_VERSION` that the cloud
188
188
  * repo's `vel up` stamps on the assistant images it builds for its local
189
189
  * minikube cluster. The triple is the checkout's package.json version,
190
190
  * which only moves on release cuts, so it says nothing about whether the
@@ -206,10 +206,10 @@ export function commitImport(options: ImportCommitOptions): ImportCommitResult {
206
206
  }
207
207
 
208
208
  // Defense-in-depth: refuse to import a bundle whose declared compat range
209
- // excludes this runtime BEFORE any state mutation. The platform-side gate
209
+ // excludes this runtime BEFORE any state mutation. The cloud-side gate
210
210
  // is the primary check; this catches legacy bundles whose ExportJob row
211
211
  // predates PR #5470 (compat columns NULL → platform gate skipped) and
212
- // any caller that bypasses the platform-issued signed URL flow.
212
+ // any caller that bypasses the cloud-issued signed URL flow.
213
213
  const compatResult = policy.evaluateRuntimeCompatibility(
214
214
  manifest.compatibility,
215
215
  APP_VERSION,
@@ -253,7 +253,7 @@ export function commitImport(options: ImportCommitOptions): ImportCommitResult {
253
253
  // Capture the target's credential metadata BEFORE the workspace clear
254
254
  // runs. Step 1b wipes `data/credentials/`, so reading live metadata
255
255
  // later (during the per-file write loop) would always miss. The merge
256
- // helper needs this content to preserve the target's platform-identity
256
+ // helper needs this content to preserve the target's cloud-identity
257
257
  // (`cadet:*`) entries across the overwrite.
258
258
  let liveCredentialMetadataJson: string | null = null;
259
259
  const credentialMetadataDiskPath = pathResolver.resolve(
@@ -723,7 +723,7 @@ export function commitImport(options: ImportCommitOptions): ImportCommitResult {
723
723
  // carry a metadata.json entry, the target's cadet:* entries were
724
724
  // wiped along with the `data/credentials/` directory. Restore them by
725
725
  // writing a minimal file containing just the preserved entries so the
726
- // gateway can still locate the platform API key. When Step 1b did NOT
726
+ // gateway can still locate the cloud API key. When Step 1b did NOT
727
727
  // run (e.g. workspaceDir unset) the live metadata.json is still on
728
728
  // disk untouched — we must not rewrite it here or we would drop the
729
729
  // non-cadet entries the caller chose to keep.
@@ -333,9 +333,9 @@ export async function streamCommitImport(
333
333
  // cleanupTempDir() in the catch — a safe no-op on a missing path
334
334
  // — and mapThrownToResult translates VersionIncompatibleError into
335
335
  // the version_incompatible result shape. Catches legacy bundles
336
- // whose ExportJob row predates the platform compat-column rollout
336
+ // whose ExportJob row predates the cloud compat-column rollout
337
337
  // (compat columns NULL → platform gate skipped) and any future
338
- // drift between the platform gate and the manifest.
338
+ // drift between the cloud gate and the manifest.
339
339
  const compatResult = policy.evaluateRuntimeCompatibility(
340
340
  manifest.compatibility,
341
341
  APP_VERSION,
@@ -1061,13 +1061,13 @@ export async function streamCommitImport(
1061
1061
  }
1062
1062
 
1063
1063
  // Preserve the target's `cadet:*` credential metadata entries across
1064
- // the swap. Django's post-hatch provisioning on the platform writes
1065
- // `cadet:platform_base_url` / `assistant_api_key` / `platform_assistant_id`
1066
- // / `webhook_secret` via POST /v1/secrets, which upserts into the live
1064
+ // the swap. Django's post-hatch provisioning writes
1065
+ // `cadet:assistant_api_key` / `cadet:webhook_secret` via POST /v1/secrets,
1066
+ // which upserts into the live
1067
1067
  // workspace's `data/credentials/metadata.json`. Without this merge the
1068
1068
  // swap would replace that file with the source's copy (which has no
1069
1069
  // cadet entries on local sources), and the gateway's
1070
- // `readServiceCredentials` would stop finding the platform API key.
1070
+ // `readServiceCredentials` would stop finding the cloud API key.
1071
1071
  //
1072
1072
  // Executes in the temp workspace only — no effect on the live workspace
1073
1073
  // — so a failure here leaves pre-swap state untouched. Any filesystem
@@ -348,7 +348,7 @@ function sha256Hex(data: Uint8Array | string): string {
348
348
 
349
349
  /**
350
350
  * Canonicalize a JSON object by sorting keys recursively, then SHA-256 hash it.
351
- * This matches the platform's canonicalization approach.
351
+ * This matches the cloud's canonicalization approach.
352
352
  */
353
353
  export function canonicalizeJson(obj: unknown): string {
354
354
  return JSON.stringify(obj, (_key, value) => {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Unit tests for the platform_credits route handler: field mapping from the
2
+ * Unit tests for the cloud_credits route handler: field mapping from the
3
3
  * platform billing summary, including the daily-limit and low-balance state,
4
4
  * and the fallbacks when a summary omits those fields.
5
5
  */
@@ -8,26 +8,26 @@ import { afterEach, beforeEach, describe, expect, mock, test } from "bun:test";
8
8
 
9
9
  import { UnprocessableEntityError } from "../errors.js";
10
10
 
11
- let platformBaseUrl = "https://platform.test";
11
+ let cloudBaseUrl = "https://platform.test";
12
12
  let authHeader: string | null = "Api-Key test";
13
13
 
14
14
  // Spread the real module: replacing it wholesale breaks unrelated importers
15
15
  // pulled in by the module under test.
16
16
  const actualRegistration =
17
- await import("../../../inbound/platform-callback-registration.js");
18
- mock.module("../../../inbound/platform-callback-registration.js", () => ({
17
+ await import("../../../inbound/cloud-callback-registration.js");
18
+ mock.module("../../../inbound/cloud-callback-registration.js", () => ({
19
19
  ...actualRegistration,
20
- resolvePlatformCallbackRegistrationContext: async () => ({
20
+ resolveCloudCallbackRegistrationContext: async () => ({
21
21
  isPlatform: false,
22
- platformBaseUrl,
22
+ cloudBaseUrl,
23
23
  assistantId: "assistant-123",
24
24
  hasAssistantApiKey: !!authHeader,
25
25
  authHeader,
26
- enabled: !!(platformBaseUrl && authHeader),
26
+ enabled: !!(cloudBaseUrl && authHeader),
27
27
  }),
28
28
  }));
29
29
 
30
- const { ROUTES } = await import("../platform-routes.js");
30
+ const { ROUTES } = await import("../cloud-routes.js");
31
31
 
32
32
  const creditsHandler = ROUTES.find(
33
33
  (r) => r.operationId === "platform_credits",
@@ -84,7 +84,7 @@ function stubFetch(
84
84
  }
85
85
 
86
86
  beforeEach(() => {
87
- platformBaseUrl = "https://platform.test";
87
+ cloudBaseUrl = "https://platform.test";
88
88
  authHeader = "Api-Key test";
89
89
  fetchedUrls = [];
90
90
  });
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Unit tests for the platform_invoices_list and platform_invoices_by_id_get route
2
+ * Unit tests for the cloud_invoices_list and platform_invoices_by_id_get route
3
3
  * handlers: cursor forwarding, page walking, the page cap, and error paths.
4
4
  */
5
5
 
@@ -12,27 +12,27 @@ import {
12
12
  UnprocessableEntityError,
13
13
  } from "../errors.js";
14
14
 
15
- let platformBaseUrl = "https://platform.test";
15
+ let cloudBaseUrl = "https://platform.test";
16
16
  let authHeader: string | null = "Api-Key test";
17
17
 
18
18
  // Spread the real module: replacing it wholesale breaks unrelated importers
19
19
  // pulled in by the module under test.
20
20
  const actualRegistration =
21
- await import("../../../inbound/platform-callback-registration.js");
22
- mock.module("../../../inbound/platform-callback-registration.js", () => ({
21
+ await import("../../../inbound/cloud-callback-registration.js");
22
+ mock.module("../../../inbound/cloud-callback-registration.js", () => ({
23
23
  ...actualRegistration,
24
- resolvePlatformCallbackRegistrationContext: async () => ({
24
+ resolveCloudCallbackRegistrationContext: async () => ({
25
25
  isPlatform: false,
26
- platformBaseUrl,
26
+ cloudBaseUrl,
27
27
  assistantId: "assistant-123",
28
28
  hasAssistantApiKey: !!authHeader,
29
29
  authHeader,
30
- enabled: !!(platformBaseUrl && authHeader),
30
+ enabled: !!(cloudBaseUrl && authHeader),
31
31
  }),
32
32
  }));
33
33
 
34
34
  const { INVOICE_WALK_DEADLINE_MS, MAX_INVOICE_PAGES, ROUTES } =
35
- await import("../platform-routes.js");
35
+ await import("../cloud-routes.js");
36
36
 
37
37
  const listHandler = ROUTES.find(
38
38
  (r) => r.operationId === "platform_invoices_list",
@@ -103,7 +103,7 @@ function jsonResponse(body: unknown, status = 200): Response {
103
103
  }
104
104
 
105
105
  beforeEach(() => {
106
- platformBaseUrl = "https://platform.test";
106
+ cloudBaseUrl = "https://platform.test";
107
107
  authHeader = "Api-Key test";
108
108
  fetchCalls = [];
109
109
  });
@@ -113,7 +113,7 @@ afterEach(() => {
113
113
  });
114
114
 
115
115
  describe("platform_invoices_list", () => {
116
- test("returns the platform page and calls the bare invoices URL", async () => {
116
+ test("returns the cloud page and calls the bare invoices URL", async () => {
117
117
  const page = { invoices: [invoice("in_1")], has_more: false };
118
118
  stubFetch(() => jsonResponse(page));
119
119
 
@@ -138,7 +138,7 @@ describe("platform_invoices_list", () => {
138
138
  });
139
139
 
140
140
  test("rejects with UnprocessableEntityError when credentials are missing", async () => {
141
- platformBaseUrl = "";
141
+ cloudBaseUrl = "";
142
142
  stubFetch(() => jsonResponse({ invoices: [], has_more: false }));
143
143
 
144
144
  await expect(listHandler({})).rejects.toBeInstanceOf(
@@ -150,7 +150,7 @@ describe("platform_invoices_list", () => {
150
150
  test("resolves an upstream 404 to an empty page", async () => {
151
151
  stubFetch(() => new Response("Not found", { status: 404 }));
152
152
 
153
- // The platform 404s the invoice list for an organization without invoice
153
+ // The cloud 404s the invoice list for an organization without invoice
154
154
  // history; that is an empty page, not a server error.
155
155
  expect(await listHandler({})).toEqual({ invoices: [], has_more: false });
156
156
  expect(fetchCalls).toHaveLength(1);
@@ -241,7 +241,7 @@ describe("platform_invoices_by_id_get", () => {
241
241
  test("rejects with NotFoundError, not InternalError, on an upstream 404", async () => {
242
242
  stubFetch(() => new Response("Not found", { status: 404 }));
243
243
 
244
- // A 404 from the platform means no invoice history: the walk sees an
244
+ // A 404 from the cloud means no invoice history: the walk sees an
245
245
  // empty first page and reports the invoice as not found.
246
246
  const err = await expectRejection(() =>
247
247
  getHandler({ pathParams: { id: "in_missing" } }),
@@ -99,7 +99,7 @@ describe("CLI vs HTTP route parity", () => {
99
99
 
100
100
  test("platform connection: CLI createConnection and HTTP POST produce identical DB rows", async () => {
101
101
  const payload = {
102
- name: "parity-cadet-managed",
102
+ name: "parity-cadet-cloud",
103
103
  provider: "cadet" as const,
104
104
  auth: { type: "platform" as const },
105
105
  };
@@ -874,7 +874,7 @@ describe("PUT /v1/config/llm/profiles/:name", () => {
874
874
  expect(initializeProvidersCalls).toBe(0);
875
875
  });
876
876
 
877
- test("rejects a custom pointer at a managed backup name", async () => {
877
+ test("rejects a custom pointer at a cloud backup name", async () => {
878
878
  await expect(
879
879
  replaceProfileRoute.handler({
880
880
  pathParams: { name: "custom" },
@@ -987,7 +987,7 @@ describe("PUT /v1/config/llm/profiles/:name", () => {
987
987
  // across tests in this file, so a leaked openai-personal would otherwise
988
988
  // win the derivation.
989
989
  getDb().delete(providerConnections).run();
990
- // The single Cadet-managed connection serves managed-routable providers.
990
+ // The single Cadet Cloud connection serves managed-routable providers.
991
991
  createConnection(getDb(), {
992
992
  name: "cadet",
993
993
  provider: "cadet",
@@ -1021,7 +1021,7 @@ describe("PUT /v1/config/llm/profiles/:name", () => {
1021
1021
  ).profiles.custom;
1022
1022
 
1023
1023
  // No personal openai connection exists, so the route auto-derives the
1024
- // single Cadet-managed connection for this managed-routable provider.
1024
+ // single Cadet Cloud connection for this managed-routable provider.
1025
1025
  expect(savedProfile.provider_connection).toBe("cadet");
1026
1026
  });
1027
1027
 
@@ -1136,10 +1136,10 @@ describe("PUT /v1/config/llm/profiles/:name", () => {
1136
1136
  expect(conn!.provider).toBe("minimax");
1137
1137
  });
1138
1138
 
1139
- describe("managed profile guard", () => {
1139
+ describe("cloud profile guard", () => {
1140
1140
  beforeEach(() => {
1141
1141
  // Seed two managed-source profiles alongside the existing custom one.
1142
- // Every managed profile name (including the flag-gated os-beta) is
1142
+ // Every cloud profile name (including the flag-gated os-beta) is
1143
1143
  // invariant while its entry is managed-source: fully read-only except
1144
1144
  // the disabled → active status transition.
1145
1145
  const profiles = (
@@ -1168,9 +1168,7 @@ describe("PUT /v1/config/llm/profiles/:name", () => {
1168
1168
  pathParams: { name: "os-beta" },
1169
1169
  body: { label: "My OS Beta" },
1170
1170
  }),
1171
- ).rejects.toThrow(
1172
- /Cannot edit managed profile "os-beta" fields \[label\]/,
1173
- );
1171
+ ).rejects.toThrow(/Cannot edit cloud profile "os-beta" fields \[label\]/);
1174
1172
  // Guard rejects before any write — the seed label is untouched.
1175
1173
  expect(persistedProfile("os-beta").label).toBe("OS Beta");
1176
1174
  });
@@ -1182,7 +1180,7 @@ describe("PUT /v1/config/llm/profiles/:name", () => {
1182
1180
  body: { status: "disabled" },
1183
1181
  }),
1184
1182
  ).rejects.toThrow(
1185
- 'Cannot edit managed profile "os-beta". Managed profiles are read-only',
1183
+ 'Cannot edit cloud profile "os-beta". Cloud profiles are read-only',
1186
1184
  );
1187
1185
  // Guard rejects before any write — the seed status is untouched.
1188
1186
  expect(persistedProfile("os-beta").status).toBe("active");
@@ -1215,10 +1213,10 @@ describe("PUT /v1/config/llm/profiles/:name", () => {
1215
1213
  expect(savedProfile.source).toBe("managed");
1216
1214
  });
1217
1215
 
1218
- // The full commit-time rejection matrix for invariant managed profiles
1219
- // lives in src/__tests__/managed-profile-guard.test.ts.
1216
+ // The full commit-time rejection matrix for invariant cloud profiles
1217
+ // lives in src/__tests__/cloud-profile-guard.test.ts.
1220
1218
 
1221
- test("rejects provider edit on managed profile with disallowed-keys error", async () => {
1219
+ test("rejects provider edit on cloud profile with disallowed-keys error", async () => {
1222
1220
  // The handler is `async`, so synchronous BadRequest throws still
1223
1221
  // surface as a rejected promise; assert via `.rejects.toThrow`.
1224
1222
  await expect(
@@ -1227,12 +1225,12 @@ describe("PUT /v1/config/llm/profiles/:name", () => {
1227
1225
  body: { provider: "openai", model: "gpt-5" },
1228
1226
  }),
1229
1227
  ).rejects.toThrow(
1230
- /Cannot edit managed profile "balanced" fields \[provider, model\]/,
1228
+ /Cannot edit cloud profile "balanced" fields \[provider, model\]/,
1231
1229
  );
1232
1230
  });
1233
1231
 
1234
1232
  test("rejects mixed-field bodies without partially applying anything", async () => {
1235
- // Neither label nor maxTokens is writable on a managed profile — the
1233
+ // Neither label nor maxTokens is writable on a cloud profile — the
1236
1234
  // reject must fire before any write, so the saver is never invoked.
1237
1235
  await expect(
1238
1236
  replaceProfileRoute.handler({
@@ -1240,7 +1238,7 @@ describe("PUT /v1/config/llm/profiles/:name", () => {
1240
1238
  body: { label: "Try", maxTokens: 999 },
1241
1239
  }),
1242
1240
  ).rejects.toThrow(
1243
- /Cannot edit managed profile "balanced" fields \[maxTokens, label\]/,
1241
+ /Cannot edit cloud profile "balanced" fields \[maxTokens, label\]/,
1244
1242
  );
1245
1243
  // Reject path skips commitConfigWrite entirely — no provider reinit
1246
1244
  // or cache invalidation should fire on a guard rejection.
@@ -1323,7 +1321,7 @@ describe("PATCH /v1/config fallbackProfile write protection", () => {
1323
1321
  expect(initializeProvidersCalls).toBe(0);
1324
1322
  });
1325
1323
 
1326
- test("rejects a custom pointer at a managed backup name", async () => {
1324
+ test("rejects a custom pointer at a cloud backup name", async () => {
1327
1325
  await expect(
1328
1326
  patchRoute.handler({
1329
1327
  body: {
@@ -1474,7 +1472,7 @@ describe("custom profile write normalization (complete overrides)", () => {
1474
1472
  expect(saved.maxTokens).toBe(12345);
1475
1473
  });
1476
1474
 
1477
- test("a managed status re-enable stays a thin stub", async () => {
1475
+ test("a cloud status re-enable stays a thin stub", async () => {
1478
1476
  (
1479
1477
  rawConfigFixture.llm as { profiles: Record<string, unknown> }
1480
1478
  ).profiles.balanced = { source: "managed", status: "disabled" };
@@ -1754,7 +1752,7 @@ describe("config invariant flag enrichment", () => {
1754
1752
  label: "OS Beta",
1755
1753
  status: "active",
1756
1754
  },
1757
- // A user-owned profile sharing a managed name: no invariant flag —
1755
+ // A user-owned profile sharing a cloud name: no invariant flag —
1758
1756
  // the stamp is gated on `source: "managed"` to match the guard.
1759
1757
  "cost-optimized": {
1760
1758
  source: "user",
@@ -2208,16 +2206,19 @@ describe("persisted chat settings", () => {
2208
2206
  });
2209
2207
  });
2210
2208
 
2211
- test("sparse GET exposes effective defaults without materializing unrelated fields", async () => {
2209
+ test("sparse GET returns the fully materialized typed config with effective chat settings", async () => {
2212
2210
  rawConfigFixture = {};
2213
2211
  seedRawConfig();
2214
2212
  invalidateConfigCache();
2215
2213
  const result = await getRoute.handler({});
2216
2214
  expect(result).toMatchObject({
2217
- conversations: { autoArchive: { enabled: false, afterDays: 7 } },
2215
+ conversations: {
2216
+ autoArchive: { enabled: false, afterDays: 7 },
2217
+ skipAutoRetitling: false,
2218
+ },
2218
2219
  notifications: { newMessageEnabled: true },
2219
2220
  });
2220
- expect(result).not.toHaveProperty("conversations.skipAutoRetitling");
2221
+ // Materialization is wire-only: nothing is written back to disk.
2221
2222
  expect(loadRawConfig()).not.toHaveProperty("conversations");
2222
2223
  expect(loadRawConfig()).not.toHaveProperty("notifications");
2223
2224
  });
@@ -2237,9 +2238,9 @@ describe("persisted chat settings", () => {
2237
2238
  expect(result).toMatchObject({
2238
2239
  conversations: {
2239
2240
  skipAutoRetitling: true,
2240
- autoArchive: { enabled: true, afterDays: 30, futureOption: "keep" },
2241
+ autoArchive: { enabled: true, afterDays: 30 },
2241
2242
  },
2242
- notifications: { newMessageEnabled: false, futureOption: "keep" },
2243
+ notifications: { newMessageEnabled: false },
2243
2244
  maxStepsPerSession: 75,
2244
2245
  });
2245
2246
  expect(loadRawConfig()).toEqual({
@@ -2280,9 +2281,9 @@ describe("persisted chat settings", () => {
2280
2281
  expect(result).toMatchObject({
2281
2282
  conversations: {
2282
2283
  skipAutoRetitling: true,
2283
- autoArchive: { enabled: false, afterDays: 7, futureOption: "keep" },
2284
+ autoArchive: { enabled: false, afterDays: 7 },
2284
2285
  },
2285
- notifications: { newMessageEnabled: true, futureOption: "keep" },
2286
+ notifications: { newMessageEnabled: true },
2286
2287
  });
2287
2288
  expect(loadRawConfig()).toMatchObject({
2288
2289
  conversations: { autoArchive: { futureOption: "keep" } },