circle-ir-ai 1.1.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/CHANGELOG.md +105 -0
- package/LICENSE +15 -0
- package/README.md +336 -0
- package/dist/action-queue/aggregator.d.ts +40 -0
- package/dist/action-queue/aggregator.d.ts.map +1 -0
- package/dist/action-queue/aggregator.js +375 -0
- package/dist/action-queue/aggregator.js.map +1 -0
- package/dist/action-queue/index.d.ts +14 -0
- package/dist/action-queue/index.d.ts.map +1 -0
- package/dist/action-queue/index.js +17 -0
- package/dist/action-queue/index.js.map +1 -0
- package/dist/action-queue/queue.d.ts +74 -0
- package/dist/action-queue/queue.d.ts.map +1 -0
- package/dist/action-queue/queue.js +433 -0
- package/dist/action-queue/queue.js.map +1 -0
- package/dist/action-queue/types.d.ts +162 -0
- package/dist/action-queue/types.d.ts.map +1 -0
- package/dist/action-queue/types.js +44 -0
- package/dist/action-queue/types.js.map +1 -0
- package/dist/agents/enrichment-agent.d.ts +16 -0
- package/dist/agents/enrichment-agent.d.ts.map +1 -0
- package/dist/agents/enrichment-agent.js +102 -0
- package/dist/agents/enrichment-agent.js.map +1 -0
- package/dist/agents/index.d.ts +12 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +15 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/mastra/agents.d.ts +373 -0
- package/dist/agents/mastra/agents.d.ts.map +1 -0
- package/dist/agents/mastra/agents.js +347 -0
- package/dist/agents/mastra/agents.js.map +1 -0
- package/dist/agents/mastra/index.d.ts +12 -0
- package/dist/agents/mastra/index.d.ts.map +1 -0
- package/dist/agents/mastra/index.js +17 -0
- package/dist/agents/mastra/index.js.map +1 -0
- package/dist/agents/mastra/instance.d.ts +383 -0
- package/dist/agents/mastra/instance.d.ts.map +1 -0
- package/dist/agents/mastra/instance.js +37 -0
- package/dist/agents/mastra/instance.js.map +1 -0
- package/dist/agents/mastra/steps.d.ts +300 -0
- package/dist/agents/mastra/steps.d.ts.map +1 -0
- package/dist/agents/mastra/steps.js +468 -0
- package/dist/agents/mastra/steps.js.map +1 -0
- package/dist/agents/mastra/swarm.d.ts +106 -0
- package/dist/agents/mastra/swarm.d.ts.map +1 -0
- package/dist/agents/mastra/swarm.js +501 -0
- package/dist/agents/mastra/swarm.js.map +1 -0
- package/dist/agents/mastra/workflow.d.ts +81 -0
- package/dist/agents/mastra/workflow.d.ts.map +1 -0
- package/dist/agents/mastra/workflow.js +460 -0
- package/dist/agents/mastra/workflow.js.map +1 -0
- package/dist/agents/multi/agents/security.d.ts +29 -0
- package/dist/agents/multi/agents/security.d.ts.map +1 -0
- package/dist/agents/multi/agents/security.js +830 -0
- package/dist/agents/multi/agents/security.js.map +1 -0
- package/dist/agents/multi/extractor.d.ts +21 -0
- package/dist/agents/multi/extractor.d.ts.map +1 -0
- package/dist/agents/multi/extractor.js +483 -0
- package/dist/agents/multi/extractor.js.map +1 -0
- package/dist/agents/multi/index.d.ts +32 -0
- package/dist/agents/multi/index.d.ts.map +1 -0
- package/dist/agents/multi/index.js +34 -0
- package/dist/agents/multi/index.js.map +1 -0
- package/dist/agents/multi/runner.d.ts +79 -0
- package/dist/agents/multi/runner.d.ts.map +1 -0
- package/dist/agents/multi/runner.js +323 -0
- package/dist/agents/multi/runner.js.map +1 -0
- package/dist/agents/security-agent.d.ts +16 -0
- package/dist/agents/security-agent.d.ts.map +1 -0
- package/dist/agents/security-agent.js +299 -0
- package/dist/agents/security-agent.js.map +1 -0
- package/dist/agents/types.d.ts +373 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +14 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/agents/verification-agent.d.ts +23 -0
- package/dist/agents/verification-agent.d.ts.map +1 -0
- package/dist/agents/verification-agent.js +217 -0
- package/dist/agents/verification-agent.js.map +1 -0
- package/dist/agents/workflow.d.ts +30 -0
- package/dist/agents/workflow.d.ts.map +1 -0
- package/dist/agents/workflow.js +79 -0
- package/dist/agents/workflow.js.map +1 -0
- package/dist/analysis/enriched.d.ts +16 -0
- package/dist/analysis/enriched.d.ts.map +1 -0
- package/dist/analysis/enriched.js +297 -0
- package/dist/analysis/enriched.js.map +1 -0
- package/dist/analysis/llm-correlated-predicates.d.ts +80 -0
- package/dist/analysis/llm-correlated-predicates.d.ts.map +1 -0
- package/dist/analysis/llm-correlated-predicates.js +255 -0
- package/dist/analysis/llm-correlated-predicates.js.map +1 -0
- package/dist/analysis/llm-cross-file-taint.d.ts +86 -0
- package/dist/analysis/llm-cross-file-taint.d.ts.map +1 -0
- package/dist/analysis/llm-cross-file-taint.js +264 -0
- package/dist/analysis/llm-cross-file-taint.js.map +1 -0
- package/dist/analysis/pattern-discovery.d.ts +79 -0
- package/dist/analysis/pattern-discovery.d.ts.map +1 -0
- package/dist/analysis/pattern-discovery.js +447 -0
- package/dist/analysis/pattern-discovery.js.map +1 -0
- package/dist/cache/file-cache.d.ts +89 -0
- package/dist/cache/file-cache.d.ts.map +1 -0
- package/dist/cache/file-cache.js +208 -0
- package/dist/cache/file-cache.js.map +1 -0
- package/dist/cache/index.d.ts +6 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +5 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cli/args.d.ts +52 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +422 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/colors.d.ts +31 -0
- package/dist/cli/colors.d.ts.map +1 -0
- package/dist/cli/colors.js +80 -0
- package/dist/cli/colors.js.map +1 -0
- package/dist/cli/commands/analyze-skill.d.ts +33 -0
- package/dist/cli/commands/analyze-skill.d.ts.map +1 -0
- package/dist/cli/commands/analyze-skill.js +217 -0
- package/dist/cli/commands/analyze-skill.js.map +1 -0
- package/dist/cli/commands/analyze.d.ts +18 -0
- package/dist/cli/commands/analyze.d.ts.map +1 -0
- package/dist/cli/commands/analyze.js +30 -0
- package/dist/cli/commands/analyze.js.map +1 -0
- package/dist/cli/commands/benchmark-runner.d.ts +42 -0
- package/dist/cli/commands/benchmark-runner.d.ts.map +1 -0
- package/dist/cli/commands/benchmark-runner.js +18 -0
- package/dist/cli/commands/benchmark-runner.js.map +1 -0
- package/dist/cli/commands/benchmark.d.ts +11 -0
- package/dist/cli/commands/benchmark.d.ts.map +1 -0
- package/dist/cli/commands/benchmark.js +90 -0
- package/dist/cli/commands/benchmark.js.map +1 -0
- package/dist/cli/commands/dead-code.d.ts +11 -0
- package/dist/cli/commands/dead-code.d.ts.map +1 -0
- package/dist/cli/commands/dead-code.js +65 -0
- package/dist/cli/commands/dead-code.js.map +1 -0
- package/dist/cli/commands/generate-spec.d.ts +11 -0
- package/dist/cli/commands/generate-spec.d.ts.map +1 -0
- package/dist/cli/commands/generate-spec.js +67 -0
- package/dist/cli/commands/generate-spec.js.map +1 -0
- package/dist/cli/commands/health.d.ts +11 -0
- package/dist/cli/commands/health.d.ts.map +1 -0
- package/dist/cli/commands/health.js +67 -0
- package/dist/cli/commands/health.js.map +1 -0
- package/dist/cli/commands/project.d.ts +21 -0
- package/dist/cli/commands/project.d.ts.map +1 -0
- package/dist/cli/commands/project.js +92 -0
- package/dist/cli/commands/project.js.map +1 -0
- package/dist/cli/commands/scan.d.ts +11 -0
- package/dist/cli/commands/scan.d.ts.map +1 -0
- package/dist/cli/commands/scan.js +68 -0
- package/dist/cli/commands/scan.js.map +1 -0
- package/dist/cli/commands/secrets.d.ts +11 -0
- package/dist/cli/commands/secrets.d.ts.map +1 -0
- package/dist/cli/commands/secrets.js +71 -0
- package/dist/cli/commands/secrets.js.map +1 -0
- package/dist/cli/commands/swarm.d.ts +20 -0
- package/dist/cli/commands/swarm.d.ts.map +1 -0
- package/dist/cli/commands/swarm.js +174 -0
- package/dist/cli/commands/swarm.js.map +1 -0
- package/dist/cli/config.d.ts +103 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +307 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/discovery.d.ts +31 -0
- package/dist/cli/discovery.d.ts.map +1 -0
- package/dist/cli/discovery.js +212 -0
- package/dist/cli/discovery.js.map +1 -0
- package/dist/cli/formatters/index.d.ts +15 -0
- package/dist/cli/formatters/index.d.ts.map +1 -0
- package/dist/cli/formatters/index.js +51 -0
- package/dist/cli/formatters/index.js.map +1 -0
- package/dist/cli/formatters/json.d.ts +11 -0
- package/dist/cli/formatters/json.d.ts.map +1 -0
- package/dist/cli/formatters/json.js +12 -0
- package/dist/cli/formatters/json.js.map +1 -0
- package/dist/cli/formatters/project-json.d.ts +11 -0
- package/dist/cli/formatters/project-json.d.ts.map +1 -0
- package/dist/cli/formatters/project-json.js +12 -0
- package/dist/cli/formatters/project-json.js.map +1 -0
- package/dist/cli/formatters/project-sarif.d.ts +11 -0
- package/dist/cli/formatters/project-sarif.d.ts.map +1 -0
- package/dist/cli/formatters/project-sarif.js +127 -0
- package/dist/cli/formatters/project-sarif.js.map +1 -0
- package/dist/cli/formatters/project-summary.d.ts +11 -0
- package/dist/cli/formatters/project-summary.d.ts.map +1 -0
- package/dist/cli/formatters/project-summary.js +202 -0
- package/dist/cli/formatters/project-summary.js.map +1 -0
- package/dist/cli/formatters/sarif-shared.d.ts +101 -0
- package/dist/cli/formatters/sarif-shared.d.ts.map +1 -0
- package/dist/cli/formatters/sarif-shared.js +57 -0
- package/dist/cli/formatters/sarif-shared.js.map +1 -0
- package/dist/cli/formatters/sarif.d.ts +12 -0
- package/dist/cli/formatters/sarif.d.ts.map +1 -0
- package/dist/cli/formatters/sarif.js +92 -0
- package/dist/cli/formatters/sarif.js.map +1 -0
- package/dist/cli/formatters/summary.d.ts +11 -0
- package/dist/cli/formatters/summary.d.ts.map +1 -0
- package/dist/cli/formatters/summary.js +240 -0
- package/dist/cli/formatters/summary.js.map +1 -0
- package/dist/cli/formatters/two-phase-summary.d.ts +11 -0
- package/dist/cli/formatters/two-phase-summary.d.ts.map +1 -0
- package/dist/cli/formatters/two-phase-summary.js +188 -0
- package/dist/cli/formatters/two-phase-summary.js.map +1 -0
- package/dist/cli/index.d.ts +15 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +555 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/components/clustering.d.ts +60 -0
- package/dist/components/clustering.d.ts.map +1 -0
- package/dist/components/clustering.js +129 -0
- package/dist/components/clustering.js.map +1 -0
- package/dist/components/enrichment.d.ts +45 -0
- package/dist/components/enrichment.d.ts.map +1 -0
- package/dist/components/enrichment.js +193 -0
- package/dist/components/enrichment.js.map +1 -0
- package/dist/components/index.d.ts +29 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +56 -0
- package/dist/components/index.js.map +1 -0
- package/dist/dead-code/detector.d.ts +200 -0
- package/dist/dead-code/detector.d.ts.map +1 -0
- package/dist/dead-code/detector.js +1003 -0
- package/dist/dead-code/detector.js.map +1 -0
- package/dist/dead-code/index.d.ts +7 -0
- package/dist/dead-code/index.d.ts.map +1 -0
- package/dist/dead-code/index.js +7 -0
- package/dist/dead-code/index.js.map +1 -0
- package/dist/extractors/index.d.ts +15 -0
- package/dist/extractors/index.d.ts.map +1 -0
- package/dist/extractors/index.js +14 -0
- package/dist/extractors/index.js.map +1 -0
- package/dist/extractors/natural-language.d.ts +46 -0
- package/dist/extractors/natural-language.d.ts.map +1 -0
- package/dist/extractors/natural-language.js +228 -0
- package/dist/extractors/natural-language.js.map +1 -0
- package/dist/extractors/tree-sitter.d.ts +33 -0
- package/dist/extractors/tree-sitter.d.ts.map +1 -0
- package/dist/extractors/tree-sitter.js +69 -0
- package/dist/extractors/tree-sitter.js.map +1 -0
- package/dist/extractors/types.d.ts +62 -0
- package/dist/extractors/types.d.ts.map +1 -0
- package/dist/extractors/types.js +54 -0
- package/dist/extractors/types.js.map +1 -0
- package/dist/health-score/calculator.d.ts +123 -0
- package/dist/health-score/calculator.d.ts.map +1 -0
- package/dist/health-score/calculator.js +444 -0
- package/dist/health-score/calculator.js.map +1 -0
- package/dist/health-score/index.d.ts +12 -0
- package/dist/health-score/index.d.ts.map +1 -0
- package/dist/health-score/index.js +14 -0
- package/dist/health-score/index.js.map +1 -0
- package/dist/health-score/metrics.d.ts +142 -0
- package/dist/health-score/metrics.d.ts.map +1 -0
- package/dist/health-score/metrics.js +332 -0
- package/dist/health-score/metrics.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/ax-client.d.ts +477 -0
- package/dist/llm/ax-client.d.ts.map +1 -0
- package/dist/llm/ax-client.js +1641 -0
- package/dist/llm/ax-client.js.map +1 -0
- package/dist/llm/config.d.ts +58 -0
- package/dist/llm/config.d.ts.map +1 -0
- package/dist/llm/config.js +97 -0
- package/dist/llm/config.js.map +1 -0
- package/dist/llm/discovery.d.ts +123 -0
- package/dist/llm/discovery.d.ts.map +1 -0
- package/dist/llm/discovery.js +505 -0
- package/dist/llm/discovery.js.map +1 -0
- package/dist/llm/enrichment.d.ts +108 -0
- package/dist/llm/enrichment.d.ts.map +1 -0
- package/dist/llm/enrichment.js +312 -0
- package/dist/llm/enrichment.js.map +1 -0
- package/dist/llm/index.d.ts +13 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +22 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/language-context.d.ts +64 -0
- package/dist/llm/language-context.d.ts.map +1 -0
- package/dist/llm/language-context.js +492 -0
- package/dist/llm/language-context.js.map +1 -0
- package/dist/llm/pattern-verification.d.ts +39 -0
- package/dist/llm/pattern-verification.d.ts.map +1 -0
- package/dist/llm/pattern-verification.js +127 -0
- package/dist/llm/pattern-verification.js.map +1 -0
- package/dist/llm/prompt-security.d.ts +120 -0
- package/dist/llm/prompt-security.d.ts.map +1 -0
- package/dist/llm/prompt-security.js +301 -0
- package/dist/llm/prompt-security.js.map +1 -0
- package/dist/llm/prompts/index.d.ts +31 -0
- package/dist/llm/prompts/index.d.ts.map +1 -0
- package/dist/llm/prompts/index.js +92 -0
- package/dist/llm/prompts/index.js.map +1 -0
- package/dist/llm/prompts/rust.d.ts +30 -0
- package/dist/llm/prompts/rust.d.ts.map +1 -0
- package/dist/llm/prompts/rust.js +121 -0
- package/dist/llm/prompts/rust.js.map +1 -0
- package/dist/llm/schemas.d.ts +892 -0
- package/dist/llm/schemas.d.ts.map +1 -0
- package/dist/llm/schemas.js +258 -0
- package/dist/llm/schemas.js.map +1 -0
- package/dist/llm/verification.d.ts +127 -0
- package/dist/llm/verification.d.ts.map +1 -0
- package/dist/llm/verification.js +394 -0
- package/dist/llm/verification.js.map +1 -0
- package/dist/project/analyzer.d.ts +30 -0
- package/dist/project/analyzer.d.ts.map +1 -0
- package/dist/project/analyzer.js +358 -0
- package/dist/project/analyzer.js.map +1 -0
- package/dist/project/call-graph.d.ts +22 -0
- package/dist/project/call-graph.d.ts.map +1 -0
- package/dist/project/call-graph.js +246 -0
- package/dist/project/call-graph.js.map +1 -0
- package/dist/project/index.d.ts +18 -0
- package/dist/project/index.d.ts.map +1 -0
- package/dist/project/index.js +20 -0
- package/dist/project/index.js.map +1 -0
- package/dist/project/taint-paths.d.ts +22 -0
- package/dist/project/taint-paths.d.ts.map +1 -0
- package/dist/project/taint-paths.js +265 -0
- package/dist/project/taint-paths.js.map +1 -0
- package/dist/project/two-phase-analyzer.d.ts +143 -0
- package/dist/project/two-phase-analyzer.d.ts.map +1 -0
- package/dist/project/two-phase-analyzer.js +646 -0
- package/dist/project/two-phase-analyzer.js.map +1 -0
- package/dist/project/type-hierarchy.d.ts +28 -0
- package/dist/project/type-hierarchy.d.ts.map +1 -0
- package/dist/project/type-hierarchy.js +218 -0
- package/dist/project/type-hierarchy.js.map +1 -0
- package/dist/secret-scan/index.d.ts +12 -0
- package/dist/secret-scan/index.d.ts.map +1 -0
- package/dist/secret-scan/index.js +14 -0
- package/dist/secret-scan/index.js.map +1 -0
- package/dist/secret-scan/patterns.d.ts +38 -0
- package/dist/secret-scan/patterns.d.ts.map +1 -0
- package/dist/secret-scan/patterns.js +473 -0
- package/dist/secret-scan/patterns.js.map +1 -0
- package/dist/secret-scan/scanner.d.ts +162 -0
- package/dist/secret-scan/scanner.d.ts.map +1 -0
- package/dist/secret-scan/scanner.js +511 -0
- package/dist/secret-scan/scanner.js.map +1 -0
- package/dist/security-scan/index.d.ts +12 -0
- package/dist/security-scan/index.d.ts.map +1 -0
- package/dist/security-scan/index.js +15 -0
- package/dist/security-scan/index.js.map +1 -0
- package/dist/security-scan/owasp-mapping.d.ts +29 -0
- package/dist/security-scan/owasp-mapping.d.ts.map +1 -0
- package/dist/security-scan/owasp-mapping.js +246 -0
- package/dist/security-scan/owasp-mapping.js.map +1 -0
- package/dist/security-scan/scanner.d.ts +204 -0
- package/dist/security-scan/scanner.d.ts.map +1 -0
- package/dist/security-scan/scanner.js +693 -0
- package/dist/security-scan/scanner.js.map +1 -0
- package/dist/security-scan/trend-tracker.d.ts +150 -0
- package/dist/security-scan/trend-tracker.d.ts.map +1 -0
- package/dist/security-scan/trend-tracker.js +299 -0
- package/dist/security-scan/trend-tracker.js.map +1 -0
- package/dist/skills/bundle-loader.d.ts +26 -0
- package/dist/skills/bundle-loader.d.ts.map +1 -0
- package/dist/skills/bundle-loader.js +284 -0
- package/dist/skills/bundle-loader.js.map +1 -0
- package/dist/skills/capability-mismatch.d.ts +21 -0
- package/dist/skills/capability-mismatch.d.ts.map +1 -0
- package/dist/skills/capability-mismatch.js +188 -0
- package/dist/skills/capability-mismatch.js.map +1 -0
- package/dist/skills/index.d.ts +10 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +9 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/skill-analyzer.d.ts +16 -0
- package/dist/skills/skill-analyzer.d.ts.map +1 -0
- package/dist/skills/skill-analyzer.js +361 -0
- package/dist/skills/skill-analyzer.js.map +1 -0
- package/dist/skills/types.d.ts +195 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +7 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/specifica/conflict-resolver.d.ts +23 -0
- package/dist/specifica/conflict-resolver.d.ts.map +1 -0
- package/dist/specifica/conflict-resolver.js +129 -0
- package/dist/specifica/conflict-resolver.js.map +1 -0
- package/dist/specifica/evidence-aggregator.d.ts +33 -0
- package/dist/specifica/evidence-aggregator.d.ts.map +1 -0
- package/dist/specifica/evidence-aggregator.js +236 -0
- package/dist/specifica/evidence-aggregator.js.map +1 -0
- package/dist/specifica/evidence-extractor.d.ts +13 -0
- package/dist/specifica/evidence-extractor.d.ts.map +1 -0
- package/dist/specifica/evidence-extractor.js +431 -0
- package/dist/specifica/evidence-extractor.js.map +1 -0
- package/dist/specifica/feature-clustering.d.ts +19 -0
- package/dist/specifica/feature-clustering.d.ts.map +1 -0
- package/dist/specifica/feature-clustering.js +231 -0
- package/dist/specifica/feature-clustering.js.map +1 -0
- package/dist/specifica/generator.d.ts +16 -0
- package/dist/specifica/generator.d.ts.map +1 -0
- package/dist/specifica/generator.js +277 -0
- package/dist/specifica/generator.js.map +1 -0
- package/dist/specifica/index.d.ts +15 -0
- package/dist/specifica/index.d.ts.map +1 -0
- package/dist/specifica/index.js +18 -0
- package/dist/specifica/index.js.map +1 -0
- package/dist/specifica/prompts.d.ts +21 -0
- package/dist/specifica/prompts.d.ts.map +1 -0
- package/dist/specifica/prompts.js +196 -0
- package/dist/specifica/prompts.js.map +1 -0
- package/dist/specifica/spec-generator.d.ts +22 -0
- package/dist/specifica/spec-generator.d.ts.map +1 -0
- package/dist/specifica/spec-generator.js +229 -0
- package/dist/specifica/spec-generator.js.map +1 -0
- package/dist/specifica/types.d.ts +213 -0
- package/dist/specifica/types.d.ts.map +1 -0
- package/dist/specifica/types.js +7 -0
- package/dist/specifica/types.js.map +1 -0
- package/dist/utils/logger.d.ts +17 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +51 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +99 -0
|
@@ -0,0 +1,473 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret Detection Pattern Library
|
|
3
|
+
*
|
|
4
|
+
* Patterns for detecting various types of secrets and credentials in code.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* AWS Credential Patterns
|
|
8
|
+
*/
|
|
9
|
+
const awsPatterns = [
|
|
10
|
+
{
|
|
11
|
+
id: 'aws-access-key-id',
|
|
12
|
+
name: 'AWS Access Key ID',
|
|
13
|
+
description: 'AWS access key identifier',
|
|
14
|
+
pattern: /\b(A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}\b/g,
|
|
15
|
+
severity: 'critical',
|
|
16
|
+
category: 'aws',
|
|
17
|
+
keywords: ['AKIA', 'AGPA', 'AIDA', 'AROA', 'AIPA', 'ANPA', 'ANVA', 'ASIA', 'A3T'],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
id: 'aws-secret-access-key',
|
|
21
|
+
name: 'AWS Secret Access Key',
|
|
22
|
+
description: 'AWS secret access key',
|
|
23
|
+
pattern: /(?:aws[_-]?)?secret[_-]?(?:access[_-]?)?key['":\s=]+['"]?([A-Za-z0-9/+=]{40})['"]?/gi,
|
|
24
|
+
severity: 'critical',
|
|
25
|
+
category: 'aws',
|
|
26
|
+
keywords: ['secret', 'aws'],
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id: 'aws-session-token',
|
|
30
|
+
name: 'AWS Session Token',
|
|
31
|
+
description: 'AWS temporary session token',
|
|
32
|
+
pattern: /(?:aws[_-]?)?session[_-]?token['":\s=]+['"]?([A-Za-z0-9/+=]{100,})['"]?/gi,
|
|
33
|
+
severity: 'high',
|
|
34
|
+
category: 'aws',
|
|
35
|
+
keywords: ['session', 'token', 'aws'],
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
/**
|
|
39
|
+
* GitHub Patterns
|
|
40
|
+
*/
|
|
41
|
+
const githubPatterns = [
|
|
42
|
+
{
|
|
43
|
+
id: 'github-pat',
|
|
44
|
+
name: 'GitHub Personal Access Token',
|
|
45
|
+
description: 'GitHub personal access token (classic)',
|
|
46
|
+
pattern: /\bghp_[A-Za-z0-9]{36}\b/g,
|
|
47
|
+
severity: 'critical',
|
|
48
|
+
category: 'github',
|
|
49
|
+
keywords: ['ghp_'],
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: 'github-oauth',
|
|
53
|
+
name: 'GitHub OAuth Token',
|
|
54
|
+
description: 'GitHub OAuth access token',
|
|
55
|
+
pattern: /\bgho_[A-Za-z0-9]{36}\b/g,
|
|
56
|
+
severity: 'critical',
|
|
57
|
+
category: 'github',
|
|
58
|
+
keywords: ['gho_'],
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
id: 'github-app-token',
|
|
62
|
+
name: 'GitHub App Token',
|
|
63
|
+
description: 'GitHub App installation token',
|
|
64
|
+
pattern: /\bghs_[A-Za-z0-9]{36}\b/g,
|
|
65
|
+
severity: 'critical',
|
|
66
|
+
category: 'github',
|
|
67
|
+
keywords: ['ghs_'],
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
id: 'github-refresh-token',
|
|
71
|
+
name: 'GitHub Refresh Token',
|
|
72
|
+
description: 'GitHub OAuth refresh token',
|
|
73
|
+
pattern: /\bghr_[A-Za-z0-9]{36}\b/g,
|
|
74
|
+
severity: 'high',
|
|
75
|
+
category: 'github',
|
|
76
|
+
keywords: ['ghr_'],
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
id: 'github-fine-grained-pat',
|
|
80
|
+
name: 'GitHub Fine-Grained PAT',
|
|
81
|
+
description: 'GitHub fine-grained personal access token',
|
|
82
|
+
pattern: /\bgithub_pat_[A-Za-z0-9]{22}_[A-Za-z0-9]{59}\b/g,
|
|
83
|
+
severity: 'critical',
|
|
84
|
+
category: 'github',
|
|
85
|
+
keywords: ['github_pat_'],
|
|
86
|
+
},
|
|
87
|
+
];
|
|
88
|
+
/**
|
|
89
|
+
* Stripe Patterns
|
|
90
|
+
*/
|
|
91
|
+
const stripePatterns = [
|
|
92
|
+
{
|
|
93
|
+
id: 'stripe-secret-key',
|
|
94
|
+
name: 'Stripe Secret Key',
|
|
95
|
+
description: 'Stripe API secret key',
|
|
96
|
+
pattern: /\bsk_live_[A-Za-z0-9]{24,}\b/g,
|
|
97
|
+
severity: 'critical',
|
|
98
|
+
category: 'stripe',
|
|
99
|
+
keywords: ['sk_live_'],
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
id: 'stripe-test-key',
|
|
103
|
+
name: 'Stripe Test Key',
|
|
104
|
+
description: 'Stripe API test key',
|
|
105
|
+
pattern: /\bsk_test_[A-Za-z0-9]{24,}\b/g,
|
|
106
|
+
severity: 'medium',
|
|
107
|
+
category: 'stripe',
|
|
108
|
+
keywords: ['sk_test_'],
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
id: 'stripe-publishable-key',
|
|
112
|
+
name: 'Stripe Publishable Key',
|
|
113
|
+
description: 'Stripe publishable key (not secret but worth flagging)',
|
|
114
|
+
pattern: /\bpk_live_[A-Za-z0-9]{24,}\b/g,
|
|
115
|
+
severity: 'low',
|
|
116
|
+
category: 'stripe',
|
|
117
|
+
keywords: ['pk_live_'],
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
id: 'stripe-restricted-key',
|
|
121
|
+
name: 'Stripe Restricted Key',
|
|
122
|
+
description: 'Stripe restricted API key',
|
|
123
|
+
pattern: /\brk_live_[A-Za-z0-9]{24,}\b/g,
|
|
124
|
+
severity: 'critical',
|
|
125
|
+
category: 'stripe',
|
|
126
|
+
keywords: ['rk_live_'],
|
|
127
|
+
},
|
|
128
|
+
];
|
|
129
|
+
/**
|
|
130
|
+
* Generic API Key Patterns
|
|
131
|
+
*/
|
|
132
|
+
const apiKeyPatterns = [
|
|
133
|
+
{
|
|
134
|
+
id: 'generic-api-key',
|
|
135
|
+
name: 'Generic API Key',
|
|
136
|
+
description: 'Generic API key in assignment or configuration',
|
|
137
|
+
pattern: /(?:api[_-]?key|apikey)['":\s=]+['"]?([A-Za-z0-9_\-]{20,})['"]?/gi,
|
|
138
|
+
severity: 'high',
|
|
139
|
+
category: 'api-key',
|
|
140
|
+
keywords: ['api', 'key'],
|
|
141
|
+
falsePositivePatterns: [
|
|
142
|
+
/example/i,
|
|
143
|
+
/placeholder/i,
|
|
144
|
+
/your[_-]?api[_-]?key/i,
|
|
145
|
+
/xxx+/i,
|
|
146
|
+
/\$\{/,
|
|
147
|
+
/%\(/,
|
|
148
|
+
],
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
id: 'bearer-token',
|
|
152
|
+
name: 'Bearer Token',
|
|
153
|
+
description: 'Bearer authentication token',
|
|
154
|
+
pattern: /\bBearer\s+([A-Za-z0-9_\-.~+/]+=*)\b/g,
|
|
155
|
+
severity: 'high',
|
|
156
|
+
category: 'api-key',
|
|
157
|
+
keywords: ['Bearer'],
|
|
158
|
+
falsePositivePatterns: [/<token>/i, /\$\{/, /%\(/],
|
|
159
|
+
},
|
|
160
|
+
];
|
|
161
|
+
/**
|
|
162
|
+
* JWT Patterns
|
|
163
|
+
*/
|
|
164
|
+
const jwtPatterns = [
|
|
165
|
+
{
|
|
166
|
+
id: 'jwt-token',
|
|
167
|
+
name: 'JWT Token',
|
|
168
|
+
description: 'JSON Web Token',
|
|
169
|
+
pattern: /\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g,
|
|
170
|
+
severity: 'high',
|
|
171
|
+
category: 'jwt',
|
|
172
|
+
keywords: ['eyJ'],
|
|
173
|
+
validator: (match) => {
|
|
174
|
+
// Validate JWT structure
|
|
175
|
+
const parts = match.split('.');
|
|
176
|
+
if (parts.length !== 3)
|
|
177
|
+
return false;
|
|
178
|
+
try {
|
|
179
|
+
// Check if header is valid base64
|
|
180
|
+
const header = JSON.parse(atob(parts[0].replace(/-/g, '+').replace(/_/g, '/')));
|
|
181
|
+
return header && typeof header === 'object';
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
];
|
|
189
|
+
/**
|
|
190
|
+
* Database Connection Patterns
|
|
191
|
+
*/
|
|
192
|
+
const databasePatterns = [
|
|
193
|
+
{
|
|
194
|
+
id: 'database-url',
|
|
195
|
+
name: 'Database Connection URL',
|
|
196
|
+
description: 'Database connection string with credentials',
|
|
197
|
+
pattern: /(?:postgres(?:ql)?|mysql|mongodb(?:\+srv)?|redis|mssql):\/\/[^:\s]+:[^@\s]+@[^\s'"]+/gi,
|
|
198
|
+
severity: 'critical',
|
|
199
|
+
category: 'database',
|
|
200
|
+
keywords: ['postgres', 'mysql', 'mongodb', 'redis', 'mssql', '://'],
|
|
201
|
+
falsePositivePatterns: [/localhost/, /127\.0\.0\.1/, /example\.com/],
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
id: 'database-password',
|
|
205
|
+
name: 'Database Password',
|
|
206
|
+
description: 'Database password in configuration',
|
|
207
|
+
pattern: /(?:db[_-]?password|database[_-]?password|mysql[_-]?password|postgres[_-]?password)['":\s=]+['"]?([^\s'"]{8,})['"]?/gi,
|
|
208
|
+
severity: 'critical',
|
|
209
|
+
category: 'database',
|
|
210
|
+
keywords: ['password', 'db', 'database', 'mysql', 'postgres'],
|
|
211
|
+
falsePositivePatterns: [/\$\{/, /%\(/, /example/i, /changeme/i],
|
|
212
|
+
},
|
|
213
|
+
];
|
|
214
|
+
/**
|
|
215
|
+
* Private Key Patterns
|
|
216
|
+
*/
|
|
217
|
+
const privateKeyPatterns = [
|
|
218
|
+
{
|
|
219
|
+
id: 'rsa-private-key',
|
|
220
|
+
name: 'RSA Private Key',
|
|
221
|
+
description: 'RSA private key',
|
|
222
|
+
pattern: /-----BEGIN RSA PRIVATE KEY-----[\s\S]*?-----END RSA PRIVATE KEY-----/g,
|
|
223
|
+
severity: 'critical',
|
|
224
|
+
category: 'private-key',
|
|
225
|
+
keywords: ['BEGIN RSA PRIVATE KEY'],
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
id: 'openssh-private-key',
|
|
229
|
+
name: 'OpenSSH Private Key',
|
|
230
|
+
description: 'OpenSSH private key',
|
|
231
|
+
pattern: /-----BEGIN OPENSSH PRIVATE KEY-----[\s\S]*?-----END OPENSSH PRIVATE KEY-----/g,
|
|
232
|
+
severity: 'critical',
|
|
233
|
+
category: 'private-key',
|
|
234
|
+
keywords: ['BEGIN OPENSSH PRIVATE KEY'],
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
id: 'ec-private-key',
|
|
238
|
+
name: 'EC Private Key',
|
|
239
|
+
description: 'Elliptic curve private key',
|
|
240
|
+
pattern: /-----BEGIN EC PRIVATE KEY-----[\s\S]*?-----END EC PRIVATE KEY-----/g,
|
|
241
|
+
severity: 'critical',
|
|
242
|
+
category: 'private-key',
|
|
243
|
+
keywords: ['BEGIN EC PRIVATE KEY'],
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
id: 'dsa-private-key',
|
|
247
|
+
name: 'DSA Private Key',
|
|
248
|
+
description: 'DSA private key',
|
|
249
|
+
pattern: /-----BEGIN DSA PRIVATE KEY-----[\s\S]*?-----END DSA PRIVATE KEY-----/g,
|
|
250
|
+
severity: 'critical',
|
|
251
|
+
category: 'private-key',
|
|
252
|
+
keywords: ['BEGIN DSA PRIVATE KEY'],
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
id: 'pgp-private-key',
|
|
256
|
+
name: 'PGP Private Key',
|
|
257
|
+
description: 'PGP private key block',
|
|
258
|
+
pattern: /-----BEGIN PGP PRIVATE KEY BLOCK-----[\s\S]*?-----END PGP PRIVATE KEY BLOCK-----/g,
|
|
259
|
+
severity: 'critical',
|
|
260
|
+
category: 'private-key',
|
|
261
|
+
keywords: ['BEGIN PGP PRIVATE KEY'],
|
|
262
|
+
},
|
|
263
|
+
];
|
|
264
|
+
/**
|
|
265
|
+
* Cloud Provider Patterns
|
|
266
|
+
*/
|
|
267
|
+
const cloudPatterns = [
|
|
268
|
+
{
|
|
269
|
+
id: 'gcp-api-key',
|
|
270
|
+
name: 'Google Cloud API Key',
|
|
271
|
+
description: 'Google Cloud Platform API key',
|
|
272
|
+
pattern: /\bAIza[A-Za-z0-9_-]{35}\b/g,
|
|
273
|
+
severity: 'critical',
|
|
274
|
+
category: 'gcp',
|
|
275
|
+
keywords: ['AIza'],
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
id: 'gcp-oauth-token',
|
|
279
|
+
name: 'Google OAuth Token',
|
|
280
|
+
description: 'Google OAuth access token',
|
|
281
|
+
pattern: /\bya29\.[A-Za-z0-9_-]{50,}\b/g,
|
|
282
|
+
severity: 'high',
|
|
283
|
+
category: 'gcp',
|
|
284
|
+
keywords: ['ya29.'],
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
id: 'azure-storage-key',
|
|
288
|
+
name: 'Azure Storage Key',
|
|
289
|
+
description: 'Azure Storage account key',
|
|
290
|
+
pattern: /(?:AccountKey|azure[_-]?storage[_-]?key)['":\s=]+['"]?([A-Za-z0-9+/]{86}==)['"]?/gi,
|
|
291
|
+
severity: 'critical',
|
|
292
|
+
category: 'azure',
|
|
293
|
+
keywords: ['AccountKey', 'azure', 'storage'],
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
id: 'azure-connection-string',
|
|
297
|
+
name: 'Azure Connection String',
|
|
298
|
+
description: 'Azure service connection string',
|
|
299
|
+
pattern: /DefaultEndpointsProtocol=https?;AccountName=[^;]+;AccountKey=[A-Za-z0-9+/]{86}==/gi,
|
|
300
|
+
severity: 'critical',
|
|
301
|
+
category: 'azure',
|
|
302
|
+
keywords: ['DefaultEndpointsProtocol', 'AccountKey'],
|
|
303
|
+
},
|
|
304
|
+
];
|
|
305
|
+
/**
|
|
306
|
+
* Communication Service Patterns
|
|
307
|
+
*/
|
|
308
|
+
const communicationPatterns = [
|
|
309
|
+
{
|
|
310
|
+
id: 'slack-token',
|
|
311
|
+
name: 'Slack Token',
|
|
312
|
+
description: 'Slack bot or user token',
|
|
313
|
+
pattern: /\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g,
|
|
314
|
+
severity: 'high',
|
|
315
|
+
category: 'slack',
|
|
316
|
+
keywords: ['xoxb-', 'xoxa-', 'xoxp-', 'xoxr-', 'xoxs-'],
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
id: 'slack-webhook',
|
|
320
|
+
name: 'Slack Webhook URL',
|
|
321
|
+
description: 'Slack incoming webhook URL',
|
|
322
|
+
pattern: /https:\/\/hooks\.slack\.com\/services\/T[A-Za-z0-9]+\/B[A-Za-z0-9]+\/[A-Za-z0-9]+/g,
|
|
323
|
+
severity: 'medium',
|
|
324
|
+
category: 'slack',
|
|
325
|
+
keywords: ['hooks.slack.com'],
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
id: 'discord-token',
|
|
329
|
+
name: 'Discord Token',
|
|
330
|
+
description: 'Discord bot or webhook token',
|
|
331
|
+
pattern: /\b[MN][A-Za-z0-9]{23,}\.[A-Za-z0-9_-]{6}\.[A-Za-z0-9_-]{27}\b/g,
|
|
332
|
+
severity: 'high',
|
|
333
|
+
category: 'discord',
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
id: 'discord-webhook',
|
|
337
|
+
name: 'Discord Webhook URL',
|
|
338
|
+
description: 'Discord webhook URL',
|
|
339
|
+
pattern: /https:\/\/discord(?:app)?\.com\/api\/webhooks\/\d+\/[A-Za-z0-9_-]+/g,
|
|
340
|
+
severity: 'medium',
|
|
341
|
+
category: 'discord',
|
|
342
|
+
keywords: ['discord', 'webhook'],
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
id: 'twilio-api-key',
|
|
346
|
+
name: 'Twilio API Key',
|
|
347
|
+
description: 'Twilio API key',
|
|
348
|
+
pattern: /\bSK[A-Za-z0-9]{32}\b/g,
|
|
349
|
+
severity: 'high',
|
|
350
|
+
category: 'twilio',
|
|
351
|
+
keywords: ['SK'],
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
id: 'sendgrid-api-key',
|
|
355
|
+
name: 'SendGrid API Key',
|
|
356
|
+
description: 'SendGrid API key',
|
|
357
|
+
pattern: /\bSG\.[A-Za-z0-9_-]{22}\.[A-Za-z0-9_-]{43}\b/g,
|
|
358
|
+
severity: 'high',
|
|
359
|
+
category: 'sendgrid',
|
|
360
|
+
keywords: ['SG.'],
|
|
361
|
+
},
|
|
362
|
+
];
|
|
363
|
+
/**
|
|
364
|
+
* Payment Provider Patterns
|
|
365
|
+
*/
|
|
366
|
+
const paymentPatterns = [
|
|
367
|
+
{
|
|
368
|
+
id: 'paypal-client-id',
|
|
369
|
+
name: 'PayPal Client ID',
|
|
370
|
+
description: 'PayPal REST API client ID',
|
|
371
|
+
pattern: /\bA[A-Za-z0-9_-]{20,}(?:sandbox|live)\b/gi,
|
|
372
|
+
severity: 'medium',
|
|
373
|
+
category: 'paypal',
|
|
374
|
+
keywords: ['paypal'],
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
id: 'square-access-token',
|
|
378
|
+
name: 'Square Access Token',
|
|
379
|
+
description: 'Square API access token',
|
|
380
|
+
pattern: /\bsq0[a-z]{3}-[A-Za-z0-9_-]{22,}\b/g,
|
|
381
|
+
severity: 'critical',
|
|
382
|
+
category: 'square',
|
|
383
|
+
keywords: ['sq0'],
|
|
384
|
+
},
|
|
385
|
+
];
|
|
386
|
+
/**
|
|
387
|
+
* High Entropy String Detection
|
|
388
|
+
*/
|
|
389
|
+
const highEntropyPatterns = [
|
|
390
|
+
{
|
|
391
|
+
id: 'high-entropy-base64',
|
|
392
|
+
name: 'High Entropy Base64 String',
|
|
393
|
+
description: 'Potentially sensitive base64-encoded string with high entropy',
|
|
394
|
+
pattern: /['"][A-Za-z0-9+/]{40,}={0,2}['"]/g,
|
|
395
|
+
severity: 'medium',
|
|
396
|
+
category: 'high-entropy',
|
|
397
|
+
validator: (match) => {
|
|
398
|
+
// Remove quotes
|
|
399
|
+
const str = match.slice(1, -1);
|
|
400
|
+
// Calculate Shannon entropy
|
|
401
|
+
const entropy = calculateEntropy(str);
|
|
402
|
+
// High entropy threshold for base64 (typically > 4.5)
|
|
403
|
+
return entropy > 4.5 && str.length >= 40;
|
|
404
|
+
},
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
id: 'high-entropy-hex',
|
|
408
|
+
name: 'High Entropy Hex String',
|
|
409
|
+
description: 'Potentially sensitive hexadecimal string with high entropy',
|
|
410
|
+
pattern: /['"][A-Fa-f0-9]{32,}['"]/g,
|
|
411
|
+
severity: 'medium',
|
|
412
|
+
category: 'high-entropy',
|
|
413
|
+
validator: (match) => {
|
|
414
|
+
const str = match.slice(1, -1);
|
|
415
|
+
const entropy = calculateEntropy(str);
|
|
416
|
+
// Hex strings have lower max entropy (~4.0)
|
|
417
|
+
return entropy > 3.5 && str.length >= 32;
|
|
418
|
+
},
|
|
419
|
+
},
|
|
420
|
+
];
|
|
421
|
+
/**
|
|
422
|
+
* Calculate Shannon entropy of a string
|
|
423
|
+
*/
|
|
424
|
+
export function calculateEntropy(str) {
|
|
425
|
+
const len = str.length;
|
|
426
|
+
if (len === 0)
|
|
427
|
+
return 0;
|
|
428
|
+
const freq = new Map();
|
|
429
|
+
for (const char of str) {
|
|
430
|
+
freq.set(char, (freq.get(char) || 0) + 1);
|
|
431
|
+
}
|
|
432
|
+
let entropy = 0;
|
|
433
|
+
for (const count of freq.values()) {
|
|
434
|
+
const p = count / len;
|
|
435
|
+
entropy -= p * Math.log2(p);
|
|
436
|
+
}
|
|
437
|
+
return entropy;
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* All secret patterns combined
|
|
441
|
+
*/
|
|
442
|
+
export const SECRET_PATTERNS = [
|
|
443
|
+
...awsPatterns,
|
|
444
|
+
...githubPatterns,
|
|
445
|
+
...stripePatterns,
|
|
446
|
+
...apiKeyPatterns,
|
|
447
|
+
...jwtPatterns,
|
|
448
|
+
...databasePatterns,
|
|
449
|
+
...privateKeyPatterns,
|
|
450
|
+
...cloudPatterns,
|
|
451
|
+
...communicationPatterns,
|
|
452
|
+
...paymentPatterns,
|
|
453
|
+
...highEntropyPatterns,
|
|
454
|
+
];
|
|
455
|
+
/**
|
|
456
|
+
* Get patterns by category
|
|
457
|
+
*/
|
|
458
|
+
export function getPatternsByCategory(category) {
|
|
459
|
+
return SECRET_PATTERNS.filter((p) => p.category === category);
|
|
460
|
+
}
|
|
461
|
+
/**
|
|
462
|
+
* Get patterns by severity
|
|
463
|
+
*/
|
|
464
|
+
export function getPatternsBySeverity(severity) {
|
|
465
|
+
return SECRET_PATTERNS.filter((p) => p.severity === severity);
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* Get all pattern categories
|
|
469
|
+
*/
|
|
470
|
+
export function getPatternCategories() {
|
|
471
|
+
return [...new Set(SECRET_PATTERNS.map((p) => p.category))];
|
|
472
|
+
}
|
|
473
|
+
//# sourceMappingURL=patterns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../src/secret-scan/patterns.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret Scanner Module
|
|
3
|
+
*
|
|
4
|
+
* Scans code and Git history for secrets and credentials.
|
|
5
|
+
*/
|
|
6
|
+
import { type SecretPattern, type SecretSeverity } from './patterns.js';
|
|
7
|
+
/**
|
|
8
|
+
* Options for secret scanning
|
|
9
|
+
*/
|
|
10
|
+
export interface SecretScanOptions {
|
|
11
|
+
/** Patterns to use (defaults to all) */
|
|
12
|
+
patterns?: SecretPattern[];
|
|
13
|
+
/** Categories to include (defaults to all) */
|
|
14
|
+
includeCategories?: string[];
|
|
15
|
+
/** Categories to exclude */
|
|
16
|
+
excludeCategories?: string[];
|
|
17
|
+
/** Minimum severity to report */
|
|
18
|
+
minSeverity?: SecretSeverity;
|
|
19
|
+
/** Whether to scan git history */
|
|
20
|
+
scanHistory?: boolean;
|
|
21
|
+
/** Maximum number of commits to scan in history */
|
|
22
|
+
maxCommits?: number;
|
|
23
|
+
/** File patterns to include (glob) */
|
|
24
|
+
includeFiles?: string[];
|
|
25
|
+
/** File patterns to exclude (glob) */
|
|
26
|
+
excludeFiles?: string[];
|
|
27
|
+
/** Progress callback */
|
|
28
|
+
onProgress?: (progress: ScanProgress) => void;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Scan progress information
|
|
32
|
+
*/
|
|
33
|
+
export interface ScanProgress {
|
|
34
|
+
phase: 'indexing' | 'scanning-files' | 'scanning-history' | 'complete';
|
|
35
|
+
currentFile?: string;
|
|
36
|
+
filesScanned: number;
|
|
37
|
+
totalFiles: number;
|
|
38
|
+
commitsScanned?: number;
|
|
39
|
+
totalCommits?: number;
|
|
40
|
+
secretsFound: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* A detected secret
|
|
44
|
+
*/
|
|
45
|
+
export interface DetectedSecret {
|
|
46
|
+
/** Pattern ID that matched */
|
|
47
|
+
patternId: string;
|
|
48
|
+
/** Human-readable name */
|
|
49
|
+
patternName: string;
|
|
50
|
+
/** File path where secret was found */
|
|
51
|
+
file: string;
|
|
52
|
+
/** Line number */
|
|
53
|
+
line: number;
|
|
54
|
+
/** Column position */
|
|
55
|
+
column: number;
|
|
56
|
+
/** The matched secret (partially redacted) */
|
|
57
|
+
match: string;
|
|
58
|
+
/** Full line content (for context) */
|
|
59
|
+
lineContent: string;
|
|
60
|
+
/** Severity level */
|
|
61
|
+
severity: SecretSeverity;
|
|
62
|
+
/** Category */
|
|
63
|
+
category: string;
|
|
64
|
+
/** Git commit hash (if found in history) */
|
|
65
|
+
commit?: string;
|
|
66
|
+
/** Git author (if found in history) */
|
|
67
|
+
author?: string;
|
|
68
|
+
/** Git commit date (if found in history) */
|
|
69
|
+
commitDate?: string;
|
|
70
|
+
/** Whether secret is still present in HEAD */
|
|
71
|
+
presentInHead: boolean;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Scan result summary
|
|
75
|
+
*/
|
|
76
|
+
export interface SecretScanResult {
|
|
77
|
+
/** Directory that was scanned */
|
|
78
|
+
directory: string;
|
|
79
|
+
/** Total files scanned */
|
|
80
|
+
filesScanned: number;
|
|
81
|
+
/** Commits scanned (if history scan enabled) */
|
|
82
|
+
commitsScanned: number;
|
|
83
|
+
/** All detected secrets */
|
|
84
|
+
secrets: DetectedSecret[];
|
|
85
|
+
/** Secrets by severity */
|
|
86
|
+
bySeverity: Record<SecretSeverity, number>;
|
|
87
|
+
/** Secrets by category */
|
|
88
|
+
byCategory: Record<string, number>;
|
|
89
|
+
/** Secrets currently in HEAD (not just history) */
|
|
90
|
+
activeSecrets: number;
|
|
91
|
+
/** Secrets only in history */
|
|
92
|
+
historicalSecrets: number;
|
|
93
|
+
/** Scan duration in ms */
|
|
94
|
+
durationMs: number;
|
|
95
|
+
/** .gitignore recommendations */
|
|
96
|
+
gitignoreRecommendations: string[];
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Secret Scanner class
|
|
100
|
+
*/
|
|
101
|
+
export declare class SecretScanner {
|
|
102
|
+
private patterns;
|
|
103
|
+
private options;
|
|
104
|
+
constructor(options?: SecretScanOptions);
|
|
105
|
+
/**
|
|
106
|
+
* Select patterns based on options
|
|
107
|
+
*/
|
|
108
|
+
private selectPatterns;
|
|
109
|
+
/**
|
|
110
|
+
* Scan a directory for secrets
|
|
111
|
+
*/
|
|
112
|
+
scan(directory: string): Promise<SecretScanResult>;
|
|
113
|
+
/**
|
|
114
|
+
* Scan a single file for secrets
|
|
115
|
+
*/
|
|
116
|
+
scanFile(filePath: string, baseDir: string): Promise<DetectedSecret[]>;
|
|
117
|
+
/**
|
|
118
|
+
* Scan a single line for secrets
|
|
119
|
+
*/
|
|
120
|
+
private scanLine;
|
|
121
|
+
/**
|
|
122
|
+
* Scan git history for secrets
|
|
123
|
+
*/
|
|
124
|
+
private scanGitHistory;
|
|
125
|
+
/**
|
|
126
|
+
* Scan a git diff for secrets
|
|
127
|
+
*/
|
|
128
|
+
private scanDiff;
|
|
129
|
+
/**
|
|
130
|
+
* Get list of files to scan
|
|
131
|
+
*/
|
|
132
|
+
private getFiles;
|
|
133
|
+
/**
|
|
134
|
+
* Check if directory is a git repo
|
|
135
|
+
*/
|
|
136
|
+
private isGitRepo;
|
|
137
|
+
/**
|
|
138
|
+
* Redact a secret for safe display
|
|
139
|
+
*/
|
|
140
|
+
private redactSecret;
|
|
141
|
+
/**
|
|
142
|
+
* Truncate long lines
|
|
143
|
+
*/
|
|
144
|
+
private truncateLine;
|
|
145
|
+
/**
|
|
146
|
+
* Generate .gitignore recommendations
|
|
147
|
+
*/
|
|
148
|
+
private generateGitignoreRecommendations;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Scan a directory for secrets (convenience function)
|
|
152
|
+
*/
|
|
153
|
+
export declare function scanForSecrets(directory: string, options?: SecretScanOptions): Promise<SecretScanResult>;
|
|
154
|
+
/**
|
|
155
|
+
* Quick scan without git history (convenience function)
|
|
156
|
+
*/
|
|
157
|
+
export declare function quickSecretScan(directory: string): Promise<SecretScanResult>;
|
|
158
|
+
/**
|
|
159
|
+
* Format scan result as text report
|
|
160
|
+
*/
|
|
161
|
+
export declare function formatSecretReport(result: SecretScanResult): string;
|
|
162
|
+
//# sourceMappingURL=scanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/secret-scan/scanner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wCAAwC;IACxC,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,8CAA8C;IAC9C,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,4BAA4B;IAC5B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,iCAAiC;IACjC,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,kCAAkC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,wBAAwB;IACxB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,UAAU,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,UAAU,CAAC;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB;IACrB,QAAQ,EAAE,cAAc,CAAC;IACzB,eAAe;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,2BAA2B;IAC3B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,mDAAmD;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,wBAAwB,EAAE,MAAM,EAAE,CAAC;CACpC;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,OAAO,CAAoB;gBAEvB,OAAO,GAAE,iBAAsB;IAK3C;;OAEG;IACH,OAAO,CAAC,cAAc;IA2BtB;;OAEG;IACG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA8FxD;;OAEG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAoB5E;;OAEG;IACH,OAAO,CAAC,QAAQ;IA+DhB;;OAEG;YACW,cAAc;IAqD5B;;OAEG;IACH,OAAO,CAAC,QAAQ;IA+ChB;;OAEG;IACH,OAAO,CAAC,QAAQ;IA2EhB;;OAEG;IACH,OAAO,CAAC,SAAS;IAYjB;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,OAAO,CAAC,gCAAgC;CAqDzC;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAG3B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,CAAC,CAK3B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAkFnE"}
|