@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
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Behavioral parity tests for the email CLI commands.
|
|
3
3
|
*
|
|
4
4
|
* Exercises the full IPC round-trip using a real AssistantIpcServer with a
|
|
5
|
-
* mocked
|
|
6
|
-
* - sends the correct HTTP request to the
|
|
5
|
+
* mocked CadetCloudClient. Validates that each email subcommand:
|
|
6
|
+
* - sends the correct HTTP request to the cloud API
|
|
7
7
|
* - surfaces success responses to the CLI caller
|
|
8
8
|
* - surfaces platform errors to the CLI caller
|
|
9
9
|
*/
|
|
@@ -20,7 +20,7 @@ import { runAssistantCommandFull } from "../../cli/__tests__/run-assistant-comma
|
|
|
20
20
|
import { AssistantIpcServer } from "../assistant-server.js";
|
|
21
21
|
|
|
22
22
|
// ---------------------------------------------------------------------------
|
|
23
|
-
// Mock state — set up a controllable
|
|
23
|
+
// Mock state — set up a controllable CadetCloudClient at module boundary
|
|
24
24
|
// ---------------------------------------------------------------------------
|
|
25
25
|
|
|
26
26
|
let mockFetchFn: (
|
|
@@ -31,10 +31,10 @@ let mockFetchFn: (
|
|
|
31
31
|
|
|
32
32
|
const mockAssistantId = "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee";
|
|
33
33
|
|
|
34
|
-
mock.module("../../
|
|
35
|
-
|
|
34
|
+
mock.module("../../cloud/client.js", () => ({
|
|
35
|
+
CadetCloudClient: {
|
|
36
36
|
create: async () => ({
|
|
37
|
-
|
|
37
|
+
cloudAssistantId: mockAssistantId,
|
|
38
38
|
fetch: (path: string, init?: RequestInit) => mockFetchFn(path, init),
|
|
39
39
|
}),
|
|
40
40
|
},
|
|
@@ -361,7 +361,7 @@ test("send --json returns delivery_id", async () => {
|
|
|
361
361
|
expect(process.exitCode).toBe(0);
|
|
362
362
|
});
|
|
363
363
|
|
|
364
|
-
test("send --attach reads the file and forwards base64 attachments to the
|
|
364
|
+
test("send --attach reads the file and forwards base64 attachments to the cloud", async () => {
|
|
365
365
|
const dir = mkdtempSync(join(tmpdir(), "email-attach-"));
|
|
366
366
|
const filePath = join(dir, "report.pdf");
|
|
367
367
|
const fileBytes = "pdf-bytes-here";
|
|
@@ -413,7 +413,7 @@ test("send --attach reads the file and forwards base64 attachments to the platfo
|
|
|
413
413
|
}
|
|
414
414
|
});
|
|
415
415
|
|
|
416
|
-
test("send with a missing --attach path fails without calling the
|
|
416
|
+
test("send with a missing --attach path fails without calling the cloud", async () => {
|
|
417
417
|
let sendCalled = false;
|
|
418
418
|
mockFetchFn = async (path) => {
|
|
419
419
|
if (path.includes("/email-addresses/")) {
|
|
@@ -8,11 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { afterEach, describe, expect, test } from "bun:test";
|
|
10
10
|
|
|
11
|
-
import {
|
|
12
|
-
getMockPersistentCallCount,
|
|
13
|
-
mockGatewayIpc,
|
|
14
|
-
resetMockGatewayIpc,
|
|
15
|
-
} from "../__tests__/mock-gateway-ipc.js";
|
|
11
|
+
import { mockIpc } from "../__tests__/requests-mock.js";
|
|
16
12
|
import { ServiceUnavailableError } from "../runtime/routes/errors.js";
|
|
17
13
|
import {
|
|
18
14
|
ipcCall,
|
|
@@ -25,7 +21,6 @@ import {
|
|
|
25
21
|
|
|
26
22
|
afterEach(() => {
|
|
27
23
|
resetPersistentClient();
|
|
28
|
-
resetMockGatewayIpc();
|
|
29
24
|
});
|
|
30
25
|
|
|
31
26
|
// ---------------------------------------------------------------------------
|
|
@@ -34,22 +29,24 @@ afterEach(() => {
|
|
|
34
29
|
|
|
35
30
|
describe("ipcCall", () => {
|
|
36
31
|
test("delegates to package ipcCall and returns result", async () => {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
});
|
|
32
|
+
const gateway = await mockIpc("gateway");
|
|
33
|
+
gateway.setDefaults({ test_method: { key: "value" } });
|
|
40
34
|
|
|
41
35
|
const result = await ipcCall("test_method");
|
|
42
36
|
expect(result).toEqual({ key: "value" });
|
|
43
37
|
});
|
|
44
38
|
|
|
45
39
|
test("returns undefined when mock simulates error", async () => {
|
|
46
|
-
|
|
40
|
+
const gateway = await mockIpc("gateway");
|
|
41
|
+
gateway.failConnect();
|
|
47
42
|
|
|
48
43
|
const result = await ipcCall("test_method");
|
|
49
44
|
expect(result).toBeUndefined();
|
|
50
45
|
});
|
|
51
46
|
|
|
52
47
|
test("returns undefined for unconfigured methods", async () => {
|
|
48
|
+
await mockIpc("gateway");
|
|
49
|
+
|
|
53
50
|
const result = await ipcCall("unconfigured_method");
|
|
54
51
|
expect(result).toBeUndefined();
|
|
55
52
|
});
|
|
@@ -61,16 +58,16 @@ describe("ipcCall", () => {
|
|
|
61
58
|
|
|
62
59
|
describe("ipcCallPersistent", () => {
|
|
63
60
|
test("returns result from persistent client", async () => {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
});
|
|
61
|
+
const gateway = await mockIpc("gateway");
|
|
62
|
+
gateway.setDefaults({ persistent_test: "persistent-result" });
|
|
67
63
|
|
|
68
64
|
const result = await ipcCallPersistent("persistent_test");
|
|
69
65
|
expect(result).toBe("persistent-result");
|
|
70
66
|
});
|
|
71
67
|
|
|
72
68
|
test("maps a missing gateway socket to ServiceUnavailableError", async () => {
|
|
73
|
-
|
|
69
|
+
const gateway = await mockIpc("gateway");
|
|
70
|
+
gateway.failConnect();
|
|
74
71
|
|
|
75
72
|
await expect(ipcCallPersistent("any_method")).rejects.toBeInstanceOf(
|
|
76
73
|
ServiceUnavailableError,
|
|
@@ -92,21 +89,23 @@ describe("ipcCallPersistent", () => {
|
|
|
92
89
|
|
|
93
90
|
describe("ipcGetFeatureFlags", () => {
|
|
94
91
|
test("parses boolean flag values from IPC response", async () => {
|
|
95
|
-
|
|
92
|
+
const gateway = await mockIpc("gateway");
|
|
93
|
+
gateway.setDefaults({
|
|
94
|
+
get_feature_flags: { "flag-a": true, "flag-b": false },
|
|
95
|
+
});
|
|
96
96
|
|
|
97
97
|
const flags = await ipcGetFeatureFlags();
|
|
98
98
|
expect(flags).toEqual({ "flag-a": true, "flag-b": false });
|
|
99
99
|
});
|
|
100
100
|
|
|
101
101
|
test("accepts boolean and string values, filters other types from response", async () => {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
},
|
|
102
|
+
const gateway = await mockIpc("gateway");
|
|
103
|
+
gateway.setDefaults({
|
|
104
|
+
get_feature_flags: {
|
|
105
|
+
valid: true,
|
|
106
|
+
number: 42,
|
|
107
|
+
string: "yes",
|
|
108
|
+
nested: { deep: true },
|
|
110
109
|
},
|
|
111
110
|
});
|
|
112
111
|
|
|
@@ -115,25 +114,26 @@ describe("ipcGetFeatureFlags", () => {
|
|
|
115
114
|
});
|
|
116
115
|
|
|
117
116
|
test("returns empty record when IPC returns undefined", async () => {
|
|
118
|
-
// Explicitly suppress the
|
|
119
|
-
// (which exists to short-circuit `initFeatureFlagOverrides()`'s
|
|
120
|
-
// loop) so this test exercises the underlying-undefined path.
|
|
121
|
-
|
|
117
|
+
// Explicitly suppress the transport's default `get_feature_flags`
|
|
118
|
+
// sentinel (which exists to short-circuit `initFeatureFlagOverrides()`'s
|
|
119
|
+
// retry loop) so this test exercises the underlying-undefined path.
|
|
120
|
+
const gateway = await mockIpc("gateway");
|
|
121
|
+
gateway.setDefaults({ get_feature_flags: undefined });
|
|
122
122
|
const flags = await ipcGetFeatureFlags();
|
|
123
123
|
expect(flags).toEqual({});
|
|
124
124
|
});
|
|
125
125
|
|
|
126
126
|
test("returns empty record when IPC returns array", async () => {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
});
|
|
127
|
+
const gateway = await mockIpc("gateway");
|
|
128
|
+
gateway.setDefaults({ get_feature_flags: [true, false] });
|
|
130
129
|
|
|
131
130
|
const flags = await ipcGetFeatureFlags();
|
|
132
131
|
expect(flags).toEqual({});
|
|
133
132
|
});
|
|
134
133
|
|
|
135
134
|
test("returns empty record on error", async () => {
|
|
136
|
-
|
|
135
|
+
const gateway = await mockIpc("gateway");
|
|
136
|
+
gateway.failConnect();
|
|
137
137
|
|
|
138
138
|
const flags = await ipcGetFeatureFlags();
|
|
139
139
|
expect(flags).toEqual({});
|
|
@@ -142,12 +142,11 @@ describe("ipcGetFeatureFlags", () => {
|
|
|
142
142
|
|
|
143
143
|
describe("ipcGetTunnelStatus", () => {
|
|
144
144
|
test("parses the shared Tunnel status response", async () => {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
},
|
|
145
|
+
const gateway = await mockIpc("gateway");
|
|
146
|
+
gateway.setDefaults({
|
|
147
|
+
get_tunnel_status: {
|
|
148
|
+
connected: true,
|
|
149
|
+
publicUrl: "https://example.test",
|
|
151
150
|
},
|
|
152
151
|
});
|
|
153
152
|
|
|
@@ -158,10 +157,9 @@ describe("ipcGetTunnelStatus", () => {
|
|
|
158
157
|
});
|
|
159
158
|
|
|
160
159
|
test("keeps connected status when publicUrl is malformed", async () => {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
},
|
|
160
|
+
const gateway = await mockIpc("gateway");
|
|
161
|
+
gateway.setDefaults({
|
|
162
|
+
get_tunnel_status: { connected: false, publicUrl: 42 },
|
|
165
163
|
});
|
|
166
164
|
|
|
167
165
|
expect(await ipcGetTunnelStatus()).toEqual({
|
|
@@ -171,9 +169,8 @@ describe("ipcGetTunnelStatus", () => {
|
|
|
171
169
|
});
|
|
172
170
|
|
|
173
171
|
test("returns null when connected is missing or malformed", async () => {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
});
|
|
172
|
+
const gateway = await mockIpc("gateway");
|
|
173
|
+
gateway.setDefaults({ get_tunnel_status: { connected: "yes" } });
|
|
177
174
|
|
|
178
175
|
expect(await ipcGetTunnelStatus()).toBeNull();
|
|
179
176
|
});
|
|
@@ -193,38 +190,37 @@ describe("ipcClassifyRisk retry", () => {
|
|
|
193
190
|
const emptyParams = {} as unknown as Parameters<typeof ipcClassifyRisk>[0];
|
|
194
191
|
|
|
195
192
|
test("retries a transient failure and then succeeds", async () => {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
});
|
|
193
|
+
const gateway = await mockIpc("gateway");
|
|
194
|
+
gateway.failFirstN(1);
|
|
195
|
+
gateway.setDefaults({ classify_risk: CLASSIFY_OK });
|
|
200
196
|
|
|
201
197
|
const result = await ipcClassifyRisk(emptyParams);
|
|
202
198
|
expect(result?.risk).toBe("low");
|
|
203
|
-
expect(
|
|
199
|
+
expect(gateway.persistentCallCount("classify_risk")).toBe(2);
|
|
204
200
|
});
|
|
205
201
|
|
|
206
202
|
test("returns undefined after exhausting retries (3 attempts)", async () => {
|
|
207
|
-
|
|
203
|
+
const gateway = await mockIpc("gateway");
|
|
204
|
+
gateway.failConnect();
|
|
208
205
|
|
|
209
206
|
const result = await ipcClassifyRisk(emptyParams);
|
|
210
207
|
expect(result).toBeUndefined();
|
|
211
|
-
expect(
|
|
208
|
+
expect(gateway.persistentCallCount("classify_risk")).toBe(3);
|
|
212
209
|
});
|
|
213
210
|
|
|
214
211
|
test("does NOT retry a structured IpcCallError (fails after 1 attempt)", async () => {
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
results: { classify_risk: CLASSIFY_OK },
|
|
219
|
-
});
|
|
212
|
+
const gateway = await mockIpc("gateway");
|
|
213
|
+
gateway.failFirstN(3, { ipcCallError: true });
|
|
214
|
+
gateway.setDefaults({ classify_risk: CLASSIFY_OK });
|
|
220
215
|
|
|
221
216
|
const result = await ipcClassifyRisk(emptyParams);
|
|
222
217
|
expect(result).toBeUndefined();
|
|
223
|
-
expect(
|
|
218
|
+
expect(gateway.persistentCallCount("classify_risk")).toBe(1);
|
|
224
219
|
});
|
|
225
220
|
|
|
226
221
|
test("stops retrying once the signal is aborted", async () => {
|
|
227
|
-
|
|
222
|
+
const gateway = await mockIpc("gateway");
|
|
223
|
+
gateway.failConnect();
|
|
228
224
|
const controller = new AbortController();
|
|
229
225
|
controller.abort();
|
|
230
226
|
|
|
@@ -232,6 +228,6 @@ describe("ipcClassifyRisk retry", () => {
|
|
|
232
228
|
expect(result).toBeUndefined();
|
|
233
229
|
// An already-aborted signal short-circuits the retry loop after the first
|
|
234
230
|
// failed attempt rather than exhausting all three.
|
|
235
|
-
expect(
|
|
231
|
+
expect(gateway.persistentCallCount("classify_risk")).toBe(1);
|
|
236
232
|
});
|
|
237
233
|
});
|
|
@@ -12,9 +12,9 @@ const log = getLogger("gateway-flag-listener");
|
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Refresh the flag-overrides cache from the gateway, then reconcile the
|
|
15
|
-
* flag-gated
|
|
15
|
+
* flag-gated cloud profile (OS Beta). Both the `feature_flags_changed` event
|
|
16
16
|
* and a reconnect refresh the cache; `reconcileFlagGatedProfiles` then adds or
|
|
17
|
-
* removes the
|
|
17
|
+
* removes the cloud profile and, when it reports a change, a `config_changed`
|
|
18
18
|
* broadcast refreshes the profile picker on clients. The reconcile runs only
|
|
19
19
|
* when the refresh confirmed flags loaded from the gateway — a transient IPC
|
|
20
20
|
* failure leaves the cache unset and resolves `os-beta` to its registry default
|
|
@@ -109,7 +109,7 @@ function connectToGateway(): void {
|
|
|
109
109
|
currentBackoffMs = INITIAL_BACKOFF_MS;
|
|
110
110
|
socket = conn;
|
|
111
111
|
// A reconnect may have missed a flag flip while disconnected, so reconcile
|
|
112
|
-
// the
|
|
112
|
+
// the cloud profile too — not just the cache.
|
|
113
113
|
refreshFlagsAndReconcileProfiles("reconnect");
|
|
114
114
|
});
|
|
115
115
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* against the assistant's SQLite database. Migrations (m0002, m0010, m0014,
|
|
4
4
|
* et al.) need raw read/drop access to legacy assistant tables on first boot
|
|
5
5
|
* of upgraded installs, and cross-container SQLite file access corrupts the
|
|
6
|
-
* DB on
|
|
6
|
+
* DB on cloud pods (fcntl locks are not shared across mount namespaces) —
|
|
7
7
|
* so they go through this route.
|
|
8
8
|
*
|
|
9
9
|
* This route is intentionally NOT in the shared ROUTES array — it is a
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Tests for the Live Activity phase reporter.
|
|
3
3
|
*
|
|
4
|
-
* The dispatch itself reaches the
|
|
4
|
+
* The dispatch itself reaches the cloud, so these cover the decisions made
|
|
5
5
|
* before it: which frames move the phase, which repeats are suppressed, and
|
|
6
6
|
* that ending is latched. The suppression is the load-bearing part —
|
|
7
7
|
* `tts_audio` arrives many times a second and ActivityKit silently drops
|
|
@@ -258,7 +258,7 @@ describe("LiveActivityReporter", () => {
|
|
|
258
258
|
});
|
|
259
259
|
});
|
|
260
260
|
|
|
261
|
-
// A session can end more than one way and the
|
|
261
|
+
// A session can end more than one way and the cloud deletes the
|
|
262
262
|
// registration on the first, so a second end would push at an activity that
|
|
263
263
|
// is already gone.
|
|
264
264
|
test("ending twice pushes once", async () => {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Live voice on
|
|
2
|
+
* Live voice on cloud speech without a config write.
|
|
3
3
|
*
|
|
4
4
|
* `/v1/live-voice` validates guardian identity only — it does not enforce the
|
|
5
5
|
* caller's `settings.write` scope — so the WebSocket transport must never
|
|
6
6
|
* persist `services.stt/tts.provider`. Instead every live-voice leg resolves
|
|
7
|
-
* the EFFECTIVE providers: while
|
|
7
|
+
* the EFFECTIVE providers: while cloud speech is available, a configured
|
|
8
8
|
* BYOK provider whose credential does not resolve is served by `"cadet"`.
|
|
9
9
|
* These tests pin both halves of that contract — the readiness verdict and
|
|
10
10
|
* the runtime legs agree, and `config.json` is byte-identical afterwards.
|
|
@@ -39,13 +39,13 @@ const realSttResolveModule = {
|
|
|
39
39
|
const realSecureKeysModule = {
|
|
40
40
|
...(await import("../../security/secure-keys.js")),
|
|
41
41
|
};
|
|
42
|
-
const
|
|
43
|
-
...(await import("../../
|
|
42
|
+
const realCloudSpeechModule = {
|
|
43
|
+
...(await import("../../cloud/cloud-speech.js")),
|
|
44
44
|
};
|
|
45
45
|
|
|
46
46
|
// -- Mutable stub state -------------------------------------------------------
|
|
47
47
|
|
|
48
|
-
/** Whether the
|
|
48
|
+
/** Whether the cloud connection can serve cloud speech. */
|
|
49
49
|
let managedAvailable = false;
|
|
50
50
|
/** Credential-store keys that resolve to a value. */
|
|
51
51
|
let providerKeys: Record<string, string>;
|
|
@@ -89,16 +89,16 @@ mock.module("../../security/secure-keys.js", () => ({
|
|
|
89
89
|
: realSecureKeysModule.getSecureKeyAsync(account),
|
|
90
90
|
}));
|
|
91
91
|
|
|
92
|
-
mock.module("../../
|
|
93
|
-
...
|
|
92
|
+
mock.module("../../cloud/cloud-speech.js", () => ({
|
|
93
|
+
...realCloudSpeechModule,
|
|
94
94
|
managedSpeechAvailable: async () =>
|
|
95
95
|
fallbackMocksActive
|
|
96
96
|
? managedAvailable
|
|
97
|
-
:
|
|
97
|
+
: realCloudSpeechModule.managedSpeechAvailable(),
|
|
98
98
|
}));
|
|
99
99
|
|
|
100
|
+
import { resolveEffectiveSpeechProviders } from "../../config/cloud-speech-defaults.js";
|
|
100
101
|
import { getConfig, invalidateConfigCache } from "../../config/loader.js";
|
|
101
|
-
import { resolveEffectiveSpeechProviders } from "../../config/managed-speech-defaults.js";
|
|
102
102
|
import {
|
|
103
103
|
_resetTtsProviderOverridesForTests,
|
|
104
104
|
_setTtsProviderForTests,
|
|
@@ -134,7 +134,7 @@ function readConfigFile(): string {
|
|
|
134
134
|
return readFileSync(CONFIG_PATH, "utf8");
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
-
/** A streaming TTS adapter standing in for the
|
|
137
|
+
/** A streaming TTS adapter standing in for the cloud `cadet` provider. */
|
|
138
138
|
function registerManagedTtsProvider(): TtsProvider {
|
|
139
139
|
const provider: TtsProvider = {
|
|
140
140
|
id: "cadet",
|
|
@@ -173,8 +173,8 @@ beforeEach(() => {
|
|
|
173
173
|
requestedSttProviders = [];
|
|
174
174
|
});
|
|
175
175
|
|
|
176
|
-
describe("live voice on
|
|
177
|
-
test("unkeyed BYOK TTS resolves the
|
|
176
|
+
describe("live voice on cloud speech", () => {
|
|
177
|
+
test("unkeyed BYOK TTS resolves the cloud provider and reports ready", async () => {
|
|
178
178
|
managedAvailable = true;
|
|
179
179
|
providerKeys = { deepgram: "test-key" };
|
|
180
180
|
const configBefore = readConfigFile();
|
|
@@ -188,7 +188,7 @@ describe("live voice on managed speech", () => {
|
|
|
188
188
|
expect(readConfigFile()).toBe(configBefore);
|
|
189
189
|
});
|
|
190
190
|
|
|
191
|
-
test("synthesis runs on the
|
|
191
|
+
test("synthesis runs on the cloud provider while the config still names the BYOK one", async () => {
|
|
192
192
|
managedAvailable = true;
|
|
193
193
|
providerKeys = { deepgram: "test-key" };
|
|
194
194
|
registerManagedTtsProvider();
|
|
@@ -209,7 +209,7 @@ describe("live voice on managed speech", () => {
|
|
|
209
209
|
expect(readConfigFile()).toBe(configBefore);
|
|
210
210
|
});
|
|
211
211
|
|
|
212
|
-
test("unkeyed BYOK STT resolves the
|
|
212
|
+
test("unkeyed BYOK STT resolves the cloud provider and reports ready", async () => {
|
|
213
213
|
managedAvailable = true;
|
|
214
214
|
providerKeys = { elevenlabs: "test-key" };
|
|
215
215
|
const configBefore = readConfigFile();
|
|
@@ -228,7 +228,7 @@ describe("live voice on managed speech", () => {
|
|
|
228
228
|
expect(readConfigFile()).toBe(configBefore);
|
|
229
229
|
});
|
|
230
230
|
|
|
231
|
-
test("
|
|
231
|
+
test("cloud speech unavailable keeps the configured providers and reports not-ready", async () => {
|
|
232
232
|
managedAvailable = false;
|
|
233
233
|
const configBefore = readConfigFile();
|
|
234
234
|
|
|
@@ -40,8 +40,8 @@ const realSttResolveModule = {
|
|
|
40
40
|
const realSecureKeysModule = {
|
|
41
41
|
...(await import("../../security/secure-keys.js")),
|
|
42
42
|
};
|
|
43
|
-
const
|
|
44
|
-
...(await import("../../
|
|
43
|
+
const realCloudSpeechModule = {
|
|
44
|
+
...(await import("../../cloud/cloud-speech.js")),
|
|
45
45
|
};
|
|
46
46
|
|
|
47
47
|
// -- Mutable stub state --------------------------------------------------------
|
|
@@ -76,12 +76,12 @@ mock.module("../../security/secure-keys.js", () => ({
|
|
|
76
76
|
|
|
77
77
|
let managedAvailable = false;
|
|
78
78
|
|
|
79
|
-
mock.module("../../
|
|
80
|
-
...
|
|
79
|
+
mock.module("../../cloud/cloud-speech.js", () => ({
|
|
80
|
+
...realCloudSpeechModule,
|
|
81
81
|
managedSpeechAvailable: async () =>
|
|
82
82
|
preflightMocksActive
|
|
83
83
|
? managedAvailable
|
|
84
|
-
:
|
|
84
|
+
: realCloudSpeechModule.managedSpeechAvailable(),
|
|
85
85
|
}));
|
|
86
86
|
|
|
87
87
|
import { setConfig } from "../../__tests__/helpers/set-config.js";
|
|
@@ -295,7 +295,7 @@ describe("resolveLiveVoiceCredentialReadiness — managed (cadet) TTS", () => {
|
|
|
295
295
|
expect(readiness).toEqual({ status: "ready" });
|
|
296
296
|
});
|
|
297
297
|
|
|
298
|
-
test("cadet TTS without a
|
|
298
|
+
test("cadet TTS without a cloud connection → connection copy, not API-key copy", async () => {
|
|
299
299
|
ttsProvider = "cadet";
|
|
300
300
|
ttsProviders = {};
|
|
301
301
|
managedAvailable = false;
|
|
@@ -306,7 +306,7 @@ describe("resolveLiveVoiceCredentialReadiness — managed (cadet) TTS", () => {
|
|
|
306
306
|
kind: "tts",
|
|
307
307
|
providerId: "cadet",
|
|
308
308
|
reason:
|
|
309
|
-
'TTS provider "cadet" needs a Cadet Cloud connection for
|
|
309
|
+
'TTS provider "cadet" needs a Cadet Cloud connection for cloud speech',
|
|
310
310
|
},
|
|
311
311
|
]);
|
|
312
312
|
expect(readiness.userMessage).toContain("assistant cloud connect");
|
|
@@ -1593,7 +1593,7 @@ describe("LiveVoiceSession STT", () => {
|
|
|
1593
1593
|
});
|
|
1594
1594
|
|
|
1595
1595
|
test("the pin gate follows the dialed provider, not the configured one", async () => {
|
|
1596
|
-
// A BYOK gemini config without credentials silently dials the
|
|
1596
|
+
// A BYOK gemini config without credentials silently dials the cloud
|
|
1597
1597
|
// cadet transcriber, which DOES honor the pin; the gate must follow
|
|
1598
1598
|
// what was dialed, not what was configured.
|
|
1599
1599
|
const originalRaw = loadRawConfig();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Reports a live-voice session's phase to the
|
|
2
|
+
* Reports a live-voice session's phase to the cloud, which pushes it to the
|
|
3
3
|
* iOS Live Activity over APNs.
|
|
4
4
|
*
|
|
5
5
|
* ## Why the server reports a phase the client already knows
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* throw here would cost the conversation.
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
|
-
import {
|
|
30
|
+
import { CadetCloudClient } from "../cloud/client.js";
|
|
31
31
|
import { getLogger } from "../util/logger.js";
|
|
32
32
|
import type { LiveVoiceServerFramePayload } from "./protocol.js";
|
|
33
33
|
|
|
@@ -188,7 +188,7 @@ export class LiveActivityReporter {
|
|
|
188
188
|
* Retire the activity as the session ends.
|
|
189
189
|
*
|
|
190
190
|
* Latched, because a session can end more than one way — a clean hangup, a
|
|
191
|
-
* dropped socket, a process shutdown — and the
|
|
191
|
+
* dropped socket, a process shutdown — and the cloud deletes the
|
|
192
192
|
* registration on the first one. Sending a second would push at an activity
|
|
193
193
|
* that is already gone.
|
|
194
194
|
*/
|
|
@@ -234,7 +234,7 @@ export class LiveActivityReporter {
|
|
|
234
234
|
}
|
|
235
235
|
signal.addEventListener("abort", () => resolve(), { once: true });
|
|
236
236
|
});
|
|
237
|
-
// Race the whole operation, including
|
|
237
|
+
// Race the whole operation, including cloud-client and credential
|
|
238
238
|
// resolution. The same signal reaches `fetch`, so a timed-out operation
|
|
239
239
|
// that resolves credentials later cannot send its stale snapshot.
|
|
240
240
|
void Promise.race([
|
|
@@ -284,12 +284,12 @@ export class LiveActivityReporter {
|
|
|
284
284
|
signal: AbortSignal,
|
|
285
285
|
): Promise<void> {
|
|
286
286
|
try {
|
|
287
|
-
const client = await
|
|
288
|
-
if (!client?.
|
|
287
|
+
const client = await CadetCloudClient.create();
|
|
288
|
+
if (!client?.cloudAssistantId) {
|
|
289
289
|
return;
|
|
290
290
|
}
|
|
291
291
|
const path = `/v1/assistants/${encodeURIComponent(
|
|
292
|
-
client.
|
|
292
|
+
client.cloudAssistantId,
|
|
293
293
|
)}/live-activity/dispatch/`;
|
|
294
294
|
const response = await client.fetch(path, {
|
|
295
295
|
method: "POST",
|
|
@@ -21,8 +21,8 @@ import {
|
|
|
21
21
|
fishAudioReferenceIdConfigured,
|
|
22
22
|
ttsSecretResolves,
|
|
23
23
|
} from "../calls/telephony-tts-capability.js";
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
24
|
+
import { managedSpeechAvailable } from "../cloud/cloud-speech.js";
|
|
25
|
+
import { resolveEffectiveSpeechProviders } from "../config/cloud-speech-defaults.js";
|
|
26
26
|
import { getProviderEntry } from "../providers/speech-to-text/provider-catalog.js";
|
|
27
27
|
import {
|
|
28
28
|
resolveStreamingTranscriber,
|
|
@@ -144,7 +144,7 @@ async function resolveSttGap(
|
|
|
144
144
|
},
|
|
145
145
|
clause:
|
|
146
146
|
entry.credentialProvider === "cadet"
|
|
147
|
-
? `a Cadet Cloud connection for
|
|
147
|
+
? `a Cadet Cloud connection for cloud speech (run 'assistant cloud connect')`
|
|
148
148
|
: `an API key for the speech-to-text provider "${entry.id}"`,
|
|
149
149
|
};
|
|
150
150
|
}
|
|
@@ -197,7 +197,7 @@ async function resolveTtsGap(
|
|
|
197
197
|
};
|
|
198
198
|
}
|
|
199
199
|
|
|
200
|
-
//
|
|
200
|
+
// Cloud speech authenticates via the cloud connection — full
|
|
201
201
|
// availability (API key + assistant ID) is the credential, so the
|
|
202
202
|
// stored-secret loop below would pass half-connected states that
|
|
203
203
|
// synthesis rejects.
|
|
@@ -207,9 +207,9 @@ async function resolveTtsGap(
|
|
|
207
207
|
gap: {
|
|
208
208
|
kind: "tts",
|
|
209
209
|
providerId: entry.id,
|
|
210
|
-
reason: `TTS provider "${entry.id}" needs a Cadet Cloud connection for
|
|
210
|
+
reason: `TTS provider "${entry.id}" needs a Cadet Cloud connection for cloud speech`,
|
|
211
211
|
},
|
|
212
|
-
clause: `a Cadet Cloud connection for
|
|
212
|
+
clause: `a Cadet Cloud connection for cloud speech (run 'assistant cloud connect')`,
|
|
213
213
|
};
|
|
214
214
|
}
|
|
215
215
|
return null;
|
|
@@ -392,7 +392,7 @@ export interface LiveVoiceSessionOptions {
|
|
|
392
392
|
metricsClock?: VoiceMetricsClock;
|
|
393
393
|
/**
|
|
394
394
|
* Mirrors phase changes to the iOS Live Activity. Injectable so tests can
|
|
395
|
-
* assert what a session reports without reaching the
|
|
395
|
+
* assert what a session reports without reaching the cloud.
|
|
396
396
|
*/
|
|
397
397
|
liveActivityReporter?: LiveActivityReporter;
|
|
398
398
|
createTurnId?: () => string;
|
|
@@ -1223,7 +1223,7 @@ export class LiveVoiceSession implements LiveVoiceSessionContract {
|
|
|
1223
1223
|
// that can point at the screen. Cleared when the share ends.
|
|
1224
1224
|
private shareTargets: ShareTargetSnapshot | null = null;
|
|
1225
1225
|
/**
|
|
1226
|
-
* Mirrors phase changes to the iOS Live Activity through the
|
|
1226
|
+
* Mirrors phase changes to the iOS Live Activity through the cloud, for
|
|
1227
1227
|
* the case the client cannot cover: an app backgrounded long enough for iOS
|
|
1228
1228
|
* to suspend the web layer that would otherwise push them.
|
|
1229
1229
|
*/
|
|
@@ -8326,7 +8326,7 @@ async function defaultResolveStreamingTranscriber(
|
|
|
8326
8326
|
options: ResolveStreamingTranscriberOptions,
|
|
8327
8327
|
): Promise<StreamingTranscriber | null> {
|
|
8328
8328
|
const { resolveEffectiveSpeechProviders } =
|
|
8329
|
-
await import("../config/
|
|
8329
|
+
await import("../config/cloud-speech-defaults.js");
|
|
8330
8330
|
const { resolveStreamingTranscriber } =
|
|
8331
8331
|
await import("../providers/speech-to-text/resolve.js");
|
|
8332
8332
|
const { stt } = await resolveEffectiveSpeechProviders(undefined, {
|
|
@@ -221,7 +221,7 @@ async function resolveLiveVoiceStreamingTtsProvider(
|
|
|
221
221
|
): Promise<ResolvedStreamingTtsProvider> {
|
|
222
222
|
const config = configOverride ?? (await loadAssistantConfig());
|
|
223
223
|
const { resolveEffectiveSpeechProviders } =
|
|
224
|
-
await import("../config/
|
|
224
|
+
await import("../config/cloud-speech-defaults.js");
|
|
225
225
|
const { tts: effectiveProviderId } =
|
|
226
226
|
await resolveEffectiveSpeechProviders(config);
|
|
227
227
|
const { provider: providerId, providerConfig } = resolveTtsConfig(
|
|
@@ -24,7 +24,7 @@ const CLIENT_METADATA_URL = `${PUBLIC_BASE_URL}/oauth/client-metadata.json`;
|
|
|
24
24
|
let resolvedCallbackUrl = CALLBACK_URL;
|
|
25
25
|
let publicBaseUrl: string | undefined = PUBLIC_BASE_URL;
|
|
26
26
|
|
|
27
|
-
mock.module("../../inbound/
|
|
27
|
+
mock.module("../../inbound/cloud-callback-registration.js", () => ({
|
|
28
28
|
resolveCallbackUrl: async () => resolvedCallbackUrl,
|
|
29
29
|
}));
|
|
30
30
|
|
|
@@ -45,8 +45,8 @@ mock.module("../../daemon/identity-helpers.js", () => ({
|
|
|
45
45
|
getAssistantName: () => "Jarvis",
|
|
46
46
|
}));
|
|
47
47
|
|
|
48
|
-
import {
|
|
49
|
-
|
|
48
|
+
import { setCloudAssistantId } from "../../config/env.js";
|
|
49
|
+
setCloudAssistantId("019d6d4f-6dbd-779f-91d3-cb273b9429a5");
|
|
50
50
|
|
|
51
51
|
const { McpOAuthProvider } = await import("../mcp-oauth-provider.js");
|
|
52
52
|
|
|
@@ -247,7 +247,7 @@ describe("McpOAuthProvider client metadata", () => {
|
|
|
247
247
|
expect(provider.clientMetadataUrl).toBe(CLIENT_METADATA_URL);
|
|
248
248
|
});
|
|
249
249
|
|
|
250
|
-
test("preserves DCR fallback for a
|
|
250
|
+
test("preserves DCR fallback for a cloud-relayed callback", async () => {
|
|
251
251
|
const provider = newProvider();
|
|
252
252
|
|
|
253
253
|
await provider.startCallbackServer();
|