@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
|
@@ -15,7 +15,7 @@ mock.module("../daemon/skill-memory-refresh.js", () => ({
|
|
|
15
15
|
refreshSkillCapabilityMemories: mockRefreshSkillCapabilityMemories,
|
|
16
16
|
}));
|
|
17
17
|
|
|
18
|
-
import {
|
|
18
|
+
import { executeDeleteCloudSkill } from "../tools/skills/delete-cloud.js";
|
|
19
19
|
import type { ToolContext } from "../tools/types.js";
|
|
20
20
|
|
|
21
21
|
function makeContext(): ToolContext {
|
|
@@ -44,7 +44,7 @@ afterEach(() => {
|
|
|
44
44
|
rmSync(join(TEST_DIR, "skills"), { recursive: true, force: true });
|
|
45
45
|
});
|
|
46
46
|
|
|
47
|
-
describe("
|
|
47
|
+
describe("delete_cloud_skill tool", () => {
|
|
48
48
|
test("keeps legacy index control as a deprecated no-op schema field", () => {
|
|
49
49
|
const tools = JSON.parse(
|
|
50
50
|
readFileSync(
|
|
@@ -56,7 +56,7 @@ describe("delete_managed_skill tool", () => {
|
|
|
56
56
|
),
|
|
57
57
|
);
|
|
58
58
|
const deleteTool = tools.tools.find(
|
|
59
|
-
(tool: { name: string }) => tool.name === "
|
|
59
|
+
(tool: { name: string }) => tool.name === "delete_cloud_skill",
|
|
60
60
|
);
|
|
61
61
|
|
|
62
62
|
expect(deleteTool).toBeDefined();
|
|
@@ -74,7 +74,7 @@ describe("delete_managed_skill tool", () => {
|
|
|
74
74
|
const staleIndex = "- doomed\n- survivor\n";
|
|
75
75
|
writeFileSync(indexPath, staleIndex);
|
|
76
76
|
|
|
77
|
-
const result = await
|
|
77
|
+
const result = await executeDeleteCloudSkill(
|
|
78
78
|
{
|
|
79
79
|
skill_id: "doomed",
|
|
80
80
|
},
|
|
@@ -97,7 +97,7 @@ describe("delete_managed_skill tool", () => {
|
|
|
97
97
|
test("accepts legacy remove_from_index input without returning index metadata", async () => {
|
|
98
98
|
createSkill("legacy-delete");
|
|
99
99
|
|
|
100
|
-
const result = await
|
|
100
|
+
const result = await executeDeleteCloudSkill(
|
|
101
101
|
{
|
|
102
102
|
skill_id: "legacy-delete",
|
|
103
103
|
remove_from_index: true,
|
|
@@ -114,7 +114,7 @@ describe("delete_managed_skill tool", () => {
|
|
|
114
114
|
});
|
|
115
115
|
|
|
116
116
|
test("returns error for non-existent skill", async () => {
|
|
117
|
-
const result = await
|
|
117
|
+
const result = await executeDeleteCloudSkill(
|
|
118
118
|
{
|
|
119
119
|
skill_id: "ghost",
|
|
120
120
|
},
|
|
@@ -127,13 +127,13 @@ describe("delete_managed_skill tool", () => {
|
|
|
127
127
|
});
|
|
128
128
|
|
|
129
129
|
test("rejects missing skill_id", async () => {
|
|
130
|
-
const result = await
|
|
130
|
+
const result = await executeDeleteCloudSkill({}, makeContext());
|
|
131
131
|
expect(result.isError).toBe(true);
|
|
132
132
|
expect(result.content).toContain("skill_id is required");
|
|
133
133
|
});
|
|
134
134
|
|
|
135
135
|
test("rejects invalid skill_id", async () => {
|
|
136
|
-
const result = await
|
|
136
|
+
const result = await executeDeleteCloudSkill(
|
|
137
137
|
{
|
|
138
138
|
skill_id: "../escape",
|
|
139
139
|
},
|
|
@@ -90,7 +90,7 @@ describe("a Discord reply reaches the Discord transport", () => {
|
|
|
90
90
|
test("Discord declines streaming rather than faking it", () => {
|
|
91
91
|
// No primitive exists, so the transport omits the method and the caller
|
|
92
92
|
// sends the finished reply. An implementation here would be a repeated
|
|
93
|
-
// edit, which is the approach the
|
|
93
|
+
// edit, which is the approach the clouds discourage.
|
|
94
94
|
expect(getTransportForCallback(DISCORD_CALLBACK)?.streamReply).toBe(
|
|
95
95
|
undefined,
|
|
96
96
|
);
|
|
@@ -88,7 +88,7 @@ const { __resetDiskUsageCacheForTests, getDiskUsageInfo, parseK8sMemoryBytes } =
|
|
|
88
88
|
const ENV_VARS = [
|
|
89
89
|
"CADET_MINIKUBE_STORAGE_SIZE",
|
|
90
90
|
"IS_CONTAINERIZED",
|
|
91
|
-
"
|
|
91
|
+
"IS_CLOUD",
|
|
92
92
|
] as const;
|
|
93
93
|
|
|
94
94
|
afterAll(() => {
|
|
@@ -211,9 +211,9 @@ describe("disk usage sampler", () => {
|
|
|
211
211
|
);
|
|
212
212
|
});
|
|
213
213
|
|
|
214
|
-
test("does not use du for
|
|
214
|
+
test("does not use du for cloud-managed containerized instances", async () => {
|
|
215
215
|
process.env.IS_CONTAINERIZED = "1";
|
|
216
|
-
process.env.
|
|
216
|
+
process.env.IS_CLOUD = "1";
|
|
217
217
|
const before = statfsSnapshot(PRELOAD_WS);
|
|
218
218
|
const usage = await getDiskUsageInfo();
|
|
219
219
|
const after = statfsSnapshot(PRELOAD_WS);
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* Tests for the email invite adapter.
|
|
3
3
|
*
|
|
4
4
|
* Verifies that the email adapter resolves the assistant's address from the
|
|
5
|
-
* shared registered-inbox reader (the
|
|
5
|
+
* shared registered-inbox reader (the cloud is the only writer of managed
|
|
6
6
|
* inbox registrations) and falls back to `undefined` when no address is
|
|
7
|
-
* registered or the
|
|
7
|
+
* registered or the cloud cannot be asked.
|
|
8
8
|
*/
|
|
9
9
|
import { beforeEach, describe, expect, mock, test } from "bun:test";
|
|
10
10
|
|
|
@@ -49,14 +49,14 @@ describe("emailInviteAdapter", () => {
|
|
|
49
49
|
expect(handle).toBeUndefined();
|
|
50
50
|
});
|
|
51
51
|
|
|
52
|
-
test("returns undefined when the
|
|
52
|
+
test("returns undefined when the cloud is not connected", async () => {
|
|
53
53
|
mockInboxState = { status: "no_platform" };
|
|
54
54
|
|
|
55
55
|
const handle = await resolveAdapterHandle(emailInviteAdapter);
|
|
56
56
|
expect(handle).toBeUndefined();
|
|
57
57
|
});
|
|
58
58
|
|
|
59
|
-
test("returns undefined when the
|
|
59
|
+
test("returns undefined when the cloud cannot be asked", async () => {
|
|
60
60
|
mockInboxState = { status: "unavailable", detail: "HTTP 503" };
|
|
61
61
|
|
|
62
62
|
const handle = await resolveAdapterHandle(emailInviteAdapter);
|
|
@@ -71,7 +71,7 @@ describe("emailInviteAdapter", () => {
|
|
|
71
71
|
});
|
|
72
72
|
|
|
73
73
|
test("a local email.address config value cannot supply the handle", async () => {
|
|
74
|
-
// Registration lives on the
|
|
74
|
+
// Registration lives on the cloud; a stray config value (a key
|
|
75
75
|
// nothing writes) must not surface as the assistant's address.
|
|
76
76
|
setConfig("email", { address: "stale@example.com" });
|
|
77
77
|
mockInboxState = { status: "none" };
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Tests for
|
|
2
|
+
* Tests for cloud proxy Gemini embedding backend selection.
|
|
3
3
|
*
|
|
4
4
|
* Verifies that selectEmbeddingBackend correctly routes through the
|
|
5
|
-
*
|
|
5
|
+
* cloud proxy when cloud proxy prerequisites are satisfied.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import { afterEach, beforeEach, describe, expect, mock, test } from "bun:test";
|
|
9
9
|
|
|
10
|
+
import { setAllFlagsOnForTesting } from "../__tests__/feature-flag-test-helpers.js";
|
|
10
11
|
import { credentialKey } from "../security/credential-key.js";
|
|
11
12
|
import { useMemorySecureKeyMap } from "./helpers/secure-keys.js";
|
|
12
13
|
|
|
@@ -17,20 +18,17 @@ const secureKeys = useMemorySecureKeyMap();
|
|
|
17
18
|
// Mocks — must be before importing the module under test
|
|
18
19
|
// ---------------------------------------------------------------------------
|
|
19
20
|
|
|
20
|
-
// Mutable state for
|
|
21
|
-
let
|
|
21
|
+
// Mutable state for cloud proxy context
|
|
22
|
+
let mockCloudBaseUrl = "";
|
|
22
23
|
// Managed + provider keys live in the real backend's store now.
|
|
23
24
|
const ASSISTANT_API_KEY = credentialKey("cadet", "assistant_api_key");
|
|
24
25
|
|
|
25
26
|
mock.module("../config/env.js", () => ({
|
|
26
|
-
|
|
27
|
+
getCloudBaseUrl: () => mockCloudBaseUrl,
|
|
27
28
|
getOllamaBaseUrlEnv: () => "",
|
|
28
29
|
}));
|
|
29
30
|
|
|
30
31
|
// Feature flag mock — always returns true (flag is GA'ed)
|
|
31
|
-
mock.module("../config/assistant-feature-flags.js", () => ({
|
|
32
|
-
isAssistantFeatureFlagEnabled: () => true,
|
|
33
|
-
}));
|
|
34
32
|
|
|
35
33
|
import type { AssistantConfig } from "../config/types.js";
|
|
36
34
|
import {
|
|
@@ -46,13 +44,13 @@ import { GeminiEmbeddingBackend } from "../persistence/embeddings/embedding-gemi
|
|
|
46
44
|
const PLATFORM_BASE = "https://platform.example.com";
|
|
47
45
|
const MANAGED_API_KEY = "ast-managed-key-123";
|
|
48
46
|
|
|
49
|
-
function
|
|
50
|
-
|
|
47
|
+
function enableCloudProxy() {
|
|
48
|
+
mockCloudBaseUrl = PLATFORM_BASE;
|
|
51
49
|
secureKeys.set(ASSISTANT_API_KEY, MANAGED_API_KEY);
|
|
52
50
|
}
|
|
53
51
|
|
|
54
|
-
function
|
|
55
|
-
|
|
52
|
+
function disableCloudProxy() {
|
|
53
|
+
mockCloudBaseUrl = "";
|
|
56
54
|
secureKeys.delete(ASSISTANT_API_KEY);
|
|
57
55
|
}
|
|
58
56
|
|
|
@@ -88,8 +86,11 @@ function makeConfig(
|
|
|
88
86
|
// ---------------------------------------------------------------------------
|
|
89
87
|
|
|
90
88
|
beforeEach(() => {
|
|
91
|
-
|
|
92
|
-
|
|
89
|
+
// Real flag resolution replaces the former blanket module mock.
|
|
90
|
+
setAllFlagsOnForTesting();
|
|
91
|
+
|
|
92
|
+
disableCloudProxy();
|
|
93
|
+
secureKeys.clear(); // wipe provider keys; disableCloudProxy already cleared the assistant key
|
|
93
94
|
clearEmbeddingBackendCache();
|
|
94
95
|
});
|
|
95
96
|
|
|
@@ -97,9 +98,9 @@ afterEach(() => {
|
|
|
97
98
|
clearEmbeddingBackendCache();
|
|
98
99
|
});
|
|
99
100
|
|
|
100
|
-
describe("
|
|
101
|
-
test("selects
|
|
102
|
-
|
|
101
|
+
describe("cloud proxy Gemini embedding selection", () => {
|
|
102
|
+
test("selects cloud proxy Gemini when proxy context available", async () => {
|
|
103
|
+
enableCloudProxy();
|
|
103
104
|
const config = makeConfig();
|
|
104
105
|
|
|
105
106
|
const { backend, reason } = await selectEmbeddingBackend(config);
|
|
@@ -110,8 +111,8 @@ describe("managed proxy Gemini embedding selection", () => {
|
|
|
110
111
|
expect(reason).toBeNull();
|
|
111
112
|
});
|
|
112
113
|
|
|
113
|
-
test("
|
|
114
|
-
|
|
114
|
+
test("cloud proxy backend uses default 3072 dimensions when geminiDimensions not set", async () => {
|
|
115
|
+
enableCloudProxy();
|
|
115
116
|
const config = makeConfig();
|
|
116
117
|
|
|
117
118
|
const { backend } = await selectEmbeddingBackend(config);
|
|
@@ -123,8 +124,8 @@ describe("managed proxy Gemini embedding selection", () => {
|
|
|
123
124
|
expect(dimensions).toBe(3072);
|
|
124
125
|
});
|
|
125
126
|
|
|
126
|
-
test("
|
|
127
|
-
|
|
127
|
+
test("cloud proxy backend uses explicit geminiDimensions when set", async () => {
|
|
128
|
+
enableCloudProxy();
|
|
128
129
|
const config = makeConfig({ geminiDimensions: 768 });
|
|
129
130
|
|
|
130
131
|
const { backend } = await selectEmbeddingBackend(config);
|
|
@@ -135,20 +136,20 @@ describe("managed proxy Gemini embedding selection", () => {
|
|
|
135
136
|
expect(dimensions).toBe(768);
|
|
136
137
|
});
|
|
137
138
|
|
|
138
|
-
test("
|
|
139
|
-
|
|
139
|
+
test("cloud proxy backend uses cloudBaseUrl (not direct Google API)", async () => {
|
|
140
|
+
enableCloudProxy();
|
|
140
141
|
const config = makeConfig();
|
|
141
142
|
|
|
142
143
|
const { backend } = await selectEmbeddingBackend(config);
|
|
143
144
|
|
|
144
145
|
expect(backend).toBeInstanceOf(GeminiEmbeddingBackend);
|
|
145
|
-
const
|
|
146
|
-
.
|
|
147
|
-
expect(
|
|
146
|
+
const cloudBaseUrl = (backend as unknown as { cloudBaseUrl: string })
|
|
147
|
+
.cloudBaseUrl;
|
|
148
|
+
expect(cloudBaseUrl).toBe(`${PLATFORM_BASE}/v1/runtime-proxy/gemini`);
|
|
148
149
|
});
|
|
149
150
|
|
|
150
|
-
test("falls back to local when
|
|
151
|
-
|
|
151
|
+
test("falls back to local when cloud proxy context unavailable", async () => {
|
|
152
|
+
disableCloudProxy();
|
|
152
153
|
const config = makeConfig();
|
|
153
154
|
|
|
154
155
|
const { backend } = await selectEmbeddingBackend(config);
|
|
@@ -158,20 +159,20 @@ describe("managed proxy Gemini embedding selection", () => {
|
|
|
158
159
|
expect(backend!.provider).toBe("local");
|
|
159
160
|
});
|
|
160
161
|
|
|
161
|
-
test("selects
|
|
162
|
-
|
|
162
|
+
test("selects cloud proxy when provider is explicitly gemini", async () => {
|
|
163
|
+
enableCloudProxy();
|
|
163
164
|
const config = makeConfig({ provider: "gemini" });
|
|
164
165
|
|
|
165
166
|
const { backend } = await selectEmbeddingBackend(config);
|
|
166
167
|
|
|
167
168
|
expect(backend).toBeInstanceOf(GeminiEmbeddingBackend);
|
|
168
|
-
const
|
|
169
|
-
.
|
|
170
|
-
expect(
|
|
169
|
+
const cloudBaseUrl = (backend as unknown as { cloudBaseUrl: string })
|
|
170
|
+
.cloudBaseUrl;
|
|
171
|
+
expect(cloudBaseUrl).toContain("/v1/runtime-proxy/gemini");
|
|
171
172
|
});
|
|
172
173
|
|
|
173
|
-
test("does not use
|
|
174
|
-
|
|
174
|
+
test("does not use cloud proxy when provider is explicitly local", async () => {
|
|
175
|
+
enableCloudProxy();
|
|
175
176
|
const config = makeConfig({ provider: "local" });
|
|
176
177
|
|
|
177
178
|
const { backend } = await selectEmbeddingBackend(config);
|
|
@@ -180,8 +181,8 @@ describe("managed proxy Gemini embedding selection", () => {
|
|
|
180
181
|
expect(backend!.provider).toBe("local");
|
|
181
182
|
});
|
|
182
183
|
|
|
183
|
-
test("does not use
|
|
184
|
-
|
|
184
|
+
test("does not use cloud proxy when provider is explicitly openai", async () => {
|
|
185
|
+
enableCloudProxy();
|
|
185
186
|
secureKeys.set(credentialKey("openai", "api_key"), "user-openai-key");
|
|
186
187
|
const config = makeConfig({ provider: "openai" });
|
|
187
188
|
|
|
@@ -191,8 +192,8 @@ describe("managed proxy Gemini embedding selection", () => {
|
|
|
191
192
|
expect(backend!.provider).toBe("openai");
|
|
192
193
|
});
|
|
193
194
|
|
|
194
|
-
test("direct Gemini key still works without
|
|
195
|
-
|
|
195
|
+
test("direct Gemini key still works without cloud proxy", async () => {
|
|
196
|
+
disableCloudProxy();
|
|
196
197
|
secureKeys.set(credentialKey("gemini", "api_key"), "user-gemini-key");
|
|
197
198
|
const config = makeConfig({ provider: "gemini" });
|
|
198
199
|
|
|
@@ -200,9 +201,9 @@ describe("managed proxy Gemini embedding selection", () => {
|
|
|
200
201
|
|
|
201
202
|
expect(backend).toBeInstanceOf(GeminiEmbeddingBackend);
|
|
202
203
|
expect(backend!.provider).toBe("gemini");
|
|
203
|
-
// Should NOT use
|
|
204
|
-
const
|
|
205
|
-
.
|
|
206
|
-
expect(
|
|
204
|
+
// Should NOT use cloud proxy
|
|
205
|
+
const cloudBaseUrl = (backend as unknown as { cloudBaseUrl?: string })
|
|
206
|
+
.cloudBaseUrl;
|
|
207
|
+
expect(cloudBaseUrl).toBeUndefined();
|
|
207
208
|
});
|
|
208
209
|
});
|
|
@@ -28,7 +28,7 @@ const runDeterministicChecksMock = mock();
|
|
|
28
28
|
const createEventMock = mock();
|
|
29
29
|
const setEventDedupeKeyMock = mock();
|
|
30
30
|
const dispatchDecisionMock = mock();
|
|
31
|
-
const
|
|
31
|
+
const isCloudClientConfiguredMock = mock();
|
|
32
32
|
const writeHomeFeedItemForSignalMock = mock(
|
|
33
33
|
async (..._args: unknown[]) => null,
|
|
34
34
|
);
|
|
@@ -113,15 +113,15 @@ mock.module("../notifications/runtime-dispatch.js", () => ({
|
|
|
113
113
|
dispatchDecision: (...args: unknown[]) => dispatchDecisionMock(...args),
|
|
114
114
|
}));
|
|
115
115
|
|
|
116
|
-
mock.module("../
|
|
116
|
+
mock.module("../cloud/client.js", () => ({
|
|
117
117
|
// The adapter import graph needs the class symbol; nothing in these tests
|
|
118
118
|
// dispatches through it.
|
|
119
|
-
|
|
119
|
+
CadetCloudClient: class {
|
|
120
120
|
static async create(): Promise<null> {
|
|
121
121
|
return null;
|
|
122
122
|
}
|
|
123
123
|
},
|
|
124
|
-
|
|
124
|
+
isCloudClientConfigured: () => isCloudClientConfiguredMock(),
|
|
125
125
|
}));
|
|
126
126
|
|
|
127
127
|
import {
|
|
@@ -141,7 +141,7 @@ beforeEach(() => {
|
|
|
141
141
|
createEventMock.mockReset();
|
|
142
142
|
setEventDedupeKeyMock.mockReset();
|
|
143
143
|
dispatchDecisionMock.mockReset();
|
|
144
|
-
|
|
144
|
+
isCloudClientConfiguredMock.mockReset();
|
|
145
145
|
|
|
146
146
|
createEventMock.mockReturnValue({ id: "evt-1" });
|
|
147
147
|
runDeterministicChecksMock.mockResolvedValue({ passed: true });
|
|
@@ -150,7 +150,7 @@ beforeEach(() => {
|
|
|
150
150
|
reason: "ok",
|
|
151
151
|
deliveryResults: [],
|
|
152
152
|
});
|
|
153
|
-
|
|
153
|
+
isCloudClientConfiguredMock.mockResolvedValue(true);
|
|
154
154
|
enforceRoutingIntentMock.mockImplementation((decision: unknown) => decision);
|
|
155
155
|
});
|
|
156
156
|
|
|
@@ -827,8 +827,8 @@ describe("high/critical urgency channel force", () => {
|
|
|
827
827
|
expect(dispatched.selectedChannels).toEqual(["telegram"]);
|
|
828
828
|
});
|
|
829
829
|
|
|
830
|
-
test("forces only cadet when the
|
|
831
|
-
|
|
830
|
+
test("forces only cadet when the cloud client is not configured", async () => {
|
|
831
|
+
isCloudClientConfiguredMock.mockResolvedValue(false);
|
|
832
832
|
evaluateSignalMock.mockResolvedValue(makeDecision({}));
|
|
833
833
|
|
|
834
834
|
await emitWithUrgency("high");
|
|
@@ -1106,9 +1106,7 @@ describe("emitNotificationSignal From me push defaults", () => {
|
|
|
1106
1106
|
"cadet_allowlist",
|
|
1107
1107
|
])("respects %s policy without adding platform", async (scenario) => {
|
|
1108
1108
|
assistantInitiatedCandidate = scenario !== "noncandidate";
|
|
1109
|
-
|
|
1110
|
-
scenario !== "unconfigured",
|
|
1111
|
-
);
|
|
1109
|
+
isCloudClientConfiguredMock.mockResolvedValue(scenario !== "unconfigured");
|
|
1112
1110
|
evaluateSignalMock.mockResolvedValue({
|
|
1113
1111
|
...decision(scenario === "external_only" ? ["telegram"] : ["cadet"]),
|
|
1114
1112
|
shouldNotify: scenario !== "suppressed",
|
|
@@ -1139,23 +1137,23 @@ describe("emitNotificationSignal From me push defaults", () => {
|
|
|
1139
1137
|
contextPayload: { quiet: true },
|
|
1140
1138
|
});
|
|
1141
1139
|
expect(result.selectedChannels).toEqual(["cadet", "platform", "telegram"]);
|
|
1142
|
-
expect(
|
|
1140
|
+
expect(isCloudClientConfiguredMock).not.toHaveBeenCalled();
|
|
1143
1141
|
expect(dispatchDecisionMock.mock.calls[0]?.[3]).toMatchObject({
|
|
1144
1142
|
assistantInitiatedThread: { platformAdded: false },
|
|
1145
1143
|
});
|
|
1146
1144
|
});
|
|
1147
1145
|
|
|
1148
1146
|
test("probes an unbound platform once across urgency and From me policy", async () => {
|
|
1149
|
-
|
|
1147
|
+
isCloudClientConfiguredMock.mockResolvedValue(false);
|
|
1150
1148
|
const result = await emitNotificationSignal({
|
|
1151
1149
|
...params,
|
|
1152
1150
|
attentionHints: { ...params.attentionHints, urgency: "high" },
|
|
1153
1151
|
});
|
|
1154
1152
|
expect(result.selectedChannels).toEqual(["cadet"]);
|
|
1155
|
-
expect(
|
|
1153
|
+
expect(isCloudClientConfiguredMock).toHaveBeenCalledTimes(1);
|
|
1156
1154
|
});
|
|
1157
1155
|
|
|
1158
|
-
test("preserves preferred external selections while adding the
|
|
1156
|
+
test("preserves preferred external selections while adding the cloud default", async () => {
|
|
1159
1157
|
evaluateSignalMock.mockResolvedValue(decision(["cadet", "telegram"]));
|
|
1160
1158
|
const result = await emitNotificationSignal(params);
|
|
1161
1159
|
expect(result.selectedChannels).toEqual(["cadet", "telegram", "platform"]);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Regression tests for the SSE registration dev-bypass actor principal
|
|
3
3
|
* translation.
|
|
4
4
|
*
|
|
5
|
-
* In `DISABLE_HTTP_AUTH=true` (
|
|
5
|
+
* In `DISABLE_HTTP_AUTH=true` (cloud-managed) deployments the synthetic
|
|
6
6
|
* dev-bypass `AuthContext` injects `actorPrincipalId="dev-bypass"` for every
|
|
7
7
|
* request. Trust resolution still resolves to the real local guardian's
|
|
8
8
|
* principalId via `resolveLocalPrincipalTrustContext`. Without translation,
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
*
|
|
15
15
|
* The events-routes handler translates `"dev-bypass"` to the real guardian's
|
|
16
16
|
* principalId at registration time so both sides agree. This keeps targeted
|
|
17
|
-
* host proxy execution working on Docker /
|
|
17
|
+
* host proxy execution working on Docker / cloud-managed deployments.
|
|
18
18
|
*/
|
|
19
19
|
import { afterAll, beforeEach, describe, expect, mock, test } from "bun:test";
|
|
20
20
|
|
|
@@ -609,7 +609,7 @@ describe("RetryProvider under an open breaker", () => {
|
|
|
609
609
|
expect(shouldSkipPrimary(PRIMARY_ROUTE)).toBe(true);
|
|
610
610
|
});
|
|
611
611
|
|
|
612
|
-
test("a probe refreshes an expired
|
|
612
|
+
test("a probe refreshes an expired cloud credential before judging the route down", async () => {
|
|
613
613
|
// The credential expired during the outage. Without the refresh the probe
|
|
614
614
|
// reads its own 401 as the outage continuing, re-trips, and the route can
|
|
615
615
|
// never come back.
|
|
@@ -624,7 +624,7 @@ describe("RetryProvider under an open breaker", () => {
|
|
|
624
624
|
const route = makeRoute(backup.provider);
|
|
625
625
|
let refreshCalls = 0;
|
|
626
626
|
const wrapped = new RetryProvider(primary.provider, {
|
|
627
|
-
credentialSource: "cadet-
|
|
627
|
+
credentialSource: "cadet-cloud",
|
|
628
628
|
refreshCredentialProvider: async () => {
|
|
629
629
|
refreshCalls += 1;
|
|
630
630
|
return refreshed.provider;
|
|
@@ -868,7 +868,7 @@ describe("RetryProvider under an open breaker", () => {
|
|
|
868
868
|
});
|
|
869
869
|
|
|
870
870
|
test("an upstream outage diverts every model on it", async () => {
|
|
871
|
-
// A
|
|
871
|
+
// A cloud credential rejection indicts the upstream, not one model, so
|
|
872
872
|
// the healthy model is skipped too.
|
|
873
873
|
const primary = primaryProvider(
|
|
874
874
|
() =>
|
|
@@ -879,7 +879,7 @@ describe("RetryProvider under an open breaker", () => {
|
|
|
879
879
|
const backup = backupProvider();
|
|
880
880
|
const route = makeRoute(backup.provider);
|
|
881
881
|
const wrapped = new RetryProvider(primary.provider, {
|
|
882
|
-
credentialSource: "cadet-
|
|
882
|
+
credentialSource: "cadet-cloud",
|
|
883
883
|
refreshCredentialProvider: async () => null,
|
|
884
884
|
resolveFallbackRoute: route.resolveFallbackRoute,
|
|
885
885
|
});
|
|
@@ -1204,7 +1204,7 @@ describe("recovery probe verdicts", () => {
|
|
|
1204
1204
|
describe("retry exhaustion accounting", () => {
|
|
1205
1205
|
/**
|
|
1206
1206
|
* The primary of a probe that uses both of its repairs before failing for
|
|
1207
|
-
* real. The first send is rejected as an expired
|
|
1207
|
+
* real. The first send is rejected as an expired cloud credential, the
|
|
1208
1208
|
* refreshed adapter answers the resend with malformed tool arguments, and the
|
|
1209
1209
|
* corrective resend after that comes back as a stream corruption. Three sends
|
|
1210
1210
|
* are spent by the time the request reaches the ordinary loop, leaving it
|
|
@@ -1245,7 +1245,7 @@ describe("retry exhaustion accounting", () => {
|
|
|
1245
1245
|
const backup = backupProvider();
|
|
1246
1246
|
const route = makeRoute(backup.provider);
|
|
1247
1247
|
const wrapped = new RetryProvider(primary.provider, {
|
|
1248
|
-
credentialSource: "cadet-
|
|
1248
|
+
credentialSource: "cadet-cloud",
|
|
1249
1249
|
refreshCredentialProvider: async () => refreshed.provider,
|
|
1250
1250
|
resolveFallbackRoute: route.resolveFallbackRoute,
|
|
1251
1251
|
});
|
|
@@ -1271,7 +1271,7 @@ describe("retry exhaustion accounting", () => {
|
|
|
1271
1271
|
corruptedStream(),
|
|
1272
1272
|
);
|
|
1273
1273
|
const wrapped = new RetryProvider(primary.provider, {
|
|
1274
|
-
credentialSource: "cadet-
|
|
1274
|
+
credentialSource: "cadet-cloud",
|
|
1275
1275
|
refreshCredentialProvider: async () => refreshed.provider,
|
|
1276
1276
|
resolveFallbackRoute: async () => null,
|
|
1277
1277
|
});
|
|
@@ -41,3 +41,109 @@ export function setOverridesForTesting(
|
|
|
41
41
|
s.overrides = { ...overrides };
|
|
42
42
|
s.fromGateway = true;
|
|
43
43
|
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Registry keys whose `defaultEnabled` is `true`. Tests that previously mocked
|
|
47
|
+
* `isAssistantFeatureFlagEnabled` to a blanket `() => false` must override
|
|
48
|
+
* these explicitly — the real module resolves them to `true` otherwise.
|
|
49
|
+
*/
|
|
50
|
+
export const DEFAULT_ENABLED_FLAG_KEYS: readonly string[] = [
|
|
51
|
+
"in-chat-onboarding-tour",
|
|
52
|
+
"vision-mode",
|
|
53
|
+
"assistant-initiated-threads",
|
|
54
|
+
"experiment-activation-flow-2026-06-03",
|
|
55
|
+
"channel-trust-floors",
|
|
56
|
+
"schedule-result-notify",
|
|
57
|
+
"assistant-reply-push",
|
|
58
|
+
"web-presence-suppression",
|
|
59
|
+
"plugin-schedules",
|
|
60
|
+
"experiment-activation-checklist-2026-09-10",
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Equivalent of a blanket `isAssistantFeatureFlagEnabled: () => false` mock:
|
|
65
|
+
* every default-enabled key is overridden to `false`, so all flags resolve
|
|
66
|
+
* off through the real resolution path.
|
|
67
|
+
*/
|
|
68
|
+
export function setAllFlagsOffForTesting(): void {
|
|
69
|
+
setOverridesForTesting(
|
|
70
|
+
Object.fromEntries(DEFAULT_ENABLED_FLAG_KEYS.map((k) => [k, false])),
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** Every key declared in the feature-flag registry. */
|
|
75
|
+
export const ALL_REGISTRY_FLAG_KEYS: readonly string[] = [
|
|
76
|
+
"interrupt-on-send",
|
|
77
|
+
"in-chat-onboarding-tour",
|
|
78
|
+
"vision-mode",
|
|
79
|
+
"assistant-initiated-threads",
|
|
80
|
+
"experiment-activation-flow-2026-06-03",
|
|
81
|
+
"a2a-channel",
|
|
82
|
+
"settings-developer-nav",
|
|
83
|
+
"cadet-hosted-inference",
|
|
84
|
+
"developer-menu-items",
|
|
85
|
+
"multi-platform-assistant",
|
|
86
|
+
"quick-input",
|
|
87
|
+
"teach",
|
|
88
|
+
"quiet-turn-activity",
|
|
89
|
+
"inline-assistant-intermediates",
|
|
90
|
+
"fast-mode",
|
|
91
|
+
"apple-container",
|
|
92
|
+
"fork-from-message",
|
|
93
|
+
"internal-thread-actions",
|
|
94
|
+
"camera-gate-debug-hud",
|
|
95
|
+
"compaction-playground",
|
|
96
|
+
"app-control",
|
|
97
|
+
"velvet-theme",
|
|
98
|
+
"chat-pull-to-refresh-enabled",
|
|
99
|
+
"preview-channel",
|
|
100
|
+
"rollback-enabled",
|
|
101
|
+
"self-hosted-assistant",
|
|
102
|
+
"paired-devices-ui",
|
|
103
|
+
"settings-sleep-policy",
|
|
104
|
+
"velvet",
|
|
105
|
+
"memory-router-playground",
|
|
106
|
+
"self-intro-greeting",
|
|
107
|
+
"channel-trust-floors",
|
|
108
|
+
"mcp-add-server",
|
|
109
|
+
"mcp-catalog-qa-integrations",
|
|
110
|
+
"os-beta",
|
|
111
|
+
"auto-profile",
|
|
112
|
+
"new-thread-suggestions",
|
|
113
|
+
"account-mfa",
|
|
114
|
+
"chat-credential-reveal",
|
|
115
|
+
"marketing-pricing-takeover",
|
|
116
|
+
"schedule-result-notify",
|
|
117
|
+
"assistant-reply-push",
|
|
118
|
+
"activity-presence-suppression",
|
|
119
|
+
"web-presence-suppression",
|
|
120
|
+
"plugin-schedules",
|
|
121
|
+
"android-avatar-app-icon",
|
|
122
|
+
"push-avatar-sender",
|
|
123
|
+
"local-notification-avatar",
|
|
124
|
+
"channel-conversation-sidecar",
|
|
125
|
+
"monday-oauth",
|
|
126
|
+
"figma-oauth",
|
|
127
|
+
"quickbooks-oauth",
|
|
128
|
+
"shopify-oauth",
|
|
129
|
+
"chatgpt-device-code-login",
|
|
130
|
+
"model-first-profile-create",
|
|
131
|
+
"tunnel-webhooks",
|
|
132
|
+
"experiment-activation-checklist-2026-09-10",
|
|
133
|
+
"send-user-message",
|
|
134
|
+
"session-groups",
|
|
135
|
+
"assistant-desktop",
|
|
136
|
+
"sidebar-done",
|
|
137
|
+
"cadet-trusted-contacts",
|
|
138
|
+
];
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Equivalent of a blanket `isAssistantFeatureFlagEnabled: () => true` mock for
|
|
142
|
+
* every declared registry key (undeclared keys still fail closed, matching the
|
|
143
|
+
* real resolution).
|
|
144
|
+
*/
|
|
145
|
+
export function setAllFlagsOnForTesting(): void {
|
|
146
|
+
setOverridesForTesting(
|
|
147
|
+
Object.fromEntries(ALL_REGISTRY_FLAG_KEYS.map((k) => [k, true])),
|
|
148
|
+
);
|
|
149
|
+
}
|
|
@@ -54,7 +54,7 @@ mock.module("../runtime/sync/sync-publisher.js", () => ({
|
|
|
54
54
|
// ---------------------------------------------------------------------------
|
|
55
55
|
// Track reconcileFlagGatedProfiles calls and let each test control whether it
|
|
56
56
|
// reports a config change, so we can assert the listener broadcasts only when
|
|
57
|
-
// the
|
|
57
|
+
// the cloud profile set actually changes.
|
|
58
58
|
// ---------------------------------------------------------------------------
|
|
59
59
|
let reconcileCallCount = 0;
|
|
60
60
|
let reconcileReturns = false;
|
|
@@ -295,9 +295,9 @@ describe("mapGeminiError", () => {
|
|
|
295
295
|
expect(msg).not.toContain("Please try again");
|
|
296
296
|
});
|
|
297
297
|
|
|
298
|
-
test("maps a
|
|
298
|
+
test("maps a cloud-proxy 402 failure (plain Error) to out-of-credits message", () => {
|
|
299
299
|
const msg = mapGeminiError(
|
|
300
|
-
new Error("
|
|
300
|
+
new Error("Cloud proxy request failed (402): insufficient credits"),
|
|
301
301
|
);
|
|
302
302
|
expect(msg).toContain("out of credits");
|
|
303
303
|
});
|