@mycadet/assistant 0.12.9 → 0.12.11
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/Dockerfile +0 -8
- package/eslint-rules/__tests__/cli-no-daemon-internals.test.ts +1 -1
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/__tests__/ingress.test.ts +8 -8
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/ingress.ts +1 -1
- package/node_modules/@mycadet/ces-client/src/http-credentials.ts +18 -1
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/__tests__/ingress.test.ts +8 -8
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/ingress.ts +1 -1
- package/node_modules/@mycadet/service-contracts/src/__tests__/ingress.test.ts +8 -8
- package/node_modules/@mycadet/service-contracts/src/ingress.ts +1 -1
- package/openapi.yaml +62 -910
- package/package.json +3 -7
- package/scripts/build-test-fixtures.ts +1 -1
- package/scripts/generate-openapi.ts +22 -6
- package/scripts/postinstall.ts +4 -10
- package/scripts/run-tests.ts +0 -21
- package/src/__tests__/adaptive-thinking-repair.test.ts +19 -57
- package/src/__tests__/agent-loop.test.ts +0 -76
- package/src/__tests__/anthropic-provider.test.ts +6 -6
- package/src/__tests__/assert-not-live-db.ts +1 -1
- package/src/__tests__/assistant-id-boundary-guard.test.ts +3 -3
- package/src/__tests__/attachments-store-heic-normalize.test.ts +1 -1
- package/src/__tests__/attachments-store.test.ts +1 -1
- package/src/__tests__/audit-log-rotation.test.ts +1 -1
- package/src/__tests__/btw-routes.test.ts +1 -1
- package/src/__tests__/byok-default-profile-ensure.test.ts +21 -27
- package/src/__tests__/call-conversation-messages.test.ts +0 -5
- package/src/__tests__/call-recovery.test.ts +2 -7
- package/src/__tests__/call-routes-http.test.ts +0 -12
- package/src/__tests__/call-store.test.ts +2 -7
- package/src/__tests__/catalog-files.test.ts +7 -5
- package/src/__tests__/checker.test.ts +1 -1
- package/src/__tests__/cli-memory-v2-reembed-skills.test.ts +4 -4
- package/src/__tests__/cloud-client-verify-credential.test.ts +0 -4
- package/src/__tests__/cloud-credential-catalog-cli.test.ts +14 -14
- package/src/__tests__/cloud-profile-guard.test.ts +87 -404
- package/src/__tests__/compaction-events.test.ts +2 -2
- package/src/__tests__/config-loader-backfill.test.ts +74 -163
- package/src/__tests__/config-loader-cloud-defaults.test.ts +11 -11
- package/src/__tests__/config-loader-corrupt.test.ts +10 -10
- package/src/__tests__/config-loader-quarantine-notice.test.ts +7 -7
- package/src/__tests__/config-loader-validation-reset-notice.test.ts +11 -11
- package/src/__tests__/config-schema.test.ts +26 -27
- package/src/__tests__/config-set-route.test.ts +2 -6
- package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +28 -300
- package/src/__tests__/conversation-agent-loop-overflow.test.ts +39 -246
- package/src/__tests__/conversation-agent-loop.test.ts +2 -58
- package/src/__tests__/conversation-clear-safety.test.ts +0 -30
- package/src/__tests__/conversation-inference-profile-route.test.ts +1 -1
- package/src/__tests__/conversation-queue.test.ts +1 -1
- package/src/__tests__/conversation-runtime-assembly.test.ts +1 -1
- package/src/__tests__/conversation-skill-tools.test.ts +4 -444
- package/src/__tests__/conversation-slash-commands.test.ts +1 -1
- package/src/__tests__/conversation-store.test.ts +1 -84
- package/src/__tests__/conversation-surface-state.test.ts +0 -16
- package/src/__tests__/credential-health-service.test.ts +14 -1
- package/src/__tests__/credential-record-retire.test.ts +1 -1
- package/src/__tests__/credential-record-write-through.test.ts +1 -1
- package/src/__tests__/credential-security-invariants.test.ts +0 -145
- package/src/__tests__/custom-profile-ensure.test.ts +1 -1
- package/src/__tests__/default-profile-catalog-fallback.test.ts +5 -15
- package/src/__tests__/deterministic-verification-control-plane.test.ts +0 -2
- package/src/__tests__/dictation-profile-store.test.ts +6 -6
- package/src/__tests__/disk-usage.test.ts +28 -164
- package/src/__tests__/docker-signing-key-bootstrap.test.ts +1 -1
- package/src/__tests__/embedding-cloud-proxy-selection.test.ts +1 -1
- package/src/__tests__/emit-event-signal.test.ts +1 -1
- package/src/__tests__/gateway-client-cloud-outbound.test.ts +3 -3
- package/src/__tests__/gateway-only-enforcement.test.ts +1 -1
- package/src/__tests__/guardian-dispatch.test.ts +0 -13
- package/src/__tests__/helpers/seed-app.ts +1 -1
- package/src/__tests__/host-cu-routes-targeted.test.ts +1 -1
- package/src/__tests__/host-shell-tool.test.ts +1 -1
- package/src/__tests__/identity-routes.test.ts +1 -1
- package/src/__tests__/inference-profile-session-handler.test.ts +1 -1
- package/src/__tests__/inference-profile-session-ipc.test.ts +1 -1
- package/src/__tests__/injector-chain.test.ts +1 -1
- package/src/__tests__/injector-config-quarantine-notice.test.ts +1 -1
- package/src/__tests__/injector-config-validation-reset-notice.test.ts +1 -1
- package/src/__tests__/injector-pkb-v2-silenced.test.ts +1 -1
- package/src/__tests__/{platform.test.ts → layout.test.ts} +1 -1
- package/src/__tests__/list-all-apps.test.ts +1 -1
- package/src/__tests__/live-workspace-guard.test.ts +2 -2
- package/src/__tests__/llm-resolver-override-or-default.test.ts +5 -6
- package/src/__tests__/llm-resolver.test.ts +7 -7
- package/src/__tests__/llm-schema-fallback-profile.test.ts +9 -10
- package/src/__tests__/llm-usage-store.test.ts +0 -495
- package/src/__tests__/log-export-routes.test.ts +1 -1
- package/src/__tests__/mcp-config-secret-boundary.test.ts +12 -53
- package/src/__tests__/mcp-list-plugin-servers.test.ts +1 -1
- package/src/__tests__/memory-config-file-parity.test.ts +1 -1
- package/src/__tests__/memory-v2-static-injector.test.ts +1 -1
- package/src/__tests__/messages-read-boundary-guard.test.ts +0 -2
- package/src/__tests__/notification-guardian-path.test.ts +0 -7
- package/src/__tests__/onboarding-persona-write.test.ts +1 -1
- package/src/__tests__/openai-provider.test.ts +8 -8
- package/src/__tests__/path-policy.test.ts +1 -1
- package/src/__tests__/persona-resolver.test.ts +1 -1
- package/src/__tests__/plugin-app-serve-routes.test.ts +1 -1
- package/src/__tests__/plugin-effective-enabled-set.test.ts +1 -1
- package/src/__tests__/plugin-import-boundary-guard.test.ts +4 -6
- package/src/__tests__/plugin-import-boundary-reverse-guard.test.ts +0 -3
- package/src/__tests__/provider-cloud-proxy-integration.test.ts +1 -5
- package/src/__tests__/provider-connections-backfill.test.ts +10 -10
- package/src/__tests__/prune-old-conversations-job.test.ts +6 -31
- package/src/__tests__/resolve-app.test.ts +1 -1
- package/src/__tests__/run-due-schedules.test.ts +1 -1
- package/src/__tests__/scaffold-managed-skill-tool.test.ts +0 -53
- package/src/__tests__/schedule-routes.test.ts +1 -1
- package/src/__tests__/schedule-store.test.ts +1 -1
- package/src/__tests__/secret-routes-cloud-proxy.test.ts +1 -1
- package/src/__tests__/skill-load-plugin-scope.test.ts +1 -1
- package/src/__tests__/surface-completion-compaction-boundary.test.ts +1 -1
- package/src/__tests__/tool-approval-handler.test.ts +1 -1
- package/src/__tests__/tool-audit.test.ts +5 -235
- package/src/__tests__/tool-executor-lifecycle-events.test.ts +54 -114
- package/src/__tests__/tools-get-route.test.ts +1 -1
- package/src/__tests__/turn-outcome-read.test.ts +1 -1
- package/src/__tests__/twilio-routes.test.ts +0 -1
- package/src/__tests__/usage-attribution.test.ts +0 -31
- package/src/__tests__/verification-control-plane-policy.test.ts +3 -10
- package/src/__tests__/visible-app-context.test.ts +1 -1
- package/src/__tests__/voice-ingress-preflight.test.ts +1 -1
- package/src/__tests__/workspace-git-service.test.ts +1 -1
- package/src/__tests__/workspace-greetings.test.ts +1 -1
- package/src/acp/__tests__/helpers/acp-config-stub.ts +1 -1
- package/src/activation/progress-store.ts +1 -1
- package/src/activation/turn-hooks.ts +1 -1
- package/src/agent/loop.ts +0 -51
- package/src/apps/app-store.ts +1 -1
- package/src/avatar/__tests__/avatar-store.test.ts +2 -172
- package/src/avatar/accent-backfill.ts +1 -1
- package/src/avatar/avatar-manifest.ts +1 -1
- package/src/avatar/avatar-store.ts +10 -69
- package/src/avatar/ensure-raster.ts +1 -1
- package/src/avatar/identity-avatar.ts +1 -1
- package/src/avatar/sync-avatar.ts +1 -1
- package/src/avatar/traits-png-sync.ts +1 -1
- package/src/bundler/compiler-tools.ts +1 -1
- package/src/bundler/package-resolver.ts +1 -1
- package/src/calls/__tests__/call-controller.test.ts +25 -27
- package/src/calls/active-call-lease.ts +1 -1
- package/src/calls/call-controller.ts +3 -3
- package/src/calls/call-domain.ts +4 -8
- package/src/calls/call-store.ts +2 -76
- package/src/calls/resolve-call-tts-provider.ts +3 -3
- package/src/calls/twilio-config.ts +3 -3
- package/src/calls/twilio-rest.ts +2 -2
- package/src/calls/voice-ingress-preflight.ts +2 -2
- package/src/cli/bundled-modules.ts +0 -2
- package/src/cli/commands/__tests__/apps.test.ts +1 -1
- package/src/cli/commands/__tests__/plugins.test.ts +9 -66
- package/src/cli/commands/__tests__/ps.test.ts +67 -0
- package/src/cli/commands/auth.help.ts +2 -2
- package/src/cli/commands/avatar.ts +1 -1
- package/src/cli/commands/changelog.ts +1 -1
- package/src/cli/commands/cloud/__tests__/subscription.test.ts +2 -2
- package/src/cli/commands/cloud/index.help.ts +1 -1
- package/src/cli/commands/cloud/index.ts +2 -2
- package/src/cli/commands/db/refresh.ts +1 -1
- package/src/cli/commands/db/repair-step-conversation-backfill.ts +1 -1
- package/src/cli/commands/db/repair.ts +1 -1
- package/src/cli/commands/db/status.ts +1 -1
- package/src/cli/commands/inference-profiles.ts +1 -12
- package/src/cli/commands/memory/__tests__/memory-v3.test.ts +1 -116
- package/src/cli/commands/memory/index.help.ts +1 -43
- package/src/cli/commands/memory/memory-v3.ts +0 -64
- package/src/cli/commands/plugins.ts +54 -205
- package/src/cli/commands/ps.ts +5 -2
- package/src/cli/commands/status.ts +1 -1
- package/src/cli/index.help.ts +0 -2
- package/src/cli/lib/__tests__/inspect-plugin.test.ts +36 -66
- package/src/cli/lib/__tests__/install-from-cloud.test.ts +1 -1
- package/src/cli/lib/__tests__/install-from-github.test.ts +41 -117
- package/src/cli/lib/__tests__/plugin-catalog-cache.test.ts +2 -185
- package/src/cli/lib/__tests__/plugin-catalog-resolve.test.ts +36 -66
- package/src/cli/lib/__tests__/plugin-catalog-visibility.test.ts +4 -6
- package/src/cli/lib/__tests__/plugin-details.test.ts +113 -96
- package/src/cli/lib/__tests__/search-plugins.test.ts +9 -16
- package/src/cli/lib/__tests__/uninstall-plugin.test.ts +1 -1
- package/src/cli/lib/__tests__/upgrade-plugin.test.ts +38 -15
- package/src/cli/lib/diff-plugin.ts +1 -1
- package/src/cli/lib/inspect-plugin.ts +13 -97
- package/src/cli/lib/install-from-cloud.ts +1 -1
- package/src/cli/lib/install-from-github.ts +75 -154
- package/src/cli/lib/install-plugin-dependencies.ts +1 -1
- package/src/cli/lib/list-installed-plugins.ts +1 -1
- package/src/cli/lib/open-browser.ts +1 -1
- package/src/cli/lib/plugin-catalog-cache.ts +8 -51
- package/src/cli/lib/plugin-catalog-resolve.ts +3 -22
- package/src/cli/lib/plugin-details.ts +5 -27
- package/src/cli/lib/plugin-marketplace.ts +18 -266
- package/src/cli/lib/search-plugins.ts +23 -43
- package/src/cli/lib/toggle-plugin.ts +1 -1
- package/src/cli/lib/uninstall-plugin.ts +1 -1
- package/src/cli/lib/upgrade-plugin.ts +3 -49
- package/src/cli/program.ts +1 -3
- package/src/cli.ts +1 -1
- package/src/cloud/client.ts +0 -6
- package/src/cloud/consent-cache.test.ts +22 -201
- package/src/cloud/consent-cache.ts +16 -111
- package/src/cloud/sync-identity.ts +1 -1
- package/src/config/__tests__/chat-settings.test.ts +1 -1
- package/src/config/__tests__/cloud-identity.test.ts +15 -2
- package/src/config/__tests__/default-plugin-skill-discovery.test.ts +1 -1
- package/src/config/__tests__/default-profile-catalog.test.ts +12 -51
- package/src/config/__tests__/deployment-context-defaults.test.ts +13 -13
- package/src/config/__tests__/loader-callsite-strip-fallback.test.ts +4 -4
- package/src/config/__tests__/loader-last-known-good.test.ts +9 -9
- package/src/config/__tests__/loader-sparse-array-cleanup.test.ts +7 -7
- package/src/config/__tests__/plugin-resident-skill-discovery.test.ts +1 -1
- package/src/config/__tests__/profile-materialization.test.ts +2 -4
- package/src/config/__tests__/sync-gated-profiles.test.ts +1 -106
- package/src/config/acp-agent-write.ts +1 -1
- package/src/config/bundled-skills/settings/tools/open-system-settings.test.ts +1 -1
- package/src/config/bundled-skills/settings/tools/open-system-settings.ts +1 -1
- package/src/config/call-site-defaults.ts +0 -6
- package/src/config/cloud-identity.ts +12 -5
- package/src/config/composer-preferences.ts +1 -1
- package/src/config/default-profile-catalog.ts +8 -75
- package/src/config/default-profile-names.ts +2 -25
- package/src/config/env-registry.ts +1 -14
- package/src/config/env.ts +8 -6
- package/src/config/llm-resolver.ts +1 -2
- package/src/config/loader.ts +13 -17
- package/src/config/profile-materialization.ts +1 -1
- package/src/config/schema.ts +1 -7
- package/src/config/schemas/call-site-catalog.ts +0 -7
- package/src/config/schemas/llm.ts +25 -32
- package/src/config/seed-inference-profiles.ts +16 -17
- package/src/config/skills.ts +2 -2
- package/src/config/sync-gated-profiles.ts +6 -24
- package/src/credential-health/credential-health-service.ts +10 -3
- package/src/daemon/approval-generators.ts +3 -3
- package/src/daemon/config-watcher.ts +2 -2
- package/src/daemon/conversation-agent-loop-handlers.ts +0 -18
- package/src/daemon/conversation-agent-loop.ts +6 -97
- package/src/daemon/conversation-process.ts +1 -1
- package/src/daemon/conversation-skill-tools.ts +4 -72
- package/src/daemon/conversation-store.ts +1 -1
- package/src/daemon/conversation-surface-state.ts +0 -33
- package/src/daemon/conversation-surfaces.ts +1 -86
- package/src/daemon/conversation-tool-setup.test.ts +1 -1
- package/src/daemon/conversation-tool-setup.ts +0 -23
- package/src/daemon/conversation.ts +3 -5
- package/src/daemon/daemon-control.ts +3 -3
- package/src/daemon/dictation-profile-store.ts +3 -3
- package/src/daemon/event-loop-watchdog.test.ts +2 -198
- package/src/daemon/event-loop-watchdog.ts +0 -185
- package/src/daemon/external-plugins-bootstrap.ts +1 -1
- package/src/daemon/first-greeting.ts +1 -1
- package/src/daemon/handlers/skills.ts +1 -1
- package/src/daemon/host-app-control-proxy.ts +1 -1
- package/src/daemon/host-cu-proxy.ts +2 -2
- package/src/daemon/identity-helpers.ts +1 -1
- package/src/daemon/lifecycle.ts +11 -15
- package/src/daemon/main.ts +1 -1
- package/src/daemon/now-scratchpad.ts +1 -1
- package/src/daemon/process-message.ts +4 -4
- package/src/daemon/profiler-run-store.ts +2 -2
- package/src/daemon/providers-setup.ts +2 -2
- package/src/daemon/shutdown-handlers.ts +0 -10
- package/src/daemon/sqlite-corruption-watchdog.test.ts +2 -142
- package/src/daemon/sqlite-corruption-watchdog.ts +17 -81
- package/src/daemon/tool-side-effects.ts +1 -1
- package/src/desktop/desktop-session-manager.ts +1 -1
- package/src/desktop/desktop-wallpaper-renderer.ts +1 -1
- package/src/heartbeat/heartbeat-service.ts +1 -1
- package/src/home/feed-writer.ts +1 -1
- package/src/home/home-greeting-cache.ts +1 -1
- package/src/home/relationship-state-writer.ts +2 -2
- package/src/hooks/__tests__/hook-live-reload.test.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/oauth-callback-url.ts +3 -3
- package/src/ipc/__tests__/attachment-ipc.test.ts +1 -1
- package/src/ipc/socket-path.ts +1 -1
- package/src/live-voice/__tests__/live-voice-archive.test.ts +1 -1
- package/src/live-voice/__tests__/live-voice-vad.test.ts +1 -1
- package/src/live-voice/live-voice-session.ts +3 -66
- package/src/mcp/__tests__/effective-config.test.ts +1 -1
- package/src/mcp/__tests__/mcp-oauth-client-registration.test.ts +2 -2
- package/src/mcp/__tests__/mcp-oauth-provider.test.ts +2 -3
- package/src/mcp/__tests__/reload-signal-emission.test.ts +1 -1
- package/src/mcp/__tests__/reload-signal.test.ts +1 -1
- package/src/mcp/__tests__/workspace-mcp-config.test.ts +19 -21
- package/src/mcp/reload-signal.ts +1 -1
- package/src/mcp/workspace-mcp-config.ts +1 -23
- package/src/messaging/draft-store.ts +1 -1
- package/src/monitoring/__tests__/active-conversations.test.ts +1 -1
- package/src/monitoring/__tests__/page-cache.test.ts +1 -1
- package/src/monitoring/__tests__/stall-capture.test.ts +1 -1
- package/src/monitoring/__tests__/workspace-git-heartbeat.test.ts +1 -1
- package/src/monitoring/active-conversations.ts +1 -1
- package/src/monitoring/control.ts +1 -1
- package/src/monitoring/daemon-boot-time.ts +1 -1
- package/src/monitoring/daemon-heartbeat.ts +1 -1
- package/src/monitoring/page-cache.ts +1 -1
- package/src/monitoring/plugin-auto-update.ts +1 -7
- package/src/monitoring/plugin-source-watch.ts +1 -1
- package/src/monitoring/recovery/db.ts +1 -1
- package/src/monitoring/recovery/inflight-content.ts +1 -1
- package/src/monitoring/resource-sampler.ts +3 -14
- package/src/monitoring/stall-capture.ts +1 -1
- package/src/monitoring/worker.ts +9 -76
- package/src/monitoring/workspace-git-heartbeat.ts +1 -1
- package/src/oauth/connect-orchestrator.ts +4 -4
- package/src/permissions/checker.ts +1 -1
- package/src/permissions/workspace-policy.ts +1 -1
- package/src/persistence/__tests__/main-db-readonly-probe.ts +27 -52
- package/src/persistence/__tests__/message-content-file.test.ts +1 -1
- package/src/persistence/__tests__/slow-sync-log.test.ts +0 -2
- package/src/persistence/attachments-store.ts +1 -1
- package/src/persistence/conversation-crud.ts +1 -38
- package/src/persistence/conversation-directories.ts +1 -1
- package/src/persistence/conversation-types.ts +0 -8
- package/src/persistence/db-async-query.ts +1 -1
- package/src/persistence/db-connection.ts +11 -1
- package/src/persistence/db-init.ts +1 -1
- package/src/persistence/db-maintenance.ts +1 -1
- package/src/persistence/embeddings/__tests__/embedding-local-lifecycle.test.ts +1 -1
- package/src/persistence/embeddings/embedding-local.ts +4 -4
- package/src/persistence/embeddings/embedding-runtime-manager.ts +1 -1
- package/src/persistence/embeddings/qdrant-client.ts +1 -1
- package/src/persistence/embeddings/qdrant-manager.ts +1 -1
- package/src/persistence/job-handlers/__tests__/message-lexical-backfill.test.ts +1 -1
- package/src/persistence/job-handlers/__tests__/message-lexical-enqueue.test.ts +1 -1
- package/src/persistence/job-handlers/cleanup.ts +8 -17
- package/src/persistence/llm-usage-store.ts +2 -229
- package/src/persistence/message-content-file.ts +1 -1
- package/src/persistence/migrations/209-strip-thinking-from-consolidated.ts +1 -1
- package/src/persistence/migrations/222-strip-placeholder-sentinels-from-messages.ts +1 -1
- package/src/persistence/migrations/296-rewrite-balanced-economy-profile-pins.test.ts +1 -1
- package/src/persistence/migrations/306-rewrite-frontier-profile-pins.test.ts +1 -1
- package/src/persistence/migrations/329-move-onboarding-events-to-telemetry-db.test.ts +13 -0
- package/src/persistence/migrations/330-move-auth-fallback-events-to-telemetry-db.test.ts +13 -0
- package/src/persistence/migrations/331-move-lifecycle-events-to-telemetry-db.test.ts +13 -0
- package/src/persistence/migrations/332-move-skill-loaded-events-to-telemetry-db.test.ts +13 -0
- package/src/persistence/migrations/333-create-telemetry-events-table.test.ts +7 -4
- package/src/persistence/migrations/334-backfill-telemetry-events-outbox.test.ts +13 -0
- package/src/persistence/migrations/387-drop-telemetry-tables.ts +51 -0
- package/src/persistence/migrations/__tests__/327-create-flush-checkpoints.test.ts +9 -1
- package/src/persistence/migrations/__tests__/387-drop-telemetry-tables.test.ts +79 -0
- package/src/persistence/migrations/helpers/relocation.ts +1 -1
- package/src/persistence/migrations/run-migrations.ts +1 -1
- package/src/persistence/migrations/validate-migration-state.ts +1 -1
- package/src/persistence/raw-query.ts +1 -29
- package/src/persistence/slow-sync-log.ts +0 -23
- package/src/persistence/steps.ts +2 -0
- package/src/{telemetry → persistence}/tool-audit.ts +6 -121
- package/src/plugin-api/index.ts +1 -1
- package/src/plugin-api/plugin-name-env.ts +1 -1
- package/src/plugins/__tests__/installed-plugin-dirs.test.ts +1 -1
- package/src/plugins/collect-source-versions.ts +1 -1
- package/src/plugins/defaults/channel/package.json +1 -1
- package/src/plugins/defaults/cloud-hosted/package.json +1 -1
- package/src/plugins/defaults/compaction/package.json +1 -1
- package/src/plugins/defaults/documents/package.json +1 -1
- package/src/plugins/defaults/empty-response/package.json +1 -1
- package/src/plugins/defaults/exploration-drift/package.json +1 -1
- package/src/plugins/defaults/image-fallback/package.json +1 -1
- package/src/plugins/defaults/image-recovery/package.json +1 -1
- package/src/plugins/defaults/max-tokens-continue/package.json +1 -1
- package/src/plugins/defaults/memory/__tests__/db-async-query.test.ts +1 -1
- package/src/plugins/defaults/memory/__tests__/db-maintenance.test.ts +1 -1
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-job.test.ts +0 -82
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-skill-card.test.ts +0 -41
- package/src/plugins/defaults/memory/__tests__/memory-tier-boundary-guard.test.ts +0 -2
- package/src/plugins/defaults/memory/memory-retrospective-job.ts +3 -52
- package/src/plugins/defaults/memory/memory-retrospective-skill-card.ts +0 -18
- package/src/plugins/defaults/memory/package.json +1 -1
- package/src/plugins/defaults/memory/paths.ts +4 -4
- package/src/plugins/defaults/memory/src/__tests__/memory-worker-routes.test.ts +1 -1
- package/src/plugins/defaults/memory/src/memory-v2-routes.ts +5 -5
- package/src/plugins/defaults/memory/src/memory-v3-routes.ts +0 -207
- package/src/plugins/defaults/memory/src/memory-worker-routes.ts +1 -1
- package/src/plugins/defaults/memory/startup.ts +1 -22
- package/src/plugins/defaults/memory/v3/__tests__/orchestrate.test.ts +2 -253
- package/src/plugins/defaults/memory/v3/orchestrate.ts +5 -129
- package/src/plugins/defaults/memory/worker-control.ts +1 -1
- package/src/plugins/defaults/memory/worker.ts +2 -2
- package/src/plugins/defaults/session/package.json +1 -1
- package/src/plugins/defaults/surface-completion-nudge/package.json +1 -1
- package/src/plugins/defaults/task-progress/package.json +1 -1
- package/src/plugins/defaults/task-progress-nudge/package.json +1 -1
- package/src/plugins/defaults/title-generate/package.json +1 -1
- package/src/plugins/defaults/tool-error/package.json +1 -1
- package/src/plugins/defaults/tool-result-truncate/package.json +1 -1
- package/src/plugins/defaults/turn-context/package.json +1 -1
- package/src/plugins/defaults/workspace/injectors.ts +1 -1
- package/src/plugins/defaults/workspace/package.json +1 -1
- package/src/plugins/disabled-state.ts +1 -1
- package/src/plugins/ensure-plugin-api-shim.ts +1 -1
- package/src/plugins/ensure-shared-dep-links.ts +1 -1
- package/src/plugins/installed-plugin-dirs.ts +1 -1
- package/src/plugins/mcp-servers.ts +7 -9
- package/src/plugins/mtime-cache.ts +2 -2
- package/src/plugins/source-versions.ts +1 -1
- package/src/prompts/bootstrap-cleanup.ts +1 -1
- package/src/prompts/persona-resolver.ts +1 -1
- package/src/prompts/sections.ts +2 -2
- package/src/prompts/system-prompt.ts +10 -42
- package/src/prompts/templates/BOOTSTRAP-ACTIVATION-RAIL.md +0 -37
- package/src/providers/__tests__/cadet-connection-routing.test.ts +2 -2
- package/src/providers/cadet/client.ts +1 -1
- package/src/providers/inference/__tests__/base-url-route-validation.test.ts +1 -1
- package/src/providers/inference/adapter-factory.ts +1 -1
- package/src/providers/inference/backfill.ts +3 -10
- package/src/providers/inference/profile-probe.ts +1 -1
- package/src/providers/retry.ts +0 -2
- package/src/providers/types.ts +0 -7
- package/src/providers/usage-tracking.ts +1 -1
- package/src/routes/__tests__/route-host.test.ts +1 -1
- package/src/routes/control.ts +1 -1
- package/src/routes/route-host-client.ts +1 -1
- package/src/routes/worker.ts +2 -2
- package/src/runtime/agent-wake.ts +1 -1
- package/src/runtime/assistant-stream-state.ts +1 -1
- package/src/runtime/auth/token-service.ts +1 -1
- package/src/runtime/background-job-runner.ts +1 -1
- package/src/runtime/middleware/twilio-validation.ts +2 -2
- package/src/runtime/routes/__tests__/app-pin-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/apps-refresh-route.test.ts +1 -1
- package/src/runtime/routes/__tests__/avatar-state-routes.test.ts +3 -33
- package/src/runtime/routes/__tests__/cloud-credits-routes.test.ts +5 -4
- package/src/runtime/routes/__tests__/cloud-invoice-routes.test.ts +4 -3
- package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +72 -298
- package/src/runtime/routes/__tests__/default-plugin-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/deprecated-route-context.test.ts +15 -62
- package/src/runtime/routes/__tests__/inference-profiles-routes.test.ts +105 -12
- package/src/runtime/routes/__tests__/ingress-status-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/monitoring-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/plugins-routes.test.ts +47 -211
- package/src/runtime/routes/__tests__/route-host-worker-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/schedule-routes-disarm-reason.test.ts +1 -1
- package/src/runtime/routes/__tests__/schedule-worker-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/user-route-dispatcher-host.test.ts +1 -1
- package/src/runtime/routes/__tests__/user-route-dispatcher.test.ts +1 -1
- package/src/runtime/routes/__tests__/user-routes-cli.test.ts +1 -1
- package/src/runtime/routes/__tests__/user-routes-notices.test.ts +1 -1
- package/src/runtime/routes/__tests__/user-routes-request.test.ts +1 -1
- package/src/runtime/routes/app-management-routes.ts +1 -1
- package/src/runtime/routes/attachment-routes.ts +1 -1
- package/src/runtime/routes/audit-routes.ts +1 -1
- package/src/runtime/routes/avatar-routes.ts +3 -10
- package/src/runtime/routes/cloud-routes.ts +3 -3
- package/src/runtime/routes/content-source-routes.ts +1 -1
- package/src/runtime/routes/conversation-query-routes.ts +49 -706
- package/src/runtime/routes/conversation-routes.ts +1 -38
- package/src/runtime/routes/debug-routes.ts +1 -1
- package/src/runtime/routes/deprecated-route-context.ts +5 -61
- package/src/runtime/routes/heartbeat-routes.ts +1 -1
- package/src/runtime/routes/identity-routes.ts +1 -1
- package/src/runtime/routes/index.ts +0 -6
- package/src/runtime/routes/inference-profile-session-handler.ts +3 -3
- package/src/runtime/routes/inference-profiles-routes.ts +48 -21
- package/src/runtime/routes/inference-provider-connection-routes.ts +0 -1
- package/src/runtime/routes/llm-call-sites-routes.ts +3 -3
- package/src/runtime/routes/log-export/__tests__/installed-inventory.test.ts +1 -1
- package/src/runtime/routes/log-export/__tests__/workspace-allowlist-error-contract.test.ts +1 -1
- package/src/runtime/routes/log-export/__tests__/workspace-allowlist.test.ts +1 -1
- package/src/runtime/routes/log-export/workspace-allowlist.ts +1 -1
- package/src/runtime/routes/log-export-routes.ts +17 -15
- package/src/runtime/routes/migration-rollback-routes.ts +1 -1
- package/src/runtime/routes/migration-routes.ts +2 -3
- package/src/runtime/routes/monitoring-routes.ts +2 -2
- package/src/runtime/routes/oauth-providers.ts +5 -5
- package/src/runtime/routes/plugins-routes.ts +38 -163
- package/src/runtime/routes/profiler-routes.ts +1 -1
- package/src/runtime/routes/route-host-worker-routes.ts +1 -1
- package/src/runtime/routes/sanity-routes.ts +1 -1
- package/src/runtime/routes/schedule-routes.ts +1 -1
- package/src/runtime/routes/schedule-worker-routes.ts +1 -1
- package/src/runtime/routes/settings-routes.ts +1 -1
- package/src/runtime/routes/sounds-config-routes.ts +1 -1
- package/src/runtime/routes/surface-conversation-resolver.ts +1 -7
- package/src/runtime/routes/user-route-dispatcher.ts +1 -3
- package/src/runtime/routes/user-route-import.ts +1 -1
- package/src/runtime/routes/user-route-resolution.ts +1 -1
- package/src/runtime/routes/user-routes-cli.ts +1 -1
- package/src/runtime/routes/workspace-commit-routes.ts +1 -1
- package/src/runtime/routes/workspace-greetings.ts +1 -1
- package/src/runtime/routes/workspace-routes.ts +1 -1
- package/src/runtime/routes/workspace-utils.ts +1 -1
- package/src/runtime/sync/resource-sync-events.ts +1 -1
- package/src/schedule/__tests__/plugin-schedule-declarations.test.ts +1 -1
- package/src/schedule/__tests__/plugin-schedule-reconciler.test.ts +1 -1
- package/src/schedule/plugin-schedule-availability.ts +1 -1
- package/src/schedule/plugin-schedule-declarations.ts +1 -1
- package/src/schedule/run-script.ts +1 -1
- package/src/schedule/scheduler.ts +1 -11
- package/src/schedule/worker-control.ts +1 -1
- package/src/schedule/worker.ts +3 -3
- package/src/security/oauth2.ts +2 -2
- package/src/security/secret-allowlist.ts +1 -1
- package/src/signals/cancel.ts +1 -1
- package/src/signals/conversation-undo.ts +1 -1
- package/src/signals/emit-event.ts +1 -1
- package/src/signals/event-stream.ts +1 -1
- package/src/signals/user-message.ts +1 -1
- package/src/skills/catalog-install.ts +2 -1
- package/src/skills/clawhub.ts +1 -1
- package/src/skills/cloud-store.ts +1 -1
- package/src/skills/path-classifier.ts +1 -1
- package/src/skills/skill-history.ts +1 -1
- package/src/skills/skillssh-registry.ts +1 -1
- package/src/skills/uninstall.ts +1 -1
- package/src/skills/workspace-skill-md-signature.ts +1 -1
- package/src/subagent/manager.ts +1 -1
- package/src/theme/workspace-theme.ts +1 -1
- package/src/tools/browser/auth-cache.ts +1 -1
- package/src/tools/browser/browser-manager.ts +1 -1
- package/src/tools/browser/runtime-check.ts +1 -1
- package/src/tools/executor.ts +4 -4
- package/src/tools/filesystem/write.ts +1 -1
- package/src/tools/permission-checker.ts +2 -51
- package/src/tools/run-standalone.ts +1 -1
- package/src/tools/skills/format-input-schema.ts +1 -1
- package/src/tools/skills/load.ts +1 -1
- package/src/tools/skills/scaffold-cloud.ts +0 -32
- package/src/tools/terminal/safe-env.ts +1 -2
- package/src/tools/terminal/sanitized-bash.ts +1 -1
- package/src/tools/terminal/shell.ts +1 -1
- package/src/tools/tool-approval-handler.ts +4 -1
- package/src/tools/workflows/manage-workflows.ts +2 -2
- package/src/tools/workflows/run-workflow.test.ts +1 -1
- package/src/tools/workspace-tools/loader.ts +1 -1
- package/src/tts/synthesis-stream.ts +2 -2
- package/src/usage/attribution.ts +1 -11
- package/src/util/browser.ts +1 -1
- package/src/util/bun-runtime.ts +2 -1
- package/src/util/device-id.ts +1 -1
- package/src/util/disk-usage.ts +4 -139
- package/src/util/layout.ts +3 -3
- package/src/util/logger.ts +1 -1
- package/src/util/logs-db-path.ts +1 -1
- package/src/util/memory-db-path.ts +1 -1
- package/src/util/{platform.ts → os.ts} +5 -30
- package/src/util/process-tree.ts +19 -0
- package/src/util/sqlite3-runtime.ts +1 -1
- package/src/util/telemetry-db-path.ts +1 -1
- package/src/watcher/__tests__/engine.test.ts +0 -23
- package/src/watcher/engine.ts +0 -7
- package/src/windows-compiled-cli.ts +0 -4
- package/src/windows-compiled-worker-entry.ts +0 -6
- package/src/workflows/leaf-runner.test.ts +1 -1
- package/src/workflows/leaf-runner.ts +1 -1
- package/src/workflows/library.ts +1 -1
- package/src/workspace/adaptive-thinking-repair.ts +5 -24
- package/src/workspace/byok-default-profile-ensure.ts +24 -26
- package/src/workspace/custom-profile-ensure.ts +2 -2
- package/src/workspace/git-service.ts +1 -1
- package/src/workspace/hatched-date.ts +1 -1
- package/src/workspace/migrations/038-unify-llm-callsite-configs.ts +2 -2
- package/src/workspace/migrations/040-seed-latency-callsite-defaults.ts +1 -1
- package/src/workspace/migrations/050-seed-main-agent-opus-callsite.ts +1 -1
- package/src/workspace/migrations/077-seed-memory-router-callsite.ts +1 -1
- package/src/workspace/migrations/registry.ts +0 -4
- package/src/workspace/turn-commit.ts +1 -1
- package/docs/activation-funnel-telemetry.md +0 -324
- package/scripts/bundled-plugin-packages.ts +0 -154
- package/scripts/generate-bundled-plugin-packages.ts +0 -29
- package/src/__tests__/activation-early-marking.test.ts +0 -114
- package/src/__tests__/auth-fallback-events-store.test.ts +0 -99
- package/src/__tests__/config-get-vision-flag.test.ts +0 -139
- package/src/__tests__/conversation-surfaces-activation-emit.test.ts +0 -400
- package/src/__tests__/internal-telemetry-routes.test.ts +0 -213
- package/src/__tests__/telemetry-routes.test.ts +0 -182
- package/src/__tests__/turn-events-store.test.ts +0 -376
- package/src/__tests__/ui-channel-variants.test.ts +0 -53
- package/src/avatar/__tests__/avatar-changed-telemetry.test.ts +0 -217
- package/src/avatar/avatar-changed-telemetry.ts +0 -128
- package/src/calls/__tests__/call-funnel-telemetry.test.ts +0 -204
- package/src/cli/commands/telemetry.help.ts +0 -27
- package/src/cli/commands/telemetry.ts +0 -83
- package/src/cli/lib/__tests__/local-plugin-upgrade.test.ts +0 -251
- package/src/cli/lib/__tests__/plugin-catalog-local.test.ts +0 -113
- package/src/cli/lib/__tests__/plugin-marketplace.test.ts +0 -384
- package/src/cli/lib/__tests__/plugin-pin-history.test.ts +0 -164
- package/src/cli/lib/__tests__/plugins-install-offline.test.ts +0 -228
- package/src/cli/lib/bundled-marketplace.json +0 -1575
- package/src/cli/lib/bundled-plugin-packages.json +0 -827
- package/src/cli/lib/bundled-plugin-packages.ts +0 -87
- package/src/cli/lib/plugin-catalog-local.ts +0 -94
- package/src/cli/lib/plugin-pin-history.ts +0 -276
- package/src/cloud/feature-gate.ts +0 -8
- package/src/config/__tests__/cloud-rehydration.test.ts +0 -180
- package/src/config/cloud-rehydration.ts +0 -35
- package/src/daemon/__tests__/auto-profile-router.test.ts +0 -380
- package/src/daemon/auto-profile-router.ts +0 -428
- package/src/live-voice/__tests__/live-voice-session-telemetry.test.ts +0 -391
- package/src/monitoring/__tests__/db-integrity-sample.test.ts +0 -113
- package/src/monitoring/__tests__/oom-kill-reporter.test.ts +0 -374
- package/src/monitoring/db-integrity-check.ts +0 -163
- package/src/monitoring/db-integrity-sample.ts +0 -176
- package/src/monitoring/oom-kill-reporter.ts +0 -469
- package/src/onboarding/__tests__/onboarding-events-store.test.ts +0 -158
- package/src/onboarding/onboarding-events-store.ts +0 -296
- package/src/persistence/__tests__/raw-query-telemetry.test.ts +0 -76
- package/src/persistence/lifecycle-events-store.test.ts +0 -134
- package/src/persistence/lifecycle-events-store.ts +0 -110
- package/src/plugins/defaults/memory/__tests__/activation-session-store.test.ts +0 -76
- package/src/plugins/defaults/memory/activation-session-store.ts +0 -50
- package/src/plugins/defaults/memory/src/__tests__/memory-v3-gate-stats.test.ts +0 -281
- package/src/runtime/routes/auto-profile-routes.ts +0 -83
- package/src/runtime/routes/internal-telemetry-routes.ts +0 -142
- package/src/runtime/routes/telemetry-routes.ts +0 -274
- package/src/security/auth-fallback-events-store.ts +0 -57
- package/src/telemetry/__tests__/activation-funnel.test.ts +0 -95
- package/src/telemetry/__tests__/config-setting-events-store.test.ts +0 -63
- package/src/telemetry/__tests__/config-setting-snapshot.test.ts +0 -143
- package/src/telemetry/__tests__/flush-checkpoints.test.ts +0 -56
- package/src/telemetry/__tests__/live-voice-funnel.test.ts +0 -174
- package/src/telemetry/__tests__/outbox-test-harness.ts +0 -85
- package/src/telemetry/__tests__/phone-call-funnel.test.ts +0 -72
- package/src/telemetry/__tests__/telemetry-event-fixtures.ts +0 -282
- package/src/telemetry/__tests__/watchdog-events-store.test.ts +0 -71
- package/src/telemetry/activation-funnel.ts +0 -172
- package/src/telemetry/config-setting-events-store.ts +0 -40
- package/src/telemetry/config-setting-snapshot.ts +0 -170
- package/src/telemetry/flush-checkpoints.ts +0 -70
- package/src/telemetry/live-voice-funnel.ts +0 -185
- package/src/telemetry/memory-corpus-size.test.ts +0 -120
- package/src/telemetry/memory-corpus-size.ts +0 -184
- package/src/telemetry/memory-tier-reporter.test.ts +0 -195
- package/src/telemetry/memory-tier-reporter.ts +0 -130
- package/src/telemetry/phone-call-funnel.ts +0 -144
- package/src/telemetry/skill-loaded-events-store.test.ts +0 -93
- package/src/telemetry/skill-loaded-events-store.ts +0 -39
- package/src/telemetry/telemetry-event-sources.test.ts +0 -223
- package/src/telemetry/telemetry-event-sources.ts +0 -597
- package/src/telemetry/telemetry-events-outbox.test.ts +0 -375
- package/src/telemetry/telemetry-events-outbox.ts +0 -237
- package/src/telemetry/telemetry-main-db.ts +0 -48
- package/src/telemetry/telemetry-wire-source.json +0 -4
- package/src/telemetry/telemetry-wire-validation.test.ts +0 -157
- package/src/telemetry/telemetry-wire-validation.ts +0 -162
- package/src/telemetry/telemetry-wire.generated.ts +0 -483
- package/src/telemetry/tool-executed-events-store.test.ts +0 -210
- package/src/telemetry/tool-executed-events-store.ts +0 -102
- package/src/telemetry/trace-collection-policy.test.ts +0 -28
- package/src/telemetry/trace-collection-policy.ts +0 -30
- package/src/telemetry/turn-events-store.ts +0 -216
- package/src/telemetry/turn-trace-store.test.ts +0 -884
- package/src/telemetry/turn-trace-store.ts +0 -399
- package/src/telemetry/types.test.ts +0 -38
- package/src/telemetry/types.ts +0 -780
- package/src/telemetry/usage-telemetry-reporter.test.ts +0 -3445
- package/src/telemetry/usage-telemetry-reporter.ts +0 -566
- package/src/telemetry/watchdog-direct-emit.test.ts +0 -112
- package/src/telemetry/watchdog-direct-emit.ts +0 -104
- package/src/telemetry/watchdog-events-store.ts +0 -31
- package/src/tools/ui-surface/channel-variants.ts +0 -52
- package/src/watcher/__tests__/telemetry.test.ts +0 -178
- package/src/watcher/telemetry.ts +0 -93
- package/src/workspace/migrations/097-enable-adaptive-thinking-managed-profiles.ts +0 -165
- package/src/workspace/migrations/104-recheck-adaptive-thinking-model-implied-anthropic.ts +0 -151
- /package/src/{telemetry → persistence}/tool-usage-store.ts +0 -0
- /package/src/{telemetry → persistence}/turn-outcome.ts +0 -0
|
@@ -35,7 +35,7 @@ import {
|
|
|
35
35
|
} from "../../archive/ustar-size.js";
|
|
36
36
|
import { getCloudBaseUrl } from "../../config/env.js";
|
|
37
37
|
import { getExistingDeviceId } from "../../util/device-id.js";
|
|
38
|
-
import { getWorkspacePluginsDir } from "../../util/
|
|
38
|
+
import { getWorkspacePluginsDir } from "../../util/layout.js";
|
|
39
39
|
import { getPluginManifestInstallAction } from "../../util/plugin-manifest.js";
|
|
40
40
|
import { APP_VERSION } from "../../version.js";
|
|
41
41
|
import type { FetchLike } from "./fetch-like.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Install a reviewed plugin by name from its catalog source.
|
|
3
3
|
*
|
|
4
|
-
* A name resolves to an entry in the curated
|
|
5
|
-
*
|
|
4
|
+
* A name resolves to an entry in the curated plugin catalog (Cadet Cloud's
|
|
5
|
+
* marketplace). A GitHub source is fetched with a shallow clone at its pinned ref.
|
|
6
6
|
* A local source is read from the exact package version embedded in the
|
|
7
7
|
* assistant distribution. Both are materialized into
|
|
8
8
|
* `<workspacePluginsDir>/<name>/` and record their source in the provenance
|
|
@@ -45,34 +45,31 @@ import {
|
|
|
45
45
|
stripPreservedUserState,
|
|
46
46
|
} from "../../plugins/plugin-tree-walk.js";
|
|
47
47
|
import { ensureBun } from "../../util/bun-runtime.js";
|
|
48
|
+
import { getWorkspacePluginsDir } from "../../util/layout.js";
|
|
48
49
|
import {
|
|
49
50
|
addToPathEnv,
|
|
50
51
|
getExtraToolPathDirs,
|
|
51
|
-
getWorkspacePluginsDir,
|
|
52
52
|
isWindows,
|
|
53
|
-
} from "../../util/
|
|
53
|
+
} from "../../util/os.js";
|
|
54
54
|
import {
|
|
55
55
|
getPluginManifestInstallAction,
|
|
56
56
|
readPluginManifest,
|
|
57
57
|
} from "../../util/plugin-manifest.js";
|
|
58
|
-
import { materializeBundledPluginPackage } from "./bundled-plugin-packages.js";
|
|
59
58
|
import type { FetchLike } from "./fetch-like.js";
|
|
60
59
|
import {
|
|
61
60
|
type DependencyInstaller,
|
|
62
61
|
installPluginDependencies,
|
|
63
62
|
} from "./install-plugin-dependencies.js";
|
|
63
|
+
import { getPluginCatalog } from "./plugin-catalog-cache.js";
|
|
64
|
+
import { resolveSourceFromMatch } from "./plugin-catalog-resolve.js";
|
|
64
65
|
import {
|
|
65
66
|
computeContentHash,
|
|
66
67
|
computeFingerprint,
|
|
67
68
|
type Fingerprint,
|
|
68
69
|
parseFingerprint,
|
|
69
70
|
} from "./plugin-fingerprint.js";
|
|
70
|
-
import {
|
|
71
|
-
|
|
72
|
-
MarketplaceFetchError,
|
|
73
|
-
type ResolvedPluginSource,
|
|
74
|
-
resolveMarketplaceSource,
|
|
75
|
-
} from "./plugin-marketplace.js";
|
|
71
|
+
import type { ResolvedPluginSource } from "./plugin-marketplace.js";
|
|
72
|
+
import { PluginCatalogUnavailableError } from "./search-plugins.js";
|
|
76
73
|
|
|
77
74
|
const execFileAsync = promisify(execFile);
|
|
78
75
|
|
|
@@ -142,21 +139,19 @@ export interface InstallPluginOptions {
|
|
|
142
139
|
readonly commitOverride?: string;
|
|
143
140
|
/**
|
|
144
141
|
* Install directly from these GitHub coordinates, bypassing the curated
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
142
|
+
* plugin catalog. The tree is materialized verbatim — no curated adapter stub
|
|
143
|
+
* is overlaid — and the source is *untrusted*, so the caller is responsible
|
|
144
|
+
* for surfacing a warning. Used to install a plugin not yet in the catalog
|
|
145
|
+
* (typically one still under development). When set,
|
|
149
146
|
* {@link InstallPluginOptions.ref}, {@link InstallPluginOptions.commitOverride},
|
|
150
147
|
* and marketplace resolution are all skipped; `directSource.ref` selects the
|
|
151
148
|
* commit to clone (a branch, tag, `HEAD`, or full SHA).
|
|
152
149
|
*/
|
|
153
150
|
readonly directSource?: PluginFetchSource;
|
|
154
151
|
/**
|
|
155
|
-
* Install from an exact source resolved by the reviewed catalog
|
|
156
|
-
*
|
|
157
|
-
*
|
|
158
|
-
* Marketplace resolution and {@link InstallPluginOptions.commitOverride} are
|
|
159
|
-
* skipped when this is set.
|
|
152
|
+
* Install from an exact source resolved by the reviewed catalog; retains
|
|
153
|
+
* the curated adapter overlay. Marketplace resolution and
|
|
154
|
+
* {@link InstallPluginOptions.commitOverride} are skipped when this is set.
|
|
160
155
|
*/
|
|
161
156
|
readonly trustedSource?: PluginMaterializeSource;
|
|
162
157
|
}
|
|
@@ -191,8 +186,6 @@ export interface InstallPluginDeps {
|
|
|
191
186
|
readonly beforeSwap?: () => Promise<void>;
|
|
192
187
|
/** Consent gate between staging and finalize; see {@link ConfirmStagedInstall}. */
|
|
193
188
|
readonly confirmStaged?: ConfirmStagedInstall;
|
|
194
|
-
/** Override embedded-package materialization for focused tests. */
|
|
195
|
-
readonly materializeLocalPackage?: typeof materializeBundledPluginPackage;
|
|
196
189
|
}
|
|
197
190
|
|
|
198
191
|
/** Successful install result. */
|
|
@@ -315,29 +308,10 @@ export interface PluginFetchSource {
|
|
|
315
308
|
readonly ref: string;
|
|
316
309
|
}
|
|
317
310
|
|
|
318
|
-
|
|
319
|
-
export interface LocalPluginFetchSource {
|
|
320
|
-
readonly kind: "local";
|
|
321
|
-
readonly path: string;
|
|
322
|
-
readonly version: string;
|
|
323
|
-
readonly ref?: undefined;
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
export type PluginMaterializeSource =
|
|
327
|
-
| PluginFetchSource
|
|
328
|
-
| LocalPluginFetchSource;
|
|
329
|
-
|
|
330
|
-
export function isLocalPluginSource(
|
|
331
|
-
source: PluginMaterializeSource,
|
|
332
|
-
): source is LocalPluginFetchSource {
|
|
333
|
-
return "kind" in source && source.kind === "local";
|
|
334
|
-
}
|
|
311
|
+
export type PluginMaterializeSource = PluginFetchSource;
|
|
335
312
|
|
|
336
313
|
/** Build the `owner/repo/path` label used in not-found errors. */
|
|
337
314
|
function sourceLabel(source: PluginMaterializeSource): string {
|
|
338
|
-
if (isLocalPluginSource(source)) {
|
|
339
|
-
return source.path;
|
|
340
|
-
}
|
|
341
315
|
return source.rootPath
|
|
342
316
|
? `${source.owner}/${source.repo}/${source.rootPath}`
|
|
343
317
|
: `${source.owner}/${source.repo}`;
|
|
@@ -345,14 +319,11 @@ function sourceLabel(source: PluginMaterializeSource): string {
|
|
|
345
319
|
|
|
346
320
|
/**
|
|
347
321
|
* Resolve a plugin name to its exact marketplace source, or `null` when no
|
|
348
|
-
* entry claims the name. A GitHub entry
|
|
349
|
-
* under `plugins/<name>` that is overlaid onto the clone. A local entry refers
|
|
350
|
-
* to a fully self-contained package embedded in the assistant distribution.
|
|
322
|
+
* entry claims the name. A GitHub entry resolves to exact repo coordinates.
|
|
351
323
|
*
|
|
352
|
-
* A transient
|
|
353
|
-
* {@link PluginSourceUnavailableError}; a malformed
|
|
354
|
-
*
|
|
355
|
-
* installable.
|
|
324
|
+
* A transient catalog failure (rate-limit / 5xx) surfaces as a retryable
|
|
325
|
+
* {@link PluginSourceUnavailableError}; a malformed row propagates as a hard
|
|
326
|
+
* error, since the catalog is the source of truth for what is installable.
|
|
356
327
|
*/
|
|
357
328
|
async function resolvePluginSource(
|
|
358
329
|
name: string,
|
|
@@ -361,14 +332,12 @@ async function resolvePluginSource(
|
|
|
361
332
|
): Promise<PluginMaterializeSource | null> {
|
|
362
333
|
let resolved: ResolvedPluginSource | null;
|
|
363
334
|
try {
|
|
364
|
-
const
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
);
|
|
368
|
-
resolved = resolveMarketplaceSource(name, entries);
|
|
335
|
+
const catalog = await getPluginCatalog(marketplaceRef, { fetch: fetchFn });
|
|
336
|
+
const match = catalog.matches.find((candidate) => candidate.name === name);
|
|
337
|
+
resolved = match ? resolveSourceFromMatch(match) : null;
|
|
369
338
|
} catch (err) {
|
|
370
|
-
if (err instanceof
|
|
371
|
-
throw new PluginSourceUnavailableError(err.message, err.status
|
|
339
|
+
if (err instanceof PluginCatalogUnavailableError) {
|
|
340
|
+
throw new PluginSourceUnavailableError(err.message, err.status);
|
|
372
341
|
}
|
|
373
342
|
throw err;
|
|
374
343
|
}
|
|
@@ -377,14 +346,6 @@ async function resolvePluginSource(
|
|
|
377
346
|
return null;
|
|
378
347
|
}
|
|
379
348
|
|
|
380
|
-
if (resolved.kind === "local") {
|
|
381
|
-
return {
|
|
382
|
-
kind: "local",
|
|
383
|
-
path: resolved.path,
|
|
384
|
-
version: resolved.version,
|
|
385
|
-
};
|
|
386
|
-
}
|
|
387
|
-
|
|
388
349
|
return {
|
|
389
350
|
owner: resolved.owner,
|
|
390
351
|
repo: resolved.repo,
|
|
@@ -479,9 +440,9 @@ export async function installPlugin(
|
|
|
479
440
|
|
|
480
441
|
// A direct install bypasses the marketplace whitelist entirely: the source is
|
|
481
442
|
// supplied by the caller and the tree is materialized verbatim (no curated
|
|
482
|
-
// adapter stub). A trusted pre-resolved source (
|
|
483
|
-
//
|
|
484
|
-
//
|
|
443
|
+
// adapter stub). A trusted pre-resolved source (catalog-backed install)
|
|
444
|
+
// supplies its coordinates too but keeps the curated overlay. Otherwise the
|
|
445
|
+
// name is resolved against the reviewed catalog.
|
|
485
446
|
let effectiveSource: PluginMaterializeSource;
|
|
486
447
|
// Ref the curated adapter stub is fetched at, or `null` to skip the overlay.
|
|
487
448
|
let stubRef: string | null;
|
|
@@ -489,35 +450,27 @@ export async function installPlugin(
|
|
|
489
450
|
effectiveSource = opts.directSource;
|
|
490
451
|
stubRef = null;
|
|
491
452
|
} else if (opts.trustedSource) {
|
|
492
|
-
//
|
|
493
|
-
//
|
|
494
|
-
// The stub lives in this repo, not in `trustedSource` (the external
|
|
495
|
-
// so `trustedSource.ref` can't address it;
|
|
496
|
-
//
|
|
497
|
-
// DEFAULT_PLUGIN_REF).
|
|
453
|
+
// Trusted-catalog install: clone the external content verbatim but keep
|
|
454
|
+
// the curated adapter overlay (like the marketplace-git trusted path).
|
|
455
|
+
// The stub lives in this repo, not in `trustedSource` (the external
|
|
456
|
+
// plugin), so `trustedSource.ref` can't address it; the stub is fetched
|
|
457
|
+
// at `marketplaceRef` (its default, DEFAULT_PLUGIN_REF).
|
|
498
458
|
effectiveSource = opts.trustedSource;
|
|
499
|
-
stubRef =
|
|
459
|
+
stubRef = marketplaceRef;
|
|
500
460
|
} else {
|
|
501
461
|
const source = await resolvePluginSource(name, marketplaceRef, deps.fetch);
|
|
502
462
|
if (!source) {
|
|
503
|
-
throw new PluginNotFoundError(
|
|
504
|
-
name,
|
|
505
|
-
marketplaceRef,
|
|
506
|
-
"plugins/marketplace.json",
|
|
507
|
-
);
|
|
463
|
+
throw new PluginNotFoundError(name, marketplaceRef, "the plugin catalog");
|
|
508
464
|
}
|
|
509
465
|
// A commit override installs a specific plugin revision while still taking
|
|
510
466
|
// owner/repo/path (and the adapter stub, via `marketplaceRef`) from the
|
|
511
467
|
// manifest; otherwise the reviewed pin from the manifest is materialized.
|
|
512
|
-
effectiveSource =
|
|
513
|
-
opts.commitOverride
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
stubRef = isLocalPluginSource(effectiveSource) ? null : marketplaceRef;
|
|
468
|
+
effectiveSource = opts.commitOverride
|
|
469
|
+
? { ...source, ref: opts.commitOverride }
|
|
470
|
+
: source;
|
|
471
|
+
stubRef = marketplaceRef;
|
|
517
472
|
}
|
|
518
|
-
const ref =
|
|
519
|
-
? effectiveSource.version
|
|
520
|
-
: effectiveSource.ref;
|
|
473
|
+
const ref = effectiveSource.ref;
|
|
521
474
|
|
|
522
475
|
const pluginsDir = deps.workspacePluginsDir ?? getWorkspacePluginsDir();
|
|
523
476
|
const target = join(pluginsDir, name);
|
|
@@ -754,28 +707,19 @@ export const INSTALL_META_FILENAME = "install-meta.json";
|
|
|
754
707
|
/**
|
|
755
708
|
* Which catalog manages an installed plugin. Mirrors the skill origin values
|
|
756
709
|
* (`SkillInstallMeta.origin` in `src/skills/install-meta.ts`) so the two
|
|
757
|
-
* systems keep a consistent vocabulary. `"cadet"` denotes
|
|
758
|
-
*
|
|
710
|
+
* systems keep a consistent vocabulary. `"cadet"` denotes first-party; the
|
|
711
|
+
* union widens as new sources are supported.
|
|
759
712
|
*/
|
|
760
713
|
export type InstallOrigin = "cadet";
|
|
761
714
|
|
|
762
715
|
/** Resolved source coordinates recorded in the provenance sidecar. */
|
|
763
|
-
export type InstallMetaSource =
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
}
|
|
771
|
-
| {
|
|
772
|
-
readonly kind: "local";
|
|
773
|
-
readonly path: string;
|
|
774
|
-
readonly version: string;
|
|
775
|
-
readonly owner?: undefined;
|
|
776
|
-
readonly repo?: undefined;
|
|
777
|
-
readonly ref?: undefined;
|
|
778
|
-
};
|
|
716
|
+
export type InstallMetaSource = {
|
|
717
|
+
readonly kind: "github";
|
|
718
|
+
readonly owner: string;
|
|
719
|
+
readonly repo: string;
|
|
720
|
+
readonly path?: string;
|
|
721
|
+
readonly ref: string;
|
|
722
|
+
};
|
|
779
723
|
|
|
780
724
|
/**
|
|
781
725
|
* Parsed contents of the `install-meta.json` provenance sidecar — what was
|
|
@@ -885,19 +829,11 @@ export async function materializePluginTree(
|
|
|
885
829
|
},
|
|
886
830
|
deps: InstallPluginDeps,
|
|
887
831
|
): Promise<MaterializedTree> {
|
|
888
|
-
const cloned =
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
commit: null,
|
|
894
|
-
committedAt: null,
|
|
895
|
-
}
|
|
896
|
-
: await copyExternalViaGit(
|
|
897
|
-
opts.source,
|
|
898
|
-
opts.destDir,
|
|
899
|
-
deps.runGit ?? defaultGitRunner,
|
|
900
|
-
);
|
|
832
|
+
const cloned = await copyExternalViaGit(
|
|
833
|
+
opts.source,
|
|
834
|
+
opts.destDir,
|
|
835
|
+
deps.runGit ?? defaultGitRunner,
|
|
836
|
+
);
|
|
901
837
|
// An external clone is often a foreign-ecosystem plugin (e.g. a Claude Code
|
|
902
838
|
// plugin) that the Cadet loader can't run as-is. When we curate an adapter
|
|
903
839
|
// stub for it, overlay the stub and run its transform so the materialized
|
|
@@ -1637,24 +1573,21 @@ function writeInstallMeta(
|
|
|
1637
1573
|
contentHash,
|
|
1638
1574
|
}: WriteInstallMetaParams,
|
|
1639
1575
|
): void {
|
|
1640
|
-
const local = isLocalPluginSource(source);
|
|
1641
1576
|
const meta: InstallMeta = {
|
|
1642
1577
|
origin: "cadet",
|
|
1643
1578
|
installedAt: new Date().toISOString(),
|
|
1644
1579
|
version: readStagedManifestVersion(stagingDir),
|
|
1645
|
-
sourceRepo:
|
|
1580
|
+
sourceRepo: `${source.owner}/${source.repo}`,
|
|
1646
1581
|
contentHash,
|
|
1647
1582
|
author: "user",
|
|
1648
1583
|
name,
|
|
1649
|
-
source:
|
|
1650
|
-
|
|
1651
|
-
:
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
ref,
|
|
1657
|
-
},
|
|
1584
|
+
source: {
|
|
1585
|
+
kind: "github",
|
|
1586
|
+
owner: source.owner,
|
|
1587
|
+
repo: source.repo,
|
|
1588
|
+
path: source.rootPath || undefined,
|
|
1589
|
+
ref,
|
|
1590
|
+
},
|
|
1658
1591
|
commit,
|
|
1659
1592
|
committedAt,
|
|
1660
1593
|
...(etag ? { etag } : {}),
|
|
@@ -1702,32 +1635,20 @@ export function readInstallMeta(pluginDir: string): InstallMeta | null {
|
|
|
1702
1635
|
return null;
|
|
1703
1636
|
}
|
|
1704
1637
|
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
kind: "local",
|
|
1712
|
-
path: source.path,
|
|
1713
|
-
version: source.version,
|
|
1714
|
-
};
|
|
1715
|
-
} else {
|
|
1716
|
-
if (
|
|
1717
|
-
typeof source.owner !== "string" ||
|
|
1718
|
-
typeof source.repo !== "string" ||
|
|
1719
|
-
typeof source.ref !== "string"
|
|
1720
|
-
) {
|
|
1721
|
-
return null;
|
|
1722
|
-
}
|
|
1723
|
-
parsedSource = {
|
|
1724
|
-
kind: "github",
|
|
1725
|
-
owner: source.owner,
|
|
1726
|
-
repo: source.repo,
|
|
1727
|
-
path: typeof source.path === "string" ? source.path : undefined,
|
|
1728
|
-
ref: source.ref,
|
|
1729
|
-
};
|
|
1638
|
+
if (
|
|
1639
|
+
typeof source.owner !== "string" ||
|
|
1640
|
+
typeof source.repo !== "string" ||
|
|
1641
|
+
typeof source.ref !== "string"
|
|
1642
|
+
) {
|
|
1643
|
+
return null;
|
|
1730
1644
|
}
|
|
1645
|
+
const parsedSource: InstallMetaSource = {
|
|
1646
|
+
kind: "github",
|
|
1647
|
+
owner: source.owner,
|
|
1648
|
+
repo: source.repo,
|
|
1649
|
+
path: typeof source.path === "string" ? source.path : undefined,
|
|
1650
|
+
ref: source.ref,
|
|
1651
|
+
};
|
|
1731
1652
|
|
|
1732
1653
|
const optionalString = (value: unknown): string | undefined =>
|
|
1733
1654
|
typeof value === "string" ? value : undefined;
|
|
@@ -59,7 +59,7 @@ import { promisify } from "node:util";
|
|
|
59
59
|
|
|
60
60
|
import { ensureBun } from "../../util/bun-runtime.js";
|
|
61
61
|
import { getLogger } from "../../util/logger.js";
|
|
62
|
-
import { addToPathEnv } from "../../util/
|
|
62
|
+
import { addToPathEnv } from "../../util/os.js";
|
|
63
63
|
|
|
64
64
|
const execFileAsync = promisify(execFile);
|
|
65
65
|
|
|
@@ -18,7 +18,7 @@ import { fileURLToPath } from "node:url";
|
|
|
18
18
|
|
|
19
19
|
import { z } from "zod";
|
|
20
20
|
|
|
21
|
-
import { getWorkspacePluginsDir } from "../../util/
|
|
21
|
+
import { getWorkspacePluginsDir } from "../../util/layout.js";
|
|
22
22
|
import {
|
|
23
23
|
LEGACY_PLUGIN_MANIFEST,
|
|
24
24
|
readPluginManifest,
|
|
@@ -16,7 +16,7 @@ import { spawn } from "node:child_process";
|
|
|
16
16
|
import { mkdirSync, writeFileSync } from "node:fs";
|
|
17
17
|
import { join } from "node:path";
|
|
18
18
|
|
|
19
|
-
import { getWorkspaceDir } from "../../util/
|
|
19
|
+
import { getWorkspaceDir } from "../../util/layout.js";
|
|
20
20
|
|
|
21
21
|
export function openInHostBrowser(
|
|
22
22
|
url: string,
|
|
@@ -1,19 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* In-memory cache for the installable plugin catalog.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* The catalog is fetched from Cadet Cloud (`CADET_CLOUD_URL`, overridable for
|
|
5
|
+
* air-gapped installs) and any fetch failure propagates (fail hard — no
|
|
6
6
|
* stale-cache smoothing). Successful loads are held per git ref for a short
|
|
7
|
-
* TTL.
|
|
8
|
-
* offline manifest is read instead, with zero network calls.
|
|
7
|
+
* TTL.
|
|
9
8
|
*/
|
|
10
9
|
|
|
11
|
-
import { areCloudFeaturesEnabled } from "../../cloud/feature-gate.js";
|
|
12
10
|
import { fetchPluginCatalogFromPlatform } from "./plugin-catalog-cloud.js";
|
|
13
|
-
import {
|
|
14
|
-
readBundledLocalPluginCatalog,
|
|
15
|
-
readBundledPluginCatalog,
|
|
16
|
-
} from "./plugin-catalog-local.js";
|
|
17
11
|
import { filterPluginCatalogByFeatureFlags } from "./plugin-catalog-visibility.js";
|
|
18
12
|
import type { PluginCatalog, SearchPluginsDeps } from "./search-plugins.js";
|
|
19
13
|
|
|
@@ -29,62 +23,25 @@ type PluginCatalogLoadDeps = Pick<SearchPluginsDeps, "fetch">;
|
|
|
29
23
|
|
|
30
24
|
const cache = new Map<string, CacheEntry>();
|
|
31
25
|
|
|
32
|
-
/**
|
|
33
|
-
* Add bundled local packages without overriding cloud-authoritative rows.
|
|
34
|
-
* A platform row without an integration borrows the bundled row's
|
|
35
|
-
* integration of the same name, so an integration the cloud omits or
|
|
36
|
-
* serves malformed never disappears from the catalog.
|
|
37
|
-
*/
|
|
38
|
-
export function mergePlatformCatalogWithBundledLocals(
|
|
39
|
-
platform: PluginCatalog,
|
|
40
|
-
bundledLocal: PluginCatalog = readBundledLocalPluginCatalog(),
|
|
41
|
-
): PluginCatalog {
|
|
42
|
-
const bundledByName = new Map(
|
|
43
|
-
bundledLocal.matches.map((match) => [match.name, match]),
|
|
44
|
-
);
|
|
45
|
-
const platformMatches = platform.matches.map((match) => {
|
|
46
|
-
const bundledIntegration = bundledByName.get(match.name)?.integration;
|
|
47
|
-
if (match.integration || !bundledIntegration) {
|
|
48
|
-
return match;
|
|
49
|
-
}
|
|
50
|
-
return { ...match, integration: bundledIntegration };
|
|
51
|
-
});
|
|
52
|
-
const seen = new Set(platform.matches.map((match) => match.name));
|
|
53
|
-
return {
|
|
54
|
-
ref: platform.ref,
|
|
55
|
-
matches: [
|
|
56
|
-
...platformMatches,
|
|
57
|
-
...bundledLocal.matches.filter((match) => !seen.has(match.name)),
|
|
58
|
-
].sort((a, b) => a.name.localeCompare(b.name)),
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
|
|
62
26
|
/**
|
|
63
27
|
* Resolve the full plugin catalog at {@link ref}.
|
|
64
28
|
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
* fetch failure propagates so the caller can surface it (e.g. map a rate-limit
|
|
69
|
-
* to 503) — no stale catalog is ever served.
|
|
29
|
+
* The catalog is fetched from the cloud and, on success, cached per ref for
|
|
30
|
+
* the TTL; a fetch failure propagates so the caller can surface it (e.g. map
|
|
31
|
+
* a rate-limit to 503) — no stale catalog is ever served.
|
|
70
32
|
*/
|
|
71
33
|
async function loadPluginCatalog(
|
|
72
34
|
ref: string,
|
|
73
35
|
deps: PluginCatalogLoadDeps,
|
|
74
36
|
): Promise<PluginCatalog> {
|
|
75
|
-
if (!areCloudFeaturesEnabled()) {
|
|
76
|
-
return { ...readBundledPluginCatalog(), ref };
|
|
77
|
-
}
|
|
78
|
-
|
|
79
37
|
const cached = cache.get(ref);
|
|
80
38
|
if (cached && Date.now() - cached.timestamp < PLUGIN_CATALOG_CACHE_TTL_MS) {
|
|
81
39
|
return cached.catalog;
|
|
82
40
|
}
|
|
83
41
|
|
|
84
42
|
const catalog = await fetchPluginCatalogFromPlatform(deps, { ref });
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
return merged;
|
|
43
|
+
cache.set(ref, { catalog, timestamp: Date.now() });
|
|
44
|
+
return catalog;
|
|
88
45
|
}
|
|
89
46
|
|
|
90
47
|
/** Installable catalog with feature-flag visibility applied. */
|
|
@@ -3,16 +3,15 @@
|
|
|
3
3
|
*
|
|
4
4
|
* The gated analogues of {@link ./plugin-marketplace}'s `resolveMarketplaceSource`
|
|
5
5
|
* / GitHub `findMarketplaceEntry`: install-by-name and the detail lookup resolve
|
|
6
|
-
* the SAME catalog `search` uses (
|
|
7
|
-
* `getPluginCatalog
|
|
8
|
-
*
|
|
6
|
+
* the SAME catalog `search` uses (via {@link ./plugin-catalog-cache}'s
|
|
7
|
+
* `getPluginCatalog`) instead of a direct GitHub `plugins/marketplace.json`
|
|
8
|
+
* fetch — so search, install, and details read one source.
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import { getPluginCatalog } from "./plugin-catalog-cache.js";
|
|
12
12
|
import { DEFAULT_PLUGIN_REF } from "./plugin-constants.js";
|
|
13
13
|
import {
|
|
14
14
|
githubSourceSchema,
|
|
15
|
-
localSourceSchema,
|
|
16
15
|
type ResolvedPluginSource,
|
|
17
16
|
} from "./plugin-marketplace.js";
|
|
18
17
|
import type { PluginSearchMatch, SearchPluginsDeps } from "./search-plugins.js";
|
|
@@ -41,24 +40,6 @@ export async function findCatalogEntry(
|
|
|
41
40
|
export function resolveSourceFromMatch(
|
|
42
41
|
match: PluginSearchMatch,
|
|
43
42
|
): ResolvedPluginSource {
|
|
44
|
-
if (match.source.kind === "local") {
|
|
45
|
-
const parsed = localSourceSchema.safeParse({
|
|
46
|
-
source: "local",
|
|
47
|
-
path: match.source.path,
|
|
48
|
-
version: match.source.version,
|
|
49
|
-
});
|
|
50
|
-
if (!parsed.success) {
|
|
51
|
-
throw new Error(
|
|
52
|
-
`Catalog entry "${match.name}" (${match.source.path}) has an invalid source: ` +
|
|
53
|
-
parsed.error.issues.map((issue) => issue.message).join("; "),
|
|
54
|
-
);
|
|
55
|
-
}
|
|
56
|
-
return {
|
|
57
|
-
kind: "local",
|
|
58
|
-
path: parsed.data.path,
|
|
59
|
-
version: parsed.data.version,
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
43
|
// Repo-root `""` maps to `undefined` (omitted = root) so the schema's
|
|
63
44
|
// non-empty path refine does not reject a valid repo-root entry.
|
|
64
45
|
const path = match.source.path || undefined;
|
|
@@ -34,9 +34,8 @@ import { join } from "node:path";
|
|
|
34
34
|
|
|
35
35
|
import { z } from "zod";
|
|
36
36
|
|
|
37
|
-
import { getWorkspacePluginsDir } from "../../util/
|
|
37
|
+
import { getWorkspacePluginsDir } from "../../util/layout.js";
|
|
38
38
|
import { readPluginManifest } from "../../util/plugin-manifest.js";
|
|
39
|
-
import { readBundledPluginFile } from "./bundled-plugin-packages.js";
|
|
40
39
|
import type { FetchLike } from "./fetch-like.js";
|
|
41
40
|
import { sanitizePluginName } from "./install-from-github.js";
|
|
42
41
|
import {
|
|
@@ -50,9 +49,7 @@ import {
|
|
|
50
49
|
import { isPluginCatalogEntryVisible } from "./plugin-catalog-visibility.js";
|
|
51
50
|
import { DEFAULT_PLUGIN_REF } from "./plugin-constants.js";
|
|
52
51
|
import { readValidatedPluginIcon } from "./plugin-icon-file.js";
|
|
53
|
-
import { fetchMarketplaceEntries } from "./plugin-marketplace.js";
|
|
54
52
|
import {
|
|
55
|
-
marketplaceMatch,
|
|
56
53
|
PluginCatalogUnavailableError,
|
|
57
54
|
type PluginMatchSource,
|
|
58
55
|
type PluginSearchMatch,
|
|
@@ -311,17 +308,6 @@ async function readRemotePlugin(
|
|
|
311
308
|
source: PluginMatchSource,
|
|
312
309
|
fetchFn: FetchLike,
|
|
313
310
|
): Promise<RemotePlugin> {
|
|
314
|
-
if (source.kind === "local") {
|
|
315
|
-
const manifest = readBundledPluginFile(
|
|
316
|
-
source.path,
|
|
317
|
-
source.version,
|
|
318
|
-
"plugin.json",
|
|
319
|
-
);
|
|
320
|
-
return {
|
|
321
|
-
manifest: manifest ? safeParseManifest(manifest) : emptyManifest(),
|
|
322
|
-
readme: null,
|
|
323
|
-
};
|
|
324
|
-
}
|
|
325
311
|
const [owner, repo] = source.repo.split("/", 2) as [string, string];
|
|
326
312
|
const entries = await listDirSafe(
|
|
327
313
|
owner,
|
|
@@ -430,10 +416,13 @@ async function resolveCatalogEntry(
|
|
|
430
416
|
return null;
|
|
431
417
|
}
|
|
432
418
|
try {
|
|
419
|
+
// Non-default refs named historical revisions of the old local marketplace
|
|
420
|
+
// manifest; with the catalog living in Cadet Cloud there is nothing to
|
|
421
|
+
// resolve a historical ref against.
|
|
433
422
|
const match =
|
|
434
423
|
ref === DEFAULT_PLUGIN_REF
|
|
435
424
|
? await findCatalogEntry(name, { fetch: fetchFn })
|
|
436
|
-
:
|
|
425
|
+
: null;
|
|
437
426
|
return validateCatalogMatchSource(match);
|
|
438
427
|
} catch (err) {
|
|
439
428
|
if (err instanceof PluginCatalogUnavailableError && !installed) {
|
|
@@ -466,17 +455,6 @@ function validateCatalogMatchSource(
|
|
|
466
455
|
}
|
|
467
456
|
}
|
|
468
457
|
|
|
469
|
-
/** Read the GitHub marketplace at {@link ref} and project the named entry. */
|
|
470
|
-
async function findMarketplaceMatch(
|
|
471
|
-
name: string,
|
|
472
|
-
ref: string,
|
|
473
|
-
fetchFn: FetchLike,
|
|
474
|
-
): Promise<PluginSearchMatch | null> {
|
|
475
|
-
const entries = await fetchMarketplaceEntries({ fetch: fetchFn }, { ref });
|
|
476
|
-
const entry = entries.find((e) => e.name === name);
|
|
477
|
-
return entry ? marketplaceMatch(entry) : null;
|
|
478
|
-
}
|
|
479
|
-
|
|
480
458
|
function githubFetch(
|
|
481
459
|
url: string,
|
|
482
460
|
accept: string,
|