@mycadet/assistant 0.12.7 → 0.12.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/docs/activation-funnel-telemetry.md +6 -6
- package/docs/cadet-doctor.md +7 -7
- package/docs/desktop-browser-cli.md +7 -7
- package/docs/skills.md +2 -2
- package/docs/voice-input-diagnostics.md +1 -1
- package/eslint-rules/__tests__/cli-no-daemon-internals.test.ts +2 -2
- package/node_modules/@mycadet/avatar-manifest/src/__tests__/notification-avatar.test.ts +1 -1
- package/node_modules/@mycadet/avatar-manifest/src/notification-avatar.ts +2 -2
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/package.json +1 -1
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/{platform-credential.ts → cloud-credential.ts} +9 -9
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/handles.ts +3 -3
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/index.ts +1 -1
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/ingress.ts +11 -5
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/remote-web-pairing.ts +1 -1
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/rpc.ts +14 -14
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/trust-rules.ts +5 -5
- package/node_modules/@mycadet/ces-client/src/rpc-client.ts +1 -1
- package/node_modules/@mycadet/credential-storage/src/oauth-runtime.ts +1 -1
- package/node_modules/@mycadet/credential-storage/src/static-credentials.ts +1 -1
- package/node_modules/@mycadet/environments/src/seeds.ts +6 -6
- package/node_modules/@mycadet/environments/src/shell.test.ts +1 -1
- package/node_modules/@mycadet/environments/src/types.ts +6 -6
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/package.json +1 -1
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/{platform-credential.ts → cloud-credential.ts} +9 -9
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/handles.ts +3 -3
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/index.ts +1 -1
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/ingress.ts +11 -5
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/remote-web-pairing.ts +1 -1
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/rpc.ts +14 -14
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/trust-rules.ts +5 -5
- package/node_modules/@mycadet/gateway-client/src/binding-strength-contract.ts +5 -5
- package/node_modules/@mycadet/gateway-client/src/gateway-ipc-contracts.ts +1 -1
- package/node_modules/@mycadet/gateway-client/src/inbound-contract.ts +2 -2
- package/node_modules/@mycadet/gateway-client/src/outbound-contract.ts +1 -1
- package/node_modules/@mycadet/service-contracts/package.json +1 -1
- package/node_modules/@mycadet/service-contracts/src/{platform-credential.ts → cloud-credential.ts} +9 -9
- package/node_modules/@mycadet/service-contracts/src/handles.ts +3 -3
- package/node_modules/@mycadet/service-contracts/src/index.ts +1 -1
- package/node_modules/@mycadet/service-contracts/src/ingress.ts +11 -5
- package/node_modules/@mycadet/service-contracts/src/remote-web-pairing.ts +1 -1
- package/node_modules/@mycadet/service-contracts/src/rpc.ts +14 -14
- package/node_modules/@mycadet/service-contracts/src/trust-rules.ts +5 -5
- package/openapi.yaml +6815 -794
- package/package.json +2 -2
- package/scripts/build-test-fixtures.ts +1 -1
- package/scripts/probe-skill-retrieval.ts +1 -1
- package/scripts/sync-llm-catalog.ts +2 -2
- package/scripts/voice-ttft-spike.ts +2 -2
- package/src/__tests__/adaptive-thinking-repair.test.ts +4 -4
- package/src/__tests__/agent-loop-override-profile.test.ts +4 -4
- package/src/__tests__/agent-loop-subagent-billing-headers.test.ts +1 -1
- package/src/__tests__/anthropic-provider.test.ts +2 -2
- package/src/__tests__/available-skills.test.ts +11 -12
- package/src/__tests__/avatar-identity-sync.test.ts +1 -1
- package/src/__tests__/byok-default-profile-ensure.test.ts +7 -7
- package/src/__tests__/call-domain.test.ts +1 -1
- package/src/__tests__/call-site-routing-connection-auto-resolve.test.ts +2 -2
- package/src/__tests__/catalog-files.test.ts +10 -10
- package/src/__tests__/catalog-install-normalize.test.ts +3 -3
- package/src/__tests__/channel-availability-routes.test.ts +8 -8
- package/src/__tests__/channel-readiness-routes.test.ts +4 -4
- package/src/__tests__/channel-readiness-service.test.ts +14 -14
- package/src/__tests__/channel-readiness-telegram-remote.test.ts +1 -1
- package/src/__tests__/chat-reveal-guard-priming.test.ts +5 -6
- package/src/__tests__/checker.test.ts +6 -6
- package/src/__tests__/clawhub.test.ts +1 -1
- package/src/__tests__/{platform-callback-registration.test.ts → cloud-callback-registration.test.ts} +66 -90
- package/src/__tests__/{platform-client-verify-credential.test.ts → cloud-client-verify-credential.test.ts} +14 -14
- package/src/__tests__/{managed-credential-catalog-cli.test.ts → cloud-credential-catalog-cli.test.ts} +41 -41
- package/src/__tests__/{managed-fallback-dispatch.test.ts → cloud-fallback-dispatch.test.ts} +21 -16
- package/src/__tests__/{managed-profile-guard.test.ts → cloud-profile-guard.test.ts} +60 -60
- package/src/__tests__/{platform-proxy-context.test.ts → cloud-proxy-context.test.ts} +44 -44
- package/src/__tests__/{managed-speech-defaults.test.ts → cloud-speech-defaults.test.ts} +41 -41
- package/src/__tests__/{managed-store.test.ts → cloud-store.test.ts} +99 -99
- package/src/__tests__/compaction-events.test.ts +7 -5
- package/src/__tests__/config-loader-backfill.test.ts +65 -65
- package/src/__tests__/config-loader-cloud-defaults.test.ts +373 -0
- package/src/__tests__/config-loader-corrupt.test.ts +1 -1
- package/src/__tests__/config-loader-validation-reset-notice.test.ts +1 -1
- package/src/__tests__/config-schema.test.ts +3 -3
- package/src/__tests__/{config-set-platform-guard.test.ts → config-set-cloud-guard.test.ts} +6 -6
- package/src/__tests__/config-watcher-cleanup-throttle.test.ts +0 -8
- package/src/__tests__/config-watcher.test.ts +1 -1
- package/src/__tests__/contacts-write.test.ts +1 -1
- package/src/__tests__/conversation-agent-loop.test.ts +2 -2
- package/src/__tests__/conversation-app-control-instantiation.test.ts +18 -18
- package/src/__tests__/conversation-error.test.ts +45 -45
- package/src/__tests__/conversation-inference-profile-route.test.ts +4 -4
- package/src/__tests__/conversation-rendered-delegation-state.test.ts +4 -4
- package/src/__tests__/conversation-skill-tools.test.ts +7 -8
- package/src/__tests__/conversation-slash.test.ts +2 -2
- package/src/__tests__/conversation-speed-override.test.ts +8 -10
- package/src/__tests__/conversation-summarize-up-to.test.ts +4 -4
- package/src/__tests__/conversation-surfaces-activation-emit.test.ts +1 -1
- package/src/__tests__/conversation-wait-for-idle.test.ts +7 -5
- package/src/__tests__/credential-execution-api-key-propagation.test.ts +5 -5
- package/src/__tests__/{credential-execution-managed-contract.test.ts → credential-execution-cloud-contract.test.ts} +24 -24
- package/src/__tests__/credential-health-service.test.ts +27 -41
- package/src/__tests__/credential-routes.test.ts +85 -165
- package/src/__tests__/credential-security-invariants.test.ts +6 -7
- package/src/__tests__/custom-profile-ensure.test.ts +1 -1
- package/src/__tests__/date-context.test.ts +1 -1
- package/src/__tests__/default-profile-catalog-fallback.test.ts +15 -15
- package/src/__tests__/delete-managed-skill-tool.test.ts +8 -8
- package/src/__tests__/discord-callback-round-trip.test.ts +1 -1
- package/src/__tests__/disk-usage.test.ts +3 -3
- package/src/__tests__/email-invite-adapter.test.ts +5 -5
- package/src/__tests__/{embedding-managed-proxy-selection.test.ts → embedding-cloud-proxy-selection.test.ts} +44 -43
- package/src/__tests__/emit-signal-routing-intent.test.ts +13 -15
- package/src/__tests__/events-dev-bypass-actor.test.ts +2 -2
- package/src/__tests__/fallback-breaker.test.ts +7 -7
- package/src/__tests__/feature-flag-test-helpers.ts +106 -0
- package/src/__tests__/gateway-flag-listener.test.ts +1 -1
- package/src/__tests__/gemini-image-service.test.ts +2 -2
- package/src/__tests__/gemini-provider.test.ts +5 -5
- package/src/__tests__/get-skill-detail-audit.test.ts +9 -8
- package/src/__tests__/guardian-verification-voice-binding.test.ts +1 -1
- package/src/__tests__/handlers-skills-memory-v2-reseed.test.ts +5 -5
- package/src/__tests__/host-cu-routes-targeted.test.ts +8 -8
- package/src/__tests__/image-credentials.test.ts +13 -13
- package/src/__tests__/inbound-admitted-introduction-nudge.test.ts +14 -6
- package/src/__tests__/inbound-trust-verdict.test.ts +14 -6
- package/src/__tests__/inference-no-mode-boot-e2e.test.ts +11 -11
- package/src/__tests__/inference-profile-session-handler.test.ts +7 -7
- package/src/__tests__/inference-profile-session-ipc.test.ts +5 -5
- package/src/__tests__/inference-profile-validation-jev.test.ts +1 -1
- package/src/__tests__/init-feature-flag-overrides.test.ts +40 -24
- package/src/__tests__/input-repairs.test.ts +1 -1
- package/src/__tests__/install-skill-routing.test.ts +10 -8
- package/src/__tests__/integration-status.test.ts +5 -5
- package/src/__tests__/internal-telemetry-routes.test.ts +3 -3
- package/src/__tests__/invite-routes-http.test.ts +1 -1
- package/src/__tests__/llm-catalog-parity.test.ts +5 -7
- package/src/__tests__/llm-request-log-source-clickhouse.test.ts +2 -2
- package/src/__tests__/llm-resolver-override-or-default.test.ts +3 -3
- package/src/__tests__/llm-resolver.test.ts +1 -1
- package/src/__tests__/llm-schema-fallback-profile.test.ts +25 -19
- package/src/__tests__/llm-usage-store.test.ts +1 -1
- package/src/__tests__/managed-skill-lifecycle.test.ts +12 -12
- package/src/__tests__/mcp-abort-signal.test.ts +2 -2
- package/src/__tests__/mcp-client-auth.test.ts +2 -2
- package/src/__tests__/mcp-tool-annotations-risk.test.ts +2 -2
- package/src/__tests__/media-generate-image.test.ts +30 -30
- package/src/__tests__/memory-config-file-parity.test.ts +6 -6
- package/src/__tests__/migration-export-to-gcs.test.ts +4 -4
- package/src/__tests__/migration-import-commit-http.test.ts +1 -1
- package/src/__tests__/mtime-cache.test.ts +2 -2
- package/src/__tests__/{notification-platform-adapter.test.ts → notification-cloud-adapter.test.ts} +39 -39
- package/src/__tests__/notification-deep-link.test.ts +40 -40
- package/src/__tests__/oauth-apps-routes.test.ts +3 -3
- package/src/__tests__/oauth-cli.test.ts +9 -9
- package/src/__tests__/oauth-commands-routes.test.ts +16 -16
- package/src/__tests__/oauth-connect-orchestrator.test.ts +2 -2
- package/src/__tests__/oauth-provider-serializer.test.ts +11 -11
- package/src/__tests__/oauth-providers-routes.test.ts +12 -12
- package/src/__tests__/oauth-store.test.ts +1 -1
- package/src/__tests__/oauth2-gateway-transport.test.ts +3 -3
- package/src/__tests__/onboarding-persona-write.test.ts +2 -2
- package/src/__tests__/openai-image-service.test.ts +2 -2
- package/src/__tests__/openai-responses-cutover-guard.test.ts +2 -2
- package/src/__tests__/openai-responses-provider.test.ts +1 -1
- package/src/__tests__/path-policy.test.ts +4 -4
- package/src/__tests__/personal-memory-auth-bypass.test.ts +1 -1
- package/src/__tests__/platform-bash-auto-approve.test.ts +18 -18
- package/src/__tests__/plugin-api-model-profiles.test.ts +1 -1
- package/src/__tests__/plugin-api-provider.test.ts +1 -1
- package/src/__tests__/plugin-api-webhook-url.test.ts +4 -5
- package/src/__tests__/plugin-import-boundary-guard.test.ts +8 -39
- package/src/__tests__/plugin-import-boundary-reverse-guard.test.ts +2 -2
- package/src/__tests__/{provider-platform-proxy-integration.test.ts → provider-cloud-proxy-integration.test.ts} +70 -72
- package/src/__tests__/provider-commit-message-generator.test.ts +1 -1
- package/src/__tests__/provider-connections-backfill.test.ts +9 -9
- package/src/__tests__/provider-error-scenarios.test.ts +8 -8
- package/src/__tests__/provider-registry-ollama.test.ts +1 -1
- package/src/__tests__/provider-send-message-override-profile.test.ts +5 -5
- package/src/__tests__/registry.test.ts +3 -3
- package/src/__tests__/requests-mock.ts +972 -0
- package/src/__tests__/resolve-trust-class.test.ts +1 -1
- package/src/__tests__/resource-pressure-guard.test.ts +6 -6
- package/src/__tests__/resource-pressure-routes.test.ts +5 -5
- package/src/__tests__/retry-fallback-escalation.test.ts +5 -5
- package/src/__tests__/sanitize-config-for-transfer.test.ts +1 -1
- package/src/__tests__/scaffold-managed-skill-tool.test.ts +97 -97
- package/src/__tests__/schedule-store.test.ts +1 -1
- package/src/__tests__/search-skills-unified.test.ts +9 -7
- package/src/__tests__/{secret-routes-platform-proxy.test.ts → secret-routes-cloud-proxy.test.ts} +48 -95
- package/src/__tests__/secret-routes-scrub.test.ts +2 -59
- package/src/__tests__/secure-keys.test.ts +1 -1
- package/src/__tests__/skill-load-plugin-scope.test.ts +2 -2
- package/src/__tests__/skill-load-tool.test.ts +1 -1
- package/src/__tests__/skill-projection-feature-flag.test.ts +0 -19
- package/src/__tests__/skill-projection.benchmark.test.ts +5 -7
- package/src/__tests__/skill-tool-factory.test.ts +1 -1
- package/src/__tests__/skills-file-content-endpoint.test.ts +12 -12
- package/src/__tests__/skills-files-catalog-fallback.test.ts +9 -9
- package/src/__tests__/skills.test.ts +1 -1
- package/src/__tests__/slim-skill-category.test.ts +11 -9
- package/src/__tests__/stt-stream-session.test.ts +3 -3
- package/src/__tests__/subagent-call-site-routing.test.ts +1 -1
- package/src/__tests__/subagent-disposal.test.ts +5 -5
- package/src/__tests__/subagent-fork-notifications.test.ts +4 -4
- package/src/__tests__/subagent-fork-spawn.test.ts +5 -5
- package/src/__tests__/subagent-manager-notify.test.ts +5 -5
- package/src/__tests__/subagent-tool-gate-mode.test.ts +2 -2
- package/src/__tests__/system-prompt.test.ts +1 -1
- package/src/__tests__/telegram-bot-username-resolution.test.ts +34 -52
- package/src/__tests__/telegram-config.test.ts +16 -16
- package/src/__tests__/telephony-tts-guard.test.ts +13 -13
- package/src/__tests__/test-preload.ts +17 -7
- package/src/__tests__/tool-audit.test.ts +1 -1
- package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +7 -5
- package/src/__tests__/tool-executor-lifecycle-events.test.ts +1 -1
- package/src/__tests__/turn-events-store.test.ts +1 -1
- package/src/__tests__/twilio-routes.test.ts +2 -1
- package/src/__tests__/ui-choice-copy-surfaces.test.ts +1 -1
- package/src/__tests__/unified-turn-context-client-os.test.ts +1 -1
- package/src/__tests__/validate-input.test.ts +5 -5
- package/src/__tests__/verification-outbound-delivery.test.ts +1 -1
- package/src/__tests__/voice-config-update.test.ts +15 -15
- package/src/__tests__/voice-ingress-preflight.test.ts +4 -4
- package/src/__tests__/web-search.test.ts +340 -859
- package/src/__tests__/workspace-git-service.test.ts +1 -1
- package/src/__tests__/workspace-migration-082-backfill-managed-profile-labels.test.ts +12 -12
- package/src/__tests__/workspace-migration-087-memory-router-balanced-profile.test.ts +1 -1
- package/src/__tests__/workspace-migration-090-memory-router-cost-optimized-profile.test.ts +1 -1
- package/src/__tests__/workspace-migration-100-upgrade-quality-profile-to-fable-5.test.ts +1 -1
- package/src/__tests__/workspace-migration-103-upgrade-quality-profile-to-opus-4-8.test.ts +1 -1
- package/src/__tests__/workspace-migration-110-flip-balanced-profile-to-together.test.ts +1 -1
- package/src/__tests__/workspace-migration-113-swap-balanced-profile-to-glm-5p2.test.ts +1 -1
- package/src/__tests__/workspace-migration-114-swap-quality-profile-to-opus.test.ts +1 -1
- package/src/__tests__/workspace-migration-123-swap-quality-profile-to-fable.test.ts +1 -1
- package/src/__tests__/workspace-migration-125-repoint-managed-connections-to-cadet.test.ts +3 -3
- package/src/__tests__/workspace-migration-126-strip-managed-profile-bodies.test.ts +9 -9
- package/src/__tests__/workspace-migration-127-backfill-default-provider.test.ts +11 -11
- package/src/__tests__/workspace-migration-130-speech-mode-to-provider.test.ts +3 -3
- package/src/__tests__/workspace-migration-132-web-search-mode-to-provider.test.ts +6 -6
- package/src/__tests__/workspace-migration-133-collapse-provider-connections.test.ts +3 -3
- package/src/__tests__/workspace-migration-134-image-generation-mode-to-provider.test.ts +6 -6
- package/src/__tests__/workspace-migration-136-repair-stale-fireworks-kimi-model-id.test.ts +1 -1
- package/src/__tests__/workspace-migration-137-repair-retired-fireworks-minimax-model-id.test.ts +1 -1
- package/src/__tests__/workspace-migration-146-repair-retired-fireworks-deepseek-flash-model-id.test.ts +1 -1
- package/src/__tests__/workspace-migration-147-rename-colliding-backup-profile-names.test.ts +1 -1
- package/src/__tests__/workspace-migration-151-repair-renamed-fireworks-deepseek-pro-model-id.test.ts +1 -1
- package/src/__tests__/workspace-migration-152-repair-retired-fireworks-minimax-m2p7-model-id.test.ts +1 -1
- package/src/__tests__/workspace-migration-159-rename-colliding-jev-profile-name.test.ts +1 -1
- package/src/__tests__/workspace-migration-160-repair-retired-fireworks-model-ids.test.ts +1 -1
- package/src/__tests__/workspace-migration-161-repair-retired-fireworks-glm-5p2-model-id.test.ts +1 -1
- package/src/api/events/cloud-disconnected.ts +21 -0
- package/src/api/events/host-bash.ts +1 -1
- package/src/api/events/host-cu.ts +1 -1
- package/src/api/events/host-file.ts +1 -1
- package/src/api/events/notification-intent.ts +1 -1
- package/src/api/events/{show-platform-login.ts → show-cloud-login.ts} +3 -5
- package/src/api/index.ts +11 -11
- package/src/api/responses/home.ts +1 -1
- package/src/api/surfaces.ts +4 -4
- package/src/approvals/guardian-request-resolvers.ts +2 -2
- package/src/avatar/accent-backfill.ts +1 -1
- package/src/avatar/identity-avatar.ts +1 -1
- package/src/avatar/notification-avatar.test.ts +2 -2
- package/src/avatar/notification-avatar.ts +2 -2
- package/src/avatar/resvg-lazy.test.ts +1 -1
- package/src/avatar/resvg-lazy.ts +3 -3
- package/src/avatar/sync-avatar.test.ts +76 -76
- package/src/avatar/sync-avatar.ts +15 -15
- package/src/avatar/traits-png-sync.ts +1 -1
- package/src/background-wake/background-wake-routes.test.ts +39 -39
- package/src/background-wake/{platform-client.test.ts → cloud-client.test.ts} +11 -11
- package/src/background-wake/{platform-client.ts → cloud-client.ts} +14 -14
- package/src/background-wake/publisher.ts +4 -4
- package/src/background-wake/wake-intent-hooks.test.ts +3 -3
- package/src/calls/__tests__/call-controller.test.ts +2 -2
- package/src/calls/__tests__/voice-session-bridge.test.ts +1 -1
- package/src/calls/call-domain.ts +1 -1
- package/src/calls/resolve-call-tts-provider.ts +6 -6
- package/src/calls/telephony-credential-preflight.ts +3 -3
- package/src/calls/telephony-tts-capability.ts +5 -6
- package/src/calls/tts-call-strategy.ts +1 -1
- package/src/calls/voice-escalation-judge.ts +1 -1
- package/src/calls/voice-ingress-preflight.ts +4 -4
- package/src/cli/bundled-modules.ts +1 -1
- package/src/cli/commands/__tests__/apps.test.ts +18 -53
- package/src/cli/commands/__tests__/plugins.test.ts +13 -13
- package/src/cli/commands/__tests__/tts.test.ts +1 -1
- package/src/cli/commands/auth.help.ts +3 -3
- package/src/cli/commands/auth.ts +2 -4
- package/src/cli/commands/browser.help.ts +2 -2
- package/src/cli/commands/channels/index.help.ts +2 -2
- package/src/cli/commands/channels/index.ts +1 -1
- package/src/cli/commands/channels/send.ts +1 -1
- package/src/cli/commands/cloud/__tests__/connect.test.ts +1 -1
- package/src/cli/commands/cloud/__tests__/disconnect.test.ts +3 -4
- package/src/cli/commands/cloud/connect.ts +2 -2
- package/src/cli/commands/cloud/credits-format.ts +1 -1
- package/src/cli/commands/cloud/index.help.ts +35 -35
- package/src/cli/commands/config.ts +1 -1
- package/src/cli/commands/credentials.ts +10 -12
- package/src/cli/commands/domain.ts +1 -1
- package/src/cli/commands/email.help.ts +1 -1
- package/src/cli/commands/email.ts +2 -2
- package/src/cli/commands/gateway.help.ts +1 -1
- package/src/cli/commands/gateway.ts +1 -1
- package/src/cli/commands/image-generation.help.ts +1 -1
- package/src/cli/commands/inference-providers.ts +1 -1
- package/src/cli/commands/inference.help.ts +2 -2
- package/src/cli/commands/memory/index.help.ts +1 -1
- package/src/cli/commands/oauth/connect.test.ts +2 -2
- package/src/cli/commands/oauth/connect.ts +1 -1
- package/src/cli/commands/oauth/index.help.ts +5 -5
- package/src/cli/commands/oauth/providers.ts +2 -2
- package/src/cli/commands/oauth/shared.ts +3 -3
- package/src/cli/commands/plugins.help.ts +2 -3
- package/src/cli/commands/plugins.ts +5 -5
- package/src/cli/commands/roadmap.help.ts +1 -1
- package/src/cli/commands/telemetry.help.ts +2 -2
- package/src/cli/commands/telemetry.ts +2 -2
- package/src/cli/commands/tts.help.ts +3 -3
- package/src/cli/commands/webhooks.help.ts +9 -9
- package/src/cli/commands/webhooks.ts +1 -1
- package/src/cli/lib/__tests__/inspect-plugin.test.ts +8 -8
- package/src/cli/lib/__tests__/{install-from-platform.test.ts → install-from-cloud.test.ts} +54 -54
- package/src/cli/lib/__tests__/plugin-catalog-cache.test.ts +18 -18
- package/src/cli/lib/__tests__/{plugin-catalog-platform.test.ts → plugin-catalog-cloud.test.ts} +2 -2
- package/src/cli/lib/__tests__/plugin-catalog-local.test.ts +1 -1
- package/src/cli/lib/__tests__/plugin-catalog-resolve.test.ts +9 -9
- package/src/cli/lib/__tests__/plugin-details.test.ts +10 -10
- package/src/cli/lib/__tests__/plugins-install-offline.test.ts +24 -24
- package/src/cli/lib/bundled-marketplace.json +1 -1
- package/src/cli/lib/inspect-plugin.ts +2 -2
- package/src/cli/lib/{install-from-platform.ts → install-from-cloud.ts} +29 -29
- package/src/cli/lib/install-from-github.ts +4 -4
- package/src/cli/lib/plugin-catalog-cache.ts +7 -7
- package/src/cli/lib/{plugin-catalog-platform.ts → plugin-catalog-cloud.ts} +6 -6
- package/src/cli/lib/plugin-catalog-local.ts +2 -2
- package/src/cli/lib/publish-plugin.ts +9 -10
- package/src/cli/lib/search-plugins.ts +2 -2
- package/src/{platform → cloud}/client.test.ts +85 -86
- package/src/{platform → cloud}/client.ts +38 -46
- package/src/{platform/platform-patch-queue.test.ts → cloud/cloud-patch-queue.test.ts} +6 -9
- package/src/{platform/platform-patch-queue.ts → cloud/cloud-patch-queue.ts} +11 -11
- package/src/{platform/managed-speech.test.ts → cloud/cloud-speech.test.ts} +19 -19
- package/src/{platform/managed-speech.ts → cloud/cloud-speech.ts} +41 -41
- package/src/{platform → cloud}/consent-cache.test.ts +5 -5
- package/src/{platform → cloud}/consent-cache.ts +8 -8
- package/src/cloud/feature-gate.ts +8 -0
- package/src/{platform → cloud}/sync-identity.test.ts +4 -4
- package/src/{platform → cloud}/sync-identity.ts +6 -6
- package/src/config/__tests__/{platform-identity.test.ts → cloud-identity.test.ts} +54 -56
- package/src/config/__tests__/{platform-rehydration.test.ts → cloud-rehydration.test.ts} +47 -80
- package/src/config/__tests__/default-profile-catalog.test.ts +12 -12
- package/src/config/__tests__/default-provider.test.ts +4 -4
- package/src/config/__tests__/deployment-context-defaults.test.ts +23 -23
- package/src/config/__tests__/{jev-managed-profile.test.ts → jev-cloud-profile.test.ts} +3 -5
- package/src/config/__tests__/loader-callsite-strip-fallback.test.ts +2 -2
- package/src/config/__tests__/loader-last-known-good.test.ts +6 -6
- package/src/config/__tests__/loader-sparse-array-cleanup.test.ts +2 -2
- package/src/config/__tests__/profile-materialization.test.ts +7 -7
- package/src/config/__tests__/seed-default-provider.test.ts +17 -17
- package/src/config/__tests__/sync-gated-profiles.test.ts +20 -20
- package/src/config/__tests__/webhook-routing.test.ts +51 -51
- package/src/config/bundled-skills/computer-use/TOOLS.json +12 -12
- package/src/config/bundled-skills/messaging/SKILL.md +8 -8
- package/src/config/bundled-skills/messaging/TOOLS.json +2 -2
- package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +1 -1
- package/src/config/bundled-skills/messaging/tools/shared.ts +1 -1
- package/src/config/bundled-skills/phone-calls/references/TROUBLESHOOTING.md +2 -2
- package/src/config/bundled-skills/settings/TOOLS.json +3 -3
- package/src/config/bundled-skills/settings/tools/shared.ts +1 -1
- package/src/config/bundled-skills/settings/tools/voice-config-update.ts +12 -12
- package/src/config/bundled-skills/skill-management/SKILL.md +3 -3
- package/src/config/bundled-skills/skill-management/TOOLS.json +8 -8
- package/src/config/bundled-skills/skill-management/tools/{delete-managed.ts → delete-cloud.ts} +2 -2
- package/src/config/bundled-skills/skill-management/tools/{scaffold-managed.ts → scaffold-cloud.ts} +2 -2
- package/src/config/call-site-defaults.ts +6 -6
- package/src/config/{platform-identity.ts → cloud-identity.ts} +39 -42
- package/src/config/cloud-rehydration.ts +35 -0
- package/src/config/{managed-speech-defaults.ts → cloud-speech-defaults.ts} +13 -13
- package/src/config/default-profile-catalog.ts +36 -38
- package/src/config/default-profile-names.ts +11 -11
- package/src/config/default-provider-resolution.ts +2 -2
- package/src/config/default-provider.ts +1 -1
- package/src/config/env-registry.ts +23 -21
- package/src/config/env.ts +33 -46
- package/src/config/feature-flag-registry.json +5 -5
- package/src/config/inference-profile-validation.ts +1 -1
- package/src/config/llm-resolver.ts +9 -10
- package/src/config/loader.ts +33 -17
- package/src/config/profile-materialization.ts +8 -8
- package/src/config/profile-text-generation.test.ts +1 -1
- package/src/config/sanitize-for-transfer.ts +1 -1
- package/src/config/schema.ts +6 -6
- package/src/config/schemas/__tests__/stt.test.ts +2 -2
- package/src/config/schemas/call-site-catalog.ts +1 -1
- package/src/config/schemas/channels.ts +8 -0
- package/src/config/schemas/{platform.ts → cloud.ts} +7 -6
- package/src/config/schemas/host-browser.ts +1 -0
- package/src/config/schemas/ingress.ts +1 -12
- package/src/config/schemas/llm.ts +45 -36
- package/src/config/schemas/memory-lifecycle.ts +11 -1
- package/src/config/schemas/services.ts +4 -4
- package/src/config/schemas/stt.ts +3 -3
- package/src/config/schemas/tts.ts +10 -5
- package/src/config/schemas/voice.ts +1 -1
- package/src/config/seed-inference-profiles.ts +19 -19
- package/src/config/skill-state.ts +2 -2
- package/src/config/skills.ts +4 -4
- package/src/config/sync-gated-profiles.ts +8 -8
- package/src/config/webhook-routing.ts +19 -19
- package/src/contacts/contacts-write.ts +1 -1
- package/src/credential-execution/ces-runtime.ts +6 -6
- package/src/credential-execution/{managed-catalog.ts → cloud-catalog.ts} +24 -24
- package/src/credential-execution/prompted-credential.ts +6 -18
- package/src/credential-health/credential-health-service.ts +61 -76
- package/src/daemon/__tests__/can-spawn-subagents.test.ts +1 -1
- package/src/daemon/__tests__/conversation-tool-setup-exclude.test.ts +4 -4
- package/src/daemon/config-watcher.ts +2 -2
- package/src/daemon/conversation-agent-loop.ts +9 -9
- package/src/daemon/conversation-error.ts +36 -36
- package/src/daemon/conversation-skill-tools.ts +7 -7
- package/src/daemon/conversation-surfaces.ts +1 -1
- package/src/daemon/conversation-tool-setup.ts +2 -2
- package/src/daemon/conversation-turn-finalize.ts +1 -1
- package/src/daemon/conversation-workspace.ts +1 -1
- package/src/daemon/conversation.ts +1 -1
- package/src/daemon/credential-transcript-scrub.ts +21 -35
- package/src/daemon/daemon-readiness.ts +1 -1
- package/src/daemon/event-loop-watchdog.ts +2 -2
- package/src/daemon/handlers/config-ingress.ts +9 -9
- package/src/daemon/handlers/config-telegram.ts +6 -6
- package/src/daemon/handlers/skills.ts +20 -20
- package/src/daemon/host-cu-proxy.ts +1 -1
- package/src/daemon/lifecycle.ts +19 -19
- package/src/daemon/parse-actual-tokens-from-error.ts +3 -3
- package/src/daemon/providers-setup.ts +6 -6
- package/src/daemon/resource-pressure-guard-lifecycle.ts +1 -1
- package/src/daemon/resource-pressure-guard.ts +6 -6
- package/src/daemon/shutdown-handlers.ts +1 -1
- package/src/daemon/sqlite-corruption-watchdog.ts +3 -3
- package/src/daemon/trust-context.ts +1 -1
- package/src/desktop/desktop-automation-lease.ts +1 -1
- package/src/desktop/desktop-browser-endpoint.ts +2 -4
- package/src/desktop/desktop-computer-use-routing.test.ts +6 -6
- package/src/desktop/desktop-stream-bridge.test.ts +4 -4
- package/src/desktop/desktop-stream-bridge.ts +1 -1
- package/src/desktop/{virtual-desktop-platform.test.ts → virtual-desktop-cloud.test.ts} +6 -6
- package/src/desktop/virtual-desktop-feature.ts +7 -7
- package/src/email/byo-email-credential.ts +1 -1
- package/src/email/registered-inbox.test.ts +16 -16
- package/src/email/registered-inbox.ts +20 -20
- package/src/heartbeat/heartbeat-service.ts +1 -1
- package/src/hooks/hook-loader.ts +2 -2
- package/src/inbound/__tests__/oauth-callback-url.test.ts +2 -2
- package/src/inbound/__tests__/tunnel-probe.test.ts +8 -8
- package/src/inbound/{platform-callback-registration.ts → cloud-callback-registration.ts} +49 -60
- package/src/inbound/oauth-callback-url.ts +6 -6
- package/src/inbound/pod-webhook-claim.ts +2 -2
- package/src/inbound/public-ingress-urls.ts +3 -3
- package/src/inbound/tunnel-probe.ts +21 -15
- package/src/inbound/tunnel-webhooks-gate.ts +3 -3
- package/src/ipc/__tests__/db-readiness-ipc-gate.test.ts +1 -1
- package/src/ipc/__tests__/email-ipc.test.ts +8 -8
- package/src/ipc/gateway-client.test.ts +55 -59
- package/src/ipc/gateway-flag-listener.ts +3 -3
- package/src/ipc/routes/db-proxy.ts +1 -1
- package/src/live-voice/__tests__/live-activity-reporter.test.ts +2 -2
- package/src/live-voice/__tests__/{live-voice-managed-speech-fallback.test.ts → live-voice-cloud-speech-fallback.test.ts} +15 -15
- package/src/live-voice/__tests__/live-voice-credential-preflight.test.ts +7 -7
- package/src/live-voice/__tests__/live-voice-stt.test.ts +1 -1
- package/src/live-voice/live-activity-reporter.ts +7 -7
- package/src/live-voice/live-voice-credential-preflight.ts +6 -6
- package/src/live-voice/live-voice-session.ts +3 -3
- package/src/live-voice/live-voice-tts.ts +1 -1
- package/src/mcp/__tests__/mcp-oauth-client-registration.test.ts +4 -4
- package/src/mcp/__tests__/mcp-oauth-provider.test.ts +1 -1
- package/src/mcp/mcp-oauth-provider.ts +2 -2
- package/src/media/gemini-image-service.ts +11 -13
- package/src/media/image-credentials.ts +9 -9
- package/src/media/openai-image-service.ts +1 -1
- package/src/media/types.ts +3 -3
- package/src/messaging/providers/channel-transport.ts +1 -1
- package/src/messaging/providers/discord/transport.ts +1 -1
- package/src/messaging/providers/gmail/adapter.ts +1 -1
- package/src/messaging/providers/gmail/client.ts +4 -4
- package/src/messaging/providers/outlook/adapter.ts +1 -1
- package/src/messaging/providers/slack/adapter.ts +1 -1
- package/src/messaging/providers/slack/transport.ts +1 -1
- package/src/messaging/providers/telegram-bot/transport.ts +1 -1
- package/src/monitoring/db-integrity-check.ts +1 -1
- package/src/monitoring/db-integrity-sample.ts +2 -2
- package/src/monitoring/mount-watch.ts +1 -1
- package/src/monitoring/oom-kill-reporter.ts +1 -1
- package/src/monitoring/worker.ts +5 -5
- package/src/notifications/README.md +2 -2
- package/src/notifications/__tests__/broadcaster.test.ts +9 -9
- package/src/notifications/__tests__/completion-policy.test.ts +1 -1
- package/src/notifications/__tests__/emit-signal-pipeline-failure.test.ts +4 -4
- package/src/notifications/activity-failed-dedupe.ts +1 -1
- package/src/notifications/adapters/{platform.ts → cloud.ts} +8 -8
- package/src/notifications/broadcaster.ts +10 -10
- package/src/notifications/decision-engine.ts +1 -1
- package/src/notifications/destination-resolver.ts +1 -1
- package/src/notifications/emit-signal.ts +6 -6
- package/src/notifications/types.ts +2 -2
- package/src/oauth/__tests__/identity-verifier.test.ts +1 -1
- package/src/oauth/__tests__/{seed-providers-managed.test.ts → seed-providers-cloud.test.ts} +13 -13
- package/src/oauth/byo-connection.test.ts +2 -2
- package/src/oauth/{platform-connection.test.ts → cloud-connection.test.ts} +41 -43
- package/src/oauth/{platform-connection.ts → cloud-connection.ts} +19 -19
- package/src/oauth/connection-resolver.test.ts +59 -61
- package/src/oauth/connection-resolver.ts +22 -22
- package/src/oauth/connection.ts +1 -1
- package/src/oauth/oauth-store.ts +8 -8
- package/src/oauth/provider-serializer.ts +4 -4
- package/src/oauth/revoke.ts +1 -1
- package/src/oauth/seed-providers.ts +32 -32
- package/src/permissions/approval-provenance.ts +1 -1
- package/src/permissions/checker.test.ts +18 -16
- package/src/permissions/checker.ts +3 -3
- package/src/persistence/compaction-log-store-clickhouse.ts +3 -3
- package/src/persistence/embeddings/embedding-backend.test.ts +16 -16
- package/src/persistence/embeddings/embedding-backend.ts +13 -13
- package/src/persistence/embeddings/embedding-gemini.test.ts +9 -12
- package/src/persistence/embeddings/embedding-gemini.ts +11 -11
- package/src/persistence/embeddings/embedding-runtime-manager.ts +2 -2
- package/src/persistence/jobs-store.ts +1 -1
- package/src/persistence/lifecycle-events-store.ts +1 -1
- package/src/persistence/llm-request-log-sink-clickhouse.ts +3 -3
- package/src/persistence/llm-request-log-source-clickhouse.ts +3 -3
- package/src/persistence/migrations/224-oauth-providers-managed-service-is-paid.ts +1 -1
- package/src/persistence/migrations/296-rewrite-balanced-economy-profile-pins.test.ts +1 -1
- package/src/persistence/migrations/296-rewrite-balanced-economy-profile-pins.ts +2 -2
- package/src/persistence/migrations/306-rewrite-frontier-profile-pins.test.ts +1 -1
- package/src/persistence/migrations/306-rewrite-frontier-profile-pins.ts +1 -1
- package/src/persistence/migrations/351-schedule-skill-script-handoff.ts +1 -1
- package/src/persistence/migrations/361-normalize-managed-connection-rows.test.ts +3 -3
- package/src/persistence/migrations/361-normalize-managed-connection-rows.ts +7 -7
- package/src/persistence/migrations/__tests__/319-remove-legacy-managed-connections.test.ts +2 -2
- package/src/persistence/schema/oauth.ts +1 -1
- package/src/plugin-api/index.ts +4 -4
- package/src/plugin-api/model-profiles.test.ts +1 -1
- package/src/plugin-api/model-profiles.ts +1 -1
- package/src/plugin-api/transcription-session.ts +1 -1
- package/src/plugin-api/vision-support.test.ts +1 -1
- package/src/plugin-api/webhook-url.ts +12 -12
- package/src/plugins/__tests__/source-fingerprint.test.ts +1 -1
- package/src/plugins/defaults/{platform-hosted → cloud-hosted}/__tests__/reengage.test.ts +5 -6
- package/src/plugins/defaults/cloud-hosted/package.json +14 -0
- package/src/plugins/defaults/{platform-hosted → cloud-hosted}/routes/reengage.ts +3 -3
- package/src/plugins/defaults/index.ts +6 -6
- package/src/plugins/defaults/main.ts +5 -5
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-job.test.ts +5 -5
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-prompt.test.ts +1 -1
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-provider-path.test.ts +1 -1
- package/src/plugins/defaults/memory/config.ts +4 -4
- package/src/plugins/defaults/memory/memory-retrospective-constants.ts +2 -2
- package/src/plugins/defaults/memory/memory-retrospective-job.ts +7 -7
- package/src/plugins/defaults/memory/memory-retrospective-prompt.ts +5 -5
- package/src/plugins/defaults/memory/memory-retrospective-skill-card.ts +2 -2
- package/src/plugins/defaults/memory/src/__tests__/memory-v2-routes.test.ts +1 -1
- package/src/plugins/defaults/memory/src/__tests__/memory-worker-routes.test.ts +1 -1
- package/src/plugins/defaults/memory/substrate/__tests__/boot-maintenance.test.ts +20 -20
- package/src/plugins/defaults/memory/substrate/__tests__/cli-command-store.test.ts +1 -1
- package/src/plugins/defaults/memory/substrate/__tests__/skill-store.test.ts +3 -3
- package/src/plugins/defaults/memory/substrate/boot-maintenance.ts +17 -17
- package/src/plugins/defaults/memory/substrate/cli-command-store.ts +2 -2
- package/src/plugins/defaults/memory/substrate/prompts/consolidation.ts +1 -1
- package/src/plugins/defaults/memory/substrate/skill-store.ts +4 -4
- package/src/plugins/defaults/memory/v3/__tests__/maintain-job.test.ts +3 -3
- package/src/plugins/defaults/memory/v3/__tests__/pool-select.test.ts +2 -2
- package/src/plugins/defaults/memory/v3/maintain-job.ts +10 -10
- package/src/plugins/defaults/memory/v3/orchestrate.ts +3 -3
- package/src/plugins/defaults/memory/worker.ts +5 -5
- package/src/plugins/defaults/workspace/injectors.ts +2 -2
- package/src/plugins/mtime-cache.ts +1 -1
- package/src/plugins/source-versions.ts +1 -1
- package/src/plugins/types.ts +1 -1
- package/src/prompts/__tests__/system-prompt.test.ts +1 -1
- package/src/prompts/normalize-onboarding.ts +1 -1
- package/src/prompts/persona-resolver.ts +1 -1
- package/src/prompts/templates/system-sections.ts +3 -3
- package/src/providers/__tests__/cadet-connection-routing.test.ts +7 -7
- package/src/providers/__tests__/cadet-mismatch-routing.test.ts +12 -12
- package/src/providers/__tests__/connection-model-compat.test.ts +2 -2
- package/src/providers/__tests__/dispatch-connection-routing.test.ts +10 -10
- package/src/providers/__tests__/inference.test.ts +2 -2
- package/src/providers/__tests__/preflight-resolved-config.test.ts +16 -16
- package/src/providers/__tests__/retry-callsite.test.ts +1 -1
- package/src/providers/__tests__/satellite-connection-routing.test.ts +4 -4
- package/src/providers/__tests__/search-provider-catalog.test.ts +2 -2
- package/src/providers/__tests__/voice-error-copy.test.ts +3 -3
- package/src/providers/anthropic/client.ts +1 -1
- package/src/providers/cadet/client.ts +1 -1
- package/src/providers/cadet-model-routing.test.ts +19 -19
- package/src/providers/cadet-model-routing.ts +23 -23
- package/src/providers/call-site-routing.ts +10 -10
- package/src/providers/{platform-proxy → cloud-proxy}/constants.ts +11 -11
- package/src/providers/{platform-proxy → cloud-proxy}/context.ts +26 -26
- package/src/providers/connection-resolution.ts +43 -43
- package/src/providers/fallback-breaker.ts +2 -2
- package/src/providers/fetch-provider-catalog.ts +3 -3
- package/src/providers/gemini/client.ts +5 -5
- package/src/providers/inference/__tests__/adapter-factory-openai-compatible.test.ts +3 -3
- package/src/providers/inference/__tests__/base-url-route-validation.test.ts +8 -8
- package/src/providers/inference/__tests__/base-url-security.test.ts +4 -4
- package/src/providers/inference/adapter-factory.ts +35 -35
- package/src/providers/inference/auth.ts +10 -10
- package/src/providers/inference/backfill.ts +11 -11
- package/src/providers/inference/connection-availability.ts +24 -24
- package/src/providers/inference/connections.ts +18 -20
- package/src/providers/inference/profile-probe.ts +4 -4
- package/src/providers/inference/resolve-auth.ts +8 -8
- package/src/providers/jev/ask.test.ts +1 -1
- package/src/providers/jev/ask.ts +2 -2
- package/src/providers/model-catalog.ts +8 -9
- package/src/providers/openai/__tests__/api-error-normalization.test.ts +3 -3
- package/src/providers/openai/api-error-normalization.ts +2 -2
- package/src/providers/provider-availability.ts +4 -4
- package/src/providers/provider-env-vars.ts +1 -1
- package/src/providers/provider-secret-catalog.ts +1 -1
- package/src/providers/registry.ts +20 -20
- package/src/providers/retry.ts +26 -26
- package/src/providers/routing-identity.ts +10 -10
- package/src/providers/search-provider-catalog.ts +2 -2
- package/src/providers/speech-to-text/__tests__/{cadet-managed-realtime.test.ts → cadet-cloud-realtime.test.ts} +3 -3
- package/src/providers/speech-to-text/__tests__/{cadet-managed.test.ts → cadet-cloud.test.ts} +35 -35
- package/src/providers/speech-to-text/__tests__/deepgram-flux-realtime.test.ts +1 -1
- package/src/providers/speech-to-text/__tests__/resolve.test.ts +27 -27
- package/src/providers/speech-to-text/{cadet-managed-flux-realtime.ts → cadet-cloud-flux-realtime.ts} +6 -8
- package/src/providers/speech-to-text/{cadet-managed-realtime.ts → cadet-cloud-realtime.ts} +3 -3
- package/src/providers/speech-to-text/{cadet-managed.ts → cadet-cloud.ts} +18 -20
- package/src/providers/speech-to-text/cadet-speech-relay-connection.ts +7 -7
- package/src/providers/speech-to-text/deepgram-flux-frames.ts +3 -3
- package/src/providers/speech-to-text/deepgram-flux-realtime.ts +4 -4
- package/src/providers/speech-to-text/provider-catalog.ts +3 -3
- package/src/providers/speech-to-text/resolve.ts +26 -28
- package/src/providers/together/client.ts +1 -1
- package/src/providers/types.ts +4 -4
- package/src/providers/voice-error-copy.ts +1 -1
- package/src/runtime/__tests__/desktop-stream-upgrade.test.ts +10 -10
- package/src/runtime/agent-wake.ts +1 -1
- package/src/runtime/auth/__tests__/middleware.test.ts +1 -1
- package/src/runtime/auth/middleware.ts +1 -1
- package/src/runtime/auth/scopes.ts +1 -1
- package/src/runtime/capabilities.ts +1 -1
- package/src/runtime/channel-invite-transports/discord.ts +1 -1
- package/src/runtime/channel-invite-transports/email.ts +2 -2
- package/src/runtime/channel-readiness-service.ts +15 -13
- package/src/runtime/channel-reply-session.test.ts +1 -1
- package/src/runtime/channel-reply-session.ts +1 -1
- package/src/runtime/http-server.ts +4 -4
- package/src/runtime/introduction-policy.ts +4 -4
- package/src/runtime/migrations/__tests__/origin-mode.test.ts +14 -14
- package/src/runtime/migrations/__tests__/v1-test-helpers.ts +1 -1
- package/src/runtime/migrations/__tests__/vbundle-import-version-compat.test.ts +2 -2
- package/src/runtime/migrations/__tests__/vbundle-metadata-merge-integration.test.ts +3 -4
- package/src/runtime/migrations/__tests__/vbundle-metadata-merge.test.ts +6 -7
- package/src/runtime/migrations/__tests__/vbundle-validator-v1-schema.test.ts +1 -1
- package/src/runtime/migrations/migration-transport.ts +3 -3
- package/src/runtime/migrations/origin-mode.ts +6 -9
- package/src/runtime/migrations/vbundle-import-policy.ts +2 -2
- package/src/runtime/migrations/vbundle-importer.ts +4 -4
- package/src/runtime/migrations/vbundle-streaming-importer.ts +6 -6
- package/src/runtime/migrations/vbundle-validator.ts +1 -1
- package/src/runtime/routes/__tests__/{platform-credits-routes.test.ts → cloud-credits-routes.test.ts} +9 -9
- package/src/runtime/routes/__tests__/{platform-invoice-routes.test.ts → cloud-invoice-routes.test.ts} +13 -13
- package/src/runtime/routes/__tests__/connection-routes-vs-cli-parity.test.ts +1 -1
- package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +26 -25
- package/src/runtime/routes/__tests__/default-plugin-routes.test.ts +5 -5
- package/src/runtime/routes/__tests__/default-provider-routes.test.ts +10 -10
- package/src/runtime/routes/__tests__/inference-profiles-routes.test.ts +18 -18
- package/src/runtime/routes/__tests__/inference-provider-connection-routes.test.ts +18 -16
- package/src/runtime/routes/__tests__/inference-send-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/ingress-status-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/migration-cadet-metadata-reconcile.test.ts +5 -20
- package/src/runtime/routes/__tests__/migration-import-credential-filter.test.ts +19 -22
- package/src/runtime/routes/__tests__/oauth-proxy-routes.test.ts +27 -27
- package/src/runtime/routes/__tests__/plugins-routes.test.ts +5 -5
- package/src/runtime/routes/__tests__/ps-routes.test.ts +5 -3
- package/src/runtime/routes/__tests__/roadmap-routes.test.ts +15 -15
- package/src/runtime/routes/__tests__/webhook-routes.test.ts +31 -31
- package/src/runtime/routes/app-management-routes.ts +1 -1
- package/src/runtime/routes/attachment-routes.ts +1 -1
- package/src/runtime/routes/auth-routes.ts +14 -14
- package/src/runtime/routes/avatar-routes.ts +0 -14
- package/src/runtime/routes/background-wake-routes.ts +4 -4
- package/src/runtime/routes/channel-availability-routes.ts +4 -4
- package/src/runtime/routes/client-routes.ts +5 -5
- package/src/runtime/routes/cloud-credentials.ts +45 -0
- package/src/runtime/routes/{platform-routes.ts → cloud-routes.ts} +83 -116
- package/src/runtime/routes/conversation-compaction-routes.ts +1 -1
- package/src/runtime/routes/conversation-query-routes.ts +82 -282
- package/src/runtime/routes/credential-routes.ts +28 -30
- package/src/runtime/routes/default-provider-routes.ts +1 -1
- package/src/runtime/routes/desktop-setup-routes.test.ts +5 -5
- package/src/runtime/routes/desktop-setup-routes.ts +1 -1
- package/src/runtime/routes/domain-routes.ts +15 -21
- package/src/runtime/routes/email-routes.ts +13 -13
- package/src/runtime/routes/errors.ts +1 -1
- package/src/runtime/routes/gateway-status-routes.ts +1 -1
- package/src/runtime/routes/identity-routes.ts +3 -3
- package/src/runtime/routes/inbound-message-handler.ts +1 -1
- package/src/runtime/routes/inbound-stages/acl-enforcement.ts +1 -1
- package/src/runtime/routes/inbound-stages/transcribe-audio.test.ts +1 -1
- package/src/runtime/routes/index.ts +1 -1
- package/src/runtime/routes/inference-profile-availability-guard.ts +5 -5
- package/src/runtime/routes/inference-profiles-routes.ts +11 -11
- package/src/runtime/routes/inference-provider-connection-routes.ts +24 -24
- package/src/runtime/routes/ingress-status-routes.ts +1 -1
- package/src/runtime/routes/integrations/a2a.ts +2 -2
- package/src/runtime/routes/integrations/twilio.ts +21 -35
- package/src/runtime/routes/internal-telemetry-routes.ts +2 -2
- package/src/runtime/routes/live-voice-routes.test.ts +4 -4
- package/src/runtime/routes/live-voice-routes.ts +6 -6
- package/src/runtime/routes/migration-routes.ts +34 -40
- package/src/runtime/routes/oauth-commands-routes.ts +31 -31
- package/src/runtime/routes/oauth-providers.ts +5 -5
- package/src/runtime/routes/oauth-proxy-passthrough.test.ts +1 -1
- package/src/runtime/routes/oauth-proxy-passthrough.ts +8 -8
- package/src/runtime/routes/oauth-proxy-routes.ts +15 -17
- package/src/runtime/routes/oauth-request-hints.test.ts +1 -1
- package/src/runtime/routes/oauth-request-hints.ts +1 -1
- package/src/runtime/routes/plugins-routes.ts +9 -9
- package/src/runtime/routes/profiler-routes.ts +1 -1
- package/src/runtime/routes/ps-routes.ts +4 -0
- package/src/runtime/routes/roadmap-routes.ts +18 -20
- package/src/runtime/routes/secret-routes.ts +29 -55
- package/src/runtime/routes/settings-routes.ts +18 -23
- package/src/runtime/routes/telemetry-routes.ts +4 -4
- package/src/runtime/routes/tts-routes.ts +4 -4
- package/src/runtime/routes/user-route-resolution.ts +1 -1
- package/src/runtime/routes/webhook-routes.ts +18 -18
- package/src/runtime/routes/workflow-routes.ts +5 -5
- package/src/runtime/sync/resource-sync-events.ts +2 -2
- package/src/runtime/verification-outbound-actions.ts +4 -4
- package/src/schedule/integration-status.ts +6 -6
- package/src/schedule/run-script.ts +1 -1
- package/src/schedule/schedule-timezone.ts +1 -1
- package/src/schedule/worker.ts +5 -5
- package/src/security/auth-fallback-events-store.ts +1 -1
- package/src/security/oauth2.ts +4 -4
- package/src/skills/available-skills.ts +4 -4
- package/src/skills/catalog-files.ts +8 -8
- package/src/skills/catalog-install.ts +12 -12
- package/src/skills/categories-cache.ts +3 -3
- package/src/skills/clawhub.ts +1 -1
- package/src/skills/{platform-compatibility.test.ts → cloud-compatibility.test.ts} +7 -7
- package/src/skills/{platform-compatibility.ts → cloud-compatibility.ts} +2 -4
- package/src/skills/{managed-store.ts → cloud-store.ts} +21 -23
- package/src/skills/inline-command-runner.ts +1 -1
- package/src/skills/install-meta.ts +1 -1
- package/src/skills/path-classifier.ts +4 -4
- package/src/skills/skill-history.ts +4 -4
- package/src/skills/skillssh-registry.ts +1 -1
- package/src/stt/__tests__/daemon-batch-transcriber.test.ts +1 -1
- package/src/stt/daemon-batch-transcriber.ts +7 -7
- package/src/stt/types.ts +3 -3
- package/src/subagent/manager.ts +15 -15
- package/src/subagent/types.ts +1 -1
- package/src/telegram/__tests__/webhook-health.test.ts +16 -16
- package/src/telegram/webhook-health.ts +10 -10
- package/src/telemetry/__tests__/config-setting-events-store.test.ts +1 -1
- package/src/telemetry/__tests__/outbox-test-harness.ts +2 -2
- package/src/telemetry/config-setting-events-store.ts +1 -1
- package/src/telemetry/config-setting-snapshot.ts +1 -1
- package/src/telemetry/memory-corpus-size.ts +1 -1
- package/src/telemetry/memory-tier-reporter.test.ts +2 -2
- package/src/telemetry/memory-tier-reporter.ts +3 -3
- package/src/telemetry/telemetry-event-sources.test.ts +2 -2
- package/src/telemetry/telemetry-event-sources.ts +9 -9
- package/src/telemetry/telemetry-events-outbox.ts +2 -2
- package/src/telemetry/telemetry-wire-validation.test.ts +1 -1
- package/src/telemetry/telemetry-wire-validation.ts +3 -3
- package/src/telemetry/telemetry-wire.generated.ts +1 -1
- package/src/telemetry/tool-audit.ts +1 -1
- package/src/telemetry/tool-executed-events-store.test.ts +1 -1
- package/src/telemetry/trace-collection-policy.ts +4 -4
- package/src/telemetry/turn-events-store.ts +1 -1
- package/src/telemetry/turn-outcome.ts +1 -1
- package/src/telemetry/turn-trace-store.ts +2 -2
- package/src/telemetry/types.test.ts +1 -1
- package/src/telemetry/types.ts +19 -19
- package/src/telemetry/usage-telemetry-reporter.test.ts +42 -42
- package/src/telemetry/usage-telemetry-reporter.ts +17 -17
- package/src/telemetry/watchdog-direct-emit.test.ts +9 -9
- package/src/telemetry/watchdog-direct-emit.ts +10 -10
- package/src/tools/__tests__/side-effect-abort-guard.test.ts +2 -2
- package/src/tools/browser/cdp-client/factory.ts +1 -1
- package/src/tools/computer-use/target.ts +2 -2
- package/src/tools/credentials/store.ts +6 -15
- package/src/tools/network/__tests__/{managed-search-proxy.test.ts → cloud-search-proxy.test.ts} +20 -20
- package/src/tools/network/__tests__/web-search.test.ts +14 -14
- package/src/tools/network/{managed-search-proxy.ts → cloud-search-proxy.ts} +13 -13
- package/src/tools/network/web-search.ts +9 -9
- package/src/tools/permission-checker.ts +2 -2
- package/src/tools/shared/input-misuse.ts +1 -1
- package/src/tools/shared/input-repairs.ts +4 -4
- package/src/tools/skills/{delete-managed.ts → delete-cloud.ts} +4 -4
- package/src/tools/skills/find-similar-skills.test.ts +7 -7
- package/src/tools/skills/find-similar-skills.ts +15 -15
- package/src/tools/skills/load.ts +6 -6
- package/src/tools/skills/{scaffold-managed.ts → scaffold-cloud.ts} +16 -16
- package/src/tools/skills/skill-script-runner.ts +2 -2
- package/src/tools/terminal/safe-env.ts +3 -3
- package/src/tools/tool-types.ts +2 -2
- package/src/tools/types.ts +2 -2
- package/src/tools/ui-surface/surface-shape-docs.ts +2 -2
- package/src/tools/workflows/manage-workflows.ts +1 -1
- package/src/tools/workspace-tools/loader.ts +1 -1
- package/src/tts/__tests__/cadet-provider.test.ts +5 -5
- package/src/tts/provider-catalog.ts +1 -1
- package/src/tts/providers/cadet-provider.ts +23 -23
- package/src/tts/providers/cadet-tts-socket.ts +2 -2
- package/src/tts/tts-config-resolver.ts +1 -1
- package/src/tts/tts-voice-field.ts +3 -3
- package/src/usage/subagent-attribution.ts +1 -1
- package/src/util/__tests__/process-table.test.ts +47 -0
- package/src/util/canonicalize-identity.ts +1 -1
- package/src/util/cgroup-cpu.ts +5 -5
- package/src/util/cgroup-memory.ts +2 -2
- package/src/util/container-cpu-sampler.ts +4 -4
- package/src/util/disk-usage.ts +4 -4
- package/src/util/errors.ts +3 -3
- package/src/util/oom-priority.ts +1 -1
- package/src/util/platform.ts +5 -5
- package/src/util/process-table.ts +39 -5
- package/src/util/provider-error-patterns.ts +2 -2
- package/src/watch/__tests__/watch-retro.test.ts +2 -2
- package/src/watch/watch-retro.ts +1 -1
- package/src/watcher/__tests__/telemetry.test.ts +2 -2
- package/src/watcher/telemetry.ts +1 -1
- package/src/windows-compiled-cli.ts +1 -1
- package/src/workspace/adaptive-thinking-repair.ts +4 -4
- package/src/workspace/byok-default-profile-ensure.ts +7 -7
- package/src/workspace/git-service.ts +2 -2
- package/src/workspace/migrations/006-services-config.ts +1 -1
- package/src/workspace/migrations/040-seed-latency-callsite-defaults.ts +1 -1
- package/src/workspace/migrations/052-seed-default-inference-profiles.ts +1 -1
- package/src/workspace/migrations/063-release-notes-dynamic-model-context.ts +1 -1
- package/src/workspace/migrations/066-seed-heartbeat-callsite-cost-default.ts +1 -1
- package/src/workspace/migrations/082-backfill-managed-profile-labels.ts +4 -4
- package/src/workspace/migrations/087-memory-router-balanced-profile.ts +3 -3
- package/src/workspace/migrations/090-memory-router-cost-optimized-profile.ts +4 -4
- package/src/workspace/migrations/097-enable-adaptive-thinking-managed-profiles.ts +5 -5
- package/src/workspace/migrations/100-upgrade-quality-profile-to-fable-5.ts +4 -4
- package/src/workspace/migrations/101-upgrade-balanced-economy-to-minimax-m3.ts +4 -4
- package/src/workspace/migrations/103-upgrade-quality-profile-to-opus-4-8.ts +5 -5
- package/src/workspace/migrations/104-recheck-adaptive-thinking-model-implied-anthropic.ts +1 -1
- package/src/workspace/migrations/106-drop-collect-usage-data.ts +1 -1
- package/src/workspace/migrations/108-drop-balanced-economy-profile.ts +4 -4
- package/src/workspace/migrations/109-swap-quality-profile-to-glm-5p2.ts +11 -11
- package/src/workspace/migrations/110-flip-balanced-profile-to-together.ts +6 -6
- package/src/workspace/migrations/113-swap-balanced-profile-to-glm-5p2.ts +5 -5
- package/src/workspace/migrations/114-swap-quality-profile-to-opus.ts +4 -4
- package/src/workspace/migrations/115-drop-frontier-profile.ts +5 -5
- package/src/workspace/migrations/123-swap-quality-profile-to-fable.ts +5 -5
- package/src/workspace/migrations/125-repoint-managed-connections-to-cadet.ts +3 -3
- package/src/workspace/migrations/126-strip-managed-profile-bodies.ts +2 -2
- package/src/workspace/migrations/127-backfill-default-provider.ts +4 -4
- package/src/workspace/migrations/130-speech-mode-to-provider.ts +4 -4
- package/src/workspace/migrations/131-drop-web-fetch-mode.ts +1 -1
- package/src/workspace/migrations/132-web-search-mode-to-provider.ts +6 -6
- package/src/workspace/migrations/133-collapse-provider-connections.ts +3 -3
- package/src/workspace/migrations/134-image-generation-mode-to-provider.ts +4 -4
- package/src/workspace/migrations/136-repair-stale-fireworks-kimi-model-id.ts +2 -2
- package/src/workspace/migrations/137-repair-retired-fireworks-minimax-model-id.ts +2 -2
- package/src/workspace/migrations/139-clear-renamed-cost-profile-label.ts +2 -2
- package/src/workspace/migrations/141-stt-english-default-to-multilingual.ts +4 -4
- package/src/workspace/migrations/144-convert-stranded-subscription-openai-profiles.ts +1 -1
- package/src/workspace/migrations/145-collapse-profile-bindings-to-entries.ts +2 -2
- package/src/workspace/migrations/146-repair-retired-fireworks-deepseek-flash-model-id.ts +2 -2
- package/src/workspace/migrations/148-strip-unsupported-fallback-profiles.ts +2 -2
- package/src/workspace/migrations/150-stt-flux-provider-to-model-family.ts +1 -1
- package/src/workspace/migrations/151-repair-renamed-fireworks-deepseek-pro-model-id.ts +2 -2
- package/src/workspace/migrations/152-repair-retired-fireworks-minimax-m2p7-model-id.ts +2 -2
- package/src/workspace/migrations/159-rename-colliding-jev-profile-name.ts +2 -2
- package/src/workspace/migrations/160-repair-retired-fireworks-model-ids.ts +2 -2
- package/src/workspace/migrations/161-repair-retired-fireworks-glm-5p2-model-id.ts +2 -2
- package/src/workspace/migrations/__tests__/141-stt-english-default-to-multilingual.test.ts +1 -1
- package/src/workspace/migrations/__tests__/150-stt-flux-provider-to-model-family.test.ts +1 -1
- package/src/workspace/migrations/registry.ts +6 -6
- package/src/workspace/top-level-renderer.ts +1 -1
- package/src/workspace/turn-commit.ts +2 -2
- package/src/__tests__/config-loader-platform-defaults.test.ts +0 -606
- package/src/__tests__/mock-gateway-ipc.ts +0 -260
- package/src/api/events/platform-disconnected.ts +0 -21
- package/src/config/platform-rehydration.ts +0 -60
- package/src/platform/feature-gate.ts +0 -8
- package/src/plugins/defaults/platform-hosted/package.json +0 -14
- package/src/runtime/routes/platform-managed-credentials.ts +0 -50
- /package/src/__tests__/{gateway-client-managed-outbound.test.ts → gateway-client-cloud-outbound.test.ts} +0 -0
- /package/src/__tests__/{secure-keys-managed-failover.test.ts → secure-keys-cloud-failover.test.ts} +0 -0
|
@@ -41,11 +41,11 @@ const BASE_AVAILABLE_CHANNELS: readonly ChannelId[] = [
|
|
|
41
41
|
] as const;
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
|
-
* Best-effort check that email is configured for this assistant: a
|
|
45
|
-
* inbox registered on the
|
|
46
|
-
* (whose gateway webhook routes carry inbound just as the
|
|
44
|
+
* Best-effort check that email is configured for this assistant: a cloud
|
|
45
|
+
* inbox registered on the cloud, or a "your own" provider credential
|
|
46
|
+
* (whose gateway webhook routes carry inbound just as the cloud pipeline
|
|
47
47
|
* does). An unavailable platform is treated as "no inbox": we prefer to
|
|
48
|
-
* under-report than block the entire Contacts page when the
|
|
48
|
+
* under-report than block the entire Contacts page when the cloud is
|
|
49
49
|
* briefly unreachable.
|
|
50
50
|
*
|
|
51
51
|
* Fresh, preserving this route's long-standing live-read-per-request
|
|
@@ -95,7 +95,7 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
95
95
|
// — fail-closed is the right default for this security boundary.
|
|
96
96
|
// Dev-bypass mode (DISABLE_HTTP_AUTH=true, mirroring
|
|
97
97
|
// require-bound-guardian.ts) preserves the previous "return all" behavior
|
|
98
|
-
// for
|
|
98
|
+
// for cloud-managed deployments where the cloud handles auth.
|
|
99
99
|
const callerPrincipalId = headers?.["x-cadet-actor-principal-id"];
|
|
100
100
|
const filtered = isHttpAuthDisabled()
|
|
101
101
|
? clients
|
|
@@ -274,8 +274,8 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
274
274
|
// spoof that desktop. Clients with no stored `actorPrincipalId` (legacy
|
|
275
275
|
// SSE subscribers, service-gateway tokens) never match: fail-closed, the
|
|
276
276
|
// same posture as the listing filter above. Dev-bypass mode
|
|
277
|
-
// (DISABLE_HTTP_AUTH=true) skips the check for
|
|
278
|
-
// deployments where the
|
|
277
|
+
// (DISABLE_HTTP_AUTH=true) skips the check for cloud-managed
|
|
278
|
+
// deployments where the cloud handles auth.
|
|
279
279
|
if (!isHttpAuthDisabled()) {
|
|
280
280
|
const callerPrincipalId = headers?.["x-cadet-actor-principal-id"];
|
|
281
281
|
const ownerPrincipalId = client.actorPrincipalId;
|
|
@@ -371,8 +371,8 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
371
371
|
// spoof that tab. Clients with no stored `actorPrincipalId` (legacy SSE
|
|
372
372
|
// subscribers, service-gateway tokens) never match: fail-closed, the
|
|
373
373
|
// same posture as `report_client_presence`. Dev-bypass mode
|
|
374
|
-
// (DISABLE_HTTP_AUTH=true) skips the check for
|
|
375
|
-
// deployments where the
|
|
374
|
+
// (DISABLE_HTTP_AUTH=true) skips the check for cloud-managed
|
|
375
|
+
// deployments where the cloud handles auth.
|
|
376
376
|
if (!isHttpAuthDisabled()) {
|
|
377
377
|
const callerPrincipalId = headers?.["x-cadet-actor-principal-id"];
|
|
378
378
|
const ownerPrincipalId = client.actorPrincipalId;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The credential Cadet Cloud provisions onto a cloud assistant pod for
|
|
3
|
+
* its own use: the API key the daemon authenticates to the cloud LLM proxy
|
|
4
|
+
* with.
|
|
5
|
+
*
|
|
6
|
+
* The cloud writes it over `POST /v1/secrets`, and the daemon, the
|
|
7
|
+
* gateway, and CES read it straight out of the vault. The user never sets it
|
|
8
|
+
* through the credentials API and can do nothing useful with it there, so
|
|
9
|
+
* that API treats it as neither readable nor writable: omitted from listings,
|
|
10
|
+
* and refused by inspect, reveal, set, and delete, whatever the calling
|
|
11
|
+
* principal.
|
|
12
|
+
*
|
|
13
|
+
* The key spends inference on Cadet's account; the host it is sent to
|
|
14
|
+
* resolves from config or the `CADET_CLOUD_URL` environment variable, so
|
|
15
|
+
* there is no stored URL credential to guard alongside it.
|
|
16
|
+
*/
|
|
17
|
+
// The cloud pushes the pre-rebrand display name ("cadet:*"); the
|
|
18
|
+
// canonical storage service is "cadet".
|
|
19
|
+
const MANAGED_PROXY_CREDENTIALS = [
|
|
20
|
+
{ service: "cadet", field: "assistant_api_key" },
|
|
21
|
+
] as const;
|
|
22
|
+
|
|
23
|
+
export function isPlatformCloudCredential(
|
|
24
|
+
service: string,
|
|
25
|
+
field: string,
|
|
26
|
+
): boolean {
|
|
27
|
+
return MANAGED_PROXY_CREDENTIALS.some(
|
|
28
|
+
(c) => c.service === service && c.field === field,
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** What a caller was trying to do with a cloud credential. */
|
|
33
|
+
export type PlatformCloudCredentialAction = "read" | "change";
|
|
34
|
+
|
|
35
|
+
/** Message the credentials API refuses one of these with. */
|
|
36
|
+
export function platformCloudCredentialRefusal(
|
|
37
|
+
service: string | undefined,
|
|
38
|
+
field: string | undefined,
|
|
39
|
+
action: PlatformCloudCredentialAction,
|
|
40
|
+
): string {
|
|
41
|
+
const name = service && field ? `${service}:${field}` : "This credential";
|
|
42
|
+
const verb =
|
|
43
|
+
action === "read" ? "inspected or revealed" : "changed or deleted";
|
|
44
|
+
return `${name} is provisioned and owned by Cadet Cloud. It cannot be ${verb} through the credentials API.`;
|
|
45
|
+
}
|
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
* - platform_connect (POST platform/connect): reports whether the stored
|
|
9
9
|
* credentials still connect, and when the stored key has been rejected,
|
|
10
10
|
* says so, so the caller can tell the user what replaces it.
|
|
11
|
-
* - platform_disconnect (POST platform/disconnect): deletes stored
|
|
12
|
-
* credentials and emits
|
|
11
|
+
* - platform_disconnect (POST platform/disconnect): deletes stored cloud
|
|
12
|
+
* credentials and emits cloud_disconnected signal.
|
|
13
13
|
* - platform_callback_routes_register (POST platform/callback-routes/register):
|
|
14
|
-
* registers a callback route with the
|
|
14
|
+
* registers a callback route with the cloud gateway.
|
|
15
15
|
* - platform_callback_routes_list (GET platform/callback-routes): lists
|
|
16
16
|
* registered callback routes for this assistant.
|
|
17
17
|
* - platform_credits (GET platform/credits): fetches the org's remaining
|
|
@@ -27,33 +27,33 @@
|
|
|
27
27
|
* invoice list and returns a single invoice by Stripe invoice ID.
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
|
+
import {
|
|
31
|
+
type CloudCredentialVerificationStatus,
|
|
32
|
+
type PlatformVerifyCredentialResponse,
|
|
33
|
+
PlatformVerifyCredentialResponseSchema,
|
|
34
|
+
} from "@mycadet/service-contracts/cloud-credential";
|
|
30
35
|
import {
|
|
31
36
|
type BillingPlanId,
|
|
32
37
|
extraCreditUsd,
|
|
33
38
|
planCreditUsedFraction,
|
|
34
39
|
} from "@mycadet/service-contracts/plan-credit";
|
|
35
|
-
import {
|
|
36
|
-
type PlatformCredentialVerificationStatus,
|
|
37
|
-
type PlatformVerifyCredentialResponse,
|
|
38
|
-
PlatformVerifyCredentialResponseSchema,
|
|
39
|
-
} from "@mycadet/service-contracts/platform-credential";
|
|
40
40
|
import { z } from "zod";
|
|
41
41
|
|
|
42
42
|
import {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
setPlatformUserId,
|
|
47
|
-
} from "../../config/env.js";
|
|
48
|
-
import { isPlatformRemote } from "../../config/env-registry.js";
|
|
43
|
+
resolveCloudOrganizationId,
|
|
44
|
+
resolveCloudUserId,
|
|
45
|
+
} from "../../config/cloud-identity.js";
|
|
49
46
|
import {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
47
|
+
getCloudBaseUrl,
|
|
48
|
+
setCloudAssistantId,
|
|
49
|
+
setCloudOrganizationId,
|
|
50
|
+
setCloudUserId,
|
|
51
|
+
} from "../../config/env.js";
|
|
52
|
+
import { isCloudRemote } from "../../config/env-registry.js";
|
|
53
53
|
import {
|
|
54
54
|
registerCallbackRoute,
|
|
55
|
-
|
|
56
|
-
} from "../../inbound/
|
|
55
|
+
resolveCloudCallbackRegistrationContext,
|
|
56
|
+
} from "../../inbound/cloud-callback-registration.js";
|
|
57
57
|
import { credentialKey } from "../../security/credential-key.js";
|
|
58
58
|
import {
|
|
59
59
|
deleteSecureKeyAsync,
|
|
@@ -75,11 +75,7 @@ import type { RouteDefinition, RouteHandlerArgs } from "./types.js";
|
|
|
75
75
|
// ---------------------------------------------------------------------------
|
|
76
76
|
|
|
77
77
|
const CREDENTIAL_KEYS = {
|
|
78
|
-
baseUrl: { service: "cadet", field: "platform_base_url" },
|
|
79
78
|
apiKey: { service: "cadet", field: "assistant_api_key" },
|
|
80
|
-
assistantId: { service: "cadet", field: "platform_assistant_id" },
|
|
81
|
-
organizationId: { service: "cadet", field: "platform_organization_id" },
|
|
82
|
-
userId: { service: "cadet", field: "platform_user_id" },
|
|
83
79
|
} as const;
|
|
84
80
|
|
|
85
81
|
// ---------------------------------------------------------------------------
|
|
@@ -94,7 +90,7 @@ const PlatformStatusResponseSchema = z.object({
|
|
|
94
90
|
.boolean()
|
|
95
91
|
.nullable()
|
|
96
92
|
.describe(
|
|
97
|
-
"Whether a
|
|
93
|
+
"Whether a cloud assistant API key is stored. Null when the credential store could not be read, which is not evidence that no key is stored.",
|
|
98
94
|
),
|
|
99
95
|
hasWebhookSecret: z.boolean(),
|
|
100
96
|
clientInstallationId: z.string().nullable(),
|
|
@@ -109,7 +105,7 @@ const PlatformConnectResponseSchema = z.object({
|
|
|
109
105
|
baseUrl: z.string().optional(),
|
|
110
106
|
showPlatformLogin: z.boolean().optional(),
|
|
111
107
|
/**
|
|
112
|
-
* The stored
|
|
108
|
+
* The stored cloud credential exists but the cloud rejects it. Distinct
|
|
113
109
|
* from "nothing stored": the user is not setting up, they are recovering,
|
|
114
110
|
* and what replaces the key is a fresh sign-in, not a first one.
|
|
115
111
|
*/
|
|
@@ -119,13 +115,11 @@ export type PlatformConnectResponse = z.infer<
|
|
|
119
115
|
typeof PlatformConnectResponseSchema
|
|
120
116
|
>;
|
|
121
117
|
|
|
122
|
-
const
|
|
118
|
+
const CloudDisconnectResponseSchema = z.object({
|
|
123
119
|
disconnected: z.literal(true),
|
|
124
120
|
previousBaseUrl: z.string().nullable(),
|
|
125
121
|
});
|
|
126
|
-
type
|
|
127
|
-
typeof PlatformDisconnectResponseSchema
|
|
128
|
-
>;
|
|
122
|
+
type CloudDisconnectResponse = z.infer<typeof CloudDisconnectResponseSchema>;
|
|
129
123
|
|
|
130
124
|
const CallbackRouteRegisterRequestSchema = z.object({
|
|
131
125
|
path: z.string(),
|
|
@@ -168,7 +162,7 @@ const PlatformCreditsResponseSchema = z.object({
|
|
|
168
162
|
.number()
|
|
169
163
|
.nullable()
|
|
170
164
|
.describe(
|
|
171
|
-
"Today's (UTC) spend counted against the daily credit limit, in USD. Excludes spend covered by plan-included credits (initial credit, Pro credit bundle), so it is not total spend. Null when the
|
|
165
|
+
"Today's (UTC) spend counted against the daily credit limit, in USD. Excludes spend covered by plan-included credits (initial credit, Pro credit bundle), so it is not total spend. Null when the cloud did not report it.",
|
|
172
166
|
),
|
|
173
167
|
daily_limit: z
|
|
174
168
|
.number()
|
|
@@ -197,13 +191,13 @@ const PlatformCreditsResponseSchema = z.object({
|
|
|
197
191
|
.number()
|
|
198
192
|
.nullable()
|
|
199
193
|
.describe(
|
|
200
|
-
"Unused credit (USD) remaining on the unexpired plan-included grants (initial credit, Pro credit bundle). Null when the
|
|
194
|
+
"Unused credit (USD) remaining on the unexpired plan-included grants (initial credit, Pro credit bundle). Null when the cloud did not report grant figures.",
|
|
201
195
|
),
|
|
202
196
|
plan_credit_total: z
|
|
203
197
|
.number()
|
|
204
198
|
.nullable()
|
|
205
199
|
.describe(
|
|
206
|
-
"Total credit (USD) those plan-included grants were worth, net of refunds. Null when the
|
|
200
|
+
"Total credit (USD) those plan-included grants were worth, net of refunds. Null when the cloud did not report grant figures.",
|
|
207
201
|
),
|
|
208
202
|
plan_credit_used_fraction: z
|
|
209
203
|
.number()
|
|
@@ -227,7 +221,7 @@ const PlatformCreditsResponseSchema = z.object({
|
|
|
227
221
|
.number()
|
|
228
222
|
.nullable()
|
|
229
223
|
.describe(
|
|
230
|
-
"Unexpired credit (USD) on grants that expire within the next 30 days. Null when the
|
|
224
|
+
"Unexpired credit (USD) on grants that expire within the next 30 days. Null when the cloud did not report it.",
|
|
231
225
|
),
|
|
232
226
|
next_credit_expiry_at: z
|
|
233
227
|
.string()
|
|
@@ -287,7 +281,7 @@ type PlatformSubscriptionResponse = z.infer<
|
|
|
287
281
|
|
|
288
282
|
// The plan catalog is a large, platform-owned structure (base + pro plans, each
|
|
289
283
|
// with machine/storage/credit tiers and packages). The daemon forwards it as a
|
|
290
|
-
// pass-through so the catalog shape stays owned by the
|
|
284
|
+
// pass-through so the catalog shape stays owned by the cloud and additive
|
|
291
285
|
// changes there don't require a daemon schema bump; only the top-level `plans`
|
|
292
286
|
// envelope is asserted here.
|
|
293
287
|
const PlatformPlansResponseSchema = z.object({
|
|
@@ -302,11 +296,11 @@ type PlatformPlansResponse = z.infer<typeof PlatformPlansResponseSchema>;
|
|
|
302
296
|
async function handlePlatformStatus(
|
|
303
297
|
_args: RouteHandlerArgs,
|
|
304
298
|
): Promise<PlatformStatusResponse> {
|
|
305
|
-
const context = await
|
|
299
|
+
const context = await resolveCloudCallbackRegistrationContext();
|
|
306
300
|
|
|
307
301
|
const [organizationId, userId, webhookSecretRaw] = await Promise.all([
|
|
308
|
-
|
|
309
|
-
|
|
302
|
+
resolveCloudOrganizationId(),
|
|
303
|
+
resolveCloudUserId(),
|
|
310
304
|
getSecureKeyAsync(credentialKey("cadet", "webhook_secret")),
|
|
311
305
|
]);
|
|
312
306
|
|
|
@@ -314,7 +308,7 @@ async function handlePlatformStatus(
|
|
|
314
308
|
|
|
315
309
|
return {
|
|
316
310
|
isPlatform: context.isPlatform,
|
|
317
|
-
baseUrl: context.
|
|
311
|
+
baseUrl: context.cloudBaseUrl,
|
|
318
312
|
assistantId: context.assistantId,
|
|
319
313
|
hasAssistantApiKey: context.hasAssistantApiKey,
|
|
320
314
|
hasWebhookSecret,
|
|
@@ -329,23 +323,12 @@ async function handlePlatformConnect(
|
|
|
329
323
|
_args: RouteHandlerArgs,
|
|
330
324
|
): Promise<PlatformConnectResponse> {
|
|
331
325
|
// Check if already connected
|
|
332
|
-
const
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
CREDENTIAL_KEYS.baseUrl.service,
|
|
336
|
-
CREDENTIAL_KEYS.baseUrl.field,
|
|
337
|
-
),
|
|
338
|
-
),
|
|
339
|
-
getSecureKeyAsync(
|
|
340
|
-
credentialKey(
|
|
341
|
-
CREDENTIAL_KEYS.apiKey.service,
|
|
342
|
-
CREDENTIAL_KEYS.apiKey.field,
|
|
343
|
-
),
|
|
344
|
-
),
|
|
345
|
-
]);
|
|
326
|
+
const existingApiKey = await getSecureKeyAsync(
|
|
327
|
+
credentialKey(CREDENTIAL_KEYS.apiKey.service, CREDENTIAL_KEYS.apiKey.field),
|
|
328
|
+
);
|
|
346
329
|
|
|
347
330
|
// Stored credentials only count as a connection while they still
|
|
348
|
-
// authenticate. Answering "already connected" for a key the
|
|
331
|
+
// authenticate. Answering "already connected" for a key the cloud has
|
|
349
332
|
// rejected would report nothing to do about the one thing that needs doing,
|
|
350
333
|
// and no client would get the signal to rotate it.
|
|
351
334
|
//
|
|
@@ -355,12 +338,12 @@ async function handlePlatformConnect(
|
|
|
355
338
|
// stored credentials counting as a connection, so a network problem never
|
|
356
339
|
// strands a working install by reporting it disconnected.
|
|
357
340
|
let credentialRejected = false;
|
|
358
|
-
if (
|
|
341
|
+
if (existingApiKey) {
|
|
359
342
|
const verified = await verifyStoredCredential();
|
|
360
343
|
if (verified !== "rejected") {
|
|
361
344
|
return {
|
|
362
345
|
alreadyConnected: true,
|
|
363
|
-
baseUrl:
|
|
346
|
+
baseUrl: getCloudBaseUrl(),
|
|
364
347
|
};
|
|
365
348
|
}
|
|
366
349
|
credentialRejected = true;
|
|
@@ -377,7 +360,7 @@ async function handlePlatformConnect(
|
|
|
377
360
|
}
|
|
378
361
|
|
|
379
362
|
/**
|
|
380
|
-
* Ask the
|
|
363
|
+
* Ask the cloud whether the stored cloud credential authenticates.
|
|
381
364
|
* Nothing is stored: each caller that needs the answer asks, so there is no
|
|
382
365
|
* verdict to go stale.
|
|
383
366
|
*
|
|
@@ -385,7 +368,7 @@ async function handlePlatformConnect(
|
|
|
385
368
|
* about what "connected" means. Never throws: an unsettled answer is
|
|
386
369
|
* `"unknown"`, which no caller treats as evidence of a dead credential.
|
|
387
370
|
*/
|
|
388
|
-
async function verifyStoredCredential(): Promise<
|
|
371
|
+
async function verifyStoredCredential(): Promise<CloudCredentialVerificationStatus> {
|
|
389
372
|
try {
|
|
390
373
|
const { checkAssistantApiKey } =
|
|
391
374
|
await import("../../credential-health/credential-health-service.js");
|
|
@@ -412,47 +395,32 @@ async function handlePlatformVerifyCredential(
|
|
|
412
395
|
return { status: await verifyStoredCredential() };
|
|
413
396
|
}
|
|
414
397
|
|
|
415
|
-
async function
|
|
398
|
+
async function handleCloudDisconnect(
|
|
416
399
|
_args: RouteHandlerArgs,
|
|
417
|
-
): Promise<
|
|
418
|
-
// Reject if running inside a
|
|
419
|
-
if (
|
|
400
|
+
): Promise<CloudDisconnectResponse> {
|
|
401
|
+
// Reject if running inside a cloud host
|
|
402
|
+
if (isCloudRemote()) {
|
|
420
403
|
throw new UnprocessableEntityError(
|
|
421
|
-
"Cannot disconnect from the
|
|
404
|
+
"Cannot disconnect from the cloud on a cloud-hosted assistant.",
|
|
422
405
|
);
|
|
423
406
|
}
|
|
424
407
|
|
|
425
408
|
// Check if connected
|
|
426
|
-
const
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
CREDENTIAL_KEYS.baseUrl.service,
|
|
430
|
-
CREDENTIAL_KEYS.baseUrl.field,
|
|
431
|
-
),
|
|
432
|
-
),
|
|
433
|
-
getSecureKeyAsync(
|
|
434
|
-
credentialKey(
|
|
435
|
-
CREDENTIAL_KEYS.apiKey.service,
|
|
436
|
-
CREDENTIAL_KEYS.apiKey.field,
|
|
437
|
-
),
|
|
438
|
-
),
|
|
439
|
-
]);
|
|
409
|
+
const apiKey = await getSecureKeyAsync(
|
|
410
|
+
credentialKey(CREDENTIAL_KEYS.apiKey.service, CREDENTIAL_KEYS.apiKey.field),
|
|
411
|
+
);
|
|
440
412
|
|
|
441
|
-
if (!
|
|
413
|
+
if (!apiKey) {
|
|
442
414
|
throw new UnprocessableEntityError(
|
|
443
|
-
"Not connected to a
|
|
415
|
+
"Not connected to a cloud. Nothing to disconnect.\n\n" +
|
|
444
416
|
"Run 'assistant cloud status' to check connection state.",
|
|
445
417
|
);
|
|
446
418
|
}
|
|
447
419
|
|
|
448
|
-
// Delete
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
CREDENTIAL_KEYS.assistantId,
|
|
453
|
-
CREDENTIAL_KEYS.organizationId,
|
|
454
|
-
CREDENTIAL_KEYS.userId,
|
|
455
|
-
] as const;
|
|
420
|
+
// Delete the stored cloud credential. The cloud_*_id fields are not
|
|
421
|
+
// credentials — they resolve from the api key via validate and live only
|
|
422
|
+
// in the in-memory identity, cleared right below.
|
|
423
|
+
const keysToDelete = [CREDENTIAL_KEYS.apiKey] as const;
|
|
456
424
|
|
|
457
425
|
const failedKeys: string[] = [];
|
|
458
426
|
for (const key of keysToDelete) {
|
|
@@ -470,17 +438,16 @@ async function handlePlatformDisconnect(
|
|
|
470
438
|
);
|
|
471
439
|
}
|
|
472
440
|
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
setPlatformUserId(undefined);
|
|
441
|
+
setCloudAssistantId(undefined);
|
|
442
|
+
setCloudOrganizationId(undefined);
|
|
443
|
+
setCloudUserId(undefined);
|
|
477
444
|
|
|
478
445
|
// Notify connected clients
|
|
479
|
-
broadcastMessage({ type: "
|
|
446
|
+
broadcastMessage({ type: "cloud_disconnected" });
|
|
480
447
|
|
|
481
448
|
return {
|
|
482
449
|
disconnected: true,
|
|
483
|
-
previousBaseUrl:
|
|
450
|
+
previousBaseUrl: null,
|
|
484
451
|
};
|
|
485
452
|
}
|
|
486
453
|
|
|
@@ -499,7 +466,7 @@ async function handleCallbackRoutesRegister(
|
|
|
499
466
|
throw new BadRequestError("type is required");
|
|
500
467
|
}
|
|
501
468
|
|
|
502
|
-
const context = await
|
|
469
|
+
const context = await resolveCloudCallbackRegistrationContext();
|
|
503
470
|
if (!context.enabled) {
|
|
504
471
|
throw new UnprocessableEntityError(
|
|
505
472
|
"Platform callbacks not available — missing platform base URL, assistant ID, or API key. Run 'assistant cloud connect' or ensure credentials are configured.",
|
|
@@ -656,7 +623,7 @@ interface FetchPlatformJsonOptions {
|
|
|
656
623
|
badRequestHint?: string;
|
|
657
624
|
/**
|
|
658
625
|
* When set, an upstream HTTP 404 resolves to this value instead of the
|
|
659
|
-
* generic InternalError path, for resources where the
|
|
626
|
+
* generic InternalError path, for resources where the cloud signals
|
|
660
627
|
* "nothing here" with a 404 (e.g. the invoice list for an organization
|
|
661
628
|
* without invoice history). When unset, a 404 stays an InternalError.
|
|
662
629
|
*/
|
|
@@ -664,7 +631,7 @@ interface FetchPlatformJsonOptions {
|
|
|
664
631
|
}
|
|
665
632
|
|
|
666
633
|
/**
|
|
667
|
-
* GET a JSON resource from the
|
|
634
|
+
* GET a JSON resource from the cloud using the assistant's stored platform
|
|
668
635
|
* credentials. Throws UnprocessableEntityError when credentials are missing and
|
|
669
636
|
* InternalError on transport / non-2xx failures; `label` names the resource in
|
|
670
637
|
* those error messages. See FetchPlatformJsonOptions for per-call overrides.
|
|
@@ -674,15 +641,15 @@ async function fetchPlatformJson(
|
|
|
674
641
|
label: string,
|
|
675
642
|
options?: FetchPlatformJsonOptions,
|
|
676
643
|
): Promise<unknown> {
|
|
677
|
-
const context = await
|
|
644
|
+
const context = await resolveCloudCallbackRegistrationContext();
|
|
678
645
|
|
|
679
|
-
if (!context.
|
|
646
|
+
if (!context.cloudBaseUrl || !context.authHeader) {
|
|
680
647
|
throw new UnprocessableEntityError(
|
|
681
|
-
"Cloud credentials not available — run 'assistant cloud connect' or set
|
|
648
|
+
"Cloud credentials not available — run 'assistant cloud connect' or set CADET_CLOUD_URL",
|
|
682
649
|
);
|
|
683
650
|
}
|
|
684
651
|
|
|
685
|
-
const url = `${context.
|
|
652
|
+
const url = `${context.cloudBaseUrl}${path}`;
|
|
686
653
|
const timeout = AbortSignal.timeout(
|
|
687
654
|
options?.timeoutMs ?? PLATFORM_FETCH_TIMEOUT_MS,
|
|
688
655
|
);
|
|
@@ -788,7 +755,7 @@ async function handlePlatformPlans(
|
|
|
788
755
|
|
|
789
756
|
/**
|
|
790
757
|
* Fetch one cursor-paginated page of the org's Stripe invoice history from
|
|
791
|
-
* the
|
|
758
|
+
* the cloud. Pass the previous page's last invoice id as `startingAfter`
|
|
792
759
|
* to fetch the next (older) page.
|
|
793
760
|
*/
|
|
794
761
|
async function fetchPlatformInvoicesPage(
|
|
@@ -801,7 +768,7 @@ async function fetchPlatformInvoicesPage(
|
|
|
801
768
|
}
|
|
802
769
|
return (await fetchPlatformJson(path, "invoices", {
|
|
803
770
|
...options,
|
|
804
|
-
// The
|
|
771
|
+
// The cloud returns 404 for an organization without invoice history;
|
|
805
772
|
// the web client treats that as an empty page
|
|
806
773
|
// (clients/web/src/domains/settings/components/invoices-table.tsx) and
|
|
807
774
|
// the daemon matches it.
|
|
@@ -815,7 +782,7 @@ async function handlePlatformInvoicesList(
|
|
|
815
782
|
const startingAfter = args.queryParams?.starting_after;
|
|
816
783
|
return await fetchPlatformInvoicesPage(startingAfter, {
|
|
817
784
|
signal: args.abortSignal,
|
|
818
|
-
// The
|
|
785
|
+
// The cloud returns 400 for an invalid or expired starting_after
|
|
819
786
|
// cursor. Only a caller-supplied cursor is caller-correctable, so the
|
|
820
787
|
// hint (and the BadRequestError it triggers) applies just when one was
|
|
821
788
|
// passed; a 400 on a cursor-less request stays an InternalError.
|
|
@@ -827,7 +794,7 @@ async function handlePlatformInvoicesList(
|
|
|
827
794
|
|
|
828
795
|
/**
|
|
829
796
|
* Runaway guard for the invoices_get cursor walk: 25 pages is 2,500
|
|
830
|
-
* invoices at the
|
|
797
|
+
* invoices at the cloud's 100-per-page size.
|
|
831
798
|
*/
|
|
832
799
|
export const MAX_INVOICE_PAGES = 25;
|
|
833
800
|
|
|
@@ -957,9 +924,9 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
957
924
|
requiredScopes: ["settings.read"],
|
|
958
925
|
allowedPrincipalTypes: ACTOR_PRINCIPALS,
|
|
959
926
|
},
|
|
960
|
-
summary: "Verify the Cadet
|
|
927
|
+
summary: "Verify the Cadet Cloud credential against the cloud",
|
|
961
928
|
description:
|
|
962
|
-
"Asks the
|
|
929
|
+
"Asks the cloud whether the stored assistant API key authenticates. POST because it performs a check; the result is returned, not stored.",
|
|
963
930
|
tags: ["platform"],
|
|
964
931
|
handler: handlePlatformVerifyCredential,
|
|
965
932
|
responseBody: PlatformVerifyCredentialResponseSchema,
|
|
@@ -974,10 +941,10 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
974
941
|
},
|
|
975
942
|
summary: "Disconnect from Cadet Cloud",
|
|
976
943
|
description:
|
|
977
|
-
"Deletes stored cloud credentials and emits
|
|
944
|
+
"Deletes stored cloud credentials and emits cloud_disconnected signal to connected clients.",
|
|
978
945
|
tags: ["platform"],
|
|
979
|
-
handler:
|
|
980
|
-
responseBody:
|
|
946
|
+
handler: handleCloudDisconnect,
|
|
947
|
+
responseBody: CloudDisconnectResponseSchema,
|
|
981
948
|
},
|
|
982
949
|
{
|
|
983
950
|
operationId: "platform_callback_routes_register",
|
|
@@ -987,9 +954,9 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
987
954
|
requiredScopes: ["settings.write"],
|
|
988
955
|
allowedPrincipalTypes: LOCAL_PRINCIPALS,
|
|
989
956
|
},
|
|
990
|
-
summary: "Register a
|
|
957
|
+
summary: "Register a cloud callback route",
|
|
991
958
|
description:
|
|
992
|
-
"Registers a callback route with the
|
|
959
|
+
"Registers a callback route with the cloud gateway for inbound provider webhooks.",
|
|
993
960
|
tags: ["platform"],
|
|
994
961
|
handler: handleCallbackRoutesRegister,
|
|
995
962
|
requestBody: CallbackRouteRegisterRequestSchema,
|
|
@@ -1005,7 +972,7 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
1005
972
|
},
|
|
1006
973
|
summary: "List registered platform callback routes",
|
|
1007
974
|
description:
|
|
1008
|
-
"Lists all callback routes registered with the
|
|
975
|
+
"Lists all callback routes registered with the cloud for this assistant.",
|
|
1009
976
|
tags: ["platform"],
|
|
1010
977
|
handler: handleCallbackRoutesList,
|
|
1011
978
|
responseBody: CallbackRoutesListResponseSchema,
|
|
@@ -1021,7 +988,7 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
1021
988
|
summary:
|
|
1022
989
|
"Get the organization's credit balance, plan-credit usage, and daily-limit state",
|
|
1023
990
|
description:
|
|
1024
|
-
"Fetches the org's settled, pending, and effective (remaining) credit balance in USD from the
|
|
991
|
+
"Fetches the org's settled, pending, and effective (remaining) credit balance in USD from the cloud billing summary, plus plan-included credit usage (remaining, total, and the used fraction shown by the in-app usage meter), extra credit bought or earned on top, credit expiring within 30 days, and the daily-limit state: today's spend counted against the daily credit limit (which excludes spend covered by plan-included credits, so it is not total spend), the limit itself, and the low-balance warning state.",
|
|
1025
992
|
tags: ["platform"],
|
|
1026
993
|
handler: handlePlatformCredits,
|
|
1027
994
|
responseBody: PlatformCreditsResponseSchema,
|
|
@@ -1036,7 +1003,7 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
1036
1003
|
},
|
|
1037
1004
|
summary: "Get the organization's current plan and subscription state",
|
|
1038
1005
|
description:
|
|
1039
|
-
"Fetches the org's plan (base or pro), subscription status, renewal/period-end dates, cancellation state, selected credit tier, package, and plan-gated entitlements from the
|
|
1006
|
+
"Fetches the org's plan (base or pro), subscription status, renewal/period-end dates, cancellation state, selected credit tier, package, and plan-gated entitlements from the cloud.",
|
|
1040
1007
|
tags: ["platform"],
|
|
1041
1008
|
handler: handlePlatformSubscription,
|
|
1042
1009
|
responseBody: PlatformSubscriptionResponseSchema,
|
|
@@ -1051,7 +1018,7 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
1051
1018
|
},
|
|
1052
1019
|
summary: "Get the plan catalog with pricing",
|
|
1053
1020
|
description:
|
|
1054
|
-
"Fetches the
|
|
1021
|
+
"Fetches the cloud plan catalog: base and pro plans with pricing (in cents), machine/storage/credit tiers, and packages.",
|
|
1055
1022
|
tags: ["platform"],
|
|
1056
1023
|
handler: handlePlatformPlans,
|
|
1057
1024
|
responseBody: PlatformPlansResponseSchema,
|
|
@@ -1066,7 +1033,7 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
1066
1033
|
},
|
|
1067
1034
|
summary: "List one page of the organization's Stripe invoices",
|
|
1068
1035
|
description:
|
|
1069
|
-
"Fetches one page of the org's Stripe invoice history (newest first) from the
|
|
1036
|
+
"Fetches one page of the org's Stripe invoice history (newest first) from the cloud billing invoices endpoint. Amounts are in the currency's minor units. When has_more is true, pass the last invoice's id as starting_after to fetch the next page.",
|
|
1070
1037
|
tags: ["platform"],
|
|
1071
1038
|
queryParams: [
|
|
1072
1039
|
{
|
|
@@ -1090,7 +1057,7 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
1090
1057
|
},
|
|
1091
1058
|
summary: "Get a single Stripe invoice by ID",
|
|
1092
1059
|
description:
|
|
1093
|
-
"Pages through the org's invoice list from the
|
|
1060
|
+
"Pages through the org's invoice list from the cloud and returns the invoice matching the given Stripe invoice ID (e.g. in_xxx). 404 if no such invoice.",
|
|
1094
1061
|
tags: ["platform"],
|
|
1095
1062
|
handler: handlePlatformInvoiceGet,
|
|
1096
1063
|
responseBody: PlatformInvoiceSchema,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* GET /v1/conversations/:id/compaction?callId=…
|
|
5
5
|
*
|
|
6
|
-
* Reachable via the
|
|
6
|
+
* Reachable via the cloud's `RuntimeProxyWildcardView` at
|
|
7
7
|
* `/v1/assistants/{assistantId}/conversations/{conversationId}/compaction/?callId=…`.
|
|
8
8
|
*
|
|
9
9
|
* # Scope
|