@vibecheckai/cli 2.5.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/LICENSE +21 -0
- package/README.md +532 -0
- package/dist/autopatch/verified-autopatch.d.ts +111 -0
- package/dist/autopatch/verified-autopatch.d.ts.map +1 -0
- package/dist/autopatch/verified-autopatch.js +503 -0
- package/dist/autopatch/verified-autopatch.js.map +1 -0
- package/dist/bundles/guardrail-core.js +25799 -0
- package/dist/bundles/guardrail-security.js +208687 -0
- package/dist/bundles/guardrail-ship.js +2318 -0
- package/dist/bundles/index.js +8 -0
- package/dist/commands/autopilot-decision.d.ts +24 -0
- package/dist/commands/autopilot-decision.d.ts.map +1 -0
- package/dist/commands/autopilot-decision.js +304 -0
- package/dist/commands/autopilot-decision.js.map +1 -0
- package/dist/commands/autopilot.d.ts +33 -0
- package/dist/commands/autopilot.d.ts.map +1 -0
- package/dist/commands/autopilot.js +1539 -0
- package/dist/commands/autopilot.js.map +1 -0
- package/dist/commands/baseline.d.ts +7 -0
- package/dist/commands/baseline.d.ts.map +1 -0
- package/dist/commands/baseline.js +79 -0
- package/dist/commands/baseline.js.map +1 -0
- package/dist/commands/cache.d.ts +13 -0
- package/dist/commands/cache.d.ts.map +1 -0
- package/dist/commands/cache.js +165 -0
- package/dist/commands/cache.js.map +1 -0
- package/dist/commands/checkpoint.d.ts +8 -0
- package/dist/commands/checkpoint.d.ts.map +1 -0
- package/dist/commands/checkpoint.js +35 -0
- package/dist/commands/checkpoint.js.map +1 -0
- package/dist/commands/context.d.ts +8 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +340 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/debug.d.ts +78 -0
- package/dist/commands/debug.d.ts.map +1 -0
- package/dist/commands/debug.js +381 -0
- package/dist/commands/debug.js.map +1 -0
- package/dist/commands/doctor.d.ts +17 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +226 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/evidence.d.ts +45 -0
- package/dist/commands/evidence.d.ts.map +1 -0
- package/dist/commands/evidence.js +197 -0
- package/dist/commands/evidence.js.map +1 -0
- package/dist/commands/explain.d.ts +8 -0
- package/dist/commands/explain.d.ts.map +1 -0
- package/dist/commands/explain.js +52 -0
- package/dist/commands/explain.js.map +1 -0
- package/dist/commands/fix-consolidated.d.ts +19 -0
- package/dist/commands/fix-consolidated.d.ts.map +1 -0
- package/dist/commands/fix-consolidated.js +165 -0
- package/dist/commands/fix-consolidated.js.map +1 -0
- package/dist/commands/index.d.ts +8 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +15 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +8 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +125 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/launcher.d.ts +10 -0
- package/dist/commands/launcher.d.ts.map +1 -0
- package/dist/commands/launcher.js +174 -0
- package/dist/commands/launcher.js.map +1 -0
- package/dist/commands/on.d.ts +8 -0
- package/dist/commands/on.d.ts.map +1 -0
- package/dist/commands/on.js +123 -0
- package/dist/commands/on.js.map +1 -0
- package/dist/commands/preview.d.ts +54 -0
- package/dist/commands/preview.d.ts.map +1 -0
- package/dist/commands/preview.js +352 -0
- package/dist/commands/preview.js.map +1 -0
- package/dist/commands/quality/check.d.ts +31 -0
- package/dist/commands/quality/check.d.ts.map +1 -0
- package/dist/commands/quality/check.js +242 -0
- package/dist/commands/quality/check.js.map +1 -0
- package/dist/commands/quality/index.d.ts +8 -0
- package/dist/commands/quality/index.d.ts.map +1 -0
- package/dist/commands/quality/index.js +14 -0
- package/dist/commands/quality/index.js.map +1 -0
- package/dist/commands/quality/setup-quality.d.ts +23 -0
- package/dist/commands/quality/setup-quality.d.ts.map +1 -0
- package/dist/commands/quality/setup-quality.js +452 -0
- package/dist/commands/quality/setup-quality.js.map +1 -0
- package/dist/commands/quality/tidy.d.ts +41 -0
- package/dist/commands/quality/tidy.d.ts.map +1 -0
- package/dist/commands/quality/tidy.js +466 -0
- package/dist/commands/quality/tidy.js.map +1 -0
- package/dist/commands/quality/utils.d.ts +73 -0
- package/dist/commands/quality/utils.d.ts.map +1 -0
- package/dist/commands/quality/utils.js +158 -0
- package/dist/commands/quality/utils.js.map +1 -0
- package/dist/commands/replay.d.ts +8 -0
- package/dist/commands/replay.d.ts.map +1 -0
- package/dist/commands/replay.js +52 -0
- package/dist/commands/replay.js.map +1 -0
- package/dist/commands/scan-consolidated.d.ts +61 -0
- package/dist/commands/scan-consolidated.d.ts.map +1 -0
- package/dist/commands/scan-consolidated.js +243 -0
- package/dist/commands/scan-consolidated.js.map +1 -0
- package/dist/commands/scan-secrets.d.ts +47 -0
- package/dist/commands/scan-secrets.d.ts.map +1 -0
- package/dist/commands/scan-secrets.js +225 -0
- package/dist/commands/scan-secrets.js.map +1 -0
- package/dist/commands/scan-vulnerabilities-enhanced.d.ts +41 -0
- package/dist/commands/scan-vulnerabilities-enhanced.d.ts.map +1 -0
- package/dist/commands/scan-vulnerabilities-enhanced.js +368 -0
- package/dist/commands/scan-vulnerabilities-enhanced.js.map +1 -0
- package/dist/commands/scan-vulnerabilities-osv.d.ts +58 -0
- package/dist/commands/scan-vulnerabilities-osv.d.ts.map +1 -0
- package/dist/commands/scan-vulnerabilities-osv.js +716 -0
- package/dist/commands/scan-vulnerabilities-osv.js.map +1 -0
- package/dist/commands/scan-vulnerabilities.d.ts +32 -0
- package/dist/commands/scan-vulnerabilities.d.ts.map +1 -0
- package/dist/commands/scan-vulnerabilities.js +283 -0
- package/dist/commands/scan-vulnerabilities.js.map +1 -0
- package/dist/commands/secrets-allowlist.d.ts +7 -0
- package/dist/commands/secrets-allowlist.d.ts.map +1 -0
- package/dist/commands/secrets-allowlist.js +85 -0
- package/dist/commands/secrets-allowlist.js.map +1 -0
- package/dist/commands/ship-consolidated.d.ts +58 -0
- package/dist/commands/ship-consolidated.d.ts.map +1 -0
- package/dist/commands/ship-consolidated.js +515 -0
- package/dist/commands/ship-consolidated.js.map +1 -0
- package/dist/commands/stats.d.ts +8 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +134 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/upgrade.d.ts +8 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +30 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/fix/analytics.d.ts +121 -0
- package/dist/fix/analytics.d.ts.map +1 -0
- package/dist/fix/analytics.js +289 -0
- package/dist/fix/analytics.js.map +1 -0
- package/dist/fix/applicator.d.ts +44 -0
- package/dist/fix/applicator.d.ts.map +1 -0
- package/dist/fix/applicator.js +144 -0
- package/dist/fix/applicator.js.map +1 -0
- package/dist/fix/audit.d.ts +61 -0
- package/dist/fix/audit.d.ts.map +1 -0
- package/dist/fix/audit.js +149 -0
- package/dist/fix/audit.js.map +1 -0
- package/dist/fix/backup.d.ts +38 -0
- package/dist/fix/backup.d.ts.map +1 -0
- package/dist/fix/backup.js +154 -0
- package/dist/fix/backup.js.map +1 -0
- package/dist/fix/config.d.ts +78 -0
- package/dist/fix/config.d.ts.map +1 -0
- package/dist/fix/config.js +200 -0
- package/dist/fix/config.js.map +1 -0
- package/dist/fix/engine.d.ts +55 -0
- package/dist/fix/engine.d.ts.map +1 -0
- package/dist/fix/engine.js +285 -0
- package/dist/fix/engine.js.map +1 -0
- package/dist/fix/impact.d.ts +74 -0
- package/dist/fix/impact.d.ts.map +1 -0
- package/dist/fix/impact.js +281 -0
- package/dist/fix/impact.js.map +1 -0
- package/dist/fix/index.d.ts +5 -0
- package/dist/fix/index.d.ts.map +1 -0
- package/dist/fix/index.js +12 -0
- package/dist/fix/index.js.map +1 -0
- package/dist/fix/interactive.d.ts +22 -0
- package/dist/fix/interactive.d.ts.map +1 -0
- package/dist/fix/interactive.js +172 -0
- package/dist/fix/interactive.js.map +1 -0
- package/dist/fix/learning.d.ts +109 -0
- package/dist/fix/learning.d.ts.map +1 -0
- package/dist/fix/learning.js +296 -0
- package/dist/fix/learning.js.map +1 -0
- package/dist/fix/metrics.d.ts +106 -0
- package/dist/fix/metrics.d.ts.map +1 -0
- package/dist/fix/metrics.js +138 -0
- package/dist/fix/metrics.js.map +1 -0
- package/dist/fix/parallel.d.ts +69 -0
- package/dist/fix/parallel.d.ts.map +1 -0
- package/dist/fix/parallel.js +203 -0
- package/dist/fix/parallel.js.map +1 -0
- package/dist/fix/report.d.ts +40 -0
- package/dist/fix/report.d.ts.map +1 -0
- package/dist/fix/report.js +212 -0
- package/dist/fix/report.js.map +1 -0
- package/dist/fix/strategy.d.ts +53 -0
- package/dist/fix/strategy.d.ts.map +1 -0
- package/dist/fix/strategy.js +143 -0
- package/dist/fix/strategy.js.map +1 -0
- package/dist/fix/templates.d.ts +58 -0
- package/dist/fix/templates.d.ts.map +1 -0
- package/dist/fix/templates.js +259 -0
- package/dist/fix/templates.js.map +1 -0
- package/dist/fix/testing.d.ts +68 -0
- package/dist/fix/testing.d.ts.map +1 -0
- package/dist/fix/testing.js +245 -0
- package/dist/fix/testing.js.map +1 -0
- package/dist/fix/validation.d.ts +71 -0
- package/dist/fix/validation.d.ts.map +1 -0
- package/dist/fix/validation.js +267 -0
- package/dist/fix/validation.js.map +1 -0
- package/dist/fix/visualization.d.ts +73 -0
- package/dist/fix/visualization.d.ts.map +1 -0
- package/dist/fix/visualization.js +243 -0
- package/dist/fix/visualization.js.map +1 -0
- package/dist/formatters/index.d.ts +6 -0
- package/dist/formatters/index.d.ts.map +1 -0
- package/dist/formatters/index.js +11 -0
- package/dist/formatters/index.js.map +1 -0
- package/dist/formatters/sarif-enhanced.d.ts +78 -0
- package/dist/formatters/sarif-enhanced.d.ts.map +1 -0
- package/dist/formatters/sarif-enhanced.js +144 -0
- package/dist/formatters/sarif-enhanced.js.map +1 -0
- package/dist/formatters/sarif-v2.d.ts +121 -0
- package/dist/formatters/sarif-v2.d.ts.map +1 -0
- package/dist/formatters/sarif-v2.js +356 -0
- package/dist/formatters/sarif-v2.js.map +1 -0
- package/dist/formatters/sarif.d.ts +72 -0
- package/dist/formatters/sarif.d.ts.map +1 -0
- package/dist/formatters/sarif.js +146 -0
- package/dist/formatters/sarif.js.map +1 -0
- package/dist/index.d.ts +61 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4455 -0
- package/dist/index.js.map +1 -0
- package/dist/init/ci-generator.d.ts +18 -0
- package/dist/init/ci-generator.d.ts.map +1 -0
- package/dist/init/ci-generator.js +317 -0
- package/dist/init/ci-generator.js.map +1 -0
- package/dist/init/detect-framework.d.ts +15 -0
- package/dist/init/detect-framework.d.ts.map +1 -0
- package/dist/init/detect-framework.js +301 -0
- package/dist/init/detect-framework.js.map +1 -0
- package/dist/init/hooks-installer.d.ts +22 -0
- package/dist/init/hooks-installer.d.ts.map +1 -0
- package/dist/init/hooks-installer.js +310 -0
- package/dist/init/hooks-installer.js.map +1 -0
- package/dist/init/index.d.ts +8 -0
- package/dist/init/index.d.ts.map +1 -0
- package/dist/init/index.js +22 -0
- package/dist/init/index.js.map +1 -0
- package/dist/init/templates.d.ts +401 -0
- package/dist/init/templates.d.ts.map +1 -0
- package/dist/init/templates.js +240 -0
- package/dist/init/templates.js.map +1 -0
- package/dist/mcp/server.d.ts +12 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +42 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/telemetry.d.ts +40 -0
- package/dist/mcp/telemetry.d.ts.map +1 -0
- package/dist/mcp/telemetry.js +98 -0
- package/dist/mcp/telemetry.js.map +1 -0
- package/dist/reality/no-dead-buttons/button-sweep-generator.d.ts +32 -0
- package/dist/reality/no-dead-buttons/button-sweep-generator.d.ts.map +1 -0
- package/dist/reality/no-dead-buttons/button-sweep-generator.js +236 -0
- package/dist/reality/no-dead-buttons/button-sweep-generator.js.map +1 -0
- package/dist/reality/no-dead-buttons/index.d.ts +11 -0
- package/dist/reality/no-dead-buttons/index.d.ts.map +1 -0
- package/dist/reality/no-dead-buttons/index.js +18 -0
- package/dist/reality/no-dead-buttons/index.js.map +1 -0
- package/dist/reality/no-dead-buttons/static-scanner.d.ts +34 -0
- package/dist/reality/no-dead-buttons/static-scanner.d.ts.map +1 -0
- package/dist/reality/no-dead-buttons/static-scanner.js +230 -0
- package/dist/reality/no-dead-buttons/static-scanner.js.map +1 -0
- package/dist/reality/reality-graph.d.ts +192 -0
- package/dist/reality/reality-graph.d.ts.map +1 -0
- package/dist/reality/reality-graph.js +600 -0
- package/dist/reality/reality-graph.js.map +1 -0
- package/dist/reality/reality-runner.d.ts +89 -0
- package/dist/reality/reality-runner.d.ts.map +1 -0
- package/dist/reality/reality-runner.js +540 -0
- package/dist/reality/reality-runner.js.map +1 -0
- package/dist/reality/receipt-generator.d.ts +152 -0
- package/dist/reality/receipt-generator.d.ts.map +1 -0
- package/dist/reality/receipt-generator.js +495 -0
- package/dist/reality/receipt-generator.js.map +1 -0
- package/dist/reality/runtime-tracer.d.ts +75 -0
- package/dist/reality/runtime-tracer.d.ts.map +1 -0
- package/dist/reality/runtime-tracer.js +109 -0
- package/dist/reality/runtime-tracer.js.map +1 -0
- package/dist/runtime/auth-utils.d.ts +43 -0
- package/dist/runtime/auth-utils.d.ts.map +1 -0
- package/dist/runtime/auth-utils.js +130 -0
- package/dist/runtime/auth-utils.js.map +1 -0
- package/dist/runtime/cli-errors.d.ts +38 -0
- package/dist/runtime/cli-errors.d.ts.map +1 -0
- package/dist/runtime/cli-errors.js +354 -0
- package/dist/runtime/cli-errors.js.map +1 -0
- package/dist/runtime/client.d.ts +74 -0
- package/dist/runtime/client.d.ts.map +1 -0
- package/dist/runtime/client.js +222 -0
- package/dist/runtime/client.js.map +1 -0
- package/dist/runtime/creds.d.ts +48 -0
- package/dist/runtime/creds.d.ts.map +1 -0
- package/dist/runtime/creds.js +245 -0
- package/dist/runtime/creds.js.map +1 -0
- package/dist/runtime/exit-codes.d.ts +49 -0
- package/dist/runtime/exit-codes.d.ts.map +1 -0
- package/dist/runtime/exit-codes.js +93 -0
- package/dist/runtime/exit-codes.js.map +1 -0
- package/dist/runtime/index.d.ts +9 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +25 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/json-output.d.ts +42 -0
- package/dist/runtime/json-output.d.ts.map +1 -0
- package/dist/runtime/json-output.js +59 -0
- package/dist/runtime/json-output.js.map +1 -0
- package/dist/runtime/owner-mode.d.ts +48 -0
- package/dist/runtime/owner-mode.d.ts.map +1 -0
- package/dist/runtime/owner-mode.js +284 -0
- package/dist/runtime/owner-mode.js.map +1 -0
- package/dist/runtime/semver.d.ts +37 -0
- package/dist/runtime/semver.d.ts.map +1 -0
- package/dist/runtime/semver.js +110 -0
- package/dist/runtime/semver.js.map +1 -0
- package/dist/scan/dead-ui-detector.d.ts +48 -0
- package/dist/scan/dead-ui-detector.d.ts.map +1 -0
- package/dist/scan/dead-ui-detector.js +170 -0
- package/dist/scan/dead-ui-detector.js.map +1 -0
- package/dist/scan/playwright-sweep.d.ts +40 -0
- package/dist/scan/playwright-sweep.d.ts.map +1 -0
- package/dist/scan/playwright-sweep.js +216 -0
- package/dist/scan/playwright-sweep.js.map +1 -0
- package/dist/scan/proof-bundle.d.ts +25 -0
- package/dist/scan/proof-bundle.d.ts.map +1 -0
- package/dist/scan/proof-bundle.js +203 -0
- package/dist/scan/proof-bundle.js.map +1 -0
- package/dist/scan/proof-graph.d.ts +59 -0
- package/dist/scan/proof-graph.d.ts.map +1 -0
- package/dist/scan/proof-graph.js +64 -0
- package/dist/scan/proof-graph.js.map +1 -0
- package/dist/scan/reality-sniff.d.ts +56 -0
- package/dist/scan/reality-sniff.d.ts.map +1 -0
- package/dist/scan/reality-sniff.js +200 -0
- package/dist/scan/reality-sniff.js.map +1 -0
- package/dist/scan/structural-verifier.d.ts +20 -0
- package/dist/scan/structural-verifier.d.ts.map +1 -0
- package/dist/scan/structural-verifier.js +112 -0
- package/dist/scan/structural-verifier.js.map +1 -0
- package/dist/scan/verification-engine.d.ts +47 -0
- package/dist/scan/verification-engine.d.ts.map +1 -0
- package/dist/scan/verification-engine.js +141 -0
- package/dist/scan/verification-engine.js.map +1 -0
- package/dist/scanner/baseline.d.ts +52 -0
- package/dist/scanner/baseline.d.ts.map +1 -0
- package/dist/scanner/baseline.js +85 -0
- package/dist/scanner/baseline.js.map +1 -0
- package/dist/scanner/incremental.d.ts +30 -0
- package/dist/scanner/incremental.d.ts.map +1 -0
- package/dist/scanner/incremental.js +82 -0
- package/dist/scanner/incremental.js.map +1 -0
- package/dist/scanner/index.d.ts +8 -0
- package/dist/scanner/index.d.ts.map +1 -0
- package/dist/scanner/index.js +15 -0
- package/dist/scanner/index.js.map +1 -0
- package/dist/scanner/parallel.d.ts +43 -0
- package/dist/scanner/parallel.d.ts.map +1 -0
- package/dist/scanner/parallel.js +99 -0
- package/dist/scanner/parallel.js.map +1 -0
- package/dist/scanner/placeholder-detector.d.ts +56 -0
- package/dist/scanner/placeholder-detector.d.ts.map +1 -0
- package/dist/scanner/placeholder-detector.js +220 -0
- package/dist/scanner/placeholder-detector.js.map +1 -0
- package/dist/scanner/route-detector.d.ts +100 -0
- package/dist/scanner/route-detector.d.ts.map +1 -0
- package/dist/scanner/route-detector.js +455 -0
- package/dist/scanner/route-detector.js.map +1 -0
- package/dist/scanner/scoring.d.ts +67 -0
- package/dist/scanner/scoring.d.ts.map +1 -0
- package/dist/scanner/scoring.js +284 -0
- package/dist/scanner/scoring.js.map +1 -0
- package/dist/ship-baseline.d.ts +56 -0
- package/dist/ship-baseline.d.ts.map +1 -0
- package/dist/ship-baseline.js +194 -0
- package/dist/ship-baseline.js.map +1 -0
- package/dist/ship-config.d.ts +91 -0
- package/dist/ship-config.d.ts.map +1 -0
- package/dist/ship-config.js +133 -0
- package/dist/ship-config.js.map +1 -0
- package/dist/ship-data-loader.d.ts +70 -0
- package/dist/ship-data-loader.d.ts.map +1 -0
- package/dist/ship-data-loader.js +301 -0
- package/dist/ship-data-loader.js.map +1 -0
- package/dist/standalone.d.ts +1 -0
- package/dist/standalone.d.ts.map +1 -0
- package/dist/standalone.js +1 -0
- package/dist/standalone.js.map +1 -0
- package/dist/truth-pack/index.d.ts +102 -0
- package/dist/truth-pack/index.d.ts.map +1 -0
- package/dist/truth-pack/index.js +694 -0
- package/dist/truth-pack/index.js.map +1 -0
- package/dist/ui/frame.d.ts +68 -0
- package/dist/ui/frame.d.ts.map +1 -0
- package/dist/ui/frame.js +165 -0
- package/dist/ui/frame.js.map +1 -0
- package/dist/ui/index.d.ts +5 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +16 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui.d.ts +36 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +45 -0
- package/dist/ui.js.map +1 -0
- package/dist/utils/ai-helpers.d.ts +72 -0
- package/dist/utils/ai-helpers.d.ts.map +1 -0
- package/dist/utils/ai-helpers.js +339 -0
- package/dist/utils/ai-helpers.js.map +1 -0
- package/dist/utils/validation.d.ts +34 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +160 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AI Helpers
|
|
4
|
+
*
|
|
5
|
+
* Utility functions for AI-powered features across CLI commands
|
|
6
|
+
* Provides consistent AI capabilities with multi-provider support
|
|
7
|
+
*
|
|
8
|
+
* ⚠️ PRO FEATURE - Requires PRO tier subscription
|
|
9
|
+
*/
|
|
10
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
11
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.getAIProvider = getAIProvider;
|
|
15
|
+
exports.isAIAvailable = isAIAvailable;
|
|
16
|
+
exports.hasAIAPIKey = hasAIAPIKey;
|
|
17
|
+
exports.getAIClient = getAIClient;
|
|
18
|
+
exports.explainIssue = explainIssue;
|
|
19
|
+
exports.generateSuggestions = generateSuggestions;
|
|
20
|
+
const openai_1 = __importDefault(require("openai"));
|
|
21
|
+
const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
|
|
22
|
+
const core_1 = require('guardrail-core');
|
|
23
|
+
/**
|
|
24
|
+
* Get available AI provider
|
|
25
|
+
*/
|
|
26
|
+
function getAIProvider() {
|
|
27
|
+
const openaiKey = process.env.OPENAI_API_KEY;
|
|
28
|
+
const anthropicKey = process.env.ANTHROPIC_API_KEY;
|
|
29
|
+
const preferred = process.env.GUARDRAIL_AI_PROVIDER;
|
|
30
|
+
if (preferred === 'openai' && openaiKey)
|
|
31
|
+
return 'openai';
|
|
32
|
+
if (preferred === 'anthropic' && anthropicKey)
|
|
33
|
+
return 'anthropic';
|
|
34
|
+
if (openaiKey)
|
|
35
|
+
return 'openai';
|
|
36
|
+
if (anthropicKey)
|
|
37
|
+
return 'anthropic';
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Check if AI is available (both API key and PRO tier)
|
|
42
|
+
*/
|
|
43
|
+
async function isAIAvailable() {
|
|
44
|
+
// Check if API key is set
|
|
45
|
+
const provider = getAIProvider();
|
|
46
|
+
if (!provider) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
// Check if user has PRO tier (AI features are PRO-only)
|
|
50
|
+
// Use 'ai-agent' feature check since that's the existing PRO AI feature
|
|
51
|
+
try {
|
|
52
|
+
const featureCheck = await core_1.entitlements.checkFeature('ai-agent');
|
|
53
|
+
return featureCheck.allowed;
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
// If entitlement check fails, assume not available
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Check if AI is available (sync version - checks API key only)
|
|
62
|
+
* Use for UI hints, not for actual feature access
|
|
63
|
+
*/
|
|
64
|
+
function hasAIAPIKey() {
|
|
65
|
+
return getAIProvider() !== null;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get AI client based on provider
|
|
69
|
+
*/
|
|
70
|
+
function getAIClient(provider) {
|
|
71
|
+
const resolvedProvider = provider === 'auto' || !provider ? getAIProvider() : provider;
|
|
72
|
+
if (!resolvedProvider)
|
|
73
|
+
return null;
|
|
74
|
+
if (resolvedProvider === 'openai' && process.env.OPENAI_API_KEY) {
|
|
75
|
+
return new openai_1.default({ apiKey: process.env.OPENAI_API_KEY });
|
|
76
|
+
}
|
|
77
|
+
if (resolvedProvider === 'anthropic' && process.env.ANTHROPIC_API_KEY) {
|
|
78
|
+
return new sdk_1.default({ apiKey: process.env.ANTHROPIC_API_KEY });
|
|
79
|
+
}
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Explain a vulnerability or issue using AI
|
|
84
|
+
* ⚠️ PRO FEATURE - Requires PRO tier subscription
|
|
85
|
+
*/
|
|
86
|
+
async function explainIssue(issue, config = {}) {
|
|
87
|
+
// Check entitlement - AI features are PRO-only
|
|
88
|
+
// Use 'ai-agent' feature check since that's the existing PRO AI feature
|
|
89
|
+
try {
|
|
90
|
+
await core_1.entitlements.enforceFeature('ai-agent');
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
if (error.code === 'FEATURE_NOT_AVAILABLE') {
|
|
94
|
+
throw new Error(error.upgradePrompt ||
|
|
95
|
+
'AI-powered explanations require a PRO subscription. Upgrade at https://guardrail.dev/pricing');
|
|
96
|
+
}
|
|
97
|
+
throw error;
|
|
98
|
+
}
|
|
99
|
+
const client = getAIClient(config.provider || 'auto');
|
|
100
|
+
if (!client)
|
|
101
|
+
return null;
|
|
102
|
+
const provider = getAIProvider();
|
|
103
|
+
if (!provider)
|
|
104
|
+
return null;
|
|
105
|
+
const prompt = buildExplanationPrompt(issue);
|
|
106
|
+
try {
|
|
107
|
+
if (provider === 'openai' && client instanceof openai_1.default) {
|
|
108
|
+
const response = await client.chat.completions.create({
|
|
109
|
+
model: config.model || process.env.OPENAI_MODEL || 'gpt-4o',
|
|
110
|
+
messages: [
|
|
111
|
+
{
|
|
112
|
+
role: 'system',
|
|
113
|
+
content: `You are a security and code quality expert. Explain issues clearly and provide actionable recommendations.`,
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
role: 'user',
|
|
117
|
+
content: prompt,
|
|
118
|
+
},
|
|
119
|
+
],
|
|
120
|
+
max_tokens: config.maxTokens || 1500,
|
|
121
|
+
temperature: config.temperature || 0.3,
|
|
122
|
+
});
|
|
123
|
+
const content = response.choices[0]?.message?.content || '';
|
|
124
|
+
return parseExplanation(content, provider);
|
|
125
|
+
}
|
|
126
|
+
else if (provider === 'anthropic' && client instanceof sdk_1.default) {
|
|
127
|
+
const message = await client.messages.create({
|
|
128
|
+
model: config.model || process.env.ANTHROPIC_MODEL || 'claude-3-5-sonnet-20241022',
|
|
129
|
+
max_tokens: config.maxTokens || 1500,
|
|
130
|
+
temperature: config.temperature || 0.3,
|
|
131
|
+
system: `You are a security and code quality expert. Explain issues clearly and provide actionable recommendations.`,
|
|
132
|
+
messages: [
|
|
133
|
+
{
|
|
134
|
+
role: 'user',
|
|
135
|
+
content: prompt,
|
|
136
|
+
},
|
|
137
|
+
],
|
|
138
|
+
});
|
|
139
|
+
const content = message.content[0];
|
|
140
|
+
const text = content && content.type === 'text' ? content.text : '';
|
|
141
|
+
return parseExplanation(text, provider);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
console.warn('AI explanation failed:', error instanceof Error ? error.message : String(error));
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Generate AI-powered suggestions for code improvements
|
|
152
|
+
* ⚠️ PRO FEATURE - Requires PRO tier subscription
|
|
153
|
+
*/
|
|
154
|
+
async function generateSuggestions(code, context, config = {}) {
|
|
155
|
+
// Check entitlement - AI features are PRO-only
|
|
156
|
+
// Use 'ai-agent' feature check since that's the existing PRO AI feature
|
|
157
|
+
try {
|
|
158
|
+
await core_1.entitlements.enforceFeature('ai-agent');
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
if (error.code === 'FEATURE_NOT_AVAILABLE') {
|
|
162
|
+
throw new Error(error.upgradePrompt ||
|
|
163
|
+
'AI-powered suggestions require a PRO subscription. Upgrade at https://guardrail.dev/pricing');
|
|
164
|
+
}
|
|
165
|
+
throw error;
|
|
166
|
+
}
|
|
167
|
+
const client = getAIClient(config.provider || 'auto');
|
|
168
|
+
if (!client)
|
|
169
|
+
return null;
|
|
170
|
+
const provider = getAIProvider();
|
|
171
|
+
if (!provider)
|
|
172
|
+
return null;
|
|
173
|
+
const prompt = buildSuggestionsPrompt(code, context);
|
|
174
|
+
try {
|
|
175
|
+
let text;
|
|
176
|
+
if (provider === 'openai' && client instanceof openai_1.default) {
|
|
177
|
+
const response = await client.chat.completions.create({
|
|
178
|
+
model: config.model || process.env.OPENAI_MODEL || 'gpt-4o',
|
|
179
|
+
messages: [
|
|
180
|
+
{
|
|
181
|
+
role: 'system',
|
|
182
|
+
content: `You are a code quality expert. Provide practical, actionable suggestions for improving code.`,
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
role: 'user',
|
|
186
|
+
content: prompt,
|
|
187
|
+
},
|
|
188
|
+
],
|
|
189
|
+
max_tokens: config.maxTokens || 2000,
|
|
190
|
+
temperature: config.temperature || 0.4,
|
|
191
|
+
});
|
|
192
|
+
text = response.choices[0]?.message?.content || '';
|
|
193
|
+
}
|
|
194
|
+
else if (provider === 'anthropic' && client instanceof sdk_1.default) {
|
|
195
|
+
const message = await client.messages.create({
|
|
196
|
+
model: config.model || process.env.ANTHROPIC_MODEL || 'claude-3-5-sonnet-20241022',
|
|
197
|
+
max_tokens: config.maxTokens || 2000,
|
|
198
|
+
temperature: config.temperature || 0.4,
|
|
199
|
+
system: `You are a code quality expert. Provide practical, actionable suggestions for improving code.`,
|
|
200
|
+
messages: [
|
|
201
|
+
{
|
|
202
|
+
role: 'user',
|
|
203
|
+
content: prompt,
|
|
204
|
+
},
|
|
205
|
+
],
|
|
206
|
+
});
|
|
207
|
+
const content = message.content[0];
|
|
208
|
+
text = content && content.type === 'text' ? content.text : '';
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
return parseSuggestions(text);
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
console.warn('AI suggestions failed:', error instanceof Error ? error.message : String(error));
|
|
217
|
+
return null;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Build explanation prompt
|
|
222
|
+
*/
|
|
223
|
+
function buildExplanationPrompt(issue) {
|
|
224
|
+
let prompt = `Explain this ${issue.type} issue:
|
|
225
|
+
|
|
226
|
+
Severity: ${issue.severity}
|
|
227
|
+
Description: ${issue.description}`;
|
|
228
|
+
if (issue.file) {
|
|
229
|
+
prompt += `\nFile: ${issue.file}`;
|
|
230
|
+
}
|
|
231
|
+
if (issue.line) {
|
|
232
|
+
prompt += `\nLine: ${issue.line}`;
|
|
233
|
+
}
|
|
234
|
+
if (issue.code) {
|
|
235
|
+
prompt += `\n\nCode:\n\`\`\`\n${issue.code}\n\`\`\``;
|
|
236
|
+
}
|
|
237
|
+
prompt += `\n\nProvide:
|
|
238
|
+
1. A clear summary of what this issue means
|
|
239
|
+
2. Why it's a problem (impact)
|
|
240
|
+
3. Specific recommendations to fix it
|
|
241
|
+
4. Best practices to prevent it in the future
|
|
242
|
+
|
|
243
|
+
Format your response as JSON:
|
|
244
|
+
{
|
|
245
|
+
"summary": "Brief summary",
|
|
246
|
+
"details": ["detail 1", "detail 2"],
|
|
247
|
+
"severity": "${issue.severity}",
|
|
248
|
+
"impact": "Impact explanation",
|
|
249
|
+
"recommendations": ["rec 1", "rec 2"]
|
|
250
|
+
}`;
|
|
251
|
+
return prompt;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Build suggestions prompt
|
|
255
|
+
*/
|
|
256
|
+
function buildSuggestionsPrompt(code, context) {
|
|
257
|
+
let prompt = `Analyze this code and provide improvement suggestions:\n\n`;
|
|
258
|
+
if (context.file) {
|
|
259
|
+
prompt += `File: ${context.file}\n`;
|
|
260
|
+
}
|
|
261
|
+
if (context.language) {
|
|
262
|
+
prompt += `Language: ${context.language}\n`;
|
|
263
|
+
}
|
|
264
|
+
if (context.issues && context.issues.length > 0) {
|
|
265
|
+
prompt += `Known Issues: ${context.issues.join(', ')}\n`;
|
|
266
|
+
}
|
|
267
|
+
prompt += `\nCode:\n\`\`\`${context.language || ''}\n${code.slice(0, 2000)}\n\`\`\``;
|
|
268
|
+
prompt += `\n\nProvide actionable suggestions in JSON format:
|
|
269
|
+
[
|
|
270
|
+
{
|
|
271
|
+
"type": "fix|improvement|refactor|security",
|
|
272
|
+
"priority": "low|medium|high",
|
|
273
|
+
"description": "What to improve",
|
|
274
|
+
"code": "Optional code example",
|
|
275
|
+
"explanation": "Why this helps",
|
|
276
|
+
"confidence": 0.0-1.0
|
|
277
|
+
}
|
|
278
|
+
]`;
|
|
279
|
+
return prompt;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Parse explanation response
|
|
283
|
+
*/
|
|
284
|
+
function parseExplanation(text, provider) {
|
|
285
|
+
try {
|
|
286
|
+
const jsonMatch = text.match(/\{[\s\S]*\}/);
|
|
287
|
+
if (jsonMatch) {
|
|
288
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
289
|
+
return {
|
|
290
|
+
summary: parsed.summary || 'Unable to generate explanation',
|
|
291
|
+
details: Array.isArray(parsed.details) ? parsed.details : [],
|
|
292
|
+
severity: parsed.severity || 'medium',
|
|
293
|
+
impact: parsed.impact || '',
|
|
294
|
+
recommendations: Array.isArray(parsed.recommendations) ? parsed.recommendations : [],
|
|
295
|
+
provider,
|
|
296
|
+
timestamp: new Date().toISOString(),
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
catch (e) {
|
|
301
|
+
// Fall through to default
|
|
302
|
+
}
|
|
303
|
+
// Fallback parsing
|
|
304
|
+
return {
|
|
305
|
+
summary: text.slice(0, 200) || 'Unable to generate explanation',
|
|
306
|
+
details: text.split('\n').filter((l) => l.trim().length > 0).slice(0, 5),
|
|
307
|
+
severity: 'medium',
|
|
308
|
+
impact: '',
|
|
309
|
+
recommendations: [],
|
|
310
|
+
provider,
|
|
311
|
+
timestamp: new Date().toISOString(),
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Parse suggestions response
|
|
316
|
+
*/
|
|
317
|
+
function parseSuggestions(text) {
|
|
318
|
+
try {
|
|
319
|
+
const jsonMatch = text.match(/\[[\s\S]*\]/);
|
|
320
|
+
if (jsonMatch) {
|
|
321
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
322
|
+
if (Array.isArray(parsed)) {
|
|
323
|
+
return parsed.map((s) => ({
|
|
324
|
+
type: s.type || 'improvement',
|
|
325
|
+
priority: s.priority || 'medium',
|
|
326
|
+
description: s.description || '',
|
|
327
|
+
code: s.code,
|
|
328
|
+
explanation: s.explanation || '',
|
|
329
|
+
confidence: typeof s.confidence === 'number' ? s.confidence : 0.7,
|
|
330
|
+
}));
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
catch (e) {
|
|
335
|
+
// Fall through to empty array
|
|
336
|
+
}
|
|
337
|
+
return [];
|
|
338
|
+
}
|
|
339
|
+
//# sourceMappingURL=ai-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-helpers.js","sourceRoot":"","sources":["../../src/utils/ai-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation Utilities
|
|
3
|
+
* Enterprise-grade validation helpers
|
|
4
|
+
*/
|
|
5
|
+
export interface ValidationResult {
|
|
6
|
+
valid: boolean;
|
|
7
|
+
errors: string[];
|
|
8
|
+
warnings?: string[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Validate file path exists
|
|
12
|
+
*/
|
|
13
|
+
export declare function validateFilePath(filePath: string): ValidationResult;
|
|
14
|
+
/**
|
|
15
|
+
* Validate directory path exists
|
|
16
|
+
*/
|
|
17
|
+
export declare function validateDirectoryPath(dirPath: string): ValidationResult;
|
|
18
|
+
/**
|
|
19
|
+
* Validate JSON file
|
|
20
|
+
*/
|
|
21
|
+
export declare function validateJsonFile(filePath: string): ValidationResult;
|
|
22
|
+
/**
|
|
23
|
+
* Validate port number
|
|
24
|
+
*/
|
|
25
|
+
export declare function validatePort(port: number | string): ValidationResult;
|
|
26
|
+
/**
|
|
27
|
+
* Validate URL format
|
|
28
|
+
*/
|
|
29
|
+
export declare function validateUrl(url: string): ValidationResult;
|
|
30
|
+
/**
|
|
31
|
+
* Validate regex pattern
|
|
32
|
+
*/
|
|
33
|
+
export declare function validateRegex(pattern: string): ValidationResult;
|
|
34
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CA0BnE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CA0BvE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAuBnE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAmBpE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAkBzD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAe/D"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Validation Utilities
|
|
4
|
+
* Enterprise-grade validation helpers
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.validateFilePath = validateFilePath;
|
|
8
|
+
exports.validateDirectoryPath = validateDirectoryPath;
|
|
9
|
+
exports.validateJsonFile = validateJsonFile;
|
|
10
|
+
exports.validatePort = validatePort;
|
|
11
|
+
exports.validateUrl = validateUrl;
|
|
12
|
+
exports.validateRegex = validateRegex;
|
|
13
|
+
/**
|
|
14
|
+
* Validate file path exists
|
|
15
|
+
*/
|
|
16
|
+
function validateFilePath(filePath) {
|
|
17
|
+
const errors = [];
|
|
18
|
+
const warnings = [];
|
|
19
|
+
try {
|
|
20
|
+
const fs = require('fs');
|
|
21
|
+
const path = require('path');
|
|
22
|
+
const resolved = path.resolve(filePath);
|
|
23
|
+
if (!fs.existsSync(resolved)) {
|
|
24
|
+
errors.push(`File does not exist: ${resolved}`);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
const stats = fs.statSync(resolved);
|
|
28
|
+
if (!stats.isFile()) {
|
|
29
|
+
errors.push(`Path is not a file: ${resolved}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
errors.push(`Error validating file path: ${error.message}`);
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
valid: errors.length === 0,
|
|
38
|
+
errors,
|
|
39
|
+
warnings,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Validate directory path exists
|
|
44
|
+
*/
|
|
45
|
+
function validateDirectoryPath(dirPath) {
|
|
46
|
+
const errors = [];
|
|
47
|
+
const warnings = [];
|
|
48
|
+
try {
|
|
49
|
+
const fs = require('fs');
|
|
50
|
+
const path = require('path');
|
|
51
|
+
const resolved = path.resolve(dirPath);
|
|
52
|
+
if (!fs.existsSync(resolved)) {
|
|
53
|
+
errors.push(`Directory does not exist: ${resolved}`);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
const stats = fs.statSync(resolved);
|
|
57
|
+
if (!stats.isDirectory()) {
|
|
58
|
+
errors.push(`Path is not a directory: ${resolved}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
errors.push(`Error validating directory path: ${error.message}`);
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
valid: errors.length === 0,
|
|
67
|
+
errors,
|
|
68
|
+
warnings,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Validate JSON file
|
|
73
|
+
*/
|
|
74
|
+
function validateJsonFile(filePath) {
|
|
75
|
+
const errors = [];
|
|
76
|
+
const warnings = [];
|
|
77
|
+
try {
|
|
78
|
+
const fs = require('fs');
|
|
79
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
80
|
+
JSON.parse(content);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
if (error.code === 'ENOENT') {
|
|
84
|
+
errors.push(`File does not exist: ${filePath}`);
|
|
85
|
+
}
|
|
86
|
+
else if (error instanceof SyntaxError) {
|
|
87
|
+
errors.push(`Invalid JSON: ${error.message}`);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
errors.push(`Error reading file: ${error.message}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
valid: errors.length === 0,
|
|
95
|
+
errors,
|
|
96
|
+
warnings,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Validate port number
|
|
101
|
+
*/
|
|
102
|
+
function validatePort(port) {
|
|
103
|
+
const errors = [];
|
|
104
|
+
const warnings = [];
|
|
105
|
+
const portNum = typeof port === 'string' ? parseInt(port, 10) : port;
|
|
106
|
+
if (isNaN(portNum)) {
|
|
107
|
+
errors.push(`Invalid port number: ${port}`);
|
|
108
|
+
}
|
|
109
|
+
else if (portNum < 1 || portNum > 65535) {
|
|
110
|
+
errors.push(`Port number must be between 1 and 65535: ${portNum}`);
|
|
111
|
+
}
|
|
112
|
+
else if (portNum < 1024) {
|
|
113
|
+
warnings.push(`Port ${portNum} requires root privileges on Unix systems`);
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
valid: errors.length === 0,
|
|
117
|
+
errors,
|
|
118
|
+
warnings,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Validate URL format
|
|
123
|
+
*/
|
|
124
|
+
function validateUrl(url) {
|
|
125
|
+
const errors = [];
|
|
126
|
+
const warnings = [];
|
|
127
|
+
try {
|
|
128
|
+
const urlObj = new URL(url);
|
|
129
|
+
if (!['http:', 'https:'].includes(urlObj.protocol)) {
|
|
130
|
+
errors.push(`URL must use http:// or https:// protocol`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
errors.push(`Invalid URL format: ${error.message}`);
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
valid: errors.length === 0,
|
|
138
|
+
errors,
|
|
139
|
+
warnings,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Validate regex pattern
|
|
144
|
+
*/
|
|
145
|
+
function validateRegex(pattern) {
|
|
146
|
+
const errors = [];
|
|
147
|
+
const warnings = [];
|
|
148
|
+
try {
|
|
149
|
+
new RegExp(pattern);
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
errors.push(`Invalid regex pattern: ${error.message}`);
|
|
153
|
+
}
|
|
154
|
+
return {
|
|
155
|
+
valid: errors.length === 0,
|
|
156
|
+
errors,
|
|
157
|
+
warnings,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vibecheckai/cli",
|
|
3
|
+
"version": "2.5.1",
|
|
4
|
+
"description": "Guardrail CLI - Enterprise security scanning with interactive menu, arrow navigation, and auto-installation",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"guardrail": "dist/index.js",
|
|
8
|
+
"gr": "dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist/**/*",
|
|
12
|
+
"README.md",
|
|
13
|
+
"LICENSE"
|
|
14
|
+
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "node scripts/build.js",
|
|
17
|
+
"dev": "tsx src/index.ts",
|
|
18
|
+
"start": "node dist/index.js",
|
|
19
|
+
"prepublishOnly": "npm run build"
|
|
20
|
+
},
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"@guardrail/core": "workspace:*",
|
|
23
|
+
"@guardrail/security": "workspace:*",
|
|
24
|
+
"@guardrail/ship": "workspace:*",
|
|
25
|
+
"chalk": "^5.3.0",
|
|
26
|
+
"commander": "^12.0.0",
|
|
27
|
+
"ora": "^8.0.0",
|
|
28
|
+
"zod": "^3.23.0"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@types/node": "^20.10.0",
|
|
32
|
+
"esbuild": ">=0.25.0",
|
|
33
|
+
"tsx": "^4.7.0",
|
|
34
|
+
"typescript": "^5.3.0"
|
|
35
|
+
},
|
|
36
|
+
"keywords": [
|
|
37
|
+
"guardrail",
|
|
38
|
+
"security",
|
|
39
|
+
"cli",
|
|
40
|
+
"scanning",
|
|
41
|
+
"vulnerabilities",
|
|
42
|
+
"secrets",
|
|
43
|
+
"sbom",
|
|
44
|
+
"osv",
|
|
45
|
+
"cve",
|
|
46
|
+
"devsecops",
|
|
47
|
+
"sast",
|
|
48
|
+
"supply-chain"
|
|
49
|
+
],
|
|
50
|
+
"license": "MIT",
|
|
51
|
+
"author": "Guardrail Team <team@getguardrail.io>",
|
|
52
|
+
"homepage": "https://getguardrail.io",
|
|
53
|
+
"repository": {
|
|
54
|
+
"type": "git",
|
|
55
|
+
"url": "git+https://github.com/guardiavault-oss/codeguard.git"
|
|
56
|
+
},
|
|
57
|
+
"bugs": {
|
|
58
|
+
"url": "https://github.com/guardiavault-oss/codeguard/issues"
|
|
59
|
+
},
|
|
60
|
+
"engines": {
|
|
61
|
+
"node": ">=18.0.0"
|
|
62
|
+
},
|
|
63
|
+
"publishConfig": {
|
|
64
|
+
"access": "public"
|
|
65
|
+
}
|
|
66
|
+
}
|