@mycadet/assistant 0.12.7 → 0.12.9
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 +2 -2
- 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/package.json +1 -1
- package/node_modules/@mycadet/ces-client/src/__tests__/ces-client.test.ts +14 -14
- 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 +2 -2
- 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 +2 -2
- 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 +6804 -799
- 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} +77 -75
- 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-set-route.test.ts +12 -8
- 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 +28 -40
- 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 +134 -288
- 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 +1 -2
- package/src/__tests__/mcp-client-auth.test.ts +1 -2
- package/src/__tests__/mcp-config-secret-boundary.test.ts +44 -40
- package/src/__tests__/mcp-tool-annotations-risk.test.ts +1 -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-store-credential.test.ts +4 -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 +222 -536
- package/src/__tests__/skills-files-catalog-fallback.test.ts +259 -577
- 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-cloud-login.ts +18 -0
- 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__/callback-routes-list.test.ts +2 -2
- 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/cloud/index.ts +1 -1
- package/src/cli/commands/config.ts +2 -2
- 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__/substrate-twin-shadowing.test.ts +36 -26
- 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 +21 -26
- 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 +29 -10
- package/src/config/schemas/llm.ts +36 -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/substrate-twin-shadowing.ts +12 -17
- package/src/config/sync-gated-profiles.ts +8 -9
- 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 +2 -23
- package/src/credential-health/credential-health-service.ts +59 -70
- 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 +32 -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/__tests__/memory-tier-boundary-guard.test.ts +5 -0
- 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 +126 -82
- 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} +86 -119
- package/src/runtime/routes/conversation-compaction-routes.ts +1 -1
- package/src/runtime/routes/conversation-query-routes.ts +345 -667
- 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 +20 -61
- 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 +2 -20
- 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/layout.ts +479 -0
- package/src/util/oom-priority.ts +1 -1
- package/src/util/platform.ts +12 -468
- 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 +6 -6
- 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/api/events/show-platform-login.ts +0 -20
- 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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, it, mock } from "bun:test";
|
|
2
2
|
|
|
3
|
-
let providerRoutingSources: Record<string, "user-key" | "
|
|
3
|
+
let providerRoutingSources: Record<string, "user-key" | "cloud-proxy"> = {};
|
|
4
4
|
|
|
5
5
|
mock.module("../providers/registry.js", () => ({
|
|
6
6
|
getProviderRoutingSource: (provider: string) =>
|
|
@@ -125,7 +125,7 @@ describe("classifyConversationError", () => {
|
|
|
125
125
|
});
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
-
it("classifies
|
|
128
|
+
it("classifies cloud-proxy daily quota responses as MANAGED_USAGE_LIMIT", () => {
|
|
129
129
|
const err = new ProviderError(
|
|
130
130
|
'Anthropic API error (429): 429 {"code":"daily_quota_exceeded","detail":"You\'ve reached your usage limit for today. You\'ve made 1000 requests, but your current plan allows 1000 per day.","provider":"anthropic"}',
|
|
131
131
|
"anthropic",
|
|
@@ -136,13 +136,13 @@ describe("classifyConversationError", () => {
|
|
|
136
136
|
|
|
137
137
|
expect(result.code).toBe("MANAGED_USAGE_LIMIT");
|
|
138
138
|
expect(result.retryable).toBe(true);
|
|
139
|
-
expect(result.userMessage).toContain("Cadet
|
|
139
|
+
expect(result.userMessage).toContain("Cadet Cloud inference");
|
|
140
140
|
expect(result.userMessage).toContain("not an AI provider outage");
|
|
141
141
|
expect(result.errorCategory).toBe("managed_usage_limit");
|
|
142
142
|
});
|
|
143
143
|
|
|
144
|
-
it("classifies
|
|
145
|
-
providerRoutingSources.anthropic = "
|
|
144
|
+
it("classifies cloud-proxy routed 429s as MANAGED_USAGE_LIMIT", () => {
|
|
145
|
+
providerRoutingSources.anthropic = "cloud-proxy";
|
|
146
146
|
const err = new ProviderError(
|
|
147
147
|
"Anthropic API error (429): Too many requests",
|
|
148
148
|
"anthropic",
|
|
@@ -152,7 +152,7 @@ describe("classifyConversationError", () => {
|
|
|
152
152
|
const result = classifyConversationError(err, baseCtx);
|
|
153
153
|
|
|
154
154
|
expect(result.code).toBe("MANAGED_USAGE_LIMIT");
|
|
155
|
-
expect(result.userMessage).toContain("Cadet
|
|
155
|
+
expect(result.userMessage).toContain("Cadet Cloud inference");
|
|
156
156
|
expect(result.errorCategory).toBe("managed_usage_limit");
|
|
157
157
|
});
|
|
158
158
|
|
|
@@ -172,7 +172,7 @@ describe("classifyConversationError", () => {
|
|
|
172
172
|
});
|
|
173
173
|
|
|
174
174
|
it("uses the ChatGPT OAuth route instead of the OpenAI registry default", () => {
|
|
175
|
-
providerRoutingSources.openai = "
|
|
175
|
+
providerRoutingSources.openai = "cloud-proxy";
|
|
176
176
|
const err = new ProviderError(
|
|
177
177
|
"OpenAI API error (429): Too many requests",
|
|
178
178
|
"openai",
|
|
@@ -183,7 +183,7 @@ describe("classifyConversationError", () => {
|
|
|
183
183
|
const result = classifyConversationError(err, {
|
|
184
184
|
...baseCtx,
|
|
185
185
|
connectionName: "chatgpt-subscription",
|
|
186
|
-
|
|
186
|
+
isCloudRoute: false,
|
|
187
187
|
});
|
|
188
188
|
|
|
189
189
|
expect(result.code).toBe("PROVIDER_RATE_LIMIT");
|
|
@@ -192,7 +192,7 @@ describe("classifyConversationError", () => {
|
|
|
192
192
|
});
|
|
193
193
|
|
|
194
194
|
it("prefers the failed call's direct route over stale managed turn attribution", () => {
|
|
195
|
-
providerRoutingSources.openai = "
|
|
195
|
+
providerRoutingSources.openai = "cloud-proxy";
|
|
196
196
|
const err = new ProviderError(
|
|
197
197
|
"OpenAI API error (429): Too many requests",
|
|
198
198
|
"openai",
|
|
@@ -202,14 +202,14 @@ describe("classifyConversationError", () => {
|
|
|
202
202
|
err.attachRouteAttribution({
|
|
203
203
|
connectionName: "chatgpt-subscription",
|
|
204
204
|
profileName: "chatgpt",
|
|
205
|
-
|
|
205
|
+
isCloudRoute: false,
|
|
206
206
|
});
|
|
207
207
|
|
|
208
208
|
const result = classifyConversationError(err, {
|
|
209
209
|
...baseCtx,
|
|
210
210
|
connectionName: "cadet",
|
|
211
211
|
profileName: "managed",
|
|
212
|
-
|
|
212
|
+
isCloudRoute: true,
|
|
213
213
|
});
|
|
214
214
|
|
|
215
215
|
expect(result.code).toBe("PROVIDER_RATE_LIMIT");
|
|
@@ -217,7 +217,7 @@ describe("classifyConversationError", () => {
|
|
|
217
217
|
expect(result.errorCategory).toBe("rate_limit");
|
|
218
218
|
});
|
|
219
219
|
|
|
220
|
-
it("prefers the failed call's
|
|
220
|
+
it("prefers the failed call's cloud fallback over stale direct turn attribution", () => {
|
|
221
221
|
const err = new ProviderError(
|
|
222
222
|
"Anthropic API error (429): Too many requests",
|
|
223
223
|
"anthropic",
|
|
@@ -226,27 +226,27 @@ describe("classifyConversationError", () => {
|
|
|
226
226
|
);
|
|
227
227
|
err.attachRouteAttribution({
|
|
228
228
|
profileName: "direct",
|
|
229
|
-
|
|
229
|
+
isCloudRoute: true,
|
|
230
230
|
});
|
|
231
231
|
|
|
232
232
|
const result = classifyConversationError(err, {
|
|
233
233
|
...baseCtx,
|
|
234
234
|
connectionName: "anthropic-key",
|
|
235
235
|
profileName: "direct",
|
|
236
|
-
|
|
236
|
+
isCloudRoute: false,
|
|
237
237
|
});
|
|
238
238
|
|
|
239
239
|
expect(result.code).toBe("MANAGED_USAGE_LIMIT");
|
|
240
|
-
expect(result.userMessage).toContain("Cadet
|
|
240
|
+
expect(result.userMessage).toContain("Cadet Cloud inference");
|
|
241
241
|
expect(result.errorCategory).toBe("managed_usage_limit");
|
|
242
242
|
});
|
|
243
243
|
|
|
244
|
-
it("does not apply a
|
|
244
|
+
it("does not apply a cloud LLM route to a plain rate-limit error", () => {
|
|
245
245
|
const result = classifyConversationError(
|
|
246
246
|
new Error("429 Too Many Requests from a tool API"),
|
|
247
247
|
{
|
|
248
248
|
...baseCtx,
|
|
249
|
-
|
|
249
|
+
isCloudRoute: true,
|
|
250
250
|
},
|
|
251
251
|
);
|
|
252
252
|
|
|
@@ -854,8 +854,8 @@ describe("classifyConversationError", () => {
|
|
|
854
854
|
expect(result.userMessage).not.toContain("API key");
|
|
855
855
|
});
|
|
856
856
|
|
|
857
|
-
it("classifies
|
|
858
|
-
providerRoutingSources.anthropic = "
|
|
857
|
+
it("classifies cloud-proxy auth failures as cloud credential refresh failures", () => {
|
|
858
|
+
providerRoutingSources.anthropic = "cloud-proxy";
|
|
859
859
|
const err = new ProviderError(
|
|
860
860
|
'Anthropic API error (403): {"detail":"API key has expired."}',
|
|
861
861
|
"anthropic",
|
|
@@ -872,14 +872,14 @@ describe("classifyConversationError", () => {
|
|
|
872
872
|
expect(result.errorCategory).toBe("managed_key_invalid");
|
|
873
873
|
});
|
|
874
874
|
|
|
875
|
-
it("keeps credential-shaped 4xx failures on the request's
|
|
875
|
+
it("keeps credential-shaped 4xx failures on the request's cloud route", () => {
|
|
876
876
|
providerRoutingSources.anthropic = "user-key";
|
|
877
877
|
const err = new ProviderError(
|
|
878
878
|
"Authentication error: invalid API key",
|
|
879
879
|
"anthropic",
|
|
880
880
|
400,
|
|
881
881
|
);
|
|
882
|
-
err.attachRouteAttribution({ credentialSource: "cadet-
|
|
882
|
+
err.attachRouteAttribution({ credentialSource: "cadet-cloud" });
|
|
883
883
|
|
|
884
884
|
const result = classifyConversationError(err, baseCtx);
|
|
885
885
|
|
|
@@ -926,8 +926,8 @@ describe("classifyConversationError", () => {
|
|
|
926
926
|
);
|
|
927
927
|
});
|
|
928
928
|
|
|
929
|
-
it("uses the request's BYOK attribution when the same provider also has a
|
|
930
|
-
providerRoutingSources.anthropic = "
|
|
929
|
+
it("uses the request's BYOK attribution when the same provider also has a cloud route", () => {
|
|
930
|
+
providerRoutingSources.anthropic = "cloud-proxy";
|
|
931
931
|
const err = new ProviderError("Unauthorized", "anthropic", 401);
|
|
932
932
|
err.attachRouteAttribution({
|
|
933
933
|
credentialSource: "byok",
|
|
@@ -947,7 +947,7 @@ describe("classifyConversationError", () => {
|
|
|
947
947
|
providerRoutingSources.anthropic = "user-key";
|
|
948
948
|
const err = new ProviderError("Unauthorized", "anthropic", 401);
|
|
949
949
|
err.attachRouteAttribution({
|
|
950
|
-
credentialSource: "cadet-
|
|
950
|
+
credentialSource: "cadet-cloud",
|
|
951
951
|
connectionName: "cadet",
|
|
952
952
|
});
|
|
953
953
|
|
|
@@ -959,8 +959,8 @@ describe("classifyConversationError", () => {
|
|
|
959
959
|
);
|
|
960
960
|
});
|
|
961
961
|
|
|
962
|
-
it("uses subscription-specific recovery when the same provider also has a
|
|
963
|
-
providerRoutingSources.openai = "
|
|
962
|
+
it("uses subscription-specific recovery when the same provider also has a cloud route", () => {
|
|
963
|
+
providerRoutingSources.openai = "cloud-proxy";
|
|
964
964
|
const err = new ProviderError("Unauthorized", "openai", 401, {
|
|
965
965
|
reason: "invalid_credentials",
|
|
966
966
|
});
|
|
@@ -981,7 +981,7 @@ describe("classifyConversationError", () => {
|
|
|
981
981
|
});
|
|
982
982
|
|
|
983
983
|
it("explains when a no-auth endpoint rejects an unauthenticated request", () => {
|
|
984
|
-
providerRoutingSources["openai-compatible"] = "
|
|
984
|
+
providerRoutingSources["openai-compatible"] = "cloud-proxy";
|
|
985
985
|
const err = new ProviderError("Unauthorized", "openai-compatible", 401, {
|
|
986
986
|
reason: "invalid_credentials",
|
|
987
987
|
});
|
|
@@ -1053,8 +1053,8 @@ describe("classifyConversationError", () => {
|
|
|
1053
1053
|
});
|
|
1054
1054
|
|
|
1055
1055
|
describe("OpenRouter billing classification", () => {
|
|
1056
|
-
it("keeps
|
|
1057
|
-
providerRoutingSources.openrouter = "
|
|
1056
|
+
it("keeps cloud-proxy OpenRouter 402 responses as credits_exhausted", () => {
|
|
1057
|
+
providerRoutingSources.openrouter = "cloud-proxy";
|
|
1058
1058
|
const err = new ProviderError(
|
|
1059
1059
|
"OpenRouter API error (402): Payment Required",
|
|
1060
1060
|
"openrouter",
|
|
@@ -1140,8 +1140,8 @@ describe("classifyConversationError", () => {
|
|
|
1140
1140
|
expect(result.code).not.toBe("PROVIDER_INVALID_KEY");
|
|
1141
1141
|
});
|
|
1142
1142
|
|
|
1143
|
-
it("classifies
|
|
1144
|
-
providerRoutingSources.openrouter = "
|
|
1143
|
+
it("classifies cloud-proxy OpenRouter insufficient_balance bodies as credits_exhausted", () => {
|
|
1144
|
+
providerRoutingSources.openrouter = "cloud-proxy";
|
|
1145
1145
|
const err = new ProviderError(
|
|
1146
1146
|
'OpenRouter API error (402): {"code":"insufficient_balance","detail":"Managed balance exhausted"}',
|
|
1147
1147
|
"openrouter",
|
|
@@ -1256,8 +1256,8 @@ describe("classifyConversationError", () => {
|
|
|
1256
1256
|
);
|
|
1257
1257
|
});
|
|
1258
1258
|
|
|
1259
|
-
it("routes reason=invalid_credentials to MANAGED_KEY_INVALID under
|
|
1260
|
-
providerRoutingSources["vercel-ai-gateway"] = "
|
|
1259
|
+
it("routes reason=invalid_credentials to MANAGED_KEY_INVALID under cloud-proxy", () => {
|
|
1260
|
+
providerRoutingSources["vercel-ai-gateway"] = "cloud-proxy";
|
|
1261
1261
|
const err = new ProviderError(
|
|
1262
1262
|
"Vercel AI Gateway API error (401): unauthorized",
|
|
1263
1263
|
"vercel-ai-gateway",
|
|
@@ -1288,7 +1288,7 @@ describe("classifyConversationError", () => {
|
|
|
1288
1288
|
});
|
|
1289
1289
|
|
|
1290
1290
|
it("overlays reason=rate_limited both ways (managed vs user)", () => {
|
|
1291
|
-
providerRoutingSources.openrouter = "
|
|
1291
|
+
providerRoutingSources.openrouter = "cloud-proxy";
|
|
1292
1292
|
const managed = classifyConversationError(
|
|
1293
1293
|
new ProviderError("rate limited", "openrouter", 429, {
|
|
1294
1294
|
reason: "rate_limited",
|
|
@@ -1309,7 +1309,7 @@ describe("classifyConversationError", () => {
|
|
|
1309
1309
|
expect(user.errorCategory).toBe("rate_limit");
|
|
1310
1310
|
});
|
|
1311
1311
|
|
|
1312
|
-
it("classifies reason=rate_limited managed quota bodies as MANAGED_USAGE_LIMIT even without a
|
|
1312
|
+
it("classifies reason=rate_limited managed quota bodies as MANAGED_USAGE_LIMIT even without a cloud routing source", () => {
|
|
1313
1313
|
// Per-connection platform auth path leaves routingSource unset, so the
|
|
1314
1314
|
// managed quota body pattern must still win over PROVIDER_RATE_LIMIT.
|
|
1315
1315
|
providerRoutingSources.openai = "user-key";
|
|
@@ -1338,8 +1338,8 @@ describe("classifyConversationError", () => {
|
|
|
1338
1338
|
expect(result.errorCategory).toBe("context_too_large");
|
|
1339
1339
|
});
|
|
1340
1340
|
|
|
1341
|
-
it("routes reason=daily_limit_reached to PROVIDER_BILLING/daily_limit_reached under
|
|
1342
|
-
providerRoutingSources["vercel-ai-gateway"] = "
|
|
1341
|
+
it("routes reason=daily_limit_reached to PROVIDER_BILLING/daily_limit_reached under cloud-proxy", () => {
|
|
1342
|
+
providerRoutingSources["vercel-ai-gateway"] = "cloud-proxy";
|
|
1343
1343
|
const err = new ProviderError(
|
|
1344
1344
|
'Vercel AI Gateway API error (402): {"code":"daily_limit_reached","detail":"Daily credit limit reached"}',
|
|
1345
1345
|
"vercel-ai-gateway",
|
|
@@ -1375,8 +1375,8 @@ describe("classifyConversationError", () => {
|
|
|
1375
1375
|
});
|
|
1376
1376
|
|
|
1377
1377
|
it("classifies reason=daily_limit_reached as daily_limit_reached even when the routing map says user-key", () => {
|
|
1378
|
-
// Per-connection
|
|
1379
|
-
// at user-key; the stamped reason comes only from the
|
|
1378
|
+
// Per-connection cloud-auth routes can leave the global routing map
|
|
1379
|
+
// at user-key; the stamped reason comes only from the cloud proxy's
|
|
1380
1380
|
// body code, so it must win regardless of the map.
|
|
1381
1381
|
providerRoutingSources.openai = "user-key";
|
|
1382
1382
|
const err = new ProviderError(
|
|
@@ -1393,8 +1393,8 @@ describe("classifyConversationError", () => {
|
|
|
1393
1393
|
expect(result.retryable).toBe(false);
|
|
1394
1394
|
});
|
|
1395
1395
|
|
|
1396
|
-
it("keeps a plain
|
|
1397
|
-
providerRoutingSources.openrouter = "
|
|
1396
|
+
it("keeps a plain cloud-proxy 402 without the daily-limit code as credits_exhausted", () => {
|
|
1397
|
+
providerRoutingSources.openrouter = "cloud-proxy";
|
|
1398
1398
|
const err = new ProviderError(
|
|
1399
1399
|
"OpenRouter API error (402): Payment Required",
|
|
1400
1400
|
"openrouter",
|
|
@@ -1765,7 +1765,7 @@ describe("ConnectionResolutionError classification", () => {
|
|
|
1765
1765
|
expect(result.userMessage).toContain('profile "custom-fast"');
|
|
1766
1766
|
});
|
|
1767
1767
|
|
|
1768
|
-
it("classifies platform_unauthenticated with a log-in fix on a non-
|
|
1768
|
+
it("classifies platform_unauthenticated with a log-in fix on a non-cloud install", () => {
|
|
1769
1769
|
const err = new ConnectionResolutionError(
|
|
1770
1770
|
"cadet",
|
|
1771
1771
|
"platform_unauthenticated",
|
|
@@ -1776,19 +1776,19 @@ describe("ConnectionResolutionError classification", () => {
|
|
|
1776
1776
|
expect(result.userMessage).toContain("Log in");
|
|
1777
1777
|
});
|
|
1778
1778
|
|
|
1779
|
-
it("classifies platform_unauthenticated as a re-provision hint on a
|
|
1779
|
+
it("classifies platform_unauthenticated as a re-provision hint on a cloud assistant", () => {
|
|
1780
1780
|
const err = new ConnectionResolutionError(
|
|
1781
1781
|
"cadet",
|
|
1782
1782
|
"platform_unauthenticated",
|
|
1783
1783
|
"unavailable",
|
|
1784
1784
|
);
|
|
1785
|
-
process.env.
|
|
1785
|
+
process.env.IS_CLOUD = "true";
|
|
1786
1786
|
try {
|
|
1787
1787
|
const result = classifyConversationError(err, errCtx);
|
|
1788
1788
|
expect(result.userMessage).toContain("re-provisioned");
|
|
1789
1789
|
expect(result.userMessage).not.toContain("Log in");
|
|
1790
1790
|
} finally {
|
|
1791
|
-
delete process.env.
|
|
1791
|
+
delete process.env.IS_CLOUD;
|
|
1792
1792
|
}
|
|
1793
1793
|
});
|
|
1794
1794
|
|
|
@@ -4,10 +4,10 @@ import { afterAll, beforeEach, describe, expect, mock, test } from "bun:test";
|
|
|
4
4
|
// session handler's availability guard. Stand in for a signed-in platform
|
|
5
5
|
// session so the pin path under test is the healthy one — same pattern as
|
|
6
6
|
// inference-profile-session-handler.test.ts.
|
|
7
|
-
mock.module("../providers/
|
|
8
|
-
|
|
7
|
+
mock.module("../providers/cloud-proxy/context.js", () => ({
|
|
8
|
+
resolveCloudProxyContext: async () => ({
|
|
9
9
|
enabled: true,
|
|
10
|
-
|
|
10
|
+
cloudBaseUrl: "https://platform.example",
|
|
11
11
|
assistantApiKey: "key",
|
|
12
12
|
}),
|
|
13
13
|
}));
|
|
@@ -31,7 +31,7 @@ import { waitFor } from "./helpers/wait-for.js";
|
|
|
31
31
|
|
|
32
32
|
await initializeDb();
|
|
33
33
|
|
|
34
|
-
// The Cadet
|
|
34
|
+
// The Cadet Cloud connection row the cloud presets resolve to.
|
|
35
35
|
getDb()
|
|
36
36
|
.insert(providerConnections)
|
|
37
37
|
.values({
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { beforeEach, describe, expect, mock, test } from "bun:test";
|
|
11
11
|
|
|
12
|
+
import { setAllFlagsOnForTesting } from "../__tests__/feature-flag-test-helpers.js";
|
|
12
13
|
import { CompactionCircuit } from "../agent/compaction-circuit.js";
|
|
13
14
|
import type { AgentEvent } from "../agent/loop.js";
|
|
14
15
|
import type { AssistantEvent } from "../api/index.js";
|
|
@@ -23,10 +24,6 @@ mock.module("../providers/registry.js", () => ({
|
|
|
23
24
|
initializeProviders: async () => {},
|
|
24
25
|
}));
|
|
25
26
|
|
|
26
|
-
mock.module("../config/assistant-feature-flags.js", () => ({
|
|
27
|
-
isAssistantFeatureFlagEnabled: () => true,
|
|
28
|
-
}));
|
|
29
|
-
|
|
30
27
|
// The builder under the conversation's control: records the options each
|
|
31
28
|
// build receives and can be made to throw, which is what a wake's prompt
|
|
32
29
|
// sync swallows before running on the previous prompt.
|
|
@@ -189,6 +186,9 @@ function lastBuildDelegation(): unknown {
|
|
|
189
186
|
}
|
|
190
187
|
|
|
191
188
|
beforeEach(() => {
|
|
189
|
+
// Real flag resolution replaces the former blanket module mock.
|
|
190
|
+
setAllFlagsOnForTesting();
|
|
191
|
+
|
|
192
192
|
builtWith = [];
|
|
193
193
|
throwOnBuild = false;
|
|
194
194
|
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { afterAll, beforeEach, describe, expect, mock, test } from "bun:test";
|
|
2
2
|
|
|
3
|
+
import { setAllFlagsOnForTesting } from "../__tests__/feature-flag-test-helpers.js";
|
|
3
4
|
import type { SkillSummary, SkillToolManifest } from "../config/skills.js";
|
|
4
5
|
import { RiskLevel } from "../permissions/types.js";
|
|
5
6
|
import type {
|
|
@@ -260,11 +261,6 @@ mock.module("../skills/version-hash.js", () => ({
|
|
|
260
261
|
},
|
|
261
262
|
}));
|
|
262
263
|
|
|
263
|
-
mock.module("../config/assistant-feature-flags.js", () => ({
|
|
264
|
-
isAssistantFeatureFlagEnabled: () => true,
|
|
265
|
-
loadDefaultsRegistry: () => ({}),
|
|
266
|
-
}));
|
|
267
|
-
|
|
268
264
|
mock.module("../config/skill-state.js", () => ({
|
|
269
265
|
skillFlagKey: (skill: { featureFlag?: string }) =>
|
|
270
266
|
skill.featureFlag || undefined,
|
|
@@ -370,6 +366,9 @@ describe("projectSkillTools", () => {
|
|
|
370
366
|
let sessionState: Map<string, string>;
|
|
371
367
|
|
|
372
368
|
beforeEach(() => {
|
|
369
|
+
// Real flag resolution replaces the former blanket module mock.
|
|
370
|
+
setAllFlagsOnForTesting();
|
|
371
|
+
|
|
373
372
|
mockCatalog = [];
|
|
374
373
|
mockManifests = {};
|
|
375
374
|
mockRegisteredTools = new Map();
|
|
@@ -1233,10 +1232,10 @@ describe("skill_loaded telemetry recording", () => {
|
|
|
1233
1232
|
});
|
|
1234
1233
|
|
|
1235
1234
|
// ---------------------------------------------------------------------------
|
|
1236
|
-
// lastUsedAt stamping on
|
|
1235
|
+
// lastUsedAt stamping on cloud-skill load
|
|
1237
1236
|
// ---------------------------------------------------------------------------
|
|
1238
1237
|
|
|
1239
|
-
describe("lastUsedAt stamping on
|
|
1238
|
+
describe("lastUsedAt stamping on cloud-skill load", () => {
|
|
1240
1239
|
let sessionState: Map<string, string>;
|
|
1241
1240
|
|
|
1242
1241
|
// The projection layer computes `today` from the local clock; mirror that
|
|
@@ -1359,7 +1358,7 @@ describe("lastUsedAt stamping on managed-skill load", () => {
|
|
|
1359
1358
|
expect(recordedLastUsedTouches).toHaveLength(1);
|
|
1360
1359
|
});
|
|
1361
1360
|
|
|
1362
|
-
test("version-hash change re-registers and re-stamps the
|
|
1361
|
+
test("version-hash change re-registers and re-stamps the cloud skill", () => {
|
|
1363
1362
|
mockCatalog = [makeSkill("homemade")];
|
|
1364
1363
|
mockManifests = { homemade: makeManifest(["hm_run"]) };
|
|
1365
1364
|
mockInstallMetas = {
|
|
@@ -57,7 +57,7 @@ describe("/model list", () => {
|
|
|
57
57
|
expect(message).not.toContain("(DeepSeek V4 Flash)");
|
|
58
58
|
});
|
|
59
59
|
|
|
60
|
-
test("descriptions use the
|
|
60
|
+
test("descriptions use the cloud column without a default provider", async () => {
|
|
61
61
|
const message = ((await resolveSlash("/model")) as { message: string })
|
|
62
62
|
.message;
|
|
63
63
|
// The quality tier is the column discriminator now that cost-optimized
|
|
@@ -72,7 +72,7 @@ describe("/model list", () => {
|
|
|
72
72
|
});
|
|
73
73
|
|
|
74
74
|
describe("/model switch", () => {
|
|
75
|
-
test("rejects a
|
|
75
|
+
test("rejects a cloud backup profile as a direct selection", async () => {
|
|
76
76
|
const result = await resolveSlash("/model balanced-backup");
|
|
77
77
|
expect(result.kind).toBe("unknown");
|
|
78
78
|
expect((result as { message: string }).message).toContain(
|
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
* global config speed setting.
|
|
7
7
|
*/
|
|
8
8
|
import { describe, expect, mock, test } from "bun:test";
|
|
9
|
+
import { beforeEach } from "bun:test";
|
|
9
10
|
|
|
11
|
+
import { setAllFlagsOnForTesting } from "../__tests__/feature-flag-test-helpers.js";
|
|
10
12
|
import { CompactionCircuit } from "../agent/compaction-circuit.js";
|
|
11
13
|
import type { AgentEvent, AgentLoopConfig } from "../agent/loop.js";
|
|
12
14
|
import type { AssistantEvent } from "../api/index.js";
|
|
@@ -40,16 +42,6 @@ function seedConfigSpeed(speed: "standard" | "fast"): void {
|
|
|
40
42
|
});
|
|
41
43
|
}
|
|
42
44
|
|
|
43
|
-
// Feature flag mock — fast-mode enabled for all tests in this file.
|
|
44
|
-
mock.module("../config/assistant-feature-flags.js", () => ({
|
|
45
|
-
isAssistantFeatureFlagEnabled: (key: string) => {
|
|
46
|
-
if (key === "fast-mode") {
|
|
47
|
-
return true;
|
|
48
|
-
}
|
|
49
|
-
return true;
|
|
50
|
-
},
|
|
51
|
-
}));
|
|
52
|
-
|
|
53
45
|
mock.module("../prompts/system-prompt.js", () => ({
|
|
54
46
|
buildSystemPrompt: () => "system prompt",
|
|
55
47
|
}));
|
|
@@ -168,6 +160,12 @@ mock.module("../agent/loop.js", () => ({
|
|
|
168
160
|
|
|
169
161
|
import { Conversation } from "../daemon/conversation.js";
|
|
170
162
|
|
|
163
|
+
beforeEach(() => {
|
|
164
|
+
// Real flag resolution — fast-mode (and all registry flags) enabled,
|
|
165
|
+
// replacing the former blanket module mock.
|
|
166
|
+
setAllFlagsOnForTesting();
|
|
167
|
+
});
|
|
168
|
+
|
|
171
169
|
// ---------------------------------------------------------------------------
|
|
172
170
|
// Helpers
|
|
173
171
|
// ---------------------------------------------------------------------------
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { beforeEach, describe, expect, mock, test } from "bun:test";
|
|
15
15
|
|
|
16
|
+
import { setAllFlagsOffForTesting } from "../__tests__/feature-flag-test-helpers.js";
|
|
16
17
|
import { CompactionCircuit } from "../agent/compaction-circuit.js";
|
|
17
18
|
import type { AgentEvent } from "../agent/loop.js";
|
|
18
19
|
import type { AssistantEvent } from "../api/index.js";
|
|
@@ -30,10 +31,6 @@ mock.module("../providers/registry.js", () => ({
|
|
|
30
31
|
initializeProviders: async () => {},
|
|
31
32
|
}));
|
|
32
33
|
|
|
33
|
-
mock.module("../config/assistant-feature-flags.js", () => ({
|
|
34
|
-
isAssistantFeatureFlagEnabled: () => false,
|
|
35
|
-
}));
|
|
36
|
-
|
|
37
34
|
mock.module("../prompts/system-prompt.js", () => ({
|
|
38
35
|
buildSystemPrompt: () => "system prompt",
|
|
39
36
|
}));
|
|
@@ -357,6 +354,9 @@ function baseConversationRow(): Record<string, unknown> {
|
|
|
357
354
|
|
|
358
355
|
describe("Conversation.summarizeUpToMessage", () => {
|
|
359
356
|
beforeEach(() => {
|
|
357
|
+
// Real flag resolution replaces the former blanket module mock.
|
|
358
|
+
setAllFlagsOffForTesting();
|
|
359
|
+
|
|
360
360
|
compactCalls = [];
|
|
361
361
|
slackWatermarkCalls = [];
|
|
362
362
|
mockCompactResult = makeNoopResult();
|
|
@@ -5,7 +5,7 @@ import type { AssistantEvent } from "../api/index.js";
|
|
|
5
5
|
// Analytics consent is granted so recordActivationEvent writes rows.
|
|
6
6
|
let shareAnalytics = true;
|
|
7
7
|
|
|
8
|
-
mock.module("../
|
|
8
|
+
mock.module("../cloud/consent-cache.js", () => ({
|
|
9
9
|
getRawShareAnalytics: () => shareAnalytics,
|
|
10
10
|
}));
|
|
11
11
|
|
|
@@ -8,8 +8,9 @@
|
|
|
8
8
|
* whose persisted write throws (and therefore reverts) must NOT release
|
|
9
9
|
* waiters.
|
|
10
10
|
*/
|
|
11
|
-
import { describe, expect, mock, test } from "bun:test";
|
|
11
|
+
import { beforeEach, describe, expect, mock, test } from "bun:test";
|
|
12
12
|
|
|
13
|
+
import { setAllFlagsOnForTesting } from "../__tests__/feature-flag-test-helpers.js";
|
|
13
14
|
import { CompactionCircuit } from "../agent/compaction-circuit.js";
|
|
14
15
|
import type { AgentEvent } from "../agent/loop.js";
|
|
15
16
|
import type { AssistantEvent } from "../api/index.js";
|
|
@@ -24,10 +25,6 @@ mock.module("../providers/registry.js", () => ({
|
|
|
24
25
|
initializeProviders: async () => {},
|
|
25
26
|
}));
|
|
26
27
|
|
|
27
|
-
mock.module("../config/assistant-feature-flags.js", () => ({
|
|
28
|
-
isAssistantFeatureFlagEnabled: () => true,
|
|
29
|
-
}));
|
|
30
|
-
|
|
31
28
|
mock.module("../prompts/system-prompt.js", () => ({
|
|
32
29
|
buildSystemPrompt: () => "system prompt",
|
|
33
30
|
}));
|
|
@@ -147,6 +144,11 @@ mock.module("../agent/loop.js", () => ({
|
|
|
147
144
|
|
|
148
145
|
import { Conversation } from "../daemon/conversation.js";
|
|
149
146
|
|
|
147
|
+
beforeEach(() => {
|
|
148
|
+
// Real flag resolution replaces the former blanket module mock.
|
|
149
|
+
setAllFlagsOnForTesting();
|
|
150
|
+
});
|
|
151
|
+
|
|
150
152
|
// ---------------------------------------------------------------------------
|
|
151
153
|
// Helpers
|
|
152
154
|
// ---------------------------------------------------------------------------
|
|
@@ -136,31 +136,31 @@ describe("handshake schema includes assistantApiKey", () => {
|
|
|
136
136
|
|
|
137
137
|
describe("update_managed_credential RPC contract", () => {
|
|
138
138
|
test("RPC method constant exists", () => {
|
|
139
|
-
expect(CesRpcMethod.
|
|
139
|
+
expect(CesRpcMethod.UpdateCloudCredential).toBe(
|
|
140
140
|
"update_managed_credential",
|
|
141
141
|
);
|
|
142
142
|
});
|
|
143
143
|
|
|
144
144
|
test("request schema validates correct payload", () => {
|
|
145
|
-
const schema = CesRpcSchemas[CesRpcMethod.
|
|
145
|
+
const schema = CesRpcSchemas[CesRpcMethod.UpdateCloudCredential].request;
|
|
146
146
|
const result = schema.safeParse({ assistantApiKey: "test-key-123" });
|
|
147
147
|
expect(result.success).toBe(true);
|
|
148
148
|
});
|
|
149
149
|
|
|
150
150
|
test("request schema rejects missing assistantApiKey", () => {
|
|
151
|
-
const schema = CesRpcSchemas[CesRpcMethod.
|
|
151
|
+
const schema = CesRpcSchemas[CesRpcMethod.UpdateCloudCredential].request;
|
|
152
152
|
const result = schema.safeParse({});
|
|
153
153
|
expect(result.success).toBe(false);
|
|
154
154
|
});
|
|
155
155
|
|
|
156
156
|
test("response schema validates correct payload", () => {
|
|
157
|
-
const schema = CesRpcSchemas[CesRpcMethod.
|
|
157
|
+
const schema = CesRpcSchemas[CesRpcMethod.UpdateCloudCredential].response;
|
|
158
158
|
const result = schema.safeParse({ updated: true });
|
|
159
159
|
expect(result.success).toBe(true);
|
|
160
160
|
});
|
|
161
161
|
|
|
162
162
|
test("response schema rejects missing updated field", () => {
|
|
163
|
-
const schema = CesRpcSchemas[CesRpcMethod.
|
|
163
|
+
const schema = CesRpcSchemas[CesRpcMethod.UpdateCloudCredential].response;
|
|
164
164
|
const result = schema.safeParse({});
|
|
165
165
|
expect(result.success).toBe(false);
|
|
166
166
|
});
|