@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
|
@@ -14,14 +14,14 @@ import { beforeEach, describe, expect, mock, test } from "bun:test";
|
|
|
14
14
|
let isPlatform = false;
|
|
15
15
|
let tunnelWebhooksEnabled = false;
|
|
16
16
|
let rawConfig: Record<string, unknown> = {};
|
|
17
|
-
let
|
|
17
|
+
let cloudContextEnabled = false;
|
|
18
18
|
|
|
19
19
|
// Spread the real modules: these are broad barrels and replacing them wholesale
|
|
20
20
|
// breaks unrelated importers pulled in by the module under test.
|
|
21
21
|
const actualEnvRegistry = await import("../env-registry.js");
|
|
22
22
|
mock.module("../env-registry.js", () => ({
|
|
23
23
|
...actualEnvRegistry,
|
|
24
|
-
|
|
24
|
+
getIsCloud: () => isPlatform,
|
|
25
25
|
}));
|
|
26
26
|
|
|
27
27
|
const actualLoader = await import("../loader.js");
|
|
@@ -38,16 +38,16 @@ mock.module("../../inbound/tunnel-webhooks-gate.js", () => ({
|
|
|
38
38
|
}));
|
|
39
39
|
|
|
40
40
|
const actualRegistration =
|
|
41
|
-
await import("../../inbound/
|
|
42
|
-
mock.module("../../inbound/
|
|
41
|
+
await import("../../inbound/cloud-callback-registration.js");
|
|
42
|
+
mock.module("../../inbound/cloud-callback-registration.js", () => ({
|
|
43
43
|
...actualRegistration,
|
|
44
|
-
|
|
44
|
+
resolveCloudCallbackRegistrationContext: async () => ({
|
|
45
45
|
isPlatform,
|
|
46
|
-
|
|
47
|
-
assistantId:
|
|
48
|
-
hasAssistantApiKey:
|
|
49
|
-
authHeader:
|
|
50
|
-
enabled:
|
|
46
|
+
cloudBaseUrl: "https://cloud.mycadet.ai",
|
|
47
|
+
assistantId: cloudContextEnabled ? "assistant-123" : "",
|
|
48
|
+
hasAssistantApiKey: cloudContextEnabled,
|
|
49
|
+
authHeader: cloudContextEnabled ? "Api-Key secret" : null,
|
|
50
|
+
enabled: cloudContextEnabled,
|
|
51
51
|
}),
|
|
52
52
|
}));
|
|
53
53
|
|
|
@@ -59,30 +59,30 @@ describe("hasWebhookRoutingConfigured resolution order", () => {
|
|
|
59
59
|
isPlatform = false;
|
|
60
60
|
tunnelWebhooksEnabled = false;
|
|
61
61
|
rawConfig = {};
|
|
62
|
-
|
|
62
|
+
cloudContextEnabled = false;
|
|
63
63
|
});
|
|
64
64
|
|
|
65
|
-
// ── Tier 1:
|
|
65
|
+
// ── Tier 1: cloud pods ────────────────────────────────────────────────
|
|
66
66
|
|
|
67
|
-
test("
|
|
67
|
+
test("cloud pods use managed callbacks", async () => {
|
|
68
68
|
isPlatform = true;
|
|
69
69
|
|
|
70
70
|
expect(await hasWebhookRoutingConfigured(true)).toEqual({
|
|
71
71
|
configured: true,
|
|
72
|
-
|
|
72
|
+
usesCloudCallbacks: true,
|
|
73
73
|
});
|
|
74
74
|
});
|
|
75
75
|
|
|
76
|
-
test("
|
|
76
|
+
test("cloud pods report managed even with an ingress URL configured", async () => {
|
|
77
77
|
isPlatform = true;
|
|
78
78
|
rawConfig = { ingress: { publicBaseUrl: "https://tunnel.example.com" } };
|
|
79
79
|
|
|
80
|
-
// `handleWebhooksRegister` registers with the
|
|
80
|
+
// `handleWebhooksRegister` registers with the cloud gateway before it
|
|
81
81
|
// ever reads the ingress config on a pod, so reporting the ingress URL
|
|
82
82
|
// here would name a URL no webhook is actually registered against.
|
|
83
83
|
expect(await hasWebhookRoutingConfigured(true)).toEqual({
|
|
84
84
|
configured: true,
|
|
85
|
-
|
|
85
|
+
usesCloudCallbacks: true,
|
|
86
86
|
});
|
|
87
87
|
});
|
|
88
88
|
|
|
@@ -93,7 +93,7 @@ describe("hasWebhookRoutingConfigured resolution order", () => {
|
|
|
93
93
|
|
|
94
94
|
expect(await hasWebhookRoutingConfigured(true)).toEqual({
|
|
95
95
|
configured: true,
|
|
96
|
-
|
|
96
|
+
usesCloudCallbacks: false,
|
|
97
97
|
});
|
|
98
98
|
});
|
|
99
99
|
|
|
@@ -103,7 +103,7 @@ describe("hasWebhookRoutingConfigured resolution order", () => {
|
|
|
103
103
|
|
|
104
104
|
expect(await hasWebhookRoutingConfigured(true)).toEqual({
|
|
105
105
|
configured: true,
|
|
106
|
-
|
|
106
|
+
usesCloudCallbacks: true,
|
|
107
107
|
});
|
|
108
108
|
});
|
|
109
109
|
|
|
@@ -116,88 +116,88 @@ describe("hasWebhookRoutingConfigured resolution order", () => {
|
|
|
116
116
|
// must not lose webhooks entirely.
|
|
117
117
|
expect(await hasWebhookRoutingConfigured(true)).toEqual({
|
|
118
118
|
configured: true,
|
|
119
|
-
|
|
119
|
+
usesCloudCallbacks: true,
|
|
120
120
|
});
|
|
121
121
|
});
|
|
122
122
|
|
|
123
123
|
// ── Tier 2: a configured ingress wins ────────────────────────────────────
|
|
124
124
|
|
|
125
|
-
test("ingress beats the
|
|
126
|
-
|
|
125
|
+
test("ingress beats the cloud-connected fallback", async () => {
|
|
126
|
+
cloudContextEnabled = true;
|
|
127
127
|
rawConfig = { ingress: { publicBaseUrl: "https://tunnel.example.com" } };
|
|
128
128
|
|
|
129
129
|
// Any logged-in local assistant holds platform credentials for the LLM
|
|
130
130
|
// proxy, so credential presence must not reroute an explicitly configured
|
|
131
|
-
// self-hosted webhook through the
|
|
131
|
+
// self-hosted webhook through the cloud.
|
|
132
132
|
expect(await hasWebhookRoutingConfigured(true)).toEqual({
|
|
133
133
|
configured: true,
|
|
134
|
-
|
|
134
|
+
usesCloudCallbacks: false,
|
|
135
135
|
});
|
|
136
136
|
});
|
|
137
137
|
|
|
138
138
|
test("the twilio option resolves ingress before the fallback too", async () => {
|
|
139
|
-
|
|
139
|
+
cloudContextEnabled = true;
|
|
140
140
|
rawConfig = { ingress: { publicBaseUrl: "https://twilio.example.com" } };
|
|
141
141
|
|
|
142
142
|
expect(await hasWebhookRoutingConfigured(true, { twilio: true })).toEqual({
|
|
143
143
|
configured: true,
|
|
144
|
-
|
|
144
|
+
usesCloudCallbacks: false,
|
|
145
145
|
});
|
|
146
146
|
});
|
|
147
147
|
|
|
148
148
|
test("the twilio option falls back to managed callbacks with no ingress", async () => {
|
|
149
|
-
|
|
149
|
+
cloudContextEnabled = true;
|
|
150
150
|
|
|
151
151
|
expect(await hasWebhookRoutingConfigured(true, { twilio: true })).toEqual({
|
|
152
152
|
configured: true,
|
|
153
|
-
|
|
153
|
+
usesCloudCallbacks: true,
|
|
154
154
|
});
|
|
155
155
|
});
|
|
156
156
|
|
|
157
157
|
// ── Tier 3: platform-connected fallback ──────────────────────────────────
|
|
158
158
|
|
|
159
|
-
test("a
|
|
160
|
-
|
|
159
|
+
test("a cloud-connected assistant with no ingress uses managed callbacks", async () => {
|
|
160
|
+
cloudContextEnabled = true;
|
|
161
161
|
|
|
162
|
-
// The LUM-2882 case: `webhooks register` hands back a
|
|
162
|
+
// The LUM-2882 case: `webhooks register` hands back a cloud callback
|
|
163
163
|
// URL here, so the status surfaces must not report missing ingress.
|
|
164
164
|
expect(await hasWebhookRoutingConfigured(true)).toEqual({
|
|
165
165
|
configured: true,
|
|
166
|
-
|
|
166
|
+
usesCloudCallbacks: true,
|
|
167
167
|
});
|
|
168
168
|
});
|
|
169
169
|
|
|
170
170
|
test("the fallback applies when the ingress URL is present but empty", async () => {
|
|
171
|
-
|
|
171
|
+
cloudContextEnabled = true;
|
|
172
172
|
rawConfig = { ingress: { publicBaseUrl: "" } };
|
|
173
173
|
|
|
174
174
|
expect(await hasWebhookRoutingConfigured(true)).toEqual({
|
|
175
175
|
configured: true,
|
|
176
|
-
|
|
176
|
+
usesCloudCallbacks: true,
|
|
177
177
|
});
|
|
178
178
|
});
|
|
179
179
|
|
|
180
180
|
test("an explicit ingress.enabled false blocks the fallback", async () => {
|
|
181
|
-
|
|
181
|
+
cloudContextEnabled = true;
|
|
182
182
|
rawConfig = { ingress: { enabled: false } };
|
|
183
183
|
|
|
184
184
|
// Opting out is a decision not to accept inbound webhooks at all, not an
|
|
185
|
-
// invitation to route them through the
|
|
185
|
+
// invitation to route them through the cloud instead.
|
|
186
186
|
expect(await hasWebhookRoutingConfigured(true)).toEqual({
|
|
187
187
|
configured: false,
|
|
188
|
-
|
|
188
|
+
usesCloudCallbacks: false,
|
|
189
189
|
});
|
|
190
190
|
});
|
|
191
191
|
|
|
192
192
|
test("ingress.enabled false blocks the fallback even with a URL configured", async () => {
|
|
193
|
-
|
|
193
|
+
cloudContextEnabled = true;
|
|
194
194
|
rawConfig = {
|
|
195
195
|
ingress: { enabled: false, publicBaseUrl: "https://tunnel.example.com" },
|
|
196
196
|
};
|
|
197
197
|
|
|
198
198
|
expect(await hasWebhookRoutingConfigured(true)).toEqual({
|
|
199
199
|
configured: false,
|
|
200
|
-
|
|
200
|
+
usesCloudCallbacks: false,
|
|
201
201
|
});
|
|
202
202
|
});
|
|
203
203
|
|
|
@@ -206,38 +206,38 @@ describe("hasWebhookRoutingConfigured resolution order", () => {
|
|
|
206
206
|
test("no ingress and no platform connectivity is not configured", async () => {
|
|
207
207
|
expect(await hasWebhookRoutingConfigured(true)).toEqual({
|
|
208
208
|
configured: false,
|
|
209
|
-
|
|
209
|
+
usesCloudCallbacks: false,
|
|
210
210
|
});
|
|
211
211
|
});
|
|
212
212
|
|
|
213
|
-
// ──
|
|
213
|
+
// ── allowCloudCallbacks gating ─────────────────────────────────────────
|
|
214
214
|
|
|
215
|
-
test("
|
|
216
|
-
|
|
215
|
+
test("allowCloudCallbacks false hides the cloud-connected fallback", async () => {
|
|
216
|
+
cloudContextEnabled = true;
|
|
217
217
|
|
|
218
218
|
// Channels that can only be served by a self-hosted ingress pass `false`
|
|
219
|
-
// and must never be told a
|
|
219
|
+
// and must never be told a cloud route stands in for one.
|
|
220
220
|
expect(await hasWebhookRoutingConfigured(false)).toEqual({
|
|
221
221
|
configured: false,
|
|
222
|
-
|
|
222
|
+
usesCloudCallbacks: false,
|
|
223
223
|
});
|
|
224
224
|
});
|
|
225
225
|
|
|
226
|
-
test("
|
|
226
|
+
test("allowCloudCallbacks false hides the cloud-pod tier", async () => {
|
|
227
227
|
isPlatform = true;
|
|
228
228
|
|
|
229
229
|
expect(await hasWebhookRoutingConfigured(false)).toEqual({
|
|
230
230
|
configured: false,
|
|
231
|
-
|
|
231
|
+
usesCloudCallbacks: false,
|
|
232
232
|
});
|
|
233
233
|
});
|
|
234
234
|
|
|
235
|
-
test("
|
|
235
|
+
test("allowCloudCallbacks false still honors a configured ingress", async () => {
|
|
236
236
|
rawConfig = { ingress: { publicBaseUrl: "https://tunnel.example.com" } };
|
|
237
237
|
|
|
238
238
|
expect(await hasWebhookRoutingConfigured(false)).toEqual({
|
|
239
239
|
configured: true,
|
|
240
|
-
|
|
240
|
+
usesCloudCallbacks: false,
|
|
241
241
|
});
|
|
242
242
|
});
|
|
243
243
|
});
|
|
@@ -246,11 +246,11 @@ describe("hasIngressConfigured", () => {
|
|
|
246
246
|
beforeEach(() => {
|
|
247
247
|
isPlatform = false;
|
|
248
248
|
rawConfig = {};
|
|
249
|
-
|
|
249
|
+
cloudContextEnabled = false;
|
|
250
250
|
});
|
|
251
251
|
|
|
252
252
|
test("is unaffected by platform connectivity", () => {
|
|
253
|
-
|
|
253
|
+
cloudContextEnabled = true;
|
|
254
254
|
|
|
255
255
|
expect(hasIngressConfigured()).toBe(false);
|
|
256
256
|
});
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"target": {
|
|
31
31
|
"type": "string",
|
|
32
32
|
"enum": ["connected-computer", "assistant-desktop"],
|
|
33
|
-
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-
|
|
33
|
+
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-cloud assistants default to connected-computer. Explicit target or target_client_id overrides the default. Use assistant-desktop from a native app only when explicitly requested; do not combine it with target_client_id."
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
36
|
"required": []
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"target": {
|
|
75
75
|
"type": "string",
|
|
76
76
|
"enum": ["connected-computer", "assistant-desktop"],
|
|
77
|
-
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-
|
|
77
|
+
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-cloud assistants default to connected-computer. Explicit target or target_client_id overrides the default. Use assistant-desktop from a native app only when explicitly requested; do not combine it with target_client_id."
|
|
78
78
|
},
|
|
79
79
|
"observation_id": {
|
|
80
80
|
"type": "string",
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
"target": {
|
|
110
110
|
"type": "string",
|
|
111
111
|
"enum": ["connected-computer", "assistant-desktop"],
|
|
112
|
-
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-
|
|
112
|
+
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-cloud assistants default to connected-computer. Explicit target or target_client_id overrides the default. Use assistant-desktop from a native app only when explicitly requested; do not combine it with target_client_id."
|
|
113
113
|
},
|
|
114
114
|
"observation_id": {
|
|
115
115
|
"type": "string",
|
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
"target": {
|
|
145
145
|
"type": "string",
|
|
146
146
|
"enum": ["connected-computer", "assistant-desktop"],
|
|
147
|
-
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-
|
|
147
|
+
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-cloud assistants default to connected-computer. Explicit target or target_client_id overrides the default. Use assistant-desktop from a native app only when explicitly requested; do not combine it with target_client_id."
|
|
148
148
|
},
|
|
149
149
|
"observation_id": {
|
|
150
150
|
"type": "string",
|
|
@@ -196,7 +196,7 @@
|
|
|
196
196
|
"target": {
|
|
197
197
|
"type": "string",
|
|
198
198
|
"enum": ["connected-computer", "assistant-desktop"],
|
|
199
|
-
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-
|
|
199
|
+
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-cloud assistants default to connected-computer. Explicit target or target_client_id overrides the default. Use assistant-desktop from a native app only when explicitly requested; do not combine it with target_client_id."
|
|
200
200
|
},
|
|
201
201
|
"observation_id": {
|
|
202
202
|
"type": "string",
|
|
@@ -251,7 +251,7 @@
|
|
|
251
251
|
"target": {
|
|
252
252
|
"type": "string",
|
|
253
253
|
"enum": ["connected-computer", "assistant-desktop"],
|
|
254
|
-
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-
|
|
254
|
+
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-cloud assistants default to connected-computer. Explicit target or target_client_id overrides the default. Use assistant-desktop from a native app only when explicitly requested; do not combine it with target_client_id."
|
|
255
255
|
},
|
|
256
256
|
"observation_id": {
|
|
257
257
|
"type": "string",
|
|
@@ -287,7 +287,7 @@
|
|
|
287
287
|
"target": {
|
|
288
288
|
"type": "string",
|
|
289
289
|
"enum": ["connected-computer", "assistant-desktop"],
|
|
290
|
-
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-
|
|
290
|
+
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-cloud assistants default to connected-computer. Explicit target or target_client_id overrides the default. Use assistant-desktop from a native app only when explicitly requested; do not combine it with target_client_id."
|
|
291
291
|
},
|
|
292
292
|
"observation_id": {
|
|
293
293
|
"type": "string",
|
|
@@ -322,7 +322,7 @@
|
|
|
322
322
|
"target": {
|
|
323
323
|
"type": "string",
|
|
324
324
|
"enum": ["connected-computer", "assistant-desktop"],
|
|
325
|
-
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-
|
|
325
|
+
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-cloud assistants default to connected-computer. Explicit target or target_client_id overrides the default. Use assistant-desktop from a native app only when explicitly requested; do not combine it with target_client_id."
|
|
326
326
|
}
|
|
327
327
|
},
|
|
328
328
|
"required": ["app_name", "reasoning"]
|
|
@@ -354,7 +354,7 @@
|
|
|
354
354
|
"target": {
|
|
355
355
|
"type": "string",
|
|
356
356
|
"enum": ["connected-computer", "assistant-desktop"],
|
|
357
|
-
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-
|
|
357
|
+
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-cloud assistants default to connected-computer. Explicit target or target_client_id overrides the default. Use assistant-desktop from a native app only when explicitly requested; do not combine it with target_client_id."
|
|
358
358
|
}
|
|
359
359
|
},
|
|
360
360
|
"required": ["script", "reasoning"]
|
|
@@ -450,7 +450,7 @@
|
|
|
450
450
|
"target": {
|
|
451
451
|
"type": "string",
|
|
452
452
|
"enum": ["connected-computer", "assistant-desktop"],
|
|
453
|
-
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-
|
|
453
|
+
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-cloud assistants default to connected-computer. Explicit target or target_client_id overrides the default. Use assistant-desktop from a native app only when explicitly requested; do not combine it with target_client_id."
|
|
454
454
|
},
|
|
455
455
|
"observation_id": {
|
|
456
456
|
"type": "string",
|
|
@@ -478,7 +478,7 @@
|
|
|
478
478
|
"target": {
|
|
479
479
|
"type": "string",
|
|
480
480
|
"enum": ["connected-computer", "assistant-desktop"],
|
|
481
|
-
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-
|
|
481
|
+
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-cloud assistants default to connected-computer. Explicit target or target_client_id overrides the default. Use assistant-desktop from a native app only when explicitly requested; do not combine it with target_client_id."
|
|
482
482
|
}
|
|
483
483
|
},
|
|
484
484
|
"required": ["summary"]
|
|
@@ -505,7 +505,7 @@
|
|
|
505
505
|
"target": {
|
|
506
506
|
"type": "string",
|
|
507
507
|
"enum": ["connected-computer", "assistant-desktop"],
|
|
508
|
-
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-
|
|
508
|
+
"description": "Desktop to control. Platform-hosted web conversations default to assistant-desktop; native desktop apps and non-cloud assistants default to connected-computer. Explicit target or target_client_id overrides the default. Use assistant-desktop from a native app only when explicitly requested; do not combine it with target_client_id."
|
|
509
509
|
}
|
|
510
510
|
},
|
|
511
511
|
"required": ["answer", "reasoning"]
|
|
@@ -30,7 +30,7 @@ Do not offer the assistant's own email as an option unless the user specifically
|
|
|
30
30
|
|
|
31
31
|
Reading, searching, or summarizing the user's inbox is a **messaging task** — use the messaging tools (or the Gmail connection flow below if nothing is connected). Never run `assistant channels` commands for a mailbox request: channels are the assistant's own inbound delivery routes, not the user's mailbox, and inspecting them sends you down the wrong path.
|
|
32
32
|
|
|
33
|
-
When a
|
|
33
|
+
When a cloud is connected (auth test succeeds), always use the messaging API tools for that platform. Never fall back to browser automation, shell commands (bash, curl), or any other approach for operations that messaging tools can handle. The messaging tools handle authentication internally - never try to access tokens or call APIs directly. Browser automation is only appropriate for initial credential setup (OAuth consent screens), not for day-to-day messaging operations.
|
|
34
34
|
|
|
35
35
|
On Gmail and Outlook, `messaging_send` creates a real mailbox draft for review. It does not send. Recipients are optional on Outlook: if the user has not named a To address, still create the draft (use a non-email `conversation_id` such as `drafts`) and tell them only after the tool returns a draft ID. If draft creation fails or is interrupted, say so and offer the email copy in chat. Do not claim a draft exists until the tool succeeds.
|
|
36
36
|
|
|
@@ -38,11 +38,11 @@ On Gmail and Outlook, `messaging_send` creates a real mailbox draft for review.
|
|
|
38
38
|
|
|
39
39
|
## Connection Setup
|
|
40
40
|
|
|
41
|
-
Before using any messaging tool, verify that the
|
|
41
|
+
Before using any messaging tool, verify that the cloud is connected by calling `messaging_auth_test` with the appropriate `platform` parameter. If the call fails with a token/authorization error, follow the steps below.
|
|
42
42
|
|
|
43
43
|
### Public Ingress (required for Telegram)
|
|
44
44
|
|
|
45
|
-
Telegram setup requires webhook routing, but it does **not** always require ngrok. Before suggesting public ingress for Telegram, check managed callback availability with `assistant cloud status --json`. If that reports `available: true` with a non-empty `assistantId`, use the
|
|
45
|
+
Telegram setup requires webhook routing, but it does **not** always require ngrok. Before suggesting public ingress for Telegram, check managed callback availability with `assistant cloud status --json`. If that reports `available: true` with a non-empty `assistantId`, use the cloud callback route flow and do not prompt for ngrok; this applies to managed pods and platform-connected local assistants alike, so do not require `isPlatform: true`. Only use the **public-ingress** skill for local assistants that genuinely need a public gateway URL. Slack uses Socket Mode and does not require public ingress. Gmail/Outlook on the desktop app uses a loopback callback and does not require public ingress; the channel path (Path B in the cadet-oauth-integrations skill) handles public ingress internally when needed.
|
|
46
46
|
|
|
47
47
|
### Email Connection Flow
|
|
48
48
|
|
|
@@ -55,12 +55,12 @@ When the user asks to "connect my email", "set up email", "manage my email", or
|
|
|
55
55
|
### Gmail
|
|
56
56
|
|
|
57
57
|
1. **Check the connection.** Run `assistant oauth status google`. If a connection exists, the user is ready to go — proceed with their request.
|
|
58
|
-
2. **If no connections are found, render the connect button in one step:** call `ui_show` with `surface_type: "oauth_connect"` and `data.providerKey: "google"`. That surface is always available — do **not** run `assistant channels`, `oauth providers get`, or load `cadet-oauth-integrations` just to display the button, and do **not** fall back to `assistant oauth connect`. Only load `cadet-oauth-integrations` when the
|
|
58
|
+
2. **If no connections are found, render the connect button in one step:** call `ui_show` with `surface_type: "oauth_connect"` and `data.providerKey: "google"`. That surface is always available — do **not** run `assistant channels`, `oauth providers get`, or load `cadet-oauth-integrations` just to display the button, and do **not** fall back to `assistant oauth connect`. Only load `cadet-oauth-integrations` when the cloud-vs-your-own-credentials decision genuinely needs handling (e.g. a BYOK setup where the cloud connect surface isn't available).
|
|
59
59
|
|
|
60
60
|
### Outlook
|
|
61
61
|
|
|
62
62
|
1. **Check the connection.** Run `assistant oauth status outlook`. If a connection exists, the user is ready to go — proceed with their request.
|
|
63
|
-
2. **If no connections are found, render the connect button in one step:** call `ui_show` with `surface_type: "oauth_connect"` and `data.providerKey: "outlook"`. The same rules as Gmail apply — don't probe further or load a setup skill just to show the button; only load `cadet-oauth-integrations` when a
|
|
63
|
+
2. **If no connections are found, render the connect button in one step:** call `ui_show` with `surface_type: "oauth_connect"` and `data.providerKey: "outlook"`. The same rules as Gmail apply — don't probe further or load a setup skill just to show the button; only load `cadet-oauth-integrations` when a cloud-vs-your-own-credentials decision genuinely needs handling.
|
|
64
64
|
|
|
65
65
|
### Slack
|
|
66
66
|
|
|
@@ -68,9 +68,9 @@ For Slack setup, load the **slack-app-setup** skill directly. `messaging_send` p
|
|
|
68
68
|
|
|
69
69
|
### Telegram
|
|
70
70
|
|
|
71
|
-
Telegram uses a bot token (not OAuth). Load the **telegram-setup** skill, which uses a
|
|
71
|
+
Telegram uses a bot token (not OAuth). Load the **telegram-setup** skill, which uses a cloud platform callback route on platform-connected assistants (managed pods and local assistants alike) and falls back to **public-ingress** for self-hosted setups when needed:
|
|
72
72
|
|
|
73
|
-
- First run `assistant cloud status --json`. If it shows managed callback routing is available, tell the user you will use the
|
|
73
|
+
- First run `assistant cloud status --json`. If it shows managed callback routing is available, tell the user you will use the cloud callback route and skip ngrok/public-ingress.
|
|
74
74
|
- Call `skill_load` with `skill: "telegram-setup"` to load the dependency skill.
|
|
75
75
|
- Tell the user: _"I've loaded a setup guide for Telegram. It will walk you through connecting a Telegram bot to your assistant."_
|
|
76
76
|
|
|
@@ -97,7 +97,7 @@ When a messaging tool fails with a token or authorization error:
|
|
|
97
97
|
|
|
98
98
|
## Platform Selection
|
|
99
99
|
|
|
100
|
-
- If the user specifies a
|
|
100
|
+
- If the user specifies a cloud (e.g., "check my Slack"), pass it as the `platform` parameter.
|
|
101
101
|
- If only one platform is connected, it is auto-selected.
|
|
102
102
|
- If multiple platforms are connected and the user doesn't specify, ask which platform they mean - or search across all of them.
|
|
103
103
|
- **Be action-oriented with email.** When the user says "email" and wants to _do_ something (declutter, check, search, send), check what's connected first. If nothing is connected, ask which provider briefly and then go straight into setup - don't present menus, options lists, or explain the setup process. Just do it.
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
},
|
|
95
95
|
{
|
|
96
96
|
"name": "messaging_search",
|
|
97
|
-
"description": "Search messages across a
|
|
97
|
+
"description": "Search messages across a cloud using its native query syntax.",
|
|
98
98
|
"category": "messaging",
|
|
99
99
|
"risk": "low",
|
|
100
100
|
"input_schema": {
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
},
|
|
111
111
|
"query": {
|
|
112
112
|
"type": "string",
|
|
113
|
-
"description": "Search query using the
|
|
113
|
+
"description": "Search query using the cloud's native syntax"
|
|
114
114
|
},
|
|
115
115
|
"max_results": {
|
|
116
116
|
"type": "number",
|
|
@@ -114,7 +114,7 @@ export async function run(
|
|
|
114
114
|
const provider = await resolveProvider(platform);
|
|
115
115
|
const account = input.account as string | undefined;
|
|
116
116
|
const conn = await getProviderConnection(provider, account);
|
|
117
|
-
// Search for sent messages using the
|
|
117
|
+
// Search for sent messages using the cloud's search
|
|
118
118
|
const query =
|
|
119
119
|
queryFilter ?? (provider.id === "gmail" ? "in:sent" : "from:me");
|
|
120
120
|
const searchResult = await provider.search(conn, query, {
|
|
@@ -131,7 +131,7 @@ export async function resolveProvider(
|
|
|
131
131
|
}
|
|
132
132
|
if (connected.length === 0) {
|
|
133
133
|
throw new Error(
|
|
134
|
-
"No messaging platforms are connected. Use messaging_auth_test to check connection status, then set up a
|
|
134
|
+
"No messaging platforms are connected. Use messaging_auth_test to check connection status, then set up a cloud.",
|
|
135
135
|
);
|
|
136
136
|
}
|
|
137
137
|
|
|
@@ -10,7 +10,7 @@ Run `assistant config set calls.enabled true`.
|
|
|
10
10
|
|
|
11
11
|
## "No public base URL configured"
|
|
12
12
|
|
|
13
|
-
First check whether this is a
|
|
13
|
+
First check whether this is a cloud/platform assistant:
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
16
|
assistant cloud status --json
|
|
@@ -56,7 +56,7 @@ assistant config set ingress.publicBaseUrl "<new-url>"
|
|
|
56
56
|
|
|
57
57
|
Or re-run the public-ingress skill to auto-detect and save the new URL.
|
|
58
58
|
|
|
59
|
-
Do not rotate ngrok to work around a
|
|
59
|
+
Do not rotate ngrok to work around a cloud Tunnel WebSocket failure. Fix the Tunnel state instead, or restart the assistant/gateway so it re-registers.
|
|
60
60
|
|
|
61
61
|
## Tunnel is not registering
|
|
62
62
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"tools": [
|
|
4
4
|
{
|
|
5
5
|
"name": "voice_config_update",
|
|
6
|
-
"description": "Update a voice configuration setting. Use tts_provider / stt_provider to switch the active TTS / STT provider. Provider \"cadet\" is Cadet
|
|
6
|
+
"description": "Update a voice configuration setting. Use tts_provider / stt_provider to switch the active TTS / STT provider. Provider \"cadet\" is Cadet Cloud speech (billed to your organization; requires a Cadet Cloud connection via 'assistant cloud connect'); any other provider uses the user's own API key. Valid TTS providers come from the provider catalog (cadet, elevenlabs, fish-audio, deepgram, xai); valid STT providers: cadet, deepgram, google-gemini, openai-whisper, xai. Use stt_model to pick a provider's model family where it has more than one: deepgram and cadet offer nova-3 (the default, and the only family that transcribes audio files or voice messages) and flux (conversational, streaming-only, with model-native turn detection). Do not select flux when the user wants file transcription. Use tts_voice_id to change the voice; it targets whichever TTS provider is currently active. For elevenlabs, pass an ElevenLabs voice ID. For cadet (managed), pass a cloud voice model ID: this may be an ElevenLabs voice ID (cloud speech serves the same ElevenLabs voices) or a Deepgram Aura model ID (e.g. aura-2-thalia-en); only rate-carded voices synthesize, so prefer models from the cloud catalog (assistant route GET tts/managed-voices, also used by the web voice picker). For deepgram, pass a Deepgram Aura model ID. Use fish_audio_reference_id for Fish Audio voice reference. Use stt_language to set the spoken language for speech recognition: one of the 50 base language codes on the verified Deepgram nova-3 monolingual roster (e.g. en, es, hi, ta, zh, ko), or \"multi\" for code-switching mid-sentence across its 10-language roster (English, Spanish, French, German, Hindi, Russian, Portuguese, Japanese, Italian, Dutch; e.g. Hinglish); plain language names like \"tamil\" or \"multilingual\" are accepted and normalized. Accepted values follow the configured STT provider: cadet-cloud and deepgram accept the full roster plus \"multi\"; xai accepts only the 10 multilingual-roster codes (en, es, fr, de, hi, ru, pt, ja, it, nl) and rejects \"multi\" and the extended codes (both are verified for Deepgram nova-3 only); google-gemini and openai-whisper auto-detect natively, so the value persists but is ignored while they are active. Deepgram uses the same API key for TTS and STT, whichever model family is selected. Changes persist to services.stt / services.tts config and take effect immediately.",
|
|
7
7
|
"category": "system",
|
|
8
8
|
"risk": "low",
|
|
9
9
|
"input_schema": {
|
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
"tts_provider",
|
|
22
22
|
"tts_voice_id"
|
|
23
23
|
],
|
|
24
|
-
"description": "The voice setting to change. tts_provider / stt_provider select the active provider for each service (\"cadet\" = Cadet
|
|
24
|
+
"description": "The voice setting to change. tts_provider / stt_provider select the active provider for each service (\"cadet\" = Cadet Cloud speech; anything else = the user's own API key). tts_voice_id sets the voice for the currently active TTS provider (ElevenLabs voice ID for elevenlabs; a cloud voice model ID for cadet, meaning an ElevenLabs voice ID or a Deepgram Aura model ID like aura-2-thalia-en; a Deepgram Aura model ID for deepgram; voice ID for xai). fish_audio_reference_id sets the Fish Audio voice reference. stt_model selects a provider's model family where it has more than one (deepgram and cadet: nova-3 or flux). stt_language sets the spoken language for speech recognition (cadet-cloud/deepgram: the full roster plus \"multi\"; xai: only the 10 multilingual-roster codes, with \"multi\" and the extended codes rejected; google-gemini and openai-whisper auto-detect and ignore it). Deepgram shares one API key across TTS and STT."
|
|
25
25
|
},
|
|
26
26
|
"value": {
|
|
27
|
-
"description": "The new value for the setting. For tts_provider: one of cadet, elevenlabs, fish-audio, deepgram, xai. For stt_provider: one of cadet, deepgram, google-gemini, openai-whisper, xai. For stt_model: nova-3 or flux, applied to whichever STT provider is currently active; flux serves live speech only and cannot transcribe files. For tts_voice_id: a voice ID for the active TTS provider: an alphanumeric ElevenLabs voice ID (elevenlabs), a
|
|
27
|
+
"description": "The new value for the setting. For tts_provider: one of cadet, elevenlabs, fish-audio, deepgram, xai. For stt_provider: one of cadet, deepgram, google-gemini, openai-whisper, xai. For stt_model: nova-3 or flux, applied to whichever STT provider is currently active; flux serves live speech only and cannot transcribe files. For tts_voice_id: a voice ID for the active TTS provider: an alphanumeric ElevenLabs voice ID (elevenlabs), a cloud voice model ID which may be an ElevenLabs voice ID or a Deepgram Aura model ID like aura-2-thalia-en (cadet), or a Deepgram Aura model ID (deepgram). For fish_audio_reference_id: a Fish Audio voice reference ID. For stt_language: one of the 50 base codes on the nova-3 monolingual roster (e.g. en, es, hi, ta, zh, ko), or multi (code-switching across its 10-language roster); language names like \"hindi\", \"tamil\", or \"multilingual\" are also accepted and normalized; when the configured STT provider is xai, only the 10 multilingual-roster codes (en, es, fr, de, hi, ru, pt, ja, it, nl) are accepted. For conversation_timeout: seconds (5, 10, 15, 30, or 60). For activation_key: key identifier string."
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
},
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* Steer the model back to the inline voice picker.
|
|
7
7
|
*
|
|
8
8
|
* Both settings tools a "change my voice" request can land on (the Voice tab
|
|
9
|
-
* navigation and a
|
|
9
|
+
* navigation and a cloud `tts_voice_id` write) end by naming the picker, so
|
|
10
10
|
* the invocation itself lives here: one edit keeps both tools teaching the same
|
|
11
11
|
* call. Each caller supplies its own tail, because the reason the picker is
|
|
12
12
|
* better differs by the tool the model just reached for.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
import { managedSpeechAvailable } from "../../../../cloud/cloud-speech.js";
|
|
1
2
|
import { normalizeActivationKey } from "../../../../daemon/handlers/config-voice.js";
|
|
2
|
-
import { managedSpeechAvailable } from "../../../../platform/managed-speech.js";
|
|
3
3
|
import {
|
|
4
4
|
DEEPGRAM_MULTI_LANGUAGE_CODES,
|
|
5
5
|
DEEPGRAM_NOVA3_MONOLINGUAL_CODES,
|
|
6
6
|
} from "../../../../providers/speech-to-text/deepgram.js";
|
|
7
7
|
import {
|
|
8
|
-
|
|
8
|
+
isCloudSttProvider,
|
|
9
9
|
listProviderModelFamilies,
|
|
10
10
|
} from "../../../../providers/speech-to-text/provider-catalog.js";
|
|
11
11
|
import type { SttProviderId } from "../../../../stt/types.js";
|
|
@@ -202,14 +202,14 @@ const STT_LANGUAGE_ALIASES: Record<
|
|
|
202
202
|
/**
|
|
203
203
|
* Same steer `navigate_settings_tab` puts on the Voice tab, applied to the
|
|
204
204
|
* strongest competing affordance: this tool's description coaches the model to
|
|
205
|
-
* read the
|
|
205
|
+
* read the cloud catalog and set `tts_voice_id` itself, which is exactly the
|
|
206
206
|
* "assistant names voices in prose" outcome the inline picker exists to
|
|
207
207
|
* replace. Managed only, because that is the catalog the picker renders. The
|
|
208
208
|
* write still happens and the result stays non-error; this only redirects the
|
|
209
209
|
* next request.
|
|
210
210
|
*/
|
|
211
211
|
const MANAGED_VOICE_PICKER_HINT = voicePickerHint(
|
|
212
|
-
"which lets them hear and pick from the
|
|
212
|
+
"which lets them hear and pick from the cloud catalog in the conversation. Set the id here only when the user named a specific voice.",
|
|
213
213
|
);
|
|
214
214
|
|
|
215
215
|
function validateSetting(
|
|
@@ -354,7 +354,7 @@ function validateSetting(
|
|
|
354
354
|
}
|
|
355
355
|
// Provider scoping, after alias normalization so "Tamil" and "ta" fail
|
|
356
356
|
// the same way: the extended roster and "multi" are verified for
|
|
357
|
-
// Deepgram nova-3 (BYOK deepgram and the
|
|
357
|
+
// Deepgram nova-3 (BYOK deepgram and the cloud relay) only. Under
|
|
358
358
|
// xai, persisting them would mean every web surface withholds the code
|
|
359
359
|
// while the resolver forwards it unverified (or, for "multi", drops it
|
|
360
360
|
// silently), so the write is an honest rejection instead. Auto-detect
|
|
@@ -469,23 +469,23 @@ export async function run(
|
|
|
469
469
|
return { content: `Error: ${validation.error}`, isError: true };
|
|
470
470
|
}
|
|
471
471
|
|
|
472
|
-
//
|
|
473
|
-
// rather than a literal: without this, setting a
|
|
472
|
+
// Cloud speech has more than one STT id, so the gate reads the catalog
|
|
473
|
+
// rather than a literal: without this, setting a cloud provider other
|
|
474
474
|
// than "cadet" on a disconnected assistant persists happily and then
|
|
475
475
|
// resolves no transcriber at all.
|
|
476
|
-
const
|
|
476
|
+
const wantsCloudSpeech =
|
|
477
477
|
(setting === "stt_provider" &&
|
|
478
|
-
|
|
478
|
+
isCloudSttProvider(validation.coerced as SttProviderId)) ||
|
|
479
479
|
(setting === "tts_provider" && validation.coerced === "cadet");
|
|
480
|
-
if (
|
|
480
|
+
if (wantsCloudSpeech && !(await managedSpeechAvailable())) {
|
|
481
481
|
return {
|
|
482
482
|
content:
|
|
483
|
-
"Error:
|
|
483
|
+
"Error: cloud speech requires a Cadet Cloud connection. Run 'assistant cloud connect' first.",
|
|
484
484
|
isError: true,
|
|
485
485
|
};
|
|
486
486
|
}
|
|
487
487
|
|
|
488
|
-
// Recheck: the
|
|
488
|
+
// Recheck: the cloud-speech reachability probe above is an await, and the
|
|
489
489
|
// client broadcast and config write below are what the user would notice.
|
|
490
490
|
throwIfCancelled(context);
|
|
491
491
|
|