@mycadet/assistant 0.12.7 → 0.12.9

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 (904) 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 +2 -2
  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/package.json +1 -1
  19. package/node_modules/@mycadet/ces-client/src/__tests__/ces-client.test.ts +14 -14
  20. package/node_modules/@mycadet/ces-client/src/rpc-client.ts +1 -1
  21. package/node_modules/@mycadet/credential-storage/src/oauth-runtime.ts +1 -1
  22. package/node_modules/@mycadet/credential-storage/src/static-credentials.ts +1 -1
  23. package/node_modules/@mycadet/environments/src/seeds.ts +6 -6
  24. package/node_modules/@mycadet/environments/src/shell.test.ts +1 -1
  25. package/node_modules/@mycadet/environments/src/types.ts +6 -6
  26. package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/package.json +2 -2
  27. package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/{platform-credential.ts → cloud-credential.ts} +9 -9
  28. package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/handles.ts +3 -3
  29. package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/index.ts +1 -1
  30. package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/ingress.ts +11 -5
  31. package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/remote-web-pairing.ts +1 -1
  32. package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/rpc.ts +14 -14
  33. package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/trust-rules.ts +5 -5
  34. package/node_modules/@mycadet/gateway-client/src/binding-strength-contract.ts +5 -5
  35. package/node_modules/@mycadet/gateway-client/src/gateway-ipc-contracts.ts +1 -1
  36. package/node_modules/@mycadet/gateway-client/src/inbound-contract.ts +2 -2
  37. package/node_modules/@mycadet/gateway-client/src/outbound-contract.ts +1 -1
  38. package/node_modules/@mycadet/service-contracts/package.json +2 -2
  39. package/node_modules/@mycadet/service-contracts/src/{platform-credential.ts → cloud-credential.ts} +9 -9
  40. package/node_modules/@mycadet/service-contracts/src/handles.ts +3 -3
  41. package/node_modules/@mycadet/service-contracts/src/index.ts +1 -1
  42. package/node_modules/@mycadet/service-contracts/src/ingress.ts +11 -5
  43. package/node_modules/@mycadet/service-contracts/src/remote-web-pairing.ts +1 -1
  44. package/node_modules/@mycadet/service-contracts/src/rpc.ts +14 -14
  45. package/node_modules/@mycadet/service-contracts/src/trust-rules.ts +5 -5
  46. package/openapi.yaml +6804 -799
  47. package/package.json +2 -2
  48. package/scripts/build-test-fixtures.ts +1 -1
  49. package/scripts/probe-skill-retrieval.ts +1 -1
  50. package/scripts/sync-llm-catalog.ts +2 -2
  51. package/scripts/voice-ttft-spike.ts +2 -2
  52. package/src/__tests__/adaptive-thinking-repair.test.ts +4 -4
  53. package/src/__tests__/agent-loop-override-profile.test.ts +4 -4
  54. package/src/__tests__/agent-loop-subagent-billing-headers.test.ts +1 -1
  55. package/src/__tests__/anthropic-provider.test.ts +2 -2
  56. package/src/__tests__/available-skills.test.ts +11 -12
  57. package/src/__tests__/avatar-identity-sync.test.ts +1 -1
  58. package/src/__tests__/byok-default-profile-ensure.test.ts +7 -7
  59. package/src/__tests__/call-domain.test.ts +1 -1
  60. package/src/__tests__/call-site-routing-connection-auto-resolve.test.ts +2 -2
  61. package/src/__tests__/catalog-files.test.ts +10 -10
  62. package/src/__tests__/catalog-install-normalize.test.ts +3 -3
  63. package/src/__tests__/channel-availability-routes.test.ts +8 -8
  64. package/src/__tests__/channel-readiness-routes.test.ts +4 -4
  65. package/src/__tests__/channel-readiness-service.test.ts +14 -14
  66. package/src/__tests__/channel-readiness-telegram-remote.test.ts +1 -1
  67. package/src/__tests__/chat-reveal-guard-priming.test.ts +5 -6
  68. package/src/__tests__/checker.test.ts +6 -6
  69. package/src/__tests__/clawhub.test.ts +1 -1
  70. package/src/__tests__/{platform-callback-registration.test.ts → cloud-callback-registration.test.ts} +66 -90
  71. package/src/__tests__/{platform-client-verify-credential.test.ts → cloud-client-verify-credential.test.ts} +14 -14
  72. package/src/__tests__/{managed-credential-catalog-cli.test.ts → cloud-credential-catalog-cli.test.ts} +41 -41
  73. package/src/__tests__/{managed-fallback-dispatch.test.ts → cloud-fallback-dispatch.test.ts} +21 -16
  74. package/src/__tests__/{managed-profile-guard.test.ts → cloud-profile-guard.test.ts} +77 -75
  75. package/src/__tests__/{platform-proxy-context.test.ts → cloud-proxy-context.test.ts} +44 -44
  76. package/src/__tests__/{managed-speech-defaults.test.ts → cloud-speech-defaults.test.ts} +41 -41
  77. package/src/__tests__/{managed-store.test.ts → cloud-store.test.ts} +99 -99
  78. package/src/__tests__/compaction-events.test.ts +7 -5
  79. package/src/__tests__/config-loader-backfill.test.ts +65 -65
  80. package/src/__tests__/config-loader-cloud-defaults.test.ts +373 -0
  81. package/src/__tests__/config-loader-corrupt.test.ts +1 -1
  82. package/src/__tests__/config-loader-validation-reset-notice.test.ts +1 -1
  83. package/src/__tests__/config-schema.test.ts +3 -3
  84. package/src/__tests__/{config-set-platform-guard.test.ts → config-set-cloud-guard.test.ts} +6 -6
  85. package/src/__tests__/config-set-route.test.ts +12 -8
  86. package/src/__tests__/config-watcher-cleanup-throttle.test.ts +0 -8
  87. package/src/__tests__/config-watcher.test.ts +1 -1
  88. package/src/__tests__/contacts-write.test.ts +1 -1
  89. package/src/__tests__/conversation-agent-loop.test.ts +2 -2
  90. package/src/__tests__/conversation-app-control-instantiation.test.ts +18 -18
  91. package/src/__tests__/conversation-error.test.ts +45 -45
  92. package/src/__tests__/conversation-inference-profile-route.test.ts +4 -4
  93. package/src/__tests__/conversation-rendered-delegation-state.test.ts +4 -4
  94. package/src/__tests__/conversation-skill-tools.test.ts +7 -8
  95. package/src/__tests__/conversation-slash.test.ts +2 -2
  96. package/src/__tests__/conversation-speed-override.test.ts +8 -10
  97. package/src/__tests__/conversation-summarize-up-to.test.ts +4 -4
  98. package/src/__tests__/conversation-surfaces-activation-emit.test.ts +1 -1
  99. package/src/__tests__/conversation-wait-for-idle.test.ts +7 -5
  100. package/src/__tests__/credential-execution-api-key-propagation.test.ts +5 -5
  101. package/src/__tests__/{credential-execution-managed-contract.test.ts → credential-execution-cloud-contract.test.ts} +24 -24
  102. package/src/__tests__/credential-health-service.test.ts +28 -40
  103. package/src/__tests__/credential-routes.test.ts +85 -165
  104. package/src/__tests__/credential-security-invariants.test.ts +6 -7
  105. package/src/__tests__/custom-profile-ensure.test.ts +1 -1
  106. package/src/__tests__/date-context.test.ts +1 -1
  107. package/src/__tests__/default-profile-catalog-fallback.test.ts +15 -15
  108. package/src/__tests__/delete-managed-skill-tool.test.ts +8 -8
  109. package/src/__tests__/discord-callback-round-trip.test.ts +1 -1
  110. package/src/__tests__/disk-usage.test.ts +3 -3
  111. package/src/__tests__/email-invite-adapter.test.ts +5 -5
  112. package/src/__tests__/{embedding-managed-proxy-selection.test.ts → embedding-cloud-proxy-selection.test.ts} +44 -43
  113. package/src/__tests__/emit-signal-routing-intent.test.ts +13 -15
  114. package/src/__tests__/events-dev-bypass-actor.test.ts +2 -2
  115. package/src/__tests__/fallback-breaker.test.ts +7 -7
  116. package/src/__tests__/feature-flag-test-helpers.ts +106 -0
  117. package/src/__tests__/gateway-flag-listener.test.ts +1 -1
  118. package/src/__tests__/gemini-image-service.test.ts +2 -2
  119. package/src/__tests__/gemini-provider.test.ts +5 -5
  120. package/src/__tests__/get-skill-detail-audit.test.ts +134 -288
  121. package/src/__tests__/guardian-verification-voice-binding.test.ts +1 -1
  122. package/src/__tests__/handlers-skills-memory-v2-reseed.test.ts +5 -5
  123. package/src/__tests__/host-cu-routes-targeted.test.ts +8 -8
  124. package/src/__tests__/image-credentials.test.ts +13 -13
  125. package/src/__tests__/inbound-admitted-introduction-nudge.test.ts +14 -6
  126. package/src/__tests__/inbound-trust-verdict.test.ts +14 -6
  127. package/src/__tests__/inference-no-mode-boot-e2e.test.ts +11 -11
  128. package/src/__tests__/inference-profile-session-handler.test.ts +7 -7
  129. package/src/__tests__/inference-profile-session-ipc.test.ts +5 -5
  130. package/src/__tests__/inference-profile-validation-jev.test.ts +1 -1
  131. package/src/__tests__/init-feature-flag-overrides.test.ts +40 -24
  132. package/src/__tests__/input-repairs.test.ts +1 -1
  133. package/src/__tests__/install-skill-routing.test.ts +10 -8
  134. package/src/__tests__/integration-status.test.ts +5 -5
  135. package/src/__tests__/internal-telemetry-routes.test.ts +3 -3
  136. package/src/__tests__/invite-routes-http.test.ts +1 -1
  137. package/src/__tests__/llm-catalog-parity.test.ts +5 -7
  138. package/src/__tests__/llm-request-log-source-clickhouse.test.ts +2 -2
  139. package/src/__tests__/llm-resolver-override-or-default.test.ts +3 -3
  140. package/src/__tests__/llm-resolver.test.ts +1 -1
  141. package/src/__tests__/llm-schema-fallback-profile.test.ts +25 -19
  142. package/src/__tests__/llm-usage-store.test.ts +1 -1
  143. package/src/__tests__/managed-skill-lifecycle.test.ts +12 -12
  144. package/src/__tests__/mcp-abort-signal.test.ts +1 -2
  145. package/src/__tests__/mcp-client-auth.test.ts +1 -2
  146. package/src/__tests__/mcp-config-secret-boundary.test.ts +44 -40
  147. package/src/__tests__/mcp-tool-annotations-risk.test.ts +1 -2
  148. package/src/__tests__/media-generate-image.test.ts +30 -30
  149. package/src/__tests__/memory-config-file-parity.test.ts +6 -6
  150. package/src/__tests__/migration-export-to-gcs.test.ts +4 -4
  151. package/src/__tests__/migration-import-commit-http.test.ts +1 -1
  152. package/src/__tests__/mtime-cache.test.ts +2 -2
  153. package/src/__tests__/{notification-platform-adapter.test.ts → notification-cloud-adapter.test.ts} +39 -39
  154. package/src/__tests__/notification-deep-link.test.ts +40 -40
  155. package/src/__tests__/oauth-apps-routes.test.ts +3 -3
  156. package/src/__tests__/oauth-cli.test.ts +9 -9
  157. package/src/__tests__/oauth-commands-routes.test.ts +16 -16
  158. package/src/__tests__/oauth-connect-orchestrator.test.ts +2 -2
  159. package/src/__tests__/oauth-provider-serializer.test.ts +11 -11
  160. package/src/__tests__/oauth-providers-routes.test.ts +12 -12
  161. package/src/__tests__/oauth-store.test.ts +1 -1
  162. package/src/__tests__/oauth2-gateway-transport.test.ts +3 -3
  163. package/src/__tests__/onboarding-persona-write.test.ts +2 -2
  164. package/src/__tests__/openai-image-service.test.ts +2 -2
  165. package/src/__tests__/openai-responses-cutover-guard.test.ts +2 -2
  166. package/src/__tests__/openai-responses-provider.test.ts +1 -1
  167. package/src/__tests__/path-policy.test.ts +4 -4
  168. package/src/__tests__/personal-memory-auth-bypass.test.ts +1 -1
  169. package/src/__tests__/platform-bash-auto-approve.test.ts +18 -18
  170. package/src/__tests__/plugin-api-model-profiles.test.ts +1 -1
  171. package/src/__tests__/plugin-api-provider.test.ts +1 -1
  172. package/src/__tests__/plugin-api-store-credential.test.ts +4 -1
  173. package/src/__tests__/plugin-api-webhook-url.test.ts +4 -5
  174. package/src/__tests__/plugin-import-boundary-guard.test.ts +8 -39
  175. package/src/__tests__/plugin-import-boundary-reverse-guard.test.ts +2 -2
  176. package/src/__tests__/{provider-platform-proxy-integration.test.ts → provider-cloud-proxy-integration.test.ts} +70 -72
  177. package/src/__tests__/provider-commit-message-generator.test.ts +1 -1
  178. package/src/__tests__/provider-connections-backfill.test.ts +9 -9
  179. package/src/__tests__/provider-error-scenarios.test.ts +8 -8
  180. package/src/__tests__/provider-registry-ollama.test.ts +1 -1
  181. package/src/__tests__/provider-send-message-override-profile.test.ts +5 -5
  182. package/src/__tests__/registry.test.ts +3 -3
  183. package/src/__tests__/requests-mock.ts +972 -0
  184. package/src/__tests__/resolve-trust-class.test.ts +1 -1
  185. package/src/__tests__/resource-pressure-guard.test.ts +6 -6
  186. package/src/__tests__/resource-pressure-routes.test.ts +5 -5
  187. package/src/__tests__/retry-fallback-escalation.test.ts +5 -5
  188. package/src/__tests__/sanitize-config-for-transfer.test.ts +1 -1
  189. package/src/__tests__/scaffold-managed-skill-tool.test.ts +97 -97
  190. package/src/__tests__/schedule-store.test.ts +1 -1
  191. package/src/__tests__/search-skills-unified.test.ts +9 -7
  192. package/src/__tests__/{secret-routes-platform-proxy.test.ts → secret-routes-cloud-proxy.test.ts} +48 -95
  193. package/src/__tests__/secret-routes-scrub.test.ts +2 -59
  194. package/src/__tests__/secure-keys.test.ts +1 -1
  195. package/src/__tests__/skill-load-plugin-scope.test.ts +2 -2
  196. package/src/__tests__/skill-load-tool.test.ts +1 -1
  197. package/src/__tests__/skill-projection-feature-flag.test.ts +0 -19
  198. package/src/__tests__/skill-projection.benchmark.test.ts +5 -7
  199. package/src/__tests__/skill-tool-factory.test.ts +1 -1
  200. package/src/__tests__/skills-file-content-endpoint.test.ts +222 -536
  201. package/src/__tests__/skills-files-catalog-fallback.test.ts +259 -577
  202. package/src/__tests__/skills.test.ts +1 -1
  203. package/src/__tests__/slim-skill-category.test.ts +11 -9
  204. package/src/__tests__/stt-stream-session.test.ts +3 -3
  205. package/src/__tests__/subagent-call-site-routing.test.ts +1 -1
  206. package/src/__tests__/subagent-disposal.test.ts +5 -5
  207. package/src/__tests__/subagent-fork-notifications.test.ts +4 -4
  208. package/src/__tests__/subagent-fork-spawn.test.ts +5 -5
  209. package/src/__tests__/subagent-manager-notify.test.ts +5 -5
  210. package/src/__tests__/subagent-tool-gate-mode.test.ts +2 -2
  211. package/src/__tests__/system-prompt.test.ts +1 -1
  212. package/src/__tests__/telegram-bot-username-resolution.test.ts +34 -52
  213. package/src/__tests__/telegram-config.test.ts +16 -16
  214. package/src/__tests__/telephony-tts-guard.test.ts +13 -13
  215. package/src/__tests__/test-preload.ts +17 -7
  216. package/src/__tests__/tool-audit.test.ts +1 -1
  217. package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +7 -5
  218. package/src/__tests__/tool-executor-lifecycle-events.test.ts +1 -1
  219. package/src/__tests__/turn-events-store.test.ts +1 -1
  220. package/src/__tests__/twilio-routes.test.ts +2 -1
  221. package/src/__tests__/ui-choice-copy-surfaces.test.ts +1 -1
  222. package/src/__tests__/unified-turn-context-client-os.test.ts +1 -1
  223. package/src/__tests__/validate-input.test.ts +5 -5
  224. package/src/__tests__/verification-outbound-delivery.test.ts +1 -1
  225. package/src/__tests__/voice-config-update.test.ts +15 -15
  226. package/src/__tests__/voice-ingress-preflight.test.ts +4 -4
  227. package/src/__tests__/web-search.test.ts +340 -859
  228. package/src/__tests__/workspace-git-service.test.ts +1 -1
  229. package/src/__tests__/workspace-migration-082-backfill-managed-profile-labels.test.ts +12 -12
  230. package/src/__tests__/workspace-migration-087-memory-router-balanced-profile.test.ts +1 -1
  231. package/src/__tests__/workspace-migration-090-memory-router-cost-optimized-profile.test.ts +1 -1
  232. package/src/__tests__/workspace-migration-100-upgrade-quality-profile-to-fable-5.test.ts +1 -1
  233. package/src/__tests__/workspace-migration-103-upgrade-quality-profile-to-opus-4-8.test.ts +1 -1
  234. package/src/__tests__/workspace-migration-110-flip-balanced-profile-to-together.test.ts +1 -1
  235. package/src/__tests__/workspace-migration-113-swap-balanced-profile-to-glm-5p2.test.ts +1 -1
  236. package/src/__tests__/workspace-migration-114-swap-quality-profile-to-opus.test.ts +1 -1
  237. package/src/__tests__/workspace-migration-123-swap-quality-profile-to-fable.test.ts +1 -1
  238. package/src/__tests__/workspace-migration-125-repoint-managed-connections-to-cadet.test.ts +3 -3
  239. package/src/__tests__/workspace-migration-126-strip-managed-profile-bodies.test.ts +9 -9
  240. package/src/__tests__/workspace-migration-127-backfill-default-provider.test.ts +11 -11
  241. package/src/__tests__/workspace-migration-130-speech-mode-to-provider.test.ts +3 -3
  242. package/src/__tests__/workspace-migration-132-web-search-mode-to-provider.test.ts +6 -6
  243. package/src/__tests__/workspace-migration-133-collapse-provider-connections.test.ts +3 -3
  244. package/src/__tests__/workspace-migration-134-image-generation-mode-to-provider.test.ts +6 -6
  245. package/src/__tests__/workspace-migration-136-repair-stale-fireworks-kimi-model-id.test.ts +1 -1
  246. package/src/__tests__/workspace-migration-137-repair-retired-fireworks-minimax-model-id.test.ts +1 -1
  247. package/src/__tests__/workspace-migration-146-repair-retired-fireworks-deepseek-flash-model-id.test.ts +1 -1
  248. package/src/__tests__/workspace-migration-147-rename-colliding-backup-profile-names.test.ts +1 -1
  249. package/src/__tests__/workspace-migration-151-repair-renamed-fireworks-deepseek-pro-model-id.test.ts +1 -1
  250. package/src/__tests__/workspace-migration-152-repair-retired-fireworks-minimax-m2p7-model-id.test.ts +1 -1
  251. package/src/__tests__/workspace-migration-159-rename-colliding-jev-profile-name.test.ts +1 -1
  252. package/src/__tests__/workspace-migration-160-repair-retired-fireworks-model-ids.test.ts +1 -1
  253. package/src/__tests__/workspace-migration-161-repair-retired-fireworks-glm-5p2-model-id.test.ts +1 -1
  254. package/src/api/events/cloud-disconnected.ts +21 -0
  255. package/src/api/events/host-bash.ts +1 -1
  256. package/src/api/events/host-cu.ts +1 -1
  257. package/src/api/events/host-file.ts +1 -1
  258. package/src/api/events/notification-intent.ts +1 -1
  259. package/src/api/events/show-cloud-login.ts +18 -0
  260. package/src/api/index.ts +11 -11
  261. package/src/api/responses/home.ts +1 -1
  262. package/src/api/surfaces.ts +4 -4
  263. package/src/approvals/guardian-request-resolvers.ts +2 -2
  264. package/src/avatar/accent-backfill.ts +1 -1
  265. package/src/avatar/identity-avatar.ts +1 -1
  266. package/src/avatar/notification-avatar.test.ts +2 -2
  267. package/src/avatar/notification-avatar.ts +2 -2
  268. package/src/avatar/resvg-lazy.test.ts +1 -1
  269. package/src/avatar/resvg-lazy.ts +3 -3
  270. package/src/avatar/sync-avatar.test.ts +76 -76
  271. package/src/avatar/sync-avatar.ts +15 -15
  272. package/src/avatar/traits-png-sync.ts +1 -1
  273. package/src/background-wake/background-wake-routes.test.ts +39 -39
  274. package/src/background-wake/{platform-client.test.ts → cloud-client.test.ts} +11 -11
  275. package/src/background-wake/{platform-client.ts → cloud-client.ts} +14 -14
  276. package/src/background-wake/publisher.ts +4 -4
  277. package/src/background-wake/wake-intent-hooks.test.ts +3 -3
  278. package/src/calls/__tests__/call-controller.test.ts +2 -2
  279. package/src/calls/__tests__/voice-session-bridge.test.ts +1 -1
  280. package/src/calls/call-domain.ts +1 -1
  281. package/src/calls/resolve-call-tts-provider.ts +6 -6
  282. package/src/calls/telephony-credential-preflight.ts +3 -3
  283. package/src/calls/telephony-tts-capability.ts +5 -6
  284. package/src/calls/tts-call-strategy.ts +1 -1
  285. package/src/calls/voice-escalation-judge.ts +1 -1
  286. package/src/calls/voice-ingress-preflight.ts +4 -4
  287. package/src/cli/bundled-modules.ts +1 -1
  288. package/src/cli/commands/__tests__/apps.test.ts +18 -53
  289. package/src/cli/commands/__tests__/plugins.test.ts +13 -13
  290. package/src/cli/commands/__tests__/tts.test.ts +1 -1
  291. package/src/cli/commands/auth.help.ts +3 -3
  292. package/src/cli/commands/auth.ts +2 -4
  293. package/src/cli/commands/browser.help.ts +2 -2
  294. package/src/cli/commands/channels/index.help.ts +2 -2
  295. package/src/cli/commands/channels/index.ts +1 -1
  296. package/src/cli/commands/channels/send.ts +1 -1
  297. package/src/cli/commands/cloud/__tests__/callback-routes-list.test.ts +2 -2
  298. package/src/cli/commands/cloud/__tests__/connect.test.ts +1 -1
  299. package/src/cli/commands/cloud/__tests__/disconnect.test.ts +3 -4
  300. package/src/cli/commands/cloud/connect.ts +2 -2
  301. package/src/cli/commands/cloud/credits-format.ts +1 -1
  302. package/src/cli/commands/cloud/index.help.ts +35 -35
  303. package/src/cli/commands/cloud/index.ts +1 -1
  304. package/src/cli/commands/config.ts +2 -2
  305. package/src/cli/commands/credentials.ts +10 -12
  306. package/src/cli/commands/domain.ts +1 -1
  307. package/src/cli/commands/email.help.ts +1 -1
  308. package/src/cli/commands/email.ts +2 -2
  309. package/src/cli/commands/gateway.help.ts +1 -1
  310. package/src/cli/commands/gateway.ts +1 -1
  311. package/src/cli/commands/image-generation.help.ts +1 -1
  312. package/src/cli/commands/inference-providers.ts +1 -1
  313. package/src/cli/commands/inference.help.ts +2 -2
  314. package/src/cli/commands/memory/index.help.ts +1 -1
  315. package/src/cli/commands/oauth/connect.test.ts +2 -2
  316. package/src/cli/commands/oauth/connect.ts +1 -1
  317. package/src/cli/commands/oauth/index.help.ts +5 -5
  318. package/src/cli/commands/oauth/providers.ts +2 -2
  319. package/src/cli/commands/oauth/shared.ts +3 -3
  320. package/src/cli/commands/plugins.help.ts +2 -3
  321. package/src/cli/commands/plugins.ts +5 -5
  322. package/src/cli/commands/roadmap.help.ts +1 -1
  323. package/src/cli/commands/telemetry.help.ts +2 -2
  324. package/src/cli/commands/telemetry.ts +2 -2
  325. package/src/cli/commands/tts.help.ts +3 -3
  326. package/src/cli/commands/webhooks.help.ts +9 -9
  327. package/src/cli/commands/webhooks.ts +1 -1
  328. package/src/cli/lib/__tests__/inspect-plugin.test.ts +8 -8
  329. package/src/cli/lib/__tests__/{install-from-platform.test.ts → install-from-cloud.test.ts} +54 -54
  330. package/src/cli/lib/__tests__/plugin-catalog-cache.test.ts +18 -18
  331. package/src/cli/lib/__tests__/{plugin-catalog-platform.test.ts → plugin-catalog-cloud.test.ts} +2 -2
  332. package/src/cli/lib/__tests__/plugin-catalog-local.test.ts +1 -1
  333. package/src/cli/lib/__tests__/plugin-catalog-resolve.test.ts +9 -9
  334. package/src/cli/lib/__tests__/plugin-details.test.ts +10 -10
  335. package/src/cli/lib/__tests__/plugins-install-offline.test.ts +24 -24
  336. package/src/cli/lib/bundled-marketplace.json +1 -1
  337. package/src/cli/lib/inspect-plugin.ts +2 -2
  338. package/src/cli/lib/{install-from-platform.ts → install-from-cloud.ts} +29 -29
  339. package/src/cli/lib/install-from-github.ts +4 -4
  340. package/src/cli/lib/plugin-catalog-cache.ts +7 -7
  341. package/src/cli/lib/{plugin-catalog-platform.ts → plugin-catalog-cloud.ts} +6 -6
  342. package/src/cli/lib/plugin-catalog-local.ts +2 -2
  343. package/src/cli/lib/publish-plugin.ts +9 -10
  344. package/src/cli/lib/search-plugins.ts +2 -2
  345. package/src/{platform → cloud}/client.test.ts +85 -86
  346. package/src/{platform → cloud}/client.ts +38 -46
  347. package/src/{platform/platform-patch-queue.test.ts → cloud/cloud-patch-queue.test.ts} +6 -9
  348. package/src/{platform/platform-patch-queue.ts → cloud/cloud-patch-queue.ts} +11 -11
  349. package/src/{platform/managed-speech.test.ts → cloud/cloud-speech.test.ts} +19 -19
  350. package/src/{platform/managed-speech.ts → cloud/cloud-speech.ts} +41 -41
  351. package/src/{platform → cloud}/consent-cache.test.ts +5 -5
  352. package/src/{platform → cloud}/consent-cache.ts +8 -8
  353. package/src/cloud/feature-gate.ts +8 -0
  354. package/src/{platform → cloud}/sync-identity.test.ts +4 -4
  355. package/src/{platform → cloud}/sync-identity.ts +6 -6
  356. package/src/config/__tests__/{platform-identity.test.ts → cloud-identity.test.ts} +54 -56
  357. package/src/config/__tests__/{platform-rehydration.test.ts → cloud-rehydration.test.ts} +47 -80
  358. package/src/config/__tests__/default-profile-catalog.test.ts +12 -12
  359. package/src/config/__tests__/default-provider.test.ts +4 -4
  360. package/src/config/__tests__/deployment-context-defaults.test.ts +23 -23
  361. package/src/config/__tests__/{jev-managed-profile.test.ts → jev-cloud-profile.test.ts} +3 -5
  362. package/src/config/__tests__/loader-callsite-strip-fallback.test.ts +2 -2
  363. package/src/config/__tests__/loader-last-known-good.test.ts +6 -6
  364. package/src/config/__tests__/loader-sparse-array-cleanup.test.ts +2 -2
  365. package/src/config/__tests__/profile-materialization.test.ts +7 -7
  366. package/src/config/__tests__/seed-default-provider.test.ts +17 -17
  367. package/src/config/__tests__/substrate-twin-shadowing.test.ts +36 -26
  368. package/src/config/__tests__/sync-gated-profiles.test.ts +20 -20
  369. package/src/config/__tests__/webhook-routing.test.ts +51 -51
  370. package/src/config/bundled-skills/computer-use/TOOLS.json +12 -12
  371. package/src/config/bundled-skills/messaging/SKILL.md +8 -8
  372. package/src/config/bundled-skills/messaging/TOOLS.json +2 -2
  373. package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +1 -1
  374. package/src/config/bundled-skills/messaging/tools/shared.ts +1 -1
  375. package/src/config/bundled-skills/phone-calls/references/TROUBLESHOOTING.md +2 -2
  376. package/src/config/bundled-skills/settings/TOOLS.json +3 -3
  377. package/src/config/bundled-skills/settings/tools/shared.ts +1 -1
  378. package/src/config/bundled-skills/settings/tools/voice-config-update.ts +12 -12
  379. package/src/config/bundled-skills/skill-management/SKILL.md +3 -3
  380. package/src/config/bundled-skills/skill-management/TOOLS.json +8 -8
  381. package/src/config/bundled-skills/skill-management/tools/{delete-managed.ts → delete-cloud.ts} +2 -2
  382. package/src/config/bundled-skills/skill-management/tools/{scaffold-managed.ts → scaffold-cloud.ts} +2 -2
  383. package/src/config/call-site-defaults.ts +6 -6
  384. package/src/config/{platform-identity.ts → cloud-identity.ts} +39 -42
  385. package/src/config/cloud-rehydration.ts +35 -0
  386. package/src/config/{managed-speech-defaults.ts → cloud-speech-defaults.ts} +13 -13
  387. package/src/config/default-profile-catalog.ts +36 -38
  388. package/src/config/default-profile-names.ts +11 -11
  389. package/src/config/default-provider-resolution.ts +2 -2
  390. package/src/config/default-provider.ts +1 -1
  391. package/src/config/env-registry.ts +21 -26
  392. package/src/config/env.ts +33 -46
  393. package/src/config/feature-flag-registry.json +5 -5
  394. package/src/config/inference-profile-validation.ts +1 -1
  395. package/src/config/llm-resolver.ts +9 -10
  396. package/src/config/loader.ts +33 -17
  397. package/src/config/profile-materialization.ts +8 -8
  398. package/src/config/profile-text-generation.test.ts +1 -1
  399. package/src/config/sanitize-for-transfer.ts +1 -1
  400. package/src/config/schema.ts +6 -6
  401. package/src/config/schemas/__tests__/stt.test.ts +2 -2
  402. package/src/config/schemas/call-site-catalog.ts +1 -1
  403. package/src/config/schemas/channels.ts +8 -0
  404. package/src/config/schemas/{platform.ts → cloud.ts} +7 -6
  405. package/src/config/schemas/host-browser.ts +1 -0
  406. package/src/config/schemas/ingress.ts +29 -10
  407. package/src/config/schemas/llm.ts +36 -36
  408. package/src/config/schemas/memory-lifecycle.ts +11 -1
  409. package/src/config/schemas/services.ts +4 -4
  410. package/src/config/schemas/stt.ts +3 -3
  411. package/src/config/schemas/tts.ts +10 -5
  412. package/src/config/schemas/voice.ts +1 -1
  413. package/src/config/seed-inference-profiles.ts +19 -19
  414. package/src/config/skill-state.ts +2 -2
  415. package/src/config/skills.ts +4 -4
  416. package/src/config/substrate-twin-shadowing.ts +12 -17
  417. package/src/config/sync-gated-profiles.ts +8 -9
  418. package/src/config/webhook-routing.ts +19 -19
  419. package/src/contacts/contacts-write.ts +1 -1
  420. package/src/credential-execution/ces-runtime.ts +6 -6
  421. package/src/credential-execution/{managed-catalog.ts → cloud-catalog.ts} +24 -24
  422. package/src/credential-execution/prompted-credential.ts +2 -23
  423. package/src/credential-health/credential-health-service.ts +59 -70
  424. package/src/daemon/__tests__/can-spawn-subagents.test.ts +1 -1
  425. package/src/daemon/__tests__/conversation-tool-setup-exclude.test.ts +4 -4
  426. package/src/daemon/config-watcher.ts +2 -2
  427. package/src/daemon/conversation-agent-loop.ts +9 -9
  428. package/src/daemon/conversation-error.ts +36 -36
  429. package/src/daemon/conversation-skill-tools.ts +7 -7
  430. package/src/daemon/conversation-surfaces.ts +1 -1
  431. package/src/daemon/conversation-tool-setup.ts +2 -2
  432. package/src/daemon/conversation-turn-finalize.ts +1 -1
  433. package/src/daemon/conversation-workspace.ts +1 -1
  434. package/src/daemon/conversation.ts +1 -1
  435. package/src/daemon/credential-transcript-scrub.ts +32 -35
  436. package/src/daemon/daemon-readiness.ts +1 -1
  437. package/src/daemon/event-loop-watchdog.ts +2 -2
  438. package/src/daemon/handlers/config-ingress.ts +9 -9
  439. package/src/daemon/handlers/config-telegram.ts +6 -6
  440. package/src/daemon/handlers/skills.ts +20 -20
  441. package/src/daemon/host-cu-proxy.ts +1 -1
  442. package/src/daemon/lifecycle.ts +19 -19
  443. package/src/daemon/parse-actual-tokens-from-error.ts +3 -3
  444. package/src/daemon/providers-setup.ts +6 -6
  445. package/src/daemon/resource-pressure-guard-lifecycle.ts +1 -1
  446. package/src/daemon/resource-pressure-guard.ts +6 -6
  447. package/src/daemon/shutdown-handlers.ts +1 -1
  448. package/src/daemon/sqlite-corruption-watchdog.ts +3 -3
  449. package/src/daemon/trust-context.ts +1 -1
  450. package/src/desktop/desktop-automation-lease.ts +1 -1
  451. package/src/desktop/desktop-browser-endpoint.ts +2 -4
  452. package/src/desktop/desktop-computer-use-routing.test.ts +6 -6
  453. package/src/desktop/desktop-stream-bridge.test.ts +4 -4
  454. package/src/desktop/desktop-stream-bridge.ts +1 -1
  455. package/src/desktop/{virtual-desktop-platform.test.ts → virtual-desktop-cloud.test.ts} +6 -6
  456. package/src/desktop/virtual-desktop-feature.ts +7 -7
  457. package/src/email/byo-email-credential.ts +1 -1
  458. package/src/email/registered-inbox.test.ts +16 -16
  459. package/src/email/registered-inbox.ts +20 -20
  460. package/src/heartbeat/heartbeat-service.ts +1 -1
  461. package/src/hooks/hook-loader.ts +2 -2
  462. package/src/inbound/__tests__/oauth-callback-url.test.ts +2 -2
  463. package/src/inbound/__tests__/tunnel-probe.test.ts +8 -8
  464. package/src/inbound/{platform-callback-registration.ts → cloud-callback-registration.ts} +49 -60
  465. package/src/inbound/oauth-callback-url.ts +6 -6
  466. package/src/inbound/pod-webhook-claim.ts +2 -2
  467. package/src/inbound/public-ingress-urls.ts +3 -3
  468. package/src/inbound/tunnel-probe.ts +21 -15
  469. package/src/inbound/tunnel-webhooks-gate.ts +3 -3
  470. package/src/ipc/__tests__/db-readiness-ipc-gate.test.ts +1 -1
  471. package/src/ipc/__tests__/email-ipc.test.ts +8 -8
  472. package/src/ipc/gateway-client.test.ts +55 -59
  473. package/src/ipc/gateway-flag-listener.ts +3 -3
  474. package/src/ipc/routes/db-proxy.ts +1 -1
  475. package/src/live-voice/__tests__/live-activity-reporter.test.ts +2 -2
  476. package/src/live-voice/__tests__/{live-voice-managed-speech-fallback.test.ts → live-voice-cloud-speech-fallback.test.ts} +15 -15
  477. package/src/live-voice/__tests__/live-voice-credential-preflight.test.ts +7 -7
  478. package/src/live-voice/__tests__/live-voice-stt.test.ts +1 -1
  479. package/src/live-voice/live-activity-reporter.ts +7 -7
  480. package/src/live-voice/live-voice-credential-preflight.ts +6 -6
  481. package/src/live-voice/live-voice-session.ts +3 -3
  482. package/src/live-voice/live-voice-tts.ts +1 -1
  483. package/src/mcp/__tests__/mcp-oauth-client-registration.test.ts +4 -4
  484. package/src/mcp/__tests__/mcp-oauth-provider.test.ts +1 -1
  485. package/src/mcp/mcp-oauth-provider.ts +2 -2
  486. package/src/media/gemini-image-service.ts +11 -13
  487. package/src/media/image-credentials.ts +9 -9
  488. package/src/media/openai-image-service.ts +1 -1
  489. package/src/media/types.ts +3 -3
  490. package/src/messaging/providers/channel-transport.ts +1 -1
  491. package/src/messaging/providers/discord/transport.ts +1 -1
  492. package/src/messaging/providers/gmail/adapter.ts +1 -1
  493. package/src/messaging/providers/gmail/client.ts +4 -4
  494. package/src/messaging/providers/outlook/adapter.ts +1 -1
  495. package/src/messaging/providers/slack/adapter.ts +1 -1
  496. package/src/messaging/providers/slack/transport.ts +1 -1
  497. package/src/messaging/providers/telegram-bot/transport.ts +1 -1
  498. package/src/monitoring/db-integrity-check.ts +1 -1
  499. package/src/monitoring/db-integrity-sample.ts +2 -2
  500. package/src/monitoring/mount-watch.ts +1 -1
  501. package/src/monitoring/oom-kill-reporter.ts +1 -1
  502. package/src/monitoring/worker.ts +5 -5
  503. package/src/notifications/README.md +2 -2
  504. package/src/notifications/__tests__/broadcaster.test.ts +9 -9
  505. package/src/notifications/__tests__/completion-policy.test.ts +1 -1
  506. package/src/notifications/__tests__/emit-signal-pipeline-failure.test.ts +4 -4
  507. package/src/notifications/activity-failed-dedupe.ts +1 -1
  508. package/src/notifications/adapters/{platform.ts → cloud.ts} +8 -8
  509. package/src/notifications/broadcaster.ts +10 -10
  510. package/src/notifications/decision-engine.ts +1 -1
  511. package/src/notifications/destination-resolver.ts +1 -1
  512. package/src/notifications/emit-signal.ts +6 -6
  513. package/src/notifications/types.ts +2 -2
  514. package/src/oauth/__tests__/identity-verifier.test.ts +1 -1
  515. package/src/oauth/__tests__/{seed-providers-managed.test.ts → seed-providers-cloud.test.ts} +13 -13
  516. package/src/oauth/byo-connection.test.ts +2 -2
  517. package/src/oauth/{platform-connection.test.ts → cloud-connection.test.ts} +41 -43
  518. package/src/oauth/{platform-connection.ts → cloud-connection.ts} +19 -19
  519. package/src/oauth/connection-resolver.test.ts +59 -61
  520. package/src/oauth/connection-resolver.ts +22 -22
  521. package/src/oauth/connection.ts +1 -1
  522. package/src/oauth/oauth-store.ts +8 -8
  523. package/src/oauth/provider-serializer.ts +4 -4
  524. package/src/oauth/revoke.ts +1 -1
  525. package/src/oauth/seed-providers.ts +32 -32
  526. package/src/permissions/approval-provenance.ts +1 -1
  527. package/src/permissions/checker.test.ts +18 -16
  528. package/src/permissions/checker.ts +3 -3
  529. package/src/persistence/compaction-log-store-clickhouse.ts +3 -3
  530. package/src/persistence/embeddings/embedding-backend.test.ts +16 -16
  531. package/src/persistence/embeddings/embedding-backend.ts +13 -13
  532. package/src/persistence/embeddings/embedding-gemini.test.ts +9 -12
  533. package/src/persistence/embeddings/embedding-gemini.ts +11 -11
  534. package/src/persistence/embeddings/embedding-runtime-manager.ts +2 -2
  535. package/src/persistence/jobs-store.ts +1 -1
  536. package/src/persistence/lifecycle-events-store.ts +1 -1
  537. package/src/persistence/llm-request-log-sink-clickhouse.ts +3 -3
  538. package/src/persistence/llm-request-log-source-clickhouse.ts +3 -3
  539. package/src/persistence/migrations/224-oauth-providers-managed-service-is-paid.ts +1 -1
  540. package/src/persistence/migrations/296-rewrite-balanced-economy-profile-pins.test.ts +1 -1
  541. package/src/persistence/migrations/296-rewrite-balanced-economy-profile-pins.ts +2 -2
  542. package/src/persistence/migrations/306-rewrite-frontier-profile-pins.test.ts +1 -1
  543. package/src/persistence/migrations/306-rewrite-frontier-profile-pins.ts +1 -1
  544. package/src/persistence/migrations/351-schedule-skill-script-handoff.ts +1 -1
  545. package/src/persistence/migrations/361-normalize-managed-connection-rows.test.ts +3 -3
  546. package/src/persistence/migrations/361-normalize-managed-connection-rows.ts +7 -7
  547. package/src/persistence/migrations/__tests__/319-remove-legacy-managed-connections.test.ts +2 -2
  548. package/src/persistence/schema/oauth.ts +1 -1
  549. package/src/plugin-api/index.ts +4 -4
  550. package/src/plugin-api/model-profiles.test.ts +1 -1
  551. package/src/plugin-api/model-profiles.ts +1 -1
  552. package/src/plugin-api/transcription-session.ts +1 -1
  553. package/src/plugin-api/vision-support.test.ts +1 -1
  554. package/src/plugin-api/webhook-url.ts +12 -12
  555. package/src/plugins/__tests__/source-fingerprint.test.ts +1 -1
  556. package/src/plugins/defaults/{platform-hosted → cloud-hosted}/__tests__/reengage.test.ts +5 -6
  557. package/src/plugins/defaults/cloud-hosted/package.json +14 -0
  558. package/src/plugins/defaults/{platform-hosted → cloud-hosted}/routes/reengage.ts +3 -3
  559. package/src/plugins/defaults/index.ts +6 -6
  560. package/src/plugins/defaults/main.ts +5 -5
  561. package/src/plugins/defaults/memory/__tests__/memory-retrospective-job.test.ts +5 -5
  562. package/src/plugins/defaults/memory/__tests__/memory-retrospective-prompt.test.ts +1 -1
  563. package/src/plugins/defaults/memory/__tests__/memory-retrospective-provider-path.test.ts +1 -1
  564. package/src/plugins/defaults/memory/__tests__/memory-tier-boundary-guard.test.ts +5 -0
  565. package/src/plugins/defaults/memory/config.ts +4 -4
  566. package/src/plugins/defaults/memory/memory-retrospective-constants.ts +2 -2
  567. package/src/plugins/defaults/memory/memory-retrospective-job.ts +7 -7
  568. package/src/plugins/defaults/memory/memory-retrospective-prompt.ts +5 -5
  569. package/src/plugins/defaults/memory/memory-retrospective-skill-card.ts +2 -2
  570. package/src/plugins/defaults/memory/src/__tests__/memory-v2-routes.test.ts +1 -1
  571. package/src/plugins/defaults/memory/src/__tests__/memory-worker-routes.test.ts +1 -1
  572. package/src/plugins/defaults/memory/substrate/__tests__/boot-maintenance.test.ts +20 -20
  573. package/src/plugins/defaults/memory/substrate/__tests__/cli-command-store.test.ts +1 -1
  574. package/src/plugins/defaults/memory/substrate/__tests__/skill-store.test.ts +3 -3
  575. package/src/plugins/defaults/memory/substrate/boot-maintenance.ts +17 -17
  576. package/src/plugins/defaults/memory/substrate/cli-command-store.ts +2 -2
  577. package/src/plugins/defaults/memory/substrate/prompts/consolidation.ts +1 -1
  578. package/src/plugins/defaults/memory/substrate/skill-store.ts +4 -4
  579. package/src/plugins/defaults/memory/v3/__tests__/maintain-job.test.ts +3 -3
  580. package/src/plugins/defaults/memory/v3/__tests__/pool-select.test.ts +2 -2
  581. package/src/plugins/defaults/memory/v3/maintain-job.ts +10 -10
  582. package/src/plugins/defaults/memory/v3/orchestrate.ts +3 -3
  583. package/src/plugins/defaults/memory/worker.ts +5 -5
  584. package/src/plugins/defaults/workspace/injectors.ts +2 -2
  585. package/src/plugins/mtime-cache.ts +1 -1
  586. package/src/plugins/source-versions.ts +1 -1
  587. package/src/plugins/types.ts +1 -1
  588. package/src/prompts/__tests__/system-prompt.test.ts +1 -1
  589. package/src/prompts/normalize-onboarding.ts +1 -1
  590. package/src/prompts/persona-resolver.ts +1 -1
  591. package/src/prompts/templates/system-sections.ts +3 -3
  592. package/src/providers/__tests__/cadet-connection-routing.test.ts +7 -7
  593. package/src/providers/__tests__/cadet-mismatch-routing.test.ts +12 -12
  594. package/src/providers/__tests__/connection-model-compat.test.ts +2 -2
  595. package/src/providers/__tests__/dispatch-connection-routing.test.ts +10 -10
  596. package/src/providers/__tests__/inference.test.ts +2 -2
  597. package/src/providers/__tests__/preflight-resolved-config.test.ts +16 -16
  598. package/src/providers/__tests__/retry-callsite.test.ts +1 -1
  599. package/src/providers/__tests__/satellite-connection-routing.test.ts +4 -4
  600. package/src/providers/__tests__/search-provider-catalog.test.ts +2 -2
  601. package/src/providers/__tests__/voice-error-copy.test.ts +3 -3
  602. package/src/providers/anthropic/client.ts +1 -1
  603. package/src/providers/cadet/client.ts +1 -1
  604. package/src/providers/cadet-model-routing.test.ts +19 -19
  605. package/src/providers/cadet-model-routing.ts +23 -23
  606. package/src/providers/call-site-routing.ts +10 -10
  607. package/src/providers/{platform-proxy → cloud-proxy}/constants.ts +11 -11
  608. package/src/providers/{platform-proxy → cloud-proxy}/context.ts +26 -26
  609. package/src/providers/connection-resolution.ts +43 -43
  610. package/src/providers/fallback-breaker.ts +2 -2
  611. package/src/providers/fetch-provider-catalog.ts +3 -3
  612. package/src/providers/gemini/client.ts +5 -5
  613. package/src/providers/inference/__tests__/adapter-factory-openai-compatible.test.ts +3 -3
  614. package/src/providers/inference/__tests__/base-url-route-validation.test.ts +8 -8
  615. package/src/providers/inference/__tests__/base-url-security.test.ts +4 -4
  616. package/src/providers/inference/adapter-factory.ts +35 -35
  617. package/src/providers/inference/auth.ts +10 -10
  618. package/src/providers/inference/backfill.ts +11 -11
  619. package/src/providers/inference/connection-availability.ts +24 -24
  620. package/src/providers/inference/connections.ts +18 -20
  621. package/src/providers/inference/profile-probe.ts +4 -4
  622. package/src/providers/inference/resolve-auth.ts +8 -8
  623. package/src/providers/jev/ask.test.ts +1 -1
  624. package/src/providers/jev/ask.ts +2 -2
  625. package/src/providers/model-catalog.ts +8 -9
  626. package/src/providers/openai/__tests__/api-error-normalization.test.ts +3 -3
  627. package/src/providers/openai/api-error-normalization.ts +2 -2
  628. package/src/providers/provider-availability.ts +4 -4
  629. package/src/providers/provider-env-vars.ts +1 -1
  630. package/src/providers/provider-secret-catalog.ts +1 -1
  631. package/src/providers/registry.ts +20 -20
  632. package/src/providers/retry.ts +26 -26
  633. package/src/providers/routing-identity.ts +10 -10
  634. package/src/providers/search-provider-catalog.ts +2 -2
  635. package/src/providers/speech-to-text/__tests__/{cadet-managed-realtime.test.ts → cadet-cloud-realtime.test.ts} +3 -3
  636. package/src/providers/speech-to-text/__tests__/{cadet-managed.test.ts → cadet-cloud.test.ts} +35 -35
  637. package/src/providers/speech-to-text/__tests__/deepgram-flux-realtime.test.ts +1 -1
  638. package/src/providers/speech-to-text/__tests__/resolve.test.ts +27 -27
  639. package/src/providers/speech-to-text/{cadet-managed-flux-realtime.ts → cadet-cloud-flux-realtime.ts} +6 -8
  640. package/src/providers/speech-to-text/{cadet-managed-realtime.ts → cadet-cloud-realtime.ts} +3 -3
  641. package/src/providers/speech-to-text/{cadet-managed.ts → cadet-cloud.ts} +18 -20
  642. package/src/providers/speech-to-text/cadet-speech-relay-connection.ts +7 -7
  643. package/src/providers/speech-to-text/deepgram-flux-frames.ts +3 -3
  644. package/src/providers/speech-to-text/deepgram-flux-realtime.ts +4 -4
  645. package/src/providers/speech-to-text/provider-catalog.ts +3 -3
  646. package/src/providers/speech-to-text/resolve.ts +26 -28
  647. package/src/providers/together/client.ts +1 -1
  648. package/src/providers/types.ts +4 -4
  649. package/src/providers/voice-error-copy.ts +1 -1
  650. package/src/runtime/__tests__/desktop-stream-upgrade.test.ts +10 -10
  651. package/src/runtime/agent-wake.ts +1 -1
  652. package/src/runtime/auth/__tests__/middleware.test.ts +1 -1
  653. package/src/runtime/auth/middleware.ts +1 -1
  654. package/src/runtime/auth/scopes.ts +1 -1
  655. package/src/runtime/capabilities.ts +1 -1
  656. package/src/runtime/channel-invite-transports/discord.ts +1 -1
  657. package/src/runtime/channel-invite-transports/email.ts +2 -2
  658. package/src/runtime/channel-readiness-service.ts +15 -13
  659. package/src/runtime/channel-reply-session.test.ts +1 -1
  660. package/src/runtime/channel-reply-session.ts +1 -1
  661. package/src/runtime/http-server.ts +4 -4
  662. package/src/runtime/introduction-policy.ts +4 -4
  663. package/src/runtime/migrations/__tests__/origin-mode.test.ts +14 -14
  664. package/src/runtime/migrations/__tests__/v1-test-helpers.ts +1 -1
  665. package/src/runtime/migrations/__tests__/vbundle-import-version-compat.test.ts +2 -2
  666. package/src/runtime/migrations/__tests__/vbundle-metadata-merge-integration.test.ts +3 -4
  667. package/src/runtime/migrations/__tests__/vbundle-metadata-merge.test.ts +6 -7
  668. package/src/runtime/migrations/__tests__/vbundle-validator-v1-schema.test.ts +1 -1
  669. package/src/runtime/migrations/migration-transport.ts +3 -3
  670. package/src/runtime/migrations/origin-mode.ts +6 -9
  671. package/src/runtime/migrations/vbundle-import-policy.ts +2 -2
  672. package/src/runtime/migrations/vbundle-importer.ts +4 -4
  673. package/src/runtime/migrations/vbundle-streaming-importer.ts +6 -6
  674. package/src/runtime/migrations/vbundle-validator.ts +1 -1
  675. package/src/runtime/routes/__tests__/{platform-credits-routes.test.ts → cloud-credits-routes.test.ts} +9 -9
  676. package/src/runtime/routes/__tests__/{platform-invoice-routes.test.ts → cloud-invoice-routes.test.ts} +13 -13
  677. package/src/runtime/routes/__tests__/connection-routes-vs-cli-parity.test.ts +1 -1
  678. package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +126 -82
  679. package/src/runtime/routes/__tests__/default-plugin-routes.test.ts +5 -5
  680. package/src/runtime/routes/__tests__/default-provider-routes.test.ts +10 -10
  681. package/src/runtime/routes/__tests__/inference-profiles-routes.test.ts +18 -18
  682. package/src/runtime/routes/__tests__/inference-provider-connection-routes.test.ts +18 -16
  683. package/src/runtime/routes/__tests__/inference-send-routes.test.ts +1 -1
  684. package/src/runtime/routes/__tests__/ingress-status-routes.test.ts +1 -1
  685. package/src/runtime/routes/__tests__/migration-cadet-metadata-reconcile.test.ts +5 -20
  686. package/src/runtime/routes/__tests__/migration-import-credential-filter.test.ts +19 -22
  687. package/src/runtime/routes/__tests__/oauth-proxy-routes.test.ts +27 -27
  688. package/src/runtime/routes/__tests__/plugins-routes.test.ts +5 -5
  689. package/src/runtime/routes/__tests__/ps-routes.test.ts +5 -3
  690. package/src/runtime/routes/__tests__/roadmap-routes.test.ts +15 -15
  691. package/src/runtime/routes/__tests__/webhook-routes.test.ts +31 -31
  692. package/src/runtime/routes/app-management-routes.ts +1 -1
  693. package/src/runtime/routes/attachment-routes.ts +1 -1
  694. package/src/runtime/routes/auth-routes.ts +14 -14
  695. package/src/runtime/routes/avatar-routes.ts +0 -14
  696. package/src/runtime/routes/background-wake-routes.ts +4 -4
  697. package/src/runtime/routes/channel-availability-routes.ts +4 -4
  698. package/src/runtime/routes/client-routes.ts +5 -5
  699. package/src/runtime/routes/cloud-credentials.ts +45 -0
  700. package/src/runtime/routes/{platform-routes.ts → cloud-routes.ts} +86 -119
  701. package/src/runtime/routes/conversation-compaction-routes.ts +1 -1
  702. package/src/runtime/routes/conversation-query-routes.ts +345 -667
  703. package/src/runtime/routes/credential-routes.ts +28 -30
  704. package/src/runtime/routes/default-provider-routes.ts +1 -1
  705. package/src/runtime/routes/desktop-setup-routes.test.ts +5 -5
  706. package/src/runtime/routes/desktop-setup-routes.ts +1 -1
  707. package/src/runtime/routes/domain-routes.ts +15 -21
  708. package/src/runtime/routes/email-routes.ts +13 -13
  709. package/src/runtime/routes/errors.ts +1 -1
  710. package/src/runtime/routes/gateway-status-routes.ts +1 -1
  711. package/src/runtime/routes/identity-routes.ts +3 -3
  712. package/src/runtime/routes/inbound-message-handler.ts +1 -1
  713. package/src/runtime/routes/inbound-stages/acl-enforcement.ts +1 -1
  714. package/src/runtime/routes/inbound-stages/transcribe-audio.test.ts +1 -1
  715. package/src/runtime/routes/index.ts +1 -1
  716. package/src/runtime/routes/inference-profile-availability-guard.ts +5 -5
  717. package/src/runtime/routes/inference-profiles-routes.ts +11 -11
  718. package/src/runtime/routes/inference-provider-connection-routes.ts +24 -24
  719. package/src/runtime/routes/ingress-status-routes.ts +1 -1
  720. package/src/runtime/routes/integrations/a2a.ts +2 -2
  721. package/src/runtime/routes/integrations/twilio.ts +21 -35
  722. package/src/runtime/routes/internal-telemetry-routes.ts +2 -2
  723. package/src/runtime/routes/live-voice-routes.test.ts +4 -4
  724. package/src/runtime/routes/live-voice-routes.ts +6 -6
  725. package/src/runtime/routes/migration-routes.ts +34 -40
  726. package/src/runtime/routes/oauth-commands-routes.ts +31 -31
  727. package/src/runtime/routes/oauth-providers.ts +5 -5
  728. package/src/runtime/routes/oauth-proxy-passthrough.test.ts +1 -1
  729. package/src/runtime/routes/oauth-proxy-passthrough.ts +8 -8
  730. package/src/runtime/routes/oauth-proxy-routes.ts +15 -17
  731. package/src/runtime/routes/oauth-request-hints.test.ts +1 -1
  732. package/src/runtime/routes/oauth-request-hints.ts +1 -1
  733. package/src/runtime/routes/plugins-routes.ts +9 -9
  734. package/src/runtime/routes/profiler-routes.ts +1 -1
  735. package/src/runtime/routes/ps-routes.ts +4 -0
  736. package/src/runtime/routes/roadmap-routes.ts +18 -20
  737. package/src/runtime/routes/secret-routes.ts +20 -61
  738. package/src/runtime/routes/settings-routes.ts +18 -23
  739. package/src/runtime/routes/telemetry-routes.ts +4 -4
  740. package/src/runtime/routes/tts-routes.ts +4 -4
  741. package/src/runtime/routes/user-route-resolution.ts +1 -1
  742. package/src/runtime/routes/webhook-routes.ts +18 -18
  743. package/src/runtime/routes/workflow-routes.ts +5 -5
  744. package/src/runtime/sync/resource-sync-events.ts +2 -2
  745. package/src/runtime/verification-outbound-actions.ts +4 -4
  746. package/src/schedule/integration-status.ts +6 -6
  747. package/src/schedule/run-script.ts +1 -1
  748. package/src/schedule/schedule-timezone.ts +1 -1
  749. package/src/schedule/worker.ts +5 -5
  750. package/src/security/auth-fallback-events-store.ts +1 -1
  751. package/src/security/oauth2.ts +4 -4
  752. package/src/skills/available-skills.ts +4 -4
  753. package/src/skills/catalog-files.ts +8 -8
  754. package/src/skills/catalog-install.ts +12 -12
  755. package/src/skills/categories-cache.ts +3 -3
  756. package/src/skills/clawhub.ts +1 -1
  757. package/src/skills/{platform-compatibility.test.ts → cloud-compatibility.test.ts} +7 -7
  758. package/src/skills/{platform-compatibility.ts → cloud-compatibility.ts} +2 -4
  759. package/src/skills/{managed-store.ts → cloud-store.ts} +21 -23
  760. package/src/skills/inline-command-runner.ts +1 -1
  761. package/src/skills/install-meta.ts +1 -1
  762. package/src/skills/path-classifier.ts +4 -4
  763. package/src/skills/skill-history.ts +4 -4
  764. package/src/skills/skillssh-registry.ts +1 -1
  765. package/src/stt/__tests__/daemon-batch-transcriber.test.ts +1 -1
  766. package/src/stt/daemon-batch-transcriber.ts +7 -7
  767. package/src/stt/types.ts +3 -3
  768. package/src/subagent/manager.ts +15 -15
  769. package/src/subagent/types.ts +1 -1
  770. package/src/telegram/__tests__/webhook-health.test.ts +16 -16
  771. package/src/telegram/webhook-health.ts +10 -10
  772. package/src/telemetry/__tests__/config-setting-events-store.test.ts +1 -1
  773. package/src/telemetry/__tests__/outbox-test-harness.ts +2 -2
  774. package/src/telemetry/config-setting-events-store.ts +1 -1
  775. package/src/telemetry/config-setting-snapshot.ts +1 -1
  776. package/src/telemetry/memory-corpus-size.ts +1 -1
  777. package/src/telemetry/memory-tier-reporter.test.ts +2 -2
  778. package/src/telemetry/memory-tier-reporter.ts +3 -3
  779. package/src/telemetry/telemetry-event-sources.test.ts +2 -2
  780. package/src/telemetry/telemetry-event-sources.ts +9 -9
  781. package/src/telemetry/telemetry-events-outbox.ts +2 -2
  782. package/src/telemetry/telemetry-wire-validation.test.ts +1 -1
  783. package/src/telemetry/telemetry-wire-validation.ts +3 -3
  784. package/src/telemetry/telemetry-wire.generated.ts +1 -1
  785. package/src/telemetry/tool-audit.ts +1 -1
  786. package/src/telemetry/tool-executed-events-store.test.ts +1 -1
  787. package/src/telemetry/trace-collection-policy.ts +4 -4
  788. package/src/telemetry/turn-events-store.ts +1 -1
  789. package/src/telemetry/turn-outcome.ts +1 -1
  790. package/src/telemetry/turn-trace-store.ts +2 -2
  791. package/src/telemetry/types.test.ts +1 -1
  792. package/src/telemetry/types.ts +19 -19
  793. package/src/telemetry/usage-telemetry-reporter.test.ts +42 -42
  794. package/src/telemetry/usage-telemetry-reporter.ts +17 -17
  795. package/src/telemetry/watchdog-direct-emit.test.ts +9 -9
  796. package/src/telemetry/watchdog-direct-emit.ts +10 -10
  797. package/src/tools/__tests__/side-effect-abort-guard.test.ts +2 -2
  798. package/src/tools/browser/cdp-client/factory.ts +1 -1
  799. package/src/tools/computer-use/target.ts +2 -2
  800. package/src/tools/credentials/store.ts +2 -20
  801. package/src/tools/network/__tests__/{managed-search-proxy.test.ts → cloud-search-proxy.test.ts} +20 -20
  802. package/src/tools/network/__tests__/web-search.test.ts +14 -14
  803. package/src/tools/network/{managed-search-proxy.ts → cloud-search-proxy.ts} +13 -13
  804. package/src/tools/network/web-search.ts +9 -9
  805. package/src/tools/permission-checker.ts +2 -2
  806. package/src/tools/shared/input-misuse.ts +1 -1
  807. package/src/tools/shared/input-repairs.ts +4 -4
  808. package/src/tools/skills/{delete-managed.ts → delete-cloud.ts} +4 -4
  809. package/src/tools/skills/find-similar-skills.test.ts +7 -7
  810. package/src/tools/skills/find-similar-skills.ts +15 -15
  811. package/src/tools/skills/load.ts +6 -6
  812. package/src/tools/skills/{scaffold-managed.ts → scaffold-cloud.ts} +16 -16
  813. package/src/tools/skills/skill-script-runner.ts +2 -2
  814. package/src/tools/terminal/safe-env.ts +3 -3
  815. package/src/tools/tool-types.ts +2 -2
  816. package/src/tools/types.ts +2 -2
  817. package/src/tools/ui-surface/surface-shape-docs.ts +2 -2
  818. package/src/tools/workflows/manage-workflows.ts +1 -1
  819. package/src/tools/workspace-tools/loader.ts +1 -1
  820. package/src/tts/__tests__/cadet-provider.test.ts +5 -5
  821. package/src/tts/provider-catalog.ts +1 -1
  822. package/src/tts/providers/cadet-provider.ts +23 -23
  823. package/src/tts/providers/cadet-tts-socket.ts +2 -2
  824. package/src/tts/tts-config-resolver.ts +1 -1
  825. package/src/tts/tts-voice-field.ts +3 -3
  826. package/src/usage/subagent-attribution.ts +1 -1
  827. package/src/util/__tests__/process-table.test.ts +47 -0
  828. package/src/util/canonicalize-identity.ts +1 -1
  829. package/src/util/cgroup-cpu.ts +5 -5
  830. package/src/util/cgroup-memory.ts +2 -2
  831. package/src/util/container-cpu-sampler.ts +4 -4
  832. package/src/util/disk-usage.ts +4 -4
  833. package/src/util/errors.ts +3 -3
  834. package/src/util/layout.ts +479 -0
  835. package/src/util/oom-priority.ts +1 -1
  836. package/src/util/platform.ts +12 -468
  837. package/src/util/process-table.ts +39 -5
  838. package/src/util/provider-error-patterns.ts +2 -2
  839. package/src/watch/__tests__/watch-retro.test.ts +2 -2
  840. package/src/watch/watch-retro.ts +1 -1
  841. package/src/watcher/__tests__/telemetry.test.ts +2 -2
  842. package/src/watcher/telemetry.ts +1 -1
  843. package/src/windows-compiled-cli.ts +1 -1
  844. package/src/workspace/adaptive-thinking-repair.ts +4 -4
  845. package/src/workspace/byok-default-profile-ensure.ts +7 -7
  846. package/src/workspace/git-service.ts +2 -2
  847. package/src/workspace/migrations/006-services-config.ts +1 -1
  848. package/src/workspace/migrations/040-seed-latency-callsite-defaults.ts +1 -1
  849. package/src/workspace/migrations/052-seed-default-inference-profiles.ts +1 -1
  850. package/src/workspace/migrations/063-release-notes-dynamic-model-context.ts +1 -1
  851. package/src/workspace/migrations/066-seed-heartbeat-callsite-cost-default.ts +1 -1
  852. package/src/workspace/migrations/082-backfill-managed-profile-labels.ts +4 -4
  853. package/src/workspace/migrations/087-memory-router-balanced-profile.ts +3 -3
  854. package/src/workspace/migrations/090-memory-router-cost-optimized-profile.ts +4 -4
  855. package/src/workspace/migrations/097-enable-adaptive-thinking-managed-profiles.ts +5 -5
  856. package/src/workspace/migrations/100-upgrade-quality-profile-to-fable-5.ts +4 -4
  857. package/src/workspace/migrations/101-upgrade-balanced-economy-to-minimax-m3.ts +4 -4
  858. package/src/workspace/migrations/103-upgrade-quality-profile-to-opus-4-8.ts +5 -5
  859. package/src/workspace/migrations/104-recheck-adaptive-thinking-model-implied-anthropic.ts +1 -1
  860. package/src/workspace/migrations/106-drop-collect-usage-data.ts +1 -1
  861. package/src/workspace/migrations/108-drop-balanced-economy-profile.ts +4 -4
  862. package/src/workspace/migrations/109-swap-quality-profile-to-glm-5p2.ts +11 -11
  863. package/src/workspace/migrations/110-flip-balanced-profile-to-together.ts +6 -6
  864. package/src/workspace/migrations/113-swap-balanced-profile-to-glm-5p2.ts +5 -5
  865. package/src/workspace/migrations/114-swap-quality-profile-to-opus.ts +4 -4
  866. package/src/workspace/migrations/115-drop-frontier-profile.ts +5 -5
  867. package/src/workspace/migrations/123-swap-quality-profile-to-fable.ts +5 -5
  868. package/src/workspace/migrations/125-repoint-managed-connections-to-cadet.ts +3 -3
  869. package/src/workspace/migrations/126-strip-managed-profile-bodies.ts +2 -2
  870. package/src/workspace/migrations/127-backfill-default-provider.ts +6 -6
  871. package/src/workspace/migrations/130-speech-mode-to-provider.ts +4 -4
  872. package/src/workspace/migrations/131-drop-web-fetch-mode.ts +1 -1
  873. package/src/workspace/migrations/132-web-search-mode-to-provider.ts +6 -6
  874. package/src/workspace/migrations/133-collapse-provider-connections.ts +3 -3
  875. package/src/workspace/migrations/134-image-generation-mode-to-provider.ts +4 -4
  876. package/src/workspace/migrations/136-repair-stale-fireworks-kimi-model-id.ts +2 -2
  877. package/src/workspace/migrations/137-repair-retired-fireworks-minimax-model-id.ts +2 -2
  878. package/src/workspace/migrations/139-clear-renamed-cost-profile-label.ts +2 -2
  879. package/src/workspace/migrations/141-stt-english-default-to-multilingual.ts +4 -4
  880. package/src/workspace/migrations/144-convert-stranded-subscription-openai-profiles.ts +1 -1
  881. package/src/workspace/migrations/145-collapse-profile-bindings-to-entries.ts +2 -2
  882. package/src/workspace/migrations/146-repair-retired-fireworks-deepseek-flash-model-id.ts +2 -2
  883. package/src/workspace/migrations/148-strip-unsupported-fallback-profiles.ts +2 -2
  884. package/src/workspace/migrations/150-stt-flux-provider-to-model-family.ts +1 -1
  885. package/src/workspace/migrations/151-repair-renamed-fireworks-deepseek-pro-model-id.ts +2 -2
  886. package/src/workspace/migrations/152-repair-retired-fireworks-minimax-m2p7-model-id.ts +2 -2
  887. package/src/workspace/migrations/159-rename-colliding-jev-profile-name.ts +2 -2
  888. package/src/workspace/migrations/160-repair-retired-fireworks-model-ids.ts +2 -2
  889. package/src/workspace/migrations/161-repair-retired-fireworks-glm-5p2-model-id.ts +2 -2
  890. package/src/workspace/migrations/__tests__/141-stt-english-default-to-multilingual.test.ts +1 -1
  891. package/src/workspace/migrations/__tests__/150-stt-flux-provider-to-model-family.test.ts +1 -1
  892. package/src/workspace/migrations/registry.ts +6 -6
  893. package/src/workspace/top-level-renderer.ts +1 -1
  894. package/src/workspace/turn-commit.ts +2 -2
  895. package/src/__tests__/config-loader-platform-defaults.test.ts +0 -606
  896. package/src/__tests__/mock-gateway-ipc.ts +0 -260
  897. package/src/api/events/platform-disconnected.ts +0 -21
  898. package/src/api/events/show-platform-login.ts +0 -20
  899. package/src/config/platform-rehydration.ts +0 -60
  900. package/src/platform/feature-gate.ts +0 -8
  901. package/src/plugins/defaults/platform-hosted/package.json +0 -14
  902. package/src/runtime/routes/platform-managed-credentials.ts +0 -50
  903. /package/src/__tests__/{gateway-client-managed-outbound.test.ts → gateway-client-cloud-outbound.test.ts} +0 -0
  904. /package/src/__tests__/{secure-keys-managed-failover.test.ts → secure-keys-cloud-failover.test.ts} +0 -0
