@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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mycadet/assistant",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.9",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"probe:skill-retrieval": "bun run scripts/probe-skill-retrieval.ts",
|
|
21
21
|
"format": "prettier --write .",
|
|
22
22
|
"format:check": "prettier --check .",
|
|
23
|
-
"lint": "bun run lint:skills && bun run lint:openapi && eslint --max-warnings
|
|
23
|
+
"lint": "bun run lint:skills && bun run lint:openapi && eslint --max-warnings 2956",
|
|
24
24
|
"lint:unused": "knip --include files,dependencies,unlisted",
|
|
25
25
|
"lint:circular": "bun run scripts/check-circular-deps.ts",
|
|
26
26
|
"lint:unused:production": "knip --production --include exports",
|
|
@@ -43,7 +43,7 @@ async function buildMigratedFixture(outWorkspaceDir: string): Promise<void> {
|
|
|
43
43
|
const buildWorkspace = join(buildRoot, "workspace");
|
|
44
44
|
mkdirSync(buildWorkspace);
|
|
45
45
|
process.env.CADET_WORKSPACE_DIR = buildWorkspace;
|
|
46
|
-
process.env.
|
|
46
|
+
process.env.CADET_CLOUD_URL ??= "https://test-cloud.mycadet.ai";
|
|
47
47
|
// Match the preload's env hygiene so migrations never route through a live
|
|
48
48
|
// credential store while building the fixture.
|
|
49
49
|
delete process.env.IS_CONTAINERIZED;
|
|
@@ -41,7 +41,7 @@ import {
|
|
|
41
41
|
DEFAULT_CARD_CHARS,
|
|
42
42
|
renderSkillCard,
|
|
43
43
|
} from "../src/plugins/defaults/memory/substrate/skill-content.js";
|
|
44
|
-
import { filterSkillsByPlatform } from "../src/skills/
|
|
44
|
+
import { filterSkillsByPlatform } from "../src/skills/cloud-compatibility.js";
|
|
45
45
|
|
|
46
46
|
interface ProbeOptions {
|
|
47
47
|
queries: string[];
|
|
@@ -121,8 +121,8 @@ function projectProvider(entry: ProviderCatalogEntry): Record<string, unknown> {
|
|
|
121
121
|
if (entry.credentialsGuide !== undefined) {
|
|
122
122
|
projected.credentialsGuide = entry.credentialsGuide;
|
|
123
123
|
}
|
|
124
|
-
if (entry.
|
|
125
|
-
projected.
|
|
124
|
+
if (entry.supportsCloudAuth !== undefined) {
|
|
125
|
+
projected.supportsCloudAuth = entry.supportsCloudAuth;
|
|
126
126
|
}
|
|
127
127
|
if (entry.featureFlag !== undefined) {
|
|
128
128
|
projected.featureFlag = entry.featureFlag;
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* full-flash cost-optimized, real buildSystemPrompt() + full tool defs
|
|
15
15
|
* full-quality quality-optimized, full prompt + tools (pre-flag brain)
|
|
16
16
|
*
|
|
17
|
-
* Run with the daemon's environment so the
|
|
17
|
+
* Run with the daemon's environment so the cloud connection resolves:
|
|
18
18
|
* CADET_WORKSPACE_DIR=<daemon workspace> \
|
|
19
19
|
* bun run scripts/voice-ttft-spike.ts [--trials 3] [--variants a,b]
|
|
20
20
|
*
|
|
@@ -216,7 +216,7 @@ async function main(): Promise<void> {
|
|
|
216
216
|
const resolveMs = performance.now() - resolveStart;
|
|
217
217
|
if (!provider) {
|
|
218
218
|
console.error(
|
|
219
|
-
`${spec.name}: no provider resolved (
|
|
219
|
+
`${spec.name}: no provider resolved (cloud credentials missing? ` +
|
|
220
220
|
`run with the daemon's CADET_WORKSPACE_DIR)`,
|
|
221
221
|
);
|
|
222
222
|
continue;
|
|
@@ -9,8 +9,8 @@ import { tmpdir } from "node:os";
|
|
|
9
9
|
import { join } from "node:path";
|
|
10
10
|
import { afterEach, beforeEach, describe, expect, test } from "bun:test";
|
|
11
11
|
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
12
|
+
import { repairAdaptiveThinkingOnCloudProfiles } from "../workspace/adaptive-thinking-repair.js";
|
|
13
|
+
import { enableAdaptiveThinkingCloudProfilesMigration } from "../workspace/migrations/097-enable-adaptive-thinking-managed-profiles.js";
|
|
14
14
|
import { recheckAdaptiveThinkingModelImpliedAnthropicMigration } from "../workspace/migrations/104-recheck-adaptive-thinking-model-implied-anthropic.js";
|
|
15
15
|
|
|
16
16
|
const ADAPTIVE = { enabled: true, streamThinking: true };
|
|
@@ -53,10 +53,10 @@ function profile(name: string): Record<string, unknown> {
|
|
|
53
53
|
// the same logic (migration modules must stay self-contained). Run every
|
|
54
54
|
// scenario against all of them so the copies can't drift.
|
|
55
55
|
const implementations: Array<[string, (dir: string) => void]> = [
|
|
56
|
-
["startup repair",
|
|
56
|
+
["startup repair", repairAdaptiveThinkingOnCloudProfiles],
|
|
57
57
|
[
|
|
58
58
|
"migration 097",
|
|
59
|
-
(dir) =>
|
|
59
|
+
(dir) => enableAdaptiveThinkingCloudProfilesMigration.run(dir),
|
|
60
60
|
],
|
|
61
61
|
[
|
|
62
62
|
"migration 104",
|
|
@@ -272,17 +272,17 @@ mock.module("../providers/registry.js", () => ({
|
|
|
272
272
|
resolveProviderFromConnection: async () => anthropicStub,
|
|
273
273
|
}));
|
|
274
274
|
|
|
275
|
-
import {
|
|
275
|
+
import { CADET_CLOUD_CONNECTION_NAME } from "../providers/cadet-model-routing.js";
|
|
276
276
|
|
|
277
277
|
// Connection-aware resolver path: satisfy
|
|
278
278
|
// `tryResolveProviderForConnectionName` lookups so resolveDefaultProvider
|
|
279
279
|
// returns a usable provider for any connection name the winning profile
|
|
280
|
-
// references. The
|
|
281
|
-
// a
|
|
280
|
+
// references. The cloud connection must be the cloud-auth sentinel row:
|
|
281
|
+
// a cloud profile routing through anything else resolves to the cloud
|
|
282
282
|
// instead. Other names behave as personal anthropic connections.
|
|
283
283
|
mock.module("../providers/inference/connections.js", () => ({
|
|
284
284
|
getConnection: (_db: unknown, name: string) =>
|
|
285
|
-
name ===
|
|
285
|
+
name === CADET_CLOUD_CONNECTION_NAME
|
|
286
286
|
? {
|
|
287
287
|
id: 1,
|
|
288
288
|
name,
|
|
@@ -106,7 +106,7 @@ describe("AgentLoop subagent billing-header attribution", () => {
|
|
|
106
106
|
// GIVEN a conversation stamped as an advisor-consult subagent
|
|
107
107
|
await seedConversation("conv-loop-advisor", "advisor", "advisor_consult");
|
|
108
108
|
|
|
109
|
-
// AND a
|
|
109
|
+
// AND a cloud-proxy-shaped provider stack (headers forwarded)
|
|
110
110
|
const { provider, configs } = makeRecordingProvider("openai");
|
|
111
111
|
const wrapped = new RetryProvider(provider, {
|
|
112
112
|
forwardUsageAttributionHeaders: true,
|
|
@@ -2948,10 +2948,10 @@ describe("AnthropicProvider — Cache-Control Characterization", () => {
|
|
|
2948
2948
|
});
|
|
2949
2949
|
|
|
2950
2950
|
// ---------------------------------------------------------------------------
|
|
2951
|
-
// Tests —
|
|
2951
|
+
// Tests — Cloud Proxy Fallback
|
|
2952
2952
|
// ---------------------------------------------------------------------------
|
|
2953
2953
|
|
|
2954
|
-
describe("AnthropicProvider —
|
|
2954
|
+
describe("AnthropicProvider — Cloud Proxy Fallback", () => {
|
|
2955
2955
|
beforeEach(() => {
|
|
2956
2956
|
lastStreamParams = null;
|
|
2957
2957
|
_lastStreamOptions = null;
|
|
@@ -6,12 +6,13 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { beforeEach, describe, expect, mock, test } from "bun:test";
|
|
8
8
|
|
|
9
|
+
import { setOverridesForTesting } from "../__tests__/feature-flag-test-helpers.js";
|
|
9
10
|
import type { SkillSummary } from "../config/skills.js";
|
|
10
|
-
import type { SkillInstallMeta } from "../skills/install-meta.js";
|
|
11
11
|
import {
|
|
12
12
|
SKILL_PLATFORM_VALUES,
|
|
13
13
|
skillPlatformForNodePlatform,
|
|
14
|
-
} from "../skills/
|
|
14
|
+
} from "../skills/cloud-compatibility.js";
|
|
15
|
+
import type { SkillInstallMeta } from "../skills/install-meta.js";
|
|
15
16
|
import { setConfig } from "./helpers/set-config.js";
|
|
16
17
|
|
|
17
18
|
function makeSummary(overrides: Partial<SkillSummary> = {}): SkillSummary {
|
|
@@ -53,12 +54,10 @@ mock.module("../skills/catalog-cache.js", () => ({
|
|
|
53
54
|
},
|
|
54
55
|
}));
|
|
55
56
|
|
|
56
|
-
// Deterministic flag resolution: only "on-flag" is enabled.
|
|
57
|
-
mock.module("../config/assistant-feature-flags.js", () => ({
|
|
58
|
-
isAssistantFeatureFlagEnabled: (flagKey: string) => flagKey === "on-flag",
|
|
59
|
-
}));
|
|
60
|
-
|
|
61
57
|
beforeEach(() => {
|
|
58
|
+
// Real flag resolution: only the synthetic "on-flag" key is enabled.
|
|
59
|
+
setOverridesForTesting({ "on-flag": true });
|
|
60
|
+
|
|
62
61
|
catalogFixture = [];
|
|
63
62
|
remoteFixture = [];
|
|
64
63
|
remoteError = null;
|
|
@@ -170,9 +169,9 @@ describe("listInstalledSkills", () => {
|
|
|
170
169
|
};
|
|
171
170
|
catalogFixture = [
|
|
172
171
|
makeSummary({
|
|
173
|
-
id: "
|
|
172
|
+
id: "cloud-skill",
|
|
174
173
|
source: "managed",
|
|
175
|
-
directoryPath: "/skills/
|
|
174
|
+
directoryPath: "/skills/cloud-skill",
|
|
176
175
|
}),
|
|
177
176
|
makeSummary({
|
|
178
177
|
id: "workspace-skill",
|
|
@@ -182,21 +181,21 @@ describe("listInstalledSkills", () => {
|
|
|
182
181
|
makeSummary({ id: "bundled-skill", source: "bundled" }),
|
|
183
182
|
makeSummary({ id: "plugin-skill", source: "plugin" }),
|
|
184
183
|
];
|
|
185
|
-
installMetaByDir = { "/skills/
|
|
184
|
+
installMetaByDir = { "/skills/cloud-skill": meta };
|
|
186
185
|
|
|
187
186
|
const { listInstalledSkills } =
|
|
188
187
|
await import("../skills/available-skills.js");
|
|
189
188
|
const entries = await listInstalledSkills();
|
|
190
189
|
const byId = new Map(entries.map((e) => [e.id, e]));
|
|
191
190
|
|
|
192
|
-
expect(byId.get("
|
|
191
|
+
expect(byId.get("cloud-skill")!.installMeta).toEqual(meta);
|
|
193
192
|
// Read but absent on disk → null.
|
|
194
193
|
expect(byId.get("workspace-skill")!.installMeta).toBeNull();
|
|
195
194
|
// Never read for sources that don't carry install-meta.
|
|
196
195
|
expect(byId.get("bundled-skill")!.installMeta).toBeUndefined();
|
|
197
196
|
expect(byId.get("plugin-skill")!.installMeta).toBeUndefined();
|
|
198
197
|
expect(readInstallMetaCalls.sort()).toEqual([
|
|
199
|
-
"/skills/
|
|
198
|
+
"/skills/cloud-skill",
|
|
200
199
|
"/skills/workspace-skill",
|
|
201
200
|
]);
|
|
202
201
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, expect, mock, test } from "bun:test";
|
|
2
2
|
|
|
3
3
|
mock.module("../avatar/sync-avatar.js", () => ({
|
|
4
|
-
|
|
4
|
+
syncAvatarToCloud: () => {},
|
|
5
5
|
}));
|
|
6
6
|
mock.module("../telemetry/telemetry-events-outbox.js", () => ({
|
|
7
7
|
recordTelemetryEvent: () => ({ id: "evt", createdAt: 0 }),
|
|
@@ -146,8 +146,8 @@ function expectSecondRunNoop(): void {
|
|
|
146
146
|
|
|
147
147
|
beforeEach(() => {
|
|
148
148
|
freshWorkspace();
|
|
149
|
-
originalIsPlatform = process.env.
|
|
150
|
-
delete process.env.
|
|
149
|
+
originalIsPlatform = process.env.IS_CLOUD;
|
|
150
|
+
delete process.env.IS_CLOUD;
|
|
151
151
|
});
|
|
152
152
|
|
|
153
153
|
afterEach(() => {
|
|
@@ -155,9 +155,9 @@ afterEach(() => {
|
|
|
155
155
|
rmSync(workspaceDir, { recursive: true, force: true });
|
|
156
156
|
}
|
|
157
157
|
if (originalIsPlatform === undefined) {
|
|
158
|
-
delete process.env.
|
|
158
|
+
delete process.env.IS_CLOUD;
|
|
159
159
|
} else {
|
|
160
|
-
process.env.
|
|
160
|
+
process.env.IS_CLOUD = originalIsPlatform;
|
|
161
161
|
}
|
|
162
162
|
});
|
|
163
163
|
|
|
@@ -423,7 +423,7 @@ describe("ensureByokDefaultProfiles", () => {
|
|
|
423
423
|
string,
|
|
424
424
|
Record<string, unknown>
|
|
425
425
|
>;
|
|
426
|
-
// Migration 097 /
|
|
426
|
+
// Migration 097 / repairAdaptiveThinkingOnCloudProfiles stamp thinking
|
|
427
427
|
// onto the anthropic-backed managed entries; live BYOK stubs carry it on
|
|
428
428
|
// balanced and quality-optimized (confirmed on a real workspace).
|
|
429
429
|
profs["balanced"].thinking = { enabled: true, streamThinking: true };
|
|
@@ -733,7 +733,7 @@ describe("ensureByokDefaultProfiles", () => {
|
|
|
733
733
|
});
|
|
734
734
|
|
|
735
735
|
test("no-op on platform installs", () => {
|
|
736
|
-
process.env.
|
|
736
|
+
process.env.IS_CLOUD = "true";
|
|
737
737
|
writeConfig(uneditedByokConfig());
|
|
738
738
|
const before = readFileSync(configPath(), "utf-8");
|
|
739
739
|
|
|
@@ -953,7 +953,7 @@ describe("ensureByokDefaultProfiles", () => {
|
|
|
953
953
|
expectSecondRunNoop();
|
|
954
954
|
});
|
|
955
955
|
|
|
956
|
-
test("a
|
|
956
|
+
test("a cloud-source default entry with body keys is left alone", () => {
|
|
957
957
|
writeConfig({
|
|
958
958
|
llm: {
|
|
959
959
|
default: {
|
|
@@ -55,7 +55,7 @@ useMemorySecureKeys();
|
|
|
55
55
|
* async setup that runs after the call session and its lease already exist.
|
|
56
56
|
*/
|
|
57
57
|
let onResolveCallbackUrl: (() => void) | null = null;
|
|
58
|
-
mock.module("../inbound/
|
|
58
|
+
mock.module("../inbound/cloud-callback-registration.js", () => ({
|
|
59
59
|
resolveCallbackUrl: async (fn: () => string) => {
|
|
60
60
|
onResolveCallbackUrl?.();
|
|
61
61
|
return fn();
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* connection-less profiles even when the resolved provider matches the
|
|
4
4
|
* default provider's name.
|
|
5
5
|
*
|
|
6
|
-
* On
|
|
6
|
+
* On cloud-hosted installs the default transport rides the cloud
|
|
7
7
|
* (platform-billed) `cadet` connection while presenting the upstream
|
|
8
8
|
* provider's name (e.g. "anthropic"). A BYOK profile `{provider:
|
|
9
9
|
* "anthropic"}` with no explicit `provider_connection` must route through
|
|
@@ -69,7 +69,7 @@ const PERSONAL_CONNECTION = {
|
|
|
69
69
|
beforeEach(() => {
|
|
70
70
|
connectionRows = [];
|
|
71
71
|
// Same provider name as the default transport; no provider_connection on
|
|
72
|
-
// the profile — the
|
|
72
|
+
// the profile — the cloud-install shape that must not silently reuse
|
|
73
73
|
// the default transport.
|
|
74
74
|
setConfig("llm", {
|
|
75
75
|
default: {
|
|
@@ -44,12 +44,12 @@ mock.module("../skills/catalog-install.js", () => ({
|
|
|
44
44
|
getRepoSkillsDir: () => mockRepoSkillsDir,
|
|
45
45
|
}));
|
|
46
46
|
|
|
47
|
-
let
|
|
47
|
+
let mockCloudBaseUrl = "https://test-cloud.mycadet.ai";
|
|
48
48
|
mock.module("../config/env.ts", () => ({
|
|
49
|
-
|
|
49
|
+
getCloudBaseUrl: () => mockCloudBaseUrl,
|
|
50
50
|
}));
|
|
51
51
|
mock.module("../config/env.js", () => ({
|
|
52
|
-
|
|
52
|
+
getCloudBaseUrl: () => mockCloudBaseUrl,
|
|
53
53
|
}));
|
|
54
54
|
|
|
55
55
|
// ---------------------------------------------------------------------------
|
|
@@ -152,7 +152,7 @@ beforeEach(() => {
|
|
|
152
152
|
fetchCalls = [];
|
|
153
153
|
mockCatalog = [];
|
|
154
154
|
mockRepoSkillsDir = undefined;
|
|
155
|
-
|
|
155
|
+
mockCloudBaseUrl = "https://platform.test";
|
|
156
156
|
});
|
|
157
157
|
|
|
158
158
|
afterEach(() => {
|
|
@@ -306,7 +306,7 @@ describe("readCatalogSkillFiles (dev mode)", () => {
|
|
|
306
306
|
|
|
307
307
|
const entries = await readCatalogSkillFiles("my-skill");
|
|
308
308
|
|
|
309
|
-
// Fall-through should produce the
|
|
309
|
+
// Fall-through should produce the cloud response (empty array),
|
|
310
310
|
// NOT the external directory contents.
|
|
311
311
|
expect(entries).toEqual([]);
|
|
312
312
|
|
|
@@ -321,8 +321,8 @@ describe("readCatalogSkillFiles (dev mode)", () => {
|
|
|
321
321
|
test("rejects a symlinked skill root for content reads and falls through to platform mode", async () => {
|
|
322
322
|
// Direct reproduction for `readCatalogSkillFileContent`: with a
|
|
323
323
|
// symlinked skill root, the dev branch must not read the external
|
|
324
|
-
// file. Instead we should fall through to the
|
|
325
|
-
// return whatever the
|
|
324
|
+
// file. Instead we should fall through to the cloud endpoint and
|
|
325
|
+
// return whatever the cloud says.
|
|
326
326
|
const root = makeTempSkillsDir();
|
|
327
327
|
const externalRoot = mkdtempSync(join(tmpdir(), "catalog-files-ext-"));
|
|
328
328
|
tempDirs.push(externalRoot);
|
|
@@ -345,7 +345,7 @@ describe("readCatalogSkillFiles (dev mode)", () => {
|
|
|
345
345
|
|
|
346
346
|
const entry = await readCatalogSkillFileContent("my-skill", "SKILL.md");
|
|
347
347
|
expect(entry).not.toBeNull();
|
|
348
|
-
// Content must be the
|
|
348
|
+
// Content must be the cloud payload, NOT the external file's
|
|
349
349
|
// bytes — otherwise the fall-through didn't happen.
|
|
350
350
|
expect(entry!.content).toBe("PLATFORM_CONTENT");
|
|
351
351
|
expect(entry!.mimeType).toBe("text/markdown");
|
|
@@ -410,7 +410,7 @@ describe("readCatalogSkillFiles (dev mode)", () => {
|
|
|
410
410
|
// ---------------------------------------------------------------------------
|
|
411
411
|
|
|
412
412
|
describe("readCatalogSkillFiles (platform mode)", () => {
|
|
413
|
-
test("fetches file listing from the
|
|
413
|
+
test("fetches file listing from the cloud and maps it", async () => {
|
|
414
414
|
mockRepoSkillsDir = undefined;
|
|
415
415
|
mockCatalog = [skill("remote-skill")];
|
|
416
416
|
installFetchMock(() =>
|
|
@@ -801,7 +801,7 @@ describe("readCatalogSkillFileContent (platform mode)", () => {
|
|
|
801
801
|
});
|
|
802
802
|
|
|
803
803
|
test("rejects hidden / SKIP_DIRS paths BEFORE making any fetch call", async () => {
|
|
804
|
-
// Platform-mode defense in depth: even though the
|
|
804
|
+
// Platform-mode defense in depth: even though the cloud endpoint
|
|
805
805
|
// would refuse these reads server-side, we must short-circuit in
|
|
806
806
|
// `readCatalogSkillFileContent` so an attacker cannot use the daemon
|
|
807
807
|
// as a probe channel (and so we avoid unnecessary network traffic).
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Regression tests for catalog entry normalization in catalog-install.ts.
|
|
3
3
|
*
|
|
4
|
-
* The
|
|
4
|
+
* The cloud `/v1/skills/` API flattens skill metadata into top-level
|
|
5
5
|
* fields (`category`, `display_name`, `icon`) rather than the nested
|
|
6
6
|
* `metadata.cadet.*` shape used by the local `catalog.json`. Both
|
|
7
7
|
* `fetchCatalog` (remote) and `readLocalCatalog` (local file) must produce a
|
|
@@ -14,7 +14,7 @@ import { tmpdir } from "node:os";
|
|
|
14
14
|
import { join } from "node:path";
|
|
15
15
|
import { afterEach, describe, expect, test } from "bun:test";
|
|
16
16
|
|
|
17
|
-
process.env.
|
|
17
|
+
process.env.CADET_CLOUD_URL = "https://platform.example.com";
|
|
18
18
|
|
|
19
19
|
import { fetchCatalog, readLocalCatalog } from "../skills/catalog-install.js";
|
|
20
20
|
|
|
@@ -40,7 +40,7 @@ function stubFetchJson(payload: unknown): typeof fetch {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
describe("fetchCatalog normalization", () => {
|
|
43
|
-
test("re-nests the
|
|
43
|
+
test("re-nests the cloud's flattened category under metadata.cadet", async () => {
|
|
44
44
|
globalThis.fetch = stubFetchJson({
|
|
45
45
|
skills: [
|
|
46
46
|
{
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* The handler returns a fixed base list (`slack`, `telegram`, `discord`,
|
|
5
5
|
* `phone`) and
|
|
6
|
-
* appends `email` when the
|
|
6
|
+
* appends `email` when the cloud reports at least one registered email
|
|
7
7
|
* address for this assistant. Platform failures fall back to base-only.
|
|
8
8
|
*
|
|
9
9
|
* Each entry is hydrated with display metadata from `CHANNEL_METADATA`
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
// Mock state — flipped per-test
|
|
24
24
|
// ---------------------------------------------------------------------------
|
|
25
25
|
|
|
26
|
-
let
|
|
26
|
+
let mockCloudAssistantId: string | null = "assistant-test-id";
|
|
27
27
|
let mockEmailAddressesResponse: {
|
|
28
28
|
ok: boolean;
|
|
29
29
|
status: number;
|
|
@@ -36,10 +36,10 @@ let mockEmailAddressesResponse: {
|
|
|
36
36
|
let mockFetchThrows = false;
|
|
37
37
|
const mockSecureKeys = useMemorySecureKeys();
|
|
38
38
|
|
|
39
|
-
mock.module("../
|
|
40
|
-
|
|
39
|
+
mock.module("../cloud/client.js", () => ({
|
|
40
|
+
CadetCloudClient: {
|
|
41
41
|
create: async () => ({
|
|
42
|
-
|
|
42
|
+
cloudAssistantId: mockCloudAssistantId,
|
|
43
43
|
fetch: async (_path: string) => {
|
|
44
44
|
if (mockFetchThrows) {
|
|
45
45
|
throw new Error("platform unreachable");
|
|
@@ -82,7 +82,7 @@ interface HandlerResult {
|
|
|
82
82
|
|
|
83
83
|
describe("channels/available", () => {
|
|
84
84
|
beforeEach(() => {
|
|
85
|
-
|
|
85
|
+
mockCloudAssistantId = "assistant-test-id";
|
|
86
86
|
mockEmailAddressesResponse = {
|
|
87
87
|
ok: true,
|
|
88
88
|
status: 200,
|
|
@@ -171,8 +171,8 @@ describe("channels/available", () => {
|
|
|
171
171
|
]);
|
|
172
172
|
});
|
|
173
173
|
|
|
174
|
-
test("base list only when no
|
|
175
|
-
|
|
174
|
+
test("base list only when no cloudAssistantId on client", async () => {
|
|
175
|
+
mockCloudAssistantId = null;
|
|
176
176
|
|
|
177
177
|
const result = (await handler({})) as HandlerResult;
|
|
178
178
|
|
|
@@ -108,7 +108,7 @@ describe("channel readiness routes — email and WhatsApp probes", () => {
|
|
|
108
108
|
expect(ingressCheck!.passed).toBe(false);
|
|
109
109
|
});
|
|
110
110
|
|
|
111
|
-
test("ready when the
|
|
111
|
+
test("ready when the cloud reports a registered inbox", async () => {
|
|
112
112
|
setConfig("ingress", {
|
|
113
113
|
publicBaseUrl: "https://example.com",
|
|
114
114
|
enabled: true,
|
|
@@ -125,7 +125,7 @@ describe("channel readiness routes — email and WhatsApp probes", () => {
|
|
|
125
125
|
});
|
|
126
126
|
|
|
127
127
|
test("platform registration decides the check; local config cannot", async () => {
|
|
128
|
-
// Registration lives on the
|
|
128
|
+
// Registration lives on the cloud. A stray local `email.address`
|
|
129
129
|
// config value (a key nothing writes) must not make an unregistered
|
|
130
130
|
// inbox pass.
|
|
131
131
|
setConfig("ingress", {
|
|
@@ -143,7 +143,7 @@ describe("channel readiness routes — email and WhatsApp probes", () => {
|
|
|
143
143
|
);
|
|
144
144
|
});
|
|
145
145
|
|
|
146
|
-
test("not ready when the
|
|
146
|
+
test("not ready when the cloud reports no inbox (remote check)", async () => {
|
|
147
147
|
setConfig("ingress", {
|
|
148
148
|
publicBaseUrl: "https://example.com",
|
|
149
149
|
enabled: true,
|
|
@@ -186,7 +186,7 @@ describe("channel readiness routes — email and WhatsApp probes", () => {
|
|
|
186
186
|
expect(snapshot.reasons).toHaveLength(0);
|
|
187
187
|
});
|
|
188
188
|
|
|
189
|
-
test("a your-own credential decides even when the
|
|
189
|
+
test("a your-own credential decides even when the cloud is unreachable", async () => {
|
|
190
190
|
setConfig("ingress", {
|
|
191
191
|
publicBaseUrl: "https://example.com",
|
|
192
192
|
enabled: true,
|
|
@@ -23,19 +23,19 @@ mock.module("../calls/twilio-rest.js", () => ({
|
|
|
23
23
|
}));
|
|
24
24
|
|
|
25
25
|
mock.module("../config/env-registry.js", () => ({
|
|
26
|
-
|
|
26
|
+
getIsCloud: () => mockGetIsPlatform,
|
|
27
27
|
}));
|
|
28
28
|
|
|
29
29
|
// Spread the real module: replacing it wholesale drops the exports peer test
|
|
30
30
|
// files import from it, which breaks their named-import validation whenever
|
|
31
31
|
// this mock wins evaluation in a combined run.
|
|
32
32
|
const actualRegistration =
|
|
33
|
-
await import("../inbound/
|
|
34
|
-
mock.module("../inbound/
|
|
33
|
+
await import("../inbound/cloud-callback-registration.js");
|
|
34
|
+
mock.module("../inbound/cloud-callback-registration.js", () => ({
|
|
35
35
|
...actualRegistration,
|
|
36
|
-
|
|
36
|
+
resolveCloudCallbackRegistrationContext: async () => ({
|
|
37
37
|
isPlatform: mockGetIsPlatform,
|
|
38
|
-
|
|
38
|
+
cloudBaseUrl: "https://cloud.mycadet.ai",
|
|
39
39
|
assistantId: mockPlatformConnected ? "assistant-123" : "",
|
|
40
40
|
hasAssistantApiKey: mockPlatformConnected,
|
|
41
41
|
authHeader: mockPlatformConnected ? "Api-Key secret" : null,
|
|
@@ -292,8 +292,8 @@ describe("ChannelReadinessService", () => {
|
|
|
292
292
|
});
|
|
293
293
|
});
|
|
294
294
|
|
|
295
|
-
test("telegram readiness accepts a
|
|
296
|
-
// LUM-2882: `webhooks register telegram` resolves a
|
|
295
|
+
test("telegram readiness accepts a cloud-connected assistant with no ingress", async () => {
|
|
296
|
+
// LUM-2882: `webhooks register telegram` resolves a cloud callback URL
|
|
297
297
|
// in this configuration, so reporting missing ingress here would hide a
|
|
298
298
|
// registration that is really in place (or really broken).
|
|
299
299
|
mockPlatformConnected = true;
|
|
@@ -311,7 +311,7 @@ describe("ChannelReadinessService", () => {
|
|
|
311
311
|
});
|
|
312
312
|
});
|
|
313
313
|
|
|
314
|
-
test("phone readiness accepts a
|
|
314
|
+
test("phone readiness accepts a cloud-connected assistant with no ingress", async () => {
|
|
315
315
|
mockPlatformConnected = true;
|
|
316
316
|
mockHasTwilioCredentials = true;
|
|
317
317
|
setConfig("twilio", { phoneNumber: "+15550123" });
|
|
@@ -327,7 +327,7 @@ describe("ChannelReadinessService", () => {
|
|
|
327
327
|
});
|
|
328
328
|
});
|
|
329
329
|
|
|
330
|
-
test("configured ingress beats the
|
|
330
|
+
test("configured ingress beats the cloud-connected fallback", async () => {
|
|
331
331
|
// Any logged-in local assistant holds cloud credentials for the LLM
|
|
332
332
|
// proxy. Reporting managed routing here would mislabel a webhook that
|
|
333
333
|
// `webhooks register` resolves to the self-hosted URL.
|
|
@@ -347,9 +347,9 @@ describe("ChannelReadinessService", () => {
|
|
|
347
347
|
});
|
|
348
348
|
});
|
|
349
349
|
|
|
350
|
-
test("explicit ingress opt-out blocks the
|
|
350
|
+
test("explicit ingress opt-out blocks the cloud-connected fallback", async () => {
|
|
351
351
|
// Switching ingress off is a decision not to accept inbound webhooks, not
|
|
352
|
-
// an invitation to route them through the
|
|
352
|
+
// an invitation to route them through the cloud instead.
|
|
353
353
|
mockPlatformConnected = true;
|
|
354
354
|
mockSecureKeys[credentialKey("telegram", "bot_token")] = "123:abc";
|
|
355
355
|
mockSecureKeys[credentialKey("telegram", "webhook_secret")] = "secret";
|
|
@@ -365,10 +365,10 @@ describe("ChannelReadinessService", () => {
|
|
|
365
365
|
});
|
|
366
366
|
});
|
|
367
367
|
|
|
368
|
-
test("email readiness accepts a
|
|
369
|
-
// Inbound email arrives through the
|
|
368
|
+
test("email readiness accepts a cloud-connected assistant with no ingress", async () => {
|
|
369
|
+
// Inbound email arrives through the cloud callback route the gateway
|
|
370
370
|
// registers (`registerEmailCallbackRoute`, the same pattern as Telegram),
|
|
371
|
-
// so a
|
|
371
|
+
// so a cloud-connected assistant with no public ingress URL still
|
|
372
372
|
// receives email and must not report missing ingress.
|
|
373
373
|
mockPlatformConnected = true;
|
|
374
374
|
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* indicator went green on a channel nobody could reach.
|
|
8
8
|
*
|
|
9
9
|
* The classification lives in `checkTelegramWebhookHealth`, which already
|
|
10
|
-
* handles error recency and the
|
|
10
|
+
* handles error recency and the cloud-versus-self-hosted recovery text.
|
|
11
11
|
* These tests pin how the probe maps its verdicts across three outcomes, not
|
|
12
12
|
* two: verified pass, hard failure, and the no-evidence statuses that are
|
|
13
13
|
* neither. A probe that cannot see the answer must not report a fault, and
|
|
@@ -20,6 +20,8 @@
|
|
|
20
20
|
*/
|
|
21
21
|
import { beforeEach, describe, expect, mock, test } from "bun:test";
|
|
22
22
|
|
|
23
|
+
import { setOverridesForTesting } from "../__tests__/feature-flag-test-helpers.js";
|
|
24
|
+
|
|
23
25
|
// ── Store mock: reads stay pending until the test releases them ──────────
|
|
24
26
|
// Only reached on the store-fallback path (a ref with no proven value); the
|
|
25
27
|
// proven path redacts the route-served bytes without touching the store.
|
|
@@ -34,12 +36,6 @@ mock.module("../security/secure-keys.js", () => ({
|
|
|
34
36
|
}),
|
|
35
37
|
}));
|
|
36
38
|
|
|
37
|
-
// Feature flag on regardless of config contents.
|
|
38
|
-
mock.module("../config/assistant-feature-flags.js", () => ({
|
|
39
|
-
isAssistantFeatureFlagEnabled: (flag: string) =>
|
|
40
|
-
flag === "chat-credential-reveal",
|
|
41
|
-
}));
|
|
42
|
-
|
|
43
39
|
mock.module("../config/loader.js", () => ({
|
|
44
40
|
getConfig: () => ({}),
|
|
45
41
|
}));
|
|
@@ -172,6 +168,9 @@ const REVEAL_TOOL_RESULT = {
|
|
|
172
168
|
} as Extract<AgentEvent, { type: "tool_result" }>;
|
|
173
169
|
|
|
174
170
|
beforeEach(() => {
|
|
171
|
+
// Real flag resolution: only chat-credential-reveal is enabled.
|
|
172
|
+
setOverridesForTesting({ "chat-credential-reveal": true });
|
|
173
|
+
|
|
175
174
|
_resetStreamStateForTesting();
|
|
176
175
|
_resetRevealSuccessRegistryForTest();
|
|
177
176
|
resetForChatMintRegistryForTest();
|
|
@@ -284,20 +284,20 @@ describe("Permission Checker", () => {
|
|
|
284
284
|
expect(result.decision).toBe("prompt");
|
|
285
285
|
});
|
|
286
286
|
|
|
287
|
-
test("
|
|
287
|
+
test("scaffold_cloud_skill high risk → prompt", async () => {
|
|
288
288
|
mockRisk("high");
|
|
289
289
|
const result = await check(
|
|
290
|
-
"
|
|
290
|
+
"scaffold_cloud_skill",
|
|
291
291
|
{ skill_id: "my-skill" },
|
|
292
292
|
"/tmp",
|
|
293
293
|
);
|
|
294
294
|
expect(result.decision).toBe("prompt");
|
|
295
295
|
});
|
|
296
296
|
|
|
297
|
-
test("
|
|
297
|
+
test("delete_cloud_skill high risk → prompt", async () => {
|
|
298
298
|
mockRisk("high");
|
|
299
299
|
const result = await check(
|
|
300
|
-
"
|
|
300
|
+
"delete_cloud_skill",
|
|
301
301
|
{ skill_id: "my-skill" },
|
|
302
302
|
"/tmp",
|
|
303
303
|
);
|
|
@@ -531,9 +531,9 @@ describe("Permission Checker", () => {
|
|
|
531
531
|
// High risk, requiring explicit high-risk approval. Reads remain Low.
|
|
532
532
|
|
|
533
533
|
describe("skill source mutation risk escalation (PR 29)", () => {
|
|
534
|
-
// Ensure the
|
|
534
|
+
// Ensure the cloud skills directory exists so that symlink-resolved
|
|
535
535
|
// paths (e.g. /private/var on macOS) match between normalizeFilePath
|
|
536
|
-
// and
|
|
536
|
+
// and getCloudSkillsRoot.
|
|
537
537
|
function ensureSkillsDir(): void {
|
|
538
538
|
mkdirSync(join(checkerTestDir, "skills"), { recursive: true });
|
|
539
539
|
}
|