@mycadet/assistant 0.12.7 → 0.12.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/docs/activation-funnel-telemetry.md +6 -6
- package/docs/cadet-doctor.md +7 -7
- package/docs/desktop-browser-cli.md +7 -7
- package/docs/skills.md +2 -2
- package/docs/voice-input-diagnostics.md +1 -1
- package/eslint-rules/__tests__/cli-no-daemon-internals.test.ts +2 -2
- package/node_modules/@mycadet/avatar-manifest/src/__tests__/notification-avatar.test.ts +1 -1
- package/node_modules/@mycadet/avatar-manifest/src/notification-avatar.ts +2 -2
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/package.json +2 -2
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/{platform-credential.ts → cloud-credential.ts} +9 -9
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/handles.ts +3 -3
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/index.ts +1 -1
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/ingress.ts +11 -5
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/remote-web-pairing.ts +1 -1
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/rpc.ts +14 -14
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/trust-rules.ts +5 -5
- package/node_modules/@mycadet/ces-client/package.json +1 -1
- package/node_modules/@mycadet/ces-client/src/__tests__/ces-client.test.ts +14 -14
- package/node_modules/@mycadet/ces-client/src/rpc-client.ts +1 -1
- package/node_modules/@mycadet/credential-storage/src/oauth-runtime.ts +1 -1
- package/node_modules/@mycadet/credential-storage/src/static-credentials.ts +1 -1
- package/node_modules/@mycadet/environments/src/seeds.ts +6 -6
- package/node_modules/@mycadet/environments/src/shell.test.ts +1 -1
- package/node_modules/@mycadet/environments/src/types.ts +6 -6
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/package.json +2 -2
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/{platform-credential.ts → cloud-credential.ts} +9 -9
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/handles.ts +3 -3
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/index.ts +1 -1
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/ingress.ts +11 -5
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/remote-web-pairing.ts +1 -1
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/rpc.ts +14 -14
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/trust-rules.ts +5 -5
- package/node_modules/@mycadet/gateway-client/src/binding-strength-contract.ts +5 -5
- package/node_modules/@mycadet/gateway-client/src/gateway-ipc-contracts.ts +1 -1
- package/node_modules/@mycadet/gateway-client/src/inbound-contract.ts +2 -2
- package/node_modules/@mycadet/gateway-client/src/outbound-contract.ts +1 -1
- package/node_modules/@mycadet/service-contracts/package.json +2 -2
- package/node_modules/@mycadet/service-contracts/src/{platform-credential.ts → cloud-credential.ts} +9 -9
- package/node_modules/@mycadet/service-contracts/src/handles.ts +3 -3
- package/node_modules/@mycadet/service-contracts/src/index.ts +1 -1
- package/node_modules/@mycadet/service-contracts/src/ingress.ts +11 -5
- package/node_modules/@mycadet/service-contracts/src/remote-web-pairing.ts +1 -1
- package/node_modules/@mycadet/service-contracts/src/rpc.ts +14 -14
- package/node_modules/@mycadet/service-contracts/src/trust-rules.ts +5 -5
- package/openapi.yaml +6804 -799
- package/package.json +2 -2
- package/scripts/build-test-fixtures.ts +1 -1
- package/scripts/probe-skill-retrieval.ts +1 -1
- package/scripts/sync-llm-catalog.ts +2 -2
- package/scripts/voice-ttft-spike.ts +2 -2
- package/src/__tests__/adaptive-thinking-repair.test.ts +4 -4
- package/src/__tests__/agent-loop-override-profile.test.ts +4 -4
- package/src/__tests__/agent-loop-subagent-billing-headers.test.ts +1 -1
- package/src/__tests__/anthropic-provider.test.ts +2 -2
- package/src/__tests__/available-skills.test.ts +11 -12
- package/src/__tests__/avatar-identity-sync.test.ts +1 -1
- package/src/__tests__/byok-default-profile-ensure.test.ts +7 -7
- package/src/__tests__/call-domain.test.ts +1 -1
- package/src/__tests__/call-site-routing-connection-auto-resolve.test.ts +2 -2
- package/src/__tests__/catalog-files.test.ts +10 -10
- package/src/__tests__/catalog-install-normalize.test.ts +3 -3
- package/src/__tests__/channel-availability-routes.test.ts +8 -8
- package/src/__tests__/channel-readiness-routes.test.ts +4 -4
- package/src/__tests__/channel-readiness-service.test.ts +14 -14
- package/src/__tests__/channel-readiness-telegram-remote.test.ts +1 -1
- package/src/__tests__/chat-reveal-guard-priming.test.ts +5 -6
- package/src/__tests__/checker.test.ts +6 -6
- package/src/__tests__/clawhub.test.ts +1 -1
- package/src/__tests__/{platform-callback-registration.test.ts → cloud-callback-registration.test.ts} +66 -90
- package/src/__tests__/{platform-client-verify-credential.test.ts → cloud-client-verify-credential.test.ts} +14 -14
- package/src/__tests__/{managed-credential-catalog-cli.test.ts → cloud-credential-catalog-cli.test.ts} +41 -41
- package/src/__tests__/{managed-fallback-dispatch.test.ts → cloud-fallback-dispatch.test.ts} +21 -16
- package/src/__tests__/{managed-profile-guard.test.ts → cloud-profile-guard.test.ts} +77 -75
- package/src/__tests__/{platform-proxy-context.test.ts → cloud-proxy-context.test.ts} +44 -44
- package/src/__tests__/{managed-speech-defaults.test.ts → cloud-speech-defaults.test.ts} +41 -41
- package/src/__tests__/{managed-store.test.ts → cloud-store.test.ts} +99 -99
- package/src/__tests__/compaction-events.test.ts +7 -5
- package/src/__tests__/config-loader-backfill.test.ts +65 -65
- package/src/__tests__/config-loader-cloud-defaults.test.ts +373 -0
- package/src/__tests__/config-loader-corrupt.test.ts +1 -1
- package/src/__tests__/config-loader-validation-reset-notice.test.ts +1 -1
- package/src/__tests__/config-schema.test.ts +3 -3
- package/src/__tests__/{config-set-platform-guard.test.ts → config-set-cloud-guard.test.ts} +6 -6
- package/src/__tests__/config-set-route.test.ts +12 -8
- package/src/__tests__/config-watcher-cleanup-throttle.test.ts +0 -8
- package/src/__tests__/config-watcher.test.ts +1 -1
- package/src/__tests__/contacts-write.test.ts +1 -1
- package/src/__tests__/conversation-agent-loop.test.ts +2 -2
- package/src/__tests__/conversation-app-control-instantiation.test.ts +18 -18
- package/src/__tests__/conversation-error.test.ts +45 -45
- package/src/__tests__/conversation-inference-profile-route.test.ts +4 -4
- package/src/__tests__/conversation-rendered-delegation-state.test.ts +4 -4
- package/src/__tests__/conversation-skill-tools.test.ts +7 -8
- package/src/__tests__/conversation-slash.test.ts +2 -2
- package/src/__tests__/conversation-speed-override.test.ts +8 -10
- package/src/__tests__/conversation-summarize-up-to.test.ts +4 -4
- package/src/__tests__/conversation-surfaces-activation-emit.test.ts +1 -1
- package/src/__tests__/conversation-wait-for-idle.test.ts +7 -5
- package/src/__tests__/credential-execution-api-key-propagation.test.ts +5 -5
- package/src/__tests__/{credential-execution-managed-contract.test.ts → credential-execution-cloud-contract.test.ts} +24 -24
- package/src/__tests__/credential-health-service.test.ts +28 -40
- package/src/__tests__/credential-routes.test.ts +85 -165
- package/src/__tests__/credential-security-invariants.test.ts +6 -7
- package/src/__tests__/custom-profile-ensure.test.ts +1 -1
- package/src/__tests__/date-context.test.ts +1 -1
- package/src/__tests__/default-profile-catalog-fallback.test.ts +15 -15
- package/src/__tests__/delete-managed-skill-tool.test.ts +8 -8
- package/src/__tests__/discord-callback-round-trip.test.ts +1 -1
- package/src/__tests__/disk-usage.test.ts +3 -3
- package/src/__tests__/email-invite-adapter.test.ts +5 -5
- package/src/__tests__/{embedding-managed-proxy-selection.test.ts → embedding-cloud-proxy-selection.test.ts} +44 -43
- package/src/__tests__/emit-signal-routing-intent.test.ts +13 -15
- package/src/__tests__/events-dev-bypass-actor.test.ts +2 -2
- package/src/__tests__/fallback-breaker.test.ts +7 -7
- package/src/__tests__/feature-flag-test-helpers.ts +106 -0
- package/src/__tests__/gateway-flag-listener.test.ts +1 -1
- package/src/__tests__/gemini-image-service.test.ts +2 -2
- package/src/__tests__/gemini-provider.test.ts +5 -5
- package/src/__tests__/get-skill-detail-audit.test.ts +134 -288
- package/src/__tests__/guardian-verification-voice-binding.test.ts +1 -1
- package/src/__tests__/handlers-skills-memory-v2-reseed.test.ts +5 -5
- package/src/__tests__/host-cu-routes-targeted.test.ts +8 -8
- package/src/__tests__/image-credentials.test.ts +13 -13
- package/src/__tests__/inbound-admitted-introduction-nudge.test.ts +14 -6
- package/src/__tests__/inbound-trust-verdict.test.ts +14 -6
- package/src/__tests__/inference-no-mode-boot-e2e.test.ts +11 -11
- package/src/__tests__/inference-profile-session-handler.test.ts +7 -7
- package/src/__tests__/inference-profile-session-ipc.test.ts +5 -5
- package/src/__tests__/inference-profile-validation-jev.test.ts +1 -1
- package/src/__tests__/init-feature-flag-overrides.test.ts +40 -24
- package/src/__tests__/input-repairs.test.ts +1 -1
- package/src/__tests__/install-skill-routing.test.ts +10 -8
- package/src/__tests__/integration-status.test.ts +5 -5
- package/src/__tests__/internal-telemetry-routes.test.ts +3 -3
- package/src/__tests__/invite-routes-http.test.ts +1 -1
- package/src/__tests__/llm-catalog-parity.test.ts +5 -7
- package/src/__tests__/llm-request-log-source-clickhouse.test.ts +2 -2
- package/src/__tests__/llm-resolver-override-or-default.test.ts +3 -3
- package/src/__tests__/llm-resolver.test.ts +1 -1
- package/src/__tests__/llm-schema-fallback-profile.test.ts +25 -19
- package/src/__tests__/llm-usage-store.test.ts +1 -1
- package/src/__tests__/managed-skill-lifecycle.test.ts +12 -12
- package/src/__tests__/mcp-abort-signal.test.ts +1 -2
- package/src/__tests__/mcp-client-auth.test.ts +1 -2
- package/src/__tests__/mcp-config-secret-boundary.test.ts +44 -40
- package/src/__tests__/mcp-tool-annotations-risk.test.ts +1 -2
- package/src/__tests__/media-generate-image.test.ts +30 -30
- package/src/__tests__/memory-config-file-parity.test.ts +6 -6
- package/src/__tests__/migration-export-to-gcs.test.ts +4 -4
- package/src/__tests__/migration-import-commit-http.test.ts +1 -1
- package/src/__tests__/mtime-cache.test.ts +2 -2
- package/src/__tests__/{notification-platform-adapter.test.ts → notification-cloud-adapter.test.ts} +39 -39
- package/src/__tests__/notification-deep-link.test.ts +40 -40
- package/src/__tests__/oauth-apps-routes.test.ts +3 -3
- package/src/__tests__/oauth-cli.test.ts +9 -9
- package/src/__tests__/oauth-commands-routes.test.ts +16 -16
- package/src/__tests__/oauth-connect-orchestrator.test.ts +2 -2
- package/src/__tests__/oauth-provider-serializer.test.ts +11 -11
- package/src/__tests__/oauth-providers-routes.test.ts +12 -12
- package/src/__tests__/oauth-store.test.ts +1 -1
- package/src/__tests__/oauth2-gateway-transport.test.ts +3 -3
- package/src/__tests__/onboarding-persona-write.test.ts +2 -2
- package/src/__tests__/openai-image-service.test.ts +2 -2
- package/src/__tests__/openai-responses-cutover-guard.test.ts +2 -2
- package/src/__tests__/openai-responses-provider.test.ts +1 -1
- package/src/__tests__/path-policy.test.ts +4 -4
- package/src/__tests__/personal-memory-auth-bypass.test.ts +1 -1
- package/src/__tests__/platform-bash-auto-approve.test.ts +18 -18
- package/src/__tests__/plugin-api-model-profiles.test.ts +1 -1
- package/src/__tests__/plugin-api-provider.test.ts +1 -1
- package/src/__tests__/plugin-api-store-credential.test.ts +4 -1
- package/src/__tests__/plugin-api-webhook-url.test.ts +4 -5
- package/src/__tests__/plugin-import-boundary-guard.test.ts +8 -39
- package/src/__tests__/plugin-import-boundary-reverse-guard.test.ts +2 -2
- package/src/__tests__/{provider-platform-proxy-integration.test.ts → provider-cloud-proxy-integration.test.ts} +70 -72
- package/src/__tests__/provider-commit-message-generator.test.ts +1 -1
- package/src/__tests__/provider-connections-backfill.test.ts +9 -9
- package/src/__tests__/provider-error-scenarios.test.ts +8 -8
- package/src/__tests__/provider-registry-ollama.test.ts +1 -1
- package/src/__tests__/provider-send-message-override-profile.test.ts +5 -5
- package/src/__tests__/registry.test.ts +3 -3
- package/src/__tests__/requests-mock.ts +972 -0
- package/src/__tests__/resolve-trust-class.test.ts +1 -1
- package/src/__tests__/resource-pressure-guard.test.ts +6 -6
- package/src/__tests__/resource-pressure-routes.test.ts +5 -5
- package/src/__tests__/retry-fallback-escalation.test.ts +5 -5
- package/src/__tests__/sanitize-config-for-transfer.test.ts +1 -1
- package/src/__tests__/scaffold-managed-skill-tool.test.ts +97 -97
- package/src/__tests__/schedule-store.test.ts +1 -1
- package/src/__tests__/search-skills-unified.test.ts +9 -7
- package/src/__tests__/{secret-routes-platform-proxy.test.ts → secret-routes-cloud-proxy.test.ts} +48 -95
- package/src/__tests__/secret-routes-scrub.test.ts +2 -59
- package/src/__tests__/secure-keys.test.ts +1 -1
- package/src/__tests__/skill-load-plugin-scope.test.ts +2 -2
- package/src/__tests__/skill-load-tool.test.ts +1 -1
- package/src/__tests__/skill-projection-feature-flag.test.ts +0 -19
- package/src/__tests__/skill-projection.benchmark.test.ts +5 -7
- package/src/__tests__/skill-tool-factory.test.ts +1 -1
- package/src/__tests__/skills-file-content-endpoint.test.ts +222 -536
- package/src/__tests__/skills-files-catalog-fallback.test.ts +259 -577
- package/src/__tests__/skills.test.ts +1 -1
- package/src/__tests__/slim-skill-category.test.ts +11 -9
- package/src/__tests__/stt-stream-session.test.ts +3 -3
- package/src/__tests__/subagent-call-site-routing.test.ts +1 -1
- package/src/__tests__/subagent-disposal.test.ts +5 -5
- package/src/__tests__/subagent-fork-notifications.test.ts +4 -4
- package/src/__tests__/subagent-fork-spawn.test.ts +5 -5
- package/src/__tests__/subagent-manager-notify.test.ts +5 -5
- package/src/__tests__/subagent-tool-gate-mode.test.ts +2 -2
- package/src/__tests__/system-prompt.test.ts +1 -1
- package/src/__tests__/telegram-bot-username-resolution.test.ts +34 -52
- package/src/__tests__/telegram-config.test.ts +16 -16
- package/src/__tests__/telephony-tts-guard.test.ts +13 -13
- package/src/__tests__/test-preload.ts +17 -7
- package/src/__tests__/tool-audit.test.ts +1 -1
- package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +7 -5
- package/src/__tests__/tool-executor-lifecycle-events.test.ts +1 -1
- package/src/__tests__/turn-events-store.test.ts +1 -1
- package/src/__tests__/twilio-routes.test.ts +2 -1
- package/src/__tests__/ui-choice-copy-surfaces.test.ts +1 -1
- package/src/__tests__/unified-turn-context-client-os.test.ts +1 -1
- package/src/__tests__/validate-input.test.ts +5 -5
- package/src/__tests__/verification-outbound-delivery.test.ts +1 -1
- package/src/__tests__/voice-config-update.test.ts +15 -15
- package/src/__tests__/voice-ingress-preflight.test.ts +4 -4
- package/src/__tests__/web-search.test.ts +340 -859
- package/src/__tests__/workspace-git-service.test.ts +1 -1
- package/src/__tests__/workspace-migration-082-backfill-managed-profile-labels.test.ts +12 -12
- package/src/__tests__/workspace-migration-087-memory-router-balanced-profile.test.ts +1 -1
- package/src/__tests__/workspace-migration-090-memory-router-cost-optimized-profile.test.ts +1 -1
- package/src/__tests__/workspace-migration-100-upgrade-quality-profile-to-fable-5.test.ts +1 -1
- package/src/__tests__/workspace-migration-103-upgrade-quality-profile-to-opus-4-8.test.ts +1 -1
- package/src/__tests__/workspace-migration-110-flip-balanced-profile-to-together.test.ts +1 -1
- package/src/__tests__/workspace-migration-113-swap-balanced-profile-to-glm-5p2.test.ts +1 -1
- package/src/__tests__/workspace-migration-114-swap-quality-profile-to-opus.test.ts +1 -1
- package/src/__tests__/workspace-migration-123-swap-quality-profile-to-fable.test.ts +1 -1
- package/src/__tests__/workspace-migration-125-repoint-managed-connections-to-cadet.test.ts +3 -3
- package/src/__tests__/workspace-migration-126-strip-managed-profile-bodies.test.ts +9 -9
- package/src/__tests__/workspace-migration-127-backfill-default-provider.test.ts +11 -11
- package/src/__tests__/workspace-migration-130-speech-mode-to-provider.test.ts +3 -3
- package/src/__tests__/workspace-migration-132-web-search-mode-to-provider.test.ts +6 -6
- package/src/__tests__/workspace-migration-133-collapse-provider-connections.test.ts +3 -3
- package/src/__tests__/workspace-migration-134-image-generation-mode-to-provider.test.ts +6 -6
- package/src/__tests__/workspace-migration-136-repair-stale-fireworks-kimi-model-id.test.ts +1 -1
- package/src/__tests__/workspace-migration-137-repair-retired-fireworks-minimax-model-id.test.ts +1 -1
- package/src/__tests__/workspace-migration-146-repair-retired-fireworks-deepseek-flash-model-id.test.ts +1 -1
- package/src/__tests__/workspace-migration-147-rename-colliding-backup-profile-names.test.ts +1 -1
- package/src/__tests__/workspace-migration-151-repair-renamed-fireworks-deepseek-pro-model-id.test.ts +1 -1
- package/src/__tests__/workspace-migration-152-repair-retired-fireworks-minimax-m2p7-model-id.test.ts +1 -1
- package/src/__tests__/workspace-migration-159-rename-colliding-jev-profile-name.test.ts +1 -1
- package/src/__tests__/workspace-migration-160-repair-retired-fireworks-model-ids.test.ts +1 -1
- package/src/__tests__/workspace-migration-161-repair-retired-fireworks-glm-5p2-model-id.test.ts +1 -1
- package/src/api/events/cloud-disconnected.ts +21 -0
- package/src/api/events/host-bash.ts +1 -1
- package/src/api/events/host-cu.ts +1 -1
- package/src/api/events/host-file.ts +1 -1
- package/src/api/events/notification-intent.ts +1 -1
- package/src/api/events/show-cloud-login.ts +18 -0
- package/src/api/index.ts +11 -11
- package/src/api/responses/home.ts +1 -1
- package/src/api/surfaces.ts +4 -4
- package/src/approvals/guardian-request-resolvers.ts +2 -2
- package/src/avatar/accent-backfill.ts +1 -1
- package/src/avatar/identity-avatar.ts +1 -1
- package/src/avatar/notification-avatar.test.ts +2 -2
- package/src/avatar/notification-avatar.ts +2 -2
- package/src/avatar/resvg-lazy.test.ts +1 -1
- package/src/avatar/resvg-lazy.ts +3 -3
- package/src/avatar/sync-avatar.test.ts +76 -76
- package/src/avatar/sync-avatar.ts +15 -15
- package/src/avatar/traits-png-sync.ts +1 -1
- package/src/background-wake/background-wake-routes.test.ts +39 -39
- package/src/background-wake/{platform-client.test.ts → cloud-client.test.ts} +11 -11
- package/src/background-wake/{platform-client.ts → cloud-client.ts} +14 -14
- package/src/background-wake/publisher.ts +4 -4
- package/src/background-wake/wake-intent-hooks.test.ts +3 -3
- package/src/calls/__tests__/call-controller.test.ts +2 -2
- package/src/calls/__tests__/voice-session-bridge.test.ts +1 -1
- package/src/calls/call-domain.ts +1 -1
- package/src/calls/resolve-call-tts-provider.ts +6 -6
- package/src/calls/telephony-credential-preflight.ts +3 -3
- package/src/calls/telephony-tts-capability.ts +5 -6
- package/src/calls/tts-call-strategy.ts +1 -1
- package/src/calls/voice-escalation-judge.ts +1 -1
- package/src/calls/voice-ingress-preflight.ts +4 -4
- package/src/cli/bundled-modules.ts +1 -1
- package/src/cli/commands/__tests__/apps.test.ts +18 -53
- package/src/cli/commands/__tests__/plugins.test.ts +13 -13
- package/src/cli/commands/__tests__/tts.test.ts +1 -1
- package/src/cli/commands/auth.help.ts +3 -3
- package/src/cli/commands/auth.ts +2 -4
- package/src/cli/commands/browser.help.ts +2 -2
- package/src/cli/commands/channels/index.help.ts +2 -2
- package/src/cli/commands/channels/index.ts +1 -1
- package/src/cli/commands/channels/send.ts +1 -1
- package/src/cli/commands/cloud/__tests__/callback-routes-list.test.ts +2 -2
- package/src/cli/commands/cloud/__tests__/connect.test.ts +1 -1
- package/src/cli/commands/cloud/__tests__/disconnect.test.ts +3 -4
- package/src/cli/commands/cloud/connect.ts +2 -2
- package/src/cli/commands/cloud/credits-format.ts +1 -1
- package/src/cli/commands/cloud/index.help.ts +35 -35
- package/src/cli/commands/cloud/index.ts +1 -1
- package/src/cli/commands/config.ts +2 -2
- package/src/cli/commands/credentials.ts +10 -12
- package/src/cli/commands/domain.ts +1 -1
- package/src/cli/commands/email.help.ts +1 -1
- package/src/cli/commands/email.ts +2 -2
- package/src/cli/commands/gateway.help.ts +1 -1
- package/src/cli/commands/gateway.ts +1 -1
- package/src/cli/commands/image-generation.help.ts +1 -1
- package/src/cli/commands/inference-providers.ts +1 -1
- package/src/cli/commands/inference.help.ts +2 -2
- package/src/cli/commands/memory/index.help.ts +1 -1
- package/src/cli/commands/oauth/connect.test.ts +2 -2
- package/src/cli/commands/oauth/connect.ts +1 -1
- package/src/cli/commands/oauth/index.help.ts +5 -5
- package/src/cli/commands/oauth/providers.ts +2 -2
- package/src/cli/commands/oauth/shared.ts +3 -3
- package/src/cli/commands/plugins.help.ts +2 -3
- package/src/cli/commands/plugins.ts +5 -5
- package/src/cli/commands/roadmap.help.ts +1 -1
- package/src/cli/commands/telemetry.help.ts +2 -2
- package/src/cli/commands/telemetry.ts +2 -2
- package/src/cli/commands/tts.help.ts +3 -3
- package/src/cli/commands/webhooks.help.ts +9 -9
- package/src/cli/commands/webhooks.ts +1 -1
- package/src/cli/lib/__tests__/inspect-plugin.test.ts +8 -8
- package/src/cli/lib/__tests__/{install-from-platform.test.ts → install-from-cloud.test.ts} +54 -54
- package/src/cli/lib/__tests__/plugin-catalog-cache.test.ts +18 -18
- package/src/cli/lib/__tests__/{plugin-catalog-platform.test.ts → plugin-catalog-cloud.test.ts} +2 -2
- package/src/cli/lib/__tests__/plugin-catalog-local.test.ts +1 -1
- package/src/cli/lib/__tests__/plugin-catalog-resolve.test.ts +9 -9
- package/src/cli/lib/__tests__/plugin-details.test.ts +10 -10
- package/src/cli/lib/__tests__/plugins-install-offline.test.ts +24 -24
- package/src/cli/lib/bundled-marketplace.json +1 -1
- package/src/cli/lib/inspect-plugin.ts +2 -2
- package/src/cli/lib/{install-from-platform.ts → install-from-cloud.ts} +29 -29
- package/src/cli/lib/install-from-github.ts +4 -4
- package/src/cli/lib/plugin-catalog-cache.ts +7 -7
- package/src/cli/lib/{plugin-catalog-platform.ts → plugin-catalog-cloud.ts} +6 -6
- package/src/cli/lib/plugin-catalog-local.ts +2 -2
- package/src/cli/lib/publish-plugin.ts +9 -10
- package/src/cli/lib/search-plugins.ts +2 -2
- package/src/{platform → cloud}/client.test.ts +85 -86
- package/src/{platform → cloud}/client.ts +38 -46
- package/src/{platform/platform-patch-queue.test.ts → cloud/cloud-patch-queue.test.ts} +6 -9
- package/src/{platform/platform-patch-queue.ts → cloud/cloud-patch-queue.ts} +11 -11
- package/src/{platform/managed-speech.test.ts → cloud/cloud-speech.test.ts} +19 -19
- package/src/{platform/managed-speech.ts → cloud/cloud-speech.ts} +41 -41
- package/src/{platform → cloud}/consent-cache.test.ts +5 -5
- package/src/{platform → cloud}/consent-cache.ts +8 -8
- package/src/cloud/feature-gate.ts +8 -0
- package/src/{platform → cloud}/sync-identity.test.ts +4 -4
- package/src/{platform → cloud}/sync-identity.ts +6 -6
- package/src/config/__tests__/{platform-identity.test.ts → cloud-identity.test.ts} +54 -56
- package/src/config/__tests__/{platform-rehydration.test.ts → cloud-rehydration.test.ts} +47 -80
- package/src/config/__tests__/default-profile-catalog.test.ts +12 -12
- package/src/config/__tests__/default-provider.test.ts +4 -4
- package/src/config/__tests__/deployment-context-defaults.test.ts +23 -23
- package/src/config/__tests__/{jev-managed-profile.test.ts → jev-cloud-profile.test.ts} +3 -5
- package/src/config/__tests__/loader-callsite-strip-fallback.test.ts +2 -2
- package/src/config/__tests__/loader-last-known-good.test.ts +6 -6
- package/src/config/__tests__/loader-sparse-array-cleanup.test.ts +2 -2
- package/src/config/__tests__/profile-materialization.test.ts +7 -7
- package/src/config/__tests__/seed-default-provider.test.ts +17 -17
- package/src/config/__tests__/substrate-twin-shadowing.test.ts +36 -26
- package/src/config/__tests__/sync-gated-profiles.test.ts +20 -20
- package/src/config/__tests__/webhook-routing.test.ts +51 -51
- package/src/config/bundled-skills/computer-use/TOOLS.json +12 -12
- package/src/config/bundled-skills/messaging/SKILL.md +8 -8
- package/src/config/bundled-skills/messaging/TOOLS.json +2 -2
- package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +1 -1
- package/src/config/bundled-skills/messaging/tools/shared.ts +1 -1
- package/src/config/bundled-skills/phone-calls/references/TROUBLESHOOTING.md +2 -2
- package/src/config/bundled-skills/settings/TOOLS.json +3 -3
- package/src/config/bundled-skills/settings/tools/shared.ts +1 -1
- package/src/config/bundled-skills/settings/tools/voice-config-update.ts +12 -12
- package/src/config/bundled-skills/skill-management/SKILL.md +3 -3
- package/src/config/bundled-skills/skill-management/TOOLS.json +8 -8
- package/src/config/bundled-skills/skill-management/tools/{delete-managed.ts → delete-cloud.ts} +2 -2
- package/src/config/bundled-skills/skill-management/tools/{scaffold-managed.ts → scaffold-cloud.ts} +2 -2
- package/src/config/call-site-defaults.ts +6 -6
- package/src/config/{platform-identity.ts → cloud-identity.ts} +39 -42
- package/src/config/cloud-rehydration.ts +35 -0
- package/src/config/{managed-speech-defaults.ts → cloud-speech-defaults.ts} +13 -13
- package/src/config/default-profile-catalog.ts +36 -38
- package/src/config/default-profile-names.ts +11 -11
- package/src/config/default-provider-resolution.ts +2 -2
- package/src/config/default-provider.ts +1 -1
- package/src/config/env-registry.ts +21 -26
- package/src/config/env.ts +33 -46
- package/src/config/feature-flag-registry.json +5 -5
- package/src/config/inference-profile-validation.ts +1 -1
- package/src/config/llm-resolver.ts +9 -10
- package/src/config/loader.ts +33 -17
- package/src/config/profile-materialization.ts +8 -8
- package/src/config/profile-text-generation.test.ts +1 -1
- package/src/config/sanitize-for-transfer.ts +1 -1
- package/src/config/schema.ts +6 -6
- package/src/config/schemas/__tests__/stt.test.ts +2 -2
- package/src/config/schemas/call-site-catalog.ts +1 -1
- package/src/config/schemas/channels.ts +8 -0
- package/src/config/schemas/{platform.ts → cloud.ts} +7 -6
- package/src/config/schemas/host-browser.ts +1 -0
- package/src/config/schemas/ingress.ts +29 -10
- package/src/config/schemas/llm.ts +36 -36
- package/src/config/schemas/memory-lifecycle.ts +11 -1
- package/src/config/schemas/services.ts +4 -4
- package/src/config/schemas/stt.ts +3 -3
- package/src/config/schemas/tts.ts +10 -5
- package/src/config/schemas/voice.ts +1 -1
- package/src/config/seed-inference-profiles.ts +19 -19
- package/src/config/skill-state.ts +2 -2
- package/src/config/skills.ts +4 -4
- package/src/config/substrate-twin-shadowing.ts +12 -17
- package/src/config/sync-gated-profiles.ts +8 -9
- package/src/config/webhook-routing.ts +19 -19
- package/src/contacts/contacts-write.ts +1 -1
- package/src/credential-execution/ces-runtime.ts +6 -6
- package/src/credential-execution/{managed-catalog.ts → cloud-catalog.ts} +24 -24
- package/src/credential-execution/prompted-credential.ts +2 -23
- package/src/credential-health/credential-health-service.ts +59 -70
- package/src/daemon/__tests__/can-spawn-subagents.test.ts +1 -1
- package/src/daemon/__tests__/conversation-tool-setup-exclude.test.ts +4 -4
- package/src/daemon/config-watcher.ts +2 -2
- package/src/daemon/conversation-agent-loop.ts +9 -9
- package/src/daemon/conversation-error.ts +36 -36
- package/src/daemon/conversation-skill-tools.ts +7 -7
- package/src/daemon/conversation-surfaces.ts +1 -1
- package/src/daemon/conversation-tool-setup.ts +2 -2
- package/src/daemon/conversation-turn-finalize.ts +1 -1
- package/src/daemon/conversation-workspace.ts +1 -1
- package/src/daemon/conversation.ts +1 -1
- package/src/daemon/credential-transcript-scrub.ts +32 -35
- package/src/daemon/daemon-readiness.ts +1 -1
- package/src/daemon/event-loop-watchdog.ts +2 -2
- package/src/daemon/handlers/config-ingress.ts +9 -9
- package/src/daemon/handlers/config-telegram.ts +6 -6
- package/src/daemon/handlers/skills.ts +20 -20
- package/src/daemon/host-cu-proxy.ts +1 -1
- package/src/daemon/lifecycle.ts +19 -19
- package/src/daemon/parse-actual-tokens-from-error.ts +3 -3
- package/src/daemon/providers-setup.ts +6 -6
- package/src/daemon/resource-pressure-guard-lifecycle.ts +1 -1
- package/src/daemon/resource-pressure-guard.ts +6 -6
- package/src/daemon/shutdown-handlers.ts +1 -1
- package/src/daemon/sqlite-corruption-watchdog.ts +3 -3
- package/src/daemon/trust-context.ts +1 -1
- package/src/desktop/desktop-automation-lease.ts +1 -1
- package/src/desktop/desktop-browser-endpoint.ts +2 -4
- package/src/desktop/desktop-computer-use-routing.test.ts +6 -6
- package/src/desktop/desktop-stream-bridge.test.ts +4 -4
- package/src/desktop/desktop-stream-bridge.ts +1 -1
- package/src/desktop/{virtual-desktop-platform.test.ts → virtual-desktop-cloud.test.ts} +6 -6
- package/src/desktop/virtual-desktop-feature.ts +7 -7
- package/src/email/byo-email-credential.ts +1 -1
- package/src/email/registered-inbox.test.ts +16 -16
- package/src/email/registered-inbox.ts +20 -20
- package/src/heartbeat/heartbeat-service.ts +1 -1
- package/src/hooks/hook-loader.ts +2 -2
- package/src/inbound/__tests__/oauth-callback-url.test.ts +2 -2
- package/src/inbound/__tests__/tunnel-probe.test.ts +8 -8
- package/src/inbound/{platform-callback-registration.ts → cloud-callback-registration.ts} +49 -60
- package/src/inbound/oauth-callback-url.ts +6 -6
- package/src/inbound/pod-webhook-claim.ts +2 -2
- package/src/inbound/public-ingress-urls.ts +3 -3
- package/src/inbound/tunnel-probe.ts +21 -15
- package/src/inbound/tunnel-webhooks-gate.ts +3 -3
- package/src/ipc/__tests__/db-readiness-ipc-gate.test.ts +1 -1
- package/src/ipc/__tests__/email-ipc.test.ts +8 -8
- package/src/ipc/gateway-client.test.ts +55 -59
- package/src/ipc/gateway-flag-listener.ts +3 -3
- package/src/ipc/routes/db-proxy.ts +1 -1
- package/src/live-voice/__tests__/live-activity-reporter.test.ts +2 -2
- package/src/live-voice/__tests__/{live-voice-managed-speech-fallback.test.ts → live-voice-cloud-speech-fallback.test.ts} +15 -15
- package/src/live-voice/__tests__/live-voice-credential-preflight.test.ts +7 -7
- package/src/live-voice/__tests__/live-voice-stt.test.ts +1 -1
- package/src/live-voice/live-activity-reporter.ts +7 -7
- package/src/live-voice/live-voice-credential-preflight.ts +6 -6
- package/src/live-voice/live-voice-session.ts +3 -3
- package/src/live-voice/live-voice-tts.ts +1 -1
- package/src/mcp/__tests__/mcp-oauth-client-registration.test.ts +4 -4
- package/src/mcp/__tests__/mcp-oauth-provider.test.ts +1 -1
- package/src/mcp/mcp-oauth-provider.ts +2 -2
- package/src/media/gemini-image-service.ts +11 -13
- package/src/media/image-credentials.ts +9 -9
- package/src/media/openai-image-service.ts +1 -1
- package/src/media/types.ts +3 -3
- package/src/messaging/providers/channel-transport.ts +1 -1
- package/src/messaging/providers/discord/transport.ts +1 -1
- package/src/messaging/providers/gmail/adapter.ts +1 -1
- package/src/messaging/providers/gmail/client.ts +4 -4
- package/src/messaging/providers/outlook/adapter.ts +1 -1
- package/src/messaging/providers/slack/adapter.ts +1 -1
- package/src/messaging/providers/slack/transport.ts +1 -1
- package/src/messaging/providers/telegram-bot/transport.ts +1 -1
- package/src/monitoring/db-integrity-check.ts +1 -1
- package/src/monitoring/db-integrity-sample.ts +2 -2
- package/src/monitoring/mount-watch.ts +1 -1
- package/src/monitoring/oom-kill-reporter.ts +1 -1
- package/src/monitoring/worker.ts +5 -5
- package/src/notifications/README.md +2 -2
- package/src/notifications/__tests__/broadcaster.test.ts +9 -9
- package/src/notifications/__tests__/completion-policy.test.ts +1 -1
- package/src/notifications/__tests__/emit-signal-pipeline-failure.test.ts +4 -4
- package/src/notifications/activity-failed-dedupe.ts +1 -1
- package/src/notifications/adapters/{platform.ts → cloud.ts} +8 -8
- package/src/notifications/broadcaster.ts +10 -10
- package/src/notifications/decision-engine.ts +1 -1
- package/src/notifications/destination-resolver.ts +1 -1
- package/src/notifications/emit-signal.ts +6 -6
- package/src/notifications/types.ts +2 -2
- package/src/oauth/__tests__/identity-verifier.test.ts +1 -1
- package/src/oauth/__tests__/{seed-providers-managed.test.ts → seed-providers-cloud.test.ts} +13 -13
- package/src/oauth/byo-connection.test.ts +2 -2
- package/src/oauth/{platform-connection.test.ts → cloud-connection.test.ts} +41 -43
- package/src/oauth/{platform-connection.ts → cloud-connection.ts} +19 -19
- package/src/oauth/connection-resolver.test.ts +59 -61
- package/src/oauth/connection-resolver.ts +22 -22
- package/src/oauth/connection.ts +1 -1
- package/src/oauth/oauth-store.ts +8 -8
- package/src/oauth/provider-serializer.ts +4 -4
- package/src/oauth/revoke.ts +1 -1
- package/src/oauth/seed-providers.ts +32 -32
- package/src/permissions/approval-provenance.ts +1 -1
- package/src/permissions/checker.test.ts +18 -16
- package/src/permissions/checker.ts +3 -3
- package/src/persistence/compaction-log-store-clickhouse.ts +3 -3
- package/src/persistence/embeddings/embedding-backend.test.ts +16 -16
- package/src/persistence/embeddings/embedding-backend.ts +13 -13
- package/src/persistence/embeddings/embedding-gemini.test.ts +9 -12
- package/src/persistence/embeddings/embedding-gemini.ts +11 -11
- package/src/persistence/embeddings/embedding-runtime-manager.ts +2 -2
- package/src/persistence/jobs-store.ts +1 -1
- package/src/persistence/lifecycle-events-store.ts +1 -1
- package/src/persistence/llm-request-log-sink-clickhouse.ts +3 -3
- package/src/persistence/llm-request-log-source-clickhouse.ts +3 -3
- package/src/persistence/migrations/224-oauth-providers-managed-service-is-paid.ts +1 -1
- package/src/persistence/migrations/296-rewrite-balanced-economy-profile-pins.test.ts +1 -1
- package/src/persistence/migrations/296-rewrite-balanced-economy-profile-pins.ts +2 -2
- package/src/persistence/migrations/306-rewrite-frontier-profile-pins.test.ts +1 -1
- package/src/persistence/migrations/306-rewrite-frontier-profile-pins.ts +1 -1
- package/src/persistence/migrations/351-schedule-skill-script-handoff.ts +1 -1
- package/src/persistence/migrations/361-normalize-managed-connection-rows.test.ts +3 -3
- package/src/persistence/migrations/361-normalize-managed-connection-rows.ts +7 -7
- package/src/persistence/migrations/__tests__/319-remove-legacy-managed-connections.test.ts +2 -2
- package/src/persistence/schema/oauth.ts +1 -1
- package/src/plugin-api/index.ts +4 -4
- package/src/plugin-api/model-profiles.test.ts +1 -1
- package/src/plugin-api/model-profiles.ts +1 -1
- package/src/plugin-api/transcription-session.ts +1 -1
- package/src/plugin-api/vision-support.test.ts +1 -1
- package/src/plugin-api/webhook-url.ts +12 -12
- package/src/plugins/__tests__/source-fingerprint.test.ts +1 -1
- package/src/plugins/defaults/{platform-hosted → cloud-hosted}/__tests__/reengage.test.ts +5 -6
- package/src/plugins/defaults/cloud-hosted/package.json +14 -0
- package/src/plugins/defaults/{platform-hosted → cloud-hosted}/routes/reengage.ts +3 -3
- package/src/plugins/defaults/index.ts +6 -6
- package/src/plugins/defaults/main.ts +5 -5
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-job.test.ts +5 -5
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-prompt.test.ts +1 -1
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-provider-path.test.ts +1 -1
- package/src/plugins/defaults/memory/__tests__/memory-tier-boundary-guard.test.ts +5 -0
- package/src/plugins/defaults/memory/config.ts +4 -4
- package/src/plugins/defaults/memory/memory-retrospective-constants.ts +2 -2
- package/src/plugins/defaults/memory/memory-retrospective-job.ts +7 -7
- package/src/plugins/defaults/memory/memory-retrospective-prompt.ts +5 -5
- package/src/plugins/defaults/memory/memory-retrospective-skill-card.ts +2 -2
- package/src/plugins/defaults/memory/src/__tests__/memory-v2-routes.test.ts +1 -1
- package/src/plugins/defaults/memory/src/__tests__/memory-worker-routes.test.ts +1 -1
- package/src/plugins/defaults/memory/substrate/__tests__/boot-maintenance.test.ts +20 -20
- package/src/plugins/defaults/memory/substrate/__tests__/cli-command-store.test.ts +1 -1
- package/src/plugins/defaults/memory/substrate/__tests__/skill-store.test.ts +3 -3
- package/src/plugins/defaults/memory/substrate/boot-maintenance.ts +17 -17
- package/src/plugins/defaults/memory/substrate/cli-command-store.ts +2 -2
- package/src/plugins/defaults/memory/substrate/prompts/consolidation.ts +1 -1
- package/src/plugins/defaults/memory/substrate/skill-store.ts +4 -4
- package/src/plugins/defaults/memory/v3/__tests__/maintain-job.test.ts +3 -3
- package/src/plugins/defaults/memory/v3/__tests__/pool-select.test.ts +2 -2
- package/src/plugins/defaults/memory/v3/maintain-job.ts +10 -10
- package/src/plugins/defaults/memory/v3/orchestrate.ts +3 -3
- package/src/plugins/defaults/memory/worker.ts +5 -5
- package/src/plugins/defaults/workspace/injectors.ts +2 -2
- package/src/plugins/mtime-cache.ts +1 -1
- package/src/plugins/source-versions.ts +1 -1
- package/src/plugins/types.ts +1 -1
- package/src/prompts/__tests__/system-prompt.test.ts +1 -1
- package/src/prompts/normalize-onboarding.ts +1 -1
- package/src/prompts/persona-resolver.ts +1 -1
- package/src/prompts/templates/system-sections.ts +3 -3
- package/src/providers/__tests__/cadet-connection-routing.test.ts +7 -7
- package/src/providers/__tests__/cadet-mismatch-routing.test.ts +12 -12
- package/src/providers/__tests__/connection-model-compat.test.ts +2 -2
- package/src/providers/__tests__/dispatch-connection-routing.test.ts +10 -10
- package/src/providers/__tests__/inference.test.ts +2 -2
- package/src/providers/__tests__/preflight-resolved-config.test.ts +16 -16
- package/src/providers/__tests__/retry-callsite.test.ts +1 -1
- package/src/providers/__tests__/satellite-connection-routing.test.ts +4 -4
- package/src/providers/__tests__/search-provider-catalog.test.ts +2 -2
- package/src/providers/__tests__/voice-error-copy.test.ts +3 -3
- package/src/providers/anthropic/client.ts +1 -1
- package/src/providers/cadet/client.ts +1 -1
- package/src/providers/cadet-model-routing.test.ts +19 -19
- package/src/providers/cadet-model-routing.ts +23 -23
- package/src/providers/call-site-routing.ts +10 -10
- package/src/providers/{platform-proxy → cloud-proxy}/constants.ts +11 -11
- package/src/providers/{platform-proxy → cloud-proxy}/context.ts +26 -26
- package/src/providers/connection-resolution.ts +43 -43
- package/src/providers/fallback-breaker.ts +2 -2
- package/src/providers/fetch-provider-catalog.ts +3 -3
- package/src/providers/gemini/client.ts +5 -5
- package/src/providers/inference/__tests__/adapter-factory-openai-compatible.test.ts +3 -3
- package/src/providers/inference/__tests__/base-url-route-validation.test.ts +8 -8
- package/src/providers/inference/__tests__/base-url-security.test.ts +4 -4
- package/src/providers/inference/adapter-factory.ts +35 -35
- package/src/providers/inference/auth.ts +10 -10
- package/src/providers/inference/backfill.ts +11 -11
- package/src/providers/inference/connection-availability.ts +24 -24
- package/src/providers/inference/connections.ts +18 -20
- package/src/providers/inference/profile-probe.ts +4 -4
- package/src/providers/inference/resolve-auth.ts +8 -8
- package/src/providers/jev/ask.test.ts +1 -1
- package/src/providers/jev/ask.ts +2 -2
- package/src/providers/model-catalog.ts +8 -9
- package/src/providers/openai/__tests__/api-error-normalization.test.ts +3 -3
- package/src/providers/openai/api-error-normalization.ts +2 -2
- package/src/providers/provider-availability.ts +4 -4
- package/src/providers/provider-env-vars.ts +1 -1
- package/src/providers/provider-secret-catalog.ts +1 -1
- package/src/providers/registry.ts +20 -20
- package/src/providers/retry.ts +26 -26
- package/src/providers/routing-identity.ts +10 -10
- package/src/providers/search-provider-catalog.ts +2 -2
- package/src/providers/speech-to-text/__tests__/{cadet-managed-realtime.test.ts → cadet-cloud-realtime.test.ts} +3 -3
- package/src/providers/speech-to-text/__tests__/{cadet-managed.test.ts → cadet-cloud.test.ts} +35 -35
- package/src/providers/speech-to-text/__tests__/deepgram-flux-realtime.test.ts +1 -1
- package/src/providers/speech-to-text/__tests__/resolve.test.ts +27 -27
- package/src/providers/speech-to-text/{cadet-managed-flux-realtime.ts → cadet-cloud-flux-realtime.ts} +6 -8
- package/src/providers/speech-to-text/{cadet-managed-realtime.ts → cadet-cloud-realtime.ts} +3 -3
- package/src/providers/speech-to-text/{cadet-managed.ts → cadet-cloud.ts} +18 -20
- package/src/providers/speech-to-text/cadet-speech-relay-connection.ts +7 -7
- package/src/providers/speech-to-text/deepgram-flux-frames.ts +3 -3
- package/src/providers/speech-to-text/deepgram-flux-realtime.ts +4 -4
- package/src/providers/speech-to-text/provider-catalog.ts +3 -3
- package/src/providers/speech-to-text/resolve.ts +26 -28
- package/src/providers/together/client.ts +1 -1
- package/src/providers/types.ts +4 -4
- package/src/providers/voice-error-copy.ts +1 -1
- package/src/runtime/__tests__/desktop-stream-upgrade.test.ts +10 -10
- package/src/runtime/agent-wake.ts +1 -1
- package/src/runtime/auth/__tests__/middleware.test.ts +1 -1
- package/src/runtime/auth/middleware.ts +1 -1
- package/src/runtime/auth/scopes.ts +1 -1
- package/src/runtime/capabilities.ts +1 -1
- package/src/runtime/channel-invite-transports/discord.ts +1 -1
- package/src/runtime/channel-invite-transports/email.ts +2 -2
- package/src/runtime/channel-readiness-service.ts +15 -13
- package/src/runtime/channel-reply-session.test.ts +1 -1
- package/src/runtime/channel-reply-session.ts +1 -1
- package/src/runtime/http-server.ts +4 -4
- package/src/runtime/introduction-policy.ts +4 -4
- package/src/runtime/migrations/__tests__/origin-mode.test.ts +14 -14
- package/src/runtime/migrations/__tests__/v1-test-helpers.ts +1 -1
- package/src/runtime/migrations/__tests__/vbundle-import-version-compat.test.ts +2 -2
- package/src/runtime/migrations/__tests__/vbundle-metadata-merge-integration.test.ts +3 -4
- package/src/runtime/migrations/__tests__/vbundle-metadata-merge.test.ts +6 -7
- package/src/runtime/migrations/__tests__/vbundle-validator-v1-schema.test.ts +1 -1
- package/src/runtime/migrations/migration-transport.ts +3 -3
- package/src/runtime/migrations/origin-mode.ts +6 -9
- package/src/runtime/migrations/vbundle-import-policy.ts +2 -2
- package/src/runtime/migrations/vbundle-importer.ts +4 -4
- package/src/runtime/migrations/vbundle-streaming-importer.ts +6 -6
- package/src/runtime/migrations/vbundle-validator.ts +1 -1
- package/src/runtime/routes/__tests__/{platform-credits-routes.test.ts → cloud-credits-routes.test.ts} +9 -9
- package/src/runtime/routes/__tests__/{platform-invoice-routes.test.ts → cloud-invoice-routes.test.ts} +13 -13
- package/src/runtime/routes/__tests__/connection-routes-vs-cli-parity.test.ts +1 -1
- package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +126 -82
- package/src/runtime/routes/__tests__/default-plugin-routes.test.ts +5 -5
- package/src/runtime/routes/__tests__/default-provider-routes.test.ts +10 -10
- package/src/runtime/routes/__tests__/inference-profiles-routes.test.ts +18 -18
- package/src/runtime/routes/__tests__/inference-provider-connection-routes.test.ts +18 -16
- package/src/runtime/routes/__tests__/inference-send-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/ingress-status-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/migration-cadet-metadata-reconcile.test.ts +5 -20
- package/src/runtime/routes/__tests__/migration-import-credential-filter.test.ts +19 -22
- package/src/runtime/routes/__tests__/oauth-proxy-routes.test.ts +27 -27
- package/src/runtime/routes/__tests__/plugins-routes.test.ts +5 -5
- package/src/runtime/routes/__tests__/ps-routes.test.ts +5 -3
- package/src/runtime/routes/__tests__/roadmap-routes.test.ts +15 -15
- package/src/runtime/routes/__tests__/webhook-routes.test.ts +31 -31
- package/src/runtime/routes/app-management-routes.ts +1 -1
- package/src/runtime/routes/attachment-routes.ts +1 -1
- package/src/runtime/routes/auth-routes.ts +14 -14
- package/src/runtime/routes/avatar-routes.ts +0 -14
- package/src/runtime/routes/background-wake-routes.ts +4 -4
- package/src/runtime/routes/channel-availability-routes.ts +4 -4
- package/src/runtime/routes/client-routes.ts +5 -5
- package/src/runtime/routes/cloud-credentials.ts +45 -0
- package/src/runtime/routes/{platform-routes.ts → cloud-routes.ts} +86 -119
- package/src/runtime/routes/conversation-compaction-routes.ts +1 -1
- package/src/runtime/routes/conversation-query-routes.ts +345 -667
- package/src/runtime/routes/credential-routes.ts +28 -30
- package/src/runtime/routes/default-provider-routes.ts +1 -1
- package/src/runtime/routes/desktop-setup-routes.test.ts +5 -5
- package/src/runtime/routes/desktop-setup-routes.ts +1 -1
- package/src/runtime/routes/domain-routes.ts +15 -21
- package/src/runtime/routes/email-routes.ts +13 -13
- package/src/runtime/routes/errors.ts +1 -1
- package/src/runtime/routes/gateway-status-routes.ts +1 -1
- package/src/runtime/routes/identity-routes.ts +3 -3
- package/src/runtime/routes/inbound-message-handler.ts +1 -1
- package/src/runtime/routes/inbound-stages/acl-enforcement.ts +1 -1
- package/src/runtime/routes/inbound-stages/transcribe-audio.test.ts +1 -1
- package/src/runtime/routes/index.ts +1 -1
- package/src/runtime/routes/inference-profile-availability-guard.ts +5 -5
- package/src/runtime/routes/inference-profiles-routes.ts +11 -11
- package/src/runtime/routes/inference-provider-connection-routes.ts +24 -24
- package/src/runtime/routes/ingress-status-routes.ts +1 -1
- package/src/runtime/routes/integrations/a2a.ts +2 -2
- package/src/runtime/routes/integrations/twilio.ts +21 -35
- package/src/runtime/routes/internal-telemetry-routes.ts +2 -2
- package/src/runtime/routes/live-voice-routes.test.ts +4 -4
- package/src/runtime/routes/live-voice-routes.ts +6 -6
- package/src/runtime/routes/migration-routes.ts +34 -40
- package/src/runtime/routes/oauth-commands-routes.ts +31 -31
- package/src/runtime/routes/oauth-providers.ts +5 -5
- package/src/runtime/routes/oauth-proxy-passthrough.test.ts +1 -1
- package/src/runtime/routes/oauth-proxy-passthrough.ts +8 -8
- package/src/runtime/routes/oauth-proxy-routes.ts +15 -17
- package/src/runtime/routes/oauth-request-hints.test.ts +1 -1
- package/src/runtime/routes/oauth-request-hints.ts +1 -1
- package/src/runtime/routes/plugins-routes.ts +9 -9
- package/src/runtime/routes/profiler-routes.ts +1 -1
- package/src/runtime/routes/ps-routes.ts +4 -0
- package/src/runtime/routes/roadmap-routes.ts +18 -20
- package/src/runtime/routes/secret-routes.ts +20 -61
- package/src/runtime/routes/settings-routes.ts +18 -23
- package/src/runtime/routes/telemetry-routes.ts +4 -4
- package/src/runtime/routes/tts-routes.ts +4 -4
- package/src/runtime/routes/user-route-resolution.ts +1 -1
- package/src/runtime/routes/webhook-routes.ts +18 -18
- package/src/runtime/routes/workflow-routes.ts +5 -5
- package/src/runtime/sync/resource-sync-events.ts +2 -2
- package/src/runtime/verification-outbound-actions.ts +4 -4
- package/src/schedule/integration-status.ts +6 -6
- package/src/schedule/run-script.ts +1 -1
- package/src/schedule/schedule-timezone.ts +1 -1
- package/src/schedule/worker.ts +5 -5
- package/src/security/auth-fallback-events-store.ts +1 -1
- package/src/security/oauth2.ts +4 -4
- package/src/skills/available-skills.ts +4 -4
- package/src/skills/catalog-files.ts +8 -8
- package/src/skills/catalog-install.ts +12 -12
- package/src/skills/categories-cache.ts +3 -3
- package/src/skills/clawhub.ts +1 -1
- package/src/skills/{platform-compatibility.test.ts → cloud-compatibility.test.ts} +7 -7
- package/src/skills/{platform-compatibility.ts → cloud-compatibility.ts} +2 -4
- package/src/skills/{managed-store.ts → cloud-store.ts} +21 -23
- package/src/skills/inline-command-runner.ts +1 -1
- package/src/skills/install-meta.ts +1 -1
- package/src/skills/path-classifier.ts +4 -4
- package/src/skills/skill-history.ts +4 -4
- package/src/skills/skillssh-registry.ts +1 -1
- package/src/stt/__tests__/daemon-batch-transcriber.test.ts +1 -1
- package/src/stt/daemon-batch-transcriber.ts +7 -7
- package/src/stt/types.ts +3 -3
- package/src/subagent/manager.ts +15 -15
- package/src/subagent/types.ts +1 -1
- package/src/telegram/__tests__/webhook-health.test.ts +16 -16
- package/src/telegram/webhook-health.ts +10 -10
- package/src/telemetry/__tests__/config-setting-events-store.test.ts +1 -1
- package/src/telemetry/__tests__/outbox-test-harness.ts +2 -2
- package/src/telemetry/config-setting-events-store.ts +1 -1
- package/src/telemetry/config-setting-snapshot.ts +1 -1
- package/src/telemetry/memory-corpus-size.ts +1 -1
- package/src/telemetry/memory-tier-reporter.test.ts +2 -2
- package/src/telemetry/memory-tier-reporter.ts +3 -3
- package/src/telemetry/telemetry-event-sources.test.ts +2 -2
- package/src/telemetry/telemetry-event-sources.ts +9 -9
- package/src/telemetry/telemetry-events-outbox.ts +2 -2
- package/src/telemetry/telemetry-wire-validation.test.ts +1 -1
- package/src/telemetry/telemetry-wire-validation.ts +3 -3
- package/src/telemetry/telemetry-wire.generated.ts +1 -1
- package/src/telemetry/tool-audit.ts +1 -1
- package/src/telemetry/tool-executed-events-store.test.ts +1 -1
- package/src/telemetry/trace-collection-policy.ts +4 -4
- package/src/telemetry/turn-events-store.ts +1 -1
- package/src/telemetry/turn-outcome.ts +1 -1
- package/src/telemetry/turn-trace-store.ts +2 -2
- package/src/telemetry/types.test.ts +1 -1
- package/src/telemetry/types.ts +19 -19
- package/src/telemetry/usage-telemetry-reporter.test.ts +42 -42
- package/src/telemetry/usage-telemetry-reporter.ts +17 -17
- package/src/telemetry/watchdog-direct-emit.test.ts +9 -9
- package/src/telemetry/watchdog-direct-emit.ts +10 -10
- package/src/tools/__tests__/side-effect-abort-guard.test.ts +2 -2
- package/src/tools/browser/cdp-client/factory.ts +1 -1
- package/src/tools/computer-use/target.ts +2 -2
- package/src/tools/credentials/store.ts +2 -20
- package/src/tools/network/__tests__/{managed-search-proxy.test.ts → cloud-search-proxy.test.ts} +20 -20
- package/src/tools/network/__tests__/web-search.test.ts +14 -14
- package/src/tools/network/{managed-search-proxy.ts → cloud-search-proxy.ts} +13 -13
- package/src/tools/network/web-search.ts +9 -9
- package/src/tools/permission-checker.ts +2 -2
- package/src/tools/shared/input-misuse.ts +1 -1
- package/src/tools/shared/input-repairs.ts +4 -4
- package/src/tools/skills/{delete-managed.ts → delete-cloud.ts} +4 -4
- package/src/tools/skills/find-similar-skills.test.ts +7 -7
- package/src/tools/skills/find-similar-skills.ts +15 -15
- package/src/tools/skills/load.ts +6 -6
- package/src/tools/skills/{scaffold-managed.ts → scaffold-cloud.ts} +16 -16
- package/src/tools/skills/skill-script-runner.ts +2 -2
- package/src/tools/terminal/safe-env.ts +3 -3
- package/src/tools/tool-types.ts +2 -2
- package/src/tools/types.ts +2 -2
- package/src/tools/ui-surface/surface-shape-docs.ts +2 -2
- package/src/tools/workflows/manage-workflows.ts +1 -1
- package/src/tools/workspace-tools/loader.ts +1 -1
- package/src/tts/__tests__/cadet-provider.test.ts +5 -5
- package/src/tts/provider-catalog.ts +1 -1
- package/src/tts/providers/cadet-provider.ts +23 -23
- package/src/tts/providers/cadet-tts-socket.ts +2 -2
- package/src/tts/tts-config-resolver.ts +1 -1
- package/src/tts/tts-voice-field.ts +3 -3
- package/src/usage/subagent-attribution.ts +1 -1
- package/src/util/__tests__/process-table.test.ts +47 -0
- package/src/util/canonicalize-identity.ts +1 -1
- package/src/util/cgroup-cpu.ts +5 -5
- package/src/util/cgroup-memory.ts +2 -2
- package/src/util/container-cpu-sampler.ts +4 -4
- package/src/util/disk-usage.ts +4 -4
- package/src/util/errors.ts +3 -3
- package/src/util/layout.ts +479 -0
- package/src/util/oom-priority.ts +1 -1
- package/src/util/platform.ts +12 -468
- package/src/util/process-table.ts +39 -5
- package/src/util/provider-error-patterns.ts +2 -2
- package/src/watch/__tests__/watch-retro.test.ts +2 -2
- package/src/watch/watch-retro.ts +1 -1
- package/src/watcher/__tests__/telemetry.test.ts +2 -2
- package/src/watcher/telemetry.ts +1 -1
- package/src/windows-compiled-cli.ts +1 -1
- package/src/workspace/adaptive-thinking-repair.ts +4 -4
- package/src/workspace/byok-default-profile-ensure.ts +7 -7
- package/src/workspace/git-service.ts +2 -2
- package/src/workspace/migrations/006-services-config.ts +1 -1
- package/src/workspace/migrations/040-seed-latency-callsite-defaults.ts +1 -1
- package/src/workspace/migrations/052-seed-default-inference-profiles.ts +1 -1
- package/src/workspace/migrations/063-release-notes-dynamic-model-context.ts +1 -1
- package/src/workspace/migrations/066-seed-heartbeat-callsite-cost-default.ts +1 -1
- package/src/workspace/migrations/082-backfill-managed-profile-labels.ts +4 -4
- package/src/workspace/migrations/087-memory-router-balanced-profile.ts +3 -3
- package/src/workspace/migrations/090-memory-router-cost-optimized-profile.ts +4 -4
- package/src/workspace/migrations/097-enable-adaptive-thinking-managed-profiles.ts +5 -5
- package/src/workspace/migrations/100-upgrade-quality-profile-to-fable-5.ts +4 -4
- package/src/workspace/migrations/101-upgrade-balanced-economy-to-minimax-m3.ts +4 -4
- package/src/workspace/migrations/103-upgrade-quality-profile-to-opus-4-8.ts +5 -5
- package/src/workspace/migrations/104-recheck-adaptive-thinking-model-implied-anthropic.ts +1 -1
- package/src/workspace/migrations/106-drop-collect-usage-data.ts +1 -1
- package/src/workspace/migrations/108-drop-balanced-economy-profile.ts +4 -4
- package/src/workspace/migrations/109-swap-quality-profile-to-glm-5p2.ts +11 -11
- package/src/workspace/migrations/110-flip-balanced-profile-to-together.ts +6 -6
- package/src/workspace/migrations/113-swap-balanced-profile-to-glm-5p2.ts +5 -5
- package/src/workspace/migrations/114-swap-quality-profile-to-opus.ts +4 -4
- package/src/workspace/migrations/115-drop-frontier-profile.ts +5 -5
- package/src/workspace/migrations/123-swap-quality-profile-to-fable.ts +5 -5
- package/src/workspace/migrations/125-repoint-managed-connections-to-cadet.ts +3 -3
- package/src/workspace/migrations/126-strip-managed-profile-bodies.ts +2 -2
- package/src/workspace/migrations/127-backfill-default-provider.ts +6 -6
- package/src/workspace/migrations/130-speech-mode-to-provider.ts +4 -4
- package/src/workspace/migrations/131-drop-web-fetch-mode.ts +1 -1
- package/src/workspace/migrations/132-web-search-mode-to-provider.ts +6 -6
- package/src/workspace/migrations/133-collapse-provider-connections.ts +3 -3
- package/src/workspace/migrations/134-image-generation-mode-to-provider.ts +4 -4
- package/src/workspace/migrations/136-repair-stale-fireworks-kimi-model-id.ts +2 -2
- package/src/workspace/migrations/137-repair-retired-fireworks-minimax-model-id.ts +2 -2
- package/src/workspace/migrations/139-clear-renamed-cost-profile-label.ts +2 -2
- package/src/workspace/migrations/141-stt-english-default-to-multilingual.ts +4 -4
- package/src/workspace/migrations/144-convert-stranded-subscription-openai-profiles.ts +1 -1
- package/src/workspace/migrations/145-collapse-profile-bindings-to-entries.ts +2 -2
- package/src/workspace/migrations/146-repair-retired-fireworks-deepseek-flash-model-id.ts +2 -2
- package/src/workspace/migrations/148-strip-unsupported-fallback-profiles.ts +2 -2
- package/src/workspace/migrations/150-stt-flux-provider-to-model-family.ts +1 -1
- package/src/workspace/migrations/151-repair-renamed-fireworks-deepseek-pro-model-id.ts +2 -2
- package/src/workspace/migrations/152-repair-retired-fireworks-minimax-m2p7-model-id.ts +2 -2
- package/src/workspace/migrations/159-rename-colliding-jev-profile-name.ts +2 -2
- package/src/workspace/migrations/160-repair-retired-fireworks-model-ids.ts +2 -2
- package/src/workspace/migrations/161-repair-retired-fireworks-glm-5p2-model-id.ts +2 -2
- package/src/workspace/migrations/__tests__/141-stt-english-default-to-multilingual.test.ts +1 -1
- package/src/workspace/migrations/__tests__/150-stt-flux-provider-to-model-family.test.ts +1 -1
- package/src/workspace/migrations/registry.ts +6 -6
- package/src/workspace/top-level-renderer.ts +1 -1
- package/src/workspace/turn-commit.ts +2 -2
- package/src/__tests__/config-loader-platform-defaults.test.ts +0 -606
- package/src/__tests__/mock-gateway-ipc.ts +0 -260
- package/src/api/events/platform-disconnected.ts +0 -21
- package/src/api/events/show-platform-login.ts +0 -20
- package/src/config/platform-rehydration.ts +0 -60
- package/src/platform/feature-gate.ts +0 -8
- package/src/plugins/defaults/platform-hosted/package.json +0 -14
- package/src/runtime/routes/platform-managed-credentials.ts +0 -50
- /package/src/__tests__/{gateway-client-managed-outbound.test.ts → gateway-client-cloud-outbound.test.ts} +0 -0
- /package/src/__tests__/{secure-keys-managed-failover.test.ts → secure-keys-cloud-failover.test.ts} +0 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* These routes provide higher-level credential operations (list with metadata,
|
|
5
5
|
* inspect, reveal, set, delete, status) that compose the lower-level secret
|
|
6
|
-
* storage primitives with metadata, OAuth connections, and
|
|
6
|
+
* storage primitives with metadata, OAuth connections, and cloud-managed
|
|
7
7
|
* credential catalogs.
|
|
8
8
|
*
|
|
9
9
|
* POST /v1/credentials/list — list all credentials with metadata
|
|
@@ -19,9 +19,9 @@ import { z } from "zod";
|
|
|
19
19
|
import { AcpCredentialFormatError } from "../../acp/acp-credentials.js";
|
|
20
20
|
import { isAssistantFeatureFlagEnabled } from "../../config/assistant-feature-flags.js";
|
|
21
21
|
import {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
} from "../../credential-execution/
|
|
22
|
+
type CloudCredentialDescriptor,
|
|
23
|
+
fetchCloudCatalog,
|
|
24
|
+
} from "../../credential-execution/cloud-catalog.js";
|
|
25
25
|
import { buildForChatSentinel } from "../../daemon/chat-credential-redaction.js";
|
|
26
26
|
import { invalidateEmailReadinessForByoCredential } from "../../email/byo-email-credential.js";
|
|
27
27
|
import {
|
|
@@ -53,17 +53,17 @@ import {
|
|
|
53
53
|
import { ACTOR_PRINCIPALS } from "../auth/route-policy.js";
|
|
54
54
|
import { recordForChatMint } from "../for-chat-mint-registry.js";
|
|
55
55
|
import { recordRevealSuccess } from "../reveal-success-registry.js";
|
|
56
|
+
import {
|
|
57
|
+
isPlatformCloudCredential,
|
|
58
|
+
type PlatformCloudCredentialAction,
|
|
59
|
+
platformCloudCredentialRefusal,
|
|
60
|
+
} from "./cloud-credentials.js";
|
|
56
61
|
import {
|
|
57
62
|
assertCredentialNotInUse,
|
|
58
63
|
invalidateConnectionsAfterCredentialDelete,
|
|
59
64
|
} from "./credential-in-use.js";
|
|
60
65
|
import { InjectionTemplateSchema } from "./credential-prompt-routes.js";
|
|
61
66
|
import { BadRequestError, ForbiddenError, InternalError } from "./errors.js";
|
|
62
|
-
import {
|
|
63
|
-
isPlatformManagedCredential,
|
|
64
|
-
type PlatformManagedCredentialAction,
|
|
65
|
-
platformManagedCredentialRefusal,
|
|
66
|
-
} from "./platform-managed-credentials.js";
|
|
67
67
|
import type { RouteDefinition, RouteHandlerArgs } from "./types.js";
|
|
68
68
|
|
|
69
69
|
// ---------------------------------------------------------------------------
|
|
@@ -134,8 +134,8 @@ function buildCredentialOutput(
|
|
|
134
134
|
return output;
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
-
function
|
|
138
|
-
descriptor:
|
|
137
|
+
function buildCloudCredentialOutput(
|
|
138
|
+
descriptor: CloudCredentialDescriptor,
|
|
139
139
|
): Record<string, unknown> {
|
|
140
140
|
return {
|
|
141
141
|
source: "platform",
|
|
@@ -162,10 +162,10 @@ interface CredentialLookup {
|
|
|
162
162
|
/**
|
|
163
163
|
* Resolve a credential lookup from service+field or UUID.
|
|
164
164
|
* Throws BadRequestError when neither is provided or the UUID is not found,
|
|
165
|
-
* and ForbiddenError for a credential the
|
|
165
|
+
* and ForbiddenError for a credential the cloud owns.
|
|
166
166
|
*
|
|
167
167
|
* Every read handler that returns credential material (inspect, reveal)
|
|
168
|
-
* resolves through here, so the
|
|
168
|
+
* resolves through here, so the cloud-managed refusal sits at the single
|
|
169
169
|
* point they share and cannot drift apart from the list filter.
|
|
170
170
|
*/
|
|
171
171
|
function resolveCredentialLookup(
|
|
@@ -205,24 +205,24 @@ function resolveCredentialLookup(
|
|
|
205
205
|
}
|
|
206
206
|
|
|
207
207
|
/**
|
|
208
|
-
* Refuse any use of a credential the
|
|
208
|
+
* Refuse any use of a credential the cloud provisions for itself, whatever
|
|
209
209
|
* the calling principal. Reads are refused because the API key spends
|
|
210
210
|
* inference on Cadet's account. Writes are refused because they are a read
|
|
211
|
-
* by
|
|
212
|
-
*
|
|
211
|
+
* they are owned by the cloud's own provisioning; a hand-set key or
|
|
212
|
+
* identity id would silently misroute or impersonate every platform call.
|
|
213
213
|
*
|
|
214
|
-
* The
|
|
214
|
+
* The cloud's own provisioning does not come through here. It writes over
|
|
215
215
|
* `POST /v1/secrets` (Django to vembda to the pod), as does the CLI and the
|
|
216
216
|
* local-mode connect flow in the web client.
|
|
217
217
|
*/
|
|
218
218
|
function assertNotPlatformManaged(
|
|
219
219
|
service: string,
|
|
220
220
|
field: string,
|
|
221
|
-
action:
|
|
221
|
+
action: PlatformCloudCredentialAction,
|
|
222
222
|
): void {
|
|
223
|
-
if (
|
|
223
|
+
if (isPlatformCloudCredential(service, field)) {
|
|
224
224
|
throw new ForbiddenError(
|
|
225
|
-
|
|
225
|
+
platformCloudCredentialRefusal(service, field, action),
|
|
226
226
|
);
|
|
227
227
|
}
|
|
228
228
|
}
|
|
@@ -245,7 +245,7 @@ async function handleCredentialsList({ body }: RouteHandlerArgs) {
|
|
|
245
245
|
// Platform-provisioned credentials are not the user's to act on, so they
|
|
246
246
|
// never become a Settings row (and never a click-to-reveal).
|
|
247
247
|
let allMetadata = live.records.filter(
|
|
248
|
-
(m) => !
|
|
248
|
+
(m) => !isPlatformCloudCredential(m.service, m.field),
|
|
249
249
|
);
|
|
250
250
|
|
|
251
251
|
if (search) {
|
|
@@ -290,9 +290,9 @@ async function handleCredentialsList({ body }: RouteHandlerArgs) {
|
|
|
290
290
|
}),
|
|
291
291
|
);
|
|
292
292
|
|
|
293
|
-
// Fetch
|
|
294
|
-
const managedResult = await
|
|
295
|
-
let
|
|
293
|
+
// Fetch cloud credentials (best-effort).
|
|
294
|
+
const managedResult = await fetchCloudCatalog();
|
|
295
|
+
let cloudCredentials: Record<string, unknown>[] = [];
|
|
296
296
|
if (managedResult.ok && managedResult.descriptors.length > 0) {
|
|
297
297
|
let descriptors = managedResult.descriptors;
|
|
298
298
|
if (search) {
|
|
@@ -304,10 +304,10 @@ async function handleCredentialsList({ body }: RouteHandlerArgs) {
|
|
|
304
304
|
(d.accountInfo ?? "").toLowerCase().includes(query),
|
|
305
305
|
);
|
|
306
306
|
}
|
|
307
|
-
|
|
307
|
+
cloudCredentials = descriptors.map(buildCloudCredentialOutput);
|
|
308
308
|
}
|
|
309
309
|
|
|
310
|
-
return { credentials,
|
|
310
|
+
return { credentials, cloudCredentials };
|
|
311
311
|
}
|
|
312
312
|
|
|
313
313
|
async function handleCredentialsInspect({ body }: RouteHandlerArgs) {
|
|
@@ -625,7 +625,7 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
625
625
|
},
|
|
626
626
|
summary: "List all credentials with metadata",
|
|
627
627
|
description:
|
|
628
|
-
"Return credentials from the live credential vault, with OAuth connection info and
|
|
628
|
+
"Return credentials from the live credential vault, with OAuth connection info and cloud credentials. Fails if the vault is unreachable.",
|
|
629
629
|
tags: ["credentials"],
|
|
630
630
|
requestBody: z.object({
|
|
631
631
|
search: z.string().optional().describe("Filter by substring match"),
|
|
@@ -634,9 +634,7 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
634
634
|
credentials: z
|
|
635
635
|
.array(z.unknown())
|
|
636
636
|
.describe("Local credentials with metadata"),
|
|
637
|
-
|
|
638
|
-
.array(z.unknown())
|
|
639
|
-
.describe("Platform-managed credentials"),
|
|
637
|
+
cloudCredentials: z.array(z.unknown()).describe("Cloud credentials"),
|
|
640
638
|
}),
|
|
641
639
|
handler: handleCredentialsList,
|
|
642
640
|
},
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* The dedicated PUT exists because the generic config write paths parse
|
|
9
9
|
* `llm.default` as a partial fragment — a provider the matrix cannot
|
|
10
|
-
* implement is silently dropped or clamped to the
|
|
10
|
+
* implement is silently dropped or clamped to the cloud column on the next
|
|
11
11
|
* reparse instead of rejected. This route strict-parses and fails loudly.
|
|
12
12
|
*
|
|
13
13
|
* Availability is reported, never enforced: a dangling connection pin is a
|
|
@@ -14,7 +14,7 @@ import { ROUTES } from "./desktop-setup-routes.js";
|
|
|
14
14
|
import { NotFoundError } from "./errors.js";
|
|
15
15
|
|
|
16
16
|
const originalContainerized = process.env.IS_CONTAINERIZED;
|
|
17
|
-
const originalPlatform = process.env.
|
|
17
|
+
const originalPlatform = process.env.IS_CLOUD;
|
|
18
18
|
const status = spyOn(desktopDependencies, "getStatus");
|
|
19
19
|
|
|
20
20
|
afterAll(() => {
|
|
@@ -23,7 +23,7 @@ afterAll(() => {
|
|
|
23
23
|
|
|
24
24
|
beforeEach(() => {
|
|
25
25
|
process.env.IS_CONTAINERIZED = "true";
|
|
26
|
-
process.env.
|
|
26
|
+
process.env.IS_CLOUD = "true";
|
|
27
27
|
status.mockReturnValue({ state: "ready" });
|
|
28
28
|
});
|
|
29
29
|
|
|
@@ -34,9 +34,9 @@ afterEach(() => {
|
|
|
34
34
|
process.env.IS_CONTAINERIZED = originalContainerized;
|
|
35
35
|
}
|
|
36
36
|
if (originalPlatform === undefined) {
|
|
37
|
-
delete process.env.
|
|
37
|
+
delete process.env.IS_CLOUD;
|
|
38
38
|
} else {
|
|
39
|
-
process.env.
|
|
39
|
+
process.env.IS_CLOUD = originalPlatform;
|
|
40
40
|
}
|
|
41
41
|
setOverridesForTesting({});
|
|
42
42
|
status.mockClear();
|
|
@@ -62,7 +62,7 @@ describe("desktop setup route feature gate", () => {
|
|
|
62
62
|
});
|
|
63
63
|
|
|
64
64
|
test(`${route.method} rejects self-hosted Docker assistants without inspecting dependencies`, () => {
|
|
65
|
-
process.env.
|
|
65
|
+
process.env.IS_CLOUD = "false";
|
|
66
66
|
setOverridesForTesting({ "assistant-desktop": true });
|
|
67
67
|
expect(() => route.handler({})).toThrow(NotFoundError);
|
|
68
68
|
expect(status).not.toHaveBeenCalled();
|
|
@@ -23,7 +23,7 @@ export const ROUTES: RouteDefinition[] = ["GET", "POST"].map((method) => ({
|
|
|
23
23
|
handler: () => {
|
|
24
24
|
if (!isVirtualDesktopEnabled()) {
|
|
25
25
|
throw new NotFoundError(
|
|
26
|
-
"Virtual desktop is available only on enabled
|
|
26
|
+
"Virtual desktop is available only on enabled cloud-hosted assistants",
|
|
27
27
|
);
|
|
28
28
|
}
|
|
29
29
|
const status = desktopDependencies.getStatus();
|
|
@@ -7,14 +7,9 @@
|
|
|
7
7
|
|
|
8
8
|
import { z } from "zod";
|
|
9
9
|
|
|
10
|
+
import { CadetCloudClient } from "../../cloud/client.js";
|
|
10
11
|
import { getApexDomain } from "../../config/env.js";
|
|
11
|
-
import {
|
|
12
|
-
getConfig,
|
|
13
|
-
loadRawConfig,
|
|
14
|
-
saveRawConfig,
|
|
15
|
-
setNestedValue,
|
|
16
|
-
} from "../../config/loader.js";
|
|
17
|
-
import { CadetPlatformClient } from "../../platform/client.js";
|
|
12
|
+
import { getConfig, setConfigSection } from "../../config/loader.js";
|
|
18
13
|
import { getLogger } from "../../util/logger.js";
|
|
19
14
|
import { LOCAL_PRINCIPALS } from "../auth/route-policy.js";
|
|
20
15
|
import { BadRequestError, RouteError, UnauthorizedError } from "./errors.js";
|
|
@@ -53,14 +48,14 @@ const DomainVerificationStatusResponseSchema = z.object({
|
|
|
53
48
|
|
|
54
49
|
// ── Helpers ───────────────────────────────────────────────────────────
|
|
55
50
|
|
|
56
|
-
async function requireClient(): Promise<
|
|
57
|
-
const client = await
|
|
51
|
+
async function requireClient(): Promise<CadetCloudClient> {
|
|
52
|
+
const client = await CadetCloudClient.create();
|
|
58
53
|
if (!client) {
|
|
59
54
|
throw new UnauthorizedError(
|
|
60
55
|
"Platform credentials not configured. Run: assistant cloud connect",
|
|
61
56
|
);
|
|
62
57
|
}
|
|
63
|
-
if (!client.
|
|
58
|
+
if (!client.cloudAssistantId) {
|
|
64
59
|
throw new UnauthorizedError(
|
|
65
60
|
"Assistant ID not configured. Run: assistant cloud connect",
|
|
66
61
|
);
|
|
@@ -69,10 +64,10 @@ async function requireClient(): Promise<CadetPlatformClient> {
|
|
|
69
64
|
}
|
|
70
65
|
|
|
71
66
|
async function fetchDomains(
|
|
72
|
-
client:
|
|
67
|
+
client: CadetCloudClient,
|
|
73
68
|
): Promise<DomainListResponse> {
|
|
74
69
|
const response = await client.fetch(
|
|
75
|
-
`/v1/assistants/${client.
|
|
70
|
+
`/v1/assistants/${client.cloudAssistantId}/domains/`,
|
|
76
71
|
);
|
|
77
72
|
|
|
78
73
|
if (!response.ok) {
|
|
@@ -106,7 +101,7 @@ async function handleDomainRegister({ body = {} }: RouteHandlerArgs) {
|
|
|
106
101
|
}
|
|
107
102
|
|
|
108
103
|
const response = await client.fetch(
|
|
109
|
-
`/v1/assistants/${client.
|
|
104
|
+
`/v1/assistants/${client.cloudAssistantId}/domains/`,
|
|
110
105
|
{
|
|
111
106
|
method: "POST",
|
|
112
107
|
headers: { "Content-Type": "application/json" },
|
|
@@ -140,9 +135,10 @@ async function handleDomainRegister({ body = {} }: RouteHandlerArgs) {
|
|
|
140
135
|
const registeredSubdomain =
|
|
141
136
|
data.subdomain ?? data.domain?.replace(`.${apexDomain}`, "") ?? subdomain;
|
|
142
137
|
if (registeredSubdomain) {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
138
|
+
setConfigSection("cloud", {
|
|
139
|
+
...getConfig().cloud,
|
|
140
|
+
subdomain: registeredSubdomain,
|
|
141
|
+
});
|
|
146
142
|
}
|
|
147
143
|
|
|
148
144
|
return data;
|
|
@@ -160,10 +156,8 @@ async function handleDomainStatus(_args: RouteHandlerArgs) {
|
|
|
160
156
|
const first = domains[0];
|
|
161
157
|
const sub = first.subdomain ?? first.domain?.replace(`.${apexDomain}`, "");
|
|
162
158
|
if (sub) {
|
|
163
|
-
if (getConfig().
|
|
164
|
-
|
|
165
|
-
setNestedValue(raw, "platform.subdomain", sub);
|
|
166
|
-
saveRawConfig(raw);
|
|
159
|
+
if (getConfig().cloud.subdomain !== sub) {
|
|
160
|
+
setConfigSection("cloud", { ...getConfig().cloud, subdomain: sub });
|
|
167
161
|
}
|
|
168
162
|
}
|
|
169
163
|
}
|
|
@@ -190,7 +184,7 @@ async function handleDomainVerificationStatus({ body = {} }: RouteHandlerArgs) {
|
|
|
190
184
|
}
|
|
191
185
|
|
|
192
186
|
const response = await client.fetch(
|
|
193
|
-
`/v1/assistants/${client.
|
|
187
|
+
`/v1/assistants/${client.cloudAssistantId}/domains/${encodeURIComponent(domain_id)}/verification-status/`,
|
|
194
188
|
);
|
|
195
189
|
|
|
196
190
|
if (!response.ok) {
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import { z } from "zod";
|
|
9
9
|
|
|
10
|
+
import { CadetCloudClient } from "../../cloud/client.js";
|
|
10
11
|
import { getReadinessService } from "../../daemon/handlers/config-channels.js";
|
|
11
12
|
import { markdownToEmailHtml } from "../../email/html-renderer.js";
|
|
12
13
|
import {
|
|
@@ -14,7 +15,6 @@ import {
|
|
|
14
15
|
listEmailAddresses,
|
|
15
16
|
type RegisteredEmailAddress,
|
|
16
17
|
} from "../../email/registered-inbox.js";
|
|
17
|
-
import { CadetPlatformClient } from "../../platform/client.js";
|
|
18
18
|
import { LOCAL_PRINCIPALS } from "../auth/route-policy.js";
|
|
19
19
|
import {
|
|
20
20
|
BadRequestError,
|
|
@@ -26,14 +26,14 @@ import type { RouteDefinition, RouteHandlerArgs } from "./types.js";
|
|
|
26
26
|
|
|
27
27
|
// ── Helpers ───────────────────────────────────────────────────────────
|
|
28
28
|
|
|
29
|
-
async function requireClient(): Promise<
|
|
30
|
-
const client = await
|
|
29
|
+
async function requireClient(): Promise<CadetCloudClient> {
|
|
30
|
+
const client = await CadetCloudClient.create();
|
|
31
31
|
if (!client) {
|
|
32
32
|
throw new UnauthorizedError(
|
|
33
33
|
"Platform credentials not configured. Run: assistant cloud connect",
|
|
34
34
|
);
|
|
35
35
|
}
|
|
36
|
-
if (!client.
|
|
36
|
+
if (!client.cloudAssistantId) {
|
|
37
37
|
throw new UnauthorizedError(
|
|
38
38
|
"Assistant ID not configured. Run: assistant cloud connect",
|
|
39
39
|
);
|
|
@@ -48,7 +48,7 @@ async function handleEmailRegister({ body = {} }: RouteHandlerArgs) {
|
|
|
48
48
|
const client = await requireClient();
|
|
49
49
|
|
|
50
50
|
const response = await client.fetch(
|
|
51
|
-
`/v1/assistants/${client.
|
|
51
|
+
`/v1/assistants/${client.cloudAssistantId}/email-addresses/`,
|
|
52
52
|
{
|
|
53
53
|
method: "POST",
|
|
54
54
|
headers: { "Content-Type": "application/json" },
|
|
@@ -92,10 +92,10 @@ function invalidateEmailReadinessState(): void {
|
|
|
92
92
|
|
|
93
93
|
/**
|
|
94
94
|
* The registered addresses, or the route-appropriate error: a listing
|
|
95
|
-
* failure maps to LIST_FAILED with the
|
|
95
|
+
* failure maps to LIST_FAILED with the cloud's status when it sent one.
|
|
96
96
|
*/
|
|
97
97
|
async function requireEmailAddressList(
|
|
98
|
-
client:
|
|
98
|
+
client: CadetCloudClient,
|
|
99
99
|
): Promise<RegisteredEmailAddress[]> {
|
|
100
100
|
const list = await listEmailAddresses(client);
|
|
101
101
|
if (!list.ok) {
|
|
@@ -119,7 +119,7 @@ async function handleEmailUnregister(_args: RouteHandlerArgs) {
|
|
|
119
119
|
const target = addresses[0];
|
|
120
120
|
|
|
121
121
|
const deleteResponse = await client.fetch(
|
|
122
|
-
`/v1/assistants/${client.
|
|
122
|
+
`/v1/assistants/${client.cloudAssistantId}/email-addresses/${target.id}/`,
|
|
123
123
|
{ method: "DELETE" },
|
|
124
124
|
);
|
|
125
125
|
|
|
@@ -153,7 +153,7 @@ async function handleEmailStatus(_args: RouteHandlerArgs) {
|
|
|
153
153
|
const target = addresses[0];
|
|
154
154
|
|
|
155
155
|
const statusResponse = await client.fetch(
|
|
156
|
-
`/v1/assistants/${client.
|
|
156
|
+
`/v1/assistants/${client.cloudAssistantId}/email-addresses/${target.id}/status/`,
|
|
157
157
|
);
|
|
158
158
|
|
|
159
159
|
if (!statusResponse.ok) {
|
|
@@ -198,7 +198,7 @@ async function handleEmailList({ queryParams = {} }: RouteHandlerArgs) {
|
|
|
198
198
|
}
|
|
199
199
|
|
|
200
200
|
const qs = params.toString();
|
|
201
|
-
const path = `/v1/assistants/${client.
|
|
201
|
+
const path = `/v1/assistants/${client.cloudAssistantId}/emails/${qs ? `?${qs}` : ""}`;
|
|
202
202
|
const response = await client.fetch(path);
|
|
203
203
|
|
|
204
204
|
if (!response.ok) {
|
|
@@ -222,7 +222,7 @@ async function handleEmailDownload({ queryParams = {} }: RouteHandlerArgs) {
|
|
|
222
222
|
const { messageId } = queryParams;
|
|
223
223
|
|
|
224
224
|
const response = await client.fetch(
|
|
225
|
-
`/v1/assistants/${client.
|
|
225
|
+
`/v1/assistants/${client.cloudAssistantId}/emails/${messageId}/`,
|
|
226
226
|
);
|
|
227
227
|
|
|
228
228
|
if (!response.ok) {
|
|
@@ -344,7 +344,7 @@ async function handleEmailAttachmentList({
|
|
|
344
344
|
const { messageId } = queryParams;
|
|
345
345
|
|
|
346
346
|
const response = await client.fetch(
|
|
347
|
-
`/v1/assistants/${client.
|
|
347
|
+
`/v1/assistants/${client.cloudAssistantId}/emails/${messageId}/attachments/`,
|
|
348
348
|
);
|
|
349
349
|
|
|
350
350
|
if (!response.ok) {
|
|
@@ -370,7 +370,7 @@ async function handleEmailAttachmentGet({
|
|
|
370
370
|
const { messageId, attachmentId } = queryParams;
|
|
371
371
|
|
|
372
372
|
const response = await client.fetch(
|
|
373
|
-
`/v1/assistants/${client.
|
|
373
|
+
`/v1/assistants/${client.cloudAssistantId}/emails/${messageId}/attachments/${attachmentId}/download/`,
|
|
374
374
|
);
|
|
375
375
|
|
|
376
376
|
if (!response.ok) {
|
|
@@ -14,7 +14,7 @@ export class RouteError extends Error {
|
|
|
14
14
|
* Optional structured payload surfaced to clients in the standard
|
|
15
15
|
* error envelope as `error.details`. Use sparingly — only when the
|
|
16
16
|
* client genuinely needs machine-readable context beyond `code` and
|
|
17
|
-
* `message` (e.g. mirroring a
|
|
17
|
+
* `message` (e.g. mirroring a cloud-side response shape).
|
|
18
18
|
*/
|
|
19
19
|
readonly details?: unknown;
|
|
20
20
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* The tunnel is the gateway's outbound public-ingress transport. It is only
|
|
5
5
|
* used to tunnel inbound Twilio webhooks and live voice/audio WebSockets to
|
|
6
|
-
* this assistant — it plays no part in cloud credentials or the
|
|
6
|
+
* this assistant — it plays no part in cloud credentials or the cloud
|
|
7
7
|
* LLM proxy. The handler reads the live status from the gateway over the local
|
|
8
8
|
* IPC socket, so the assistant does not need gateway signing material.
|
|
9
9
|
*
|
|
@@ -7,7 +7,7 @@ import { totalmem } from "node:os";
|
|
|
7
7
|
|
|
8
8
|
import { z } from "zod";
|
|
9
9
|
|
|
10
|
-
import {
|
|
10
|
+
import { getIsCloud } from "../../config/env-registry.js";
|
|
11
11
|
import { getDbMigrationReadiness } from "../../daemon/daemon-readiness.js";
|
|
12
12
|
import { parseIdentityFields } from "../../daemon/handlers/identity.js";
|
|
13
13
|
import { getProfilerRuntimeStatus } from "../../daemon/profiler-run-store.js";
|
|
@@ -59,7 +59,7 @@ function getMemoryInfo(): MemoryInfo {
|
|
|
59
59
|
try {
|
|
60
60
|
const bytesToMb = (b: number) =>
|
|
61
61
|
Math.round((b / (1024 * 1024)) * 100) / 100;
|
|
62
|
-
// In
|
|
62
|
+
// In cloud-managed mode the daemon shares its Node process with whatever
|
|
63
63
|
// the container is doing as a whole; `process.memoryUsage().rss` only sees
|
|
64
64
|
// this process's resident set, which understates the container footprint
|
|
65
65
|
// operators care about. Read the cgroup usage file directly so /v1/health
|
|
@@ -67,7 +67,7 @@ function getMemoryInfo(): MemoryInfo {
|
|
|
67
67
|
// can't be sampled, fall back to the cgroup usage (if any) before reporting 0
|
|
68
68
|
// — the metric is best-effort and must never fail the probe.
|
|
69
69
|
const currentBytes =
|
|
70
|
-
(
|
|
70
|
+
(getIsCloud() ? getContainerMemoryUsageBytes() : null) ??
|
|
71
71
|
sampleProcessRssBytes() ??
|
|
72
72
|
getContainerMemoryUsageBytes() ??
|
|
73
73
|
0;
|
|
@@ -421,7 +421,7 @@ export async function handleChannelInbound({
|
|
|
421
421
|
// Canonicalize the sender identity so all trust lookups, member matching,
|
|
422
422
|
// and guardian binding comparisons use a normalized form. Phone-like
|
|
423
423
|
// channels (voice, whatsapp) are normalized to E.164; non-phone
|
|
424
|
-
// channels pass through the
|
|
424
|
+
// channels pass through the cloud-stable ID unchanged.
|
|
425
425
|
const canonicalSenderId = rawSenderId
|
|
426
426
|
? canonicalizeInboundIdentity(sourceChannel, rawSenderId)
|
|
427
427
|
: null;
|
|
@@ -128,7 +128,7 @@ export interface AclEnforcementParams {
|
|
|
128
128
|
*/
|
|
129
129
|
isCallbackInteraction: boolean;
|
|
130
130
|
/**
|
|
131
|
-
* The
|
|
131
|
+
* The cloud named no actor for this event (the id is a channel's
|
|
132
132
|
* synthetic system identity). There is no identity claim to enforce, so
|
|
133
133
|
* the ACL neither resolves a member nor denies: the family stage that
|
|
134
134
|
* consumes such an event applies it only to a row the daemon already
|
|
@@ -204,7 +204,7 @@ describe("tryTranscribeAudioAttachments", () => {
|
|
|
204
204
|
const audio = makeAudioAttachment("a1");
|
|
205
205
|
mockAttachments = [audio];
|
|
206
206
|
const managedMessage =
|
|
207
|
-
"
|
|
207
|
+
"Cloud speech needs a working Cadet Cloud connection — reconnect with 'assistant cloud connect'.";
|
|
208
208
|
mockTranscriber = {
|
|
209
209
|
providerId: "cadet",
|
|
210
210
|
boundaryId: "daemon-batch",
|
|
@@ -43,6 +43,7 @@ import { ROUTES as CHANNEL_SEND_ROUTES } from "./channel-send-routes.js";
|
|
|
43
43
|
import { ROUTES as CHANNEL_VERIFICATION_ROUTES } from "./channel-verification-routes.js";
|
|
44
44
|
import { ROUTES as CHATGPT_SUBSCRIPTION_AUTH_ROUTES } from "./chatgpt-subscription-auth-routes.js";
|
|
45
45
|
import { ROUTES as CLIENT_ROUTES } from "./client-routes.js";
|
|
46
|
+
import { ROUTES as PLATFORM_ROUTES } from "./cloud-routes.js";
|
|
46
47
|
import { ROUTES as COMPOSER_SETTINGS_ROUTES } from "./composer-settings-routes.js";
|
|
47
48
|
import { ROUTES as CONSOLIDATION_ROUTES } from "./consolidation-routes.js";
|
|
48
49
|
import { CONTACT_PROMPT_ROUTES } from "./contact-prompt-routes.js";
|
|
@@ -126,7 +127,6 @@ import { ROUTES as OAUTH_PROVIDERS_ROUTES } from "./oauth-providers.js";
|
|
|
126
127
|
import { ROUTES as OAUTH_PROXY_GRANT_ROUTES } from "./oauth-proxy-grant-routes.js";
|
|
127
128
|
import { ROUTES as OAUTH_PROXY_ROUTES } from "./oauth-proxy-routes.js";
|
|
128
129
|
import { ROUTES as ONBOARDING_CHECKIN_ROUTES } from "./onboarding-checkin-routes.js";
|
|
129
|
-
import { ROUTES as PLATFORM_ROUTES } from "./platform-routes.js";
|
|
130
130
|
import { ROUTES as PLAYGROUND_ROUTES } from "./playground/index.js";
|
|
131
131
|
import { ROUTES as PLUGINS_ROUTES } from "./plugins-routes.js";
|
|
132
132
|
import { ROUTES as PROFILER_ROUTES } from "./profiler-routes.js";
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* identically.
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
-
import {
|
|
16
|
+
import { getCloudUpstream } from "../../providers/cadet-model-routing.js";
|
|
17
17
|
import { ROUTING_IDENTITY_PROVIDERS } from "../../providers/inference/auth.js";
|
|
18
18
|
import type { ConnectionAvailability } from "../../providers/inference/connection-availability.js";
|
|
19
19
|
import { cadetConnectionAvailability } from "../../providers/inference/connection-availability.js";
|
|
@@ -54,7 +54,7 @@ export function verifyProfileCommand(name: string): string {
|
|
|
54
54
|
|
|
55
55
|
function managedAlternative(model: string, repair: ProfileRepairHint): string {
|
|
56
56
|
const served =
|
|
57
|
-
"this model is served by your signed-in Cadet
|
|
57
|
+
"this model is served by your signed-in Cadet Cloud route (no API key needed)";
|
|
58
58
|
const quotedModel = shellQuote(model);
|
|
59
59
|
switch (repair.kind) {
|
|
60
60
|
case "create":
|
|
@@ -89,8 +89,8 @@ function byoSequence(provider: string): string {
|
|
|
89
89
|
|
|
90
90
|
/**
|
|
91
91
|
* Build the repair guidance for an unavailable selection: the exact
|
|
92
|
-
* Cadet
|
|
93
|
-
*
|
|
92
|
+
* Cadet Cloud alternative when the model is managed-routable and the
|
|
93
|
+
* cloud route is usable; otherwise key collection alone when a connection
|
|
94
94
|
* already exists and only its credential is missing, or the full
|
|
95
95
|
* bring-your-own-key sequence when there is no connection at all.
|
|
96
96
|
*/
|
|
@@ -109,7 +109,7 @@ async function repairGuidance(
|
|
|
109
109
|
if (ROUTING_IDENTITY_PROVIDERS.has(provider)) {
|
|
110
110
|
return `Sign in to the "${provider}" route in Settings → Models & Services, or pick a profile backed by a provider API key, then retry.`;
|
|
111
111
|
}
|
|
112
|
-
if (model &&
|
|
112
|
+
if (model && getCloudUpstream(model) !== null) {
|
|
113
113
|
const managed = await cadetConnectionAvailability();
|
|
114
114
|
if (managed.status === "ok") {
|
|
115
115
|
return managedAlternative(model, repair);
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* the model must be in the catalog (unless `allowUnlisted`), a referenced
|
|
13
13
|
* connection must exist, and the resulting profile must be able to dispatch
|
|
14
14
|
* (unless `allowUnavailable`). Writes reuse the shared config-write plumbing
|
|
15
|
-
* (`commitConfigWrite` + the
|
|
15
|
+
* (`commitConfigWrite` + the cloud-profile guards), so a CLI-created profile
|
|
16
16
|
* is completed/materialized identically to a UI-created one.
|
|
17
17
|
*/
|
|
18
18
|
|
|
@@ -62,8 +62,8 @@ import {
|
|
|
62
62
|
import { ACTOR_PRINCIPALS } from "../auth/route-policy.js";
|
|
63
63
|
import {
|
|
64
64
|
commitConfigWrite,
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
normalizeCloudProfileWrites,
|
|
66
|
+
rejectCloudProfileDeletion,
|
|
67
67
|
} from "./conversation-query-routes.js";
|
|
68
68
|
import { BadRequestError, ConflictError, NotFoundError } from "./errors.js";
|
|
69
69
|
import {
|
|
@@ -656,7 +656,7 @@ async function handleCreateProfile({ body = {} }: RouteHandlerArgs) {
|
|
|
656
656
|
profiles[name] = entry;
|
|
657
657
|
// Defensive: for a user-owned name this is a no-op; it re-asserts the
|
|
658
658
|
// managed-name protection at the shared write choke point.
|
|
659
|
-
|
|
659
|
+
normalizeCloudProfileWrites({ llm: { profiles: { [name]: entry } } });
|
|
660
660
|
|
|
661
661
|
await commitConfigWrite(raw, "create inference profile");
|
|
662
662
|
|
|
@@ -698,14 +698,14 @@ async function handleUpdateProfile({
|
|
|
698
698
|
if (!existing) {
|
|
699
699
|
if (MANAGED_PROFILE_NAMES.has(name)) {
|
|
700
700
|
throw new BadRequestError(
|
|
701
|
-
`Cannot edit
|
|
701
|
+
`Cannot edit cloud profile "${name}". Cloud profiles are read-only; duplicate to a custom profile to customize.`,
|
|
702
702
|
);
|
|
703
703
|
}
|
|
704
704
|
throw new NotFoundError(`Profile "${name}" not found.`);
|
|
705
705
|
}
|
|
706
706
|
if (MANAGED_PROFILE_NAMES.has(name) && existing.source === "managed") {
|
|
707
707
|
throw new BadRequestError(
|
|
708
|
-
`Cannot edit
|
|
708
|
+
`Cannot edit cloud profile "${name}". Cloud profiles are read-only; duplicate to a custom profile to customize.`,
|
|
709
709
|
);
|
|
710
710
|
}
|
|
711
711
|
|
|
@@ -799,7 +799,7 @@ async function handleUpdateProfile({
|
|
|
799
799
|
}
|
|
800
800
|
|
|
801
801
|
profiles[name] = merged;
|
|
802
|
-
|
|
802
|
+
normalizeCloudProfileWrites({ llm: { profiles: { [name]: merged } } });
|
|
803
803
|
|
|
804
804
|
await commitConfigWrite(raw, "update inference profile");
|
|
805
805
|
|
|
@@ -834,10 +834,10 @@ async function handleDeleteProfile({ pathParams = {} }: RouteHandlerArgs) {
|
|
|
834
834
|
const llm = asPlainObject(raw.llm);
|
|
835
835
|
const profiles = asPlainObject(llm?.profiles);
|
|
836
836
|
|
|
837
|
-
// Reject deletion of a
|
|
837
|
+
// Reject deletion of a cloud default with a clear message before the
|
|
838
838
|
// existence check, so `delete balanced` explains itself even when the
|
|
839
839
|
// managed stub is on disk.
|
|
840
|
-
|
|
840
|
+
rejectCloudProfileDeletion({ llm: { profiles: { [name]: null } } });
|
|
841
841
|
|
|
842
842
|
if (!profiles || profiles[name] === undefined) {
|
|
843
843
|
throw new NotFoundError(`Profile "${name}" not found.`);
|
|
@@ -997,7 +997,7 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
997
997
|
additionalResponses: {
|
|
998
998
|
"400": {
|
|
999
999
|
description:
|
|
1000
|
-
"Invalid fields, a profile that cannot serve requests, or attempt to edit a
|
|
1000
|
+
"Invalid fields, a profile that cannot serve requests, or attempt to edit a cloud profile",
|
|
1001
1001
|
},
|
|
1002
1002
|
"404": { description: "Profile not found" },
|
|
1003
1003
|
},
|
|
@@ -1018,7 +1018,7 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
1018
1018
|
pathParams: [{ name: "name", description: "Profile name" }],
|
|
1019
1019
|
responseBody: z.object({ ok: z.literal(true), name: z.string() }),
|
|
1020
1020
|
additionalResponses: {
|
|
1021
|
-
"400": { description: "Attempt to delete a
|
|
1021
|
+
"400": { description: "Attempt to delete a cloud profile" },
|
|
1022
1022
|
"404": { description: "Profile not found" },
|
|
1023
1023
|
"409": {
|
|
1024
1024
|
description:
|