@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
|
@@ -42,7 +42,7 @@ function seedWebSearch(
|
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
mock.module("../
|
|
45
|
+
mock.module("../cloud-search-proxy.js", () => ({
|
|
46
46
|
callManagedSearchProxy: async (
|
|
47
47
|
provider: string,
|
|
48
48
|
request: Record<string, unknown>,
|
|
@@ -117,7 +117,7 @@ describe("web_search tool", () => {
|
|
|
117
117
|
|
|
118
118
|
// ---- Provider cadet (managed, provider is the only axis) ---------------
|
|
119
119
|
|
|
120
|
-
test("provider cadet with no mode routes to the
|
|
120
|
+
test("provider cadet with no mode routes to the cloud proxy", async () => {
|
|
121
121
|
seedWebSearch(undefined, "cadet");
|
|
122
122
|
|
|
123
123
|
const result = await execute({ query: "cadet managed query" });
|
|
@@ -148,7 +148,7 @@ describe("web_search tool", () => {
|
|
|
148
148
|
status: 402,
|
|
149
149
|
headers: { "content-type": "application/json" },
|
|
150
150
|
body: { detail: "Insufficient balance" },
|
|
151
|
-
message: "
|
|
151
|
+
message: "Cloud search proxy returned status 402: Insufficient balance",
|
|
152
152
|
};
|
|
153
153
|
let byokFetchCalls = 0;
|
|
154
154
|
globalThis.fetch = (async () => {
|
|
@@ -185,7 +185,7 @@ describe("web_search tool", () => {
|
|
|
185
185
|
expect(mockManagedSearchProxyCalls).toHaveLength(0);
|
|
186
186
|
});
|
|
187
187
|
|
|
188
|
-
test("provider native with no keys falls back to the
|
|
188
|
+
test("provider native with no keys falls back to the cloud proxy", async () => {
|
|
189
189
|
seedWebSearch(undefined, "inference-provider-native");
|
|
190
190
|
|
|
191
191
|
const result = await execute({ query: "no key native query" });
|
|
@@ -471,7 +471,7 @@ describe("web_search tool", () => {
|
|
|
471
471
|
expect(callCount).toBe(4);
|
|
472
472
|
});
|
|
473
473
|
|
|
474
|
-
// ----
|
|
474
|
+
// ---- Cloud Brave provider -------------------------------------------
|
|
475
475
|
|
|
476
476
|
test("provider cadet uses Brave proxy without BYOK provider keys", async () => {
|
|
477
477
|
seedWebSearch(undefined, "cadet");
|
|
@@ -483,9 +483,9 @@ describe("web_search tool", () => {
|
|
|
483
483
|
web: {
|
|
484
484
|
results: [
|
|
485
485
|
{
|
|
486
|
-
title: "
|
|
486
|
+
title: "Cloud Result",
|
|
487
487
|
url: "https://example.com/managed",
|
|
488
|
-
description: "
|
|
488
|
+
description: "Cloud Brave result",
|
|
489
489
|
},
|
|
490
490
|
],
|
|
491
491
|
},
|
|
@@ -500,7 +500,7 @@ describe("web_search tool", () => {
|
|
|
500
500
|
});
|
|
501
501
|
|
|
502
502
|
expect(result.isError).toBe(false);
|
|
503
|
-
expect(result.content).toContain("
|
|
503
|
+
expect(result.content).toContain("Cloud Result");
|
|
504
504
|
expect(mockManagedSearchProxyCalls).toHaveLength(1);
|
|
505
505
|
expect(mockManagedSearchProxyCalls[0]).toMatchObject({
|
|
506
506
|
provider: "brave",
|
|
@@ -565,7 +565,7 @@ describe("web_search tool", () => {
|
|
|
565
565
|
);
|
|
566
566
|
});
|
|
567
567
|
|
|
568
|
-
test("provider cadet passes abort signal to the
|
|
568
|
+
test("provider cadet passes abort signal to the cloud proxy", async () => {
|
|
569
569
|
seedWebSearch(undefined, "cadet");
|
|
570
570
|
const controller = new AbortController();
|
|
571
571
|
|
|
@@ -575,7 +575,7 @@ describe("web_search tool", () => {
|
|
|
575
575
|
expect(mockManagedSearchProxyCalls[0].signal).toBe(controller.signal);
|
|
576
576
|
});
|
|
577
577
|
|
|
578
|
-
test("provider cadet maps insufficient balance to a
|
|
578
|
+
test("provider cadet maps insufficient balance to a cloud usage error", async () => {
|
|
579
579
|
seedWebSearch(undefined, "cadet");
|
|
580
580
|
mockManagedSearchProxyResult = {
|
|
581
581
|
ok: false,
|
|
@@ -583,7 +583,7 @@ describe("web_search tool", () => {
|
|
|
583
583
|
status: 402,
|
|
584
584
|
headers: { "content-type": "application/json" },
|
|
585
585
|
body: { detail: "Insufficient balance" },
|
|
586
|
-
message: "
|
|
586
|
+
message: "Cloud search proxy returned status 402: Insufficient balance",
|
|
587
587
|
};
|
|
588
588
|
|
|
589
589
|
const result = await execute({ query: "billing query" });
|
|
@@ -607,7 +607,7 @@ describe("web_search tool", () => {
|
|
|
607
607
|
|
|
608
608
|
expect(result.isError).toBe(true);
|
|
609
609
|
expect(result.content).toContain(
|
|
610
|
-
"
|
|
610
|
+
"Cloud Brave Search provider returned status 400",
|
|
611
611
|
);
|
|
612
612
|
});
|
|
613
613
|
|
|
@@ -616,13 +616,13 @@ describe("web_search tool", () => {
|
|
|
616
616
|
mockManagedSearchProxyResult = {
|
|
617
617
|
ok: false,
|
|
618
618
|
kind: "unavailable",
|
|
619
|
-
message: "
|
|
619
|
+
message: "Cloud search proxy is unavailable in this environment.",
|
|
620
620
|
};
|
|
621
621
|
|
|
622
622
|
const result = await execute({ query: "local managed query" });
|
|
623
623
|
|
|
624
624
|
expect(result.isError).toBe(true);
|
|
625
|
-
expect(result.content).toContain("
|
|
625
|
+
expect(result.content).toContain("Cloud search proxy is unavailable");
|
|
626
626
|
expect(result.content).toContain("Log in to Cadet");
|
|
627
627
|
});
|
|
628
628
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CadetCloudClient } from "../../cloud/client.js";
|
|
2
2
|
|
|
3
3
|
export type ManagedSearchProxyProvider = "brave";
|
|
4
4
|
|
|
@@ -49,15 +49,15 @@ interface ManagedSearchProxyEnvelope {
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
/**
|
|
52
|
-
* Whether the
|
|
52
|
+
* Whether the cloud search proxy can be dialed at all: a cloud client
|
|
53
53
|
* exists and carries an assistant id. Mirrors `managedSpeechAvailable()`.
|
|
54
54
|
* Callers use this to decide between the proxy and the BYOK chain *before*
|
|
55
55
|
* attempting a call — the same two conditions `callManagedSearchProxy`
|
|
56
56
|
* reports as `kind: "unavailable"`.
|
|
57
57
|
*/
|
|
58
58
|
export async function managedSearchAvailable(): Promise<boolean> {
|
|
59
|
-
const client = await
|
|
60
|
-
return client !== null && Boolean(client.
|
|
59
|
+
const client = await CadetCloudClient.create();
|
|
60
|
+
return client !== null && Boolean(client.cloudAssistantId);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
export async function callManagedSearchProxy(
|
|
@@ -65,27 +65,27 @@ export async function callManagedSearchProxy(
|
|
|
65
65
|
request: ManagedSearchProxyRequest,
|
|
66
66
|
signal?: AbortSignal,
|
|
67
67
|
): Promise<ManagedSearchProxyResult> {
|
|
68
|
-
const client = await
|
|
68
|
+
const client = await CadetCloudClient.create();
|
|
69
69
|
if (!client) {
|
|
70
70
|
return {
|
|
71
71
|
ok: false,
|
|
72
72
|
kind: "unavailable",
|
|
73
|
-
message: "
|
|
73
|
+
message: "Cloud search proxy is unavailable in this environment.",
|
|
74
74
|
};
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
if (!client.
|
|
77
|
+
if (!client.cloudAssistantId) {
|
|
78
78
|
return {
|
|
79
79
|
ok: false,
|
|
80
80
|
kind: "unavailable",
|
|
81
81
|
message:
|
|
82
|
-
"
|
|
82
|
+
"Cloud search proxy is unavailable: platform assistant ID is missing.",
|
|
83
83
|
};
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
const path = `/v1/assistants/${encodeURIComponent(
|
|
87
|
-
client.
|
|
88
|
-
)}/
|
|
87
|
+
client.cloudAssistantId,
|
|
88
|
+
)}/cloud-search-proxy/${encodeURIComponent(provider)}/`;
|
|
89
89
|
|
|
90
90
|
const envelope: ManagedSearchProxyEnvelope = {
|
|
91
91
|
request: {
|
|
@@ -124,7 +124,7 @@ export async function callManagedSearchProxy(
|
|
|
124
124
|
ok: false,
|
|
125
125
|
kind: "invalid-response",
|
|
126
126
|
body,
|
|
127
|
-
message: "
|
|
127
|
+
message: "Cloud search proxy returned an invalid response envelope.",
|
|
128
128
|
};
|
|
129
129
|
}
|
|
130
130
|
|
|
@@ -176,9 +176,9 @@ function responseHeadersToRecord(headers: Headers): Record<string, string> {
|
|
|
176
176
|
function platformErrorMessage(status: number, body: unknown): string {
|
|
177
177
|
const detail = extractErrorDetail(body);
|
|
178
178
|
if (detail) {
|
|
179
|
-
return `
|
|
179
|
+
return `Cloud search proxy returned status ${status}: ${detail}`;
|
|
180
180
|
}
|
|
181
|
-
return `
|
|
181
|
+
return `Cloud search proxy returned status ${status}.`;
|
|
182
182
|
}
|
|
183
183
|
|
|
184
184
|
function extractErrorDetail(body: unknown): string | undefined {
|
|
@@ -21,6 +21,7 @@ import type {
|
|
|
21
21
|
ToolDefinition,
|
|
22
22
|
ToolExecutionResult,
|
|
23
23
|
} from "../types.js";
|
|
24
|
+
import type { ManagedSearchProxyResult } from "./cloud-search-proxy.js";
|
|
24
25
|
import { extractDomain } from "./domain-normalize.js";
|
|
25
26
|
import {
|
|
26
27
|
extractFirecrawlCompatSearchResults,
|
|
@@ -29,7 +30,6 @@ import {
|
|
|
29
30
|
resolveProviderApiUrl,
|
|
30
31
|
searchResultSnippet,
|
|
31
32
|
} from "./firecrawl-compat.js";
|
|
32
|
-
import type { ManagedSearchProxyResult } from "./managed-search-proxy.js";
|
|
33
33
|
import {
|
|
34
34
|
classifyWebSearchFailure,
|
|
35
35
|
logWebSearchBackendFailure,
|
|
@@ -242,7 +242,7 @@ function getWebSearchProvider(): WebSearchProvider {
|
|
|
242
242
|
// In Your Own mode, `inference-provider-native` is only executable when the
|
|
243
243
|
// inference provider swaps this tool for a native hosted-search definition.
|
|
244
244
|
// If this app-executed tool is still invoked, fall back to the existing BYOK
|
|
245
|
-
// provider chain. `cadet` short-circuits into the
|
|
245
|
+
// provider chain. `cadet` short-circuits into the cloud branch before
|
|
246
246
|
// this function runs, so its coercion here only satisfies the return type
|
|
247
247
|
// and keeps an undefined WEB_SEARCH_ADAPTERS lookup unreachable.
|
|
248
248
|
if (configured === "inference-provider-native" || configured === "cadet") {
|
|
@@ -1188,7 +1188,7 @@ async function executeManagedBraveSearch(
|
|
|
1188
1188
|
freshness: string | undefined,
|
|
1189
1189
|
signal?: AbortSignal,
|
|
1190
1190
|
): Promise<ToolExecutionResult> {
|
|
1191
|
-
const { callManagedSearchProxy } = await import("./
|
|
1191
|
+
const { callManagedSearchProxy } = await import("./cloud-search-proxy.js");
|
|
1192
1192
|
const startedAt = Date.now();
|
|
1193
1193
|
const proxyResult = await callManagedSearchProxy(
|
|
1194
1194
|
"brave",
|
|
@@ -1240,7 +1240,7 @@ async function executeManagedBraveSearch(
|
|
|
1240
1240
|
query,
|
|
1241
1241
|
"brave",
|
|
1242
1242
|
startedAt,
|
|
1243
|
-
"
|
|
1243
|
+
"Cloud Brave Search is not authenticated correctly. This is a Cadet Cloud configuration issue.",
|
|
1244
1244
|
);
|
|
1245
1245
|
}
|
|
1246
1246
|
|
|
@@ -1254,8 +1254,8 @@ async function executeManagedBraveSearch(
|
|
|
1254
1254
|
error: rawBodyDetail(proxyResult.body),
|
|
1255
1255
|
},
|
|
1256
1256
|
proxyResult.status === 429
|
|
1257
|
-
? "
|
|
1258
|
-
: `
|
|
1257
|
+
? "Cloud Brave Search rate limit exceeded. Try again shortly."
|
|
1258
|
+
: `Cloud Brave Search provider returned status ${proxyResult.status}`,
|
|
1259
1259
|
);
|
|
1260
1260
|
}
|
|
1261
1261
|
|
|
@@ -1263,7 +1263,7 @@ async function executeManagedBraveSearch(
|
|
|
1263
1263
|
query,
|
|
1264
1264
|
"brave",
|
|
1265
1265
|
startedAt,
|
|
1266
|
-
`
|
|
1266
|
+
`Cloud Brave Search provider returned status ${proxyResult.status}`,
|
|
1267
1267
|
);
|
|
1268
1268
|
}
|
|
1269
1269
|
|
|
@@ -2497,7 +2497,7 @@ export const webSearchTool = {
|
|
|
2497
2497
|
if (!apiKey) {
|
|
2498
2498
|
// Provider Native reaches this app-executed path only when the
|
|
2499
2499
|
// inference model had no hosted search of its own. The user's own keys
|
|
2500
|
-
// win above; the
|
|
2500
|
+
// win above; the cloud proxy is the last resort, which is what
|
|
2501
2501
|
// `mode: "managed"` did for installs that never configured a search
|
|
2502
2502
|
// key. Read the configured provider off config — the local `provider`
|
|
2503
2503
|
// has already been coerced to "perplexity".
|
|
@@ -2506,7 +2506,7 @@ export const webSearchTool = {
|
|
|
2506
2506
|
"inference-provider-native"
|
|
2507
2507
|
) {
|
|
2508
2508
|
const { managedSearchAvailable } =
|
|
2509
|
-
await import("./
|
|
2509
|
+
await import("./cloud-search-proxy.js");
|
|
2510
2510
|
if (await managedSearchAvailable()) {
|
|
2511
2511
|
return executeManagedSearch();
|
|
2512
2512
|
}
|
|
@@ -274,14 +274,14 @@ export class PermissionChecker {
|
|
|
274
274
|
// is preserved as a belt-and-suspenders guard.
|
|
275
275
|
if (
|
|
276
276
|
result.decision === "prompt" &&
|
|
277
|
-
context.
|
|
277
|
+
context.isCloudHosted &&
|
|
278
278
|
name === "bash" &&
|
|
279
279
|
resolveCapabilities(context.trustClass).canSelfApproveTools &&
|
|
280
280
|
!context.requireFreshApproval
|
|
281
281
|
) {
|
|
282
282
|
log.info(
|
|
283
283
|
{ toolName: name, riskLevel },
|
|
284
|
-
"Auto-approving bash tool for
|
|
284
|
+
"Auto-approving bash tool for cloud-hosted guardian session",
|
|
285
285
|
);
|
|
286
286
|
return {
|
|
287
287
|
allowed: true,
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* `properties` instead would advertise parameters the tool does not accept.
|
|
12
12
|
*
|
|
13
13
|
* Rules describe the first-party tools that ship in `bundled-skills/`, and tool
|
|
14
|
-
* names are not reserved: a
|
|
14
|
+
* names are not reserved: a cloud, workspace, extra, or plugin skill may
|
|
15
15
|
* define its own `subagent_read` with an entirely different contract. The
|
|
16
16
|
* `bundled` prefix on the exports below is the reminder that callers must
|
|
17
17
|
* establish bundled provenance before consulting the table.
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
* states.
|
|
17
17
|
*
|
|
18
18
|
* Rules describe the first-party tools that ship in `bundled-skills/`, and
|
|
19
|
-
* tool names are not reserved: a
|
|
20
|
-
* may define its own `
|
|
19
|
+
* tool names are not reserved: a cloud, workspace, extra, or plugin skill
|
|
20
|
+
* may define its own `scaffold_cloud_skill` with a different contract. The
|
|
21
21
|
* `bundled` prefix on the export is the reminder that callers must establish
|
|
22
22
|
* bundled provenance before applying a repair.
|
|
23
23
|
*/
|
|
@@ -30,7 +30,7 @@ interface ToolInputRepairRules {
|
|
|
30
30
|
*
|
|
31
31
|
* Each entry is a name the prose around the tool uses for a parameter the
|
|
32
32
|
* schema declares under a different one, and models follow prose over
|
|
33
|
-
* schema. `
|
|
33
|
+
* schema. `scaffold_cloud_skill` declares `body_markdown` while the
|
|
34
34
|
* skill-authoring prose talks throughout about writing "the body"; the
|
|
35
35
|
* retrospective prompt tells the model to call `find_similar_skills` with a
|
|
36
36
|
* short description, which the schema declares as `goal`.
|
|
@@ -44,7 +44,7 @@ interface ToolInputRepairRules {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
const REPAIR_RULES: Readonly<Record<string, ToolInputRepairRules>> = {
|
|
47
|
-
|
|
47
|
+
scaffold_cloud_skill: {
|
|
48
48
|
aliases: {
|
|
49
49
|
body: "body_markdown",
|
|
50
50
|
content: "body_markdown",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { refreshSkillCapabilityMemories } from "../../daemon/skill-memory-refresh.js";
|
|
2
|
-
import {
|
|
2
|
+
import { deleteCloudSkill } from "../../skills/cloud-store.js";
|
|
3
3
|
import { throwIfCancelled } from "../shared/abort.js";
|
|
4
4
|
import type { ToolContext, ToolExecutionResult } from "../types.js";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* Core execution logic for
|
|
7
|
+
* Core execution logic for delete_cloud_skill.
|
|
8
8
|
* Exported so bundled-skill executors and tests can call it directly.
|
|
9
9
|
*/
|
|
10
|
-
export async function
|
|
10
|
+
export async function executeDeleteCloudSkill(
|
|
11
11
|
input: Record<string, unknown>,
|
|
12
12
|
context: ToolContext,
|
|
13
13
|
): Promise<ToolExecutionResult> {
|
|
@@ -21,7 +21,7 @@ export async function executeDeleteManagedSkill(
|
|
|
21
21
|
|
|
22
22
|
throwIfCancelled(context);
|
|
23
23
|
|
|
24
|
-
const result =
|
|
24
|
+
const result = deleteCloudSkill(skillId.trim());
|
|
25
25
|
|
|
26
26
|
if (!result.deleted) {
|
|
27
27
|
return { content: `Error: ${result.error}`, isError: true };
|
|
@@ -19,7 +19,7 @@ import { basename, join } from "node:path";
|
|
|
19
19
|
import { afterEach, describe, expect, mock, test } from "bun:test";
|
|
20
20
|
|
|
21
21
|
import type { SkillSource } from "../../config/skills.js";
|
|
22
|
-
import type {
|
|
22
|
+
import type { StoredCloudSkill } from "../../skills/cloud-store.js";
|
|
23
23
|
import type { OwnerInfo } from "../types.js";
|
|
24
24
|
|
|
25
25
|
// Map managed skill id → recorded author, consulted by the mocked
|
|
@@ -253,7 +253,7 @@ describe("find_similar_skills: current skill for a refinable hit", () => {
|
|
|
253
253
|
source: "bundled",
|
|
254
254
|
},
|
|
255
255
|
);
|
|
256
|
-
const stored: Record<string,
|
|
256
|
+
const stored: Record<string, StoredCloudSkill> = {
|
|
257
257
|
"weekly-export": {
|
|
258
258
|
name: "Weekly Report Export",
|
|
259
259
|
description: "Export the weekly usage report",
|
|
@@ -279,7 +279,7 @@ describe("find_similar_skills: current skill for a refinable hit", () => {
|
|
|
279
279
|
},
|
|
280
280
|
};
|
|
281
281
|
const reads: string[] = [];
|
|
282
|
-
const
|
|
282
|
+
const readStoredCloudSkill = (skillId: string) => {
|
|
283
283
|
reads.push(skillId);
|
|
284
284
|
return stored[skillId] ?? null;
|
|
285
285
|
};
|
|
@@ -299,7 +299,7 @@ describe("find_similar_skills: current skill for a refinable hit", () => {
|
|
|
299
299
|
{
|
|
300
300
|
nearestExistingSkills: hits,
|
|
301
301
|
loadCatalog: refinableCatalog,
|
|
302
|
-
|
|
302
|
+
readStoredCloudSkill,
|
|
303
303
|
},
|
|
304
304
|
);
|
|
305
305
|
|
|
@@ -331,7 +331,7 @@ describe("find_similar_skills: current skill for a refinable hit", () => {
|
|
|
331
331
|
{ skillId: "user-skill", score: 1 },
|
|
332
332
|
],
|
|
333
333
|
loadCatalog: refinableCatalog,
|
|
334
|
-
|
|
334
|
+
readStoredCloudSkill,
|
|
335
335
|
},
|
|
336
336
|
);
|
|
337
337
|
|
|
@@ -353,7 +353,7 @@ describe("find_similar_skills: current skill for a refinable hit", () => {
|
|
|
353
353
|
{
|
|
354
354
|
nearestExistingSkills: hits,
|
|
355
355
|
loadCatalog: refinableCatalog,
|
|
356
|
-
|
|
356
|
+
readStoredCloudSkill,
|
|
357
357
|
},
|
|
358
358
|
);
|
|
359
359
|
|
|
@@ -418,7 +418,7 @@ describe("find_similar_skills: current skill for a refinable hit", () => {
|
|
|
418
418
|
{ skillId: "weekly-export", score: 0.9 },
|
|
419
419
|
],
|
|
420
420
|
loadCatalog: refinableCatalog,
|
|
421
|
-
|
|
421
|
+
readStoredCloudSkill: () => null,
|
|
422
422
|
},
|
|
423
423
|
);
|
|
424
424
|
|
|
@@ -2,16 +2,16 @@ import type { SkillSource } from "../../config/skills.js";
|
|
|
2
2
|
import { loadSkillCatalog } from "../../config/skills.js";
|
|
3
3
|
import { MEMORY_RETROSPECTIVE_ORIGIN } from "../../plugins/defaults/memory/memory-retrospective-constants.js";
|
|
4
4
|
import { nearestExistingSkills } from "../../plugins/defaults/memory/v3/candidate-match.js";
|
|
5
|
-
import { readInstallMeta } from "../../skills/install-meta.js";
|
|
6
|
-
import {
|
|
7
|
-
getManagedSkillDir,
|
|
8
|
-
readStoredManagedSkill,
|
|
9
|
-
type StoredManagedSkill,
|
|
10
|
-
} from "../../skills/managed-store.js";
|
|
11
5
|
import {
|
|
12
6
|
filterSkillsByPlatform,
|
|
13
7
|
type SkillPlatform,
|
|
14
|
-
} from "../../skills/
|
|
8
|
+
} from "../../skills/cloud-compatibility.js";
|
|
9
|
+
import {
|
|
10
|
+
getCloudSkillDir,
|
|
11
|
+
readStoredCloudSkill,
|
|
12
|
+
type StoredCloudSkill,
|
|
13
|
+
} from "../../skills/cloud-store.js";
|
|
14
|
+
import { readInstallMeta } from "../../skills/install-meta.js";
|
|
15
15
|
import { throwIfCancelled } from "../shared/abort.js";
|
|
16
16
|
import type { OwnerInfo, ToolContext, ToolExecutionResult } from "../types.js";
|
|
17
17
|
|
|
@@ -32,7 +32,7 @@ import type { OwnerInfo, ToolContext, ToolExecutionResult } from "../types.js";
|
|
|
32
32
|
* refinement is a whole-file overwrite and the pass has no other read path:
|
|
33
33
|
* its `skill_load` grant covers skill-management alone, and loading would
|
|
34
34
|
* stamp `lastUsedAt` and count as usage. Fields are spelled as
|
|
35
|
-
* `
|
|
35
|
+
* `scaffold_cloud_skill`'s own arguments so the pass carries forward what
|
|
36
36
|
* it is not changing without translating names.
|
|
37
37
|
*/
|
|
38
38
|
interface EnrichedHit {
|
|
@@ -45,7 +45,7 @@ interface EnrichedHit {
|
|
|
45
45
|
current?: CurrentSkill;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
/** The refinable skill's present content, in `
|
|
48
|
+
/** The refinable skill's present content, in `scaffold_cloud_skill` argument names. */
|
|
49
49
|
interface CurrentSkill {
|
|
50
50
|
name: string;
|
|
51
51
|
description: string;
|
|
@@ -79,7 +79,7 @@ export async function executeFindSimilarSkills(
|
|
|
79
79
|
owner?: OwnerInfo;
|
|
80
80
|
platforms?: SkillPlatform[];
|
|
81
81
|
}[];
|
|
82
|
-
|
|
82
|
+
readStoredCloudSkill?: (skillId: string) => StoredCloudSkill | null;
|
|
83
83
|
} = {},
|
|
84
84
|
): Promise<ToolExecutionResult> {
|
|
85
85
|
const goal = input.goal;
|
|
@@ -107,7 +107,7 @@ export async function executeFindSimilarSkills(
|
|
|
107
107
|
|
|
108
108
|
const findNearest = deps.nearestExistingSkills ?? nearestExistingSkills;
|
|
109
109
|
const loadCatalog = deps.loadCatalog ?? (() => loadSkillCatalog());
|
|
110
|
-
const readStored = deps.
|
|
110
|
+
const readStored = deps.readStoredCloudSkill ?? readStoredCloudSkill;
|
|
111
111
|
|
|
112
112
|
const catalog = loadCatalog();
|
|
113
113
|
const byId = new Map(catalog.map((s) => [s.id, s]));
|
|
@@ -163,7 +163,7 @@ export async function executeFindSimilarSkills(
|
|
|
163
163
|
// meta read leaves `author` undefined rather than throwing.
|
|
164
164
|
const author =
|
|
165
165
|
skill.source === "managed"
|
|
166
|
-
?
|
|
166
|
+
? readCloudSkillAuthor(hit.skillId)
|
|
167
167
|
: undefined;
|
|
168
168
|
// Only a refinable hit pays for the disk read, and a failed read drops
|
|
169
169
|
// `current` rather than the hit: the pass can still skip a skill it
|
|
@@ -202,15 +202,15 @@ export async function executeFindSimilarSkills(
|
|
|
202
202
|
}
|
|
203
203
|
|
|
204
204
|
/**
|
|
205
|
-
* Read a
|
|
205
|
+
* Read a cloud skill's install-meta author, if any. Best-effort: any failure
|
|
206
206
|
* (missing dir, malformed meta, untagged skill) resolves to undefined so the
|
|
207
207
|
* enrichment loop never throws on a single bad hit.
|
|
208
208
|
*/
|
|
209
|
-
function
|
|
209
|
+
function readCloudSkillAuthor(
|
|
210
210
|
skillId: string,
|
|
211
211
|
): "assistant" | "user" | undefined {
|
|
212
212
|
try {
|
|
213
|
-
return readInstallMeta(
|
|
213
|
+
return readInstallMeta(getCloudSkillDir(skillId))?.author;
|
|
214
214
|
} catch {
|
|
215
215
|
return undefined;
|
|
216
216
|
}
|
package/src/tools/skills/load.ts
CHANGED
|
@@ -15,16 +15,16 @@ import {
|
|
|
15
15
|
autoInstallFromCatalog,
|
|
16
16
|
resolveCatalog,
|
|
17
17
|
} from "../../skills/catalog-install.js";
|
|
18
|
+
import {
|
|
19
|
+
isSkillCompatibleWithCloud,
|
|
20
|
+
skillPlatformUnavailableMessage,
|
|
21
|
+
} from "../../skills/cloud-compatibility.js";
|
|
18
22
|
import {
|
|
19
23
|
collectAllMissing,
|
|
20
24
|
indexCatalogById,
|
|
21
25
|
validateIncludeCycles,
|
|
22
26
|
} from "../../skills/include-graph.js";
|
|
23
27
|
import { renderInlineCommands } from "../../skills/inline-command-render.js";
|
|
24
|
-
import {
|
|
25
|
-
isSkillCompatibleWithPlatform,
|
|
26
|
-
skillPlatformUnavailableMessage,
|
|
27
|
-
} from "../../skills/platform-compatibility.js";
|
|
28
28
|
import { parseToolManifestFile } from "../../skills/tool-manifest.js";
|
|
29
29
|
import { computeSkillVersionHash } from "../../skills/version-hash.js";
|
|
30
30
|
import { getLogger } from "../../util/logger.js";
|
|
@@ -213,7 +213,7 @@ export const skillLoadTool = {
|
|
|
213
213
|
|
|
214
214
|
const skill = loaded.skill;
|
|
215
215
|
|
|
216
|
-
if (!
|
|
216
|
+
if (!isSkillCompatibleWithCloud(skill)) {
|
|
217
217
|
return {
|
|
218
218
|
content: `Error: ${skillPlatformUnavailableMessage(skill.id, skill)}`,
|
|
219
219
|
isError: true,
|
|
@@ -424,7 +424,7 @@ export const skillLoadTool = {
|
|
|
424
424
|
if (childOutOfPluginScope(child)) {
|
|
425
425
|
continue;
|
|
426
426
|
}
|
|
427
|
-
if (!
|
|
427
|
+
if (!isSkillCompatibleWithCloud(child)) {
|
|
428
428
|
continue;
|
|
429
429
|
}
|
|
430
430
|
const childFlagKey = skillFlagKey(child);
|
|
@@ -11,17 +11,17 @@ import { getConversation } from "../../persistence/conversation-crud.js";
|
|
|
11
11
|
import { upsertSkillCardInsertJob } from "../../persistence/jobs-store.js";
|
|
12
12
|
import { MEMORY_RETROSPECTIVE_ORIGIN } from "../../plugins/defaults/memory/memory-retrospective-constants.js";
|
|
13
13
|
import { recordSkillUpdate } from "../../plugins/defaults/memory/skill-update-receipt-job.js";
|
|
14
|
-
import { readInstallMeta } from "../../skills/install-meta.js";
|
|
15
14
|
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
} from "../../skills/
|
|
15
|
+
createCloudSkill,
|
|
16
|
+
getCloudSkillDir,
|
|
17
|
+
} from "../../skills/cloud-store.js";
|
|
18
|
+
import { readInstallMeta } from "../../skills/install-meta.js";
|
|
19
19
|
import { recordWatchdogEvent } from "../../telemetry/watchdog-events-store.js";
|
|
20
20
|
import { getLogger } from "../../util/logger.js";
|
|
21
21
|
import { throwIfCancelled } from "../shared/abort.js";
|
|
22
22
|
import type { ToolContext, ToolExecutionResult } from "../types.js";
|
|
23
23
|
|
|
24
|
-
const log = getLogger("scaffold-
|
|
24
|
+
const log = getLogger("scaffold-cloud-skill");
|
|
25
25
|
|
|
26
26
|
/** Watchdog check_name for the per-creation skill-authoring counter. */
|
|
27
27
|
const SKILL_AUTHORED_CHECK_NAME = "skill_authored";
|
|
@@ -102,7 +102,7 @@ const SKILL_UPDATE_RECEIPT_RECORD_FAILED_CHECK_NAME =
|
|
|
102
102
|
* A newly authored skill announces itself in the conversation through the
|
|
103
103
|
* `skill_card` surface; an update is announced through a skill-update
|
|
104
104
|
* receipt instead. The pass runs in a background fork and rewrites the body
|
|
105
|
-
* of a skill the user may be relying on, and `
|
|
105
|
+
* of a skill the user may be relying on, and `createCloudSkill` writes
|
|
106
106
|
* through an atomic rename keeping no prior version, so the receipt is what
|
|
107
107
|
* puts the change in the background feed alongside the other unattended
|
|
108
108
|
* work (sweeps, scheduled jobs, heartbeat), where a user already looks to
|
|
@@ -179,14 +179,14 @@ function recordBackgroundSkillUpdate(args: {
|
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
/**
|
|
182
|
-
* Core execution logic for
|
|
182
|
+
* Core execution logic for scaffold_cloud_skill.
|
|
183
183
|
* Exported so bundled-skill executors and tests can call it directly.
|
|
184
184
|
*
|
|
185
185
|
* `deps` injects the catalog and conversation-lookup seams so the ownership
|
|
186
186
|
* backstop's non-managed collision check and the lineage resolution can be
|
|
187
187
|
* exercised without standing up a real bundled/plugin catalog or a live DB.
|
|
188
188
|
*/
|
|
189
|
-
export async function
|
|
189
|
+
export async function executeScaffoldCloudSkill(
|
|
190
190
|
input: Record<string, unknown>,
|
|
191
191
|
context: ToolContext,
|
|
192
192
|
deps: {
|
|
@@ -271,7 +271,7 @@ export async function executeScaffoldManagedSkill(
|
|
|
271
271
|
|
|
272
272
|
// Validate and normalize companion files. Each entry carries the file bytes
|
|
273
273
|
// exactly one way: inline `content`, or `copy_from` naming an on-disk source
|
|
274
|
-
// the store validates and reads (
|
|
274
|
+
// the store validates and reads (cloud-store.validateCompanionSource).
|
|
275
275
|
let files:
|
|
276
276
|
| Array<{ path: string; content?: string; copyFrom?: string }>
|
|
277
277
|
| undefined;
|
|
@@ -371,21 +371,21 @@ export async function executeScaffoldManagedSkill(
|
|
|
371
371
|
context.requestOrigin === MEMORY_RETROSPECTIVE_ORIGIN;
|
|
372
372
|
const author = fromRetrospective ? "assistant" : "user";
|
|
373
373
|
|
|
374
|
-
// Whether a
|
|
374
|
+
// Whether a cloud SKILL.md already existed before this call. Drives the
|
|
375
375
|
// ownership backstop below, the created-vs-refined discriminant for the
|
|
376
376
|
// skill-card enqueue, and the `skill_authored` telemetry counter: only a
|
|
377
377
|
// genuine CREATE (no pre-existing skill, regardless of the `overwrite`
|
|
378
378
|
// flag) gets a card or a counter event.
|
|
379
379
|
const managedSkillExistedBefore = existsSync(
|
|
380
|
-
join(
|
|
380
|
+
join(getCloudSkillDir(id), "SKILL.md"),
|
|
381
381
|
);
|
|
382
382
|
|
|
383
383
|
// Ownership backstop (retrospective origin only): the retrospective may author
|
|
384
384
|
// a skill ONLY if it owns it. Fail closed on either of two collisions.
|
|
385
385
|
if (fromRetrospective) {
|
|
386
386
|
// (1) A non-managed catalog entry (bundled, plugin, workspace, extra) owns
|
|
387
|
-
// this id. Creating a
|
|
388
|
-
// and an overwrite under the
|
|
387
|
+
// this id. Creating a cloud skill with that id SHADOWS the catalog entry,
|
|
388
|
+
// and an overwrite under the cloud dir would never touch it — either way
|
|
389
389
|
// the retrospective must not stand on a skill it did not author. This covers
|
|
390
390
|
// create AND overwrite. The prompt directs the model to skip when an
|
|
391
391
|
// existing skill of any source already covers the procedure; this enforces
|
|
@@ -410,7 +410,7 @@ export async function executeScaffoldManagedSkill(
|
|
|
410
410
|
// prune side where such skills are never pruned.
|
|
411
411
|
if (
|
|
412
412
|
managedSkillExistedBefore &&
|
|
413
|
-
readInstallMeta(
|
|
413
|
+
readInstallMeta(getCloudSkillDir(id))?.author !== "assistant"
|
|
414
414
|
) {
|
|
415
415
|
return {
|
|
416
416
|
content: `Error: skill "${id}" is not verifiably assistant-authored; the retrospective may not overwrite it or write companion files into it. Author a new skill instead.`,
|
|
@@ -425,7 +425,7 @@ export async function executeScaffoldManagedSkill(
|
|
|
425
425
|
// it retries with the field, the way a missing activation_hints does.
|
|
426
426
|
// Checked after the ownership backstop so a pass that may not touch the
|
|
427
427
|
// skill hears that first, and only for a call that asked to overwrite: a
|
|
428
|
-
// call without the flag is blocked by the
|
|
428
|
+
// call without the flag is blocked by the cloud store's own overwrite
|
|
429
429
|
// error, and hearing about the summary instead would cost it a retry that
|
|
430
430
|
// still cannot succeed. Before any write, so nothing is lost.
|
|
431
431
|
if (
|
|
@@ -467,7 +467,7 @@ export async function executeScaffoldManagedSkill(
|
|
|
467
467
|
|
|
468
468
|
throwIfCancelled(context);
|
|
469
469
|
|
|
470
|
-
const result =
|
|
470
|
+
const result = createCloudSkill({
|
|
471
471
|
id,
|
|
472
472
|
name: normalizedName,
|
|
473
473
|
description: normalizedDescription,
|