@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
|
@@ -60,18 +60,18 @@ import {
|
|
|
60
60
|
clawhubUpdate,
|
|
61
61
|
} from "../../skills/clawhub.js";
|
|
62
62
|
import { createClawhubProvider } from "../../skills/clawhub-files.js";
|
|
63
|
-
import type { SkillInstallMeta } from "../../skills/install-meta.js";
|
|
64
|
-
import { readInstallMeta } from "../../skills/install-meta.js";
|
|
65
|
-
import {
|
|
66
|
-
createManagedSkill,
|
|
67
|
-
deleteManagedSkill,
|
|
68
|
-
validateManagedSkillId,
|
|
69
|
-
} from "../../skills/managed-store.js";
|
|
70
63
|
import {
|
|
71
64
|
filterSkillsByPlatform,
|
|
72
|
-
|
|
65
|
+
isSkillCompatibleWithCloud,
|
|
73
66
|
skillPlatformUnavailableMessage,
|
|
74
|
-
} from "../../skills/
|
|
67
|
+
} from "../../skills/cloud-compatibility.js";
|
|
68
|
+
import {
|
|
69
|
+
createCloudSkill,
|
|
70
|
+
deleteCloudSkill,
|
|
71
|
+
validateCloudSkillId,
|
|
72
|
+
} from "../../skills/cloud-store.js";
|
|
73
|
+
import type { SkillInstallMeta } from "../../skills/install-meta.js";
|
|
74
|
+
import { readInstallMeta } from "../../skills/install-meta.js";
|
|
75
75
|
import type { SkillFileProvider } from "../../skills/skill-file-provider.js";
|
|
76
76
|
import { createSkillsShProvider } from "../../skills/skillssh-files.js";
|
|
77
77
|
import type { SkillAuditData } from "../../skills/skillssh-registry.js";
|
|
@@ -1239,7 +1239,7 @@ export async function installSkill(spec: {
|
|
|
1239
1239
|
const config = getConfig();
|
|
1240
1240
|
const catalogSkill = catalog.find((s) => s.id === spec.slug);
|
|
1241
1241
|
if (catalogSkill) {
|
|
1242
|
-
if (!
|
|
1242
|
+
if (!isSkillCompatibleWithCloud(catalogSkill)) {
|
|
1243
1243
|
return {
|
|
1244
1244
|
success: false,
|
|
1245
1245
|
error: skillPlatformUnavailableMessage(spec.slug, catalogSkill),
|
|
@@ -1282,7 +1282,7 @@ export async function installSkill(spec: {
|
|
|
1282
1282
|
return { success: true, skillId: spec.slug };
|
|
1283
1283
|
}
|
|
1284
1284
|
|
|
1285
|
-
// Check the Cadet catalog (first-party skills hosted on the
|
|
1285
|
+
// Check the Cadet catalog (first-party skills hosted on the cloud).
|
|
1286
1286
|
// Skip when the caller explicitly specified a community origin — this
|
|
1287
1287
|
// prevents slug collisions where a catalog skill shadows a community
|
|
1288
1288
|
// skill the user selected from search results.
|
|
@@ -1291,7 +1291,7 @@ export async function installSkill(spec: {
|
|
|
1291
1291
|
const cadetCatalog = await getCatalog();
|
|
1292
1292
|
const catalogEntry = cadetCatalog.find((s) => s.id === spec.slug);
|
|
1293
1293
|
if (catalogEntry) {
|
|
1294
|
-
if (!
|
|
1294
|
+
if (!isSkillCompatibleWithCloud(catalogEntry)) {
|
|
1295
1295
|
return {
|
|
1296
1296
|
success: false,
|
|
1297
1297
|
error: skillPlatformUnavailableMessage(spec.slug, catalogEntry),
|
|
@@ -1401,10 +1401,10 @@ export async function uninstallSkill(
|
|
|
1401
1401
|
}
|
|
1402
1402
|
|
|
1403
1403
|
try {
|
|
1404
|
-
// Use shared
|
|
1405
|
-
const isManagedId = !
|
|
1404
|
+
// Use shared cloud-store logic for simple managed skill IDs
|
|
1405
|
+
const isManagedId = !validateCloudSkillId(skillId);
|
|
1406
1406
|
if (isManagedId) {
|
|
1407
|
-
const result =
|
|
1407
|
+
const result = deleteCloudSkill(skillId);
|
|
1408
1408
|
if (!result.deleted) {
|
|
1409
1409
|
return {
|
|
1410
1410
|
success: false,
|
|
@@ -1419,7 +1419,7 @@ export async function uninstallSkill(
|
|
|
1419
1419
|
}
|
|
1420
1420
|
rmSync(skillDir, { recursive: true });
|
|
1421
1421
|
// Best-effort cleanup of capability memory for uninstalled skill
|
|
1422
|
-
// (managed path handles this internally via
|
|
1422
|
+
// (managed path handles this internally via deleteCloudSkill)
|
|
1423
1423
|
deleteSkillCapabilityNode(skillId);
|
|
1424
1424
|
}
|
|
1425
1425
|
|
|
@@ -1724,7 +1724,7 @@ export async function draftSkill(params: {
|
|
|
1724
1724
|
const { signal, cleanup } = createTimeout(LLM_DRAFT_TIMEOUT_MS);
|
|
1725
1725
|
try {
|
|
1726
1726
|
const prompt = [
|
|
1727
|
-
"Given the following skill body text, generate metadata for a
|
|
1727
|
+
"Given the following skill body text, generate metadata for a cloud skill.",
|
|
1728
1728
|
`Return ONLY valid JSON with these fields: ${missing.join(
|
|
1729
1729
|
", ",
|
|
1730
1730
|
)}.`,
|
|
@@ -1811,7 +1811,7 @@ export async function draftSkill(params: {
|
|
|
1811
1811
|
}
|
|
1812
1812
|
}
|
|
1813
1813
|
|
|
1814
|
-
// Normalize skillId to valid
|
|
1814
|
+
// Normalize skillId to valid cloud-skill slug format
|
|
1815
1815
|
const originalId = skillId!;
|
|
1816
1816
|
skillId = toSkillSlug(originalId);
|
|
1817
1817
|
if (!skillId) {
|
|
@@ -1822,7 +1822,7 @@ export async function draftSkill(params: {
|
|
|
1822
1822
|
}
|
|
1823
1823
|
|
|
1824
1824
|
// Final validation pass
|
|
1825
|
-
const validationError =
|
|
1825
|
+
const validationError = validateCloudSkillId(skillId);
|
|
1826
1826
|
if (validationError) {
|
|
1827
1827
|
skillId =
|
|
1828
1828
|
toSkillSlug(skillId.replace(/[^a-z0-9]/g, "-")) || "untitled-skill";
|
|
@@ -1863,7 +1863,7 @@ export async function createSkill(
|
|
|
1863
1863
|
params: CreateSkillParams,
|
|
1864
1864
|
): Promise<{ success: true } | { success: false; error: string }> {
|
|
1865
1865
|
try {
|
|
1866
|
-
const result =
|
|
1866
|
+
const result = createCloudSkill({
|
|
1867
1867
|
id: params.skillId,
|
|
1868
1868
|
name: params.name,
|
|
1869
1869
|
description: params.description,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Host computer-use proxy.
|
|
3
3
|
*
|
|
4
4
|
* Proxies computer-use actions to the desktop client when running as a
|
|
5
|
-
*
|
|
5
|
+
* cloud assistant, following the same request/resolve pattern as
|
|
6
6
|
* HostBashProxy. Also owns CU-specific state tracking (step counting,
|
|
7
7
|
* loop detection, observation formatting) for the unified agent loop.
|
|
8
8
|
*
|
package/src/daemon/lifecycle.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { config as dotenvConfig } from "dotenv";
|
|
2
2
|
|
|
3
3
|
import { reconcileAppPins } from "../apps/app-pin-reconciler.js";
|
|
4
|
-
import {
|
|
4
|
+
import { syncAvatarToCloud } from "../avatar/sync-avatar.js";
|
|
5
5
|
import { reconcileCallsOnStartup } from "../calls/call-recovery.js";
|
|
6
6
|
import { TwilioVoiceProvider } from "../calls/twilio-provider.js";
|
|
7
7
|
import { expireInteractionBoundGuardianRequests } from "../channels/gateway-guardian-requests.js";
|
|
8
|
+
import { isCloudClientConfigured } from "../cloud/client.js";
|
|
9
|
+
import { startConsentRefresh } from "../cloud/consent-cache.js";
|
|
10
|
+
import { syncWorkspaceIdentityToPlatform } from "../cloud/sync-identity.js";
|
|
8
11
|
import { initFeatureFlagOverrides } from "../config/assistant-feature-flags.js";
|
|
9
12
|
import { setIngressPublicBaseUrl, validateEnv } from "../config/env.js";
|
|
10
13
|
import {
|
|
@@ -16,7 +19,7 @@ import { seedInferenceProfiles } from "../config/seed-inference-profiles.js";
|
|
|
16
19
|
import { reconcileFlagGatedProfiles } from "../config/sync-gated-profiles.js";
|
|
17
20
|
import { startConversationAutoArchive } from "../conversations/auto-archive.js";
|
|
18
21
|
import { startCes } from "../credential-execution/ces-runtime.js";
|
|
19
|
-
import { refreshManagedConnectionCache } from "../credential-execution/
|
|
22
|
+
import { refreshManagedConnectionCache } from "../credential-execution/cloud-catalog.js";
|
|
20
23
|
import { startHeartbeatService } from "../heartbeat/heartbeat-service.js";
|
|
21
24
|
import { backfillRelationshipStateIfMissing } from "../home/relationship-state-writer.js";
|
|
22
25
|
import { startCliIpcServer } from "../ipc/assistant-server.js";
|
|
@@ -31,9 +34,6 @@ import { initializeDb } from "../persistence/db-init.js";
|
|
|
31
34
|
import { startEmbeddingRuntimeManager } from "../persistence/embeddings/embedding-backend.js";
|
|
32
35
|
import { maybeEnqueueLexicalBackfillOnUpgrade } from "../persistence/job-handlers/message-lexical-backfill.js";
|
|
33
36
|
import { clearLifecycleQuiesce } from "../persistence/lifecycle-quiesce.js";
|
|
34
|
-
import { isPlatformClientConfigured } from "../platform/client.js";
|
|
35
|
-
import { startConsentRefresh } from "../platform/consent-cache.js";
|
|
36
|
-
import { syncWorkspaceIdentityToPlatform } from "../platform/sync-identity.js";
|
|
37
37
|
import { ensurePromptFiles } from "../prompts/system-prompt.js";
|
|
38
38
|
import { runProviderConnectionsBackfill } from "../providers/inference/backfill.js";
|
|
39
39
|
import { repairSharedCredentialSlots } from "../providers/inference/credential-slot-repair.js";
|
|
@@ -67,7 +67,7 @@ import {
|
|
|
67
67
|
import { APP_VERSION } from "../version.js";
|
|
68
68
|
import { drainOrphanedWatchTimelineEntries } from "../watch/watch-timeline.js";
|
|
69
69
|
import { getWorkflowRunManager } from "../workflows/run-manager.js";
|
|
70
|
-
import {
|
|
70
|
+
import { repairAdaptiveThinkingOnCloudProfiles } from "../workspace/adaptive-thinking-repair.js";
|
|
71
71
|
import { ensureByokDefaultProfiles } from "../workspace/byok-default-profile-ensure.js";
|
|
72
72
|
import { ensureCompleteCustomProfiles } from "../workspace/custom-profile-ensure.js";
|
|
73
73
|
import { WORKSPACE_MIGRATIONS } from "../workspace/migrations/registry.js";
|
|
@@ -218,7 +218,7 @@ export async function runDaemon(): Promise<void> {
|
|
|
218
218
|
// immediately after the transport binds, ahead of DB init and readiness,
|
|
219
219
|
// so an urgent signal arriving the moment requests are admitted is not
|
|
220
220
|
// decided on an empty cache.
|
|
221
|
-
void
|
|
221
|
+
void isCloudClientConfigured().catch((err) =>
|
|
222
222
|
log.warn({ err }, "Platform configured-probe warmup failed"),
|
|
223
223
|
);
|
|
224
224
|
|
|
@@ -227,7 +227,7 @@ export async function runDaemon(): Promise<void> {
|
|
|
227
227
|
// so a slow or unreachable gateway doesn't delay daemon startup (the
|
|
228
228
|
// IPC call has a 3s connect + 5s call timeout that would otherwise
|
|
229
229
|
// stall the critical path).
|
|
230
|
-
// After the async fetch resolves, reconcile flag-gated
|
|
230
|
+
// After the async fetch resolves, reconcile flag-gated cloud profiles
|
|
231
231
|
// (OS Beta): `seedInferenceProfiles()` runs synchronously earlier in boot
|
|
232
232
|
// before flags are available, so this lands the profile on the same boot once
|
|
233
233
|
// the flag cache is populated. When this reconcile is the call that mutates
|
|
@@ -523,23 +523,23 @@ export async function runDaemon(): Promise<void> {
|
|
|
523
523
|
}
|
|
524
524
|
} // end if (dbReady)
|
|
525
525
|
|
|
526
|
-
// Populate the
|
|
526
|
+
// Populate the cloud-connection cache so the `14-connected-services`
|
|
527
527
|
// bundled section (rendered by `renderConnectedServices()` in
|
|
528
|
-
// system-sections.ts) can include
|
|
528
|
+
// system-sections.ts) can include cloud OAuth connections
|
|
529
529
|
// (e.g. Twitter) in the system prompt from the first turn. This is
|
|
530
530
|
// an HTTP-only call with no DB dependency, so it runs regardless of
|
|
531
531
|
// dbReady. A periodic refresh keeps the cache current when users
|
|
532
|
-
// connect/disconnect
|
|
532
|
+
// connect/disconnect cloud providers while the assistant is running.
|
|
533
533
|
void refreshManagedConnectionCache().catch((err) =>
|
|
534
534
|
log.warn(
|
|
535
535
|
{ err },
|
|
536
|
-
"
|
|
536
|
+
"Cloud connection cache refresh failed — continuing startup",
|
|
537
537
|
),
|
|
538
538
|
);
|
|
539
539
|
const MANAGED_CONNECTION_REFRESH_INTERVAL_MS = 5 * 60 * 1000; // 5 minutes
|
|
540
540
|
setInterval(() => {
|
|
541
541
|
void refreshManagedConnectionCache().catch((err) =>
|
|
542
|
-
log.warn({ err }, "Periodic
|
|
542
|
+
log.warn({ err }, "Periodic cloud connection cache refresh failed"),
|
|
543
543
|
);
|
|
544
544
|
}, MANAGED_CONNECTION_REFRESH_INTERVAL_MS);
|
|
545
545
|
|
|
@@ -550,7 +550,7 @@ export async function runDaemon(): Promise<void> {
|
|
|
550
550
|
const defaultConfigMerge = mergeDefaultWorkspaceConfig();
|
|
551
551
|
|
|
552
552
|
// Seed inference profiles into the workspace config: active/advisor
|
|
553
|
-
// resolution plus, on off-
|
|
553
|
+
// resolution plus, on off-cloud hatches, `llm.default` and a
|
|
554
554
|
// personal provider connection for the hatch provider.
|
|
555
555
|
try {
|
|
556
556
|
seedInferenceProfiles({
|
|
@@ -564,7 +564,7 @@ export async function runDaemon(): Promise<void> {
|
|
|
564
564
|
}
|
|
565
565
|
|
|
566
566
|
// Re-run the adaptive thinking repair after overlay merge + profile seeding.
|
|
567
|
-
// Workspace migration 097 enables adaptive thinking on
|
|
567
|
+
// Workspace migration 097 enables adaptive thinking on cloud profiles, but
|
|
568
568
|
// it runs before mergeDefaultWorkspaceConfig() which can overwrite the fix
|
|
569
569
|
// with overlay profiles that have thinking disabled or absent. On-platform
|
|
570
570
|
// instances where the overlay supplies "balanced" / "quality-optimized"
|
|
@@ -573,7 +573,7 @@ export async function runDaemon(): Promise<void> {
|
|
|
573
573
|
// ensures thinking is enabled regardless of overlay ordering.
|
|
574
574
|
if (defaultConfigMerge.hadOverlay) {
|
|
575
575
|
try {
|
|
576
|
-
|
|
576
|
+
repairAdaptiveThinkingOnCloudProfiles(getWorkspaceDir());
|
|
577
577
|
log.info("Post-overlay adaptive thinking repair complete");
|
|
578
578
|
} catch (err) {
|
|
579
579
|
log.warn(
|
|
@@ -681,7 +681,7 @@ export async function runDaemon(): Promise<void> {
|
|
|
681
681
|
// Refresh the consent cache regardless of dev mode so record-time telemetry
|
|
682
682
|
// writes (which drop on a confirmed opt-out) work in dev too. The usage
|
|
683
683
|
// telemetry reporter re-checks share_analytics on every flush, so dev still
|
|
684
|
-
// never sends telemetry to the
|
|
684
|
+
// never sends telemetry to the cloud. Fire-and-forget: startConsentRefresh()
|
|
685
685
|
// runs an immediate non-blocking refresh, so the startup hot path is never
|
|
686
686
|
// blocked.
|
|
687
687
|
startConsentRefresh();
|
|
@@ -704,10 +704,10 @@ export async function runDaemon(): Promise<void> {
|
|
|
704
704
|
|
|
705
705
|
// Initialize providers before Qdrant so HTTP routes can begin accepting
|
|
706
706
|
// requests while Qdrant initializes, then best-effort sync the workspace
|
|
707
|
-
// identity name and avatar to the
|
|
707
|
+
// identity name and avatar to the cloud record.
|
|
708
708
|
await initializeProviders(config);
|
|
709
709
|
syncWorkspaceIdentityToPlatform();
|
|
710
|
-
|
|
710
|
+
syncAvatarToCloud();
|
|
711
711
|
|
|
712
712
|
// Start the idle/LRU/memory-pressure sweep over the in-memory conversation
|
|
713
713
|
// pool.
|
|
@@ -11,7 +11,7 @@ import { isContextOverflowError } from "../providers/types.js";
|
|
|
11
11
|
* "too many input tokens: 242201 > 200000" (OpenAI)
|
|
12
12
|
*
|
|
13
13
|
* The regex path remains a safety net for provider-adapter paths (e.g.
|
|
14
|
-
*
|
|
14
|
+
* cloud-proxy rewrappers) that surface untyped errors.
|
|
15
15
|
*
|
|
16
16
|
* Accepts a raw error object, an `Error` instance, or a plain string.
|
|
17
17
|
* Returns the actual token count, or `null` when it cannot be determined.
|
|
@@ -38,7 +38,7 @@ export function parseActualTokensFromError(
|
|
|
38
38
|
/**
|
|
39
39
|
* Message patterns that identify a provider context-overflow rejection.
|
|
40
40
|
* Covers the typed wrapper's source patterns plus common provider phrasings
|
|
41
|
-
* that adapter paths (e.g.
|
|
41
|
+
* that adapter paths (e.g. cloud-proxy rewrappers) surface as untyped
|
|
42
42
|
* errors:
|
|
43
43
|
* "prompt is too long: 242201 tokens > 200000 maximum" (Anthropic)
|
|
44
44
|
* "too many input tokens: 242201 > 200000" (OpenAI)
|
|
@@ -55,7 +55,7 @@ const OVERFLOW_MESSAGE_PATTERNS: readonly RegExp[] = [
|
|
|
55
55
|
/**
|
|
56
56
|
* Heuristic context-overflow check that also catches REWRAPPED provider
|
|
57
57
|
* errors. `isContextOverflowError` only matches the typed
|
|
58
|
-
* `ContextOverflowError` wrapper; adapter layers (
|
|
58
|
+
* `ContextOverflowError` wrapper; adapter layers (cloud-proxy rewrappers,
|
|
59
59
|
* retry shims) can re-throw the same rejection as a plain `Error`, hiding the
|
|
60
60
|
* typed signal. Callers that must not misread an overflow as a clean
|
|
61
61
|
* no-output stop (e.g. the suppressed-compaction agent-wake path) should use
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { rehydrateCloudCredentials } from "../config/cloud-rehydration.js";
|
|
2
|
+
import { maybeDefaultSpeechToCloud } from "../config/cloud-speech-defaults.js";
|
|
3
3
|
import type { AssistantConfig } from "../config/types.js";
|
|
4
4
|
import { getMcpServerManager } from "../mcp/manager.js";
|
|
5
5
|
import { startConfiguredMcpServers } from "../mcp/startup.js";
|
|
@@ -29,17 +29,17 @@ export async function initializeProvidersAndTools(
|
|
|
29
29
|
): Promise<void> {
|
|
30
30
|
log.info("Daemon startup: initializing providers and tools");
|
|
31
31
|
|
|
32
|
-
// Rehydrate the
|
|
33
|
-
//
|
|
32
|
+
// Rehydrate the cloud base URL and IDs from the credential store so
|
|
33
|
+
// cloud proxy activation survives assistant restarts. The in-memory
|
|
34
34
|
// overrides are normally only set by the secret-routes handlers at runtime.
|
|
35
|
-
await
|
|
35
|
+
await rehydrateCloudCredentials();
|
|
36
36
|
|
|
37
37
|
// Speech defaulting normally fires when the cloud credentials land
|
|
38
38
|
// (secret-routes); evaluating it once per boot also covers assistants whose
|
|
39
39
|
// connection predates that trigger, so voice works for every connected
|
|
40
40
|
// assistant with no configured speech credentials. Idempotent, and detached
|
|
41
41
|
// per the startup philosophy — must not block boot.
|
|
42
|
-
void
|
|
42
|
+
void maybeDefaultSpeechToCloud();
|
|
43
43
|
|
|
44
44
|
await initializeProviders(config);
|
|
45
45
|
// initializeTools() also loads workspace tool overrides from
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Starts the guard at boot and defers the first sample onto a macrotask so it
|
|
5
5
|
* never blocks startup, and stops the guard (cancelling any pending deferred
|
|
6
|
-
* sample) on shutdown. When the guard is disabled (non-
|
|
6
|
+
* sample) on shutdown. When the guard is disabled (non-cloud), no deferred
|
|
7
7
|
* sample is scheduled.
|
|
8
8
|
*/
|
|
9
9
|
import { getLogger } from "../util/logger.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Sustained CPU/memory pressure guard for
|
|
2
|
+
* Sustained CPU/memory pressure guard for cloud-hosted assistants.
|
|
3
3
|
*
|
|
4
4
|
* Samples container CPU utilization and working-set memory against the
|
|
5
5
|
* container's allocation on a fixed cadence and reports an `elevated` state
|
|
@@ -8,14 +8,14 @@
|
|
|
8
8
|
* sustained run of samples below a lower clear threshold (hysteresis), so the
|
|
9
9
|
* state never flaps while usage hovers near a threshold.
|
|
10
10
|
*
|
|
11
|
-
* The guard is platform-gated: off-
|
|
11
|
+
* The guard is platform-gated: off-cloud there is no plan allocation to
|
|
12
12
|
* measure against, so the guard stays disabled and samples nothing.
|
|
13
13
|
*/
|
|
14
14
|
import {
|
|
15
15
|
type ResourcePressureState,
|
|
16
16
|
type ResourcePressureStatus,
|
|
17
17
|
} from "../api/events/resource-pressure-status-changed.js";
|
|
18
|
-
import {
|
|
18
|
+
import { getIsCloud } from "../config/env-registry.js";
|
|
19
19
|
import { broadcastMessage } from "../runtime/assistant-event-hub.js";
|
|
20
20
|
import { getContainerCpuCores } from "../util/cgroup-cpu.js";
|
|
21
21
|
import {
|
|
@@ -252,7 +252,7 @@ function defaultSampleMemory(): ResourcePressureMemorySample | null {
|
|
|
252
252
|
}
|
|
253
253
|
|
|
254
254
|
export function startResourcePressureGuard(): ResourcePressureStatus {
|
|
255
|
-
if (!
|
|
255
|
+
if (!getIsCloud()) {
|
|
256
256
|
return cloneStatus(state.status);
|
|
257
257
|
}
|
|
258
258
|
|
|
@@ -279,7 +279,7 @@ export function stopResourcePressureGuard(): void {
|
|
|
279
279
|
export function evaluateResourcePressureNow(
|
|
280
280
|
deps?: ResourcePressureSamplers,
|
|
281
281
|
): ResourcePressureStatus {
|
|
282
|
-
if (!
|
|
282
|
+
if (!getIsCloud()) {
|
|
283
283
|
return cloneStatus(state.status);
|
|
284
284
|
}
|
|
285
285
|
|
|
@@ -364,7 +364,7 @@ export function evaluateResourcePressureNow(
|
|
|
364
364
|
}
|
|
365
365
|
|
|
366
366
|
export function getResourcePressureStatus(): ResourcePressureStatus {
|
|
367
|
-
if (!
|
|
367
|
+
if (!getIsCloud()) {
|
|
368
368
|
return cloneStatus(DISABLED_STATUS);
|
|
369
369
|
}
|
|
370
370
|
if (!state.status.enabled) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { disposeAcpSessionManager } from "../acp/index.js";
|
|
2
|
+
import { stopConsentRefresh } from "../cloud/consent-cache.js";
|
|
2
3
|
import { stopConversationAutoArchive } from "../conversations/auto-archive.js";
|
|
3
4
|
import { stopCes } from "../credential-execution/ces-runtime.js";
|
|
4
5
|
import { stopHeartbeatService } from "../heartbeat/heartbeat-service.js";
|
|
@@ -13,7 +14,6 @@ import {
|
|
|
13
14
|
import { getSqlite, isDbOpen, resetDb } from "../persistence/db-connection.js";
|
|
14
15
|
import { shutdownEmbeddingBackends } from "../persistence/embeddings/embedding-backend.js";
|
|
15
16
|
import { stopQdrantManager } from "../persistence/embeddings/qdrant-manager.js";
|
|
16
|
-
import { stopConsentRefresh } from "../platform/consent-cache.js";
|
|
17
17
|
import { HOOKS } from "../plugin-api/constants.js";
|
|
18
18
|
import { runHook } from "../plugins/pipeline.js";
|
|
19
19
|
import { stopRouteHost } from "../routes/control.js";
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
* `SQLITE_CORRUPT` / `SQLITE_NOTADB` error ("database disk image is malformed"
|
|
8
8
|
* / "file is not a database") on the next statement that touches the damaged
|
|
9
9
|
* page. Left unobserved, that damage is only noticed when a user hits a broken
|
|
10
|
-
* feature; the
|
|
10
|
+
* feature; the cloud has no fleet-wide view of how often it happens.
|
|
11
11
|
*
|
|
12
12
|
* This watchdog makes corruption observable. It emits a `watchdog` telemetry
|
|
13
13
|
* event with `check_name = "sqlite_corrupted"` — the same stream the event-loop
|
|
14
|
-
* watchdog uses — but POSTs it *directly* to the
|
|
14
|
+
* watchdog uses — but POSTs it *directly* to the cloud ingest rather than
|
|
15
15
|
* through the SQLite-backed watchdog buffer: a check that fires because SQLite
|
|
16
16
|
* is unusable must not depend on writing to SQLite, and going direct keeps this
|
|
17
17
|
* module out of the `db-connection` import graph. The direct path still honors
|
|
@@ -37,7 +37,7 @@ import { getLogger } from "../util/logger.js";
|
|
|
37
37
|
const log = getLogger("sqlite-corruption-watchdog");
|
|
38
38
|
|
|
39
39
|
/**
|
|
40
|
-
* Check name emitted for SQLite corruption events. The
|
|
40
|
+
* Check name emitted for SQLite corruption events. The cloud's
|
|
41
41
|
* `watchdog__sqlite_corruption_daily` admin query filters `check_name` to
|
|
42
42
|
* this exact string — it is the cross-repo contract, keep it stable.
|
|
43
43
|
*/
|
|
@@ -46,7 +46,7 @@ export const FALLBACK_TURN_TRUST: TrustContext = {
|
|
|
46
46
|
* trustContext, and in an auth-disabled (local) deployment that unresolved
|
|
47
47
|
* actor is the guardian. A *present* trustContext always reflects the real
|
|
48
48
|
* actor — even under `DISABLE_HTTP_AUTH`, which is the standing config in
|
|
49
|
-
*
|
|
49
|
+
* cloud-managed deployments — so a resolved non-guardian channel actor is
|
|
50
50
|
* never elevated to guardian.
|
|
51
51
|
*
|
|
52
52
|
* When no trust context is available and auth is enabled (e.g. a desktop-only
|
|
@@ -71,7 +71,7 @@ export class DesktopAutomationLease {
|
|
|
71
71
|
private assertAvailable(): void {
|
|
72
72
|
if (!this.deps.enabled()) {
|
|
73
73
|
throw new Error(
|
|
74
|
-
"Virtual desktop automation is available only on enabled
|
|
74
|
+
"Virtual desktop automation is available only on enabled cloud-hosted assistants",
|
|
75
75
|
);
|
|
76
76
|
}
|
|
77
77
|
if (!this.deps.ready()) {
|
|
@@ -47,7 +47,7 @@ export function validateDesktopWebSocket(value: unknown, port: number): string {
|
|
|
47
47
|
return url.href;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
// Match the listener to the
|
|
50
|
+
// Match the listener to the cloud Chrome process, including occupied-port races.
|
|
51
51
|
export async function assertDesktopListener(
|
|
52
52
|
pid: number,
|
|
53
53
|
port: number,
|
|
@@ -67,9 +67,7 @@ export async function assertDesktopListener(
|
|
|
67
67
|
return;
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
|
-
throw new Error(
|
|
71
|
-
"Debug listener does not belong to the managed desktop Chrome",
|
|
72
|
-
);
|
|
70
|
+
throw new Error("Debug listener does not belong to the cloud desktop Chrome");
|
|
73
71
|
}
|
|
74
72
|
|
|
75
73
|
export async function findDesktopBrowserPid(
|
|
@@ -21,7 +21,7 @@ import { sensitiveToolReach } from "../tools/tool-approval-handler.js";
|
|
|
21
21
|
import * as computerUse from "./desktop-computer-use.js";
|
|
22
22
|
import { shouldUseVirtualDesktop } from "./virtual-desktop-feature.js";
|
|
23
23
|
|
|
24
|
-
const originalPlatform = process.env.
|
|
24
|
+
const originalPlatform = process.env.IS_CLOUD;
|
|
25
25
|
const originalContainerized = process.env.IS_CONTAINERIZED;
|
|
26
26
|
const context = {
|
|
27
27
|
trustClass: "guardian" as const,
|
|
@@ -32,7 +32,7 @@ const context = {
|
|
|
32
32
|
const spies: Array<{ mockRestore(): void }> = [];
|
|
33
33
|
|
|
34
34
|
beforeEach(() => {
|
|
35
|
-
process.env.
|
|
35
|
+
process.env.IS_CLOUD = "true";
|
|
36
36
|
process.env.IS_CONTAINERIZED = "true";
|
|
37
37
|
setOverridesForTesting({ "assistant-desktop": true });
|
|
38
38
|
});
|
|
@@ -43,9 +43,9 @@ afterEach(() => {
|
|
|
43
43
|
}
|
|
44
44
|
setOverridesForTesting({});
|
|
45
45
|
if (originalPlatform === undefined) {
|
|
46
|
-
delete process.env.
|
|
46
|
+
delete process.env.IS_CLOUD;
|
|
47
47
|
} else {
|
|
48
|
-
process.env.
|
|
48
|
+
process.env.IS_CLOUD = originalPlatform;
|
|
49
49
|
}
|
|
50
50
|
if (originalContainerized === undefined) {
|
|
51
51
|
delete process.env.IS_CONTAINERIZED;
|
|
@@ -135,7 +135,7 @@ test("native, unidentified and non-guardian turns do not select the virtual desk
|
|
|
135
135
|
expect(shouldUseVirtualDesktop({ ...context, trustClass: "unknown" })).toBe(
|
|
136
136
|
false,
|
|
137
137
|
);
|
|
138
|
-
process.env.
|
|
138
|
+
process.env.IS_CLOUD = "false";
|
|
139
139
|
expect(shouldUseVirtualDesktop(context)).toBe(false);
|
|
140
140
|
});
|
|
141
141
|
|
|
@@ -203,7 +203,7 @@ for (const input of [
|
|
|
203
203
|
for (const platform of [true, false]) {
|
|
204
204
|
for (const clientOs of ["web", "macos", "windows", "linux"] as const) {
|
|
205
205
|
test(`bundled tool policy and dispatch agree for ${platform ? "platform" : "local"} ${clientOs}`, async () => {
|
|
206
|
-
process.env.
|
|
206
|
+
process.env.IS_CLOUD = String(platform);
|
|
207
207
|
const skillDir = join(getBundledSkillsDir(), "computer-use");
|
|
208
208
|
const manifest = JSON.parse(
|
|
209
209
|
readFileSync(join(skillDir, "TOOLS.json"), "utf8"),
|
|
@@ -91,12 +91,12 @@ function slotIsFree(manager: DesktopSessionManager): boolean {
|
|
|
91
91
|
describe("DesktopStreamBridge", () => {
|
|
92
92
|
test("streams without flag or filesystem checks after connecting", async () => {
|
|
93
93
|
const originalContainerized = process.env.IS_CONTAINERIZED;
|
|
94
|
-
const originalPlatform = process.env.
|
|
94
|
+
const originalPlatform = process.env.IS_CLOUD;
|
|
95
95
|
const h = newFakeDesktop({ profileDir });
|
|
96
96
|
const isEnabled = mock(isVirtualDesktopEnabled);
|
|
97
97
|
const b = newBridge(h.manager, async () => {}, isEnabled);
|
|
98
98
|
process.env.IS_CONTAINERIZED = "true";
|
|
99
|
-
process.env.
|
|
99
|
+
process.env.IS_CLOUD = "true";
|
|
100
100
|
setOverridesForTesting({ "assistant-desktop": true });
|
|
101
101
|
try {
|
|
102
102
|
b.connectNow();
|
|
@@ -139,9 +139,9 @@ describe("DesktopStreamBridge", () => {
|
|
|
139
139
|
process.env.IS_CONTAINERIZED = originalContainerized;
|
|
140
140
|
}
|
|
141
141
|
if (originalPlatform === undefined) {
|
|
142
|
-
delete process.env.
|
|
142
|
+
delete process.env.IS_CLOUD;
|
|
143
143
|
} else {
|
|
144
|
-
process.env.
|
|
144
|
+
process.env.IS_CLOUD = originalPlatform;
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
147
|
});
|
|
@@ -176,7 +176,7 @@ export class DesktopStreamBridge {
|
|
|
176
176
|
if (!this.isEnabled()) {
|
|
177
177
|
this.fail(
|
|
178
178
|
DESKTOP_CLOSE.unavailable,
|
|
179
|
-
"Virtual desktop is available only on enabled
|
|
179
|
+
"Virtual desktop is available only on enabled cloud-hosted assistants",
|
|
180
180
|
);
|
|
181
181
|
return false;
|
|
182
182
|
}
|
|
@@ -5,7 +5,7 @@ import { shouldUseVirtualDesktopBrowser } from "../browser/virtual-desktop-targe
|
|
|
5
5
|
import { executeDesktopBrowserOperation } from "./desktop-browser-operations.js";
|
|
6
6
|
import { desktopDependencies } from "./desktop-dependencies.js";
|
|
7
7
|
|
|
8
|
-
const originalPlatform = process.env.
|
|
8
|
+
const originalPlatform = process.env.IS_CLOUD;
|
|
9
9
|
const originalContainerized = process.env.IS_CONTAINERIZED;
|
|
10
10
|
const context = {
|
|
11
11
|
workingDir: "/tmp",
|
|
@@ -19,7 +19,7 @@ let status: ReturnType<typeof spyOn<typeof desktopDependencies, "getStatus">>;
|
|
|
19
19
|
|
|
20
20
|
beforeEach(() => {
|
|
21
21
|
process.env.IS_CONTAINERIZED = "true";
|
|
22
|
-
process.env.
|
|
22
|
+
process.env.IS_CLOUD = "false";
|
|
23
23
|
setOverridesForTesting({ "assistant-desktop": true });
|
|
24
24
|
status = spyOn(desktopDependencies, "getStatus").mockReturnValue({
|
|
25
25
|
state: "ready",
|
|
@@ -30,9 +30,9 @@ afterEach(() => {
|
|
|
30
30
|
status.mockRestore();
|
|
31
31
|
setOverridesForTesting({});
|
|
32
32
|
if (originalPlatform === undefined) {
|
|
33
|
-
delete process.env.
|
|
33
|
+
delete process.env.IS_CLOUD;
|
|
34
34
|
} else {
|
|
35
|
-
process.env.
|
|
35
|
+
process.env.IS_CLOUD = originalPlatform;
|
|
36
36
|
}
|
|
37
37
|
if (originalContainerized === undefined) {
|
|
38
38
|
delete process.env.IS_CONTAINERIZED;
|
|
@@ -45,12 +45,12 @@ test("self-hosted Docker cannot automatically select or explicitly control virtu
|
|
|
45
45
|
expect(shouldUseVirtualDesktopBrowser(undefined, {}, context)).toBe(false);
|
|
46
46
|
await expect(
|
|
47
47
|
executeDesktopBrowserOperation("snapshot", {}, context),
|
|
48
|
-
).rejects.toThrow("only on enabled
|
|
48
|
+
).rejects.toThrow("only on enabled cloud-hosted assistants");
|
|
49
49
|
expect(status).not.toHaveBeenCalled();
|
|
50
50
|
});
|
|
51
51
|
|
|
52
52
|
test("platform web conversations select virtual Chrome even when image components are missing", () => {
|
|
53
|
-
process.env.
|
|
53
|
+
process.env.IS_CLOUD = "true";
|
|
54
54
|
expect(shouldUseVirtualDesktopBrowser(undefined, {}, context)).toBe(true);
|
|
55
55
|
status.mockReturnValue({ state: "failed" });
|
|
56
56
|
expect(shouldUseVirtualDesktopBrowser(undefined, {}, context)).toBe(true);
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import { isAssistantFeatureFlagEnabled } from "../config/assistant-feature-flags.js";
|
|
2
|
-
import {
|
|
2
|
+
import { getIsCloud, getIsContainerized } from "../config/env-registry.js";
|
|
3
3
|
import type { AssistantConfig } from "../config/schema.js";
|
|
4
4
|
import type { ToolContext } from "../tools/types.js";
|
|
5
5
|
|
|
6
6
|
const VIRTUAL_DESKTOP_FLAG = "assistant-desktop" as const;
|
|
7
7
|
|
|
8
|
-
export function
|
|
8
|
+
export function isVirtualDesktopCloud(
|
|
9
9
|
containerized: boolean = getIsContainerized(),
|
|
10
|
-
|
|
10
|
+
cloudHosted: boolean = getIsCloud(),
|
|
11
11
|
): boolean {
|
|
12
|
-
return
|
|
12
|
+
return cloudHosted && containerized;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
/** Gates desktop streaming and control to enabled,
|
|
15
|
+
/** Gates desktop streaming and control to enabled, cloud-hosted containers. */
|
|
16
16
|
export function isVirtualDesktopEnabled(
|
|
17
17
|
config?: AssistantConfig,
|
|
18
18
|
containerized: boolean = getIsContainerized(),
|
|
19
|
-
|
|
19
|
+
cloudHosted: boolean = getIsCloud(),
|
|
20
20
|
): boolean {
|
|
21
21
|
return (
|
|
22
|
-
|
|
22
|
+
isVirtualDesktopCloud(containerized, cloudHosted) &&
|
|
23
23
|
isAssistantFeatureFlagEnabled(VIRTUAL_DESKTOP_FLAG, config)
|
|
24
24
|
);
|
|
25
25
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* "Your own" (BYO) email providers: the assistant sends and receives email
|
|
3
|
-
* through the user's own provider account instead of a
|
|
3
|
+
* through the user's own provider account instead of a cloud-managed
|
|
4
4
|
* inbox. Configuration is the provider's stored `api_key` credential;
|
|
5
5
|
* inbound arrives through the gateway's per-provider webhook routes
|
|
6
6
|
* (`gateway/src/http/routes/resend-webhook.ts`, `mailgun-webhook.ts`).
|