@mycadet/assistant 0.12.7 → 0.12.8
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 +1 -1
- 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/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 +1 -1
- 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 +1 -1
- 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 +6815 -794
- 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} +60 -60
- 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-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 +27 -41
- 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 +9 -8
- 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 +2 -2
- package/src/__tests__/mcp-client-auth.test.ts +2 -2
- package/src/__tests__/mcp-tool-annotations-risk.test.ts +2 -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-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 +12 -12
- package/src/__tests__/skills-files-catalog-fallback.test.ts +9 -9
- 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-platform-login.ts → show-cloud-login.ts} +3 -5
- 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__/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/config.ts +1 -1
- 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__/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 +23 -21
- 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 +1 -12
- package/src/config/schemas/llm.ts +45 -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/sync-gated-profiles.ts +8 -8
- 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 +6 -18
- package/src/credential-health/credential-health-service.ts +61 -76
- 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 +21 -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/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 +26 -25
- 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} +83 -116
- package/src/runtime/routes/conversation-compaction-routes.ts +1 -1
- package/src/runtime/routes/conversation-query-routes.ts +82 -282
- 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 +29 -55
- 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 +6 -15
- 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/oom-priority.ts +1 -1
- package/src/util/platform.ts +5 -5
- 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 +4 -4
- 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/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
|
@@ -58,10 +58,10 @@ export function maybeSeedCliCommandCards(config: AssistantConfig): void {
|
|
|
58
58
|
|
|
59
59
|
/**
|
|
60
60
|
* Default upper bound on how long
|
|
61
|
-
* {@link
|
|
61
|
+
* {@link maybeReseedCapabilitiesAfterCloudCredential} waits for the capability
|
|
62
62
|
* reseeds before enqueuing the v3 maintain pass. The reseeds keep running
|
|
63
63
|
* detached past this bound — it only stops the barrier from waiting on a wedged
|
|
64
|
-
* catalog (a stalled `getCatalog()` or a
|
|
64
|
+
* catalog (a stalled `getCatalog()` or a cloud-proxy embed that never
|
|
65
65
|
* returns). A straggler that finishes later re-enqueues maintain.
|
|
66
66
|
*/
|
|
67
67
|
const RESEED_BARRIER_TIMEOUT_MS = 120_000;
|
|
@@ -89,13 +89,13 @@ async function settledWithin(
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
/**
|
|
92
|
-
* Re-seed the v2 skill and CLI-command capability entries once a
|
|
92
|
+
* Re-seed the v2 skill and CLI-command capability entries once a cloud-proxy
|
|
93
93
|
* credential lands, closing the first-boot race where the daemon's startup seed
|
|
94
|
-
* runs before the
|
|
94
|
+
* runs before the cloud has provisioned the cloud embedding credential.
|
|
95
95
|
*
|
|
96
|
-
* On a brand-new
|
|
96
|
+
* On a brand-new cloud assistant the memory worker fires the startup seed
|
|
97
97
|
* (`maybeSeedCapabilitySkills` / `maybeSeedCliCommandCards`) seconds after
|
|
98
|
-
* boot, but the
|
|
98
|
+
* boot, but the cloud pushes `cadet:assistant_api_key` (the credential the
|
|
99
99
|
* managed Gemini embedding backend needs) tens of seconds later. The seed's
|
|
100
100
|
* `embedWithBackend` call throws `EmbeddingBackendUnavailableError` before the
|
|
101
101
|
* skill/CLI `entries` cache is replaced, so `listSkillEntries()` /
|
|
@@ -105,7 +105,7 @@ async function settledWithin(
|
|
|
105
105
|
* the next daemon restart. Re-running the seed when the credential arrives
|
|
106
106
|
* restores the capability pages without a restart.
|
|
107
107
|
*
|
|
108
|
-
* Gated on the
|
|
108
|
+
* Gated on the cloud-proxy prerequisites now being satisfied (both the
|
|
109
109
|
* platform base URL and the assistant API key present) so a non-managed
|
|
110
110
|
* credential write — or a partial update that has not yet completed the pair —
|
|
111
111
|
* does not kick a doomed embed. Idempotent: `seedV2SkillEntries` /
|
|
@@ -125,7 +125,7 @@ async function settledWithin(
|
|
|
125
125
|
*
|
|
126
126
|
* The maintain enqueue must NOT be gated on both catalogs settling. The two
|
|
127
127
|
* embeds are independent, and a single wedged catalog (a stalled `getCatalog()`
|
|
128
|
-
* or a
|
|
128
|
+
* or a cloud-proxy embed that never returns) would otherwise block the v3 lane
|
|
129
129
|
* rebuild indefinitely, so the catalog that DID seed never reaches the selector.
|
|
130
130
|
* The barrier is therefore bounded by `reseedTimeoutMs`: maintain is enqueued
|
|
131
131
|
* once the barrier resolves (the pass is idempotent and reconciles whatever the
|
|
@@ -136,7 +136,7 @@ async function settledWithin(
|
|
|
136
136
|
* `reseedTimeoutMs` is injectable for tests; production uses
|
|
137
137
|
* {@link RESEED_BARRIER_TIMEOUT_MS}.
|
|
138
138
|
*/
|
|
139
|
-
export async function
|
|
139
|
+
export async function maybeReseedCapabilitiesAfterCloudCredential(
|
|
140
140
|
config: AssistantConfig,
|
|
141
141
|
opts: { reseedTimeoutMs?: number } = {},
|
|
142
142
|
): Promise<void> {
|
|
@@ -144,13 +144,13 @@ export async function maybeReseedCapabilitiesAfterManagedCredential(
|
|
|
144
144
|
return;
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
const {
|
|
148
|
-
await import("../../../../providers/
|
|
149
|
-
if (!(await
|
|
147
|
+
const { hasCloudProxyPrereqs } =
|
|
148
|
+
await import("../../../../providers/cloud-proxy/context.js");
|
|
149
|
+
if (!(await hasCloudProxyPrereqs())) {
|
|
150
150
|
return;
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
-
// The
|
|
153
|
+
// The cloud credential has just landed, so the embedding backend is now
|
|
154
154
|
// reachable. Retry the embedding-identity reconcile to close the
|
|
155
155
|
// fresh-platform-install-booted-with-Gemini-down case: the first boot defers
|
|
156
156
|
// (degraded) because the backend probe returns null, and this credential-
|
|
@@ -168,7 +168,7 @@ export async function maybeReseedCapabilitiesAfterManagedCredential(
|
|
|
168
168
|
} catch (err) {
|
|
169
169
|
log.warn(
|
|
170
170
|
{ err },
|
|
171
|
-
"Embedding-identity reconcile after
|
|
171
|
+
"Embedding-identity reconcile after cloud proxy credential update threw — continuing",
|
|
172
172
|
);
|
|
173
173
|
}
|
|
174
174
|
|
|
@@ -200,12 +200,12 @@ export async function maybeReseedCapabilitiesAfterManagedCredential(
|
|
|
200
200
|
seed().then(
|
|
201
201
|
() =>
|
|
202
202
|
log.info(
|
|
203
|
-
`Memory v2 ${label} entries seeded after
|
|
203
|
+
`Memory v2 ${label} entries seeded after cloud proxy credential update`,
|
|
204
204
|
),
|
|
205
205
|
(err: unknown) =>
|
|
206
206
|
log.warn(
|
|
207
207
|
{ err },
|
|
208
|
-
`Failed to seed v2 ${label} entries after
|
|
208
|
+
`Failed to seed v2 ${label} entries after cloud proxy credential update`,
|
|
209
209
|
),
|
|
210
210
|
),
|
|
211
211
|
);
|
|
@@ -229,7 +229,7 @@ export async function maybeReseedCapabilitiesAfterManagedCredential(
|
|
|
229
229
|
} catch (err) {
|
|
230
230
|
log.warn(
|
|
231
231
|
{ err },
|
|
232
|
-
"Failed to enqueue memory_v3_maintain after
|
|
232
|
+
"Failed to enqueue memory_v3_maintain after cloud proxy credential update",
|
|
233
233
|
);
|
|
234
234
|
}
|
|
235
235
|
};
|
|
@@ -159,12 +159,12 @@ async function runSeedV2CliCommandEntries(generation: number): Promise<void> {
|
|
|
159
159
|
|
|
160
160
|
// Sparse (BM25/TF) encoding is computed locally; only the dense vectors
|
|
161
161
|
// require `embedWithBackend`, which is unconfigured during the cold-start
|
|
162
|
-
// window before a
|
|
162
|
+
// window before a cloud-proxy embedding credential is provisioned. A
|
|
163
163
|
// dense-embed failure is non-fatal to the in-memory cache: the v3 needle
|
|
164
164
|
// finder lane reads CLI capabilities from `entries` / the page index, NOT
|
|
165
165
|
// from Qdrant, so the cache is populated from the local Commander tree
|
|
166
166
|
// regardless of backend state and commands stay discoverable from first
|
|
167
|
-
// boot. Only the dense Qdrant upsert is skipped; the
|
|
167
|
+
// boot. Only the dense Qdrant upsert is skipped; the cloud-credential
|
|
168
168
|
// reseed and the v3 maintain pass backfill the dense vectors on recovery.
|
|
169
169
|
const nextEntries = new Map<string, CliCommandEntry>();
|
|
170
170
|
let denseVectors: number[][] = [];
|
|
@@ -1182,7 +1182,7 @@ export function renderConsolidationPrompt(
|
|
|
1182
1182
|
* page index's reports, `{{OVERLONG_SECTIONS_SECTION}}` from the v3 section
|
|
1183
1183
|
* scan, and the legacy `{{PROC_TO_SKILLS_SECTION}}` always
|
|
1184
1184
|
* stripped to empty, so a prompt copied from any past bundled source never
|
|
1185
|
-
* leaks a raw placeholder, and a customized prompt can opt into the
|
|
1185
|
+
* leaks a raw placeholder, and a customized prompt can opt into the cloud
|
|
1186
1186
|
* sections.
|
|
1187
1187
|
*
|
|
1188
1188
|
* The buffer entries and the repair sections do not wait for opt-in: an
|
|
@@ -323,14 +323,14 @@ async function runSeedV2SkillEntries(generation: number): Promise<void> {
|
|
|
323
323
|
// Build the dense + sparse vectors for the Qdrant write. Sparse (BM25/TF)
|
|
324
324
|
// encoding is computed locally and needs no backend; only the dense vectors
|
|
325
325
|
// require `embedWithBackend`, which is unconfigured during the cold-start
|
|
326
|
-
// window before a
|
|
326
|
+
// window before a cloud-proxy embedding credential is provisioned.
|
|
327
327
|
//
|
|
328
328
|
// A dense-embed failure is non-fatal to the in-memory cache: the v3 needle
|
|
329
329
|
// finder lane and always-candidate skill pinning read skills from `entries`
|
|
330
330
|
// / the page index, NOT from Qdrant, so the cache is populated from the
|
|
331
331
|
// local catalog regardless of backend state and skills stay discoverable
|
|
332
|
-
// from first boot. Only the dense Qdrant upsert is skipped; the
|
|
333
|
-
// credential reseed (`
|
|
332
|
+
// from first boot. Only the dense Qdrant upsert is skipped; the cloud-
|
|
333
|
+
// credential reseed (`maybeReseedCapabilitiesAfterCloudCredential`) and
|
|
334
334
|
// the v3 maintain pass backfill the dense vectors once the backend recovers.
|
|
335
335
|
const nextEntries = new Map<string, SkillEntry>();
|
|
336
336
|
let denseVectors: number[][] = [];
|
|
@@ -461,7 +461,7 @@ async function runSeedV2SkillEntries(generation: number): Promise<void> {
|
|
|
461
461
|
fallbackAlwaysCandidateIds = new Set<string>();
|
|
462
462
|
invalidatePageIndex();
|
|
463
463
|
|
|
464
|
-
// Surface a dense-embed failure to `throwOnError` callers (the
|
|
464
|
+
// Surface a dense-embed failure to `throwOnError` callers (the cloud-
|
|
465
465
|
// credential reseed and the operator reembed route) so the existing retry +
|
|
466
466
|
// maintain machinery backfills the dense lane. The in-memory cache is
|
|
467
467
|
// already updated above, so the needle lane is fixed regardless.
|
|
@@ -125,7 +125,7 @@ describe("maintainJob", () => {
|
|
|
125
125
|
},
|
|
126
126
|
// Skill usage-prune stage off by default: no managed skills ⇒ nothing to
|
|
127
127
|
// report or delete. The dedicated usage-prune tests below override these.
|
|
128
|
-
|
|
128
|
+
listCloudSkills: () => [],
|
|
129
129
|
deleteSkill: async () => {},
|
|
130
130
|
nowMs: () => Date.now(),
|
|
131
131
|
};
|
|
@@ -1202,7 +1202,7 @@ describe("maintainJob skill usage-prune", () => {
|
|
|
1202
1202
|
listIndexedSlugs: async () => [],
|
|
1203
1203
|
loadCoreSet: () => [],
|
|
1204
1204
|
invalidateLanes: () => {},
|
|
1205
|
-
|
|
1205
|
+
listCloudSkills: () =>
|
|
1206
1206
|
skills.map((s) => ({ ...s, installMeta: metas[s.id] ?? null })),
|
|
1207
1207
|
deleteSkill: async (id) => {
|
|
1208
1208
|
deletedSkills.push(id);
|
|
@@ -1259,7 +1259,7 @@ describe("maintainJob skill usage-prune", () => {
|
|
|
1259
1259
|
});
|
|
1260
1260
|
});
|
|
1261
1261
|
|
|
1262
|
-
describe("enabled (skillPruneDays: 30) — deletes via
|
|
1262
|
+
describe("enabled (skillPruneDays: 30) — deletes via executeDeleteCloudSkill", () => {
|
|
1263
1263
|
test("prunes a stale assistant skill via deleteSkill", async () => {
|
|
1264
1264
|
memoryV3LiveSlot = true;
|
|
1265
1265
|
const {
|
|
@@ -89,7 +89,7 @@ mock.module("@mycadet/plugin-api", () => ({
|
|
|
89
89
|
mock.module("../../../../../providers/registry.js", () => ({
|
|
90
90
|
...registryReal,
|
|
91
91
|
getProviderRoutingSource: (providerName: string) =>
|
|
92
|
-
providerName === "managed" ? "
|
|
92
|
+
providerName === "managed" ? "cloud-proxy" : "user-key",
|
|
93
93
|
}));
|
|
94
94
|
|
|
95
95
|
mock.module("../../../../../util/logger.js", () => ({
|
|
@@ -536,7 +536,7 @@ describe("selectPool — infrastructure failures throw", () => {
|
|
|
536
536
|
expect(failure.turn?.recentContext).toBe("");
|
|
537
537
|
});
|
|
538
538
|
|
|
539
|
-
test("
|
|
539
|
+
test("cloud provider 402 attaches a non-terminal credits notice", async () => {
|
|
540
540
|
providerStub = {
|
|
541
541
|
name: "managed",
|
|
542
542
|
sendMessage: async (messages, options) => {
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
* 5. **Skill usage-prune (observe-first, default-off)** — REPORT
|
|
58
58
|
* assistant-authored managed skills unused for at least
|
|
59
59
|
* {@link SKILL_OBSERVE_WINDOW_DAYS} days (in `prunableSkills`) on every
|
|
60
|
-
* pass for observability, and DELETE them (via `
|
|
60
|
+
* pass for observability, and DELETE them (via `executeDeleteCloudSkill`)
|
|
61
61
|
* only when `memory.maintenance.skillPruneDays` is a positive integer
|
|
62
62
|
* (default `null` = never prune). `author:"user"` and untagged skills are
|
|
63
63
|
* always protected. See {@link pruneStaleSkills}.
|
|
@@ -89,7 +89,7 @@ import { getMemoryCheckpoint } from "../../../../persistence/checkpoints.js";
|
|
|
89
89
|
import { EmbeddingBackendUnavailableError } from "../../../../persistence/embeddings/embedding-backend.js";
|
|
90
90
|
import { EmbeddingBillingBlockError } from "../../../../persistence/embeddings/embedding-billing-breaker.js";
|
|
91
91
|
import type { MemoryJob } from "../../../../persistence/jobs-store.js";
|
|
92
|
-
import {
|
|
92
|
+
import { executeDeleteCloudSkill } from "../../../../tools/skills/delete-cloud.js";
|
|
93
93
|
import { embedWithBackend } from "../embeddings.js";
|
|
94
94
|
import { getLogger } from "../logging.js";
|
|
95
95
|
import { getWorkspaceDir } from "../paths.js";
|
|
@@ -208,14 +208,14 @@ export interface MaintainJobDeps {
|
|
|
208
208
|
/** Drop the memoized v3 lanes so the next turn rebuilds them. */
|
|
209
209
|
invalidateLanes: () => void;
|
|
210
210
|
/**
|
|
211
|
-
* The
|
|
211
|
+
* The cloud (assistant-installed) skills in the catalog, each carrying its
|
|
212
212
|
* `installMeta`. The usage-prune stage reads the meta's `author`,
|
|
213
213
|
* `lastUsedAt`, and `installedAt` to find stale assistant-authored skills.
|
|
214
214
|
*/
|
|
215
|
-
|
|
215
|
+
listCloudSkills: () => ResolvedSkillEntry[] | Promise<ResolvedSkillEntry[]>;
|
|
216
216
|
/**
|
|
217
|
-
* Delete a
|
|
218
|
-
* page/vectors + v3 sections reconcile), as the `
|
|
217
|
+
* Delete a cloud skill by id (dir + companion files + graph node + v2
|
|
218
|
+
* page/vectors + v3 sections reconcile), as the `delete_cloud_skill` tool
|
|
219
219
|
* does. Called only when deletion is enabled and a skill is stale.
|
|
220
220
|
*/
|
|
221
221
|
deleteSkill: (skillId: string) => Promise<void>;
|
|
@@ -455,10 +455,10 @@ function defaultDeps(config: AssistantConfig): MaintainJobDeps {
|
|
|
455
455
|
listIndexedSlugs: () => selectAllPagesFromWorkspace(workspaceDir),
|
|
456
456
|
loadCoreSet: () => realLoadCoreSet(workspaceDir),
|
|
457
457
|
invalidateLanes: realInvalidateLanes,
|
|
458
|
-
|
|
458
|
+
listCloudSkills: async () =>
|
|
459
459
|
(await listInstalledSkills()).filter((s) => s.source === "managed"),
|
|
460
460
|
deleteSkill: async (skillId) => {
|
|
461
|
-
const result = await
|
|
461
|
+
const result = await executeDeleteCloudSkill(
|
|
462
462
|
{ skill_id: skillId },
|
|
463
463
|
{
|
|
464
464
|
conversationId: "memory-v3-maintain",
|
|
@@ -722,7 +722,7 @@ async function pruneStaleSkills(deps: MaintainJobDeps): Promise<{
|
|
|
722
722
|
const deleteEnabled =
|
|
723
723
|
typeof skillPruneDays === "number" && skillPruneDays > 0;
|
|
724
724
|
|
|
725
|
-
const managed = await deps.
|
|
725
|
+
const managed = await deps.listCloudSkills();
|
|
726
726
|
const prunableSkills: string[] = [];
|
|
727
727
|
const prunedSkills: string[] = [];
|
|
728
728
|
const skillPruneFailures: Array<{ skillId: string; error: string }> = [];
|
|
@@ -1167,7 +1167,7 @@ export async function maintainJob(
|
|
|
1167
1167
|
// Stage 5: usage-prune assistant-authored skills. OBSERVE-FIRST and
|
|
1168
1168
|
// DEFAULT-OFF: it always REPORTS assistant-authored managed skills unused for
|
|
1169
1169
|
// at least SKILL_OBSERVE_WINDOW_DAYS days (prunableSkills) so accumulation is
|
|
1170
|
-
// visible, and only DELETES — via
|
|
1170
|
+
// visible, and only DELETES — via executeDeleteCloudSkill — when
|
|
1171
1171
|
// memory.maintenance.skillPruneDays is a positive integer (default null = never
|
|
1172
1172
|
// prune). User-authored and untagged skills are always protected. Contained: a
|
|
1173
1173
|
// failure is logged + recorded without aborting invalidation.
|
|
@@ -118,7 +118,7 @@ import {
|
|
|
118
118
|
const log = getLogger("memory-v3-injection-gate");
|
|
119
119
|
|
|
120
120
|
/** `check_name` of the `watchdog` telemetry event recorded once per
|
|
121
|
-
* injection-gate run. The
|
|
121
|
+
* injection-gate run. The cloud's memory admin analytics count and filter
|
|
122
122
|
* on this exact string — keep it stable. */
|
|
123
123
|
export const MEMORY_V3_INJECTION_GATE_CHECK_NAME = "memory_v3_injection_gate";
|
|
124
124
|
|
|
@@ -133,7 +133,7 @@ export const MEMORY_V3_INJECTION_GATE_CHECK_NAME = "memory_v3_injection_gate";
|
|
|
133
133
|
* gate threw). Pass rate is only meaningful over scored runs — the shortcuts are
|
|
134
134
|
* all unconditional passes and would otherwise inflate it. It is derivable from
|
|
135
135
|
* `reason`, but the daemon owns the reason set and adds to it freely, so it is
|
|
136
|
-
* reported explicitly rather than left for the
|
|
136
|
+
* reported explicitly rather than left for the cloud to re-derive from a
|
|
137
137
|
* hardcoded list that would silently miscount the next reason we add. */
|
|
138
138
|
function recordGateRun(detail: Record<string, unknown>): void {
|
|
139
139
|
try {
|
|
@@ -149,7 +149,7 @@ function recordGateRun(detail: Record<string, unknown>): void {
|
|
|
149
149
|
}
|
|
150
150
|
|
|
151
151
|
/** `check_name` of the `watchdog` telemetry event recorded once per orchestrated
|
|
152
|
-
* turn, carrying what the SELECTOR did. Keep this string stable — the
|
|
152
|
+
* turn, carrying what the SELECTOR did. Keep this string stable — the cloud's
|
|
153
153
|
* memory admin analytics filter on it. */
|
|
154
154
|
export const MEMORY_V3_SELECTION_CHECK_NAME = "memory_v3_selection";
|
|
155
155
|
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
|
|
13
13
|
import { writeFileSync } from "node:fs";
|
|
14
14
|
|
|
15
|
+
import { rehydrateCloudCredentials } from "../../../config/cloud-rehydration.js";
|
|
15
16
|
import { getConfig } from "../../../config/loader.js";
|
|
16
17
|
import { isMemoryEnabled } from "../../../config/memory-v3-gate.js";
|
|
17
|
-
import { rehydratePlatformCredentials } from "../../../config/platform-rehydration.js";
|
|
18
18
|
import { startConversationEvictor } from "../../../daemon/conversation-evictor.js";
|
|
19
19
|
import {
|
|
20
20
|
startWorkspaceSkillMdMtimePoll,
|
|
@@ -55,15 +55,15 @@ async function main(): Promise<void> {
|
|
|
55
55
|
writeFileSync(pidPath, String(process.pid), { flag: "w" });
|
|
56
56
|
log.info({ pid: process.pid, pidPath }, "Memory worker process started");
|
|
57
57
|
|
|
58
|
-
// Rehydrate the
|
|
58
|
+
// Rehydrate the cloud base URL and IDs from the credential store before
|
|
59
59
|
// any job runs. The daemon does this in initializeProvidersAndTools(); this
|
|
60
|
-
// standalone process must do it itself so
|
|
60
|
+
// standalone process must do it itself so getCloudBaseUrl() resolves to
|
|
61
61
|
// the persisted platform environment instead of the CADET_ENVIRONMENT
|
|
62
62
|
// default. Retrospective and consolidation passes wake real agent
|
|
63
63
|
// conversations whose inference and background-wake requests go through the
|
|
64
|
-
//
|
|
64
|
+
// cloud proxy — without rehydration those requests hit the wrong platform
|
|
65
65
|
// and are rejected.
|
|
66
|
-
await
|
|
66
|
+
await rehydrateCloudCredentials();
|
|
67
67
|
|
|
68
68
|
// Jobs in this process wake real agent conversations, so it registers the
|
|
69
69
|
// default plugin hook surface (hooks and injectors, no init hooks) the same
|
|
@@ -292,7 +292,7 @@ function readConfigValidationResetNotice(): ConfigValidationResetNotice | null {
|
|
|
292
292
|
* the loader recovers along a ladder (see `config/loader.ts`
|
|
293
293
|
* `recoverFromInvalidConfig`) and records a sentinel. Whichever rung it lands
|
|
294
294
|
* on, the saved config is not fully in effect: a section — or the whole config —
|
|
295
|
-
* may have reverted to schema defaults, flipping a
|
|
295
|
+
* may have reverted to schema defaults, flipping a cloud email/OAuth service
|
|
296
296
|
* mode back to `your-own`, or the user's most recent edit may simply never have
|
|
297
297
|
* applied. That is otherwise invisible (log-only). This injector reads the
|
|
298
298
|
* sentinel and, when it is younger than
|
|
@@ -340,7 +340,7 @@ const configValidationResetNoticeInjector: Injector = {
|
|
|
340
340
|
`The user's config.json failed schema validation at ${notice.resetAt} ` +
|
|
341
341
|
`and did not fully take effect. Settings the user did not change may ` +
|
|
342
342
|
`have silently reverted to defaults — including managed email/OAuth ` +
|
|
343
|
-
`service modes (a
|
|
343
|
+
`service modes (a cloud connection can flip back to "your-own" and ` +
|
|
344
344
|
`break), model choices, and other customizations — and a recent edit may ` +
|
|
345
345
|
`never have applied. The on-disk config.json is intact; the invalid ` +
|
|
346
346
|
`entries just need fixing for the saved values to take effect again. ` +
|
|
@@ -1018,7 +1018,7 @@ export function registerDeclaredCredentialKeyPatterns(
|
|
|
1018
1018
|
*
|
|
1019
1019
|
* `disable` and `reload` keep the directory present, so {@link runShutdownHook}
|
|
1020
1020
|
* resolves and runs the on-disk `shutdown` (via the same resolution the dispatch
|
|
1021
|
-
* path uses). `uninstall` runs nothing here: a
|
|
1021
|
+
* path uses). `uninstall` runs nothing here: a cloud uninstall runs `shutdown`
|
|
1022
1022
|
* *before* removing the directory (see `cli/lib/uninstall-plugin.ts`), and an
|
|
1023
1023
|
* out-of-band `rm` leaves nothing to resolve.
|
|
1024
1024
|
*/
|
|
@@ -68,7 +68,7 @@ export interface SourceVersionsDocument {
|
|
|
68
68
|
/** ISO timestamp of the last rewrite, for staleness logging. */
|
|
69
69
|
readonly writtenAt: string;
|
|
70
70
|
/**
|
|
71
|
-
* Keyed by the absolute directory path as the
|
|
71
|
+
* Keyed by the absolute directory path as the cloud helpers construct
|
|
72
72
|
* it (`getWorkspacePluginsDir()`-derived plugin dirs, plus
|
|
73
73
|
* `getWorkspaceHooksDir()` for standalone workspace hooks), so readers
|
|
74
74
|
* can key their own state the same way without any name resolution.
|
package/src/plugins/types.ts
CHANGED
|
@@ -148,7 +148,7 @@ export interface TurnContext {
|
|
|
148
148
|
readonly interfaceName?: string;
|
|
149
149
|
/**
|
|
150
150
|
* Client OS surface, reported independently of the transport interface.
|
|
151
|
-
* Rendered as the `client_os:` line so the model knows the
|
|
151
|
+
* Rendered as the `client_os:` line so the model knows the cloud even
|
|
152
152
|
* though browser, mobile, and desktop apps share one `"web"`
|
|
153
153
|
* transport interface.
|
|
154
154
|
*/
|
|
@@ -178,7 +178,7 @@ describe("buildSystemPrompt — default persona trust-class guardrail", () => {
|
|
|
178
178
|
test("gates off for an unresolved local build when HTTP auth is disabled", () => {
|
|
179
179
|
// Initial-prompt warming, home generation, and btw sidechains build
|
|
180
180
|
// prompts with NO trustContext on behalf of the owner. In an auth-disabled
|
|
181
|
-
// (local /
|
|
181
|
+
// (local / cloud-managed) deployment that unresolved actor is the
|
|
182
182
|
// guardian, so the guardrail must not render into those guardian-facing
|
|
183
183
|
// prompts (fail-stranger would stonewall the owner about their own data).
|
|
184
184
|
process.env.DISABLE_HTTP_AUTH = "true";
|
|
@@ -138,7 +138,7 @@ export function normalizeOnboardingContext(
|
|
|
138
138
|
// Findings are model-extracted from arbitrary web content and get written
|
|
139
139
|
// into persisted persona markdown as single bullets. Collapse ALL runs of
|
|
140
140
|
// whitespace (incl. newlines) so one finding can never mint extra lines —
|
|
141
|
-
// injected bullets, headings, or a `## ` that would corrupt the
|
|
141
|
+
// injected bullets, headings, or a `## ` that would corrupt the cloud
|
|
142
142
|
// section boundary on later rewrites.
|
|
143
143
|
researchFindings: ctx.researchFindings?.length
|
|
144
144
|
? ctx.researchFindings
|
|
@@ -475,7 +475,7 @@ function resolveOnboardingWriteTarget(): string {
|
|
|
475
475
|
}
|
|
476
476
|
|
|
477
477
|
/**
|
|
478
|
-
* Write a
|
|
478
|
+
* Write a cloud `## Onboarding Context` section to the guardian persona
|
|
479
479
|
* file (or fallback target). Idempotent: replaces the section in-place if
|
|
480
480
|
* it already exists, appends if not, and creates the file when missing.
|
|
481
481
|
*
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
import { existsSync, readFileSync } from "node:fs";
|
|
28
28
|
import { join } from "node:path";
|
|
29
29
|
|
|
30
|
-
import { getCachedManagedConnections } from "../../credential-execution/
|
|
30
|
+
import { getCachedManagedConnections } from "../../credential-execution/cloud-catalog.js";
|
|
31
31
|
import { listConnections } from "../../oauth/oauth-store.js";
|
|
32
32
|
import type { OnboardingContext } from "../../types/onboarding-context.js";
|
|
33
33
|
import { stripCommentLines } from "../../util/strip-comment-lines.js";
|
|
@@ -136,7 +136,7 @@ function renderFirstRunUserContext(onboarding: OnboardingContext): string {
|
|
|
136
136
|
/**
|
|
137
137
|
* Builds the `# Connected Services` block from the live OAuth caches.
|
|
138
138
|
* Reads local (BYO) connections from the SQLite store via
|
|
139
|
-
* `listConnections()` and
|
|
139
|
+
* `listConnections()` and cloud connections from the
|
|
140
140
|
* in-memory cache populated at daemon startup. Provider-level dedup
|
|
141
141
|
* is intentional: this block is a summary for the model, not an
|
|
142
142
|
* exhaustive account list, so multiple accounts on the same provider
|
|
@@ -569,7 +569,7 @@ You can still be genuinely helpful — answer general questions, do research, an
|
|
|
569
569
|
// because the content is derived from live caches rather than a
|
|
570
570
|
// workspace file — the transform pulls from `listConnections()`
|
|
571
571
|
// (SQLite OAuth store) and `getCachedManagedConnections()`
|
|
572
|
-
// (in-memory cache populated by the
|
|
572
|
+
// (in-memory cache populated by the cloud-catalog refresh job).
|
|
573
573
|
// Returns null when no active connections exist so the renderer's
|
|
574
574
|
// empty-body gate omits the section entirely.
|
|
575
575
|
id: "14-connected-services",
|
|
@@ -8,7 +8,7 @@ import { migrateCreateProviderConnections } from "../../persistence/migrations/2
|
|
|
8
8
|
import { migrateProviderConnectionStatusLabel } from "../../persistence/migrations/244-provider-connection-status-label.js";
|
|
9
9
|
import { migrateProviderConnectionBaseUrlAndModels } from "../../persistence/migrations/250-provider-connection-base-url-and-models.js";
|
|
10
10
|
import * as schema from "../../persistence/schema/index.js";
|
|
11
|
-
import {
|
|
11
|
+
import { isCadetCloudConnection } from "../cadet-model-routing.js";
|
|
12
12
|
import { createAdapterFromConnection } from "../inference/adapter-factory.js";
|
|
13
13
|
import type { Auth, ProviderConnection } from "../inference/auth.js";
|
|
14
14
|
import type { ResolvedAuth } from "../inference/auth.js";
|
|
@@ -43,13 +43,13 @@ const resolvedAuth: ResolvedAuth = {
|
|
|
43
43
|
};
|
|
44
44
|
|
|
45
45
|
describe("cadet connection routing", () => {
|
|
46
|
-
test("
|
|
47
|
-
expect(
|
|
46
|
+
test("isCadetCloudConnection identifies the sentinel connection", () => {
|
|
47
|
+
expect(isCadetCloudConnection(cadetConnection)).toBe(true);
|
|
48
48
|
// The provider column alone decides: a concrete provider is never the
|
|
49
|
-
//
|
|
49
|
+
// cloud route (platform auth always pairs with provider "cadet";
|
|
50
50
|
// DB migration 361 reconciles stored rows).
|
|
51
|
-
expect(
|
|
52
|
-
expect(
|
|
51
|
+
expect(isCadetCloudConnection({ provider: "fireworks" })).toBe(false);
|
|
52
|
+
expect(isCadetCloudConnection({ provider: "cadet" })).toBe(true);
|
|
53
53
|
});
|
|
54
54
|
|
|
55
55
|
test("the cadet sentinel does not dispatch without an override", () => {
|
|
@@ -149,7 +149,7 @@ describe("cadet connection persistence (DB round-trip)", () => {
|
|
|
149
149
|
const loaded = getConnection(db, "cadet");
|
|
150
150
|
expect(loaded).not.toBeNull();
|
|
151
151
|
expect(loaded?.provider).toBe("cadet");
|
|
152
|
-
expect(
|
|
152
|
+
expect(isCadetCloudConnection(loaded!)).toBe(true);
|
|
153
153
|
});
|
|
154
154
|
|
|
155
155
|
test("listConnections includes a persisted cadet row", () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Guards that a `cadet` provider_connection only takes the provider-agnostic
|
|
3
|
-
* routing path when the resolving profile declares a
|
|
4
|
-
* A `cadet` connection paired with a non-
|
|
3
|
+
* routing path when the resolving profile declares a cloud-routable upstream.
|
|
4
|
+
* A `cadet` connection paired with a non-cloud provider (openrouter/ollama/…)
|
|
5
5
|
* is a misconfiguration and must use the normal mismatch recovery/error path,
|
|
6
6
|
* not route as platform auth and silently fall back.
|
|
7
7
|
*/
|
|
@@ -88,14 +88,14 @@ describe("cadet connection mismatch handling", () => {
|
|
|
88
88
|
expect(provider).not.toBeNull();
|
|
89
89
|
expect(provider?.routeAttribution).toEqual({
|
|
90
90
|
connectionName: "cadet",
|
|
91
|
-
|
|
91
|
+
isCloudRoute: true,
|
|
92
92
|
});
|
|
93
93
|
expect(resolveCalls).toHaveLength(1);
|
|
94
94
|
expect(resolveCalls[0].connection.name).toBe("cadet");
|
|
95
95
|
expect(resolveCalls[0].opts.providerOverride).toBe("fireworks");
|
|
96
96
|
});
|
|
97
97
|
|
|
98
|
-
test("non-
|
|
98
|
+
test("non-cloud provider with no recovery throws provider_mismatch", async () => {
|
|
99
99
|
fakeConnections.set("cadet", cadetConn);
|
|
100
100
|
listResult = []; // no openrouter connection to recover to
|
|
101
101
|
let caught: unknown;
|
|
@@ -113,11 +113,11 @@ describe("cadet connection mismatch handling", () => {
|
|
|
113
113
|
expect((caught as ConnectionResolutionError).reason).toBe(
|
|
114
114
|
"provider_mismatch",
|
|
115
115
|
);
|
|
116
|
-
// Never routed as a cadet
|
|
116
|
+
// Never routed as a cadet cloud-auth request.
|
|
117
117
|
expect(resolveCalls).toHaveLength(0);
|
|
118
118
|
});
|
|
119
119
|
|
|
120
|
-
test("non-
|
|
120
|
+
test("non-cloud provider auto-recovers to a real connection (no override)", async () => {
|
|
121
121
|
fakeConnections.set("cadet", cadetConn);
|
|
122
122
|
listResult = [
|
|
123
123
|
{
|
|
@@ -135,7 +135,7 @@ describe("cadet connection mismatch handling", () => {
|
|
|
135
135
|
expect(provider).not.toBeNull();
|
|
136
136
|
expect(provider?.routeAttribution).toEqual({
|
|
137
137
|
connectionName: "openrouter-personal",
|
|
138
|
-
|
|
138
|
+
isCloudRoute: false,
|
|
139
139
|
});
|
|
140
140
|
expect(resolveCalls).toHaveLength(1);
|
|
141
141
|
expect(resolveCalls[0].connection.name).toBe("openrouter-personal");
|
|
@@ -145,8 +145,8 @@ describe("cadet connection mismatch handling", () => {
|
|
|
145
145
|
|
|
146
146
|
/**
|
|
147
147
|
* Boot seeding leaves a user-owned row claiming the `cadet` name in place, so
|
|
148
|
-
* an install can have no canonical row at all. A
|
|
149
|
-
* on a
|
|
148
|
+
* an install can have no canonical row at all. A cloud profile only resolves
|
|
149
|
+
* on a cloud install, so its route is platform auth, never the credentials
|
|
150
150
|
* that row happens to carry, and never an error over the name collision.
|
|
151
151
|
*/
|
|
152
152
|
describe("user-owned connection claiming the cadet name", () => {
|
|
@@ -199,7 +199,7 @@ describe("user-owned connection claiming the cadet name", () => {
|
|
|
199
199
|
|
|
200
200
|
test("an unavailable platform is a soft miss, not a fall-through", async () => {
|
|
201
201
|
fakeConnections.set("cadet", userOwnedOpenai);
|
|
202
|
-
resolveResult = null; // not signed in to the
|
|
202
|
+
resolveResult = null; // not signed in to the cloud
|
|
203
203
|
const provider = await tryResolveProviderForConnectionName(
|
|
204
204
|
"cadet",
|
|
205
205
|
config,
|
|
@@ -213,8 +213,8 @@ describe("user-owned connection claiming the cadet name", () => {
|
|
|
213
213
|
|
|
214
214
|
test("a concrete provider over the canonical name is still platform-billed", async () => {
|
|
215
215
|
// The shape `resolveCallSiteConfig` produces when a call-site tweak pins a
|
|
216
|
-
// concrete upstream over a
|
|
217
|
-
//
|
|
216
|
+
// concrete upstream over a cloud profile: provider is the upstream, the
|
|
217
|
+
// cloud connection survives. The legacy config of the same shape (a BYOK
|
|
218
218
|
// profile pointing at a row named `cadet`) resolves the same way.
|
|
219
219
|
fakeConnections.set("cadet", userOwnedOpenai);
|
|
220
220
|
const provider = await tryResolveProviderForConnectionName(
|
|
@@ -26,7 +26,7 @@ import type { Auth } from "../inference/auth.js";
|
|
|
26
26
|
// ---------------------------------------------------------------------------
|
|
27
27
|
|
|
28
28
|
const apiKeyAuth: Auth = { type: "api_key", credential: "credential/x" };
|
|
29
|
-
const
|
|
29
|
+
const cloudAuth: Auth = { type: "platform" };
|
|
30
30
|
const oauthAuth: Auth = {
|
|
31
31
|
type: "oauth_subscription",
|
|
32
32
|
credential: "credential/x",
|
|
@@ -40,7 +40,7 @@ describe("isConnectionCompatibleWithModel", () => {
|
|
|
40
40
|
});
|
|
41
41
|
|
|
42
42
|
test("platform connection is compatible with any model", () => {
|
|
43
|
-
const conn = { auth:
|
|
43
|
+
const conn = { auth: cloudAuth };
|
|
44
44
|
expect(isConnectionCompatibleWithModel(conn, "gpt-5.4-nano")).toBe(true);
|
|
45
45
|
});
|
|
46
46
|
|