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,943 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
const configs = new Map();
|
|
3
|
+
const adapters = new Map();
|
|
4
|
+
const tools = new Map();
|
|
5
|
+
const services = new Map();
|
|
6
|
+
const paths = new Map();
|
|
7
|
+
const featureFlags = new Map();
|
|
8
|
+
const snapshots = new Map();
|
|
9
|
+
const validationHistory = new Map();
|
|
10
|
+
const environmentVariables = new Map();
|
|
11
|
+
/**
|
|
12
|
+
* Get configuration value
|
|
13
|
+
*/
|
|
14
|
+
export function getConfig(key) {
|
|
15
|
+
const config = configs.get(key);
|
|
16
|
+
if (!config) {
|
|
17
|
+
return {
|
|
18
|
+
success: false,
|
|
19
|
+
error: `Configuration key '${key}' not found`,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
success: true,
|
|
24
|
+
data: config,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Set configuration value
|
|
29
|
+
*/
|
|
30
|
+
export function setConfig(key, value, scope = "project", category = "tool", modified_by) {
|
|
31
|
+
const validation = validateConfigValue(key, value);
|
|
32
|
+
if (validation.result === "invalid") {
|
|
33
|
+
return {
|
|
34
|
+
success: false,
|
|
35
|
+
error: validation.message,
|
|
36
|
+
warnings: validation.suggestions,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const config = {
|
|
40
|
+
key,
|
|
41
|
+
value,
|
|
42
|
+
type: typeof value === "object" ? (Array.isArray(value) ? "array" : "object") : typeof value,
|
|
43
|
+
scope,
|
|
44
|
+
category,
|
|
45
|
+
last_modified: new Date().toISOString(),
|
|
46
|
+
modified_by,
|
|
47
|
+
};
|
|
48
|
+
configs.set(key, config);
|
|
49
|
+
return {
|
|
50
|
+
success: true,
|
|
51
|
+
data: config,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* List configurations
|
|
56
|
+
*/
|
|
57
|
+
export function listConfigs(scope, category, limit = 100, offset = 0) {
|
|
58
|
+
let results = Array.from(configs.values());
|
|
59
|
+
if (scope) {
|
|
60
|
+
results = results.filter((c) => c.scope === scope);
|
|
61
|
+
}
|
|
62
|
+
if (category) {
|
|
63
|
+
results = results.filter((c) => c.category === category);
|
|
64
|
+
}
|
|
65
|
+
const total = results.length;
|
|
66
|
+
const paged = results.slice(offset, offset + limit);
|
|
67
|
+
return {
|
|
68
|
+
success: true,
|
|
69
|
+
data: { configs: paged, total },
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Validate configuration value
|
|
74
|
+
*/
|
|
75
|
+
export function validateConfigValue(key, value) {
|
|
76
|
+
const existingConfig = configs.get(key);
|
|
77
|
+
let result = "valid";
|
|
78
|
+
let message = `Configuration '${key}' is valid`;
|
|
79
|
+
const suggestions = [];
|
|
80
|
+
// Type validation
|
|
81
|
+
if (existingConfig && existingConfig.type !== typeof value) {
|
|
82
|
+
if (typeof value === "string" && existingConfig.type === "number") {
|
|
83
|
+
// Allow string to number conversion
|
|
84
|
+
result = "warning";
|
|
85
|
+
message = `Type mismatch: expected ${existingConfig.type}, got ${typeof value}. Will attempt conversion.`;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
result = "invalid";
|
|
89
|
+
message = `Type mismatch: expected ${existingConfig.type}, got ${typeof value}`;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// Pattern validation
|
|
93
|
+
if (existingConfig?.validation_rule && typeof value === "string") {
|
|
94
|
+
const regex = new RegExp(existingConfig.validation_rule);
|
|
95
|
+
if (!regex.test(value)) {
|
|
96
|
+
result = "invalid";
|
|
97
|
+
message = `Value does not match required pattern: ${existingConfig.validation_rule}`;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Range validation
|
|
101
|
+
const configAny = existingConfig;
|
|
102
|
+
if (configAny?.min && typeof value === "number" && value < configAny.min) {
|
|
103
|
+
result = "warning";
|
|
104
|
+
message = `Value ${value} is below minimum ${configAny.min}`;
|
|
105
|
+
}
|
|
106
|
+
if (configAny?.max && typeof value === "number" && value > configAny.max) {
|
|
107
|
+
result = "warning";
|
|
108
|
+
message = `Value ${value} is above maximum ${configAny.max}`;
|
|
109
|
+
}
|
|
110
|
+
const validation = {
|
|
111
|
+
key,
|
|
112
|
+
result,
|
|
113
|
+
message,
|
|
114
|
+
suggestions,
|
|
115
|
+
timestamp: new Date().toISOString(),
|
|
116
|
+
};
|
|
117
|
+
validationHistory.set(`${key}_${Date.now()}`, validation);
|
|
118
|
+
return validation;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Get adapter configuration
|
|
122
|
+
*/
|
|
123
|
+
export function getAdapterConfig(name) {
|
|
124
|
+
const adapter = adapters.get(name);
|
|
125
|
+
if (!adapter) {
|
|
126
|
+
return {
|
|
127
|
+
success: false,
|
|
128
|
+
error: `Adapter '${name}' not found`,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
success: true,
|
|
133
|
+
data: adapter,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* List adapters
|
|
138
|
+
*/
|
|
139
|
+
export function listAdapters() {
|
|
140
|
+
const adapterList = Array.from(adapters.values());
|
|
141
|
+
return {
|
|
142
|
+
success: true,
|
|
143
|
+
data: adapterList,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Configure adapter
|
|
148
|
+
*/
|
|
149
|
+
export function configureAdapter(name, enabled, settings) {
|
|
150
|
+
const existing = adapters.get(name);
|
|
151
|
+
const adapter = {
|
|
152
|
+
name,
|
|
153
|
+
enabled,
|
|
154
|
+
version: existing?.version,
|
|
155
|
+
settings,
|
|
156
|
+
credentials_configured: Object.keys(settings).length > 0,
|
|
157
|
+
health_status: "healthy",
|
|
158
|
+
last_check: new Date().toISOString(),
|
|
159
|
+
};
|
|
160
|
+
adapters.set(name, adapter);
|
|
161
|
+
return {
|
|
162
|
+
success: true,
|
|
163
|
+
data: adapter,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Get tool configuration
|
|
168
|
+
*/
|
|
169
|
+
export function getToolConfig(name) {
|
|
170
|
+
const tool = tools.get(name);
|
|
171
|
+
if (!tool) {
|
|
172
|
+
return {
|
|
173
|
+
success: false,
|
|
174
|
+
error: `Tool '${name}' not found`,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
return {
|
|
178
|
+
success: true,
|
|
179
|
+
data: tool,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* List tools
|
|
184
|
+
*/
|
|
185
|
+
export function listTools() {
|
|
186
|
+
return {
|
|
187
|
+
success: true,
|
|
188
|
+
data: Array.from(tools.values()),
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Get service configuration
|
|
193
|
+
*/
|
|
194
|
+
export function getServiceConfig(name) {
|
|
195
|
+
const service = services.get(name);
|
|
196
|
+
if (!service) {
|
|
197
|
+
return {
|
|
198
|
+
success: false,
|
|
199
|
+
error: `Service '${name}' not found`,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
return {
|
|
203
|
+
success: true,
|
|
204
|
+
data: service,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* List services
|
|
209
|
+
*/
|
|
210
|
+
export function listServices() {
|
|
211
|
+
return {
|
|
212
|
+
success: true,
|
|
213
|
+
data: Array.from(services.values()),
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Configure service
|
|
218
|
+
*/
|
|
219
|
+
export function configureService(name, enabled, endpoint, port) {
|
|
220
|
+
const service = {
|
|
221
|
+
name,
|
|
222
|
+
enabled,
|
|
223
|
+
endpoint,
|
|
224
|
+
port,
|
|
225
|
+
status: enabled ? "running" : "stopped",
|
|
226
|
+
last_status_check: new Date().toISOString(),
|
|
227
|
+
};
|
|
228
|
+
services.set(name, service);
|
|
229
|
+
return {
|
|
230
|
+
success: true,
|
|
231
|
+
data: service,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Get path configuration
|
|
236
|
+
*/
|
|
237
|
+
export function getPathConfig(key) {
|
|
238
|
+
const path = paths.get(key);
|
|
239
|
+
if (!path) {
|
|
240
|
+
return {
|
|
241
|
+
success: false,
|
|
242
|
+
error: `Path '${key}' not found`,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
return {
|
|
246
|
+
success: true,
|
|
247
|
+
data: path,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* List paths
|
|
252
|
+
*/
|
|
253
|
+
export function listPaths() {
|
|
254
|
+
return {
|
|
255
|
+
success: true,
|
|
256
|
+
data: Array.from(paths.values()),
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Set path configuration
|
|
261
|
+
*/
|
|
262
|
+
export function setPathConfig(key, value, type) {
|
|
263
|
+
const path = {
|
|
264
|
+
key,
|
|
265
|
+
value,
|
|
266
|
+
type,
|
|
267
|
+
expandable: value.includes("$") || value.includes("~"),
|
|
268
|
+
must_exist: type !== "temp_dir",
|
|
269
|
+
writable: !["project_root"].includes(type),
|
|
270
|
+
};
|
|
271
|
+
paths.set(key, path);
|
|
272
|
+
return {
|
|
273
|
+
success: true,
|
|
274
|
+
data: path,
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Get feature flag
|
|
279
|
+
*/
|
|
280
|
+
export function getFeatureFlag(name) {
|
|
281
|
+
const flag = featureFlags.get(name);
|
|
282
|
+
if (!flag) {
|
|
283
|
+
return {
|
|
284
|
+
success: false,
|
|
285
|
+
error: `Feature flag '${name}' not found`,
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
return {
|
|
289
|
+
success: true,
|
|
290
|
+
data: flag,
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* List feature flags
|
|
295
|
+
*/
|
|
296
|
+
export function listFeatureFlags() {
|
|
297
|
+
return {
|
|
298
|
+
success: true,
|
|
299
|
+
data: Array.from(featureFlags.values()),
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Toggle feature flag
|
|
304
|
+
*/
|
|
305
|
+
export function toggleFeatureFlag(name, enabled, scope = "project") {
|
|
306
|
+
const existing = featureFlags.get(name) || {
|
|
307
|
+
name,
|
|
308
|
+
enabled: false,
|
|
309
|
+
scope,
|
|
310
|
+
};
|
|
311
|
+
const flag = {
|
|
312
|
+
...existing,
|
|
313
|
+
enabled,
|
|
314
|
+
scope,
|
|
315
|
+
};
|
|
316
|
+
featureFlags.set(name, flag);
|
|
317
|
+
return {
|
|
318
|
+
success: true,
|
|
319
|
+
data: flag,
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Create configuration snapshot
|
|
324
|
+
*/
|
|
325
|
+
export function createConfigSnapshot(created_by, description) {
|
|
326
|
+
const snapshot = {
|
|
327
|
+
id: `snap_${randomUUID()}`,
|
|
328
|
+
timestamp: new Date().toISOString(),
|
|
329
|
+
created_by,
|
|
330
|
+
config_state: Object.fromEntries(configs),
|
|
331
|
+
description,
|
|
332
|
+
};
|
|
333
|
+
snapshots.set(snapshot.id, snapshot);
|
|
334
|
+
return {
|
|
335
|
+
success: true,
|
|
336
|
+
data: snapshot,
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* List configuration snapshots
|
|
341
|
+
*/
|
|
342
|
+
export function listSnapshots(limit = 20, offset = 0) {
|
|
343
|
+
const all = Array.from(snapshots.values()).sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
|
|
344
|
+
const total = all.length;
|
|
345
|
+
const paged = all.slice(offset, offset + limit);
|
|
346
|
+
return {
|
|
347
|
+
success: true,
|
|
348
|
+
data: { snapshots: paged, total },
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Rollback to snapshot
|
|
353
|
+
*/
|
|
354
|
+
export function rollbackToSnapshot(snapshot_id, performed_by) {
|
|
355
|
+
const snapshot = snapshots.get(snapshot_id);
|
|
356
|
+
if (!snapshot) {
|
|
357
|
+
return {
|
|
358
|
+
success: false,
|
|
359
|
+
error: `Snapshot '${snapshot_id}' not found`,
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
const changeCount = configs.size;
|
|
363
|
+
// Restore config state
|
|
364
|
+
configs.clear();
|
|
365
|
+
Object.entries(snapshot.config_state).forEach(([key, value]) => {
|
|
366
|
+
configs.set(key, value);
|
|
367
|
+
});
|
|
368
|
+
const rollback = {
|
|
369
|
+
from_snapshot: snapshots.get(Array.from(snapshots.keys())[0])?.id || "current",
|
|
370
|
+
to_snapshot: snapshot_id,
|
|
371
|
+
changes_reverted: changeCount,
|
|
372
|
+
timestamp: new Date().toISOString(),
|
|
373
|
+
performed_by,
|
|
374
|
+
};
|
|
375
|
+
return {
|
|
376
|
+
success: true,
|
|
377
|
+
data: rollback,
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Check adapter status
|
|
382
|
+
*/
|
|
383
|
+
export function checkAdapterStatus(adapter_name) {
|
|
384
|
+
const adapter = adapters.get(adapter_name);
|
|
385
|
+
if (!adapter) {
|
|
386
|
+
return {
|
|
387
|
+
success: false,
|
|
388
|
+
error: `Adapter '${adapter_name}' not found`,
|
|
389
|
+
};
|
|
390
|
+
}
|
|
391
|
+
const checks = [];
|
|
392
|
+
// Check if installed
|
|
393
|
+
checks.push({
|
|
394
|
+
name: "installation",
|
|
395
|
+
status: adapter.enabled ? "pass" : "fail",
|
|
396
|
+
message: adapter.enabled
|
|
397
|
+
? `${adapter_name} is installed and enabled`
|
|
398
|
+
: `${adapter_name} is not enabled`,
|
|
399
|
+
});
|
|
400
|
+
// Check configuration
|
|
401
|
+
checks.push({
|
|
402
|
+
name: "configuration",
|
|
403
|
+
status: Object.keys(adapter.settings).length > 0 ? "pass" : "warning",
|
|
404
|
+
message: Object.keys(adapter.settings).length > 0
|
|
405
|
+
? `Configuration present (${Object.keys(adapter.settings).length} settings)`
|
|
406
|
+
: "No configuration found",
|
|
407
|
+
});
|
|
408
|
+
// Check credentials
|
|
409
|
+
checks.push({
|
|
410
|
+
name: "credentials",
|
|
411
|
+
status: adapter.credentials_configured ? "pass" : "warning",
|
|
412
|
+
message: adapter.credentials_configured
|
|
413
|
+
? "Credentials are configured"
|
|
414
|
+
: "Credentials not configured",
|
|
415
|
+
});
|
|
416
|
+
// Check health
|
|
417
|
+
checks.push({
|
|
418
|
+
name: "health",
|
|
419
|
+
status: adapter.health_status === "healthy" ? "pass" : adapter.health_status === "warning" ? "warning" : "fail",
|
|
420
|
+
message: `Health status: ${adapter.health_status || "unknown"}`,
|
|
421
|
+
});
|
|
422
|
+
const overallStatus = checks.every((c) => c.status === "pass")
|
|
423
|
+
? "healthy"
|
|
424
|
+
: checks.some((c) => c.status === "fail")
|
|
425
|
+
? "unhealthy"
|
|
426
|
+
: "degraded";
|
|
427
|
+
const result = {
|
|
428
|
+
adapter_name,
|
|
429
|
+
overall_status: overallStatus,
|
|
430
|
+
installed: adapter.enabled,
|
|
431
|
+
configured: Object.keys(adapter.settings).length > 0,
|
|
432
|
+
authenticated: adapter.credentials_configured,
|
|
433
|
+
available: adapter.health_status === "healthy",
|
|
434
|
+
checks,
|
|
435
|
+
last_checked: new Date().toISOString(),
|
|
436
|
+
};
|
|
437
|
+
// Add recommendations
|
|
438
|
+
if (overallStatus !== "healthy") {
|
|
439
|
+
result.recommendations = [];
|
|
440
|
+
if (!adapter.enabled) {
|
|
441
|
+
result.recommendations.push(`Enable ${adapter_name} in configuration`);
|
|
442
|
+
}
|
|
443
|
+
if (!adapter.credentials_configured) {
|
|
444
|
+
result.recommendations.push(`Configure credentials for ${adapter_name}`);
|
|
445
|
+
}
|
|
446
|
+
if (adapter.health_status === "warning" || adapter.health_status === "error") {
|
|
447
|
+
result.recommendations.push(`Check ${adapter_name} health status`);
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
return {
|
|
451
|
+
success: true,
|
|
452
|
+
data: result,
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* Check adapter dependencies
|
|
457
|
+
*/
|
|
458
|
+
export function checkAdapterDependencies(adapter_name) {
|
|
459
|
+
// Simulated dependencies for adapters
|
|
460
|
+
const dependencyMap = {
|
|
461
|
+
stripe: [
|
|
462
|
+
{ name: "node", required: true, installed: true, compatible: true, version: "20.0.0" },
|
|
463
|
+
{ name: "npm", required: true, installed: true, compatible: true, version: "10.0.0" },
|
|
464
|
+
],
|
|
465
|
+
github: [
|
|
466
|
+
{ name: "git", required: true, installed: true, compatible: true, version: "2.40.0" },
|
|
467
|
+
{ name: "curl", required: false, installed: true, compatible: true },
|
|
468
|
+
],
|
|
469
|
+
slack: [
|
|
470
|
+
{ name: "node", required: true, installed: true, compatible: true, version: "20.0.0" },
|
|
471
|
+
],
|
|
472
|
+
};
|
|
473
|
+
const deps = dependencyMap[adapter_name] || [];
|
|
474
|
+
return {
|
|
475
|
+
success: true,
|
|
476
|
+
data: deps,
|
|
477
|
+
};
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* Get adapter health status
|
|
481
|
+
*/
|
|
482
|
+
export function getAdapterHealth(adapter_name) {
|
|
483
|
+
const adapter = adapters.get(adapter_name);
|
|
484
|
+
if (!adapter) {
|
|
485
|
+
return {
|
|
486
|
+
success: false,
|
|
487
|
+
error: `Adapter '${adapter_name}' not found`,
|
|
488
|
+
};
|
|
489
|
+
}
|
|
490
|
+
const health = {
|
|
491
|
+
adapter_name,
|
|
492
|
+
healthy: adapter.health_status === "healthy",
|
|
493
|
+
uptime_seconds: Math.floor(Math.random() * 86400),
|
|
494
|
+
error_count: Math.floor(Math.random() * 5),
|
|
495
|
+
success_count: Math.floor(Math.random() * 100),
|
|
496
|
+
average_response_time_ms: Math.floor(Math.random() * 500) + 50,
|
|
497
|
+
last_checked: adapter.last_check || new Date().toISOString(),
|
|
498
|
+
};
|
|
499
|
+
return {
|
|
500
|
+
success: true,
|
|
501
|
+
data: health,
|
|
502
|
+
};
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* Install adapter
|
|
506
|
+
*/
|
|
507
|
+
export function installAdapter(adapter_name, auto_configure = false, version, installed_by) {
|
|
508
|
+
const existing = adapters.get(adapter_name);
|
|
509
|
+
const result = {
|
|
510
|
+
adapter_name,
|
|
511
|
+
success: true,
|
|
512
|
+
installed: true,
|
|
513
|
+
version: version || existing?.version || "1.0.0",
|
|
514
|
+
configured: false,
|
|
515
|
+
env_vars_set: [],
|
|
516
|
+
setup_required: !auto_configure,
|
|
517
|
+
next_steps: auto_configure
|
|
518
|
+
? []
|
|
519
|
+
: [
|
|
520
|
+
`Run: kit adapter setup ${adapter_name}`,
|
|
521
|
+
`Or set environment variables manually`,
|
|
522
|
+
],
|
|
523
|
+
message: `${adapter_name} adapter installed successfully`,
|
|
524
|
+
timestamp: new Date().toISOString(),
|
|
525
|
+
};
|
|
526
|
+
// Mark adapter as installed
|
|
527
|
+
const adapter = {
|
|
528
|
+
name: adapter_name,
|
|
529
|
+
enabled: true,
|
|
530
|
+
version: result.version,
|
|
531
|
+
settings: {},
|
|
532
|
+
credentials_configured: false,
|
|
533
|
+
health_status: "healthy",
|
|
534
|
+
last_check: new Date().toISOString(),
|
|
535
|
+
};
|
|
536
|
+
adapters.set(adapter_name, adapter);
|
|
537
|
+
if (auto_configure) {
|
|
538
|
+
result.setup_required = false;
|
|
539
|
+
result.message += " and auto-configured";
|
|
540
|
+
}
|
|
541
|
+
return {
|
|
542
|
+
success: true,
|
|
543
|
+
data: result,
|
|
544
|
+
};
|
|
545
|
+
}
|
|
546
|
+
/**
|
|
547
|
+
* Setup adapter automatically
|
|
548
|
+
*/
|
|
549
|
+
export function setupAdapterAuto(adapter_name, env_vars, setup_by) {
|
|
550
|
+
const adapter = adapters.get(adapter_name);
|
|
551
|
+
if (!adapter) {
|
|
552
|
+
return {
|
|
553
|
+
success: false,
|
|
554
|
+
error: `Adapter '${adapter_name}' not found. Install it first.`,
|
|
555
|
+
};
|
|
556
|
+
}
|
|
557
|
+
const vars_set = [];
|
|
558
|
+
// Set environment variables
|
|
559
|
+
Object.entries(env_vars).forEach(([key, value]) => {
|
|
560
|
+
const var_key = `${adapter_name}_${key}`.toUpperCase();
|
|
561
|
+
const envVar = {
|
|
562
|
+
key: var_key,
|
|
563
|
+
value,
|
|
564
|
+
adapter_name,
|
|
565
|
+
required: true,
|
|
566
|
+
set_at: new Date().toISOString(),
|
|
567
|
+
};
|
|
568
|
+
environmentVariables.set(var_key, envVar);
|
|
569
|
+
vars_set.push(var_key);
|
|
570
|
+
});
|
|
571
|
+
// Update adapter config
|
|
572
|
+
adapter.settings = env_vars;
|
|
573
|
+
adapter.credentials_configured = true;
|
|
574
|
+
adapter.last_check = new Date().toISOString();
|
|
575
|
+
const result = {
|
|
576
|
+
adapter_name,
|
|
577
|
+
success: true,
|
|
578
|
+
installed: true,
|
|
579
|
+
version: adapter.version,
|
|
580
|
+
configured: true,
|
|
581
|
+
env_vars_set: vars_set,
|
|
582
|
+
setup_required: false,
|
|
583
|
+
next_steps: [],
|
|
584
|
+
message: `${adapter_name} adapter configured with ${vars_set.length} environment variables`,
|
|
585
|
+
timestamp: new Date().toISOString(),
|
|
586
|
+
};
|
|
587
|
+
return {
|
|
588
|
+
success: true,
|
|
589
|
+
data: result,
|
|
590
|
+
};
|
|
591
|
+
}
|
|
592
|
+
/**
|
|
593
|
+
* Setup adapter interactively
|
|
594
|
+
*/
|
|
595
|
+
export function setupAdapterInteractive(adapter_name, responses, setup_by) {
|
|
596
|
+
const adapter = adapters.get(adapter_name);
|
|
597
|
+
if (!adapter) {
|
|
598
|
+
return {
|
|
599
|
+
success: false,
|
|
600
|
+
error: `Adapter '${adapter_name}' not found. Install it first.`,
|
|
601
|
+
};
|
|
602
|
+
}
|
|
603
|
+
const vars_set = [];
|
|
604
|
+
// Process interactive responses
|
|
605
|
+
Object.entries(responses).forEach(([key, value]) => {
|
|
606
|
+
const var_key = `${adapter_name}_${key}`.toUpperCase();
|
|
607
|
+
const envVar = {
|
|
608
|
+
key: var_key,
|
|
609
|
+
value,
|
|
610
|
+
adapter_name,
|
|
611
|
+
required: true,
|
|
612
|
+
set_at: new Date().toISOString(),
|
|
613
|
+
};
|
|
614
|
+
environmentVariables.set(var_key, envVar);
|
|
615
|
+
vars_set.push(var_key);
|
|
616
|
+
});
|
|
617
|
+
// Update adapter settings
|
|
618
|
+
adapter.settings = responses;
|
|
619
|
+
adapter.credentials_configured = true;
|
|
620
|
+
adapter.last_check = new Date().toISOString();
|
|
621
|
+
const result = {
|
|
622
|
+
adapter_name,
|
|
623
|
+
success: true,
|
|
624
|
+
installed: true,
|
|
625
|
+
version: adapter.version,
|
|
626
|
+
configured: true,
|
|
627
|
+
env_vars_set: vars_set,
|
|
628
|
+
setup_required: false,
|
|
629
|
+
next_steps: [],
|
|
630
|
+
message: `${adapter_name} adapter configured interactively with ${vars_set.length} variables`,
|
|
631
|
+
timestamp: new Date().toISOString(),
|
|
632
|
+
};
|
|
633
|
+
return {
|
|
634
|
+
success: true,
|
|
635
|
+
data: result,
|
|
636
|
+
};
|
|
637
|
+
}
|
|
638
|
+
/**
|
|
639
|
+
* Set environment variable
|
|
640
|
+
*/
|
|
641
|
+
export function setEnvironmentVariable(key, value, adapter_name, required = false, description) {
|
|
642
|
+
const envVar = {
|
|
643
|
+
key,
|
|
644
|
+
value,
|
|
645
|
+
adapter_name,
|
|
646
|
+
required,
|
|
647
|
+
description,
|
|
648
|
+
set_at: new Date().toISOString(),
|
|
649
|
+
};
|
|
650
|
+
environmentVariables.set(key, envVar);
|
|
651
|
+
return {
|
|
652
|
+
success: true,
|
|
653
|
+
data: envVar,
|
|
654
|
+
};
|
|
655
|
+
}
|
|
656
|
+
/**
|
|
657
|
+
* Get environment variables for adapter
|
|
658
|
+
*/
|
|
659
|
+
export function getEnvironmentVariables(adapter_name, required_only = false) {
|
|
660
|
+
let vars = Array.from(environmentVariables.values());
|
|
661
|
+
if (adapter_name) {
|
|
662
|
+
vars = vars.filter((v) => v.adapter_name === adapter_name);
|
|
663
|
+
}
|
|
664
|
+
if (required_only) {
|
|
665
|
+
vars = vars.filter((v) => v.required);
|
|
666
|
+
}
|
|
667
|
+
return {
|
|
668
|
+
success: true,
|
|
669
|
+
data: vars,
|
|
670
|
+
};
|
|
671
|
+
}
|
|
672
|
+
/**
|
|
673
|
+
* Get MCP tool definitions
|
|
674
|
+
*/
|
|
675
|
+
export function getMCPTools() {
|
|
676
|
+
return [
|
|
677
|
+
{
|
|
678
|
+
id: "kit_configure",
|
|
679
|
+
name: "kit_configure",
|
|
680
|
+
description: "Get/set/list/validate kit configuration",
|
|
681
|
+
category: "configuration",
|
|
682
|
+
version: "1.0.0",
|
|
683
|
+
requires_auth: false,
|
|
684
|
+
actions: [
|
|
685
|
+
{
|
|
686
|
+
name: "get",
|
|
687
|
+
description: "Get configuration value by key",
|
|
688
|
+
parameters: [
|
|
689
|
+
{
|
|
690
|
+
name: "key",
|
|
691
|
+
description: "Configuration key",
|
|
692
|
+
type: "string",
|
|
693
|
+
required: true,
|
|
694
|
+
},
|
|
695
|
+
],
|
|
696
|
+
returns: {
|
|
697
|
+
type: "object",
|
|
698
|
+
description: "Configuration value object",
|
|
699
|
+
},
|
|
700
|
+
},
|
|
701
|
+
{
|
|
702
|
+
name: "set",
|
|
703
|
+
description: "Set configuration value",
|
|
704
|
+
parameters: [
|
|
705
|
+
{
|
|
706
|
+
name: "key",
|
|
707
|
+
description: "Configuration key",
|
|
708
|
+
type: "string",
|
|
709
|
+
required: true,
|
|
710
|
+
},
|
|
711
|
+
{
|
|
712
|
+
name: "value",
|
|
713
|
+
description: "Value to set",
|
|
714
|
+
type: "string",
|
|
715
|
+
required: true,
|
|
716
|
+
},
|
|
717
|
+
{
|
|
718
|
+
name: "scope",
|
|
719
|
+
description: "Configuration scope",
|
|
720
|
+
type: "string",
|
|
721
|
+
required: false,
|
|
722
|
+
enum: ["global", "project", "user"],
|
|
723
|
+
},
|
|
724
|
+
],
|
|
725
|
+
returns: {
|
|
726
|
+
type: "object",
|
|
727
|
+
description: "Updated configuration",
|
|
728
|
+
},
|
|
729
|
+
},
|
|
730
|
+
{
|
|
731
|
+
name: "list",
|
|
732
|
+
description: "List configurations",
|
|
733
|
+
parameters: [
|
|
734
|
+
{
|
|
735
|
+
name: "scope",
|
|
736
|
+
description: "Filter by scope",
|
|
737
|
+
type: "string",
|
|
738
|
+
required: false,
|
|
739
|
+
},
|
|
740
|
+
{
|
|
741
|
+
name: "category",
|
|
742
|
+
description: "Filter by category",
|
|
743
|
+
type: "string",
|
|
744
|
+
required: false,
|
|
745
|
+
},
|
|
746
|
+
],
|
|
747
|
+
returns: {
|
|
748
|
+
type: "object",
|
|
749
|
+
description: "Configuration list",
|
|
750
|
+
},
|
|
751
|
+
},
|
|
752
|
+
{
|
|
753
|
+
name: "validate",
|
|
754
|
+
description: "Validate configuration value",
|
|
755
|
+
parameters: [
|
|
756
|
+
{
|
|
757
|
+
name: "key",
|
|
758
|
+
description: "Configuration key",
|
|
759
|
+
type: "string",
|
|
760
|
+
required: true,
|
|
761
|
+
},
|
|
762
|
+
{
|
|
763
|
+
name: "value",
|
|
764
|
+
description: "Value to validate",
|
|
765
|
+
type: "string",
|
|
766
|
+
required: true,
|
|
767
|
+
},
|
|
768
|
+
],
|
|
769
|
+
returns: {
|
|
770
|
+
type: "object",
|
|
771
|
+
description: "Validation result",
|
|
772
|
+
},
|
|
773
|
+
},
|
|
774
|
+
],
|
|
775
|
+
},
|
|
776
|
+
{
|
|
777
|
+
id: "kit_adapter_check",
|
|
778
|
+
name: "kit_adapter_check",
|
|
779
|
+
description: "Check adapter installation, configuration, and authentication status",
|
|
780
|
+
category: "health",
|
|
781
|
+
version: "1.0.0",
|
|
782
|
+
requires_auth: false,
|
|
783
|
+
actions: [
|
|
784
|
+
{
|
|
785
|
+
name: "status",
|
|
786
|
+
description: "Get complete adapter status with all checks",
|
|
787
|
+
parameters: [
|
|
788
|
+
{
|
|
789
|
+
name: "adapter",
|
|
790
|
+
description: "Adapter name",
|
|
791
|
+
type: "string",
|
|
792
|
+
required: true,
|
|
793
|
+
},
|
|
794
|
+
],
|
|
795
|
+
returns: {
|
|
796
|
+
type: "object",
|
|
797
|
+
description: "Adapter status with check results",
|
|
798
|
+
},
|
|
799
|
+
},
|
|
800
|
+
{
|
|
801
|
+
name: "dependencies",
|
|
802
|
+
description: "Check adapter dependencies",
|
|
803
|
+
parameters: [
|
|
804
|
+
{
|
|
805
|
+
name: "adapter",
|
|
806
|
+
description: "Adapter name",
|
|
807
|
+
type: "string",
|
|
808
|
+
required: true,
|
|
809
|
+
},
|
|
810
|
+
],
|
|
811
|
+
returns: {
|
|
812
|
+
type: "array",
|
|
813
|
+
description: "Dependency list",
|
|
814
|
+
},
|
|
815
|
+
},
|
|
816
|
+
{
|
|
817
|
+
name: "health",
|
|
818
|
+
description: "Get adapter health metrics",
|
|
819
|
+
parameters: [
|
|
820
|
+
{
|
|
821
|
+
name: "adapter",
|
|
822
|
+
description: "Adapter name",
|
|
823
|
+
type: "string",
|
|
824
|
+
required: true,
|
|
825
|
+
},
|
|
826
|
+
],
|
|
827
|
+
returns: {
|
|
828
|
+
type: "object",
|
|
829
|
+
description: "Health metrics",
|
|
830
|
+
},
|
|
831
|
+
},
|
|
832
|
+
],
|
|
833
|
+
},
|
|
834
|
+
{
|
|
835
|
+
id: "kit_adapter_install",
|
|
836
|
+
name: "kit_adapter_install",
|
|
837
|
+
description: "Install, configure, and setup kit adapters with auto or interactive configuration",
|
|
838
|
+
category: "installation",
|
|
839
|
+
version: "1.0.0",
|
|
840
|
+
requires_auth: false,
|
|
841
|
+
actions: [
|
|
842
|
+
{
|
|
843
|
+
name: "install",
|
|
844
|
+
description: "Install an adapter",
|
|
845
|
+
parameters: [
|
|
846
|
+
{
|
|
847
|
+
name: "adapter",
|
|
848
|
+
description: "Adapter name",
|
|
849
|
+
type: "string",
|
|
850
|
+
required: true,
|
|
851
|
+
},
|
|
852
|
+
{
|
|
853
|
+
name: "version",
|
|
854
|
+
description: "Adapter version",
|
|
855
|
+
type: "string",
|
|
856
|
+
required: false,
|
|
857
|
+
},
|
|
858
|
+
{
|
|
859
|
+
name: "auto_configure",
|
|
860
|
+
description: "Auto-configure after installation",
|
|
861
|
+
type: "boolean",
|
|
862
|
+
required: false,
|
|
863
|
+
},
|
|
864
|
+
],
|
|
865
|
+
returns: {
|
|
866
|
+
type: "object",
|
|
867
|
+
description: "Installation result",
|
|
868
|
+
},
|
|
869
|
+
},
|
|
870
|
+
{
|
|
871
|
+
name: "setup",
|
|
872
|
+
description: "Setup adapter with environment variables",
|
|
873
|
+
parameters: [
|
|
874
|
+
{
|
|
875
|
+
name: "adapter",
|
|
876
|
+
description: "Adapter name",
|
|
877
|
+
type: "string",
|
|
878
|
+
required: true,
|
|
879
|
+
},
|
|
880
|
+
{
|
|
881
|
+
name: "mode",
|
|
882
|
+
description: "Setup mode",
|
|
883
|
+
type: "string",
|
|
884
|
+
required: true,
|
|
885
|
+
enum: ["auto", "interactive"],
|
|
886
|
+
},
|
|
887
|
+
{
|
|
888
|
+
name: "env_vars",
|
|
889
|
+
description: "Environment variables for auto mode",
|
|
890
|
+
type: "object",
|
|
891
|
+
required: false,
|
|
892
|
+
},
|
|
893
|
+
{
|
|
894
|
+
name: "responses",
|
|
895
|
+
description: "Interactive responses",
|
|
896
|
+
type: "object",
|
|
897
|
+
required: false,
|
|
898
|
+
},
|
|
899
|
+
],
|
|
900
|
+
returns: {
|
|
901
|
+
type: "object",
|
|
902
|
+
description: "Setup result",
|
|
903
|
+
},
|
|
904
|
+
},
|
|
905
|
+
{
|
|
906
|
+
name: "configure",
|
|
907
|
+
description: "Configure environment variables",
|
|
908
|
+
parameters: [
|
|
909
|
+
{
|
|
910
|
+
name: "key",
|
|
911
|
+
description: "Environment variable key",
|
|
912
|
+
type: "string",
|
|
913
|
+
required: true,
|
|
914
|
+
},
|
|
915
|
+
{
|
|
916
|
+
name: "value",
|
|
917
|
+
description: "Environment variable value",
|
|
918
|
+
type: "string",
|
|
919
|
+
required: true,
|
|
920
|
+
},
|
|
921
|
+
{
|
|
922
|
+
name: "adapter",
|
|
923
|
+
description: "Adapter name",
|
|
924
|
+
type: "string",
|
|
925
|
+
required: true,
|
|
926
|
+
},
|
|
927
|
+
{
|
|
928
|
+
name: "required",
|
|
929
|
+
description: "Whether variable is required",
|
|
930
|
+
type: "boolean",
|
|
931
|
+
required: false,
|
|
932
|
+
},
|
|
933
|
+
],
|
|
934
|
+
returns: {
|
|
935
|
+
type: "object",
|
|
936
|
+
description: "Configuration result",
|
|
937
|
+
},
|
|
938
|
+
},
|
|
939
|
+
],
|
|
940
|
+
},
|
|
941
|
+
];
|
|
942
|
+
}
|
|
943
|
+
//# sourceMappingURL=mcp-kit-tools-service.js.map
|