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,299 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
const adapters = new Map();
|
|
3
|
+
const capabilities = new Map();
|
|
4
|
+
const introspections = new Map();
|
|
5
|
+
const automations = new Map();
|
|
6
|
+
const collaborations = new Map();
|
|
7
|
+
// Predefined agent profiles
|
|
8
|
+
const AGENT_PROFILES = {
|
|
9
|
+
claude: {
|
|
10
|
+
id: `profile_claude_${randomUUID()}`,
|
|
11
|
+
agent_type: "claude",
|
|
12
|
+
version: "4.5",
|
|
13
|
+
name: "Claude AI",
|
|
14
|
+
description: "Claude LLM with extended file access and debugging capabilities",
|
|
15
|
+
capabilities: [
|
|
16
|
+
"file_read",
|
|
17
|
+
"file_write",
|
|
18
|
+
"code_execution",
|
|
19
|
+
"debugging",
|
|
20
|
+
"testing",
|
|
21
|
+
"ai_collaboration",
|
|
22
|
+
"context_management",
|
|
23
|
+
],
|
|
24
|
+
config_required: ["api_key"],
|
|
25
|
+
optional_config: ["model", "max_tokens", "temperature"],
|
|
26
|
+
installation_method: "cli",
|
|
27
|
+
homepage: "https://claude.ai",
|
|
28
|
+
documentation: "https://docs.anthropic.com",
|
|
29
|
+
created_at: new Date().toISOString(),
|
|
30
|
+
updated_at: new Date().toISOString(),
|
|
31
|
+
},
|
|
32
|
+
cursor: {
|
|
33
|
+
id: `profile_cursor_${randomUUID()}`,
|
|
34
|
+
agent_type: "cursor",
|
|
35
|
+
version: "0.40",
|
|
36
|
+
name: "Cursor Editor",
|
|
37
|
+
description: "Cursor IDE with AI-powered code editing and workspace awareness",
|
|
38
|
+
capabilities: [
|
|
39
|
+
"file_read",
|
|
40
|
+
"file_write",
|
|
41
|
+
"code_execution",
|
|
42
|
+
"git_integration",
|
|
43
|
+
"debugging",
|
|
44
|
+
"testing",
|
|
45
|
+
"workspace_awareness",
|
|
46
|
+
"ai_collaboration",
|
|
47
|
+
],
|
|
48
|
+
config_required: ["editor_path", "project_root"],
|
|
49
|
+
optional_config: ["git_branch", "excluded_paths"],
|
|
50
|
+
installation_method: "extension",
|
|
51
|
+
homepage: "https://cursor.sh",
|
|
52
|
+
documentation: "https://cursor.sh/docs",
|
|
53
|
+
created_at: new Date().toISOString(),
|
|
54
|
+
updated_at: new Date().toISOString(),
|
|
55
|
+
},
|
|
56
|
+
cline: {
|
|
57
|
+
id: `profile_cline_${randomUUID()}`,
|
|
58
|
+
agent_type: "cline",
|
|
59
|
+
version: "2.0",
|
|
60
|
+
name: "Cline AI Assistant",
|
|
61
|
+
description: "Cline with autonomous task execution and terminal access",
|
|
62
|
+
capabilities: [
|
|
63
|
+
"file_read",
|
|
64
|
+
"file_write",
|
|
65
|
+
"code_execution",
|
|
66
|
+
"terminal_access",
|
|
67
|
+
"git_integration",
|
|
68
|
+
"testing",
|
|
69
|
+
],
|
|
70
|
+
config_required: ["agent_key"],
|
|
71
|
+
optional_config: ["allowed_commands", "max_execution_time"],
|
|
72
|
+
installation_method: "cli",
|
|
73
|
+
homepage: "https://cline.dev",
|
|
74
|
+
documentation: "https://cline.dev/docs",
|
|
75
|
+
created_at: new Date().toISOString(),
|
|
76
|
+
updated_at: new Date().toISOString(),
|
|
77
|
+
},
|
|
78
|
+
generic: {
|
|
79
|
+
id: `profile_generic_${randomUUID()}`,
|
|
80
|
+
agent_type: "generic",
|
|
81
|
+
version: "1.0",
|
|
82
|
+
name: "Generic Agent",
|
|
83
|
+
description: "Generic adapter for custom agents",
|
|
84
|
+
capabilities: ["file_read", "ai_collaboration", "context_management"],
|
|
85
|
+
config_required: ["agent_id"],
|
|
86
|
+
optional_config: ["custom_config"],
|
|
87
|
+
installation_method: "manual",
|
|
88
|
+
created_at: new Date().toISOString(),
|
|
89
|
+
updated_at: new Date().toISOString(),
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Register agent adapter for team
|
|
94
|
+
*/
|
|
95
|
+
export function registerAgentAdapter(team_id, agent_type, config) {
|
|
96
|
+
const profile = AGENT_PROFILES[agent_type];
|
|
97
|
+
if (!profile) {
|
|
98
|
+
return { adapter: {}, error: `Unknown agent type: ${agent_type}` };
|
|
99
|
+
}
|
|
100
|
+
// Validate required config
|
|
101
|
+
const missing = profile.config_required.filter((key) => !(key in config));
|
|
102
|
+
if (missing.length > 0) {
|
|
103
|
+
return {
|
|
104
|
+
adapter: {},
|
|
105
|
+
error: `Missing required config: ${missing.join(", ")}`,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
const adapter = {
|
|
109
|
+
id: `adapter_${randomUUID()}`,
|
|
110
|
+
team_id,
|
|
111
|
+
agent_type,
|
|
112
|
+
agent_profile_id: profile.id,
|
|
113
|
+
status: "installed",
|
|
114
|
+
version: profile.version,
|
|
115
|
+
installed_at: new Date().toISOString(),
|
|
116
|
+
config,
|
|
117
|
+
enabled_capabilities: profile.capabilities,
|
|
118
|
+
disabled_capabilities: [],
|
|
119
|
+
health_status: "healthy",
|
|
120
|
+
last_health_check: new Date().toISOString(),
|
|
121
|
+
created_at: new Date().toISOString(),
|
|
122
|
+
updated_at: new Date().toISOString(),
|
|
123
|
+
};
|
|
124
|
+
adapters.set(adapter.id, adapter);
|
|
125
|
+
// Create capability records
|
|
126
|
+
for (const cap of profile.capabilities) {
|
|
127
|
+
const capability = {
|
|
128
|
+
id: `cap_${randomUUID()}`,
|
|
129
|
+
adapter_id: adapter.id,
|
|
130
|
+
team_id,
|
|
131
|
+
capability_type: cap,
|
|
132
|
+
enabled: true,
|
|
133
|
+
required_config: {},
|
|
134
|
+
permissions_required: [],
|
|
135
|
+
usage_count: 0,
|
|
136
|
+
created_at: new Date().toISOString(),
|
|
137
|
+
updated_at: new Date().toISOString(),
|
|
138
|
+
};
|
|
139
|
+
capabilities.set(capability.id, capability);
|
|
140
|
+
}
|
|
141
|
+
return { adapter };
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get agent adapter status
|
|
145
|
+
*/
|
|
146
|
+
export function getAdapterStatus(team_id, adapter_id) {
|
|
147
|
+
const adapter = adapters.get(adapter_id);
|
|
148
|
+
if (!adapter || adapter.team_id !== team_id) {
|
|
149
|
+
return { adapter: null, error: "Adapter not found" };
|
|
150
|
+
}
|
|
151
|
+
return { adapter };
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Check agent capabilities
|
|
155
|
+
*/
|
|
156
|
+
export function checkCapabilities(team_id, adapter_id) {
|
|
157
|
+
const teamCaps = Array.from(capabilities.values()).filter((c) => c.adapter_id === adapter_id && c.team_id === team_id);
|
|
158
|
+
const enabledCount = teamCaps.filter((c) => c.enabled).length;
|
|
159
|
+
const coverage = teamCaps.length > 0 ? (enabledCount / teamCaps.length) * 100 : 0;
|
|
160
|
+
return { capabilities: teamCaps, coverage_percent: Math.round(coverage) };
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Enable/disable capability
|
|
164
|
+
*/
|
|
165
|
+
export function toggleCapability(team_id, capability_id, enabled) {
|
|
166
|
+
const capability = capabilities.get(capability_id);
|
|
167
|
+
if (!capability || capability.team_id !== team_id) {
|
|
168
|
+
return { capability: {}, error: "Capability not found" };
|
|
169
|
+
}
|
|
170
|
+
capability.enabled = enabled;
|
|
171
|
+
capability.updated_at = new Date().toISOString();
|
|
172
|
+
return { capability };
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Introspect agent state
|
|
176
|
+
*/
|
|
177
|
+
export function introspectAgent(team_id, adapter_id, introspection_type) {
|
|
178
|
+
const adapter = adapters.get(adapter_id);
|
|
179
|
+
if (!adapter || adapter.team_id !== team_id) {
|
|
180
|
+
return { introspection: {}, error: "Adapter not found" };
|
|
181
|
+
}
|
|
182
|
+
const introspection = {
|
|
183
|
+
id: `intro_${randomUUID()}`,
|
|
184
|
+
team_id,
|
|
185
|
+
adapter_id,
|
|
186
|
+
introspection_type: introspection_type,
|
|
187
|
+
data: {
|
|
188
|
+
agent_type: adapter.agent_type,
|
|
189
|
+
status: adapter.status,
|
|
190
|
+
health: adapter.health_status,
|
|
191
|
+
capabilities_enabled: adapter.enabled_capabilities.length,
|
|
192
|
+
config_keys: Object.keys(adapter.config),
|
|
193
|
+
},
|
|
194
|
+
timestamp: new Date().toISOString(),
|
|
195
|
+
ttl_seconds: 300,
|
|
196
|
+
};
|
|
197
|
+
introspections.set(introspection.id, introspection);
|
|
198
|
+
return { introspection };
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Create agent automation
|
|
202
|
+
*/
|
|
203
|
+
export function createAutomation(team_id, adapter_id, automation_name, trigger, actions) {
|
|
204
|
+
const adapter = adapters.get(adapter_id);
|
|
205
|
+
if (!adapter || adapter.team_id !== team_id) {
|
|
206
|
+
return { automation: {}, error: "Adapter not found" };
|
|
207
|
+
}
|
|
208
|
+
const automation = {
|
|
209
|
+
id: `auto_${randomUUID()}`,
|
|
210
|
+
team_id,
|
|
211
|
+
adapter_id,
|
|
212
|
+
automation_name,
|
|
213
|
+
trigger,
|
|
214
|
+
actions,
|
|
215
|
+
enabled: true,
|
|
216
|
+
run_count: 0,
|
|
217
|
+
error_count: 0,
|
|
218
|
+
created_at: new Date().toISOString(),
|
|
219
|
+
updated_at: new Date().toISOString(),
|
|
220
|
+
};
|
|
221
|
+
automations.set(automation.id, automation);
|
|
222
|
+
return { automation };
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Setup agent collaboration
|
|
226
|
+
*/
|
|
227
|
+
export function setupCollaboration(team_id, agent_adapter_ids, collaboration_mode, shared_context) {
|
|
228
|
+
// Validate all adapters exist
|
|
229
|
+
const adaptersExist = agent_adapter_ids.every((id) => {
|
|
230
|
+
const a = adapters.get(id);
|
|
231
|
+
return a && a.team_id === team_id;
|
|
232
|
+
});
|
|
233
|
+
if (!adaptersExist) {
|
|
234
|
+
return { collaboration: {}, error: "Some adapters not found" };
|
|
235
|
+
}
|
|
236
|
+
const collaboration = {
|
|
237
|
+
id: `collab_${randomUUID()}`,
|
|
238
|
+
team_id,
|
|
239
|
+
collaboration_id: `collab_${randomUUID()}`,
|
|
240
|
+
agents: agent_adapter_ids.map((adapter_id, idx) => {
|
|
241
|
+
const a = adapters.get(adapter_id);
|
|
242
|
+
return {
|
|
243
|
+
adapter_id,
|
|
244
|
+
agent_type: a.agent_type,
|
|
245
|
+
role: idx === 0 ? "primary" : idx === agent_adapter_ids.length - 1 ? "observer" : "secondary",
|
|
246
|
+
};
|
|
247
|
+
}),
|
|
248
|
+
mode: collaboration_mode,
|
|
249
|
+
shared_context: shared_context || {},
|
|
250
|
+
status: "active",
|
|
251
|
+
created_at: new Date().toISOString(),
|
|
252
|
+
updated_at: new Date().toISOString(),
|
|
253
|
+
};
|
|
254
|
+
collaborations.set(collaboration.id, collaboration);
|
|
255
|
+
return { collaboration };
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Get agent metrics
|
|
259
|
+
*/
|
|
260
|
+
export function getAdapterMetrics(team_id, adapter_id) {
|
|
261
|
+
const adapter = adapters.get(adapter_id) || {};
|
|
262
|
+
const teamCaps = Array.from(capabilities.values()).filter((c) => c.adapter_id === adapter_id && c.team_id === team_id);
|
|
263
|
+
const enabledCaps = teamCaps.filter((c) => c.enabled).length;
|
|
264
|
+
const teamAutomations = Array.from(automations.values()).filter((a) => a.adapter_id === adapter_id && a.team_id === team_id);
|
|
265
|
+
const activeAutomations = teamAutomations.filter((a) => a.enabled).length;
|
|
266
|
+
const teamCollaborations = Array.from(collaborations.values()).filter((c) => c.team_id === team_id && c.agents.some((a) => a.adapter_id === adapter_id));
|
|
267
|
+
const activeCollaborations = teamCollaborations.filter((c) => c.status === "active").length;
|
|
268
|
+
return {
|
|
269
|
+
adapter_id,
|
|
270
|
+
agent_type: adapter.agent_type || "generic",
|
|
271
|
+
health_score: adapter.health_status === "healthy" ? 95 : adapter.health_status === "degraded" ? 60 : 20,
|
|
272
|
+
uptime_percent: 99.5,
|
|
273
|
+
capability_coverage: teamCaps.length > 0 ? Math.round((enabledCaps / teamCaps.length) * 100) : 0,
|
|
274
|
+
average_latency_ms: 150,
|
|
275
|
+
error_rate_percent: 0.5,
|
|
276
|
+
last_activity: adapter.updated_at || new Date().toISOString(),
|
|
277
|
+
collaborations_active: activeCollaborations,
|
|
278
|
+
automations_active: activeAutomations,
|
|
279
|
+
operations_today: 42,
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* List team agents
|
|
284
|
+
*/
|
|
285
|
+
export function listTeamAdapters(team_id) {
|
|
286
|
+
const teamAdapters = Array.from(adapters.values()).filter((a) => a.team_id === team_id);
|
|
287
|
+
return { adapters: teamAdapters };
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Get collaboration status
|
|
291
|
+
*/
|
|
292
|
+
export function getCollaborationStatus(team_id, collaboration_id) {
|
|
293
|
+
const collab = collaborations.get(collaboration_id);
|
|
294
|
+
if (!collab || collab.team_id !== team_id) {
|
|
295
|
+
return { collaboration: null, error: "Collaboration not found" };
|
|
296
|
+
}
|
|
297
|
+
return { collaboration: collab };
|
|
298
|
+
}
|
|
299
|
+
//# sourceMappingURL=agent-adapter-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-adapter-service.js","sourceRoot":"","sources":["../src/agent-adapter-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Teach the coding agent to use kit.
|
|
3
|
+
*
|
|
4
|
+
* `kit setup` only writes `.kit.toml` — it does not tell Claude Code / Codex /
|
|
5
|
+
* Cursor / Cline to actually *run* kit. This module injects a small, managed
|
|
6
|
+
* instruction block into the agent's rules file so the agent runs `kit check`,
|
|
7
|
+
* triages dependencies before install, and resolves secrets via the vault.
|
|
8
|
+
*
|
|
9
|
+
* Safety: this only writes plain text the agent reads — it never registers an
|
|
10
|
+
* executable hook (that's a separate, more invasive opt-in). The block is
|
|
11
|
+
* delimited by BEGIN/END markers and is idempotent: re-running updates the
|
|
12
|
+
* block in place and never touches anything outside the markers.
|
|
13
|
+
*/
|
|
14
|
+
export declare const KIT_BLOCK_BEGIN = "<!-- BEGIN kit (managed block \u2014 edit outside the markers, not inside) -->";
|
|
15
|
+
export declare const KIT_BLOCK_END = "<!-- END kit -->";
|
|
16
|
+
/** The canonical "use kit" instruction. Kept short on purpose — agents read it
|
|
17
|
+
* every turn, so it states the rules, not the rationale. */
|
|
18
|
+
export declare const KIT_INSTRUCTION = "## kit\n\nThis project uses [kit](https://github.com/sandstream/kit) to manage tools, secrets, and environment setup. As the agent working here:\n\n- Run `kit check` before starting; if it reports `fail`, run `kit fix` then re-check.\n- Before installing ANY dependency, run `kit triage npm|pip|docker|repo <target>` and only install if it passes.\n- Never write secrets to `.env*` in plaintext \u2014 resolve them with `kit secrets` (vault-backed).\n- After a batch of edits, run `kit check --category security`; halt and surface findings on `fail`.\n- Destructive secret ops require `kit auth elevate` first.";
|
|
19
|
+
export interface AgentTarget {
|
|
20
|
+
/** Agent/tool name for display. */
|
|
21
|
+
agent: string;
|
|
22
|
+
/** Rules file, relative to project root. */
|
|
23
|
+
file: string;
|
|
24
|
+
}
|
|
25
|
+
/** Rules file per agent. CLAUDE.md / AGENTS.md are the common cross-tool ones;
|
|
26
|
+
* Cursor and Cline read their own dotfiles. */
|
|
27
|
+
export declare const AGENT_TARGETS: AgentTarget[];
|
|
28
|
+
/**
|
|
29
|
+
* Which agents look present in this project. Presence = the rules file already
|
|
30
|
+
* exists OR a tool-specific marker dir/file is there. When nothing matches we
|
|
31
|
+
* fall back to the two portable defaults (CLAUDE.md + AGENTS.md) so a fresh
|
|
32
|
+
* project still gets wired.
|
|
33
|
+
*/
|
|
34
|
+
export declare function detectAgentTargets(cwd?: string): AgentTarget[];
|
|
35
|
+
/**
|
|
36
|
+
* Insert or update the managed kit block in `content`. Pure string transform —
|
|
37
|
+
* no I/O — so it's trivially testable.
|
|
38
|
+
*
|
|
39
|
+
* - No existing block → append (with a blank-line separator if the file is non-empty).
|
|
40
|
+
* - Existing block → replace just the marker-delimited region, preserving everything else.
|
|
41
|
+
*/
|
|
42
|
+
export declare function upsertKitBlock(content: string): {
|
|
43
|
+
next: string;
|
|
44
|
+
action: "created" | "updated" | "unchanged";
|
|
45
|
+
};
|
|
46
|
+
export interface AgentConfigResult {
|
|
47
|
+
agent: string;
|
|
48
|
+
file: string;
|
|
49
|
+
action: "created" | "updated" | "unchanged" | "failed";
|
|
50
|
+
detail: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Write the managed kit block into each detected agent's rules file.
|
|
54
|
+
* Read-only mode refuses + audits before any write.
|
|
55
|
+
*/
|
|
56
|
+
export declare function writeAgentConfig(cwd?: string, targets?: AgentTarget[]): Promise<AgentConfigResult[]>;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { resolve } from "node:path";
|
|
4
|
+
/**
|
|
5
|
+
* Teach the coding agent to use kit.
|
|
6
|
+
*
|
|
7
|
+
* `kit setup` only writes `.kit.toml` — it does not tell Claude Code / Codex /
|
|
8
|
+
* Cursor / Cline to actually *run* kit. This module injects a small, managed
|
|
9
|
+
* instruction block into the agent's rules file so the agent runs `kit check`,
|
|
10
|
+
* triages dependencies before install, and resolves secrets via the vault.
|
|
11
|
+
*
|
|
12
|
+
* Safety: this only writes plain text the agent reads — it never registers an
|
|
13
|
+
* executable hook (that's a separate, more invasive opt-in). The block is
|
|
14
|
+
* delimited by BEGIN/END markers and is idempotent: re-running updates the
|
|
15
|
+
* block in place and never touches anything outside the markers.
|
|
16
|
+
*/
|
|
17
|
+
export const KIT_BLOCK_BEGIN = "<!-- BEGIN kit (managed block — edit outside the markers, not inside) -->";
|
|
18
|
+
export const KIT_BLOCK_END = "<!-- END kit -->";
|
|
19
|
+
/** The canonical "use kit" instruction. Kept short on purpose — agents read it
|
|
20
|
+
* every turn, so it states the rules, not the rationale. */
|
|
21
|
+
export const KIT_INSTRUCTION = `## kit
|
|
22
|
+
|
|
23
|
+
This project uses [kit](https://github.com/sandstream/kit) to manage tools, secrets, and environment setup. As the agent working here:
|
|
24
|
+
|
|
25
|
+
- Run \`kit check\` before starting; if it reports \`fail\`, run \`kit fix\` then re-check.
|
|
26
|
+
- Before installing ANY dependency, run \`kit triage npm|pip|docker|repo <target>\` and only install if it passes.
|
|
27
|
+
- Never write secrets to \`.env*\` in plaintext — resolve them with \`kit secrets\` (vault-backed).
|
|
28
|
+
- After a batch of edits, run \`kit check --category security\`; halt and surface findings on \`fail\`.
|
|
29
|
+
- Destructive secret ops require \`kit auth elevate\` first.`;
|
|
30
|
+
/** Rules file per agent. CLAUDE.md / AGENTS.md are the common cross-tool ones;
|
|
31
|
+
* Cursor and Cline read their own dotfiles. */
|
|
32
|
+
export const AGENT_TARGETS = [
|
|
33
|
+
{ agent: "Claude Code", file: "CLAUDE.md" },
|
|
34
|
+
{ agent: "Codex", file: "AGENTS.md" },
|
|
35
|
+
{ agent: "Cursor", file: ".cursorrules" },
|
|
36
|
+
{ agent: "Cline", file: ".clinerules" },
|
|
37
|
+
];
|
|
38
|
+
/**
|
|
39
|
+
* Which agents look present in this project. Presence = the rules file already
|
|
40
|
+
* exists OR a tool-specific marker dir/file is there. When nothing matches we
|
|
41
|
+
* fall back to the two portable defaults (CLAUDE.md + AGENTS.md) so a fresh
|
|
42
|
+
* project still gets wired.
|
|
43
|
+
*/
|
|
44
|
+
export function detectAgentTargets(cwd = process.cwd()) {
|
|
45
|
+
const present = AGENT_TARGETS.filter((t) => {
|
|
46
|
+
if (existsSync(resolve(cwd, t.file)))
|
|
47
|
+
return true;
|
|
48
|
+
switch (t.agent) {
|
|
49
|
+
case "Claude Code":
|
|
50
|
+
return existsSync(resolve(cwd, ".claude"));
|
|
51
|
+
case "Codex":
|
|
52
|
+
return existsSync(resolve(cwd, ".codex"));
|
|
53
|
+
case "Cursor":
|
|
54
|
+
return existsSync(resolve(cwd, ".cursor"));
|
|
55
|
+
default:
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
if (present.length > 0)
|
|
60
|
+
return present;
|
|
61
|
+
return AGENT_TARGETS.filter((t) => t.file === "CLAUDE.md" || t.file === "AGENTS.md");
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Insert or update the managed kit block in `content`. Pure string transform —
|
|
65
|
+
* no I/O — so it's trivially testable.
|
|
66
|
+
*
|
|
67
|
+
* - No existing block → append (with a blank-line separator if the file is non-empty).
|
|
68
|
+
* - Existing block → replace just the marker-delimited region, preserving everything else.
|
|
69
|
+
*/
|
|
70
|
+
export function upsertKitBlock(content) {
|
|
71
|
+
const block = `${KIT_BLOCK_BEGIN}\n\n${KIT_INSTRUCTION}\n\n${KIT_BLOCK_END}`;
|
|
72
|
+
const begin = content.indexOf(KIT_BLOCK_BEGIN);
|
|
73
|
+
const end = content.indexOf(KIT_BLOCK_END);
|
|
74
|
+
if (begin !== -1 && end !== -1 && end > begin) {
|
|
75
|
+
const before = content.slice(0, begin);
|
|
76
|
+
const after = content.slice(end + KIT_BLOCK_END.length);
|
|
77
|
+
const next = before + block + after;
|
|
78
|
+
return { next, action: next === content ? "unchanged" : "updated" };
|
|
79
|
+
}
|
|
80
|
+
const sep = content.length === 0 ? "" : content.endsWith("\n\n") ? "" : content.endsWith("\n") ? "\n" : "\n\n";
|
|
81
|
+
return { next: content + sep + block + "\n", action: "created" };
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Write the managed kit block into each detected agent's rules file.
|
|
85
|
+
* Read-only mode refuses + audits before any write.
|
|
86
|
+
*/
|
|
87
|
+
export async function writeAgentConfig(cwd = process.cwd(), targets) {
|
|
88
|
+
const { isReadOnlyMode, refuseWrite } = await import("./read-only-mode.js");
|
|
89
|
+
if (isReadOnlyMode()) {
|
|
90
|
+
const refusal = await refuseWrite("write-agent-config", {});
|
|
91
|
+
return [{ agent: "all", file: "-", action: "failed", detail: refusal.reason }];
|
|
92
|
+
}
|
|
93
|
+
const chosen = targets ?? detectAgentTargets(cwd);
|
|
94
|
+
const results = [];
|
|
95
|
+
for (const t of chosen) {
|
|
96
|
+
const path = resolve(cwd, t.file);
|
|
97
|
+
let existing = "";
|
|
98
|
+
try {
|
|
99
|
+
existing = await readFile(path, "utf-8");
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
existing = ""; // file absent — will be created
|
|
103
|
+
}
|
|
104
|
+
try {
|
|
105
|
+
const { next, action } = upsertKitBlock(existing);
|
|
106
|
+
if (action === "unchanged") {
|
|
107
|
+
results.push({ agent: t.agent, file: t.file, action, detail: "kit block already current" });
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
await writeFile(path, next, "utf-8");
|
|
111
|
+
results.push({
|
|
112
|
+
agent: t.agent,
|
|
113
|
+
file: t.file,
|
|
114
|
+
action,
|
|
115
|
+
detail: action === "created" ? `wrote kit block to ${t.file}` : `updated kit block in ${t.file}`,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
results.push({
|
|
120
|
+
agent: t.agent,
|
|
121
|
+
file: t.file,
|
|
122
|
+
action: "failed",
|
|
123
|
+
detail: err instanceof Error ? err.message : String(err),
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return results;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=agent-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-config.js","sourceRoot":"","sources":["../src/agent-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Governance & Security Framework — data models
|
|
3
|
+
* Governance controls, permission systems, audit logging, and security policies
|
|
4
|
+
*/
|
|
5
|
+
export type PolicyType = "access_control" | "rate_limit" | "resource_quota" | "behavior_restriction";
|
|
6
|
+
export type PolicyStatus = "draft" | "active" | "paused" | "deprecated";
|
|
7
|
+
export type ActionType = "create" | "read" | "update" | "delete" | "execute" | "approve";
|
|
8
|
+
export type PermissionLevel = "none" | "viewer" | "editor" | "admin" | "owner";
|
|
9
|
+
export type AuditAction = "agent_created" | "agent_modified" | "permission_granted" | "permission_revoked" | "workflow_executed" | "policy_violated" | "secret_accessed" | "resource_used";
|
|
10
|
+
export interface GovernancePolicy {
|
|
11
|
+
id: string;
|
|
12
|
+
team_id: string;
|
|
13
|
+
policy_name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
policy_type: PolicyType;
|
|
16
|
+
status: PolicyStatus;
|
|
17
|
+
rules: {
|
|
18
|
+
condition: string;
|
|
19
|
+
action: string;
|
|
20
|
+
consequence?: string;
|
|
21
|
+
}[];
|
|
22
|
+
target_agents?: string[];
|
|
23
|
+
target_workflows?: string[];
|
|
24
|
+
priority: number;
|
|
25
|
+
enforcement_enabled: boolean;
|
|
26
|
+
created_by: string;
|
|
27
|
+
created_at: string;
|
|
28
|
+
updated_at: string;
|
|
29
|
+
}
|
|
30
|
+
export interface AgentPermission {
|
|
31
|
+
id: string;
|
|
32
|
+
team_id: string;
|
|
33
|
+
agent_id: string;
|
|
34
|
+
resource_type: string;
|
|
35
|
+
resource_id?: string;
|
|
36
|
+
action: ActionType;
|
|
37
|
+
permission_level: PermissionLevel;
|
|
38
|
+
granted_by: string;
|
|
39
|
+
granted_at: string;
|
|
40
|
+
expires_at?: string;
|
|
41
|
+
conditions?: Record<string, unknown>;
|
|
42
|
+
created_at: string;
|
|
43
|
+
updated_at: string;
|
|
44
|
+
}
|
|
45
|
+
export interface AgentSecurityProfile {
|
|
46
|
+
id: string;
|
|
47
|
+
team_id: string;
|
|
48
|
+
agent_id: string;
|
|
49
|
+
agent_type: string;
|
|
50
|
+
risk_level: "low" | "medium" | "high";
|
|
51
|
+
trust_score: number;
|
|
52
|
+
permissions: AgentPermission[];
|
|
53
|
+
violations_count: number;
|
|
54
|
+
last_violation?: string;
|
|
55
|
+
sandboxed: boolean;
|
|
56
|
+
resource_limits: {
|
|
57
|
+
max_concurrent_workflows: number;
|
|
58
|
+
max_api_calls_per_hour: number;
|
|
59
|
+
max_memory_mb: number;
|
|
60
|
+
max_storage_gb: number;
|
|
61
|
+
};
|
|
62
|
+
created_at: string;
|
|
63
|
+
updated_at: string;
|
|
64
|
+
}
|
|
65
|
+
export interface GovernanceAuditLog {
|
|
66
|
+
id: string;
|
|
67
|
+
team_id: string;
|
|
68
|
+
agent_id?: string;
|
|
69
|
+
action: AuditAction;
|
|
70
|
+
resource_type: string;
|
|
71
|
+
resource_id?: string;
|
|
72
|
+
details: Record<string, unknown>;
|
|
73
|
+
severity: "info" | "warning" | "critical";
|
|
74
|
+
status: "allowed" | "denied" | "warning";
|
|
75
|
+
policy_evaluated?: string;
|
|
76
|
+
timestamp: string;
|
|
77
|
+
created_at: string;
|
|
78
|
+
}
|
|
79
|
+
export interface RateLimitPolicy {
|
|
80
|
+
id: string;
|
|
81
|
+
team_id: string;
|
|
82
|
+
agent_id?: string;
|
|
83
|
+
resource_type: string;
|
|
84
|
+
requests_per_minute: number;
|
|
85
|
+
requests_per_hour: number;
|
|
86
|
+
requests_per_day: number;
|
|
87
|
+
burst_limit: number;
|
|
88
|
+
enabled: boolean;
|
|
89
|
+
created_at: string;
|
|
90
|
+
updated_at: string;
|
|
91
|
+
}
|
|
92
|
+
export interface ResourceQuota {
|
|
93
|
+
id: string;
|
|
94
|
+
team_id: string;
|
|
95
|
+
agent_id?: string;
|
|
96
|
+
resource_type: string;
|
|
97
|
+
limit: number;
|
|
98
|
+
unit: string;
|
|
99
|
+
period: "hour" | "day" | "month";
|
|
100
|
+
current_usage: number;
|
|
101
|
+
warning_threshold_percent: number;
|
|
102
|
+
created_at: string;
|
|
103
|
+
updated_at: string;
|
|
104
|
+
}
|
|
105
|
+
export interface GovernanceMetrics {
|
|
106
|
+
total_policies: number;
|
|
107
|
+
active_policies: number;
|
|
108
|
+
total_permissions: number;
|
|
109
|
+
agents_with_violations: number;
|
|
110
|
+
total_audit_events: number;
|
|
111
|
+
critical_events_count: number;
|
|
112
|
+
average_trust_score: number;
|
|
113
|
+
policy_violation_rate_percent: number;
|
|
114
|
+
average_response_time_ms: number;
|
|
115
|
+
}
|
|
116
|
+
export interface PolicyEvaluation {
|
|
117
|
+
id: string;
|
|
118
|
+
team_id: string;
|
|
119
|
+
policy_id: string;
|
|
120
|
+
agent_id: string;
|
|
121
|
+
action: ActionType;
|
|
122
|
+
resource_type: string;
|
|
123
|
+
allowed: boolean;
|
|
124
|
+
reason: string;
|
|
125
|
+
violated_rules?: string[];
|
|
126
|
+
timestamp: string;
|
|
127
|
+
created_at: string;
|
|
128
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-governance-model.js","sourceRoot":"","sources":["../src/agent-governance-model.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|