@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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Unit tests for the
|
|
2
|
+
* Unit tests for the cloud-hosted /reengage route handler.
|
|
3
3
|
*
|
|
4
4
|
* The route runs a background conversation turn and asks the assistant to write
|
|
5
5
|
* `{ subject, body }` JSON to an injected file path under the plugin's data
|
|
@@ -86,13 +86,12 @@ mock.module("@mycadet/plugin-api", () => ({
|
|
|
86
86
|
const { POST } = await import("../routes/reengage.js");
|
|
87
87
|
|
|
88
88
|
function postRequest(): Request {
|
|
89
|
-
return new Request(
|
|
90
|
-
"
|
|
91
|
-
|
|
92
|
-
);
|
|
89
|
+
return new Request("http://plugin.internal/x/plugins/cloud-hosted/reengage", {
|
|
90
|
+
method: "POST",
|
|
91
|
+
});
|
|
93
92
|
}
|
|
94
93
|
|
|
95
|
-
describe("
|
|
94
|
+
describe("cloud-hosted /reengage POST", () => {
|
|
96
95
|
beforeEach(() => {
|
|
97
96
|
workspaceDir = mkdtempSync(join(tmpdir(), "reengage-test-"));
|
|
98
97
|
lastOptions = undefined;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "default-cloud-hosted",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "First-party default plugin contributing cloud-hosted capabilities. Exposes the /reengage route, which asks the assistant to compose a re-engagement email in its own voice and returns the subject line and body for the cloud to send.",
|
|
5
|
+
"private": true,
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"engines": {
|
|
9
|
+
"node": ">=20.12.0"
|
|
10
|
+
},
|
|
11
|
+
"peerDependencies": {
|
|
12
|
+
"@mycadet/plugin-api": "^0.10.9"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -35,9 +35,9 @@ import {
|
|
|
35
35
|
// Output location — the plugin's own data directory
|
|
36
36
|
// ---------------------------------------------------------------------------
|
|
37
37
|
|
|
38
|
-
/** `<workspaceDir>/plugins/
|
|
38
|
+
/** `<workspaceDir>/plugins/cloud-hosted/data` — this plugin's runtime data dir. */
|
|
39
39
|
function pluginDataDir(): string {
|
|
40
|
-
return join(getWorkspaceDir(), "plugins", "
|
|
40
|
+
return join(getWorkspaceDir(), "plugins", "cloud-hosted", "data");
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
// ---------------------------------------------------------------------------
|
|
@@ -207,7 +207,7 @@ export const POST = async (request: Request): Promise<Response> => {
|
|
|
207
207
|
}
|
|
208
208
|
|
|
209
209
|
// Trust the assistant's choice only if it names one of the conversations we
|
|
210
|
-
// offered — never a free-formed id. The
|
|
210
|
+
// offered — never a free-formed id. The cloud wraps `body` in a template
|
|
211
211
|
// whose CTA deep-links to this conversation when present, else the
|
|
212
212
|
// assistant root.
|
|
213
213
|
const candidateIds = new Set(candidates.map((c) => c.id));
|
|
@@ -32,6 +32,7 @@ import { registerPlugin, resetPluginRegistryForTests } from "../registry.js";
|
|
|
32
32
|
import { type Plugin, PluginExecutionError } from "../types.js";
|
|
33
33
|
import { channelInjectors } from "./channel/injectors.js";
|
|
34
34
|
import channelPkg from "./channel/package.json" with { type: "json" };
|
|
35
|
+
import cloudHostedPkg from "./cloud-hosted/package.json" with { type: "json" };
|
|
35
36
|
import compactionPkg from "./compaction/package.json" with { type: "json" };
|
|
36
37
|
import { documentsInjectors } from "./documents/injectors.js";
|
|
37
38
|
import documentsPkg from "./documents/package.json" with { type: "json" };
|
|
@@ -71,7 +72,6 @@ import memoryShutdown from "./memory/hooks/shutdown.js";
|
|
|
71
72
|
import memoryUserPromptSubmit from "./memory/hooks/user-prompt-submit.js";
|
|
72
73
|
import { memoryInjectors } from "./memory/injectors.js";
|
|
73
74
|
import memoryPkg from "./memory/package.json" with { type: "json" };
|
|
74
|
-
import platformHostedPkg from "./platform-hosted/package.json" with { type: "json" };
|
|
75
75
|
import { sessionInjectors } from "./session/injectors.js";
|
|
76
76
|
import sessionPkg from "./session/package.json" with { type: "json" };
|
|
77
77
|
import surfaceCompletionNudgePostModelCall from "./surface-completion-nudge/hooks/post-model-call.js";
|
|
@@ -274,15 +274,15 @@ export const defaultSessionPlugin: Plugin = {
|
|
|
274
274
|
};
|
|
275
275
|
|
|
276
276
|
/**
|
|
277
|
-
* `
|
|
277
|
+
* `cloud-hosted` — contributes the cloud-hosted `/reengage` route. It
|
|
278
278
|
* ships no hooks, tools, or injectors, so it registers as a manifest only;
|
|
279
279
|
* the route source is served once the assistant dispatches default-plugin
|
|
280
280
|
* routes.
|
|
281
281
|
*/
|
|
282
|
-
export const
|
|
282
|
+
export const defaultCloudHostedPlugin: Plugin = {
|
|
283
283
|
manifest: {
|
|
284
|
-
name:
|
|
285
|
-
version:
|
|
284
|
+
name: cloudHostedPkg.name,
|
|
285
|
+
version: cloudHostedPkg.version,
|
|
286
286
|
},
|
|
287
287
|
};
|
|
288
288
|
|
|
@@ -459,7 +459,7 @@ export function getAllDefaultPlugins(): readonly Plugin[] {
|
|
|
459
459
|
defaultDocumentsPlugin,
|
|
460
460
|
defaultChannelPlugin,
|
|
461
461
|
defaultSessionPlugin,
|
|
462
|
-
|
|
462
|
+
defaultCloudHostedPlugin,
|
|
463
463
|
defaultImageFallbackPlugin,
|
|
464
464
|
defaultToolResultTruncatePlugin,
|
|
465
465
|
defaultEmptyResponsePlugin,
|
|
@@ -78,8 +78,8 @@ export function isFirstPartyDefaultPlugin(name: string): boolean {
|
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
/**
|
|
81
|
-
* Manifest name (e.g. `default-
|
|
82
|
-
* *directory* name (e.g. `
|
|
81
|
+
* Manifest name (e.g. `default-cloud-hosted`) for a default plugin's
|
|
82
|
+
* *directory* name (e.g. `cloud-hosted`), or `null` when `<dirName>` is not
|
|
83
83
|
* a default plugin. Memoized alongside {@link getAllDefaultPluginNames}.
|
|
84
84
|
*
|
|
85
85
|
* Default-plugin `.disabled` sentinels are keyed by the manifest name (the CLI
|
|
@@ -115,7 +115,7 @@ export function getDefaultPluginManifestName(dirName: string): string | null {
|
|
|
115
115
|
* or `null` when `<name>` is not a default plugin's route namespace.
|
|
116
116
|
*
|
|
117
117
|
* A default plugin's route namespace is `default-<directory-name>` (e.g.
|
|
118
|
-
* `default-
|
|
118
|
+
* `default-cloud-hosted`) — the same `default-…` name its `.disabled`
|
|
119
119
|
* sentinel and per-chat scoping are keyed by. `<name>` is the namespace: the
|
|
120
120
|
* `default-` prefix is stripped to recover the source directory, so a name
|
|
121
121
|
* without the prefix (e.g. the bare directory name) resolves to `null`. The
|
|
@@ -140,7 +140,7 @@ export function getDefaultPluginRoutesDir(name: string): string | null {
|
|
|
140
140
|
|
|
141
141
|
/**
|
|
142
142
|
* Enumerate default plugins that ship a `routes/` directory, keyed by their
|
|
143
|
-
* route namespace (`default-<directory-name>`, e.g. `default-
|
|
143
|
+
* route namespace (`default-<directory-name>`, e.g. `default-cloud-hosted`).
|
|
144
144
|
* Mirrors {@link getDefaultPluginRoutesDir} so route discovery and dispatch
|
|
145
145
|
* agree on which default plugin routes exist and under which namespace.
|
|
146
146
|
*/
|
|
@@ -166,7 +166,7 @@ export function getDefaultPluginRouteRoots(): {
|
|
|
166
166
|
|
|
167
167
|
/**
|
|
168
168
|
* Enumerate default plugins that ship a `skills/` directory, keyed by their
|
|
169
|
-
* plugin name (`default-<directory-name>`, e.g. `default-
|
|
169
|
+
* plugin name (`default-<directory-name>`, e.g. `default-cloud-hosted`).
|
|
170
170
|
* Each `skillsDir` holds the plugin's resident skills at `<id>/SKILL.md`, the
|
|
171
171
|
* same layout an installed plugin uses under
|
|
172
172
|
* `<workspaceDir>/plugins/<name>/skills/`.
|
|
@@ -1007,7 +1007,7 @@ describe("memoryRetrospectiveJob", () => {
|
|
|
1007
1007
|
]);
|
|
1008
1008
|
});
|
|
1009
1009
|
|
|
1010
|
-
test("
|
|
1010
|
+
test("scaffold_cloud_skill counts as durable work even with zero remembers", async () => {
|
|
1011
1011
|
mockWakeResult = { invoked: true, exitReason: "no_tool_calls" };
|
|
1012
1012
|
messagesByConversationId["fork-conv-1"] = [
|
|
1013
1013
|
{
|
|
@@ -1016,7 +1016,7 @@ describe("memoryRetrospectiveJob", () => {
|
|
|
1016
1016
|
{
|
|
1017
1017
|
type: "tool_use",
|
|
1018
1018
|
id: "tu-skill-1",
|
|
1019
|
-
name: "
|
|
1019
|
+
name: "scaffold_cloud_skill",
|
|
1020
1020
|
input: { name: "deploy-checklist" },
|
|
1021
1021
|
},
|
|
1022
1022
|
]),
|
|
@@ -1343,7 +1343,7 @@ describe("memoryRetrospectiveJob", () => {
|
|
|
1343
1343
|
const opts = wakeCalls[0]!.opts;
|
|
1344
1344
|
expect(opts.allowedTools).toEqual([
|
|
1345
1345
|
"remember",
|
|
1346
|
-
"
|
|
1346
|
+
"scaffold_cloud_skill",
|
|
1347
1347
|
"skill_load",
|
|
1348
1348
|
"find_similar_skills",
|
|
1349
1349
|
]);
|
|
@@ -2616,7 +2616,7 @@ describe("memoryRetrospectiveJob", () => {
|
|
|
2616
2616
|
);
|
|
2617
2617
|
// None of the skill-authoring directives appear.
|
|
2618
2618
|
expect(instructionText).not.toContain("find_similar_skills");
|
|
2619
|
-
expect(instructionText).not.toContain("
|
|
2619
|
+
expect(instructionText).not.toContain("scaffold_cloud_skill");
|
|
2620
2620
|
expect(instructionText).not.toContain("companion file");
|
|
2621
2621
|
expect(instructionText).not.toContain("user-authored");
|
|
2622
2622
|
});
|
|
@@ -2631,7 +2631,7 @@ describe("memoryRetrospectiveJob", () => {
|
|
|
2631
2631
|
// Available-tools line names the skill-authoring pair; skill-management is
|
|
2632
2632
|
// preactivated, so no `skill_load` step is instructed.
|
|
2633
2633
|
expect(instructionText).toContain("find_similar_skills");
|
|
2634
|
-
expect(instructionText).toContain("
|
|
2634
|
+
expect(instructionText).toContain("scaffold_cloud_skill");
|
|
2635
2635
|
expect(instructionText).not.toContain("skill_load skill-management");
|
|
2636
2636
|
|
|
2637
2637
|
// Permissive relevance pre-check keyed on actually-executed procedures.
|
|
@@ -107,7 +107,7 @@ For everything else in your review window, use the \`remember\` tool on facts, p
|
|
|
107
107
|
test("proc-to-skills active: tool line widens and the authoring section is appended", () => {
|
|
108
108
|
const out = buildForkInstruction(makeArgs({ procToSkillsActive: true }));
|
|
109
109
|
expect(out).toContain(
|
|
110
|
-
"Only `remember`, `find_similar_skills`, and `
|
|
110
|
+
"Only `remember`, `find_similar_skills`, and `scaffold_cloud_skill` are available for this pass",
|
|
111
111
|
);
|
|
112
112
|
// skill-management is preactivated for the wake, so the prompt no longer
|
|
113
113
|
// instructs a `skill_load` step.
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* `memory_retrospective_state`: the handler re-reads the fork's persisted
|
|
19
19
|
* rows (`collectRetrospectiveRunEvidence` → `loadRetrospectiveRunMessages`
|
|
20
20
|
* → `getMessages`) and only advances when THIS run persisted a durable
|
|
21
|
-
* memory-writing `tool_use` (`remember` / `
|
|
21
|
+
* memory-writing `tool_use` (`remember` / `scaffold_cloud_skill`) or
|
|
22
22
|
* replied and stopped on its own (a completed no-findings review).
|
|
23
23
|
*/
|
|
24
24
|
|
|
@@ -108,18 +108,18 @@ function deleteLeaf(
|
|
|
108
108
|
|
|
109
109
|
/**
|
|
110
110
|
* Deployment-context fill for the memory slice, mirroring the memory entry of
|
|
111
|
-
* the host loader's `getDeploymentContextDefaults()`:
|
|
112
|
-
* assistants (
|
|
111
|
+
* the host loader's `getDeploymentContextDefaults()`: cloud-managed
|
|
112
|
+
* assistants (IS_CLOUD) embed via the cloud gemini backend unless the
|
|
113
113
|
* provider leaf is explicitly set on disk. Kept local so this module does not
|
|
114
114
|
* import the host loader (whose partial test mocks would otherwise break the
|
|
115
115
|
* import); the parity test compares against the real loader under
|
|
116
|
-
*
|
|
116
|
+
* IS_CLOUD, so a divergent fill fails loudly there.
|
|
117
117
|
*/
|
|
118
118
|
function applyDeploymentContextFill(
|
|
119
119
|
memory: MemoryConfig,
|
|
120
120
|
raw: Record<string, unknown>,
|
|
121
121
|
): void {
|
|
122
|
-
if (process.env.
|
|
122
|
+
if (process.env.IS_CLOUD !== "true" && process.env.IS_CLOUD !== "1") {
|
|
123
123
|
return;
|
|
124
124
|
}
|
|
125
125
|
const rawEmbeddings = raw.embeddings;
|
|
@@ -65,7 +65,7 @@ export const SKILL_CARD_MESSAGE_KIND = "skill-authored-card";
|
|
|
65
65
|
* Request-origin tag the fork wake stamps onto `ToolContext.requestOrigin`
|
|
66
66
|
* (via the wake's tool-context pin). The permission checker scopes its
|
|
67
67
|
* non-interactive skill-authoring auto-grant to this origin, so a retrospective
|
|
68
|
-
* pass can call `
|
|
68
|
+
* pass can call `scaffold_cloud_skill` / `find_similar_skills` /
|
|
69
69
|
* `skill_load skill-management` without an interactive approval prompt. Matches
|
|
70
70
|
* the `"memory_retrospective"` member of `TitleOrigin`.
|
|
71
71
|
*/
|
|
@@ -73,7 +73,7 @@ export const MEMORY_RETROSPECTIVE_ORIGIN = "memory_retrospective";
|
|
|
73
73
|
|
|
74
74
|
/**
|
|
75
75
|
* Bundled skill that provides the retrospective's authoring tools
|
|
76
|
-
* (`find_similar_skills`, `
|
|
76
|
+
* (`find_similar_skills`, `scaffold_cloud_skill`, and the `skill_load`
|
|
77
77
|
* target). Preactivated for the fork wake so those tools join the turn's active
|
|
78
78
|
* set from turn 1, and matched by the permission checker's origin-scoped grant.
|
|
79
79
|
*/
|
|
@@ -543,8 +543,8 @@ export async function runForkBasedRetrospective(
|
|
|
543
543
|
trustContext: INTERNAL_GUARDIAN_TRUST_CONTEXT,
|
|
544
544
|
callSite: "memoryRetrospective",
|
|
545
545
|
// `remember` saves ordinary facts; the skill-authoring trio
|
|
546
|
-
// (`
|
|
547
|
-
// pass author or refine a
|
|
546
|
+
// (`scaffold_cloud_skill` / `skill_load` / `find_similar_skills`) lets a
|
|
547
|
+
// pass author or refine a cloud skill from an observed procedure. The
|
|
548
548
|
// allowlist is gated on the same `procToSkillsActive` predicate as the
|
|
549
549
|
// fork instruction and the checker's origin-scoped grant, so an inactive
|
|
550
550
|
// install is remember-only — the authoring trio is not even named on the
|
|
@@ -552,7 +552,7 @@ export async function runForkBasedRetrospective(
|
|
|
552
552
|
allowedTools: procToSkillsActive
|
|
553
553
|
? [
|
|
554
554
|
"remember",
|
|
555
|
-
"
|
|
555
|
+
"scaffold_cloud_skill",
|
|
556
556
|
"skill_load",
|
|
557
557
|
"find_similar_skills",
|
|
558
558
|
]
|
|
@@ -584,7 +584,7 @@ export async function runForkBasedRetrospective(
|
|
|
584
584
|
}
|
|
585
585
|
: {}),
|
|
586
586
|
// Preactivate skill-management so its authoring tools (`find_similar_skills`
|
|
587
|
-
// / `
|
|
587
|
+
// / `scaffold_cloud_skill` / the `skill_load` target) are in the turn's
|
|
588
588
|
// active set from turn 1; the checker's origin-scoped grant then makes them
|
|
589
589
|
// callable without an interactive prompt. Same `procToSkillsActive` gate as
|
|
590
590
|
// the allowlist above.
|
|
@@ -1042,7 +1042,7 @@ async function finalizeSuccessfulRetrospective(args: {
|
|
|
1042
1042
|
|
|
1043
1043
|
// Skill cards are not a finalize concern: when the run authors a skill, the
|
|
1044
1044
|
// scaffold executor enqueues the durable `skill_card_insert` delivery job at
|
|
1045
|
-
// the creation site (see `
|
|
1045
|
+
// the creation site (see `executeScaffoldCloudSkill` and
|
|
1046
1046
|
// `memory-retrospective-skill-card.ts`), so the GC below can never destroy
|
|
1047
1047
|
// the card's inputs.
|
|
1048
1048
|
|
|
@@ -1246,13 +1246,13 @@ async function extractRetrospectiveRunRemembers(
|
|
|
1246
1246
|
/**
|
|
1247
1247
|
* Tool names whose persisted `tool_use` blocks count as durable memory work
|
|
1248
1248
|
* for the fail-closed advancement gate: `remember` writes the memory buffer,
|
|
1249
|
-
* `
|
|
1249
|
+
* `scaffold_cloud_skill` writes a cloud skill. Read-only tools on the
|
|
1250
1250
|
* retrospective allowlist (`skill_load`, `find_similar_skills`) deliberately
|
|
1251
1251
|
* do not qualify: a run that only browsed produced nothing durable.
|
|
1252
1252
|
*/
|
|
1253
1253
|
const DURABLE_RETROSPECTIVE_TOOLS: ReadonlySet<string> = new Set([
|
|
1254
1254
|
"remember",
|
|
1255
|
-
"
|
|
1255
|
+
"scaffold_cloud_skill",
|
|
1256
1256
|
]);
|
|
1257
1257
|
|
|
1258
1258
|
/**
|
|
@@ -176,7 +176,7 @@ export function buildForkInstruction({
|
|
|
176
176
|
: `Your review window starts at ${anchorDescription} and ends just before this instruction message. If you cannot locate that anchoring turn in your visible history (for example, it is behind the compaction summary), fail closed: review only the most recent visible messages after the summary, not the whole conversation.`;
|
|
177
177
|
|
|
178
178
|
const availableToolsLine = procToSkillsActive
|
|
179
|
-
? "Only `remember`, `find_similar_skills`, and `
|
|
179
|
+
? "Only `remember`, `find_similar_skills`, and `scaffold_cloud_skill` are available for this pass — any other tool call will be rejected, so don't attempt one."
|
|
180
180
|
: "Only the `remember` tool is available for this pass — any other tool call will be rejected, so don't attempt one.";
|
|
181
181
|
|
|
182
182
|
const override = loadPromptOverride({
|
|
@@ -211,7 +211,7 @@ export function buildForkInstruction({
|
|
|
211
211
|
/**
|
|
212
212
|
* Skill-authoring addendum appended to the fork instruction when
|
|
213
213
|
* procedural-memory-as-skills is active. Directs the pass to capture a
|
|
214
|
-
* genuinely-executed, reusable procedure as a
|
|
214
|
+
* genuinely-executed, reusable procedure as a cloud skill — but only to
|
|
215
215
|
* overwrite or refine a skill it authored, never to overwrite or shadow a
|
|
216
216
|
* skill of any other source.
|
|
217
217
|
*/
|
|
@@ -219,13 +219,13 @@ function buildSkillAuthoringSection(): string {
|
|
|
219
219
|
return `
|
|
220
220
|
---
|
|
221
221
|
|
|
222
|
-
If your review window contains a PROCEDURE you actually carried out — a sequence of real \`tool_use\` steps you executed (not merely discussed or planned) that is plausibly worth reusing later — also consider capturing it as a
|
|
222
|
+
If your review window contains a PROCEDURE you actually carried out — a sequence of real \`tool_use\` steps you executed (not merely discussed or planned) that is plausibly worth reusing later — also consider capturing it as a cloud skill. Keep this bar low: when in doubt and the procedure looks reusable, author it. If the window contains no executed, reusable procedure, skip this entirely and just \`remember\` as above.
|
|
223
223
|
|
|
224
224
|
When you do capture a procedure:
|
|
225
225
|
|
|
226
|
-
1. Deduplicate against existing skills first. Call \`find_similar_skills\` with the procedure's goal as its \`goal\` argument. Each hit carries a \`source\` (bundled, managed, plugin, workspace, or extra), and a
|
|
226
|
+
1. Deduplicate against existing skills first. Call \`find_similar_skills\` with the procedure's goal as its \`goal\` argument. Each hit carries a \`source\` (bundled, managed, plugin, workspace, or extra), and a cloud hit also carries \`author\` (\`"assistant"\` if you authored it, \`"user"\` if a person did, omitted if untagged). You may only overwrite or refine a skill YOU authored: a hit with \`source: "managed"\` AND \`author: "assistant"\`. ANY other hit means the procedure is ALREADY COVERED: a non-managed source (bundled, plugin, workspace, or extra), OR a cloud skill that is NOT \`author: "assistant"\` (a person wrote it, or it is untagged). For an ALREADY COVERED hit do not \`overwrite\` it, do not shadow it by creating a skill with its \`skill_id\`, and do not create a near-duplicate. Skip it. Only when a returned skill is one of your own (\`source: "managed"\`, \`author: "assistant"\`) and is the SAME procedure, UPDATE it. Such a hit carries \`current\`: the skill as it is now, in \`scaffold_cloud_skill\`'s own argument names. Call \`scaffold_cloud_skill\` with that \`skill_id\` and \`overwrite: true\`, rewriting \`body_markdown\` from \`current.body_markdown\` plus what you actually observed in the trace (keep the steps the trace did not contradict; correct or add the ones it did), restate \`current.activation_hints\` (revised only if the procedure's triggers changed; they are the skill's retrieval signal, not something to regenerate) and leave out any other \`current\` field you are not changing (\`emoji\`, \`category\`, \`includes\`, \`avoid_when\`): an omitted field keeps its current value and an empty one clears it, and pass \`change_summary\` (the update is rejected without it): one or two short sentences (under 200 characters) for the person who reads the "Skill updated" notice, naming what you changed and what in the trace prompted it (for example "Added the retry after an expired session and the export endpoint that held steady."). The notice shows nothing else about the change, so name the concrete step, value, or gotcha rather than saying the skill was refined. Only CREATE a new skill (fresh \`skill_id\`) when no existing skill of any source covers the procedure. Bias strongly toward reusing or refining your own skills over spawning near-duplicates.
|
|
227
227
|
|
|
228
|
-
2. Capture procedure-scoped knowledge alongside the body. Failure modes, gotchas, and cached values you observed in the trace (error signatures and how you recovered, preconditions, IDs/paths/endpoints that held steady) belong in companion files passed via \`
|
|
228
|
+
2. Capture procedure-scoped knowledge alongside the body. Failure modes, gotchas, and cached values you observed in the trace (error signatures and how you recovered, preconditions, IDs/paths/endpoints that held steady) belong in companion files passed via \`scaffold_cloud_skill\`'s \`files\` input (for example \`references/failure-modes.md\`), and the SKILL.md body should reference them so a future load surfaces them.
|
|
229
229
|
|
|
230
230
|
3. Extract code you actually ran into reusable \`scripts/\` companion files. When the trace shows a script or non-trivial snippet you executed successfully (\`python3\` or \`bun\` — the only runtimes present), save that exact code verbatim as a companion file (for example \`scripts/export-report.py\`) — never a reconstruction of code the trace does not prove ran. When the trace shows the file's absolute path (workspace or /tmp), pass it as the entry's \`copy_from\` instead of re-typing the contents; inline \`content\` only when the code survives nowhere but the trace. Have the body give the literal rerun command anchored with \`{baseDir}\` (for example \`python3 {baseDir}/scripts/export-report.py\`); it resolves to the skill folder on load, and the terminal does not run from there. A stored working script beats re-deriving the code on every future use.
|
|
231
231
|
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
// Memory retrospective — skill-authored card delivery.
|
|
3
3
|
// ---------------------------------------------------------------------------
|
|
4
4
|
//
|
|
5
|
-
// When a retrospective pass genuinely CREATES a
|
|
6
|
-
// executor (`
|
|
5
|
+
// When a retrospective pass genuinely CREATES a cloud skill, the scaffold
|
|
6
|
+
// executor (`executeScaffoldCloudSkill`) enqueues a durable
|
|
7
7
|
// `skill_card_insert` job at the creation site — the executor knows
|
|
8
8
|
// created-vs-overwrote, the request origin, and the fork-parent source
|
|
9
9
|
// conversation as facts, so no message archaeology is needed. This module
|
|
@@ -80,7 +80,7 @@ describe("memory_v2_list_concept_pages handler", () => {
|
|
|
80
80
|
{
|
|
81
81
|
slug: "people/carol",
|
|
82
82
|
frontmatter: { edges: ["alice"], ref_files: [], ref_urls: [] },
|
|
83
|
-
body: "Carol leads the
|
|
83
|
+
body: "Carol leads the cloud team.\n",
|
|
84
84
|
},
|
|
85
85
|
];
|
|
86
86
|
for (const page of pages) {
|
|
@@ -155,7 +155,7 @@ describe("memory_worker_status", () => {
|
|
|
155
155
|
expect(res).toMatchObject({ status: "not_running" });
|
|
156
156
|
});
|
|
157
157
|
|
|
158
|
-
test("surfaces the local embedding backend (the default non-
|
|
158
|
+
test("surfaces the local embedding backend (the default non-cloud provider)", async () => {
|
|
159
159
|
backendStatus = {
|
|
160
160
|
enabled: true,
|
|
161
161
|
degraded: false,
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Tests for the boot-maintenance helpers in `boot-maintenance.ts`:
|
|
3
3
|
*
|
|
4
|
-
* - `
|
|
5
|
-
* this when a
|
|
4
|
+
* - `maybeReseedCapabilitiesAfterCloudCredential`: the secrets route calls
|
|
5
|
+
* this when a cloud-proxy credential lands, to close the first-boot race
|
|
6
6
|
* where the daemon's startup capability seed (skills + CLI commands) runs
|
|
7
|
-
* before the
|
|
7
|
+
* before the cloud provisions the cloud embedding credential — the
|
|
8
8
|
* seed's embed throws and the synthetic capability pages never reach the
|
|
9
9
|
* page index. The reseed must fire only when the substrate is active AND the
|
|
10
|
-
*
|
|
11
|
-
* assistants (no
|
|
10
|
+
* cloud-proxy prerequisites are now satisfied, so self-hosted / BYOK
|
|
11
|
+
* assistants (no cloud proxy) are never made to run a doomed embed. When
|
|
12
12
|
* v3 is live it then enqueues a `memory_v3_maintain` job so v3 picks up the
|
|
13
13
|
* capability pages immediately instead of waiting out the 6h maintain
|
|
14
14
|
* backstop.
|
|
@@ -67,8 +67,8 @@ const pageStoreDelegates: {
|
|
|
67
67
|
hasConceptPages: async () => true,
|
|
68
68
|
};
|
|
69
69
|
|
|
70
|
-
mock.module("../../../../../providers/
|
|
71
|
-
|
|
70
|
+
mock.module("../../../../../providers/cloud-proxy/context.js", () => ({
|
|
71
|
+
hasCloudProxyPrereqs: async () => proxyState.prereqs,
|
|
72
72
|
}));
|
|
73
73
|
|
|
74
74
|
// `config/memory-v3-gate.js` is deliberately NOT mocked. It is pure (its only
|
|
@@ -115,7 +115,7 @@ mock.module("../../../../../daemon/embedding-reconcile.js", () => ({
|
|
|
115
115
|
|
|
116
116
|
const {
|
|
117
117
|
maybeRebuildConceptCollection,
|
|
118
|
-
|
|
118
|
+
maybeReseedCapabilitiesAfterCloudCredential,
|
|
119
119
|
} = await import("../boot-maintenance.js");
|
|
120
120
|
|
|
121
121
|
/**
|
|
@@ -156,11 +156,11 @@ afterEach(() => {
|
|
|
156
156
|
proxyState.prereqs = true;
|
|
157
157
|
});
|
|
158
158
|
|
|
159
|
-
describe("
|
|
160
|
-
test("reseeds both skill and CLI entries when v2 is enabled and
|
|
159
|
+
describe("maybeReseedCapabilitiesAfterCloudCredential", () => {
|
|
160
|
+
test("reseeds both skill and CLI entries when v2 is enabled and cloud-proxy prereqs are satisfied", async () => {
|
|
161
161
|
proxyState.prereqs = true;
|
|
162
162
|
|
|
163
|
-
await
|
|
163
|
+
await maybeReseedCapabilitiesAfterCloudCredential(configWithV2(true));
|
|
164
164
|
|
|
165
165
|
expect(seedSkill).toHaveBeenCalledTimes(1);
|
|
166
166
|
expect(seedCli).toHaveBeenCalledTimes(1);
|
|
@@ -169,7 +169,7 @@ describe("maybeReseedCapabilitiesAfterManagedCredential", () => {
|
|
|
169
169
|
test("enqueues a v3 maintain pass after reseeding when v3 is live", async () => {
|
|
170
170
|
proxyState.prereqs = true;
|
|
171
171
|
|
|
172
|
-
await
|
|
172
|
+
await maybeReseedCapabilitiesAfterCloudCredential(configWithV3());
|
|
173
173
|
|
|
174
174
|
expect(enqueueJob).toHaveBeenCalledTimes(1);
|
|
175
175
|
expect(enqueueJob).toHaveBeenCalledWith("memory_v3_maintain", {});
|
|
@@ -178,7 +178,7 @@ describe("maybeReseedCapabilitiesAfterManagedCredential", () => {
|
|
|
178
178
|
test("reseeds but does not enqueue a v3 maintain pass when v3 is not live", async () => {
|
|
179
179
|
proxyState.prereqs = true;
|
|
180
180
|
|
|
181
|
-
await
|
|
181
|
+
await maybeReseedCapabilitiesAfterCloudCredential(configWithV2(true));
|
|
182
182
|
|
|
183
183
|
expect(seedSkill).toHaveBeenCalledTimes(1);
|
|
184
184
|
expect(seedCli).toHaveBeenCalledTimes(1);
|
|
@@ -186,17 +186,17 @@ describe("maybeReseedCapabilitiesAfterManagedCredential", () => {
|
|
|
186
186
|
});
|
|
187
187
|
|
|
188
188
|
test("no-op when v2 memory is disabled", async () => {
|
|
189
|
-
await
|
|
189
|
+
await maybeReseedCapabilitiesAfterCloudCredential(configWithV2(false));
|
|
190
190
|
|
|
191
191
|
expect(seedSkill).not.toHaveBeenCalled();
|
|
192
192
|
expect(seedCli).not.toHaveBeenCalled();
|
|
193
193
|
expect(enqueueJob).not.toHaveBeenCalled();
|
|
194
194
|
});
|
|
195
195
|
|
|
196
|
-
test("no-op for non-
|
|
196
|
+
test("no-op for non-cloud assistants (cloud-proxy prereqs not satisfied)", async () => {
|
|
197
197
|
proxyState.prereqs = false;
|
|
198
198
|
|
|
199
|
-
await
|
|
199
|
+
await maybeReseedCapabilitiesAfterCloudCredential(configWithV2(true));
|
|
200
200
|
|
|
201
201
|
expect(seedSkill).not.toHaveBeenCalled();
|
|
202
202
|
expect(seedCli).not.toHaveBeenCalled();
|
|
@@ -211,7 +211,7 @@ describe("maybeReseedCapabilitiesAfterManagedCredential", () => {
|
|
|
211
211
|
|
|
212
212
|
// Must not reject — the helper contains each seed's failure so a doomed
|
|
213
213
|
// embed never propagates back to the credential-store caller.
|
|
214
|
-
await
|
|
214
|
+
await maybeReseedCapabilitiesAfterCloudCredential(configWithV2(true));
|
|
215
215
|
|
|
216
216
|
expect(seedCli).toHaveBeenCalledTimes(1);
|
|
217
217
|
});
|
|
@@ -222,7 +222,7 @@ describe("maybeReseedCapabilitiesAfterManagedCredential", () => {
|
|
|
222
222
|
throw new Error('Embedding backend "gemini" is not configured');
|
|
223
223
|
});
|
|
224
224
|
|
|
225
|
-
await
|
|
225
|
+
await maybeReseedCapabilitiesAfterCloudCredential(configWithV3());
|
|
226
226
|
|
|
227
227
|
// The CLI catalog seeded, so v3 must still rebuild its lanes — a single
|
|
228
228
|
// catalog failure cannot suppress the maintain pass.
|
|
@@ -237,7 +237,7 @@ describe("maybeReseedCapabilitiesAfterManagedCredential", () => {
|
|
|
237
237
|
// the field. The CLI reseed completes normally.
|
|
238
238
|
seedSkill.mockImplementationOnce(() => new Promise<void>(() => {}));
|
|
239
239
|
|
|
240
|
-
await
|
|
240
|
+
await maybeReseedCapabilitiesAfterCloudCredential(configWithV3(), {
|
|
241
241
|
reseedTimeoutMs: 20,
|
|
242
242
|
});
|
|
243
243
|
|
|
@@ -258,7 +258,7 @@ describe("maybeReseedCapabilitiesAfterManagedCredential", () => {
|
|
|
258
258
|
}),
|
|
259
259
|
);
|
|
260
260
|
|
|
261
|
-
await
|
|
261
|
+
await maybeReseedCapabilitiesAfterCloudCredential(configWithV3(), {
|
|
262
262
|
reseedTimeoutMs: 10,
|
|
263
263
|
});
|
|
264
264
|
|
|
@@ -324,7 +324,7 @@ describe("seedV2CliCommandEntries", () => {
|
|
|
324
324
|
});
|
|
325
325
|
|
|
326
326
|
test("populates the cache from the declarative help on the first seed even when the embedding backend is unavailable (cold-start needle resilience)", async () => {
|
|
327
|
-
// Cold-start race: the startup seed runs before the
|
|
327
|
+
// Cold-start race: the startup seed runs before the cloud embedding
|
|
328
328
|
// credential is provisioned, so the first `embedWithBackend` throws. The
|
|
329
329
|
// in-memory cache (read by the v3 needle lane and the page index) must
|
|
330
330
|
// still populate from the declarative help so CLI commands are
|
|
@@ -691,8 +691,8 @@ Write a local article draft.
|
|
|
691
691
|
});
|
|
692
692
|
|
|
693
693
|
test("populates the cache from the local catalog on the first seed even when the embedding backend is unavailable (cold-start needle resilience)", async () => {
|
|
694
|
-
// Regression: on a brand-new
|
|
695
|
-
// the
|
|
694
|
+
// Regression: on a brand-new cloud assistant the startup seed runs before
|
|
695
|
+
// the cloud provisions the cloud embedding credential, so the very
|
|
696
696
|
// first `embedWithBackend` throws. The in-memory cache (which the v3 needle
|
|
697
697
|
// lane and the page index read) must still populate from the local catalog
|
|
698
698
|
// so skills are discoverable from first boot; only the dense Qdrant upsert
|
|
@@ -724,7 +724,7 @@ Write a local article draft.
|
|
|
724
724
|
});
|
|
725
725
|
|
|
726
726
|
test("surfaces the dense-embed failure to throwOnError callers while still populating the needle cache", async () => {
|
|
727
|
-
// The
|
|
727
|
+
// The cloud-credential reseed and the operator reembed route pass
|
|
728
728
|
// `throwOnError` so they learn the dense lane didn't complete and the
|
|
729
729
|
// retry/maintain machinery backfills it — but the needle cache is fixed
|
|
730
730
|
// regardless before the error propagates.
|