@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
@@ -24,7 +24,7 @@ import {
24
24
 
25
25
  import { NOTIFICATION_AVATAR_SPEC_VERSION } from "@mycadet/avatar-manifest/notification-avatar";
26
26
 
27
- import * as realPlatformClient from "../platform/client.js";
27
+ import * as realCloudClient from "../cloud/client.js";
28
28
  import type { AvatarState } from "./avatar-manifest.js";
29
29
  import * as realAvatarManifest from "./avatar-manifest.js";
30
30
  import * as realEnsureRaster from "./ensure-raster.js";
@@ -39,7 +39,7 @@ import * as realResvgLazy from "./resvg-lazy.js";
39
39
  const REAL_AVATAR_MANIFEST = { ...realAvatarManifest };
40
40
  const REAL_ENSURE_RASTER = { ...realEnsureRaster };
41
41
  const REAL_RESVG_LAZY = { ...realResvgLazy };
42
- const REAL_PLATFORM_CLIENT = { ...realPlatformClient };
42
+ const REAL_PLATFORM_CLIENT = { ...realCloudClient };
43
43
  const realReadContainedAvatarRaster =
44
44
  REAL_ENSURE_RASTER.readContainedAvatarRaster;
45
45
 
@@ -47,7 +47,7 @@ let mockState: AvatarState;
47
47
  let mockRasterPath: string | null;
48
48
  let mockClient: {
49
49
  baseUrl: string;
50
- platformAssistantId: string;
50
+ cloudAssistantId: string;
51
51
  fetch: (path: string, init: RequestInit) => Promise<Response>;
52
52
  } | null;
53
53
  /** Manifest states the accent backfill persisted during a test. */
@@ -59,8 +59,8 @@ let lastResvgSvg = "";
59
59
  let rasterCalls = 0;
60
60
 
61
61
  function installMocks(): void {
62
- mock.module("../platform/client.js", () => ({
63
- CadetPlatformClient: { create: async () => mockClient },
62
+ mock.module("../cloud/client.js", () => ({
63
+ CadetCloudClient: { create: async () => mockClient },
64
64
  }));
65
65
 
66
66
  mock.module("./avatar-manifest.js", () => ({
@@ -110,7 +110,7 @@ function installMocks(): void {
110
110
  }
111
111
 
112
112
  function restoreRealModules(): void {
113
- mock.module("../platform/client.js", () => REAL_PLATFORM_CLIENT);
113
+ mock.module("../cloud/client.js", () => REAL_PLATFORM_CLIENT);
114
114
  mock.module("./avatar-manifest.js", () => REAL_AVATAR_MANIFEST);
115
115
  mock.module("./ensure-raster.js", () => REAL_ENSURE_RASTER);
116
116
  mock.module("./resvg-lazy.js", () => REAL_RESVG_LAZY);
@@ -121,7 +121,7 @@ installMocks();
121
121
  import {
122
122
  _resetSyncAvatarStateForTests,
123
123
  AVATAR_SYNC_KEY_TTL_MS,
124
- syncAvatarToPlatform,
124
+ syncAvatarToCloud,
125
125
  } from "./sync-avatar.js";
126
126
 
127
127
  const PNG_MAGIC = [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a];
@@ -225,7 +225,7 @@ let respond: () => Response;
225
225
  function makeClient(assistantId = "asst-1", baseUrl = "https://platform.a") {
226
226
  return {
227
227
  baseUrl,
228
- platformAssistantId: assistantId,
228
+ cloudAssistantId: assistantId,
229
229
  fetch: async (path: string, init: RequestInit) => {
230
230
  patches.push({ path, body: JSON.parse(init.body as string) });
231
231
  return respond();
@@ -239,7 +239,7 @@ async function settle(): Promise<void> {
239
239
  }
240
240
  }
241
241
 
242
- describe("syncAvatarToPlatform", () => {
242
+ describe("syncAvatarToCloud", () => {
243
243
  beforeEach(() => {
244
244
  rmSync(workspaceDir, { recursive: true, force: true });
245
245
  rmSync(join(dir, "platform-sync"), { recursive: true, force: true });
@@ -258,9 +258,9 @@ describe("syncAvatarToPlatform", () => {
258
258
  });
259
259
 
260
260
  test("PATCHes the base64 raster once and dedups an unchanged etag", async () => {
261
- syncAvatarToPlatform();
261
+ syncAvatarToCloud();
262
262
  await settle();
263
- syncAvatarToPlatform();
263
+ syncAvatarToCloud();
264
264
  await settle();
265
265
 
266
266
  expect(patches).toHaveLength(1);
@@ -271,11 +271,11 @@ describe("syncAvatarToPlatform", () => {
271
271
  });
272
272
 
273
273
  test("a changed etag re-sends", async () => {
274
- syncAvatarToPlatform();
274
+ syncAvatarToCloud();
275
275
  await settle();
276
276
  mockState = imageState("etag-b");
277
277
  mockRasterPath = writeRaster("b.png", png("bb"));
278
- syncAvatarToPlatform();
278
+ syncAvatarToCloud();
279
279
  await settle();
280
280
 
281
281
  expect(patches.map((p) => p.body.avatar_base64)).toEqual([
@@ -285,10 +285,10 @@ describe("syncAvatarToPlatform", () => {
285
285
  });
286
286
 
287
287
  test("a raster overwritten in place re-sends without a manifest change", async () => {
288
- syncAvatarToPlatform();
288
+ syncAvatarToCloud();
289
289
  await settle();
290
290
  writeRaster("a.png", png("a-rewritten"));
291
- syncAvatarToPlatform();
291
+ syncAvatarToCloud();
292
292
  await settle();
293
293
 
294
294
  expect(patches.map((p) => p.body.avatar_base64)).toEqual([
@@ -298,12 +298,12 @@ describe("syncAvatarToPlatform", () => {
298
298
  });
299
299
 
300
300
  test("re-registering to another assistant id re-sends the same raster", async () => {
301
- syncAvatarToPlatform();
301
+ syncAvatarToCloud();
302
302
  await settle();
303
303
  mockClient = makeClient("asst-2");
304
- syncAvatarToPlatform();
304
+ syncAvatarToCloud();
305
305
  await settle();
306
- syncAvatarToPlatform();
306
+ syncAvatarToCloud();
307
307
  await settle();
308
308
 
309
309
  expect(patches.map((p) => p.path)).toEqual([
@@ -314,11 +314,11 @@ describe("syncAvatarToPlatform", () => {
314
314
  });
315
315
 
316
316
  test("rapid changes collapse into one PATCH carrying the newest raster", async () => {
317
- syncAvatarToPlatform();
318
- syncAvatarToPlatform();
317
+ syncAvatarToCloud();
318
+ syncAvatarToCloud();
319
319
  mockState = imageState("etag-c");
320
320
  mockRasterPath = writeRaster("c.png", png("c"));
321
- syncAvatarToPlatform();
321
+ syncAvatarToCloud();
322
322
  await settle();
323
323
 
324
324
  expect(patches).toHaveLength(1);
@@ -327,11 +327,11 @@ describe("syncAvatarToPlatform", () => {
327
327
  });
328
328
 
329
329
  test("removing the avatar nulls both images", async () => {
330
- syncAvatarToPlatform();
330
+ syncAvatarToCloud();
331
331
  await settle();
332
332
  mockState = NONE;
333
333
  mockRasterPath = null;
334
- syncAvatarToPlatform();
334
+ syncAvatarToCloud();
335
335
  await settle();
336
336
 
337
337
  expect(patches).toHaveLength(2);
@@ -350,7 +350,7 @@ describe("syncAvatarToPlatform", () => {
350
350
  status: 400,
351
351
  })
352
352
  : new Response("{}", { status: 200 });
353
- syncAvatarToPlatform();
353
+ syncAvatarToCloud();
354
354
  await settle();
355
355
 
356
356
  expect(patches).toHaveLength(2);
@@ -364,7 +364,7 @@ describe("syncAvatarToPlatform", () => {
364
364
  `|${REMOVAL_KEY}`,
365
365
  );
366
366
 
367
- syncAvatarToPlatform();
367
+ syncAvatarToCloud();
368
368
  await settle();
369
369
 
370
370
  expect(patches).toHaveLength(2);
@@ -379,7 +379,7 @@ describe("syncAvatarToPlatform", () => {
379
379
  JSON.stringify({ key: LEGACY_REMOVAL_KEY, syncedAt: Date.now() }),
380
380
  );
381
381
 
382
- syncAvatarToPlatform();
382
+ syncAvatarToCloud();
383
383
  await settle();
384
384
 
385
385
  expect(patches).toHaveLength(1);
@@ -391,28 +391,28 @@ describe("syncAvatarToPlatform", () => {
391
391
  `|${REMOVAL_KEY}`,
392
392
  );
393
393
 
394
- syncAvatarToPlatform();
394
+ syncAvatarToCloud();
395
395
  await settle();
396
396
 
397
397
  expect(patches).toHaveLength(1);
398
398
  });
399
399
 
400
400
  test("an image avatar with a missing PNG is skipped, not cleared", async () => {
401
- syncAvatarToPlatform();
401
+ syncAvatarToCloud();
402
402
  await settle();
403
403
  mockRasterPath = null;
404
- syncAvatarToPlatform();
404
+ syncAvatarToCloud();
405
405
  await settle();
406
406
 
407
407
  expect(patches).toHaveLength(1);
408
408
  });
409
409
 
410
410
  test("a character whose re-render failed is skipped, not cleared", async () => {
411
- syncAvatarToPlatform();
411
+ syncAvatarToCloud();
412
412
  await settle();
413
413
  mockState = { ...characterState(), source: null };
414
414
  mockRasterPath = null;
415
- syncAvatarToPlatform();
415
+ syncAvatarToCloud();
416
416
  await settle();
417
417
 
418
418
  expect(patches).toHaveLength(1);
@@ -423,7 +423,7 @@ describe("syncAvatarToPlatform", () => {
423
423
  writeFileSync(outside, png("secret"));
424
424
  mockRasterPath = join(avatarDir, "avatar-image.png");
425
425
  symlinkSync(outside, mockRasterPath);
426
- syncAvatarToPlatform();
426
+ syncAvatarToCloud();
427
427
  await settle();
428
428
 
429
429
  expect(patches).toHaveLength(0);
@@ -434,7 +434,7 @@ describe("syncAvatarToPlatform", () => {
434
434
  "avatar-image.png",
435
435
  Buffer.from("AKIA-not-an-image-at-all"),
436
436
  );
437
- syncAvatarToPlatform();
437
+ syncAvatarToCloud();
438
438
  await settle();
439
439
 
440
440
  expect(patches).toHaveLength(0);
@@ -444,7 +444,7 @@ describe("syncAvatarToPlatform", () => {
444
444
  const outside = join(dir, "elsewhere.png");
445
445
  writeFileSync(outside, png("elsewhere"));
446
446
  mockRasterPath = outside;
447
- syncAvatarToPlatform();
447
+ syncAvatarToCloud();
448
448
  await settle();
449
449
 
450
450
  expect(patches).toHaveLength(0);
@@ -452,7 +452,7 @@ describe("syncAvatarToPlatform", () => {
452
452
 
453
453
  test("skips oversized rasters when resvg is unavailable", async () => {
454
454
  mockRasterPath = writeRaster("big.png", OVERSIZED);
455
- syncAvatarToPlatform();
455
+ syncAvatarToCloud();
456
456
  await settle();
457
457
 
458
458
  expect(patches).toHaveLength(0);
@@ -462,7 +462,7 @@ describe("syncAvatarToPlatform", () => {
462
462
  mockResvgAvailable = true;
463
463
  mockRenderedPng = Buffer.from("tiny");
464
464
  mockRasterPath = writeRaster("big.png", OVERSIZED);
465
- syncAvatarToPlatform();
465
+ syncAvatarToCloud();
466
466
  await settle();
467
467
 
468
468
  expect(patches).toHaveLength(1);
@@ -475,7 +475,7 @@ describe("syncAvatarToPlatform", () => {
475
475
  mockResvgAvailable = true;
476
476
  mockRenderedPng = Buffer.from("tiny");
477
477
  mockRasterPath = writeRaster("big.png", OVERSIZED_JPEG);
478
- syncAvatarToPlatform();
478
+ syncAvatarToCloud();
479
479
  await settle();
480
480
 
481
481
  expect(patches).toHaveLength(1);
@@ -490,7 +490,7 @@ describe("syncAvatarToPlatform", () => {
490
490
  mockRenderedPng = Buffer.from("tiny");
491
491
  lastResvgSvg = "";
492
492
  mockRasterPath = writeRaster("big.png", OVERSIZED_WEBP);
493
- syncAvatarToPlatform();
493
+ syncAvatarToCloud();
494
494
  await settle();
495
495
 
496
496
  expect(patches).toHaveLength(0);
@@ -501,7 +501,7 @@ describe("syncAvatarToPlatform", () => {
501
501
  mockResvgAvailable = true;
502
502
  mockRenderedPng = OVERSIZED;
503
503
  mockRasterPath = writeRaster("big.png", OVERSIZED);
504
- syncAvatarToPlatform();
504
+ syncAvatarToCloud();
505
505
  await settle();
506
506
 
507
507
  expect(patches).toHaveLength(0);
@@ -510,7 +510,7 @@ describe("syncAvatarToPlatform", () => {
510
510
  test("PATCHes the notification avatar alongside the raster", async () => {
511
511
  mockResvgAvailable = true;
512
512
  mockRenderedPng = Buffer.from("disc-a");
513
- syncAvatarToPlatform();
513
+ syncAvatarToCloud();
514
514
  await settle();
515
515
 
516
516
  expect(patches).toHaveLength(1);
@@ -522,7 +522,7 @@ describe("syncAvatarToPlatform", () => {
522
522
  });
523
523
 
524
524
  test("omits the notification avatar when resvg is unavailable", async () => {
525
- syncAvatarToPlatform();
525
+ syncAvatarToCloud();
526
526
  await settle();
527
527
 
528
528
  expect(patches[0].body).toEqual({
@@ -531,7 +531,7 @@ describe("syncAvatarToPlatform", () => {
531
531
  });
532
532
 
533
533
  test("re-sends an unchanged raster once the rasterizer appears", async () => {
534
- syncAvatarToPlatform();
534
+ syncAvatarToCloud();
535
535
  await settle();
536
536
  expect(patches[0].body).toEqual({
537
537
  avatar_base64: png("a").toString("base64"),
@@ -539,7 +539,7 @@ describe("syncAvatarToPlatform", () => {
539
539
 
540
540
  mockResvgAvailable = true;
541
541
  mockRenderedPng = Buffer.from("disc-a");
542
- syncAvatarToPlatform();
542
+ syncAvatarToCloud();
543
543
  await settle();
544
544
 
545
545
  expect(patches).toHaveLength(2);
@@ -552,14 +552,14 @@ describe("syncAvatarToPlatform", () => {
552
552
  test("a changed accent re-sends an unchanged raster", async () => {
553
553
  mockResvgAvailable = true;
554
554
  mockRenderedPng = Buffer.from("disc-a");
555
- syncAvatarToPlatform();
555
+ syncAvatarToCloud();
556
556
  await settle();
557
557
  mockState = {
558
558
  ...imageState("etag-a"),
559
559
  accent: { hex: "#E9642F", source: "custom" },
560
560
  };
561
561
  mockRenderedPng = Buffer.from("disc-b");
562
- syncAvatarToPlatform();
562
+ syncAvatarToCloud();
563
563
  await settle();
564
564
 
565
565
  expect(patches.map((p) => p.body.notification_avatar_base64)).toEqual([
@@ -574,7 +574,7 @@ describe("syncAvatarToPlatform", () => {
574
574
  mockResvgAvailable = true;
575
575
  mockRenderedPng = Buffer.from("disc-green");
576
576
  mockState = characterState();
577
- syncAvatarToPlatform();
577
+ syncAvatarToCloud();
578
578
  await settle();
579
579
 
580
580
  expect(patches).toHaveLength(1);
@@ -590,7 +590,7 @@ describe("syncAvatarToPlatform", () => {
590
590
  mockState = imageState("etag-legacy");
591
591
  mockRasterPath = writeRaster("avatar-image.png", RED_PNG);
592
592
 
593
- syncAvatarToPlatform();
593
+ syncAvatarToCloud();
594
594
  await settle();
595
595
 
596
596
  expect(patches).toHaveLength(1);
@@ -608,7 +608,7 @@ describe("syncAvatarToPlatform", () => {
608
608
  test("a render that failed after the key promised a disc re-uploads next sync", async () => {
609
609
  mockResvgAvailable = true;
610
610
  mockRenderThrows = true;
611
- syncAvatarToPlatform();
611
+ syncAvatarToCloud();
612
612
  await settle();
613
613
 
614
614
  expect(patches).toHaveLength(1);
@@ -623,7 +623,7 @@ describe("syncAvatarToPlatform", () => {
623
623
 
624
624
  mockRenderThrows = false;
625
625
  mockRenderedPng = Buffer.from("disc-a");
626
- syncAvatarToPlatform();
626
+ syncAvatarToCloud();
627
627
  await settle();
628
628
 
629
629
  expect(patches).toHaveLength(2);
@@ -642,7 +642,7 @@ describe("syncAvatarToPlatform", () => {
642
642
  status: 400,
643
643
  })
644
644
  : new Response("{}", { status: 200 });
645
- syncAvatarToPlatform();
645
+ syncAvatarToCloud();
646
646
  await settle();
647
647
 
648
648
  expect(patches).toHaveLength(2);
@@ -652,14 +652,14 @@ describe("syncAvatarToPlatform", () => {
652
652
  expect(patches[1].body).toEqual({
653
653
  avatar_base64: png("a").toString("base64"),
654
654
  });
655
- // The disc key, not the disc-less one: the platform judged this render, so
655
+ // The disc key, not the disc-less one: the cloud judged this render, so
656
656
  // a later enqueue must not redraw it and take the same 400.
657
657
  expect(JSON.parse(readFileSync(syncStatePath, "utf-8")).key).toEndWith(
658
658
  ":disc",
659
659
  );
660
660
 
661
661
  lastResvgSvg = "";
662
- syncAvatarToPlatform();
662
+ syncAvatarToCloud();
663
663
  await settle();
664
664
 
665
665
  expect(patches).toHaveLength(2);
@@ -671,7 +671,7 @@ describe("syncAvatarToPlatform", () => {
671
671
  mockRenderedPng = Buffer.from("disc-a");
672
672
  respond = () =>
673
673
  new Response('{"avatar_base64":["Too large"]}', { status: 400 });
674
- syncAvatarToPlatform();
674
+ syncAvatarToCloud();
675
675
  await settle();
676
676
 
677
677
  expect(patches).toHaveLength(1);
@@ -680,12 +680,12 @@ describe("syncAvatarToPlatform", () => {
680
680
 
681
681
  test("does not render the notification avatar for a deduped payload", async () => {
682
682
  mockResvgAvailable = true;
683
- syncAvatarToPlatform();
683
+ syncAvatarToCloud();
684
684
  await settle();
685
685
  expect(patches).toHaveLength(1);
686
686
 
687
687
  lastResvgSvg = "";
688
- syncAvatarToPlatform();
688
+ syncAvatarToCloud();
689
689
  await settle();
690
690
 
691
691
  expect(patches).toHaveLength(1);
@@ -693,7 +693,7 @@ describe("syncAvatarToPlatform", () => {
693
693
  });
694
694
 
695
695
  test("a restart with the same raster and destination does not re-upload", async () => {
696
- syncAvatarToPlatform();
696
+ syncAvatarToCloud();
697
697
  await settle();
698
698
  expect(JSON.parse(readFileSync(syncStatePath, "utf-8"))).toEqual({
699
699
  key: expect.stringMatching(/^https:\/\/platform\.a\|asst-1\|image:/),
@@ -704,7 +704,7 @@ describe("syncAvatarToPlatform", () => {
704
704
  ).toBe(false);
705
705
 
706
706
  _resetSyncAvatarStateForTests();
707
- syncAvatarToPlatform();
707
+ syncAvatarToCloud();
708
708
  await settle();
709
709
 
710
710
  expect(patches).toHaveLength(1);
@@ -712,7 +712,7 @@ describe("syncAvatarToPlatform", () => {
712
712
 
713
713
  test("an older rendering spec re-uploads the same avatar once", async () => {
714
714
  mockResvgAvailable = true;
715
- syncAvatarToPlatform();
715
+ syncAvatarToCloud();
716
716
  await settle();
717
717
  const current = JSON.parse(readFileSync(syncStatePath, "utf-8"));
718
718
  const previous = {
@@ -726,10 +726,10 @@ describe("syncAvatarToPlatform", () => {
726
726
  writeFileSync(syncStatePath, JSON.stringify(previous));
727
727
 
728
728
  _resetSyncAvatarStateForTests();
729
- syncAvatarToPlatform();
729
+ syncAvatarToCloud();
730
730
  await settle();
731
731
  _resetSyncAvatarStateForTests();
732
- syncAvatarToPlatform();
732
+ syncAvatarToCloud();
733
733
  await settle();
734
734
 
735
735
  expect(patches).toHaveLength(2);
@@ -740,17 +740,17 @@ describe("syncAvatarToPlatform", () => {
740
740
  });
741
741
 
742
742
  test("a restart re-uploads when the destination or raster changed", async () => {
743
- syncAvatarToPlatform();
743
+ syncAvatarToCloud();
744
744
  await settle();
745
745
 
746
746
  _resetSyncAvatarStateForTests();
747
747
  mockClient = makeClient("asst-2");
748
- syncAvatarToPlatform();
748
+ syncAvatarToCloud();
749
749
  await settle();
750
750
 
751
751
  _resetSyncAvatarStateForTests();
752
752
  writeRaster("a.png", png("a-rewritten"));
753
- syncAvatarToPlatform();
753
+ syncAvatarToCloud();
754
754
  await settle();
755
755
 
756
756
  expect(patches.map((p) => p.path)).toEqual([
@@ -764,17 +764,17 @@ describe("syncAvatarToPlatform", () => {
764
764
  });
765
765
 
766
766
  test("a persisted key older than the TTL re-uploads once and is refreshed", async () => {
767
- syncAvatarToPlatform();
767
+ syncAvatarToCloud();
768
768
  await settle();
769
769
  const stale = JSON.parse(readFileSync(syncStatePath, "utf-8"));
770
770
  stale.syncedAt = Date.now() - AVATAR_SYNC_KEY_TTL_MS - 24 * 60 * 60 * 1000;
771
771
  writeFileSync(syncStatePath, JSON.stringify(stale));
772
772
 
773
773
  _resetSyncAvatarStateForTests();
774
- syncAvatarToPlatform();
774
+ syncAvatarToCloud();
775
775
  await settle();
776
776
  _resetSyncAvatarStateForTests();
777
- syncAvatarToPlatform();
777
+ syncAvatarToCloud();
778
778
  await settle();
779
779
 
780
780
  expect(patches).toHaveLength(2);
@@ -787,17 +787,17 @@ describe("syncAvatarToPlatform", () => {
787
787
  const start = Date.now();
788
788
  setSystemTime(new Date(start));
789
789
  try {
790
- syncAvatarToPlatform();
790
+ syncAvatarToCloud();
791
791
  await settle();
792
792
  setSystemTime(new Date(start + AVATAR_SYNC_KEY_TTL_MS - 1));
793
- syncAvatarToPlatform();
793
+ syncAvatarToCloud();
794
794
  await settle();
795
795
  expect(patches).toHaveLength(1);
796
796
 
797
797
  setSystemTime(new Date(start + AVATAR_SYNC_KEY_TTL_MS));
798
- syncAvatarToPlatform();
798
+ syncAvatarToCloud();
799
799
  await settle();
800
- syncAvatarToPlatform();
800
+ syncAvatarToCloud();
801
801
  await settle();
802
802
  } finally {
803
803
  setSystemTime();
@@ -828,7 +828,7 @@ describe("syncAvatarToPlatform", () => {
828
828
  return realSetTimeout(fn, delay);
829
829
  }) as typeof setTimeout);
830
830
  try {
831
- syncAvatarToPlatform();
831
+ syncAvatarToCloud();
832
832
  await settle();
833
833
  expect(patches).toHaveLength(1);
834
834
  expect(armed).toHaveLength(1);
@@ -848,7 +848,7 @@ describe("syncAvatarToPlatform", () => {
848
848
  test("a corrupt persisted key re-uploads", async () => {
849
849
  mkdirSync(dirname(syncStatePath), { recursive: true });
850
850
  writeFileSync(syncStatePath, "{not json");
851
- syncAvatarToPlatform();
851
+ syncAvatarToCloud();
852
852
  await settle();
853
853
 
854
854
  expect(patches).toHaveLength(1);
@@ -856,18 +856,18 @@ describe("syncAvatarToPlatform", () => {
856
856
 
857
857
  test("a failed PATCH leaves the persisted key untouched", async () => {
858
858
  respond = () => new Response("nope", { status: 500 });
859
- syncAvatarToPlatform();
859
+ syncAvatarToCloud();
860
860
  await settle();
861
861
 
862
862
  expect(() => readFileSync(syncStatePath)).toThrow();
863
863
  });
864
864
 
865
- test("no-op without a platform client or assistant id", async () => {
865
+ test("no-op without a cloud client or assistant id", async () => {
866
866
  mockClient = null;
867
- syncAvatarToPlatform();
867
+ syncAvatarToCloud();
868
868
  await settle();
869
869
  mockClient = makeClient("");
870
- syncAvatarToPlatform();
870
+ syncAvatarToCloud();
871
871
  await settle();
872
872
 
873
873
  expect(patches).toHaveLength(0);
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Sync the avatar raster to the platform Assistant record.
2
+ * Sync the avatar raster to the cloud Assistant record.
3
3
  *
4
4
  * Every avatar publish (routes and the fs watcher) and daemon startup enqueue
5
5
  * a sync through the shared platform PATCH queue. The current avatar state is
@@ -16,9 +16,9 @@
16
16
  * (API-key auth cannot read the record to verify it).
17
17
  * `avatar_base64: null` is sent only when the avatar is actually removed; a
18
18
  * non-none avatar whose raster is missing (image PNG gone, character
19
- * re-render unavailable) is skipped so the platform keeps the last synced
19
+ * re-render unavailable) is skipped so the cloud keeps the last synced
20
20
  * copy. A removal nulls the notification field too, and falls back to nulling
21
- * the display avatar alone, so a platform that rejects the notification field
21
+ * the display avatar alone, so a cloud that rejects the notification field
22
22
  * cannot block clearing the avatar. Its key carries the spec version as the
23
23
  * non-empty key does, so an installation still holding the key of a removal
24
24
  * that predates the notification field re-sends once instead of deduping
@@ -34,13 +34,13 @@
34
34
  * codec for the source) from latching for the key's whole lifetime: the key
35
35
  * changes the moment the cause clears, so the disc goes up on the next sync.
36
36
  * When the render is unavailable the key is omitted rather than nulled, so
37
- * the platform keeps the copy it holds. The state is read through the accent
37
+ * the cloud keeps the copy it holds. The state is read through the accent
38
38
  * backfill, so a manifest written before accents were persisted has its
39
39
  * accent derived and stored before the key is built and the disc is drawn,
40
40
  * rather than shipping the neutral fallback until something else repairs it.
41
41
  * A render that fails inside the body, after the key promised a disc, hands
42
42
  * the queue the disc-less key instead, so the next sync tries again rather
43
- * than recording a disc that never went up. If the platform rejects the field
43
+ * than recording a disc that never went up. If the cloud rejects the field
44
44
  * outright with a 400, the queue re-sends the display avatar alone, and under
45
45
  * the disc key: the 400 is a verdict on this render, so re-drawing it would
46
46
  * only take the same 400 on every later enqueue. The key still moves when the
@@ -55,12 +55,12 @@ import { dirname, join } from "node:path";
55
55
  import { NOTIFICATION_AVATAR_SPEC_VERSION } from "@mycadet/avatar-manifest/notification-avatar";
56
56
 
57
57
  import {
58
- createPlatformPatchQueue,
58
+ type CloudPatchQueue,
59
+ createCloudPatchQueue,
59
60
  type PatchBodyResult,
60
61
  type PatchPayload,
61
- type PlatformPatchQueue,
62
62
  type SyncedKey,
63
- } from "../platform/platform-patch-queue.js";
63
+ } from "../cloud/cloud-patch-queue.js";
64
64
  import { detectMediaType } from "../tools/shared/filesystem/image-read.js";
65
65
  import { getLogger } from "../util/logger.js";
66
66
  import { getWorkspaceDir } from "../util/platform.js";
@@ -101,7 +101,7 @@ const UPLOADABLE_TYPES: ReadonlySet<string> = new Set([
101
101
  const SYNC_STATE_SUBPATH = ["platform-sync", "avatar.json"];
102
102
  export const AVATAR_SYNC_KEY_TTL_MS = 7 * 24 * 60 * 60 * 1000;
103
103
 
104
- let queue: PlatformPatchQueue<void> | null = null;
104
+ let queue: CloudPatchQueue<void> | null = null;
105
105
 
106
106
  /** Recreates the queue so the next sync re-seeds its dedup key from disk. */
107
107
  export function _resetSyncAvatarStateForTests(): void {
@@ -110,12 +110,12 @@ export function _resetSyncAvatarStateForTests(): void {
110
110
  }
111
111
 
112
112
  /**
113
- * Enqueue a best-effort push of the current avatar raster to the platform.
114
- * No-op when the platform client cannot be created or no assistant id is
113
+ * Enqueue a best-effort push of the current avatar raster to the cloud.
114
+ * No-op when the cloud client cannot be created or no assistant id is
115
115
  * configured, or when the raster's etag matches the last successful sync.
116
116
  */
117
- export function syncAvatarToPlatform(): void {
118
- queue ??= createPlatformPatchQueue({
117
+ export function syncAvatarToCloud(): void {
118
+ queue ??= createCloudPatchQueue({
119
119
  log,
120
120
  label: "avatar",
121
121
  buildPayload,
@@ -207,7 +207,7 @@ async function buildPayload(): Promise<PatchPayload | undefined> {
207
207
  // draws again.
208
208
  return { body: rasterOnly, key: keyFor(NONE_KEY) };
209
209
  }
210
- // A 400 is the platform refusing this render rather than missing it,
210
+ // A 400 is the cloud refusing this render rather than missing it,
211
211
  // so the reduced send records the disc key: re-drawing would take the
212
212
  // same 400 on every later enqueue.
213
213
  return withNotificationFallback(
@@ -239,7 +239,7 @@ function sha256(bytes: Buffer): string {
239
239
  /**
240
240
  * Reads the raster through the fd-validated, avatar-dir-contained path and
241
241
  * refuses anything that does not sniff as an image, so a symlinked or
242
- * swapped `avatar-image.png` never ships host bytes to the platform.
242
+ * swapped `avatar-image.png` never ships host bytes to the cloud.
243
243
  */
244
244
  function readRaster(path: string): Buffer | undefined {
245
245
  const bytes = readContainedAvatarRaster(path);
@@ -165,7 +165,7 @@ export function writeTraitsAndRenderAvatar(
165
165
  message:
166
166
  "Avatar PNG rendering is unavailable on this platform because the " +
167
167
  "@resvg/resvg-js native binding failed to load. Reinstall dependencies " +
168
- "to pull the platform-specific optional package.",
168
+ "to pull the cloud-specific optional package.",
169
169
  };
170
170
  }
171
171