sandstream-kit 1.0.0
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/LICENSE +21 -0
- package/README.md +617 -0
- package/dist/adapters/api-key-adapter.d.ts +35 -0
- package/dist/adapters/api-key-adapter.js +46 -0
- package/dist/adapters/api-key-adapter.js.map +1 -0
- package/dist/adapters/clerk-auth.d.ts +6 -0
- package/dist/adapters/clerk-auth.js +20 -0
- package/dist/adapters/clerk-auth.js.map +1 -0
- package/dist/adapters/cloudflare-r2.d.ts +6 -0
- package/dist/adapters/cloudflare-r2.js +136 -0
- package/dist/adapters/cloudflare-r2.js.map +1 -0
- package/dist/adapters/expo-eas.d.ts +6 -0
- package/dist/adapters/expo-eas.js +129 -0
- package/dist/adapters/expo-eas.js.map +1 -0
- package/dist/adapters/flagsmith-flags.d.ts +5 -0
- package/dist/adapters/flagsmith-flags.js +20 -0
- package/dist/adapters/flagsmith-flags.js.map +1 -0
- package/dist/adapters/flyio-hosting.d.ts +2 -0
- package/dist/adapters/flyio-hosting.js +143 -0
- package/dist/adapters/flyio-hosting.js.map +1 -0
- package/dist/adapters/index.d.ts +6 -0
- package/dist/adapters/index.js +48 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/inngest-background.d.ts +5 -0
- package/dist/adapters/inngest-background.js +19 -0
- package/dist/adapters/inngest-background.js.map +1 -0
- package/dist/adapters/liveblocks-realtime.d.ts +11 -0
- package/dist/adapters/liveblocks-realtime.js +62 -0
- package/dist/adapters/liveblocks-realtime.js.map +1 -0
- package/dist/adapters/loops-email.d.ts +6 -0
- package/dist/adapters/loops-email.js +18 -0
- package/dist/adapters/loops-email.js.map +1 -0
- package/dist/adapters/neon-db.d.ts +10 -0
- package/dist/adapters/neon-db.js +94 -0
- package/dist/adapters/neon-db.js.map +1 -0
- package/dist/adapters/planetscale-db.d.ts +11 -0
- package/dist/adapters/planetscale-db.js +134 -0
- package/dist/adapters/planetscale-db.js.map +1 -0
- package/dist/adapters/posthog-analytics.d.ts +6 -0
- package/dist/adapters/posthog-analytics.js +22 -0
- package/dist/adapters/posthog-analytics.js.map +1 -0
- package/dist/adapters/railway-hosting.d.ts +2 -0
- package/dist/adapters/railway-hosting.js +136 -0
- package/dist/adapters/railway-hosting.js.map +1 -0
- package/dist/adapters/resend-email.d.ts +35 -0
- package/dist/adapters/resend-email.js +109 -0
- package/dist/adapters/resend-email.js.map +1 -0
- package/dist/adapters/searxng-instance.d.ts +6 -0
- package/dist/adapters/searxng-instance.js +240 -0
- package/dist/adapters/searxng-instance.js.map +1 -0
- package/dist/adapters/sentry-monitoring.d.ts +7 -0
- package/dist/adapters/sentry-monitoring.js +27 -0
- package/dist/adapters/sentry-monitoring.js.map +1 -0
- package/dist/adapters/stripe-payments.d.ts +6 -0
- package/dist/adapters/stripe-payments.js +134 -0
- package/dist/adapters/stripe-payments.js.map +1 -0
- package/dist/adapters/supabase-db.d.ts +6 -0
- package/dist/adapters/supabase-db.js +130 -0
- package/dist/adapters/supabase-db.js.map +1 -0
- package/dist/adapters/tinybird-analytics.d.ts +5 -0
- package/dist/adapters/tinybird-analytics.js +20 -0
- package/dist/adapters/tinybird-analytics.js.map +1 -0
- package/dist/adapters/trigger-background.d.ts +6 -0
- package/dist/adapters/trigger-background.js +20 -0
- package/dist/adapters/trigger-background.js.map +1 -0
- package/dist/adapters/types.d.ts +7 -0
- package/dist/adapters/types.js +2 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/adapters/upstash-redis.d.ts +6 -0
- package/dist/adapters/upstash-redis.js +88 -0
- package/dist/adapters/upstash-redis.js.map +1 -0
- package/dist/adapters/vercel-hosting.d.ts +6 -0
- package/dist/adapters/vercel-hosting.js +112 -0
- package/dist/adapters/vercel-hosting.js.map +1 -0
- package/dist/agent-adapter-model.d.ts +108 -0
- package/dist/agent-adapter-model.js +6 -0
- package/dist/agent-adapter-model.js.map +1 -0
- package/dist/agent-adapter-service.d.ts +67 -0
- package/dist/agent-adapter-service.js +299 -0
- package/dist/agent-adapter-service.js.map +1 -0
- package/dist/agent-config.d.ts +56 -0
- package/dist/agent-config.js +129 -0
- package/dist/agent-config.js.map +1 -0
- package/dist/agent-governance-model.d.ts +128 -0
- package/dist/agent-governance-model.js +6 -0
- package/dist/agent-governance-model.js.map +1 -0
- package/dist/agent-governance-service.d.ts +101 -0
- package/dist/agent-governance-service.js +319 -0
- package/dist/agent-governance-service.js.map +1 -0
- package/dist/alert-rules-engine.d.ts +102 -0
- package/dist/alert-rules-engine.js +210 -0
- package/dist/alert-rules-engine.js.map +1 -0
- package/dist/analytics-service.d.ts +126 -0
- package/dist/analytics-service.js +318 -0
- package/dist/analytics-service.js.map +1 -0
- package/dist/analyze.d.ts +19 -0
- package/dist/analyze.js +311 -0
- package/dist/analyze.js.map +1 -0
- package/dist/apm-instrumentor.d.ts +119 -0
- package/dist/apm-instrumentor.js +225 -0
- package/dist/apm-instrumentor.js.map +1 -0
- package/dist/approval-model.d.ts +82 -0
- package/dist/approval-model.js +6 -0
- package/dist/approval-model.js.map +1 -0
- package/dist/approval-service.d.ts +39 -0
- package/dist/approval-service.js +236 -0
- package/dist/approval-service.js.map +1 -0
- package/dist/approval.d.ts +22 -0
- package/dist/approval.js +148 -0
- package/dist/approval.js.map +1 -0
- package/dist/audit-logging-model.d.ts +157 -0
- package/dist/audit-logging-model.js +6 -0
- package/dist/audit-logging-model.js.map +1 -0
- package/dist/audit-logging-service.d.ts +89 -0
- package/dist/audit-logging-service.js +367 -0
- package/dist/audit-logging-service.js.map +1 -0
- package/dist/audit-secrets.d.ts +42 -0
- package/dist/audit-secrets.js +126 -0
- package/dist/audit-secrets.js.map +1 -0
- package/dist/audit.d.ts +43 -0
- package/dist/audit.js +286 -0
- package/dist/audit.js.map +1 -0
- package/dist/author-dashboard.d.ts +84 -0
- package/dist/author-dashboard.js +204 -0
- package/dist/author-dashboard.js.map +1 -0
- package/dist/author-notifications.d.ts +130 -0
- package/dist/author-notifications.js +261 -0
- package/dist/author-notifications.js.map +1 -0
- package/dist/author-verification.d.ts +79 -0
- package/dist/author-verification.js +257 -0
- package/dist/author-verification.js.map +1 -0
- package/dist/autonomous-setup-model.d.ts +117 -0
- package/dist/autonomous-setup-model.js +6 -0
- package/dist/autonomous-setup-model.js.map +1 -0
- package/dist/autonomous-setup-service.d.ts +74 -0
- package/dist/autonomous-setup-service.js +325 -0
- package/dist/autonomous-setup-service.js.map +1 -0
- package/dist/badge-system.d.ts +70 -0
- package/dist/badge-system.js +210 -0
- package/dist/badge-system.js.map +1 -0
- package/dist/baseline.d.ts +34 -0
- package/dist/baseline.js +78 -0
- package/dist/baseline.js.map +1 -0
- package/dist/beta-program-service.d.ts +112 -0
- package/dist/beta-program-service.js +240 -0
- package/dist/beta-program-service.js.map +1 -0
- package/dist/budget.d.ts +34 -0
- package/dist/budget.js +159 -0
- package/dist/budget.js.map +1 -0
- package/dist/bumblebee.d.ts +143 -0
- package/dist/bumblebee.js +384 -0
- package/dist/bumblebee.js.map +1 -0
- package/dist/cache-manager.d.ts +97 -0
- package/dist/cache-manager.js +244 -0
- package/dist/cache-manager.js.map +1 -0
- package/dist/cdn-adapter.d.ts +64 -0
- package/dist/cdn-adapter.js +263 -0
- package/dist/cdn-adapter.js.map +1 -0
- package/dist/certification-workflow-model.d.ts +95 -0
- package/dist/certification-workflow-model.js +6 -0
- package/dist/certification-workflow-model.js.map +1 -0
- package/dist/certification-workflow-service.d.ts +72 -0
- package/dist/certification-workflow-service.js +305 -0
- package/dist/certification-workflow-service.js.map +1 -0
- package/dist/check-design.d.ts +38 -0
- package/dist/check-design.js +256 -0
- package/dist/check-design.js.map +1 -0
- package/dist/check-gitignore.d.ts +39 -0
- package/dist/check-gitignore.js +156 -0
- package/dist/check-gitignore.js.map +1 -0
- package/dist/check-hooks.d.ts +15 -0
- package/dist/check-hooks.js +72 -0
- package/dist/check-hooks.js.map +1 -0
- package/dist/check-lock.d.ts +16 -0
- package/dist/check-lock.js +94 -0
- package/dist/check-lock.js.map +1 -0
- package/dist/check-secrets.d.ts +11 -0
- package/dist/check-secrets.js +320 -0
- package/dist/check-secrets.js.map +1 -0
- package/dist/check-security.d.ts +13 -0
- package/dist/check-security.js +887 -0
- package/dist/check-security.js.map +1 -0
- package/dist/check-services.d.ts +10 -0
- package/dist/check-services.js +44 -0
- package/dist/check-services.js.map +1 -0
- package/dist/check-skills.d.ts +8 -0
- package/dist/check-skills.js +26 -0
- package/dist/check-skills.js.map +1 -0
- package/dist/check-tests.d.ts +43 -0
- package/dist/check-tests.js +175 -0
- package/dist/check-tests.js.map +1 -0
- package/dist/check-tools.d.ts +8 -0
- package/dist/check-tools.js +42 -0
- package/dist/check-tools.js.map +1 -0
- package/dist/check-web-search.d.ts +12 -0
- package/dist/check-web-search.js +168 -0
- package/dist/check-web-search.js.map +1 -0
- package/dist/ci-cd-publisher.d.ts +162 -0
- package/dist/ci-cd-publisher.js +319 -0
- package/dist/ci-cd-publisher.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +4074 -0
- package/dist/cli.js.map +1 -0
- package/dist/clone.d.ts +25 -0
- package/dist/clone.js +73 -0
- package/dist/clone.js.map +1 -0
- package/dist/completions.d.ts +8 -0
- package/dist/completions.js +250 -0
- package/dist/completions.js.map +1 -0
- package/dist/compression-manager.d.ts +107 -0
- package/dist/compression-manager.js +250 -0
- package/dist/compression-manager.js.map +1 -0
- package/dist/config.d.ts +233 -0
- package/dist/config.js +255 -0
- package/dist/config.js.map +1 -0
- package/dist/context.d.ts +38 -0
- package/dist/context.js +86 -0
- package/dist/context.js.map +1 -0
- package/dist/cost-monitor.d.ts +72 -0
- package/dist/cost-monitor.js +218 -0
- package/dist/cost-monitor.js.map +1 -0
- package/dist/create-plugin.d.ts +22 -0
- package/dist/create-plugin.js +266 -0
- package/dist/create-plugin.js.map +1 -0
- package/dist/database.d.ts +123 -0
- package/dist/database.js +354 -0
- package/dist/database.js.map +1 -0
- package/dist/datadog-adapter.d.ts +60 -0
- package/dist/datadog-adapter.js +245 -0
- package/dist/datadog-adapter.js.map +1 -0
- package/dist/doctor.d.ts +15 -0
- package/dist/doctor.js +131 -0
- package/dist/doctor.js.map +1 -0
- package/dist/documentation-generator.d.ts +226 -0
- package/dist/documentation-generator.js +348 -0
- package/dist/documentation-generator.js.map +1 -0
- package/dist/elevation-scopes.d.ts +40 -0
- package/dist/elevation-scopes.js +110 -0
- package/dist/elevation-scopes.js.map +1 -0
- package/dist/elevation.d.ts +102 -0
- package/dist/elevation.js +449 -0
- package/dist/elevation.js.map +1 -0
- package/dist/env-diff.d.ts +27 -0
- package/dist/env-diff.js +104 -0
- package/dist/env-diff.js.map +1 -0
- package/dist/env-inspect.d.ts +28 -0
- package/dist/env-inspect.js +81 -0
- package/dist/env-inspect.js.map +1 -0
- package/dist/env-switch.d.ts +37 -0
- package/dist/env-switch.js +102 -0
- package/dist/env-switch.js.map +1 -0
- package/dist/environment.d.ts +27 -0
- package/dist/environment.js +148 -0
- package/dist/environment.js.map +1 -0
- package/dist/error-tracker.d.ts +92 -0
- package/dist/error-tracker.js +206 -0
- package/dist/error-tracker.js.map +1 -0
- package/dist/escalate.d.ts +11 -0
- package/dist/escalate.js +73 -0
- package/dist/escalate.js.map +1 -0
- package/dist/event-stream.d.ts +81 -0
- package/dist/event-stream.js +161 -0
- package/dist/event-stream.js.map +1 -0
- package/dist/fix.d.ts +42 -0
- package/dist/fix.js +419 -0
- package/dist/fix.js.map +1 -0
- package/dist/governance-middleware.d.ts +22 -0
- package/dist/governance-middleware.js +173 -0
- package/dist/governance-middleware.js.map +1 -0
- package/dist/governance.d.ts +44 -0
- package/dist/governance.js +236 -0
- package/dist/governance.js.map +1 -0
- package/dist/hooks.d.ts +25 -0
- package/dist/hooks.js +281 -0
- package/dist/hooks.js.map +1 -0
- package/dist/id-generator.d.ts +43 -0
- package/dist/id-generator.js +47 -0
- package/dist/id-generator.js.map +1 -0
- package/dist/image-optimizer.d.ts +92 -0
- package/dist/image-optimizer.js +202 -0
- package/dist/image-optimizer.js.map +1 -0
- package/dist/install.d.ts +15 -0
- package/dist/install.js +59 -0
- package/dist/install.js.map +1 -0
- package/dist/lock.d.ts +82 -0
- package/dist/lock.js +264 -0
- package/dist/lock.js.map +1 -0
- package/dist/login.d.ts +23 -0
- package/dist/login.js +132 -0
- package/dist/login.js.map +1 -0
- package/dist/mcp-kit-tools-model.d.ts +195 -0
- package/dist/mcp-kit-tools-model.js +6 -0
- package/dist/mcp-kit-tools-model.js.map +1 -0
- package/dist/mcp-kit-tools-service.d.ts +127 -0
- package/dist/mcp-kit-tools-service.js +943 -0
- package/dist/mcp-kit-tools-service.js.map +1 -0
- package/dist/mcp-orchestrator.d.ts +70 -0
- package/dist/mcp-orchestrator.js +175 -0
- package/dist/mcp-orchestrator.js.map +1 -0
- package/dist/mcp-server.d.ts +3 -0
- package/dist/mcp-server.js +722 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/middleware/rate-limiter.d.ts +74 -0
- package/dist/middleware/rate-limiter.js +342 -0
- package/dist/middleware/rate-limiter.js.map +1 -0
- package/dist/migration-runner.d.ts +66 -0
- package/dist/migration-runner.js +192 -0
- package/dist/migration-runner.js.map +1 -0
- package/dist/migrations.d.ts +25 -0
- package/dist/migrations.js +530 -0
- package/dist/migrations.js.map +1 -0
- package/dist/moderation-system.d.ts +153 -0
- package/dist/moderation-system.js +338 -0
- package/dist/moderation-system.js.map +1 -0
- package/dist/multi-agent-workflow-model.d.ts +125 -0
- package/dist/multi-agent-workflow-model.js +6 -0
- package/dist/multi-agent-workflow-model.js.map +1 -0
- package/dist/multi-agent-workflow-service.d.ts +102 -0
- package/dist/multi-agent-workflow-service.js +452 -0
- package/dist/multi-agent-workflow-service.js.map +1 -0
- package/dist/onepassword.d.ts +75 -0
- package/dist/onepassword.js +140 -0
- package/dist/onepassword.js.map +1 -0
- package/dist/open.d.ts +30 -0
- package/dist/open.js +166 -0
- package/dist/open.js.map +1 -0
- package/dist/output.d.ts +32 -0
- package/dist/output.js +295 -0
- package/dist/output.js.map +1 -0
- package/dist/partner-service.d.ts +101 -0
- package/dist/partner-service.js +191 -0
- package/dist/partner-service.js.map +1 -0
- package/dist/payout-service.d.ts +136 -0
- package/dist/payout-service.js +293 -0
- package/dist/payout-service.js.map +1 -0
- package/dist/pkg.d.ts +30 -0
- package/dist/pkg.js +162 -0
- package/dist/pkg.js.map +1 -0
- package/dist/plugin-loader.d.ts +16 -0
- package/dist/plugin-loader.js +124 -0
- package/dist/plugin-loader.js.map +1 -0
- package/dist/plugin-registry-model.d.ts +133 -0
- package/dist/plugin-registry-model.js +6 -0
- package/dist/plugin-registry-model.js.map +1 -0
- package/dist/plugin-registry-service.d.ts +109 -0
- package/dist/plugin-registry-service.js +361 -0
- package/dist/plugin-registry-service.js.map +1 -0
- package/dist/plugin-registry.d.ts +58 -0
- package/dist/plugin-registry.js +108 -0
- package/dist/plugin-registry.js.map +1 -0
- package/dist/plugin-updates.d.ts +135 -0
- package/dist/plugin-updates.js +326 -0
- package/dist/plugin-updates.js.map +1 -0
- package/dist/plugins-cli.d.ts +7 -0
- package/dist/plugins-cli.js +157 -0
- package/dist/plugins-cli.js.map +1 -0
- package/dist/plugins.d.ts +88 -0
- package/dist/plugins.js +251 -0
- package/dist/plugins.js.map +1 -0
- package/dist/policy.d.ts +66 -0
- package/dist/policy.js +160 -0
- package/dist/policy.js.map +1 -0
- package/dist/post-pull-audit.d.ts +39 -0
- package/dist/post-pull-audit.js +151 -0
- package/dist/post-pull-audit.js.map +1 -0
- package/dist/provision.d.ts +17 -0
- package/dist/provision.js +147 -0
- package/dist/provision.js.map +1 -0
- package/dist/query-optimizer.d.ts +102 -0
- package/dist/query-optimizer.js +199 -0
- package/dist/query-optimizer.js.map +1 -0
- package/dist/read-only-mode.d.ts +46 -0
- package/dist/read-only-mode.js +71 -0
- package/dist/read-only-mode.js.map +1 -0
- package/dist/redis-adapter.d.ts +71 -0
- package/dist/redis-adapter.js +278 -0
- package/dist/redis-adapter.js.map +1 -0
- package/dist/resilience-tests.d.ts +120 -0
- package/dist/resilience-tests.js +293 -0
- package/dist/resilience-tests.js.map +1 -0
- package/dist/revocation.d.ts +22 -0
- package/dist/revocation.js +100 -0
- package/dist/revocation.js.map +1 -0
- package/dist/run.d.ts +21 -0
- package/dist/run.js +80 -0
- package/dist/run.js.map +1 -0
- package/dist/scan-build.d.ts +18 -0
- package/dist/scan-build.js +100 -0
- package/dist/scan-build.js.map +1 -0
- package/dist/scan-plaintext.d.ts +24 -0
- package/dist/scan-plaintext.js +147 -0
- package/dist/scan-plaintext.js.map +1 -0
- package/dist/scan-staged.d.ts +15 -0
- package/dist/scan-staged.js +70 -0
- package/dist/scan-staged.js.map +1 -0
- package/dist/scan-transcripts.d.ts +23 -0
- package/dist/scan-transcripts.js +93 -0
- package/dist/scan-transcripts.js.map +1 -0
- package/dist/secret-backends.d.ts +50 -0
- package/dist/secret-backends.js +510 -0
- package/dist/secret-backends.js.map +1 -0
- package/dist/secret-expiration.d.ts +46 -0
- package/dist/secret-expiration.js +172 -0
- package/dist/secret-expiration.js.map +1 -0
- package/dist/secrets-migrate.d.ts +75 -0
- package/dist/secrets-migrate.js +185 -0
- package/dist/secrets-migrate.js.map +1 -0
- package/dist/secrets-model.d.ts +77 -0
- package/dist/secrets-model.js +6 -0
- package/dist/secrets-model.js.map +1 -0
- package/dist/secrets-onecli.d.ts +65 -0
- package/dist/secrets-onecli.js +113 -0
- package/dist/secrets-onecli.js.map +1 -0
- package/dist/secrets-propagate.d.ts +48 -0
- package/dist/secrets-propagate.js +201 -0
- package/dist/secrets-propagate.js.map +1 -0
- package/dist/secrets-pull.d.ts +34 -0
- package/dist/secrets-pull.js +118 -0
- package/dist/secrets-pull.js.map +1 -0
- package/dist/secrets-purge-history.d.ts +53 -0
- package/dist/secrets-purge-history.js +144 -0
- package/dist/secrets-purge-history.js.map +1 -0
- package/dist/secrets-rotate-cli.d.ts +54 -0
- package/dist/secrets-rotate-cli.js +438 -0
- package/dist/secrets-rotate-cli.js.map +1 -0
- package/dist/secrets-rotate.d.ts +38 -0
- package/dist/secrets-rotate.js +65 -0
- package/dist/secrets-rotate.js.map +1 -0
- package/dist/secrets-service.d.ts +73 -0
- package/dist/secrets-service.js +283 -0
- package/dist/secrets-service.js.map +1 -0
- package/dist/secrets-set.d.ts +25 -0
- package/dist/secrets-set.js +33 -0
- package/dist/secrets-set.js.map +1 -0
- package/dist/secrets-sync.d.ts +21 -0
- package/dist/secrets-sync.js +215 -0
- package/dist/secrets-sync.js.map +1 -0
- package/dist/secrets-validate.d.ts +41 -0
- package/dist/secrets-validate.js +126 -0
- package/dist/secrets-validate.js.map +1 -0
- package/dist/secrets-vault-migrate.d.ts +71 -0
- package/dist/secrets-vault-migrate.js +258 -0
- package/dist/secrets-vault-migrate.js.map +1 -0
- package/dist/secrets.d.ts +16 -0
- package/dist/secrets.js +72 -0
- package/dist/secrets.js.map +1 -0
- package/dist/security-hardening.d.ts +150 -0
- package/dist/security-hardening.js +275 -0
- package/dist/security-hardening.js.map +1 -0
- package/dist/security-policy.d.ts +89 -0
- package/dist/security-policy.js +174 -0
- package/dist/security-policy.js.map +1 -0
- package/dist/security-prescan.d.ts +117 -0
- package/dist/security-prescan.js +566 -0
- package/dist/security-prescan.js.map +1 -0
- package/dist/sentry-adapter.d.ts +49 -0
- package/dist/sentry-adapter.js +227 -0
- package/dist/sentry-adapter.js.map +1 -0
- package/dist/service-adapter.d.ts +94 -0
- package/dist/service-adapter.js +162 -0
- package/dist/service-adapter.js.map +1 -0
- package/dist/skills.d.ts +13 -0
- package/dist/skills.js +17 -0
- package/dist/skills.js.map +1 -0
- package/dist/sla-monitor.d.ts +107 -0
- package/dist/sla-monitor.js +233 -0
- package/dist/sla-monitor.js.map +1 -0
- package/dist/stack-detector.d.ts +12 -0
- package/dist/stack-detector.js +251 -0
- package/dist/stack-detector.js.map +1 -0
- package/dist/team-model.d.ts +58 -0
- package/dist/team-model.js +83 -0
- package/dist/team-model.js.map +1 -0
- package/dist/team-service.d.ts +54 -0
- package/dist/team-service.js +206 -0
- package/dist/team-service.js.map +1 -0
- package/dist/toml-generator.d.ts +8 -0
- package/dist/toml-generator.js +223 -0
- package/dist/toml-generator.js.map +1 -0
- package/dist/triage-sandbox.d.ts +34 -0
- package/dist/triage-sandbox.js +167 -0
- package/dist/triage-sandbox.js.map +1 -0
- package/dist/triage.d.ts +30 -0
- package/dist/triage.js +79 -0
- package/dist/triage.js.map +1 -0
- package/dist/update-check.d.ts +13 -0
- package/dist/update-check.js +91 -0
- package/dist/update-check.js.map +1 -0
- package/dist/utils/colors.d.ts +14 -0
- package/dist/utils/colors.js +15 -0
- package/dist/utils/colors.js.map +1 -0
- package/dist/utils/didYouMean.d.ts +15 -0
- package/dist/utils/didYouMean.js +47 -0
- package/dist/utils/didYouMean.js.map +1 -0
- package/dist/utils/exec.d.ts +21 -0
- package/dist/utils/exec.js +23 -0
- package/dist/utils/exec.js.map +1 -0
- package/dist/utils/execFileNoThrow.d.ts +14 -0
- package/dist/utils/execFileNoThrow.js +29 -0
- package/dist/utils/execFileNoThrow.js.map +1 -0
- package/dist/utils/flags.d.ts +19 -0
- package/dist/utils/flags.js +36 -0
- package/dist/utils/flags.js.map +1 -0
- package/dist/utils/parseCommand.d.ts +16 -0
- package/dist/utils/parseCommand.js +13 -0
- package/dist/utils/parseCommand.js.map +1 -0
- package/dist/utils/prompt.d.ts +13 -0
- package/dist/utils/prompt.js +35 -0
- package/dist/utils/prompt.js.map +1 -0
- package/dist/utils/promptSelect.d.ts +19 -0
- package/dist/utils/promptSelect.js +89 -0
- package/dist/utils/promptSelect.js.map +1 -0
- package/dist/utils/redactSecrets.d.ts +24 -0
- package/dist/utils/redactSecrets.js +134 -0
- package/dist/utils/redactSecrets.js.map +1 -0
- package/dist/validation/dynamic-schema.d.ts +29 -0
- package/dist/validation/dynamic-schema.js +76 -0
- package/dist/validation/dynamic-schema.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `kit plugin <list|search|info|install|scaffold|tags>` — plugin
|
|
3
|
+
* discovery + management CLI dispatch. Extracted from cli.ts
|
|
4
|
+
* (codebase-review follow-up). Registry logic lives in plugins.ts;
|
|
5
|
+
* scaffolding in create-plugin.ts — this module is the argv-facing shell.
|
|
6
|
+
*/
|
|
7
|
+
import { searchPlugins, listPlugins, getPluginInfo, getAllTags, formatPluginForDisplay, isPluginInstalled, installPlugin, } from "./plugins.js";
|
|
8
|
+
import { createPlugin } from "./create-plugin.js";
|
|
9
|
+
import { c } from "./utils/colors.js";
|
|
10
|
+
export async function cmdPlugin() {
|
|
11
|
+
const subcommand = process.argv[3];
|
|
12
|
+
const args = process.argv.slice(4);
|
|
13
|
+
if (!subcommand || subcommand === "--help" || subcommand === "-h") {
|
|
14
|
+
console.log(`${c.bold}kit plugin${c.reset} — discover and manage kit plugins\n`);
|
|
15
|
+
console.log(`${c.bold}Usage:${c.reset}`);
|
|
16
|
+
console.log(` kit plugin list ${c.dim}[--tag TAG]${c.reset} List all available plugins`);
|
|
17
|
+
console.log(` kit plugin search <query> Search for plugins by name/description`);
|
|
18
|
+
console.log(` kit plugin info <name> Show detailed info about a plugin`);
|
|
19
|
+
console.log(` kit plugin install <name> Install a plugin`);
|
|
20
|
+
console.log(` kit plugin scaffold <name> Create a new plugin from template`);
|
|
21
|
+
console.log(` kit plugin tags List all available plugin tags\n`);
|
|
22
|
+
console.log(`${c.dim}Examples:${c.reset}`);
|
|
23
|
+
console.log(` kit plugin search stripe # Search for stripe plugins`);
|
|
24
|
+
console.log(` kit plugin list --tag database # Show all database adapters`);
|
|
25
|
+
console.log(` kit plugin info stripe/payments # Get plugin details`);
|
|
26
|
+
console.log(` kit plugin install stripe/payments # Install a plugin`);
|
|
27
|
+
console.log(` kit plugin scaffold my-service # Create a plugin package`);
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
switch (subcommand) {
|
|
32
|
+
case "list": {
|
|
33
|
+
const tagIndex = args.indexOf("--tag");
|
|
34
|
+
const tag = tagIndex !== -1 ? args[tagIndex + 1] : undefined;
|
|
35
|
+
const plugins = listPlugins(tag);
|
|
36
|
+
if (plugins.length === 0) {
|
|
37
|
+
console.log(`${c.dim}No plugins found${tag ? ` with tag: ${tag}` : ""}${c.reset}`);
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
console.log(`${c.bold}Available Plugins${tag ? ` (${tag})` : ""}${c.reset} — ${plugins.length} found\n`);
|
|
41
|
+
for (const plugin of plugins) {
|
|
42
|
+
console.log(formatPluginForDisplay(plugin));
|
|
43
|
+
}
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
case "search": {
|
|
47
|
+
const query = args.join(" ");
|
|
48
|
+
if (!query) {
|
|
49
|
+
console.error(`${c.red}Error: search query required${c.reset}`);
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
const results = searchPlugins(query);
|
|
53
|
+
if (results.length === 0) {
|
|
54
|
+
console.log(`${c.dim}No plugins found matching: ${query}${c.reset}`);
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
console.log(`${c.bold}Search Results${c.reset} for "${query}" — ${results.length} found\n`);
|
|
58
|
+
for (const plugin of results) {
|
|
59
|
+
console.log(formatPluginForDisplay(plugin));
|
|
60
|
+
}
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
case "info": {
|
|
64
|
+
const name = args[0];
|
|
65
|
+
if (!name) {
|
|
66
|
+
console.error(`${c.red}Error: plugin name required${c.reset}`);
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
const plugin = getPluginInfo(name);
|
|
70
|
+
if (!plugin) {
|
|
71
|
+
console.error(`${c.red}Error: plugin not found: ${name}${c.reset}`);
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
console.log(`${c.bold}Plugin Details${c.reset}\n`);
|
|
75
|
+
console.log(formatPluginForDisplay(plugin, true));
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
case "install": {
|
|
79
|
+
const name = args[0];
|
|
80
|
+
if (!name) {
|
|
81
|
+
console.error(`${c.red}Error: plugin name required${c.reset}`);
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
const plugin = getPluginInfo(name);
|
|
85
|
+
if (!plugin) {
|
|
86
|
+
console.error(`${c.red}Error: plugin not found: ${name}${c.reset}`);
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
const isInstalled = await isPluginInstalled(plugin.package || name);
|
|
90
|
+
if (isInstalled) {
|
|
91
|
+
console.log(`${c.green}✓${c.reset} Plugin already installed: ${name}`);
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
console.log(`${c.dim}Installing ${name}...${c.reset}`);
|
|
95
|
+
const result = await installPlugin(name, plugin);
|
|
96
|
+
if (result.success) {
|
|
97
|
+
console.log(`${c.green}✓${c.reset} ${result.message}`);
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
console.error(`${c.red}✗${c.reset} ${result.message}`);
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
case "tags": {
|
|
106
|
+
const tags = getAllTags();
|
|
107
|
+
console.log(`${c.bold}Available Tags${c.reset} — ${tags.length} categories\n`);
|
|
108
|
+
const columns = 3;
|
|
109
|
+
const maxLen = Math.max(...tags.map((t) => t.length));
|
|
110
|
+
for (let i = 0; i < tags.length; i += columns) {
|
|
111
|
+
const row = tags.slice(i, i + columns);
|
|
112
|
+
console.log(row
|
|
113
|
+
.map((tag) => tag.padEnd(maxLen + 1))
|
|
114
|
+
.join(" "));
|
|
115
|
+
}
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
case "scaffold": {
|
|
119
|
+
const name = args[0];
|
|
120
|
+
if (!name) {
|
|
121
|
+
console.error(`${c.red}Error: plugin name required${c.reset}`);
|
|
122
|
+
console.error(`Usage: kit plugin scaffold <name>`);
|
|
123
|
+
console.error(`Example: kit plugin scaffold my-stripe-adapter`);
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
console.log(`${c.dim}Scaffolding plugin: ${name}...${c.reset}`);
|
|
127
|
+
const result = await createPlugin({
|
|
128
|
+
name,
|
|
129
|
+
cwd: process.cwd(),
|
|
130
|
+
skipInstall: false,
|
|
131
|
+
});
|
|
132
|
+
if (result.success) {
|
|
133
|
+
console.log(`${c.green}✓${c.reset} ${result.message}`);
|
|
134
|
+
console.log(`\n${c.bold}Next steps:${c.reset}`);
|
|
135
|
+
for (const step of result.nextSteps) {
|
|
136
|
+
console.log(` ${step}`);
|
|
137
|
+
}
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
console.error(`${c.red}✗${c.reset} Failed to create plugin`);
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
default:
|
|
146
|
+
console.error(`${c.red}Unknown subcommand: ${subcommand}${c.reset}`);
|
|
147
|
+
console.error(`Run 'kit plugin --help' for usage information.`);
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
catch (err) {
|
|
152
|
+
const error = err;
|
|
153
|
+
console.error(`${c.red}Error: ${error.message}${c.reset}`);
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=plugins-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins-cli.js","sourceRoot":"","sources":["../src/plugins-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin registry and management
|
|
3
|
+
*
|
|
4
|
+
* kit plugins are ServiceAdapter-based packages that can be discovered,
|
|
5
|
+
* installed, and registered in .kit.toml. This module provides:
|
|
6
|
+
* - Plugin registry search and discovery
|
|
7
|
+
* - Plugin installation and configuration
|
|
8
|
+
* - Metadata management
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Plugin metadata as it appears in the registry
|
|
12
|
+
*/
|
|
13
|
+
export interface PluginMetadata {
|
|
14
|
+
/** Unique identifier: provider/service (e.g., "stripe/payments") */
|
|
15
|
+
name: string;
|
|
16
|
+
/** Human-readable description */
|
|
17
|
+
description: string;
|
|
18
|
+
/** Plugin version */
|
|
19
|
+
version: string;
|
|
20
|
+
/** Plugin author */
|
|
21
|
+
author: string;
|
|
22
|
+
/** License SPDX identifier */
|
|
23
|
+
license: string;
|
|
24
|
+
/** Repository URL (for source discovery) */
|
|
25
|
+
repository: string;
|
|
26
|
+
/** npm package name (if published) */
|
|
27
|
+
package?: string;
|
|
28
|
+
/** Minimum kit version required */
|
|
29
|
+
kitVersion: string;
|
|
30
|
+
/** Array of tags for categorization */
|
|
31
|
+
tags: string[];
|
|
32
|
+
/** Date published (ISO 8601) */
|
|
33
|
+
published: string;
|
|
34
|
+
/** Download count in last 30 days */
|
|
35
|
+
downloads?: number;
|
|
36
|
+
/** Average rating (0-5 stars) */
|
|
37
|
+
rating?: number;
|
|
38
|
+
/** Installation instructions / command */
|
|
39
|
+
install: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Plugin registry — centralized list of available plugins
|
|
43
|
+
*/
|
|
44
|
+
export interface PluginRegistry {
|
|
45
|
+
version: string;
|
|
46
|
+
updated: string;
|
|
47
|
+
plugins: PluginMetadata[];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Local default registry embedded in kit
|
|
51
|
+
* This provides a foundation registry of official plugins
|
|
52
|
+
*/
|
|
53
|
+
export declare const DEFAULT_REGISTRY: PluginRegistry;
|
|
54
|
+
/**
|
|
55
|
+
* Search the plugin registry for matching plugins
|
|
56
|
+
*
|
|
57
|
+
* @param query - Search query (name, description, or tags)
|
|
58
|
+
* @param registry - Plugin registry (uses default if not provided)
|
|
59
|
+
* @returns Matching plugins sorted by relevance
|
|
60
|
+
*/
|
|
61
|
+
export declare function searchPlugins(query: string, registry?: PluginRegistry): PluginMetadata[];
|
|
62
|
+
/**
|
|
63
|
+
* List all plugins in the registry, optionally filtered by tag
|
|
64
|
+
*/
|
|
65
|
+
export declare function listPlugins(tag?: string, registry?: PluginRegistry): PluginMetadata[];
|
|
66
|
+
/**
|
|
67
|
+
* Get detailed information about a single plugin
|
|
68
|
+
*/
|
|
69
|
+
export declare function getPluginInfo(name: string, registry?: PluginRegistry): PluginMetadata | null;
|
|
70
|
+
/**
|
|
71
|
+
* Get all unique tags in the registry
|
|
72
|
+
*/
|
|
73
|
+
export declare function getAllTags(registry?: PluginRegistry): string[];
|
|
74
|
+
/**
|
|
75
|
+
* Format a plugin for display in CLI output
|
|
76
|
+
*/
|
|
77
|
+
export declare function formatPluginForDisplay(plugin: PluginMetadata, detailed?: boolean): string;
|
|
78
|
+
/**
|
|
79
|
+
* Check if a plugin is installed by attempting to require/import it
|
|
80
|
+
*/
|
|
81
|
+
export declare function isPluginInstalled(packageName: string): Promise<boolean>;
|
|
82
|
+
/**
|
|
83
|
+
* Install a plugin via npm
|
|
84
|
+
*/
|
|
85
|
+
export declare function installPlugin(pluginName: string, metadata: PluginMetadata): Promise<{
|
|
86
|
+
success: boolean;
|
|
87
|
+
message: string;
|
|
88
|
+
}>;
|
package/dist/plugins.js
ADDED
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin registry and management
|
|
3
|
+
*
|
|
4
|
+
* kit plugins are ServiceAdapter-based packages that can be discovered,
|
|
5
|
+
* installed, and registered in .kit.toml. This module provides:
|
|
6
|
+
* - Plugin registry search and discovery
|
|
7
|
+
* - Plugin installation and configuration
|
|
8
|
+
* - Metadata management
|
|
9
|
+
*/
|
|
10
|
+
import { exec } from "./utils/exec.js";
|
|
11
|
+
/**
|
|
12
|
+
* Local default registry embedded in kit
|
|
13
|
+
* This provides a foundation registry of official plugins
|
|
14
|
+
*/
|
|
15
|
+
export const DEFAULT_REGISTRY = {
|
|
16
|
+
version: "1.0.0",
|
|
17
|
+
updated: new Date().toISOString(),
|
|
18
|
+
plugins: [
|
|
19
|
+
{
|
|
20
|
+
name: "stripe/payments",
|
|
21
|
+
description: "Stripe payment processing and billing adapter",
|
|
22
|
+
version: "1.0.0",
|
|
23
|
+
author: "Sandstream",
|
|
24
|
+
license: "MIT",
|
|
25
|
+
repository: "https://github.com/sandstream/kit-stripe",
|
|
26
|
+
package: "@kit/plugins/stripe",
|
|
27
|
+
kitVersion: ">=0.1.0",
|
|
28
|
+
tags: ["payments", "adapter", "official"],
|
|
29
|
+
published: "2026-04-15T00:00:00Z",
|
|
30
|
+
downloads: 1250,
|
|
31
|
+
rating: 4.8,
|
|
32
|
+
install: "npm install @kit/plugins/stripe",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "supabase/database",
|
|
36
|
+
description: "PostgreSQL database via Supabase with real-time APIs",
|
|
37
|
+
version: "1.0.0",
|
|
38
|
+
author: "Sandstream",
|
|
39
|
+
license: "MIT",
|
|
40
|
+
repository: "https://github.com/sandstream/kit-supabase",
|
|
41
|
+
package: "@kit/plugins/supabase",
|
|
42
|
+
kitVersion: ">=0.1.0",
|
|
43
|
+
tags: ["database", "adapter", "official"],
|
|
44
|
+
published: "2026-04-15T00:00:00Z",
|
|
45
|
+
downloads: 1890,
|
|
46
|
+
rating: 4.9,
|
|
47
|
+
install: "npm install @kit/plugins/supabase",
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: "vercel/hosting",
|
|
51
|
+
description: "Vercel serverless deployment platform",
|
|
52
|
+
version: "1.0.0",
|
|
53
|
+
author: "Sandstream",
|
|
54
|
+
license: "MIT",
|
|
55
|
+
repository: "https://github.com/sandstream/kit-vercel",
|
|
56
|
+
package: "@kit/plugins/vercel",
|
|
57
|
+
kitVersion: ">=0.1.0",
|
|
58
|
+
tags: ["hosting", "adapter", "official"],
|
|
59
|
+
published: "2026-04-15T00:00:00Z",
|
|
60
|
+
downloads: 2340,
|
|
61
|
+
rating: 4.7,
|
|
62
|
+
install: "npm install @kit/plugins/vercel",
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: "railway/hosting",
|
|
66
|
+
description: "Railway infrastructure platform deployment",
|
|
67
|
+
version: "1.0.0",
|
|
68
|
+
author: "Sandstream",
|
|
69
|
+
license: "MIT",
|
|
70
|
+
repository: "https://github.com/sandstream/kit-railway",
|
|
71
|
+
package: "@kit/plugins/railway",
|
|
72
|
+
kitVersion: ">=0.1.0",
|
|
73
|
+
tags: ["hosting", "adapter", "official"],
|
|
74
|
+
published: "2026-04-15T00:00:00Z",
|
|
75
|
+
downloads: 890,
|
|
76
|
+
rating: 4.6,
|
|
77
|
+
install: "npm install @kit/plugins/railway",
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: "flyio/hosting",
|
|
81
|
+
description: "Fly.io container deployment platform",
|
|
82
|
+
version: "1.0.0",
|
|
83
|
+
author: "Sandstream",
|
|
84
|
+
license: "MIT",
|
|
85
|
+
repository: "https://github.com/sandstream/kit-flyio",
|
|
86
|
+
package: "@kit/plugins/flyio",
|
|
87
|
+
kitVersion: ">=0.1.0",
|
|
88
|
+
tags: ["hosting", "adapter", "official"],
|
|
89
|
+
published: "2026-04-15T00:00:00Z",
|
|
90
|
+
downloads: 650,
|
|
91
|
+
rating: 4.5,
|
|
92
|
+
install: "npm install @kit/plugins/flyio",
|
|
93
|
+
},
|
|
94
|
+
],
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Search the plugin registry for matching plugins
|
|
98
|
+
*
|
|
99
|
+
* @param query - Search query (name, description, or tags)
|
|
100
|
+
* @param registry - Plugin registry (uses default if not provided)
|
|
101
|
+
* @returns Matching plugins sorted by relevance
|
|
102
|
+
*/
|
|
103
|
+
export function searchPlugins(query, registry = DEFAULT_REGISTRY) {
|
|
104
|
+
const q = query.toLowerCase();
|
|
105
|
+
return registry.plugins
|
|
106
|
+
.map((plugin) => {
|
|
107
|
+
let score = 0;
|
|
108
|
+
// Exact name match
|
|
109
|
+
if (plugin.name.toLowerCase() === q)
|
|
110
|
+
score += 1000;
|
|
111
|
+
// Name prefix match
|
|
112
|
+
if (plugin.name.toLowerCase().startsWith(q))
|
|
113
|
+
score += 500;
|
|
114
|
+
// Name contains
|
|
115
|
+
if (plugin.name.toLowerCase().includes(q))
|
|
116
|
+
score += 100;
|
|
117
|
+
// Description match
|
|
118
|
+
if (plugin.description.toLowerCase().includes(q))
|
|
119
|
+
score += 50;
|
|
120
|
+
// Tag match
|
|
121
|
+
if (plugin.tags.some((tag) => tag.toLowerCase().includes(q)))
|
|
122
|
+
score += 75;
|
|
123
|
+
return { plugin, score };
|
|
124
|
+
})
|
|
125
|
+
.filter(({ score }) => score > 0)
|
|
126
|
+
.sort((a, b) => {
|
|
127
|
+
// Primary: relevance score
|
|
128
|
+
if (b.score !== a.score)
|
|
129
|
+
return b.score - a.score;
|
|
130
|
+
// Secondary: download count
|
|
131
|
+
return (b.plugin.downloads ?? 0) - (a.plugin.downloads ?? 0);
|
|
132
|
+
})
|
|
133
|
+
.map(({ plugin }) => plugin);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* List all plugins in the registry, optionally filtered by tag
|
|
137
|
+
*/
|
|
138
|
+
export function listPlugins(tag, registry = DEFAULT_REGISTRY) {
|
|
139
|
+
if (!tag) {
|
|
140
|
+
return registry.plugins.sort((a, b) => (b.downloads ?? 0) - (a.downloads ?? 0));
|
|
141
|
+
}
|
|
142
|
+
return registry.plugins
|
|
143
|
+
.filter((plugin) => plugin.tags.includes(tag.toLowerCase()))
|
|
144
|
+
.sort((a, b) => (b.downloads ?? 0) - (a.downloads ?? 0));
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Get detailed information about a single plugin
|
|
148
|
+
*/
|
|
149
|
+
export function getPluginInfo(name, registry = DEFAULT_REGISTRY) {
|
|
150
|
+
const normalized = name.toLowerCase();
|
|
151
|
+
return (registry.plugins.find((p) => p.name.toLowerCase() === normalized) || null);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Get all unique tags in the registry
|
|
155
|
+
*/
|
|
156
|
+
export function getAllTags(registry = DEFAULT_REGISTRY) {
|
|
157
|
+
const tags = new Set();
|
|
158
|
+
for (const plugin of registry.plugins) {
|
|
159
|
+
for (const tag of plugin.tags) {
|
|
160
|
+
tags.add(tag);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return Array.from(tags).sort();
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Format a plugin for display in CLI output
|
|
167
|
+
*/
|
|
168
|
+
export function formatPluginForDisplay(plugin, detailed = false) {
|
|
169
|
+
const lines = [];
|
|
170
|
+
// Header line: name, version, rating
|
|
171
|
+
const ratingStr = plugin.rating
|
|
172
|
+
? ` ${formatStars(plugin.rating)}`
|
|
173
|
+
: "";
|
|
174
|
+
lines.push(` ${plugin.name} ${plugin.version}${ratingStr}`);
|
|
175
|
+
// Description
|
|
176
|
+
lines.push(` ${plugin.description}`);
|
|
177
|
+
if (detailed) {
|
|
178
|
+
// Author and license
|
|
179
|
+
lines.push(` Author: ${plugin.author} | License: ${plugin.license}`);
|
|
180
|
+
// Tags
|
|
181
|
+
if (plugin.tags.length > 0) {
|
|
182
|
+
lines.push(` Tags: ${plugin.tags.join(", ")}`);
|
|
183
|
+
}
|
|
184
|
+
// Downloads
|
|
185
|
+
if (plugin.downloads !== undefined) {
|
|
186
|
+
lines.push(` Downloads: ${plugin.downloads.toLocaleString()} (last 30 days)`);
|
|
187
|
+
}
|
|
188
|
+
// Installation command
|
|
189
|
+
lines.push(` Install: ${plugin.install}`);
|
|
190
|
+
// Repository
|
|
191
|
+
lines.push(` Repository: ${plugin.repository}`);
|
|
192
|
+
}
|
|
193
|
+
return lines.join("\n");
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Format a numeric rating (0-5) as star display
|
|
197
|
+
*/
|
|
198
|
+
function formatStars(rating) {
|
|
199
|
+
const full = Math.floor(rating);
|
|
200
|
+
const half = rating - full >= 0.5 ? 1 : 0;
|
|
201
|
+
const empty = 5 - full - half;
|
|
202
|
+
return "★".repeat(full) + (half ? "◆" : "") + "☆".repeat(empty) + ` ${rating.toFixed(1)}`;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Check if a plugin is installed by attempting to require/import it
|
|
206
|
+
*/
|
|
207
|
+
export async function isPluginInstalled(packageName) {
|
|
208
|
+
try {
|
|
209
|
+
const result = await exec("npm", ["ls", packageName, "--depth=0"], {
|
|
210
|
+
timeout: 5000,
|
|
211
|
+
});
|
|
212
|
+
return result.stdout.includes(packageName);
|
|
213
|
+
}
|
|
214
|
+
catch {
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Install a plugin via npm
|
|
220
|
+
*/
|
|
221
|
+
export async function installPlugin(pluginName, metadata) {
|
|
222
|
+
try {
|
|
223
|
+
// Use npm to install the package
|
|
224
|
+
const packageName = metadata.package || pluginName;
|
|
225
|
+
const cmd = metadata.install;
|
|
226
|
+
// Extract the actual npm install command
|
|
227
|
+
const match = cmd.match(/npm install (.+)/);
|
|
228
|
+
const pkgToInstall = match ? match[1] : packageName;
|
|
229
|
+
const { stderr } = await exec("npm", ["install", pkgToInstall], {
|
|
230
|
+
timeout: 60000,
|
|
231
|
+
});
|
|
232
|
+
if (stderr && stderr.includes("ERR!")) {
|
|
233
|
+
return {
|
|
234
|
+
success: false,
|
|
235
|
+
message: `Installation failed: ${stderr}`,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
return {
|
|
239
|
+
success: true,
|
|
240
|
+
message: `Installed ${pluginName} (${metadata.version})`,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
catch (err) {
|
|
244
|
+
const error = err;
|
|
245
|
+
return {
|
|
246
|
+
success: false,
|
|
247
|
+
message: `Installation error: ${error.message || error.stderr || String(err)}`,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=plugins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"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"}
|
package/dist/policy.d.ts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent-write pre-approval policy.
|
|
3
|
+
*
|
|
4
|
+
* `.kit.toml [policy.agent_writes]` declares which sensitive vendor
|
|
5
|
+
* operations the operator pre-authorizes for this repository. Classifiers
|
|
6
|
+
* and agents read a stable hash of the policy via `KIT_POLICY_HASH` so
|
|
7
|
+
* the in-scope ops can run without per-call human confirmation, while
|
|
8
|
+
* out-of-scope ops still require explicit elevation.
|
|
9
|
+
*
|
|
10
|
+
* Format in .kit.toml:
|
|
11
|
+
*
|
|
12
|
+
* [policy.agent_writes]
|
|
13
|
+
* sentry = ["resolve_issue", "create_release"]
|
|
14
|
+
* supabase = ["rotate_jwt", "list_projects"]
|
|
15
|
+
* vercel = ["env_set", "trigger_deploy"]
|
|
16
|
+
* stripe = [] # all writes still gated
|
|
17
|
+
*
|
|
18
|
+
* [policy]
|
|
19
|
+
* default_mode = "read-only" # force --read-only globally for this repo
|
|
20
|
+
*
|
|
21
|
+
* Runtime contract:
|
|
22
|
+
* 1. At boot, the orchestrator (cli.ts:main) reads `[policy]` from the
|
|
23
|
+
* loaded config, computes a SHA-256 of the canonical JSON, exports
|
|
24
|
+
* `KIT_POLICY_HASH=<hex>` to env so child processes / classifiers
|
|
25
|
+
* see the same identity.
|
|
26
|
+
* 2. Callers that mutate vendor state call `checkPolicy(vendor, op)` —
|
|
27
|
+
* returns true if the op appears in `agent_writes[vendor]`. False
|
|
28
|
+
* means the op is gated and requires elevation.
|
|
29
|
+
* 3. Every policy check emits an audit event with `policy_scope_matched`
|
|
30
|
+
* so the forensic trail covers both grants and denials.
|
|
31
|
+
*
|
|
32
|
+
* This module deliberately does NOT enforce — it just SURFACES. The
|
|
33
|
+
* existing elevation + read-only gates remain authoritative; the policy
|
|
34
|
+
* block is the explicit "operator agreed to this scope" signal that
|
|
35
|
+
* upstream classifiers (Claude Code, etc.) can honor.
|
|
36
|
+
*/
|
|
37
|
+
import type { PolicyConfig } from "./config.js";
|
|
38
|
+
export declare function hashPolicy(policy: PolicyConfig | undefined): string | null;
|
|
39
|
+
/**
|
|
40
|
+
* Computes the policy hash and exports it to env. Called once from main()
|
|
41
|
+
* after config is loaded. Idempotent.
|
|
42
|
+
*/
|
|
43
|
+
export declare function installPolicyHash(policy: PolicyConfig | undefined): void;
|
|
44
|
+
export declare function currentPolicyHash(): string | null;
|
|
45
|
+
export interface PolicyCheckResult {
|
|
46
|
+
/** True when the (vendor, op) pair is explicitly pre-authorized. */
|
|
47
|
+
approved: boolean;
|
|
48
|
+
/** Reason / detail for diagnostics. */
|
|
49
|
+
reason: string;
|
|
50
|
+
/** Policy hash at the time of check, for audit-log correlation. */
|
|
51
|
+
policyHash: string | null;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Check whether `op` against `vendor` is pre-approved by the policy.
|
|
55
|
+
*
|
|
56
|
+
* Returns `{ approved: false }` when the policy is missing, the vendor
|
|
57
|
+
* isn't declared, or the op isn't in the vendor's allow-list. Callers
|
|
58
|
+
* should treat false as "elevation still required" — this is not a
|
|
59
|
+
* substitute for the elevation gate, just an explicit declaration that
|
|
60
|
+
* the OPERATOR consented to this scope at configuration time.
|
|
61
|
+
*/
|
|
62
|
+
export declare function checkPolicy(policy: PolicyConfig | undefined, vendor: string, op: string): Promise<PolicyCheckResult>;
|
|
63
|
+
/**
|
|
64
|
+
* Test-only: reset env var so tests start fresh.
|
|
65
|
+
*/
|
|
66
|
+
export declare function _resetPolicyHashForTests(): void;
|