@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,12 +2,12 @@
|
|
|
2
2
|
* Default-plugin route resolution: a first-party default plugin's routes are
|
|
3
3
|
* served in the `/x/plugins/<name>/` namespace from the app source tree
|
|
4
4
|
* (`plugins/defaults/<dir>/routes/`), where `<name>` is `default-<dir>` (e.g.
|
|
5
|
-
* `default-
|
|
5
|
+
* `default-cloud-hosted`) — the same `default-…` name its `.disabled`
|
|
6
6
|
* sentinel is keyed by — not its bare directory name. An installed workspace
|
|
7
7
|
* plugin of the same name overrides the default.
|
|
8
8
|
*
|
|
9
|
-
* These tests exercise the real `
|
|
10
|
-
* `default-
|
|
9
|
+
* These tests exercise the real `cloud-hosted` default plugin (namespace
|
|
10
|
+
* `default-cloud-hosted`), which ships `routes/reengage.ts`, a POST-only
|
|
11
11
|
* handler. A GET reaches the resolved source file and 405s — proving
|
|
12
12
|
* resolution + source-tree module load without running the handler's heavy
|
|
13
13
|
* background-turn logic.
|
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
} from "../user-route-resolution.js";
|
|
38
38
|
|
|
39
39
|
/** The default plugin's source directory name. */
|
|
40
|
-
const DEFAULT_PLUGIN_DIR = "
|
|
40
|
+
const DEFAULT_PLUGIN_DIR = "cloud-hosted";
|
|
41
41
|
/** Its route namespace = `default-<dir>` by convention. */
|
|
42
42
|
const DEFAULT_PLUGIN = `default-${DEFAULT_PLUGIN_DIR}`;
|
|
43
43
|
|
|
@@ -86,7 +86,7 @@ describe("default plugin route source resolution", () => {
|
|
|
86
86
|
expect(getDefaultPluginRoutesDir("default-../util")).toBeNull();
|
|
87
87
|
});
|
|
88
88
|
|
|
89
|
-
test("getDefaultPluginRouteRoots includes the
|
|
89
|
+
test("getDefaultPluginRouteRoots includes the cloud-hosted plugin under its manifest name", () => {
|
|
90
90
|
const roots = getDefaultPluginRouteRoots();
|
|
91
91
|
const entry = roots.find((r) => r.pluginName === DEFAULT_PLUGIN);
|
|
92
92
|
expect(entry).toBeDefined();
|
|
@@ -13,10 +13,10 @@ import { beforeEach, describe, expect, mock, test } from "bun:test";
|
|
|
13
13
|
|
|
14
14
|
let managedProxyEnabled = false;
|
|
15
15
|
let managedProxyBaseUrl = "https://platform.example";
|
|
16
|
-
mock.module("../../../providers/
|
|
17
|
-
|
|
16
|
+
mock.module("../../../providers/cloud-proxy/context.js", () => ({
|
|
17
|
+
resolveCloudProxyContext: async () => ({
|
|
18
18
|
enabled: managedProxyEnabled,
|
|
19
|
-
|
|
19
|
+
cloudBaseUrl: managedProxyBaseUrl,
|
|
20
20
|
assistantApiKey: managedProxyEnabled ? "key" : "",
|
|
21
21
|
}),
|
|
22
22
|
}));
|
|
@@ -147,7 +147,7 @@ describe("GET config/llm/default-provider", () => {
|
|
|
147
147
|
managedProxyBaseUrl = "";
|
|
148
148
|
const result = await get();
|
|
149
149
|
expect(availability(result).status).toBe("cadet_unauthenticated");
|
|
150
|
-
expect(availability(result).message).toContain("
|
|
150
|
+
expect(availability(result).message).toContain("cloud URL");
|
|
151
151
|
});
|
|
152
152
|
|
|
153
153
|
test("cadet default with no canonical row → missing_connection", async () => {
|
|
@@ -157,7 +157,7 @@ describe("GET config/llm/default-provider", () => {
|
|
|
157
157
|
expect(availability(result).status).toBe("missing_connection");
|
|
158
158
|
});
|
|
159
159
|
|
|
160
|
-
test("user-owned connection claiming the cadet name → the
|
|
160
|
+
test("user-owned connection claiming the cadet name → the cloud's own status", async () => {
|
|
161
161
|
// seedCanonicalConnections skips reseeding when a user row claims the
|
|
162
162
|
// name. Dispatch ignores that row and routes through cloud auth, so a
|
|
163
163
|
// signed-in platform is genuinely usable and reads as ok.
|
|
@@ -174,7 +174,7 @@ describe("GET config/llm/default-provider", () => {
|
|
|
174
174
|
expect(availability(result).status).toBe("ok");
|
|
175
175
|
});
|
|
176
176
|
|
|
177
|
-
test("cloud-auth connection for a non-
|
|
177
|
+
test("cloud-auth connection for a non-cloud provider → unsupported_auth even when signed in", async () => {
|
|
178
178
|
seedConnection({
|
|
179
179
|
name: "openrouter-personal",
|
|
180
180
|
provider: "openrouter",
|
|
@@ -323,7 +323,7 @@ describe("GET config/llm/default-provider", () => {
|
|
|
323
323
|
expect(availability(result).message).toContain('"openai"');
|
|
324
324
|
});
|
|
325
325
|
|
|
326
|
-
test("cadet-
|
|
326
|
+
test("cadet-cloud connection pinned for a cloud-routable provider follows cloud auth", async () => {
|
|
327
327
|
seedConnection({
|
|
328
328
|
name: "cadet",
|
|
329
329
|
provider: "cadet",
|
|
@@ -338,7 +338,7 @@ describe("GET config/llm/default-provider", () => {
|
|
|
338
338
|
expect(availability(await get()).status).toBe("ok");
|
|
339
339
|
});
|
|
340
340
|
|
|
341
|
-
test("cadet-
|
|
341
|
+
test("cadet-cloud connection pinned for a non-cloud provider → provider_mismatch", async () => {
|
|
342
342
|
seedConnection({
|
|
343
343
|
name: "cadet",
|
|
344
344
|
provider: "cadet",
|
|
@@ -351,7 +351,7 @@ describe("GET config/llm/default-provider", () => {
|
|
|
351
351
|
|
|
352
352
|
const result = await get();
|
|
353
353
|
expect(availability(result).status).toBe("provider_mismatch");
|
|
354
|
-
expect(availability(result).message).toContain("Cadet
|
|
354
|
+
expect(availability(result).message).toContain("Cadet Cloud");
|
|
355
355
|
});
|
|
356
356
|
|
|
357
357
|
test("service_account connection with invalid credential → missing_credential", async () => {
|
|
@@ -368,7 +368,7 @@ describe("GET config/llm/default-provider", () => {
|
|
|
368
368
|
expect(availability(result).message).toContain("service-account");
|
|
369
369
|
});
|
|
370
370
|
|
|
371
|
-
test("
|
|
371
|
+
test("cloud-auth connection follows cloud-proxy state", async () => {
|
|
372
372
|
seedConnection({
|
|
373
373
|
name: "anthropic-personal",
|
|
374
374
|
provider: "anthropic",
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* - bad provider (not in the LLMProvider enum)
|
|
7
7
|
* - uncataloged model without --allow-unlisted
|
|
8
8
|
* - missing provider connection
|
|
9
|
-
* -
|
|
9
|
+
* - cloud-profile create / update / delete rejection
|
|
10
10
|
* - the dispatch-availability guard on create / update / set-active
|
|
11
11
|
*
|
|
12
12
|
* Routing-identity creates exercise the happy-path write end-to-end (through
|
|
@@ -32,13 +32,13 @@ mock.module("../../../persistence/embeddings/embedding-backend.js", () => ({
|
|
|
32
32
|
clearEmbeddingBackendCache: () => {},
|
|
33
33
|
}));
|
|
34
34
|
|
|
35
|
-
// The availability guard judges the Cadet
|
|
35
|
+
// The availability guard judges the Cadet Cloud route and the credential
|
|
36
36
|
// store for real; both are stood in for here so tests can pick a state.
|
|
37
37
|
let managedProxyEnabled = true;
|
|
38
|
-
mock.module("../../../providers/
|
|
39
|
-
|
|
38
|
+
mock.module("../../../providers/cloud-proxy/context.js", () => ({
|
|
39
|
+
resolveCloudProxyContext: async () => ({
|
|
40
40
|
enabled: managedProxyEnabled,
|
|
41
|
-
|
|
41
|
+
cloudBaseUrl: "https://platform.example",
|
|
42
42
|
assistantApiKey: managedProxyEnabled ? "key" : "",
|
|
43
43
|
}),
|
|
44
44
|
}));
|
|
@@ -124,7 +124,7 @@ function seedKeyedConnection(provider: string): void {
|
|
|
124
124
|
});
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
/** The Cadet
|
|
127
|
+
/** The Cadet Cloud row every routing-identity profile resolves to. */
|
|
128
128
|
function seedCadetConnection(): void {
|
|
129
129
|
seedConnection("cadet", "cadet", { type: "platform" });
|
|
130
130
|
}
|
|
@@ -205,7 +205,7 @@ describe("POST inference/profiles (create) validation", () => {
|
|
|
205
205
|
).rejects.toBeInstanceOf(BadRequestError);
|
|
206
206
|
});
|
|
207
207
|
|
|
208
|
-
test("creates a cadet profile for a
|
|
208
|
+
test("creates a cadet profile for a cloud-routable model", async () => {
|
|
209
209
|
seedCadetConnection();
|
|
210
210
|
const result = (await call("inference_profiles_create", {
|
|
211
211
|
body: {
|
|
@@ -238,7 +238,7 @@ describe("POST inference/profiles (create) validation", () => {
|
|
|
238
238
|
).rejects.toThrow(/maxTokens/);
|
|
239
239
|
});
|
|
240
240
|
|
|
241
|
-
test("rejects a cadet profile whose model has no
|
|
241
|
+
test("rejects a cadet profile whose model has no cloud upstream", async () => {
|
|
242
242
|
await expect(
|
|
243
243
|
call("inference_profiles_create", {
|
|
244
244
|
body: {
|
|
@@ -248,7 +248,7 @@ describe("POST inference/profiles (create) validation", () => {
|
|
|
248
248
|
},
|
|
249
249
|
}),
|
|
250
250
|
).rejects.toThrow(
|
|
251
|
-
/"not-a-real-model" is not served by the Cadet
|
|
251
|
+
/"not-a-real-model" is not served by the Cadet Cloud route/,
|
|
252
252
|
);
|
|
253
253
|
});
|
|
254
254
|
|
|
@@ -367,7 +367,7 @@ describe("POST inference/profiles (create) validation", () => {
|
|
|
367
367
|
).rejects.toThrow(/does not exist/);
|
|
368
368
|
});
|
|
369
369
|
|
|
370
|
-
test("rejects creating a
|
|
370
|
+
test("rejects creating a cloud default name", async () => {
|
|
371
371
|
await expect(
|
|
372
372
|
call("inference_profiles_create", {
|
|
373
373
|
body: {
|
|
@@ -389,7 +389,7 @@ describe("inference-profile writes are availability-aware", () => {
|
|
|
389
389
|
model: "gemini-3.6-flash",
|
|
390
390
|
};
|
|
391
391
|
|
|
392
|
-
test("rejects a BYO provider with no connection and names the
|
|
392
|
+
test("rejects a BYO provider with no connection and names the cloud alternative", async () => {
|
|
393
393
|
const promise = call("inference_profiles_create", { body: geminiBody });
|
|
394
394
|
await expect(promise).rejects.toBeInstanceOf(BadRequestError);
|
|
395
395
|
await expect(promise).rejects.toThrow(
|
|
@@ -402,7 +402,7 @@ describe("inference-profile writes are availability-aware", () => {
|
|
|
402
402
|
expect(persistedProfiles()).toEqual({});
|
|
403
403
|
});
|
|
404
404
|
|
|
405
|
-
test("falls back to the credential sequence when the
|
|
405
|
+
test("falls back to the credential sequence when the cloud route is unusable", async () => {
|
|
406
406
|
managedProxyEnabled = false;
|
|
407
407
|
secureKeyResults.clear();
|
|
408
408
|
const promise = call("inference_profiles_create", { body: geminiBody });
|
|
@@ -552,7 +552,7 @@ describe("inference-profile writes are availability-aware", () => {
|
|
|
552
552
|
// ── update validation ─────────────────────────────────────────────────────────
|
|
553
553
|
|
|
554
554
|
describe("PATCH inference/profiles/:name (update) validation", () => {
|
|
555
|
-
test("rejects editing a
|
|
555
|
+
test("rejects editing a cloud default profile", async () => {
|
|
556
556
|
setConfig("llm", {
|
|
557
557
|
profiles: {
|
|
558
558
|
balanced: {
|
|
@@ -567,7 +567,7 @@ describe("PATCH inference/profiles/:name (update) validation", () => {
|
|
|
567
567
|
pathParams: { name: "balanced" },
|
|
568
568
|
body: { effort: "low" },
|
|
569
569
|
}),
|
|
570
|
-
).rejects.toThrow(/
|
|
570
|
+
).rejects.toThrow(/cloud profile/);
|
|
571
571
|
});
|
|
572
572
|
|
|
573
573
|
test("404s an unknown profile", async () => {
|
|
@@ -583,11 +583,11 @@ describe("PATCH inference/profiles/:name (update) validation", () => {
|
|
|
583
583
|
// ── delete protection ───────────────────────────────────────────────────────
|
|
584
584
|
|
|
585
585
|
describe("DELETE inference/profiles/:name protection", () => {
|
|
586
|
-
test("rejects deleting a
|
|
586
|
+
test("rejects deleting a cloud default profile", async () => {
|
|
587
587
|
setConfig("llm", { profiles: { balanced: { source: "managed" } } });
|
|
588
588
|
await expect(
|
|
589
589
|
call("inference_profiles_delete", { pathParams: { name: "balanced" } }),
|
|
590
|
-
).rejects.toThrow(/
|
|
590
|
+
).rejects.toThrow(/cloud profile/);
|
|
591
591
|
});
|
|
592
592
|
|
|
593
593
|
test("404s an unknown profile", async () => {
|
|
@@ -796,7 +796,7 @@ describe("GET inference/profiles honors the llm.default blob", () => {
|
|
|
796
796
|
// ── active-profile setter validation (Finding 3) ──────────────────────────────
|
|
797
797
|
|
|
798
798
|
describe("POST inference/profiles/:name/validate billing guards", () => {
|
|
799
|
-
test("gives no verdict for a mix whose winning arm rides the
|
|
799
|
+
test("gives no verdict for a mix whose winning arm rides the cloud route", async () => {
|
|
800
800
|
seedCadetConnection();
|
|
801
801
|
setConfig("llm", {
|
|
802
802
|
profiles: {
|
|
@@ -815,7 +815,7 @@ describe("POST inference/profiles/:name/validate billing guards", () => {
|
|
|
815
815
|
expect(result.check).toBeNull();
|
|
816
816
|
});
|
|
817
817
|
|
|
818
|
-
test("gives no verdict when a call-site override routes the probe onto the
|
|
818
|
+
test("gives no verdict when a call-site override routes the probe onto the cloud identity", async () => {
|
|
819
819
|
seedCadetConnection();
|
|
820
820
|
setConfig("llm", {
|
|
821
821
|
profiles: {
|
|
@@ -228,7 +228,7 @@ describe("POST inference/provider-connections (create)", () => {
|
|
|
228
228
|
).catch((e: unknown) => e);
|
|
229
229
|
|
|
230
230
|
expect(err).toBeInstanceOf(BadRequestError);
|
|
231
|
-
expect((err as BadRequestError).message).toContain("
|
|
231
|
+
expect((err as BadRequestError).message).toContain("Cadet Cloud");
|
|
232
232
|
expect((err as BadRequestError).message).toContain("cadet");
|
|
233
233
|
});
|
|
234
234
|
|
|
@@ -679,7 +679,7 @@ describe("POST inference/provider-connections (create)", () => {
|
|
|
679
679
|
});
|
|
680
680
|
});
|
|
681
681
|
|
|
682
|
-
test("throws 400 on the reserved
|
|
682
|
+
test("throws 400 on the reserved cloud connection name", async () => {
|
|
683
683
|
await expect(
|
|
684
684
|
call(findHandler("inference_provider_connections_create"), {
|
|
685
685
|
body: {
|
|
@@ -820,7 +820,7 @@ describe("PATCH inference/provider-connections/:name (update)", () => {
|
|
|
820
820
|
).catch((e: unknown) => e);
|
|
821
821
|
|
|
822
822
|
expect(err).toBeInstanceOf(BadRequestError);
|
|
823
|
-
expect((err as BadRequestError).message).toContain("
|
|
823
|
+
expect((err as BadRequestError).message).toContain("Cadet Cloud");
|
|
824
824
|
});
|
|
825
825
|
|
|
826
826
|
// A persisted row whose provider and auth disagree stays editable: both the
|
|
@@ -1400,7 +1400,7 @@ describe("PATCH with label", () => {
|
|
|
1400
1400
|
|
|
1401
1401
|
// ── Managed-connection write protection ──────────────────────────────────────
|
|
1402
1402
|
|
|
1403
|
-
describe("
|
|
1403
|
+
describe("Cloud connection write protection", () => {
|
|
1404
1404
|
const MANAGED_NAMES = ["cadet"] as const;
|
|
1405
1405
|
|
|
1406
1406
|
describe("DELETE", () => {
|
|
@@ -1419,13 +1419,13 @@ describe("Managed connection write protection", () => {
|
|
|
1419
1419
|
|
|
1420
1420
|
expect(err).toBeInstanceOf(BadRequestError);
|
|
1421
1421
|
expect((err as BadRequestError).message).toContain(name);
|
|
1422
|
-
expect((err as BadRequestError).message).toContain("
|
|
1422
|
+
expect((err as BadRequestError).message).toContain("Cadet Cloud");
|
|
1423
1423
|
});
|
|
1424
1424
|
}
|
|
1425
1425
|
|
|
1426
1426
|
test("managed protection short-circuits before reference checks", async () => {
|
|
1427
|
-
// Even though a profile references the
|
|
1428
|
-
// should be the
|
|
1427
|
+
// Even though a profile references the cloud connection, the error
|
|
1428
|
+
// should be the cloud-protection 400, not the references-409.
|
|
1429
1429
|
seedConnection({
|
|
1430
1430
|
name: "cadet",
|
|
1431
1431
|
provider: "cadet",
|
|
@@ -1443,10 +1443,10 @@ describe("Managed connection write protection", () => {
|
|
|
1443
1443
|
).catch((e: unknown) => e);
|
|
1444
1444
|
|
|
1445
1445
|
expect(err).toBeInstanceOf(BadRequestError);
|
|
1446
|
-
expect((err as BadRequestError).message).toContain("
|
|
1446
|
+
expect((err as BadRequestError).message).toContain("Cadet Cloud");
|
|
1447
1447
|
});
|
|
1448
1448
|
|
|
1449
|
-
test("a user-owned row claiming the
|
|
1449
|
+
test("a user-owned row claiming the cloud name stays deletable", async () => {
|
|
1450
1450
|
// Boot seeding refuses to overwrite it and managed routing ignores it,
|
|
1451
1451
|
// so deleting is the only way to restore the canonical row. The cadet
|
|
1452
1452
|
// default resolves to this same name, and that guard must not block the
|
|
@@ -1489,7 +1489,9 @@ describe("Managed connection write protection", () => {
|
|
|
1489
1489
|
|
|
1490
1490
|
expect(err).toBeInstanceOf(BadRequestError);
|
|
1491
1491
|
expect((err as BadRequestError).message).toContain(name);
|
|
1492
|
-
expect((err as BadRequestError).message).toContain(
|
|
1492
|
+
expect((err as BadRequestError).message).toContain(
|
|
1493
|
+
"cloud-authenticated",
|
|
1494
|
+
);
|
|
1493
1495
|
});
|
|
1494
1496
|
|
|
1495
1497
|
test(`rejects auth change on ${name} from platform to none with 400`, async () => {
|
|
@@ -1525,16 +1527,16 @@ describe("Managed connection write protection", () => {
|
|
|
1525
1527
|
pathParams: { name: "cadet" },
|
|
1526
1528
|
body: {
|
|
1527
1529
|
auth: { type: "platform" },
|
|
1528
|
-
label: "Cadet
|
|
1530
|
+
label: "Cadet Cloud Anthropic",
|
|
1529
1531
|
},
|
|
1530
1532
|
},
|
|
1531
1533
|
)) as { label: string | null };
|
|
1532
|
-
expect(result.label).toBe("Cadet
|
|
1534
|
+
expect(result.label).toBe("Cadet Cloud Anthropic");
|
|
1533
1535
|
});
|
|
1534
1536
|
});
|
|
1535
1537
|
|
|
1536
1538
|
describe("PATCH label (allowed)", () => {
|
|
1537
|
-
test("allows relabeling a
|
|
1539
|
+
test("allows relabeling a cloud connection", async () => {
|
|
1538
1540
|
seedConnection({
|
|
1539
1541
|
name: "cadet",
|
|
1540
1542
|
provider: "cadet",
|
|
@@ -1634,7 +1636,7 @@ describe("isManaged flag on connection responses", () => {
|
|
|
1634
1636
|
});
|
|
1635
1637
|
|
|
1636
1638
|
describe("GET single", () => {
|
|
1637
|
-
test("returns isManaged: true for a
|
|
1639
|
+
test("returns isManaged: true for a cloud name", async () => {
|
|
1638
1640
|
seedConnection({
|
|
1639
1641
|
name: "cadet",
|
|
1640
1642
|
provider: "cadet",
|
|
@@ -1649,7 +1651,7 @@ describe("isManaged flag on connection responses", () => {
|
|
|
1649
1651
|
expect(result.isManaged).toBe(true);
|
|
1650
1652
|
});
|
|
1651
1653
|
|
|
1652
|
-
test("returns isManaged: false for a user-owned row claiming a
|
|
1654
|
+
test("returns isManaged: false for a user-owned row claiming a cloud name", async () => {
|
|
1653
1655
|
// Clients gate edit and delete on this flag, so a claiming row must
|
|
1654
1656
|
// report as the ordinary connection it is or the collision cannot be
|
|
1655
1657
|
// cleared from the UI.
|
|
@@ -1701,7 +1703,7 @@ describe("isManaged flag on connection responses", () => {
|
|
|
1701
1703
|
});
|
|
1702
1704
|
|
|
1703
1705
|
describe("PATCH update", () => {
|
|
1704
|
-
test("returns isManaged: true after relabeling a
|
|
1706
|
+
test("returns isManaged: true after relabeling a cloud connection", async () => {
|
|
1705
1707
|
seedConnection({
|
|
1706
1708
|
name: "cadet",
|
|
1707
1709
|
provider: "cadet",
|
|
@@ -248,7 +248,7 @@ describe("inference_send profile usability", () => {
|
|
|
248
248
|
);
|
|
249
249
|
}
|
|
250
250
|
|
|
251
|
-
test("rejects a disabled profile instead of running the
|
|
251
|
+
test("rejects a disabled profile instead of running the cloud default", async () => {
|
|
252
252
|
const err = await rejection({ ...hermes, status: "disabled" });
|
|
253
253
|
expect(err).toBeInstanceOf(BadRequestError);
|
|
254
254
|
expect(err.message).toContain("disabled");
|
|
@@ -83,7 +83,7 @@ describe("integrations_ingress_status route", () => {
|
|
|
83
83
|
});
|
|
84
84
|
});
|
|
85
85
|
|
|
86
|
-
test("reports unconfigured for a
|
|
86
|
+
test("reports unconfigured for a cloud-hosted assistant", async () => {
|
|
87
87
|
ingressConfig = {
|
|
88
88
|
...ingressConfig,
|
|
89
89
|
publicBaseUrl: "https://platform.example.com/gateway/callbacks/a-1",
|
|
@@ -2,15 +2,12 @@
|
|
|
2
2
|
* Tests for the post-import cadet metadata reconciliation helper.
|
|
3
3
|
*
|
|
4
4
|
* After every bundle import, `reconcileCadetMetadataFromCes` walks the
|
|
5
|
-
*
|
|
5
|
+
* cadet credentials the gateway requires and, for each one that
|
|
6
6
|
* CES already holds a value for, ensures `metadata.json` lists a
|
|
7
7
|
* matching entry. This closes the race where a provisioning write to
|
|
8
8
|
* CES completes successfully but its metadata upsert gets clobbered by
|
|
9
9
|
* the import's in-place clear or atomic swap. The reconciled set covers
|
|
10
|
-
*
|
|
11
|
-
* platform_assistant_id, platform_base_url, webhook_secret) and the
|
|
12
|
-
* client-injected identity fields (platform_organization_id,
|
|
13
|
-
* platform_user_id).
|
|
10
|
+
* the Django-provisioned credentials (assistant_api_key, webhook_secret).
|
|
14
11
|
*
|
|
15
12
|
* We test the reconcile logic in isolation by mocking the secure-keys
|
|
16
13
|
* and metadata-store modules — the real migration handler wires the
|
|
@@ -40,14 +37,7 @@ type MetadataRecord = {
|
|
|
40
37
|
updatedAt: number;
|
|
41
38
|
};
|
|
42
39
|
|
|
43
|
-
const CADET_FIELDS = [
|
|
44
|
-
"platform_base_url",
|
|
45
|
-
"assistant_api_key",
|
|
46
|
-
"platform_assistant_id",
|
|
47
|
-
"platform_organization_id",
|
|
48
|
-
"platform_user_id",
|
|
49
|
-
"webhook_secret",
|
|
50
|
-
] as const;
|
|
40
|
+
const CADET_FIELDS = ["assistant_api_key", "webhook_secret"] as const;
|
|
51
41
|
|
|
52
42
|
const upsertCalls: Array<{ service: string; field: string }> = [];
|
|
53
43
|
let metadataStore: Map<string, MetadataRecord> = new Map();
|
|
@@ -143,7 +133,7 @@ describe("reconcileCadetMetadataFromCes", () => {
|
|
|
143
133
|
test("CES holds all, metadata has 2 → only the missing ones upserted", async () => {
|
|
144
134
|
seedAllInCes();
|
|
145
135
|
// Pre-populate metadata for 2 of the fields.
|
|
146
|
-
const prepopulated = ["
|
|
136
|
+
const prepopulated = ["assistant_api_key", "webhook_secret"] as const;
|
|
147
137
|
for (const field of prepopulated) {
|
|
148
138
|
metadataStore.set(`cadet:${field}`, {
|
|
149
139
|
credentialId: `id-cadet:${field}`,
|
|
@@ -174,14 +164,9 @@ describe("reconcileCadetMetadataFromCes", () => {
|
|
|
174
164
|
await reconcileCadetMetadataFromCes(sink);
|
|
175
165
|
|
|
176
166
|
const reconciled = new Set(upsertCalls.map((c) => c.field));
|
|
177
|
-
// Django-provisioned
|
|
178
|
-
expect(reconciled).toContain("platform_base_url");
|
|
167
|
+
// Django-provisioned trio.
|
|
179
168
|
expect(reconciled).toContain("assistant_api_key");
|
|
180
|
-
expect(reconciled).toContain("platform_assistant_id");
|
|
181
169
|
expect(reconciled).toContain("webhook_secret");
|
|
182
|
-
// Client-injected identity fields (onboarding / teleport / transfer).
|
|
183
|
-
expect(reconciled).toContain("platform_organization_id");
|
|
184
|
-
expect(reconciled).toContain("platform_user_id");
|
|
185
170
|
});
|
|
186
171
|
|
|
187
172
|
test("CES empty → nothing upserted", async () => {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Tests for platform credential filtering during bundle import.
|
|
3
3
|
*
|
|
4
4
|
* `migration-routes.ts` pushes every bundle credential through a filter that
|
|
5
|
-
* must exclude
|
|
5
|
+
* must exclude cloud-identity (`cadet:*`) entries so they can't overwrite
|
|
6
6
|
* the target's own Django-provisioned identity. The filter runs against the
|
|
7
7
|
* raw CES account format — `credential/{service}/{field}` — produced by
|
|
8
8
|
* `credentialKey()`, which is what `listSecureKeysAsync()` returns and what
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* key format are excluded.
|
|
21
21
|
* - User credentials (any other prefix) pass through unchanged.
|
|
22
22
|
* - Mixed bundles correctly split platform vs user credentials.
|
|
23
|
-
* -
|
|
23
|
+
* - skippedCloud count matches the number of excluded entries.
|
|
24
24
|
* - Regression: the prefix constant matches `credentialKey("cadet", "")`.
|
|
25
25
|
*/
|
|
26
26
|
|
|
@@ -98,8 +98,8 @@ function filterCredentials(
|
|
|
98
98
|
const userCredentials = bundleCredentials.filter(
|
|
99
99
|
(c) => !c.account.startsWith(PLATFORM_CREDENTIAL_PREFIX),
|
|
100
100
|
);
|
|
101
|
-
const
|
|
102
|
-
return { userCredentials,
|
|
101
|
+
const skippedCloud = bundleCredentials.length - userCredentials.length;
|
|
102
|
+
return { userCredentials, skippedCloud };
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
// ---------------------------------------------------------------------------
|
|
@@ -110,10 +110,7 @@ describe("migration import credential filtering", () => {
|
|
|
110
110
|
test("platform (cadet:*) credentials are excluded", () => {
|
|
111
111
|
const cadetFields = [
|
|
112
112
|
"assistant_api_key",
|
|
113
|
-
"
|
|
114
|
-
"platform_base_url",
|
|
115
|
-
"platform_organization_id",
|
|
116
|
-
"platform_user_id",
|
|
113
|
+
"cloud_assistant_id",
|
|
117
114
|
"webhook_secret",
|
|
118
115
|
] as const;
|
|
119
116
|
const cadetPaths = cadetFields.map((f) =>
|
|
@@ -128,11 +125,11 @@ describe("migration import credential filtering", () => {
|
|
|
128
125
|
const manifest = makeManifest(cadetPaths);
|
|
129
126
|
|
|
130
127
|
const bundleCredentials = extractCredentialsFromBundle(entries, manifest);
|
|
131
|
-
const { userCredentials,
|
|
128
|
+
const { userCredentials, skippedCloud } =
|
|
132
129
|
filterCredentials(bundleCredentials);
|
|
133
130
|
|
|
134
131
|
expect(userCredentials).toHaveLength(0);
|
|
135
|
-
expect(
|
|
132
|
+
expect(skippedCloud).toBe(cadetFields.length);
|
|
136
133
|
});
|
|
137
134
|
|
|
138
135
|
test("user credentials pass through unchanged", () => {
|
|
@@ -149,7 +146,7 @@ describe("migration import credential filtering", () => {
|
|
|
149
146
|
]);
|
|
150
147
|
|
|
151
148
|
const bundleCredentials = extractCredentialsFromBundle(entries, manifest);
|
|
152
|
-
const { userCredentials,
|
|
149
|
+
const { userCredentials, skippedCloud } =
|
|
153
150
|
filterCredentials(bundleCredentials);
|
|
154
151
|
|
|
155
152
|
expect(userCredentials).toHaveLength(2);
|
|
@@ -161,12 +158,12 @@ describe("migration import credential filtering", () => {
|
|
|
161
158
|
account: anthropicAccount,
|
|
162
159
|
value: "sk-ant-456",
|
|
163
160
|
});
|
|
164
|
-
expect(
|
|
161
|
+
expect(skippedCloud).toBe(0);
|
|
165
162
|
});
|
|
166
163
|
|
|
167
164
|
test("mixed bundle with both platform and user credentials correctly splits", () => {
|
|
168
165
|
const cadetApiKey = credentialKey("cadet", "assistant_api_key");
|
|
169
|
-
const cadetUserId = credentialKey("cadet", "
|
|
166
|
+
const cadetUserId = credentialKey("cadet", "cloud_assistant_id");
|
|
170
167
|
const openaiKey = credentialKey("openai", "api_key");
|
|
171
168
|
const anthropicKey = credentialKey("anthropic", "api_key");
|
|
172
169
|
const githubToken = credentialKey("github", "api_token");
|
|
@@ -187,7 +184,7 @@ describe("migration import credential filtering", () => {
|
|
|
187
184
|
]);
|
|
188
185
|
|
|
189
186
|
const bundleCredentials = extractCredentialsFromBundle(entries, manifest);
|
|
190
|
-
const { userCredentials,
|
|
187
|
+
const { userCredentials, skippedCloud } =
|
|
191
188
|
filterCredentials(bundleCredentials);
|
|
192
189
|
|
|
193
190
|
// Only user credentials should pass through.
|
|
@@ -201,33 +198,33 @@ describe("migration import credential filtering", () => {
|
|
|
201
198
|
);
|
|
202
199
|
expect(cadetCreds).toHaveLength(0);
|
|
203
200
|
|
|
204
|
-
expect(
|
|
201
|
+
expect(skippedCloud).toBe(2);
|
|
205
202
|
});
|
|
206
203
|
|
|
207
|
-
test("
|
|
204
|
+
test("skippedCloud count is accurate with mixed credentials", () => {
|
|
208
205
|
const cadetApiKey = credentialKey("cadet", "assistant_api_key");
|
|
209
|
-
const
|
|
206
|
+
const cadetAssistantId = credentialKey("cadet", "cloud_assistant_id");
|
|
210
207
|
const cadetWebhook = credentialKey("cadet", "webhook_secret");
|
|
211
208
|
const userKey = credentialKey("github", "api_token");
|
|
212
209
|
|
|
213
210
|
const entries = new Map<string, VBundleTarEntry>();
|
|
214
211
|
entries.set(bundlePathFor(cadetApiKey), makeTarEntry("v1"));
|
|
215
|
-
entries.set(bundlePathFor(
|
|
212
|
+
entries.set(bundlePathFor(cadetAssistantId), makeTarEntry("v2"));
|
|
216
213
|
entries.set(bundlePathFor(cadetWebhook), makeTarEntry("v3"));
|
|
217
214
|
entries.set(bundlePathFor(userKey), makeTarEntry("user-val"));
|
|
218
215
|
|
|
219
216
|
const manifest = makeManifest([
|
|
220
217
|
bundlePathFor(cadetApiKey),
|
|
221
|
-
bundlePathFor(
|
|
218
|
+
bundlePathFor(cadetAssistantId),
|
|
222
219
|
bundlePathFor(cadetWebhook),
|
|
223
220
|
bundlePathFor(userKey),
|
|
224
221
|
]);
|
|
225
222
|
|
|
226
223
|
const bundleCredentials = extractCredentialsFromBundle(entries, manifest);
|
|
227
|
-
const { userCredentials,
|
|
224
|
+
const { userCredentials, skippedCloud } =
|
|
228
225
|
filterCredentials(bundleCredentials);
|
|
229
226
|
|
|
230
|
-
expect(
|
|
227
|
+
expect(skippedCloud).toBe(3);
|
|
231
228
|
expect(userCredentials).toHaveLength(1);
|
|
232
229
|
expect(userCredentials[0]).toEqual({
|
|
233
230
|
account: userKey,
|
|
@@ -236,7 +233,7 @@ describe("migration import credential filtering", () => {
|
|
|
236
233
|
|
|
237
234
|
// Verify total = user + skipped
|
|
238
235
|
expect(bundleCredentials.length).toBe(
|
|
239
|
-
userCredentials.length +
|
|
236
|
+
userCredentials.length + skippedCloud,
|
|
240
237
|
);
|
|
241
238
|
});
|
|
242
239
|
|