@@ -52,7 +52,7 @@ mock.module(
52
52
  );
53
53
 
54
54
  // Skill-card enqueue recorder. Snapshot + override (rather than a full module
55
- // replacement) because other modules in this import graph (e.g. the managed
55
+ // replacement) because other modules in this import graph (e.g. the cloud
56
56
  // store's capability seeding) import sibling jobs-store exports that must
57
57
  // keep working.
58
58
  import * as realJobsStore from "../persistence/jobs-store.js";
@@ -95,11 +95,11 @@ function catalogSeam(...entries: { id: string; source: SkillSource }[]) {
95
95
  import { loadSkillCatalog } from "../config/skills.js";
96
96
  import { readInstallMeta, writeInstallMeta } from "../skills/install-meta.js";
97
97
  import { validateInputAgainstSchema } from "../skills/validate-input.js";
98
- import { executeScaffoldManagedSkill } from "../tools/skills/scaffold-managed.js";
98
+ import { executeScaffoldCloudSkill } from "../tools/skills/scaffold-cloud.js";
99
99
  import type { ToolContext } from "../tools/types.js";
100
100
 
101
101
  /**
102
- * scaffold_managed_skill requires activation hints. Tests that are not about
102
+ * scaffold_cloud_skill requires activation hints. Tests that are not about
103
103
  * hints pass this fixed set so the input they exercise stays the subject.
104
104
  */
105
105
  const HINTS = ["user asks to run the procedure under test"];
@@ -124,7 +124,7 @@ function installMetaFor(skillId: string) {
124
124
  return readInstallMeta(join(TEST_DIR, "skills", skillId));
125
125
  }
126
126
 
127
- /** The scaffold_managed_skill entry as declared in the skill-management manifest. */
127
+ /** The scaffold_cloud_skill entry as declared in the skill-management manifest. */
128
128
  function readScaffoldToolEntry(): {
129
129
  input_schema: {
130
130
  properties: Record<string, unknown>;
@@ -141,7 +141,7 @@ function readScaffoldToolEntry(): {
141
141
  ),
142
142
  );
143
143
  return tools.tools.find(
144
- (tool: { name: string }) => tool.name === "scaffold_managed_skill",
144
+ (tool: { name: string }) => tool.name === "scaffold_cloud_skill",
145
145
  );
146
146
  }
147
147
 
@@ -158,7 +158,7 @@ afterEach(() => {
158
158
  rmSync(join(TEST_DIR, "skills"), { recursive: true, force: true });
159
159
  });
160
160
 
161
- describe("scaffold_managed_skill tool", () => {
161
+ describe("scaffold_cloud_skill tool", () => {
162
162
  test("keeps legacy index control as a deprecated no-op schema field", () => {
163
163
  const scaffoldTool = readScaffoldToolEntry();
164
164
 
@@ -171,7 +171,7 @@ describe("scaffold_managed_skill tool", () => {
171
171
  });
172
172
 
173
173
  test("an overwrite through the tool keeps frontmatter it does not restate", async () => {
174
- await executeScaffoldManagedSkill(
174
+ await executeScaffoldCloudSkill(
175
175
  {
176
176
  skill_id: "edited",
177
177
  name: "Edited",
@@ -187,7 +187,7 @@ describe("scaffold_managed_skill tool", () => {
187
187
  );
188
188
 
189
189
  // The usual "change step 3" edit: body and hints, nothing else restated.
190
- const result = await executeScaffoldManagedSkill(
190
+ const result = await executeScaffoldCloudSkill(
191
191
  {
192
192
  skill_id: "edited",
193
193
  name: "Edited",
@@ -209,7 +209,7 @@ describe("scaffold_managed_skill tool", () => {
209
209
  });
210
210
 
211
211
  test("an overwrite through the tool clears a field passed empty, and hints stay required", async () => {
212
- await executeScaffoldManagedSkill(
212
+ await executeScaffoldCloudSkill(
213
213
  {
214
214
  skill_id: "cleared",
215
215
  name: "Cleared",
@@ -222,7 +222,7 @@ describe("scaffold_managed_skill tool", () => {
222
222
  makeContext(),
223
223
  );
224
224
 
225
- const noHints = await executeScaffoldManagedSkill(
225
+ const noHints = await executeScaffoldCloudSkill(
226
226
  {
227
227
  skill_id: "cleared",
228
228
  name: "Cleared",
@@ -238,7 +238,7 @@ describe("scaffold_managed_skill tool", () => {
238
238
  expect(noHints.isError).toBe(true);
239
239
  expect(noHints.content).toContain("activation_hints is required");
240
240
 
241
- const result = await executeScaffoldManagedSkill(
241
+ const result = await executeScaffoldCloudSkill(
242
242
  {
243
243
  skill_id: "cleared",
244
244
  name: "Cleared",
@@ -266,7 +266,7 @@ describe("scaffold_managed_skill tool", () => {
266
266
  expect(scaffoldTool.input_schema.required).toContain("activation_hints");
267
267
 
268
268
  const result = validateInputAgainstSchema(
269
- "scaffold_managed_skill",
269
+ "scaffold_cloud_skill",
270
270
  {
271
271
  skill_id: "s",
272
272
  name: "N",
@@ -282,7 +282,7 @@ describe("scaffold_managed_skill tool", () => {
282
282
  });
283
283
 
284
284
  test("creates a valid skill discovered from its SKILL.md directory", async () => {
285
- const result = await executeScaffoldManagedSkill(
285
+ const result = await executeScaffoldCloudSkill(
286
286
  {
287
287
  skill_id: "test-skill",
288
288
  name: "Test Skill",
@@ -324,7 +324,7 @@ describe("scaffold_managed_skill tool", () => {
324
324
  });
325
325
 
326
326
  test("accepts legacy add_to_index input without returning index metadata", async () => {
327
- const result = await executeScaffoldManagedSkill(
327
+ const result = await executeScaffoldCloudSkill(
328
328
  {
329
329
  skill_id: "legacy-input",
330
330
  name: "Legacy Input",
@@ -345,7 +345,7 @@ describe("scaffold_managed_skill tool", () => {
345
345
  });
346
346
 
347
347
  test("rejects duplicate unless overwrite=true", async () => {
348
- await executeScaffoldManagedSkill(
348
+ await executeScaffoldCloudSkill(
349
349
  {
350
350
  skill_id: "dupe",
351
351
  name: "Original",
@@ -356,7 +356,7 @@ describe("scaffold_managed_skill tool", () => {
356
356
  makeContext(),
357
357
  );
358
358
 
359
- const result2 = await executeScaffoldManagedSkill(
359
+ const result2 = await executeScaffoldCloudSkill(
360
360
  {
361
361
  skill_id: "dupe",
362
362
  name: "Duplicate",
@@ -369,7 +369,7 @@ describe("scaffold_managed_skill tool", () => {
369
369
  expect(result2.isError).toBe(true);
370
370
  expect(result2.content).toContain("already exists");
371
371
 
372
- const result3 = await executeScaffoldManagedSkill(
372
+ const result3 = await executeScaffoldCloudSkill(
373
373
  {
374
374
  skill_id: "dupe",
375
375
  name: "Overwritten",
@@ -398,13 +398,13 @@ describe("scaffold_managed_skill tool", () => {
398
398
  ];
399
399
 
400
400
  for (const input of cases) {
401
- const result = await executeScaffoldManagedSkill(input, makeContext());
401
+ const result = await executeScaffoldCloudSkill(input, makeContext());
402
402
  expect(result.isError).toBe(true);
403
403
  }
404
404
  });
405
405
 
406
406
  test("sanitizes embedded newlines in name/description/emoji to prevent frontmatter injection", async () => {
407
- const result = await executeScaffoldManagedSkill(
407
+ const result = await executeScaffoldCloudSkill(
408
408
  {
409
409
  skill_id: "inject-test",
410
410
  name: 'Test\ninjected_field: "evil"',
@@ -433,7 +433,7 @@ describe("scaffold_managed_skill tool", () => {
433
433
  });
434
434
 
435
435
  test("creates a skill with includes metadata", async () => {
436
- const result = await executeScaffoldManagedSkill(
436
+ const result = await executeScaffoldCloudSkill(
437
437
  {
438
438
  skill_id: "parent-skill",
439
439
  name: "Parent",
@@ -454,7 +454,7 @@ describe("scaffold_managed_skill tool", () => {
454
454
  });
455
455
 
456
456
  test("normalizes includes — trims and deduplicates", async () => {
457
- const result = await executeScaffoldManagedSkill(
457
+ const result = await executeScaffoldCloudSkill(
458
458
  {
459
459
  skill_id: "norm-skill",
460
460
  name: "Normalized",
@@ -475,7 +475,7 @@ describe("scaffold_managed_skill tool", () => {
475
475
  });
476
476
 
477
477
  test("rejects includes with non-string elements", async () => {
478
- const result = await executeScaffoldManagedSkill(
478
+ const result = await executeScaffoldCloudSkill(
479
479
  {
480
480
  skill_id: "bad-includes",
481
481
  name: "Bad",
@@ -492,7 +492,7 @@ describe("scaffold_managed_skill tool", () => {
492
492
  });
493
493
 
494
494
  test("rejects includes with empty string elements", async () => {
495
- const result = await executeScaffoldManagedSkill(
495
+ const result = await executeScaffoldCloudSkill(
496
496
  {
497
497
  skill_id: "empty-includes",
498
498
  name: "Empty",
@@ -509,7 +509,7 @@ describe("scaffold_managed_skill tool", () => {
509
509
  });
510
510
 
511
511
  test("rejects includes with whitespace-only elements", async () => {
512
- const result = await executeScaffoldManagedSkill(
512
+ const result = await executeScaffoldCloudSkill(
513
513
  {
514
514
  skill_id: "ws-includes",
515
515
  name: "Whitespace",
@@ -526,7 +526,7 @@ describe("scaffold_managed_skill tool", () => {
526
526
  });
527
527
 
528
528
  test("omits includes when not provided", async () => {
529
- const result = await executeScaffoldManagedSkill(
529
+ const result = await executeScaffoldCloudSkill(
530
530
  {
531
531
  skill_id: "no-includes",
532
532
  name: "Solo",
@@ -544,7 +544,7 @@ describe("scaffold_managed_skill tool", () => {
544
544
  });
545
545
 
546
546
  test("writes activation_hints and avoid_when metadata that round-trips into the catalog", async () => {
547
- const result = await executeScaffoldManagedSkill(
547
+ const result = await executeScaffoldCloudSkill(
548
548
  {
549
549
  skill_id: "hinted-skill",
550
550
  name: "Hinted",
@@ -577,7 +577,7 @@ describe("scaffold_managed_skill tool", () => {
577
577
  });
578
578
 
579
579
  test("normalizes activation_hints — trims and deduplicates", async () => {
580
- const result = await executeScaffoldManagedSkill(
580
+ const result = await executeScaffoldCloudSkill(
581
581
  {
582
582
  skill_id: "norm-hints",
583
583
  name: "Normalized Hints",
@@ -601,7 +601,7 @@ describe("scaffold_managed_skill tool", () => {
601
601
  // activation_hints are concatenated verbatim into capability memory text, so
602
602
  // an embedded newline would otherwise inject a standalone line into a future
603
603
  // turn. It must be collapsed like name/description are.
604
- const result = await executeScaffoldManagedSkill(
604
+ const result = await executeScaffoldCloudSkill(
605
605
  {
606
606
  skill_id: "inject-hints",
607
607
  name: "Inject Hints",
@@ -630,7 +630,7 @@ describe("scaffold_managed_skill tool", () => {
630
630
  ["ok", ""],
631
631
  ["ok", " "],
632
632
  ]) {
633
- const result = await executeScaffoldManagedSkill(
633
+ const result = await executeScaffoldCloudSkill(
634
634
  {
635
635
  skill_id: "bad-hints",
636
636
  name: "Bad Hints",
@@ -646,7 +646,7 @@ describe("scaffold_managed_skill tool", () => {
646
646
  });
647
647
 
648
648
  test("rejects non-array activation_hints", async () => {
649
- const result = await executeScaffoldManagedSkill(
649
+ const result = await executeScaffoldCloudSkill(
650
650
  {
651
651
  skill_id: "bad-hints-type",
652
652
  name: "Bad Hints Type",
@@ -661,7 +661,7 @@ describe("scaffold_managed_skill tool", () => {
661
661
  });
662
662
 
663
663
  test("omits avoid-when when not provided", async () => {
664
- const result = await executeScaffoldManagedSkill(
664
+ const result = await executeScaffoldCloudSkill(
665
665
  {
666
666
  skill_id: "no-avoid",
667
667
  name: "No Avoid",
@@ -690,7 +690,7 @@ describe("scaffold_managed_skill tool", () => {
690
690
  ];
691
691
  for (const context of [makeContext(), makeRetrospectiveContext()]) {
692
692
  for (const extra of inputs) {
693
- const result = await executeScaffoldManagedSkill(
693
+ const result = await executeScaffoldCloudSkill(
694
694
  {
695
695
  name: "No Hints",
696
696
  description: "No triggers",
@@ -711,7 +711,7 @@ describe("scaffold_managed_skill tool", () => {
711
711
 
712
712
  test("an overwrite that omits activation_hints is rejected and leaves the skill untouched", async () => {
713
713
  const hints = ["user asks to deploy staging", "user asks to cut a release"];
714
- await executeScaffoldManagedSkill(
714
+ await executeScaffoldCloudSkill(
715
715
  {
716
716
  skill_id: "keep-hints",
717
717
  name: "Keep Hints",
@@ -722,7 +722,7 @@ describe("scaffold_managed_skill tool", () => {
722
722
  makeContext(),
723
723
  );
724
724
 
725
- const result = await executeScaffoldManagedSkill(
725
+ const result = await executeScaffoldCloudSkill(
726
726
  {
727
727
  skill_id: "keep-hints",
728
728
  name: "Keep Hints",
@@ -748,7 +748,7 @@ describe("scaffold_managed_skill tool", () => {
748
748
  });
749
749
 
750
750
  test("passes category through to the written skill, lowercased and trimmed", async () => {
751
- const result = await executeScaffoldManagedSkill(
751
+ const result = await executeScaffoldCloudSkill(
752
752
  {
753
753
  skill_id: "categorized",
754
754
  name: "Categorized",
@@ -772,7 +772,7 @@ describe("scaffold_managed_skill tool", () => {
772
772
  });
773
773
 
774
774
  test("rejects non-string category", async () => {
775
- const result = await executeScaffoldManagedSkill(
775
+ const result = await executeScaffoldCloudSkill(
776
776
  {
777
777
  skill_id: "bad-category",
778
778
  name: "Bad Category",
@@ -789,7 +789,7 @@ describe("scaffold_managed_skill tool", () => {
789
789
  });
790
790
 
791
791
  test("omits category when not provided", async () => {
792
- const result = await executeScaffoldManagedSkill(
792
+ const result = await executeScaffoldCloudSkill(
793
793
  {
794
794
  skill_id: "no-category",
795
795
  name: "No Category",
@@ -809,7 +809,7 @@ describe("scaffold_managed_skill tool", () => {
809
809
  });
810
810
 
811
811
  test("rejects invalid skill_id", async () => {
812
- const result = await executeScaffoldManagedSkill(
812
+ const result = await executeScaffoldCloudSkill(
813
813
  {
814
814
  skill_id: "../escape",
815
815
  name: "Bad",
@@ -825,7 +825,7 @@ describe("scaffold_managed_skill tool", () => {
825
825
  });
826
826
 
827
827
  test("writes companion files under the skill dir", async () => {
828
- const result = await executeScaffoldManagedSkill(
828
+ const result = await executeScaffoldCloudSkill(
829
829
  {
830
830
  skill_id: "files-skill",
831
831
  name: "Files Skill",
@@ -859,7 +859,7 @@ describe("scaffold_managed_skill tool", () => {
859
859
  const sourcePath = join(TEST_DIR, "proven-script.py");
860
860
  writeFileSync(sourcePath, "print('ok')\n", "utf-8");
861
861
 
862
- const result = await executeScaffoldManagedSkill(
862
+ const result = await executeScaffoldCloudSkill(
863
863
  {
864
864
  skill_id: "copy-from-skill",
865
865
  name: "Copy From Skill",
@@ -890,7 +890,7 @@ describe("scaffold_managed_skill tool", () => {
890
890
  const sourcePath = join(TEST_DIR, "dupe.py");
891
891
  writeFileSync(sourcePath, "x", "utf-8");
892
892
 
893
- const result = await executeScaffoldManagedSkill(
893
+ const result = await executeScaffoldCloudSkill(
894
894
  {
895
895
  skill_id: "copy-from-both",
896
896
  name: "Both",
@@ -910,7 +910,7 @@ describe("scaffold_managed_skill tool", () => {
910
910
  });
911
911
 
912
912
  test("rejects a non-string copy_from", async () => {
913
- const result = await executeScaffoldManagedSkill(
913
+ const result = await executeScaffoldCloudSkill(
914
914
  {
915
915
  skill_id: "copy-from-type",
916
916
  name: "Bad Type",
@@ -927,7 +927,7 @@ describe("scaffold_managed_skill tool", () => {
927
927
  });
928
928
 
929
929
  test("rejects companion file path traversal with no partial writes", async () => {
930
- const result = await executeScaffoldManagedSkill(
930
+ const result = await executeScaffoldCloudSkill(
931
931
  {
932
932
  skill_id: "files-traversal",
933
933
  name: "Traversal",
@@ -959,7 +959,7 @@ describe("scaffold_managed_skill tool", () => {
959
959
  ];
960
960
 
961
961
  for (const files of cases) {
962
- const result = await executeScaffoldManagedSkill(
962
+ const result = await executeScaffoldCloudSkill(
963
963
  {
964
964
  skill_id: "bad-files",
965
965
  name: "Bad",
@@ -975,7 +975,7 @@ describe("scaffold_managed_skill tool", () => {
975
975
  });
976
976
 
977
977
  test("e2e: scaffold child then parent with includes, verify file discovery", async () => {
978
- const childResult = await executeScaffoldManagedSkill(
978
+ const childResult = await executeScaffoldCloudSkill(
979
979
  {
980
980
  skill_id: "e2e-child",
981
981
  name: "E2E Child",
@@ -987,7 +987,7 @@ describe("scaffold_managed_skill tool", () => {
987
987
  );
988
988
  expect(childResult.isError).toBe(false);
989
989
 
990
- const parentResult = await executeScaffoldManagedSkill(
990
+ const parentResult = await executeScaffoldCloudSkill(
991
991
  {
992
992
  skill_id: "e2e-parent",
993
993
  name: "E2E Parent",
@@ -1018,7 +1018,7 @@ describe("scaffold_managed_skill tool", () => {
1018
1018
  // ── Authorship tagging + user-skill protection ────────────────────────────
1019
1019
 
1020
1020
  test('tags author "assistant" under the retrospective origin', async () => {
1021
- const result = await executeScaffoldManagedSkill(
1021
+ const result = await executeScaffoldCloudSkill(
1022
1022
  {
1023
1023
  skill_id: "retro-skill",
1024
1024
  name: "Retro Skill",
@@ -1043,7 +1043,7 @@ describe("scaffold_managed_skill tool", () => {
1043
1043
  });
1044
1044
 
1045
1045
  test('tags author "user" for a normal (non-retrospective) scaffold', async () => {
1046
- const result = await executeScaffoldManagedSkill(
1046
+ const result = await executeScaffoldCloudSkill(
1047
1047
  {
1048
1048
  skill_id: "user-skill",
1049
1049
  name: "User Skill",
@@ -1060,7 +1060,7 @@ describe("scaffold_managed_skill tool", () => {
1060
1060
 
1061
1061
  test("retrospective refuses to overwrite an author:user skill", async () => {
1062
1062
  // A user authors the skill first.
1063
- await executeScaffoldManagedSkill(
1063
+ await executeScaffoldCloudSkill(
1064
1064
  {
1065
1065
  skill_id: "protected",
1066
1066
  name: "Protected",
@@ -1073,7 +1073,7 @@ describe("scaffold_managed_skill tool", () => {
1073
1073
  expect(installMetaFor("protected")?.author).toBe("user");
1074
1074
 
1075
1075
  // The retrospective tries to overwrite it — refused.
1076
- const result = await executeScaffoldManagedSkill(
1076
+ const result = await executeScaffoldCloudSkill(
1077
1077
  {
1078
1078
  skill_id: "protected",
1079
1079
  name: "Protected",
@@ -1094,7 +1094,7 @@ describe("scaffold_managed_skill tool", () => {
1094
1094
  });
1095
1095
 
1096
1096
  test("retrospective refuses to write companion files into an author:user skill", async () => {
1097
- await executeScaffoldManagedSkill(
1097
+ await executeScaffoldCloudSkill(
1098
1098
  {
1099
1099
  skill_id: "protected-files",
1100
1100
  name: "Protected Files",
@@ -1105,7 +1105,7 @@ describe("scaffold_managed_skill tool", () => {
1105
1105
  makeContext(),
1106
1106
  );
1107
1107
 
1108
- const result = await executeScaffoldManagedSkill(
1108
+ const result = await executeScaffoldCloudSkill(
1109
1109
  {
1110
1110
  skill_id: "protected-files",
1111
1111
  name: "Protected Files",
@@ -1130,7 +1130,7 @@ describe("scaffold_managed_skill tool", () => {
1130
1130
  test("retrospective refuses to overwrite an untagged (no-author) skill", async () => {
1131
1131
  // Simulate a skill created via a path that does not tag author (e.g. the
1132
1132
  // createSkill API route): install-meta with no author field.
1133
- await executeScaffoldManagedSkill(
1133
+ await executeScaffoldCloudSkill(
1134
1134
  {
1135
1135
  skill_id: "untagged",
1136
1136
  name: "Untagged",
@@ -1148,7 +1148,7 @@ describe("scaffold_managed_skill tool", () => {
1148
1148
  expect(installMetaFor("untagged")?.author).toBeUndefined();
1149
1149
 
1150
1150
  // The retrospective must not overwrite a skill it does not own.
1151
- const result = await executeScaffoldManagedSkill(
1151
+ const result = await executeScaffoldCloudSkill(
1152
1152
  {
1153
1153
  skill_id: "untagged",
1154
1154
  name: "Untagged",
@@ -1169,7 +1169,7 @@ describe("scaffold_managed_skill tool", () => {
1169
1169
 
1170
1170
  test("retrospective MAY overwrite its own author:assistant skill", async () => {
1171
1171
  // The retrospective authors a skill, then refines it later.
1172
- await executeScaffoldManagedSkill(
1172
+ await executeScaffoldCloudSkill(
1173
1173
  {
1174
1174
  skill_id: "assistant-owned",
1175
1175
  name: "Assistant Owned",
@@ -1181,7 +1181,7 @@ describe("scaffold_managed_skill tool", () => {
1181
1181
  );
1182
1182
  expect(installMetaFor("assistant-owned")?.author).toBe("assistant");
1183
1183
 
1184
- const result = await executeScaffoldManagedSkill(
1184
+ const result = await executeScaffoldCloudSkill(
1185
1185
  {
1186
1186
  skill_id: "assistant-owned",
1187
1187
  name: "Assistant Owned",
@@ -1221,7 +1221,7 @@ describe("scaffold_managed_skill tool", () => {
1221
1221
  // ── Conversation lineage (retrospective-authored skills) ───────────────────
1222
1222
 
1223
1223
  test("retrospective scaffold records source + retrospective conversation lineage", async () => {
1224
- const result = await executeScaffoldManagedSkill(
1224
+ const result = await executeScaffoldCloudSkill(
1225
1225
  {
1226
1226
  skill_id: "lineage-skill",
1227
1227
  name: "Lineage Skill",
@@ -1247,7 +1247,7 @@ describe("scaffold_managed_skill tool", () => {
1247
1247
 
1248
1248
  test("user scaffold records no conversation lineage and never looks up the conversation", async () => {
1249
1249
  const lookup = mock(() => ({ forkParentConversationId: "source-conv" }));
1250
- const result = await executeScaffoldManagedSkill(
1250
+ const result = await executeScaffoldCloudSkill(
1251
1251
  {
1252
1252
  skill_id: "user-no-lineage",
1253
1253
  name: "User No Lineage",
@@ -1279,7 +1279,7 @@ describe("scaffold_managed_skill tool", () => {
1279
1279
  ];
1280
1280
 
1281
1281
  for (const { skillId, lookup } of cases) {
1282
- const result = await executeScaffoldManagedSkill(
1282
+ const result = await executeScaffoldCloudSkill(
1283
1283
  {
1284
1284
  skill_id: skillId,
1285
1285
  name: "Orphan Lineage",
@@ -1301,7 +1301,7 @@ describe("scaffold_managed_skill tool", () => {
1301
1301
  });
1302
1302
 
1303
1303
  test("a throwing conversation lookup never fails the retrospective scaffold", async () => {
1304
- const result = await executeScaffoldManagedSkill(
1304
+ const result = await executeScaffoldCloudSkill(
1305
1305
  {
1306
1306
  skill_id: "lookup-throws",
1307
1307
  name: "Lookup Throws",
@@ -1330,7 +1330,7 @@ describe("scaffold_managed_skill tool", () => {
1330
1330
  // Some runtime callers construct a partial context without a conversation.
1331
1331
  delete (context as { conversationId?: string }).conversationId;
1332
1332
 
1333
- const result = await executeScaffoldManagedSkill(
1333
+ const result = await executeScaffoldCloudSkill(
1334
1334
  {
1335
1335
  skill_id: "no-conversation",
1336
1336
  name: "No Conversation",
@@ -1353,7 +1353,7 @@ describe("scaffold_managed_skill tool", () => {
1353
1353
  // ── Ownership backstop: never shadow/overwrite a non-managed skill ─────────
1354
1354
 
1355
1355
  test("retrospective refuses to CREATE a skill whose id is owned by a bundled skill", async () => {
1356
- const result = await executeScaffoldManagedSkill(
1356
+ const result = await executeScaffoldCloudSkill(
1357
1357
  {
1358
1358
  skill_id: "deep-research",
1359
1359
  name: "Deep Research",
@@ -1375,7 +1375,7 @@ describe("scaffold_managed_skill tool", () => {
1375
1375
  });
1376
1376
 
1377
1377
  test("retrospective refuses to OVERWRITE a skill whose id is owned by a bundled skill", async () => {
1378
- const result = await executeScaffoldManagedSkill(
1378
+ const result = await executeScaffoldCloudSkill(
1379
1379
  {
1380
1380
  skill_id: "blitz",
1381
1381
  name: "Blitz",
@@ -1395,7 +1395,7 @@ describe("scaffold_managed_skill tool", () => {
1395
1395
 
1396
1396
  test("retrospective refuses an id owned by a plugin or workspace skill", async () => {
1397
1397
  for (const source of ["plugin", "workspace"] as const) {
1398
- const result = await executeScaffoldManagedSkill(
1398
+ const result = await executeScaffoldCloudSkill(
1399
1399
  {
1400
1400
  skill_id: "covered-proc",
1401
1401
  name: "Covered",
@@ -1412,10 +1412,10 @@ describe("scaffold_managed_skill tool", () => {
1412
1412
  });
1413
1413
 
1414
1414
  test("retrospective fails closed on an existing managed skill with missing install-meta", async () => {
1415
- // Seed a managed skill on disk, then strip its install metadata so author
1415
+ // Seed a cloud skill on disk, then strip its install metadata so author
1416
1416
  // is unverifiable. The seam keeps it managed (no non-managed collision), so
1417
1417
  // the disk fail-closed branch is what must refuse.
1418
- await executeScaffoldManagedSkill(
1418
+ await executeScaffoldCloudSkill(
1419
1419
  {
1420
1420
  skill_id: "no-meta",
1421
1421
  name: "No Meta",
@@ -1429,7 +1429,7 @@ describe("scaffold_managed_skill tool", () => {
1429
1429
  rmSync(join(dir, "install-meta.json"));
1430
1430
  expect(installMetaFor("no-meta")).toBeNull();
1431
1431
 
1432
- const result = await executeScaffoldManagedSkill(
1432
+ const result = await executeScaffoldCloudSkill(
1433
1433
  {
1434
1434
  skill_id: "no-meta",
1435
1435
  name: "No Meta",
@@ -1450,7 +1450,7 @@ describe("scaffold_managed_skill tool", () => {
1450
1450
  });
1451
1451
 
1452
1452
  test("retrospective fails closed on an existing managed skill with corrupt install-meta", async () => {
1453
- await executeScaffoldManagedSkill(
1453
+ await executeScaffoldCloudSkill(
1454
1454
  {
1455
1455
  skill_id: "corrupt-meta",
1456
1456
  name: "Corrupt Meta",
@@ -1463,7 +1463,7 @@ describe("scaffold_managed_skill tool", () => {
1463
1463
  const dir = join(TEST_DIR, "skills", "corrupt-meta");
1464
1464
  writeFileSync(join(dir, "install-meta.json"), "{not valid json");
1465
1465
 
1466
- const result = await executeScaffoldManagedSkill(
1466
+ const result = await executeScaffoldCloudSkill(
1467
1467
  {
1468
1468
  skill_id: "corrupt-meta",
1469
1469
  name: "Corrupt Meta",
@@ -1485,7 +1485,7 @@ describe("scaffold_managed_skill tool", () => {
1485
1485
 
1486
1486
  test("retrospective MAY create a fresh skill whose id is free of any catalog collision", async () => {
1487
1487
  // Catalog holds only an unrelated bundled skill — no collision on the id.
1488
- const result = await executeScaffoldManagedSkill(
1488
+ const result = await executeScaffoldCloudSkill(
1489
1489
  {
1490
1490
  skill_id: "fresh-proc",
1491
1491
  name: "Fresh Proc",
@@ -1517,7 +1517,7 @@ describe("scaffold_managed_skill tool", () => {
1517
1517
  }
1518
1518
 
1519
1519
  test("retrospective CREATE enqueues one skill_card_insert job with the normalized payload and resolved source id", async () => {
1520
- const result = await executeScaffoldManagedSkill(
1520
+ const result = await executeScaffoldCloudSkill(
1521
1521
  {
1522
1522
  skill_id: " card-skill ",
1523
1523
  name: " Card\nSkill ",
@@ -1550,7 +1550,7 @@ describe("scaffold_managed_skill tool", () => {
1550
1550
  });
1551
1551
 
1552
1552
  test("a whitespace-only emoji is omitted from the card payload", async () => {
1553
- const result = await executeScaffoldManagedSkill(
1553
+ const result = await executeScaffoldCloudSkill(
1554
1554
  {
1555
1555
  skill_id: "no-emoji-card",
1556
1556
  name: "No Emoji",
@@ -1593,7 +1593,7 @@ describe("scaffold_managed_skill tool", () => {
1593
1593
  ];
1594
1594
 
1595
1595
  for (const { skillId, lookup } of cases) {
1596
- const result = await executeScaffoldManagedSkill(
1596
+ const result = await executeScaffoldCloudSkill(
1597
1597
  {
1598
1598
  skill_id: skillId,
1599
1599
  name: "No Card",
@@ -1615,7 +1615,7 @@ describe("scaffold_managed_skill tool", () => {
1615
1615
 
1616
1616
  test("retrospective overwrite of an EXISTING skill (a refinement) does not enqueue a card", async () => {
1617
1617
  // First pass: genuine create — enqueues.
1618
- await executeScaffoldManagedSkill(
1618
+ await executeScaffoldCloudSkill(
1619
1619
  {
1620
1620
  skill_id: "refined-skill",
1621
1621
  name: "Refined Skill",
@@ -1630,7 +1630,7 @@ describe("scaffold_managed_skill tool", () => {
1630
1630
  skillCardJobUpserts = [];
1631
1631
 
1632
1632
  // Second pass: overwrite of the pre-existing skill — a refinement, no card.
1633
- const result = await executeScaffoldManagedSkill(
1633
+ const result = await executeScaffoldCloudSkill(
1634
1634
  {
1635
1635
  skill_id: "refined-skill",
1636
1636
  name: "Refined Skill",
@@ -1649,7 +1649,7 @@ describe("scaffold_managed_skill tool", () => {
1649
1649
  });
1650
1650
 
1651
1651
  test("retrospective overwrite:true on a skill that did NOT previously exist is still a create and enqueues", async () => {
1652
- const result = await executeScaffoldManagedSkill(
1652
+ const result = await executeScaffoldCloudSkill(
1653
1653
  {
1654
1654
  skill_id: "overwrite-fresh",
1655
1655
  name: "Overwrite Fresh",
@@ -1674,7 +1674,7 @@ describe("scaffold_managed_skill tool", () => {
1674
1674
  });
1675
1675
 
1676
1676
  test("user-origin create never enqueues a card, even with resolvable lineage", async () => {
1677
- const result = await executeScaffoldManagedSkill(
1677
+ const result = await executeScaffoldCloudSkill(
1678
1678
  {
1679
1679
  skill_id: "user-no-card",
1680
1680
  name: "User No Card",
@@ -1693,7 +1693,7 @@ describe("scaffold_managed_skill tool", () => {
1693
1693
  test("a throwing enqueue never fails the scaffold — the skill is already created", async () => {
1694
1694
  skillCardUpsertThrows = true;
1695
1695
 
1696
- const result = await executeScaffoldManagedSkill(
1696
+ const result = await executeScaffoldCloudSkill(
1697
1697
  {
1698
1698
  skill_id: "enqueue-throws",
1699
1699
  name: "Enqueue Throws",
@@ -1714,7 +1714,7 @@ describe("scaffold_managed_skill tool", () => {
1714
1714
 
1715
1715
  test("two creates in the same run enqueue one upsert per skill under the same run id (merge happens in the jobs store)", async () => {
1716
1716
  for (const skillId of ["run-skill-a", "run-skill-b"]) {
1717
- const result = await executeScaffoldManagedSkill(
1717
+ const result = await executeScaffoldCloudSkill(
1718
1718
  {
1719
1719
  skill_id: skillId,
1720
1720
  name: `Skill ${skillId}`,
@@ -1753,7 +1753,7 @@ describe("scaffold_managed_skill tool", () => {
1753
1753
  describe("background skill update notification", () => {
1754
1754
  /** Seed an assistant-authored skill the background pass may overwrite. */
1755
1755
  async function seedAssistantSkill(id: string, body: string): Promise<void> {
1756
- await executeScaffoldManagedSkill(
1756
+ await executeScaffoldCloudSkill(
1757
1757
  {
1758
1758
  skill_id: id,
1759
1759
  name: "Weekly Report Export",
@@ -1784,7 +1784,7 @@ describe("background skill update notification", () => {
1784
1784
  test("a background overwrite of an existing skill records a receipt entry keyed to the tool call", async () => {
1785
1785
  await seedAssistantSkill("weekly-export", "Old body.");
1786
1786
 
1787
- const result = await executeScaffoldManagedSkill(
1787
+ const result = await executeScaffoldCloudSkill(
1788
1788
  {
1789
1789
  skill_id: "weekly-export",
1790
1790
  name: "Weekly Report Export",
@@ -1823,7 +1823,7 @@ describe("background skill update notification", () => {
1823
1823
  await seedAssistantSkill("weekly-export", "Old body.");
1824
1824
 
1825
1825
  for (const body of ["1. Refined steps.", "1. Refined again."]) {
1826
- await executeScaffoldManagedSkill(
1826
+ await executeScaffoldCloudSkill(
1827
1827
  {
1828
1828
  skill_id: "weekly-export",
1829
1829
  name: "Weekly Report Export",
@@ -1848,7 +1848,7 @@ describe("background skill update notification", () => {
1848
1848
  await seedAssistantSkill("weekly-export", "Old body.");
1849
1849
  recordUpdateFails = true;
1850
1850
 
1851
- const result = await executeScaffoldManagedSkill(
1851
+ const result = await executeScaffoldCloudSkill(
1852
1852
  {
1853
1853
  skill_id: "weekly-export",
1854
1854
  name: "Weekly Report Export",
@@ -1879,7 +1879,7 @@ describe("background skill update notification", () => {
1879
1879
  test("the entry body is the pass's change_summary, so the receipt says what changed", async () => {
1880
1880
  await seedAssistantSkill("weekly-export", "Old body.");
1881
1881
 
1882
- const result = await executeScaffoldManagedSkill(
1882
+ const result = await executeScaffoldCloudSkill(
1883
1883
  {
1884
1884
  skill_id: "weekly-export",
1885
1885
  name: "Weekly Report Export",
@@ -1910,7 +1910,7 @@ describe("background skill update notification", () => {
1910
1910
  // Whitespace-only reads as missing, not as an empty notice.
1911
1911
  { change_summary: " \n " },
1912
1912
  ]) {
1913
- const result = await executeScaffoldManagedSkill(
1913
+ const result = await executeScaffoldCloudSkill(
1914
1914
  {
1915
1915
  skill_id: "weekly-export",
1916
1916
  name: "Weekly Report Export",
@@ -1938,7 +1938,7 @@ describe("background skill update notification", () => {
1938
1938
  test("a background call on an existing skill without overwrite hears the overwrite error, not the summary requirement", async () => {
1939
1939
  await seedAssistantSkill("weekly-export", "Old body.");
1940
1940
 
1941
- const result = await executeScaffoldManagedSkill(
1941
+ const result = await executeScaffoldCloudSkill(
1942
1942
  {
1943
1943
  skill_id: "weekly-export",
1944
1944
  name: "Weekly Report Export",
@@ -1959,7 +1959,7 @@ describe("background skill update notification", () => {
1959
1959
  });
1960
1960
 
1961
1961
  test("the ownership backstop speaks before the change_summary requirement", async () => {
1962
- await executeScaffoldManagedSkill(
1962
+ await executeScaffoldCloudSkill(
1963
1963
  {
1964
1964
  skill_id: "user-owned",
1965
1965
  name: "User Owned",
@@ -1970,7 +1970,7 @@ describe("background skill update notification", () => {
1970
1970
  makeContext(),
1971
1971
  );
1972
1972
 
1973
- const result = await executeScaffoldManagedSkill(
1973
+ const result = await executeScaffoldCloudSkill(
1974
1974
  {
1975
1975
  skill_id: "user-owned",
1976
1976
  name: "User Owned",
@@ -1988,7 +1988,7 @@ describe("background skill update notification", () => {
1988
1988
  });
1989
1989
 
1990
1990
  test("a user-directed overwrite needs no change_summary: it records no entry", async () => {
1991
- await executeScaffoldManagedSkill(
1991
+ await executeScaffoldCloudSkill(
1992
1992
  {
1993
1993
  skill_id: "user-skill",
1994
1994
  name: "User Skill",
@@ -1999,7 +1999,7 @@ describe("background skill update notification", () => {
1999
1999
  makeContext(),
2000
2000
  );
2001
2001
 
2002
- const result = await executeScaffoldManagedSkill(
2002
+ const result = await executeScaffoldCloudSkill(
2003
2003
  {
2004
2004
  skill_id: "user-skill",
2005
2005
  name: "User Skill",
@@ -2017,7 +2017,7 @@ describe("background skill update notification", () => {
2017
2017
  test("change_summary is sanitized like any notification body", async () => {
2018
2018
  await seedAssistantSkill("weekly-export", "Old body.");
2019
2019
 
2020
- await executeScaffoldManagedSkill(
2020
+ await executeScaffoldCloudSkill(
2021
2021
  {
2022
2022
  skill_id: "weekly-export",
2023
2023
  name: "Weekly Report Export",
@@ -2046,7 +2046,7 @@ describe("background skill update notification", () => {
2046
2046
  test("a non-string change_summary is a self-correcting error", async () => {
2047
2047
  await seedAssistantSkill("weekly-export", "Old body.");
2048
2048
 
2049
- const result = await executeScaffoldManagedSkill(
2049
+ const result = await executeScaffoldCloudSkill(
2050
2050
  {
2051
2051
  skill_id: "weekly-export",
2052
2052
  name: "Weekly Report Export",
@@ -2079,7 +2079,7 @@ describe("background skill update notification", () => {
2079
2079
  expect(scaffoldTool.input_schema.required).not.toContain("change_summary");
2080
2080
 
2081
2081
  const result = validateInputAgainstSchema(
2082
- "scaffold_managed_skill",
2082
+ "scaffold_cloud_skill",
2083
2083
  {
2084
2084
  skill_id: "s",
2085
2085
  name: "N",
@@ -2097,7 +2097,7 @@ describe("background skill update notification", () => {
2097
2097
  test("an entry whose fork lineage does not resolve carries no source, never the run", async () => {
2098
2098
  await seedAssistantSkill("weekly-export", "Old body.");
2099
2099
 
2100
- await executeScaffoldManagedSkill(
2100
+ await executeScaffoldCloudSkill(
2101
2101
  {
2102
2102
  skill_id: "weekly-export",
2103
2103
  name: "Weekly Report Export",
@@ -2118,7 +2118,7 @@ describe("background skill update notification", () => {
2118
2118
  });
2119
2119
 
2120
2120
  test("a background CREATE gets the skill card instead, with no duplicate signal", async () => {
2121
- const result = await executeScaffoldManagedSkill(
2121
+ const result = await executeScaffoldCloudSkill(
2122
2122
  {
2123
2123
  skill_id: "brand-new-skill",
2124
2124
  name: "Brand New Skill",
@@ -2136,7 +2136,7 @@ describe("background skill update notification", () => {
2136
2136
  });
2137
2137
 
2138
2138
  test("a user-directed overwrite records no receipt entry: it is not unattended work", async () => {
2139
- await executeScaffoldManagedSkill(
2139
+ await executeScaffoldCloudSkill(
2140
2140
  {
2141
2141
  skill_id: "user-skill",
2142
2142
  name: "User Skill",
@@ -2148,7 +2148,7 @@ describe("background skill update notification", () => {
2148
2148
  );
2149
2149
  recordedUpdates = [];
2150
2150
 
2151
- await executeScaffoldManagedSkill(
2151
+ await executeScaffoldCloudSkill(
2152
2152
  {
2153
2153
  skill_id: "user-skill",
2154
2154
  name: "User Skill",