@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
package/src/providers/speech-to-text/__tests__/{cadet-managed.test.ts → cadet-cloud.test.ts}
RENAMED
|
@@ -4,41 +4,41 @@ import { SttError } from "../../../stt/types.js";
|
|
|
4
4
|
import { describeSttFailure } from "../../voice-error-copy.js";
|
|
5
5
|
|
|
6
6
|
let mockTranscribeResult: unknown;
|
|
7
|
-
let mockClient: {
|
|
7
|
+
let mockClient: { cloudAssistantId: string } | null = null;
|
|
8
8
|
|
|
9
|
-
mock.module("../../../
|
|
9
|
+
mock.module("../../../cloud/cloud-speech.js", () => ({
|
|
10
10
|
managedSpeechTranscribe: async () => mockTranscribeResult,
|
|
11
11
|
}));
|
|
12
12
|
|
|
13
|
-
mock.module("../../../
|
|
14
|
-
|
|
13
|
+
mock.module("../../../cloud/client.js", () => ({
|
|
14
|
+
CadetCloudClient: {
|
|
15
15
|
create: async () => mockClient,
|
|
16
16
|
},
|
|
17
17
|
}));
|
|
18
18
|
|
|
19
19
|
import {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
} from "../cadet-
|
|
20
|
+
cadetCloudSpeechAvailable,
|
|
21
|
+
cadetCloudTranscribe,
|
|
22
|
+
sttErrorFromCloudSpeech,
|
|
23
|
+
} from "../cadet-cloud.js";
|
|
24
24
|
|
|
25
|
-
describe("
|
|
25
|
+
describe("cadetCloudSpeechAvailable", () => {
|
|
26
26
|
test("true with a connected platform client", async () => {
|
|
27
|
-
mockClient = {
|
|
28
|
-
expect(await
|
|
27
|
+
mockClient = { cloudAssistantId: "asst-1" };
|
|
28
|
+
expect(await cadetCloudSpeechAvailable()).toBe(true);
|
|
29
29
|
});
|
|
30
30
|
|
|
31
31
|
test("false without a client or without an assistant ID", async () => {
|
|
32
32
|
mockClient = null;
|
|
33
|
-
expect(await
|
|
34
|
-
mockClient = {
|
|
35
|
-
expect(await
|
|
33
|
+
expect(await cadetCloudSpeechAvailable()).toBe(false);
|
|
34
|
+
mockClient = { cloudAssistantId: "" };
|
|
35
|
+
expect(await cadetCloudSpeechAvailable()).toBe(false);
|
|
36
36
|
});
|
|
37
37
|
});
|
|
38
38
|
|
|
39
|
-
describe("
|
|
39
|
+
describe("cadetCloudTranscribe", () => {
|
|
40
40
|
beforeEach(() => {
|
|
41
|
-
mockClient = {
|
|
41
|
+
mockClient = { cloudAssistantId: "asst-1" };
|
|
42
42
|
});
|
|
43
43
|
|
|
44
44
|
test("returns the transcription text", async () => {
|
|
@@ -46,9 +46,9 @@ describe("cadetManagedTranscribe", () => {
|
|
|
46
46
|
ok: true,
|
|
47
47
|
value: { text: "hello", durationSeconds: 2 },
|
|
48
48
|
};
|
|
49
|
-
expect(await
|
|
50
|
-
|
|
51
|
-
);
|
|
49
|
+
expect(await cadetCloudTranscribe(Buffer.from([1]), "audio/wav")).toEqual({
|
|
50
|
+
text: "hello",
|
|
51
|
+
});
|
|
52
52
|
});
|
|
53
53
|
|
|
54
54
|
test("throws a normalized SttError on failure", async () => {
|
|
@@ -59,12 +59,12 @@ describe("cadetManagedTranscribe", () => {
|
|
|
59
59
|
message: "slow down",
|
|
60
60
|
};
|
|
61
61
|
await expect(
|
|
62
|
-
|
|
62
|
+
cadetCloudTranscribe(Buffer.from([1]), "audio/wav"),
|
|
63
63
|
).rejects.toMatchObject({ name: "SttError", category: "rate-limit" });
|
|
64
64
|
});
|
|
65
65
|
});
|
|
66
66
|
|
|
67
|
-
describe("
|
|
67
|
+
describe("sttErrorFromCloudSpeech", () => {
|
|
68
68
|
const cases: Array<{
|
|
69
69
|
name: string;
|
|
70
70
|
failure: Record<string, unknown>;
|
|
@@ -137,14 +137,14 @@ describe("sttErrorFromManagedSpeech", () => {
|
|
|
137
137
|
// non-user-facing so describeSttFailure emits friendly category copy
|
|
138
138
|
// instead of leaking a raw HTTP status — except a bare auth status, whose
|
|
139
139
|
// friendly copy would be the wrong BYOK "check your API key" guidance, so it
|
|
140
|
-
// gets a sanitized
|
|
140
|
+
// gets a sanitized cloud-connection message surfaced verbatim.
|
|
141
141
|
{
|
|
142
142
|
name: "401 without detail → auth, user-facing sanitized reconnect copy",
|
|
143
143
|
failure: {
|
|
144
144
|
ok: false,
|
|
145
145
|
kind: "platform-error",
|
|
146
146
|
status: 401,
|
|
147
|
-
message: "
|
|
147
|
+
message: "Cloud speech transcription failed (platform returned 401).",
|
|
148
148
|
},
|
|
149
149
|
category: "auth",
|
|
150
150
|
userFacing: true,
|
|
@@ -157,7 +157,7 @@ describe("sttErrorFromManagedSpeech", () => {
|
|
|
157
157
|
ok: false,
|
|
158
158
|
kind: "platform-error",
|
|
159
159
|
status: 403,
|
|
160
|
-
message: "
|
|
160
|
+
message: "Cloud speech transcription failed (platform returned 403).",
|
|
161
161
|
},
|
|
162
162
|
category: "auth",
|
|
163
163
|
userFacing: true,
|
|
@@ -170,7 +170,7 @@ describe("sttErrorFromManagedSpeech", () => {
|
|
|
170
170
|
ok: false,
|
|
171
171
|
kind: "platform-error",
|
|
172
172
|
status: 429,
|
|
173
|
-
message: "
|
|
173
|
+
message: "Cloud speech transcription failed (platform returned 429).",
|
|
174
174
|
},
|
|
175
175
|
category: "rate-limit",
|
|
176
176
|
userFacing: false,
|
|
@@ -181,7 +181,7 @@ describe("sttErrorFromManagedSpeech", () => {
|
|
|
181
181
|
ok: false,
|
|
182
182
|
kind: "platform-error",
|
|
183
183
|
status: 413,
|
|
184
|
-
message: "
|
|
184
|
+
message: "Cloud speech transcription failed (platform returned 413).",
|
|
185
185
|
},
|
|
186
186
|
category: "invalid-audio",
|
|
187
187
|
userFacing: false,
|
|
@@ -192,7 +192,7 @@ describe("sttErrorFromManagedSpeech", () => {
|
|
|
192
192
|
ok: false,
|
|
193
193
|
kind: "platform-error",
|
|
194
194
|
status: 502,
|
|
195
|
-
message: "
|
|
195
|
+
message: "Cloud speech transcription failed (platform returned 502).",
|
|
196
196
|
},
|
|
197
197
|
category: "provider-error",
|
|
198
198
|
userFacing: false,
|
|
@@ -208,8 +208,8 @@ describe("sttErrorFromManagedSpeech", () => {
|
|
|
208
208
|
messageExcludes,
|
|
209
209
|
} of cases) {
|
|
210
210
|
test(name, () => {
|
|
211
|
-
const err =
|
|
212
|
-
failure as Parameters<typeof
|
|
211
|
+
const err = sttErrorFromCloudSpeech(
|
|
212
|
+
failure as Parameters<typeof sttErrorFromCloudSpeech>[0],
|
|
213
213
|
);
|
|
214
214
|
expect(err).toBeInstanceOf(SttError);
|
|
215
215
|
expect(err.category).toBe(category as SttError["category"]);
|
|
@@ -228,8 +228,8 @@ describe("sttErrorFromManagedSpeech", () => {
|
|
|
228
228
|
});
|
|
229
229
|
|
|
230
230
|
describe("describeSttFailure over managed STT failures", () => {
|
|
231
|
-
test("surfaces a
|
|
232
|
-
const err =
|
|
231
|
+
test("surfaces a cloud-supplied detail verbatim", () => {
|
|
232
|
+
const err = sttErrorFromCloudSpeech({
|
|
233
233
|
ok: false,
|
|
234
234
|
kind: "platform-error",
|
|
235
235
|
status: 429,
|
|
@@ -242,11 +242,11 @@ describe("describeSttFailure over managed STT failures", () => {
|
|
|
242
242
|
});
|
|
243
243
|
|
|
244
244
|
test("replaces a bare HTTP-status fallback with friendly category copy", () => {
|
|
245
|
-
const err =
|
|
245
|
+
const err = sttErrorFromCloudSpeech({
|
|
246
246
|
ok: false,
|
|
247
247
|
kind: "platform-error",
|
|
248
248
|
status: 429,
|
|
249
|
-
message: "
|
|
249
|
+
message: "Cloud speech transcription failed (platform returned 429).",
|
|
250
250
|
});
|
|
251
251
|
const copy = describeSttFailure(err, "cadet");
|
|
252
252
|
expect(copy).not.toContain("platform returned 429");
|
|
@@ -254,11 +254,11 @@ describe("describeSttFailure over managed STT failures", () => {
|
|
|
254
254
|
});
|
|
255
255
|
|
|
256
256
|
test("bare auth failure gets sanitized reconnect copy, not the BYOK rewrite", () => {
|
|
257
|
-
const err =
|
|
257
|
+
const err = sttErrorFromCloudSpeech({
|
|
258
258
|
ok: false,
|
|
259
259
|
kind: "platform-error",
|
|
260
260
|
status: 401,
|
|
261
|
-
message: "
|
|
261
|
+
message: "Cloud speech transcription failed (platform returned 401).",
|
|
262
262
|
});
|
|
263
263
|
const copy = describeSttFailure(err, "cadet");
|
|
264
264
|
// Managed STT holds no local key: the "check your API key in Settings →
|
|
@@ -731,7 +731,7 @@ describe("DeepgramFluxRealtimeTranscriber", () => {
|
|
|
731
731
|
});
|
|
732
732
|
|
|
733
733
|
test("hands frames the Flux parser makes nothing of to the wrapper", async () => {
|
|
734
|
-
// This is how tunnel_error reaches the
|
|
734
|
+
// This is how tunnel_error reaches the cloud wrapper: it rides the
|
|
735
735
|
// same socket but is not a Flux frame.
|
|
736
736
|
const unhandled: Record<string, unknown>[] = [];
|
|
737
737
|
await startSession({
|
|
@@ -58,32 +58,32 @@ function seedProviderKeys(record: Record<string, string>): void {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
// -- Cadet
|
|
61
|
+
// -- Cadet Cloud availability mock --------------------------------------
|
|
62
62
|
|
|
63
63
|
let mockCadetAvailable = false;
|
|
64
64
|
|
|
65
65
|
/**
|
|
66
|
-
* Arguments the
|
|
66
|
+
* Arguments the cloud batch adapter was called with. The cloud path has
|
|
67
67
|
* no constructor to spy on (the cloud connection is the credential), so
|
|
68
68
|
* the language it forwards is observable only at the transcribe call.
|
|
69
69
|
*/
|
|
70
|
-
const
|
|
70
|
+
const cadetCloudTranscribeCalls: Array<{
|
|
71
71
|
mimeType: string;
|
|
72
72
|
language: string | undefined;
|
|
73
73
|
}> = [];
|
|
74
74
|
|
|
75
|
-
mock.module("../cadet-
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
mock.module("../cadet-cloud.js", () => ({
|
|
76
|
+
cadetCloudSpeechAvailable: async () => mockCadetAvailable,
|
|
77
|
+
cadetCloudTranscribe: async (
|
|
78
78
|
_audio: Buffer,
|
|
79
79
|
mimeType: string,
|
|
80
80
|
_signal?: AbortSignal,
|
|
81
81
|
language?: string,
|
|
82
82
|
) => {
|
|
83
|
-
|
|
83
|
+
cadetCloudTranscribeCalls.push({ mimeType, language });
|
|
84
84
|
return { text: "" };
|
|
85
85
|
},
|
|
86
|
-
|
|
86
|
+
sttErrorFromCloudSpeech: (failure: unknown) => new Error(String(failure)),
|
|
87
87
|
}));
|
|
88
88
|
|
|
89
89
|
const cadetStreamCtorCalls: Array<{ connection: unknown; options: unknown }> =
|
|
@@ -98,7 +98,7 @@ mock.module("../cadet-speech-relay-connection.js", () => ({
|
|
|
98
98
|
resolveSpeechRelayConnection: async () => mockTunnelConnection,
|
|
99
99
|
}));
|
|
100
100
|
|
|
101
|
-
mock.module("../cadet-
|
|
101
|
+
mock.module("../cadet-cloud-realtime.js", () => ({
|
|
102
102
|
CadetManagedRealtimeTranscriber: class {
|
|
103
103
|
readonly providerId = "cadet";
|
|
104
104
|
readonly boundaryId = "daemon-streaming";
|
|
@@ -108,13 +108,13 @@ mock.module("../cadet-managed-realtime.js", () => ({
|
|
|
108
108
|
},
|
|
109
109
|
}));
|
|
110
110
|
|
|
111
|
-
/** Constructor calls for the
|
|
111
|
+
/** Constructor calls for the cloud Flux transcriber (`cadet-flux`). */
|
|
112
112
|
const cadetFluxStreamCtorCalls: Array<{
|
|
113
113
|
connection: unknown;
|
|
114
114
|
options: unknown;
|
|
115
115
|
}> = [];
|
|
116
116
|
|
|
117
|
-
mock.module("../cadet-
|
|
117
|
+
mock.module("../cadet-cloud-flux-realtime.js", () => ({
|
|
118
118
|
CadetManagedFluxRealtimeTranscriber: class {
|
|
119
119
|
readonly providerId = "cadet-flux";
|
|
120
120
|
readonly boundaryId = "daemon-streaming";
|
|
@@ -1136,7 +1136,7 @@ describe("cadet-flux managed resolution", () => {
|
|
|
1136
1136
|
cadetFluxStreamCtorCalls.length = 0;
|
|
1137
1137
|
});
|
|
1138
1138
|
|
|
1139
|
-
test("streaming resolver constructs the
|
|
1139
|
+
test("streaming resolver constructs the cloud Flux adapter over the same relay connection", async () => {
|
|
1140
1140
|
mockCadetAvailable = true;
|
|
1141
1141
|
applyConfig({ provider: "cadet-flux", language: "es" });
|
|
1142
1142
|
|
|
@@ -1258,7 +1258,7 @@ describe("cadet managed resolution", () => {
|
|
|
1258
1258
|
expect(cadetStreamCtorCalls).toEqual([
|
|
1259
1259
|
{
|
|
1260
1260
|
connection: mockTunnelConnection,
|
|
1261
|
-
// No language is configured here, so the
|
|
1261
|
+
// No language is configured here, so the cloud default rides along
|
|
1262
1262
|
// with the connection plumbing this test is about.
|
|
1263
1263
|
options: { sampleRate: 24000, language: "multi" },
|
|
1264
1264
|
},
|
|
@@ -1314,7 +1314,7 @@ describe("resolveStreamingTranscriber language plumbing", () => {
|
|
|
1314
1314
|
});
|
|
1315
1315
|
|
|
1316
1316
|
test("managed sessions forward services.stt.language to the relay adapter", async () => {
|
|
1317
|
-
// The
|
|
1317
|
+
// The cloud path is why this plumbing exists: tunnel allowlists
|
|
1318
1318
|
// `language` and pins nova-3, so "multi" reaches Deepgram's
|
|
1319
1319
|
// code-switching mode without any platform-side change.
|
|
1320
1320
|
mockCadetAvailable = true;
|
|
@@ -1410,7 +1410,7 @@ describe("resolveStreamingTranscriber language plumbing", () => {
|
|
|
1410
1410
|
});
|
|
1411
1411
|
});
|
|
1412
1412
|
|
|
1413
|
-
test("no configured language falls to multilingual on the
|
|
1413
|
+
test("no configured language falls to multilingual on the cloud relay", async () => {
|
|
1414
1414
|
// The relay dials Deepgram server-side, so it inherits the same English
|
|
1415
1415
|
// default and needs the same fill-in.
|
|
1416
1416
|
mockCadetAvailable = true;
|
|
@@ -1521,10 +1521,10 @@ describe("resolveStreamingTranscriber language plumbing", () => {
|
|
|
1521
1521
|
});
|
|
1522
1522
|
});
|
|
1523
1523
|
|
|
1524
|
-
test("managed batch forwards the configured language to the
|
|
1525
|
-
// The
|
|
1524
|
+
test("managed batch forwards the configured language to the cloud", async () => {
|
|
1525
|
+
// The cloud proxy passes it to Deepgram server-side, so a cloud
|
|
1526
1526
|
// voice note decodes in the same language the live session does.
|
|
1527
|
-
|
|
1527
|
+
cadetCloudTranscribeCalls.length = 0;
|
|
1528
1528
|
mockCadetAvailable = true;
|
|
1529
1529
|
applyConfig({ provider: "cadet", language: "ta" });
|
|
1530
1530
|
|
|
@@ -1534,14 +1534,14 @@ describe("resolveStreamingTranscriber language plumbing", () => {
|
|
|
1534
1534
|
mimeType: "audio/ogg",
|
|
1535
1535
|
});
|
|
1536
1536
|
|
|
1537
|
-
expect(
|
|
1538
|
-
expect(
|
|
1537
|
+
expect(cadetCloudTranscribeCalls).toHaveLength(1);
|
|
1538
|
+
expect(cadetCloudTranscribeCalls[0]?.language).toBe("ta");
|
|
1539
1539
|
});
|
|
1540
1540
|
|
|
1541
1541
|
test("managed batch falls to multilingual when no language is configured", async () => {
|
|
1542
|
-
// The gap this closes:
|
|
1542
|
+
// The gap this closes: cloud voice notes used to decode as English no
|
|
1543
1543
|
// matter what the user had chosen, because nothing was forwarded.
|
|
1544
|
-
|
|
1544
|
+
cadetCloudTranscribeCalls.length = 0;
|
|
1545
1545
|
mockCadetAvailable = true;
|
|
1546
1546
|
applyConfig({ provider: "cadet" });
|
|
1547
1547
|
|
|
@@ -1551,8 +1551,8 @@ describe("resolveStreamingTranscriber language plumbing", () => {
|
|
|
1551
1551
|
mimeType: "audio/ogg",
|
|
1552
1552
|
});
|
|
1553
1553
|
|
|
1554
|
-
expect(
|
|
1555
|
-
expect(
|
|
1554
|
+
expect(cadetCloudTranscribeCalls).toHaveLength(1);
|
|
1555
|
+
expect(cadetCloudTranscribeCalls[0]?.language).toBe("multi");
|
|
1556
1556
|
});
|
|
1557
1557
|
|
|
1558
1558
|
test("batch resolution falls to multilingual when no language is configured", async () => {
|
|
@@ -1611,7 +1611,7 @@ describe("streaming capability matches the streaming factory", () => {
|
|
|
1611
1611
|
xai: "xai",
|
|
1612
1612
|
// cadet's credential is the cloud connection, mocked below.
|
|
1613
1613
|
cadet: "cadet",
|
|
1614
|
-
//
|
|
1614
|
+
// Cloud Flux rides the same platform connection.
|
|
1615
1615
|
"cadet-flux": "cadet",
|
|
1616
1616
|
};
|
|
1617
1617
|
|
|
@@ -1625,7 +1625,7 @@ describe("streaming capability matches the streaming factory", () => {
|
|
|
1625
1625
|
function seedCredentialsFor(id: SttProviderId): void {
|
|
1626
1626
|
const credential = STREAMING_CREDENTIAL[id];
|
|
1627
1627
|
expect(credential).toBeDefined();
|
|
1628
|
-
// Both managed entries authenticate with the
|
|
1628
|
+
// Both managed entries authenticate with the cloud connection rather
|
|
1629
1629
|
// than a stored API key, and both dial through the same relay.
|
|
1630
1630
|
const managed = id === "cadet" || id === "cadet-flux";
|
|
1631
1631
|
mockCadetAvailable = managed;
|
|
@@ -1832,7 +1832,7 @@ describe("sttCredentialGapReason", () => {
|
|
|
1832
1832
|
|
|
1833
1833
|
describe("effectiveSttLanguage", () => {
|
|
1834
1834
|
test("fills the unset case only where unset would mean English", () => {
|
|
1835
|
-
// Deepgram and the
|
|
1835
|
+
// Deepgram and the cloud relay decode language-less audio as English,
|
|
1836
1836
|
// so leaving them unset is a silent pin rather than a neutral state.
|
|
1837
1837
|
expect(effectiveSttLanguage("deepgram", undefined)).toBe("multi");
|
|
1838
1838
|
expect(effectiveSttLanguage("cadet", undefined)).toBe("multi");
|
package/src/providers/speech-to-text/{cadet-managed-flux-realtime.ts → cadet-cloud-flux-realtime.ts}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Cloud Flux STT through the gateway's speech relay
|
|
3
3
|
* (gateway -> tunnel -> Deepgram Flux; tunnel contact is gateway-only).
|
|
4
4
|
*
|
|
5
5
|
* Composes {@link DeepgramFluxRealtimeTranscriber} against the relay's
|
|
@@ -39,7 +39,7 @@ import {
|
|
|
39
39
|
} from "./cadet-speech-relay-connection.js";
|
|
40
40
|
import { DeepgramFluxRealtimeTranscriber } from "./deepgram-flux-realtime.js";
|
|
41
41
|
|
|
42
|
-
const log = getLogger("cadet-
|
|
42
|
+
const log = getLogger("cadet-cloud-flux-realtime");
|
|
43
43
|
|
|
44
44
|
/** Managed STT v2: tunnel resolves this to Deepgram's Flux `/v2/listen`. */
|
|
45
45
|
const STT_STREAM_PATH = "/v2/speech/stt/stream";
|
|
@@ -246,9 +246,7 @@ export class CadetManagedFluxRealtimeTranscriber implements StreamingTranscriber
|
|
|
246
246
|
* error and ends the stream.
|
|
247
247
|
*/
|
|
248
248
|
private beginRedial(): void {
|
|
249
|
-
log.info(
|
|
250
|
-
"Managed Flux relay session hit tunnel's duration cap, re-dialing",
|
|
251
|
-
);
|
|
249
|
+
log.info("Cloud Flux relay session hit tunnel's duration cap, re-dialing");
|
|
252
250
|
this.inner = null;
|
|
253
251
|
this.turnIndexOffset = this.latestTurnIndex + 1;
|
|
254
252
|
void (async () => {
|
|
@@ -259,7 +257,7 @@ export class CadetManagedFluxRealtimeTranscriber implements StreamingTranscriber
|
|
|
259
257
|
return;
|
|
260
258
|
}
|
|
261
259
|
this.inner = inner;
|
|
262
|
-
log.info("
|
|
260
|
+
log.info("Cloud Flux relay re-dial complete; session continues");
|
|
263
261
|
} catch (err) {
|
|
264
262
|
if (this.stopping) {
|
|
265
263
|
return;
|
|
@@ -276,7 +274,7 @@ export class CadetManagedFluxRealtimeTranscriber implements StreamingTranscriber
|
|
|
276
274
|
this.emit({
|
|
277
275
|
type: "error",
|
|
278
276
|
category: "provider-error",
|
|
279
|
-
message: `
|
|
277
|
+
message: `Cloud Flux relay re-dial failed after the session cap: ${
|
|
280
278
|
err instanceof Error ? err.message : String(err)
|
|
281
279
|
}`,
|
|
282
280
|
});
|
|
@@ -300,7 +298,7 @@ export class CadetManagedFluxRealtimeTranscriber implements StreamingTranscriber
|
|
|
300
298
|
} catch (err) {
|
|
301
299
|
log.warn(
|
|
302
300
|
{ error: err },
|
|
303
|
-
"Listener error in Cadet
|
|
301
|
+
"Listener error in Cadet Cloud Flux realtime adapter",
|
|
304
302
|
);
|
|
305
303
|
}
|
|
306
304
|
}
|
|
@@ -34,7 +34,7 @@ import {
|
|
|
34
34
|
} from "./cadet-speech-relay-connection.js";
|
|
35
35
|
import { DeepgramRealtimeTranscriber } from "./deepgram-realtime.js";
|
|
36
36
|
|
|
37
|
-
const log = getLogger("cadet-
|
|
37
|
+
const log = getLogger("cadet-cloud-realtime");
|
|
38
38
|
|
|
39
39
|
const STT_STREAM_PATH = "/v1/speech/stt/stream";
|
|
40
40
|
|
|
@@ -280,7 +280,7 @@ export class CadetManagedRealtimeTranscriber implements StreamingTranscriber {
|
|
|
280
280
|
this.emit({
|
|
281
281
|
type: "error",
|
|
282
282
|
category: "provider-error",
|
|
283
|
-
message: `
|
|
283
|
+
message: `Cloud speech relay re-dial failed after the session cap: ${
|
|
284
284
|
err instanceof Error ? err.message : String(err)
|
|
285
285
|
}`,
|
|
286
286
|
});
|
|
@@ -304,7 +304,7 @@ export class CadetManagedRealtimeTranscriber implements StreamingTranscriber {
|
|
|
304
304
|
} catch (err) {
|
|
305
305
|
log.warn(
|
|
306
306
|
{ error: err },
|
|
307
|
-
"Listener error in Cadet
|
|
307
|
+
"Listener error in Cadet Cloud realtime adapter",
|
|
308
308
|
);
|
|
309
309
|
}
|
|
310
310
|
}
|
|
@@ -1,52 +1,50 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Cadet
|
|
2
|
+
* Cadet Cloud batch STT: transcription through the cloud's managed
|
|
3
3
|
* speech endpoint (Cadet-held Deepgram key, billed to Cadet credits). No
|
|
4
|
-
* provider API key exists on this machine — availability is the
|
|
4
|
+
* provider API key exists on this machine — availability is the cloud
|
|
5
5
|
* connection itself.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
|
+
type CloudSpeechResult,
|
|
9
10
|
managedSpeechAvailable,
|
|
10
|
-
type ManagedSpeechResult,
|
|
11
11
|
managedSpeechTranscribe,
|
|
12
|
-
} from "../../
|
|
12
|
+
} from "../../cloud/cloud-speech.js";
|
|
13
13
|
import {
|
|
14
14
|
SttError,
|
|
15
15
|
type SttErrorCategory,
|
|
16
16
|
type SttTranscribeResult,
|
|
17
17
|
} from "../../stt/types.js";
|
|
18
18
|
|
|
19
|
-
type
|
|
19
|
+
type CloudSpeechFailure = Extract<CloudSpeechResult<never>, { ok: false }>;
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
|
-
* Whether
|
|
22
|
+
* Whether cloud speech can be used at all: a cloud connection with a
|
|
23
23
|
* platform assistant ID. The credential-store lookup used for API-key
|
|
24
24
|
* providers does not apply to `cadet`.
|
|
25
25
|
*/
|
|
26
|
-
export async function
|
|
26
|
+
export async function cadetCloudSpeechAvailable(): Promise<boolean> {
|
|
27
27
|
return managedSpeechAvailable();
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
|
-
* Map a
|
|
31
|
+
* Map a cloud-speech failure onto the normalized STT error categories.
|
|
32
32
|
*
|
|
33
33
|
* `insufficient_balance` gets a user-actionable message — the fix is topping
|
|
34
34
|
* up Cadet credits, not editing provider config.
|
|
35
35
|
*
|
|
36
|
-
*
|
|
36
|
+
* Cloud speech has no provider API key on this machine, so the BYOK "check
|
|
37
37
|
* your API key" rewrite never applies. A failure is flagged `userFacing` —
|
|
38
38
|
* surfaced verbatim by `describeSttFailure` — when it carries actionable
|
|
39
|
-
* remediation: a
|
|
40
|
-
* (`insufficient_balance`), or the
|
|
39
|
+
* remediation: a cloud reconnect (`unavailable`), a credit top-up
|
|
40
|
+
* (`insufficient_balance`), or the cloud's own `detail` message. A failure
|
|
41
41
|
* that fell back to a bare HTTP status (no `detail`) is left non-user-facing so
|
|
42
42
|
* `describeSttFailure` emits friendly category copy instead of leaking the raw
|
|
43
43
|
* status — except a bare auth status (401/403), which would be rewritten to the
|
|
44
44
|
* wrong BYOK "check your API key" guidance, so it gets its own sanitized
|
|
45
|
-
*
|
|
45
|
+
* cloud-connection message.
|
|
46
46
|
*/
|
|
47
|
-
export function
|
|
48
|
-
failure: ManagedSpeechFailure,
|
|
49
|
-
): SttError {
|
|
47
|
+
export function sttErrorFromCloudSpeech(failure: CloudSpeechFailure): SttError {
|
|
50
48
|
const hasDetail = failure.detail !== undefined;
|
|
51
49
|
const userFacing =
|
|
52
50
|
failure.kind === "unavailable" ||
|
|
@@ -70,12 +68,12 @@ export function sttErrorFromManagedSpeech(
|
|
|
70
68
|
// A bare auth failure must stay user-facing so describeSttFailure skips
|
|
71
69
|
// its BYOK "check your API key" rewrite — managed STT has no local key.
|
|
72
70
|
// `managed()` would be non-user-facing here (see `userFacing` above), so
|
|
73
|
-
// construct the sanitized
|
|
71
|
+
// construct the sanitized cloud-connection message directly.
|
|
74
72
|
return hasDetail
|
|
75
73
|
? managed("auth", failure.message)
|
|
76
74
|
: new SttError(
|
|
77
75
|
"auth",
|
|
78
|
-
"Cadet couldn't authenticate with the
|
|
76
|
+
"Cadet couldn't authenticate with the cloud while transcribing — reconnect your Cadet account, then retry.",
|
|
79
77
|
{ userFacing: true },
|
|
80
78
|
);
|
|
81
79
|
case 429:
|
|
@@ -88,10 +86,10 @@ export function sttErrorFromManagedSpeech(
|
|
|
88
86
|
}
|
|
89
87
|
|
|
90
88
|
/**
|
|
91
|
-
* Transcribe a complete audio buffer via the
|
|
89
|
+
* Transcribe a complete audio buffer via the cloud. Throws {@link SttError}
|
|
92
90
|
* on failure (already normalized — `normalizeSttError` passes it through).
|
|
93
91
|
*/
|
|
94
|
-
export async function
|
|
92
|
+
export async function cadetCloudTranscribe(
|
|
95
93
|
audio: Buffer,
|
|
96
94
|
mimeType: string,
|
|
97
95
|
signal?: AbortSignal,
|
|
@@ -104,7 +102,7 @@ export async function cadetManagedTranscribe(
|
|
|
104
102
|
language,
|
|
105
103
|
});
|
|
106
104
|
if (!result.ok) {
|
|
107
|
-
throw
|
|
105
|
+
throw sttErrorFromCloudSpeech(result);
|
|
108
106
|
}
|
|
109
107
|
return { text: result.value.text };
|
|
110
108
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shared plumbing for dialing the GATEWAY's
|
|
2
|
+
* Shared plumbing for dialing the GATEWAY's cloud speech relay
|
|
3
3
|
* (`/v1/speech/{stt,tts}/stream`): connection resolution, and mapping the
|
|
4
4
|
* relay's error contract onto SttError categories.
|
|
5
5
|
*
|
|
@@ -71,7 +71,7 @@ export async function resolveSpeechRelayConnection(): Promise<SpeechRelayConnect
|
|
|
71
71
|
} catch (err) {
|
|
72
72
|
log.warn(
|
|
73
73
|
{ error: err instanceof Error ? err.message : String(err) },
|
|
74
|
-
"
|
|
74
|
+
"Cloud speech relay unavailable: cannot mint a gateway service token",
|
|
75
75
|
);
|
|
76
76
|
return null;
|
|
77
77
|
}
|
|
@@ -110,30 +110,30 @@ export function mapTunnelError(error: TunnelErrorInfo): {
|
|
|
110
110
|
return {
|
|
111
111
|
category: "auth",
|
|
112
112
|
message:
|
|
113
|
-
"
|
|
113
|
+
"Cloud speech needs a working Cadet Cloud connection — reconnect with 'assistant cloud connect'.",
|
|
114
114
|
};
|
|
115
115
|
case "invalid_token":
|
|
116
116
|
return {
|
|
117
117
|
category: "auth",
|
|
118
118
|
message:
|
|
119
|
-
"The assistant's
|
|
119
|
+
"The assistant's cloud-speech session was rejected by its gateway — the services may be out of sync; restart the assistant.",
|
|
120
120
|
};
|
|
121
121
|
case "insufficient_balance":
|
|
122
122
|
return {
|
|
123
123
|
category: "provider-error",
|
|
124
124
|
message:
|
|
125
|
-
"
|
|
125
|
+
"Cloud speech is paused: your Cadet organization is out of credits. Top up credits to continue.",
|
|
126
126
|
};
|
|
127
127
|
case "provider_unreachable":
|
|
128
128
|
case "upstream_error":
|
|
129
129
|
return {
|
|
130
130
|
category: "provider-error",
|
|
131
|
-
message: `
|
|
131
|
+
message: `Cloud speech relay could not reach the speech provider (${error.code}).`,
|
|
132
132
|
};
|
|
133
133
|
default:
|
|
134
134
|
return {
|
|
135
135
|
category: "provider-error",
|
|
136
|
-
message: `
|
|
136
|
+
message: `Cloud speech relay error: ${error.code}${
|
|
137
137
|
error.detail ? ` — ${error.detail}` : ""
|
|
138
138
|
}`,
|
|
139
139
|
};
|
|
@@ -307,7 +307,7 @@ const EOT_TIMEOUT_MS_RANGE = { min: 500, max: 60_000 } as const;
|
|
|
307
307
|
export interface FluxQueryParamOptions {
|
|
308
308
|
/**
|
|
309
309
|
* Flux model to run, e.g. `"flux-general-en"`. Required when dialing
|
|
310
|
-
* Deepgram directly. Omitted on the
|
|
310
|
+
* Deepgram directly. Omitted on the cloud relay, which derives the model
|
|
311
311
|
* from the spoken language and prices it before dialing, and rejects a
|
|
312
312
|
* client-sent one.
|
|
313
313
|
*/
|
|
@@ -392,9 +392,9 @@ const FLUX_CODE_SWITCHING = "multi";
|
|
|
392
392
|
/**
|
|
393
393
|
* The model and optional hint a spoken language selects.
|
|
394
394
|
*
|
|
395
|
-
* Deliberately the same mapping the
|
|
395
|
+
* Deliberately the same mapping the cloud relay applies server-side, so a
|
|
396
396
|
* language means the same thing whether Flux is reached with your own key or
|
|
397
|
-
* through the
|
|
397
|
+
* through the cloud. Without it a BYOK session pins the English model and
|
|
398
398
|
* returns English-sounding nonsense for every other language, which is
|
|
399
399
|
* invisible from the transcript alone.
|
|
400
400
|
*
|
|
@@ -117,7 +117,7 @@ export interface DeepgramFluxRealtimeOptions {
|
|
|
117
117
|
/** Inactivity timeout in milliseconds. Default: 30_000. */
|
|
118
118
|
inactivityTimeoutMs?: number;
|
|
119
119
|
/**
|
|
120
|
-
* WebSocket origin to dial. Defaults to Deepgram's own. The
|
|
120
|
+
* WebSocket origin to dial. Defaults to Deepgram's own. The cloud relay
|
|
121
121
|
* points this at the gateway, which forwards to tunnel.
|
|
122
122
|
*/
|
|
123
123
|
baseUrl?: string;
|
|
@@ -130,7 +130,7 @@ export interface DeepgramFluxRealtimeOptions {
|
|
|
130
130
|
*/
|
|
131
131
|
queryAuth?: boolean;
|
|
132
132
|
/**
|
|
133
|
-
* Omit `model` from the query. The
|
|
133
|
+
* Omit `model` from the query. The cloud relay derives the Flux model
|
|
134
134
|
* from the spoken language and prices it before dialing, so it rejects a
|
|
135
135
|
* client-selected one.
|
|
136
136
|
*/
|
|
@@ -144,7 +144,7 @@ export interface DeepgramFluxRealtimeOptions {
|
|
|
144
144
|
/**
|
|
145
145
|
* Spoken language, forwarded to the relay so it can select the Flux model
|
|
146
146
|
* and language hint. Deepgram's own endpoint takes no `language`, so this
|
|
147
|
-
* is only sent when set, which is the
|
|
147
|
+
* is only sent when set, which is the cloud path.
|
|
148
148
|
*/
|
|
149
149
|
language?: string;
|
|
150
150
|
/**
|
|
@@ -737,7 +737,7 @@ export class DeepgramFluxRealtimeTranscriber implements StreamingTranscriber {
|
|
|
737
737
|
*/
|
|
738
738
|
private buildWebSocketUrl(): string {
|
|
739
739
|
// Dialing Deepgram directly means choosing the model here. The relay
|
|
740
|
-
// derives it from the language instead, which is why the
|
|
740
|
+
// derives it from the language instead, which is why the cloud path
|
|
741
741
|
// sends neither.
|
|
742
742
|
const selection = this.omitModelParam
|
|
743
743
|
? null
|