@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
|
@@ -12,10 +12,10 @@ export const webhooksHelp: CliCommandHelp = {
|
|
|
12
12
|
Resolves a stable callback URL that external services (Telegram, Twilio,
|
|
13
13
|
email providers, OAuth) should use to reach this assistant.
|
|
14
14
|
|
|
15
|
-
On
|
|
15
|
+
On cloud assistants, this registers a callback route with the
|
|
16
16
|
platform gateway. Otherwise it uses the configured ingress.publicBaseUrl,
|
|
17
|
-
falling back to the
|
|
18
|
-
assistant is connected to the
|
|
17
|
+
falling back to the cloud gateway when no ingress is configured and the
|
|
18
|
+
assistant is connected to the cloud.
|
|
19
19
|
|
|
20
20
|
The webhook path is derived from the type: underscores become path
|
|
21
21
|
separators, prefixed with webhooks/.
|
|
@@ -35,7 +35,7 @@ Examples:
|
|
|
35
35
|
name: "register",
|
|
36
36
|
args: "<type>",
|
|
37
37
|
description:
|
|
38
|
-
"Get a callback URL for a webhook type, registering with the
|
|
38
|
+
"Get a callback URL for a webhook type, registering with the cloud if needed",
|
|
39
39
|
options: [
|
|
40
40
|
{
|
|
41
41
|
flags: "--path <path>",
|
|
@@ -48,12 +48,12 @@ Examples:
|
|
|
48
48
|
},
|
|
49
49
|
],
|
|
50
50
|
helpText: `
|
|
51
|
-
Resolves a callback URL for the given webhook type. On
|
|
52
|
-
assistants (
|
|
51
|
+
Resolves a callback URL for the given webhook type. On cloud-managed
|
|
52
|
+
assistants (IS_CLOUD=true), registers a callback route with the cloud
|
|
53
53
|
gateway and returns the stable external URL. Otherwise it reads
|
|
54
54
|
ingress.publicBaseUrl from config and appends the webhook path. That URL is
|
|
55
55
|
either your own tunnel or the Tunnel URL the gateway publishes. If no
|
|
56
|
-
ingress is configured and the assistant is connected to the
|
|
56
|
+
ingress is configured and the assistant is connected to the cloud
|
|
57
57
|
(via 'assistant cloud connect'), it registers a callback route with the
|
|
58
58
|
platform gateway instead of failing.
|
|
59
59
|
|
|
@@ -84,9 +84,9 @@ Examples:
|
|
|
84
84
|
name: "list",
|
|
85
85
|
description: "List registered webhook callback routes",
|
|
86
86
|
helpText: `
|
|
87
|
-
Lists all webhook callback routes registered with the
|
|
87
|
+
Lists all webhook callback routes registered with the cloud for this
|
|
88
88
|
assistant. Only available when cloud credentials are configured (either
|
|
89
|
-
via
|
|
89
|
+
via IS_CLOUD or 'assistant cloud connect').
|
|
90
90
|
|
|
91
91
|
Self-hosted assistants without cloud credentials do not have a persistent
|
|
92
92
|
webhook registry — use 'assistant webhooks register <type>' to resolve URLs
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Thin IPC wrapper that delegates webhook operations to the daemon.
|
|
5
5
|
*
|
|
6
|
-
* Platform-managed: daemon registers a callback route and returns the
|
|
6
|
+
* Platform-managed: daemon registers a callback route and returns the cloud URL.
|
|
7
7
|
* Self-hosted: daemon resolves ingress.publicBaseUrl and appends the path.
|
|
8
8
|
*/
|
|
9
9
|
|
|
@@ -336,10 +336,10 @@ describe("inspectPlugin", () => {
|
|
|
336
336
|
});
|
|
337
337
|
|
|
338
338
|
test("previews an uninstalled bundled provider offline without fetching GitHub", async () => {
|
|
339
|
-
const savedDisablePlatform = process.env.
|
|
340
|
-
const savedIsPlatform = process.env.
|
|
341
|
-
process.env.
|
|
342
|
-
delete process.env.
|
|
339
|
+
const savedDisablePlatform = process.env.CADET_DISABLE_CLOUD;
|
|
340
|
+
const savedIsPlatform = process.env.IS_CLOUD;
|
|
341
|
+
process.env.CADET_DISABLE_CLOUD = "true";
|
|
342
|
+
delete process.env.IS_CLOUD;
|
|
343
343
|
let fetchCalls = 0;
|
|
344
344
|
const fetch = (async () => {
|
|
345
345
|
fetchCalls += 1;
|
|
@@ -376,14 +376,14 @@ describe("inspectPlugin", () => {
|
|
|
376
376
|
expect(fetchCalls).toBe(0);
|
|
377
377
|
} finally {
|
|
378
378
|
if (savedDisablePlatform === undefined) {
|
|
379
|
-
delete process.env.
|
|
379
|
+
delete process.env.CADET_DISABLE_CLOUD;
|
|
380
380
|
} else {
|
|
381
|
-
process.env.
|
|
381
|
+
process.env.CADET_DISABLE_CLOUD = savedDisablePlatform;
|
|
382
382
|
}
|
|
383
383
|
if (savedIsPlatform === undefined) {
|
|
384
|
-
delete process.env.
|
|
384
|
+
delete process.env.IS_CLOUD;
|
|
385
385
|
} else {
|
|
386
|
-
process.env.
|
|
386
|
+
process.env.IS_CLOUD = savedIsPlatform;
|
|
387
387
|
}
|
|
388
388
|
}
|
|
389
389
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Tests for {@link
|
|
2
|
+
* Tests for {@link installPluginFromCloud}.
|
|
3
3
|
*
|
|
4
|
-
* The
|
|
4
|
+
* The cloud install endpoint is replaced by an in-memory `fetch` fixture
|
|
5
5
|
* that serves a gzipped tarball with the metadata headers (`ETag`,
|
|
6
6
|
* `X-Plugin-Ref`, `X-Plugin-Repo`, `X-Plugin-Source-Path`) the real endpoint
|
|
7
7
|
* sends. No globals are monkey-patched; the workspace plugins dir is injected.
|
|
@@ -17,18 +17,18 @@ import { afterEach, beforeEach, describe, expect, test } from "bun:test";
|
|
|
17
17
|
import { readPluginMcpServers } from "../../../plugins/mcp-servers.js";
|
|
18
18
|
import { PluginManifestError } from "../../../util/plugin-manifest.js";
|
|
19
19
|
import type { FetchLike } from "../fetch-like.js";
|
|
20
|
-
import {
|
|
21
|
-
PluginInstallDeclinedError,
|
|
22
|
-
readInstallMeta,
|
|
23
|
-
} from "../install-from-github.js";
|
|
24
20
|
import {
|
|
25
21
|
extractPluginTarball,
|
|
26
|
-
|
|
22
|
+
installPluginFromCloud,
|
|
27
23
|
PluginArchiveError,
|
|
28
24
|
PluginIntegrityError,
|
|
29
25
|
PluginRateLimitedError,
|
|
30
26
|
PluginTooLargeError,
|
|
31
|
-
} from "../install-from-
|
|
27
|
+
} from "../install-from-cloud.js";
|
|
28
|
+
import {
|
|
29
|
+
PluginInstallDeclinedError,
|
|
30
|
+
readInstallMeta,
|
|
31
|
+
} from "../install-from-github.js";
|
|
32
32
|
|
|
33
33
|
const PLATFORM = "https://platform.test";
|
|
34
34
|
|
|
@@ -89,7 +89,7 @@ interface FetchFixtureOpts {
|
|
|
89
89
|
status?: number;
|
|
90
90
|
/**
|
|
91
91
|
* Serve an uncompressed POSIX tar body while still advertising
|
|
92
|
-
* `Content-Type: application/gzip` (what the
|
|
92
|
+
* `Content-Type: application/gzip` (what the cloud actually does).
|
|
93
93
|
* Defaults to serving a real gzip stream.
|
|
94
94
|
*/
|
|
95
95
|
plainTar?: boolean;
|
|
@@ -144,7 +144,7 @@ const noSleep = async () => {};
|
|
|
144
144
|
|
|
145
145
|
// ─── Success ─────────────────────────────────────────────────────────────────
|
|
146
146
|
|
|
147
|
-
describe("
|
|
147
|
+
describe("installPluginFromCloud — success", () => {
|
|
148
148
|
test("downloads, verifies, and extracts files at the plugin root", async () => {
|
|
149
149
|
const entries: TarEntry[] = [
|
|
150
150
|
{
|
|
@@ -163,11 +163,11 @@ describe("installPluginFromPlatform — success", () => {
|
|
|
163
163
|
repo: "vargasjr-dev/reading-pal",
|
|
164
164
|
});
|
|
165
165
|
|
|
166
|
-
const result = await
|
|
166
|
+
const result = await installPluginFromCloud(
|
|
167
167
|
{ name: "reading-pal" },
|
|
168
168
|
{
|
|
169
169
|
fetch: fetchFn,
|
|
170
|
-
|
|
170
|
+
cloudBaseUrl: PLATFORM,
|
|
171
171
|
workspacePluginsDir: pluginsDir,
|
|
172
172
|
},
|
|
173
173
|
);
|
|
@@ -215,11 +215,11 @@ describe("installPluginFromPlatform — success", () => {
|
|
|
215
215
|
sourcePath: "plugins/openseo",
|
|
216
216
|
});
|
|
217
217
|
|
|
218
|
-
const result = await
|
|
218
|
+
const result = await installPluginFromCloud(
|
|
219
219
|
{ name: "openseo" },
|
|
220
220
|
{
|
|
221
221
|
fetch: fetchFn,
|
|
222
|
-
|
|
222
|
+
cloudBaseUrl: PLATFORM,
|
|
223
223
|
workspacePluginsDir: pluginsDir,
|
|
224
224
|
},
|
|
225
225
|
);
|
|
@@ -258,11 +258,11 @@ describe("installPluginFromPlatform — success", () => {
|
|
|
258
258
|
repo: "example-org/foreign-plugin",
|
|
259
259
|
});
|
|
260
260
|
|
|
261
|
-
const result = await
|
|
261
|
+
const result = await installPluginFromCloud(
|
|
262
262
|
{ name: "foreign-plugin" },
|
|
263
263
|
{
|
|
264
264
|
fetch: fetchFn,
|
|
265
|
-
|
|
265
|
+
cloudBaseUrl: PLATFORM,
|
|
266
266
|
workspacePluginsDir: pluginsDir,
|
|
267
267
|
},
|
|
268
268
|
);
|
|
@@ -290,11 +290,11 @@ describe("installPluginFromPlatform — success", () => {
|
|
|
290
290
|
});
|
|
291
291
|
|
|
292
292
|
await expect(
|
|
293
|
-
|
|
293
|
+
installPluginFromCloud(
|
|
294
294
|
{ name: "invalid-standard" },
|
|
295
295
|
{
|
|
296
296
|
fetch: fetchFn,
|
|
297
|
-
|
|
297
|
+
cloudBaseUrl: PLATFORM,
|
|
298
298
|
workspacePluginsDir: pluginsDir,
|
|
299
299
|
},
|
|
300
300
|
),
|
|
@@ -317,11 +317,11 @@ describe("installPluginFromPlatform — success", () => {
|
|
|
317
317
|
],
|
|
318
318
|
});
|
|
319
319
|
|
|
320
|
-
await
|
|
320
|
+
await installPluginFromCloud(
|
|
321
321
|
{ name: "reading-pal" },
|
|
322
322
|
{
|
|
323
323
|
fetch: fetchFn,
|
|
324
|
-
|
|
324
|
+
cloudBaseUrl: PLATFORM,
|
|
325
325
|
workspacePluginsDir: pluginsDir,
|
|
326
326
|
},
|
|
327
327
|
);
|
|
@@ -342,11 +342,11 @@ describe("installPluginFromPlatform — success", () => {
|
|
|
342
342
|
},
|
|
343
343
|
});
|
|
344
344
|
|
|
345
|
-
await
|
|
345
|
+
await installPluginFromCloud(
|
|
346
346
|
{ name: "reading-pal" },
|
|
347
347
|
{
|
|
348
348
|
fetch: fetchFn,
|
|
349
|
-
|
|
349
|
+
cloudBaseUrl: PLATFORM,
|
|
350
350
|
apiKey: "secret-key",
|
|
351
351
|
workspacePluginsDir: pluginsDir,
|
|
352
352
|
},
|
|
@@ -364,7 +364,7 @@ describe("installPluginFromPlatform — success", () => {
|
|
|
364
364
|
},
|
|
365
365
|
});
|
|
366
366
|
|
|
367
|
-
await
|
|
367
|
+
await installPluginFromCloud(
|
|
368
368
|
{
|
|
369
369
|
name: "reading-pal",
|
|
370
370
|
installationId: "device-1",
|
|
@@ -373,7 +373,7 @@ describe("installPluginFromPlatform — success", () => {
|
|
|
373
373
|
},
|
|
374
374
|
{
|
|
375
375
|
fetch: fetchFn,
|
|
376
|
-
|
|
376
|
+
cloudBaseUrl: PLATFORM,
|
|
377
377
|
workspacePluginsDir: pluginsDir,
|
|
378
378
|
},
|
|
379
379
|
);
|
|
@@ -393,11 +393,11 @@ describe("installPluginFromPlatform — success", () => {
|
|
|
393
393
|
},
|
|
394
394
|
});
|
|
395
395
|
|
|
396
|
-
await
|
|
396
|
+
await installPluginFromCloud(
|
|
397
397
|
{ name: "reading-pal" },
|
|
398
398
|
{
|
|
399
399
|
fetch: fetchFn,
|
|
400
|
-
|
|
400
|
+
cloudBaseUrl: PLATFORM,
|
|
401
401
|
workspacePluginsDir: pluginsDir,
|
|
402
402
|
},
|
|
403
403
|
);
|
|
@@ -414,11 +414,11 @@ describe("installPluginFromPlatform — success", () => {
|
|
|
414
414
|
plainTar: true,
|
|
415
415
|
});
|
|
416
416
|
|
|
417
|
-
const result = await
|
|
417
|
+
const result = await installPluginFromCloud(
|
|
418
418
|
{ name: "reading-pal" },
|
|
419
419
|
{
|
|
420
420
|
fetch: fetchFn,
|
|
421
|
-
|
|
421
|
+
cloudBaseUrl: PLATFORM,
|
|
422
422
|
workspacePluginsDir: pluginsDir,
|
|
423
423
|
},
|
|
424
424
|
);
|
|
@@ -434,7 +434,7 @@ describe("installPluginFromPlatform — success", () => {
|
|
|
434
434
|
|
|
435
435
|
// ─── Integrity ───────────────────────────────────────────────────────────────
|
|
436
436
|
|
|
437
|
-
describe("
|
|
437
|
+
describe("installPluginFromCloud — integrity", () => {
|
|
438
438
|
test("aborts on an ETag sha256 mismatch and writes nothing", async () => {
|
|
439
439
|
const fetchFn = makeInstallFetch({
|
|
440
440
|
entries: [{ name: "plugin.json", content: "{}" }],
|
|
@@ -442,11 +442,11 @@ describe("installPluginFromPlatform — integrity", () => {
|
|
|
442
442
|
});
|
|
443
443
|
|
|
444
444
|
await expect(
|
|
445
|
-
|
|
445
|
+
installPluginFromCloud(
|
|
446
446
|
{ name: "reading-pal" },
|
|
447
447
|
{
|
|
448
448
|
fetch: fetchFn,
|
|
449
|
-
|
|
449
|
+
cloudBaseUrl: PLATFORM,
|
|
450
450
|
workspacePluginsDir: pluginsDir,
|
|
451
451
|
},
|
|
452
452
|
),
|
|
@@ -458,7 +458,7 @@ describe("installPluginFromPlatform — integrity", () => {
|
|
|
458
458
|
|
|
459
459
|
// ─── Staged-install consent ──────────────────────────────────────────────────
|
|
460
460
|
|
|
461
|
-
describe("
|
|
461
|
+
describe("installPluginFromCloud - staged-install consent", () => {
|
|
462
462
|
test("confirmStaged runs over the staged tree; declining leaves nothing behind", async () => {
|
|
463
463
|
const fetchFn = makeInstallFetch({
|
|
464
464
|
entries: [
|
|
@@ -473,11 +473,11 @@ describe("installPluginFromPlatform - staged-install consent", () => {
|
|
|
473
473
|
const stagingDirs: string[] = [];
|
|
474
474
|
|
|
475
475
|
await expect(
|
|
476
|
-
|
|
476
|
+
installPluginFromCloud(
|
|
477
477
|
{ name: "reading-pal" },
|
|
478
478
|
{
|
|
479
479
|
fetch: fetchFn,
|
|
480
|
-
|
|
480
|
+
cloudBaseUrl: PLATFORM,
|
|
481
481
|
workspacePluginsDir: pluginsDir,
|
|
482
482
|
confirmStaged: async (staged) => {
|
|
483
483
|
stagingDirs.push(staged.stagingDir);
|
|
@@ -531,15 +531,15 @@ describe("extractPluginTarball — path traversal", () => {
|
|
|
531
531
|
|
|
532
532
|
// ─── HTTP error handling ─────────────────────────────────────────────────────
|
|
533
533
|
|
|
534
|
-
describe("
|
|
534
|
+
describe("installPluginFromCloud — HTTP errors", () => {
|
|
535
535
|
test("404 → PluginNotFoundError", async () => {
|
|
536
536
|
const fetchFn = makeInstallFetch({ status: 404 });
|
|
537
537
|
await expect(
|
|
538
|
-
|
|
538
|
+
installPluginFromCloud(
|
|
539
539
|
{ name: "missing" },
|
|
540
540
|
{
|
|
541
541
|
fetch: fetchFn,
|
|
542
|
-
|
|
542
|
+
cloudBaseUrl: PLATFORM,
|
|
543
543
|
workspacePluginsDir: pluginsDir,
|
|
544
544
|
},
|
|
545
545
|
),
|
|
@@ -549,11 +549,11 @@ describe("installPluginFromPlatform — HTTP errors", () => {
|
|
|
549
549
|
test("413 → PluginTooLargeError", async () => {
|
|
550
550
|
const fetchFn = makeInstallFetch({ status: 413 });
|
|
551
551
|
await expect(
|
|
552
|
-
|
|
552
|
+
installPluginFromCloud(
|
|
553
553
|
{ name: "huge" },
|
|
554
554
|
{
|
|
555
555
|
fetch: fetchFn,
|
|
556
|
-
|
|
556
|
+
cloudBaseUrl: PLATFORM,
|
|
557
557
|
workspacePluginsDir: pluginsDir,
|
|
558
558
|
},
|
|
559
559
|
),
|
|
@@ -569,11 +569,11 @@ describe("installPluginFromPlatform — HTTP errors", () => {
|
|
|
569
569
|
});
|
|
570
570
|
};
|
|
571
571
|
await expect(
|
|
572
|
-
|
|
572
|
+
installPluginFromCloud(
|
|
573
573
|
{ name: "spammy" },
|
|
574
574
|
{
|
|
575
575
|
fetch: fetchFn,
|
|
576
|
-
|
|
576
|
+
cloudBaseUrl: PLATFORM,
|
|
577
577
|
workspacePluginsDir: pluginsDir,
|
|
578
578
|
maxAttempts: 3,
|
|
579
579
|
sleep: noSleep,
|
|
@@ -595,11 +595,11 @@ describe("installPluginFromPlatform — HTTP errors", () => {
|
|
|
595
595
|
}
|
|
596
596
|
return good(input, init);
|
|
597
597
|
};
|
|
598
|
-
const result = await
|
|
598
|
+
const result = await installPluginFromCloud(
|
|
599
599
|
{ name: "reading-pal" },
|
|
600
600
|
{
|
|
601
601
|
fetch: fetchFn,
|
|
602
|
-
|
|
602
|
+
cloudBaseUrl: PLATFORM,
|
|
603
603
|
workspacePluginsDir: pluginsDir,
|
|
604
604
|
sleep: noSleep,
|
|
605
605
|
},
|
|
@@ -617,11 +617,11 @@ describe("installPluginFromPlatform — HTTP errors", () => {
|
|
|
617
617
|
});
|
|
618
618
|
};
|
|
619
619
|
await expect(
|
|
620
|
-
|
|
620
|
+
installPluginFromCloud(
|
|
621
621
|
{ name: "flaky" },
|
|
622
622
|
{
|
|
623
623
|
fetch: fetchFn,
|
|
624
|
-
|
|
624
|
+
cloudBaseUrl: PLATFORM,
|
|
625
625
|
workspacePluginsDir: pluginsDir,
|
|
626
626
|
maxAttempts: 2,
|
|
627
627
|
sleep: noSleep,
|
|
@@ -634,25 +634,25 @@ describe("installPluginFromPlatform — HTTP errors", () => {
|
|
|
634
634
|
|
|
635
635
|
// ─── Already installed ───────────────────────────────────────────────────────
|
|
636
636
|
|
|
637
|
-
describe("
|
|
637
|
+
describe("installPluginFromCloud — force", () => {
|
|
638
638
|
test("refuses to overwrite an existing install without force", async () => {
|
|
639
639
|
const fetchFn = makeInstallFetch({
|
|
640
640
|
entries: [{ name: "plugin.json", content: "{}" }],
|
|
641
641
|
});
|
|
642
|
-
await
|
|
642
|
+
await installPluginFromCloud(
|
|
643
643
|
{ name: "reading-pal" },
|
|
644
644
|
{
|
|
645
645
|
fetch: fetchFn,
|
|
646
|
-
|
|
646
|
+
cloudBaseUrl: PLATFORM,
|
|
647
647
|
workspacePluginsDir: pluginsDir,
|
|
648
648
|
},
|
|
649
649
|
);
|
|
650
650
|
await expect(
|
|
651
|
-
|
|
651
|
+
installPluginFromCloud(
|
|
652
652
|
{ name: "reading-pal" },
|
|
653
653
|
{
|
|
654
654
|
fetch: fetchFn,
|
|
655
|
-
|
|
655
|
+
cloudBaseUrl: PLATFORM,
|
|
656
656
|
workspacePluginsDir: pluginsDir,
|
|
657
657
|
},
|
|
658
658
|
),
|
|
@@ -663,22 +663,22 @@ describe("installPluginFromPlatform — force", () => {
|
|
|
663
663
|
const first = makeInstallFetch({
|
|
664
664
|
entries: [{ name: "plugin.json", content: '{"v":1}' }],
|
|
665
665
|
});
|
|
666
|
-
await
|
|
666
|
+
await installPluginFromCloud(
|
|
667
667
|
{ name: "reading-pal" },
|
|
668
668
|
{
|
|
669
669
|
fetch: first,
|
|
670
|
-
|
|
670
|
+
cloudBaseUrl: PLATFORM,
|
|
671
671
|
workspacePluginsDir: pluginsDir,
|
|
672
672
|
},
|
|
673
673
|
);
|
|
674
674
|
const second = makeInstallFetch({
|
|
675
675
|
entries: [{ name: "plugin.json", content: '{"v":2}' }],
|
|
676
676
|
});
|
|
677
|
-
const result = await
|
|
677
|
+
const result = await installPluginFromCloud(
|
|
678
678
|
{ name: "reading-pal", force: true },
|
|
679
679
|
{
|
|
680
680
|
fetch: second,
|
|
681
|
-
|
|
681
|
+
cloudBaseUrl: PLATFORM,
|
|
682
682
|
workspacePluginsDir: pluginsDir,
|
|
683
683
|
},
|
|
684
684
|
);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Tests for {@link getPluginCatalog}.
|
|
3
3
|
*
|
|
4
|
-
* Exercises the gate between the
|
|
4
|
+
* Exercises the gate between the cloud fetcher and the bundled reader plus
|
|
5
5
|
* the per-ref TTL cache. Platform paths drive a fake `deps.fetch` returning a
|
|
6
6
|
* `/v1/plugins/` payload (no real network); the offline path reads the bundled
|
|
7
7
|
* manifest and must touch the network zero times.
|
|
@@ -69,16 +69,16 @@ function failingFetch(): { fetch: FetchLike; calls: () => number } {
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
const ORIGINAL_ENV = {
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
IS_CLOUD: process.env.IS_CLOUD,
|
|
73
|
+
CADET_DISABLE_CLOUD: process.env.CADET_DISABLE_CLOUD,
|
|
74
74
|
};
|
|
75
75
|
|
|
76
76
|
describe("getPluginCatalog", () => {
|
|
77
77
|
beforeEach(() => {
|
|
78
78
|
invalidatePluginCatalogCache();
|
|
79
79
|
// Default: platform features enabled (neither flag set).
|
|
80
|
-
delete process.env.
|
|
81
|
-
delete process.env.
|
|
80
|
+
delete process.env.IS_CLOUD;
|
|
81
|
+
delete process.env.CADET_DISABLE_CLOUD;
|
|
82
82
|
});
|
|
83
83
|
|
|
84
84
|
afterEach(() => {
|
|
@@ -92,8 +92,8 @@ describe("getPluginCatalog", () => {
|
|
|
92
92
|
}
|
|
93
93
|
});
|
|
94
94
|
|
|
95
|
-
test("fetches from the
|
|
96
|
-
// GIVEN platform features enabled and a
|
|
95
|
+
test("fetches from the cloud once, then serves cache within the TTL", async () => {
|
|
96
|
+
// GIVEN platform features enabled and a cloud fetcher returning ["a"]
|
|
97
97
|
const { fetch, calls } = platformFetch(["a"]);
|
|
98
98
|
const deps: SearchPluginsDeps = { fetch };
|
|
99
99
|
|
|
@@ -101,7 +101,7 @@ describe("getPluginCatalog", () => {
|
|
|
101
101
|
const first = await getPluginCatalog("main", deps);
|
|
102
102
|
const second = await getPluginCatalog("main", deps);
|
|
103
103
|
|
|
104
|
-
// THEN the
|
|
104
|
+
// THEN the cloud is fetched exactly once — the second call is cached
|
|
105
105
|
expect(calls()).toBe(1);
|
|
106
106
|
expect(first).toEqual(second);
|
|
107
107
|
expect(githubNames(first)).toEqual(["a"]);
|
|
@@ -118,7 +118,7 @@ describe("getPluginCatalog", () => {
|
|
|
118
118
|
invalidatePluginCatalogCache();
|
|
119
119
|
await getPluginCatalog("main", deps);
|
|
120
120
|
|
|
121
|
-
// THEN the
|
|
121
|
+
// THEN the cloud is fetched a second time
|
|
122
122
|
expect(calls()).toBe(2);
|
|
123
123
|
});
|
|
124
124
|
|
|
@@ -133,7 +133,7 @@ describe("getPluginCatalog", () => {
|
|
|
133
133
|
setSystemTime(new Date(BASE_TIME_MS + PLUGIN_CATALOG_CACHE_TTL_MS + 1));
|
|
134
134
|
await getPluginCatalog("main", deps);
|
|
135
135
|
|
|
136
|
-
// THEN the
|
|
136
|
+
// THEN the cloud is fetched again
|
|
137
137
|
expect(calls()).toBe(2);
|
|
138
138
|
});
|
|
139
139
|
|
|
@@ -158,8 +158,8 @@ describe("getPluginCatalog", () => {
|
|
|
158
158
|
|
|
159
159
|
test("reads the bundled catalog with zero network when platform is disabled", async () => {
|
|
160
160
|
// GIVEN platform features disabled (offline / self-hosted)
|
|
161
|
-
process.env.
|
|
162
|
-
delete process.env.
|
|
161
|
+
process.env.CADET_DISABLE_CLOUD = "true";
|
|
162
|
+
delete process.env.IS_CLOUD;
|
|
163
163
|
|
|
164
164
|
const { fetch, calls } = platformFetch(["ignored"]);
|
|
165
165
|
const deps: SearchPluginsDeps = {
|
|
@@ -179,8 +179,8 @@ describe("getPluginCatalog", () => {
|
|
|
179
179
|
});
|
|
180
180
|
|
|
181
181
|
test("applies feature-flag visibility to bundled catalog entries", async () => {
|
|
182
|
-
process.env.
|
|
183
|
-
delete process.env.
|
|
182
|
+
process.env.CADET_DISABLE_CLOUD = "true";
|
|
183
|
+
delete process.env.IS_CLOUD;
|
|
184
184
|
|
|
185
185
|
const { fetch } = platformFetch(["ignored"]);
|
|
186
186
|
const result = await getPluginCatalog("main", {
|
|
@@ -193,8 +193,8 @@ describe("getPluginCatalog", () => {
|
|
|
193
193
|
});
|
|
194
194
|
|
|
195
195
|
test("preserves hidden entries for installed-plugin metadata", async () => {
|
|
196
|
-
process.env.
|
|
197
|
-
delete process.env.
|
|
196
|
+
process.env.CADET_DISABLE_CLOUD = "true";
|
|
197
|
+
delete process.env.IS_CLOUD;
|
|
198
198
|
|
|
199
199
|
const { fetch } = platformFetch(["ignored"]);
|
|
200
200
|
const result = await getPluginCatalogForInstalledMetadata("main", {
|
|
@@ -206,7 +206,7 @@ describe("getPluginCatalog", () => {
|
|
|
206
206
|
});
|
|
207
207
|
|
|
208
208
|
describe("mergePlatformCatalogWithBundledLocals", () => {
|
|
209
|
-
test("adds local packages while keeping a
|
|
209
|
+
test("adds local packages while keeping a cloud row on name collision", () => {
|
|
210
210
|
const platform: PluginCatalog = {
|
|
211
211
|
ref: "main",
|
|
212
212
|
matches: [
|
|
@@ -258,7 +258,7 @@ describe("mergePlatformCatalogWithBundledLocals", () => {
|
|
|
258
258
|
expect(merged.matches[1]?.source.kind).toBe("local");
|
|
259
259
|
expect(merged.ref).toBe("main");
|
|
260
260
|
});
|
|
261
|
-
test("keeps the bundled integration when a
|
|
261
|
+
test("keeps the bundled integration when a cloud row without one shadows it", () => {
|
|
262
262
|
const integration = {
|
|
263
263
|
kind: "mcp",
|
|
264
264
|
displayName: "Fathom",
|
package/src/cli/lib/__tests__/{plugin-catalog-platform.test.ts → plugin-catalog-cloud.test.ts}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Tests for {@link fetchPluginCatalogFromPlatform}.
|
|
3
3
|
*
|
|
4
|
-
* The
|
|
4
|
+
* The cloud `/v1/plugins/` endpoint is replaced with an in-memory fixture
|
|
5
5
|
* passed via the injected `fetch` dependency — no globals are patched. Each
|
|
6
6
|
* case asserts that a well-formed response maps to a sorted match list and that
|
|
7
7
|
* every failure mode throws {@link PluginCatalogUnavailableError} rather than
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
import { describe, expect, test } from "bun:test";
|
|
12
12
|
|
|
13
13
|
import type { FetchLike } from "../fetch-like.js";
|
|
14
|
-
import { fetchPluginCatalogFromPlatform } from "../plugin-catalog-
|
|
14
|
+
import { fetchPluginCatalogFromPlatform } from "../plugin-catalog-cloud.js";
|
|
15
15
|
import { PluginCatalogUnavailableError } from "../search-plugins.js";
|
|
16
16
|
|
|
17
17
|
const SHA_A = "63a91ecadbf4c4719a4602a5abb00883f9966034";
|
|
@@ -32,7 +32,7 @@ describe("buildBundledPluginCatalog", () => {
|
|
|
32
32
|
expect(catalog.ref).toBe("bundled");
|
|
33
33
|
// The catalog dedupes by name (first occurrence wins — see
|
|
34
34
|
// `projectMarketplaceEntries`), so the match count tracks the number of
|
|
35
|
-
// distinct names, not the raw entry count. The
|
|
35
|
+
// distinct names, not the raw entry count. The cloud-generated manifest
|
|
36
36
|
// can carry multiple entries under one name (e.g. a repin that appends a
|
|
37
37
|
// new ref, or an icon-curation pass), and the reader collapses them.
|
|
38
38
|
const uniqueNames = new Set(bundledManifest.plugins.map((p) => p.name));
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* `resolveSourceFromMatch` is exercised as a pure function. The catalog-backed
|
|
5
5
|
* resolvers run against the bundled manifest with platform features disabled
|
|
6
|
-
* (`
|
|
6
|
+
* (`CADET_DISABLE_CLOUD`, zero network), plus a cloud-enabled case that
|
|
7
7
|
* asserts a rejecting catalog fetch propagates rather than resolving to `null`.
|
|
8
8
|
*/
|
|
9
9
|
|
|
@@ -140,14 +140,14 @@ describe("resolveSourceFromMatch", () => {
|
|
|
140
140
|
|
|
141
141
|
describe("catalog-backed resolvers (bundled, offline)", () => {
|
|
142
142
|
const ORIGINAL_ENV = {
|
|
143
|
-
|
|
144
|
-
|
|
143
|
+
IS_CLOUD: process.env.IS_CLOUD,
|
|
144
|
+
CADET_DISABLE_CLOUD: process.env.CADET_DISABLE_CLOUD,
|
|
145
145
|
};
|
|
146
146
|
|
|
147
147
|
beforeEach(() => {
|
|
148
148
|
invalidatePluginCatalogCache();
|
|
149
|
-
process.env.
|
|
150
|
-
delete process.env.
|
|
149
|
+
process.env.CADET_DISABLE_CLOUD = "true";
|
|
150
|
+
delete process.env.IS_CLOUD;
|
|
151
151
|
});
|
|
152
152
|
|
|
153
153
|
afterEach(() => {
|
|
@@ -220,14 +220,14 @@ describe("catalog-backed resolvers (bundled, offline)", () => {
|
|
|
220
220
|
|
|
221
221
|
describe("catalog-backed resolvers (platform enabled)", () => {
|
|
222
222
|
const ORIGINAL_ENV = {
|
|
223
|
-
|
|
224
|
-
|
|
223
|
+
IS_CLOUD: process.env.IS_CLOUD,
|
|
224
|
+
CADET_DISABLE_CLOUD: process.env.CADET_DISABLE_CLOUD,
|
|
225
225
|
};
|
|
226
226
|
|
|
227
227
|
beforeEach(() => {
|
|
228
228
|
invalidatePluginCatalogCache();
|
|
229
|
-
delete process.env.
|
|
230
|
-
delete process.env.
|
|
229
|
+
delete process.env.IS_CLOUD;
|
|
230
|
+
delete process.env.CADET_DISABLE_CLOUD;
|
|
231
231
|
});
|
|
232
232
|
|
|
233
233
|
afterEach(() => {
|