@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,7 +2,7 @@
2
2
  * Tests for `getSkillFiles` provider chain fallback.
3
3
  *
4
4
  * When a skill id isn't resolvable via `findSkillById` (i.e. not installed
5
- * locally, not bundled, not a managed skill), `getSkillFiles` falls back to
5
+ * locally, not bundled, not a cloud skill), `getSkillFiles` falls back to
6
6
  * the provider chain (cadet catalog → skills.sh → clawhub). Each provider
7
7
  * is tried in order until one returns data. When a skill IS resolved by
8
8
  * `findSkillById` but its on-disk directory is missing, `getSkillFiles`
@@ -26,6 +26,7 @@ import { tmpdir } from "node:os";
26
26
  import { join } from "node:path";
27
27
  import { afterEach, beforeEach, describe, expect, mock, test } from "bun:test";
28
28
 
29
+ import { setAllFlagsOnForTesting } from "../__tests__/feature-flag-test-helpers.js";
29
30
  import type { SkillSummary } from "../config/skills.js";
30
31
  import type { SlimSkillResponse } from "../daemon/message-types/skills.js";
31
32
  import type { SkillFileEntry } from "../skills/catalog-files.js";
@@ -94,10 +95,6 @@ mock.module("../config/skill-state.js", () => ({
94
95
  skillFlagKey: () => null,
95
96
  }));
96
97
 
97
- mock.module("../config/assistant-feature-flags.js", () => ({
98
- isAssistantFeatureFlagEnabled: () => true,
99
- }));
100
-
101
98
  mock.module("../skills/install-meta.js", () => ({
102
99
  readInstallMeta: () => null,
103
100
  }));
@@ -170,10 +167,10 @@ mock.module("../skills/skillssh-registry.js", () => ({
170
167
  searchSkillsRegistry: async () => [],
171
168
  }));
172
169
 
