@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
|
@@ -42,7 +42,7 @@ describe("resolveTypesafeProvider", () => {
|
|
|
42
42
|
);
|
|
43
43
|
});
|
|
44
44
|
|
|
45
|
-
test("a
|
|
45
|
+
test("a cloud Jev profile resolves although it is configured as cadet", async () => {
|
|
46
46
|
configured = {
|
|
47
47
|
provider: stub("typesafe"),
|
|
48
48
|
configuredProviderName: "cadet",
|
package/src/providers/jev/ask.ts
CHANGED
|
@@ -39,9 +39,9 @@ export interface TypesafeNoulResult {
|
|
|
39
39
|
/**
|
|
40
40
|
* The call site's provider when it resolves to TypeSafe, else null. Judged
|
|
41
41
|
* on the dispatched adapter's name rather than the configured provider: a
|
|
42
|
-
*
|
|
42
|
+
* cloud profile is configured as `cadet` and only substitutes the
|
|
43
43
|
* TypeSafe upstream at dispatch, so the configured name alone would report
|
|
44
|
-
* the
|
|
44
|
+
* the cloud Jev profile as unavailable.
|
|
45
45
|
*/
|
|
46
46
|
export async function resolveTypesafeProvider(
|
|
47
47
|
callSite: LLMCallSite,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PLATFORM_PROVIDER_META } from "./
|
|
1
|
+
import { PLATFORM_PROVIDER_META } from "./cloud-proxy/constants.js";
|
|
2
2
|
|
|
3
3
|
export type LongContextMode =
|
|
4
4
|
| "native-model"
|
|
@@ -163,14 +163,14 @@ export interface ProviderCatalogEntry {
|
|
|
163
163
|
linkLabel: string;
|
|
164
164
|
};
|
|
165
165
|
/**
|
|
166
|
-
* Whether this provider supports the `platform` auth type (Cadet
|
|
167
|
-
* keys routed through the
|
|
166
|
+
* Whether this provider supports the `platform` auth type (Cadet Cloud
|
|
167
|
+
* keys routed through the cloud proxy). Derived from
|
|
168
168
|
* `PLATFORM_PROVIDER_META` at catalog build time so the two stay in lock
|
|
169
169
|
* step. Clients use this field to hide the "Platform (managed by Cadet)"
|
|
170
170
|
* option from the auth-type dropdown for providers like Fireworks or
|
|
171
171
|
* OpenRouter where managed keys are not available.
|
|
172
172
|
*/
|
|
173
|
-
|
|
173
|
+
supportsCloudAuth?: boolean;
|
|
174
174
|
/** When set, this provider is only visible when the named feature flag is enabled. */
|
|
175
175
|
featureFlag?: string;
|
|
176
176
|
}
|
|
@@ -2894,11 +2894,10 @@ const RAW_PROVIDER_CATALOG: ProviderCatalogEntry[] = [
|
|
|
2894
2894
|
{
|
|
2895
2895
|
id: "cadet",
|
|
2896
2896
|
displayName: "Cadet",
|
|
2897
|
-
subtitle:
|
|
2898
|
-
"Models served on Cadet GPU nodes through the managed connection.",
|
|
2897
|
+
subtitle: "Models served on Cadet GPU nodes through the cloud connection.",
|
|
2899
2898
|
setupMode: "api-key",
|
|
2900
2899
|
setupHint:
|
|
2901
|
-
"Uses the assistant API key through the Cadet
|
|
2900
|
+
"Uses the assistant API key through the Cadet Cloud connection. These models cannot use a bring-your-own key.",
|
|
2902
2901
|
featureFlag: "cadet-hosted-inference",
|
|
2903
2902
|
models: [
|
|
2904
2903
|
{
|
|
@@ -2922,11 +2921,11 @@ export const PROVIDER_CATALOG: ProviderCatalogEntry[] =
|
|
|
2922
2921
|
RAW_PROVIDER_CATALOG.map((entry) => ({
|
|
2923
2922
|
...entry,
|
|
2924
2923
|
models: entry.models.map(catalogModel),
|
|
2925
|
-
// Derive
|
|
2924
|
+
// Derive supportsCloudAuth from PLATFORM_PROVIDER_META so the catalog
|
|
2926
2925
|
// and the proxy routing table can never drift. Adding a provider to
|
|
2927
2926
|
// PLATFORM_PROVIDER_META with `managed: true` automatically opts it into
|
|
2928
2927
|
// the Platform auth-type dropdown in the clients.
|
|
2929
|
-
|
|
2928
|
+
supportsCloudAuth: PLATFORM_PROVIDER_META[entry.id]?.managed === true,
|
|
2930
2929
|
}));
|
|
2931
2930
|
|
|
2932
2931
|
/**
|
|
@@ -107,9 +107,9 @@ describe("normalizeOpenAIAPIError", () => {
|
|
|
107
107
|
// SDK collapsed the body; raw body still has the real detail.
|
|
108
108
|
const n = normalizeOpenAIAPIError(
|
|
109
109
|
apiError(400, { sdkBody: {} }),
|
|
110
|
-
JSON.stringify({ detail: "
|
|
110
|
+
JSON.stringify({ detail: "cloud proxy rejected model" }),
|
|
111
111
|
);
|
|
112
|
-
expect(n.message).toBe("
|
|
112
|
+
expect(n.message).toBe("cloud proxy rejected model");
|
|
113
113
|
});
|
|
114
114
|
|
|
115
115
|
test("falls back to the SDK-parsed error when the captured JSON was truncated", () => {
|
|
@@ -474,7 +474,7 @@ describe("deriveReason", () => {
|
|
|
474
474
|
});
|
|
475
475
|
|
|
476
476
|
test("daily-limit body code → daily_limit_reached (before insufficient_credits)", () => {
|
|
477
|
-
// Both are 402s from the
|
|
477
|
+
// Both are 402s from the cloud proxy; the specific daily-limit code must
|
|
478
478
|
// win over the generic status-402 → insufficient_credits mapping.
|
|
479
479
|
expect(
|
|
480
480
|
deriveReason(
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
/**
|
|
15
15
|
* Normalized view of an OpenAI-compatible `APIError`. The SDK reads
|
|
16
16
|
* `error.message` and renders bodies it can't parse as "(no body)", so
|
|
17
|
-
* Django `{"detail": "..."}` payloads from the
|
|
17
|
+
* Django `{"detail": "..."}` payloads from the cloud runtime proxy and
|
|
18
18
|
* OpenRouter's nested `error.metadata.raw` get dropped. We capture the raw
|
|
19
19
|
* non-2xx body in a `fetch` wrapper and reconstruct the useful fields here.
|
|
20
20
|
*/
|
|
@@ -110,7 +110,7 @@ export function deriveReason(
|
|
|
110
110
|
return "request_shape_unsupported";
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
// The
|
|
113
|
+
// The cloud proxy's daily-limit 402 shares the status with generic credit
|
|
114
114
|
// exhaustion; match its specific body code first so it isn't swallowed.
|
|
115
115
|
if (FREE_TIER_DAILY_LIMIT_PATTERNS.some((re) => re.test(haystack))) {
|
|
116
116
|
return "free_tier_daily_limit_reached";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Provider availability checks.
|
|
3
3
|
*
|
|
4
4
|
* Determines which LLM providers are usable by checking secure storage,
|
|
5
|
-
* environment variable fallbacks, and
|
|
5
|
+
* environment variable fallbacks, and cloud proxy availability.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import { getConfig } from "../config/loader.js";
|
|
@@ -10,14 +10,14 @@ import {
|
|
|
10
10
|
getProviderKeyAsync,
|
|
11
11
|
getSecureKeyResultAsync,
|
|
12
12
|
} from "../security/secure-keys.js";
|
|
13
|
+
import { managedFallbackEnabledFor } from "./cloud-proxy/context.js";
|
|
13
14
|
import { PROVIDER_CATALOG } from "./model-catalog.js";
|
|
14
|
-
import { managedFallbackEnabledFor } from "./platform-proxy/context.js";
|
|
15
15
|
import { getVisibleProviderCatalog } from "./provider-catalog-visibility.js";
|
|
16
16
|
import { API_KEY_PROVIDERS } from "./provider-secret-catalog.js";
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* Check whether a single provider is usable — via a user-provided key
|
|
20
|
-
* (secure storage or env var) or via the
|
|
20
|
+
* (secure storage or env var) or via the cloud proxy fallback.
|
|
21
21
|
* Ollama is always considered available because it does not require an API key.
|
|
22
22
|
*/
|
|
23
23
|
export async function isProviderAvailable(provider: string): Promise<boolean> {
|
|
@@ -32,7 +32,7 @@ export async function isProviderAvailable(provider: string): Promise<boolean> {
|
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
34
|
* Build the list of providers that are usable — via a user-provided key
|
|
35
|
-
* (secure storage or env var) or via the
|
|
35
|
+
* (secure storage or env var) or via the cloud proxy fallback.
|
|
36
36
|
* Feature-flagged LLM providers that are currently disabled are excluded.
|
|
37
37
|
* Ollama is always included because it does not require an API key.
|
|
38
38
|
*/
|
|
@@ -24,7 +24,7 @@ import { SEARCH_PROVIDER_CATALOG } from "./search-provider-catalog.js";
|
|
|
24
24
|
/**
|
|
25
25
|
* Search-provider env var names, derived from `SEARCH_PROVIDER_CATALOG`.
|
|
26
26
|
* Adding a BYOK provider to the catalog automatically extends this map —
|
|
27
|
-
*
|
|
27
|
+
* cloud providers (no `envVar`) are filtered out.
|
|
28
28
|
*/
|
|
29
29
|
const SEARCH_PROVIDER_ENV_VAR_NAMES: Record<string, string> = Object.freeze(
|
|
30
30
|
Object.fromEntries(
|
|
@@ -42,7 +42,7 @@ import { listCredentialProviderNames as listSttCredentialProviderNames } from ".
|
|
|
42
42
|
* "keyless"` — the keyless mode is enforced elsewhere; this list is purely
|
|
43
43
|
* about the set of bare-name credential-store keys accepted by
|
|
44
44
|
* `assistant keys ...`. `cadet` is excluded: those models authenticate
|
|
45
|
-
* with the assistant API key on the
|
|
45
|
+
* with the assistant API key on the cloud connection, not a user key.
|
|
46
46
|
*
|
|
47
47
|
* Search providers (`brave`, `perplexity`, `tavily`) have no catalog module
|
|
48
48
|
* yet and remain statically declared below.
|
|
@@ -9,6 +9,10 @@ import {
|
|
|
9
9
|
isAnthropicDelegatingGateway,
|
|
10
10
|
isAnthropicModel,
|
|
11
11
|
} from "./anthropic-gateway-shared.js";
|
|
12
|
+
import {
|
|
13
|
+
buildCloudBaseUrl,
|
|
14
|
+
resolveCloudProxyContext,
|
|
15
|
+
} from "./cloud-proxy/context.js";
|
|
12
16
|
import {
|
|
13
17
|
buildProviderAdapter,
|
|
14
18
|
createAdapterFromConnection,
|
|
@@ -24,10 +28,6 @@ import {
|
|
|
24
28
|
import { resolveAuth } from "./inference/resolve-auth.js";
|
|
25
29
|
import { isModelInCatalog, PROVIDER_CATALOG } from "./model-catalog.js";
|
|
26
30
|
import { getProviderDefaultModel } from "./model-intents.js";
|
|
27
|
-
import {
|
|
28
|
-
buildManagedBaseUrl,
|
|
29
|
-
resolveManagedProxyContext,
|
|
30
|
-
} from "./platform-proxy/context.js";
|
|
31
31
|
import { RetryProvider } from "./retry.js";
|
|
32
32
|
import type { Provider } from "./types.js";
|
|
33
33
|
import { UsageTrackingProvider } from "./usage-tracking.js";
|
|
@@ -35,7 +35,7 @@ import { UsageTrackingProvider } from "./usage-tracking.js";
|
|
|
35
35
|
const log = getLogger("provider-registry");
|
|
36
36
|
|
|
37
37
|
const providers = new Map<string, Provider>();
|
|
38
|
-
const routingSources = new Map<string, "user-key" | "
|
|
38
|
+
const routingSources = new Map<string, "user-key" | "cloud-proxy">();
|
|
39
39
|
const NATIVE_WEB_SEARCH_PROVIDER_IDS = new Set(["anthropic", "openai"]);
|
|
40
40
|
|
|
41
41
|
/**
|
|
@@ -71,7 +71,7 @@ function getConnectionProviderCacheKey(
|
|
|
71
71
|
effectiveProvider: string,
|
|
72
72
|
): string {
|
|
73
73
|
// `effectiveProvider` differs from `connection.provider` only for the
|
|
74
|
-
// provider-agnostic Cadet
|
|
74
|
+
// provider-agnostic Cadet Cloud connection, where one connection name
|
|
75
75
|
// serves multiple upstreams — include it so those entries don't collide.
|
|
76
76
|
return `${connection.name}\u0000${effectiveProvider}\u0000${model}`;
|
|
77
77
|
}
|
|
@@ -94,7 +94,7 @@ export function listProviders(): string[] {
|
|
|
94
94
|
|
|
95
95
|
export function getProviderRoutingSource(
|
|
96
96
|
name: string,
|
|
97
|
-
): "user-key" | "
|
|
97
|
+
): "user-key" | "cloud-proxy" | undefined {
|
|
98
98
|
return routingSources.get(name);
|
|
99
99
|
}
|
|
100
100
|
|
|
@@ -164,7 +164,7 @@ export function shouldUseNativeWebSearch(
|
|
|
164
164
|
}
|
|
165
165
|
|
|
166
166
|
/**
|
|
167
|
-
* Resolve provider credentials. User key takes precedence;
|
|
167
|
+
* Resolve provider credentials. User key takes precedence; cloud proxy is
|
|
168
168
|
* used as a fallback when platform prerequisites are available.
|
|
169
169
|
*
|
|
170
170
|
* The routing decision is now derived from credential availability rather than
|
|
@@ -173,19 +173,19 @@ export function shouldUseNativeWebSearch(
|
|
|
173
173
|
async function resolveProviderCredentials(providerName: string): Promise<{
|
|
174
174
|
apiKey: string;
|
|
175
175
|
baseURL?: string;
|
|
176
|
-
source: "user-key" | "
|
|
176
|
+
source: "user-key" | "cloud-proxy";
|
|
177
177
|
} | null> {
|
|
178
178
|
const userKey = await getProviderKeyAsync(providerName);
|
|
179
179
|
if (userKey) {
|
|
180
180
|
return { apiKey: userKey, source: "user-key" };
|
|
181
181
|
}
|
|
182
|
-
const
|
|
183
|
-
if (
|
|
184
|
-
const ctx = await
|
|
182
|
+
const cloudBaseUrl = await buildCloudBaseUrl(providerName);
|
|
183
|
+
if (cloudBaseUrl) {
|
|
184
|
+
const ctx = await resolveCloudProxyContext();
|
|
185
185
|
return {
|
|
186
186
|
apiKey: ctx.assistantApiKey,
|
|
187
|
-
baseURL:
|
|
188
|
-
source: "
|
|
187
|
+
baseURL: cloudBaseUrl,
|
|
188
|
+
source: "cloud-proxy",
|
|
189
189
|
};
|
|
190
190
|
}
|
|
191
191
|
return null;
|
|
@@ -215,14 +215,14 @@ export async function initializeProviders(
|
|
|
215
215
|
|
|
216
216
|
const isKeyless = entry.setupMode === "keyless";
|
|
217
217
|
|
|
218
|
-
// Credential resolution: user key first,
|
|
218
|
+
// Credential resolution: user key first, cloud proxy second. Keyless
|
|
219
219
|
// providers (e.g. ollama) skip both — they only need to be configured as
|
|
220
220
|
// the mainAgent provider, or have a key present (rare keyed-mode), to
|
|
221
221
|
// boot. Boot order matches catalog order; routingSources tracks which
|
|
222
222
|
// credential surface served each provider.
|
|
223
223
|
let apiKey = "";
|
|
224
224
|
let baseURL: string | undefined;
|
|
225
|
-
let source: "user-key" | "
|
|
225
|
+
let source: "user-key" | "cloud-proxy" = "user-key";
|
|
226
226
|
if (isKeyless) {
|
|
227
227
|
const key = await getProviderKeyAsync(entry.id);
|
|
228
228
|
const isConfiguredMainAgent = mainAgentProvider === entry.id;
|
|
@@ -267,12 +267,12 @@ export async function initializeProviders(
|
|
|
267
267
|
registerProvider(
|
|
268
268
|
entry.id,
|
|
269
269
|
new RetryProvider(adapter, {
|
|
270
|
-
forwardUsageAttributionHeaders: source === "
|
|
270
|
+
forwardUsageAttributionHeaders: source === "cloud-proxy",
|
|
271
271
|
// A keyless provider booted without a key has no credential to blame,
|
|
272
272
|
// so don't let its rejections render as "update your personal key".
|
|
273
273
|
credentialSource:
|
|
274
|
-
source === "
|
|
275
|
-
? "cadet-
|
|
274
|
+
source === "cloud-proxy"
|
|
275
|
+
? "cadet-cloud"
|
|
276
276
|
: isKeyless && !apiKey
|
|
277
277
|
? "no-auth"
|
|
278
278
|
: "byok",
|
|
@@ -308,7 +308,7 @@ export async function resolveProviderFromConnection(
|
|
|
308
308
|
config: ProvidersConfig,
|
|
309
309
|
opts: { model?: string; providerOverride?: string } = {},
|
|
310
310
|
): Promise<Provider | null> {
|
|
311
|
-
// The provider-agnostic Cadet
|
|
311
|
+
// The provider-agnostic Cadet Cloud connection carries only the `cadet`
|
|
312
312
|
// sentinel on its row, so callers pass the resolved profile's provider here.
|
|
313
313
|
// For every other connection this is `undefined` and the effective provider
|
|
314
314
|
// is the connection's own — no behavior change.
|
package/src/providers/retry.ts
CHANGED
|
@@ -442,20 +442,20 @@ function retryErrorType(error: unknown): string {
|
|
|
442
442
|
}
|
|
443
443
|
|
|
444
444
|
/**
|
|
445
|
-
* The
|
|
445
|
+
* The cloud proxy's preflight guard rejects a model with no billing rate
|
|
446
446
|
* card using a 400 whose body carries this phrase (django
|
|
447
447
|
* `app/runtime_proxy/views.py`). It marks a model rename/retirement incident
|
|
448
448
|
* (a route problem, not a request problem), so it is fallback-eligible even
|
|
449
449
|
* though 400s are otherwise final.
|
|
450
450
|
*/
|
|
451
|
-
// Matches the
|
|
451
|
+
// Matches the cloud preflight's copy for an unsupported managed model.
|
|
452
452
|
const MANAGED_PROXY_UNSUPPORTED_MODEL_PATTERN =
|
|
453
453
|
/is not yet supported on the Cadet hosted service/;
|
|
454
454
|
|
|
455
455
|
/**
|
|
456
456
|
* Whether the failure indicts one model rather than the upstream serving it: a
|
|
457
457
|
* provider-classified `model_not_found`, a 404 with no definitive
|
|
458
|
-
* classification, or the
|
|
458
|
+
* classification, or the cloud proxy's preflight 400 for a renamed/retired
|
|
459
459
|
* model. As in `isRetryableError`, a provider-stamped semantic reason takes
|
|
460
460
|
* precedence over the status fallback: a 404 whose classifier assigned a
|
|
461
461
|
* definitive non-model reason (Anthropic, for example, stamps `bad_request` on
|
|
@@ -509,16 +509,16 @@ function isFallbackEligibleError(
|
|
|
509
509
|
if (!(error instanceof ProviderError)) {
|
|
510
510
|
return false;
|
|
511
511
|
}
|
|
512
|
-
// (b) Invalid
|
|
513
|
-
// to `cadet-
|
|
514
|
-
// broken key is a
|
|
512
|
+
// (b) Invalid cloud credential (the invalid-key incident). Applies only
|
|
513
|
+
// to `cadet-cloud` routes, where the cloud owns the credential and a
|
|
514
|
+
// broken key is a cloud incident. A BYOK or OAuth-subscription route
|
|
515
515
|
// with a broken personal credential must surface the auth error so the
|
|
516
516
|
// user can fix it, not silently reroute to a differently billed backup.
|
|
517
517
|
// Only reached after `sendMessage`'s credential-refresh path has already
|
|
518
|
-
// been attempted for
|
|
519
|
-
// `
|
|
518
|
+
// been attempted for cloud routes: same status/reason gate as
|
|
519
|
+
// `shouldRefreshCloudCredential`.
|
|
520
520
|
if (
|
|
521
|
-
opts.credentialSource === "cadet-
|
|
521
|
+
opts.credentialSource === "cadet-cloud" &&
|
|
522
522
|
(error.statusCode === 401 || error.statusCode === 403) &&
|
|
523
523
|
(error.reason === undefined ||
|
|
524
524
|
error.reason === "unknown" ||
|
|
@@ -690,7 +690,7 @@ function normalizeSendMessageOptions(
|
|
|
690
690
|
}
|
|
691
691
|
|
|
692
692
|
if (providerName === "fireworks") {
|
|
693
|
-
// Covers BYOK Fireworks and the Cadet
|
|
693
|
+
// Covers BYOK Fireworks and the Cadet Cloud Fireworks upstream, which
|
|
694
694
|
// both dispatch through `FireworksProvider`. Keyless calls send no header.
|
|
695
695
|
const sessionKey = [config.selectionSeed, config.conversationId].find(
|
|
696
696
|
(value): value is string =>
|
|
@@ -1242,10 +1242,10 @@ export class RetryProvider implements Provider {
|
|
|
1242
1242
|
* `fallbackProfile`, mirroring how `refreshCredentialProvider` keeps
|
|
1243
1243
|
* this wrapper ignorant of credential storage.
|
|
1244
1244
|
* `forwardUsageAttributionHeaders` must describe the BACKUP route, not
|
|
1245
|
-
* the primary:
|
|
1245
|
+
* the primary: cloud-proxy routes pass true, BYOK and other
|
|
1246
1246
|
* third-party routes pass false. The fallback send normalizes with the
|
|
1247
1247
|
* returned policy so `X-Cadet-*` billing metadata never leaks to a
|
|
1248
|
-
* third party and is never omitted from the
|
|
1248
|
+
* third party and is never omitted from the cloud proxy. One hop max:
|
|
1249
1249
|
* the returned adapter must be RAW, so the backup can never escalate
|
|
1250
1250
|
* again whatever happens to it. Whether the backup send gets a retry
|
|
1251
1251
|
* budget depends on which entry point escalated; see
|
|
@@ -1278,9 +1278,9 @@ export class RetryProvider implements Provider {
|
|
|
1278
1278
|
}
|
|
1279
1279
|
}
|
|
1280
1280
|
|
|
1281
|
-
private
|
|
1281
|
+
private shouldRefreshCloudCredential(error: unknown): boolean {
|
|
1282
1282
|
return (
|
|
1283
|
-
this.options.credentialSource === "cadet-
|
|
1283
|
+
this.options.credentialSource === "cadet-cloud" &&
|
|
1284
1284
|
this.options.refreshCredentialProvider !== undefined &&
|
|
1285
1285
|
error instanceof ProviderError &&
|
|
1286
1286
|
(error.statusCode === 401 || error.statusCode === 403) &&
|
|
@@ -1291,13 +1291,13 @@ export class RetryProvider implements Provider {
|
|
|
1291
1291
|
}
|
|
1292
1292
|
|
|
1293
1293
|
/**
|
|
1294
|
-
* Reload the
|
|
1294
|
+
* Reload the cloud credential after an auth rejection and swap the inner
|
|
1295
1295
|
* provider for one built around it, so a key rotated out of band is picked
|
|
1296
1296
|
* up without a restart. Returns true when a refreshed adapter took over and
|
|
1297
1297
|
* the request is worth attempting again. Never throws: a failed reload
|
|
1298
1298
|
* leaves the original error to surface.
|
|
1299
1299
|
*/
|
|
1300
|
-
private async
|
|
1300
|
+
private async refreshCloudCredential(): Promise<boolean> {
|
|
1301
1301
|
try {
|
|
1302
1302
|
const refreshed = await this.options.refreshCredentialProvider?.();
|
|
1303
1303
|
if (refreshed) {
|
|
@@ -1318,7 +1318,7 @@ export class RetryProvider implements Provider {
|
|
|
1318
1318
|
connectionName: this.options.connectionName,
|
|
1319
1319
|
refreshError,
|
|
1320
1320
|
},
|
|
1321
|
-
"Failed to reload
|
|
1321
|
+
"Failed to reload cloud assistant credentials",
|
|
1322
1322
|
);
|
|
1323
1323
|
}
|
|
1324
1324
|
return false;
|
|
@@ -1424,7 +1424,7 @@ export class RetryProvider implements Provider {
|
|
|
1424
1424
|
);
|
|
1425
1425
|
// One probe, one attempt: no retry loop. Two one-shot repairs are the
|
|
1426
1426
|
// exception, both because the probe would otherwise misread its own
|
|
1427
|
-
// failure as the route still being down. A
|
|
1427
|
+
// failure as the route still being down. A cloud credential that
|
|
1428
1428
|
// expired during the outage is refreshed, or the route could never come
|
|
1429
1429
|
// back. Malformed tool-argument JSON gets the same corrective note the
|
|
1430
1430
|
// retry loop appends, because that failure is conditioned on the
|
|
@@ -1463,10 +1463,10 @@ export class RetryProvider implements Provider {
|
|
|
1463
1463
|
}
|
|
1464
1464
|
if (
|
|
1465
1465
|
!credentialRefreshAttempted &&
|
|
1466
|
-
this.
|
|
1466
|
+
this.shouldRefreshCloudCredential(error)
|
|
1467
1467
|
) {
|
|
1468
1468
|
credentialRefreshAttempted = true;
|
|
1469
|
-
if (await this.
|
|
1469
|
+
if (await this.refreshCloudCredential()) {
|
|
1470
1470
|
continue;
|
|
1471
1471
|
}
|
|
1472
1472
|
}
|
|
@@ -1594,10 +1594,10 @@ export class RetryProvider implements Provider {
|
|
|
1594
1594
|
} catch (error) {
|
|
1595
1595
|
if (
|
|
1596
1596
|
!credentialRefreshAttempted &&
|
|
1597
|
-
this.
|
|
1597
|
+
this.shouldRefreshCloudCredential(error)
|
|
1598
1598
|
) {
|
|
1599
1599
|
credentialRefreshAttempted = true;
|
|
1600
|
-
if (await this.
|
|
1600
|
+
if (await this.refreshCloudCredential()) {
|
|
1601
1601
|
continue;
|
|
1602
1602
|
}
|
|
1603
1603
|
}
|
|
@@ -1719,7 +1719,7 @@ export class RetryProvider implements Provider {
|
|
|
1719
1719
|
* routes: degraded mode loses native search rather than the whole turn.
|
|
1720
1720
|
*
|
|
1721
1721
|
* Gated on `config.nativeWebSearchSentinel`, never on the name alone: with a
|
|
1722
|
-
* search backend like Brave or the
|
|
1722
|
+
* search backend like Brave or the cloud search proxy configured, a tool
|
|
1723
1723
|
* of the same name is app-executed and works on every route, so filtering it
|
|
1724
1724
|
* would take away a capability the backup can still serve.
|
|
1725
1725
|
*
|
|
@@ -1778,7 +1778,7 @@ export class RetryProvider implements Provider {
|
|
|
1778
1778
|
* `normalizeSendMessageOptions` has already consumed the `callSite` and
|
|
1779
1779
|
* stamped the backup route's `usageAttributionHeaders`; running it again over
|
|
1780
1780
|
* that now callSite-less config would delete the headers and have no way to
|
|
1781
|
-
* rebuild them, leaving degraded traffic unattributed on the
|
|
1781
|
+
* rebuild them, leaving degraded traffic unattributed on the cloud's
|
|
1782
1782
|
* billing events. This is the same reason the route callback hands back a raw
|
|
1783
1783
|
* adapter instead of a wrapped one.
|
|
1784
1784
|
*/
|
|
@@ -1947,9 +1947,9 @@ export class RetryProvider implements Provider {
|
|
|
1947
1947
|
// restamps the usage-attribution headers from the backup resolution, so
|
|
1948
1948
|
// platform usage events attribute degraded traffic to the backup
|
|
1949
1949
|
// profile. Whether those headers are forwarded at all follows the
|
|
1950
|
-
// FALLBACK route's policy, not the primary's: a
|
|
1950
|
+
// FALLBACK route's policy, not the primary's: a cloud primary falling
|
|
1951
1951
|
// back to a third-party adapter must not leak billing metadata, and a
|
|
1952
|
-
// non-managed primary falling back to the
|
|
1952
|
+
// non-managed primary falling back to the cloud proxy must include it.
|
|
1953
1953
|
const fallbackConfig: Record<string, unknown> = { ...options?.config };
|
|
1954
1954
|
delete fallbackConfig.max_tokens;
|
|
1955
1955
|
delete fallbackConfig.effort;
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
|
|
12
12
|
import { ConfigError } from "../util/errors.js";
|
|
13
13
|
import {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
CADET_CLOUD_CONNECTION_NAME,
|
|
15
|
+
CADET_CLOUD_PROVIDER,
|
|
16
|
+
getCloudUpstream,
|
|
17
17
|
} from "./cadet-model-routing.js";
|
|
18
18
|
import { CHATGPT_SUBSCRIPTION_CONNECTION_NAME } from "./inference/auth.js";
|
|
19
19
|
import { isCodexSubscriptionModel } from "./openai/codex-models.js";
|
|
@@ -53,11 +53,11 @@ export class ConnectionResolutionError extends ConfigError {
|
|
|
53
53
|
|
|
54
54
|
/**
|
|
55
55
|
* Translate a routing-identity provider into its dispatch target. "cadet"
|
|
56
|
-
* derives the
|
|
56
|
+
* derives the cloud upstream from the model and routes through the
|
|
57
57
|
* canonical cadet connection; "chatgpt" routes through the
|
|
58
58
|
* chatgpt-subscription connection with an openai upstream. Returns null for
|
|
59
59
|
* real providers. Throws `unroutable_managed_model` when a cadet model has
|
|
60
|
-
* no
|
|
60
|
+
* no cloud upstream, and `model_incompatible` when a chatgpt model is
|
|
61
61
|
* outside the Codex subscription set — loud and explainable, never a soft
|
|
62
62
|
* fall-through to the (possibly platform-billed) default transport.
|
|
63
63
|
*/
|
|
@@ -65,18 +65,18 @@ export function resolveRoutingIdentity(
|
|
|
65
65
|
provider: string | undefined,
|
|
66
66
|
model: string | undefined,
|
|
67
67
|
): { connectionName: string; expectedProvider: string } | null {
|
|
68
|
-
if (provider ===
|
|
69
|
-
const upstream = model ?
|
|
68
|
+
if (provider === CADET_CLOUD_PROVIDER) {
|
|
69
|
+
const upstream = model ? getCloudUpstream(model) : null;
|
|
70
70
|
if (!upstream) {
|
|
71
71
|
throw new ConnectionResolutionError(
|
|
72
|
-
|
|
72
|
+
CADET_CLOUD_CONNECTION_NAME,
|
|
73
73
|
"unroutable_managed_model",
|
|
74
|
-
`provider "cadet" cannot route model "${model ?? "<unset>"}" — no
|
|
74
|
+
`provider "cadet" cannot route model "${model ?? "<unset>"}" — no cloud upstream serves it. Pick a model from the Cadet catalog or set a concrete provider.`,
|
|
75
75
|
{ model },
|
|
76
76
|
);
|
|
77
77
|
}
|
|
78
78
|
return {
|
|
79
|
-
connectionName:
|
|
79
|
+
connectionName: CADET_CLOUD_CONNECTION_NAME,
|
|
80
80
|
expectedProvider: upstream,
|
|
81
81
|
};
|
|
82
82
|
}
|
|
@@ -51,7 +51,7 @@ export interface SearchProviderCatalogEntry {
|
|
|
51
51
|
* `inference-provider-native`, the daemon uses the inference API's native
|
|
52
52
|
* hosted web-search tool only when the selected inference provider/model
|
|
53
53
|
* supports it; otherwise the app-executed `web_search` tool runs, falling
|
|
54
|
-
* back to the
|
|
54
|
+
* back to the cloud search proxy only when no user search key is
|
|
55
55
|
* configured.
|
|
56
56
|
*
|
|
57
57
|
* `byok` providers require a user-supplied API key.
|
|
@@ -87,7 +87,7 @@ export interface SearchProviderCatalogEntry {
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
export const SEARCH_PROVIDER_CATALOG: readonly SearchProviderCatalogEntry[] = [
|
|
90
|
-
// cadet leads: it is the
|
|
90
|
+
// cadet leads: it is the cloud option, selected like any other provider.
|
|
91
91
|
// Legacy configs carrying the pre-rebrand id `cadet` normalize on parse.
|
|
92
92
|
{
|
|
93
93
|
id: "cadet",
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
import { afterEach, beforeEach, describe, expect, test } from "bun:test";
|
|
9
9
|
|
|
10
10
|
import { SttError, type SttStreamServerEvent } from "../../../stt/types.js";
|
|
11
|
-
import { CadetManagedFluxRealtimeTranscriber } from "../cadet-
|
|
12
|
-
import { CadetManagedRealtimeTranscriber } from "../cadet-
|
|
11
|
+
import { CadetManagedFluxRealtimeTranscriber } from "../cadet-cloud-flux-realtime.js";
|
|
12
|
+
import { CadetManagedRealtimeTranscriber } from "../cadet-cloud-realtime.js";
|
|
13
13
|
import type { SpeechRelayConnection } from "../cadet-speech-relay-connection.js";
|
|
14
14
|
|
|
15
15
|
type WsListener = (...args: unknown[]) => void;
|
|
@@ -100,7 +100,7 @@ const CONNECTION: SpeechRelayConnection = {
|
|
|
100
100
|
|
|
101
101
|
const tick = () => new Promise<void>((r) => setTimeout(r, 0));
|
|
102
102
|
|
|
103
|
-
describe("Cadet
|
|
103
|
+
describe("Cadet Cloud realtime transcribers", () => {
|
|
104
104
|
let sockets: MockWebSocket[];
|
|
105
105
|
let originalWebSocket: unknown;
|
|
106
106
|
let originalFetch: unknown;
|