@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
@@ -6,7 +6,7 @@ import { mock } from "bun:test";
6
6
  // Stub the background-wake publisher so these store-level unit tests stay
7
7
  // hermetic. `notifySchedulesChanged()` fires a debounced background-wake
8
8
  // refresh on every mutation; left real, that 250ms timer performs a
9
- // synchronous DB read plus a platform-client lookup which compete with the
9
+ // synchronous DB read plus a cloud-client lookup which compete with the
10
10
  // serialized async event delivery and can push a `sync_changed` past the
11
11
  // wait deadline on loaded runners. Background-wake behavior is covered by the
12
12
  // background-wake tests.
@@ -1,5 +1,7 @@
1
1
  import { beforeEach, describe, expect, mock, test } from "bun:test";
2
2
 
3
+ import { setAllFlagsOnForTesting } from "../__tests__/feature-flag-test-helpers.js";
4
+
3
5
  // ---------------------------------------------------------------------------
4
6
  // Mock state
5
7
  // ---------------------------------------------------------------------------
@@ -102,9 +104,6 @@ mock.module("../skills/install-meta.js", () => ({
102
104
  }));
103
105
 
104
106
  // Stub remaining imports pulled in by skills.ts
105
- mock.module("../config/assistant-feature-flags.js", () => ({
106
- isAssistantFeatureFlagEnabled: () => true,
107
- }));
108
107
  mock.module("../config/skill-state.js", () => ({
109
108
  resolveSkillStates: () => [],
110
109
  skillFlagKey: () => null,
@@ -124,10 +123,10 @@ mock.module("../skills/catalog-cache.js", () => ({
124
123
  mock.module("../skills/catalog-install.js", () => ({
125
124
  installSkillLocally: async () => {},
126
125
  }));
127
- mock.module("../skills/managed-store.js", () => ({
128
- createManagedSkill: () => ({ created: true }),
129
- deleteManagedSkill: () => ({ deleted: true }),
130
- validateManagedSkillId: () => null,
126
+ mock.module("../skills/cloud-store.js", () => ({
127
+ createCloudSkill: () => ({ created: true }),
128
+ deleteCloudSkill: () => ({ deleted: true }),
129
+ validateCloudSkillId: () => null,
131
130
  }));
132
131
  mock.module("../plugins/defaults/memory/graph/capability-seed.js", () => ({
133
132
  deleteSkillCapabilityNode: () => {},
@@ -159,6 +158,9 @@ import { searchSkills } from "../daemon/handlers/skills.js";
159
158
 
160
159
  describe("searchSkills (unified)", () => {
161
160
  beforeEach(() => {
161
+ // Real flag resolution replaces the former blanket module mock.
162
+ setAllFlagsOnForTesting();
163
+
162
164
  mockCatalogSkills.mockReset();
163
165
  mockClawhubSearch.mockReset();
164
166
  mockSkillsshSearch.mockReset();
@@ -20,9 +20,8 @@ let providerRefreshCalls = 0;
20
20
  let identitySyncCalls = 0;
21
21
  let avatarSyncCalls = 0;
22
22
 
23
- const PLATFORM_BASE_URL = "https://platform.example.com";
23
+ const CLOUD_BASE_URL = "https://platform.example.com";
24
24
  const ASSISTANT_API_KEY_PATH = credentialKey("cadet", "assistant_api_key");
25
- const PLATFORM_BASE_URL_PATH = credentialKey("cadet", "platform_base_url");
26
25
  const MANAGED_PROVIDERS = [
27
26
  "anthropic",
28
27
  "openai",
@@ -32,9 +31,8 @@ const MANAGED_PROVIDERS = [
32
31
  "typesafe",
33
32
  ] as const;
34
33
 
35
- let platformBaseUrlOverride: string | undefined;
36
- let platformAssistantIdOverride: string | undefined;
37
- let platformOrganizationIdOverride: string | undefined;
34
+ let cloudAssistantIdOverride: string | undefined;
35
+ let cloudOrganizationIdOverride: string | undefined;
38
36
  let platformUserIdOverride: string | undefined;
39
37
 
40
38
  mock.module("@google/genai", () => ({
@@ -61,18 +59,15 @@ mock.module("@google/genai", () => ({
61
59
  }));
62
60
 
63
61
  mock.module("../config/env.js", () => ({
64
- getPlatformBaseUrl: () => PLATFORM_BASE_URL,
65
- getPlatformAssistantId: () => platformAssistantIdOverride,
66
- setPlatformBaseUrl: (value: string | undefined) => {
67
- platformBaseUrlOverride = value;
62
+ getCloudBaseUrl: () => CLOUD_BASE_URL,
63
+ getCloudAssistantId: () => cloudAssistantIdOverride,
64
+ setCloudAssistantId: (value: string | undefined) => {
65
+ cloudAssistantIdOverride = value;
68
66
  },
69
- setPlatformAssistantId: (value: string | undefined) => {
70
- platformAssistantIdOverride = value;
67
+ setCloudOrganizationId: (value: string | undefined) => {
68
+ cloudOrganizationIdOverride = value;
71
69
  },
72
- setPlatformOrganizationId: (value: string | undefined) => {
73
- platformOrganizationIdOverride = value;
74
- },
75
- setPlatformUserId: (value: string | undefined) => {
70
+ setCloudUserId: (value: string | undefined) => {
76
71
  platformUserIdOverride = value;
77
72
  },
78
73
  }));
@@ -97,22 +92,22 @@ mock.module("../tools/credentials/metadata-store.js", () => ({
97
92
  },
98
93
  }));
99
94
 
100
- // `handleAddSecret` fires this detached when a managed-proxy credential lands —
95
+ // `handleAddSecret` fires this detached when a cloud-proxy credential lands —
101
96
  // a v2-memory side effect outside this suite's provider-registry scope. Stub it
102
97
  // to a no-op; its behavior is covered by boot-maintenance.test.ts.
103
98
  mock.module("../plugins/defaults/memory/substrate/boot-maintenance.js", () => ({
104
- maybeReseedCapabilitiesAfterManagedCredential: async () => {},
99
+ maybeReseedCapabilitiesAfterCloudCredential: async () => {},
105
100
  }));
106
101
 
107
102
  // Live platform registration (`cadet login` against a running assistant)
108
103
  // must re-enqueue the name and avatar syncs that no-op'd at startup.
109
- mock.module("../platform/sync-identity.js", () => ({
104
+ mock.module("../cloud/sync-identity.js", () => ({
110
105
  syncWorkspaceIdentityToPlatform: () => {
111
106
  identitySyncCalls++;
112
107
  },
113
108
  }));
114
109
  mock.module("../avatar/sync-avatar.js", () => ({
115
- syncAvatarToPlatform: () => {
110
+ syncAvatarToCloud: () => {
116
111
  avatarSyncCalls++;
117
112
  },
118
113
  }));
@@ -174,16 +169,15 @@ function deleteApiKey(name: string) {
174
169
  });
175
170
  }
176
171
 
177
- describe("secret routes managed proxy registry sync", () => {
172
+ describe("secret routes cloud proxy registry sync", () => {
178
173
  beforeEach(async () => {
179
174
  secureKeyStore.clear();
180
175
  setWritesFail(false);
181
176
  metadataUpserts.length = 0;
182
177
  metadataDeletes.length = 0;
183
178
  lastGeminiConstructorOpts = null;
184
- platformBaseUrlOverride = undefined;
185
- platformAssistantIdOverride = undefined;
186
- platformOrganizationIdOverride = undefined;
179
+ cloudAssistantIdOverride = undefined;
180
+ cloudOrganizationIdOverride = undefined;
187
181
  platformUserIdOverride = undefined;
188
182
  providerRefreshCalls = 0;
189
183
  identitySyncCalls = 0;
@@ -196,7 +190,7 @@ describe("secret routes managed proxy registry sync", () => {
196
190
  await initializeProviders(getConfig());
197
191
  });
198
192
 
199
- test("adding cadet:assistant_api_key bootstraps managed fallback providers immediately", async () => {
193
+ test("adding cadet:assistant_api_key bootstraps cloud fallback providers immediately", async () => {
200
194
  expect(listProviders()).toEqual([]);
201
195
 
202
196
  const result = await addCredential(
@@ -214,7 +208,7 @@ describe("secret routes managed proxy registry sync", () => {
214
208
  expect(providers).toHaveLength(MANAGED_PROVIDERS.length);
215
209
  for (const provider of MANAGED_PROVIDERS) {
216
210
  expect(providers).toContain(provider);
217
- expect(getProviderRoutingSource(provider)).toBe("managed-proxy");
211
+ expect(getProviderRoutingSource(provider)).toBe("cloud-proxy");
218
212
  }
219
213
  expect(lastGeminiConstructorOpts).toBeDefined();
220
214
  });
@@ -259,14 +253,11 @@ describe("secret routes managed proxy registry sync", () => {
259
253
 
260
254
  test("deleting a cadet credential is rejected without touching the vault", async () => {
261
255
  secureKeyStore.set(ASSISTANT_API_KEY_PATH, "ast-managed-key");
262
- secureKeyStore.set(PLATFORM_BASE_URL_PATH, "https://managed.example.com");
263
- platformBaseUrlOverride = "https://managed.example.com";
264
- platformAssistantIdOverride = "asst-1";
256
+ cloudAssistantIdOverride = "asst-1";
265
257
  await initializeProviders(getConfig());
266
258
 
267
259
  for (const name of [
268
260
  "cadet:assistant_api_key",
269
- "cadet:platform_base_url",
270
261
  "cadet:webhook_secret",
271
262
  "cadet:platform_assistant_id",
272
263
  ]) {
@@ -276,16 +267,12 @@ describe("secret routes managed proxy registry sync", () => {
276
267
  }
277
268
 
278
269
  expect(secureKeyStore.get(ASSISTANT_API_KEY_PATH)).toBe("ast-managed-key");
279
- expect(secureKeyStore.get(PLATFORM_BASE_URL_PATH)).toBe(
280
- "https://managed.example.com",
281
- );
282
- expect(platformBaseUrlOverride).toBe("https://managed.example.com");
283
- expect(platformAssistantIdOverride).toBe("asst-1");
270
+ expect(cloudAssistantIdOverride).toBe("asst-1");
284
271
  expect(metadataDeletes).toEqual([]);
285
272
  expect(providerRefreshCalls).toBe(0);
286
273
  });
287
274
 
288
- test("managed proxy credential writes notify live-conversation refresh listeners", async () => {
275
+ test("cloud proxy credential writes notify live-conversation refresh listeners", async () => {
289
276
  await addCredential("cadet:assistant_api_key", "ast-managed-key");
290
277
 
291
278
  expect(providerRefreshCalls).toBe(1);
@@ -294,8 +281,8 @@ describe("secret routes managed proxy registry sync", () => {
294
281
  /**
295
282
  * Verifies that rotating a credential refreshes providers for dependent connections.
296
283
  */
297
- test("non-managed credentials refresh providers when a connection uses them", async () => {
298
- // GIVEN a non-managed credential.
284
+ test("non-cloud credentials refresh providers when a connection uses them", async () => {
285
+ // GIVEN a non-cloud credential.
299
286
  // AND a provider connection references its canonical credential key.
300
287
  const now = Date.now();
301
288
  getDb()
@@ -322,8 +309,8 @@ describe("secret routes managed proxy registry sync", () => {
322
309
  /**
323
310
  * Verifies that rotating an unused credential does not refresh providers.
324
311
  */
325
- test("non-managed credentials do not refresh providers when no connection uses them", async () => {
326
- // GIVEN a non-managed credential.
312
+ test("non-cloud credentials do not refresh providers when no connection uses them", async () => {
313
+ // GIVEN a non-cloud credential.
327
314
  // AND no provider connection references its credential key.
328
315
  // WHEN the credential is rotated.
329
316
  await addCredential("openrouter:api_key", "openrouter-key");
@@ -332,14 +319,11 @@ describe("secret routes managed proxy registry sync", () => {
332
319
  expect(providerRefreshCalls).toBe(0);
333
320
  });
334
321
 
335
- test("storing a platform registration credential enqueues name and avatar syncs", async () => {
336
- for (const name of ["cadet:assistant_api_key", "cadet:platform_base_url"]) {
337
- identitySyncCalls = 0;
338
- avatarSyncCalls = 0;
339
- await addCredential(name, "value");
340
- expect(identitySyncCalls).toBe(1);
341
- expect(avatarSyncCalls).toBe(1);
342
- }
322
+ test("storing a cloud registration credential enqueues name and avatar syncs", async () => {
323
+ await addCredential("cadet:assistant_api_key", "value");
324
+
325
+ expect(identitySyncCalls).toBe(1);
326
+ expect(avatarSyncCalls).toBe(1);
343
327
  });
344
328
 
345
329
  test("unrelated credentials do not enqueue platform syncs", async () => {
@@ -353,7 +337,7 @@ describe("secret routes managed proxy registry sync", () => {
353
337
  setWritesFail(true);
354
338
 
355
339
  await expect(
356
- addCredential("cadet:platform_base_url", "https://managed.example.com"),
340
+ addCredential("cadet:assistant_api_key", "ast-managed-key"),
357
341
  ).rejects.toThrow("Failed to store credential");
358
342
 
359
343
  expect(identitySyncCalls).toBe(0);
@@ -361,84 +345,53 @@ describe("secret routes managed proxy registry sync", () => {
361
345
  });
362
346
 
363
347
  test("unknown cadet credentials are rejected without persisting or binding identity", async () => {
364
- platformAssistantIdOverride = "existing-asst";
365
- platformOrganizationIdOverride = "existing-org";
348
+ cloudAssistantIdOverride = "existing-asst";
349
+ cloudOrganizationIdOverride = "existing-org";
366
350
  platformUserIdOverride = "existing-user";
367
351
 
352
+ // Identity ids are not credentials at all — they resolve from the
353
+ // assistant_api_key via validate and live in the in-memory identity.
368
354
  await expect(
369
- addCredential("cadet:platform_assistant_id", "asst-1"),
370
- ).rejects.toThrow("Unknown cadet credential: platform_assistant_id");
371
- await expect(
372
- addCredential("cadet:platform_organization_id", "org-1"),
373
- ).rejects.toThrow("Unknown cadet credential: platform_organization_id");
374
- await expect(
375
- addCredential("cadet:platform_user_id", "user-1"),
376
- ).rejects.toThrow("Unknown cadet credential: platform_user_id");
355
+ addCredential("cadet:cloud_assistant_id", "asst-1"),
356
+ ).rejects.toThrow("Unknown cadet credential: cloud_assistant_id");
377
357
 
378
358
  expect(
379
- secureKeyStore.get(credentialKey("cadet", "platform_assistant_id")),
380
- ).toBeUndefined();
381
- expect(
382
- secureKeyStore.get(credentialKey("cadet", "platform_organization_id")),
383
- ).toBeUndefined();
384
- expect(
385
- secureKeyStore.get(credentialKey("cadet", "platform_user_id")),
359
+ secureKeyStore.get(credentialKey("cadet", "cloud_assistant_id")),
386
360
  ).toBeUndefined();
387
361
  expect(metadataUpserts).toEqual([]);
388
- expect(platformAssistantIdOverride).toBe("existing-asst");
389
- expect(platformOrganizationIdOverride).toBe("existing-org");
362
+ expect(cloudAssistantIdOverride).toBe("existing-asst");
363
+ expect(cloudOrganizationIdOverride).toBe("existing-org");
390
364
  expect(platformUserIdOverride).toBe("existing-user");
391
365
  expect(identitySyncCalls).toBe(0);
392
366
  expect(avatarSyncCalls).toBe(0);
393
367
  });
394
368
 
395
369
  test("an unknown cadet credential does not delete leftover vault copies", async () => {
396
- const key = credentialKey("cadet", "platform_assistant_id");
370
+ const key = credentialKey("cadet", "cloud_assistant_id");
397
371
  secureKeyStore.set(key, "leftover-asst");
398
- platformAssistantIdOverride = "asst-1";
372
+ cloudAssistantIdOverride = "asst-1";
399
373
 
400
374
  await expect(
401
- addCredential("cadet:platform_assistant_id", " "),
402
- ).rejects.toThrow("Unknown cadet credential: platform_assistant_id");
375
+ addCredential("cadet:cloud_assistant_id", " "),
376
+ ).rejects.toThrow("Unknown cadet credential: cloud_assistant_id");
403
377
 
404
378
  expect(secureKeyStore.get(key)).toBe("leftover-asst");
405
- expect(platformAssistantIdOverride).toBe("asst-1");
379
+ expect(cloudAssistantIdOverride).toBe("asst-1");
406
380
  expect(metadataDeletes).toEqual([]);
407
381
  expect(identitySyncCalls).toBe(0);
408
382
  expect(avatarSyncCalls).toBe(0);
409
383
  });
410
384
 
411
- test("storing cadet:platform_base_url sets override and triggers initializeProviders", async () => {
412
- await addCredential(
413
- "cadet:platform_base_url",
414
- "https://managed.example.com",
415
- );
416
-
417
- expect(secureKeyStore.get(PLATFORM_BASE_URL_PATH)).toBe(
418
- "https://managed.example.com",
419
- );
420
- expect(platformBaseUrlOverride).toBe("https://managed.example.com");
421
- expect(metadataUpserts).toEqual([
422
- { service: "cadet", field: "platform_base_url" },
423
- ]);
424
- });
425
-
426
- test("storing both cadet:platform_base_url and cadet:assistant_api_key enables managed proxy", async () => {
385
+ test("storing cadet:assistant_api_key enables cloud proxy", async () => {
427
386
  expect(listProviders()).toEqual([]);
428
387
 
429
- await addCredential(
430
- "cadet:platform_base_url",
431
- "https://managed.example.com",
432
- );
433
- expect(platformBaseUrlOverride).toBe("https://managed.example.com");
434
-
435
388
  await addCredential("cadet:assistant_api_key", "ast-managed-key");
436
389
 
437
390
  const providers = listProviders();
438
391
  expect(providers).toHaveLength(MANAGED_PROVIDERS.length);
439
392
  for (const provider of MANAGED_PROVIDERS) {
440
393
  expect(providers).toContain(provider);
441
- expect(getProviderRoutingSource(provider)).toBe("managed-proxy");
394
+ expect(getProviderRoutingSource(provider)).toBe("cloud-proxy");
442
395
  }
443
396
  });
444
397
  });
@@ -6,7 +6,6 @@
6
6
  * - scrubs the stored value exactly once, immediately after the
7
7
  * secure-store write
8
8
  * - never scrubs when validation rejects the request (nothing was stored)
9
- * - still succeeds when the scrub itself rejects (best-effort hygiene)
10
9
  */
11
10
 
12
11
  import { beforeEach, describe, expect, mock, test } from "bun:test";
@@ -21,7 +20,6 @@ import { useMemorySecureKeyMap } from "./helpers/secure-keys.js";
21
20
  const secureStore = useMemorySecureKeyMap();
22
21
 
23
22
  let scrubbedValues: string[];
24
- let scrubRejects: boolean;
25
23
  let anthropicKeyValid: boolean;
26
24
  let providersRefreshed: number;
27
25
 
@@ -32,9 +30,6 @@ let providersRefreshed: number;
32
30
  mock.module("../daemon/credential-transcript-scrub.js", () => ({
33
31
  scrubStoredCredentialFromTranscripts: mock(async (value: string) => {
34
32
  scrubbedValues.push(value);
35
- if (scrubRejects) {
36
- throw new Error("transcript sweep failed");
37
- }
38
33
  return { dbMessagesScrubbed: 0, residentMessagesScrubbed: 0 };
39
34
  }),
40
35
  }));
@@ -87,7 +82,6 @@ describe("secrets_add api_key transcript scrub", () => {
87
82
  beforeEach(() => {
88
83
  secureStore.clear();
89
84
  scrubbedValues = [];
90
- scrubRejects = false;
91
85
  anthropicKeyValid = true;
92
86
  providersRefreshed = 0;
93
87
  });
@@ -104,6 +98,8 @@ describe("secrets_add api_key transcript scrub", () => {
104
98
  API_KEY_VALUE,
105
99
  );
106
100
  expect(scrubbedValues).toEqual([API_KEY_VALUE]);
101
+ // The provider refresh still happens after the scrub.
102
+ expect(providersRefreshed).toBe(1);
107
103
  });
108
104
 
109
105
  test("an unknown provider is rejected and never triggers a scrub", async () => {
@@ -134,23 +130,6 @@ describe("secrets_add api_key transcript scrub", () => {
134
130
  expect(secureStore.size).toBe(0);
135
131
  expect(scrubbedValues).toEqual([]);
136
132
  });
137
-
138
- test("the route still succeeds (and refreshes providers) when the scrub rejects", async () => {
139
- scrubRejects = true;
140
-
141
- const result = await addRoute.handler({
142
- body: { type: "api_key", name: "fireworks", value: API_KEY_VALUE },
143
- });
144
-
145
- expect(result).toEqual(expect.objectContaining({ success: true }));
146
- expect(secureStore.get(credentialKey("fireworks", "api_key"))).toBe(
147
- API_KEY_VALUE,
148
- );
149
- // The scrub ran (once) even though it failed, and the failure stayed
150
- // invisible to the caller — the provider refresh still happened.
151
- expect(scrubbedValues).toEqual([API_KEY_VALUE]);
152
- expect(providersRefreshed).toBe(1);
153
- });
154
133
  });
155
134
 
156
135
  const CREDENTIAL_VALUE = "synthetic-credential-value-0987654321";
@@ -159,7 +138,6 @@ describe("secrets_add credential transcript scrub", () => {
159
138
  beforeEach(() => {
160
139
  secureStore.clear();
161
140
  scrubbedValues = [];
162
- scrubRejects = false;
163
141
  anthropicKeyValid = true;
164
142
  providersRefreshed = 0;
165
143
  });
@@ -180,41 +158,6 @@ describe("secrets_add credential transcript scrub", () => {
180
158
  expect(scrubbedValues).toEqual([CREDENTIAL_VALUE]);
181
159
  });
182
160
 
183
- test("the route still succeeds when the credential scrub rejects", async () => {
184
- scrubRejects = true;
185
-
186
- const result = await addRoute.handler({
187
- body: {
188
- type: "credential",
189
- name: "github:api_token",
190
- value: CREDENTIAL_VALUE,
191
- },
192
- });
193
-
194
- expect(result).toEqual(expect.objectContaining({ success: true }));
195
- expect(secureStore.get(credentialKey("github", "api_token"))).toBe(
196
- CREDENTIAL_VALUE,
197
- );
198
- expect(scrubbedValues).toEqual([CREDENTIAL_VALUE]);
199
- });
200
-
201
- test("non-secret platform fields are not scrubbed", async () => {
202
- const result = await addRoute.handler({
203
- body: {
204
- type: "credential",
205
- name: "cadet:platform_base_url",
206
- value: "0198f4c2-1111-2222-3333-444455556666",
207
- },
208
- });
209
- expect(result).toEqual(expect.objectContaining({ success: true }));
210
-
211
- expect(secureStore.size).toBe(1);
212
- expect(secureStore.get(credentialKey("cadet", "platform_base_url"))).toBe(
213
- "0198f4c2-1111-2222-3333-444455556666",
214
- );
215
- expect(scrubbedValues).toEqual([]);
216
- });
217
-
218
161
  test("an unknown cadet credential is rejected and never triggers a scrub", async () => {
219
162
  await expect(
220
163
  addRoute.handler({
@@ -239,7 +239,7 @@ describe("secure-keys", () => {
239
239
  //
240
240
  // The reconnect callback runs while the credential resolver is waiting on
241
241
  // `_reconnectInFlight`. A nested `getSecureKeyAsync()` from inside the
242
- // callback — e.g. `resolveManagedProxyContext()` reading the assistant API
242
+ // callback — e.g. `resolveCloudProxyContext()` reading the assistant API
243
243
  // key for the handshake — would recursively `await` the same in-flight
244
244
  // promise and deadlock for 45 seconds until `CREDENTIAL_OP_TIMEOUT_MS`
245
245
  // fires. The guard in `attemptCesReconnection` short-circuits that
@@ -4,7 +4,7 @@
4
4
  * it through when the plugin is in scope (or when there is no restriction).
5
5
  *
6
6
  * Fixture skills are real directories under the per-process workspace
7
- * (`plugins/p`, `plugins/q`, and a managed workspace skill for the
7
+ * (`plugins/p`, `plugins/q`, and a cloud workspace skill for the
8
8
  * always-allowed core child), so the real loader discovers them — no module
9
9
  * mocks.
10
10
  */
@@ -71,7 +71,7 @@ beforeAll(() => {
71
71
  body: "CHILD IN BODY",
72
72
  });
73
73
  // ── Include-path scope fixture ──────────────────────────────────────
74
- // An in-scope parent (plugin "p") that includes three children: a managed
74
+ // An in-scope parent (plugin "p") that includes three children: a cloud
75
75
  // workspace child (no plugin owner — always allowed), an in-scope plugin
76
76
  // child (plugin "p"), and an out-of-scope plugin child (plugin "q", not in
77
77
  // the effective set).
@@ -830,7 +830,7 @@ describe("skill_load tool", () => {
830
830
  test("omits tools unsupported by the current client operating system", async () => {
831
831
  writeSkill(
832
832
  "platform-tools",
833
- "Platform Tools",
833
+ "Cloud Tools",
834
834
  "Has platform-specific tools",
835
835
  "Body.",
836
836
  );
@@ -47,25 +47,6 @@ mock.module("../config/skill-state.js", () => ({
47
47
  // production's design: tests reach into `feature-flag-cache.ts` (or its
48
48
  // test-helper wrapper) to seed cached overrides, never through the
49
49
  // resolver module itself.
50
- let _mockOverrides: Record<string, boolean> = {};
51
- mock.module("../config/assistant-feature-flags.js", () => ({
52
- isAssistantFeatureFlagEnabled: (key: string, _config: unknown): boolean => {
53
- const explicit = _mockOverrides[key];
54
- if (typeof explicit === "boolean") {
55
- return explicit;
56
- }
57
- return false; // undeclared flags default to disabled
58
- },
59
- clearFeatureFlagOverridesCache: () => {
60
- _mockOverrides = {};
61
- },
62
- getAssistantFeatureFlagDefaults: () => ({}),
63
- }));
64
- mock.module("./feature-flag-test-helpers.js", () => ({
65
- setOverridesForTesting: (overrides: Record<string, boolean>) => {
66
- _mockOverrides = { ...overrides };
67
- },
68
- }));
69
50
 
70
51
  mock.module("../skills/active-skill-tools.js", () => {
71
52
  const parseMarkers = (messages: Message[]) => {
@@ -12,18 +12,14 @@
12
12
  import { beforeAll, describe, expect, mock, test } from "bun:test";
13
13
 
14
14
  import type { Message } from "../providers/types.js";
15
+ import { setAllFlagsOnForTesting } from "./feature-flag-test-helpers.js";
15
16
 
16
17
  // ---------------------------------------------------------------------------
17
18
  // Mocks — must be registered before importing the module under test
18
19
  // ---------------------------------------------------------------------------
19
20
 
20
- // Mock feature flags to avoid filesystem reads on CI.
21
- // The benchmark fixture treats every feature flag as enabled.
22
- mock.module("../config/assistant-feature-flags.js", () => ({
23
- isAssistantFeatureFlagEnabled: () => true,
24
- loadDefaultsRegistry: () => ({}),
25
- getFeatureFlagDefault: () => true,
26
- }));
21
+ // Real flag resolution with every declared flag overridden on — the defaults
22
+ // registry is never consulted, so there are no filesystem reads on CI.
27
23
 
28
24
  // Skill catalog: returns a configurable list of fake skills
29
25
  let catalogSkillIds: string[] = [];
@@ -271,6 +267,8 @@ function timeMs(fn: () => void): number {
271
267
 
272
268
  describe("Skill projection benchmark", () => {
273
269
  beforeAll(() => {
270
+ setAllFlagsOnForTesting();
271
+
274
272
  // Prime the real config loader and JIT the projection path once so the
275
273
  // first measured "cold" run reflects projection latency, not the one-time
276
274
  // loader/module warmup cost that a trivial config mock used to hide.
@@ -827,7 +827,7 @@ describe("createSkillTool: bundled input repairs", () => {
827
827
  function makeScaffoldTool(bundled: boolean) {
828
828
  return createSkillTool(
829
829
  makeEntry({
830
- name: "scaffold_managed_skill",
830
+ name: "scaffold_cloud_skill",
831
831
  executor: "echo.ts",
832
832
  input_schema: SCAFFOLD_SCHEMA,
833
833
  }),
@@ -24,6 +24,7 @@ import { tmpdir } from "node:os";
24
24
  import { join } from "node:path";
25
25
  import { afterEach, beforeEach, describe, expect, mock, test } from "bun:test";
26
26
 
27
+ import { setAllFlagsOnForTesting } from "../__tests__/feature-flag-test-helpers.js";
27
28
  import type { SkillSummary } from "../config/skills.js";
28
29
  import type { SlimSkillResponse } from "../daemon/message-types/skills.js";
29
30
  import type { SkillFileEntry } from "../skills/catalog-files.js";
@@ -93,10 +94,6 @@ mock.module("../config/skill-state.js", () => ({
93
94
  skillFlagKey: () => null,
94
95
  }));
95
96
 
96
- mock.module("../config/assistant-feature-flags.js", () => ({
97
- isAssistantFeatureFlagEnabled: () => true,
98
- }));
99
-
100
97
  mock.module("../skills/catalog-cache.js", () => ({
101
98
  getCatalog: async () => [],
102
99
  }));
@@ -238,10 +235,10 @@ mock.module("../skills/install-meta.js", () => ({
238
235
  readInstallMeta: () => null,
239
236
  }));
240
237
 
241
- mock.module("../skills/managed-store.js", () => ({
242
- createManagedSkill: () => ({ created: true }),
243
- deleteManagedSkill: () => ({ deleted: true }),
244
- validateManagedSkillId: () => null,
238
+ mock.module("../skills/cloud-store.js", () => ({
239
+ createCloudSkill: () => ({ created: true }),
240
+ deleteCloudSkill: () => ({ deleted: true }),
241
+ validateCloudSkillId: () => null,
245
242
  }));
246
243
 
247
244
  mock.module("../plugins/defaults/memory/graph/capability-seed.js", () => ({
@@ -263,12 +260,12 @@ mock.module("../providers/provider-send-message.js", () => ({
263
260
  // Real isTextMimeType — we want actual classification here.
264
261
  // No mock needed; let it fall through to the real implementation.
265
262
 
266
- let mockPlatformBaseUrl = "https://platform.test";
263
+ let mockCloudBaseUrl = "https://platform.test";
267
264
  mock.module("../config/env.js", () => ({
268
- getPlatformBaseUrl: () => mockPlatformBaseUrl,
265
+ getCloudBaseUrl: () => mockCloudBaseUrl,
269
266
  }));
270
267
  mock.module("../config/env.ts", () => ({
271
- getPlatformBaseUrl: () => mockPlatformBaseUrl,
268
+ getCloudBaseUrl: () => mockCloudBaseUrl,
272
269
  }));
273
270
 
274
271
  mock.module("../daemon/handlers/shared.js", () => ({
@@ -332,9 +329,12 @@ function installedSkill(id: string, directoryPath: string) {
332
329
  // ---------------------------------------------------------------------------
333
330
 
334
331
  beforeEach(() => {
332
+ // Real flag resolution replaces the former blanket module mock.
333
+ setAllFlagsOnForTesting();
334
+
335
335
  originalFetch = globalThis.fetch;
336
336
  mockResolvedSkills = [];
337
- mockPlatformBaseUrl = "https://platform.test";
337
+ mockCloudBaseUrl = "https://platform.test";
338
338
  providerReadCalls.length = 0;
339
339
  mockCadetProvider = makeNoopProvider("cadet");
340
340
  mockSkillsshProvider = makeNoopProvider("skillssh");