clawsec 0.0.1
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/README.md +560 -0
- package/dist/bin/clawsec.d.ts +7 -0
- package/dist/bin/clawsec.d.ts.map +1 -0
- package/dist/bin/clawsec.js +12 -0
- package/dist/bin/clawsec.js.map +1 -0
- package/dist/src/actions/block.d.ts +22 -0
- package/dist/src/actions/block.d.ts.map +1 -0
- package/dist/src/actions/block.js +83 -0
- package/dist/src/actions/block.js.map +1 -0
- package/dist/src/actions/confirm.d.ts +35 -0
- package/dist/src/actions/confirm.d.ts.map +1 -0
- package/dist/src/actions/confirm.js +156 -0
- package/dist/src/actions/confirm.js.map +1 -0
- package/dist/src/actions/executor.d.ts +64 -0
- package/dist/src/actions/executor.d.ts.map +1 -0
- package/dist/src/actions/executor.js +114 -0
- package/dist/src/actions/executor.js.map +1 -0
- package/dist/src/actions/index.d.ts +13 -0
- package/dist/src/actions/index.d.ts.map +1 -0
- package/dist/src/actions/index.js +15 -0
- package/dist/src/actions/index.js.map +1 -0
- package/dist/src/actions/log.d.ts +19 -0
- package/dist/src/actions/log.d.ts.map +1 -0
- package/dist/src/actions/log.js +63 -0
- package/dist/src/actions/log.js.map +1 -0
- package/dist/src/actions/types.d.ts +85 -0
- package/dist/src/actions/types.d.ts.map +1 -0
- package/dist/src/actions/types.js +78 -0
- package/dist/src/actions/types.js.map +1 -0
- package/dist/src/actions/warn.d.ts +22 -0
- package/dist/src/actions/warn.d.ts.map +1 -0
- package/dist/src/actions/warn.js +84 -0
- package/dist/src/actions/warn.js.map +1 -0
- package/dist/src/approval/agent-confirm.d.ts +104 -0
- package/dist/src/approval/agent-confirm.d.ts.map +1 -0
- package/dist/src/approval/agent-confirm.js +173 -0
- package/dist/src/approval/agent-confirm.js.map +1 -0
- package/dist/src/approval/index.d.ts +14 -0
- package/dist/src/approval/index.d.ts.map +1 -0
- package/dist/src/approval/index.js +9 -0
- package/dist/src/approval/index.js.map +1 -0
- package/dist/src/approval/native.d.ts +56 -0
- package/dist/src/approval/native.d.ts.map +1 -0
- package/dist/src/approval/native.js +196 -0
- package/dist/src/approval/native.js.map +1 -0
- package/dist/src/approval/store.d.ts +88 -0
- package/dist/src/approval/store.d.ts.map +1 -0
- package/dist/src/approval/store.js +192 -0
- package/dist/src/approval/store.js.map +1 -0
- package/dist/src/approval/types.d.ts +119 -0
- package/dist/src/approval/types.d.ts.map +1 -0
- package/dist/src/approval/types.js +6 -0
- package/dist/src/approval/types.js.map +1 -0
- package/dist/src/approval/webhook.d.ts +170 -0
- package/dist/src/approval/webhook.d.ts.map +1 -0
- package/dist/src/approval/webhook.js +362 -0
- package/dist/src/approval/webhook.js.map +1 -0
- package/dist/src/cli/commands/audit.d.ts +43 -0
- package/dist/src/cli/commands/audit.d.ts.map +1 -0
- package/dist/src/cli/commands/audit.js +115 -0
- package/dist/src/cli/commands/audit.js.map +1 -0
- package/dist/src/cli/commands/feedback.d.ts +27 -0
- package/dist/src/cli/commands/feedback.d.ts.map +1 -0
- package/dist/src/cli/commands/feedback.js +228 -0
- package/dist/src/cli/commands/feedback.js.map +1 -0
- package/dist/src/cli/commands/index.d.ts +11 -0
- package/dist/src/cli/commands/index.d.ts.map +1 -0
- package/dist/src/cli/commands/index.js +13 -0
- package/dist/src/cli/commands/index.js.map +1 -0
- package/dist/src/cli/commands/status.d.ts +20 -0
- package/dist/src/cli/commands/status.d.ts.map +1 -0
- package/dist/src/cli/commands/status.js +122 -0
- package/dist/src/cli/commands/status.js.map +1 -0
- package/dist/src/cli/commands/test.d.ts +23 -0
- package/dist/src/cli/commands/test.d.ts.map +1 -0
- package/dist/src/cli/commands/test.js +134 -0
- package/dist/src/cli/commands/test.js.map +1 -0
- package/dist/src/cli/commands/types.d.ts +81 -0
- package/dist/src/cli/commands/types.d.ts.map +1 -0
- package/dist/src/cli/commands/types.js +6 -0
- package/dist/src/cli/commands/types.js.map +1 -0
- package/dist/src/cli/index.d.ts +17 -0
- package/dist/src/cli/index.d.ts.map +1 -0
- package/dist/src/cli/index.js +267 -0
- package/dist/src/cli/index.js.map +1 -0
- package/dist/src/config/defaults.d.ts +20 -0
- package/dist/src/config/defaults.d.ts.map +1 -0
- package/dist/src/config/defaults.js +123 -0
- package/dist/src/config/defaults.js.map +1 -0
- package/dist/src/config/index.d.ts +8 -0
- package/dist/src/config/index.d.ts.map +1 -0
- package/dist/src/config/index.js +41 -0
- package/dist/src/config/index.js.map +1 -0
- package/dist/src/config/loader.d.ts +99 -0
- package/dist/src/config/loader.d.ts.map +1 -0
- package/dist/src/config/loader.js +242 -0
- package/dist/src/config/loader.js.map +1 -0
- package/dist/src/config/schema.d.ts +627 -0
- package/dist/src/config/schema.d.ts.map +1 -0
- package/dist/src/config/schema.js +585 -0
- package/dist/src/config/schema.js.map +1 -0
- package/dist/src/detectors/destructive/cloud-detector.d.ts +51 -0
- package/dist/src/detectors/destructive/cloud-detector.d.ts.map +1 -0
- package/dist/src/detectors/destructive/cloud-detector.js +556 -0
- package/dist/src/detectors/destructive/cloud-detector.js.map +1 -0
- package/dist/src/detectors/destructive/code-detector.d.ts +59 -0
- package/dist/src/detectors/destructive/code-detector.d.ts.map +1 -0
- package/dist/src/detectors/destructive/code-detector.js +558 -0
- package/dist/src/detectors/destructive/code-detector.js.map +1 -0
- package/dist/src/detectors/destructive/index.d.ts +54 -0
- package/dist/src/detectors/destructive/index.d.ts.map +1 -0
- package/dist/src/detectors/destructive/index.js +168 -0
- package/dist/src/detectors/destructive/index.js.map +1 -0
- package/dist/src/detectors/destructive/shell-detector.d.ts +43 -0
- package/dist/src/detectors/destructive/shell-detector.d.ts.map +1 -0
- package/dist/src/detectors/destructive/shell-detector.js +302 -0
- package/dist/src/detectors/destructive/shell-detector.js.map +1 -0
- package/dist/src/detectors/destructive/types.d.ts +143 -0
- package/dist/src/detectors/destructive/types.d.ts.map +1 -0
- package/dist/src/detectors/destructive/types.js +6 -0
- package/dist/src/detectors/destructive/types.js.map +1 -0
- package/dist/src/detectors/exfiltration/cloud-detector.d.ts +51 -0
- package/dist/src/detectors/exfiltration/cloud-detector.d.ts.map +1 -0
- package/dist/src/detectors/exfiltration/cloud-detector.js +427 -0
- package/dist/src/detectors/exfiltration/cloud-detector.js.map +1 -0
- package/dist/src/detectors/exfiltration/http-detector.d.ts +47 -0
- package/dist/src/detectors/exfiltration/http-detector.d.ts.map +1 -0
- package/dist/src/detectors/exfiltration/http-detector.js +429 -0
- package/dist/src/detectors/exfiltration/http-detector.js.map +1 -0
- package/dist/src/detectors/exfiltration/index.d.ts +44 -0
- package/dist/src/detectors/exfiltration/index.d.ts.map +1 -0
- package/dist/src/detectors/exfiltration/index.js +118 -0
- package/dist/src/detectors/exfiltration/index.js.map +1 -0
- package/dist/src/detectors/exfiltration/network-detector.d.ts +55 -0
- package/dist/src/detectors/exfiltration/network-detector.d.ts.map +1 -0
- package/dist/src/detectors/exfiltration/network-detector.js +504 -0
- package/dist/src/detectors/exfiltration/network-detector.js.map +1 -0
- package/dist/src/detectors/exfiltration/types.d.ts +139 -0
- package/dist/src/detectors/exfiltration/types.d.ts.map +1 -0
- package/dist/src/detectors/exfiltration/types.js +6 -0
- package/dist/src/detectors/exfiltration/types.js.map +1 -0
- package/dist/src/detectors/purchase/domain-detector.d.ts +44 -0
- package/dist/src/detectors/purchase/domain-detector.d.ts.map +1 -0
- package/dist/src/detectors/purchase/domain-detector.js +296 -0
- package/dist/src/detectors/purchase/domain-detector.js.map +1 -0
- package/dist/src/detectors/purchase/form-detector.d.ts +27 -0
- package/dist/src/detectors/purchase/form-detector.d.ts.map +1 -0
- package/dist/src/detectors/purchase/form-detector.js +344 -0
- package/dist/src/detectors/purchase/form-detector.js.map +1 -0
- package/dist/src/detectors/purchase/index.d.ts +65 -0
- package/dist/src/detectors/purchase/index.d.ts.map +1 -0
- package/dist/src/detectors/purchase/index.js +216 -0
- package/dist/src/detectors/purchase/index.js.map +1 -0
- package/dist/src/detectors/purchase/spend-tracker.d.ts +132 -0
- package/dist/src/detectors/purchase/spend-tracker.d.ts.map +1 -0
- package/dist/src/detectors/purchase/spend-tracker.js +313 -0
- package/dist/src/detectors/purchase/spend-tracker.js.map +1 -0
- package/dist/src/detectors/purchase/types.d.ts +139 -0
- package/dist/src/detectors/purchase/types.d.ts.map +1 -0
- package/dist/src/detectors/purchase/types.js +6 -0
- package/dist/src/detectors/purchase/types.js.map +1 -0
- package/dist/src/detectors/purchase/url-detector.d.ts +31 -0
- package/dist/src/detectors/purchase/url-detector.d.ts.map +1 -0
- package/dist/src/detectors/purchase/url-detector.js +292 -0
- package/dist/src/detectors/purchase/url-detector.js.map +1 -0
- package/dist/src/detectors/secrets/api-key-detector.d.ts +30 -0
- package/dist/src/detectors/secrets/api-key-detector.d.ts.map +1 -0
- package/dist/src/detectors/secrets/api-key-detector.js +297 -0
- package/dist/src/detectors/secrets/api-key-detector.js.map +1 -0
- package/dist/src/detectors/secrets/index.d.ts +43 -0
- package/dist/src/detectors/secrets/index.d.ts.map +1 -0
- package/dist/src/detectors/secrets/index.js +261 -0
- package/dist/src/detectors/secrets/index.js.map +1 -0
- package/dist/src/detectors/secrets/pii-detector.d.ts +54 -0
- package/dist/src/detectors/secrets/pii-detector.d.ts.map +1 -0
- package/dist/src/detectors/secrets/pii-detector.js +286 -0
- package/dist/src/detectors/secrets/pii-detector.js.map +1 -0
- package/dist/src/detectors/secrets/token-detector.d.ts +51 -0
- package/dist/src/detectors/secrets/token-detector.d.ts.map +1 -0
- package/dist/src/detectors/secrets/token-detector.js +233 -0
- package/dist/src/detectors/secrets/token-detector.js.map +1 -0
- package/dist/src/detectors/secrets/types.d.ts +157 -0
- package/dist/src/detectors/secrets/types.d.ts.map +1 -0
- package/dist/src/detectors/secrets/types.js +6 -0
- package/dist/src/detectors/secrets/types.js.map +1 -0
- package/dist/src/detectors/website/category-detector.d.ts +22 -0
- package/dist/src/detectors/website/category-detector.d.ts.map +1 -0
- package/dist/src/detectors/website/category-detector.js +162 -0
- package/dist/src/detectors/website/category-detector.js.map +1 -0
- package/dist/src/detectors/website/index.d.ts +53 -0
- package/dist/src/detectors/website/index.d.ts.map +1 -0
- package/dist/src/detectors/website/index.js +232 -0
- package/dist/src/detectors/website/index.js.map +1 -0
- package/dist/src/detectors/website/pattern-matcher.d.ts +33 -0
- package/dist/src/detectors/website/pattern-matcher.d.ts.map +1 -0
- package/dist/src/detectors/website/pattern-matcher.js +121 -0
- package/dist/src/detectors/website/pattern-matcher.js.map +1 -0
- package/dist/src/detectors/website/types.d.ts +105 -0
- package/dist/src/detectors/website/types.d.ts.map +1 -0
- package/dist/src/detectors/website/types.js +6 -0
- package/dist/src/detectors/website/types.js.map +1 -0
- package/dist/src/engine/analyzer.d.ts +87 -0
- package/dist/src/engine/analyzer.d.ts.map +1 -0
- package/dist/src/engine/analyzer.js +427 -0
- package/dist/src/engine/analyzer.js.map +1 -0
- package/dist/src/engine/cache.d.ts +80 -0
- package/dist/src/engine/cache.d.ts.map +1 -0
- package/dist/src/engine/cache.js +167 -0
- package/dist/src/engine/cache.js.map +1 -0
- package/dist/src/engine/index.d.ts +11 -0
- package/dist/src/engine/index.d.ts.map +1 -0
- package/dist/src/engine/index.js +11 -0
- package/dist/src/engine/index.js.map +1 -0
- package/dist/src/engine/llm-client.d.ts +210 -0
- package/dist/src/engine/llm-client.d.ts.map +1 -0
- package/dist/src/engine/llm-client.js +506 -0
- package/dist/src/engine/llm-client.js.map +1 -0
- package/dist/src/engine/types.d.ts +163 -0
- package/dist/src/engine/types.d.ts.map +1 -0
- package/dist/src/engine/types.js +21 -0
- package/dist/src/engine/types.js.map +1 -0
- package/dist/src/feedback/index.d.ts +9 -0
- package/dist/src/feedback/index.d.ts.map +1 -0
- package/dist/src/feedback/index.js +8 -0
- package/dist/src/feedback/index.js.map +1 -0
- package/dist/src/feedback/learner.d.ts +222 -0
- package/dist/src/feedback/learner.d.ts.map +1 -0
- package/dist/src/feedback/learner.js +401 -0
- package/dist/src/feedback/learner.js.map +1 -0
- package/dist/src/feedback/store.d.ts +113 -0
- package/dist/src/feedback/store.d.ts.map +1 -0
- package/dist/src/feedback/store.js +228 -0
- package/dist/src/feedback/store.js.map +1 -0
- package/dist/src/feedback/types.d.ts +126 -0
- package/dist/src/feedback/types.d.ts.map +1 -0
- package/dist/src/feedback/types.js +6 -0
- package/dist/src/feedback/types.js.map +1 -0
- package/dist/src/hooks/before-agent-start/handler.d.ts +37 -0
- package/dist/src/hooks/before-agent-start/handler.d.ts.map +1 -0
- package/dist/src/hooks/before-agent-start/handler.js +109 -0
- package/dist/src/hooks/before-agent-start/handler.js.map +1 -0
- package/dist/src/hooks/before-agent-start/index.d.ts +8 -0
- package/dist/src/hooks/before-agent-start/index.d.ts.map +1 -0
- package/dist/src/hooks/before-agent-start/index.js +7 -0
- package/dist/src/hooks/before-agent-start/index.js.map +1 -0
- package/dist/src/hooks/before-agent-start/prompts.d.ts +48 -0
- package/dist/src/hooks/before-agent-start/prompts.d.ts.map +1 -0
- package/dist/src/hooks/before-agent-start/prompts.js +103 -0
- package/dist/src/hooks/before-agent-start/prompts.js.map +1 -0
- package/dist/src/hooks/before-tool-call/handler.d.ts +42 -0
- package/dist/src/hooks/before-tool-call/handler.d.ts.map +1 -0
- package/dist/src/hooks/before-tool-call/handler.js +226 -0
- package/dist/src/hooks/before-tool-call/handler.js.map +1 -0
- package/dist/src/hooks/before-tool-call/index.d.ts +7 -0
- package/dist/src/hooks/before-tool-call/index.d.ts.map +1 -0
- package/dist/src/hooks/before-tool-call/index.js +6 -0
- package/dist/src/hooks/before-tool-call/index.js.map +1 -0
- package/dist/src/hooks/tool-result-persist/filter.d.ts +72 -0
- package/dist/src/hooks/tool-result-persist/filter.d.ts.map +1 -0
- package/dist/src/hooks/tool-result-persist/filter.js +305 -0
- package/dist/src/hooks/tool-result-persist/filter.js.map +1 -0
- package/dist/src/hooks/tool-result-persist/handler.d.ts +49 -0
- package/dist/src/hooks/tool-result-persist/handler.d.ts.map +1 -0
- package/dist/src/hooks/tool-result-persist/handler.js +217 -0
- package/dist/src/hooks/tool-result-persist/handler.js.map +1 -0
- package/dist/src/hooks/tool-result-persist/index.d.ts +11 -0
- package/dist/src/hooks/tool-result-persist/index.d.ts.map +1 -0
- package/dist/src/hooks/tool-result-persist/index.js +11 -0
- package/dist/src/hooks/tool-result-persist/index.js.map +1 -0
- package/dist/src/index.d.ts +256 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +222 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/notifications/discord.d.ts +10 -0
- package/dist/src/notifications/discord.d.ts.map +1 -0
- package/dist/src/notifications/discord.js +218 -0
- package/dist/src/notifications/discord.js.map +1 -0
- package/dist/src/notifications/index.d.ts +37 -0
- package/dist/src/notifications/index.d.ts.map +1 -0
- package/dist/src/notifications/index.js +68 -0
- package/dist/src/notifications/index.js.map +1 -0
- package/dist/src/notifications/slack.d.ts +10 -0
- package/dist/src/notifications/slack.d.ts.map +1 -0
- package/dist/src/notifications/slack.js +218 -0
- package/dist/src/notifications/slack.js.map +1 -0
- package/dist/src/notifications/telegram.d.ts +10 -0
- package/dist/src/notifications/telegram.d.ts.map +1 -0
- package/dist/src/notifications/telegram.js +242 -0
- package/dist/src/notifications/telegram.js.map +1 -0
- package/dist/src/notifications/types.d.ts +119 -0
- package/dist/src/notifications/types.d.ts.map +1 -0
- package/dist/src/notifications/types.js +6 -0
- package/dist/src/notifications/types.js.map +1 -0
- package/dist/src/proxy/index.d.ts +8 -0
- package/dist/src/proxy/index.d.ts.map +1 -0
- package/dist/src/proxy/index.js +9 -0
- package/dist/src/proxy/index.js.map +1 -0
- package/dist/src/proxy/middleware.d.ts +55 -0
- package/dist/src/proxy/middleware.d.ts.map +1 -0
- package/dist/src/proxy/middleware.js +215 -0
- package/dist/src/proxy/middleware.js.map +1 -0
- package/dist/src/proxy/server.d.ts +57 -0
- package/dist/src/proxy/server.d.ts.map +1 -0
- package/dist/src/proxy/server.js +298 -0
- package/dist/src/proxy/server.js.map +1 -0
- package/dist/src/proxy/types.d.ts +136 -0
- package/dist/src/proxy/types.d.ts.map +1 -0
- package/dist/src/proxy/types.js +6 -0
- package/dist/src/proxy/types.js.map +1 -0
- package/dist/src/sanitization/index.d.ts +10 -0
- package/dist/src/sanitization/index.d.ts.map +1 -0
- package/dist/src/sanitization/index.js +9 -0
- package/dist/src/sanitization/index.js.map +1 -0
- package/dist/src/sanitization/patterns.d.ts +51 -0
- package/dist/src/sanitization/patterns.d.ts.map +1 -0
- package/dist/src/sanitization/patterns.js +266 -0
- package/dist/src/sanitization/patterns.js.map +1 -0
- package/dist/src/sanitization/scanner.d.ts +29 -0
- package/dist/src/sanitization/scanner.d.ts.map +1 -0
- package/dist/src/sanitization/scanner.js +328 -0
- package/dist/src/sanitization/scanner.js.map +1 -0
- package/dist/src/sanitization/types.d.ts +57 -0
- package/dist/src/sanitization/types.d.ts.map +1 -0
- package/dist/src/sanitization/types.js +5 -0
- package/dist/src/sanitization/types.js.map +1 -0
- package/openclaw.plugin.json +114 -0
- package/package.json +63 -0
- package/rules/builtin/README.md +139 -0
- package/rules/builtin/ai-services.yaml +70 -0
- package/rules/builtin/api-keys.yaml +64 -0
- package/rules/builtin/authentication.yaml +56 -0
- package/rules/builtin/aws-security.yaml +57 -0
- package/rules/builtin/azure-security.yaml +58 -0
- package/rules/builtin/cicd-security.yaml +64 -0
- package/rules/builtin/cloud-storage.yaml +64 -0
- package/rules/builtin/container-registry.yaml +55 -0
- package/rules/builtin/crypto-wallets.yaml +71 -0
- package/rules/builtin/database-nosql.yaml +58 -0
- package/rules/builtin/database-sql.yaml +62 -0
- package/rules/builtin/development-env.yaml +67 -0
- package/rules/builtin/docker.yaml +57 -0
- package/rules/builtin/filesystem.yaml +71 -0
- package/rules/builtin/financial-pci.yaml +61 -0
- package/rules/builtin/gcp-security.yaml +57 -0
- package/rules/builtin/git-operations.yaml +68 -0
- package/rules/builtin/healthcare-hipaa.yaml +64 -0
- package/rules/builtin/kubernetes.yaml +60 -0
- package/rules/builtin/messaging-services.yaml +53 -0
- package/rules/builtin/minimal.yaml +47 -0
- package/rules/builtin/mobile-development.yaml +61 -0
- package/rules/builtin/monitoring.yaml +63 -0
- package/rules/builtin/network-security.yaml +57 -0
- package/rules/builtin/package-managers.yaml +74 -0
- package/rules/builtin/payment-processing.yaml +66 -0
- package/rules/builtin/pii-protection.yaml +48 -0
- package/rules/builtin/production-strict.yaml +55 -0
- package/rules/builtin/secrets-management.yaml +63 -0
- package/rules/builtin/serverless.yaml +74 -0
- package/rules/builtin/ssh-security.yaml +66 -0
- package/rules/builtin/terraform.yaml +51 -0
- package/rules/builtin/web-security.yaml +62 -0
|
@@ -0,0 +1,556 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloud Detector
|
|
3
|
+
* Detects dangerous cloud operations including AWS, GCP, Azure, Kubernetes, and Terraform
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* AWS destructive command patterns
|
|
7
|
+
*/
|
|
8
|
+
const AWS_PATTERNS = [
|
|
9
|
+
// EC2 terminate instances
|
|
10
|
+
{
|
|
11
|
+
pattern: /\baws\s+ec2\s+terminate-instances\b/i,
|
|
12
|
+
operation: 'terminate-instances',
|
|
13
|
+
description: 'Terminate EC2 instances',
|
|
14
|
+
},
|
|
15
|
+
// S3 bucket removal
|
|
16
|
+
{
|
|
17
|
+
pattern: /\baws\s+s3\s+rb\s+(?:--force\s+)?s3:\/\/([^\s]+)/i,
|
|
18
|
+
operation: 's3 rb',
|
|
19
|
+
description: 'Remove S3 bucket',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
pattern: /\baws\s+s3api\s+delete-bucket\b/i,
|
|
23
|
+
operation: 'delete-bucket',
|
|
24
|
+
description: 'Delete S3 bucket',
|
|
25
|
+
},
|
|
26
|
+
// RDS delete
|
|
27
|
+
{
|
|
28
|
+
pattern: /\baws\s+rds\s+delete-db-(?:instance|cluster)\b/i,
|
|
29
|
+
operation: 'delete-db',
|
|
30
|
+
description: 'Delete RDS database',
|
|
31
|
+
},
|
|
32
|
+
// CloudFormation stack deletion
|
|
33
|
+
{
|
|
34
|
+
pattern: /\baws\s+cloudformation\s+delete-stack\b/i,
|
|
35
|
+
operation: 'delete-stack',
|
|
36
|
+
description: 'Delete CloudFormation stack',
|
|
37
|
+
},
|
|
38
|
+
// Lambda function deletion
|
|
39
|
+
{
|
|
40
|
+
pattern: /\baws\s+lambda\s+delete-function\b/i,
|
|
41
|
+
operation: 'delete-function',
|
|
42
|
+
description: 'Delete Lambda function',
|
|
43
|
+
},
|
|
44
|
+
// EKS cluster deletion
|
|
45
|
+
{
|
|
46
|
+
pattern: /\baws\s+eks\s+delete-cluster\b/i,
|
|
47
|
+
operation: 'delete-cluster',
|
|
48
|
+
description: 'Delete EKS cluster',
|
|
49
|
+
},
|
|
50
|
+
// IAM user/role deletion
|
|
51
|
+
{
|
|
52
|
+
pattern: /\baws\s+iam\s+delete-(?:user|role)\b/i,
|
|
53
|
+
operation: 'delete-iam',
|
|
54
|
+
description: 'Delete IAM user/role',
|
|
55
|
+
},
|
|
56
|
+
// VPC deletion
|
|
57
|
+
{
|
|
58
|
+
pattern: /\baws\s+ec2\s+delete-vpc\b/i,
|
|
59
|
+
operation: 'delete-vpc',
|
|
60
|
+
description: 'Delete VPC',
|
|
61
|
+
},
|
|
62
|
+
// DynamoDB table deletion
|
|
63
|
+
{
|
|
64
|
+
pattern: /\baws\s+dynamodb\s+delete-table\b/i,
|
|
65
|
+
operation: 'delete-table',
|
|
66
|
+
description: 'Delete DynamoDB table',
|
|
67
|
+
},
|
|
68
|
+
];
|
|
69
|
+
/**
|
|
70
|
+
* GCP destructive command patterns
|
|
71
|
+
*/
|
|
72
|
+
const GCP_PATTERNS = [
|
|
73
|
+
// Compute instance deletion
|
|
74
|
+
{
|
|
75
|
+
pattern: /\bgcloud\s+compute\s+instances\s+delete\b/i,
|
|
76
|
+
operation: 'instances delete',
|
|
77
|
+
description: 'Delete GCP compute instances',
|
|
78
|
+
},
|
|
79
|
+
// Project deletion
|
|
80
|
+
{
|
|
81
|
+
pattern: /\bgcloud\s+projects\s+delete\b/i,
|
|
82
|
+
operation: 'projects delete',
|
|
83
|
+
description: 'Delete GCP project',
|
|
84
|
+
},
|
|
85
|
+
// GKE cluster deletion
|
|
86
|
+
{
|
|
87
|
+
pattern: /\bgcloud\s+container\s+clusters\s+delete\b/i,
|
|
88
|
+
operation: 'clusters delete',
|
|
89
|
+
description: 'Delete GKE cluster',
|
|
90
|
+
},
|
|
91
|
+
// Cloud SQL deletion
|
|
92
|
+
{
|
|
93
|
+
pattern: /\bgcloud\s+sql\s+instances\s+delete\b/i,
|
|
94
|
+
operation: 'sql delete',
|
|
95
|
+
description: 'Delete Cloud SQL instance',
|
|
96
|
+
},
|
|
97
|
+
// Cloud Functions deletion
|
|
98
|
+
{
|
|
99
|
+
pattern: /\bgcloud\s+functions\s+delete\b/i,
|
|
100
|
+
operation: 'functions delete',
|
|
101
|
+
description: 'Delete Cloud Function',
|
|
102
|
+
},
|
|
103
|
+
// Storage bucket deletion
|
|
104
|
+
{
|
|
105
|
+
pattern: /\bgsutil\s+(?:-m\s+)?rm\s+-r\s+gs:\/\/([^\s]+)/i,
|
|
106
|
+
operation: 'gsutil rm -r',
|
|
107
|
+
description: 'Remove GCS bucket recursively',
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
pattern: /\bgcloud\s+storage\s+(?:buckets\s+)?delete\b/i,
|
|
111
|
+
operation: 'storage delete',
|
|
112
|
+
description: 'Delete GCS bucket',
|
|
113
|
+
},
|
|
114
|
+
// Pub/Sub deletion
|
|
115
|
+
{
|
|
116
|
+
pattern: /\bgcloud\s+pubsub\s+(?:topics|subscriptions)\s+delete\b/i,
|
|
117
|
+
operation: 'pubsub delete',
|
|
118
|
+
description: 'Delete Pub/Sub resource',
|
|
119
|
+
},
|
|
120
|
+
];
|
|
121
|
+
/**
|
|
122
|
+
* Azure destructive command patterns
|
|
123
|
+
*/
|
|
124
|
+
const AZURE_PATTERNS = [
|
|
125
|
+
// VM deletion
|
|
126
|
+
{
|
|
127
|
+
pattern: /\baz\s+vm\s+delete\b/i,
|
|
128
|
+
operation: 'vm delete',
|
|
129
|
+
description: 'Delete Azure VM',
|
|
130
|
+
},
|
|
131
|
+
// Resource group deletion (VERY dangerous - deletes everything in group)
|
|
132
|
+
{
|
|
133
|
+
pattern: /\baz\s+group\s+delete\b/i,
|
|
134
|
+
operation: 'group delete',
|
|
135
|
+
description: 'Delete Azure resource group',
|
|
136
|
+
},
|
|
137
|
+
// Storage account deletion
|
|
138
|
+
{
|
|
139
|
+
pattern: /\baz\s+storage\s+account\s+delete\b/i,
|
|
140
|
+
operation: 'storage delete',
|
|
141
|
+
description: 'Delete Azure storage account',
|
|
142
|
+
},
|
|
143
|
+
// AKS cluster deletion
|
|
144
|
+
{
|
|
145
|
+
pattern: /\baz\s+aks\s+delete\b/i,
|
|
146
|
+
operation: 'aks delete',
|
|
147
|
+
description: 'Delete AKS cluster',
|
|
148
|
+
},
|
|
149
|
+
// SQL database deletion
|
|
150
|
+
{
|
|
151
|
+
pattern: /\baz\s+sql\s+(?:db|server)\s+delete\b/i,
|
|
152
|
+
operation: 'sql delete',
|
|
153
|
+
description: 'Delete Azure SQL resource',
|
|
154
|
+
},
|
|
155
|
+
// Function app deletion
|
|
156
|
+
{
|
|
157
|
+
pattern: /\baz\s+functionapp\s+delete\b/i,
|
|
158
|
+
operation: 'functionapp delete',
|
|
159
|
+
description: 'Delete Azure Function app',
|
|
160
|
+
},
|
|
161
|
+
// App Service deletion
|
|
162
|
+
{
|
|
163
|
+
pattern: /\baz\s+webapp\s+delete\b/i,
|
|
164
|
+
operation: 'webapp delete',
|
|
165
|
+
description: 'Delete Azure Web App',
|
|
166
|
+
},
|
|
167
|
+
// Container registry deletion
|
|
168
|
+
{
|
|
169
|
+
pattern: /\baz\s+acr\s+delete\b/i,
|
|
170
|
+
operation: 'acr delete',
|
|
171
|
+
description: 'Delete Azure Container Registry',
|
|
172
|
+
},
|
|
173
|
+
];
|
|
174
|
+
/**
|
|
175
|
+
* Kubernetes destructive command patterns
|
|
176
|
+
*/
|
|
177
|
+
const KUBERNETES_PATTERNS = [
|
|
178
|
+
// Delete namespace (deletes everything in it)
|
|
179
|
+
{
|
|
180
|
+
pattern: /\bkubectl\s+delete\s+(?:ns|namespace)\s+(\S+)/i,
|
|
181
|
+
operation: 'delete namespace',
|
|
182
|
+
description: 'Delete Kubernetes namespace',
|
|
183
|
+
critical: true,
|
|
184
|
+
},
|
|
185
|
+
// Delete all pods
|
|
186
|
+
{
|
|
187
|
+
pattern: /\bkubectl\s+delete\s+pods?\s+--all\b/i,
|
|
188
|
+
operation: 'delete pods --all',
|
|
189
|
+
description: 'Delete all pods',
|
|
190
|
+
critical: true,
|
|
191
|
+
},
|
|
192
|
+
// Delete all resources of a type
|
|
193
|
+
{
|
|
194
|
+
pattern: /\bkubectl\s+delete\s+\S+\s+--all\b/i,
|
|
195
|
+
operation: 'delete --all',
|
|
196
|
+
description: 'Delete all resources',
|
|
197
|
+
},
|
|
198
|
+
// Delete with -A (all namespaces)
|
|
199
|
+
{
|
|
200
|
+
pattern: /\bkubectl\s+delete\s+.*-A\b/i,
|
|
201
|
+
operation: 'delete -A',
|
|
202
|
+
description: 'Delete across all namespaces',
|
|
203
|
+
},
|
|
204
|
+
// Delete deployment
|
|
205
|
+
{
|
|
206
|
+
pattern: /\bkubectl\s+delete\s+(?:deploy|deployment)\s+(\S+)/i,
|
|
207
|
+
operation: 'delete deployment',
|
|
208
|
+
description: 'Delete Kubernetes deployment',
|
|
209
|
+
},
|
|
210
|
+
// Delete service
|
|
211
|
+
{
|
|
212
|
+
pattern: /\bkubectl\s+delete\s+(?:svc|service)\s+(\S+)/i,
|
|
213
|
+
operation: 'delete service',
|
|
214
|
+
description: 'Delete Kubernetes service',
|
|
215
|
+
},
|
|
216
|
+
// Delete PVC
|
|
217
|
+
{
|
|
218
|
+
pattern: /\bkubectl\s+delete\s+pvc\s+(\S+)/i,
|
|
219
|
+
operation: 'delete pvc',
|
|
220
|
+
description: 'Delete persistent volume claim',
|
|
221
|
+
},
|
|
222
|
+
// Delete from file with force
|
|
223
|
+
{
|
|
224
|
+
pattern: /\bkubectl\s+delete\s+-f\s+\S+\s+--force\b/i,
|
|
225
|
+
operation: 'delete -f --force',
|
|
226
|
+
description: 'Force delete Kubernetes resources',
|
|
227
|
+
},
|
|
228
|
+
// Helm uninstall
|
|
229
|
+
{
|
|
230
|
+
pattern: /\bhelm\s+(?:delete|uninstall)\s+(\S+)/i,
|
|
231
|
+
operation: 'helm uninstall',
|
|
232
|
+
description: 'Uninstall Helm release',
|
|
233
|
+
},
|
|
234
|
+
];
|
|
235
|
+
/**
|
|
236
|
+
* Terraform destructive command patterns
|
|
237
|
+
*/
|
|
238
|
+
const TERRAFORM_PATTERNS = [
|
|
239
|
+
// Terraform destroy
|
|
240
|
+
{
|
|
241
|
+
pattern: /\bterraform\s+destroy\b/i,
|
|
242
|
+
operation: 'destroy',
|
|
243
|
+
description: 'Destroy Terraform-managed infrastructure',
|
|
244
|
+
critical: true,
|
|
245
|
+
},
|
|
246
|
+
// Terraform apply with auto-approve (can be destructive)
|
|
247
|
+
{
|
|
248
|
+
pattern: /\bterraform\s+apply\s+.*-auto-approve\b/i,
|
|
249
|
+
operation: 'apply -auto-approve',
|
|
250
|
+
description: 'Auto-approve Terraform changes',
|
|
251
|
+
},
|
|
252
|
+
// Terraform state rm
|
|
253
|
+
{
|
|
254
|
+
pattern: /\bterraform\s+state\s+rm\b/i,
|
|
255
|
+
operation: 'state rm',
|
|
256
|
+
description: 'Remove resource from Terraform state',
|
|
257
|
+
},
|
|
258
|
+
// Terragrunt destroy
|
|
259
|
+
{
|
|
260
|
+
pattern: /\bterragrunt\s+destroy\b/i,
|
|
261
|
+
operation: 'terragrunt destroy',
|
|
262
|
+
description: 'Destroy Terragrunt-managed infrastructure',
|
|
263
|
+
critical: true,
|
|
264
|
+
},
|
|
265
|
+
// Pulumi destroy
|
|
266
|
+
{
|
|
267
|
+
pattern: /\bpulumi\s+destroy\b/i,
|
|
268
|
+
operation: 'pulumi destroy',
|
|
269
|
+
description: 'Destroy Pulumi-managed infrastructure',
|
|
270
|
+
critical: true,
|
|
271
|
+
},
|
|
272
|
+
];
|
|
273
|
+
/**
|
|
274
|
+
* Git destructive command patterns
|
|
275
|
+
*/
|
|
276
|
+
const GIT_PATTERNS = [
|
|
277
|
+
// Force push to main/master
|
|
278
|
+
{
|
|
279
|
+
pattern: /\bgit\s+push\s+(?:--force|-f)\s+(?:\S+\s+)?(?:main|master)\b/i,
|
|
280
|
+
operation: 'push --force main/master',
|
|
281
|
+
description: 'Force push to main/master branch',
|
|
282
|
+
critical: true,
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
pattern: /\bgit\s+push\s+\S+\s+(?:main|master)\s+(?:--force|-f)\b/i,
|
|
286
|
+
operation: 'push --force main/master',
|
|
287
|
+
description: 'Force push to main/master branch',
|
|
288
|
+
critical: true,
|
|
289
|
+
},
|
|
290
|
+
// Git reset --hard
|
|
291
|
+
{
|
|
292
|
+
pattern: /\bgit\s+reset\s+--hard\b/i,
|
|
293
|
+
operation: 'reset --hard',
|
|
294
|
+
description: 'Hard reset discards local changes',
|
|
295
|
+
},
|
|
296
|
+
// Git clean -fd (force delete untracked)
|
|
297
|
+
{
|
|
298
|
+
pattern: /\bgit\s+clean\s+(?:-[^\s]*)?-f(?:[^\s]*)?\s*(?:-d)?/i,
|
|
299
|
+
operation: 'clean -fd',
|
|
300
|
+
description: 'Force delete untracked files',
|
|
301
|
+
},
|
|
302
|
+
// Git branch -D (force delete)
|
|
303
|
+
{
|
|
304
|
+
pattern: /\bgit\s+branch\s+(?:-D|--delete\s+--force)\s+(\S+)/i,
|
|
305
|
+
operation: 'branch -D',
|
|
306
|
+
description: 'Force delete branch',
|
|
307
|
+
},
|
|
308
|
+
// Git checkout . (discard changes)
|
|
309
|
+
{
|
|
310
|
+
pattern: /\bgit\s+checkout\s+\.\s*$/i,
|
|
311
|
+
operation: 'checkout .',
|
|
312
|
+
description: 'Discard all local changes',
|
|
313
|
+
},
|
|
314
|
+
// Git restore . (discard changes)
|
|
315
|
+
{
|
|
316
|
+
pattern: /\bgit\s+restore\s+(?:--staged\s+)?\.\s*$/i,
|
|
317
|
+
operation: 'restore .',
|
|
318
|
+
description: 'Discard all local changes',
|
|
319
|
+
},
|
|
320
|
+
// Git rebase with potential data loss
|
|
321
|
+
{
|
|
322
|
+
pattern: /\bgit\s+rebase\s+(?:-i\s+)?(?:main|master|origin\/main|origin\/master)\b/i,
|
|
323
|
+
operation: 'rebase',
|
|
324
|
+
description: 'Rebase onto main/master (can rewrite history)',
|
|
325
|
+
},
|
|
326
|
+
];
|
|
327
|
+
/**
|
|
328
|
+
* Match AWS commands
|
|
329
|
+
*/
|
|
330
|
+
export function matchAwsCommand(command) {
|
|
331
|
+
for (const { pattern, operation } of AWS_PATTERNS) {
|
|
332
|
+
const match = command.match(pattern);
|
|
333
|
+
if (match) {
|
|
334
|
+
return {
|
|
335
|
+
matched: true,
|
|
336
|
+
command,
|
|
337
|
+
provider: 'aws',
|
|
338
|
+
operation,
|
|
339
|
+
affectedResource: match[1] || undefined,
|
|
340
|
+
confidence: 0.9,
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
return { matched: false, confidence: 0 };
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Match GCP commands
|
|
348
|
+
*/
|
|
349
|
+
export function matchGcpCommand(command) {
|
|
350
|
+
for (const { pattern, operation } of GCP_PATTERNS) {
|
|
351
|
+
const match = command.match(pattern);
|
|
352
|
+
if (match) {
|
|
353
|
+
return {
|
|
354
|
+
matched: true,
|
|
355
|
+
command,
|
|
356
|
+
provider: 'gcp',
|
|
357
|
+
operation,
|
|
358
|
+
affectedResource: match[1] || undefined,
|
|
359
|
+
confidence: 0.9,
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
return { matched: false, confidence: 0 };
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Match Azure commands
|
|
367
|
+
*/
|
|
368
|
+
export function matchAzureCommand(command) {
|
|
369
|
+
for (const { pattern, operation } of AZURE_PATTERNS) {
|
|
370
|
+
const match = command.match(pattern);
|
|
371
|
+
if (match) {
|
|
372
|
+
return {
|
|
373
|
+
matched: true,
|
|
374
|
+
command,
|
|
375
|
+
provider: 'azure',
|
|
376
|
+
operation,
|
|
377
|
+
affectedResource: match[1] || undefined,
|
|
378
|
+
confidence: 0.9,
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
return { matched: false, confidence: 0 };
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Match Kubernetes commands
|
|
386
|
+
*/
|
|
387
|
+
export function matchKubernetesCommand(command) {
|
|
388
|
+
for (const { pattern, operation, critical } of KUBERNETES_PATTERNS) {
|
|
389
|
+
const match = command.match(pattern);
|
|
390
|
+
if (match) {
|
|
391
|
+
return {
|
|
392
|
+
matched: true,
|
|
393
|
+
command,
|
|
394
|
+
provider: 'kubernetes',
|
|
395
|
+
operation,
|
|
396
|
+
affectedResource: match[1] || undefined,
|
|
397
|
+
confidence: critical ? 0.95 : 0.85,
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
return { matched: false, confidence: 0 };
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Match Terraform/IaC commands
|
|
405
|
+
*/
|
|
406
|
+
export function matchTerraformCommand(command) {
|
|
407
|
+
for (const { pattern, operation, critical } of TERRAFORM_PATTERNS) {
|
|
408
|
+
const match = command.match(pattern);
|
|
409
|
+
if (match) {
|
|
410
|
+
return {
|
|
411
|
+
matched: true,
|
|
412
|
+
command,
|
|
413
|
+
provider: 'terraform',
|
|
414
|
+
operation,
|
|
415
|
+
affectedResource: match[1] || undefined,
|
|
416
|
+
confidence: critical ? 0.95 : 0.85,
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
return { matched: false, confidence: 0 };
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Match Git destructive commands
|
|
424
|
+
*/
|
|
425
|
+
export function matchGitCommand(command) {
|
|
426
|
+
for (const { pattern, operation, critical } of GIT_PATTERNS) {
|
|
427
|
+
const match = command.match(pattern);
|
|
428
|
+
if (match) {
|
|
429
|
+
return {
|
|
430
|
+
matched: true,
|
|
431
|
+
command,
|
|
432
|
+
provider: 'git',
|
|
433
|
+
operation,
|
|
434
|
+
affectedResource: match[1] || undefined,
|
|
435
|
+
confidence: critical ? 0.95 : 0.8,
|
|
436
|
+
};
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
return { matched: false, confidence: 0 };
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Comprehensive cloud command matching
|
|
443
|
+
*/
|
|
444
|
+
export function matchCloudCommand(command) {
|
|
445
|
+
// Try all cloud provider patterns
|
|
446
|
+
const awsResult = matchAwsCommand(command);
|
|
447
|
+
if (awsResult.matched)
|
|
448
|
+
return awsResult;
|
|
449
|
+
const gcpResult = matchGcpCommand(command);
|
|
450
|
+
if (gcpResult.matched)
|
|
451
|
+
return gcpResult;
|
|
452
|
+
const azureResult = matchAzureCommand(command);
|
|
453
|
+
if (azureResult.matched)
|
|
454
|
+
return azureResult;
|
|
455
|
+
const k8sResult = matchKubernetesCommand(command);
|
|
456
|
+
if (k8sResult.matched)
|
|
457
|
+
return k8sResult;
|
|
458
|
+
const tfResult = matchTerraformCommand(command);
|
|
459
|
+
if (tfResult.matched)
|
|
460
|
+
return tfResult;
|
|
461
|
+
const gitResult = matchGitCommand(command);
|
|
462
|
+
if (gitResult.matched)
|
|
463
|
+
return gitResult;
|
|
464
|
+
return { matched: false, confidence: 0 };
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* Cloud detector class
|
|
468
|
+
*/
|
|
469
|
+
export class CloudDetector {
|
|
470
|
+
severity;
|
|
471
|
+
constructor(severity = 'critical') {
|
|
472
|
+
this.severity = severity;
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Extract command from tool context
|
|
476
|
+
*/
|
|
477
|
+
extractCommand(context) {
|
|
478
|
+
const input = context.toolInput;
|
|
479
|
+
// Direct command field
|
|
480
|
+
if (typeof input.command === 'string') {
|
|
481
|
+
return input.command;
|
|
482
|
+
}
|
|
483
|
+
// Shell/bash command field
|
|
484
|
+
if (typeof input.shell === 'string') {
|
|
485
|
+
return input.shell;
|
|
486
|
+
}
|
|
487
|
+
if (typeof input.bash === 'string') {
|
|
488
|
+
return input.bash;
|
|
489
|
+
}
|
|
490
|
+
// Script field
|
|
491
|
+
if (typeof input.script === 'string') {
|
|
492
|
+
return input.script;
|
|
493
|
+
}
|
|
494
|
+
// Code field
|
|
495
|
+
if (typeof input.code === 'string') {
|
|
496
|
+
return input.code;
|
|
497
|
+
}
|
|
498
|
+
// CLI/args field
|
|
499
|
+
if (typeof input.cli === 'string') {
|
|
500
|
+
return input.cli;
|
|
501
|
+
}
|
|
502
|
+
if (typeof input.args === 'string') {
|
|
503
|
+
return input.args;
|
|
504
|
+
}
|
|
505
|
+
// Text content
|
|
506
|
+
if (typeof input.text === 'string') {
|
|
507
|
+
return input.text;
|
|
508
|
+
}
|
|
509
|
+
// Content field
|
|
510
|
+
if (typeof input.content === 'string') {
|
|
511
|
+
return input.content;
|
|
512
|
+
}
|
|
513
|
+
return null;
|
|
514
|
+
}
|
|
515
|
+
detect(context) {
|
|
516
|
+
const command = this.extractCommand(context);
|
|
517
|
+
if (!command) {
|
|
518
|
+
return null;
|
|
519
|
+
}
|
|
520
|
+
const result = matchCloudCommand(command);
|
|
521
|
+
if (!result.matched) {
|
|
522
|
+
return null;
|
|
523
|
+
}
|
|
524
|
+
// Determine the metadata type based on provider
|
|
525
|
+
const metadataType = result.provider === 'git' ? 'git' : 'cloud';
|
|
526
|
+
const providerDescriptions = {
|
|
527
|
+
aws: 'AWS',
|
|
528
|
+
gcp: 'Google Cloud',
|
|
529
|
+
azure: 'Azure',
|
|
530
|
+
kubernetes: 'Kubernetes',
|
|
531
|
+
terraform: 'Terraform/IaC',
|
|
532
|
+
git: 'Git',
|
|
533
|
+
};
|
|
534
|
+
const providerDesc = providerDescriptions[result.provider || 'unknown'] || result.provider;
|
|
535
|
+
return {
|
|
536
|
+
detected: true,
|
|
537
|
+
category: 'destructive',
|
|
538
|
+
severity: this.severity,
|
|
539
|
+
confidence: result.confidence,
|
|
540
|
+
reason: `Dangerous ${providerDesc} operation detected: ${result.operation}`,
|
|
541
|
+
metadata: {
|
|
542
|
+
command: result.command,
|
|
543
|
+
type: metadataType,
|
|
544
|
+
operation: result.operation,
|
|
545
|
+
affectedResource: result.affectedResource,
|
|
546
|
+
},
|
|
547
|
+
};
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
/**
|
|
551
|
+
* Create a cloud detector with the given severity
|
|
552
|
+
*/
|
|
553
|
+
export function createCloudDetector(severity = 'critical') {
|
|
554
|
+
return new CloudDetector(severity);
|
|
555
|
+
}
|
|
556
|
+
//# sourceMappingURL=cloud-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-detector.js","sourceRoot":"","sources":["../../../../src/detectors/destructive/cloud-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code Detector
|
|
3
|
+
* Detects dangerous code patterns for file/directory deletion across multiple languages
|
|
4
|
+
*/
|
|
5
|
+
import type { CodeMatchResult, DetectionContext, DestructiveDetectionResult, SubDetector } from './types.js';
|
|
6
|
+
import type { Severity } from '../../config/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* Match Python code patterns
|
|
9
|
+
*/
|
|
10
|
+
export declare function matchPythonCode(code: string): CodeMatchResult;
|
|
11
|
+
/**
|
|
12
|
+
* Match Node.js code patterns
|
|
13
|
+
*/
|
|
14
|
+
export declare function matchNodeCode(code: string): CodeMatchResult;
|
|
15
|
+
/**
|
|
16
|
+
* Match Go code patterns
|
|
17
|
+
*/
|
|
18
|
+
export declare function matchGoCode(code: string): CodeMatchResult;
|
|
19
|
+
/**
|
|
20
|
+
* Match Rust code patterns
|
|
21
|
+
*/
|
|
22
|
+
export declare function matchRustCode(code: string): CodeMatchResult;
|
|
23
|
+
/**
|
|
24
|
+
* Match Ruby code patterns
|
|
25
|
+
*/
|
|
26
|
+
export declare function matchRubyCode(code: string): CodeMatchResult;
|
|
27
|
+
/**
|
|
28
|
+
* Match Java/Kotlin code patterns
|
|
29
|
+
*/
|
|
30
|
+
export declare function matchJavaCode(code: string): CodeMatchResult;
|
|
31
|
+
/**
|
|
32
|
+
* Match C# code patterns
|
|
33
|
+
*/
|
|
34
|
+
export declare function matchCSharpCode(code: string): CodeMatchResult;
|
|
35
|
+
/**
|
|
36
|
+
* Match PHP code patterns
|
|
37
|
+
*/
|
|
38
|
+
export declare function matchPhpCode(code: string): CodeMatchResult;
|
|
39
|
+
/**
|
|
40
|
+
* Comprehensive code pattern matching
|
|
41
|
+
*/
|
|
42
|
+
export declare function matchCodePattern(code: string): CodeMatchResult;
|
|
43
|
+
/**
|
|
44
|
+
* Code detector class
|
|
45
|
+
*/
|
|
46
|
+
export declare class CodeDetector implements SubDetector {
|
|
47
|
+
private severity;
|
|
48
|
+
constructor(severity?: Severity);
|
|
49
|
+
/**
|
|
50
|
+
* Extract code from tool context
|
|
51
|
+
*/
|
|
52
|
+
private extractCode;
|
|
53
|
+
detect(context: DetectionContext): DestructiveDetectionResult | null;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Create a code detector with the given severity
|
|
57
|
+
*/
|
|
58
|
+
export declare function createCodeDetector(severity?: Severity): CodeDetector;
|
|
59
|
+
//# sourceMappingURL=code-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-detector.d.ts","sourceRoot":"","sources":["../../../../src/detectors/destructive/code-detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,0BAA0B,EAC1B,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAoStD;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAe7D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAe3D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAezD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAe3D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAe3D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAe3D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAe7D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAe1D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CA2B9D;AAED;;GAEG;AACH,qBAAa,YAAa,YAAW,WAAW;IAC9C,OAAO,CAAC,QAAQ,CAAW;gBAEf,QAAQ,GAAE,QAAqB;IAI3C;;OAEG;IACH,OAAO,CAAC,WAAW;IA8CnB,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,0BAA0B,GAAG,IAAI;CAuCrE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,GAAE,QAAqB,GAAG,YAAY,CAEhF"}
|