@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
|
@@ -23,13 +23,13 @@ import { getWorkspaceDir, getWorkspaceSkillsDir } from "../util/platform.js";
|
|
|
23
23
|
import { parseFrontmatterFields } from "./frontmatter.js";
|
|
24
24
|
import { writeInstallMeta } from "./install-meta.js";
|
|
25
25
|
|
|
26
|
-
const log = getLogger("
|
|
26
|
+
const log = getLogger("cloud-store");
|
|
27
27
|
|
|
28
28
|
// ─── Validation ──────────────────────────────────────────────────────────────
|
|
29
29
|
|
|
30
30
|
const VALID_SKILL_ID = /^[a-z0-9][a-z0-9._-]*$/;
|
|
31
31
|
|
|
32
|
-
export function
|
|
32
|
+
export function validateCloudSkillId(id: string): string | null {
|
|
33
33
|
if (!id || typeof id !== "string") {
|
|
34
34
|
return "skill_id is required";
|
|
35
35
|
}
|
|
@@ -44,8 +44,8 @@ export function validateManagedSkillId(id: string): string | null {
|
|
|
44
44
|
|
|
45
45
|
// ─── Path helpers ────────────────────────────────────────────────────────────
|
|
46
46
|
|
|
47
|
-
/** Absolute path of a
|
|
48
|
-
export function
|
|
47
|
+
/** Absolute path of a cloud skill's directory (whether or not it exists). */
|
|
48
|
+
export function getCloudSkillDir(id: string): string {
|
|
49
49
|
return join(getWorkspaceSkillsDir(), id);
|
|
50
50
|
}
|
|
51
51
|
|
|
@@ -335,12 +335,12 @@ function atomicWriteFile(filePath: string, content: string): void {
|
|
|
335
335
|
// ─── Version metadata ─────────────────────────────────────────────────────────
|
|
336
336
|
|
|
337
337
|
function getVersionMetaPath(id: string): string {
|
|
338
|
-
return join(
|
|
338
|
+
return join(getCloudSkillDir(id), "version.json");
|
|
339
339
|
}
|
|
340
340
|
|
|
341
341
|
// ─── Create / Delete ─────────────────────────────────────────────────────────
|
|
342
342
|
|
|
343
|
-
interface
|
|
343
|
+
interface CreateCloudSkillParams {
|
|
344
344
|
id: string;
|
|
345
345
|
name: string;
|
|
346
346
|
description: string;
|
|
@@ -363,16 +363,16 @@ interface CreateManagedSkillParams {
|
|
|
363
363
|
files?: Array<{ path: string; content?: string; copyFrom?: string }>;
|
|
364
364
|
}
|
|
365
365
|
|
|
366
|
-
interface
|
|
366
|
+
interface CreateCloudSkillResult {
|
|
367
367
|
created: boolean;
|
|
368
368
|
path: string;
|
|
369
369
|
error?: string;
|
|
370
370
|
}
|
|
371
371
|
|
|
372
|
-
export function
|
|
373
|
-
params:
|
|
374
|
-
):
|
|
375
|
-
const validationError =
|
|
372
|
+
export function createCloudSkill(
|
|
373
|
+
params: CreateCloudSkillParams,
|
|
374
|
+
): CreateCloudSkillResult {
|
|
375
|
+
const validationError = validateCloudSkillId(params.id);
|
|
376
376
|
if (validationError) {
|
|
377
377
|
return {
|
|
378
378
|
created: false,
|
|
@@ -396,7 +396,7 @@ export function createManagedSkill(
|
|
|
396
396
|
};
|
|
397
397
|
}
|
|
398
398
|
|
|
399
|
-
const skillDir =
|
|
399
|
+
const skillDir = getCloudSkillDir(params.id);
|
|
400
400
|
const skillFilePath = join(skillDir, "SKILL.md");
|
|
401
401
|
|
|
402
402
|
const skillExists = existsSync(skillFilePath);
|
|
@@ -414,7 +414,7 @@ export function createManagedSkill(
|
|
|
414
414
|
// rarely hold every field (the retrospective sees a skill through a
|
|
415
415
|
// similarity hit; a user edit is "change step 3"), so a field they do not
|
|
416
416
|
// pass is kept rather than dropped.
|
|
417
|
-
const existing = skillExists ?
|
|
417
|
+
const existing = skillExists ? readStoredCloudSkill(params.id) : null;
|
|
418
418
|
|
|
419
419
|
// Resolve and validate every companion path before any write so an invalid
|
|
420
420
|
// path leaves no partial files behind.
|
|
@@ -523,7 +523,7 @@ export function createManagedSkill(
|
|
|
523
523
|
* it into prose. `frontmatter` is the whole block as written, for an
|
|
524
524
|
* overwrite to carry keys through that the typed fields do not cover.
|
|
525
525
|
*/
|
|
526
|
-
export interface
|
|
526
|
+
export interface StoredCloudSkill {
|
|
527
527
|
name: string;
|
|
528
528
|
description: string;
|
|
529
529
|
frontmatter: Record<string, unknown>;
|
|
@@ -536,14 +536,12 @@ export interface StoredManagedSkill {
|
|
|
536
536
|
}
|
|
537
537
|
|
|
538
538
|
/**
|
|
539
|
-
* Read a
|
|
539
|
+
* Read a cloud skill from disk. Best-effort: a missing file or frontmatter
|
|
540
540
|
* that does not parse resolves to null, so a caller enriching or patching one
|
|
541
541
|
* skill never fails on a bad one.
|
|
542
542
|
*/
|
|
543
|
-
export function
|
|
544
|
-
skillId
|
|
545
|
-
): StoredManagedSkill | null {
|
|
546
|
-
const skillFilePath = join(getManagedSkillDir(skillId), "SKILL.md");
|
|
543
|
+
export function readStoredCloudSkill(skillId: string): StoredCloudSkill | null {
|
|
544
|
+
const skillFilePath = join(getCloudSkillDir(skillId), "SKILL.md");
|
|
547
545
|
try {
|
|
548
546
|
const content = readFileSync(skillFilePath, "utf-8");
|
|
549
547
|
const parsed = parseFrontmatter(content, skillFilePath);
|
|
@@ -568,18 +566,18 @@ export function readStoredManagedSkill(
|
|
|
568
566
|
}
|
|
569
567
|
}
|
|
570
568
|
|
|
571
|
-
interface
|
|
569
|
+
interface DeleteCloudSkillResult {
|
|
572
570
|
deleted: boolean;
|
|
573
571
|
error?: string;
|
|
574
572
|
}
|
|
575
573
|
|
|
576
|
-
export function
|
|
577
|
-
const validationError =
|
|
574
|
+
export function deleteCloudSkill(id: string): DeleteCloudSkillResult {
|
|
575
|
+
const validationError = validateCloudSkillId(id);
|
|
578
576
|
if (validationError) {
|
|
579
577
|
return { deleted: false, error: validationError };
|
|
580
578
|
}
|
|
581
579
|
|
|
582
|
-
const skillDir =
|
|
580
|
+
const skillDir = getCloudSkillDir(id);
|
|
583
581
|
if (!existsSync(skillDir)) {
|
|
584
582
|
return {
|
|
585
583
|
deleted: false,
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* - Sanitized environment variables only (no API keys, tokens, credentials)
|
|
8
8
|
* - No credential proxy, no CES client, no host fallback
|
|
9
|
-
* - Runs in Docker/
|
|
9
|
+
* - Runs in Docker/cloud-managed environments (network/filesystem isolation
|
|
10
10
|
* is provided by the container, not OS-level sandboxing)
|
|
11
11
|
* - Uses the conversation working directory as `cwd` so repo-local commands
|
|
12
12
|
* remain interoperable with externally authored skills that expect project
|
|
@@ -38,7 +38,7 @@ export interface SkillInstallMeta {
|
|
|
38
38
|
// breadcrumb only — `sourceConversationId` is the durable lineage.
|
|
39
39
|
retrospectiveConversationId?: string;
|
|
40
40
|
// Day-granularity stamp of the last time the skill was loaded (ISO 8601).
|
|
41
|
-
// Stamped by `touchSkillLastUsed` on the
|
|
41
|
+
// Stamped by `touchSkillLastUsed` on the cloud-skill activation path; the
|
|
42
42
|
// usage-based prune reads its date portion as the last-used signal.
|
|
43
43
|
lastUsedAt?: string;
|
|
44
44
|
}
|
|
@@ -5,10 +5,10 @@ import { getBundledSkillsDir } from "../config/skills.js";
|
|
|
5
5
|
import { getWorkspaceSkillsDir } from "../util/platform.js";
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
* Returns the
|
|
8
|
+
* Returns the cloud skills root directory. Managed skills are user-installed
|
|
9
9
|
* skills that live under $CADET_WORKSPACE_DIR/skills.
|
|
10
10
|
*/
|
|
11
|
-
export function
|
|
11
|
+
export function getCloudSkillsRoot(): string {
|
|
12
12
|
return normalizeDirPath(getWorkspaceSkillsDir());
|
|
13
13
|
}
|
|
14
14
|
|
|
@@ -91,7 +91,7 @@ export function normalizeFilePath(filePath: string): string {
|
|
|
91
91
|
* be passed via the `extraRoots` parameter.
|
|
92
92
|
*/
|
|
93
93
|
export function getSkillRoots(extraRoots?: string[]): string[] {
|
|
94
|
-
const roots = [
|
|
94
|
+
const roots = [getCloudSkillsRoot(), getBundledSkillsRoot()];
|
|
95
95
|
if (extraRoots) {
|
|
96
96
|
for (const root of extraRoots) {
|
|
97
97
|
roots.push(normalizeDirPath(root));
|
|
@@ -103,7 +103,7 @@ export function getSkillRoots(extraRoots?: string[]): string[] {
|
|
|
103
103
|
/**
|
|
104
104
|
* Checks whether an absolute path falls under any known skill directory.
|
|
105
105
|
*
|
|
106
|
-
* Returns true if the path is inside the
|
|
106
|
+
* Returns true if the path is inside the cloud skills dir, the bundled
|
|
107
107
|
* skills dir, or any of the provided extra roots. The check is
|
|
108
108
|
* symlink-safe: both the candidate path and the skill roots are resolved
|
|
109
109
|
* through realpath when the paths exist on disk.
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
// ---------------------------------------------------------------------------
|
|
4
4
|
//
|
|
5
5
|
// The workspace is a git repo with an auto-committing heartbeat, and `skills/`
|
|
6
|
-
// is tracked, so every
|
|
6
|
+
// is tracked, so every cloud-skill write already has its prior content
|
|
7
7
|
// retained. This module reads that history rather than storing a second copy:
|
|
8
|
-
// `
|
|
8
|
+
// `createCloudSkill` writes through an atomic rename and keeps no version of
|
|
9
9
|
// its own, but the commit underneath it does.
|
|
10
10
|
//
|
|
11
11
|
// A revision here is ONE UPDATE TO THE WHOLE SKILL, not a per-file log. A
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
import { getLogger } from "../util/logger.js";
|
|
44
44
|
import { getWorkspaceDir } from "../util/platform.js";
|
|
45
45
|
import { getWorkspaceGitService } from "../workspace/git-service.js";
|
|
46
|
-
import {
|
|
46
|
+
import { validateCloudSkillId } from "./cloud-store.js";
|
|
47
47
|
|
|
48
48
|
const log = getLogger("skill-history");
|
|
49
49
|
|
|
@@ -128,7 +128,7 @@ export async function getSkillHistory(
|
|
|
128
128
|
skillId: string,
|
|
129
129
|
options: { limit?: number } = {},
|
|
130
130
|
): Promise<SkillHistory> {
|
|
131
|
-
const invalid =
|
|
131
|
+
const invalid = validateCloudSkillId(skillId);
|
|
132
132
|
if (invalid) {
|
|
133
133
|
throw new Error(`Invalid skill id: ${invalid}`);
|
|
134
134
|
}
|
|
@@ -413,7 +413,7 @@ const VALID_SKILL_SLUG = /^[a-z0-9][a-z0-9._-]*$/;
|
|
|
413
413
|
|
|
414
414
|
/**
|
|
415
415
|
* Validate that a skill slug is safe for use in filesystem paths.
|
|
416
|
-
* Follows the same pattern as `
|
|
416
|
+
* Follows the same pattern as `validateCloudSkillId` in cloud-store.ts.
|
|
417
417
|
*/
|
|
418
418
|
export function validateSkillSlug(slug: string): void {
|
|
419
419
|
if (!slug || typeof slug !== "string") {
|
|
@@ -611,7 +611,7 @@ describe("normalizeSttError", () => {
|
|
|
611
611
|
});
|
|
612
612
|
|
|
613
613
|
describe("cadet factory case", () => {
|
|
614
|
-
test("constructs the
|
|
614
|
+
test("constructs the cloud transcriber with no API key", () => {
|
|
615
615
|
const transcriber = createDaemonBatchTranscriber(null, "cadet");
|
|
616
616
|
expect(transcriber?.providerId).toBe("cadet");
|
|
617
617
|
expect(transcriber?.boundaryId).toBe("daemon-batch");
|
|
@@ -206,8 +206,8 @@ export function normalizeSttError(err: unknown): SttError {
|
|
|
206
206
|
}
|
|
207
207
|
|
|
208
208
|
// ---------------------------------------------------------------------------
|
|
209
|
-
// Cadet
|
|
210
|
-
// platform's
|
|
209
|
+
// Cadet Cloud adapter — implements BatchTranscriber on top of the
|
|
210
|
+
// platform's cloud speech endpoint. No API key: the cloud connection
|
|
211
211
|
// is the credential.
|
|
212
212
|
// ---------------------------------------------------------------------------
|
|
213
213
|
|
|
@@ -220,9 +220,9 @@ class CadetManagedBatchTranscriber implements BatchTranscriber {
|
|
|
220
220
|
async transcribe(
|
|
221
221
|
request: SttTranscribeRequest,
|
|
222
222
|
): Promise<SttTranscribeResult> {
|
|
223
|
-
const {
|
|
224
|
-
await import("../providers/speech-to-text/cadet-
|
|
225
|
-
return
|
|
223
|
+
const { cadetCloudTranscribe } =
|
|
224
|
+
await import("../providers/speech-to-text/cadet-cloud.js");
|
|
225
|
+
return cadetCloudTranscribe(
|
|
226
226
|
request.audio,
|
|
227
227
|
request.mimeType,
|
|
228
228
|
request.signal,
|
|
@@ -243,7 +243,7 @@ class CadetManagedBatchTranscriber implements BatchTranscriber {
|
|
|
243
243
|
* `language` is the spoken language, forwarded to providers whose batch API
|
|
244
244
|
* accepts one: Deepgram (where `"multi"` also pins nova-3), xAI (where
|
|
245
245
|
* `"multi"` is dropped because it is a Deepgram-specific value, not a
|
|
246
|
-
* language code), and the Cadet
|
|
246
|
+
* language code), and the Cadet Cloud path, whose cloud proxy passes
|
|
247
247
|
* it to Deepgram server-side. Whisper and Gemini auto-detect natively and
|
|
248
248
|
* take no language parameter, so it is silently ignored for them.
|
|
249
249
|
*
|
|
@@ -255,7 +255,7 @@ export function createDaemonBatchTranscriber(
|
|
|
255
255
|
providerId: SttProviderId,
|
|
256
256
|
language?: string,
|
|
257
257
|
): BatchTranscriber | null {
|
|
258
|
-
//
|
|
258
|
+
// Cloud speech authenticates via the cloud connection, not an API
|
|
259
259
|
// key. Callers pass canonical ids; the resolver maps legacy ones first.
|
|
260
260
|
if (providerId === "cadet") {
|
|
261
261
|
return new CadetManagedBatchTranscriber(language);
|
package/src/stt/types.ts
CHANGED
|
@@ -55,8 +55,8 @@ export type SttProviderId =
|
|
|
55
55
|
| "xai"
|
|
56
56
|
| "cadet"
|
|
57
57
|
/**
|
|
58
|
-
*
|
|
59
|
-
* through the
|
|
58
|
+
* Cloud Flux: the same conversational model as `deepgram-flux`, reached
|
|
59
|
+
* through the cloud's speech relay instead of a Deepgram key. Dials the
|
|
60
60
|
* relay's STT v2 endpoint asking for native Flux frames, so it keeps the
|
|
61
61
|
* turn events the relay's default v1-shaped translation drops.
|
|
62
62
|
*/
|
|
@@ -208,7 +208,7 @@ export class SttError extends Error {
|
|
|
208
208
|
/**
|
|
209
209
|
* When true, {@link message} is already user-facing, provider-appropriate
|
|
210
210
|
* copy and must be surfaced verbatim rather than rewritten by
|
|
211
|
-
* `describeSttFailure`. Set by adapters (e.g.
|
|
211
|
+
* `describeSttFailure`. Set by adapters (e.g. cloud speech) whose failures
|
|
212
212
|
* carry specific remediation — a credit top-up or platform reconnect — that
|
|
213
213
|
* the generic BYOK "check your API key" copy would erase.
|
|
214
214
|
*/
|
package/src/subagent/manager.ts
CHANGED
|
@@ -361,7 +361,7 @@ export function buildSubagentTerminalMessage(opts: {
|
|
|
361
361
|
|
|
362
362
|
// ── Manager ─────────────────────────────────────────────────────────────
|
|
363
363
|
|
|
364
|
-
interface
|
|
364
|
+
interface CloudSubagent {
|
|
365
365
|
/** Live conversation — null after the subagent reaches a terminal state and is released. */
|
|
366
366
|
conversation: Conversation | null;
|
|
367
367
|
state: SubagentState;
|
|
@@ -467,8 +467,8 @@ export class SubagentSpawnCancelledError extends Error {
|
|
|
467
467
|
}
|
|
468
468
|
|
|
469
469
|
export class SubagentManager {
|
|
470
|
-
/** subagentId →
|
|
471
|
-
private subagents = new Map<string,
|
|
470
|
+
/** subagentId → CloudSubagent */
|
|
471
|
+
private subagents = new Map<string, CloudSubagent>();
|
|
472
472
|
/** parentConversationId → Set<subagentId> */
|
|
473
473
|
private parentToChildren = new Map<string, Set<string>>();
|
|
474
474
|
/** `${parentConversationId}:${normalizedLabel}` → subagentId */
|
|
@@ -566,7 +566,7 @@ export class SubagentManager {
|
|
|
566
566
|
config: Omit<SubagentConfig, "id">,
|
|
567
567
|
parentSendToClient: (msg: AssistantEvent) => void,
|
|
568
568
|
opts?: { synchronous?: boolean },
|
|
569
|
-
): Promise<{ subagentId: string; managed:
|
|
569
|
+
): Promise<{ subagentId: string; managed: CloudSubagent }> {
|
|
570
570
|
// ── Limit checks ────────────────────────────────────────────────
|
|
571
571
|
|
|
572
572
|
// Depth check: prevent subagents from spawning nested subagents.
|
|
@@ -703,9 +703,9 @@ export class SubagentManager {
|
|
|
703
703
|
usage: { inputTokens: 0, outputTokens: 0, estimatedCost: 0 },
|
|
704
704
|
};
|
|
705
705
|
|
|
706
|
-
// Store the
|
|
706
|
+
// Store the cloud subagent early so the wrapper can read the mutable
|
|
707
707
|
// parentSendToClient reference — this ensures reconnects are picked up.
|
|
708
|
-
const managed:
|
|
708
|
+
const managed: CloudSubagent = {
|
|
709
709
|
// Placeholder — replaced with the real Conversation a few lines below, before
|
|
710
710
|
// any code reads this field. Using null! avoids the `as unknown as` cast.
|
|
711
711
|
conversation: null! as Conversation,
|
|
@@ -1195,7 +1195,7 @@ export class SubagentManager {
|
|
|
1195
1195
|
* without `maxRuntimeMs` is unbounded in time, which is right for delegated
|
|
1196
1196
|
* work whose length is the point.
|
|
1197
1197
|
*/
|
|
1198
|
-
private armRuntimeBudget(managed:
|
|
1198
|
+
private armRuntimeBudget(managed: CloudSubagent): void {
|
|
1199
1199
|
const maxRuntimeMs = managed.state.config.maxRuntimeMs;
|
|
1200
1200
|
if (maxRuntimeMs === undefined || maxRuntimeMs <= 0) {
|
|
1201
1201
|
return;
|
|
@@ -1208,7 +1208,7 @@ export class SubagentManager {
|
|
|
1208
1208
|
}, maxRuntimeMs);
|
|
1209
1209
|
}
|
|
1210
1210
|
|
|
1211
|
-
private clearRuntimeBudget(managed:
|
|
1211
|
+
private clearRuntimeBudget(managed: CloudSubagent): void {
|
|
1212
1212
|
if (managed.runtimeTimer) {
|
|
1213
1213
|
clearTimeout(managed.runtimeTimer);
|
|
1214
1214
|
managed.runtimeTimer = undefined;
|
|
@@ -1226,7 +1226,7 @@ export class SubagentManager {
|
|
|
1226
1226
|
* hook inside the agent loop.
|
|
1227
1227
|
*/
|
|
1228
1228
|
private countToolCallAgainstBudget(
|
|
1229
|
-
managed:
|
|
1229
|
+
managed: CloudSubagent,
|
|
1230
1230
|
msg: AssistantEvent,
|
|
1231
1231
|
): void {
|
|
1232
1232
|
const maxToolCalls = managed.state.config.maxToolCalls;
|
|
@@ -1258,7 +1258,7 @@ export class SubagentManager {
|
|
|
1258
1258
|
* {@link notifyParentBudgetStop} sends it from the run's `finally`, once the
|
|
1259
1259
|
* loop has unwound.
|
|
1260
1260
|
*/
|
|
1261
|
-
private stopForBudget(managed:
|
|
1261
|
+
private stopForBudget(managed: CloudSubagent, reason: string): void {
|
|
1262
1262
|
const { id } = managed.state.config;
|
|
1263
1263
|
const stopped = this.abort(id, managed.parentSendToClient, undefined, {
|
|
1264
1264
|
suppressNotification: true,
|
|
@@ -1289,7 +1289,7 @@ export class SubagentManager {
|
|
|
1289
1289
|
* pointer is kept for the run that wrote nothing.
|
|
1290
1290
|
*/
|
|
1291
1291
|
private notifyParentBudgetStop(
|
|
1292
|
-
managed:
|
|
1292
|
+
managed: CloudSubagent,
|
|
1293
1293
|
finalText: string,
|
|
1294
1294
|
): void {
|
|
1295
1295
|
const reason = managed.pendingBudgetStopNotice;
|
|
@@ -1742,7 +1742,7 @@ export class SubagentManager {
|
|
|
1742
1742
|
* nothing measured to report, and a zero taken mid-flight would read as
|
|
1743
1743
|
* "this subagent used no tools" rather than "not measured yet".
|
|
1744
1744
|
*/
|
|
1745
|
-
private refreshToolStats(managed:
|
|
1745
|
+
private refreshToolStats(managed: CloudSubagent): void {
|
|
1746
1746
|
if (managed.conversation && managed.state.stats) {
|
|
1747
1747
|
managed.state.stats = snapshotToolStats(managed.conversation);
|
|
1748
1748
|
}
|
|
@@ -1843,7 +1843,7 @@ export class SubagentManager {
|
|
|
1843
1843
|
* lightweight metadata (state, config, usage) for later queries.
|
|
1844
1844
|
* The conversation's output is already persisted in the database.
|
|
1845
1845
|
*/
|
|
1846
|
-
private releaseConversation(managed:
|
|
1846
|
+
private releaseConversation(managed: CloudSubagent): void {
|
|
1847
1847
|
if (!managed.conversation) {
|
|
1848
1848
|
return;
|
|
1849
1849
|
}
|
|
@@ -2005,7 +2005,7 @@ export class SubagentManager {
|
|
|
2005
2005
|
status: settleUnsupervisedStatus(mapped.status),
|
|
2006
2006
|
};
|
|
2007
2007
|
|
|
2008
|
-
const managed:
|
|
2008
|
+
const managed: CloudSubagent = {
|
|
2009
2009
|
conversation: null,
|
|
2010
2010
|
state,
|
|
2011
2011
|
parentSendToClient: () => {},
|
|
@@ -2153,7 +2153,7 @@ export class SubagentManager {
|
|
|
2153
2153
|
* on the result directly rather than issuing a `subagent_read` call.
|
|
2154
2154
|
*/
|
|
2155
2155
|
private notifyParentTerminal(
|
|
2156
|
-
managed:
|
|
2156
|
+
managed: CloudSubagent,
|
|
2157
2157
|
outcome: "completed" | "failed",
|
|
2158
2158
|
finalText?: string,
|
|
2159
2159
|
deniedTools?: string[],
|
package/src/subagent/types.ts
CHANGED
|
@@ -468,7 +468,7 @@ export function subagentOutputContractText(
|
|
|
468
468
|
* them, so a correction lands once.
|
|
469
469
|
*
|
|
470
470
|
* Mirrored on the wire as `llm_usage.subagent_spawn_mode`, which is an OPEN
|
|
471
|
-
* string set on the
|
|
471
|
+
* string set on the cloud side: adding a value here needs no coordinated
|
|
472
472
|
* platform release.
|
|
473
473
|
*/
|
|
474
474
|
export type SubagentSpawnMode =
|
|
@@ -13,7 +13,7 @@ const secureKeyValues = useMemorySecureKeyMap();
|
|
|
13
13
|
// `webhooks register` actually does for platform-connected local assistants.
|
|
14
14
|
let ingressConfig: Record<string, unknown> = {};
|
|
15
15
|
let isPlatform = false;
|
|
16
|
-
let
|
|
16
|
+
let cloudContextEnabled = false;
|
|
17
17
|
|
|
18
18
|
type FetchOutcome =
|
|
19
19
|
| { kind: "json"; status?: number; body: unknown }
|
|
@@ -65,20 +65,20 @@ mock.module("../../config/loader.js", () => ({
|
|
|
65
65
|
const actualEnvRegistry = await import("../../config/env-registry.js");
|
|
66
66
|
mock.module("../../config/env-registry.js", () => ({
|
|
67
67
|
...actualEnvRegistry,
|
|
68
|
-
|
|
68
|
+
getIsCloud: () => isPlatform,
|
|
69
69
|
}));
|
|
70
70
|
|
|
71
71
|
const actualRegistration =
|
|
72
|
-
await import("../../inbound/
|
|
73
|
-
mock.module("../../inbound/
|
|
72
|
+
await import("../../inbound/cloud-callback-registration.js");
|
|
73
|
+
mock.module("../../inbound/cloud-callback-registration.js", () => ({
|
|
74
74
|
...actualRegistration,
|
|
75
|
-
|
|
75
|
+
resolveCloudCallbackRegistrationContext: async () => ({
|
|
76
76
|
isPlatform,
|
|
77
|
-
|
|
78
|
-
assistantId:
|
|
79
|
-
hasAssistantApiKey:
|
|
80
|
-
authHeader:
|
|
81
|
-
enabled:
|
|
77
|
+
cloudBaseUrl: "https://cloud.mycadet.ai",
|
|
78
|
+
assistantId: cloudContextEnabled ? "assistant-123" : "",
|
|
79
|
+
hasAssistantApiKey: cloudContextEnabled,
|
|
80
|
+
authHeader: cloudContextEnabled ? "Api-Key secret" : null,
|
|
81
|
+
enabled: cloudContextEnabled,
|
|
82
82
|
}),
|
|
83
83
|
}));
|
|
84
84
|
|
|
@@ -155,7 +155,7 @@ beforeEach(() => {
|
|
|
155
155
|
secureKeyValues.set(WEBHOOK_SECRET_KEY, "s3cret");
|
|
156
156
|
ingressConfig = { publicBaseUrl: "https://example.test" };
|
|
157
157
|
isPlatform = false;
|
|
158
|
-
|
|
158
|
+
cloudContextEnabled = false;
|
|
159
159
|
setWebhookInfo({ url: WEBHOOK_URL, pending_update_count: 0 });
|
|
160
160
|
fetchCallCount = 0;
|
|
161
161
|
fetchedUrls.length = 0;
|
|
@@ -206,7 +206,7 @@ describe("gating", () => {
|
|
|
206
206
|
// An opt-out means no inbound webhook is expected at all, so the sweep has
|
|
207
207
|
// nothing to verify even though platform credentials are present.
|
|
208
208
|
ingressConfig = { enabled: false };
|
|
209
|
-
|
|
209
|
+
cloudContextEnabled = true;
|
|
210
210
|
|
|
211
211
|
const result = await runTelegramWebhookHealthCheck();
|
|
212
212
|
|
|
@@ -215,12 +215,12 @@ describe("gating", () => {
|
|
|
215
215
|
expect(emittedSignals).toHaveLength(0);
|
|
216
216
|
});
|
|
217
217
|
|
|
218
|
-
test("runs for a
|
|
219
|
-
// LUM-2882: `webhooks register telegram` registers a
|
|
218
|
+
test("runs for a cloud-connected local assistant with no ingress", async () => {
|
|
219
|
+
// LUM-2882: `webhooks register telegram` registers a cloud callback
|
|
220
220
|
// route in this exact configuration, so a broken registration is real and
|
|
221
221
|
// the sweep has to verify it rather than skip.
|
|
222
222
|
ingressConfig = {};
|
|
223
|
-
|
|
223
|
+
cloudContextEnabled = true;
|
|
224
224
|
setWebhookInfo({
|
|
225
225
|
url: WEBHOOK_URL,
|
|
226
226
|
last_error_date: unixSecondsAgo(30),
|
|
@@ -238,7 +238,7 @@ describe("gating", () => {
|
|
|
238
238
|
expect(result.detail).toContain("contact support");
|
|
239
239
|
});
|
|
240
240
|
|
|
241
|
-
test("runs when
|
|
241
|
+
test("runs when cloud-managed callbacks stand in for public ingress", async () => {
|
|
242
242
|
isPlatform = true;
|
|
243
243
|
ingressConfig = {};
|
|
244
244
|
setWebhookInfo({
|
|
@@ -166,8 +166,8 @@ function telegramApiBaseUrl(): string {
|
|
|
166
166
|
* and the assistant already maintain mirrored copies of the routing tier order
|
|
167
167
|
* (`resolveExpectedTelegramWebhookUrl` and `hasWebhookRoutingConfigured`, which
|
|
168
168
|
* cross-reference each other in comments after LUM-2899), and a third copy here
|
|
169
|
-
* would be a third thing to keep in agreement. It also lets the
|
|
170
|
-
* checked at all: resolving a
|
|
169
|
+
* would be a third thing to keep in agreement. It also lets the cloud path be
|
|
170
|
+
* checked at all: resolving a cloud callback URL means POSTing a route
|
|
171
171
|
* registration, which a read-only health check must not do.
|
|
172
172
|
*/
|
|
173
173
|
function recordedWebhookUrl(): string | undefined {
|
|
@@ -188,12 +188,12 @@ function channelLabel(): string {
|
|
|
188
188
|
|
|
189
189
|
/**
|
|
190
190
|
* The remediation path, which differs by deployment. Self-hosted users own the
|
|
191
|
-
* ingress URL;
|
|
191
|
+
* ingress URL; cloud-managed callback routes are registered for them.
|
|
192
192
|
*/
|
|
193
|
-
function fixPath(
|
|
194
|
-
if (
|
|
193
|
+
function fixPath(usesCloudCallbacks: boolean): string {
|
|
194
|
+
if (usesCloudCallbacks) {
|
|
195
195
|
return (
|
|
196
|
-
"This deployment uses
|
|
196
|
+
"This deployment uses cloud-managed callback routes, so the webhook URL is not yours to set — " +
|
|
197
197
|
"if it stays broken, contact support."
|
|
198
198
|
);
|
|
199
199
|
}
|
|
@@ -237,7 +237,7 @@ export async function checkTelegramWebhookHealth(): Promise<TelegramWebhookHealt
|
|
|
237
237
|
};
|
|
238
238
|
}
|
|
239
239
|
|
|
240
|
-
const { configured,
|
|
240
|
+
const { configured, usesCloudCallbacks } =
|
|
241
241
|
await hasWebhookRoutingConfigured(true);
|
|
242
242
|
if (!configured) {
|
|
243
243
|
return {
|
|
@@ -288,7 +288,7 @@ export async function checkTelegramWebhookHealth(): Promise<TelegramWebhookHealt
|
|
|
288
288
|
status: "not_registered",
|
|
289
289
|
detail:
|
|
290
290
|
`${label} has no webhook registered with Telegram, so inbound messages are not reaching ` +
|
|
291
|
-
`the assistant. ${fixPath(
|
|
291
|
+
`the assistant. ${fixPath(usesCloudCallbacks)}`,
|
|
292
292
|
...(pendingUpdateCount !== undefined ? { pendingUpdateCount } : {}),
|
|
293
293
|
};
|
|
294
294
|
}
|
|
@@ -307,7 +307,7 @@ export async function checkTelegramWebhookHealth(): Promise<TelegramWebhookHealt
|
|
|
307
307
|
detail:
|
|
308
308
|
`${label} is registered with Telegram at a different address than this assistant ` +
|
|
309
309
|
`last registered, so its messages are being delivered somewhere this assistant is not ` +
|
|
310
|
-
`listening. ${fixPath(
|
|
310
|
+
`listening. ${fixPath(usesCloudCallbacks)}`,
|
|
311
311
|
registeredUrl,
|
|
312
312
|
expectedUrl,
|
|
313
313
|
...(pendingUpdateCount !== undefined ? { pendingUpdateCount } : {}),
|
|
@@ -329,7 +329,7 @@ export async function checkTelegramWebhookHealth(): Promise<TelegramWebhookHealt
|
|
|
329
329
|
status: "delivery_failing",
|
|
330
330
|
detail:
|
|
331
331
|
`${label} cannot receive messages: Telegram reported "${reported}" while delivering to the ` +
|
|
332
|
-
`webhook.${queued} ${fixPath(
|
|
332
|
+
`webhook.${queued} ${fixPath(usesCloudCallbacks)}`,
|
|
333
333
|
...(info.last_error_message
|
|
334
334
|
? { lastErrorMessage: info.last_error_message }
|
|
335
335
|
: {}),
|
|
@@ -49,7 +49,7 @@ describe("config-setting-events-store", () => {
|
|
|
49
49
|
});
|
|
50
50
|
});
|
|
51
51
|
|
|
52
|
-
test("clamps oversize key and value to the
|
|
52
|
+
test("clamps oversize key and value to the cloud bounds", () => {
|
|
53
53
|
recordConfigSettingEvent({
|
|
54
54
|
configKey: "k".repeat(200),
|
|
55
55
|
configValue: "v".repeat(300),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { mock, spyOn } from "bun:test";
|
|
2
2
|
|
|
3
|
-
import type { ConsentState } from "../../
|
|
3
|
+
import type { ConsentState } from "../../cloud/consent-cache.js";
|
|
4
4
|
|
|
5
5
|
let shareAnalytics: ConsentState = true;
|
|
6
6
|
// Owner's `share_diagnostics` consent + accepted version — a second,
|
|
@@ -18,7 +18,7 @@ let shareDiagnosticsVersion = "2999-01-01";
|
|
|
18
18
|
// preload — so it runs after the per-test workspace override, where src/
|
|
19
19
|
// imports are as safe as in the test files themselves (AGENTS.md "Test
|
|
20
20
|
// machinery isolation" scopes its no-src/ rule to preload-time machinery).
|
|
21
|
-
mock.module("../../
|
|
21
|
+
mock.module("../../cloud/consent-cache.js", () => ({
|
|
22
22
|
getRawShareAnalytics: () => shareAnalytics,
|
|
23
23
|
getCachedShareDiagnostics: () => shareDiagnostics,
|
|
24
24
|
getCachedShareDiagnosticsVersion: () => shareDiagnosticsVersion,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { recordTelemetryEvent } from "./telemetry-events-outbox.js";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Server-side bounds from the
|
|
4
|
+
* Server-side bounds from the cloud `ConfigSettingTelemetryEventSerializer`.
|
|
5
5
|
* Values are clamped at record time so an oversize pair degrades to a
|
|
6
6
|
* truncated event instead of a per-event ingest rejection.
|
|
7
7
|
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { getRawShareAnalytics } from "../cloud/consent-cache.js";
|
|
1
2
|
import { getConfigReadOnly } from "../config/loader.js";
|
|
2
3
|
import type { AssistantConfig } from "../config/schema.js";
|
|
3
|
-
import { getRawShareAnalytics } from "../platform/consent-cache.js";
|
|
4
4
|
import { getLogger } from "../util/logger.js";
|
|
5
5
|
import { recordConfigSettingEvent } from "./config-setting-events-store.js";
|
|
6
6
|
|
|
@@ -5,7 +5,7 @@ import { getWorkspaceDir } from "../util/platform.js";
|
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Coarse on-disk size of the assistant's memory corpus, in the snake_case
|
|
8
|
-
* shape the `memory_tier` watchdog `detail` bag carries to the
|
|
8
|
+
* shape the `memory_tier` watchdog `detail` bag carries to the cloud.
|
|
9
9
|
*
|
|
10
10
|
* Both corpora are measured on every tier rather than branching on the tier
|
|
11
11
|
* itself: an assistant part-way through a v1 -> v2 -> v3 migration has content
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { afterEach, beforeEach, describe, expect, mock, test } from "bun:test";
|
|
2
2
|
|
|
3
|
+
import type { ConsentState } from "../cloud/consent-cache.js";
|
|
3
4
|
import { memoryTier } from "../config/memory-tier.js";
|
|
4
5
|
import type { AssistantConfig } from "../config/schema.js";
|
|
5
|
-
import type { ConsentState } from "../platform/consent-cache.js";
|
|
6
6
|
import type { MemoryCorpusSize } from "./memory-corpus-size.js";
|
|
7
7
|
import type { WatchdogEventRecord } from "./watchdog-events-store.js";
|
|
8
8
|
|
|
@@ -36,7 +36,7 @@ mock.module("./memory-corpus-size.js", () => ({
|
|
|
36
36
|
return corpus;
|
|
37
37
|
},
|
|
38
38
|
}));
|
|
39
|
-
mock.module("../
|
|
39
|
+
mock.module("../cloud/consent-cache.js", () => ({
|
|
40
40
|
getRawShareAnalytics: () => consent,
|
|
41
41
|
}));
|
|
42
42
|
mock.module("../config/loader.js", () => ({
|