@mycadet/assistant 0.12.7 → 0.12.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/docs/activation-funnel-telemetry.md +6 -6
- package/docs/cadet-doctor.md +7 -7
- package/docs/desktop-browser-cli.md +7 -7
- package/docs/skills.md +2 -2
- package/docs/voice-input-diagnostics.md +1 -1
- package/eslint-rules/__tests__/cli-no-daemon-internals.test.ts +2 -2
- package/node_modules/@mycadet/avatar-manifest/src/__tests__/notification-avatar.test.ts +1 -1
- package/node_modules/@mycadet/avatar-manifest/src/notification-avatar.ts +2 -2
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/package.json +1 -1
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/{platform-credential.ts → cloud-credential.ts} +9 -9
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/handles.ts +3 -3
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/index.ts +1 -1
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/ingress.ts +11 -5
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/remote-web-pairing.ts +1 -1
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/rpc.ts +14 -14
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/trust-rules.ts +5 -5
- package/node_modules/@mycadet/ces-client/src/rpc-client.ts +1 -1
- package/node_modules/@mycadet/credential-storage/src/oauth-runtime.ts +1 -1
- package/node_modules/@mycadet/credential-storage/src/static-credentials.ts +1 -1
- package/node_modules/@mycadet/environments/src/seeds.ts +6 -6
- package/node_modules/@mycadet/environments/src/shell.test.ts +1 -1
- package/node_modules/@mycadet/environments/src/types.ts +6 -6
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/package.json +1 -1
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/{platform-credential.ts → cloud-credential.ts} +9 -9
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/handles.ts +3 -3
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/index.ts +1 -1
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/ingress.ts +11 -5
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/remote-web-pairing.ts +1 -1
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/rpc.ts +14 -14
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/trust-rules.ts +5 -5
- package/node_modules/@mycadet/gateway-client/src/binding-strength-contract.ts +5 -5
- package/node_modules/@mycadet/gateway-client/src/gateway-ipc-contracts.ts +1 -1
- package/node_modules/@mycadet/gateway-client/src/inbound-contract.ts +2 -2
- package/node_modules/@mycadet/gateway-client/src/outbound-contract.ts +1 -1
- package/node_modules/@mycadet/service-contracts/package.json +1 -1
- package/node_modules/@mycadet/service-contracts/src/{platform-credential.ts → cloud-credential.ts} +9 -9
- package/node_modules/@mycadet/service-contracts/src/handles.ts +3 -3
- package/node_modules/@mycadet/service-contracts/src/index.ts +1 -1
- package/node_modules/@mycadet/service-contracts/src/ingress.ts +11 -5
- package/node_modules/@mycadet/service-contracts/src/remote-web-pairing.ts +1 -1
- package/node_modules/@mycadet/service-contracts/src/rpc.ts +14 -14
- package/node_modules/@mycadet/service-contracts/src/trust-rules.ts +5 -5
- package/openapi.yaml +6815 -794
- package/package.json +2 -2
- package/scripts/build-test-fixtures.ts +1 -1
- package/scripts/probe-skill-retrieval.ts +1 -1
- package/scripts/sync-llm-catalog.ts +2 -2
- package/scripts/voice-ttft-spike.ts +2 -2
- package/src/__tests__/adaptive-thinking-repair.test.ts +4 -4
- package/src/__tests__/agent-loop-override-profile.test.ts +4 -4
- package/src/__tests__/agent-loop-subagent-billing-headers.test.ts +1 -1
- package/src/__tests__/anthropic-provider.test.ts +2 -2
- package/src/__tests__/available-skills.test.ts +11 -12
- package/src/__tests__/avatar-identity-sync.test.ts +1 -1
- package/src/__tests__/byok-default-profile-ensure.test.ts +7 -7
- package/src/__tests__/call-domain.test.ts +1 -1
- package/src/__tests__/call-site-routing-connection-auto-resolve.test.ts +2 -2
- package/src/__tests__/catalog-files.test.ts +10 -10
- package/src/__tests__/catalog-install-normalize.test.ts +3 -3
- package/src/__tests__/channel-availability-routes.test.ts +8 -8
- package/src/__tests__/channel-readiness-routes.test.ts +4 -4
- package/src/__tests__/channel-readiness-service.test.ts +14 -14
- package/src/__tests__/channel-readiness-telegram-remote.test.ts +1 -1
- package/src/__tests__/chat-reveal-guard-priming.test.ts +5 -6
- package/src/__tests__/checker.test.ts +6 -6
- package/src/__tests__/clawhub.test.ts +1 -1
- package/src/__tests__/{platform-callback-registration.test.ts → cloud-callback-registration.test.ts} +66 -90
- package/src/__tests__/{platform-client-verify-credential.test.ts → cloud-client-verify-credential.test.ts} +14 -14
- package/src/__tests__/{managed-credential-catalog-cli.test.ts → cloud-credential-catalog-cli.test.ts} +41 -41
- package/src/__tests__/{managed-fallback-dispatch.test.ts → cloud-fallback-dispatch.test.ts} +21 -16
- package/src/__tests__/{managed-profile-guard.test.ts → cloud-profile-guard.test.ts} +60 -60
- package/src/__tests__/{platform-proxy-context.test.ts → cloud-proxy-context.test.ts} +44 -44
- package/src/__tests__/{managed-speech-defaults.test.ts → cloud-speech-defaults.test.ts} +41 -41
- package/src/__tests__/{managed-store.test.ts → cloud-store.test.ts} +99 -99
- package/src/__tests__/compaction-events.test.ts +7 -5
- package/src/__tests__/config-loader-backfill.test.ts +65 -65
- package/src/__tests__/config-loader-cloud-defaults.test.ts +373 -0
- package/src/__tests__/config-loader-corrupt.test.ts +1 -1
- package/src/__tests__/config-loader-validation-reset-notice.test.ts +1 -1
- package/src/__tests__/config-schema.test.ts +3 -3
- package/src/__tests__/{config-set-platform-guard.test.ts → config-set-cloud-guard.test.ts} +6 -6
- package/src/__tests__/config-watcher-cleanup-throttle.test.ts +0 -8
- package/src/__tests__/config-watcher.test.ts +1 -1
- package/src/__tests__/contacts-write.test.ts +1 -1
- package/src/__tests__/conversation-agent-loop.test.ts +2 -2
- package/src/__tests__/conversation-app-control-instantiation.test.ts +18 -18
- package/src/__tests__/conversation-error.test.ts +45 -45
- package/src/__tests__/conversation-inference-profile-route.test.ts +4 -4
- package/src/__tests__/conversation-rendered-delegation-state.test.ts +4 -4
- package/src/__tests__/conversation-skill-tools.test.ts +7 -8
- package/src/__tests__/conversation-slash.test.ts +2 -2
- package/src/__tests__/conversation-speed-override.test.ts +8 -10
- package/src/__tests__/conversation-summarize-up-to.test.ts +4 -4
- package/src/__tests__/conversation-surfaces-activation-emit.test.ts +1 -1
- package/src/__tests__/conversation-wait-for-idle.test.ts +7 -5
- package/src/__tests__/credential-execution-api-key-propagation.test.ts +5 -5
- package/src/__tests__/{credential-execution-managed-contract.test.ts → credential-execution-cloud-contract.test.ts} +24 -24
- package/src/__tests__/credential-health-service.test.ts +27 -41
- package/src/__tests__/credential-routes.test.ts +85 -165
- package/src/__tests__/credential-security-invariants.test.ts +6 -7
- package/src/__tests__/custom-profile-ensure.test.ts +1 -1
- package/src/__tests__/date-context.test.ts +1 -1
- package/src/__tests__/default-profile-catalog-fallback.test.ts +15 -15
- package/src/__tests__/delete-managed-skill-tool.test.ts +8 -8
- package/src/__tests__/discord-callback-round-trip.test.ts +1 -1
- package/src/__tests__/disk-usage.test.ts +3 -3
- package/src/__tests__/email-invite-adapter.test.ts +5 -5
- package/src/__tests__/{embedding-managed-proxy-selection.test.ts → embedding-cloud-proxy-selection.test.ts} +44 -43
- package/src/__tests__/emit-signal-routing-intent.test.ts +13 -15
- package/src/__tests__/events-dev-bypass-actor.test.ts +2 -2
- package/src/__tests__/fallback-breaker.test.ts +7 -7
- package/src/__tests__/feature-flag-test-helpers.ts +106 -0
- package/src/__tests__/gateway-flag-listener.test.ts +1 -1
- package/src/__tests__/gemini-image-service.test.ts +2 -2
- package/src/__tests__/gemini-provider.test.ts +5 -5
- package/src/__tests__/get-skill-detail-audit.test.ts +9 -8
- package/src/__tests__/guardian-verification-voice-binding.test.ts +1 -1
- package/src/__tests__/handlers-skills-memory-v2-reseed.test.ts +5 -5
- package/src/__tests__/host-cu-routes-targeted.test.ts +8 -8
- package/src/__tests__/image-credentials.test.ts +13 -13
- package/src/__tests__/inbound-admitted-introduction-nudge.test.ts +14 -6
- package/src/__tests__/inbound-trust-verdict.test.ts +14 -6
- package/src/__tests__/inference-no-mode-boot-e2e.test.ts +11 -11
- package/src/__tests__/inference-profile-session-handler.test.ts +7 -7
- package/src/__tests__/inference-profile-session-ipc.test.ts +5 -5
- package/src/__tests__/inference-profile-validation-jev.test.ts +1 -1
- package/src/__tests__/init-feature-flag-overrides.test.ts +40 -24
- package/src/__tests__/input-repairs.test.ts +1 -1
- package/src/__tests__/install-skill-routing.test.ts +10 -8
- package/src/__tests__/integration-status.test.ts +5 -5
- package/src/__tests__/internal-telemetry-routes.test.ts +3 -3
- package/src/__tests__/invite-routes-http.test.ts +1 -1
- package/src/__tests__/llm-catalog-parity.test.ts +5 -7
- package/src/__tests__/llm-request-log-source-clickhouse.test.ts +2 -2
- package/src/__tests__/llm-resolver-override-or-default.test.ts +3 -3
- package/src/__tests__/llm-resolver.test.ts +1 -1
- package/src/__tests__/llm-schema-fallback-profile.test.ts +25 -19
- package/src/__tests__/llm-usage-store.test.ts +1 -1
- package/src/__tests__/managed-skill-lifecycle.test.ts +12 -12
- package/src/__tests__/mcp-abort-signal.test.ts +2 -2
- package/src/__tests__/mcp-client-auth.test.ts +2 -2
- package/src/__tests__/mcp-tool-annotations-risk.test.ts +2 -2
- package/src/__tests__/media-generate-image.test.ts +30 -30
- package/src/__tests__/memory-config-file-parity.test.ts +6 -6
- package/src/__tests__/migration-export-to-gcs.test.ts +4 -4
- package/src/__tests__/migration-import-commit-http.test.ts +1 -1
- package/src/__tests__/mtime-cache.test.ts +2 -2
- package/src/__tests__/{notification-platform-adapter.test.ts → notification-cloud-adapter.test.ts} +39 -39
- package/src/__tests__/notification-deep-link.test.ts +40 -40
- package/src/__tests__/oauth-apps-routes.test.ts +3 -3
- package/src/__tests__/oauth-cli.test.ts +9 -9
- package/src/__tests__/oauth-commands-routes.test.ts +16 -16
- package/src/__tests__/oauth-connect-orchestrator.test.ts +2 -2
- package/src/__tests__/oauth-provider-serializer.test.ts +11 -11
- package/src/__tests__/oauth-providers-routes.test.ts +12 -12
- package/src/__tests__/oauth-store.test.ts +1 -1
- package/src/__tests__/oauth2-gateway-transport.test.ts +3 -3
- package/src/__tests__/onboarding-persona-write.test.ts +2 -2
- package/src/__tests__/openai-image-service.test.ts +2 -2
- package/src/__tests__/openai-responses-cutover-guard.test.ts +2 -2
- package/src/__tests__/openai-responses-provider.test.ts +1 -1
- package/src/__tests__/path-policy.test.ts +4 -4
- package/src/__tests__/personal-memory-auth-bypass.test.ts +1 -1
- package/src/__tests__/platform-bash-auto-approve.test.ts +18 -18
- package/src/__tests__/plugin-api-model-profiles.test.ts +1 -1
- package/src/__tests__/plugin-api-provider.test.ts +1 -1
- package/src/__tests__/plugin-api-webhook-url.test.ts +4 -5
- package/src/__tests__/plugin-import-boundary-guard.test.ts +8 -39
- package/src/__tests__/plugin-import-boundary-reverse-guard.test.ts +2 -2
- package/src/__tests__/{provider-platform-proxy-integration.test.ts → provider-cloud-proxy-integration.test.ts} +70 -72
- package/src/__tests__/provider-commit-message-generator.test.ts +1 -1
- package/src/__tests__/provider-connections-backfill.test.ts +9 -9
- package/src/__tests__/provider-error-scenarios.test.ts +8 -8
- package/src/__tests__/provider-registry-ollama.test.ts +1 -1
- package/src/__tests__/provider-send-message-override-profile.test.ts +5 -5
- package/src/__tests__/registry.test.ts +3 -3
- package/src/__tests__/requests-mock.ts +972 -0
- package/src/__tests__/resolve-trust-class.test.ts +1 -1
- package/src/__tests__/resource-pressure-guard.test.ts +6 -6
- package/src/__tests__/resource-pressure-routes.test.ts +5 -5
- package/src/__tests__/retry-fallback-escalation.test.ts +5 -5
- package/src/__tests__/sanitize-config-for-transfer.test.ts +1 -1
- package/src/__tests__/scaffold-managed-skill-tool.test.ts +97 -97
- package/src/__tests__/schedule-store.test.ts +1 -1
- package/src/__tests__/search-skills-unified.test.ts +9 -7
- package/src/__tests__/{secret-routes-platform-proxy.test.ts → secret-routes-cloud-proxy.test.ts} +48 -95
- package/src/__tests__/secret-routes-scrub.test.ts +2 -59
- package/src/__tests__/secure-keys.test.ts +1 -1
- package/src/__tests__/skill-load-plugin-scope.test.ts +2 -2
- package/src/__tests__/skill-load-tool.test.ts +1 -1
- package/src/__tests__/skill-projection-feature-flag.test.ts +0 -19
- package/src/__tests__/skill-projection.benchmark.test.ts +5 -7
- package/src/__tests__/skill-tool-factory.test.ts +1 -1
- package/src/__tests__/skills-file-content-endpoint.test.ts +12 -12
- package/src/__tests__/skills-files-catalog-fallback.test.ts +9 -9
- package/src/__tests__/skills.test.ts +1 -1
- package/src/__tests__/slim-skill-category.test.ts +11 -9
- package/src/__tests__/stt-stream-session.test.ts +3 -3
- package/src/__tests__/subagent-call-site-routing.test.ts +1 -1
- package/src/__tests__/subagent-disposal.test.ts +5 -5
- package/src/__tests__/subagent-fork-notifications.test.ts +4 -4
- package/src/__tests__/subagent-fork-spawn.test.ts +5 -5
- package/src/__tests__/subagent-manager-notify.test.ts +5 -5
- package/src/__tests__/subagent-tool-gate-mode.test.ts +2 -2
- package/src/__tests__/system-prompt.test.ts +1 -1
- package/src/__tests__/telegram-bot-username-resolution.test.ts +34 -52
- package/src/__tests__/telegram-config.test.ts +16 -16
- package/src/__tests__/telephony-tts-guard.test.ts +13 -13
- package/src/__tests__/test-preload.ts +17 -7
- package/src/__tests__/tool-audit.test.ts +1 -1
- package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +7 -5
- package/src/__tests__/tool-executor-lifecycle-events.test.ts +1 -1
- package/src/__tests__/turn-events-store.test.ts +1 -1
- package/src/__tests__/twilio-routes.test.ts +2 -1
- package/src/__tests__/ui-choice-copy-surfaces.test.ts +1 -1
- package/src/__tests__/unified-turn-context-client-os.test.ts +1 -1
- package/src/__tests__/validate-input.test.ts +5 -5
- package/src/__tests__/verification-outbound-delivery.test.ts +1 -1
- package/src/__tests__/voice-config-update.test.ts +15 -15
- package/src/__tests__/voice-ingress-preflight.test.ts +4 -4
- package/src/__tests__/web-search.test.ts +340 -859
- package/src/__tests__/workspace-git-service.test.ts +1 -1
- package/src/__tests__/workspace-migration-082-backfill-managed-profile-labels.test.ts +12 -12
- package/src/__tests__/workspace-migration-087-memory-router-balanced-profile.test.ts +1 -1
- package/src/__tests__/workspace-migration-090-memory-router-cost-optimized-profile.test.ts +1 -1
- package/src/__tests__/workspace-migration-100-upgrade-quality-profile-to-fable-5.test.ts +1 -1
- package/src/__tests__/workspace-migration-103-upgrade-quality-profile-to-opus-4-8.test.ts +1 -1
- package/src/__tests__/workspace-migration-110-flip-balanced-profile-to-together.test.ts +1 -1
- package/src/__tests__/workspace-migration-113-swap-balanced-profile-to-glm-5p2.test.ts +1 -1
- package/src/__tests__/workspace-migration-114-swap-quality-profile-to-opus.test.ts +1 -1
- package/src/__tests__/workspace-migration-123-swap-quality-profile-to-fable.test.ts +1 -1
- package/src/__tests__/workspace-migration-125-repoint-managed-connections-to-cadet.test.ts +3 -3
- package/src/__tests__/workspace-migration-126-strip-managed-profile-bodies.test.ts +9 -9
- package/src/__tests__/workspace-migration-127-backfill-default-provider.test.ts +11 -11
- package/src/__tests__/workspace-migration-130-speech-mode-to-provider.test.ts +3 -3
- package/src/__tests__/workspace-migration-132-web-search-mode-to-provider.test.ts +6 -6
- package/src/__tests__/workspace-migration-133-collapse-provider-connections.test.ts +3 -3
- package/src/__tests__/workspace-migration-134-image-generation-mode-to-provider.test.ts +6 -6
- package/src/__tests__/workspace-migration-136-repair-stale-fireworks-kimi-model-id.test.ts +1 -1
- package/src/__tests__/workspace-migration-137-repair-retired-fireworks-minimax-model-id.test.ts +1 -1
- package/src/__tests__/workspace-migration-146-repair-retired-fireworks-deepseek-flash-model-id.test.ts +1 -1
- package/src/__tests__/workspace-migration-147-rename-colliding-backup-profile-names.test.ts +1 -1
- package/src/__tests__/workspace-migration-151-repair-renamed-fireworks-deepseek-pro-model-id.test.ts +1 -1
- package/src/__tests__/workspace-migration-152-repair-retired-fireworks-minimax-m2p7-model-id.test.ts +1 -1
- package/src/__tests__/workspace-migration-159-rename-colliding-jev-profile-name.test.ts +1 -1
- package/src/__tests__/workspace-migration-160-repair-retired-fireworks-model-ids.test.ts +1 -1
- package/src/__tests__/workspace-migration-161-repair-retired-fireworks-glm-5p2-model-id.test.ts +1 -1
- package/src/api/events/cloud-disconnected.ts +21 -0
- package/src/api/events/host-bash.ts +1 -1
- package/src/api/events/host-cu.ts +1 -1
- package/src/api/events/host-file.ts +1 -1
- package/src/api/events/notification-intent.ts +1 -1
- package/src/api/events/{show-platform-login.ts → show-cloud-login.ts} +3 -5
- package/src/api/index.ts +11 -11
- package/src/api/responses/home.ts +1 -1
- package/src/api/surfaces.ts +4 -4
- package/src/approvals/guardian-request-resolvers.ts +2 -2
- package/src/avatar/accent-backfill.ts +1 -1
- package/src/avatar/identity-avatar.ts +1 -1
- package/src/avatar/notification-avatar.test.ts +2 -2
- package/src/avatar/notification-avatar.ts +2 -2
- package/src/avatar/resvg-lazy.test.ts +1 -1
- package/src/avatar/resvg-lazy.ts +3 -3
- package/src/avatar/sync-avatar.test.ts +76 -76
- package/src/avatar/sync-avatar.ts +15 -15
- package/src/avatar/traits-png-sync.ts +1 -1
- package/src/background-wake/background-wake-routes.test.ts +39 -39
- package/src/background-wake/{platform-client.test.ts → cloud-client.test.ts} +11 -11
- package/src/background-wake/{platform-client.ts → cloud-client.ts} +14 -14
- package/src/background-wake/publisher.ts +4 -4
- package/src/background-wake/wake-intent-hooks.test.ts +3 -3
- package/src/calls/__tests__/call-controller.test.ts +2 -2
- package/src/calls/__tests__/voice-session-bridge.test.ts +1 -1
- package/src/calls/call-domain.ts +1 -1
- package/src/calls/resolve-call-tts-provider.ts +6 -6
- package/src/calls/telephony-credential-preflight.ts +3 -3
- package/src/calls/telephony-tts-capability.ts +5 -6
- package/src/calls/tts-call-strategy.ts +1 -1
- package/src/calls/voice-escalation-judge.ts +1 -1
- package/src/calls/voice-ingress-preflight.ts +4 -4
- package/src/cli/bundled-modules.ts +1 -1
- package/src/cli/commands/__tests__/apps.test.ts +18 -53
- package/src/cli/commands/__tests__/plugins.test.ts +13 -13
- package/src/cli/commands/__tests__/tts.test.ts +1 -1
- package/src/cli/commands/auth.help.ts +3 -3
- package/src/cli/commands/auth.ts +2 -4
- package/src/cli/commands/browser.help.ts +2 -2
- package/src/cli/commands/channels/index.help.ts +2 -2
- package/src/cli/commands/channels/index.ts +1 -1
- package/src/cli/commands/channels/send.ts +1 -1
- package/src/cli/commands/cloud/__tests__/connect.test.ts +1 -1
- package/src/cli/commands/cloud/__tests__/disconnect.test.ts +3 -4
- package/src/cli/commands/cloud/connect.ts +2 -2
- package/src/cli/commands/cloud/credits-format.ts +1 -1
- package/src/cli/commands/cloud/index.help.ts +35 -35
- package/src/cli/commands/config.ts +1 -1
- package/src/cli/commands/credentials.ts +10 -12
- package/src/cli/commands/domain.ts +1 -1
- package/src/cli/commands/email.help.ts +1 -1
- package/src/cli/commands/email.ts +2 -2
- package/src/cli/commands/gateway.help.ts +1 -1
- package/src/cli/commands/gateway.ts +1 -1
- package/src/cli/commands/image-generation.help.ts +1 -1
- package/src/cli/commands/inference-providers.ts +1 -1
- package/src/cli/commands/inference.help.ts +2 -2
- package/src/cli/commands/memory/index.help.ts +1 -1
- package/src/cli/commands/oauth/connect.test.ts +2 -2
- package/src/cli/commands/oauth/connect.ts +1 -1
- package/src/cli/commands/oauth/index.help.ts +5 -5
- package/src/cli/commands/oauth/providers.ts +2 -2
- package/src/cli/commands/oauth/shared.ts +3 -3
- package/src/cli/commands/plugins.help.ts +2 -3
- package/src/cli/commands/plugins.ts +5 -5
- package/src/cli/commands/roadmap.help.ts +1 -1
- package/src/cli/commands/telemetry.help.ts +2 -2
- package/src/cli/commands/telemetry.ts +2 -2
- package/src/cli/commands/tts.help.ts +3 -3
- package/src/cli/commands/webhooks.help.ts +9 -9
- package/src/cli/commands/webhooks.ts +1 -1
- package/src/cli/lib/__tests__/inspect-plugin.test.ts +8 -8
- package/src/cli/lib/__tests__/{install-from-platform.test.ts → install-from-cloud.test.ts} +54 -54
- package/src/cli/lib/__tests__/plugin-catalog-cache.test.ts +18 -18
- package/src/cli/lib/__tests__/{plugin-catalog-platform.test.ts → plugin-catalog-cloud.test.ts} +2 -2
- package/src/cli/lib/__tests__/plugin-catalog-local.test.ts +1 -1
- package/src/cli/lib/__tests__/plugin-catalog-resolve.test.ts +9 -9
- package/src/cli/lib/__tests__/plugin-details.test.ts +10 -10
- package/src/cli/lib/__tests__/plugins-install-offline.test.ts +24 -24
- package/src/cli/lib/bundled-marketplace.json +1 -1
- package/src/cli/lib/inspect-plugin.ts +2 -2
- package/src/cli/lib/{install-from-platform.ts → install-from-cloud.ts} +29 -29
- package/src/cli/lib/install-from-github.ts +4 -4
- package/src/cli/lib/plugin-catalog-cache.ts +7 -7
- package/src/cli/lib/{plugin-catalog-platform.ts → plugin-catalog-cloud.ts} +6 -6
- package/src/cli/lib/plugin-catalog-local.ts +2 -2
- package/src/cli/lib/publish-plugin.ts +9 -10
- package/src/cli/lib/search-plugins.ts +2 -2
- package/src/{platform → cloud}/client.test.ts +85 -86
- package/src/{platform → cloud}/client.ts +38 -46
- package/src/{platform/platform-patch-queue.test.ts → cloud/cloud-patch-queue.test.ts} +6 -9
- package/src/{platform/platform-patch-queue.ts → cloud/cloud-patch-queue.ts} +11 -11
- package/src/{platform/managed-speech.test.ts → cloud/cloud-speech.test.ts} +19 -19
- package/src/{platform/managed-speech.ts → cloud/cloud-speech.ts} +41 -41
- package/src/{platform → cloud}/consent-cache.test.ts +5 -5
- package/src/{platform → cloud}/consent-cache.ts +8 -8
- package/src/cloud/feature-gate.ts +8 -0
- package/src/{platform → cloud}/sync-identity.test.ts +4 -4
- package/src/{platform → cloud}/sync-identity.ts +6 -6
- package/src/config/__tests__/{platform-identity.test.ts → cloud-identity.test.ts} +54 -56
- package/src/config/__tests__/{platform-rehydration.test.ts → cloud-rehydration.test.ts} +47 -80
- package/src/config/__tests__/default-profile-catalog.test.ts +12 -12
- package/src/config/__tests__/default-provider.test.ts +4 -4
- package/src/config/__tests__/deployment-context-defaults.test.ts +23 -23
- package/src/config/__tests__/{jev-managed-profile.test.ts → jev-cloud-profile.test.ts} +3 -5
- package/src/config/__tests__/loader-callsite-strip-fallback.test.ts +2 -2
- package/src/config/__tests__/loader-last-known-good.test.ts +6 -6
- package/src/config/__tests__/loader-sparse-array-cleanup.test.ts +2 -2
- package/src/config/__tests__/profile-materialization.test.ts +7 -7
- package/src/config/__tests__/seed-default-provider.test.ts +17 -17
- package/src/config/__tests__/sync-gated-profiles.test.ts +20 -20
- package/src/config/__tests__/webhook-routing.test.ts +51 -51
- package/src/config/bundled-skills/computer-use/TOOLS.json +12 -12
- package/src/config/bundled-skills/messaging/SKILL.md +8 -8
- package/src/config/bundled-skills/messaging/TOOLS.json +2 -2
- package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +1 -1
- package/src/config/bundled-skills/messaging/tools/shared.ts +1 -1
- package/src/config/bundled-skills/phone-calls/references/TROUBLESHOOTING.md +2 -2
- package/src/config/bundled-skills/settings/TOOLS.json +3 -3
- package/src/config/bundled-skills/settings/tools/shared.ts +1 -1
- package/src/config/bundled-skills/settings/tools/voice-config-update.ts +12 -12
- package/src/config/bundled-skills/skill-management/SKILL.md +3 -3
- package/src/config/bundled-skills/skill-management/TOOLS.json +8 -8
- package/src/config/bundled-skills/skill-management/tools/{delete-managed.ts → delete-cloud.ts} +2 -2
- package/src/config/bundled-skills/skill-management/tools/{scaffold-managed.ts → scaffold-cloud.ts} +2 -2
- package/src/config/call-site-defaults.ts +6 -6
- package/src/config/{platform-identity.ts → cloud-identity.ts} +39 -42
- package/src/config/cloud-rehydration.ts +35 -0
- package/src/config/{managed-speech-defaults.ts → cloud-speech-defaults.ts} +13 -13
- package/src/config/default-profile-catalog.ts +36 -38
- package/src/config/default-profile-names.ts +11 -11
- package/src/config/default-provider-resolution.ts +2 -2
- package/src/config/default-provider.ts +1 -1
- package/src/config/env-registry.ts +23 -21
- package/src/config/env.ts +33 -46
- package/src/config/feature-flag-registry.json +5 -5
- package/src/config/inference-profile-validation.ts +1 -1
- package/src/config/llm-resolver.ts +9 -10
- package/src/config/loader.ts +33 -17
- package/src/config/profile-materialization.ts +8 -8
- package/src/config/profile-text-generation.test.ts +1 -1
- package/src/config/sanitize-for-transfer.ts +1 -1
- package/src/config/schema.ts +6 -6
- package/src/config/schemas/__tests__/stt.test.ts +2 -2
- package/src/config/schemas/call-site-catalog.ts +1 -1
- package/src/config/schemas/channels.ts +8 -0
- package/src/config/schemas/{platform.ts → cloud.ts} +7 -6
- package/src/config/schemas/host-browser.ts +1 -0
- package/src/config/schemas/ingress.ts +1 -12
- package/src/config/schemas/llm.ts +45 -36
- package/src/config/schemas/memory-lifecycle.ts +11 -1
- package/src/config/schemas/services.ts +4 -4
- package/src/config/schemas/stt.ts +3 -3
- package/src/config/schemas/tts.ts +10 -5
- package/src/config/schemas/voice.ts +1 -1
- package/src/config/seed-inference-profiles.ts +19 -19
- package/src/config/skill-state.ts +2 -2
- package/src/config/skills.ts +4 -4
- package/src/config/sync-gated-profiles.ts +8 -8
- package/src/config/webhook-routing.ts +19 -19
- package/src/contacts/contacts-write.ts +1 -1
- package/src/credential-execution/ces-runtime.ts +6 -6
- package/src/credential-execution/{managed-catalog.ts → cloud-catalog.ts} +24 -24
- package/src/credential-execution/prompted-credential.ts +6 -18
- package/src/credential-health/credential-health-service.ts +61 -76
- package/src/daemon/__tests__/can-spawn-subagents.test.ts +1 -1
- package/src/daemon/__tests__/conversation-tool-setup-exclude.test.ts +4 -4
- package/src/daemon/config-watcher.ts +2 -2
- package/src/daemon/conversation-agent-loop.ts +9 -9
- package/src/daemon/conversation-error.ts +36 -36
- package/src/daemon/conversation-skill-tools.ts +7 -7
- package/src/daemon/conversation-surfaces.ts +1 -1
- package/src/daemon/conversation-tool-setup.ts +2 -2
- package/src/daemon/conversation-turn-finalize.ts +1 -1
- package/src/daemon/conversation-workspace.ts +1 -1
- package/src/daemon/conversation.ts +1 -1
- package/src/daemon/credential-transcript-scrub.ts +21 -35
- package/src/daemon/daemon-readiness.ts +1 -1
- package/src/daemon/event-loop-watchdog.ts +2 -2
- package/src/daemon/handlers/config-ingress.ts +9 -9
- package/src/daemon/handlers/config-telegram.ts +6 -6
- package/src/daemon/handlers/skills.ts +20 -20
- package/src/daemon/host-cu-proxy.ts +1 -1
- package/src/daemon/lifecycle.ts +19 -19
- package/src/daemon/parse-actual-tokens-from-error.ts +3 -3
- package/src/daemon/providers-setup.ts +6 -6
- package/src/daemon/resource-pressure-guard-lifecycle.ts +1 -1
- package/src/daemon/resource-pressure-guard.ts +6 -6
- package/src/daemon/shutdown-handlers.ts +1 -1
- package/src/daemon/sqlite-corruption-watchdog.ts +3 -3
- package/src/daemon/trust-context.ts +1 -1
- package/src/desktop/desktop-automation-lease.ts +1 -1
- package/src/desktop/desktop-browser-endpoint.ts +2 -4
- package/src/desktop/desktop-computer-use-routing.test.ts +6 -6
- package/src/desktop/desktop-stream-bridge.test.ts +4 -4
- package/src/desktop/desktop-stream-bridge.ts +1 -1
- package/src/desktop/{virtual-desktop-platform.test.ts → virtual-desktop-cloud.test.ts} +6 -6
- package/src/desktop/virtual-desktop-feature.ts +7 -7
- package/src/email/byo-email-credential.ts +1 -1
- package/src/email/registered-inbox.test.ts +16 -16
- package/src/email/registered-inbox.ts +20 -20
- package/src/heartbeat/heartbeat-service.ts +1 -1
- package/src/hooks/hook-loader.ts +2 -2
- package/src/inbound/__tests__/oauth-callback-url.test.ts +2 -2
- package/src/inbound/__tests__/tunnel-probe.test.ts +8 -8
- package/src/inbound/{platform-callback-registration.ts → cloud-callback-registration.ts} +49 -60
- package/src/inbound/oauth-callback-url.ts +6 -6
- package/src/inbound/pod-webhook-claim.ts +2 -2
- package/src/inbound/public-ingress-urls.ts +3 -3
- package/src/inbound/tunnel-probe.ts +21 -15
- package/src/inbound/tunnel-webhooks-gate.ts +3 -3
- package/src/ipc/__tests__/db-readiness-ipc-gate.test.ts +1 -1
- package/src/ipc/__tests__/email-ipc.test.ts +8 -8
- package/src/ipc/gateway-client.test.ts +55 -59
- package/src/ipc/gateway-flag-listener.ts +3 -3
- package/src/ipc/routes/db-proxy.ts +1 -1
- package/src/live-voice/__tests__/live-activity-reporter.test.ts +2 -2
- package/src/live-voice/__tests__/{live-voice-managed-speech-fallback.test.ts → live-voice-cloud-speech-fallback.test.ts} +15 -15
- package/src/live-voice/__tests__/live-voice-credential-preflight.test.ts +7 -7
- package/src/live-voice/__tests__/live-voice-stt.test.ts +1 -1
- package/src/live-voice/live-activity-reporter.ts +7 -7
- package/src/live-voice/live-voice-credential-preflight.ts +6 -6
- package/src/live-voice/live-voice-session.ts +3 -3
- package/src/live-voice/live-voice-tts.ts +1 -1
- package/src/mcp/__tests__/mcp-oauth-client-registration.test.ts +4 -4
- package/src/mcp/__tests__/mcp-oauth-provider.test.ts +1 -1
- package/src/mcp/mcp-oauth-provider.ts +2 -2
- package/src/media/gemini-image-service.ts +11 -13
- package/src/media/image-credentials.ts +9 -9
- package/src/media/openai-image-service.ts +1 -1
- package/src/media/types.ts +3 -3
- package/src/messaging/providers/channel-transport.ts +1 -1
- package/src/messaging/providers/discord/transport.ts +1 -1
- package/src/messaging/providers/gmail/adapter.ts +1 -1
- package/src/messaging/providers/gmail/client.ts +4 -4
- package/src/messaging/providers/outlook/adapter.ts +1 -1
- package/src/messaging/providers/slack/adapter.ts +1 -1
- package/src/messaging/providers/slack/transport.ts +1 -1
- package/src/messaging/providers/telegram-bot/transport.ts +1 -1
- package/src/monitoring/db-integrity-check.ts +1 -1
- package/src/monitoring/db-integrity-sample.ts +2 -2
- package/src/monitoring/mount-watch.ts +1 -1
- package/src/monitoring/oom-kill-reporter.ts +1 -1
- package/src/monitoring/worker.ts +5 -5
- package/src/notifications/README.md +2 -2
- package/src/notifications/__tests__/broadcaster.test.ts +9 -9
- package/src/notifications/__tests__/completion-policy.test.ts +1 -1
- package/src/notifications/__tests__/emit-signal-pipeline-failure.test.ts +4 -4
- package/src/notifications/activity-failed-dedupe.ts +1 -1
- package/src/notifications/adapters/{platform.ts → cloud.ts} +8 -8
- package/src/notifications/broadcaster.ts +10 -10
- package/src/notifications/decision-engine.ts +1 -1
- package/src/notifications/destination-resolver.ts +1 -1
- package/src/notifications/emit-signal.ts +6 -6
- package/src/notifications/types.ts +2 -2
- package/src/oauth/__tests__/identity-verifier.test.ts +1 -1
- package/src/oauth/__tests__/{seed-providers-managed.test.ts → seed-providers-cloud.test.ts} +13 -13
- package/src/oauth/byo-connection.test.ts +2 -2
- package/src/oauth/{platform-connection.test.ts → cloud-connection.test.ts} +41 -43
- package/src/oauth/{platform-connection.ts → cloud-connection.ts} +19 -19
- package/src/oauth/connection-resolver.test.ts +59 -61
- package/src/oauth/connection-resolver.ts +22 -22
- package/src/oauth/connection.ts +1 -1
- package/src/oauth/oauth-store.ts +8 -8
- package/src/oauth/provider-serializer.ts +4 -4
- package/src/oauth/revoke.ts +1 -1
- package/src/oauth/seed-providers.ts +32 -32
- package/src/permissions/approval-provenance.ts +1 -1
- package/src/permissions/checker.test.ts +18 -16
- package/src/permissions/checker.ts +3 -3
- package/src/persistence/compaction-log-store-clickhouse.ts +3 -3
- package/src/persistence/embeddings/embedding-backend.test.ts +16 -16
- package/src/persistence/embeddings/embedding-backend.ts +13 -13
- package/src/persistence/embeddings/embedding-gemini.test.ts +9 -12
- package/src/persistence/embeddings/embedding-gemini.ts +11 -11
- package/src/persistence/embeddings/embedding-runtime-manager.ts +2 -2
- package/src/persistence/jobs-store.ts +1 -1
- package/src/persistence/lifecycle-events-store.ts +1 -1
- package/src/persistence/llm-request-log-sink-clickhouse.ts +3 -3
- package/src/persistence/llm-request-log-source-clickhouse.ts +3 -3
- package/src/persistence/migrations/224-oauth-providers-managed-service-is-paid.ts +1 -1
- package/src/persistence/migrations/296-rewrite-balanced-economy-profile-pins.test.ts +1 -1
- package/src/persistence/migrations/296-rewrite-balanced-economy-profile-pins.ts +2 -2
- package/src/persistence/migrations/306-rewrite-frontier-profile-pins.test.ts +1 -1
- package/src/persistence/migrations/306-rewrite-frontier-profile-pins.ts +1 -1
- package/src/persistence/migrations/351-schedule-skill-script-handoff.ts +1 -1
- package/src/persistence/migrations/361-normalize-managed-connection-rows.test.ts +3 -3
- package/src/persistence/migrations/361-normalize-managed-connection-rows.ts +7 -7
- package/src/persistence/migrations/__tests__/319-remove-legacy-managed-connections.test.ts +2 -2
- package/src/persistence/schema/oauth.ts +1 -1
- package/src/plugin-api/index.ts +4 -4
- package/src/plugin-api/model-profiles.test.ts +1 -1
- package/src/plugin-api/model-profiles.ts +1 -1
- package/src/plugin-api/transcription-session.ts +1 -1
- package/src/plugin-api/vision-support.test.ts +1 -1
- package/src/plugin-api/webhook-url.ts +12 -12
- package/src/plugins/__tests__/source-fingerprint.test.ts +1 -1
- package/src/plugins/defaults/{platform-hosted → cloud-hosted}/__tests__/reengage.test.ts +5 -6
- package/src/plugins/defaults/cloud-hosted/package.json +14 -0
- package/src/plugins/defaults/{platform-hosted → cloud-hosted}/routes/reengage.ts +3 -3
- package/src/plugins/defaults/index.ts +6 -6
- package/src/plugins/defaults/main.ts +5 -5
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-job.test.ts +5 -5
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-prompt.test.ts +1 -1
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-provider-path.test.ts +1 -1
- package/src/plugins/defaults/memory/config.ts +4 -4
- package/src/plugins/defaults/memory/memory-retrospective-constants.ts +2 -2
- package/src/plugins/defaults/memory/memory-retrospective-job.ts +7 -7
- package/src/plugins/defaults/memory/memory-retrospective-prompt.ts +5 -5
- package/src/plugins/defaults/memory/memory-retrospective-skill-card.ts +2 -2
- package/src/plugins/defaults/memory/src/__tests__/memory-v2-routes.test.ts +1 -1
- package/src/plugins/defaults/memory/src/__tests__/memory-worker-routes.test.ts +1 -1
- package/src/plugins/defaults/memory/substrate/__tests__/boot-maintenance.test.ts +20 -20
- package/src/plugins/defaults/memory/substrate/__tests__/cli-command-store.test.ts +1 -1
- package/src/plugins/defaults/memory/substrate/__tests__/skill-store.test.ts +3 -3
- package/src/plugins/defaults/memory/substrate/boot-maintenance.ts +17 -17
- package/src/plugins/defaults/memory/substrate/cli-command-store.ts +2 -2
- package/src/plugins/defaults/memory/substrate/prompts/consolidation.ts +1 -1
- package/src/plugins/defaults/memory/substrate/skill-store.ts +4 -4
- package/src/plugins/defaults/memory/v3/__tests__/maintain-job.test.ts +3 -3
- package/src/plugins/defaults/memory/v3/__tests__/pool-select.test.ts +2 -2
- package/src/plugins/defaults/memory/v3/maintain-job.ts +10 -10
- package/src/plugins/defaults/memory/v3/orchestrate.ts +3 -3
- package/src/plugins/defaults/memory/worker.ts +5 -5
- package/src/plugins/defaults/workspace/injectors.ts +2 -2
- package/src/plugins/mtime-cache.ts +1 -1
- package/src/plugins/source-versions.ts +1 -1
- package/src/plugins/types.ts +1 -1
- package/src/prompts/__tests__/system-prompt.test.ts +1 -1
- package/src/prompts/normalize-onboarding.ts +1 -1
- package/src/prompts/persona-resolver.ts +1 -1
- package/src/prompts/templates/system-sections.ts +3 -3
- package/src/providers/__tests__/cadet-connection-routing.test.ts +7 -7
- package/src/providers/__tests__/cadet-mismatch-routing.test.ts +12 -12
- package/src/providers/__tests__/connection-model-compat.test.ts +2 -2
- package/src/providers/__tests__/dispatch-connection-routing.test.ts +10 -10
- package/src/providers/__tests__/inference.test.ts +2 -2
- package/src/providers/__tests__/preflight-resolved-config.test.ts +16 -16
- package/src/providers/__tests__/retry-callsite.test.ts +1 -1
- package/src/providers/__tests__/satellite-connection-routing.test.ts +4 -4
- package/src/providers/__tests__/search-provider-catalog.test.ts +2 -2
- package/src/providers/__tests__/voice-error-copy.test.ts +3 -3
- package/src/providers/anthropic/client.ts +1 -1
- package/src/providers/cadet/client.ts +1 -1
- package/src/providers/cadet-model-routing.test.ts +19 -19
- package/src/providers/cadet-model-routing.ts +23 -23
- package/src/providers/call-site-routing.ts +10 -10
- package/src/providers/{platform-proxy → cloud-proxy}/constants.ts +11 -11
- package/src/providers/{platform-proxy → cloud-proxy}/context.ts +26 -26
- package/src/providers/connection-resolution.ts +43 -43
- package/src/providers/fallback-breaker.ts +2 -2
- package/src/providers/fetch-provider-catalog.ts +3 -3
- package/src/providers/gemini/client.ts +5 -5
- package/src/providers/inference/__tests__/adapter-factory-openai-compatible.test.ts +3 -3
- package/src/providers/inference/__tests__/base-url-route-validation.test.ts +8 -8
- package/src/providers/inference/__tests__/base-url-security.test.ts +4 -4
- package/src/providers/inference/adapter-factory.ts +35 -35
- package/src/providers/inference/auth.ts +10 -10
- package/src/providers/inference/backfill.ts +11 -11
- package/src/providers/inference/connection-availability.ts +24 -24
- package/src/providers/inference/connections.ts +18 -20
- package/src/providers/inference/profile-probe.ts +4 -4
- package/src/providers/inference/resolve-auth.ts +8 -8
- package/src/providers/jev/ask.test.ts +1 -1
- package/src/providers/jev/ask.ts +2 -2
- package/src/providers/model-catalog.ts +8 -9
- package/src/providers/openai/__tests__/api-error-normalization.test.ts +3 -3
- package/src/providers/openai/api-error-normalization.ts +2 -2
- package/src/providers/provider-availability.ts +4 -4
- package/src/providers/provider-env-vars.ts +1 -1
- package/src/providers/provider-secret-catalog.ts +1 -1
- package/src/providers/registry.ts +20 -20
- package/src/providers/retry.ts +26 -26
- package/src/providers/routing-identity.ts +10 -10
- package/src/providers/search-provider-catalog.ts +2 -2
- package/src/providers/speech-to-text/__tests__/{cadet-managed-realtime.test.ts → cadet-cloud-realtime.test.ts} +3 -3
- package/src/providers/speech-to-text/__tests__/{cadet-managed.test.ts → cadet-cloud.test.ts} +35 -35
- package/src/providers/speech-to-text/__tests__/deepgram-flux-realtime.test.ts +1 -1
- package/src/providers/speech-to-text/__tests__/resolve.test.ts +27 -27
- package/src/providers/speech-to-text/{cadet-managed-flux-realtime.ts → cadet-cloud-flux-realtime.ts} +6 -8
- package/src/providers/speech-to-text/{cadet-managed-realtime.ts → cadet-cloud-realtime.ts} +3 -3
- package/src/providers/speech-to-text/{cadet-managed.ts → cadet-cloud.ts} +18 -20
- package/src/providers/speech-to-text/cadet-speech-relay-connection.ts +7 -7
- package/src/providers/speech-to-text/deepgram-flux-frames.ts +3 -3
- package/src/providers/speech-to-text/deepgram-flux-realtime.ts +4 -4
- package/src/providers/speech-to-text/provider-catalog.ts +3 -3
- package/src/providers/speech-to-text/resolve.ts +26 -28
- package/src/providers/together/client.ts +1 -1
- package/src/providers/types.ts +4 -4
- package/src/providers/voice-error-copy.ts +1 -1
- package/src/runtime/__tests__/desktop-stream-upgrade.test.ts +10 -10
- package/src/runtime/agent-wake.ts +1 -1
- package/src/runtime/auth/__tests__/middleware.test.ts +1 -1
- package/src/runtime/auth/middleware.ts +1 -1
- package/src/runtime/auth/scopes.ts +1 -1
- package/src/runtime/capabilities.ts +1 -1
- package/src/runtime/channel-invite-transports/discord.ts +1 -1
- package/src/runtime/channel-invite-transports/email.ts +2 -2
- package/src/runtime/channel-readiness-service.ts +15 -13
- package/src/runtime/channel-reply-session.test.ts +1 -1
- package/src/runtime/channel-reply-session.ts +1 -1
- package/src/runtime/http-server.ts +4 -4
- package/src/runtime/introduction-policy.ts +4 -4
- package/src/runtime/migrations/__tests__/origin-mode.test.ts +14 -14
- package/src/runtime/migrations/__tests__/v1-test-helpers.ts +1 -1
- package/src/runtime/migrations/__tests__/vbundle-import-version-compat.test.ts +2 -2
- package/src/runtime/migrations/__tests__/vbundle-metadata-merge-integration.test.ts +3 -4
- package/src/runtime/migrations/__tests__/vbundle-metadata-merge.test.ts +6 -7
- package/src/runtime/migrations/__tests__/vbundle-validator-v1-schema.test.ts +1 -1
- package/src/runtime/migrations/migration-transport.ts +3 -3
- package/src/runtime/migrations/origin-mode.ts +6 -9
- package/src/runtime/migrations/vbundle-import-policy.ts +2 -2
- package/src/runtime/migrations/vbundle-importer.ts +4 -4
- package/src/runtime/migrations/vbundle-streaming-importer.ts +6 -6
- package/src/runtime/migrations/vbundle-validator.ts +1 -1
- package/src/runtime/routes/__tests__/{platform-credits-routes.test.ts → cloud-credits-routes.test.ts} +9 -9
- package/src/runtime/routes/__tests__/{platform-invoice-routes.test.ts → cloud-invoice-routes.test.ts} +13 -13
- package/src/runtime/routes/__tests__/connection-routes-vs-cli-parity.test.ts +1 -1
- package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +26 -25
- package/src/runtime/routes/__tests__/default-plugin-routes.test.ts +5 -5
- package/src/runtime/routes/__tests__/default-provider-routes.test.ts +10 -10
- package/src/runtime/routes/__tests__/inference-profiles-routes.test.ts +18 -18
- package/src/runtime/routes/__tests__/inference-provider-connection-routes.test.ts +18 -16
- package/src/runtime/routes/__tests__/inference-send-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/ingress-status-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/migration-cadet-metadata-reconcile.test.ts +5 -20
- package/src/runtime/routes/__tests__/migration-import-credential-filter.test.ts +19 -22
- package/src/runtime/routes/__tests__/oauth-proxy-routes.test.ts +27 -27
- package/src/runtime/routes/__tests__/plugins-routes.test.ts +5 -5
- package/src/runtime/routes/__tests__/ps-routes.test.ts +5 -3
- package/src/runtime/routes/__tests__/roadmap-routes.test.ts +15 -15
- package/src/runtime/routes/__tests__/webhook-routes.test.ts +31 -31
- package/src/runtime/routes/app-management-routes.ts +1 -1
- package/src/runtime/routes/attachment-routes.ts +1 -1
- package/src/runtime/routes/auth-routes.ts +14 -14
- package/src/runtime/routes/avatar-routes.ts +0 -14
- package/src/runtime/routes/background-wake-routes.ts +4 -4
- package/src/runtime/routes/channel-availability-routes.ts +4 -4
- package/src/runtime/routes/client-routes.ts +5 -5
- package/src/runtime/routes/cloud-credentials.ts +45 -0
- package/src/runtime/routes/{platform-routes.ts → cloud-routes.ts} +83 -116
- package/src/runtime/routes/conversation-compaction-routes.ts +1 -1
- package/src/runtime/routes/conversation-query-routes.ts +82 -282
- package/src/runtime/routes/credential-routes.ts +28 -30
- package/src/runtime/routes/default-provider-routes.ts +1 -1
- package/src/runtime/routes/desktop-setup-routes.test.ts +5 -5
- package/src/runtime/routes/desktop-setup-routes.ts +1 -1
- package/src/runtime/routes/domain-routes.ts +15 -21
- package/src/runtime/routes/email-routes.ts +13 -13
- package/src/runtime/routes/errors.ts +1 -1
- package/src/runtime/routes/gateway-status-routes.ts +1 -1
- package/src/runtime/routes/identity-routes.ts +3 -3
- package/src/runtime/routes/inbound-message-handler.ts +1 -1
- package/src/runtime/routes/inbound-stages/acl-enforcement.ts +1 -1
- package/src/runtime/routes/inbound-stages/transcribe-audio.test.ts +1 -1
- package/src/runtime/routes/index.ts +1 -1
- package/src/runtime/routes/inference-profile-availability-guard.ts +5 -5
- package/src/runtime/routes/inference-profiles-routes.ts +11 -11
- package/src/runtime/routes/inference-provider-connection-routes.ts +24 -24
- package/src/runtime/routes/ingress-status-routes.ts +1 -1
- package/src/runtime/routes/integrations/a2a.ts +2 -2
- package/src/runtime/routes/integrations/twilio.ts +21 -35
- package/src/runtime/routes/internal-telemetry-routes.ts +2 -2
- package/src/runtime/routes/live-voice-routes.test.ts +4 -4
- package/src/runtime/routes/live-voice-routes.ts +6 -6
- package/src/runtime/routes/migration-routes.ts +34 -40
- package/src/runtime/routes/oauth-commands-routes.ts +31 -31
- package/src/runtime/routes/oauth-providers.ts +5 -5
- package/src/runtime/routes/oauth-proxy-passthrough.test.ts +1 -1
- package/src/runtime/routes/oauth-proxy-passthrough.ts +8 -8
- package/src/runtime/routes/oauth-proxy-routes.ts +15 -17
- package/src/runtime/routes/oauth-request-hints.test.ts +1 -1
- package/src/runtime/routes/oauth-request-hints.ts +1 -1
- package/src/runtime/routes/plugins-routes.ts +9 -9
- package/src/runtime/routes/profiler-routes.ts +1 -1
- package/src/runtime/routes/ps-routes.ts +4 -0
- package/src/runtime/routes/roadmap-routes.ts +18 -20
- package/src/runtime/routes/secret-routes.ts +29 -55
- package/src/runtime/routes/settings-routes.ts +18 -23
- package/src/runtime/routes/telemetry-routes.ts +4 -4
- package/src/runtime/routes/tts-routes.ts +4 -4
- package/src/runtime/routes/user-route-resolution.ts +1 -1
- package/src/runtime/routes/webhook-routes.ts +18 -18
- package/src/runtime/routes/workflow-routes.ts +5 -5
- package/src/runtime/sync/resource-sync-events.ts +2 -2
- package/src/runtime/verification-outbound-actions.ts +4 -4
- package/src/schedule/integration-status.ts +6 -6
- package/src/schedule/run-script.ts +1 -1
- package/src/schedule/schedule-timezone.ts +1 -1
- package/src/schedule/worker.ts +5 -5
- package/src/security/auth-fallback-events-store.ts +1 -1
- package/src/security/oauth2.ts +4 -4
- package/src/skills/available-skills.ts +4 -4
- package/src/skills/catalog-files.ts +8 -8
- package/src/skills/catalog-install.ts +12 -12
- package/src/skills/categories-cache.ts +3 -3
- package/src/skills/clawhub.ts +1 -1
- package/src/skills/{platform-compatibility.test.ts → cloud-compatibility.test.ts} +7 -7
- package/src/skills/{platform-compatibility.ts → cloud-compatibility.ts} +2 -4
- package/src/skills/{managed-store.ts → cloud-store.ts} +21 -23
- package/src/skills/inline-command-runner.ts +1 -1
- package/src/skills/install-meta.ts +1 -1
- package/src/skills/path-classifier.ts +4 -4
- package/src/skills/skill-history.ts +4 -4
- package/src/skills/skillssh-registry.ts +1 -1
- package/src/stt/__tests__/daemon-batch-transcriber.test.ts +1 -1
- package/src/stt/daemon-batch-transcriber.ts +7 -7
- package/src/stt/types.ts +3 -3
- package/src/subagent/manager.ts +15 -15
- package/src/subagent/types.ts +1 -1
- package/src/telegram/__tests__/webhook-health.test.ts +16 -16
- package/src/telegram/webhook-health.ts +10 -10
- package/src/telemetry/__tests__/config-setting-events-store.test.ts +1 -1
- package/src/telemetry/__tests__/outbox-test-harness.ts +2 -2
- package/src/telemetry/config-setting-events-store.ts +1 -1
- package/src/telemetry/config-setting-snapshot.ts +1 -1
- package/src/telemetry/memory-corpus-size.ts +1 -1
- package/src/telemetry/memory-tier-reporter.test.ts +2 -2
- package/src/telemetry/memory-tier-reporter.ts +3 -3
- package/src/telemetry/telemetry-event-sources.test.ts +2 -2
- package/src/telemetry/telemetry-event-sources.ts +9 -9
- package/src/telemetry/telemetry-events-outbox.ts +2 -2
- package/src/telemetry/telemetry-wire-validation.test.ts +1 -1
- package/src/telemetry/telemetry-wire-validation.ts +3 -3
- package/src/telemetry/telemetry-wire.generated.ts +1 -1
- package/src/telemetry/tool-audit.ts +1 -1
- package/src/telemetry/tool-executed-events-store.test.ts +1 -1
- package/src/telemetry/trace-collection-policy.ts +4 -4
- package/src/telemetry/turn-events-store.ts +1 -1
- package/src/telemetry/turn-outcome.ts +1 -1
- package/src/telemetry/turn-trace-store.ts +2 -2
- package/src/telemetry/types.test.ts +1 -1
- package/src/telemetry/types.ts +19 -19
- package/src/telemetry/usage-telemetry-reporter.test.ts +42 -42
- package/src/telemetry/usage-telemetry-reporter.ts +17 -17
- package/src/telemetry/watchdog-direct-emit.test.ts +9 -9
- package/src/telemetry/watchdog-direct-emit.ts +10 -10
- package/src/tools/__tests__/side-effect-abort-guard.test.ts +2 -2
- package/src/tools/browser/cdp-client/factory.ts +1 -1
- package/src/tools/computer-use/target.ts +2 -2
- package/src/tools/credentials/store.ts +6 -15
- package/src/tools/network/__tests__/{managed-search-proxy.test.ts → cloud-search-proxy.test.ts} +20 -20
- package/src/tools/network/__tests__/web-search.test.ts +14 -14
- package/src/tools/network/{managed-search-proxy.ts → cloud-search-proxy.ts} +13 -13
- package/src/tools/network/web-search.ts +9 -9
- package/src/tools/permission-checker.ts +2 -2
- package/src/tools/shared/input-misuse.ts +1 -1
- package/src/tools/shared/input-repairs.ts +4 -4
- package/src/tools/skills/{delete-managed.ts → delete-cloud.ts} +4 -4
- package/src/tools/skills/find-similar-skills.test.ts +7 -7
- package/src/tools/skills/find-similar-skills.ts +15 -15
- package/src/tools/skills/load.ts +6 -6
- package/src/tools/skills/{scaffold-managed.ts → scaffold-cloud.ts} +16 -16
- package/src/tools/skills/skill-script-runner.ts +2 -2
- package/src/tools/terminal/safe-env.ts +3 -3
- package/src/tools/tool-types.ts +2 -2
- package/src/tools/types.ts +2 -2
- package/src/tools/ui-surface/surface-shape-docs.ts +2 -2
- package/src/tools/workflows/manage-workflows.ts +1 -1
- package/src/tools/workspace-tools/loader.ts +1 -1
- package/src/tts/__tests__/cadet-provider.test.ts +5 -5
- package/src/tts/provider-catalog.ts +1 -1
- package/src/tts/providers/cadet-provider.ts +23 -23
- package/src/tts/providers/cadet-tts-socket.ts +2 -2
- package/src/tts/tts-config-resolver.ts +1 -1
- package/src/tts/tts-voice-field.ts +3 -3
- package/src/usage/subagent-attribution.ts +1 -1
- package/src/util/__tests__/process-table.test.ts +47 -0
- package/src/util/canonicalize-identity.ts +1 -1
- package/src/util/cgroup-cpu.ts +5 -5
- package/src/util/cgroup-memory.ts +2 -2
- package/src/util/container-cpu-sampler.ts +4 -4
- package/src/util/disk-usage.ts +4 -4
- package/src/util/errors.ts +3 -3
- package/src/util/oom-priority.ts +1 -1
- package/src/util/platform.ts +5 -5
- package/src/util/process-table.ts +39 -5
- package/src/util/provider-error-patterns.ts +2 -2
- package/src/watch/__tests__/watch-retro.test.ts +2 -2
- package/src/watch/watch-retro.ts +1 -1
- package/src/watcher/__tests__/telemetry.test.ts +2 -2
- package/src/watcher/telemetry.ts +1 -1
- package/src/windows-compiled-cli.ts +1 -1
- package/src/workspace/adaptive-thinking-repair.ts +4 -4
- package/src/workspace/byok-default-profile-ensure.ts +7 -7
- package/src/workspace/git-service.ts +2 -2
- package/src/workspace/migrations/006-services-config.ts +1 -1
- package/src/workspace/migrations/040-seed-latency-callsite-defaults.ts +1 -1
- package/src/workspace/migrations/052-seed-default-inference-profiles.ts +1 -1
- package/src/workspace/migrations/063-release-notes-dynamic-model-context.ts +1 -1
- package/src/workspace/migrations/066-seed-heartbeat-callsite-cost-default.ts +1 -1
- package/src/workspace/migrations/082-backfill-managed-profile-labels.ts +4 -4
- package/src/workspace/migrations/087-memory-router-balanced-profile.ts +3 -3
- package/src/workspace/migrations/090-memory-router-cost-optimized-profile.ts +4 -4
- package/src/workspace/migrations/097-enable-adaptive-thinking-managed-profiles.ts +5 -5
- package/src/workspace/migrations/100-upgrade-quality-profile-to-fable-5.ts +4 -4
- package/src/workspace/migrations/101-upgrade-balanced-economy-to-minimax-m3.ts +4 -4
- package/src/workspace/migrations/103-upgrade-quality-profile-to-opus-4-8.ts +5 -5
- package/src/workspace/migrations/104-recheck-adaptive-thinking-model-implied-anthropic.ts +1 -1
- package/src/workspace/migrations/106-drop-collect-usage-data.ts +1 -1
- package/src/workspace/migrations/108-drop-balanced-economy-profile.ts +4 -4
- package/src/workspace/migrations/109-swap-quality-profile-to-glm-5p2.ts +11 -11
- package/src/workspace/migrations/110-flip-balanced-profile-to-together.ts +6 -6
- package/src/workspace/migrations/113-swap-balanced-profile-to-glm-5p2.ts +5 -5
- package/src/workspace/migrations/114-swap-quality-profile-to-opus.ts +4 -4
- package/src/workspace/migrations/115-drop-frontier-profile.ts +5 -5
- package/src/workspace/migrations/123-swap-quality-profile-to-fable.ts +5 -5
- package/src/workspace/migrations/125-repoint-managed-connections-to-cadet.ts +3 -3
- package/src/workspace/migrations/126-strip-managed-profile-bodies.ts +2 -2
- package/src/workspace/migrations/127-backfill-default-provider.ts +4 -4
- package/src/workspace/migrations/130-speech-mode-to-provider.ts +4 -4
- package/src/workspace/migrations/131-drop-web-fetch-mode.ts +1 -1
- package/src/workspace/migrations/132-web-search-mode-to-provider.ts +6 -6
- package/src/workspace/migrations/133-collapse-provider-connections.ts +3 -3
- package/src/workspace/migrations/134-image-generation-mode-to-provider.ts +4 -4
- package/src/workspace/migrations/136-repair-stale-fireworks-kimi-model-id.ts +2 -2
- package/src/workspace/migrations/137-repair-retired-fireworks-minimax-model-id.ts +2 -2
- package/src/workspace/migrations/139-clear-renamed-cost-profile-label.ts +2 -2
- package/src/workspace/migrations/141-stt-english-default-to-multilingual.ts +4 -4
- package/src/workspace/migrations/144-convert-stranded-subscription-openai-profiles.ts +1 -1
- package/src/workspace/migrations/145-collapse-profile-bindings-to-entries.ts +2 -2
- package/src/workspace/migrations/146-repair-retired-fireworks-deepseek-flash-model-id.ts +2 -2
- package/src/workspace/migrations/148-strip-unsupported-fallback-profiles.ts +2 -2
- package/src/workspace/migrations/150-stt-flux-provider-to-model-family.ts +1 -1
- package/src/workspace/migrations/151-repair-renamed-fireworks-deepseek-pro-model-id.ts +2 -2
- package/src/workspace/migrations/152-repair-retired-fireworks-minimax-m2p7-model-id.ts +2 -2
- package/src/workspace/migrations/159-rename-colliding-jev-profile-name.ts +2 -2
- package/src/workspace/migrations/160-repair-retired-fireworks-model-ids.ts +2 -2
- package/src/workspace/migrations/161-repair-retired-fireworks-glm-5p2-model-id.ts +2 -2
- package/src/workspace/migrations/__tests__/141-stt-english-default-to-multilingual.test.ts +1 -1
- package/src/workspace/migrations/__tests__/150-stt-flux-provider-to-model-family.test.ts +1 -1
- package/src/workspace/migrations/registry.ts +6 -6
- package/src/workspace/top-level-renderer.ts +1 -1
- package/src/workspace/turn-commit.ts +2 -2
- package/src/__tests__/config-loader-platform-defaults.test.ts +0 -606
- package/src/__tests__/mock-gateway-ipc.ts +0 -260
- package/src/api/events/platform-disconnected.ts +0 -21
- package/src/config/platform-rehydration.ts +0 -60
- package/src/platform/feature-gate.ts +0 -8
- package/src/plugins/defaults/platform-hosted/package.json +0 -14
- package/src/runtime/routes/platform-managed-credentials.ts +0 -50
- /package/src/__tests__/{gateway-client-managed-outbound.test.ts → gateway-client-cloud-outbound.test.ts} +0 -0
- /package/src/__tests__/{secure-keys-managed-failover.test.ts → secure-keys-cloud-failover.test.ts} +0 -0
|
@@ -158,7 +158,7 @@ describe("composeRequestHint", () => {
|
|
|
158
158
|
);
|
|
159
159
|
});
|
|
160
160
|
|
|
161
|
-
test("a rejected
|
|
161
|
+
test("a rejected cloud credential points at connection health", () => {
|
|
162
162
|
expect(composeRequestHint(asPerson({ status: 403, managed: true }))).toBe(
|
|
163
163
|
"Request returned HTTP 403. The OAuth token may be expired or revoked.\n\n" +
|
|
164
164
|
"Run 'assistant oauth status google' to check connection health.\n" +
|
|
@@ -26,7 +26,7 @@ export interface RequestHintFacts {
|
|
|
26
26
|
* request acted as a person through their OAuth integration.
|
|
27
27
|
*/
|
|
28
28
|
botChannel?: string;
|
|
29
|
-
/** The provider runs in
|
|
29
|
+
/** The provider runs in cloud-managed mode. */
|
|
30
30
|
managed: boolean;
|
|
31
31
|
/**
|
|
32
32
|
* The base URL the request resolved against: an absolute URL's own origin,
|
|
@@ -93,7 +93,7 @@ import {
|
|
|
93
93
|
PluginNotUpgradableError,
|
|
94
94
|
upgradePlugin,
|
|
95
95
|
} from "../../cli/lib/upgrade-plugin.js";
|
|
96
|
-
import {
|
|
96
|
+
import { getCloudBaseUrl } from "../../config/env.js";
|
|
97
97
|
import { isPluginDisabled } from "../../plugins/disabled-state.js";
|
|
98
98
|
import { ensurePluginApiShim } from "../../plugins/ensure-plugin-api-shim.js";
|
|
99
99
|
import {
|
|
@@ -250,7 +250,7 @@ const pluginSearchMatchSchema = z.object({
|
|
|
250
250
|
.string()
|
|
251
251
|
.optional()
|
|
252
252
|
.describe(
|
|
253
|
-
"Plugin icon: a curated emoji from the marketplace entry, or an icon URL served by the
|
|
253
|
+
"Plugin icon: a curated emoji from the marketplace entry, or an icon URL served by the cloud catalog when the plugin ships a bundled image.",
|
|
254
254
|
),
|
|
255
255
|
category: z
|
|
256
256
|
.string()
|
|
@@ -774,13 +774,13 @@ const pluginDiffResponseSchema = z.object({
|
|
|
774
774
|
const log = getLogger("plugins-routes");
|
|
775
775
|
|
|
776
776
|
/**
|
|
777
|
-
* Emit a structured log for a
|
|
777
|
+
* Emit a structured log for a cloud plugin-catalog outage before the caller
|
|
778
778
|
* maps it to a client-facing error.
|
|
779
779
|
*
|
|
780
|
-
* The catalog fetcher (`plugin-catalog-
|
|
780
|
+
* The catalog fetcher (`plugin-catalog-cloud.ts`) throws
|
|
781
781
|
* `PluginCatalogUnavailableError` without logging, and the transport adapters
|
|
782
782
|
* return the resulting `RouteError` (a 503) without logging it — so an
|
|
783
|
-
* outage on the
|
|
783
|
+
* outage on the cloud-first paths (`search`, `install`, the remote-only
|
|
784
784
|
* detail view) otherwise leaves no trace beyond the daemon access-log status
|
|
785
785
|
* code, and the real upstream status / URL is lost. Log at `error` so the
|
|
786
786
|
* outage is time-correlatable in the daemon log and lands in error telemetry;
|
|
@@ -796,7 +796,7 @@ function logPluginCatalogUnavailable(
|
|
|
796
796
|
err,
|
|
797
797
|
operation,
|
|
798
798
|
upstreamStatus: err.status,
|
|
799
|
-
|
|
799
|
+
cloudBaseUrl: getCloudBaseUrl(),
|
|
800
800
|
},
|
|
801
801
|
"Platform plugin catalog unavailable",
|
|
802
802
|
);
|
|
@@ -984,7 +984,7 @@ export async function loadCategoryMapBounded(
|
|
|
984
984
|
// categories rather than stalling. Non-fatal, but log it so a slow
|
|
985
985
|
// marketplace is diagnosable and not silently invisible.
|
|
986
986
|
log.warn(
|
|
987
|
-
{ timeoutMs,
|
|
987
|
+
{ timeoutMs, cloudBaseUrl: getCloudBaseUrl() },
|
|
988
988
|
"Plugin catalog lookup timed out; listing without categories",
|
|
989
989
|
);
|
|
990
990
|
return new Map();
|
|
@@ -998,7 +998,7 @@ export async function loadCategoryMapBounded(
|
|
|
998
998
|
log.warn(
|
|
999
999
|
{
|
|
1000
1000
|
err,
|
|
1001
|
-
|
|
1001
|
+
cloudBaseUrl: getCloudBaseUrl(),
|
|
1002
1002
|
...(err instanceof PluginCatalogUnavailableError
|
|
1003
1003
|
? { upstreamStatus: err.status }
|
|
1004
1004
|
: {}),
|
|
@@ -1093,7 +1093,7 @@ async function handleSearchPlugins({
|
|
|
1093
1093
|
// cheap deterministic 400 rather than a wasted catalog fetch.
|
|
1094
1094
|
assertValidSearchPattern(query);
|
|
1095
1095
|
// getPluginCatalog is platform-first (or the bundled manifest when platform
|
|
1096
|
-
// features are disabled) and fails hard on a
|
|
1096
|
+
// features are disabled) and fails hard on a cloud error — never served
|
|
1097
1097
|
// stale. Filtering by the query is in-memory over the resolved catalog.
|
|
1098
1098
|
const catalog = await getPluginCatalog(ref, {
|
|
1099
1099
|
fetch: globalThis.fetch.bind(globalThis),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Route handlers for
|
|
2
|
+
* Route handlers for cloud profiler run management.
|
|
3
3
|
*
|
|
4
4
|
* Control-plane callers (proxied via vembda) can enumerate, inspect, export,
|
|
5
5
|
* and delete completed profiler runs without opening a shell on the assistant
|
|
@@ -82,6 +82,10 @@ async function getProcessStatus() {
|
|
|
82
82
|
try {
|
|
83
83
|
const procs = await listProcesses();
|
|
84
84
|
entry = toEntry(buildProcessTree(procs, process.pid));
|
|
85
|
+
// The daemon's own node derives its name from the entry script
|
|
86
|
+
// (`daemon-main`); callers know this process as the assistant itself —
|
|
87
|
+
// the fallback branch below already reports that name.
|
|
88
|
+
entry.name = "assistant";
|
|
85
89
|
} catch (err) {
|
|
86
90
|
// Enumeration failed (no /proc and `ps` unavailable). Still report the
|
|
87
91
|
// daemon itself so the endpoint stays useful for liveness.
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Public Cadet roadmap, acted on as the assistant itself.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* platform API key instead of the owner's session token, so items, upvotes and
|
|
7
|
-
* comments are attributed to the assistant (`creator_kind: assistant`).
|
|
4
|
+
* Authenticates with the assistant's own platform API key, so items, upvotes
|
|
5
|
+
* and comments are attributed to the assistant (`creator_kind: assistant`).
|
|
8
6
|
*
|
|
9
7
|
* The key never leaves the daemon: it is read from the credential vault here
|
|
10
8
|
* and used only in the `Authorization` header. Reads fall back to anonymous
|
|
@@ -22,7 +20,7 @@
|
|
|
22
20
|
import { type EnvironmentDefinition, SEEDS } from "@mycadet/environments";
|
|
23
21
|
import { z } from "zod";
|
|
24
22
|
|
|
25
|
-
import {
|
|
23
|
+
import { getCloudBaseUrl } from "../../config/env.js";
|
|
26
24
|
import { credentialKey } from "../../security/credential-key.js";
|
|
27
25
|
import { getSecureKeyAsync } from "../../security/secure-keys.js";
|
|
28
26
|
import { ACTOR_PRINCIPALS } from "../auth/route-policy.js";
|
|
@@ -68,27 +66,27 @@ function hostnameOf(url: string): string | undefined {
|
|
|
68
66
|
}
|
|
69
67
|
|
|
70
68
|
/**
|
|
71
|
-
* The deployment this assistant belongs to, judged by the
|
|
69
|
+
* The deployment this assistant belongs to, judged by the cloud it
|
|
72
70
|
* authenticates against.
|
|
73
71
|
*
|
|
74
72
|
* `CADET_ENVIRONMENT` cannot answer this. Unset, it means dev to
|
|
75
|
-
* `
|
|
73
|
+
* `getCloudBaseUrl` and local to every launcher, but it would have to mean
|
|
76
74
|
* production for a roadmap default to be safe, and it is blind to the config
|
|
77
|
-
* file and `
|
|
78
|
-
* labelled assistant at production. The
|
|
75
|
+
* file and `CADET_CLOUD_URL`, either of which can point a differently
|
|
76
|
+
* labelled assistant at production. The cloud base URL is the one signal
|
|
79
77
|
* that already accounts for all three, and it names the deployment that issued
|
|
80
78
|
* the very key these calls are signed with.
|
|
81
79
|
*
|
|
82
|
-
* Undefined for a
|
|
80
|
+
* Undefined for a cloud outside the seed table (a self-hosted one, say),
|
|
83
81
|
* which is not production and whose roadmap and web origins must be named.
|
|
84
82
|
*/
|
|
85
83
|
function resolveDeployment(): EnvironmentDefinition | undefined {
|
|
86
|
-
const host = hostnameOf(
|
|
84
|
+
const host = hostnameOf(getCloudBaseUrl());
|
|
87
85
|
if (!host) {
|
|
88
86
|
return undefined;
|
|
89
87
|
}
|
|
90
88
|
return Object.values(SEEDS).find(
|
|
91
|
-
(seed) => hostnameOf(seed.
|
|
89
|
+
(seed) => hostnameOf(seed.cloudUrl) === host,
|
|
92
90
|
);
|
|
93
91
|
}
|
|
94
92
|
|
|
@@ -117,10 +115,10 @@ interface RoadmapEndpoints {
|
|
|
117
115
|
*
|
|
118
116
|
* Each handler resolves this once and carries the result through both the
|
|
119
117
|
* request and the response mapping. Resolving again while rendering the reply
|
|
120
|
-
* would reintroduce the failure this ordering exists to prevent: a
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
118
|
+
* would reintroduce the failure this ordering exists to prevent: a config
|
|
119
|
+
* write landing mid-flight could make a create throw after the item was
|
|
120
|
+
* already published, or stamp a link from a deployment other than the one
|
|
121
|
+
* that answered.
|
|
124
122
|
*/
|
|
125
123
|
function resolveEndpoints(): RoadmapEndpoints {
|
|
126
124
|
const deployment = resolveDeployment();
|
|
@@ -129,14 +127,14 @@ function resolveEndpoints(): RoadmapEndpoints {
|
|
|
129
127
|
|
|
130
128
|
if (!apiOverride && deployment?.name !== "production") {
|
|
131
129
|
throw new UnprocessableEntityError(
|
|
132
|
-
`The Cadet roadmap has no deployment for a ${
|
|
130
|
+
`The Cadet roadmap has no deployment for a ${getCloudBaseUrl()} assistant. Set CADET_MARKETING_URL to the roadmap service for this environment.`,
|
|
133
131
|
);
|
|
134
132
|
}
|
|
135
133
|
|
|
136
134
|
const web = webOverride || deployment?.webUrl;
|
|
137
135
|
if (!web) {
|
|
138
136
|
throw new UnprocessableEntityError(
|
|
139
|
-
`No web origin is known for a ${
|
|
137
|
+
`No web origin is known for a ${getCloudBaseUrl()} assistant, so roadmap item links cannot be built. Set CADET_WEB_URL to the site that renders this environment's roadmap.`,
|
|
140
138
|
);
|
|
141
139
|
}
|
|
142
140
|
|
|
@@ -156,7 +154,7 @@ function itemUrl(web: string, slug: string): string {
|
|
|
156
154
|
|
|
157
155
|
/**
|
|
158
156
|
* The assistant's own platform API key, or undefined when the assistant is not
|
|
159
|
-
* connected to the
|
|
157
|
+
* connected to the cloud.
|
|
160
158
|
*/
|
|
161
159
|
async function assistantApiKey(): Promise<string | undefined> {
|
|
162
160
|
const key = await getSecureKeyAsync(
|
|
@@ -651,7 +649,7 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
651
649
|
},
|
|
652
650
|
summary: "List public roadmap items",
|
|
653
651
|
description:
|
|
654
|
-
"Lists items from the public Cadet roadmap. Authenticated as the assistant when a
|
|
652
|
+
"Lists items from the public Cadet roadmap. Authenticated as the assistant when a cloud API key is stored, which fills in viewerUpvoted; anonymous otherwise.",
|
|
655
653
|
tags: ["roadmap"],
|
|
656
654
|
queryParams: [
|
|
657
655
|
{ name: "q", required: false, description: "Search query" },
|
|
@@ -14,22 +14,16 @@ import {
|
|
|
14
14
|
AcpCredentialFormatError,
|
|
15
15
|
assertAcpCredentialFormat,
|
|
16
16
|
} from "../../acp/acp-credentials.js";
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
} from "../../config/env.js";
|
|
17
|
+
import { syncAvatarToCloud } from "../../avatar/sync-avatar.js";
|
|
18
|
+
import { syncWorkspaceIdentityToPlatform } from "../../cloud/sync-identity.js";
|
|
19
|
+
import { maybeDefaultSpeechToCloud } from "../../config/cloud-speech-defaults.js";
|
|
20
|
+
import { getCloudAssistantId } from "../../config/env.js";
|
|
22
21
|
import { getConfig } from "../../config/loader.js";
|
|
23
|
-
import { maybeDefaultSpeechToManaged } from "../../config/managed-speech-defaults.js";
|
|
24
22
|
import { getCesClient } from "../../credential-execution/ces-runtime.js";
|
|
25
23
|
import type { CesClient } from "../../credential-execution/client.js";
|
|
26
|
-
import {
|
|
27
|
-
isNonSecretPlatformField,
|
|
28
|
-
scrubStoredCredentialFromTranscripts,
|
|
29
|
-
} from "../../daemon/credential-transcript-scrub.js";
|
|
24
|
+
import { scrubStoredCredentialFromTranscripts } from "../../daemon/credential-transcript-scrub.js";
|
|
30
25
|
import { syncManualTokenConnection } from "../../oauth/manual-token-connection.js";
|
|
31
|
-
import {
|
|
32
|
-
import { maybeReseedCapabilitiesAfterManagedCredential } from "../../plugins/defaults/memory/substrate/boot-maintenance.js";
|
|
26
|
+
import { maybeReseedCapabilitiesAfterCloudCredential } from "../../plugins/defaults/memory/substrate/boot-maintenance.js";
|
|
33
27
|
import { validateAnthropicApiKey } from "../../providers/anthropic/client.js";
|
|
34
28
|
import { validateAtlasCloudApiKey } from "../../providers/atlascloud/client.js";
|
|
35
29
|
import { validateBasetenApiKey } from "../../providers/baseten/client.js";
|
|
@@ -59,6 +53,7 @@ import {
|
|
|
59
53
|
} from "../../tools/credentials/metadata-store.js";
|
|
60
54
|
import { getLogger } from "../../util/logger.js";
|
|
61
55
|
import { ACTOR_PRINCIPALS } from "../auth/route-policy.js";
|
|
56
|
+
import { isPlatformCloudCredential } from "./cloud-credentials.js";
|
|
62
57
|
import {
|
|
63
58
|
assertCredentialNotInUse,
|
|
64
59
|
invalidateConnectionsAfterCredentialDelete,
|
|
@@ -69,7 +64,6 @@ import {
|
|
|
69
64
|
NotFoundError,
|
|
70
65
|
RouteError,
|
|
71
66
|
} from "./errors.js";
|
|
72
|
-
import { isPlatformManagedCredential } from "./platform-managed-credentials.js";
|
|
73
67
|
import type { RouteDefinition, RouteHandlerArgs } from "./types.js";
|
|
74
68
|
|
|
75
69
|
const log = getLogger("runtime-http");
|
|
@@ -80,7 +74,6 @@ const CES_READY_POLL_TIMEOUT_MS = 30_000;
|
|
|
80
74
|
const WRITABLE_CADET_CREDENTIAL_FIELDS = [
|
|
81
75
|
"assistant_api_key",
|
|
82
76
|
"webhook_secret",
|
|
83
|
-
"platform_base_url",
|
|
84
77
|
] as const;
|
|
85
78
|
|
|
86
79
|
function isWritableCadetCredentialField(field: string): boolean {
|
|
@@ -101,20 +94,11 @@ async function persistCredential(
|
|
|
101
94
|
`Failed to store credential in secure storage (backend: ${getActiveBackendName()})`,
|
|
102
95
|
);
|
|
103
96
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
"Credential stored; scrubbed value from recent transcripts",
|
|
110
|
-
);
|
|
111
|
-
} catch (err) {
|
|
112
|
-
log.warn(
|
|
113
|
-
{ err, service, field },
|
|
114
|
-
"Credential stored, but transcript scrub failed",
|
|
115
|
-
);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
97
|
+
const scrubbed = await scrubStoredCredentialFromTranscripts(value);
|
|
98
|
+
log.info(
|
|
99
|
+
{ service, field, ...scrubbed },
|
|
100
|
+
"Credential stored; scrubbed value from recent transcripts",
|
|
101
|
+
);
|
|
118
102
|
upsertCredentialMetadata(service, field, {});
|
|
119
103
|
await syncManualTokenConnection(service);
|
|
120
104
|
}
|
|
@@ -148,7 +132,7 @@ async function queueApiKeyPropagation(
|
|
|
148
132
|
try {
|
|
149
133
|
await cesClient.updateAssistantApiKey(
|
|
150
134
|
apiKey,
|
|
151
|
-
|
|
135
|
+
getCloudAssistantId() || undefined,
|
|
152
136
|
);
|
|
153
137
|
log.info(
|
|
154
138
|
"Notified CES of the queued assistant API key after handshake completed (ack only; CES reads the durable value from the credential store)",
|
|
@@ -189,7 +173,7 @@ export async function notifyCesOfAssistantApiKeyUpdate(
|
|
|
189
173
|
try {
|
|
190
174
|
await cesClient.updateAssistantApiKey(
|
|
191
175
|
value,
|
|
192
|
-
|
|
176
|
+
getCloudAssistantId() || undefined,
|
|
193
177
|
);
|
|
194
178
|
logger.info(
|
|
195
179
|
"Notified CES of the updated assistant API key (ack only; CES reads the durable value from the credential store)",
|
|
@@ -330,19 +314,12 @@ async function handleAddSecret({ body }: RouteHandlerArgs) {
|
|
|
330
314
|
// refresh: that side effect can throw, and a stored-but-unscrubbed key
|
|
331
315
|
// must not depend on it succeeding. The key IS stored at this point;
|
|
332
316
|
// the scrub is best-effort hygiene and must stay invisible to the
|
|
333
|
-
//
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
);
|
|
340
|
-
} catch (err) {
|
|
341
|
-
log.warn(
|
|
342
|
-
{ err, provider: name },
|
|
343
|
-
"API key stored, but transcript scrub failed",
|
|
344
|
-
);
|
|
345
|
-
}
|
|
317
|
+
// Counts only — never the value.
|
|
318
|
+
const scrubbed = await scrubStoredCredentialFromTranscripts(value);
|
|
319
|
+
log.info(
|
|
320
|
+
{ provider: name, ...scrubbed },
|
|
321
|
+
"API key stored; scrubbed value from recent transcripts",
|
|
322
|
+
);
|
|
346
323
|
|
|
347
324
|
await refreshProvidersAfterSecretChange();
|
|
348
325
|
log.info({ provider: name }, "API key updated via HTTP");
|
|
@@ -367,32 +344,29 @@ async function handleAddSecret({ body }: RouteHandlerArgs) {
|
|
|
367
344
|
}
|
|
368
345
|
assertMetadataWritable();
|
|
369
346
|
await persistCredential(service, field, value);
|
|
370
|
-
if (field
|
|
371
|
-
setPlatformBaseUrl(value);
|
|
372
|
-
}
|
|
373
|
-
if (isPlatformManagedCredential(service, field)) {
|
|
347
|
+
if (isPlatformCloudCredential(service, field)) {
|
|
374
348
|
await refreshProvidersAfterSecretChange();
|
|
375
349
|
// Close the first-boot race where the startup capability seed ran before
|
|
376
|
-
// the
|
|
350
|
+
// the cloud embedding credential was provisioned, leaving skill/CLI
|
|
377
351
|
// pages unseeded until restart. Detached, must not block the response.
|
|
378
|
-
void
|
|
352
|
+
void maybeReseedCapabilitiesAfterCloudCredential(getConfig());
|
|
379
353
|
if (field === "assistant_api_key") {
|
|
380
354
|
await notifyCesOfAssistantApiKeyUpdate(value, getCesClient());
|
|
381
355
|
}
|
|
382
356
|
} else {
|
|
383
357
|
await refreshProvidersForRotatedCredential(service, field);
|
|
384
358
|
}
|
|
385
|
-
if (field === "assistant_api_key"
|
|
386
|
-
// Managed-speech availability needs the API key
|
|
387
|
-
//
|
|
388
|
-
//
|
|
359
|
+
if (field === "assistant_api_key") {
|
|
360
|
+
// Managed-speech availability needs the API key and the assistant
|
|
361
|
+
// ID. Fire on each write that completes a piece of that set; the
|
|
362
|
+
// hook no-ops until the connection is complete.
|
|
389
363
|
// Detached, must not block the response.
|
|
390
|
-
void
|
|
364
|
+
void maybeDefaultSpeechToCloud();
|
|
391
365
|
// Same last-write-wins shape: the startup syncs no-op before live
|
|
392
366
|
// registration, so re-enqueue them here. Both dedup and no-op until
|
|
393
367
|
// the client and assistant id exist.
|
|
394
368
|
syncWorkspaceIdentityToPlatform();
|
|
395
|
-
|
|
369
|
+
syncAvatarToCloud();
|
|
396
370
|
}
|
|
397
371
|
log.info({ service, field }, "Credential added via HTTP");
|
|
398
372
|
return { success: true, type, name };
|
|
@@ -9,14 +9,12 @@ import { basename, join } from "node:path";
|
|
|
9
9
|
import { normalizePublicBaseUrl } from "@mycadet/service-contracts/ingress";
|
|
10
10
|
import { z } from "zod";
|
|
11
11
|
|
|
12
|
-
import {
|
|
13
|
-
getPlatformBaseUrl,
|
|
14
|
-
setIngressPublicBaseUrl,
|
|
15
|
-
} from "../../config/env.js";
|
|
12
|
+
import { getCloudBaseUrl, setIngressPublicBaseUrl } from "../../config/env.js";
|
|
16
13
|
import {
|
|
17
14
|
getConfig,
|
|
18
15
|
loadRawConfig,
|
|
19
16
|
saveRawConfig,
|
|
17
|
+
setConfigSection,
|
|
20
18
|
} from "../../config/loader.js";
|
|
21
19
|
import { loadSkillCatalog } from "../../config/skills.js";
|
|
22
20
|
import { getGuardianDelivery } from "../../contacts/guardian-delivery-reader.js";
|
|
@@ -794,26 +792,23 @@ function handleEnvVars() {
|
|
|
794
792
|
}
|
|
795
793
|
|
|
796
794
|
// ---------------------------------------------------------------------------
|
|
797
|
-
//
|
|
795
|
+
// Cloud config
|
|
798
796
|
// ---------------------------------------------------------------------------
|
|
799
797
|
|
|
800
|
-
function
|
|
801
|
-
const baseUrl = getConfig().
|
|
798
|
+
function handleGetCloudConfig() {
|
|
799
|
+
const baseUrl = getConfig().cloud.baseUrl || getCloudBaseUrl();
|
|
802
800
|
return { baseUrl, success: true };
|
|
803
801
|
}
|
|
804
802
|
|
|
805
|
-
function
|
|
803
|
+
function handleUpdateCloudConfig({ body = {} }: RouteHandlerArgs) {
|
|
806
804
|
try {
|
|
807
805
|
const { baseUrl: rawBaseUrl } = body as { baseUrl?: string };
|
|
808
806
|
const value = normalizePublicBaseUrl(rawBaseUrl);
|
|
809
|
-
|
|
810
|
-
const platform = (raw?.platform ?? {}) as Record<string, unknown>;
|
|
811
|
-
platform.baseUrl = value;
|
|
812
|
-
saveRawConfig({ ...raw, platform });
|
|
807
|
+
setConfigSection("cloud", { ...getConfig().cloud, baseUrl: value ?? "" });
|
|
813
808
|
return { baseUrl: value ?? "", success: true };
|
|
814
809
|
} catch (err) {
|
|
815
810
|
const message = err instanceof Error ? err.message : String(err);
|
|
816
|
-
log.error({ err }, "Failed to update
|
|
811
|
+
log.error({ err }, "Failed to update cloud config");
|
|
817
812
|
throw new InternalError(message);
|
|
818
813
|
}
|
|
819
814
|
}
|
|
@@ -1051,37 +1046,37 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
1051
1046
|
handler: () => handleEnvVars(),
|
|
1052
1047
|
},
|
|
1053
1048
|
{
|
|
1054
|
-
operationId: "
|
|
1055
|
-
endpoint: "config/
|
|
1049
|
+
operationId: "config_cloud_get",
|
|
1050
|
+
endpoint: "config/cloud",
|
|
1056
1051
|
method: "GET",
|
|
1057
1052
|
policy: {
|
|
1058
1053
|
requiredScopes: ["settings.read"],
|
|
1059
1054
|
allowedPrincipalTypes: ACTOR_PRINCIPALS,
|
|
1060
1055
|
},
|
|
1061
|
-
summary: "Get
|
|
1062
|
-
description: "Return the
|
|
1056
|
+
summary: "Get cloud config",
|
|
1057
|
+
description: "Return the cloud base URL configuration.",
|
|
1063
1058
|
tags: ["config"],
|
|
1064
1059
|
responseBody: z.object({
|
|
1065
1060
|
baseUrl: z.string(),
|
|
1066
1061
|
success: z.boolean(),
|
|
1067
1062
|
}),
|
|
1068
|
-
handler: () =>
|
|
1063
|
+
handler: () => handleGetCloudConfig(),
|
|
1069
1064
|
},
|
|
1070
1065
|
{
|
|
1071
|
-
operationId: "
|
|
1072
|
-
endpoint: "config/
|
|
1066
|
+
operationId: "config_cloud_put",
|
|
1067
|
+
endpoint: "config/cloud",
|
|
1073
1068
|
method: "PUT",
|
|
1074
1069
|
policy: {
|
|
1075
1070
|
requiredScopes: ["settings.write"],
|
|
1076
1071
|
allowedPrincipalTypes: ACTOR_PRINCIPALS,
|
|
1077
1072
|
},
|
|
1078
|
-
summary: "Update
|
|
1079
|
-
description: "Set the
|
|
1073
|
+
summary: "Update cloud config",
|
|
1074
|
+
description: "Set the cloud base URL.",
|
|
1080
1075
|
tags: ["config"],
|
|
1081
1076
|
requestBody: z.object({
|
|
1082
1077
|
baseUrl: z.string(),
|
|
1083
1078
|
}),
|
|
1084
|
-
handler:
|
|
1079
|
+
handler: handleUpdateCloudConfig,
|
|
1085
1080
|
},
|
|
1086
1081
|
{
|
|
1087
1082
|
operationId: "integrations_ingress_config_get",
|
|
@@ -228,13 +228,13 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
228
228
|
},
|
|
229
229
|
summary: "Flush pending telemetry events",
|
|
230
230
|
description:
|
|
231
|
-
"Force-flush the telemetry events owned by the assistant process (turn events) to the
|
|
231
|
+
"Force-flush the telemetry events owned by the assistant process (turn events) to the cloud. Other event types are flushed on their own cycle by the resource monitor process.",
|
|
232
232
|
tags: ["telemetry"],
|
|
233
233
|
responseBody: z.union([
|
|
234
234
|
z.object({
|
|
235
235
|
flushed: z.literal(true),
|
|
236
|
-
sent: z.number().describe("Events POSTed to the
|
|
237
|
-
persisted: z.number().describe("Events the
|
|
236
|
+
sent: z.number().describe("Events POSTed to the cloud"),
|
|
237
|
+
persisted: z.number().describe("Events the cloud confirmed written"),
|
|
238
238
|
dropped: z
|
|
239
239
|
.number()
|
|
240
240
|
.describe("Events that did not land (sent - persisted)"),
|
|
@@ -256,7 +256,7 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
256
256
|
},
|
|
257
257
|
summary: "Record an outbox-backed telemetry event",
|
|
258
258
|
description:
|
|
259
|
-
"Record any outbox-backed telemetry event by its wire `type` + `fields`. For events a client observes and the daemon can't detect on its own (e.g. onboarding_research). The type must be an outbox-backed event — the watermark types (turn, llm_usage, tool_executed) have no variant — and the payload must pass the
|
|
259
|
+
"Record any outbox-backed telemetry event by its wire `type` + `fields`. For events a client observes and the daemon can't detect on its own (e.g. onboarding_research). The type must be an outbox-backed event — the watermark types (turn, llm_usage, tool_executed) have no variant — and the payload must pass the cloud wire schema. Gated on share_analytics consent like every other outbox-backed event; the cloud re-checks the owner's consent server-side at ingest.",
|
|
260
260
|
tags: ["telemetry"],
|
|
261
261
|
requestBody: telemetryIngestRequestSchema,
|
|
262
262
|
responseBody: z.union([
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
import { z } from "zod";
|
|
9
9
|
|
|
10
10
|
import { sanitizeForTts } from "../../calls/tts-text-sanitizer.js";
|
|
11
|
+
import { managedSpeechVoices } from "../../cloud/cloud-speech.js";
|
|
11
12
|
import { getConfig } from "../../config/loader.js";
|
|
12
|
-
import { managedSpeechVoices } from "../../platform/managed-speech.js";
|
|
13
13
|
import { listCatalogProvidersForDisplay } from "../../tts/provider-catalog.js";
|
|
14
14
|
import {
|
|
15
15
|
synthesizeText,
|
|
@@ -132,7 +132,7 @@ function handleListTtsProviders() {
|
|
|
132
132
|
return { providers: listCatalogProvidersForDisplay() };
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
-
async function
|
|
135
|
+
async function handleListCloudVoices() {
|
|
136
136
|
const result = await managedSpeechVoices();
|
|
137
137
|
if (!result.ok) {
|
|
138
138
|
if (result.kind === "unavailable") {
|
|
@@ -244,7 +244,7 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
244
244
|
},
|
|
245
245
|
summary: "List managed TTS voices",
|
|
246
246
|
description:
|
|
247
|
-
"Return the voices offered by Cadet
|
|
247
|
+
"Return the voices offered by Cadet Cloud TTS, fetched live from the cloud. Only currently-usable voices are returned; defaultModel is always one of them (null when none are offered).",
|
|
248
248
|
tags: ["tts"],
|
|
249
249
|
responseBody: z.object({
|
|
250
250
|
voices: z.array(
|
|
@@ -258,7 +258,7 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
258
258
|
),
|
|
259
259
|
defaultModel: z.string().nullable(),
|
|
260
260
|
}),
|
|
261
|
-
handler:
|
|
261
|
+
handler: handleListCloudVoices,
|
|
262
262
|
},
|
|
263
263
|
{
|
|
264
264
|
operationId: "tts_synthesize",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* - `plugins/defaults/<name>/routes/<path>` (the app source tree) — a
|
|
15
15
|
* first-party default plugin's routes, served in the same
|
|
16
16
|
* `/x/plugins/<name>/<path>` namespace, where `<name>` is the plugin's
|
|
17
|
-
* `default-…` manifest name (e.g. `default-
|
|
17
|
+
* `default-…` manifest name (e.g. `default-cloud-hosted`) — the same name
|
|
18
18
|
* its `.disabled` sentinel is keyed by. Default plugins live in the binary's
|
|
19
19
|
* source, not the workspace, so their routes resolve from the source tree.
|
|
20
20
|
* An installed plugin of the same name takes precedence (it can override a
|