@mycadet/assistant 0.12.9 → 0.12.10
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/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 +48 -401
- 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 +22 -27
- 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 +59 -287
- 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 +60 -621
- 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
|
@@ -1,59 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Shared plugin source schemas and types for catalog-backed installs.
|
|
3
3
|
*
|
|
4
|
-
* The manifest
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* The old local marketplace manifest (`plugins/marketplace.json`) and its
|
|
5
|
+
* GitHub fetcher are gone: the installable catalog is Cadet Cloud's
|
|
6
|
+
* (`GET /v1/plugins`, see {@link ./plugin-catalog-cloud}). What remains here
|
|
7
|
+
* is the contract every catalog source must satisfy when a name resolves to
|
|
8
|
+
* install coordinates.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* release.
|
|
14
|
-
* Every external source pins an explicit `ref` that MUST be a full commit SHA:
|
|
15
|
-
* the fetched code is locked to an immutable revision. Tags and branches are
|
|
16
|
-
* rejected because they are mutable — an upstream owner could retag/repoint
|
|
10
|
+
* Every external source pins an explicit `ref` that MUST be a full commit
|
|
11
|
+
* SHA: the fetched code is locked to an immutable revision. Tags and branches
|
|
12
|
+
* are rejected because they are mutable — an upstream owner could retag/repoint
|
|
17
13
|
* them to attacker code that the daemon would then `import()` (the install
|
|
18
|
-
* tree is dynamically loaded). A SHA cannot be repointed, so
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* Designed for direct programmatic use with an injected `fetch`, mirroring
|
|
22
|
-
* {@link ./search-plugins} and {@link ./install-from-github}.
|
|
14
|
+
* tree is dynamically loaded). A SHA cannot be repointed, so a reviewed
|
|
15
|
+
* catalog fully determines what gets executed.
|
|
23
16
|
*/
|
|
24
17
|
|
|
25
18
|
import { z } from "zod";
|
|
26
19
|
|
|
27
|
-
import type { FetchLike } from "./fetch-like.js";
|
|
28
|
-
import { USER_AGENT } from "./user-agent.js";
|
|
29
|
-
|
|
30
|
-
/** Canonical location of the marketplace manifest. */
|
|
31
|
-
const MARKETPLACE_SOURCE_OWNER = "vargasjr-dev";
|
|
32
|
-
const MARKETPLACE_SOURCE_REPO = "mycadet";
|
|
33
|
-
const MARKETPLACE_FILE_PATH = "plugins/marketplace.json";
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Canonical GitHub coordinates of the marketplace manifest, exported so
|
|
37
|
-
* sibling readers (e.g. {@link ./plugin-pin-history}) resolve the same
|
|
38
|
-
* `owner/repo:path` rather than re-declaring it.
|
|
39
|
-
*/
|
|
40
|
-
export const MARKETPLACE_MANIFEST_LOCATION = {
|
|
41
|
-
owner: MARKETPLACE_SOURCE_OWNER,
|
|
42
|
-
repo: MARKETPLACE_SOURCE_REPO,
|
|
43
|
-
path: MARKETPLACE_FILE_PATH,
|
|
44
|
-
} as const;
|
|
45
|
-
|
|
46
20
|
// ---------------------------------------------------------------------------
|
|
47
|
-
//
|
|
21
|
+
// Source schemas (subset of the Claude Code marketplace schema)
|
|
48
22
|
// ---------------------------------------------------------------------------
|
|
49
23
|
|
|
50
24
|
/** `owner/repo`, kebab/underscore/dot segments — matches GitHub's slug rules. */
|
|
51
25
|
const REPO_SLUG_RE = /^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/;
|
|
52
26
|
/** Install name: a single kebab-case path segment (same rule as the CLI). */
|
|
53
|
-
const PLUGIN_NAME_RE = /^[a-z0-9][a-z0-9_-]*$/;
|
|
27
|
+
export const PLUGIN_NAME_RE = /^[a-z0-9][a-z0-9_-]*$/;
|
|
54
28
|
/**
|
|
55
29
|
* Full Git commit SHA — 40 hex chars (SHA-1) or 64 (SHA-256). External
|
|
56
|
-
*
|
|
30
|
+
* catalog refs must be a complete object name so the install is pinned to
|
|
57
31
|
* an immutable revision; abbreviated SHAs, tags, and branches are all mutable
|
|
58
32
|
* or ambiguous and are rejected.
|
|
59
33
|
*/
|
|
@@ -78,7 +52,7 @@ export const githubSourceSchema = z.object({
|
|
|
78
52
|
/**
|
|
79
53
|
* Immutable revision to fetch the plugin from. Must be a full commit SHA:
|
|
80
54
|
* tags and branches are mutable, so allowing them would let an upstream
|
|
81
|
-
* owner retarget a curated entry at code the daemon later `import()`
|
|
55
|
+
* owner retarget a curated entry at code the daemon later `import()` (RCE).
|
|
82
56
|
* A full SHA pins the install to exactly the reviewed bytes.
|
|
83
57
|
*/
|
|
84
58
|
ref: z
|
|
@@ -89,32 +63,7 @@ export const githubSourceSchema = z.object({
|
|
|
89
63
|
),
|
|
90
64
|
});
|
|
91
65
|
|
|
92
|
-
|
|
93
|
-
* A plugin package shipped inside the assistant distribution. The path is a
|
|
94
|
-
* key into the generated bundled-package map, never a path resolved from the
|
|
95
|
-
* current working directory.
|
|
96
|
-
*/
|
|
97
|
-
export const localSourceSchema = z.object({
|
|
98
|
-
source: z.literal("local"),
|
|
99
|
-
path: z
|
|
100
|
-
.string()
|
|
101
|
-
.regex(/^plugins\/[A-Za-z0-9_.-]+(?:\/[A-Za-z0-9_.-]+)+$/)
|
|
102
|
-
.refine(
|
|
103
|
-
(path) =>
|
|
104
|
-
!path
|
|
105
|
-
.split(/[/\\]/)
|
|
106
|
-
.some((segment) => segment === "." || segment === ".."),
|
|
107
|
-
"path must be a clean bundled-package path",
|
|
108
|
-
),
|
|
109
|
-
version: z.string().min(1),
|
|
110
|
-
repo: z.never().optional(),
|
|
111
|
-
ref: z.never().optional(),
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
export const marketplaceSourceSchema = z.discriminatedUnion("source", [
|
|
115
|
-
githubSourceSchema,
|
|
116
|
-
localSourceSchema,
|
|
117
|
-
]);
|
|
66
|
+
export const marketplaceSourceSchema = githubSourceSchema;
|
|
118
67
|
|
|
119
68
|
export const mcpIntegrationSchema = z.object({
|
|
120
69
|
kind: z.literal("mcp"),
|
|
@@ -140,7 +89,7 @@ export const mcpIntegrationSchema = z.object({
|
|
|
140
89
|
oauthProvider: z.string().regex(PLUGIN_NAME_RE).optional(),
|
|
141
90
|
});
|
|
142
91
|
|
|
143
|
-
const marketplaceEntrySchema = z.object({
|
|
92
|
+
export const marketplaceEntrySchema = z.object({
|
|
144
93
|
/** Install name. `assistant plugins install <name>` resolves to this entry. */
|
|
145
94
|
name: z.string().regex(PLUGIN_NAME_RE, "expected a kebab-case install name"),
|
|
146
95
|
source: marketplaceSourceSchema,
|
|
@@ -165,34 +114,6 @@ const marketplaceEntrySchema = z.object({
|
|
|
165
114
|
integration: mcpIntegrationSchema.optional(),
|
|
166
115
|
});
|
|
167
116
|
|
|
168
|
-
const marketplaceManifestBaseSchema = z.object({
|
|
169
|
-
name: z.string(),
|
|
170
|
-
owner: z
|
|
171
|
-
.object({
|
|
172
|
-
name: z.string(),
|
|
173
|
-
url: z.string().optional(),
|
|
174
|
-
email: z.string().optional(),
|
|
175
|
-
})
|
|
176
|
-
.optional(),
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
export const marketplaceManifestSchema = marketplaceManifestBaseSchema.extend({
|
|
180
|
-
plugins: z.array(marketplaceEntrySchema),
|
|
181
|
-
});
|
|
182
|
-
|
|
183
|
-
const fetchedMarketplaceManifestSchema = marketplaceManifestBaseSchema.extend({
|
|
184
|
-
plugins: z.array(z.unknown()),
|
|
185
|
-
});
|
|
186
|
-
|
|
187
|
-
const marketplaceSourceDiscriminatorSchema = z.object({
|
|
188
|
-
source: z.object({ source: z.unknown() }),
|
|
189
|
-
});
|
|
190
|
-
|
|
191
|
-
function readSourceDiscriminator(entry: unknown): unknown {
|
|
192
|
-
const parsed = marketplaceSourceDiscriminatorSchema.safeParse(entry);
|
|
193
|
-
return parsed.success ? parsed.data.source.source : null;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
117
|
/** A single reviewed plugin entry. */
|
|
197
118
|
export type MarketplaceEntry = z.infer<typeof marketplaceEntrySchema>;
|
|
198
119
|
|
|
@@ -207,173 +128,4 @@ export interface ResolvedGitHubPluginSource {
|
|
|
207
128
|
readonly ref: string;
|
|
208
129
|
}
|
|
209
130
|
|
|
210
|
-
|
|
211
|
-
export interface ResolvedLocalPluginSource {
|
|
212
|
-
readonly kind: "local";
|
|
213
|
-
readonly path: string;
|
|
214
|
-
readonly version: string;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
export type ResolvedPluginSource =
|
|
218
|
-
| ResolvedGitHubPluginSource
|
|
219
|
-
| ResolvedLocalPluginSource;
|
|
220
|
-
|
|
221
|
-
/** Options controlling which marketplace revision to read. */
|
|
222
|
-
export interface FetchMarketplaceOptions {
|
|
223
|
-
/** Ref of the canonical repo to read the manifest from. */
|
|
224
|
-
readonly ref: string;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
/** Dependencies injected by the caller. */
|
|
228
|
-
export interface FetchMarketplaceDeps {
|
|
229
|
-
/** HTTP client. Production callers pass `globalThis.fetch.bind(globalThis)`. */
|
|
230
|
-
readonly fetch: FetchLike;
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
/**
|
|
234
|
-
* The manifest could not be read or did not validate. Distinct from "no
|
|
235
|
-
* manifest at this ref" (a missing file is a normal, empty result) — this
|
|
236
|
-
* signals an upstream/parse problem the caller must surface.
|
|
237
|
-
*
|
|
238
|
-
* `transient` distinguishes a retryable upstream hiccup (GitHub rate-limited
|
|
239
|
-
* us or returned a 5xx) from a hard failure (a malformed or invalid manifest).
|
|
240
|
-
* The catalog is the source of truth for installable plugins, so a transient
|
|
241
|
-
* fetch failure should map to a retryable 503 and serve a stale cache, while a
|
|
242
|
-
* hard failure surfaces as a real error.
|
|
243
|
-
*/
|
|
244
|
-
export class MarketplaceFetchError extends Error {
|
|
245
|
-
/** Whether the failure is a retryable upstream hiccup vs a hard error. */
|
|
246
|
-
readonly transient: boolean;
|
|
247
|
-
/** Upstream HTTP status, when the failure originated from a response. */
|
|
248
|
-
readonly status?: number;
|
|
249
|
-
constructor(
|
|
250
|
-
message: string,
|
|
251
|
-
opts?: { transient?: boolean; status?: number },
|
|
252
|
-
) {
|
|
253
|
-
super(message);
|
|
254
|
-
this.name = "MarketplaceFetchError";
|
|
255
|
-
this.transient = opts?.transient ?? false;
|
|
256
|
-
if (opts?.status !== undefined) {
|
|
257
|
-
this.status = opts.status;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
/**
|
|
263
|
-
* Classify an upstream GitHub status as transient (worth retrying) vs hard.
|
|
264
|
-
* A 429 or 5xx is always transient. A 403 is GitHub's unauthenticated
|
|
265
|
-
* rate-limit signal only when the remaining-quota header is exhausted — a 403
|
|
266
|
-
* without it is a genuine authorization failure and stays hard.
|
|
267
|
-
*/
|
|
268
|
-
function isTransientUpstreamStatus(res: Response): boolean {
|
|
269
|
-
if (res.status === 429 || res.status >= 500) {
|
|
270
|
-
return true;
|
|
271
|
-
}
|
|
272
|
-
if (res.status === 403) {
|
|
273
|
-
return res.headers.get("x-ratelimit-remaining") === "0";
|
|
274
|
-
}
|
|
275
|
-
return false;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
/**
|
|
279
|
-
* Fetch and validate the marketplace manifest, returning its plugin entries.
|
|
280
|
-
*
|
|
281
|
-
* A missing manifest (HTTP 404) is treated as an empty whitelist — an empty
|
|
282
|
-
* catalog is a valid state, not an error. Any other HTTP failure, a non-JSON
|
|
283
|
-
* body, or a schema violation throws {@link MarketplaceFetchError}; a
|
|
284
|
-
* rate-limit or 5xx is flagged `transient` so the caller can retry.
|
|
285
|
-
*/
|
|
286
|
-
export async function fetchMarketplaceEntries(
|
|
287
|
-
deps: FetchMarketplaceDeps,
|
|
288
|
-
opts: FetchMarketplaceOptions,
|
|
289
|
-
): Promise<readonly MarketplaceEntry[]> {
|
|
290
|
-
const { ref } = opts;
|
|
291
|
-
const url =
|
|
292
|
-
`https://api.github.com/repos/${MARKETPLACE_SOURCE_OWNER}/${MARKETPLACE_SOURCE_REPO}` +
|
|
293
|
-
`/contents/${MARKETPLACE_FILE_PATH}?ref=${encodeURIComponent(ref)}`;
|
|
294
|
-
|
|
295
|
-
const res = await deps.fetch(url, {
|
|
296
|
-
headers: {
|
|
297
|
-
// Ask for the raw file body rather than the base64-wrapped Contents
|
|
298
|
-
// envelope, so the response text is the manifest JSON directly.
|
|
299
|
-
Accept: "application/vnd.github.raw",
|
|
300
|
-
"User-Agent": USER_AGENT,
|
|
301
|
-
},
|
|
302
|
-
});
|
|
303
|
-
|
|
304
|
-
if (res.status === 404) {
|
|
305
|
-
return [];
|
|
306
|
-
}
|
|
307
|
-
if (!res.ok) {
|
|
308
|
-
throw new MarketplaceFetchError(
|
|
309
|
-
`Marketplace manifest fetch failed for ${MARKETPLACE_FILE_PATH} @ ${ref}: HTTP ${res.status}`,
|
|
310
|
-
{ transient: isTransientUpstreamStatus(res), status: res.status },
|
|
311
|
-
);
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
let json: unknown;
|
|
315
|
-
try {
|
|
316
|
-
json = JSON.parse(await res.text());
|
|
317
|
-
} catch (err) {
|
|
318
|
-
throw new MarketplaceFetchError(
|
|
319
|
-
`Marketplace manifest is not valid JSON: ${
|
|
320
|
-
err instanceof Error ? err.message : String(err)
|
|
321
|
-
}`,
|
|
322
|
-
);
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
const parsed = fetchedMarketplaceManifestSchema.safeParse(json);
|
|
326
|
-
if (!parsed.success) {
|
|
327
|
-
throw new MarketplaceFetchError(
|
|
328
|
-
`Marketplace manifest failed validation: ${parsed.error.message}`,
|
|
329
|
-
);
|
|
330
|
-
}
|
|
331
|
-
const entries: MarketplaceEntry[] = [];
|
|
332
|
-
for (const rawEntry of parsed.data.plugins) {
|
|
333
|
-
const sourceKind = readSourceDiscriminator(rawEntry);
|
|
334
|
-
if (
|
|
335
|
-
typeof sourceKind === "string" &&
|
|
336
|
-
sourceKind !== "github" &&
|
|
337
|
-
sourceKind !== "local"
|
|
338
|
-
) {
|
|
339
|
-
continue;
|
|
340
|
-
}
|
|
341
|
-
const entry = marketplaceEntrySchema.safeParse(rawEntry);
|
|
342
|
-
if (!entry.success) {
|
|
343
|
-
throw new MarketplaceFetchError(
|
|
344
|
-
`Marketplace manifest failed validation: ${entry.error.message}`,
|
|
345
|
-
);
|
|
346
|
-
}
|
|
347
|
-
entries.push(entry.data);
|
|
348
|
-
}
|
|
349
|
-
return entries;
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
/**
|
|
353
|
-
* Resolve a plugin name to its exact source using the supplied marketplace
|
|
354
|
-
* entries. Returns `null` when no entry claims the name.
|
|
355
|
-
*/
|
|
356
|
-
export function resolveMarketplaceSource(
|
|
357
|
-
name: string,
|
|
358
|
-
entries: readonly MarketplaceEntry[],
|
|
359
|
-
): ResolvedPluginSource | null {
|
|
360
|
-
const entry = entries.find((e) => e.name === name);
|
|
361
|
-
if (!entry) {
|
|
362
|
-
return null;
|
|
363
|
-
}
|
|
364
|
-
if (entry.source.source === "local") {
|
|
365
|
-
return {
|
|
366
|
-
kind: "local",
|
|
367
|
-
path: entry.source.path,
|
|
368
|
-
version: entry.source.version,
|
|
369
|
-
};
|
|
370
|
-
}
|
|
371
|
-
const [owner, repo] = entry.source.repo.split("/", 2) as [string, string];
|
|
372
|
-
return {
|
|
373
|
-
kind: "github",
|
|
374
|
-
owner,
|
|
375
|
-
repo,
|
|
376
|
-
path: entry.source.path ?? "",
|
|
377
|
-
ref: entry.source.ref,
|
|
378
|
-
};
|
|
379
|
-
}
|
|
131
|
+
export type ResolvedPluginSource = ResolvedGitHubPluginSource;
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Filtering and projection helpers for the installable plugin catalog.
|
|
3
3
|
*
|
|
4
4
|
* The catalog itself is resolved by {@link ./plugin-catalog-cache}
|
|
5
|
-
* (`getPluginCatalog`), which
|
|
6
|
-
*
|
|
5
|
+
* (`getPluginCatalog`), which fetches it from Cadet Cloud. This module owns
|
|
6
|
+
* the query semantics on top of a resolved
|
|
7
7
|
* catalog: compile a pattern, filter entries by name, and project a raw
|
|
8
8
|
* marketplace entry onto the catalog match shape.
|
|
9
9
|
*
|
|
@@ -24,24 +24,15 @@ export interface SearchPluginsDeps {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
/** Where a catalog match comes from. */
|
|
27
|
-
export type PluginMatchSource =
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
| {
|
|
38
|
-
readonly kind: "local";
|
|
39
|
-
/** Exact package key in the assistant's embedded plugin bundle. */
|
|
40
|
-
readonly path: string;
|
|
41
|
-
readonly version: string;
|
|
42
|
-
readonly repo?: undefined;
|
|
43
|
-
readonly ref?: undefined;
|
|
44
|
-
};
|
|
27
|
+
export type PluginMatchSource = {
|
|
28
|
+
readonly kind: "github";
|
|
29
|
+
/** `owner/repo` of the external plugin repository. */
|
|
30
|
+
readonly repo: string;
|
|
31
|
+
/** Directory within the repo, when the plugin is not at the root. */
|
|
32
|
+
readonly path?: string;
|
|
33
|
+
/** Pinned git ref the plugin is fetched from. */
|
|
34
|
+
readonly ref: string;
|
|
35
|
+
};
|
|
45
36
|
|
|
46
37
|
export interface McpPluginIntegration {
|
|
47
38
|
readonly kind: "mcp";
|
|
@@ -149,29 +140,18 @@ export interface PluginCatalog {
|
|
|
149
140
|
* Project a marketplace entry onto the catalog match shape, building a
|
|
150
141
|
* a source-specific locator for display.
|
|
151
142
|
*
|
|
152
|
-
* Shared by the cloud fetcher
|
|
153
|
-
* project entries identically.
|
|
143
|
+
* Shared by the cloud fetcher so all catalog entries project identically.
|
|
154
144
|
*/
|
|
155
145
|
export function marketplaceMatch(entry: MarketplaceEntry): PluginSearchMatch {
|
|
156
|
-
const source: PluginMatchSource =
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
kind: "local",
|
|
166
|
-
path: entry.source.path,
|
|
167
|
-
version: entry.source.version,
|
|
168
|
-
};
|
|
169
|
-
const locator =
|
|
170
|
-
source.kind === "github"
|
|
171
|
-
? `github:${source.repo}${source.path ? `/${source.path}` : ""}@${
|
|
172
|
-
source.ref
|
|
173
|
-
}`
|
|
174
|
-
: `local:${source.path}@${source.version}`;
|
|
146
|
+
const source: PluginMatchSource = {
|
|
147
|
+
kind: "github",
|
|
148
|
+
repo: entry.source.repo,
|
|
149
|
+
path: entry.source.path,
|
|
150
|
+
ref: entry.source.ref,
|
|
151
|
+
};
|
|
152
|
+
const locator = `github:${source.repo}${
|
|
153
|
+
source.path ? `/${source.path}` : ""
|
|
154
|
+
}@${source.ref}`;
|
|
175
155
|
return {
|
|
176
156
|
name: entry.name,
|
|
177
157
|
path: locator,
|
|
@@ -190,8 +170,8 @@ export function marketplaceMatch(entry: MarketplaceEntry): PluginSearchMatch {
|
|
|
190
170
|
* (first occurrence wins), map via {@link marketplaceMatch}, and return
|
|
191
171
|
* sorted alphabetically by name.
|
|
192
172
|
*
|
|
193
|
-
* Shared by
|
|
194
|
-
*
|
|
173
|
+
* Shared by the cloud fetcher so entries dedupe, project, and order
|
|
174
|
+
* identically.
|
|
195
175
|
*/
|
|
196
176
|
export function projectMarketplaceEntries(
|
|
197
177
|
entries: Iterable<MarketplaceEntry>,
|
|
@@ -18,7 +18,7 @@ import { runShutdownHook } from "../../hooks/hook-loader.js";
|
|
|
18
18
|
import { MESSAGE_KEYS, t } from "../../i18n/index.js";
|
|
19
19
|
import { isPluginDisabled } from "../../plugins/disabled-state.js";
|
|
20
20
|
import { PLUGIN_MCP_MANIFEST } from "../../plugins/mcp-servers.js";
|
|
21
|
-
import { getWorkspacePluginsDir } from "../../util/
|
|
21
|
+
import { getWorkspacePluginsDir } from "../../util/layout.js";
|
|
22
22
|
import {
|
|
23
23
|
InvalidPluginNameError,
|
|
24
24
|
readInstallMeta,
|
|
@@ -49,7 +49,7 @@ import { dirname, join } from "node:path";
|
|
|
49
49
|
|
|
50
50
|
import { runShutdownHook } from "../../hooks/hook-loader.js";
|
|
51
51
|
import { PRESERVED_ENTRIES } from "../../plugins/plugin-tree-walk.js";
|
|
52
|
-
import { getWorkspacePluginsDir } from "../../util/
|
|
52
|
+
import { getWorkspacePluginsDir } from "../../util/layout.js";
|
|
53
53
|
import type { FetchLike } from "./fetch-like.js";
|
|
54
54
|
import {
|
|
55
55
|
fetchCommitDate,
|
|
@@ -64,7 +64,6 @@ import {
|
|
|
64
64
|
finalizeStagedInstall,
|
|
65
65
|
type GitRunner,
|
|
66
66
|
installPlugin,
|
|
67
|
-
type InstallPluginDeps,
|
|
68
67
|
isFullCommitSha,
|
|
69
68
|
materializePluginTree,
|
|
70
69
|
type PluginFetchSource,
|
|
@@ -95,7 +94,6 @@ import {
|
|
|
95
94
|
type PluginUpgradeStrategy,
|
|
96
95
|
} from "./plugin-constants.js";
|
|
97
96
|
import { computeFingerprint, fingerprintsEqual } from "./plugin-fingerprint.js";
|
|
98
|
-
import type { PluginCatalog } from "./search-plugins.js";
|
|
99
97
|
import { PluginNotInstalledError } from "./uninstall-plugin.js";
|
|
100
98
|
|
|
101
99
|
/**
|
|
@@ -169,8 +167,6 @@ export interface UpgradePluginDeps {
|
|
|
169
167
|
* upgrades alike; dry runs and no-ops never stage, so it is not invoked.
|
|
170
168
|
*/
|
|
171
169
|
readonly confirmStaged?: ConfirmStagedInstall;
|
|
172
|
-
readonly materializeLocalPackage?: InstallPluginDeps["materializeLocalPackage"];
|
|
173
|
-
readonly localCatalog?: PluginCatalog;
|
|
174
170
|
}
|
|
175
171
|
|
|
176
172
|
/** Result of an upgrade attempt. */
|
|
@@ -324,7 +320,6 @@ export async function upgradePlugin(
|
|
|
324
320
|
{
|
|
325
321
|
fetch: deps.fetch,
|
|
326
322
|
workspacePluginsDir: deps.workspacePluginsDir,
|
|
327
|
-
localCatalog: deps.localCatalog,
|
|
328
323
|
},
|
|
329
324
|
);
|
|
330
325
|
} catch (err) {
|
|
@@ -381,19 +376,6 @@ export async function upgradePlugin(
|
|
|
381
376
|
const toTimestamp = remote.committedAt;
|
|
382
377
|
const provenanceWasUnknown = inspection.status === "unknown-provenance";
|
|
383
378
|
|
|
384
|
-
const localSource = local.source;
|
|
385
|
-
const sourceChanged =
|
|
386
|
-
remote.kind === "local"
|
|
387
|
-
? localSource?.kind !== "local" || localSource.path !== remote.path
|
|
388
|
-
: localSource?.kind === "local";
|
|
389
|
-
if (sourceChanged) {
|
|
390
|
-
throw new PluginNotUpgradableError(
|
|
391
|
-
name,
|
|
392
|
-
"its marketplace source changed; reinstall explicitly with 'plugins install " +
|
|
393
|
-
`${name} --force' to accept the new source`,
|
|
394
|
-
);
|
|
395
|
-
}
|
|
396
|
-
|
|
397
379
|
if (inspection.status === "up-to-date") {
|
|
398
380
|
return {
|
|
399
381
|
name,
|
|
@@ -414,21 +396,6 @@ export async function upgradePlugin(
|
|
|
414
396
|
|
|
415
397
|
const usesMergeStrategy =
|
|
416
398
|
strategy === "ours" || strategy === "theirs" || strategy === "assistant";
|
|
417
|
-
const canOverwriteCleanBundledInstall =
|
|
418
|
-
remote.kind === "local" &&
|
|
419
|
-
strategy === "theirs" &&
|
|
420
|
-
local.localChanges?.clean === true;
|
|
421
|
-
|
|
422
|
-
if (
|
|
423
|
-
remote.kind === "local" &&
|
|
424
|
-
usesMergeStrategy &&
|
|
425
|
-
!canOverwriteCleanBundledInstall
|
|
426
|
-
) {
|
|
427
|
-
throw new PluginMergeBaselineError(
|
|
428
|
-
name,
|
|
429
|
-
"bundled packages do not retain the previous package version needed for a three-way merge",
|
|
430
|
-
);
|
|
431
|
-
}
|
|
432
399
|
|
|
433
400
|
if (dryRun) {
|
|
434
401
|
return {
|
|
@@ -451,7 +418,7 @@ export async function upgradePlugin(
|
|
|
451
418
|
// `ours`/`theirs`/`assistant` carry local edits forward via a three-way
|
|
452
419
|
// merge; the default `overwrite` discards them and re-installs the pin
|
|
453
420
|
// wholesale.
|
|
454
|
-
if (usesMergeStrategy
|
|
421
|
+
if (usesMergeStrategy) {
|
|
455
422
|
const [remoteOwner, remoteRepo] = remote.repo.split("/");
|
|
456
423
|
return mergeUpgrade(
|
|
457
424
|
{
|
|
@@ -480,19 +447,7 @@ export async function upgradePlugin(
|
|
|
480
447
|
}
|
|
481
448
|
|
|
482
449
|
const result = await installPlugin(
|
|
483
|
-
{
|
|
484
|
-
name,
|
|
485
|
-
force: true,
|
|
486
|
-
...(remote.kind === "local"
|
|
487
|
-
? {
|
|
488
|
-
trustedSource: {
|
|
489
|
-
kind: "local" as const,
|
|
490
|
-
path: remote.path,
|
|
491
|
-
version: remote.version ?? remote.commit,
|
|
492
|
-
},
|
|
493
|
-
}
|
|
494
|
-
: {}),
|
|
495
|
-
},
|
|
450
|
+
{ name, force: true },
|
|
496
451
|
{
|
|
497
452
|
fetch: deps.fetch,
|
|
498
453
|
workspacePluginsDir: deps.workspacePluginsDir,
|
|
@@ -501,7 +456,6 @@ export async function upgradePlugin(
|
|
|
501
456
|
runInstallDeps: deps.runInstallDeps,
|
|
502
457
|
beforeSwap: deps.beforeSwap,
|
|
503
458
|
confirmStaged: deps.confirmStaged,
|
|
504
|
-
materializeLocalPackage: deps.materializeLocalPackage,
|
|
505
459
|
},
|
|
506
460
|
);
|
|
507
461
|
|
package/src/cli/program.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { existsSync } from "node:fs";
|
|
|
3
3
|
import { Command } from "commander";
|
|
4
4
|
|
|
5
5
|
import { initFeatureFlagOverrides } from "../config/assistant-feature-flags.js";
|
|
6
|
-
import { getWorkspaceDir } from "../util/
|
|
6
|
+
import { getWorkspaceDir } from "../util/layout.js";
|
|
7
7
|
import { APP_VERSION } from "../version.js";
|
|
8
8
|
import { registerAppsCommand } from "./commands/apps.js";
|
|
9
9
|
import { registerAttachmentCommand } from "./commands/attachment.js";
|
|
@@ -47,7 +47,6 @@ import { registerSequenceCommand } from "./commands/sequence.js";
|
|
|
47
47
|
import { registerSkillsCommand } from "./commands/skills.js";
|
|
48
48
|
import { registerStatusCommand } from "./commands/status.js";
|
|
49
49
|
import { registerSttCommand } from "./commands/stt.js";
|
|
50
|
-
import { registerTelemetryCommand } from "./commands/telemetry.js";
|
|
51
50
|
import { registerToolsCommand } from "./commands/tools.js";
|
|
52
51
|
import { registerTrustCommand } from "./commands/trust.js";
|
|
53
52
|
import { registerTtsCommand } from "./commands/tts.js";
|
|
@@ -145,7 +144,6 @@ Examples:
|
|
|
145
144
|
registerStatusCommand(program);
|
|
146
145
|
registerSkillsCommand(program);
|
|
147
146
|
registerSttCommand(program);
|
|
148
|
-
registerTelemetryCommand(program);
|
|
149
147
|
registerToolsCommand(program);
|
|
150
148
|
registerTrustCommand(program);
|
|
151
149
|
registerTtsCommand(program);
|
package/src/cli.ts
CHANGED
|
@@ -34,7 +34,7 @@ import {
|
|
|
34
34
|
watchEventStream,
|
|
35
35
|
} from "./signals/event-stream.js";
|
|
36
36
|
import { formatDiff, formatNewFileDiff } from "./util/diff.js";
|
|
37
|
-
import { getHistoryPath, getSignalsDir } from "./util/
|
|
37
|
+
import { getHistoryPath, getSignalsDir } from "./util/layout.js";
|
|
38
38
|
import { Spinner } from "./util/spinner.js";
|
|
39
39
|
import { timeAgo } from "./util/time.js";
|
|
40
40
|
import { truncate } from "./util/truncate.js";
|
package/src/cloud/client.ts
CHANGED
|
@@ -12,7 +12,6 @@ import { resolveCloudProxyContext } from "../providers/cloud-proxy/context.js";
|
|
|
12
12
|
import { credentialKey } from "../security/credential-key.js";
|
|
13
13
|
import { getSecureKeyAsync } from "../security/secure-keys.js";
|
|
14
14
|
import { getLogger } from "../util/logger.js";
|
|
15
|
-
import { areCloudFeaturesEnabled } from "./feature-gate.js";
|
|
16
15
|
|
|
17
16
|
const log = getLogger("cloud-client");
|
|
18
17
|
|
|
@@ -54,11 +53,6 @@ interface CloudClientConfig {
|
|
|
54
53
|
* key). The assistant ID is resolved but not required.
|
|
55
54
|
*/
|
|
56
55
|
async function resolveCloudClientConfig(): Promise<CloudClientConfig | null> {
|
|
57
|
-
if (!areCloudFeaturesEnabled()) {
|
|
58
|
-
log.debug("platform features disabled -- returning null");
|
|
59
|
-
return null;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
56
|
const ctx = await resolveCloudProxyContext();
|
|
63
57
|
|
|
64
58
|
const baseUrl = ctx.enabled ? ctx.cloudBaseUrl : "";
|