@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
|
@@ -7,7 +7,7 @@ import type {
|
|
|
7
7
|
ConversationErrorCode,
|
|
8
8
|
ConversationErrorEvent,
|
|
9
9
|
} from "../api/events/conversation-error.js";
|
|
10
|
-
import {
|
|
10
|
+
import { getIsCloud } from "../config/env-registry.js";
|
|
11
11
|
import {
|
|
12
12
|
isImageDimensionsTooLargeError,
|
|
13
13
|
isImageMediaTypeMismatchError,
|
|
@@ -54,7 +54,7 @@ export interface ClassifiedConversationError {
|
|
|
54
54
|
* Name of the resolved profile (`llm.activeProfile` / per-call override)
|
|
55
55
|
* in play when the error occurred. Forwarded to the wire message so
|
|
56
56
|
* banners can name the profile when the connection identifier is
|
|
57
|
-
* generic (e.g. the canonical
|
|
57
|
+
* generic (e.g. the canonical cloud connection). Optional for the
|
|
58
58
|
* same reason as `connectionName`.
|
|
59
59
|
*/
|
|
60
60
|
profileName?: string;
|
|
@@ -71,11 +71,11 @@ export interface ClassifiedConversationError {
|
|
|
71
71
|
export interface ConversationErrorAttribution {
|
|
72
72
|
connectionName?: string;
|
|
73
73
|
profileName?: string;
|
|
74
|
-
/** Whether the resolved turn route uses Cadet
|
|
75
|
-
|
|
74
|
+
/** Whether the resolved turn route uses Cadet Cloud inference. */
|
|
75
|
+
isCloudRoute?: boolean;
|
|
76
76
|
/**
|
|
77
77
|
* Which credential the failed request presented. Splits the non-managed side
|
|
78
|
-
* of `
|
|
78
|
+
* of `isCloudRoute` into personal keys, subscription logins, and keyless
|
|
79
79
|
* endpoints so rejection copy names the right thing to fix.
|
|
80
80
|
*/
|
|
81
81
|
credentialSource?: ProviderCredentialSource;
|
|
@@ -198,10 +198,10 @@ export interface ErrorContext {
|
|
|
198
198
|
*/
|
|
199
199
|
profileName?: string;
|
|
200
200
|
/**
|
|
201
|
-
* Whether the resolved turn route uses Cadet
|
|
201
|
+
* Whether the resolved turn route uses Cadet Cloud inference. Turn routing
|
|
202
202
|
* takes precedence over the provider registry's boot-time default.
|
|
203
203
|
*/
|
|
204
|
-
|
|
204
|
+
isCloudRoute?: boolean;
|
|
205
205
|
}
|
|
206
206
|
|
|
207
207
|
/**
|
|
@@ -282,11 +282,11 @@ export function classifyConversationError(
|
|
|
282
282
|
error instanceof ProviderError ? error.routeAttribution : undefined;
|
|
283
283
|
const connectionName = providerRoute?.connectionName ?? ctx.connectionName;
|
|
284
284
|
const profileName = providerRoute?.profileName ?? ctx.profileName;
|
|
285
|
-
const
|
|
285
|
+
const isCloudRoute = providerRoute?.isCloudRoute ?? ctx.isCloudRoute;
|
|
286
286
|
const attribution: ConversationErrorAttribution = {
|
|
287
287
|
...(connectionName ? { connectionName } : {}),
|
|
288
288
|
...(profileName ? { profileName } : {}),
|
|
289
|
-
...(
|
|
289
|
+
...(isCloudRoute !== undefined ? { isCloudRoute } : {}),
|
|
290
290
|
...(providerRoute?.credentialSource
|
|
291
291
|
? { credentialSource: providerRoute.credentialSource }
|
|
292
292
|
: {}),
|
|
@@ -360,7 +360,7 @@ function connectionResolutionUserMessage(
|
|
|
360
360
|
case "missing_connection":
|
|
361
361
|
return `No provider connection is configured${usedBy}. Ask me to set one up right here, or add an API key in ${fixPath}.`;
|
|
362
362
|
case "unroutable_managed_model":
|
|
363
|
-
return `The model "${error.model ?? "<unset>"}"${usedBy} isn't served by the Cadet
|
|
363
|
+
return `The model "${error.model ?? "<unset>"}"${usedBy} isn't served by the Cadet Cloud route. Pick a model from the Cadet catalog, or choose a concrete provider in ${fixPath}.`;
|
|
364
364
|
case "adapter_unavailable":
|
|
365
365
|
return `${connection}${usedBy} could not serve model "${error.model ?? "<unset>"}". This model is only available on the Cadet GPU route and was not sent through another provider.`;
|
|
366
366
|
case "missing_credential":
|
|
@@ -369,10 +369,10 @@ function connectionResolutionUserMessage(
|
|
|
369
369
|
// doesn't.
|
|
370
370
|
return `${connection}${usedBy} has no stored credential. Add an API key or reconnect it in ${fixPath}.`;
|
|
371
371
|
case "platform_unauthenticated":
|
|
372
|
-
// A
|
|
372
|
+
// A cloud assistant cannot log in or switch providers, and
|
|
373
373
|
// this classifier only sees the reason code, so one honest wording covers
|
|
374
374
|
// both the transient and the re-provision cases.
|
|
375
|
-
if (
|
|
375
|
+
if (getIsCloud()) {
|
|
376
376
|
return `${connection}${usedBy} is unavailable. If this persists, the cloud credential may need to be re-provisioned on Cadet Cloud.`;
|
|
377
377
|
}
|
|
378
378
|
return `${connection}${usedBy} requires a Cadet Cloud login. Log in, or pick a different provider in ${fixPath}.`;
|
|
@@ -396,15 +396,15 @@ function classifyCore(
|
|
|
396
396
|
message: string,
|
|
397
397
|
attribution: ConversationErrorAttribution = {},
|
|
398
398
|
): Omit<ClassifiedConversationError, "debugDetails"> {
|
|
399
|
-
const
|
|
399
|
+
const isCloudRoute =
|
|
400
400
|
error instanceof ProviderError &&
|
|
401
|
-
(attribution.
|
|
402
|
-
getProviderRoutingSource(error.provider) === "
|
|
401
|
+
(attribution.isCloudRoute ??
|
|
402
|
+
getProviderRoutingSource(error.provider) === "cloud-proxy");
|
|
403
403
|
// Which credential the request actually presented. Only rejection copy needs
|
|
404
|
-
// this finer axis; every other branch keys off `
|
|
405
|
-
// predate per-request stamping collapse to the
|
|
404
|
+
// this finer axis; every other branch keys off `isCloudRoute`. Routes that
|
|
405
|
+
// predate per-request stamping collapse to the cloud/personal split.
|
|
406
406
|
const credentialSource: ProviderCredentialSource =
|
|
407
|
-
attribution.credentialSource ?? (
|
|
407
|
+
attribution.credentialSource ?? (isCloudRoute ? "cadet-cloud" : "byok");
|
|
408
408
|
|
|
409
409
|
// Prefer the semantic reason stamped by the provider layer, regardless of
|
|
410
410
|
// HTTP status — statusless errors (e.g. SDK streaming failures) still carry a
|
|
@@ -412,7 +412,7 @@ function classifyCore(
|
|
|
412
412
|
// reason-less error) fall through to the status switch + regex battery below.
|
|
413
413
|
if (error instanceof ProviderError && error.reason) {
|
|
414
414
|
const c = reasonToClassification(error.reason, {
|
|
415
|
-
|
|
415
|
+
isCloudRoute,
|
|
416
416
|
credentialSource,
|
|
417
417
|
attribution,
|
|
418
418
|
message,
|
|
@@ -446,13 +446,13 @@ function classifyCore(
|
|
|
446
446
|
);
|
|
447
447
|
}
|
|
448
448
|
if (error.statusCode === 402) {
|
|
449
|
-
if (
|
|
449
|
+
if (isCloudRoute) {
|
|
450
450
|
return managedBalanceClassification();
|
|
451
451
|
}
|
|
452
452
|
return providerBillingClassification();
|
|
453
453
|
}
|
|
454
454
|
if (error.statusCode === 429) {
|
|
455
|
-
if (
|
|
455
|
+
if (isCloudUsageLimitError(message, isCloudRoute)) {
|
|
456
456
|
return managedUsageLimitClassification();
|
|
457
457
|
}
|
|
458
458
|
return rateLimitClassification();
|
|
@@ -592,7 +592,7 @@ function classifyCore(
|
|
|
592
592
|
}
|
|
593
593
|
|
|
594
594
|
// Regex fallback for non-ProviderError or ProviderError without statusCode
|
|
595
|
-
return classifyByMessage(message,
|
|
595
|
+
return classifyByMessage(message, isCloudRoute);
|
|
596
596
|
}
|
|
597
597
|
|
|
598
598
|
/**
|
|
@@ -617,21 +617,21 @@ function extractProviderDetail(message: string): string | undefined {
|
|
|
617
617
|
|
|
618
618
|
/**
|
|
619
619
|
* Map a provider-stamped {@link ProviderErrorReason} to a classification,
|
|
620
|
-
* applying the
|
|
620
|
+
* applying the cloud-proxy-vs-user-key routing overlay inline. Returns `null`
|
|
621
621
|
* for reasons that should defer to the legacy status/regex fallback
|
|
622
622
|
* (`bad_request`, `unknown`).
|
|
623
623
|
*/
|
|
624
624
|
function reasonToClassification(
|
|
625
625
|
reason: ProviderErrorReason,
|
|
626
626
|
args: {
|
|
627
|
-
|
|
627
|
+
isCloudRoute: boolean;
|
|
628
628
|
credentialSource: ProviderCredentialSource;
|
|
629
629
|
attribution?: ConversationErrorAttribution;
|
|
630
630
|
message: string;
|
|
631
631
|
providerName: string;
|
|
632
632
|
},
|
|
633
633
|
): Omit<ClassifiedConversationError, "debugDetails"> | null {
|
|
634
|
-
const managed = args.
|
|
634
|
+
const managed = args.isCloudRoute;
|
|
635
635
|
switch (reason) {
|
|
636
636
|
case "invalid_credentials":
|
|
637
637
|
return rejectedCredentialClassification(
|
|
@@ -653,13 +653,13 @@ function reasonToClassification(
|
|
|
653
653
|
? managedBalanceClassification()
|
|
654
654
|
: providerBillingClassification();
|
|
655
655
|
case "daily_limit_reached":
|
|
656
|
-
// The reason is stamped only from the
|
|
656
|
+
// The reason is stamped only from the cloud proxy's
|
|
657
657
|
// `"code":"daily_limit_reached"` body, so it is authoritative on its
|
|
658
|
-
// own — the global routing map can lag per-connection
|
|
658
|
+
// own — the global routing map can lag per-connection cloud-auth
|
|
659
659
|
// routes and must not downgrade this to the generic billing surface.
|
|
660
660
|
return dailyLimitClassification();
|
|
661
661
|
case "free_tier_daily_limit_reached":
|
|
662
|
-
// Same provenance as `daily_limit_reached`: only the
|
|
662
|
+
// Same provenance as `daily_limit_reached`: only the cloud proxy's
|
|
663
663
|
// `"code":"free_tier_daily_limit_reached"` body stamps it.
|
|
664
664
|
return freeTierDailyLimitClassification();
|
|
665
665
|
case "overloaded":
|
|
@@ -762,12 +762,12 @@ function isStreamingError(message: string): boolean {
|
|
|
762
762
|
return STREAMING_ERROR_PATTERNS.some((p) => p.test(message));
|
|
763
763
|
}
|
|
764
764
|
|
|
765
|
-
function
|
|
765
|
+
function isCloudUsageLimitError(
|
|
766
766
|
message: string,
|
|
767
|
-
|
|
767
|
+
isCloudRoute: boolean,
|
|
768
768
|
): boolean {
|
|
769
769
|
return (
|
|
770
|
-
|
|
770
|
+
isCloudRoute || MANAGED_USAGE_LIMIT_PATTERNS.some((p) => p.test(message))
|
|
771
771
|
);
|
|
772
772
|
}
|
|
773
773
|
|
|
@@ -858,7 +858,7 @@ function managedUsageLimitClassification(): Omit<
|
|
|
858
858
|
return {
|
|
859
859
|
code: "MANAGED_USAGE_LIMIT",
|
|
860
860
|
userMessage:
|
|
861
|
-
"Cadet
|
|
861
|
+
"Cadet Cloud inference is rate limited. This is a Cadet-side usage limit, not an AI provider outage.",
|
|
862
862
|
retryable: true,
|
|
863
863
|
errorCategory: "managed_usage_limit",
|
|
864
864
|
};
|
|
@@ -866,7 +866,7 @@ function managedUsageLimitClassification(): Omit<
|
|
|
866
866
|
|
|
867
867
|
/**
|
|
868
868
|
* Deliberately instruction-free. The assistant API key is provisioned and
|
|
869
|
-
* pushed by the
|
|
869
|
+
* pushed by the cloud — the assistant only ever reads it — so there is no
|
|
870
870
|
* Settings affordance to re-provision it and no user action that would help.
|
|
871
871
|
* The copy's job is to rule out the user's own provider key as the cause;
|
|
872
872
|
* clients that can offer a real next step attach one (web renders Doctor).
|
|
@@ -1019,7 +1019,7 @@ function rejectedCredentialClassification(
|
|
|
1019
1019
|
attribution?: ConversationErrorAttribution,
|
|
1020
1020
|
): Omit<ClassifiedConversationError, "debugDetails"> {
|
|
1021
1021
|
switch (credentialSource) {
|
|
1022
|
-
case "cadet-
|
|
1022
|
+
case "cadet-cloud":
|
|
1023
1023
|
return managedKeyInvalidClassification();
|
|
1024
1024
|
case "oauth-subscription":
|
|
1025
1025
|
return subscriptionLoginRejectedClassification(providerName, attribution);
|
|
@@ -1120,7 +1120,7 @@ function providerNotConfiguredClassification(
|
|
|
1120
1120
|
*/
|
|
1121
1121
|
function classifyByMessage(
|
|
1122
1122
|
message: string,
|
|
1123
|
-
|
|
1123
|
+
isCloudRoute: boolean,
|
|
1124
1124
|
): Omit<ClassifiedConversationError, "debugDetails"> {
|
|
1125
1125
|
// Empty-request-messages is always an internal construction failure — check
|
|
1126
1126
|
// it before the provider/network patterns so a ProviderError that carries the
|
|
@@ -1137,7 +1137,7 @@ function classifyByMessage(
|
|
|
1137
1137
|
// Check rate limit first (before network, since 429 could match both)
|
|
1138
1138
|
for (const pattern of RATE_LIMIT_PATTERNS) {
|
|
1139
1139
|
if (pattern.test(message)) {
|
|
1140
|
-
if (
|
|
1140
|
+
if (isCloudUsageLimitError(message, isCloudRoute)) {
|
|
1141
1141
|
return managedUsageLimitClassification();
|
|
1142
1142
|
}
|
|
1143
1143
|
return rateLimitClassification();
|
|
@@ -23,8 +23,8 @@ import type { Message, ToolDefinition } from "../providers/types.js";
|
|
|
23
23
|
import type { ActiveSkillEntry } from "../skills/active-skill-tools.js";
|
|
24
24
|
import { deriveActiveSkills } from "../skills/active-skill-tools.js";
|
|
25
25
|
import { getCachedCatalogSync } from "../skills/catalog-cache.js";
|
|
26
|
+
import { isSkillCompatibleWithCloud } from "../skills/cloud-compatibility.js";
|
|
26
27
|
import { readInstallMeta, touchSkillLastUsed } from "../skills/install-meta.js";
|
|
27
|
-
import { isSkillCompatibleWithPlatform } from "../skills/platform-compatibility.js";
|
|
28
28
|
import { parseToolManifestFile } from "../skills/tool-manifest.js";
|
|
29
29
|
import { computeSkillVersionHash } from "../skills/version-hash.js";
|
|
30
30
|
import { recordSkillLoadedEvent } from "../telemetry/skill-loaded-events-store.js";
|
|
@@ -218,7 +218,7 @@ function recordSkillLoadedTelemetry(
|
|
|
218
218
|
* track. Only managed skills carry install metadata; bundled, workspace, and
|
|
219
219
|
* plugin skills are skipped. Best-effort: the underlying write never throws.
|
|
220
220
|
*/
|
|
221
|
-
function
|
|
221
|
+
function stampCloudSkillUsage(skill: SkillSummary): void {
|
|
222
222
|
if (skill.source !== "managed") {
|
|
223
223
|
return;
|
|
224
224
|
}
|
|
@@ -228,7 +228,7 @@ function stampManagedSkillUsage(skill: SkillSummary): void {
|
|
|
228
228
|
} catch (err) {
|
|
229
229
|
log.warn(
|
|
230
230
|
{ err, skillId: skill.id },
|
|
231
|
-
"Failed to stamp
|
|
231
|
+
"Failed to stamp cloud-skill lastUsedAt (non-fatal)",
|
|
232
232
|
);
|
|
233
233
|
}
|
|
234
234
|
}
|
|
@@ -365,7 +365,7 @@ export function projectSkillTools(
|
|
|
365
365
|
const skill = catalogById.get(id);
|
|
366
366
|
const flagKey = skill ? skillFlagKey(skill) : undefined;
|
|
367
367
|
if (
|
|
368
|
-
(!skill ||
|
|
368
|
+
(!skill || isSkillCompatibleWithCloud(skill)) &&
|
|
369
369
|
(!flagKey || isAssistantFeatureFlagEnabled(flagKey, config))
|
|
370
370
|
) {
|
|
371
371
|
activeIds.add(id);
|
|
@@ -440,7 +440,7 @@ export function projectSkillTools(
|
|
|
440
440
|
successfulEntries.set(skillId, NO_TOOLS_VERSION);
|
|
441
441
|
if (prevHash === undefined) {
|
|
442
442
|
recordSkillLoadedTelemetry(skill, options?.telemetry);
|
|
443
|
-
|
|
443
|
+
stampCloudSkillUsage(skill);
|
|
444
444
|
}
|
|
445
445
|
continue;
|
|
446
446
|
}
|
|
@@ -485,7 +485,7 @@ export function projectSkillTools(
|
|
|
485
485
|
// activation gaining a TOOLS.json re-registers, which — like a
|
|
486
486
|
// version-hash change — counts as a new load.
|
|
487
487
|
recordSkillLoadedTelemetry(skill, options?.telemetry);
|
|
488
|
-
|
|
488
|
+
stampCloudSkillUsage(skill);
|
|
489
489
|
} else if (prevHash !== currentHash) {
|
|
490
490
|
// Hash changed — unregister stale tools, then re-register with new definitions
|
|
491
491
|
log.info(
|
|
@@ -506,7 +506,7 @@ export function projectSkillTools(
|
|
|
506
506
|
}
|
|
507
507
|
// A version change that re-registers counts as a new skill load.
|
|
508
508
|
recordSkillLoadedTelemetry(skill, options?.telemetry);
|
|
509
|
-
|
|
509
|
+
stampCloudSkillUsage(skill);
|
|
510
510
|
} else {
|
|
511
511
|
// Hash unchanged — filter to only tools that are actually registered
|
|
512
512
|
// for this skill. Some tools may have been skipped during initial
|
|
@@ -3232,7 +3232,7 @@ export async function surfaceProxyResolver(
|
|
|
3232
3232
|
if (!canUseVirtualDesktop(desktopContext)) {
|
|
3233
3233
|
return {
|
|
3234
3234
|
content:
|
|
3235
|
-
"The assistant desktop requires an identified guardian and an enabled
|
|
3235
|
+
"The assistant desktop requires an identified guardian and an enabled cloud-hosted assistant.",
|
|
3236
3236
|
isError: true,
|
|
3237
3237
|
};
|
|
3238
3238
|
}
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
type HostProxyCapability,
|
|
13
13
|
supportsHostProxy,
|
|
14
14
|
} from "../channels/types.js";
|
|
15
|
-
import {
|
|
15
|
+
import { getIsCloud } from "../config/env-registry.js";
|
|
16
16
|
import { getConfig } from "../config/loader.js";
|
|
17
17
|
import { isMemoryEnabled } from "../config/memory-v3-gate.js";
|
|
18
18
|
import {
|
|
@@ -463,7 +463,7 @@ export function createToolExecutor(
|
|
|
463
463
|
// offered on a gated cleanup turn is not refused at execution.
|
|
464
464
|
sendUserMessageActive: resolveSendUserMessageActive(ctx),
|
|
465
465
|
toolUseId,
|
|
466
|
-
|
|
466
|
+
isCloudHosted: getIsCloud(),
|
|
467
467
|
...resolveTurnClientOs(ctx),
|
|
468
468
|
overrideProfile: ctx.currentTurnOverrideProfile,
|
|
469
469
|
cronRunId: ctx.currentTurnCronRunId,
|
|
@@ -342,7 +342,7 @@ export async function runDeferredTurnTail(params: {
|
|
|
342
342
|
// check necessarily runs with the conversation already free. A follow-up
|
|
343
343
|
// send that beats it there advances the cursor and suppresses the push,
|
|
344
344
|
// which is the right answer: a user typing the next message is looking at
|
|
345
|
-
// the reply. Not awaited: the pipeline awaits the
|
|
345
|
+
// the reply. Not awaited: the pipeline awaits the cloud adapter's HTTP
|
|
346
346
|
// dispatch, which retries with backoff, and nothing below here depends on
|
|
347
347
|
// the emit. The producer never rejects.
|
|
348
348
|
if (turnCompleted && state.lastAssistantMessageId) {
|
|
@@ -17,7 +17,7 @@ export interface WorkspaceConversationContext {
|
|
|
17
17
|
/**
|
|
18
18
|
* Client-reported host home directory, populated from host-proxy
|
|
19
19
|
* transport metadata (see `supportsHostProxy` / `HostProxyInterfaceId`).
|
|
20
|
-
* Used to render the `<workspace>` block correctly for
|
|
20
|
+
* Used to render the `<workspace>` block correctly for cloud-managed
|
|
21
21
|
* daemons where `os.homedir()` would return the container's home instead
|
|
22
22
|
* of the user's actual client-side home.
|
|
23
23
|
*/
|
|
@@ -877,7 +877,7 @@ export class Conversation {
|
|
|
877
877
|
* `NSHomeDirectory()`). Populated from `HostProxyTransportMetadata` when
|
|
878
878
|
* a message arrives from an interface that supports host-proxy tools
|
|
879
879
|
* (see `supportsHostProxy`). Consumed by the `<workspace>` block renderer
|
|
880
|
-
* so
|
|
880
|
+
* so cloud-managed (containerized) daemons show the user's actual
|
|
881
881
|
* client-side home dir instead of the container's `os.homedir()`.
|
|
882
882
|
* @internal
|
|
883
883
|
*/
|
|
@@ -86,55 +86,52 @@ export interface TranscriptScrubResult {
|
|
|
86
86
|
* Never throws — partial failures are logged (counts only, never content)
|
|
87
87
|
* and reflected in the best-effort result.
|
|
88
88
|
*/
|
|
89
|
+
export interface TranscriptScrubContext {
|
|
90
|
+
service?: string;
|
|
91
|
+
field?: string;
|
|
92
|
+
provider?: string;
|
|
93
|
+
}
|
|
94
|
+
|
|
89
95
|
export async function scrubStoredCredentialFromTranscripts(
|
|
90
96
|
value: string,
|
|
97
|
+
context: TranscriptScrubContext = {},
|
|
91
98
|
): Promise<TranscriptScrubResult> {
|
|
92
99
|
const result: TranscriptScrubResult = {
|
|
93
100
|
dbMessagesScrubbed: 0,
|
|
94
101
|
residentMessagesScrubbed: 0,
|
|
95
102
|
};
|
|
96
|
-
if (value.trim().length < MIN_SCRUB_VALUE_LENGTH) {
|
|
97
|
-
return result;
|
|
98
|
-
}
|
|
99
|
-
const targets = buildSearchTargets(value);
|
|
100
103
|
try {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
104
|
+
if (value.trim().length < MIN_SCRUB_VALUE_LENGTH) {
|
|
105
|
+
return result;
|
|
106
|
+
}
|
|
107
|
+
const targets = buildSearchTargets(value);
|
|
108
|
+
try {
|
|
109
|
+
result.dbMessagesScrubbed = sweepDbMessages(targets);
|
|
110
|
+
} catch (err) {
|
|
111
|
+
log.warn(
|
|
112
|
+
{ err, valueLength: value.length },
|
|
113
|
+
"Credential transcript DB sweep failed; continuing with in-memory sweep",
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
try {
|
|
117
|
+
result.residentMessagesScrubbed = sweepResidentConversations(targets);
|
|
118
|
+
} catch (err) {
|
|
119
|
+
log.warn(
|
|
120
|
+
{ err, valueLength: value.length },
|
|
121
|
+
"Credential transcript in-memory sweep failed",
|
|
122
|
+
);
|
|
123
|
+
}
|
|
110
124
|
} catch (err) {
|
|
111
125
|
log.warn(
|
|
112
126
|
{ err, valueLength: value.length },
|
|
113
|
-
"Credential transcript
|
|
127
|
+
"Credential transcript scrub failed",
|
|
114
128
|
);
|
|
115
129
|
}
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* The Cadet Cloud identity ids and base URL are stored through the
|
|
121
|
-
* credential routes but are not secrets — they are UUIDs/URLs that
|
|
122
|
-
* legitimately appear in conversation text, so scrubbing them would redact
|
|
123
|
-
* benign transcript content. Both credential write paths
|
|
124
|
-
* (`credentials_set` and the `/v1/secrets` credential branch) consult this
|
|
125
|
-
* one exemption so they cannot drift.
|
|
126
|
-
*/
|
|
127
|
-
export function isNonSecretPlatformField(
|
|
128
|
-
service: string,
|
|
129
|
-
field: string,
|
|
130
|
-
): boolean {
|
|
131
|
-
return (
|
|
132
|
-
service === "cadet" &&
|
|
133
|
-
(field === "platform_assistant_id" ||
|
|
134
|
-
field === "platform_organization_id" ||
|
|
135
|
-
field === "platform_user_id" ||
|
|
136
|
-
field === "platform_base_url")
|
|
130
|
+
log.info(
|
|
131
|
+
{ ...context, ...result },
|
|
132
|
+
"Credential stored; scrubbed value from recent transcripts",
|
|
137
133
|
);
|
|
134
|
+
return result;
|
|
138
135
|
}
|
|
139
136
|
|
|
140
137
|
/**
|
|
@@ -78,7 +78,7 @@ export const DB_MIGRATION_FAILED_STATE_EXEMPT_OPERATIONS: ReadonlySet<string> =
|
|
|
78
78
|
"migrations/import",
|
|
79
79
|
"migrations_import_post",
|
|
80
80
|
// Restore has three transports; all must stay repair-capable. The
|
|
81
|
-
// preflights are read-only analysis; the GCS import is the
|
|
81
|
+
// preflights are read-only analysis; the GCS import is the cloud
|
|
82
82
|
// platform's restore path and is job-based, so its job-status GET (a
|
|
83
83
|
// parameterized route, matched by prefix in isDbMigrationGateBypassed)
|
|
84
84
|
// must answer too.
|
|
@@ -270,7 +270,7 @@ export function evaluateTick(
|
|
|
270
270
|
}
|
|
271
271
|
|
|
272
272
|
/**
|
|
273
|
-
* Check name emitted for event-loop block events. The
|
|
273
|
+
* Check name emitted for event-loop block events. The cloud's
|
|
274
274
|
* `watchdog__event_loop_blocking_daily` admin query filters `check_name` to
|
|
275
275
|
* this exact string, so it is the primary group-by dimension downstream —
|
|
276
276
|
* keep it stable.
|
|
@@ -322,7 +322,7 @@ async function reportBlock(
|
|
|
322
322
|
},
|
|
323
323
|
"event loop blocked",
|
|
324
324
|
);
|
|
325
|
-
// Persist a `watchdog` telemetry event so the
|
|
325
|
+
// Persist a `watchdog` telemetry event so the cloud can surface
|
|
326
326
|
// event-loop blocking in the infrastructure admin chart. `recordWatchdogEvent`
|
|
327
327
|
// no-ops when usage-data collection is disabled (the event is dropped to
|
|
328
328
|
// honor the opt-out), so the watchdog runs unconditionally without leaking
|
|
@@ -11,13 +11,13 @@ import {
|
|
|
11
11
|
|
|
12
12
|
import { updatePhoneNumberWebhooks } from "../../calls/twilio-rest.js";
|
|
13
13
|
import {
|
|
14
|
+
getCloudAssistantId,
|
|
15
|
+
getCloudBaseUrl,
|
|
14
16
|
getGatewayInternalBaseUrl,
|
|
15
|
-
getPlatformAssistantId,
|
|
16
|
-
getPlatformBaseUrl,
|
|
17
17
|
} from "../../config/env.js";
|
|
18
|
-
import {
|
|
18
|
+
import { getIsCloud } from "../../config/env-registry.js";
|
|
19
19
|
import { loadRawConfig } from "../../config/loader.js";
|
|
20
|
-
import { resolveCallbackUrl } from "../../inbound/
|
|
20
|
+
import { resolveCallbackUrl } from "../../inbound/cloud-callback-registration.js";
|
|
21
21
|
import {
|
|
22
22
|
getTwilioStatusCallbackUrl,
|
|
23
23
|
getTwilioVoiceWebhookUrl,
|
|
@@ -142,18 +142,18 @@ export function getIngressConfigResult(): {
|
|
|
142
142
|
managedCallbacks: boolean;
|
|
143
143
|
success: boolean;
|
|
144
144
|
} {
|
|
145
|
-
//
|
|
145
|
+
// Cloud assistants don't configure ingress.publicBaseUrl —
|
|
146
146
|
// they receive webhooks through platform callback routing. Surface the
|
|
147
147
|
// platform callback URL and flag managedCallbacks so consumers (including
|
|
148
148
|
// the assistant LLM) don't mistakenly try to set up ngrok or a tunnel.
|
|
149
|
-
if (
|
|
150
|
-
const
|
|
151
|
-
const assistantId =
|
|
149
|
+
if (getIsCloud()) {
|
|
150
|
+
const cloudBase = getCloudBaseUrl().replace(/\/+$/, "");
|
|
151
|
+
const assistantId = getCloudAssistantId();
|
|
152
152
|
if (assistantId) {
|
|
153
153
|
return {
|
|
154
154
|
enabled: true,
|
|
155
155
|
explicitlyDisabled: false,
|
|
156
|
-
publicBaseUrl: `${
|
|
156
|
+
publicBaseUrl: `${cloudBase}/gateway/callbacks/${assistantId}`,
|
|
157
157
|
localGatewayTarget: computeGatewayTarget(),
|
|
158
158
|
managedCallbacks: true,
|
|
159
159
|
success: true,
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
setNestedValue,
|
|
8
8
|
} from "../../config/loader.js";
|
|
9
9
|
import { hasWebhookRoutingConfigured } from "../../config/webhook-routing.js";
|
|
10
|
-
import { registerCallbackRoute } from "../../inbound/
|
|
10
|
+
import { registerCallbackRoute } from "../../inbound/cloud-callback-registration.js";
|
|
11
11
|
import {
|
|
12
12
|
ensureManualTokenConnection,
|
|
13
13
|
removeManualTokenConnection,
|
|
@@ -246,17 +246,17 @@ export async function setTelegramConfig(
|
|
|
246
246
|
hasWebhookSecret,
|
|
247
247
|
};
|
|
248
248
|
|
|
249
|
-
// Register the Telegram callback route so the
|
|
249
|
+
// Register the Telegram callback route so the cloud knows how to
|
|
250
250
|
// forward Telegram webhooks. This applies whenever webhooks are delivered
|
|
251
|
-
// via
|
|
251
|
+
// via cloud callbacks: cloud pods, and platform-connected local
|
|
252
252
|
// assistants with no public ingress. For both, platform callbacks are the
|
|
253
253
|
// only way to receive Telegram webhooks. `hasWebhookRoutingConfigured`
|
|
254
254
|
// encodes the resolution order (a configured ingress wins; an explicit
|
|
255
|
-
// `ingress.enabled: false` blocks the
|
|
255
|
+
// `ingress.enabled: false` blocks the cloud fallback) and is the same
|
|
256
256
|
// derivation the Telegram status checks read, so registration and reported
|
|
257
257
|
// status stay in agreement.
|
|
258
|
-
const {
|
|
259
|
-
if (
|
|
258
|
+
const { usesCloudCallbacks } = await hasWebhookRoutingConfigured(true);
|
|
259
|
+
if (usesCloudCallbacks) {
|
|
260
260
|
registerCallbackRoute("webhooks/telegram", "telegram").catch((err) => {
|
|
261
261
|
log.warn({ err }, "Failed to register Telegram platform callback route");
|
|
262
262
|
});
|