@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
|
@@ -6,18 +6,18 @@
|
|
|
6
6
|
* for a webhook type. See `handleWebhooksRegister` for the resolution
|
|
7
7
|
* order.
|
|
8
8
|
* - webhooks_list (GET webhooks): List all webhook callback routes registered
|
|
9
|
-
* with the
|
|
9
|
+
* with the cloud for this assistant.
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
import { z } from "zod";
|
|
13
13
|
|
|
14
|
-
import {
|
|
14
|
+
import { getIsCloud } from "../../config/env-registry.js";
|
|
15
15
|
import { getConfig } from "../../config/loader.js";
|
|
16
16
|
import {
|
|
17
17
|
registerCallbackRoute,
|
|
18
18
|
registerLocalWebhookRoute,
|
|
19
|
-
|
|
20
|
-
} from "../../inbound/
|
|
19
|
+
resolveCloudCallbackRegistrationContext,
|
|
20
|
+
} from "../../inbound/cloud-callback-registration.js";
|
|
21
21
|
import { resolveClaimedPodWebhookUrl } from "../../inbound/pod-webhook-claim.js";
|
|
22
22
|
import {
|
|
23
23
|
getPublicBaseUrl,
|
|
@@ -83,7 +83,7 @@ function deriveWebhookPath(type: string): string {
|
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
/**
|
|
86
|
-
* Register `webhookPath` with the
|
|
86
|
+
* Register `webhookPath` with the cloud gateway, mapping failures onto the
|
|
87
87
|
* route error vocabulary.
|
|
88
88
|
*/
|
|
89
89
|
async function registerWithPlatform(
|
|
@@ -112,8 +112,8 @@ async function registerWithPlatform(
|
|
|
112
112
|
* Resolve a stable callback URL for a webhook type.
|
|
113
113
|
*
|
|
114
114
|
* Resolution order:
|
|
115
|
-
* 1. **
|
|
116
|
-
* always register with the
|
|
115
|
+
* 1. **Cloud pods** (`IS_CLOUD`) with the `tunnel-webhooks` flag off
|
|
116
|
+
* always register with the cloud gateway. With the flag on, the
|
|
117
117
|
* Tunnel-published `ingress.publicBaseUrl` wins and platform
|
|
118
118
|
* registration is the fallback for any failure to resolve it —
|
|
119
119
|
* including an explicit `ingress.enabled: false`, matching
|
|
@@ -127,12 +127,12 @@ async function registerWithPlatform(
|
|
|
127
127
|
* 3. **Platform-connected assistants with no ingress** register with the
|
|
128
128
|
* platform gateway rather than failing. Connectivity is decided by
|
|
129
129
|
* credentials (platform base URL + assistant ID + assistant API key), not
|
|
130
|
-
* by `
|
|
130
|
+
* by `IS_CLOUD`, which is only ever true on a cloud pod.
|
|
131
131
|
*
|
|
132
132
|
* Ingress deliberately precedes platform registration: any logged-in local
|
|
133
133
|
* assistant holds cloud credentials (it needs them for the LLM proxy), so
|
|
134
134
|
* treating credential presence as "managed" would silently reroute an
|
|
135
|
-
* explicitly configured self-hosted webhook through the
|
|
135
|
+
* explicitly configured self-hosted webhook through the cloud. The gateway's
|
|
136
136
|
* Telegram and email registrars order the same two tiers the same way.
|
|
137
137
|
*/
|
|
138
138
|
async function handleWebhooksRegister(
|
|
@@ -148,7 +148,7 @@ async function handleWebhooksRegister(
|
|
|
148
148
|
(pathOverride as string | undefined) ?? deriveWebhookPath(type as string);
|
|
149
149
|
const sourceIdentifier = source as string | undefined;
|
|
150
150
|
|
|
151
|
-
if (
|
|
151
|
+
if (getIsCloud()) {
|
|
152
152
|
if (isTunnelWebhooksEnabled()) {
|
|
153
153
|
const callbackUrl = await resolveClaimedPodWebhookUrl(
|
|
154
154
|
() => `${getPublicBaseUrl(getConfig())}/${webhookPath}`,
|
|
@@ -186,9 +186,9 @@ async function handleWebhooksRegister(
|
|
|
186
186
|
ingressError = err as Error;
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
-
// No ingress configured. Fall back to the
|
|
190
|
-
// assistant is connected to the
|
|
191
|
-
const context = await
|
|
189
|
+
// No ingress configured. Fall back to the cloud gateway when this
|
|
190
|
+
// assistant is connected to the cloud.
|
|
191
|
+
const context = await resolveCloudCallbackRegistrationContext();
|
|
192
192
|
if (context.enabled) {
|
|
193
193
|
return registerWithPlatform(webhookPath, type, sourceIdentifier);
|
|
194
194
|
}
|
|
@@ -199,15 +199,15 @@ async function handleWebhooksRegister(
|
|
|
199
199
|
async function handleWebhooksList(
|
|
200
200
|
_args: RouteHandlerArgs,
|
|
201
201
|
): Promise<WebhooksListResponse> {
|
|
202
|
-
const context = await
|
|
202
|
+
const context = await resolveCloudCallbackRegistrationContext();
|
|
203
203
|
|
|
204
|
-
if (!context.
|
|
204
|
+
if (!context.cloudBaseUrl || !context.authHeader) {
|
|
205
205
|
throw new UnprocessableEntityError(
|
|
206
206
|
"Self-hosted webhook listing is not available. Use 'assistant webhooks register <type>' to resolve URLs on demand.",
|
|
207
207
|
);
|
|
208
208
|
}
|
|
209
209
|
|
|
210
|
-
const url = `${context.
|
|
210
|
+
const url = `${context.cloudBaseUrl}/v1/internal/gateway/callback-routes/`;
|
|
211
211
|
let response: Response;
|
|
212
212
|
try {
|
|
213
213
|
response = await fetch(url, {
|
|
@@ -258,7 +258,7 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
258
258
|
},
|
|
259
259
|
summary: "Register a webhook callback URL",
|
|
260
260
|
description:
|
|
261
|
-
"Resolves a stable callback URL for a webhook type. On
|
|
261
|
+
"Resolves a stable callback URL for a webhook type. On cloud assistants, registers the route with the cloud gateway. Otherwise uses the configured ingress.publicBaseUrl, falling back to the cloud gateway when no ingress is configured and the assistant is connected to the cloud.",
|
|
262
262
|
tags: ["webhooks"],
|
|
263
263
|
requestBody: WebhooksRegisterRequestSchema,
|
|
264
264
|
responseBody: WebhooksRegisterResponseSchema,
|
|
@@ -274,7 +274,7 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
274
274
|
},
|
|
275
275
|
summary: "List registered webhook callback routes",
|
|
276
276
|
description:
|
|
277
|
-
"Lists all webhook callback routes registered with the
|
|
277
|
+
"Lists all webhook callback routes registered with the cloud for this assistant.",
|
|
278
278
|
tags: ["webhooks"],
|
|
279
279
|
responseBody: WebhooksListResponseSchema,
|
|
280
280
|
handler: handleWebhooksList,
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* All routes are served by both the HTTP server and the IPC server via the
|
|
5
5
|
* shared ROUTES array. They are read/abort surfaces over the workflow run
|
|
6
|
-
* manager and the saved-workflow library — a human (via the
|
|
7
|
-
*
|
|
6
|
+
* manager and the saved-workflow library — a human (via the app) can inspect
|
|
7
|
+
* runs and abort an in-flight one.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import { z } from "zod";
|
|
@@ -334,9 +334,9 @@ async function handleResumeRun(id: string) {
|
|
|
334
334
|
// the side-effecting tools/host functions the original manifest granted. The
|
|
335
335
|
// conversational `manage_workflows` resume path promotes such resumes to a
|
|
336
336
|
// fresh interactive approval (executor.ts → requireFreshApproval); this
|
|
337
|
-
// HTTP/IPC route
|
|
338
|
-
//
|
|
339
|
-
//
|
|
337
|
+
// HTTP/IPC route has no prompt channel. At full-access posture the user has
|
|
338
|
+
// opted into auto-approving even high-risk tools, so the resume proceeds
|
|
339
|
+
// without a
|
|
340
340
|
// prompt; otherwise it must not silently bypass consent — refuse and direct
|
|
341
341
|
// the caller to the assistant. A read-only run (no declared tools/host
|
|
342
342
|
// functions) resumes freely regardless of posture.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { syncAvatarToCloud } from "../../avatar/sync-avatar.js";
|
|
2
2
|
import type { IdentityFields } from "../../daemon/handlers/identity.js";
|
|
3
3
|
import {
|
|
4
4
|
conversationMessagesSyncTag,
|
|
@@ -34,7 +34,7 @@ export function publishAvatarChanged(originClientId?: string): void {
|
|
|
34
34
|
avatarPath: getAvatarImagePath(),
|
|
35
35
|
});
|
|
36
36
|
void publishSyncInvalidation([SYNC_TAGS.assistantAvatar], originClientId);
|
|
37
|
-
|
|
37
|
+
syncAvatarToCloud();
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
export function publishIdentityChanged(
|
|
@@ -555,7 +555,7 @@ export function deliverVerificationDiscord(
|
|
|
555
555
|
// ---------------------------------------------------------------------------
|
|
556
556
|
|
|
557
557
|
/**
|
|
558
|
-
* Deliver a verification email via the
|
|
558
|
+
* Deliver a verification email via the cloud email send API.
|
|
559
559
|
* Fire-and-forget wrapper for use in the daemon process (HTTP route handlers).
|
|
560
560
|
*/
|
|
561
561
|
export function deliverVerificationEmail(
|
|
@@ -566,9 +566,9 @@ export function deliverVerificationEmail(
|
|
|
566
566
|
): void {
|
|
567
567
|
(async () => {
|
|
568
568
|
try {
|
|
569
|
-
const {
|
|
570
|
-
const client = await
|
|
571
|
-
if (!client?.
|
|
569
|
+
const { CadetCloudClient } = await import("../cloud/client.js");
|
|
570
|
+
const client = await CadetCloudClient.create();
|
|
571
|
+
if (!client?.cloudAssistantId) {
|
|
572
572
|
log.error(
|
|
573
573
|
"Cannot deliver verification email: platform client not configured",
|
|
574
574
|
);
|
|
@@ -14,7 +14,7 @@ export async function isOAuthProviderConnected(
|
|
|
14
14
|
provider: string,
|
|
15
15
|
): Promise<boolean> {
|
|
16
16
|
const providerRow = getProvider(provider);
|
|
17
|
-
const managedKey = providerRow?.
|
|
17
|
+
const managedKey = providerRow?.cloudServiceConfigKey;
|
|
18
18
|
|
|
19
19
|
if (managedKey) {
|
|
20
20
|
try {
|
|
@@ -39,16 +39,16 @@ export async function isOAuthProviderConnected(
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
/**
|
|
42
|
-
* Check the
|
|
42
|
+
* Check the cloud for active connections for a cloud provider.
|
|
43
43
|
* Returns false on any error (network, auth, etc.) rather than throwing.
|
|
44
44
|
*/
|
|
45
45
|
async function isProviderConnectedOnPlatform(
|
|
46
46
|
provider: string,
|
|
47
47
|
): Promise<boolean> {
|
|
48
48
|
try {
|
|
49
|
-
const {
|
|
50
|
-
const client = await
|
|
51
|
-
if (!client?.
|
|
49
|
+
const { CadetCloudClient } = await import("../cloud/client.js");
|
|
50
|
+
const client = await CadetCloudClient.create();
|
|
51
|
+
if (!client?.cloudAssistantId) {
|
|
52
52
|
return false;
|
|
53
53
|
}
|
|
54
54
|
|
|
@@ -56,7 +56,7 @@ async function isProviderConnectedOnPlatform(
|
|
|
56
56
|
params.set("provider", provider);
|
|
57
57
|
params.set("status", "ACTIVE");
|
|
58
58
|
|
|
59
|
-
const path = `/v1/assistants/${encodeURIComponent(client.
|
|
59
|
+
const path = `/v1/assistants/${encodeURIComponent(client.cloudAssistantId)}/oauth/connections/?${params.toString()}`;
|
|
60
60
|
const response = await client.fetch(path);
|
|
61
61
|
|
|
62
62
|
if (!response.ok) {
|
|
@@ -40,7 +40,7 @@ export interface ScriptResult {
|
|
|
40
40
|
/**
|
|
41
41
|
* Run a shell command and capture its output.
|
|
42
42
|
*
|
|
43
|
-
* Uses the
|
|
43
|
+
* Uses the cloud shell so the command string supports pipes, redirects,
|
|
44
44
|
* and shell builtins. Windows uses PowerShell and POSIX hosts use Bash. Output
|
|
45
45
|
* is truncated to {@link MAX_OUTPUT_BYTES} to keep schedule_runs rows bounded.
|
|
46
46
|
*
|
|
@@ -66,7 +66,7 @@ export function resolveScheduleTimezone(
|
|
|
66
66
|
* Wall-clock hour (0-23) of `now` in `timeZone`.
|
|
67
67
|
*
|
|
68
68
|
* Heartbeat active hours are stored as 0-23 integers. Evaluating them against
|
|
69
|
-
* the host clock (UTC on a
|
|
69
|
+
* the host clock (UTC on a cloud container) shifts the window by the user's
|
|
70
70
|
* offset, so 8:00-22:00 becomes 1am-3pm Pacific. This reads the hour in the
|
|
71
71
|
* same zone `resolveScheduleTimezone` selected.
|
|
72
72
|
*/
|
package/src/schedule/worker.ts
CHANGED
|
@@ -17,8 +17,8 @@ import {
|
|
|
17
17
|
initFeatureFlagOverrides,
|
|
18
18
|
refreshOverridesFromGateway,
|
|
19
19
|
} from "../config/assistant-feature-flags.js";
|
|
20
|
+
import { rehydrateCloudCredentials } from "../config/cloud-rehydration.js";
|
|
20
21
|
import { getConfig } from "../config/loader.js";
|
|
21
|
-
import { rehydratePlatformCredentials } from "../config/platform-rehydration.js";
|
|
22
22
|
import { startConversationEvictor } from "../daemon/conversation-evictor.js";
|
|
23
23
|
import { stopMcpServerManager } from "../mcp/manager.js";
|
|
24
24
|
import { MCP_RELOAD_SIGNAL_FILE } from "../mcp/reload-signal.js";
|
|
@@ -139,13 +139,13 @@ async function main(): Promise<void> {
|
|
|
139
139
|
);
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
// Rehydrate the
|
|
142
|
+
// Rehydrate the cloud base URL and IDs from the credential store before
|
|
143
143
|
// the first tick. The daemon does this in initializeProvidersAndTools(); this
|
|
144
|
-
// standalone process must do it itself so
|
|
144
|
+
// standalone process must do it itself so getCloudBaseUrl() resolves to
|
|
145
145
|
// the persisted platform environment instead of the CADET_ENVIRONMENT
|
|
146
146
|
// default — otherwise valid credentials are sent to the wrong platform and
|
|
147
147
|
// rejected for both inference and background-wake requests.
|
|
148
|
-
await
|
|
148
|
+
await rehydrateCloudCredentials();
|
|
149
149
|
|
|
150
150
|
// This process is the sole runner of schedule execution and hosts real agent
|
|
151
151
|
// conversations (wake, execute, and workflow modes), so it needs the default
|
|
@@ -264,7 +264,7 @@ async function main(): Promise<void> {
|
|
|
264
264
|
|
|
265
265
|
// This process outlives any single flag value, so poll the gateway instead of
|
|
266
266
|
// holding whatever was cached at startup. The daemon's gateway flag listener
|
|
267
|
-
// is not reusable here: it also reconciles
|
|
267
|
+
// is not reusable here: it also reconciles cloud profiles and broadcasts
|
|
268
268
|
// sync events, both of which belong to the daemon alone. The refresh swaps the
|
|
269
269
|
// cache atomically, so a tick reading a flag mid-refresh still sees the last
|
|
270
270
|
// known values. Unref'd so the tick interval above stays the one thing
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { v4 as uuid } from "uuid";
|
|
2
2
|
|
|
3
|
-
import { getRawShareAnalytics } from "../
|
|
3
|
+
import { getRawShareAnalytics } from "../cloud/consent-cache.js";
|
|
4
4
|
import { insertTelemetryOutboxEvents } from "../telemetry/telemetry-events-outbox.js";
|
|
5
5
|
import type { AuthFallbackTelemetryEvent } from "../telemetry/types.js";
|
|
6
6
|
import { APP_VERSION } from "../version.js";
|
package/src/security/oauth2.ts
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
import { createHash, randomBytes } from "node:crypto";
|
|
20
20
|
import { createServer, type Server } from "node:http";
|
|
21
21
|
|
|
22
|
-
import {
|
|
22
|
+
import { getIsCloud } from "../config/env-registry.js";
|
|
23
23
|
import { parseScopeList } from "../oauth/scope-utils.js";
|
|
24
24
|
import { getLogger } from "../util/logger.js";
|
|
25
25
|
import { renderOAuthCompletionPage as renderLoopbackPage } from "./oauth-completion-page.js";
|
|
@@ -791,9 +791,9 @@ export async function startOAuth2Flow(
|
|
|
791
791
|
// No public URL configured
|
|
792
792
|
}
|
|
793
793
|
|
|
794
|
-
// When containerized with a
|
|
795
|
-
// through the
|
|
796
|
-
if (!hasPublicUrl &&
|
|
794
|
+
// When containerized with a cloud, callback routes are registered
|
|
795
|
+
// through the cloud gateway — treat as having a public URL.
|
|
796
|
+
if (!hasPublicUrl && getIsCloud()) {
|
|
797
797
|
hasPublicUrl = true;
|
|
798
798
|
}
|
|
799
799
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { getConfig } from "../config/loader.js";
|
|
2
2
|
import type { SkillSource } from "../config/skills.js";
|
|
3
|
-
import type { SkillInstallMeta } from "./install-meta.js";
|
|
4
3
|
import {
|
|
5
|
-
|
|
4
|
+
isSkillCompatibleWithCloud,
|
|
6
5
|
type SkillPlatform,
|
|
7
|
-
} from "./
|
|
6
|
+
} from "./cloud-compatibility.js";
|
|
7
|
+
import type { SkillInstallMeta } from "./install-meta.js";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Plugin-facing read API over the skill surface: the locally installed
|
|
@@ -128,7 +128,7 @@ export async function listCatalogSkills(): Promise<ResolvedSkillEntry[]> {
|
|
|
128
128
|
typeof flagKey === "string" &&
|
|
129
129
|
flagKey.length > 0 &&
|
|
130
130
|
!isAssistantFeatureFlagEnabled(flagKey, config);
|
|
131
|
-
const incompatible = !
|
|
131
|
+
const incompatible = !isSkillCompatibleWithCloud(entry);
|
|
132
132
|
return {
|
|
133
133
|
id: entry.id,
|
|
134
134
|
displayName: entry.metadata?.cadet?.["display-name"] ?? entry.name,
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* - In `CADET_DEV` mode, when `<repo>/skills/<id>/` exists on disk, we
|
|
11
11
|
* read the skill files directly from the repo checkout (matching the
|
|
12
12
|
* behavior of `getCatalog()` in dev).
|
|
13
|
-
* - Otherwise, we call the
|
|
13
|
+
* - Otherwise, we call the cloud preview endpoints:
|
|
14
14
|
* GET /v1/skills/{skill_id}/files/
|
|
15
15
|
* GET /v1/skills/{skill_id}/files/content/?path=...
|
|
16
16
|
*
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
} from "node:fs";
|
|
29
29
|
import { basename, join, posix, sep } from "node:path";
|
|
30
30
|
|
|
31
|
-
import {
|
|
31
|
+
import { getCloudBaseUrl } from "../config/env.js";
|
|
32
32
|
import type { SlimSkillResponse } from "../daemon/message-types/skills.js";
|
|
33
33
|
import {
|
|
34
34
|
isTextMimeType as isTextMime,
|
|
@@ -69,9 +69,9 @@ export type { SkillFileEntry } from "./skill-file-types.js";
|
|
|
69
69
|
|
|
70
70
|
// ─── Platform response contracts ─────────────────────────────────────────────
|
|
71
71
|
//
|
|
72
|
-
// The
|
|
72
|
+
// The cloud preview API uses snake_case on the wire. We map to the
|
|
73
73
|
// daemon's camelCase shape inside this module so nothing downstream needs to
|
|
74
|
-
// know about the
|
|
74
|
+
// know about the cloud contract.
|
|
75
75
|
|
|
76
76
|
interface PlatformFileListResponse {
|
|
77
77
|
skill_id: string;
|
|
@@ -101,7 +101,7 @@ interface PlatformFileContentResponse {
|
|
|
101
101
|
* - Reject paths that escape the root (normalized result equals `..` or
|
|
102
102
|
* begins with `../`).
|
|
103
103
|
*
|
|
104
|
-
* The
|
|
104
|
+
* The cloud also validates these server-side; client-side sanitization is
|
|
105
105
|
* defense in depth and short-circuits obvious bad requests before a network
|
|
106
106
|
* round trip.
|
|
107
107
|
*/
|
|
@@ -164,7 +164,7 @@ type CatalogSource =
|
|
|
164
164
|
/**
|
|
165
165
|
* Resolve where to read files for a given catalog skill id. Performs NO
|
|
166
166
|
* network calls — network requests happen only inside `readCatalogSkillFiles`
|
|
167
|
-
* and `readCatalogSkillFileContent` on the
|
|
167
|
+
* and `readCatalogSkillFileContent` on the cloud path.
|
|
168
168
|
*
|
|
169
169
|
* Dev-mode safety: when a `<repoSkillsDir>/<skillId>` entry exists on disk,
|
|
170
170
|
* we verify that the skill root is a real directory physically located
|
|
@@ -246,7 +246,7 @@ function isSafeDevSkillRoot(candidate: string, repoSkillsDir: string): boolean {
|
|
|
246
246
|
// ─── Platform fetch helper ───────────────────────────────────────────────────
|
|
247
247
|
|
|
248
248
|
/**
|
|
249
|
-
* Fetch JSON from the
|
|
249
|
+
* Fetch JSON from the cloud preview API. Returns `null` on any failure
|
|
250
250
|
* (non-2xx, network error, abort). The query string is stripped from log
|
|
251
251
|
* messages to avoid leaking user-supplied file paths.
|
|
252
252
|
*/
|
|
@@ -254,7 +254,7 @@ async function fetchPlatformJson<T>(
|
|
|
254
254
|
path: string,
|
|
255
255
|
query?: Record<string, string>,
|
|
256
256
|
): Promise<T | null> {
|
|
257
|
-
const base =
|
|
257
|
+
const base = getCloudBaseUrl();
|
|
258
258
|
const url = new URL(`${base}${path}`);
|
|
259
259
|
if (query) {
|
|
260
260
|
const params = new URLSearchParams(query);
|
|
@@ -20,19 +20,19 @@ import {
|
|
|
20
20
|
MALFORMED_USTAR_SIZE,
|
|
21
21
|
parseUstarSizeField,
|
|
22
22
|
} from "../archive/ustar-size.js";
|
|
23
|
-
import {
|
|
23
|
+
import { getCloudBaseUrl } from "../config/env.js";
|
|
24
24
|
import { loadSkillCatalog } from "../config/skills.js";
|
|
25
25
|
import { isBunVirtualPath } from "../util/bundled-asset.js";
|
|
26
26
|
import { getLogger } from "../util/logger.js";
|
|
27
27
|
import { addToPathEnv, getWorkspaceSkillsDir } from "../util/platform.js";
|
|
28
|
-
import { computeSkillHash, writeInstallMeta } from "./install-meta.js";
|
|
29
28
|
import {
|
|
30
|
-
|
|
29
|
+
isSkillCompatibleWithCloud,
|
|
31
30
|
normalizeSkillPlatforms,
|
|
32
31
|
SKILL_PLATFORM_VALUES,
|
|
33
32
|
type SkillPlatform,
|
|
34
33
|
skillPlatformUnavailableMessage,
|
|
35
|
-
} from "./
|
|
34
|
+
} from "./cloud-compatibility.js";
|
|
35
|
+
import { computeSkillHash, writeInstallMeta } from "./install-meta.js";
|
|
36
36
|
|
|
37
37
|
const log = getLogger("catalog-install");
|
|
38
38
|
|
|
@@ -139,7 +139,7 @@ export function getRepoSkillsDir(): string | undefined {
|
|
|
139
139
|
// ─── Catalog operations ──────────────────────────────────────────────────────
|
|
140
140
|
|
|
141
141
|
/**
|
|
142
|
-
* Raw skill entry as returned by the
|
|
142
|
+
* Raw skill entry as returned by the cloud `/v1/skills/` API. The cloud
|
|
143
143
|
* serializer flattens the skill's metadata into top-level fields
|
|
144
144
|
* (`category`, `display_name`, `icon`) rather than the nested
|
|
145
145
|
* `metadata.cadet.*` shape used by the local `catalog.json`. Both shapes are
|
|
@@ -191,9 +191,9 @@ function asStr(value: unknown): string | undefined {
|
|
|
191
191
|
}
|
|
192
192
|
|
|
193
193
|
/**
|
|
194
|
-
* Normalize a
|
|
194
|
+
* Normalize a cloud API entry into a canonical {@link CatalogSkill}.
|
|
195
195
|
*
|
|
196
|
-
* The
|
|
196
|
+
* The cloud flattens `category`, `display_name`, and `icon` to the top
|
|
197
197
|
* level, so re-nest them under `metadata.cadet` to match the local catalog
|
|
198
198
|
* shape that the rest of the daemon reads (`metadata.cadet.category`,
|
|
199
199
|
* `metadata.cadet["display-name"]`). Existing nested values take precedence
|
|
@@ -244,8 +244,8 @@ function normalizeCatalogEntry(raw: unknown): CatalogSkill | null {
|
|
|
244
244
|
}
|
|
245
245
|
|
|
246
246
|
export async function fetchCatalog(): Promise<CatalogSkill[]> {
|
|
247
|
-
const
|
|
248
|
-
const url = `${
|
|
247
|
+
const cloudUrl = getCloudBaseUrl();
|
|
248
|
+
const url = `${cloudUrl}/v1/skills/`;
|
|
249
249
|
const response = await fetch(url, {
|
|
250
250
|
signal: AbortSignal.timeout(10000),
|
|
251
251
|
});
|
|
@@ -398,8 +398,8 @@ async function fetchAndExtractSkill(
|
|
|
398
398
|
skillId: string,
|
|
399
399
|
destDir: string,
|
|
400
400
|
): Promise<void> {
|
|
401
|
-
const
|
|
402
|
-
const url = `${
|
|
401
|
+
const cloudUrl = getCloudBaseUrl();
|
|
402
|
+
const url = `${cloudUrl}/v1/skills/${encodeURIComponent(skillId)}/`;
|
|
403
403
|
const response = await fetch(url, {
|
|
404
404
|
signal: AbortSignal.timeout(15000),
|
|
405
405
|
});
|
|
@@ -721,7 +721,7 @@ export async function autoInstallFromCatalog(
|
|
|
721
721
|
if (!entry) {
|
|
722
722
|
return false;
|
|
723
723
|
}
|
|
724
|
-
if (!
|
|
724
|
+
if (!isSkillCompatibleWithCloud(entry)) {
|
|
725
725
|
throw new Error(skillPlatformUnavailableMessage(skillId, entry));
|
|
726
726
|
}
|
|
727
727
|
|
|
@@ -3,7 +3,7 @@ import { join } from "node:path";
|
|
|
3
3
|
|
|
4
4
|
import { parse as parseYaml } from "yaml";
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import { getCloudBaseUrl } from "../config/env.js";
|
|
7
7
|
import { getLogger } from "../util/logger.js";
|
|
8
8
|
import { getRepoSkillsDir } from "./catalog-install.js";
|
|
9
9
|
|
|
@@ -21,8 +21,8 @@ let cachedCategories: SkillCategoryDef[] | null = null;
|
|
|
21
21
|
let cacheTimestamp = 0;
|
|
22
22
|
|
|
23
23
|
async function fetchCategories(): Promise<SkillCategoryDef[]> {
|
|
24
|
-
const
|
|
25
|
-
const url = `${
|
|
24
|
+
const cloudUrl = getCloudBaseUrl();
|
|
25
|
+
const url = `${cloudUrl}/v1/skills/categories/`;
|
|
26
26
|
const response = await fetch(url, {
|
|
27
27
|
signal: AbortSignal.timeout(10000),
|
|
28
28
|
});
|
package/src/skills/clawhub.ts
CHANGED
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
const log = getLogger("clawhub");
|
|
13
13
|
|
|
14
14
|
// ClaWHub project root — clawhub creates a `skills/` subdir inside its cwd,
|
|
15
|
-
// so we use the parent of the
|
|
15
|
+
// so we use the parent of the cloud skills dir as the project root.
|
|
16
16
|
function getClawhubProjectRoot(): string {
|
|
17
17
|
return dirname(getWorkspaceSkillsDir());
|
|
18
18
|
}
|
|
@@ -2,10 +2,10 @@ import { describe, expect, test } from "bun:test";
|
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
filterSkillsByPlatform,
|
|
5
|
-
|
|
5
|
+
isSkillCompatibleWithCloud,
|
|
6
6
|
normalizeSkillPlatforms,
|
|
7
7
|
skillPlatformForNodePlatform,
|
|
8
|
-
} from "./
|
|
8
|
+
} from "./cloud-compatibility.js";
|
|
9
9
|
|
|
10
10
|
describe("skill platform compatibility", () => {
|
|
11
11
|
test("maps Node platforms to skill platform names", () => {
|
|
@@ -16,15 +16,15 @@ describe("skill platform compatibility", () => {
|
|
|
16
16
|
});
|
|
17
17
|
|
|
18
18
|
test("treats missing platform metadata as portable", () => {
|
|
19
|
-
expect(
|
|
20
|
-
expect(
|
|
19
|
+
expect(isSkillCompatibleWithCloud({}, "win32")).toBe(true);
|
|
20
|
+
expect(isSkillCompatibleWithCloud({}, "linux")).toBe(true);
|
|
21
21
|
});
|
|
22
22
|
|
|
23
23
|
test("matches declared host platforms", () => {
|
|
24
24
|
const skill = { platforms: ["macos", "linux"] as const };
|
|
25
|
-
expect(
|
|
26
|
-
expect(
|
|
27
|
-
expect(
|
|
25
|
+
expect(isSkillCompatibleWithCloud(skill, "darwin")).toBe(true);
|
|
26
|
+
expect(isSkillCompatibleWithCloud(skill, "linux")).toBe(true);
|
|
27
|
+
expect(isSkillCompatibleWithCloud(skill, "win32")).toBe(false);
|
|
28
28
|
});
|
|
29
29
|
|
|
30
30
|
test("filters incompatible skills from offer surfaces", () => {
|
|
@@ -37,7 +37,7 @@ export function skillPlatformForNodePlatform(
|
|
|
37
37
|
return null;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
export function
|
|
40
|
+
export function isSkillCompatibleWithCloud(
|
|
41
41
|
skill: PlatformScopedSkill,
|
|
42
42
|
platform: NodeJS.Platform = process.platform,
|
|
43
43
|
): boolean {
|
|
@@ -52,9 +52,7 @@ export function filterSkillsByPlatform<T extends PlatformScopedSkill>(
|
|
|
52
52
|
skills: readonly T[],
|
|
53
53
|
platform: NodeJS.Platform = process.platform,
|
|
54
54
|
): T[] {
|
|
55
|
-
return skills.filter((skill) =>
|
|
56
|
-
isSkillCompatibleWithPlatform(skill, platform),
|
|
57
|
-
);
|
|
55
|
+
return skills.filter((skill) => isSkillCompatibleWithCloud(skill, platform));
|
|
58
56
|
}
|
|
59
57
|
|
|
60
58
|
export function skillPlatformUnavailableMessage(
|