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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/health-score/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,qBAAqB,EACrB,yBAAyB,EACzB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,EACxB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health Score Module
|
|
3
|
+
*
|
|
4
|
+
* Provides codebase health scoring with weighted dimensions:
|
|
5
|
+
* - Security (35%): OWASP score + Secret exposure
|
|
6
|
+
* - Maintainability (25%): Dead code % + Complexity
|
|
7
|
+
* - Quality (25%): Test coverage + TODO density
|
|
8
|
+
* - Performance (15%): N+1 patterns + Anti-patterns
|
|
9
|
+
*/
|
|
10
|
+
// Metrics
|
|
11
|
+
export { calculateSecurityScore, calculateMaintainabilityScore, calculateQualityScore, calculatePerformanceScore, getScoreLabel, getScoreColor, countAnnotations, countLinesOfCode, estimateComplexity, detectNPlusOnePatterns, detectBlockingIoPatterns, } from './metrics.js';
|
|
12
|
+
// Calculator
|
|
13
|
+
export { HealthScoreCalculator, calculateHealthScore, quickHealthCheck, formatHealthReport, DEFAULT_WEIGHTS, } from './calculator.js';
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/health-score/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,UAAU;AACV,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,qBAAqB,EACrB,yBAAyB,EACzB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,GAMzB,MAAM,cAAc,CAAC;AAEtB,aAAa;AACb,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,GAIhB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health Score Metrics
|
|
3
|
+
*
|
|
4
|
+
* Individual metric calculations for codebase health scoring.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Metric result with score and details
|
|
8
|
+
*/
|
|
9
|
+
export interface MetricResult {
|
|
10
|
+
/** Score from 0-100 */
|
|
11
|
+
score: number;
|
|
12
|
+
/** Human-readable label */
|
|
13
|
+
label: string;
|
|
14
|
+
/** Detailed breakdown */
|
|
15
|
+
details: Record<string, number | string>;
|
|
16
|
+
/** Issues found (if any) */
|
|
17
|
+
issues?: string[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Security metrics from scan results
|
|
21
|
+
*/
|
|
22
|
+
export interface SecurityMetrics {
|
|
23
|
+
/** OWASP category scores */
|
|
24
|
+
owaspScores: Record<string, number>;
|
|
25
|
+
/** Total vulnerabilities by severity */
|
|
26
|
+
vulnerabilities: {
|
|
27
|
+
critical: number;
|
|
28
|
+
high: number;
|
|
29
|
+
medium: number;
|
|
30
|
+
low: number;
|
|
31
|
+
};
|
|
32
|
+
/** Secrets found */
|
|
33
|
+
secretsExposed: number;
|
|
34
|
+
/** Active secrets (in HEAD) */
|
|
35
|
+
activeSecrets: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Calculate security score (0-100)
|
|
39
|
+
*/
|
|
40
|
+
export declare function calculateSecurityScore(metrics: SecurityMetrics): MetricResult;
|
|
41
|
+
/**
|
|
42
|
+
* Maintainability metrics
|
|
43
|
+
*/
|
|
44
|
+
export interface MaintainabilityMetrics {
|
|
45
|
+
/** Total lines of code */
|
|
46
|
+
totalLoc: number;
|
|
47
|
+
/** Dead code lines */
|
|
48
|
+
deadCodeLoc: number;
|
|
49
|
+
/** Number of dead functions */
|
|
50
|
+
deadFunctions: number;
|
|
51
|
+
/** Average cyclomatic complexity */
|
|
52
|
+
avgComplexity: number;
|
|
53
|
+
/** Max cyclomatic complexity */
|
|
54
|
+
maxComplexity: number;
|
|
55
|
+
/** Functions with complexity > 10 */
|
|
56
|
+
complexFunctions: number;
|
|
57
|
+
/** Duplicate code percentage */
|
|
58
|
+
duplicationPercent: number;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Calculate maintainability score (0-100)
|
|
62
|
+
*/
|
|
63
|
+
export declare function calculateMaintainabilityScore(metrics: MaintainabilityMetrics): MetricResult;
|
|
64
|
+
/**
|
|
65
|
+
* Quality metrics
|
|
66
|
+
*/
|
|
67
|
+
export interface QualityMetrics {
|
|
68
|
+
/** Test coverage percentage (0-100) */
|
|
69
|
+
testCoverage: number;
|
|
70
|
+
/** Number of test files */
|
|
71
|
+
testFiles: number;
|
|
72
|
+
/** Number of TODOs in code */
|
|
73
|
+
todoCount: number;
|
|
74
|
+
/** Number of FIXMEs in code */
|
|
75
|
+
fixmeCount: number;
|
|
76
|
+
/** Number of HACKs in code */
|
|
77
|
+
hackCount: number;
|
|
78
|
+
/** Total source files */
|
|
79
|
+
sourceFiles: number;
|
|
80
|
+
/** Files with tests */
|
|
81
|
+
filesWithTests: number;
|
|
82
|
+
/** Lint errors (if available) */
|
|
83
|
+
lintErrors: number;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Calculate quality score (0-100)
|
|
87
|
+
*/
|
|
88
|
+
export declare function calculateQualityScore(metrics: QualityMetrics): MetricResult;
|
|
89
|
+
/**
|
|
90
|
+
* Performance metrics
|
|
91
|
+
*/
|
|
92
|
+
export interface PerformanceMetrics {
|
|
93
|
+
/** N+1 query patterns detected */
|
|
94
|
+
nPlusOnePatterns: number;
|
|
95
|
+
/** Inefficient loops detected */
|
|
96
|
+
inefficientLoops: number;
|
|
97
|
+
/** Blocking I/O in async context */
|
|
98
|
+
blockingIoPatterns: number;
|
|
99
|
+
/** Large bundle/file sizes */
|
|
100
|
+
largeBundles: number;
|
|
101
|
+
/** Unused imports */
|
|
102
|
+
unusedImports: number;
|
|
103
|
+
/** Sync operations that should be async */
|
|
104
|
+
syncAntiPatterns: number;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Calculate performance score (0-100)
|
|
108
|
+
*/
|
|
109
|
+
export declare function calculatePerformanceScore(metrics: PerformanceMetrics): MetricResult;
|
|
110
|
+
/**
|
|
111
|
+
* Get human-readable label for score
|
|
112
|
+
*/
|
|
113
|
+
export declare function getScoreLabel(score: number): string;
|
|
114
|
+
/**
|
|
115
|
+
* Get color for score (for CLI/UI display)
|
|
116
|
+
*/
|
|
117
|
+
export declare function getScoreColor(score: number): 'green' | 'yellow' | 'orange' | 'red';
|
|
118
|
+
/**
|
|
119
|
+
* Count TODOs, FIXMEs, HACKs in a file
|
|
120
|
+
*/
|
|
121
|
+
export declare function countAnnotations(content: string): {
|
|
122
|
+
todo: number;
|
|
123
|
+
fixme: number;
|
|
124
|
+
hack: number;
|
|
125
|
+
};
|
|
126
|
+
/**
|
|
127
|
+
* Count lines of code (excluding blank lines and comments)
|
|
128
|
+
*/
|
|
129
|
+
export declare function countLinesOfCode(content: string, language: string): number;
|
|
130
|
+
/**
|
|
131
|
+
* Estimate cyclomatic complexity from code
|
|
132
|
+
*/
|
|
133
|
+
export declare function estimateComplexity(content: string): number;
|
|
134
|
+
/**
|
|
135
|
+
* Detect N+1 query patterns
|
|
136
|
+
*/
|
|
137
|
+
export declare function detectNPlusOnePatterns(content: string): number;
|
|
138
|
+
/**
|
|
139
|
+
* Detect blocking I/O patterns in async context
|
|
140
|
+
*/
|
|
141
|
+
export declare function detectBlockingIoPatterns(content: string): number;
|
|
142
|
+
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/health-score/metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health Score Metrics
|
|
3
|
+
*
|
|
4
|
+
* Individual metric calculations for codebase health scoring.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Calculate security score (0-100)
|
|
8
|
+
*/
|
|
9
|
+
export function calculateSecurityScore(metrics) {
|
|
10
|
+
const issues = [];
|
|
11
|
+
// Base score starts at 100
|
|
12
|
+
let score = 100;
|
|
13
|
+
// Deduct for vulnerabilities
|
|
14
|
+
const vulnPenalty = metrics.vulnerabilities.critical * 15 +
|
|
15
|
+
metrics.vulnerabilities.high * 8 +
|
|
16
|
+
metrics.vulnerabilities.medium * 3 +
|
|
17
|
+
metrics.vulnerabilities.low * 1;
|
|
18
|
+
score -= Math.min(vulnPenalty, 60); // Max 60 point deduction for vulns
|
|
19
|
+
if (metrics.vulnerabilities.critical > 0) {
|
|
20
|
+
issues.push(`${metrics.vulnerabilities.critical} critical vulnerabilities`);
|
|
21
|
+
}
|
|
22
|
+
if (metrics.vulnerabilities.high > 0) {
|
|
23
|
+
issues.push(`${metrics.vulnerabilities.high} high severity vulnerabilities`);
|
|
24
|
+
}
|
|
25
|
+
// Deduct for secrets
|
|
26
|
+
const secretPenalty = metrics.activeSecrets * 10 + (metrics.secretsExposed - metrics.activeSecrets) * 2;
|
|
27
|
+
score -= Math.min(secretPenalty, 30); // Max 30 point deduction for secrets
|
|
28
|
+
if (metrics.activeSecrets > 0) {
|
|
29
|
+
issues.push(`${metrics.activeSecrets} secrets exposed in codebase`);
|
|
30
|
+
}
|
|
31
|
+
// Calculate OWASP coverage (bonus for no issues in categories)
|
|
32
|
+
const owaspCategories = Object.keys(metrics.owaspScores);
|
|
33
|
+
const cleanCategories = owaspCategories.filter((c) => metrics.owaspScores[c] === 0);
|
|
34
|
+
const owaspBonus = Math.floor((cleanCategories.length / Math.max(owaspCategories.length, 1)) * 10);
|
|
35
|
+
score = Math.min(100, score + owaspBonus);
|
|
36
|
+
return {
|
|
37
|
+
score: Math.max(0, Math.round(score)),
|
|
38
|
+
label: getScoreLabel(score),
|
|
39
|
+
details: {
|
|
40
|
+
criticalVulns: metrics.vulnerabilities.critical,
|
|
41
|
+
highVulns: metrics.vulnerabilities.high,
|
|
42
|
+
mediumVulns: metrics.vulnerabilities.medium,
|
|
43
|
+
lowVulns: metrics.vulnerabilities.low,
|
|
44
|
+
secretsExposed: metrics.secretsExposed,
|
|
45
|
+
activeSecrets: metrics.activeSecrets,
|
|
46
|
+
},
|
|
47
|
+
issues,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Calculate maintainability score (0-100)
|
|
52
|
+
*/
|
|
53
|
+
export function calculateMaintainabilityScore(metrics) {
|
|
54
|
+
const issues = [];
|
|
55
|
+
let score = 100;
|
|
56
|
+
// Dead code penalty (up to 25 points)
|
|
57
|
+
const deadCodePercent = metrics.totalLoc > 0 ? (metrics.deadCodeLoc / metrics.totalLoc) * 100 : 0;
|
|
58
|
+
const deadCodePenalty = Math.min(deadCodePercent * 2.5, 25);
|
|
59
|
+
score -= deadCodePenalty;
|
|
60
|
+
if (deadCodePercent > 5) {
|
|
61
|
+
issues.push(`${deadCodePercent.toFixed(1)}% dead code (${metrics.deadFunctions} unused functions)`);
|
|
62
|
+
}
|
|
63
|
+
// Complexity penalty (up to 35 points)
|
|
64
|
+
const complexityPenalty = Math.min(metrics.complexFunctions * 3, 20) + (metrics.avgComplexity > 5 ? (metrics.avgComplexity - 5) * 3 : 0);
|
|
65
|
+
score -= Math.min(complexityPenalty, 35);
|
|
66
|
+
if (metrics.maxComplexity > 20) {
|
|
67
|
+
issues.push(`High complexity detected (max: ${metrics.maxComplexity})`);
|
|
68
|
+
}
|
|
69
|
+
if (metrics.complexFunctions > 5) {
|
|
70
|
+
issues.push(`${metrics.complexFunctions} functions with complexity > 10`);
|
|
71
|
+
}
|
|
72
|
+
// Duplication penalty (up to 20 points)
|
|
73
|
+
const duplicationPenalty = Math.min(metrics.duplicationPercent * 2, 20);
|
|
74
|
+
score -= duplicationPenalty;
|
|
75
|
+
if (metrics.duplicationPercent > 5) {
|
|
76
|
+
issues.push(`${metrics.duplicationPercent.toFixed(1)}% code duplication`);
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
score: Math.max(0, Math.round(score)),
|
|
80
|
+
label: getScoreLabel(score),
|
|
81
|
+
details: {
|
|
82
|
+
totalLoc: metrics.totalLoc,
|
|
83
|
+
deadCodeLoc: metrics.deadCodeLoc,
|
|
84
|
+
deadCodePercent: Math.round(deadCodePercent * 10) / 10,
|
|
85
|
+
deadFunctions: metrics.deadFunctions,
|
|
86
|
+
avgComplexity: Math.round(metrics.avgComplexity * 10) / 10,
|
|
87
|
+
maxComplexity: metrics.maxComplexity,
|
|
88
|
+
complexFunctions: metrics.complexFunctions,
|
|
89
|
+
duplicationPercent: metrics.duplicationPercent,
|
|
90
|
+
},
|
|
91
|
+
issues,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Calculate quality score (0-100)
|
|
96
|
+
*/
|
|
97
|
+
export function calculateQualityScore(metrics) {
|
|
98
|
+
const issues = [];
|
|
99
|
+
let score = 100;
|
|
100
|
+
// Test coverage (up to 40 points)
|
|
101
|
+
// Full points at 80%+ coverage
|
|
102
|
+
if (metrics.testCoverage < 80) {
|
|
103
|
+
const coveragePenalty = (80 - metrics.testCoverage) * 0.5;
|
|
104
|
+
score -= Math.min(coveragePenalty, 40);
|
|
105
|
+
}
|
|
106
|
+
if (metrics.testCoverage < 50) {
|
|
107
|
+
issues.push(`Low test coverage: ${metrics.testCoverage}%`);
|
|
108
|
+
}
|
|
109
|
+
else if (metrics.testCoverage < 70) {
|
|
110
|
+
issues.push(`Test coverage could be improved: ${metrics.testCoverage}%`);
|
|
111
|
+
}
|
|
112
|
+
// TODO/FIXME/HACK density (up to 20 points)
|
|
113
|
+
const todoTotal = metrics.todoCount + metrics.fixmeCount * 2 + metrics.hackCount * 3;
|
|
114
|
+
const todoDensity = metrics.sourceFiles > 0 ? todoTotal / metrics.sourceFiles : 0;
|
|
115
|
+
const todoPenalty = Math.min(todoDensity * 5, 20);
|
|
116
|
+
score -= todoPenalty;
|
|
117
|
+
if (metrics.fixmeCount > 5) {
|
|
118
|
+
issues.push(`${metrics.fixmeCount} FIXME comments in code`);
|
|
119
|
+
}
|
|
120
|
+
if (metrics.hackCount > 0) {
|
|
121
|
+
issues.push(`${metrics.hackCount} HACK comments in code`);
|
|
122
|
+
}
|
|
123
|
+
// Lint errors (up to 20 points)
|
|
124
|
+
const lintPenalty = Math.min(metrics.lintErrors * 0.5, 20);
|
|
125
|
+
score -= lintPenalty;
|
|
126
|
+
if (metrics.lintErrors > 10) {
|
|
127
|
+
issues.push(`${metrics.lintErrors} lint errors`);
|
|
128
|
+
}
|
|
129
|
+
// Test file ratio bonus
|
|
130
|
+
const testRatio = metrics.sourceFiles > 0 ? metrics.testFiles / metrics.sourceFiles : 0;
|
|
131
|
+
if (testRatio > 0.5) {
|
|
132
|
+
score = Math.min(100, score + 5);
|
|
133
|
+
}
|
|
134
|
+
return {
|
|
135
|
+
score: Math.max(0, Math.round(score)),
|
|
136
|
+
label: getScoreLabel(score),
|
|
137
|
+
details: {
|
|
138
|
+
testCoverage: metrics.testCoverage,
|
|
139
|
+
testFiles: metrics.testFiles,
|
|
140
|
+
sourceFiles: metrics.sourceFiles,
|
|
141
|
+
todoCount: metrics.todoCount,
|
|
142
|
+
fixmeCount: metrics.fixmeCount,
|
|
143
|
+
hackCount: metrics.hackCount,
|
|
144
|
+
lintErrors: metrics.lintErrors,
|
|
145
|
+
},
|
|
146
|
+
issues,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Calculate performance score (0-100)
|
|
151
|
+
*/
|
|
152
|
+
export function calculatePerformanceScore(metrics) {
|
|
153
|
+
const issues = [];
|
|
154
|
+
let score = 100;
|
|
155
|
+
// N+1 patterns (up to 30 points)
|
|
156
|
+
const nPlusOnePenalty = metrics.nPlusOnePatterns * 10;
|
|
157
|
+
score -= Math.min(nPlusOnePenalty, 30);
|
|
158
|
+
if (metrics.nPlusOnePatterns > 0) {
|
|
159
|
+
issues.push(`${metrics.nPlusOnePatterns} potential N+1 query patterns`);
|
|
160
|
+
}
|
|
161
|
+
// Inefficient loops (up to 20 points)
|
|
162
|
+
const loopPenalty = metrics.inefficientLoops * 5;
|
|
163
|
+
score -= Math.min(loopPenalty, 20);
|
|
164
|
+
if (metrics.inefficientLoops > 3) {
|
|
165
|
+
issues.push(`${metrics.inefficientLoops} inefficient loop patterns`);
|
|
166
|
+
}
|
|
167
|
+
// Blocking I/O (up to 25 points)
|
|
168
|
+
const blockingPenalty = metrics.blockingIoPatterns * 8;
|
|
169
|
+
score -= Math.min(blockingPenalty, 25);
|
|
170
|
+
if (metrics.blockingIoPatterns > 0) {
|
|
171
|
+
issues.push(`${metrics.blockingIoPatterns} blocking I/O operations in async context`);
|
|
172
|
+
}
|
|
173
|
+
// Sync anti-patterns (up to 15 points)
|
|
174
|
+
const syncPenalty = metrics.syncAntiPatterns * 3;
|
|
175
|
+
score -= Math.min(syncPenalty, 15);
|
|
176
|
+
// Unused imports (minor, up to 10 points)
|
|
177
|
+
const unusedPenalty = Math.min(metrics.unusedImports * 0.5, 10);
|
|
178
|
+
score -= unusedPenalty;
|
|
179
|
+
if (metrics.unusedImports > 20) {
|
|
180
|
+
issues.push(`${metrics.unusedImports} unused imports`);
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
score: Math.max(0, Math.round(score)),
|
|
184
|
+
label: getScoreLabel(score),
|
|
185
|
+
details: {
|
|
186
|
+
nPlusOnePatterns: metrics.nPlusOnePatterns,
|
|
187
|
+
inefficientLoops: metrics.inefficientLoops,
|
|
188
|
+
blockingIoPatterns: metrics.blockingIoPatterns,
|
|
189
|
+
syncAntiPatterns: metrics.syncAntiPatterns,
|
|
190
|
+
unusedImports: metrics.unusedImports,
|
|
191
|
+
largeBundles: metrics.largeBundles,
|
|
192
|
+
},
|
|
193
|
+
issues,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Get human-readable label for score
|
|
198
|
+
*/
|
|
199
|
+
export function getScoreLabel(score) {
|
|
200
|
+
if (score >= 90)
|
|
201
|
+
return 'Excellent';
|
|
202
|
+
if (score >= 80)
|
|
203
|
+
return 'Good';
|
|
204
|
+
if (score >= 70)
|
|
205
|
+
return 'Fair';
|
|
206
|
+
if (score >= 60)
|
|
207
|
+
return 'Needs Improvement';
|
|
208
|
+
if (score >= 50)
|
|
209
|
+
return 'Poor';
|
|
210
|
+
return 'Critical';
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Get color for score (for CLI/UI display)
|
|
214
|
+
*/
|
|
215
|
+
export function getScoreColor(score) {
|
|
216
|
+
if (score >= 80)
|
|
217
|
+
return 'green';
|
|
218
|
+
if (score >= 60)
|
|
219
|
+
return 'yellow';
|
|
220
|
+
if (score >= 40)
|
|
221
|
+
return 'orange';
|
|
222
|
+
return 'red';
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Count TODOs, FIXMEs, HACKs in a file
|
|
226
|
+
*/
|
|
227
|
+
export function countAnnotations(content) {
|
|
228
|
+
const todoMatches = content.match(/\bTODO\b/gi) || [];
|
|
229
|
+
const fixmeMatches = content.match(/\bFIXME\b/gi) || [];
|
|
230
|
+
const hackMatches = content.match(/\bHACK\b/gi) || [];
|
|
231
|
+
return {
|
|
232
|
+
todo: todoMatches.length,
|
|
233
|
+
fixme: fixmeMatches.length,
|
|
234
|
+
hack: hackMatches.length,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Count lines of code (excluding blank lines and comments)
|
|
239
|
+
*/
|
|
240
|
+
export function countLinesOfCode(content, language) {
|
|
241
|
+
const lines = content.split('\n');
|
|
242
|
+
let loc = 0;
|
|
243
|
+
let inBlockComment = false;
|
|
244
|
+
for (const line of lines) {
|
|
245
|
+
const trimmed = line.trim();
|
|
246
|
+
// Skip blank lines
|
|
247
|
+
if (!trimmed)
|
|
248
|
+
continue;
|
|
249
|
+
// Handle block comments
|
|
250
|
+
if (language === 'java' || language === 'typescript' || language === 'javascript') {
|
|
251
|
+
if (inBlockComment) {
|
|
252
|
+
if (trimmed.includes('*/')) {
|
|
253
|
+
inBlockComment = false;
|
|
254
|
+
}
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
if (trimmed.startsWith('/*')) {
|
|
258
|
+
if (!trimmed.includes('*/')) {
|
|
259
|
+
inBlockComment = true;
|
|
260
|
+
}
|
|
261
|
+
continue;
|
|
262
|
+
}
|
|
263
|
+
// Skip single-line comments
|
|
264
|
+
if (trimmed.startsWith('//'))
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
else if (language === 'python') {
|
|
268
|
+
if (trimmed.startsWith('#'))
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
271
|
+
loc++;
|
|
272
|
+
}
|
|
273
|
+
return loc;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Estimate cyclomatic complexity from code
|
|
277
|
+
*/
|
|
278
|
+
export function estimateComplexity(content) {
|
|
279
|
+
// Simple heuristic: count decision points
|
|
280
|
+
const patterns = [
|
|
281
|
+
/\bif\s*\(/g,
|
|
282
|
+
/\belse\s+if\s*\(/g,
|
|
283
|
+
/\bwhile\s*\(/g,
|
|
284
|
+
/\bfor\s*\(/g,
|
|
285
|
+
/\bcase\s+/g,
|
|
286
|
+
/\bcatch\s*\(/g,
|
|
287
|
+
/\?\s*[^:]/g, // Ternary operator
|
|
288
|
+
/&&/g,
|
|
289
|
+
/\|\|/g,
|
|
290
|
+
];
|
|
291
|
+
let complexity = 1; // Base complexity
|
|
292
|
+
for (const pattern of patterns) {
|
|
293
|
+
const matches = content.match(pattern);
|
|
294
|
+
if (matches) {
|
|
295
|
+
complexity += matches.length;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
return complexity;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Detect N+1 query patterns
|
|
302
|
+
*/
|
|
303
|
+
export function detectNPlusOnePatterns(content) {
|
|
304
|
+
let count = 0;
|
|
305
|
+
// Pattern: query inside a loop
|
|
306
|
+
const loopQueryPattern = /for\s*\([^)]*\)\s*\{[^}]*(?:\.find|\.query|\.fetch|\.select|\.execute|Repository\.|Dao\.)[^}]*\}/gi;
|
|
307
|
+
const matches = content.match(loopQueryPattern);
|
|
308
|
+
if (matches) {
|
|
309
|
+
count += matches.length;
|
|
310
|
+
}
|
|
311
|
+
// Pattern: forEach with database call
|
|
312
|
+
const forEachQueryPattern = /\.forEach\s*\([^)]*\)\s*(?:=>|\{)[^}]*(?:\.find|\.query|\.fetch|\.select|Repository\.|Dao\.)/gi;
|
|
313
|
+
const forEachMatches = content.match(forEachQueryPattern);
|
|
314
|
+
if (forEachMatches) {
|
|
315
|
+
count += forEachMatches.length;
|
|
316
|
+
}
|
|
317
|
+
return count;
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Detect blocking I/O patterns in async context
|
|
321
|
+
*/
|
|
322
|
+
export function detectBlockingIoPatterns(content) {
|
|
323
|
+
let count = 0;
|
|
324
|
+
// Sync file operations in async functions
|
|
325
|
+
const asyncWithSyncPattern = /async\s+(?:function\s+)?\w*\s*\([^)]*\)\s*(?::\s*Promise[^{]*)?\{[^}]*(?:readFileSync|writeFileSync|existsSync|readdirSync)[^}]*\}/gi;
|
|
326
|
+
const matches = content.match(asyncWithSyncPattern);
|
|
327
|
+
if (matches) {
|
|
328
|
+
count += matches.length;
|
|
329
|
+
}
|
|
330
|
+
return count;
|
|
331
|
+
}
|
|
332
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/health-score/metrics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAsCH;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAwB;IAC7D,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,2BAA2B;IAC3B,IAAI,KAAK,GAAG,GAAG,CAAC;IAEhB,6BAA6B;IAC7B,MAAM,WAAW,GACf,OAAO,CAAC,eAAe,CAAC,QAAQ,GAAG,EAAE;QACrC,OAAO,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC;QAChC,OAAO,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;QAClC,OAAO,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC,CAAC;IAElC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,mCAAmC;IAEvE,IAAI,OAAO,CAAC,eAAe,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,QAAQ,2BAA2B,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,gCAAgC,CAAC,CAAC;IAC/E,CAAC;IAED,qBAAqB;IACrB,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACxG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,qCAAqC;IAE3E,IAAI,OAAO,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,aAAa,8BAA8B,CAAC,CAAC;IACtE,CAAC;IAED,+DAA+D;IAC/D,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACpF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACnG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC;IAE1C,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC;QAC3B,OAAO,EAAE;YACP,aAAa,EAAE,OAAO,CAAC,eAAe,CAAC,QAAQ;YAC/C,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,IAAI;YACvC,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,MAAM;YAC3C,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG;YACrC,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC;QACD,MAAM;KACP,CAAC;AACJ,CAAC;AAsBD;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAAC,OAA+B;IAC3E,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,GAAG,GAAG,CAAC;IAEhB,sCAAsC;IACtC,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClG,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5D,KAAK,IAAI,eAAe,CAAC;IAEzB,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,OAAO,CAAC,aAAa,oBAAoB,CAAC,CAAC;IACtG,CAAC;IAED,uCAAuC;IACvC,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzI,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAEzC,IAAI,OAAO,CAAC,aAAa,GAAG,EAAE,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,kCAAkC,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,OAAO,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB,iCAAiC,CAAC,CAAC;IAC5E,CAAC;IAED,wCAAwC;IACxC,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACxE,KAAK,IAAI,kBAAkB,CAAC;IAE5B,IAAI,OAAO,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC;QAC3B,OAAO,EAAE;YACP,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC,GAAG,EAAE;YACtD,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,GAAG,EAAE,CAAC,GAAG,EAAE;YAC1D,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;SAC/C;QACD,MAAM;KACP,CAAC;AACJ,CAAC;AAwBD;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAuB;IAC3D,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,GAAG,GAAG,CAAC;IAEhB,kCAAkC;IAClC,+BAA+B;IAC/B,IAAI,OAAO,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC;QAC9B,MAAM,eAAe,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC;QAC1D,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,OAAO,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,sBAAsB,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;IAC7D,CAAC;SAAM,IAAI,OAAO,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,oCAAoC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;IAC3E,CAAC;IAED,4CAA4C;IAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;IACrF,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAClD,KAAK,IAAI,WAAW,CAAC;IAErB,IAAI,OAAO,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,yBAAyB,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,SAAS,wBAAwB,CAAC,CAAC;IAC5D,CAAC;IAED,gCAAgC;IAChC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3D,KAAK,IAAI,WAAW,CAAC;IAErB,IAAI,OAAO,CAAC,UAAU,GAAG,EAAE,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,cAAc,CAAC,CAAC;IACnD,CAAC;IAED,wBAAwB;IACxB,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC;QACpB,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC;QAC3B,OAAO,EAAE;YACP,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B;QACD,MAAM;KACP,CAAC;AACJ,CAAC;AAoBD;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAA2B;IACnE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,GAAG,GAAG,CAAC;IAEhB,iCAAiC;IACjC,MAAM,eAAe,GAAG,OAAO,CAAC,gBAAgB,GAAG,EAAE,CAAC;IACtD,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAEvC,IAAI,OAAO,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB,+BAA+B,CAAC,CAAC;IAC1E,CAAC;IAED,sCAAsC;IACtC,MAAM,WAAW,GAAG,OAAO,CAAC,gBAAgB,GAAG,CAAC,CAAC;IACjD,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAEnC,IAAI,OAAO,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB,4BAA4B,CAAC,CAAC;IACvE,CAAC;IAED,iCAAiC;IACjC,MAAM,eAAe,GAAG,OAAO,CAAC,kBAAkB,GAAG,CAAC,CAAC;IACvD,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAEvC,IAAI,OAAO,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB,2CAA2C,CAAC,CAAC;IACxF,CAAC;IAED,uCAAuC;IACvC,MAAM,WAAW,GAAG,OAAO,CAAC,gBAAgB,GAAG,CAAC,CAAC;IACjD,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAEnC,0CAA0C;IAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;IAChE,KAAK,IAAI,aAAa,CAAC;IAEvB,IAAI,OAAO,CAAC,aAAa,GAAG,EAAE,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,aAAa,iBAAiB,CAAC,CAAC;IACzD,CAAC;IAED,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC;QAC3B,OAAO,EAAE;YACP,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;YAC9C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC;QACD,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,WAAW,CAAC;IACpC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,MAAM,CAAC;IAC/B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,MAAM,CAAC;IAC/B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,mBAAmB,CAAC;IAC5C,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,MAAM,CAAC;IAC/B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,OAAO,CAAC;IAChC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IACjC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IACjC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IACtD,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IACxD,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAEtD,OAAO;QACL,IAAI,EAAE,WAAW,CAAC,MAAM;QACxB,KAAK,EAAE,YAAY,CAAC,MAAM;QAC1B,IAAI,EAAE,WAAW,CAAC,MAAM;KACzB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,QAAgB;IAChE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,mBAAmB;QACnB,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,wBAAwB;QACxB,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;YAClF,IAAI,cAAc,EAAE,CAAC;gBACnB,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC3B,cAAc,GAAG,KAAK,CAAC;gBACzB,CAAC;gBACD,SAAS;YACX,CAAC;YACD,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,cAAc,GAAG,IAAI,CAAC;gBACxB,CAAC;gBACD,SAAS;YACX,CAAC;YACD,4BAA4B;YAC5B,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,SAAS;QACzC,CAAC;aAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;QACxC,CAAC;QAED,GAAG,EAAE,CAAC;IACR,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,0CAA0C;IAC1C,MAAM,QAAQ,GAAG;QACf,YAAY;QACZ,mBAAmB;QACnB,eAAe;QACf,aAAa;QACb,YAAY;QACZ,eAAe;QACf,YAAY,EAAE,mBAAmB;QACjC,KAAK;QACL,OAAO;KACR,CAAC;IAEF,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,kBAAkB;IAEtC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,OAAO,EAAE,CAAC;YACZ,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,+BAA+B;IAC/B,MAAM,gBAAgB,GAAG,oGAAoG,CAAC;IAC9H,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAChD,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,sCAAsC;IACtC,MAAM,mBAAmB,GAAG,gGAAgG,CAAC;IAC7H,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC1D,IAAI,cAAc,EAAE,CAAC;QACnB,KAAK,IAAI,cAAc,CAAC,MAAM,CAAC;IACjC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,0CAA0C;IAC1C,MAAM,oBAAoB,GAAG,sIAAsI,CAAC;IACpK,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACpD,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Circle-IR AI - LLM-enhanced SAST analysis
|
|
3
|
+
*
|
|
4
|
+
* This package extends circle-ir with AI-powered capabilities:
|
|
5
|
+
* - LLM-based verification of vulnerabilities
|
|
6
|
+
* - Pattern verification
|
|
7
|
+
*/
|
|
8
|
+
export * from 'circle-ir';
|
|
9
|
+
export { AxLLMClient, getAxLLMClient, type AxPhase, } from './llm/ax-client.js';
|
|
10
|
+
export { createLLMConfig, defaultLLMConfig, type LLMConfig, type PhaseConfig, } from './llm/config.js';
|
|
11
|
+
export { EnrichmentEngine, getEnrichmentEngine, enrichType, type EnrichmentResult, type RoleClassificationResult, type DiscoveredSource, type DiscoveredSink, type VirtualCallResolution, } from './llm/enrichment.js';
|
|
12
|
+
export { VerificationEngine, getVerificationEngine, verifyTaintPath, verifyVulnerability, type VerificationResult, type VerificationInput, type VerificationVerdict, type Exploitability, } from './llm/verification.js';
|
|
13
|
+
export { verifyPatterns, verifyPatternDetailed, isVerificationAvailable, type PatternVerificationResult, type BatchVerificationResult, } from './llm/pattern-verification.js';
|
|
14
|
+
export { analyzeFilesSwarm, analyzeFilesSwarmStream, type SwarmOptions, type SwarmResult, type FileResult, } from './agents/mastra/swarm.js';
|
|
15
|
+
export { analyzeFile, analyzeFileStream, type WorkflowInput, type WorkflowOutput, } from './agents/mastra/workflow.js';
|
|
16
|
+
export { SecurityScanner, scanRepository, scanDirectory, quickScan, formatScanReport, type ScanOptions, type ScanProgress, type ScanResult, type ScanMeta, type ScanFinding, type OWASPSummary, type ScanSummary, type FileResult as SecurityFileResult, } from './security-scan/index.js';
|
|
17
|
+
export { getOWASPMapping, getCWEsForOWASPCategory, getOWASPCategoryByRank, getOWASPCategoryDescription, type OWASPCategory, type OWASPMapping, } from './security-scan/owasp-mapping.js';
|
|
18
|
+
export { TrendTracker, getTrendTracker, trackScan, type TrendData, type StoredScan, type TrendComparison, type TrendSummary, } from './security-scan/trend-tracker.js';
|
|
19
|
+
export { DeadCodeDetector, detectDeadCode, quickDeadCodeCheck, formatDeadCodeReport, type DeadCodeOptions, type DetectionProgress, type DeadCodeResult, type EntryPoint, type DeadCodeItem, type DeadCodeSummary, type CallGraphNode, } from './dead-code/index.js';
|
|
20
|
+
export { SecretScanner, scanForSecrets, quickSecretScan, formatSecretReport, SECRET_PATTERNS, calculateEntropy, getPatternsByCategory, getPatternsBySeverity, getPatternCategories, type SecretPattern, type SecretSeverity, type SecretScanOptions, type ScanProgress as SecretScanProgress, type DetectedSecret, type SecretScanResult, } from './secret-scan/index.js';
|
|
21
|
+
export { HealthScoreCalculator, calculateHealthScore, quickHealthCheck, formatHealthReport, DEFAULT_WEIGHTS, calculateSecurityScore, calculateMaintainabilityScore, calculateQualityScore, calculatePerformanceScore, getScoreLabel, getScoreColor, type HealthScoreOptions, type HealthScoreWeights, type HealthScoreResult, type MetricResult, type SecurityMetrics, type MaintainabilityMetrics, type QualityMetrics, type PerformanceMetrics, } from './health-score/index.js';
|
|
22
|
+
export { DiscoveryEngine, getDiscoveryEngine, discoverVulnerabilities, discoveryResultsToFindings, type DiscoveryResult, type DiscoveredVulnerability, type DiscoveryOptions, } from './llm/discovery.js';
|
|
23
|
+
export { ActionQueue, aggregateFindings, exportActions, formatQueueSummary, formatSprintPlan, DEFAULT_PRIORITY_WEIGHTS, EFFORT_POINTS, RISK_SCORES, EFFORT_SCORES, type ActionItem, type ActionSource, type ActionCategory, type EffortLevel, type RiskLevel, type PriorityWeights, type ActionFilter, type SprintConfig, type SprintPlan, type ActionQueueSummary, type AggregationInput, type AggregatorOptions, type ExportFormat, } from './action-queue/index.js';
|
|
24
|
+
export { FileCache, getAnalysisCache, resetAnalysisCache, type CacheEntry, type FileCacheOptions, } from './cache/file-cache.js';
|
|
25
|
+
export { generateSpecifica, generateSpecificaForDirectory, extractEvidence, generateSpec, formatSpecMarkdown, resolveConflict, fileExists, getConflictStrategy, type SpecificaOptions, type SpecificaOutput, type FileEvidence, type SpecMdContent, type Requirement, type GenerationMetadata, type ConflictResolution, } from './specifica/index.js';
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Circle-IR AI - LLM-enhanced SAST analysis
|
|
3
|
+
*
|
|
4
|
+
* This package extends circle-ir with AI-powered capabilities:
|
|
5
|
+
* - LLM-based verification of vulnerabilities
|
|
6
|
+
* - Pattern verification
|
|
7
|
+
*/
|
|
8
|
+
// Re-export everything from circle-ir
|
|
9
|
+
export * from 'circle-ir';
|
|
10
|
+
// LLM client and configuration
|
|
11
|
+
export { AxLLMClient, getAxLLMClient, } from './llm/ax-client.js';
|
|
12
|
+
export { createLLMConfig, defaultLLMConfig, } from './llm/config.js';
|
|
13
|
+
// Enrichment
|
|
14
|
+
export { EnrichmentEngine, getEnrichmentEngine, enrichType, } from './llm/enrichment.js';
|
|
15
|
+
// Verification
|
|
16
|
+
export { VerificationEngine, getVerificationEngine, verifyTaintPath, verifyVulnerability, } from './llm/verification.js';
|
|
17
|
+
// Pattern verification
|
|
18
|
+
export { verifyPatterns, verifyPatternDetailed, isVerificationAvailable, } from './llm/pattern-verification.js';
|
|
19
|
+
// Swarm analysis
|
|
20
|
+
export { analyzeFilesSwarm, analyzeFilesSwarmStream, } from './agents/mastra/swarm.js';
|
|
21
|
+
// Workflow
|
|
22
|
+
export { analyzeFile, analyzeFileStream, } from './agents/mastra/workflow.js';
|
|
23
|
+
// Security Scan
|
|
24
|
+
export { SecurityScanner, scanRepository, scanDirectory, quickScan, formatScanReport, } from './security-scan/index.js';
|
|
25
|
+
export { getOWASPMapping, getCWEsForOWASPCategory, getOWASPCategoryByRank, getOWASPCategoryDescription, } from './security-scan/owasp-mapping.js';
|
|
26
|
+
export { TrendTracker, getTrendTracker, trackScan, } from './security-scan/trend-tracker.js';
|
|
27
|
+
// Dead Code Detection
|
|
28
|
+
export { DeadCodeDetector, detectDeadCode, quickDeadCodeCheck, formatDeadCodeReport, } from './dead-code/index.js';
|
|
29
|
+
// Secret Scanning
|
|
30
|
+
export { SecretScanner, scanForSecrets, quickSecretScan, formatSecretReport, SECRET_PATTERNS, calculateEntropy, getPatternsByCategory, getPatternsBySeverity, getPatternCategories, } from './secret-scan/index.js';
|
|
31
|
+
// Health Score
|
|
32
|
+
export { HealthScoreCalculator, calculateHealthScore, quickHealthCheck, formatHealthReport, DEFAULT_WEIGHTS, calculateSecurityScore, calculateMaintainabilityScore, calculateQualityScore, calculatePerformanceScore, getScoreLabel, getScoreColor, } from './health-score/index.js';
|
|
33
|
+
// LLM Discovery (for benchmarks)
|
|
34
|
+
export { DiscoveryEngine, getDiscoveryEngine, discoverVulnerabilities, discoveryResultsToFindings, } from './llm/discovery.js';
|
|
35
|
+
// Action Queue
|
|
36
|
+
export { ActionQueue, aggregateFindings, exportActions, formatQueueSummary, formatSprintPlan, DEFAULT_PRIORITY_WEIGHTS, EFFORT_POINTS, RISK_SCORES, EFFORT_SCORES, } from './action-queue/index.js';
|
|
37
|
+
// Cache for analysis results
|
|
38
|
+
export { FileCache, getAnalysisCache, resetAnalysisCache, } from './cache/file-cache.js';
|
|
39
|
+
// Specifica Generation
|
|
40
|
+
export { generateSpecifica, generateSpecificaForDirectory, extractEvidence, generateSpec, formatSpecMarkdown, resolveConflict, fileExists, getConflictStrategy, } from './specifica/index.js';
|
|
41
|
+
// Note: API server has moved to circle-pack
|
|
42
|
+
// Use: cd circle-pack && npm run api:start
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,sCAAsC;AACtC,cAAc,WAAW,CAAC;AAE1B,+BAA+B;AAC/B,OAAO,EACL,WAAW,EACX,cAAc,GAEf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,eAAe,EACf,gBAAgB,GAGjB,MAAM,iBAAiB,CAAC;AAEzB,aAAa;AACb,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,GAMX,MAAM,qBAAqB,CAAC;AAE7B,eAAe;AACf,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,mBAAmB,GAKpB,MAAM,uBAAuB,CAAC;AAE/B,uBAAuB;AACvB,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,uBAAuB,GAGxB,MAAM,+BAA+B,CAAC;AAEvC,iBAAiB;AACjB,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GAIxB,MAAM,0BAA0B,CAAC;AAElC,WAAW;AACX,OAAO,EACL,WAAW,EACX,iBAAiB,GAGlB,MAAM,6BAA6B,CAAC;AAErC,gBAAgB;AAChB,OAAO,EACL,eAAe,EACf,cAAc,EACd,aAAa,EACb,SAAS,EACT,gBAAgB,GASjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,GAG5B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,YAAY,EACZ,eAAe,EACf,SAAS,GAKV,MAAM,kCAAkC,CAAC;AAE1C,sBAAsB;AACtB,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,oBAAoB,GAQrB,MAAM,sBAAsB,CAAC;AAE9B,kBAAkB;AAClB,OAAO,EACL,aAAa,EACb,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,GAOrB,MAAM,wBAAwB,CAAC;AAEhC,eAAe;AACf,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,6BAA6B,EAC7B,qBAAqB,EACrB,yBAAyB,EACzB,aAAa,EACb,aAAa,GASd,MAAM,yBAAyB,CAAC;AAEjC,iCAAiC;AACjC,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,GAI3B,MAAM,oBAAoB,CAAC;AAE5B,eAAe;AACf,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,WAAW,EACX,aAAa,GAcd,MAAM,yBAAyB,CAAC;AAEjC,6BAA6B;AAC7B,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,kBAAkB,GAGnB,MAAM,uBAAuB,CAAC;AAE/B,uBAAuB;AACvB,OAAO,EACL,iBAAiB,EACjB,6BAA6B,EAC7B,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,mBAAmB,GAQpB,MAAM,sBAAsB,CAAC;AAE9B,4CAA4C;AAC5C,2CAA2C"}
|