@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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Reports a live-voice session's phase to the
|
|
2
|
+
* Reports a live-voice session's phase to the cloud, which pushes it to the
|
|
3
3
|
* iOS Live Activity over APNs.
|
|
4
4
|
*
|
|
5
5
|
* ## Why the server reports a phase the client already knows
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* throw here would cost the conversation.
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
|
-
import {
|
|
30
|
+
import { CadetCloudClient } from "../cloud/client.js";
|
|
31
31
|
import { getLogger } from "../util/logger.js";
|
|
32
32
|
import type { LiveVoiceServerFramePayload } from "./protocol.js";
|
|
33
33
|
|
|
@@ -188,7 +188,7 @@ export class LiveActivityReporter {
|
|
|
188
188
|
* Retire the activity as the session ends.
|
|
189
189
|
*
|
|
190
190
|
* Latched, because a session can end more than one way — a clean hangup, a
|
|
191
|
-
* dropped socket, a process shutdown — and the
|
|
191
|
+
* dropped socket, a process shutdown — and the cloud deletes the
|
|
192
192
|
* registration on the first one. Sending a second would push at an activity
|
|
193
193
|
* that is already gone.
|
|
194
194
|
*/
|
|
@@ -234,7 +234,7 @@ export class LiveActivityReporter {
|
|
|
234
234
|
}
|
|
235
235
|
signal.addEventListener("abort", () => resolve(), { once: true });
|
|
236
236
|
});
|
|
237
|
-
// Race the whole operation, including
|
|
237
|
+
// Race the whole operation, including cloud-client and credential
|
|
238
238
|
// resolution. The same signal reaches `fetch`, so a timed-out operation
|
|
239
239
|
// that resolves credentials later cannot send its stale snapshot.
|
|
240
240
|
void Promise.race([
|
|
@@ -284,12 +284,12 @@ export class LiveActivityReporter {
|
|
|
284
284
|
signal: AbortSignal,
|
|
285
285
|
): Promise<void> {
|
|
286
286
|
try {
|
|
287
|
-
const client = await
|
|
288
|
-
if (!client?.
|
|
287
|
+
const client = await CadetCloudClient.create();
|
|
288
|
+
if (!client?.cloudAssistantId) {
|
|
289
289
|
return;
|
|
290
290
|
}
|
|
291
291
|
const path = `/v1/assistants/${encodeURIComponent(
|
|
292
|
-
client.
|
|
292
|
+
client.cloudAssistantId,
|
|
293
293
|
)}/live-activity/dispatch/`;
|
|
294
294
|
const response = await client.fetch(path, {
|
|
295
295
|
method: "POST",
|
|
@@ -21,8 +21,8 @@ import {
|
|
|
21
21
|
fishAudioReferenceIdConfigured,
|
|
22
22
|
ttsSecretResolves,
|
|
23
23
|
} from "../calls/telephony-tts-capability.js";
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
24
|
+
import { managedSpeechAvailable } from "../cloud/cloud-speech.js";
|
|
25
|
+
import { resolveEffectiveSpeechProviders } from "../config/cloud-speech-defaults.js";
|
|
26
26
|
import { getProviderEntry } from "../providers/speech-to-text/provider-catalog.js";
|
|
27
27
|
import {
|
|
28
28
|
resolveStreamingTranscriber,
|
|
@@ -144,7 +144,7 @@ async function resolveSttGap(
|
|
|
144
144
|
},
|
|
145
145
|
clause:
|
|
146
146
|
entry.credentialProvider === "cadet"
|
|
147
|
-
? `a Cadet Cloud connection for
|
|
147
|
+
? `a Cadet Cloud connection for cloud speech (run 'assistant cloud connect')`
|
|
148
148
|
: `an API key for the speech-to-text provider "${entry.id}"`,
|
|
149
149
|
};
|
|
150
150
|
}
|
|
@@ -197,7 +197,7 @@ async function resolveTtsGap(
|
|
|
197
197
|
};
|
|
198
198
|
}
|
|
199
199
|
|
|
200
|
-
//
|
|
200
|
+
// Cloud speech authenticates via the cloud connection — full
|
|
201
201
|
// availability (API key + assistant ID) is the credential, so the
|
|
202
202
|
// stored-secret loop below would pass half-connected states that
|
|
203
203
|
// synthesis rejects.
|
|
@@ -207,9 +207,9 @@ async function resolveTtsGap(
|
|
|
207
207
|
gap: {
|
|
208
208
|
kind: "tts",
|
|
209
209
|
providerId: entry.id,
|
|
210
|
-
reason: `TTS provider "${entry.id}" needs a Cadet Cloud connection for
|
|
210
|
+
reason: `TTS provider "${entry.id}" needs a Cadet Cloud connection for cloud speech`,
|
|
211
211
|
},
|
|
212
|
-
clause: `a Cadet Cloud connection for
|
|
212
|
+
clause: `a Cadet Cloud connection for cloud speech (run 'assistant cloud connect')`,
|
|
213
213
|
};
|
|
214
214
|
}
|
|
215
215
|
return null;
|
|
@@ -392,7 +392,7 @@ export interface LiveVoiceSessionOptions {
|
|
|
392
392
|
metricsClock?: VoiceMetricsClock;
|
|
393
393
|
/**
|
|
394
394
|
* Mirrors phase changes to the iOS Live Activity. Injectable so tests can
|
|
395
|
-
* assert what a session reports without reaching the
|
|
395
|
+
* assert what a session reports without reaching the cloud.
|
|
396
396
|
*/
|
|
397
397
|
liveActivityReporter?: LiveActivityReporter;
|
|
398
398
|
createTurnId?: () => string;
|
|
@@ -1223,7 +1223,7 @@ export class LiveVoiceSession implements LiveVoiceSessionContract {
|
|
|
1223
1223
|
// that can point at the screen. Cleared when the share ends.
|
|
1224
1224
|
private shareTargets: ShareTargetSnapshot | null = null;
|
|
1225
1225
|
/**
|
|
1226
|
-
* Mirrors phase changes to the iOS Live Activity through the
|
|
1226
|
+
* Mirrors phase changes to the iOS Live Activity through the cloud, for
|
|
1227
1227
|
* the case the client cannot cover: an app backgrounded long enough for iOS
|
|
1228
1228
|
* to suspend the web layer that would otherwise push them.
|
|
1229
1229
|
*/
|
|
@@ -8326,7 +8326,7 @@ async function defaultResolveStreamingTranscriber(
|
|
|
8326
8326
|
options: ResolveStreamingTranscriberOptions,
|
|
8327
8327
|
): Promise<StreamingTranscriber | null> {
|
|
8328
8328
|
const { resolveEffectiveSpeechProviders } =
|
|
8329
|
-
await import("../config/
|
|
8329
|
+
await import("../config/cloud-speech-defaults.js");
|
|
8330
8330
|
const { resolveStreamingTranscriber } =
|
|
8331
8331
|
await import("../providers/speech-to-text/resolve.js");
|
|
8332
8332
|
const { stt } = await resolveEffectiveSpeechProviders(undefined, {
|
|
@@ -221,7 +221,7 @@ async function resolveLiveVoiceStreamingTtsProvider(
|
|
|
221
221
|
): Promise<ResolvedStreamingTtsProvider> {
|
|
222
222
|
const config = configOverride ?? (await loadAssistantConfig());
|
|
223
223
|
const { resolveEffectiveSpeechProviders } =
|
|
224
|
-
await import("../config/
|
|
224
|
+
await import("../config/cloud-speech-defaults.js");
|
|
225
225
|
const { tts: effectiveProviderId } =
|
|
226
226
|
await resolveEffectiveSpeechProviders(config);
|
|
227
227
|
const { provider: providerId, providerConfig } = resolveTtsConfig(
|
|
@@ -24,7 +24,7 @@ const CLIENT_METADATA_URL = `${PUBLIC_BASE_URL}/oauth/client-metadata.json`;
|
|
|
24
24
|
let resolvedCallbackUrl = CALLBACK_URL;
|
|
25
25
|
let publicBaseUrl: string | undefined = PUBLIC_BASE_URL;
|
|
26
26
|
|
|
27
|
-
mock.module("../../inbound/
|
|
27
|
+
mock.module("../../inbound/cloud-callback-registration.js", () => ({
|
|
28
28
|
resolveCallbackUrl: async () => resolvedCallbackUrl,
|
|
29
29
|
}));
|
|
30
30
|
|
|
@@ -45,8 +45,8 @@ mock.module("../../daemon/identity-helpers.js", () => ({
|
|
|
45
45
|
getAssistantName: () => "Jarvis",
|
|
46
46
|
}));
|
|
47
47
|
|
|
48
|
-
import {
|
|
49
|
-
|
|
48
|
+
import { setCloudAssistantId } from "../../config/env.js";
|
|
49
|
+
setCloudAssistantId("019d6d4f-6dbd-779f-91d3-cb273b9429a5");
|
|
50
50
|
|
|
51
51
|
const { McpOAuthProvider } = await import("../mcp-oauth-provider.js");
|
|
52
52
|
|
|
@@ -247,7 +247,7 @@ describe("McpOAuthProvider client metadata", () => {
|
|
|
247
247
|
expect(provider.clientMetadataUrl).toBe(CLIENT_METADATA_URL);
|
|
248
248
|
});
|
|
249
249
|
|
|
250
|
-
test("preserves DCR fallback for a
|
|
250
|
+
test("preserves DCR fallback for a cloud-relayed callback", async () => {
|
|
251
251
|
const provider = newProvider();
|
|
252
252
|
|
|
253
253
|
await provider.startCallbackServer();
|
|
@@ -4,7 +4,7 @@ import { describe, expect, mock, test } from "bun:test";
|
|
|
4
4
|
// startGatewayCallback() dynamically imports these to resolve the public
|
|
5
5
|
// callback URL. Stub them so the gateway flow runs without platform infra.
|
|
6
6
|
|
|
7
|
-
mock.module("../../inbound/
|
|
7
|
+
mock.module("../../inbound/cloud-callback-registration.js", () => ({
|
|
8
8
|
resolveCallbackUrl: async () =>
|
|
9
9
|
"https://platform.example/v1/gateway/callbacks/abc/webhooks/oauth/callback/",
|
|
10
10
|
}));
|
|
@@ -29,7 +29,7 @@ import type {
|
|
|
29
29
|
} from "@modelcontextprotocol/sdk/shared/auth.js";
|
|
30
30
|
import { buildMcpOAuthClientMetadata } from "@mycadet/service-contracts/mcp-oauth";
|
|
31
31
|
|
|
32
|
-
import {
|
|
32
|
+
import { getCloudAssistantId } from "../config/env.js";
|
|
33
33
|
import { getAssistantName } from "../daemon/identity-helpers.js";
|
|
34
34
|
import {
|
|
35
35
|
deleteSecureKeyAsync,
|
|
@@ -143,7 +143,7 @@ export class McpOAuthProvider implements OAuthClientProvider {
|
|
|
143
143
|
*/
|
|
144
144
|
get clientMetadata(): OAuthClientMetadata {
|
|
145
145
|
const assistantName = getAssistantName();
|
|
146
|
-
const assistantId =
|
|
146
|
+
const assistantId = getCloudAssistantId().trim();
|
|
147
147
|
return buildMcpOAuthClientMetadata({
|
|
148
148
|
clientName: assistantName ?? "Cadet Assistant",
|
|
149
149
|
redirectUris: this._redirectUrl ? [this._redirectUrl] : [],
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { ApiError, GoogleGenAI } from "@google/genai";
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
|
+
type CloudProxyCredentials,
|
|
4
5
|
type GeneratedImage,
|
|
5
6
|
type ImageGenCredentials,
|
|
6
7
|
type ImageGenerationRequest,
|
|
7
8
|
type ImageGenerationResult,
|
|
8
9
|
isImageProviderBillingError,
|
|
9
|
-
type ManagedProxyCredentials,
|
|
10
10
|
MAX_VARIANTS,
|
|
11
11
|
} from "./types.js";
|
|
12
12
|
|
|
@@ -47,8 +47,8 @@ export function mapGeminiError(error: unknown): string {
|
|
|
47
47
|
return `Gemini API error (status ${status}). Please try again.`;
|
|
48
48
|
}
|
|
49
49
|
if (error instanceof Error) {
|
|
50
|
-
// The
|
|
51
|
-
// the upstream status (e.g. "
|
|
50
|
+
// The cloud proxy surfaces failures as plain Errors whose message embeds
|
|
51
|
+
// the upstream status (e.g. "Cloud proxy request failed (402): ...").
|
|
52
52
|
if (isImageProviderBillingError({ message: error.message })) {
|
|
53
53
|
return GEMINI_BILLING_MESSAGE;
|
|
54
54
|
}
|
|
@@ -57,17 +57,17 @@ export function mapGeminiError(error: unknown): string {
|
|
|
57
57
|
return "An unexpected error occurred during image generation.";
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
// ---
|
|
60
|
+
// --- Cloud proxy direct HTTP call ---
|
|
61
61
|
|
|
62
62
|
/**
|
|
63
|
-
* Call the
|
|
64
|
-
* The
|
|
63
|
+
* Call the cloud proxy directly via fetch, using the Gemini API URL format.
|
|
64
|
+
* The cloud proxy translates this to Vertex AI internally with ADC auth.
|
|
65
65
|
*
|
|
66
66
|
* Uses the Gemini API format:
|
|
67
67
|
* POST {baseUrl}/v1beta/models/{model}:generateContent
|
|
68
68
|
*/
|
|
69
69
|
async function generateImageViaProxy(
|
|
70
|
-
credentials:
|
|
70
|
+
credentials: CloudProxyCredentials,
|
|
71
71
|
model: string,
|
|
72
72
|
contents: unknown[],
|
|
73
73
|
config: Record<string, unknown>,
|
|
@@ -93,9 +93,7 @@ async function generateImageViaProxy(
|
|
|
93
93
|
|
|
94
94
|
if (!response.ok) {
|
|
95
95
|
const body = await response.text();
|
|
96
|
-
throw new Error(
|
|
97
|
-
`Managed proxy request failed (${response.status}): ${body}`,
|
|
98
|
-
);
|
|
96
|
+
throw new Error(`Cloud proxy request failed (${response.status}): ${body}`);
|
|
99
97
|
}
|
|
100
98
|
|
|
101
99
|
const data = (await response.json()) as {
|
|
@@ -161,11 +159,11 @@ export async function generateImage(
|
|
|
161
159
|
const config = { responseModalities: ["TEXT", "IMAGE"] as string[] };
|
|
162
160
|
const contents = [{ role: "user" as const, parts }];
|
|
163
161
|
|
|
164
|
-
// For the
|
|
162
|
+
// For the cloud proxy, bypass the @google/genai SDK and make direct HTTP
|
|
165
163
|
// calls. The SDK's generateContent doesn't support responseModalities for
|
|
166
164
|
// image generation. Direct fetch lets us use the Gemini API format with
|
|
167
|
-
// the
|
|
168
|
-
if (credentials.type === "
|
|
165
|
+
// the cloud proxy translating to Vertex internally.
|
|
166
|
+
if (credentials.type === "cloud-proxy") {
|
|
169
167
|
const makeSingleCall = () =>
|
|
170
168
|
generateImageViaProxy(
|
|
171
169
|
credentials,
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
* Shared credential resolver for image-generation call sites (image-studio
|
|
3
3
|
* tool, CLI `image-generation` command, app-icon generator).
|
|
4
4
|
*
|
|
5
|
-
* Each call site picks between the
|
|
5
|
+
* Each call site picks between the cloud-proxy path (routes through the
|
|
6
6
|
* platform) and the "your own" path (direct provider API key). This module
|
|
7
7
|
* resolves either path and returns a provider-aware error hint when
|
|
8
8
|
* credentials are unavailable.
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import { PLATFORM_PROVIDER_META } from "../providers/
|
|
12
|
-
import {
|
|
11
|
+
import { PLATFORM_PROVIDER_META } from "../providers/cloud-proxy/constants.js";
|
|
12
|
+
import { resolveCloudProxyContext } from "../providers/cloud-proxy/context.js";
|
|
13
13
|
import { getProviderKeyAsync } from "../security/secure-keys.js";
|
|
14
14
|
import type { ImageGenCredentials, ImageGenProvider } from "./types.js";
|
|
15
15
|
import { providerForImageModelPrefix, providerForModel } from "./types.js";
|
|
@@ -19,7 +19,7 @@ import { providerForImageModelPrefix, providerForModel } from "./types.js";
|
|
|
19
19
|
*
|
|
20
20
|
* `cadet` is unconditionally managed and carries no backend of its own: the
|
|
21
21
|
* backend derives from the model prefix (`gpt-*`/`dall-e-*` proxy OpenAI,
|
|
22
|
-
* anything else proxies Gemini), so one
|
|
22
|
+
* anything else proxies Gemini), so one cloud provider spans both runtime
|
|
23
23
|
* proxies. Managed routing never falls back to a stored BYOK key, and a BYOK
|
|
24
24
|
* provider never falls back to the proxy — billing follows the explicit
|
|
25
25
|
* provider choice. Other providers use the caller's key, with an explicit
|
|
@@ -52,7 +52,7 @@ export function resolveImageGenRouting(
|
|
|
52
52
|
/**
|
|
53
53
|
* Resolve credentials for an image-generation request.
|
|
54
54
|
*
|
|
55
|
-
* - `managed`: returns
|
|
55
|
+
* - `managed`: returns cloud-proxy credentials when the cloud URL and
|
|
56
56
|
* assistant API key are both configured, otherwise a hint telling the
|
|
57
57
|
* user to log in.
|
|
58
58
|
* - otherwise: returns direct credentials when the provider API key is
|
|
@@ -70,7 +70,7 @@ export async function resolveImageGenCredentials(opts: {
|
|
|
70
70
|
// baseUrl and assistantApiKey can't diverge if the credential is cleared
|
|
71
71
|
// between lookups.
|
|
72
72
|
const meta = PLATFORM_PROVIDER_META[provider];
|
|
73
|
-
const ctx = await
|
|
73
|
+
const ctx = await resolveCloudProxyContext();
|
|
74
74
|
if (
|
|
75
75
|
!meta?.managed ||
|
|
76
76
|
!meta.proxyPath ||
|
|
@@ -79,14 +79,14 @@ export async function resolveImageGenCredentials(opts: {
|
|
|
79
79
|
) {
|
|
80
80
|
return {
|
|
81
81
|
errorHint:
|
|
82
|
-
"
|
|
82
|
+
"Cloud proxy is not available. Please log in to Cadet or switch to Your Own mode.",
|
|
83
83
|
};
|
|
84
84
|
}
|
|
85
85
|
return {
|
|
86
86
|
credentials: {
|
|
87
|
-
type: "
|
|
87
|
+
type: "cloud-proxy",
|
|
88
88
|
assistantApiKey: ctx.assistantApiKey,
|
|
89
|
-
baseUrl: `${ctx.
|
|
89
|
+
baseUrl: `${ctx.cloudBaseUrl}${meta.proxyPath}`,
|
|
90
90
|
},
|
|
91
91
|
};
|
|
92
92
|
}
|
|
@@ -99,7 +99,7 @@ export async function generateImageOpenAI(
|
|
|
99
99
|
const variants = Math.max(1, Math.min(request.variants ?? 1, MAX_VARIANTS));
|
|
100
100
|
|
|
101
101
|
const client =
|
|
102
|
-
credentials.type === "
|
|
102
|
+
credentials.type === "cloud-proxy"
|
|
103
103
|
? new OpenAI({
|
|
104
104
|
apiKey: credentials.assistantApiKey,
|
|
105
105
|
baseURL: credentials.baseUrl,
|
package/src/media/types.ts
CHANGED
|
@@ -4,12 +4,12 @@ export interface DirectCredentials {
|
|
|
4
4
|
type: "direct";
|
|
5
5
|
apiKey: string;
|
|
6
6
|
}
|
|
7
|
-
export interface
|
|
8
|
-
type: "
|
|
7
|
+
export interface CloudProxyCredentials {
|
|
8
|
+
type: "cloud-proxy";
|
|
9
9
|
assistantApiKey: string;
|
|
10
10
|
baseUrl: string;
|
|
11
11
|
}
|
|
12
|
-
export type ImageGenCredentials = DirectCredentials |
|
|
12
|
+
export type ImageGenCredentials = DirectCredentials | CloudProxyCredentials;
|
|
13
13
|
|
|
14
14
|
export interface ImageGenerationRequest {
|
|
15
15
|
prompt: string;
|
|
@@ -105,7 +105,7 @@ export interface ReactionTarget {
|
|
|
105
105
|
* Tagged with its kind so a second way of naming a destination is additive
|
|
106
106
|
* rather than a reinterpretation of `chatId`. Reaching a person who has not
|
|
107
107
|
* been named as a chat is deliberately not a kind here: on Slack and Discord
|
|
108
|
-
* it costs a
|
|
108
|
+
* it costs a cloud call whose result must be resolved at send time rather
|
|
109
109
|
* than stored, and nothing asks for it yet.
|
|
110
110
|
*/
|
|
111
111
|
export type ProactiveTarget = {
|
|
@@ -55,7 +55,7 @@ export const discordTransport: ChannelTransport = {
|
|
|
55
55
|
/**
|
|
56
56
|
* A chat is a channel id, with `threadId` naming the thread, which is its
|
|
57
57
|
* own channel. Reaching a person who has not been named as a chat would
|
|
58
|
-
* mean opening their DM first, a
|
|
58
|
+
* mean opening their DM first, a cloud call this resolution does not
|
|
59
59
|
* make; the inbound `dm` param below is how an event-carried callback says
|
|
60
60
|
* its `chatId` is a recipient rather than a room.
|
|
61
61
|
*/
|
|
@@ -28,13 +28,13 @@ export const GMAIL_API_BASE_URL =
|
|
|
28
28
|
/**
|
|
29
29
|
* Minimum Google OAuth scope a connection must carry for Gmail read access.
|
|
30
30
|
*
|
|
31
|
-
* The
|
|
31
|
+
* The cloud `google` OAuth app bundles Gmail + Calendar + Drive, but a
|
|
32
32
|
* connection can be granted a narrow subset (e.g. the onboarding check-in flow
|
|
33
33
|
* requests Calendar-only). Resolving against Gmail read access turns a
|
|
34
34
|
* downstream 403 into an actionable "reconnect Google and grant Gmail" error
|
|
35
35
|
* at resolution time when the selected connection cannot read Gmail.
|
|
36
36
|
*
|
|
37
|
-
*
|
|
37
|
+
* Cloud connections never carry this scope: Cadet's app grants Gmail as
|
|
38
38
|
* `https://mail.google.com/`, which `scopeDifference` in `oauth/scope-utils.ts`
|
|
39
39
|
* accepts as covering it.
|
|
40
40
|
*/
|
|
@@ -526,7 +526,7 @@ async function fetchMessagesIndividually(
|
|
|
526
526
|
* Packs up to 100 sub-requests per HTTP call and runs up to BATCH_CONCURRENCY calls in parallel.
|
|
527
527
|
* Falls back to individual getMessage for any sub-requests that fail within a batch.
|
|
528
528
|
*
|
|
529
|
-
* For connections that do not support raw token access (e.g.
|
|
529
|
+
* For connections that do not support raw token access (e.g. cloud connections),
|
|
530
530
|
* falls back to fetching each message individually via connection.request().
|
|
531
531
|
*/
|
|
532
532
|
export async function batchGetMessages(
|
|
@@ -556,7 +556,7 @@ export async function batchGetMessages(
|
|
|
556
556
|
}
|
|
557
557
|
|
|
558
558
|
// Try batch API first; fall back to individual fetches if withToken is unavailable
|
|
559
|
-
// (e.g.
|
|
559
|
+
// (e.g. cloud connections where raw tokens cannot be exposed).
|
|
560
560
|
let useBatch = true;
|
|
561
561
|
try {
|
|
562
562
|
// Probe withToken availability with a no-op call
|
|
@@ -29,7 +29,7 @@ export const slackTransport: ChannelTransport = {
|
|
|
29
29
|
/**
|
|
30
30
|
* A chat is a channel or DM id, with `threadTs` naming the thread to post
|
|
31
31
|
* under. Reaching a person who has not been named as a chat would mean
|
|
32
|
-
* opening the DM first (`conversations.open`), a
|
|
32
|
+
* opening the DM first (`conversations.open`), a cloud call this
|
|
33
33
|
* resolution does not make.
|
|
34
34
|
*/
|
|
35
35
|
addressFor(target) {
|
|
@@ -150,7 +150,7 @@ export const telegramTransport: ChannelTransport = {
|
|
|
150
150
|
* A start that Telegram refuses (a chat that is not private, where drafts
|
|
151
151
|
* are not offered) reports not-ok, and the caller falls back to sending the
|
|
152
152
|
* finished reply. That is the whole of the per-conversation rule: it is
|
|
153
|
-
* answered here, where the
|
|
153
|
+
* answered here, where the cloud's constraint lives.
|
|
154
154
|
*/
|
|
155
155
|
async streamReply(ctx, chatId, op) {
|
|
156
156
|
const opts = threadOptions(ctx);
|
|
@@ -21,7 +21,7 @@ const MAX_ERRORS = 10;
|
|
|
21
21
|
* Cap on each error message's UTF-8 byte length. With MAX_ERRORS rows this
|
|
22
22
|
* bounds the whole error payload well under the 4096-byte watchdog `detail`
|
|
23
23
|
* limit (WATCHDOG_DETAIL_MAX_JSON_BYTES) — an oversized detail is silently
|
|
24
|
-
* dropped by the
|
|
24
|
+
* dropped by the cloud, which would selectively erase the most-corrupted
|
|
25
25
|
* databases from the prevalence metric. Bytes, not `String.length`: ten
|
|
26
26
|
* 160-character CJK messages would otherwise serialize to ~4.9 KB.
|
|
27
27
|
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Periodic database integrity sample, reported as a `db_integrity` watchdog
|
|
3
|
-
* event so the
|
|
3
|
+
* event so the cloud can read corruption prevalence across the fleet.
|
|
4
4
|
*
|
|
5
5
|
* The `PRAGMA quick_check` itself runs in a short-lived subprocess
|
|
6
6
|
* (`db-integrity-check.ts`) — bun:sqlite's page walk is synchronous, and a
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
import { existsSync, statSync, writeFileSync } from "node:fs";
|
|
19
19
|
import { join } from "node:path";
|
|
20
20
|
|
|
21
|
-
import { getRawShareAnalytics } from "../
|
|
21
|
+
import { getRawShareAnalytics } from "../cloud/consent-cache.js";
|
|
22
22
|
import { recordWatchdogEvent } from "../telemetry/watchdog-events-store.js";
|
|
23
23
|
import { getLogger } from "../util/logger.js";
|
|
24
24
|
import { getDbPath, getMonitoringDataDir } from "../util/platform.js";
|
|
@@ -19,7 +19,7 @@ import { getLogger } from "../util/logger.js";
|
|
|
19
19
|
|
|
20
20
|
const log = getLogger("mount-watch");
|
|
21
21
|
|
|
22
|
-
/** Assistant-container PVC bind targets in the
|
|
22
|
+
/** Assistant-container PVC bind targets in the cloud pod template. */
|
|
23
23
|
export const ASSISTANT_VOLUME_MOUNT_POINTS = ["/workspace", "/data"] as const;
|
|
24
24
|
|
|
25
25
|
const VIRTIOFS_TYPES = new Set(["virtiofs", "fuse.virtiofs"]);
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
15
15
|
import { dirname, join } from "node:path";
|
|
16
16
|
|
|
17
|
-
import { getRawShareAnalytics } from "../
|
|
17
|
+
import { getRawShareAnalytics } from "../cloud/consent-cache.js";
|
|
18
18
|
import { recordWatchdogEvent } from "../telemetry/watchdog-events-store.js";
|
|
19
19
|
import { getContainerMemoryEvents } from "../util/cgroup-memory.js";
|
|
20
20
|
import { getLogger } from "../util/logger.js";
|
package/src/monitoring/worker.ts
CHANGED
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
|
|
16
16
|
import { mkdirSync, writeFileSync } from "node:fs";
|
|
17
17
|
|
|
18
|
+
import { startConsentRefresh } from "../cloud/consent-cache.js";
|
|
19
|
+
import { rehydrateCloudCredentials } from "../config/cloud-rehydration.js";
|
|
18
20
|
import { getConfig } from "../config/loader.js";
|
|
19
|
-
import { rehydratePlatformCredentials } from "../config/platform-rehydration.js";
|
|
20
21
|
import { resetDb } from "../persistence/db-connection.js";
|
|
21
|
-
import { startConsentRefresh } from "../platform/consent-cache.js";
|
|
22
22
|
import { disableStreamSeqStamping } from "../runtime/assistant-stream-state.js";
|
|
23
23
|
import {
|
|
24
24
|
startConfigSnapshotReporter,
|
|
@@ -91,12 +91,12 @@ async function main(): Promise<void> {
|
|
|
91
91
|
"Resource monitor process started",
|
|
92
92
|
);
|
|
93
93
|
|
|
94
|
-
// Rehydrate the
|
|
94
|
+
// Rehydrate the cloud base URL and IDs from the credential store before
|
|
95
95
|
// the telemetry reporter starts. The daemon does this in
|
|
96
96
|
// initializeProvidersAndTools(); this standalone process must do it itself so
|
|
97
|
-
// the non-turn telemetry it flushes carries the
|
|
97
|
+
// the non-turn telemetry it flushes carries the cloud organization and
|
|
98
98
|
// user context instead of shipping with those fields empty.
|
|
99
|
-
await
|
|
99
|
+
await rehydrateCloudCredentials();
|
|
100
100
|
|
|
101
101
|
let sampler: ResourceSamplerHandle | null = null;
|
|
102
102
|
let fdMonitor: FileDescriptorMonitorHandle | null = null;
|
|
@@ -412,7 +412,7 @@ A guardian-sensitive notification (approval requests, access requests, channel a
|
|
|
412
412
|
|
|
413
413
|
### Platform (always connected)
|
|
414
414
|
|
|
415
|
-
The `
|
|
415
|
+
The `CloudPushAdapter` posts the notification to the cloud's `/v1/assistants/{id}/push/dispatch/` endpoint, which fans it out to the bound user's registered devices for native mobile push. Without cloud credentials the delivery is recorded as failed.
|
|
416
416
|
|
|
417
417
|
### External channels: Telegram, Slack, Discord
|
|
418
418
|
|
|
@@ -537,7 +537,7 @@ Where classification does not run, any other code-less reply falls through to th
|
|
|
537
537
|
| `conversation-seed-composer.ts` | Surface-aware conversation seed generation (richer than notification copy) |
|
|
538
538
|
| `destination-resolver.ts` | Resolves per-channel endpoints (Telegram and Slack chat ID, Discord user ID) |
|
|
539
539
|
| `adapters/macos.ts` | Cadet adapter -- broadcasts `notification_intent` via SSE with deep-link metadata |
|
|
540
|
-
| `adapters/platform.ts` | Platform adapter: posts to the
|
|
540
|
+
| `adapters/platform.ts` | Platform adapter: posts to the cloud push-dispatch endpoint for native mobile push |
|
|
541
541
|
| `adapters/telegram.ts` | Telegram adapter: calls the Telegram Bot API through `messaging/providers/telegram-bot/send.ts` |
|
|
542
542
|
| `adapters/slack.ts` | Slack adapter: posts to the guardian's DM through `messaging/providers/slack/send.ts` |
|
|
543
543
|
| `adapters/discord.ts` | Discord adapter: sends to the guardian's DM through `messaging/providers/discord/send.ts` |
|
|
@@ -1111,7 +1111,7 @@ describe("NotificationBroadcaster remotePushDispatched flag", () => {
|
|
|
1111
1111
|
renderedCopy: {},
|
|
1112
1112
|
});
|
|
1113
1113
|
|
|
1114
|
-
test("cadet payload carries true when the
|
|
1114
|
+
test("cadet payload carries true when the cloud adapter reports an accepted push; platform payload omits it", async () => {
|
|
1115
1115
|
bothChannelsCopy();
|
|
1116
1116
|
|
|
1117
1117
|
const cadet = makeCapturingAdapter("cadet");
|
|
@@ -1135,7 +1135,7 @@ describe("NotificationBroadcaster remotePushDispatched flag", () => {
|
|
|
1135
1135
|
expect(platform.sends[0]?.payload.remotePushDispatched).toBeUndefined();
|
|
1136
1136
|
});
|
|
1137
1137
|
|
|
1138
|
-
test("cadet payload carries false when the
|
|
1138
|
+
test("cadet payload carries false when the cloud dispatch fails", async () => {
|
|
1139
1139
|
bothChannelsCopy();
|
|
1140
1140
|
|
|
1141
1141
|
const cadet = makeCapturingAdapter("cadet");
|
|
@@ -1173,7 +1173,7 @@ describe("NotificationBroadcaster remotePushDispatched flag", () => {
|
|
|
1173
1173
|
expect(cadet.sends[0]?.payload.remotePushPlatforms).toEqual(["ios"]);
|
|
1174
1174
|
});
|
|
1175
1175
|
|
|
1176
|
-
test("cadet payload carries false when the
|
|
1176
|
+
test("cadet payload carries false when the cloud reports no accepted push (skipped or zero tokens)", async () => {
|
|
1177
1177
|
bothChannelsCopy();
|
|
1178
1178
|
|
|
1179
1179
|
const cadet = makeCapturingAdapter("cadet");
|
|
@@ -1192,7 +1192,7 @@ describe("NotificationBroadcaster remotePushDispatched flag", () => {
|
|
|
1192
1192
|
expect(cadet.sends[0]?.payload.remotePushDispatched).toBe(false);
|
|
1193
1193
|
});
|
|
1194
1194
|
|
|
1195
|
-
test("cadet payload carries false when the
|
|
1195
|
+
test("cadet payload carries false when the cloud result omits remotePushAccepted", async () => {
|
|
1196
1196
|
bothChannelsCopy();
|
|
1197
1197
|
|
|
1198
1198
|
const cadet = makeCapturingAdapter("cadet");
|
|
@@ -1208,7 +1208,7 @@ describe("NotificationBroadcaster remotePushDispatched flag", () => {
|
|
|
1208
1208
|
expect(cadet.sends[0]?.payload.remotePushDispatched).toBe(false);
|
|
1209
1209
|
});
|
|
1210
1210
|
|
|
1211
|
-
test("cadet payload carries false when the
|
|
1211
|
+
test("cadet payload carries false when the cloud adapter throws", async () => {
|
|
1212
1212
|
bothChannelsCopy();
|
|
1213
1213
|
|
|
1214
1214
|
const cadet = makeCapturingAdapter("cadet");
|
|
@@ -1233,7 +1233,7 @@ describe("NotificationBroadcaster remotePushDispatched flag", () => {
|
|
|
1233
1233
|
expect(results.find((r) => r.channel === "cadet")?.status).toBe("sent");
|
|
1234
1234
|
});
|
|
1235
1235
|
|
|
1236
|
-
test("cadet intent still flushes with false when the
|
|
1236
|
+
test("cadet intent still flushes with false when the cloud channel's prep throws", async () => {
|
|
1237
1237
|
bothChannelsCopy();
|
|
1238
1238
|
pairingErrorByChannel = { platform: new Error("pairing exploded") };
|
|
1239
1239
|
|
|
@@ -1251,14 +1251,14 @@ describe("NotificationBroadcaster remotePushDispatched flag", () => {
|
|
|
1251
1251
|
broadcaster.broadcastDecision(makeSignal(), bothChannelsDecision()),
|
|
1252
1252
|
).rejects.toThrow("pairing exploded");
|
|
1253
1253
|
|
|
1254
|
-
// The
|
|
1254
|
+
// The cloud adapter never ran, but the deferred cadet send must not
|
|
1255
1255
|
// be lost -- its pending delivery row would block retries forever.
|
|
1256
1256
|
expect(platform.sends.length).toBe(0);
|
|
1257
1257
|
expect(cadet.sends.length).toBe(1);
|
|
1258
1258
|
expect(cadet.sends[0]?.payload.remotePushDispatched).toBe(false);
|
|
1259
1259
|
});
|
|
1260
1260
|
|
|
1261
|
-
test("deadline expiry flushes cadet with false while the
|
|
1261
|
+
test("deadline expiry flushes cadet with false while the cloud dispatch finishes in the background", async () => {
|
|
1262
1262
|
bothChannelsCopy();
|
|
1263
1263
|
|
|
1264
1264
|
let resolvePlatform: ((result: DeliveryResult) => void) | undefined;
|
|
@@ -1325,7 +1325,7 @@ describe("NotificationBroadcaster remotePushDispatched flag", () => {
|
|
|
1325
1325
|
expect(results.find((r) => r.channel === "platform")?.status).toBe("sent");
|
|
1326
1326
|
});
|
|
1327
1327
|
|
|
1328
|
-
test("dispatches the
|
|
1328
|
+
test("dispatches the cloud adapter before the cadet intent when both are selected", async () => {
|
|
1329
1329
|
bothChannelsCopy();
|
|
1330
1330
|
|
|
1331
1331
|
const callOrder: string[] = [];
|
|
@@ -225,7 +225,7 @@ describe("completion local delivery policy", () => {
|
|
|
225
225
|
);
|
|
226
226
|
|
|
227
227
|
test.each(["chat.assistant_reply", "schedule.result"])(
|
|
228
|
-
"%s retains the
|
|
228
|
+
"%s retains the cloud owner fallback when the guardian lookup is unavailable",
|
|
229
229
|
(sourceEventName) => {
|
|
230
230
|
expect(
|
|
231
231
|
isCompletionRecipientUnavailable(
|