@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
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* At the default ref, the catalog entry is resolved from the gated plugin
|
|
5
5
|
* catalog (the same source search and install-by-name use): these tests run
|
|
6
|
-
* with platform features disabled (`
|
|
6
|
+
* with platform features disabled (`CADET_DISABLE_CLOUD`) so the catalog is
|
|
7
7
|
* the bundled manifest — real plugin names / pinned SHAs, zero network. An
|
|
8
8
|
* explicit historical `ref` instead reads the GitHub `plugins/marketplace.json`
|
|
9
9
|
* at that revision (a git lookup, matching pin history / inspect). GitHub is
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* - directory listings (`/contents/<path>` → entry array or 404),
|
|
16
16
|
* - raw file downloads (a listing entry's `download_url`).
|
|
17
17
|
*
|
|
18
|
-
* A separate suite drives the
|
|
18
|
+
* A separate suite drives the cloud-enabled path with a failing catalog
|
|
19
19
|
* fetch to prove the detail view degrades (local + repo fallback) on an outage.
|
|
20
20
|
*/
|
|
21
21
|
|
|
@@ -143,8 +143,8 @@ function sha16(buf: Buffer): string {
|
|
|
143
143
|
}
|
|
144
144
|
|
|
145
145
|
const ORIGINAL_ENV = {
|
|
146
|
-
|
|
147
|
-
|
|
146
|
+
IS_CLOUD: process.env.IS_CLOUD,
|
|
147
|
+
CADET_DISABLE_CLOUD: process.env.CADET_DISABLE_CLOUD,
|
|
148
148
|
};
|
|
149
149
|
|
|
150
150
|
function restoreEnv(): void {
|
|
@@ -163,8 +163,8 @@ describe("getPluginDetails (bundled catalog, offline)", () => {
|
|
|
163
163
|
beforeEach(() => {
|
|
164
164
|
workspace = mkdtempSync(join(tmpdir(), "plugin-details-"));
|
|
165
165
|
invalidatePluginCatalogCache();
|
|
166
|
-
process.env.
|
|
167
|
-
delete process.env.
|
|
166
|
+
process.env.CADET_DISABLE_CLOUD = "true";
|
|
167
|
+
delete process.env.IS_CLOUD;
|
|
168
168
|
});
|
|
169
169
|
|
|
170
170
|
afterEach(() => {
|
|
@@ -729,7 +729,7 @@ describe("getPluginDetails (bundled catalog, offline)", () => {
|
|
|
729
729
|
});
|
|
730
730
|
|
|
731
731
|
describe("getPluginDetails (catalog unavailable, platform enabled)", () => {
|
|
732
|
-
// A fetch that always rejects — the
|
|
732
|
+
// A fetch that always rejects — the cloud catalog fetch fails, and no
|
|
733
733
|
// GitHub enrichment should be attempted for the degraded cases below.
|
|
734
734
|
const failingFetch = (async () => {
|
|
735
735
|
throw new Error("network down");
|
|
@@ -738,8 +738,8 @@ describe("getPluginDetails (catalog unavailable, platform enabled)", () => {
|
|
|
738
738
|
beforeEach(() => {
|
|
739
739
|
workspace = mkdtempSync(join(tmpdir(), "plugin-details-"));
|
|
740
740
|
invalidatePluginCatalogCache();
|
|
741
|
-
delete process.env.
|
|
742
|
-
delete process.env.
|
|
741
|
+
delete process.env.IS_CLOUD;
|
|
742
|
+
delete process.env.CADET_DISABLE_CLOUD;
|
|
743
743
|
});
|
|
744
744
|
|
|
745
745
|
afterEach(() => {
|
|
@@ -801,7 +801,7 @@ describe("getPluginDetails (catalog unavailable, platform enabled)", () => {
|
|
|
801
801
|
}
|
|
802
802
|
|
|
803
803
|
test("404s a not-installed plugin whose only catalog row has a malformed source", async () => {
|
|
804
|
-
// GIVEN a
|
|
804
|
+
// GIVEN a cloud catalog row pinned to a mutable ref (not a full SHA) —
|
|
805
805
|
// platform rows are not source-validated, so this reaches the detail view;
|
|
806
806
|
// install-by-name would refuse it
|
|
807
807
|
const fetch = platformCatalogFetch({
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Install-by-name in disable-platform (air-gapped / self-hosted) mode.
|
|
3
3
|
*
|
|
4
|
-
* With `
|
|
4
|
+
* With `CADET_DISABLE_CLOUD=true` there is no platform to serve a verified
|
|
5
5
|
* tarball, so `assistant plugins install <name>` resolves the pin from the
|
|
6
6
|
* bundled marketplace catalog and installs through the trusted GitHub path
|
|
7
7
|
* (`trustedSource`, which preserves the curated adapter stub) — with zero
|
|
8
8
|
* platform calls. A name absent from the bundled catalog fails clearly. With
|
|
9
|
-
* platform features enabled, the
|
|
9
|
+
* platform features enabled, the cloud install endpoint is used unchanged.
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
import {
|
|
@@ -28,7 +28,7 @@ const installPluginCalls: InstallPluginOptions[] = [];
|
|
|
28
28
|
const platformInstallCalls: Array<{ name: string; force?: boolean }> = [];
|
|
29
29
|
|
|
30
30
|
const realGithub = await import("../install-from-github.js");
|
|
31
|
-
const realPlatform = await import("../install-from-
|
|
31
|
+
const realPlatform = await import("../install-from-cloud.js");
|
|
32
32
|
const realCatalogCache = await import("../plugin-catalog-cache.js");
|
|
33
33
|
let platformCatalogSource: PluginMatchSource = {
|
|
34
34
|
kind: "github",
|
|
@@ -51,7 +51,7 @@ mock.module("../install-from-github.js", () => ({
|
|
|
51
51
|
},
|
|
52
52
|
}));
|
|
53
53
|
|
|
54
|
-
mock.module("../install-from-
|
|
54
|
+
mock.module("../install-from-cloud.js", () => ({
|
|
55
55
|
...realPlatform,
|
|
56
56
|
installPluginViaPlatform: async (opts: { name: string; force?: boolean }) => {
|
|
57
57
|
platformInstallCalls.push(opts);
|
|
@@ -104,8 +104,8 @@ async function runInstall(name: string): Promise<void> {
|
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
describe("plugins install by name — disable-platform mode", () => {
|
|
107
|
-
const savedDisable = process.env.
|
|
108
|
-
const savedIsPlatform = process.env.
|
|
107
|
+
const savedDisable = process.env.CADET_DISABLE_CLOUD;
|
|
108
|
+
const savedIsPlatform = process.env.IS_CLOUD;
|
|
109
109
|
const savedExitCode = process.exitCode;
|
|
110
110
|
|
|
111
111
|
beforeEach(() => {
|
|
@@ -123,22 +123,22 @@ describe("plugins install by name — disable-platform mode", () => {
|
|
|
123
123
|
|
|
124
124
|
afterEach(() => {
|
|
125
125
|
if (savedDisable === undefined) {
|
|
126
|
-
delete process.env.
|
|
126
|
+
delete process.env.CADET_DISABLE_CLOUD;
|
|
127
127
|
} else {
|
|
128
|
-
process.env.
|
|
128
|
+
process.env.CADET_DISABLE_CLOUD = savedDisable;
|
|
129
129
|
}
|
|
130
130
|
if (savedIsPlatform === undefined) {
|
|
131
|
-
delete process.env.
|
|
131
|
+
delete process.env.IS_CLOUD;
|
|
132
132
|
} else {
|
|
133
|
-
process.env.
|
|
133
|
+
process.env.IS_CLOUD = savedIsPlatform;
|
|
134
134
|
}
|
|
135
135
|
process.exitCode = savedExitCode;
|
|
136
136
|
mock.restore();
|
|
137
137
|
});
|
|
138
138
|
|
|
139
139
|
test("installs a bundled plugin via the trusted GitHub path with no platform call", async () => {
|
|
140
|
-
process.env.
|
|
141
|
-
delete process.env.
|
|
140
|
+
process.env.CADET_DISABLE_CLOUD = "true";
|
|
141
|
+
delete process.env.IS_CLOUD;
|
|
142
142
|
|
|
143
143
|
await runInstall(BUNDLED_PLUGIN);
|
|
144
144
|
|
|
@@ -159,8 +159,8 @@ describe("plugins install by name — disable-platform mode", () => {
|
|
|
159
159
|
});
|
|
160
160
|
|
|
161
161
|
test("errors clearly for a name absent from the bundled catalog", async () => {
|
|
162
|
-
process.env.
|
|
163
|
-
delete process.env.
|
|
162
|
+
process.env.CADET_DISABLE_CLOUD = "true";
|
|
163
|
+
delete process.env.IS_CLOUD;
|
|
164
164
|
const errSpy = spyOn(console, "error").mockImplementation(() => {});
|
|
165
165
|
|
|
166
166
|
await runInstall("definitely-not-a-real-plugin");
|
|
@@ -173,8 +173,8 @@ describe("plugins install by name — disable-platform mode", () => {
|
|
|
173
173
|
});
|
|
174
174
|
|
|
175
175
|
test("does not install a feature-gated bundled integration", async () => {
|
|
176
|
-
process.env.
|
|
177
|
-
delete process.env.
|
|
176
|
+
process.env.CADET_DISABLE_CLOUD = "true";
|
|
177
|
+
delete process.env.IS_CLOUD;
|
|
178
178
|
|
|
179
179
|
await runInstall("gamma");
|
|
180
180
|
|
|
@@ -183,9 +183,9 @@ describe("plugins install by name — disable-platform mode", () => {
|
|
|
183
183
|
expect(process.exitCode).toBe(1);
|
|
184
184
|
});
|
|
185
185
|
|
|
186
|
-
test("uses the
|
|
187
|
-
delete process.env.
|
|
188
|
-
delete process.env.
|
|
186
|
+
test("uses the cloud install endpoint when platform features are enabled", async () => {
|
|
187
|
+
delete process.env.CADET_DISABLE_CLOUD;
|
|
188
|
+
delete process.env.IS_CLOUD;
|
|
189
189
|
|
|
190
190
|
await runInstall(BUNDLED_PLUGIN);
|
|
191
191
|
|
|
@@ -196,8 +196,8 @@ describe("plugins install by name — disable-platform mode", () => {
|
|
|
196
196
|
});
|
|
197
197
|
|
|
198
198
|
test("does not install a name absent from a successful platform catalog", async () => {
|
|
199
|
-
delete process.env.
|
|
200
|
-
delete process.env.
|
|
199
|
+
delete process.env.CADET_DISABLE_CLOUD;
|
|
200
|
+
delete process.env.IS_CLOUD;
|
|
201
201
|
const errSpy = spyOn(console, "error").mockImplementation(() => {});
|
|
202
202
|
|
|
203
203
|
await runInstall("gamma");
|
|
@@ -210,9 +210,9 @@ describe("plugins install by name — disable-platform mode", () => {
|
|
|
210
210
|
);
|
|
211
211
|
});
|
|
212
212
|
|
|
213
|
-
test("installs a
|
|
214
|
-
delete process.env.
|
|
215
|
-
delete process.env.
|
|
213
|
+
test("installs a cloud-visible local package without the cloud tar endpoint", async () => {
|
|
214
|
+
delete process.env.CADET_DISABLE_CLOUD;
|
|
215
|
+
delete process.env.IS_CLOUD;
|
|
216
216
|
platformCatalogSource = {
|
|
217
217
|
kind: "local",
|
|
218
218
|
path: "plugins/mcp-catalog/fathom",
|
|
@@ -611,7 +611,7 @@
|
|
|
611
611
|
"repo": "vargasjr-dev/cadet-client-qa",
|
|
612
612
|
"ref": "4f559d865eaa04b68285f8e4fae4a05fc18fe88f"
|
|
613
613
|
},
|
|
614
|
-
"description": "Cross-platform QA rig for mycadet clients: mock the
|
|
614
|
+
"description": "Cross-platform QA rig for mycadet clients: mock the cloud backend, boot the real chat UI, and verify feature branches in headless Chromium (web), an iOS simulator, or Electron with screenshot and video proof.",
|
|
615
615
|
"category": "developer",
|
|
616
616
|
"homepage": "https://github.com/vargasjr-dev/cadet-client-qa",
|
|
617
617
|
"license": "MIT",
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
readInstalledPlugin,
|
|
31
31
|
} from "./list-installed-plugins.js";
|
|
32
32
|
import {
|
|
33
|
-
|
|
33
|
+
areCloudFeaturesEnabled,
|
|
34
34
|
readBundledLocalPluginCatalog,
|
|
35
35
|
} from "./plugin-catalog-local.js";
|
|
36
36
|
import { isPluginCatalogEntryVisible } from "./plugin-catalog-visibility.js";
|
|
@@ -348,7 +348,7 @@ export async function inspectPlugin(
|
|
|
348
348
|
let remoteError: string | null = null;
|
|
349
349
|
const installedLocalSource = local?.source?.kind === "local";
|
|
350
350
|
const useBundledLocalCatalog =
|
|
351
|
-
installedLocalSource || (!installed && !
|
|
351
|
+
installedLocalSource || (!installed && !areCloudFeaturesEnabled());
|
|
352
352
|
try {
|
|
353
353
|
if (useBundledLocalCatalog) {
|
|
354
354
|
const catalog = deps.localCatalog ?? readBundledLocalPluginCatalog();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Install a plugin by name from the
|
|
2
|
+
* Install a plugin by name from the cloud's public install endpoint.
|
|
3
3
|
*
|
|
4
|
-
* Plugin installs are
|
|
4
|
+
* Plugin installs are cloud-managed and content flows *through* the cloud
|
|
5
5
|
* (npm-style): the endpoint assembles a `.tgz` of the plugin's files from the
|
|
6
6
|
* pinned commit, server-side, and serves it as `application/gzip`. The daemon
|
|
7
7
|
* downloads that tarball, verifies its integrity against the `ETag` sha256,
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* {@link ./install-from-github}). The CLI command `assistant plugins install
|
|
22
22
|
* <name>` calls {@link installPluginViaPlatform}, which resolves production
|
|
23
23
|
* deps (platform base URL, optional API key, attribution) and delegates to
|
|
24
|
-
* {@link
|
|
24
|
+
* {@link installPluginFromCloud}.
|
|
25
25
|
*/
|
|
26
26
|
|
|
27
27
|
import { createHash } from "node:crypto";
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
MALFORMED_USTAR_SIZE,
|
|
34
34
|
parseUstarSizeField,
|
|
35
35
|
} from "../../archive/ustar-size.js";
|
|
36
|
-
import {
|
|
36
|
+
import { getCloudBaseUrl } from "../../config/env.js";
|
|
37
37
|
import { getExistingDeviceId } from "../../util/device-id.js";
|
|
38
38
|
import { getWorkspacePluginsDir } from "../../util/platform.js";
|
|
39
39
|
import { getPluginManifestInstallAction } from "../../util/plugin-manifest.js";
|
|
@@ -87,11 +87,11 @@ export class PluginArchiveError extends Error {
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
/** The plugin exceeds the
|
|
90
|
+
/** The plugin exceeds the cloud's install size cap (HTTP 413). */
|
|
91
91
|
export class PluginTooLargeError extends Error {
|
|
92
92
|
constructor(readonly pluginName: string) {
|
|
93
93
|
super(
|
|
94
|
-
`Plugin "${pluginName}" is too large to install (the
|
|
94
|
+
`Plugin "${pluginName}" is too large to install (the cloud enforces a size cap).`,
|
|
95
95
|
);
|
|
96
96
|
this.name = "PluginTooLargeError";
|
|
97
97
|
}
|
|
@@ -108,7 +108,7 @@ export class PluginRateLimitedError extends Error {
|
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
/** Options controlling which plugin to install and how. */
|
|
111
|
-
export interface
|
|
111
|
+
export interface InstallFromCloudOptions {
|
|
112
112
|
readonly name: string;
|
|
113
113
|
/** Overwrite an existing install in place. Preserved on disk until download+verify succeed. */
|
|
114
114
|
readonly force?: boolean;
|
|
@@ -121,11 +121,11 @@ export interface InstallFromPlatformOptions {
|
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
/** Dependencies injected by the caller. */
|
|
124
|
-
export interface
|
|
124
|
+
export interface InstallFromCloudDeps {
|
|
125
125
|
/** HTTP client. Production callers pass `globalThis.fetch.bind(globalThis)`. */
|
|
126
126
|
readonly fetch: FetchLike;
|
|
127
127
|
/** Platform base URL (no trailing slash required). */
|
|
128
|
-
readonly
|
|
128
|
+
readonly cloudBaseUrl: string;
|
|
129
129
|
/** Assistant API key. When present the install is attributed to the real user/org. */
|
|
130
130
|
readonly apiKey?: string;
|
|
131
131
|
/** Override the workspace plugins directory. Falls back to {@link getWorkspacePluginsDir}. */
|
|
@@ -160,16 +160,16 @@ const defaultSleep = (ms: number): Promise<void> =>
|
|
|
160
160
|
new Promise((r) => setTimeout(r, ms));
|
|
161
161
|
|
|
162
162
|
/**
|
|
163
|
-
* Download, verify, and extract a plugin from the
|
|
163
|
+
* Download, verify, and extract a plugin from the cloud install endpoint.
|
|
164
164
|
*
|
|
165
165
|
* Staging mirrors {@link installPlugin}: the tree is extracted into a sibling
|
|
166
166
|
* staging dir and only swapped into `<pluginsDir>/<name>` once the download,
|
|
167
167
|
* integrity check, and extraction all succeed — so a transient failure leaves
|
|
168
168
|
* a previously installed copy untouched even under `force`.
|
|
169
169
|
*/
|
|
170
|
-
export async function
|
|
171
|
-
opts:
|
|
172
|
-
deps:
|
|
170
|
+
export async function installPluginFromCloud(
|
|
171
|
+
opts: InstallFromCloudOptions,
|
|
172
|
+
deps: InstallFromCloudDeps,
|
|
173
173
|
): Promise<InstallPluginResult> {
|
|
174
174
|
const name = sanitizePluginName(opts.name);
|
|
175
175
|
const force = opts.force ?? false;
|
|
@@ -240,10 +240,10 @@ export async function installPluginFromPlatform(
|
|
|
240
240
|
}
|
|
241
241
|
|
|
242
242
|
/**
|
|
243
|
-
* Resolve production deps and install `name` from the
|
|
243
|
+
* Resolve production deps and install `name` from the cloud endpoint.
|
|
244
244
|
*
|
|
245
245
|
* The CLI command `assistant plugins install <name>` calls this. It resolves
|
|
246
|
-
* the
|
|
246
|
+
* the cloud base URL the daemon already uses, sends the assistant API key
|
|
247
247
|
* when one is configured (attributing the install to the real user/org, else
|
|
248
248
|
* anonymous), and forwards best-effort attribution (`installation_id`,
|
|
249
249
|
* `assistant_version`).
|
|
@@ -252,11 +252,11 @@ export async function installPluginViaPlatform(
|
|
|
252
252
|
opts: { name: string; force?: boolean; conversationId?: string },
|
|
253
253
|
deps: { fetch: FetchLike; confirmStaged?: ConfirmStagedInstall },
|
|
254
254
|
): Promise<InstallPluginResult> {
|
|
255
|
-
const
|
|
255
|
+
const cloudBaseUrl = getCloudBaseUrl();
|
|
256
256
|
const apiKey = await resolveAssistantApiKey();
|
|
257
257
|
const installationId = getExistingDeviceId() ?? undefined;
|
|
258
258
|
|
|
259
|
-
return
|
|
259
|
+
return installPluginFromCloud(
|
|
260
260
|
{
|
|
261
261
|
name: opts.name,
|
|
262
262
|
force: opts.force,
|
|
@@ -266,7 +266,7 @@ export async function installPluginViaPlatform(
|
|
|
266
266
|
},
|
|
267
267
|
{
|
|
268
268
|
fetch: deps.fetch,
|
|
269
|
-
|
|
269
|
+
cloudBaseUrl,
|
|
270
270
|
...(apiKey ? { apiKey } : {}),
|
|
271
271
|
...(deps.confirmStaged ? { confirmStaged: deps.confirmStaged } : {}),
|
|
272
272
|
},
|
|
@@ -276,12 +276,12 @@ export async function installPluginViaPlatform(
|
|
|
276
276
|
/**
|
|
277
277
|
* Best-effort resolution of the assistant API key through the authorized
|
|
278
278
|
* platform client (the same credential path `plugins publish` uses); the
|
|
279
|
-
* install proceeds anonymously when the daemon isn't connected to the
|
|
279
|
+
* install proceeds anonymously when the daemon isn't connected to the cloud.
|
|
280
280
|
*/
|
|
281
281
|
async function resolveAssistantApiKey(): Promise<string | undefined> {
|
|
282
282
|
try {
|
|
283
|
-
const {
|
|
284
|
-
const client = await
|
|
283
|
+
const { CadetCloudClient } = await import("../../cloud/client.js");
|
|
284
|
+
const client = await CadetCloudClient.create();
|
|
285
285
|
return client?.assistantApiKey || undefined;
|
|
286
286
|
} catch {
|
|
287
287
|
return undefined;
|
|
@@ -294,12 +294,12 @@ async function resolveAssistantApiKey(): Promise<string | undefined> {
|
|
|
294
294
|
*/
|
|
295
295
|
async function downloadInstallArchive(
|
|
296
296
|
name: string,
|
|
297
|
-
opts:
|
|
298
|
-
deps:
|
|
297
|
+
opts: InstallFromCloudOptions,
|
|
298
|
+
deps: InstallFromCloudDeps,
|
|
299
299
|
): Promise<{ body: Buffer; meta: InstallResponseMeta }> {
|
|
300
|
-
const url = buildInstallUrl(deps.
|
|
300
|
+
const url = buildInstallUrl(deps.cloudBaseUrl, name, opts);
|
|
301
301
|
const headers: Record<string, string> = {
|
|
302
|
-
// The
|
|
302
|
+
// The cloud (Django) 406s a specific `application/gzip` Accept, so ask
|
|
303
303
|
// for anything and sniff the body ourselves (see extractPluginTarball).
|
|
304
304
|
Accept: "*/*",
|
|
305
305
|
"User-Agent": USER_AGENT,
|
|
@@ -375,11 +375,11 @@ function retryDelayMs(res: Response, attempt: number): number {
|
|
|
375
375
|
|
|
376
376
|
/** Build the install URL, appending optional attribution query params. */
|
|
377
377
|
function buildInstallUrl(
|
|
378
|
-
|
|
378
|
+
cloudBaseUrl: string,
|
|
379
379
|
name: string,
|
|
380
|
-
opts:
|
|
380
|
+
opts: InstallFromCloudOptions,
|
|
381
381
|
): string {
|
|
382
|
-
const base =
|
|
382
|
+
const base = cloudBaseUrl.replace(/\/+$/, "");
|
|
383
383
|
const url = new URL(
|
|
384
384
|
`${base}/v1/plugins/${encodeURIComponent(name)}/install/`,
|
|
385
385
|
);
|
|
@@ -463,7 +463,7 @@ function isGzip(buf: Buffer): boolean {
|
|
|
463
463
|
/**
|
|
464
464
|
* Extract a plugin archive into `destDir`, returning the number of regular
|
|
465
465
|
* files written. The archive is gunzipped when it carries the gzip magic bytes
|
|
466
|
-
* and treated as a plain (uncompressed) POSIX tar otherwise — the
|
|
466
|
+
* and treated as a plain (uncompressed) POSIX tar otherwise — the cloud
|
|
467
467
|
* advertises `application/gzip` but may serve either, so the body is sniffed
|
|
468
468
|
* rather than trusted by content-type. Entries are already plugin-root-relative
|
|
469
469
|
* (the endpoint re-roots the tarball), so they are extracted as-is — but archive
|
|
@@ -592,7 +592,7 @@ export async function installPlugin(
|
|
|
592
592
|
* install is left behind; a decline then surfaces as
|
|
593
593
|
* {@link PluginInstallDeclinedError}. A no-op when no gate was supplied.
|
|
594
594
|
*
|
|
595
|
-
* Shared by {@link installPlugin} and the
|
|
595
|
+
* Shared by {@link installPlugin} and the cloud-endpoint install so both
|
|
596
596
|
* abort a declined install the same way.
|
|
597
597
|
*/
|
|
598
598
|
export async function confirmStagedOrAbort(
|
|
@@ -649,7 +649,7 @@ export interface FinalizeStagedInstallParams {
|
|
|
649
649
|
* `<pluginsDir>/<name>`. Returns the final install path and the fingerprint that
|
|
650
650
|
* was recorded.
|
|
651
651
|
*
|
|
652
|
-
* Shared by {@link installPlugin} (fresh materialization), the
|
|
652
|
+
* Shared by {@link installPlugin} (fresh materialization), the cloud-endpoint
|
|
653
653
|
* install, and the merge-based `plugins upgrade --strategy` path so all record
|
|
654
654
|
* identical provenance, install dependencies the same way, and use the same
|
|
655
655
|
* atomic rm+rename swap. Dependencies land in `<stagingDir>/node_modules/` — a
|
|
@@ -821,7 +821,7 @@ export interface InstallMeta {
|
|
|
821
821
|
readonly commit: string | null;
|
|
822
822
|
/**
|
|
823
823
|
* Integrity digest of the downloaded artifact, when the install came through
|
|
824
|
-
* the
|
|
824
|
+
* the cloud install endpoint (`ETag: "sha256:<hex>"`). Recorded verbatim
|
|
825
825
|
* (including the `sha256:` prefix) as a stable id for caching / dedupe and to
|
|
826
826
|
* document what was verified. Absent for git-cloned installs, which have no
|
|
827
827
|
* single artifact to hash.
|
|
@@ -1179,7 +1179,7 @@ function normalizeInstalledManifest(
|
|
|
1179
1179
|
* (`buildPluginFromDir`) hard-requires a `package.json` validated against
|
|
1180
1180
|
* `PluginPackageJsonSchema` and silently skips the plugin when it's missing.
|
|
1181
1181
|
*
|
|
1182
|
-
* Used by both the GitHub clone path and the
|
|
1182
|
+
* Used by both the GitHub clone path and the cloud tarball path. The
|
|
1183
1183
|
* synthesized manifest carries the install name and the default
|
|
1184
1184
|
* `@mycadet/plugin-api` peer dependency range. No foreign-ecosystem
|
|
1185
1185
|
* manifest data is read: the install name is the only identity we trust
|
|
@@ -4,16 +4,16 @@
|
|
|
4
4
|
* Platform-first: when platform features are enabled the catalog is fetched
|
|
5
5
|
* from Cadet Cloud and any fetch failure propagates (fail hard — no
|
|
6
6
|
* stale-cache smoothing). Successful loads are held per git ref for a short
|
|
7
|
-
* TTL. When `
|
|
7
|
+
* TTL. When `CADET_DISABLE_CLOUD` disables platform features the bundled
|
|
8
8
|
* offline manifest is read instead, with zero network calls.
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import {
|
|
11
|
+
import { areCloudFeaturesEnabled } from "../../cloud/feature-gate.js";
|
|
12
|
+
import { fetchPluginCatalogFromPlatform } from "./plugin-catalog-cloud.js";
|
|
12
13
|
import {
|
|
13
14
|
readBundledLocalPluginCatalog,
|
|
14
15
|
readBundledPluginCatalog,
|
|
15
16
|
} from "./plugin-catalog-local.js";
|
|
16
|
-
import { fetchPluginCatalogFromPlatform } from "./plugin-catalog-platform.js";
|
|
17
17
|
import { filterPluginCatalogByFeatureFlags } from "./plugin-catalog-visibility.js";
|
|
18
18
|
import type { PluginCatalog, SearchPluginsDeps } from "./search-plugins.js";
|
|
19
19
|
|
|
@@ -30,9 +30,9 @@ type PluginCatalogLoadDeps = Pick<SearchPluginsDeps, "fetch">;
|
|
|
30
30
|
const cache = new Map<string, CacheEntry>();
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
|
-
* Add bundled local packages without overriding
|
|
33
|
+
* Add bundled local packages without overriding cloud-authoritative rows.
|
|
34
34
|
* A platform row without an integration borrows the bundled row's
|
|
35
|
-
* integration of the same name, so an integration the
|
|
35
|
+
* integration of the same name, so an integration the cloud omits or
|
|
36
36
|
* serves malformed never disappears from the catalog.
|
|
37
37
|
*/
|
|
38
38
|
export function mergePlatformCatalogWithBundledLocals(
|
|
@@ -64,7 +64,7 @@ export function mergePlatformCatalogWithBundledLocals(
|
|
|
64
64
|
*
|
|
65
65
|
* With platform features disabled the bundled manifest is returned directly —
|
|
66
66
|
* an in-memory constant, no network and no TTL. Otherwise the catalog is
|
|
67
|
-
* fetched from the
|
|
67
|
+
* fetched from the cloud and, on success, cached per ref for the TTL; a
|
|
68
68
|
* fetch failure propagates so the caller can surface it (e.g. map a rate-limit
|
|
69
69
|
* to 503) — no stale catalog is ever served.
|
|
70
70
|
*/
|
|
@@ -72,7 +72,7 @@ async function loadPluginCatalog(
|
|
|
72
72
|
ref: string,
|
|
73
73
|
deps: PluginCatalogLoadDeps,
|
|
74
74
|
): Promise<PluginCatalog> {
|
|
75
|
-
if (!
|
|
75
|
+
if (!areCloudFeaturesEnabled()) {
|
|
76
76
|
return { ...readBundledPluginCatalog(), ref };
|
|
77
77
|
}
|
|
78
78
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Fetch the installable plugin catalog from Cadet Cloud.
|
|
3
3
|
*
|
|
4
|
-
* The
|
|
4
|
+
* The cloud serves a flattened view of the curated marketplace at
|
|
5
5
|
* `GET {PLATFORM}/v1/plugins/`. Rows are normalized to {@link MarketplaceEntry}
|
|
6
6
|
* and projected via the shared {@link projectMarketplaceEntries} helper, so a
|
|
7
|
-
* catalog sourced from the
|
|
7
|
+
* catalog sourced from the cloud is indistinguishable from one read off
|
|
8
8
|
* GitHub.
|
|
9
9
|
*
|
|
10
10
|
* Every failure mode (non-2xx, unreachable/aborted, malformed envelope)
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
import { z } from "zod";
|
|
18
18
|
|
|
19
|
-
import {
|
|
19
|
+
import { getCloudBaseUrl } from "../../config/env.js";
|
|
20
20
|
import { getLogger } from "../../util/logger.js";
|
|
21
21
|
import {
|
|
22
22
|
type MarketplaceEntry,
|
|
@@ -33,7 +33,7 @@ import { USER_AGENT } from "./user-agent.js";
|
|
|
33
33
|
const log = getLogger("plugin-catalog");
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
|
-
* One flattened row from the
|
|
36
|
+
* One flattened row from the cloud catalog. Unknown keys (`id`,
|
|
37
37
|
* `display_name`) are accepted and dropped (zod strips them by default).
|
|
38
38
|
* `integration` is validated separately by {@link integrationSchema}.
|
|
39
39
|
*/
|
|
@@ -57,14 +57,14 @@ const platformCatalogSchema = z.object({
|
|
|
57
57
|
});
|
|
58
58
|
|
|
59
59
|
/**
|
|
60
|
-
* Fetch and project the
|
|
60
|
+
* Fetch and project the cloud catalog. Rows missing `repo`/`ref` are
|
|
61
61
|
* skipped; the rest are deduped by name and sorted alphabetically.
|
|
62
62
|
*/
|
|
63
63
|
export async function fetchPluginCatalogFromPlatform(
|
|
64
64
|
deps: SearchPluginsDeps,
|
|
65
65
|
opts?: { ref?: string },
|
|
66
66
|
): Promise<PluginCatalog> {
|
|
67
|
-
const url = `${
|
|
67
|
+
const url = `${getCloudBaseUrl().replace(/\/+$/, "")}/v1/plugins/`;
|
|
68
68
|
|
|
69
69
|
let res: Response;
|
|
70
70
|
try {
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* treatment as the feature-flag registry.
|
|
7
7
|
*
|
|
8
8
|
* `getPluginCatalog` selects this reader only when platform features are
|
|
9
|
-
* disabled (air-gapped / self-hosted, `
|
|
9
|
+
* disabled (air-gapped / self-hosted, `CADET_DISABLE_CLOUD=true`). Importing
|
|
10
10
|
* the JSON directly (resolveJsonModule) inlines it into the bundle, so there is
|
|
11
11
|
* no filesystem path resolution and the manifest is always present at runtime —
|
|
12
12
|
* it works identically in dev, Docker, and an npm-packed macOS install.
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
|
|
31
31
|
// Re-exported so `local`-tagged CLI commands can gate on platform features
|
|
32
32
|
// without importing `platform/` directly (cli/no-daemon-internals allows lib).
|
|
33
|
-
export {
|
|
33
|
+
export { areCloudFeaturesEnabled } from "../../cloud/feature-gate.js";
|
|
34
34
|
export { isPluginCatalogEntryVisible };
|
|
35
35
|
|
|
36
36
|
let memoizedEntries: readonly MarketplaceEntry[] | undefined;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `assistant plugins publish` — validate a local plugin, resolve its git
|
|
3
|
-
* context, and submit it to the Cadet marketplace catalog via the
|
|
3
|
+
* context, and submit it to the Cadet marketplace catalog via the cloud
|
|
4
4
|
* API.
|
|
5
5
|
*
|
|
6
6
|
* The flow mirrors `npm publish`: validate the package locally, resolve the
|
|
7
|
-
* version (commit SHA), and POST to a registry endpoint. The
|
|
7
|
+
* version (commit SHA), and POST to a registry endpoint. The cloud then
|
|
8
8
|
* creates a pull request against `vargasjr-dev/mycadet` using the
|
|
9
9
|
* Cadet Automation GitHub App.
|
|
10
10
|
*
|
|
@@ -75,7 +75,7 @@ export interface PublishResult {
|
|
|
75
75
|
|
|
76
76
|
export interface PublishDeps {
|
|
77
77
|
fetch: typeof globalThis.fetch;
|
|
78
|
-
|
|
78
|
+
cloudBaseUrl: string;
|
|
79
79
|
apiKey: string;
|
|
80
80
|
}
|
|
81
81
|
|
|
@@ -324,7 +324,7 @@ export async function postPublishRequest(
|
|
|
324
324
|
deps: PublishDeps,
|
|
325
325
|
): Promise<PublishResult> {
|
|
326
326
|
const resp = await deps.fetch(
|
|
327
|
-
`${deps.
|
|
327
|
+
`${deps.cloudBaseUrl.replace(/\/+$/, "")}/v1/plugins/publish/`,
|
|
328
328
|
{
|
|
329
329
|
method: "POST",
|
|
330
330
|
headers: {
|
|
@@ -343,12 +343,12 @@ export async function postPublishRequest(
|
|
|
343
343
|
*
|
|
344
344
|
* Returns `null` when not connected to Cadet Cloud (no API key
|
|
345
345
|
* or base URL configured). The CLI command uses this to avoid hoisting
|
|
346
|
-
* `
|
|
346
|
+
* `CadetCloudClient` into its static import graph; resolving it lazily
|
|
347
347
|
* keeps that daemon code out of the CLI process until the command needs it.
|
|
348
348
|
*/
|
|
349
349
|
export async function resolvePlatformDeps(): Promise<PublishDeps | null> {
|
|
350
|
-
const {
|
|
351
|
-
const client = await
|
|
350
|
+
const { CadetCloudClient } = await import("../../cloud/client.js");
|
|
351
|
+
const client = await CadetCloudClient.create();
|
|
352
352
|
if (!client) {
|
|
353
353
|
return null;
|
|
354
354
|
}
|
|
@@ -357,8 +357,7 @@ export async function resolvePlatformDeps(): Promise<PublishDeps | null> {
|
|
|
357
357
|
// privately, so we use its fetch method directly.
|
|
358
358
|
return {
|
|
359
359
|
fetch: globalThis.fetch.bind(globalThis),
|
|
360
|
-
|
|
361
|
-
.platformBaseUrl,
|
|
360
|
+
cloudBaseUrl: (client as unknown as { cloudBaseUrl: string }).cloudBaseUrl,
|
|
362
361
|
apiKey: (client as unknown as { apiKey: string }).apiKey,
|
|
363
362
|
};
|
|
364
363
|
}
|
|
@@ -581,7 +580,7 @@ export async function runPublish(
|
|
|
581
580
|
}
|
|
582
581
|
}
|
|
583
582
|
|
|
584
|
-
// 7. Submit to the
|
|
583
|
+
// 7. Submit to the cloud API
|
|
585
584
|
const platformDeps = await resolvePlatformDeps();
|
|
586
585
|
if (!platformDeps) {
|
|
587
586
|
const msg =
|
|
@@ -70,7 +70,7 @@ export interface PluginSearchMatch {
|
|
|
70
70
|
readonly description?: string;
|
|
71
71
|
/**
|
|
72
72
|
* Plugin icon: a curated emoji from the marketplace entry, or an icon URL
|
|
73
|
-
* served by the
|
|
73
|
+
* served by the cloud catalog when the plugin ships a bundled image.
|
|
74
74
|
*/
|
|
75
75
|
readonly icon?: string;
|
|
76
76
|
/**
|
|
@@ -149,7 +149,7 @@ export interface PluginCatalog {
|
|
|
149
149
|
* Project a marketplace entry onto the catalog match shape, building a
|
|
150
150
|
* a source-specific locator for display.
|
|
151
151
|
*
|
|
152
|
-
* Shared by the
|
|
152
|
+
* Shared by the cloud fetcher and bundled reader so all catalog sources
|
|
153
153
|
* project entries identically.
|
|
154
154
|
*/
|
|
155
155
|
export function marketplaceMatch(entry: MarketplaceEntry): PluginSearchMatch {
|