173
- mock.module("../skills/managed-store.js", () => ({
174
- createManagedSkill: () => ({ created: true }),
175
- deleteManagedSkill: () => ({ deleted: true }),
176
- validateManagedSkillId: () => null,
170
+ mock.module("../skills/cloud-store.js", () => ({
171
+ createCloudSkill: () => ({ created: true }),
172
+ deleteCloudSkill: () => ({ deleted: true }),
173
+ validateCloudSkillId: () => null,
177
174
  }));
178
175
 
179
176
  mock.module("../plugins/defaults/memory/graph/capability-seed.js", () => ({
@@ -247,6 +244,9 @@ function makeSummary(overrides: Partial<SkillSummary>): SkillSummary {
247
244
 
248
245
  describe("getSkillFiles — provider chain fallback", () => {
249
246
  beforeEach(() => {
247
+ // Real flag resolution replaces the former blanket module mock.
248
+ setAllFlagsOnForTesting();
249
+
250
250
  mockResolvedStates = [];
251
251
  providerCalls.length = 0;
252
252
  mockCadetProvider = makeNoopProvider("cadet");
@@ -1077,7 +1077,7 @@ describe("ingress-dependent setup skills declare public-ingress intentionally",
1077
1077
  "utf-8",
1078
1078
  );
1079
1079
  expect(content).toContain("avoid-when:");
1080
- expect(content.toLowerCase()).toContain("platform-managed");
1080
+ expect(content.toLowerCase()).toContain("cloud-managed");
1081
1081
  });
1082
1082
  });
1083
1083
 
@@ -3,8 +3,9 @@
3
3
  * catalog entry > SKILL.md frontmatter > "system" fallback.
4
4
  */
5
5
  import { join } from "node:path";
6
- import { describe, expect, mock, test } from "bun:test";
6
+ import { beforeEach, describe, expect, mock, test } from "bun:test";
7
7
 
8
+ import { setAllFlagsOnForTesting } from "../__tests__/feature-flag-test-helpers.js";
8
9
  import type { SkillSummary } from "../config/skills.js";
9
10
  import type { CatalogSkill } from "../skills/catalog-install.js";
10
11
  import type { SkillInstallMeta } from "../skills/install-meta.js";
@@ -27,10 +28,6 @@ mock.module("../config/skill-state.js", () => ({
27
28
  skillFlagKey: () => null,
28
29
  }));
29
30
 
30
- mock.module("../config/assistant-feature-flags.js", () => ({
31
- isAssistantFeatureFlagEnabled: () => true,
32
- }));
33
-
34
31
  mock.module("../skills/install-meta.js", () => ({
35
32
  readInstallMeta: () => mockInstallMeta,
36
33
  }));
@@ -81,10 +78,10 @@ mock.module("../skills/skillssh-registry.js", () => ({
81
78
  searchSkillsRegistry: async () => [],
82
79
  }));
83
80
 
84
- mock.module("../skills/managed-store.js", () => ({
85
- createManagedSkill: () => ({ created: true }),
86
- deleteManagedSkill: () => ({ deleted: true }),
87
- validateManagedSkillId: () => null,
81
+ mock.module("../skills/cloud-store.js", () => ({
82
+ createCloudSkill: () => ({ created: true }),
83
+ deleteCloudSkill: () => ({ deleted: true }),
84
+ validateCloudSkillId: () => null,
88
85
  }));
89
86
 
90
87
  mock.module("../plugins/defaults/memory/graph/capability-seed.js", () => ({
@@ -120,6 +117,11 @@ mock.module("../daemon/handlers/shared.js", () => ({
120
117
 
121
118
  import { listSkills } from "../daemon/handlers/skills.js";
122
119
 
120
+ beforeEach(() => {
121
+ // Real flag resolution replaces the former blanket module mock.
122
+ setAllFlagsOnForTesting();
123
+ });
124
+
123
125
  // ---------------------------------------------------------------------------
124
126
  // Helpers
125
127
  // ---------------------------------------------------------------------------
@@ -141,7 +141,7 @@ class FailingTranscriber implements StreamingTranscriber {
141
141
 
142
142
  /**
143
143
  * Mock managed transcriber whose start() throws a userFacing SttError,
144
- * mirroring the managed relay's mapped dial rejection.
144
+ * mirroring the cloud relay's mapped dial rejection.
145
145
  */
146
146
  class ManagedFailingTranscriber implements StreamingTranscriber {
147
147
  readonly providerId = "cadet" as const;
@@ -359,7 +359,7 @@ describe("SttStreamSession", () => {
359
359
  test("managed start failure surfaces its remediation verbatim", async () => {
360
360
  const { ws, session } = createSession("cadet");
361
361
  const managedMessage =
362
- "Managed speech needs a working Cadet Cloud connection — reconnect with 'assistant cloud connect'.";
362
+ "Cloud speech needs a working Cadet Cloud connection — reconnect with 'assistant cloud connect'.";
363
363
 
364
364
  await session.start(
365
365
  async () => new ManagedFailingTranscriber(managedMessage),
@@ -368,7 +368,7 @@ describe("SttStreamSession", () => {
368
368
  const frames = ws.frames;
369
369
  expect(frames[0].type).toBe("error");
370
370
  expect(frames[0].category).toBe("auth");
371
- // The managed remediation passes through; the BYOK "check your API key"
371
+ // The cloud remediation passes through; the BYOK "check your API key"
372
372
  // rewrite must not clobber it for a connection-backed provider.
373
373
  expect(frames[0].message).toBe(managedMessage);
374
374
  expect(frames[0].message as string).not.toContain("API key");
@@ -121,7 +121,7 @@ mock.module("../prompts/system-prompt.js", () => ({
121
121
  // `provider_connection` exclusively. `getProvider` throws while this file's
122
122
  // tests run (the production code under test must not call it), and delegates
123
123
  // to the real registry afterwards: `mock.module` patches persist for the rest
124
- // of the `bun test` process, and later test files (e.g. the platform-proxy
124
+ // of the `bun test` process, and later test files (e.g. the cloud-proxy
125
125
  // integration suite) call the real `getProvider`. The real function is
126
126
  // snapshotted before `mock.module` rebinds the import.
127
127
  const anthropicStub = { name: "anthropic" };
@@ -15,8 +15,8 @@ import {
15
15
  import { SubagentManager } from "../subagent/manager.js";
16
16
  import type { SubagentState } from "../subagent/types.js";
17
17
 
18
- /** Minimal shape matching the private ManagedSubagent interface for test injection. */
19
- interface FakeManagedSubagent {
18
+ /** Minimal shape matching the private CloudSubagent interface for test injection. */
19
+ interface FakeCloudSubagent {
20
20
  conversation: {
21
21
  abort: () => void;
22
22
  dispose: () => void;
@@ -48,7 +48,7 @@ interface FakeManagedSubagent {
48
48
 
49
49
  /** Type-safe accessor for SubagentManager's private internals via bracket notation. */
50
50
  interface ManagerInternals {
51
- subagents: Map<string, FakeManagedSubagent>;
51
+ subagents: Map<string, FakeCloudSubagent>;
52
52
  parentToChildren: Map<string, Set<string>>;
53
53
  labelIndex: Map<string, string>;
54
54
  runSubagent: (subagentId: string, objective: string) => Promise<void>;
@@ -61,7 +61,7 @@ function asInternals(manager: SubagentManager): ManagerInternals {
61
61
  }
62
62
 
63
63
  function makeFakeConversation(): NonNullable<
64
- FakeManagedSubagent["conversation"]
64
+ FakeCloudSubagent["conversation"]
65
65
  > {
66
66
  return {
67
67
  abort: () => {},
@@ -83,7 +83,7 @@ function injectFakeSubagent(
83
83
  subagentId: string,
84
84
  state: SubagentState,
85
85
  parentSendToClient?: (msg: AssistantEvent) => void,
86
- conversation?: FakeManagedSubagent["conversation"],
86
+ conversation?: FakeCloudSubagent["conversation"],
87
87
  ): void {
88
88
  const internals = asInternals(manager);
89
89
 
@@ -33,8 +33,8 @@ import { setBroadcastOverrideForTesting } from "../runtime/assistant-event-hub.j
33
33
  import { SubagentManager } from "../subagent/manager.js";
34
34
  import type { SubagentState } from "../subagent/types.js";
35
35
 
36
- /** Minimal shape matching the private ManagedSubagent interface for test injection. */
37
- interface FakeManagedSubagent {
36
+ /** Minimal shape matching the private CloudSubagent interface for test injection. */
37
+ interface FakeCloudSubagent {
38
38
  conversation: {
39
39
  abort: () => void;
40
40
  dispose: () => void;
@@ -64,7 +64,7 @@ interface FakeManagedSubagent {
64
64
 
65
65
  /** Type-safe accessor for SubagentManager's private internals via bracket notation. */
66
66
  interface ManagerInternals {
67
- subagents: Map<string, FakeManagedSubagent>;
67
+ subagents: Map<string, FakeCloudSubagent>;
68
68
  parentToChildren: Map<string, Set<string>>;
69
69
  runSubagent: (subagentId: string, objective: string) => Promise<void>;
70
70
  stopSweep: () => void;
@@ -80,7 +80,7 @@ function injectFakeSubagent(
80
80
  state: SubagentState,
81
81
  parentSendToClient?: (msg: AssistantEvent) => void,
82
82
  ): void {
83
- const fakeSession: FakeManagedSubagent["conversation"] = {
83
+ const fakeSession: FakeCloudSubagent["conversation"] = {
84
84
  abort: () => {},
85
85
  dispose: () => {},
86
86
  messages: [],
@@ -10,8 +10,8 @@ import type { Message } from "../providers/types.js";
10
10
  import { SubagentManager } from "../subagent/manager.js";
11
11
  import type { SubagentConfig, SubagentState } from "../subagent/types.js";
12
12
 
13
- /** Minimal shape matching the private ManagedSubagent interface for test injection. */
14
- interface FakeManagedSubagent {
13
+ /** Minimal shape matching the private CloudSubagent interface for test injection. */
14
+ interface FakeCloudSubagent {
15
15
  conversation: {
16
16
  abort: () => void;
17
17
  dispose: () => void;
@@ -43,7 +43,7 @@ interface FakeManagedSubagent {
43
43
 
44
44
  /** Type-safe accessor for SubagentManager's private internals via bracket notation. */
45
45
  interface ManagerInternals {
46
- subagents: Map<string, FakeManagedSubagent>;
46
+ subagents: Map<string, FakeCloudSubagent>;
47
47
  parentToChildren: Map<string, Set<string>>;
48
48
  runSubagent: (subagentId: string, objective: string) => Promise<void>;
49
49
  sweepTerminal: () => void;
@@ -55,7 +55,7 @@ function asInternals(manager: SubagentManager): ManagerInternals {
55
55
  }
56
56
 
57
57
  function makeFakeConversation(): NonNullable<
58
- FakeManagedSubagent["conversation"]
58
+ FakeCloudSubagent["conversation"]
59
59
  > {
60
60
  return {
61
61
  abort: () => {},
@@ -77,7 +77,7 @@ function injectFakeSubagent(
77
77
  subagentId: string,
78
78
  state: SubagentState,
79
79
  parentSendToClient?: (msg: AssistantEvent) => void,
80
- conversation?: FakeManagedSubagent["conversation"],
80
+ conversation?: FakeCloudSubagent["conversation"],
81
81
  ): void {
82
82
  const internals = asInternals(manager);
83
83
 
@@ -38,8 +38,8 @@ import { setBroadcastOverrideForTesting } from "../runtime/assistant-event-hub.j
38
38
  import { SubagentManager } from "../subagent/manager.js";
39
39
  import type { SubagentState } from "../subagent/types.js";
40
40
 
41
- /** Minimal shape matching the private ManagedSubagent interface for test injection. */
42
- interface FakeManagedSubagent {
41
+ /** Minimal shape matching the private CloudSubagent interface for test injection. */
42
+ interface FakeCloudSubagent {
43
43
  runInFlight?: boolean;
44
44
  conversation: {
45
45
  abort: () => void;
@@ -73,10 +73,10 @@ interface FakeManagedSubagent {
73
73
 
74
74
  /** Type-safe accessor for SubagentManager's private internals via bracket notation. */
75
75
  interface ManagerInternals {
76
- subagents: Map<string, FakeManagedSubagent>;
76
+ subagents: Map<string, FakeCloudSubagent>;
77
77
  parentToChildren: Map<string, Set<string>>;
78
78
  runSubagent: (subagentId: string, objective: string) => Promise<void>;
79
- releaseConversation: (managed: FakeManagedSubagent) => void;
79
+ releaseConversation: (managed: FakeCloudSubagent) => void;
80
80
  stopSweep: () => void;
81
81
  }
82
82
 
@@ -94,7 +94,7 @@ function injectFakeSubagent(
94
94
  state: SubagentState,
95
95
  parentSendToClient?: (msg: AssistantEvent) => void,
96
96
  ): void {
97
- const fakeSession: FakeManagedSubagent["conversation"] = {
97
+ const fakeSession: FakeCloudSubagent["conversation"] = {
98
98
  abort: () => {},
99
99
  dispose: () => {},
100
100
  messages: [],
@@ -1290,7 +1290,7 @@ describe("createResolveToolsCallback: wire tool surface record and replay", () =
1290
1290
  });
1291
1291
 
1292
1292
  test("replays wireToolReplay verbatim on the wire while execution still derives from the fork's own context", () => {
1293
- projectedSkillToolNames = ["scaffold_managed_skill"];
1293
+ projectedSkillToolNames = ["scaffold_cloud_skill"];
1294
1294
  const replay: ToolDefinition[] = [
1295
1295
  makeToolDef("bash"),
1296
1296
  makeToolDef("remember"),
@@ -1320,7 +1320,7 @@ describe("createResolveToolsCallback: wire tool surface record and replay", () =
1320
1320
  // Execution-side inventory is still the fork's own derivation (plus the
1321
1321
  // preactivated skill tools), never widened by the replayed definitions.
1322
1322
  expect(ctx.allowedToolNames).toEqual(
1323
- new Set(["remember", "bash", "scaffold_managed_skill"]),
1323
+ new Set(["remember", "bash", "scaffold_cloud_skill"]),
1324
1324
  );
1325
1325
  });
1326
1326
 
@@ -62,7 +62,7 @@ mock.module("../oauth/oauth-store.js", () => ({
62
62
  listConnections: () => mockOauthConnections,
63
63
  }));
64
64
 
65
- mock.module("../credential-execution/managed-catalog.js", () => ({
65
+ mock.module("../credential-execution/cloud-catalog.js", () => ({
66
66
  getCachedManagedConnections: () => mockManagedConnections,
67
67
  }));
68
68
 
@@ -4,7 +4,8 @@
4
4
  * This function fills the bot-username gap when the token was configured
5
5
  * without a `getMe` call (e.g. via `credential set` or ingress secret
6
6
  * redirect). Each branch is exercised in isolation by controlling the
7
- * mutable mock variables below.
7
+ * bot-username mock and registering the fetch responses each test assumes
8
+ * (requests-mock).
8
9
  */
9
10
  import { beforeEach, describe, expect, mock, test } from "bun:test";
10
11
 
@@ -12,6 +13,7 @@ import { loadRawConfig } from "../config/loader.js";
12
13
  import { credentialKey } from "../security/credential-key.js";
13
14
  import { useMemorySecureKeyMap } from "./helpers/secure-keys.js";
14
15
  import { setConfig } from "./helpers/set-config.js";
16
+ import { type HttpMockController, mockHttp } from "./requests-mock.js";
15
17
 
16
18
  // The REAL secure-keys module pinned to a live memory backend, seeded under
17
19
  // the credential key the telegram transport reads.
@@ -41,16 +43,11 @@ function readResolvedBotUsername(): unknown {
41
43
  }
42
44
 
43
45
  // ---------------------------------------------------------------------------
44
- // Global fetch mock — swapped per test
46
+ // HTTP mock — per-test requests-mock registrations; the preload's afterEach
47
+ // restores the real fetch after every test
45
48
  // ---------------------------------------------------------------------------
46
49
 
47
- let mockFetchResponse: {
48
- ok: boolean;
49
- status: number;
50
- json: () => Promise<unknown>;
51
- };
52
- let mockFetchThrows: Error | undefined;
53
- let fetchCallCount = 0;
50
+ let http: HttpMockController;
54
51
 
55
52
  beforeEach(() => {
56
53
  mockBotUsername = undefined;
@@ -58,21 +55,11 @@ beforeEach(() => {
58
55
  // Clear any username a prior test persisted; all tests share one workspace
59
56
  // config.json, and the file is the write target under test.
60
57
  setConfig("telegram", {});
61
- mockFetchThrows = undefined;
62
- mockFetchResponse = {
63
- ok: true,
58
+ http = mockHttp();
59
+ http.on("GET", "api.telegram.org", {
64
60
  status: 200,
65
- json: async () => ({ ok: true, result: { username: "ResolvedBot" } }),
66
- };
67
- fetchCallCount = 0;
68
-
69
- globalThis.fetch = (async (..._args: unknown[]) => {
70
- fetchCallCount++;
71
- if (mockFetchThrows) {
72
- throw mockFetchThrows;
73
- }
74
- return mockFetchResponse;
75
- }) as typeof globalThis.fetch;
61
+ body: { ok: true, result: { username: "ResolvedBot" } },
62
+ });
76
63
  });
77
64
 
78
65
  // ---------------------------------------------------------------------------
@@ -93,63 +80,60 @@ describe("ensureTelegramBotUsernameResolved", () => {
93
80
 
94
81
  await ensureTelegramBotUsernameResolved();
95
82
 
96
- expect(fetchCallCount).toBe(0);
83
+ expect(http.callCount()).toBe(0);
97
84
  expect(readResolvedBotUsername()).toBeUndefined();
98
85
  });
99
86
 
100
87
  test("(b) fetches getMe and writes username to config on success", async () => {
101
88
  mockBotUsername = undefined;
102
89
  secureKeys.set(TELEGRAM_BOT_TOKEN, "bot-token-123");
103
- mockFetchResponse = {
104
- ok: true,
90
+ http.on("GET", "api.telegram.org", {
105
91
  status: 200,
106
- json: async () => ({ ok: true, result: { username: "MyNewBot" } }),
107
- };
92
+ body: { ok: true, result: { username: "MyNewBot" } },
93
+ });
108
94
 
109
95
  await ensureTelegramBotUsernameResolved();
110
96
 
111
- expect(fetchCallCount).toBe(1);
97
+ expect(http.callCount()).toBe(1);
112
98
  expect(readResolvedBotUsername()).toBe("MyNewBot");
113
99
  });
114
100
 
115
101
  test("(c) handles non-200 response gracefully without writing to config", async () => {
116
102
  mockBotUsername = undefined;
117
103
  secureKeys.set(TELEGRAM_BOT_TOKEN, "bot-token-123");
118
- mockFetchResponse = {
119
- ok: false,
104
+ http.on("GET", "api.telegram.org", {
120
105
  status: 401,
121
- json: async () => ({ ok: false, description: "Unauthorized" }),
122
- };
106
+ body: { ok: false, description: "Unauthorized" },
107
+ });
123
108
 
124
109
  await ensureTelegramBotUsernameResolved();
125
110
 
126
- expect(fetchCallCount).toBe(1);
111
+ expect(http.callCount()).toBe(1);
127
112
  expect(readResolvedBotUsername()).toBeUndefined();
128
113
  });
129
114
 
130
115
  test("(d) handles missing username in response gracefully", async () => {
131
116
  mockBotUsername = undefined;
132
117
  secureKeys.set(TELEGRAM_BOT_TOKEN, "bot-token-123");
133
- mockFetchResponse = {
134
- ok: true,
118
+ http.on("GET", "api.telegram.org", {
135
119
  status: 200,
136
- json: async () => ({ ok: true, result: {} }),
137
- };
120
+ body: { ok: true, result: {} },
121
+ });
138
122
 
139
123
  await ensureTelegramBotUsernameResolved();
140
124
 
141
- expect(fetchCallCount).toBe(1);
125
+ expect(http.callCount()).toBe(1);
142
126
  expect(readResolvedBotUsername()).toBeUndefined();
143
127
  });
144
128
 
145
129
  test("(e) handles network errors (fetch throws) gracefully", async () => {
146
130
  mockBotUsername = undefined;
147
131
  secureKeys.set(TELEGRAM_BOT_TOKEN, "bot-token-123");
148
- mockFetchThrows = new Error("ECONNREFUSED");
132
+ http.on("GET", "api.telegram.org", new Error("ECONNREFUSED"));
149
133
 
150
134
  await ensureTelegramBotUsernameResolved();
151
135
 
152
- expect(fetchCallCount).toBe(1);
136
+ expect(http.callCount()).toBe(1);
153
137
  expect(readResolvedBotUsername()).toBeUndefined();
154
138
  });
155
139
 
@@ -159,37 +143,35 @@ describe("ensureTelegramBotUsernameResolved", () => {
159
143
 
160
144
  await ensureTelegramBotUsernameResolved();
161
145
 
162
- expect(fetchCallCount).toBe(0);
146
+ expect(http.callCount()).toBe(0);
163
147
  expect(readResolvedBotUsername()).toBeUndefined();
164
148
  });
165
149
 
166
150
  test("writes to config when bot username not in config", async () => {
167
151
  mockBotUsername = undefined;
168
152
  secureKeys.set(TELEGRAM_BOT_TOKEN, "bot-token-123");
169
- mockFetchResponse = {
170
- ok: true,
153
+ http.on("GET", "api.telegram.org", {
171
154
  status: 200,
172
- json: async () => ({ ok: true, result: { username: "FreshBot" } }),
173
- };
155
+ body: { ok: true, result: { username: "FreshBot" } },
156
+ });
174
157
 
175
158
  await ensureTelegramBotUsernameResolved();
176
159
 
177
- expect(fetchCallCount).toBe(1);
160
+ expect(http.callCount()).toBe(1);
178
161
  expect(readResolvedBotUsername()).toBe("FreshBot");
179
162
  });
180
163
 
181
164
  test("writes to config when bot username resolved from API", async () => {
182
165
  mockBotUsername = undefined;
183
166
  secureKeys.set(TELEGRAM_BOT_TOKEN, "bot-token-456");
184
- mockFetchResponse = {
185
- ok: true,
167
+ http.on("GET", "api.telegram.org", {
186
168
  status: 200,
187
- json: async () => ({ ok: true, result: { username: "AnotherBot" } }),
188
- };
169
+ body: { ok: true, result: { username: "AnotherBot" } },
170
+ });
189
171
 
190
172
  await ensureTelegramBotUsernameResolved();
191
173
 
192
- expect(fetchCallCount).toBe(1);
174
+ expect(http.callCount()).toBe(1);
193
175
  expect(readResolvedBotUsername()).toBe("AnotherBot");
194
176
  });
195
177
  });
@@ -18,7 +18,7 @@ let oauthConnectionStore: Record<
18
18
  { id: string; status: string; accountInfo?: string | null }
19
19
  > = {};
20
20
  const syncCalls: Array<{ provider: string; accountInfo?: string }> = [];
21
- let platformContextEnabled = false;
21
+ let cloudContextEnabled = false;
22
22
 
23
23
  const registerCallbackRouteMock = mock(
24
24
  async (callbackPath: string, _type: string) =>
@@ -28,17 +28,17 @@ const registerCallbackRouteMock = mock(
28
28
  // Spread the real module: it is a shared barrel and replacing it wholesale
29
29
  // breaks unrelated importers pulled in by the module under test.
30
30
  const actualPlatformCallbackRegistration =
31
- await import("../inbound/platform-callback-registration.js");
32
- mock.module("../inbound/platform-callback-registration.js", () => ({
31
+ await import("../inbound/cloud-callback-registration.js");
32
+ mock.module("../inbound/cloud-callback-registration.js", () => ({
33
33
  ...actualPlatformCallbackRegistration,
34
34
  registerCallbackRoute: registerCallbackRouteMock,
35
- resolvePlatformCallbackRegistrationContext: async () => ({
35
+ resolveCloudCallbackRegistrationContext: async () => ({
36
36
  isPlatform: false,
37
- platformBaseUrl: platformContextEnabled ? "https://cloud.mycadet.ai" : "",
38
- assistantId: platformContextEnabled ? "assistant-123" : "",
39
- hasAssistantApiKey: platformContextEnabled,
40
- authHeader: platformContextEnabled ? "Api-Key secret" : null,
41
- enabled: platformContextEnabled,
37
+ cloudBaseUrl: "",
38
+ assistantId: cloudContextEnabled ? "assistant-123" : "",
39
+ hasAssistantApiKey: cloudContextEnabled,
40
+ authHeader: cloudContextEnabled ? "Api-Key secret" : null,
41
+ enabled: cloudContextEnabled,
42
42
  }),
43
43
  }));
44
44
 
@@ -120,7 +120,7 @@ describe("Telegram config handler", () => {
120
120
  reseedMemorySecureKeys(secureKeyStore);
121
121
  oauthConnectionStore = {};
122
122
  syncCalls.length = 0;
123
- platformContextEnabled = false;
123
+ cloudContextEnabled = false;
124
124
  registerCallbackRouteMock.mockClear();
125
125
  setIngressPublicBaseUrl("");
126
126
  globalThis.fetch = originalFetch;
@@ -145,12 +145,12 @@ describe("Telegram config handler", () => {
145
145
  expect(oauthConnectionStore["telegram"]?.accountInfo).toBe("@testbot");
146
146
  });
147
147
 
148
- // A platform-connected local assistant (IS_PLATFORM unset, valid platform
148
+ // A platform-connected local assistant (IS_CLOUD unset, valid platform
149
149
  // credentials, no public ingress) receives Telegram webhooks only through
150
150
  // managed platform callbacks, so saving the bot token must register the
151
151
  // route.
152
- test("set registers the platform callback route for a platform-connected local assistant", async () => {
153
- platformContextEnabled = true;
152
+ test("set registers the cloud callback route for a cloud-connected local assistant", async () => {
153
+ cloudContextEnabled = true;
154
154
  globalThis.fetch = mockTelegramApi();
155
155
 
156
156
  const result = await setTelegramConfig(
@@ -164,7 +164,7 @@ describe("Telegram config handler", () => {
164
164
  );
165
165
  });
166
166
 
167
- test("set does not register a platform callback route when not platform-connected", async () => {
167
+ test("set does not register a cloud callback route when not platform-connected", async () => {
168
168
  globalThis.fetch = mockTelegramApi();
169
169
 
170
170
  const result = await setTelegramConfig(
@@ -177,8 +177,8 @@ describe("Telegram config handler", () => {
177
177
 
178
178
  // A logged-in local assistant holds cloud credentials for the LLM proxy,
179
179
  // so credential presence must not override an explicitly configured ingress.
180
- test("set does not register a platform callback route when a public ingress is configured", async () => {
181
- platformContextEnabled = true;
180
+ test("set does not register a cloud callback route when a public ingress is configured", async () => {
181
+ cloudContextEnabled = true;
182
182
  setIngressPublicBaseUrl("https://abc.ngrok.io");
183
183
  globalThis.fetch = mockTelegramApi();
184
184
 
@@ -192,10 +192,10 @@ mock.module("../calls/audio-store.js", () => ({
192
192
  },
193
193
  }));
194
194
 
195
- let mockManagedSpeechAvailable = true;
195
+ let mockCloudSpeechAvailable = true;
196
196
 
197
- mock.module("../platform/managed-speech.js", () => ({
198
- managedSpeechAvailable: async () => mockManagedSpeechAvailable,
197
+ mock.module("../cloud/cloud-speech.js", () => ({
198
+ managedSpeechAvailable: async () => mockCloudSpeechAvailable,
199
199
  }));
200
200
 
201
201
  mock.module("../inbound/public-ingress-urls.js", () => ({
@@ -470,10 +470,10 @@ describe("resolveCallTtsProvider with requiresPcmAudio", () => {
470
470
  expect(result.audioFormat).toBe("mp3");
471
471
  });
472
472
 
473
- test("managed speech stands in for a configured provider whose credential is missing", async () => {
473
+ test("cloud speech stands in for a configured provider whose credential is missing", async () => {
474
474
  testConfig.services.tts.provider = "deepgram";
475
- // No deepgram key, managed speech available: the phone speaks through
476
- // managed speech, the same substitution live voice makes.
475
+ // No deepgram key, cloud speech available: the phone speaks through
476
+ // cloud speech, the same substitution live voice makes.
477
477
  registerStubProvider("deepgram", async () => {
478
478
  throw new Error("should not be used");
479
479
  });
@@ -486,8 +486,8 @@ describe("resolveCallTtsProvider with requiresPcmAudio", () => {
486
486
  expect(result.useSynthesizedPath).toBe(true);
487
487
  });
488
488
 
489
- test("without managed speech a credential-less configured provider is kept", async () => {
490
- mockManagedSpeechAvailable = false;
489
+ test("without cloud speech a credential-less configured provider is kept", async () => {
490
+ mockCloudSpeechAvailable = false;
491
491
  try {
492
492
  testConfig.services.tts.provider = "deepgram";
493
493
  registerStubProvider("deepgram", async () => {
@@ -497,7 +497,7 @@ describe("resolveCallTtsProvider with requiresPcmAudio", () => {
497
497
  const result = await resolveCallTtsProvider();
498
498
  expect(result.provider?.id).toBe("deepgram");
499
499
  } finally {
500
- mockManagedSpeechAvailable = true;
500
+ mockCloudSpeechAvailable = true;
501
501
  }
502
502
  });
503
503
  });
@@ -795,21 +795,21 @@ describe("speakSystemPrompt aborted synthesis", () => {
795
795
  });
796
796
 
797
797
  describe("cadet managed playability", () => {
798
- test("playable only when the platform identity is fully provisioned", async () => {
798
+ test("playable only when the cloud identity is fully provisioned", async () => {
799
799
  // The stored secret resolves, but availability decides.
800
800
  storedKeys["cadet"] = "stored";
801
- mockManagedSpeechAvailable = true;
801
+ mockCloudSpeechAvailable = true;
802
802
  const playable = await evaluateTelephonyTtsPlayability("cadet");
803
803
  expect(playable.status).toBe("playable");
804
804
  });
805
805
 
806
806
  test("half-connected platform (secret without identity) is not playable", async () => {
807
807
  storedKeys["cadet"] = "stored";
808
- mockManagedSpeechAvailable = false;
808
+ mockCloudSpeechAvailable = false;
809
809
  const playable = await evaluateTelephonyTtsPlayability("cadet");
810
810
  expect(playable).toMatchObject({
811
811
  status: "not-playable",
812
- reason: "missing-platform-connection",
812
+ reason: "missing-cloud-connection",
813
813
  });
814
814
  });
815
815
  });