@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
|
@@ -250,7 +250,7 @@ describe("shipped call-site tuning", () => {
|
|
|
250
250
|
expect(resolved.model).not.toBe("jev-latest");
|
|
251
251
|
});
|
|
252
252
|
|
|
253
|
-
test("a BYOK Jev call-site override replaces the
|
|
253
|
+
test("a BYOK Jev call-site override replaces the cloud default", () => {
|
|
254
254
|
const llm = LLMSchema.parse({
|
|
255
255
|
...anthropicDp,
|
|
256
256
|
profiles: {
|
|
@@ -438,7 +438,7 @@ describe("composition", () => {
|
|
|
438
438
|
expect(resolved.provider_connection).toBeUndefined();
|
|
439
439
|
});
|
|
440
440
|
|
|
441
|
-
test("a provider-pinning tweak over the cadet default keeps the
|
|
441
|
+
test("a provider-pinning tweak over the cadet default keeps the cloud routing", () => {
|
|
442
442
|
const llm = LLMSchema.parse({
|
|
443
443
|
callSites: {
|
|
444
444
|
conversationSummarization: {
|
|
@@ -452,7 +452,7 @@ describe("composition", () => {
|
|
|
452
452
|
});
|
|
453
453
|
const resolved = resolveCallSiteConfig("conversationSummarization", llm);
|
|
454
454
|
// The tweak wins the fields it sets; the identity winner contributes its
|
|
455
|
-
// routing through the provider-agnostic
|
|
455
|
+
// routing through the provider-agnostic cloud connection.
|
|
456
456
|
expect(resolved.provider).toBe("anthropic");
|
|
457
457
|
expect(resolved.model).toBe("claude-opus-4-6");
|
|
458
458
|
expect(resolved.provider_connection).toBe("cadet");
|
|
@@ -736,7 +736,7 @@ describe("resolveCallSiteConfig", () => {
|
|
|
736
736
|
expect(resolved.model).toBe(resolveModelIntent("openai", "cost-optimized"));
|
|
737
737
|
});
|
|
738
738
|
|
|
739
|
-
test("BYOK full-workspace: every call site resolves through the default provider, never the
|
|
739
|
+
test("BYOK full-workspace: every call site resolves through the default provider, never the cloud connection", () => {
|
|
740
740
|
const byokConfig = LLMSchema.parse({
|
|
741
741
|
profiles: {
|
|
742
742
|
balanced: { source: "managed", status: "disabled" },
|
|
@@ -59,7 +59,7 @@ describe("LLMSchema fallbackProfile", () => {
|
|
|
59
59
|
expect(result.success).toBe(false);
|
|
60
60
|
});
|
|
61
61
|
|
|
62
|
-
test("rejects a
|
|
62
|
+
test("rejects a cloud default pointing anywhere except its code-owned backup", () => {
|
|
63
63
|
const profileName = DEFAULT_PROFILE_KEYS[0];
|
|
64
64
|
const result = LLMSchema.safeParse({
|
|
65
65
|
profiles: {
|
|
@@ -98,7 +98,7 @@ describe("LLMSchema fallbackProfile", () => {
|
|
|
98
98
|
}
|
|
99
99
|
});
|
|
100
100
|
|
|
101
|
-
test("a code-owned fallback pointer is rejected on a non-
|
|
101
|
+
test("a code-owned fallback pointer is rejected on a non-cloud column", () => {
|
|
102
102
|
const profileName = DEFAULT_PROFILE_KEYS[0];
|
|
103
103
|
for (const provider of ["anthropic", "chatgpt"] as const) {
|
|
104
104
|
const result = LLMSchema.safeParse({
|
|
@@ -115,7 +115,7 @@ describe("LLMSchema fallbackProfile", () => {
|
|
|
115
115
|
const issue = result.error.issues.find((i) =>
|
|
116
116
|
i.path.join(".").endsWith("fallbackProfile"),
|
|
117
117
|
);
|
|
118
|
-
expect(issue?.message).toContain("
|
|
118
|
+
expect(issue?.message).toContain("cloud backup profile");
|
|
119
119
|
expect(issue?.path).toEqual([
|
|
120
120
|
"profiles",
|
|
121
121
|
profileName,
|
|
@@ -130,12 +130,18 @@ describe("LLMSchema fallbackProfile", () => {
|
|
|
130
130
|
unrepresentable: "any",
|
|
131
131
|
io: "input",
|
|
132
132
|
});
|
|
133
|
+
// ProfileEntry carries a named meta id (#172), so zod v4 hoists it into
|
|
134
|
+
// top-level $defs and the profiles record references it by $ref — the
|
|
135
|
+
// fallbackProfile readOnly marker the docs surface lives in the $defs copy.
|
|
133
136
|
expect(json).toMatchObject({
|
|
134
137
|
properties: {
|
|
135
138
|
profiles: {
|
|
136
|
-
additionalProperties: {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
+
additionalProperties: { $ref: "#/$defs/ProfileEntry" },
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
$defs: {
|
|
143
|
+
ProfileEntry: {
|
|
144
|
+
properties: { fallbackProfile: { readOnly: true } },
|
|
139
145
|
},
|
|
140
146
|
},
|
|
141
147
|
});
|
|
@@ -147,7 +153,7 @@ describe("LLMSchema backup profile references vs llm.default", () => {
|
|
|
147
153
|
const managed = { provider: "cadet" } as const;
|
|
148
154
|
const nonManaged = [{ provider: "anthropic" }, { provider: "chatgpt" }];
|
|
149
155
|
|
|
150
|
-
test("activeProfile naming a backup parses on the
|
|
156
|
+
test("activeProfile naming a backup parses on the cloud column", () => {
|
|
151
157
|
const result = LLMSchema.safeParse({
|
|
152
158
|
default: managed,
|
|
153
159
|
activeProfile: backupKey,
|
|
@@ -155,7 +161,7 @@ describe("LLMSchema backup profile references vs llm.default", () => {
|
|
|
155
161
|
expect(result.success).toBe(true);
|
|
156
162
|
});
|
|
157
163
|
|
|
158
|
-
test("activeProfile naming a backup is rejected on a non-
|
|
164
|
+
test("activeProfile naming a backup is rejected on a non-cloud column", () => {
|
|
159
165
|
for (const blob of nonManaged) {
|
|
160
166
|
const result = LLMSchema.safeParse({
|
|
161
167
|
default: blob,
|
|
@@ -166,7 +172,7 @@ describe("LLMSchema backup profile references vs llm.default", () => {
|
|
|
166
172
|
const issue = result.error.issues.find(
|
|
167
173
|
(i) => i.path.join(".") === "activeProfile",
|
|
168
174
|
);
|
|
169
|
-
expect(issue?.message).toContain("
|
|
175
|
+
expect(issue?.message).toContain("cloud backup profile");
|
|
170
176
|
}
|
|
171
177
|
}
|
|
172
178
|
});
|
|
@@ -211,7 +217,7 @@ describe("LLMSchema backup profile references vs llm.default", () => {
|
|
|
211
217
|
const issue = result.error.issues.find(
|
|
212
218
|
(i) => i.path.join(".") === "callSites.recall.profile",
|
|
213
219
|
);
|
|
214
|
-
expect(issue?.message).toContain("
|
|
220
|
+
expect(issue?.message).toContain("cloud backup profile");
|
|
215
221
|
}
|
|
216
222
|
}
|
|
217
223
|
});
|
|
@@ -235,11 +241,11 @@ describe("LLMSchema backup profile references vs llm.default", () => {
|
|
|
235
241
|
}
|
|
236
242
|
});
|
|
237
243
|
|
|
238
|
-
test("an absent blob or a non-matrix provider reads as the
|
|
244
|
+
test("an absent blob or a non-matrix provider reads as the cloud column", () => {
|
|
239
245
|
// An install predating the blob is managed by definition, so an absent
|
|
240
246
|
// `default` keeps its backups referenceable. A provider value with no
|
|
241
247
|
// matrix column (keyless ollama, user-endpoint openai-compatible) is
|
|
242
|
-
// clamped to the
|
|
248
|
+
// clamped to the cloud column at read time rather than failing the
|
|
243
249
|
// blob. A non-string provider is NOT caught — the blob is a plain
|
|
244
250
|
// fragment, so it fails the parse and the loader's leaf recovery strips
|
|
245
251
|
// the bad leaf (covered by the loader tests).
|
|
@@ -269,13 +275,13 @@ describe("LLMSchema backup profile references vs llm.default", () => {
|
|
|
269
275
|
});
|
|
270
276
|
|
|
271
277
|
// A managed install can persist a thin `{ source: "managed" }` stub for a
|
|
272
|
-
// backup key: `
|
|
278
|
+
// backup key: `normalizeCloudProfileWrites` reduces a `config get` ->
|
|
273
279
|
// `config set` echo of the effective profile list to exactly that. The stub
|
|
274
280
|
// holds no body of its own, so it must not carry a reference past the
|
|
275
|
-
// provider gate once the install moves off the
|
|
281
|
+
// provider gate once the install moves off the cloud column.
|
|
276
282
|
const stub = { source: "managed" } as const;
|
|
277
283
|
|
|
278
|
-
test("a
|
|
284
|
+
test("a cloud stub does not keep a backup reference alive off the cloud column", () => {
|
|
279
285
|
for (const blob of nonManaged) {
|
|
280
286
|
const result = LLMSchema.safeParse({
|
|
281
287
|
default: blob,
|
|
@@ -287,12 +293,12 @@ describe("LLMSchema backup profile references vs llm.default", () => {
|
|
|
287
293
|
const issue = result.error.issues.find(
|
|
288
294
|
(i) => i.path.join(".") === "activeProfile",
|
|
289
295
|
);
|
|
290
|
-
expect(issue?.message).toContain("
|
|
296
|
+
expect(issue?.message).toContain("cloud backup profile");
|
|
291
297
|
}
|
|
292
298
|
}
|
|
293
299
|
});
|
|
294
300
|
|
|
295
|
-
test("a
|
|
301
|
+
test("a cloud stub does not keep a call-site pin or mix arm alive either", () => {
|
|
296
302
|
for (const blob of nonManaged) {
|
|
297
303
|
const callSitePin = LLMSchema.safeParse({
|
|
298
304
|
default: blob,
|
|
@@ -318,7 +324,7 @@ describe("LLMSchema backup profile references vs llm.default", () => {
|
|
|
318
324
|
}
|
|
319
325
|
});
|
|
320
326
|
|
|
321
|
-
test("a
|
|
327
|
+
test("a cloud stub does not keep a fallbackProfile pointer alive either", () => {
|
|
322
328
|
for (const blob of nonManaged) {
|
|
323
329
|
const result = LLMSchema.safeParse({
|
|
324
330
|
default: blob,
|
|
@@ -337,7 +343,7 @@ describe("LLMSchema backup profile references vs llm.default", () => {
|
|
|
337
343
|
}
|
|
338
344
|
});
|
|
339
345
|
|
|
340
|
-
test("a
|
|
346
|
+
test("a cloud stub keeps its references valid on the cloud column", () => {
|
|
341
347
|
// The stub stands for a body that does resolve here, so nothing about it
|
|
342
348
|
// makes the reference worse than the unmaterialized case.
|
|
343
349
|
const result = LLMSchema.safeParse({
|
|
@@ -2152,7 +2152,7 @@ describe("recordUsageEvent — assistantVersion stamping", () => {
|
|
|
2152
2152
|
// inserting one through recordUsageEvent and then nulling the
|
|
2153
2153
|
// column out. This mirrors what production rows look like before
|
|
2154
2154
|
// the migration backfills `null`s; the reporter must accept them
|
|
2155
|
-
// and let the
|
|
2155
|
+
// and let the cloud fall back to the envelope's version.
|
|
2156
2156
|
insertEventAt(1000);
|
|
2157
2157
|
const db = getDb();
|
|
2158
2158
|
db.run(`UPDATE llm_usage_events SET assistant_version = NULL`);
|
|
@@ -8,7 +8,7 @@ let TEST_DIR = "";
|
|
|
8
8
|
const seedUpsertSlugs: string[] = [];
|
|
9
9
|
|
|
10
10
|
// Keep bundled skills out of the catalog so the lifecycle assertions only
|
|
11
|
-
// see the
|
|
11
|
+
// see the cloud skills these tests create (default `allowBundled: null`
|
|
12
12
|
// would load every bundled skill).
|
|
13
13
|
setConfig("skills", { allowBundled: [] });
|
|
14
14
|
|
|
@@ -42,12 +42,12 @@ import {
|
|
|
42
42
|
getSkillCapability,
|
|
43
43
|
seedV2SkillEntries,
|
|
44
44
|
} from "../plugins/defaults/memory/substrate/skill-store.js";
|
|
45
|
-
import {
|
|
45
|
+
import { executeDeleteCloudSkill } from "../tools/skills/delete-cloud.js";
|
|
46
46
|
import { skillLoadTool } from "../tools/skills/load.js";
|
|
47
|
-
import {
|
|
47
|
+
import { executeScaffoldCloudSkill } from "../tools/skills/scaffold-cloud.js";
|
|
48
48
|
import type { ToolContext } from "../tools/types.js";
|
|
49
49
|
|
|
50
|
-
/**
|
|
50
|
+
/** scaffold_cloud_skill requires activation hints; a fixed set for tests. */
|
|
51
51
|
const HINTS = ["user asks to run the lifecycle test procedure"];
|
|
52
52
|
|
|
53
53
|
function makeContext(): ToolContext {
|
|
@@ -122,8 +122,8 @@ Run the custom lifecycle verification procedure.
|
|
|
122
122
|
}, 15_000);
|
|
123
123
|
|
|
124
124
|
test("full lifecycle: create skill, verify in catalog and prompt, then delete", async () => {
|
|
125
|
-
// Step 1: Scaffold a
|
|
126
|
-
const scaffoldResult = await
|
|
125
|
+
// Step 1: Scaffold a cloud skill
|
|
126
|
+
const scaffoldResult = await executeScaffoldCloudSkill(
|
|
127
127
|
{
|
|
128
128
|
skill_id: "lifecycle-test",
|
|
129
129
|
name: "Lifecycle Test",
|
|
@@ -158,7 +158,7 @@ Run the custom lifecycle verification procedure.
|
|
|
158
158
|
expect(existsSync(join(TEST_DIR, "skills", "SKILLS.md"))).toBe(false);
|
|
159
159
|
|
|
160
160
|
// Step 4: Delete the skill
|
|
161
|
-
const deleteResult = await
|
|
161
|
+
const deleteResult = await executeDeleteCloudSkill(
|
|
162
162
|
{
|
|
163
163
|
skill_id: "lifecycle-test",
|
|
164
164
|
},
|
|
@@ -183,7 +183,7 @@ Run the custom lifecycle verification procedure.
|
|
|
183
183
|
const ctx = makeContext();
|
|
184
184
|
|
|
185
185
|
// Create initial skill
|
|
186
|
-
await
|
|
186
|
+
await executeScaffoldCloudSkill(
|
|
187
187
|
{
|
|
188
188
|
skill_id: "overwrite-test",
|
|
189
189
|
name: "V1",
|
|
@@ -195,7 +195,7 @@ Run the custom lifecycle verification procedure.
|
|
|
195
195
|
);
|
|
196
196
|
|
|
197
197
|
// Overwrite with updated content
|
|
198
|
-
const result = await
|
|
198
|
+
const result = await executeScaffoldCloudSkill(
|
|
199
199
|
{
|
|
200
200
|
skill_id: "overwrite-test",
|
|
201
201
|
name: "V2",
|
|
@@ -226,7 +226,7 @@ Run the custom lifecycle verification procedure.
|
|
|
226
226
|
});
|
|
227
227
|
|
|
228
228
|
test("delete non-existent skill returns error", async () => {
|
|
229
|
-
const result = await
|
|
229
|
+
const result = await executeDeleteCloudSkill(
|
|
230
230
|
{
|
|
231
231
|
skill_id: "does-not-exist",
|
|
232
232
|
},
|
|
@@ -240,7 +240,7 @@ Run the custom lifecycle verification procedure.
|
|
|
240
240
|
const ctx = makeContext();
|
|
241
241
|
|
|
242
242
|
// Step 1: Scaffold a skill directly
|
|
243
|
-
const scaffoldResult = await
|
|
243
|
+
const scaffoldResult = await executeScaffoldCloudSkill(
|
|
244
244
|
{
|
|
245
245
|
skill_id: "chain-test",
|
|
246
246
|
name: "Chain Test",
|
|
@@ -270,7 +270,7 @@ Run the custom lifecycle verification procedure.
|
|
|
270
270
|
expect(loadContent).toContain("echo chain-test-ok");
|
|
271
271
|
|
|
272
272
|
// Step 3: Clean up
|
|
273
|
-
const deleteResult = await
|
|
273
|
+
const deleteResult = await executeDeleteCloudSkill(
|
|
274
274
|
{ skill_id: "chain-test" },
|
|
275
275
|
ctx,
|
|
276
276
|
);
|
|
@@ -10,8 +10,7 @@ useMemorySecureKeyMap();
|
|
|
10
10
|
mock.module("../config/env-registry.js", () => ({
|
|
11
11
|
getDebugStdoutLogs: () => false,
|
|
12
12
|
getIsContainerized: () => false,
|
|
13
|
-
|
|
14
|
-
isPlatformRemote: () => false,
|
|
13
|
+
getIsCloud: () => false,
|
|
15
14
|
getCpuLimit: () => undefined,
|
|
16
15
|
getMinikubeStorageSize: () => undefined,
|
|
17
16
|
getProfilerRunId: () => undefined,
|
|
@@ -10,8 +10,7 @@ useMemorySecureKeyMap();
|
|
|
10
10
|
mock.module("../config/env-registry.js", () => ({
|
|
11
11
|
getDebugStdoutLogs: () => false,
|
|
12
12
|
getIsContainerized: () => false,
|
|
13
|
-
|
|
14
|
-
isPlatformRemote: () => false,
|
|
13
|
+
getIsCloud: () => false,
|
|
15
14
|
getCpuLimit: () => undefined,
|
|
16
15
|
getMinikubeStorageSize: () => undefined,
|
|
17
16
|
getProfilerRunId: () => undefined,
|
|
@@ -88,7 +88,6 @@ mock.module("../persistence/embeddings/embedding-backend.js", () => ({
|
|
|
88
88
|
|
|
89
89
|
const { ROUTES } =
|
|
90
90
|
await import("../runtime/routes/conversation-query-routes.js");
|
|
91
|
-
const { BadRequestError } = await import("../runtime/routes/errors.js");
|
|
92
91
|
|
|
93
92
|
function findRoute(operationId: string) {
|
|
94
93
|
const route = ROUTES.find((r) => r.operationId === operationId);
|
|
@@ -220,25 +219,30 @@ describe("MCP config secret boundary", () => {
|
|
|
220
219
|
});
|
|
221
220
|
});
|
|
222
221
|
|
|
223
|
-
test("config_patch
|
|
224
|
-
await
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
headers: { Authorization: "Bearer mcp-secret" },
|
|
234
|
-
},
|
|
222
|
+
test("config_patch strips MCP transport headers so generic writes cannot persist plaintext credentials", async () => {
|
|
223
|
+
const result = await configPatchRoute.handler({
|
|
224
|
+
body: {
|
|
225
|
+
mcp: {
|
|
226
|
+
servers: {
|
|
227
|
+
remote: {
|
|
228
|
+
transport: {
|
|
229
|
+
type: "streamable-http",
|
|
230
|
+
url: "https://mcp.example.com",
|
|
231
|
+
headers: { Authorization: "Bearer mcp-secret" },
|
|
235
232
|
},
|
|
236
233
|
},
|
|
237
234
|
},
|
|
238
235
|
},
|
|
239
|
-
}
|
|
240
|
-
)
|
|
241
|
-
|
|
236
|
+
},
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
// `mcp` is not an AssistantConfigSchema key: the write's schema parse
|
|
240
|
+
// strips it, so the secret never reaches disk — and the response's
|
|
241
|
+
// projected workspace view carries no such server either.
|
|
242
|
+
expect(committedRaw()?.mcp).toBeUndefined();
|
|
243
|
+
expect(
|
|
244
|
+
(result as { mcp: { servers: Record<string, unknown> } }).mcp.servers,
|
|
245
|
+
).toEqual({});
|
|
242
246
|
});
|
|
243
247
|
|
|
244
248
|
test("config_patch strips mcp so a full-config round trip cannot write it back", async () => {
|
|
@@ -263,34 +267,34 @@ describe("MCP config secret boundary", () => {
|
|
|
263
267
|
).toEqual({});
|
|
264
268
|
});
|
|
265
269
|
|
|
266
|
-
test("config_set
|
|
267
|
-
await
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
url: "https://mcp.example.com",
|
|
276
|
-
},
|
|
270
|
+
test("config_set drops MCP server writes", async () => {
|
|
271
|
+
const result = await configSetRoute.handler({
|
|
272
|
+
body: {
|
|
273
|
+
path: "mcp.servers",
|
|
274
|
+
value: {
|
|
275
|
+
remote: {
|
|
276
|
+
transport: {
|
|
277
|
+
type: "streamable-http",
|
|
278
|
+
url: "https://mcp.example.com",
|
|
277
279
|
},
|
|
278
280
|
},
|
|
279
281
|
},
|
|
280
|
-
}
|
|
281
|
-
)
|
|
282
|
-
|
|
282
|
+
},
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
expect(result).toEqual({ ok: true });
|
|
286
|
+
expect(committedRaw()?.mcp).toBeUndefined();
|
|
283
287
|
});
|
|
284
288
|
|
|
285
|
-
test("config_set
|
|
286
|
-
await
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
).
|
|
294
|
-
expect(committedRaw()).
|
|
289
|
+
test("config_set drops direct MCP transport header paths", async () => {
|
|
290
|
+
const result = await configSetRoute.handler({
|
|
291
|
+
body: {
|
|
292
|
+
path: "mcp.servers.remote.transport.headers.Authorization",
|
|
293
|
+
value: "Bearer mcp-secret",
|
|
294
|
+
},
|
|
295
|
+
});
|
|
296
|
+
|
|
297
|
+
expect(result).toEqual({ ok: true });
|
|
298
|
+
expect(committedRaw()?.mcp).toBeUndefined();
|
|
295
299
|
});
|
|
296
300
|
});
|
|
@@ -10,8 +10,7 @@ useMemorySecureKeyMap();
|
|
|
10
10
|
mock.module("../config/env-registry.js", () => ({
|
|
11
11
|
getDebugStdoutLogs: () => false,
|
|
12
12
|
getIsContainerized: () => false,
|
|
13
|
-
|
|
14
|
-
isPlatformRemote: () => false,
|
|
13
|
+
getIsCloud: () => false,
|
|
15
14
|
getCpuLimit: () => undefined,
|
|
16
15
|
getMinikubeStorageSize: () => undefined,
|
|
17
16
|
getProfilerRunId: () => undefined,
|
|
@@ -82,16 +82,16 @@ mock.module("../media/image-service.js", () => ({
|
|
|
82
82
|
},
|
|
83
83
|
}));
|
|
84
84
|
|
|
85
|
-
let
|
|
86
|
-
let
|
|
85
|
+
let mockCloudBaseUrl: string | undefined;
|
|
86
|
+
let mockCloudProxyContext = {
|
|
87
87
|
enabled: false,
|
|
88
|
-
|
|
88
|
+
cloudBaseUrl: "",
|
|
89
89
|
assistantApiKey: "",
|
|
90
90
|
};
|
|
91
91
|
|
|
92
|
-
mock.module("../providers/
|
|
93
|
-
|
|
94
|
-
|
|
92
|
+
mock.module("../providers/cloud-proxy/context.js", () => ({
|
|
93
|
+
buildCloudBaseUrl: async () => mockCloudBaseUrl,
|
|
94
|
+
resolveCloudProxyContext: async () => mockCloudProxyContext,
|
|
95
95
|
}));
|
|
96
96
|
|
|
97
97
|
// Import after mocking
|
|
@@ -143,10 +143,10 @@ beforeEach(() => {
|
|
|
143
143
|
lastGenerateCredentials = null;
|
|
144
144
|
lastGenerateRequest = null;
|
|
145
145
|
mockGenerateDelayMs = 0;
|
|
146
|
-
|
|
147
|
-
|
|
146
|
+
mockCloudBaseUrl = undefined;
|
|
147
|
+
mockCloudProxyContext = {
|
|
148
148
|
enabled: false,
|
|
149
|
-
|
|
149
|
+
cloudBaseUrl: "",
|
|
150
150
|
assistantApiKey: "",
|
|
151
151
|
};
|
|
152
152
|
fakeContext = makeContext();
|
|
@@ -161,7 +161,7 @@ describe("image-studio skill script wrapper", () => {
|
|
|
161
161
|
expect(getTool("media_generate_image")).toBeUndefined();
|
|
162
162
|
});
|
|
163
163
|
|
|
164
|
-
test("returns error when no API key and no
|
|
164
|
+
test("returns error when no API key and no cloud proxy", async () => {
|
|
165
165
|
setKey("gemini", undefined);
|
|
166
166
|
|
|
167
167
|
const result = await run({ prompt: "a cat" }, fakeContext);
|
|
@@ -170,12 +170,12 @@ describe("image-studio skill script wrapper", () => {
|
|
|
170
170
|
expect(result.content).toContain("No Gemini API key");
|
|
171
171
|
});
|
|
172
172
|
|
|
173
|
-
test("provider cadet uses
|
|
173
|
+
test("provider cadet uses cloud proxy credentials", async () => {
|
|
174
174
|
seedImageGenService({ provider: "cadet" });
|
|
175
|
-
|
|
176
|
-
|
|
175
|
+
mockCloudBaseUrl = "https://platform.example.com/v1/runtime-proxy/gemini";
|
|
176
|
+
mockCloudProxyContext = {
|
|
177
177
|
enabled: true,
|
|
178
|
-
|
|
178
|
+
cloudBaseUrl: "https://platform.example.com",
|
|
179
179
|
assistantApiKey: "managed-key-123",
|
|
180
180
|
};
|
|
181
181
|
|
|
@@ -185,7 +185,7 @@ describe("image-studio skill script wrapper", () => {
|
|
|
185
185
|
expect(result.content).toContain("Generated 1 image");
|
|
186
186
|
expect(lastGenerateProvider).toBe("gemini");
|
|
187
187
|
expect(lastGenerateCredentials).toEqual({
|
|
188
|
-
type: "
|
|
188
|
+
type: "cloud-proxy",
|
|
189
189
|
assistantApiKey: "managed-key-123",
|
|
190
190
|
baseUrl: "https://platform.example.com/v1/runtime-proxy/gemini",
|
|
191
191
|
});
|
|
@@ -193,9 +193,9 @@ describe("image-studio skill script wrapper", () => {
|
|
|
193
193
|
|
|
194
194
|
test("provider cadet routes managed to the gemini proxy for gemini models", async () => {
|
|
195
195
|
seedImageGenService({ provider: "cadet" });
|
|
196
|
-
|
|
196
|
+
mockCloudProxyContext = {
|
|
197
197
|
enabled: true,
|
|
198
|
-
|
|
198
|
+
cloudBaseUrl: "https://platform.example.com",
|
|
199
199
|
assistantApiKey: "managed-key-123",
|
|
200
200
|
};
|
|
201
201
|
|
|
@@ -204,7 +204,7 @@ describe("image-studio skill script wrapper", () => {
|
|
|
204
204
|
expect(result.isError).toBe(false);
|
|
205
205
|
expect(lastGenerateProvider).toBe("gemini");
|
|
206
206
|
expect(lastGenerateCredentials).toEqual({
|
|
207
|
-
type: "
|
|
207
|
+
type: "cloud-proxy",
|
|
208
208
|
assistantApiKey: "managed-key-123",
|
|
209
209
|
baseUrl: "https://platform.example.com/v1/runtime-proxy/gemini",
|
|
210
210
|
});
|
|
@@ -212,9 +212,9 @@ describe("image-studio skill script wrapper", () => {
|
|
|
212
212
|
|
|
213
213
|
test("provider cadet routes a gpt model to the openai proxy", async () => {
|
|
214
214
|
seedImageGenService({ provider: "cadet", model: "gpt-image-2" });
|
|
215
|
-
|
|
215
|
+
mockCloudProxyContext = {
|
|
216
216
|
enabled: true,
|
|
217
|
-
|
|
217
|
+
cloudBaseUrl: "https://platform.example.com",
|
|
218
218
|
assistantApiKey: "managed-key-123",
|
|
219
219
|
};
|
|
220
220
|
|
|
@@ -223,7 +223,7 @@ describe("image-studio skill script wrapper", () => {
|
|
|
223
223
|
expect(result.isError).toBe(false);
|
|
224
224
|
expect(lastGenerateProvider).toBe("openai");
|
|
225
225
|
expect(lastGenerateCredentials).toEqual({
|
|
226
|
-
type: "
|
|
226
|
+
type: "cloud-proxy",
|
|
227
227
|
assistantApiKey: "managed-key-123",
|
|
228
228
|
baseUrl: "https://platform.example.com/v1/runtime-proxy/openai",
|
|
229
229
|
});
|
|
@@ -238,28 +238,28 @@ describe("image-studio skill script wrapper", () => {
|
|
|
238
238
|
const result = await run({ prompt: "a hippo" }, fakeContext);
|
|
239
239
|
|
|
240
240
|
expect(result.isError).toBe(true);
|
|
241
|
-
expect(result.content).toContain("
|
|
241
|
+
expect(result.content).toContain("Cloud proxy is not available");
|
|
242
242
|
expect(lastGenerateProvider).toBeNull();
|
|
243
243
|
});
|
|
244
244
|
|
|
245
|
-
test("provider cadet returns error when
|
|
245
|
+
test("provider cadet returns error when cloud proxy is unavailable", async () => {
|
|
246
246
|
seedImageGenService({ provider: "cadet" });
|
|
247
247
|
setKey("gemini", "direct-key"); // should be ignored in managed mode
|
|
248
|
-
|
|
248
|
+
mockCloudBaseUrl = undefined;
|
|
249
249
|
|
|
250
250
|
const result = await run({ prompt: "a cat" }, fakeContext);
|
|
251
251
|
|
|
252
252
|
expect(result.isError).toBe(true);
|
|
253
|
-
expect(result.content).toContain("
|
|
253
|
+
expect(result.content).toContain("Cloud proxy is not available");
|
|
254
254
|
});
|
|
255
255
|
|
|
256
256
|
test("your-own mode uses direct API key", async () => {
|
|
257
257
|
seedImageGenService({ provider: "gemini" });
|
|
258
258
|
setKey("gemini", "direct-key");
|
|
259
|
-
|
|
260
|
-
|
|
259
|
+
mockCloudBaseUrl = "https://platform.example.com/v1/runtime-proxy/gemini";
|
|
260
|
+
mockCloudProxyContext = {
|
|
261
261
|
enabled: true,
|
|
262
|
-
|
|
262
|
+
cloudBaseUrl: "https://platform.example.com",
|
|
263
263
|
assistantApiKey: "managed-key-123",
|
|
264
264
|
};
|
|
265
265
|
|
|
@@ -483,12 +483,12 @@ describe("image-studio skill script wrapper", () => {
|
|
|
483
483
|
|
|
484
484
|
test("provider cadet credential error includes guidance not to change service config", async () => {
|
|
485
485
|
seedImageGenService({ provider: "cadet" });
|
|
486
|
-
|
|
486
|
+
mockCloudBaseUrl = undefined;
|
|
487
487
|
|
|
488
488
|
const result = await run({ prompt: "a cat" }, fakeContext);
|
|
489
489
|
|
|
490
490
|
expect(result.isError).toBe(true);
|
|
491
|
-
expect(result.content).toContain("
|
|
491
|
+
expect(result.content).toContain("Cloud proxy is not available");
|
|
492
492
|
expect(result.content).toContain("Report this error to the user as-is");
|
|
493
493
|
expect(result.content).toContain(
|
|
494
494
|
"Do not change service configuration (managed/your-own mode or default provider/model settings)",
|
|
@@ -18,7 +18,7 @@ import { getMemoryConfig } from "../plugins/defaults/memory/config.js";
|
|
|
18
18
|
import { getWorkspaceConfigPath } from "../util/platform.js";
|
|
19
19
|
|
|
20
20
|
const configPath = getWorkspaceConfigPath();
|
|
21
|
-
const savedIsPlatform = process.env.
|
|
21
|
+
const savedIsPlatform = process.env.IS_CLOUD;
|
|
22
22
|
|
|
23
23
|
function writeConfig(value: unknown): void {
|
|
24
24
|
writeFileSync(configPath, JSON.stringify(value, null, 2));
|
|
@@ -26,7 +26,7 @@ function writeConfig(value: unknown): void {
|
|
|
26
26
|
|
|
27
27
|
function resetState(): void {
|
|
28
28
|
rmSync(configPath, { force: true });
|
|
29
|
-
delete process.env.
|
|
29
|
+
delete process.env.IS_CLOUD;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
/** Assert the plugin resolution deep-equals the host loader's slice. */
|
|
@@ -41,7 +41,7 @@ describe("memory config file parity", () => {
|
|
|
41
41
|
afterEach(() => {
|
|
42
42
|
resetState();
|
|
43
43
|
if (savedIsPlatform !== undefined) {
|
|
44
|
-
process.env.
|
|
44
|
+
process.env.IS_CLOUD = savedIsPlatform;
|
|
45
45
|
}
|
|
46
46
|
});
|
|
47
47
|
|
|
@@ -88,14 +88,14 @@ describe("memory config file parity", () => {
|
|
|
88
88
|
});
|
|
89
89
|
|
|
90
90
|
test("platform deployment fill applies when the leaf is absent on disk", () => {
|
|
91
|
-
process.env.
|
|
91
|
+
process.env.IS_CLOUD = "true";
|
|
92
92
|
writeConfig({ memory: {} });
|
|
93
93
|
const memory = expectParity();
|
|
94
94
|
expect(memory.embeddings.provider).toBe("gemini");
|
|
95
95
|
});
|
|
96
96
|
|
|
97
|
-
test("an explicit on-disk provider beats the
|
|
98
|
-
process.env.
|
|
97
|
+
test("an explicit on-disk provider beats the cloud fill", () => {
|
|
98
|
+
process.env.IS_CLOUD = "true";
|
|
99
99
|
writeConfig({ memory: { embeddings: { provider: "openai" } } });
|
|
100
100
|
const memory = expectParity();
|
|
101
101
|
expect(memory.embeddings.provider).toBe("openai");
|
|
@@ -284,8 +284,8 @@ describe("handleMigrationExportToGcs — happy path", () => {
|
|
|
284
284
|
// manifest claims a truthful `secrets_redacted: true` regardless of
|
|
285
285
|
// credential-store state, and the bundle passes validation with
|
|
286
286
|
// `origin.mode: "managed"`.
|
|
287
|
-
const originalIsPlatform = process.env.
|
|
288
|
-
process.env.
|
|
287
|
+
const originalIsPlatform = process.env.IS_CLOUD;
|
|
288
|
+
process.env.IS_CLOUD = "true";
|
|
289
289
|
|
|
290
290
|
let capturedBody: Buffer | undefined;
|
|
291
291
|
const fixture = await startFixtureServer(async (req, res) => {
|
|
@@ -328,9 +328,9 @@ describe("handleMigrationExportToGcs — happy path", () => {
|
|
|
328
328
|
expect(validation.manifest?.secrets_redacted).toBe(true);
|
|
329
329
|
} finally {
|
|
330
330
|
if (originalIsPlatform === undefined) {
|
|
331
|
-
delete process.env.
|
|
331
|
+
delete process.env.IS_CLOUD;
|
|
332
332
|
} else {
|
|
333
|
-
process.env.
|
|
333
|
+
process.env.IS_CLOUD = originalIsPlatform;
|
|
334
334
|
}
|
|
335
335
|
await fixture.close();
|
|
336
336
|
}
|