@kevinrabun/judges-cli 3.124.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/README.md +24 -0
- package/agents/accessibility.judge.md +44 -0
- package/agents/agent-instructions.judge.md +44 -0
- package/agents/ai-code-safety.judge.md +55 -0
- package/agents/api-contract.judge.md +37 -0
- package/agents/api-design.judge.md +55 -0
- package/agents/authentication.judge.md +61 -0
- package/agents/backwards-compatibility.judge.md +44 -0
- package/agents/caching.judge.md +44 -0
- package/agents/ci-cd.judge.md +44 -0
- package/agents/cloud-readiness.judge.md +51 -0
- package/agents/code-structure.judge.md +48 -0
- package/agents/compliance.judge.md +47 -0
- package/agents/concurrency.judge.md +46 -0
- package/agents/configuration-management.judge.md +44 -0
- package/agents/cost-effectiveness.judge.md +40 -0
- package/agents/cybersecurity.judge.md +61 -0
- package/agents/data-security.judge.md +48 -0
- package/agents/data-sovereignty.judge.md +58 -0
- package/agents/database.judge.md +49 -0
- package/agents/dependency-health.judge.md +46 -0
- package/agents/documentation.judge.md +53 -0
- package/agents/error-handling.judge.md +53 -0
- package/agents/ethics-bias.judge.md +46 -0
- package/agents/false-positive-review.judge.md +85 -0
- package/agents/framework-safety.judge.md +47 -0
- package/agents/hallucination-detection.judge.md +46 -0
- package/agents/iac-security.judge.md +45 -0
- package/agents/intent-alignment.judge.md +44 -0
- package/agents/internationalization.judge.md +42 -0
- package/agents/logging-privacy.judge.md +44 -0
- package/agents/logic-review.judge.md +34 -0
- package/agents/maintainability.judge.md +44 -0
- package/agents/model-fingerprint.judge.md +31 -0
- package/agents/multi-turn-coherence.judge.md +36 -0
- package/agents/observability.judge.md +52 -0
- package/agents/over-engineering.judge.md +48 -0
- package/agents/performance.judge.md +44 -0
- package/agents/portability.judge.md +44 -0
- package/agents/rate-limiting.judge.md +53 -0
- package/agents/reliability.judge.md +55 -0
- package/agents/scalability.judge.md +50 -0
- package/agents/security.judge.md +62 -0
- package/agents/software-practices.judge.md +54 -0
- package/agents/testing.judge.md +52 -0
- package/agents/ux.judge.md +44 -0
- package/bin/judges.js +8 -0
- package/dist/a2a-protocol.d.ts +136 -0
- package/dist/a2a-protocol.js +218 -0
- package/dist/agent-loader.d.ts +107 -0
- package/dist/agent-loader.js +260 -0
- package/dist/api.d.ts +169 -0
- package/dist/api.js +195 -0
- package/dist/ast/cross-file-taint.d.ts +42 -0
- package/dist/ast/cross-file-taint.js +679 -0
- package/dist/ast/index.d.ts +25 -0
- package/dist/ast/index.js +148 -0
- package/dist/ast/structural-parser.d.ts +2 -0
- package/dist/ast/structural-parser.js +756 -0
- package/dist/ast/taint-tracker.d.ts +48 -0
- package/dist/ast/taint-tracker.js +1033 -0
- package/dist/ast/tree-sitter-ast.d.ts +33 -0
- package/dist/ast/tree-sitter-ast.js +1164 -0
- package/dist/ast/types.d.ts +50 -0
- package/dist/ast/types.js +7 -0
- package/dist/audit-trail.d.ts +245 -0
- package/dist/audit-trail.js +257 -0
- package/dist/auto-tune.d.ts +146 -0
- package/dist/auto-tune.js +373 -0
- package/dist/cache.d.ts +53 -0
- package/dist/cache.js +86 -0
- package/dist/calibration.d.ts +108 -0
- package/dist/calibration.js +219 -0
- package/dist/cli-dispatch.d.ts +7 -0
- package/dist/cli-dispatch.js +654 -0
- package/dist/cli-formatters.d.ts +6 -0
- package/dist/cli-formatters.js +186 -0
- package/dist/cli-helpers.d.ts +29 -0
- package/dist/cli-helpers.js +129 -0
- package/dist/cli.d.ts +30 -0
- package/dist/cli.js +1487 -0
- package/dist/commands/adoption-report.d.ts +7 -0
- package/dist/commands/adoption-report.js +218 -0
- package/dist/commands/adoption-track.d.ts +4 -0
- package/dist/commands/adoption-track.js +246 -0
- package/dist/commands/ai-gate.d.ts +7 -0
- package/dist/commands/ai-gate.js +212 -0
- package/dist/commands/ai-model-trust.d.ts +16 -0
- package/dist/commands/ai-model-trust.js +234 -0
- package/dist/commands/ai-output-compare.d.ts +8 -0
- package/dist/commands/ai-output-compare.js +202 -0
- package/dist/commands/ai-pattern-trend.d.ts +8 -0
- package/dist/commands/ai-pattern-trend.js +223 -0
- package/dist/commands/ai-prompt-audit.d.ts +22 -0
- package/dist/commands/ai-prompt-audit.js +254 -0
- package/dist/commands/ai-provenance.d.ts +4 -0
- package/dist/commands/ai-provenance.js +247 -0
- package/dist/commands/api-audit.d.ts +8 -0
- package/dist/commands/api-audit.js +359 -0
- package/dist/commands/api-misuse.d.ts +4 -0
- package/dist/commands/api-misuse.js +260 -0
- package/dist/commands/api-versioning-audit.d.ts +5 -0
- package/dist/commands/api-versioning-audit.js +233 -0
- package/dist/commands/approve-chain.d.ts +7 -0
- package/dist/commands/approve-chain.js +234 -0
- package/dist/commands/arch-audit.d.ts +8 -0
- package/dist/commands/arch-audit.js +283 -0
- package/dist/commands/assertion-density.d.ts +4 -0
- package/dist/commands/assertion-density.js +263 -0
- package/dist/commands/assign-findings.d.ts +36 -0
- package/dist/commands/assign-findings.js +177 -0
- package/dist/commands/async-safety.d.ts +4 -0
- package/dist/commands/async-safety.js +266 -0
- package/dist/commands/audit-bundle.d.ts +28 -0
- package/dist/commands/audit-bundle.js +234 -0
- package/dist/commands/audit-trail.d.ts +17 -0
- package/dist/commands/audit-trail.js +154 -0
- package/dist/commands/auto-approve.d.ts +4 -0
- package/dist/commands/auto-approve.js +188 -0
- package/dist/commands/auto-calibrate.d.ts +14 -0
- package/dist/commands/auto-calibrate.js +106 -0
- package/dist/commands/auto-detect.d.ts +61 -0
- package/dist/commands/auto-detect.js +328 -0
- package/dist/commands/auto-fix.d.ts +17 -0
- package/dist/commands/auto-fix.js +240 -0
- package/dist/commands/auto-triage.d.ts +31 -0
- package/dist/commands/auto-triage.js +125 -0
- package/dist/commands/baseline.d.ts +47 -0
- package/dist/commands/baseline.js +353 -0
- package/dist/commands/batch-review.d.ts +4 -0
- package/dist/commands/batch-review.js +180 -0
- package/dist/commands/benchmark-advanced.d.ts +14 -0
- package/dist/commands/benchmark-advanced.js +5057 -0
- package/dist/commands/benchmark-ai-agents.d.ts +8 -0
- package/dist/commands/benchmark-ai-agents.js +4123 -0
- package/dist/commands/benchmark-ai-output.d.ts +9 -0
- package/dist/commands/benchmark-ai-output.js +365 -0
- package/dist/commands/benchmark-compliance-ethics.d.ts +8 -0
- package/dist/commands/benchmark-compliance-ethics.js +3060 -0
- package/dist/commands/benchmark-expanded-2.d.ts +12 -0
- package/dist/commands/benchmark-expanded-2.js +5530 -0
- package/dist/commands/benchmark-expanded.d.ts +12 -0
- package/dist/commands/benchmark-expanded.js +2599 -0
- package/dist/commands/benchmark-infrastructure.d.ts +8 -0
- package/dist/commands/benchmark-infrastructure.js +2882 -0
- package/dist/commands/benchmark-languages.d.ts +8 -0
- package/dist/commands/benchmark-languages.js +1963 -0
- package/dist/commands/benchmark-quality-ops.d.ts +8 -0
- package/dist/commands/benchmark-quality-ops.js +3415 -0
- package/dist/commands/benchmark-security-deep.d.ts +9 -0
- package/dist/commands/benchmark-security-deep.js +2335 -0
- package/dist/commands/benchmark.d.ts +233 -0
- package/dist/commands/benchmark.js +3214 -0
- package/dist/commands/blame-review.d.ts +4 -0
- package/dist/commands/blame-review.js +266 -0
- package/dist/commands/boundary-enforce.d.ts +5 -0
- package/dist/commands/boundary-enforce.js +255 -0
- package/dist/commands/build-optimize.d.ts +6 -0
- package/dist/commands/build-optimize.js +256 -0
- package/dist/commands/burndown.d.ts +26 -0
- package/dist/commands/burndown.js +179 -0
- package/dist/commands/cache-audit.d.ts +4 -0
- package/dist/commands/cache-audit.js +219 -0
- package/dist/commands/calibration-dashboard.d.ts +1 -0
- package/dist/commands/calibration-dashboard.js +294 -0
- package/dist/commands/calibration-share.d.ts +30 -0
- package/dist/commands/calibration-share.js +182 -0
- package/dist/commands/chat-notify.d.ts +8 -0
- package/dist/commands/chat-notify.js +258 -0
- package/dist/commands/ci-template.d.ts +14 -0
- package/dist/commands/ci-template.js +211 -0
- package/dist/commands/ci-templates.d.ts +9 -0
- package/dist/commands/ci-templates.js +89 -0
- package/dist/commands/clarity-score.d.ts +8 -0
- package/dist/commands/clarity-score.js +260 -0
- package/dist/commands/clone-detect.d.ts +4 -0
- package/dist/commands/clone-detect.js +232 -0
- package/dist/commands/coach-mode.d.ts +7 -0
- package/dist/commands/coach-mode.js +229 -0
- package/dist/commands/code-health.d.ts +4 -0
- package/dist/commands/code-health.js +195 -0
- package/dist/commands/code-owner-suggest.d.ts +16 -0
- package/dist/commands/code-owner-suggest.js +214 -0
- package/dist/commands/code-similarity.d.ts +8 -0
- package/dist/commands/code-similarity.js +231 -0
- package/dist/commands/comment-drift.d.ts +4 -0
- package/dist/commands/comment-drift.js +228 -0
- package/dist/commands/commit-hygiene.d.ts +5 -0
- package/dist/commands/commit-hygiene.js +175 -0
- package/dist/commands/community-patterns.d.ts +1 -0
- package/dist/commands/community-patterns.js +131 -0
- package/dist/commands/compare-runs.d.ts +37 -0
- package/dist/commands/compare-runs.js +228 -0
- package/dist/commands/completion-audit.d.ts +4 -0
- package/dist/commands/completion-audit.js +296 -0
- package/dist/commands/completions.d.ts +1 -0
- package/dist/commands/completions.js +257 -0
- package/dist/commands/compliance-map.d.ts +8 -0
- package/dist/commands/compliance-map.js +374 -0
- package/dist/commands/compliance-report.d.ts +34 -0
- package/dist/commands/compliance-report.js +161 -0
- package/dist/commands/compliance-weight.d.ts +8 -0
- package/dist/commands/compliance-weight.js +272 -0
- package/dist/commands/config-drift.d.ts +24 -0
- package/dist/commands/config-drift.js +213 -0
- package/dist/commands/config-lint.d.ts +4 -0
- package/dist/commands/config-lint.js +187 -0
- package/dist/commands/config-migrate.d.ts +43 -0
- package/dist/commands/config-migrate.js +240 -0
- package/dist/commands/config-share.d.ts +95 -0
- package/dist/commands/config-share.js +406 -0
- package/dist/commands/context-blind.d.ts +4 -0
- package/dist/commands/context-blind.js +272 -0
- package/dist/commands/context-inject.d.ts +8 -0
- package/dist/commands/context-inject.js +211 -0
- package/dist/commands/contract-verify.d.ts +4 -0
- package/dist/commands/contract-verify.js +316 -0
- package/dist/commands/correlate.d.ts +27 -0
- package/dist/commands/correlate.js +241 -0
- package/dist/commands/cost-forecast.d.ts +18 -0
- package/dist/commands/cost-forecast.js +193 -0
- package/dist/commands/coverage-map.d.ts +22 -0
- package/dist/commands/coverage-map.js +222 -0
- package/dist/commands/coverage.d.ts +40 -0
- package/dist/commands/coverage.js +147 -0
- package/dist/commands/cross-file-consistency.d.ts +4 -0
- package/dist/commands/cross-file-consistency.js +254 -0
- package/dist/commands/cross-pr-regression.d.ts +8 -0
- package/dist/commands/cross-pr-regression.js +297 -0
- package/dist/commands/custom-rule.d.ts +4 -0
- package/dist/commands/custom-rule.js +210 -0
- package/dist/commands/dead-code-detect.d.ts +4 -0
- package/dist/commands/dead-code-detect.js +255 -0
- package/dist/commands/dedup-report.d.ts +12 -0
- package/dist/commands/dedup-report.js +137 -0
- package/dist/commands/dep-audit.d.ts +52 -0
- package/dist/commands/dep-audit.js +277 -0
- package/dist/commands/dep-correlate.d.ts +8 -0
- package/dist/commands/dep-correlate.js +207 -0
- package/dist/commands/deploy-readiness.d.ts +5 -0
- package/dist/commands/deploy-readiness.js +211 -0
- package/dist/commands/deprecated.d.ts +47 -0
- package/dist/commands/deprecated.js +201 -0
- package/dist/commands/deps.d.ts +5 -0
- package/dist/commands/deps.js +122 -0
- package/dist/commands/design-audit.d.ts +8 -0
- package/dist/commands/design-audit.js +301 -0
- package/dist/commands/dev-score.d.ts +36 -0
- package/dist/commands/dev-score.js +203 -0
- package/dist/commands/diff-explain.d.ts +4 -0
- package/dist/commands/diff-explain.js +142 -0
- package/dist/commands/diff-only.d.ts +33 -0
- package/dist/commands/diff-only.js +151 -0
- package/dist/commands/diff-review.d.ts +4 -0
- package/dist/commands/diff-review.js +190 -0
- package/dist/commands/diff.d.ts +6 -0
- package/dist/commands/diff.js +449 -0
- package/dist/commands/digest.d.ts +19 -0
- package/dist/commands/digest.js +221 -0
- package/dist/commands/doc-drift.d.ts +8 -0
- package/dist/commands/doc-drift.js +258 -0
- package/dist/commands/doc-gen.d.ts +7 -0
- package/dist/commands/doc-gen.js +208 -0
- package/dist/commands/docs.d.ts +1 -0
- package/dist/commands/docs.js +156 -0
- package/dist/commands/doctor.d.ts +55 -0
- package/dist/commands/doctor.js +362 -0
- package/dist/commands/encoding-safety.d.ts +4 -0
- package/dist/commands/encoding-safety.js +275 -0
- package/dist/commands/error-taxonomy.d.ts +5 -0
- package/dist/commands/error-taxonomy.js +226 -0
- package/dist/commands/error-ux.d.ts +4 -0
- package/dist/commands/error-ux.js +252 -0
- package/dist/commands/event-leak.d.ts +4 -0
- package/dist/commands/event-leak.js +262 -0
- package/dist/commands/evidence-chain.d.ts +4 -0
- package/dist/commands/evidence-chain.js +309 -0
- package/dist/commands/example-leak.d.ts +4 -0
- package/dist/commands/example-leak.js +232 -0
- package/dist/commands/exception-consistency.d.ts +6 -0
- package/dist/commands/exception-consistency.js +192 -0
- package/dist/commands/exec-report.d.ts +8 -0
- package/dist/commands/exec-report.js +271 -0
- package/dist/commands/explain-finding.d.ts +7 -0
- package/dist/commands/explain-finding.js +278 -0
- package/dist/commands/false-negatives.d.ts +34 -0
- package/dist/commands/false-negatives.js +165 -0
- package/dist/commands/feedback-rules.d.ts +28 -0
- package/dist/commands/feedback-rules.js +173 -0
- package/dist/commands/feedback.d.ts +182 -0
- package/dist/commands/feedback.js +550 -0
- package/dist/commands/finding-age-analysis.d.ts +4 -0
- package/dist/commands/finding-age-analysis.js +144 -0
- package/dist/commands/finding-age-report.d.ts +4 -0
- package/dist/commands/finding-age-report.js +154 -0
- package/dist/commands/finding-age-tracker.d.ts +7 -0
- package/dist/commands/finding-age-tracker.js +152 -0
- package/dist/commands/finding-age.d.ts +4 -0
- package/dist/commands/finding-age.js +145 -0
- package/dist/commands/finding-ancestry-trace.d.ts +1 -0
- package/dist/commands/finding-ancestry-trace.js +69 -0
- package/dist/commands/finding-annotation-export.d.ts +1 -0
- package/dist/commands/finding-annotation-export.js +97 -0
- package/dist/commands/finding-annotation-layer.d.ts +4 -0
- package/dist/commands/finding-annotation-layer.js +128 -0
- package/dist/commands/finding-auto-categorize.d.ts +1 -0
- package/dist/commands/finding-auto-categorize.js +109 -0
- package/dist/commands/finding-auto-fix-suggest.d.ts +1 -0
- package/dist/commands/finding-auto-fix-suggest.js +76 -0
- package/dist/commands/finding-auto-fix.d.ts +4 -0
- package/dist/commands/finding-auto-fix.js +188 -0
- package/dist/commands/finding-auto-group.d.ts +4 -0
- package/dist/commands/finding-auto-group.js +108 -0
- package/dist/commands/finding-auto-label.d.ts +4 -0
- package/dist/commands/finding-auto-label.js +220 -0
- package/dist/commands/finding-auto-priority.d.ts +1 -0
- package/dist/commands/finding-auto-priority.js +100 -0
- package/dist/commands/finding-auto-suppress.d.ts +4 -0
- package/dist/commands/finding-auto-suppress.js +126 -0
- package/dist/commands/finding-auto-tag.d.ts +4 -0
- package/dist/commands/finding-auto-tag.js +113 -0
- package/dist/commands/finding-auto-triage.d.ts +4 -0
- package/dist/commands/finding-auto-triage.js +108 -0
- package/dist/commands/finding-autofix-preview.d.ts +4 -0
- package/dist/commands/finding-autofix-preview.js +86 -0
- package/dist/commands/finding-batch-resolve.d.ts +4 -0
- package/dist/commands/finding-batch-resolve.js +165 -0
- package/dist/commands/finding-batch-suppress.d.ts +4 -0
- package/dist/commands/finding-batch-suppress.js +85 -0
- package/dist/commands/finding-batch-triage.d.ts +1 -0
- package/dist/commands/finding-batch-triage.js +90 -0
- package/dist/commands/finding-blast-radius.d.ts +4 -0
- package/dist/commands/finding-blast-radius.js +91 -0
- package/dist/commands/finding-budget.d.ts +4 -0
- package/dist/commands/finding-budget.js +232 -0
- package/dist/commands/finding-category-map.d.ts +4 -0
- package/dist/commands/finding-category-map.js +103 -0
- package/dist/commands/finding-category-stats.d.ts +4 -0
- package/dist/commands/finding-category-stats.js +104 -0
- package/dist/commands/finding-category.d.ts +4 -0
- package/dist/commands/finding-category.js +109 -0
- package/dist/commands/finding-change-impact.d.ts +4 -0
- package/dist/commands/finding-change-impact.js +107 -0
- package/dist/commands/finding-cluster-analysis.d.ts +4 -0
- package/dist/commands/finding-cluster-analysis.js +133 -0
- package/dist/commands/finding-cluster-group.d.ts +4 -0
- package/dist/commands/finding-cluster-group.js +105 -0
- package/dist/commands/finding-cluster-summary.d.ts +1 -0
- package/dist/commands/finding-cluster-summary.js +85 -0
- package/dist/commands/finding-cluster.d.ts +4 -0
- package/dist/commands/finding-cluster.js +157 -0
- package/dist/commands/finding-code-context.d.ts +4 -0
- package/dist/commands/finding-code-context.js +96 -0
- package/dist/commands/finding-code-smell.d.ts +4 -0
- package/dist/commands/finding-code-smell.js +113 -0
- package/dist/commands/finding-compare-runs.d.ts +4 -0
- package/dist/commands/finding-compare-runs.js +105 -0
- package/dist/commands/finding-compliance-tag.d.ts +1 -0
- package/dist/commands/finding-compliance-tag.js +106 -0
- package/dist/commands/finding-confidence-boost.d.ts +1 -0
- package/dist/commands/finding-confidence-boost.js +88 -0
- package/dist/commands/finding-confidence-calibrate.d.ts +4 -0
- package/dist/commands/finding-confidence-calibrate.js +111 -0
- package/dist/commands/finding-confidence-filter.d.ts +4 -0
- package/dist/commands/finding-confidence-filter.js +77 -0
- package/dist/commands/finding-contest.d.ts +7 -0
- package/dist/commands/finding-contest.js +192 -0
- package/dist/commands/finding-context-enrich.d.ts +4 -0
- package/dist/commands/finding-context-enrich.js +89 -0
- package/dist/commands/finding-context-expand.d.ts +4 -0
- package/dist/commands/finding-context-expand.js +102 -0
- package/dist/commands/finding-context-link.d.ts +1 -0
- package/dist/commands/finding-context-link.js +94 -0
- package/dist/commands/finding-context-summary.d.ts +1 -0
- package/dist/commands/finding-context-summary.js +85 -0
- package/dist/commands/finding-context-window.d.ts +4 -0
- package/dist/commands/finding-context-window.js +126 -0
- package/dist/commands/finding-context.d.ts +4 -0
- package/dist/commands/finding-context.js +140 -0
- package/dist/commands/finding-correlate.d.ts +4 -0
- package/dist/commands/finding-correlate.js +88 -0
- package/dist/commands/finding-correlation-map.d.ts +4 -0
- package/dist/commands/finding-correlation-map.js +101 -0
- package/dist/commands/finding-correlation.d.ts +4 -0
- package/dist/commands/finding-correlation.js +103 -0
- package/dist/commands/finding-cross-file-link.d.ts +1 -0
- package/dist/commands/finding-cross-file-link.js +101 -0
- package/dist/commands/finding-cross-ref.d.ts +4 -0
- package/dist/commands/finding-cross-ref.js +98 -0
- package/dist/commands/finding-cve-lookup.d.ts +4 -0
- package/dist/commands/finding-cve-lookup.js +97 -0
- package/dist/commands/finding-cwe-lookup.d.ts +4 -0
- package/dist/commands/finding-cwe-lookup.js +148 -0
- package/dist/commands/finding-cwe-map.d.ts +4 -0
- package/dist/commands/finding-cwe-map.js +133 -0
- package/dist/commands/finding-dedup-cross-file.d.ts +4 -0
- package/dist/commands/finding-dedup-cross-file.js +95 -0
- package/dist/commands/finding-dedup-cross.d.ts +4 -0
- package/dist/commands/finding-dedup-cross.js +90 -0
- package/dist/commands/finding-dedup-merge.d.ts +1 -0
- package/dist/commands/finding-dedup-merge.js +107 -0
- package/dist/commands/finding-dedup-report.d.ts +4 -0
- package/dist/commands/finding-dedup-report.js +101 -0
- package/dist/commands/finding-dedup-smart.d.ts +1 -0
- package/dist/commands/finding-dedup-smart.js +109 -0
- package/dist/commands/finding-deduplicate.d.ts +4 -0
- package/dist/commands/finding-deduplicate.js +141 -0
- package/dist/commands/finding-dependency-check.d.ts +4 -0
- package/dist/commands/finding-dependency-check.js +119 -0
- package/dist/commands/finding-dependency-impact.d.ts +1 -0
- package/dist/commands/finding-dependency-impact.js +97 -0
- package/dist/commands/finding-dependency-link.d.ts +4 -0
- package/dist/commands/finding-dependency-link.js +73 -0
- package/dist/commands/finding-dependency-risk.d.ts +4 -0
- package/dist/commands/finding-dependency-risk.js +117 -0
- package/dist/commands/finding-dependency-tree.d.ts +4 -0
- package/dist/commands/finding-dependency-tree.js +116 -0
- package/dist/commands/finding-diff-highlight.d.ts +4 -0
- package/dist/commands/finding-diff-highlight.js +107 -0
- package/dist/commands/finding-dismiss-workflow.d.ts +4 -0
- package/dist/commands/finding-dismiss-workflow.js +119 -0
- package/dist/commands/finding-duplicate-detect.d.ts +4 -0
- package/dist/commands/finding-duplicate-detect.js +113 -0
- package/dist/commands/finding-duplicate-rule.d.ts +4 -0
- package/dist/commands/finding-duplicate-rule.js +103 -0
- package/dist/commands/finding-effort-rank.d.ts +1 -0
- package/dist/commands/finding-effort-rank.js +93 -0
- package/dist/commands/finding-evidence-chain.d.ts +4 -0
- package/dist/commands/finding-evidence-chain.js +147 -0
- package/dist/commands/finding-evidence-collect.d.ts +4 -0
- package/dist/commands/finding-evidence-collect.js +114 -0
- package/dist/commands/finding-explain.d.ts +4 -0
- package/dist/commands/finding-explain.js +93 -0
- package/dist/commands/finding-export-csv.d.ts +4 -0
- package/dist/commands/finding-export-csv.js +78 -0
- package/dist/commands/finding-false-neg-check.d.ts +8 -0
- package/dist/commands/finding-false-neg-check.js +139 -0
- package/dist/commands/finding-false-positive-learn.d.ts +4 -0
- package/dist/commands/finding-false-positive-learn.js +85 -0
- package/dist/commands/finding-false-positive-log.d.ts +4 -0
- package/dist/commands/finding-false-positive-log.js +150 -0
- package/dist/commands/finding-false-positive.d.ts +4 -0
- package/dist/commands/finding-false-positive.js +134 -0
- package/dist/commands/finding-filter-view.d.ts +4 -0
- package/dist/commands/finding-filter-view.js +107 -0
- package/dist/commands/finding-fix-chain.d.ts +1 -0
- package/dist/commands/finding-fix-chain.js +78 -0
- package/dist/commands/finding-fix-estimate.d.ts +1 -0
- package/dist/commands/finding-fix-estimate.js +95 -0
- package/dist/commands/finding-fix-playbook.d.ts +1 -0
- package/dist/commands/finding-fix-playbook.js +110 -0
- package/dist/commands/finding-fix-priority.d.ts +4 -0
- package/dist/commands/finding-fix-priority.js +98 -0
- package/dist/commands/finding-fix-rate.d.ts +4 -0
- package/dist/commands/finding-fix-rate.js +141 -0
- package/dist/commands/finding-fix-suggest.d.ts +4 -0
- package/dist/commands/finding-fix-suggest.js +88 -0
- package/dist/commands/finding-fix-validation.d.ts +4 -0
- package/dist/commands/finding-fix-validation.js +115 -0
- package/dist/commands/finding-fix-verify.d.ts +4 -0
- package/dist/commands/finding-fix-verify.js +198 -0
- package/dist/commands/finding-group-by.d.ts +4 -0
- package/dist/commands/finding-group-by.js +86 -0
- package/dist/commands/finding-group.d.ts +15 -0
- package/dist/commands/finding-group.js +164 -0
- package/dist/commands/finding-groupby-file.d.ts +4 -0
- package/dist/commands/finding-groupby-file.js +94 -0
- package/dist/commands/finding-hotfix-suggest.d.ts +7 -0
- package/dist/commands/finding-hotfix-suggest.js +170 -0
- package/dist/commands/finding-hotspot-detect.d.ts +1 -0
- package/dist/commands/finding-hotspot-detect.js +120 -0
- package/dist/commands/finding-hotspot-map.d.ts +4 -0
- package/dist/commands/finding-hotspot-map.js +106 -0
- package/dist/commands/finding-hotspot.d.ts +4 -0
- package/dist/commands/finding-hotspot.js +115 -0
- package/dist/commands/finding-impact-radius.d.ts +1 -0
- package/dist/commands/finding-impact-radius.js +94 -0
- package/dist/commands/finding-impact-rank.d.ts +4 -0
- package/dist/commands/finding-impact-rank.js +85 -0
- package/dist/commands/finding-impact-score.d.ts +4 -0
- package/dist/commands/finding-impact-score.js +123 -0
- package/dist/commands/finding-impact.d.ts +4 -0
- package/dist/commands/finding-impact.js +135 -0
- package/dist/commands/finding-line-blame.d.ts +7 -0
- package/dist/commands/finding-line-blame.js +129 -0
- package/dist/commands/finding-link-graph.d.ts +4 -0
- package/dist/commands/finding-link-graph.js +144 -0
- package/dist/commands/finding-link.d.ts +4 -0
- package/dist/commands/finding-link.js +128 -0
- package/dist/commands/finding-merge-results.d.ts +4 -0
- package/dist/commands/finding-merge-results.js +110 -0
- package/dist/commands/finding-merge-strategy.d.ts +1 -0
- package/dist/commands/finding-merge-strategy.js +84 -0
- package/dist/commands/finding-metadata-enrich.d.ts +4 -0
- package/dist/commands/finding-metadata-enrich.js +92 -0
- package/dist/commands/finding-noise-filter.d.ts +7 -0
- package/dist/commands/finding-noise-filter.js +140 -0
- package/dist/commands/finding-noise-reduce.d.ts +1 -0
- package/dist/commands/finding-noise-reduce.js +81 -0
- package/dist/commands/finding-noise-score.d.ts +1 -0
- package/dist/commands/finding-noise-score.js +93 -0
- package/dist/commands/finding-owner-assign.d.ts +4 -0
- package/dist/commands/finding-owner-assign.js +133 -0
- package/dist/commands/finding-owner-notify.d.ts +1 -0
- package/dist/commands/finding-owner-notify.js +121 -0
- package/dist/commands/finding-ownership-assign.d.ts +4 -0
- package/dist/commands/finding-ownership-assign.js +101 -0
- package/dist/commands/finding-ownership-map.d.ts +4 -0
- package/dist/commands/finding-ownership-map.js +118 -0
- package/dist/commands/finding-patch-chain.d.ts +1 -0
- package/dist/commands/finding-patch-chain.js +90 -0
- package/dist/commands/finding-patch-preview.d.ts +4 -0
- package/dist/commands/finding-patch-preview.js +103 -0
- package/dist/commands/finding-pattern-detect.d.ts +4 -0
- package/dist/commands/finding-pattern-detect.js +127 -0
- package/dist/commands/finding-pattern-library.d.ts +4 -0
- package/dist/commands/finding-pattern-library.js +145 -0
- package/dist/commands/finding-pattern-match.d.ts +4 -0
- package/dist/commands/finding-pattern-match.js +165 -0
- package/dist/commands/finding-prioritize.d.ts +4 -0
- package/dist/commands/finding-prioritize.js +119 -0
- package/dist/commands/finding-priority-matrix.d.ts +4 -0
- package/dist/commands/finding-priority-matrix.js +102 -0
- package/dist/commands/finding-priority-queue.d.ts +4 -0
- package/dist/commands/finding-priority-queue.js +131 -0
- package/dist/commands/finding-priority-rank.d.ts +1 -0
- package/dist/commands/finding-priority-rank.js +82 -0
- package/dist/commands/finding-quality-gate.d.ts +4 -0
- package/dist/commands/finding-quality-gate.js +107 -0
- package/dist/commands/finding-rank.d.ts +4 -0
- package/dist/commands/finding-rank.js +138 -0
- package/dist/commands/finding-reachability-check.d.ts +4 -0
- package/dist/commands/finding-reachability-check.js +102 -0
- package/dist/commands/finding-reachability.d.ts +4 -0
- package/dist/commands/finding-reachability.js +131 -0
- package/dist/commands/finding-recurrence-check.d.ts +1 -0
- package/dist/commands/finding-recurrence-check.js +103 -0
- package/dist/commands/finding-recurrence-detect.d.ts +4 -0
- package/dist/commands/finding-recurrence-detect.js +77 -0
- package/dist/commands/finding-recurrence.d.ts +4 -0
- package/dist/commands/finding-recurrence.js +135 -0
- package/dist/commands/finding-regression-check.d.ts +4 -0
- package/dist/commands/finding-regression-check.js +112 -0
- package/dist/commands/finding-regression-detect.d.ts +1 -0
- package/dist/commands/finding-regression-detect.js +86 -0
- package/dist/commands/finding-related-rules.d.ts +4 -0
- package/dist/commands/finding-related-rules.js +151 -0
- package/dist/commands/finding-remediation-cost.d.ts +1 -0
- package/dist/commands/finding-remediation-cost.js +79 -0
- package/dist/commands/finding-remediation-plan.d.ts +4 -0
- package/dist/commands/finding-remediation-plan.js +107 -0
- package/dist/commands/finding-reopen-detect.d.ts +1 -0
- package/dist/commands/finding-reopen-detect.js +77 -0
- package/dist/commands/finding-repeat-detect.d.ts +1 -0
- package/dist/commands/finding-repeat-detect.js +92 -0
- package/dist/commands/finding-resolution-track.d.ts +4 -0
- package/dist/commands/finding-resolution-track.js +150 -0
- package/dist/commands/finding-resolution-tracker.d.ts +4 -0
- package/dist/commands/finding-resolution-tracker.js +163 -0
- package/dist/commands/finding-resolution-workflow.d.ts +1 -0
- package/dist/commands/finding-resolution-workflow.js +91 -0
- package/dist/commands/finding-resolution.d.ts +4 -0
- package/dist/commands/finding-resolution.js +142 -0
- package/dist/commands/finding-risk-label.d.ts +1 -0
- package/dist/commands/finding-risk-label.js +72 -0
- package/dist/commands/finding-risk-matrix.d.ts +4 -0
- package/dist/commands/finding-risk-matrix.js +126 -0
- package/dist/commands/finding-risk-score.d.ts +4 -0
- package/dist/commands/finding-risk-score.js +95 -0
- package/dist/commands/finding-root-cause.d.ts +4 -0
- package/dist/commands/finding-root-cause.js +184 -0
- package/dist/commands/finding-rule-explain.d.ts +4 -0
- package/dist/commands/finding-rule-explain.js +140 -0
- package/dist/commands/finding-scope-filter.d.ts +1 -0
- package/dist/commands/finding-scope-filter.js +77 -0
- package/dist/commands/finding-scope-impact.d.ts +1 -0
- package/dist/commands/finding-scope-impact.js +83 -0
- package/dist/commands/finding-search-index.d.ts +4 -0
- package/dist/commands/finding-search-index.js +99 -0
- package/dist/commands/finding-security-hotspot.d.ts +4 -0
- package/dist/commands/finding-security-hotspot.js +175 -0
- package/dist/commands/finding-severity-dist.d.ts +4 -0
- package/dist/commands/finding-severity-dist.js +105 -0
- package/dist/commands/finding-severity-drift.d.ts +4 -0
- package/dist/commands/finding-severity-drift.js +92 -0
- package/dist/commands/finding-severity-heatmap.d.ts +4 -0
- package/dist/commands/finding-severity-heatmap.js +108 -0
- package/dist/commands/finding-severity-histogram.d.ts +4 -0
- package/dist/commands/finding-severity-histogram.js +66 -0
- package/dist/commands/finding-severity-override.d.ts +4 -0
- package/dist/commands/finding-severity-override.js +131 -0
- package/dist/commands/finding-severity-rebalance.d.ts +1 -0
- package/dist/commands/finding-severity-rebalance.js +108 -0
- package/dist/commands/finding-severity-trend.d.ts +4 -0
- package/dist/commands/finding-severity-trend.js +127 -0
- package/dist/commands/finding-similar-match.d.ts +1 -0
- package/dist/commands/finding-similar-match.js +112 -0
- package/dist/commands/finding-snippet.d.ts +4 -0
- package/dist/commands/finding-snippet.js +102 -0
- package/dist/commands/finding-summary-digest.d.ts +7 -0
- package/dist/commands/finding-summary-digest.js +145 -0
- package/dist/commands/finding-suppress-pattern.d.ts +4 -0
- package/dist/commands/finding-suppress-pattern.js +148 -0
- package/dist/commands/finding-suppress.d.ts +4 -0
- package/dist/commands/finding-suppress.js +164 -0
- package/dist/commands/finding-suppression-audit.d.ts +4 -0
- package/dist/commands/finding-suppression-audit.js +137 -0
- package/dist/commands/finding-suppression-list.d.ts +4 -0
- package/dist/commands/finding-suppression-list.js +119 -0
- package/dist/commands/finding-suppression-log.d.ts +4 -0
- package/dist/commands/finding-suppression-log.js +174 -0
- package/dist/commands/finding-time-to-fix.d.ts +1 -0
- package/dist/commands/finding-time-to-fix.js +98 -0
- package/dist/commands/finding-timeline-view.d.ts +4 -0
- package/dist/commands/finding-timeline-view.js +98 -0
- package/dist/commands/finding-timeline.d.ts +4 -0
- package/dist/commands/finding-timeline.js +143 -0
- package/dist/commands/finding-top-offender.d.ts +1 -0
- package/dist/commands/finding-top-offender.js +75 -0
- package/dist/commands/finding-trace.d.ts +4 -0
- package/dist/commands/finding-trace.js +118 -0
- package/dist/commands/finding-trend-alert.d.ts +1 -0
- package/dist/commands/finding-trend-alert.js +126 -0
- package/dist/commands/finding-trend-analysis.d.ts +4 -0
- package/dist/commands/finding-trend-analysis.js +95 -0
- package/dist/commands/finding-trend-forecast.d.ts +4 -0
- package/dist/commands/finding-trend-forecast.js +106 -0
- package/dist/commands/finding-trend-report.d.ts +4 -0
- package/dist/commands/finding-trend-report.js +107 -0
- package/dist/commands/finding-trend.d.ts +4 -0
- package/dist/commands/finding-trend.js +118 -0
- package/dist/commands/fix-pr.d.ts +22 -0
- package/dist/commands/fix-pr.js +286 -0
- package/dist/commands/fix-suggest.d.ts +4 -0
- package/dist/commands/fix-suggest.js +171 -0
- package/dist/commands/fix-verify.d.ts +4 -0
- package/dist/commands/fix-verify.js +123 -0
- package/dist/commands/fix.d.ts +117 -0
- package/dist/commands/fix.js +445 -0
- package/dist/commands/focus-area.d.ts +5 -0
- package/dist/commands/focus-area.js +192 -0
- package/dist/commands/generate.d.ts +7 -0
- package/dist/commands/generate.js +403 -0
- package/dist/commands/governance.d.ts +31 -0
- package/dist/commands/governance.js +202 -0
- package/dist/commands/group-findings.d.ts +22 -0
- package/dist/commands/group-findings.js +154 -0
- package/dist/commands/guided-tour.d.ts +8 -0
- package/dist/commands/guided-tour.js +287 -0
- package/dist/commands/habit-tracker.d.ts +7 -0
- package/dist/commands/habit-tracker.js +194 -0
- package/dist/commands/hallucination-detect.d.ts +4 -0
- package/dist/commands/hallucination-detect.js +350 -0
- package/dist/commands/hallucination-score.d.ts +8 -0
- package/dist/commands/hallucination-score.js +316 -0
- package/dist/commands/help.d.ts +7 -0
- package/dist/commands/help.js +302 -0
- package/dist/commands/hook-install.d.ts +21 -0
- package/dist/commands/hook-install.js +142 -0
- package/dist/commands/hook.d.ts +8 -0
- package/dist/commands/hook.js +145 -0
- package/dist/commands/iac-lint.d.ts +7 -0
- package/dist/commands/iac-lint.js +312 -0
- package/dist/commands/idempotency-audit.d.ts +4 -0
- package/dist/commands/idempotency-audit.js +222 -0
- package/dist/commands/ignore-list.d.ts +18 -0
- package/dist/commands/ignore-list.js +152 -0
- package/dist/commands/impact-scan.d.ts +8 -0
- package/dist/commands/impact-scan.js +281 -0
- package/dist/commands/incident-response.d.ts +7 -0
- package/dist/commands/incident-response.js +254 -0
- package/dist/commands/incremental-review.d.ts +4 -0
- package/dist/commands/incremental-review.js +236 -0
- package/dist/commands/init.d.ts +10 -0
- package/dist/commands/init.js +265 -0
- package/dist/commands/input-guard.d.ts +4 -0
- package/dist/commands/input-guard.js +255 -0
- package/dist/commands/interactive-fix.d.ts +22 -0
- package/dist/commands/interactive-fix.js +139 -0
- package/dist/commands/judge-author.d.ts +7 -0
- package/dist/commands/judge-author.js +260 -0
- package/dist/commands/judge-config.d.ts +4 -0
- package/dist/commands/judge-config.js +151 -0
- package/dist/commands/judge-learn.d.ts +8 -0
- package/dist/commands/judge-learn.js +217 -0
- package/dist/commands/judge-reputation.d.ts +28 -0
- package/dist/commands/judge-reputation.js +198 -0
- package/dist/commands/kb.d.ts +40 -0
- package/dist/commands/kb.js +228 -0
- package/dist/commands/language-packs.d.ts +42 -0
- package/dist/commands/language-packs.js +150 -0
- package/dist/commands/learn.d.ts +26 -0
- package/dist/commands/learn.js +288 -0
- package/dist/commands/learning-path.d.ts +8 -0
- package/dist/commands/learning-path.js +325 -0
- package/dist/commands/license-scan.d.ts +8 -0
- package/dist/commands/license-scan.js +183 -0
- package/dist/commands/llm-benchmark-optimizer.d.ts +78 -0
- package/dist/commands/llm-benchmark-optimizer.js +241 -0
- package/dist/commands/llm-benchmark.d.ts +156 -0
- package/dist/commands/llm-benchmark.js +670 -0
- package/dist/commands/log-quality.d.ts +5 -0
- package/dist/commands/log-quality.js +211 -0
- package/dist/commands/logic-lint.d.ts +4 -0
- package/dist/commands/logic-lint.js +255 -0
- package/dist/commands/lsp.d.ts +23 -0
- package/dist/commands/lsp.js +285 -0
- package/dist/commands/merge-verdict.d.ts +4 -0
- package/dist/commands/merge-verdict.js +287 -0
- package/dist/commands/metrics-dashboard.d.ts +21 -0
- package/dist/commands/metrics-dashboard.js +334 -0
- package/dist/commands/metrics.d.ts +57 -0
- package/dist/commands/metrics.js +241 -0
- package/dist/commands/migration-safety.d.ts +5 -0
- package/dist/commands/migration-safety.js +256 -0
- package/dist/commands/model-report.d.ts +8 -0
- package/dist/commands/model-report.js +194 -0
- package/dist/commands/model-risk.d.ts +27 -0
- package/dist/commands/model-risk.js +220 -0
- package/dist/commands/monorepo.d.ts +37 -0
- package/dist/commands/monorepo.js +232 -0
- package/dist/commands/multi-lang-review.d.ts +4 -0
- package/dist/commands/multi-lang-review.js +230 -0
- package/dist/commands/noise-advisor.d.ts +29 -0
- package/dist/commands/noise-advisor.js +170 -0
- package/dist/commands/notify.d.ts +78 -0
- package/dist/commands/notify.js +324 -0
- package/dist/commands/null-safety-audit.d.ts +5 -0
- package/dist/commands/null-safety-audit.js +221 -0
- package/dist/commands/observability-gap.d.ts +5 -0
- package/dist/commands/observability-gap.js +211 -0
- package/dist/commands/onboard.d.ts +12 -0
- package/dist/commands/onboard.js +178 -0
- package/dist/commands/org-metrics.d.ts +23 -0
- package/dist/commands/org-metrics.js +237 -0
- package/dist/commands/org-policy.d.ts +7 -0
- package/dist/commands/org-policy.js +207 -0
- package/dist/commands/over-abstraction.d.ts +4 -0
- package/dist/commands/over-abstraction.js +307 -0
- package/dist/commands/override.d.ts +61 -0
- package/dist/commands/override.js +268 -0
- package/dist/commands/ownership-map.d.ts +5 -0
- package/dist/commands/ownership-map.js +217 -0
- package/dist/commands/parity.d.ts +30 -0
- package/dist/commands/parity.js +212 -0
- package/dist/commands/pattern-registry.d.ts +22 -0
- package/dist/commands/pattern-registry.js +226 -0
- package/dist/commands/perf-compare.d.ts +8 -0
- package/dist/commands/perf-compare.js +245 -0
- package/dist/commands/perf-hotspot.d.ts +7 -0
- package/dist/commands/perf-hotspot.js +273 -0
- package/dist/commands/phantom-import.d.ts +4 -0
- package/dist/commands/phantom-import.js +260 -0
- package/dist/commands/pii-scan.d.ts +7 -0
- package/dist/commands/pii-scan.js +299 -0
- package/dist/commands/plugin-search.d.ts +39 -0
- package/dist/commands/plugin-search.js +327 -0
- package/dist/commands/plugins.d.ts +12 -0
- package/dist/commands/plugins.js +104 -0
- package/dist/commands/policy-audit.d.ts +52 -0
- package/dist/commands/policy-audit.js +160 -0
- package/dist/commands/pr-quality-gate.d.ts +28 -0
- package/dist/commands/pr-quality-gate.js +207 -0
- package/dist/commands/pr-summary.d.ts +25 -0
- package/dist/commands/pr-summary.js +187 -0
- package/dist/commands/predict.d.ts +7 -0
- package/dist/commands/predict.js +218 -0
- package/dist/commands/privilege-path.d.ts +4 -0
- package/dist/commands/privilege-path.js +233 -0
- package/dist/commands/profile.d.ts +37 -0
- package/dist/commands/profile.js +101 -0
- package/dist/commands/prompt-replay.d.ts +7 -0
- package/dist/commands/prompt-replay.js +176 -0
- package/dist/commands/quality-gate.d.ts +69 -0
- package/dist/commands/quality-gate.js +252 -0
- package/dist/commands/query.d.ts +19 -0
- package/dist/commands/query.js +229 -0
- package/dist/commands/quick-check.d.ts +4 -0
- package/dist/commands/quick-check.js +173 -0
- package/dist/commands/recommend.d.ts +20 -0
- package/dist/commands/recommend.js +282 -0
- package/dist/commands/refactor-safety.d.ts +8 -0
- package/dist/commands/refactor-safety.js +273 -0
- package/dist/commands/reg-watch.d.ts +20 -0
- package/dist/commands/reg-watch.js +219 -0
- package/dist/commands/regression-alert.d.ts +31 -0
- package/dist/commands/regression-alert.js +215 -0
- package/dist/commands/remediation-lib.d.ts +8 -0
- package/dist/commands/remediation-lib.js +265 -0
- package/dist/commands/remediation.d.ts +20 -0
- package/dist/commands/remediation.js +256 -0
- package/dist/commands/report-template.d.ts +16 -0
- package/dist/commands/report-template.js +290 -0
- package/dist/commands/report.d.ts +12 -0
- package/dist/commands/report.js +139 -0
- package/dist/commands/resource-cleanup.d.ts +6 -0
- package/dist/commands/resource-cleanup.js +235 -0
- package/dist/commands/retro.d.ts +22 -0
- package/dist/commands/retro.js +211 -0
- package/dist/commands/retry-pattern-audit.d.ts +5 -0
- package/dist/commands/retry-pattern-audit.js +215 -0
- package/dist/commands/review-ab-test.d.ts +4 -0
- package/dist/commands/review-ab-test.js +224 -0
- package/dist/commands/review-access-log.d.ts +4 -0
- package/dist/commands/review-access-log.js +65 -0
- package/dist/commands/review-action-item-gen.d.ts +1 -0
- package/dist/commands/review-action-item-gen.js +72 -0
- package/dist/commands/review-adoption-metrics.d.ts +4 -0
- package/dist/commands/review-adoption-metrics.js +95 -0
- package/dist/commands/review-adoption-score.d.ts +1 -0
- package/dist/commands/review-adoption-score.js +181 -0
- package/dist/commands/review-ai-feedback-loop.d.ts +1 -0
- package/dist/commands/review-ai-feedback-loop.js +116 -0
- package/dist/commands/review-annotate.d.ts +4 -0
- package/dist/commands/review-annotate.js +122 -0
- package/dist/commands/review-annotation-export.d.ts +4 -0
- package/dist/commands/review-annotation-export.js +105 -0
- package/dist/commands/review-annotation.d.ts +4 -0
- package/dist/commands/review-annotation.js +133 -0
- package/dist/commands/review-api-export.d.ts +4 -0
- package/dist/commands/review-api-export.js +98 -0
- package/dist/commands/review-approval-criteria.d.ts +1 -0
- package/dist/commands/review-approval-criteria.js +99 -0
- package/dist/commands/review-approval-gate.d.ts +7 -0
- package/dist/commands/review-approval-gate.js +190 -0
- package/dist/commands/review-approval.d.ts +4 -0
- package/dist/commands/review-approval.js +133 -0
- package/dist/commands/review-archive-search.d.ts +4 -0
- package/dist/commands/review-archive-search.js +70 -0
- package/dist/commands/review-archive.d.ts +4 -0
- package/dist/commands/review-archive.js +135 -0
- package/dist/commands/review-audit-export.d.ts +4 -0
- package/dist/commands/review-audit-export.js +93 -0
- package/dist/commands/review-audit-log.d.ts +4 -0
- package/dist/commands/review-audit-log.js +140 -0
- package/dist/commands/review-audit-trail.d.ts +4 -0
- package/dist/commands/review-audit-trail.js +96 -0
- package/dist/commands/review-auto-merge.d.ts +4 -0
- package/dist/commands/review-auto-merge.js +175 -0
- package/dist/commands/review-badge.d.ts +4 -0
- package/dist/commands/review-badge.js +152 -0
- package/dist/commands/review-batch-files.d.ts +4 -0
- package/dist/commands/review-batch-files.js +82 -0
- package/dist/commands/review-batch-mode.d.ts +4 -0
- package/dist/commands/review-batch-mode.js +97 -0
- package/dist/commands/review-batch-run.d.ts +4 -0
- package/dist/commands/review-batch-run.js +149 -0
- package/dist/commands/review-benchmark-self.d.ts +4 -0
- package/dist/commands/review-benchmark-self.js +140 -0
- package/dist/commands/review-blame-map.d.ts +4 -0
- package/dist/commands/review-blame-map.js +100 -0
- package/dist/commands/review-branch-compare.d.ts +4 -0
- package/dist/commands/review-branch-compare.js +108 -0
- package/dist/commands/review-branch-policy.d.ts +4 -0
- package/dist/commands/review-branch-policy.js +102 -0
- package/dist/commands/review-bulk-action.d.ts +4 -0
- package/dist/commands/review-bulk-action.js +109 -0
- package/dist/commands/review-bulk-apply.d.ts +4 -0
- package/dist/commands/review-bulk-apply.js +102 -0
- package/dist/commands/review-cache-clear.d.ts +4 -0
- package/dist/commands/review-cache-clear.js +160 -0
- package/dist/commands/review-cache-warm.d.ts +4 -0
- package/dist/commands/review-cache-warm.js +70 -0
- package/dist/commands/review-cache.d.ts +22 -0
- package/dist/commands/review-cache.js +134 -0
- package/dist/commands/review-changelog-entry.d.ts +7 -0
- package/dist/commands/review-changelog-entry.js +109 -0
- package/dist/commands/review-changelog-gen.d.ts +4 -0
- package/dist/commands/review-changelog-gen.js +117 -0
- package/dist/commands/review-changelog-impact.d.ts +1 -0
- package/dist/commands/review-changelog-impact.js +89 -0
- package/dist/commands/review-checklist.d.ts +4 -0
- package/dist/commands/review-checklist.js +144 -0
- package/dist/commands/review-checkpoint.d.ts +4 -0
- package/dist/commands/review-checkpoint.js +163 -0
- package/dist/commands/review-ci-gate.d.ts +4 -0
- package/dist/commands/review-ci-gate.js +114 -0
- package/dist/commands/review-ci-insight.d.ts +1 -0
- package/dist/commands/review-ci-insight.js +100 -0
- package/dist/commands/review-ci-integration.d.ts +4 -0
- package/dist/commands/review-ci-integration.js +125 -0
- package/dist/commands/review-ci-status.d.ts +4 -0
- package/dist/commands/review-ci-status.js +200 -0
- package/dist/commands/review-cicd-integrate.d.ts +4 -0
- package/dist/commands/review-cicd-integrate.js +122 -0
- package/dist/commands/review-code-health-score.d.ts +1 -0
- package/dist/commands/review-code-health-score.js +100 -0
- package/dist/commands/review-code-owner.d.ts +7 -0
- package/dist/commands/review-code-owner.js +164 -0
- package/dist/commands/review-code-ownership.d.ts +1 -0
- package/dist/commands/review-code-ownership.js +88 -0
- package/dist/commands/review-comment.d.ts +4 -0
- package/dist/commands/review-comment.js +165 -0
- package/dist/commands/review-commit-hook.d.ts +7 -0
- package/dist/commands/review-commit-hook.js +134 -0
- package/dist/commands/review-commit-quality.d.ts +1 -0
- package/dist/commands/review-commit-quality.js +94 -0
- package/dist/commands/review-comparative.d.ts +4 -0
- package/dist/commands/review-comparative.js +149 -0
- package/dist/commands/review-compare-version.d.ts +4 -0
- package/dist/commands/review-compare-version.js +108 -0
- package/dist/commands/review-compare.d.ts +4 -0
- package/dist/commands/review-compare.js +200 -0
- package/dist/commands/review-compliance-check.d.ts +4 -0
- package/dist/commands/review-compliance-check.js +202 -0
- package/dist/commands/review-compliance-gate.d.ts +4 -0
- package/dist/commands/review-compliance-gate.js +151 -0
- package/dist/commands/review-compliance-map.d.ts +4 -0
- package/dist/commands/review-compliance-map.js +110 -0
- package/dist/commands/review-compliance-report.d.ts +4 -0
- package/dist/commands/review-compliance-report.js +127 -0
- package/dist/commands/review-confidence-explain.d.ts +1 -0
- package/dist/commands/review-confidence-explain.js +99 -0
- package/dist/commands/review-config-diff.d.ts +4 -0
- package/dist/commands/review-config-diff.js +108 -0
- package/dist/commands/review-config-export.d.ts +4 -0
- package/dist/commands/review-config-export.js +124 -0
- package/dist/commands/review-config-health.d.ts +1 -0
- package/dist/commands/review-config-health.js +172 -0
- package/dist/commands/review-config-migrate.d.ts +4 -0
- package/dist/commands/review-config-migrate.js +123 -0
- package/dist/commands/review-config-template.d.ts +4 -0
- package/dist/commands/review-config-template.js +112 -0
- package/dist/commands/review-config-validate.d.ts +4 -0
- package/dist/commands/review-config-validate.js +110 -0
- package/dist/commands/review-contract.d.ts +4 -0
- package/dist/commands/review-contract.js +199 -0
- package/dist/commands/review-coverage-gap.d.ts +4 -0
- package/dist/commands/review-coverage-gap.js +120 -0
- package/dist/commands/review-coverage-map.d.ts +4 -0
- package/dist/commands/review-coverage-map.js +194 -0
- package/dist/commands/review-custom-judge-config.d.ts +4 -0
- package/dist/commands/review-custom-judge-config.js +103 -0
- package/dist/commands/review-custom-judge.d.ts +4 -0
- package/dist/commands/review-custom-judge.js +182 -0
- package/dist/commands/review-custom-prompt.d.ts +4 -0
- package/dist/commands/review-custom-prompt.js +170 -0
- package/dist/commands/review-custom-rule.d.ts +4 -0
- package/dist/commands/review-custom-rule.js +169 -0
- package/dist/commands/review-dashboard-data.d.ts +4 -0
- package/dist/commands/review-dashboard-data.js +142 -0
- package/dist/commands/review-dashboard.d.ts +4 -0
- package/dist/commands/review-dashboard.js +140 -0
- package/dist/commands/review-data-retention.d.ts +4 -0
- package/dist/commands/review-data-retention.js +119 -0
- package/dist/commands/review-dependency-graph.d.ts +4 -0
- package/dist/commands/review-dependency-graph.js +94 -0
- package/dist/commands/review-dependency-review.d.ts +1 -0
- package/dist/commands/review-dependency-review.js +104 -0
- package/dist/commands/review-deployment-gate.d.ts +4 -0
- package/dist/commands/review-deployment-gate.js +94 -0
- package/dist/commands/review-depth.d.ts +4 -0
- package/dist/commands/review-depth.js +142 -0
- package/dist/commands/review-diff-annotate.d.ts +4 -0
- package/dist/commands/review-diff-annotate.js +104 -0
- package/dist/commands/review-diff-context.d.ts +4 -0
- package/dist/commands/review-diff-context.js +158 -0
- package/dist/commands/review-diff-highlight.d.ts +4 -0
- package/dist/commands/review-diff-highlight.js +179 -0
- package/dist/commands/review-diff-stats.d.ts +4 -0
- package/dist/commands/review-diff-stats.js +90 -0
- package/dist/commands/review-diff-summary.d.ts +4 -0
- package/dist/commands/review-diff-summary.js +154 -0
- package/dist/commands/review-digest-gen.d.ts +1 -0
- package/dist/commands/review-digest-gen.js +100 -0
- package/dist/commands/review-digest.d.ts +4 -0
- package/dist/commands/review-digest.js +265 -0
- package/dist/commands/review-dry-run.d.ts +4 -0
- package/dist/commands/review-dry-run.js +120 -0
- package/dist/commands/review-engagement-score.d.ts +1 -0
- package/dist/commands/review-engagement-score.js +111 -0
- package/dist/commands/review-env-check.d.ts +4 -0
- package/dist/commands/review-env-check.js +115 -0
- package/dist/commands/review-environment-config.d.ts +4 -0
- package/dist/commands/review-environment-config.js +102 -0
- package/dist/commands/review-escalation-path.d.ts +1 -0
- package/dist/commands/review-escalation-path.js +86 -0
- package/dist/commands/review-exclude-vendor.d.ts +4 -0
- package/dist/commands/review-exclude-vendor.js +158 -0
- package/dist/commands/review-explain.d.ts +5 -0
- package/dist/commands/review-explain.js +194 -0
- package/dist/commands/review-export-pdf.d.ts +7 -0
- package/dist/commands/review-export-pdf.js +131 -0
- package/dist/commands/review-export.d.ts +4 -0
- package/dist/commands/review-export.js +179 -0
- package/dist/commands/review-feedback-loop.d.ts +4 -0
- package/dist/commands/review-feedback-loop.js +113 -0
- package/dist/commands/review-feedback-summary.d.ts +1 -0
- package/dist/commands/review-feedback-summary.js +130 -0
- package/dist/commands/review-feedback.d.ts +4 -0
- package/dist/commands/review-feedback.js +145 -0
- package/dist/commands/review-file-complexity.d.ts +4 -0
- package/dist/commands/review-file-complexity.js +137 -0
- package/dist/commands/review-file-filter.d.ts +4 -0
- package/dist/commands/review-file-filter.js +121 -0
- package/dist/commands/review-file-stats.d.ts +4 -0
- package/dist/commands/review-file-stats.js +130 -0
- package/dist/commands/review-filter.d.ts +4 -0
- package/dist/commands/review-filter.js +161 -0
- package/dist/commands/review-finding-link.d.ts +7 -0
- package/dist/commands/review-finding-link.js +115 -0
- package/dist/commands/review-focus-area.d.ts +1 -0
- package/dist/commands/review-focus-area.js +96 -0
- package/dist/commands/review-focus.d.ts +4 -0
- package/dist/commands/review-focus.js +196 -0
- package/dist/commands/review-gate-config.d.ts +4 -0
- package/dist/commands/review-gate-config.js +153 -0
- package/dist/commands/review-gate.d.ts +4 -0
- package/dist/commands/review-gate.js +212 -0
- package/dist/commands/review-goal-track.d.ts +1 -0
- package/dist/commands/review-goal-track.js +123 -0
- package/dist/commands/review-guardrail.d.ts +4 -0
- package/dist/commands/review-guardrail.js +155 -0
- package/dist/commands/review-handoff.d.ts +4 -0
- package/dist/commands/review-handoff.js +208 -0
- package/dist/commands/review-health-check.d.ts +4 -0
- package/dist/commands/review-health-check.js +148 -0
- package/dist/commands/review-health-trend.d.ts +1 -0
- package/dist/commands/review-health-trend.js +107 -0
- package/dist/commands/review-history-compare.d.ts +4 -0
- package/dist/commands/review-history-compare.js +93 -0
- package/dist/commands/review-history-search.d.ts +4 -0
- package/dist/commands/review-history-search.js +214 -0
- package/dist/commands/review-ide-sync.d.ts +4 -0
- package/dist/commands/review-ide-sync.js +91 -0
- package/dist/commands/review-ignore-path.d.ts +4 -0
- package/dist/commands/review-ignore-path.js +147 -0
- package/dist/commands/review-ignore-pattern.d.ts +5 -0
- package/dist/commands/review-ignore-pattern.js +138 -0
- package/dist/commands/review-incident-link.d.ts +4 -0
- package/dist/commands/review-incident-link.js +93 -0
- package/dist/commands/review-incremental.d.ts +4 -0
- package/dist/commands/review-incremental.js +128 -0
- package/dist/commands/review-integration-health.d.ts +4 -0
- package/dist/commands/review-integration-health.js +84 -0
- package/dist/commands/review-integration-test.d.ts +4 -0
- package/dist/commands/review-integration-test.js +145 -0
- package/dist/commands/review-integration.d.ts +4 -0
- package/dist/commands/review-integration.js +236 -0
- package/dist/commands/review-interactive.d.ts +4 -0
- package/dist/commands/review-interactive.js +85 -0
- package/dist/commands/review-knowledge-capture.d.ts +1 -0
- package/dist/commands/review-knowledge-capture.js +94 -0
- package/dist/commands/review-language-profile.d.ts +4 -0
- package/dist/commands/review-language-profile.js +72 -0
- package/dist/commands/review-language-stats.d.ts +4 -0
- package/dist/commands/review-language-stats.js +152 -0
- package/dist/commands/review-lock-file.d.ts +4 -0
- package/dist/commands/review-lock-file.js +153 -0
- package/dist/commands/review-lock.d.ts +4 -0
- package/dist/commands/review-lock.js +107 -0
- package/dist/commands/review-log.d.ts +22 -0
- package/dist/commands/review-log.js +164 -0
- package/dist/commands/review-mentor-suggest.d.ts +1 -0
- package/dist/commands/review-mentor-suggest.js +112 -0
- package/dist/commands/review-merge-check.d.ts +4 -0
- package/dist/commands/review-merge-check.js +101 -0
- package/dist/commands/review-merge-config.d.ts +4 -0
- package/dist/commands/review-merge-config.js +119 -0
- package/dist/commands/review-merge-readiness.d.ts +1 -0
- package/dist/commands/review-merge-readiness.js +90 -0
- package/dist/commands/review-merge-request.d.ts +4 -0
- package/dist/commands/review-merge-request.js +95 -0
- package/dist/commands/review-merge.d.ts +4 -0
- package/dist/commands/review-merge.js +145 -0
- package/dist/commands/review-metric-export.d.ts +4 -0
- package/dist/commands/review-metric-export.js +62 -0
- package/dist/commands/review-milestone.d.ts +4 -0
- package/dist/commands/review-milestone.js +136 -0
- package/dist/commands/review-multi-repo-sync.d.ts +4 -0
- package/dist/commands/review-multi-repo-sync.js +115 -0
- package/dist/commands/review-multi-repo.d.ts +4 -0
- package/dist/commands/review-multi-repo.js +145 -0
- package/dist/commands/review-note.d.ts +4 -0
- package/dist/commands/review-note.js +104 -0
- package/dist/commands/review-notification-config.d.ts +4 -0
- package/dist/commands/review-notification-config.js +122 -0
- package/dist/commands/review-notification-digest.d.ts +4 -0
- package/dist/commands/review-notification-digest.js +64 -0
- package/dist/commands/review-notification.d.ts +4 -0
- package/dist/commands/review-notification.js +126 -0
- package/dist/commands/review-notify.d.ts +4 -0
- package/dist/commands/review-notify.js +143 -0
- package/dist/commands/review-offline.d.ts +4 -0
- package/dist/commands/review-offline.js +125 -0
- package/dist/commands/review-onboard-checklist.d.ts +4 -0
- package/dist/commands/review-onboard-checklist.js +119 -0
- package/dist/commands/review-onboard-wizard.d.ts +4 -0
- package/dist/commands/review-onboard-wizard.js +92 -0
- package/dist/commands/review-onboard.d.ts +4 -0
- package/dist/commands/review-onboard.js +154 -0
- package/dist/commands/review-onboarding-check.d.ts +1 -0
- package/dist/commands/review-onboarding-check.js +93 -0
- package/dist/commands/review-org-dashboard.d.ts +4 -0
- package/dist/commands/review-org-dashboard.js +68 -0
- package/dist/commands/review-output-filter.d.ts +4 -0
- package/dist/commands/review-output-filter.js +112 -0
- package/dist/commands/review-output-format.d.ts +4 -0
- package/dist/commands/review-output-format.js +144 -0
- package/dist/commands/review-output-transform.d.ts +4 -0
- package/dist/commands/review-output-transform.js +119 -0
- package/dist/commands/review-owner.d.ts +4 -0
- package/dist/commands/review-owner.js +129 -0
- package/dist/commands/review-parallel-diff.d.ts +4 -0
- package/dist/commands/review-parallel-diff.js +146 -0
- package/dist/commands/review-parallel-files.d.ts +7 -0
- package/dist/commands/review-parallel-files.js +134 -0
- package/dist/commands/review-parallel-run.d.ts +4 -0
- package/dist/commands/review-parallel-run.js +116 -0
- package/dist/commands/review-parallel.d.ts +4 -0
- package/dist/commands/review-parallel.js +164 -0
- package/dist/commands/review-perf-profile.d.ts +4 -0
- package/dist/commands/review-perf-profile.js +98 -0
- package/dist/commands/review-permission-model.d.ts +4 -0
- package/dist/commands/review-permission-model.js +149 -0
- package/dist/commands/review-pipeline-status.d.ts +4 -0
- package/dist/commands/review-pipeline-status.js +54 -0
- package/dist/commands/review-plugin-config.d.ts +4 -0
- package/dist/commands/review-plugin-config.js +167 -0
- package/dist/commands/review-plugin-list.d.ts +4 -0
- package/dist/commands/review-plugin-list.js +99 -0
- package/dist/commands/review-plugin-manage.d.ts +4 -0
- package/dist/commands/review-plugin-manage.js +137 -0
- package/dist/commands/review-plugin-status.d.ts +4 -0
- package/dist/commands/review-plugin-status.js +53 -0
- package/dist/commands/review-policy-enforce.d.ts +1 -0
- package/dist/commands/review-policy-enforce.js +92 -0
- package/dist/commands/review-policy-engine.d.ts +4 -0
- package/dist/commands/review-policy-engine.js +135 -0
- package/dist/commands/review-pr-comment-gen.d.ts +4 -0
- package/dist/commands/review-pr-comment-gen.js +62 -0
- package/dist/commands/review-pr-comment.d.ts +4 -0
- package/dist/commands/review-pr-comment.js +106 -0
- package/dist/commands/review-pr-label-suggest.d.ts +1 -0
- package/dist/commands/review-pr-label-suggest.js +77 -0
- package/dist/commands/review-pr-size-check.d.ts +1 -0
- package/dist/commands/review-pr-size-check.js +98 -0
- package/dist/commands/review-pr-template.d.ts +4 -0
- package/dist/commands/review-pr-template.js +104 -0
- package/dist/commands/review-preset-save.d.ts +4 -0
- package/dist/commands/review-preset-save.js +159 -0
- package/dist/commands/review-priority.d.ts +4 -0
- package/dist/commands/review-priority.js +157 -0
- package/dist/commands/review-profile.d.ts +4 -0
- package/dist/commands/review-profile.js +168 -0
- package/dist/commands/review-progress-bar.d.ts +4 -0
- package/dist/commands/review-progress-bar.js +157 -0
- package/dist/commands/review-progress-report.d.ts +1 -0
- package/dist/commands/review-progress-report.js +95 -0
- package/dist/commands/review-progress-track.d.ts +4 -0
- package/dist/commands/review-progress-track.js +94 -0
- package/dist/commands/review-quality-baseline.d.ts +1 -0
- package/dist/commands/review-quality-baseline.js +134 -0
- package/dist/commands/review-quality-gate.d.ts +1 -0
- package/dist/commands/review-quality-gate.js +86 -0
- package/dist/commands/review-quality-score.d.ts +4 -0
- package/dist/commands/review-quality-score.js +127 -0
- package/dist/commands/review-quality-trend.d.ts +4 -0
- package/dist/commands/review-quality-trend.js +57 -0
- package/dist/commands/review-queue.d.ts +33 -0
- package/dist/commands/review-queue.js +225 -0
- package/dist/commands/review-quickstart.d.ts +4 -0
- package/dist/commands/review-quickstart.js +107 -0
- package/dist/commands/review-quota-check.d.ts +4 -0
- package/dist/commands/review-quota-check.js +97 -0
- package/dist/commands/review-quota.d.ts +4 -0
- package/dist/commands/review-quota.js +126 -0
- package/dist/commands/review-rate-limit.d.ts +4 -0
- package/dist/commands/review-rate-limit.js +130 -0
- package/dist/commands/review-readiness-check.d.ts +1 -0
- package/dist/commands/review-readiness-check.js +98 -0
- package/dist/commands/review-receipt.d.ts +4 -0
- package/dist/commands/review-receipt.js +220 -0
- package/dist/commands/review-release-gate.d.ts +1 -0
- package/dist/commands/review-release-gate.js +81 -0
- package/dist/commands/review-replay.d.ts +8 -0
- package/dist/commands/review-replay.js +264 -0
- package/dist/commands/review-repo-onboard.d.ts +4 -0
- package/dist/commands/review-repo-onboard.js +114 -0
- package/dist/commands/review-report-archive.d.ts +4 -0
- package/dist/commands/review-report-archive.js +100 -0
- package/dist/commands/review-report-merge.d.ts +4 -0
- package/dist/commands/review-report-merge.js +90 -0
- package/dist/commands/review-report-pdf.d.ts +4 -0
- package/dist/commands/review-report-pdf.js +163 -0
- package/dist/commands/review-report-schedule.d.ts +4 -0
- package/dist/commands/review-report-schedule.js +96 -0
- package/dist/commands/review-retrospective.d.ts +1 -0
- package/dist/commands/review-retrospective.js +118 -0
- package/dist/commands/review-retry.d.ts +4 -0
- package/dist/commands/review-retry.js +91 -0
- package/dist/commands/review-review-cadence.d.ts +1 -0
- package/dist/commands/review-review-cadence.js +85 -0
- package/dist/commands/review-review-comments.d.ts +4 -0
- package/dist/commands/review-review-comments.js +84 -0
- package/dist/commands/review-reviewer-match.d.ts +1 -0
- package/dist/commands/review-reviewer-match.js +108 -0
- package/dist/commands/review-risk-matrix.d.ts +1 -0
- package/dist/commands/review-risk-matrix.js +96 -0
- package/dist/commands/review-risk-score.d.ts +4 -0
- package/dist/commands/review-risk-score.js +156 -0
- package/dist/commands/review-role-assignment.d.ts +4 -0
- package/dist/commands/review-role-assignment.js +98 -0
- package/dist/commands/review-rollback.d.ts +4 -0
- package/dist/commands/review-rollback.js +171 -0
- package/dist/commands/review-rollout-plan.d.ts +4 -0
- package/dist/commands/review-rollout-plan.js +123 -0
- package/dist/commands/review-rule-filter.d.ts +4 -0
- package/dist/commands/review-rule-filter.js +116 -0
- package/dist/commands/review-rule-stats.d.ts +4 -0
- package/dist/commands/review-rule-stats.js +161 -0
- package/dist/commands/review-sandbox.d.ts +4 -0
- package/dist/commands/review-sandbox.js +191 -0
- package/dist/commands/review-schedule.d.ts +4 -0
- package/dist/commands/review-schedule.js +169 -0
- package/dist/commands/review-scope-limit.d.ts +4 -0
- package/dist/commands/review-scope-limit.js +100 -0
- package/dist/commands/review-scope-lock.d.ts +7 -0
- package/dist/commands/review-scope-lock.js +138 -0
- package/dist/commands/review-scope-select.d.ts +4 -0
- package/dist/commands/review-scope-select.js +98 -0
- package/dist/commands/review-scope-suggest.d.ts +1 -0
- package/dist/commands/review-scope-suggest.js +112 -0
- package/dist/commands/review-scope.d.ts +4 -0
- package/dist/commands/review-scope.js +197 -0
- package/dist/commands/review-score-history.d.ts +4 -0
- package/dist/commands/review-score-history.js +137 -0
- package/dist/commands/review-security-posture.d.ts +1 -0
- package/dist/commands/review-security-posture.js +105 -0
- package/dist/commands/review-session-replay.d.ts +4 -0
- package/dist/commands/review-session-replay.js +81 -0
- package/dist/commands/review-session-save.d.ts +4 -0
- package/dist/commands/review-session-save.js +173 -0
- package/dist/commands/review-session.d.ts +4 -0
- package/dist/commands/review-session.js +150 -0
- package/dist/commands/review-skip-list.d.ts +4 -0
- package/dist/commands/review-skip-list.js +135 -0
- package/dist/commands/review-skip-rule.d.ts +4 -0
- package/dist/commands/review-skip-rule.js +105 -0
- package/dist/commands/review-sla-config.d.ts +4 -0
- package/dist/commands/review-sla-config.js +88 -0
- package/dist/commands/review-slack-format.d.ts +4 -0
- package/dist/commands/review-slack-format.js +113 -0
- package/dist/commands/review-snapshot-diff.d.ts +4 -0
- package/dist/commands/review-snapshot-diff.js +100 -0
- package/dist/commands/review-sprint-plan.d.ts +1 -0
- package/dist/commands/review-sprint-plan.js +79 -0
- package/dist/commands/review-stakeholder-notify.d.ts +1 -0
- package/dist/commands/review-stakeholder-notify.js +134 -0
- package/dist/commands/review-stakeholder-report.d.ts +4 -0
- package/dist/commands/review-stakeholder-report.js +75 -0
- package/dist/commands/review-stale-finding-clean.d.ts +1 -0
- package/dist/commands/review-stale-finding-clean.js +81 -0
- package/dist/commands/review-standup.d.ts +4 -0
- package/dist/commands/review-standup.js +95 -0
- package/dist/commands/review-stats.d.ts +4 -0
- package/dist/commands/review-stats.js +175 -0
- package/dist/commands/review-status-badge.d.ts +4 -0
- package/dist/commands/review-status-badge.js +120 -0
- package/dist/commands/review-streak.d.ts +4 -0
- package/dist/commands/review-streak.js +150 -0
- package/dist/commands/review-summary-dashboard.d.ts +4 -0
- package/dist/commands/review-summary-dashboard.js +96 -0
- package/dist/commands/review-summary-email.d.ts +4 -0
- package/dist/commands/review-summary-email.js +102 -0
- package/dist/commands/review-summary.d.ts +4 -0
- package/dist/commands/review-summary.js +174 -0
- package/dist/commands/review-tag-manager.d.ts +4 -0
- package/dist/commands/review-tag-manager.js +128 -0
- package/dist/commands/review-tag.d.ts +4 -0
- package/dist/commands/review-tag.js +136 -0
- package/dist/commands/review-team-analytics.d.ts +1 -0
- package/dist/commands/review-team-analytics.js +94 -0
- package/dist/commands/review-team-assign.d.ts +7 -0
- package/dist/commands/review-team-assign.js +211 -0
- package/dist/commands/review-team-coverage.d.ts +1 -0
- package/dist/commands/review-team-coverage.js +95 -0
- package/dist/commands/review-team-dashboard.d.ts +4 -0
- package/dist/commands/review-team-dashboard.js +98 -0
- package/dist/commands/review-team-rotation.d.ts +1 -0
- package/dist/commands/review-team-rotation.js +99 -0
- package/dist/commands/review-team-skill-map.d.ts +1 -0
- package/dist/commands/review-team-skill-map.js +102 -0
- package/dist/commands/review-team-stats.d.ts +4 -0
- package/dist/commands/review-team-stats.js +97 -0
- package/dist/commands/review-team-summary.d.ts +4 -0
- package/dist/commands/review-team-summary.js +155 -0
- package/dist/commands/review-team-velocity.d.ts +1 -0
- package/dist/commands/review-team-velocity.js +103 -0
- package/dist/commands/review-template-export.d.ts +4 -0
- package/dist/commands/review-template-export.js +146 -0
- package/dist/commands/review-template-library.d.ts +4 -0
- package/dist/commands/review-template-library.js +155 -0
- package/dist/commands/review-template-suggest.d.ts +1 -0
- package/dist/commands/review-template-suggest.js +119 -0
- package/dist/commands/review-template.d.ts +4 -0
- package/dist/commands/review-template.js +212 -0
- package/dist/commands/review-tenant-config.d.ts +4 -0
- package/dist/commands/review-tenant-config.js +116 -0
- package/dist/commands/review-threshold-tune.d.ts +4 -0
- package/dist/commands/review-threshold-tune.js +135 -0
- package/dist/commands/review-timeline.d.ts +4 -0
- package/dist/commands/review-timeline.js +76 -0
- package/dist/commands/review-token-budget.d.ts +4 -0
- package/dist/commands/review-token-budget.js +117 -0
- package/dist/commands/review-velocity-track.d.ts +1 -0
- package/dist/commands/review-velocity-track.js +94 -0
- package/dist/commands/review-watch-mode.d.ts +7 -0
- package/dist/commands/review-watch-mode.js +132 -0
- package/dist/commands/review-webhook-dispatch.d.ts +4 -0
- package/dist/commands/review-webhook-dispatch.js +99 -0
- package/dist/commands/review-webhook-notify.d.ts +4 -0
- package/dist/commands/review-webhook-notify.js +145 -0
- package/dist/commands/review-webhook.d.ts +4 -0
- package/dist/commands/review-webhook.js +140 -0
- package/dist/commands/review-whitelist.d.ts +4 -0
- package/dist/commands/review-whitelist.js +150 -0
- package/dist/commands/review-workflow-suggest.d.ts +1 -0
- package/dist/commands/review-workflow-suggest.js +129 -0
- package/dist/commands/review-workload-balance.d.ts +1 -0
- package/dist/commands/review-workload-balance.js +86 -0
- package/dist/commands/review-workspace-init.d.ts +4 -0
- package/dist/commands/review-workspace-init.js +104 -0
- package/dist/commands/review-workspace-scan.d.ts +4 -0
- package/dist/commands/review-workspace-scan.js +144 -0
- package/dist/commands/review.d.ts +155 -0
- package/dist/commands/review.js +1114 -0
- package/dist/commands/risk-heatmap.d.ts +7 -0
- package/dist/commands/risk-heatmap.js +223 -0
- package/dist/commands/rollback-safety.d.ts +4 -0
- package/dist/commands/rollback-safety.js +191 -0
- package/dist/commands/rule-catalog.d.ts +4 -0
- package/dist/commands/rule-catalog.js +128 -0
- package/dist/commands/rule-metrics.d.ts +43 -0
- package/dist/commands/rule-metrics.js +113 -0
- package/dist/commands/rule-owner.d.ts +30 -0
- package/dist/commands/rule-owner.js +181 -0
- package/dist/commands/rule-share.d.ts +34 -0
- package/dist/commands/rule-share.js +202 -0
- package/dist/commands/rule-test.d.ts +4 -0
- package/dist/commands/rule-test.js +201 -0
- package/dist/commands/rule.d.ts +114 -0
- package/dist/commands/rule.js +295 -0
- package/dist/commands/sbom-export.d.ts +7 -0
- package/dist/commands/sbom-export.js +161 -0
- package/dist/commands/scaffold-plugin.d.ts +15 -0
- package/dist/commands/scaffold-plugin.js +270 -0
- package/dist/commands/secret-age.d.ts +5 -0
- package/dist/commands/secret-age.js +214 -0
- package/dist/commands/secret-scan.d.ts +7 -0
- package/dist/commands/secret-scan.js +244 -0
- package/dist/commands/security-maturity.d.ts +7 -0
- package/dist/commands/security-maturity.js +312 -0
- package/dist/commands/security-theater.d.ts +4 -0
- package/dist/commands/security-theater.js +278 -0
- package/dist/commands/setup-wizard.d.ts +4 -0
- package/dist/commands/setup-wizard.js +174 -0
- package/dist/commands/severity-tune.d.ts +4 -0
- package/dist/commands/severity-tune.js +208 -0
- package/dist/commands/sla-track.d.ts +56 -0
- package/dist/commands/sla-track.js +268 -0
- package/dist/commands/smart-output.d.ts +38 -0
- package/dist/commands/smart-output.js +175 -0
- package/dist/commands/smart-select.d.ts +26 -0
- package/dist/commands/smart-select.js +345 -0
- package/dist/commands/snapshot.d.ts +139 -0
- package/dist/commands/snapshot.js +478 -0
- package/dist/commands/snippet-eval.d.ts +7 -0
- package/dist/commands/snippet-eval.js +223 -0
- package/dist/commands/spec-conform.d.ts +4 -0
- package/dist/commands/spec-conform.js +304 -0
- package/dist/commands/stale-pattern.d.ts +4 -0
- package/dist/commands/stale-pattern.js +293 -0
- package/dist/commands/state-integrity.d.ts +4 -0
- package/dist/commands/state-integrity.js +283 -0
- package/dist/commands/suppress.d.ts +39 -0
- package/dist/commands/suppress.js +203 -0
- package/dist/commands/team-config.d.ts +4 -0
- package/dist/commands/team-config.js +234 -0
- package/dist/commands/team-leaderboard.d.ts +24 -0
- package/dist/commands/team-leaderboard.js +227 -0
- package/dist/commands/team-rules-sync.d.ts +7 -0
- package/dist/commands/team-rules-sync.js +250 -0
- package/dist/commands/team-trust.d.ts +7 -0
- package/dist/commands/team-trust.js +174 -0
- package/dist/commands/test-correlate.d.ts +7 -0
- package/dist/commands/test-correlate.js +221 -0
- package/dist/commands/test-isolation.d.ts +5 -0
- package/dist/commands/test-isolation.js +234 -0
- package/dist/commands/test-quality.d.ts +5 -0
- package/dist/commands/test-quality.js +160 -0
- package/dist/commands/test-suggest.d.ts +8 -0
- package/dist/commands/test-suggest.js +247 -0
- package/dist/commands/ticket-sync.d.ts +25 -0
- package/dist/commands/ticket-sync.js +235 -0
- package/dist/commands/timeout-audit.d.ts +4 -0
- package/dist/commands/timeout-audit.js +210 -0
- package/dist/commands/trace.d.ts +64 -0
- package/dist/commands/trace.js +245 -0
- package/dist/commands/trend-report.d.ts +4 -0
- package/dist/commands/trend-report.js +148 -0
- package/dist/commands/triage.d.ts +15 -0
- package/dist/commands/triage.js +171 -0
- package/dist/commands/trust-adaptive.d.ts +8 -0
- package/dist/commands/trust-adaptive.js +193 -0
- package/dist/commands/trust-ramp.d.ts +29 -0
- package/dist/commands/trust-ramp.js +189 -0
- package/dist/commands/tune.d.ts +24 -0
- package/dist/commands/tune.js +380 -0
- package/dist/commands/type-boundary.d.ts +4 -0
- package/dist/commands/type-boundary.js +235 -0
- package/dist/commands/upload.d.ts +13 -0
- package/dist/commands/upload.js +172 -0
- package/dist/commands/validate-config.d.ts +16 -0
- package/dist/commands/validate-config.js +267 -0
- package/dist/commands/vendor-lock-detect.d.ts +7 -0
- package/dist/commands/vendor-lock-detect.js +288 -0
- package/dist/commands/vote.d.ts +31 -0
- package/dist/commands/vote.js +200 -0
- package/dist/commands/warm-cache.d.ts +30 -0
- package/dist/commands/warm-cache.js +165 -0
- package/dist/commands/watch-judge.d.ts +7 -0
- package/dist/commands/watch-judge.js +179 -0
- package/dist/commands/watch.d.ts +22 -0
- package/dist/commands/watch.js +147 -0
- package/dist/comparison.d.ts +67 -0
- package/dist/comparison.js +253 -0
- package/dist/config.d.ts +108 -0
- package/dist/config.js +694 -0
- package/dist/context/context-snippets.d.ts +15 -0
- package/dist/context/context-snippets.js +36 -0
- package/dist/context/embedding-cache.d.ts +30 -0
- package/dist/context/embedding-cache.js +48 -0
- package/dist/data-adapter.d.ts +123 -0
- package/dist/data-adapter.js +212 -0
- package/dist/dedup.d.ts +105 -0
- package/dist/dedup.js +606 -0
- package/dist/disk-cache.d.ts +59 -0
- package/dist/disk-cache.js +236 -0
- package/dist/errors.d.ts +43 -0
- package/dist/errors.js +63 -0
- package/dist/escalation.d.ts +100 -0
- package/dist/escalation.js +292 -0
- package/dist/evaluation-session.d.ts +74 -0
- package/dist/evaluation-session.js +152 -0
- package/dist/evaluators/accessibility.d.ts +2 -0
- package/dist/evaluators/accessibility.js +559 -0
- package/dist/evaluators/agent-instructions.d.ts +2 -0
- package/dist/evaluators/agent-instructions.js +214 -0
- package/dist/evaluators/ai-code-safety.d.ts +8 -0
- package/dist/evaluators/ai-code-safety.js +410 -0
- package/dist/evaluators/api-contract.d.ts +9 -0
- package/dist/evaluators/api-contract.js +203 -0
- package/dist/evaluators/api-design.d.ts +2 -0
- package/dist/evaluators/api-design.js +260 -0
- package/dist/evaluators/app-builder.d.ts +33 -0
- package/dist/evaluators/app-builder.js +155 -0
- package/dist/evaluators/authentication.d.ts +2 -0
- package/dist/evaluators/authentication.js +455 -0
- package/dist/evaluators/backwards-compatibility.d.ts +2 -0
- package/dist/evaluators/backwards-compatibility.js +168 -0
- package/dist/evaluators/caching.d.ts +2 -0
- package/dist/evaluators/caching.js +171 -0
- package/dist/evaluators/ci-cd.d.ts +2 -0
- package/dist/evaluators/ci-cd.js +218 -0
- package/dist/evaluators/cloud-readiness.d.ts +2 -0
- package/dist/evaluators/cloud-readiness.js +231 -0
- package/dist/evaluators/code-structure.d.ts +21 -0
- package/dist/evaluators/code-structure.js +195 -0
- package/dist/evaluators/compliance.d.ts +2 -0
- package/dist/evaluators/compliance.js +329 -0
- package/dist/evaluators/concurrency.d.ts +2 -0
- package/dist/evaluators/concurrency.js +307 -0
- package/dist/evaluators/configuration-management.d.ts +2 -0
- package/dist/evaluators/configuration-management.js +232 -0
- package/dist/evaluators/cost-effectiveness.d.ts +2 -0
- package/dist/evaluators/cost-effectiveness.js +418 -0
- package/dist/evaluators/cybersecurity.d.ts +2 -0
- package/dist/evaluators/cybersecurity.js +1197 -0
- package/dist/evaluators/data-security.d.ts +2 -0
- package/dist/evaluators/data-security.js +467 -0
- package/dist/evaluators/data-sovereignty.d.ts +2 -0
- package/dist/evaluators/data-sovereignty.js +495 -0
- package/dist/evaluators/database.d.ts +2 -0
- package/dist/evaluators/database.js +240 -0
- package/dist/evaluators/dependencies.d.ts +5 -0
- package/dist/evaluators/dependencies.js +228 -0
- package/dist/evaluators/dependency-health.d.ts +2 -0
- package/dist/evaluators/dependency-health.js +477 -0
- package/dist/evaluators/documentation.d.ts +2 -0
- package/dist/evaluators/documentation.js +432 -0
- package/dist/evaluators/error-handling.d.ts +2 -0
- package/dist/evaluators/error-handling.js +426 -0
- package/dist/evaluators/ethics-bias.d.ts +2 -0
- package/dist/evaluators/ethics-bias.js +263 -0
- package/dist/evaluators/false-positive-review.d.ts +21 -0
- package/dist/evaluators/false-positive-review.js +1246 -0
- package/dist/evaluators/framework-rules.d.ts +58 -0
- package/dist/evaluators/framework-rules.js +291 -0
- package/dist/evaluators/framework-safety.d.ts +12 -0
- package/dist/evaluators/framework-safety.js +1205 -0
- package/dist/evaluators/hallucination-detection.d.ts +2 -0
- package/dist/evaluators/hallucination-detection.js +1250 -0
- package/dist/evaluators/iac-security.d.ts +8 -0
- package/dist/evaluators/iac-security.js +701 -0
- package/dist/evaluators/index.d.ts +167 -0
- package/dist/evaluators/index.js +994 -0
- package/dist/evaluators/intent-alignment.d.ts +18 -0
- package/dist/evaluators/intent-alignment.js +405 -0
- package/dist/evaluators/internationalization.d.ts +2 -0
- package/dist/evaluators/internationalization.js +287 -0
- package/dist/evaluators/judge-selector.d.ts +19 -0
- package/dist/evaluators/judge-selector.js +141 -0
- package/dist/evaluators/logging-privacy.d.ts +2 -0
- package/dist/evaluators/logging-privacy.js +190 -0
- package/dist/evaluators/logic-review.d.ts +2 -0
- package/dist/evaluators/logic-review.js +289 -0
- package/dist/evaluators/maintainability.d.ts +2 -0
- package/dist/evaluators/maintainability.js +430 -0
- package/dist/evaluators/model-fingerprint.d.ts +2 -0
- package/dist/evaluators/model-fingerprint.js +151 -0
- package/dist/evaluators/multi-turn-coherence.d.ts +13 -0
- package/dist/evaluators/multi-turn-coherence.js +149 -0
- package/dist/evaluators/observability.d.ts +2 -0
- package/dist/evaluators/observability.js +238 -0
- package/dist/evaluators/over-engineering.d.ts +2 -0
- package/dist/evaluators/over-engineering.js +160 -0
- package/dist/evaluators/performance.d.ts +2 -0
- package/dist/evaluators/performance.js +649 -0
- package/dist/evaluators/portability.d.ts +2 -0
- package/dist/evaluators/portability.js +254 -0
- package/dist/evaluators/project.d.ts +48 -0
- package/dist/evaluators/project.js +817 -0
- package/dist/evaluators/rate-limiting.d.ts +2 -0
- package/dist/evaluators/rate-limiting.js +193 -0
- package/dist/evaluators/recall-boost.d.ts +27 -0
- package/dist/evaluators/recall-boost.js +409 -0
- package/dist/evaluators/reliability.d.ts +2 -0
- package/dist/evaluators/reliability.js +245 -0
- package/dist/evaluators/scalability.d.ts +2 -0
- package/dist/evaluators/scalability.js +230 -0
- package/dist/evaluators/security.d.ts +12 -0
- package/dist/evaluators/security.js +1013 -0
- package/dist/evaluators/shared.d.ts +219 -0
- package/dist/evaluators/shared.js +1169 -0
- package/dist/evaluators/software-practices.d.ts +2 -0
- package/dist/evaluators/software-practices.js +395 -0
- package/dist/evaluators/suppressions.d.ts +49 -0
- package/dist/evaluators/suppressions.js +185 -0
- package/dist/evaluators/testing.d.ts +2 -0
- package/dist/evaluators/testing.js +348 -0
- package/dist/evaluators/ux.d.ts +2 -0
- package/dist/evaluators/ux.js +309 -0
- package/dist/evaluators/v2.d.ts +26 -0
- package/dist/evaluators/v2.js +354 -0
- package/dist/ext-to-lang.d.ts +16 -0
- package/dist/ext-to-lang.js +60 -0
- package/dist/feedback-loop.d.ts +62 -0
- package/dist/feedback-loop.js +179 -0
- package/dist/finding-lifecycle.d.ts +215 -0
- package/dist/finding-lifecycle.js +547 -0
- package/dist/fingerprint.d.ts +39 -0
- package/dist/fingerprint.js +179 -0
- package/dist/fix-history.d.ts +103 -0
- package/dist/fix-history.js +164 -0
- package/dist/formatters/badge.d.ts +16 -0
- package/dist/formatters/badge.js +78 -0
- package/dist/formatters/codeclimate.d.ts +24 -0
- package/dist/formatters/codeclimate.js +80 -0
- package/dist/formatters/csv.d.ts +16 -0
- package/dist/formatters/csv.js +53 -0
- package/dist/formatters/diagnostics.d.ts +81 -0
- package/dist/formatters/diagnostics.js +152 -0
- package/dist/formatters/github-actions.d.ts +6 -0
- package/dist/formatters/github-actions.js +68 -0
- package/dist/formatters/html.d.ts +12 -0
- package/dist/formatters/html.js +194 -0
- package/dist/formatters/junit.d.ts +6 -0
- package/dist/formatters/junit.js +68 -0
- package/dist/formatters/pdf.d.ts +12 -0
- package/dist/formatters/pdf.js +114 -0
- package/dist/formatters/sarif.d.ts +92 -0
- package/dist/formatters/sarif.js +256 -0
- package/dist/formatters/shared.d.ts +4 -0
- package/dist/formatters/shared.js +29 -0
- package/dist/git-diff.d.ts +62 -0
- package/dist/git-diff.js +282 -0
- package/dist/github-app.d.ts +152 -0
- package/dist/github-app.js +716 -0
- package/dist/import-resolver.d.ts +51 -0
- package/dist/import-resolver.js +213 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +38 -0
- package/dist/judge-registry.d.ts +156 -0
- package/dist/judge-registry.js +272 -0
- package/dist/judges/accessibility.d.ts +2 -0
- package/dist/judges/accessibility.js +46 -0
- package/dist/judges/agent-instructions.d.ts +2 -0
- package/dist/judges/agent-instructions.js +46 -0
- package/dist/judges/ai-code-safety.d.ts +2 -0
- package/dist/judges/ai-code-safety.js +57 -0
- package/dist/judges/api-contract.d.ts +2 -0
- package/dist/judges/api-contract.js +40 -0
- package/dist/judges/api-design.d.ts +2 -0
- package/dist/judges/api-design.js +57 -0
- package/dist/judges/authentication.d.ts +2 -0
- package/dist/judges/authentication.js +63 -0
- package/dist/judges/backwards-compatibility.d.ts +2 -0
- package/dist/judges/backwards-compatibility.js +46 -0
- package/dist/judges/caching.d.ts +2 -0
- package/dist/judges/caching.js +46 -0
- package/dist/judges/ci-cd.d.ts +2 -0
- package/dist/judges/ci-cd.js +46 -0
- package/dist/judges/cloud-readiness.d.ts +2 -0
- package/dist/judges/cloud-readiness.js +53 -0
- package/dist/judges/code-structure.d.ts +2 -0
- package/dist/judges/code-structure.js +50 -0
- package/dist/judges/compliance.d.ts +2 -0
- package/dist/judges/compliance.js +49 -0
- package/dist/judges/concurrency.d.ts +2 -0
- package/dist/judges/concurrency.js +48 -0
- package/dist/judges/configuration-management.d.ts +2 -0
- package/dist/judges/configuration-management.js +46 -0
- package/dist/judges/cost-effectiveness.d.ts +2 -0
- package/dist/judges/cost-effectiveness.js +42 -0
- package/dist/judges/cybersecurity.d.ts +2 -0
- package/dist/judges/cybersecurity.js +63 -0
- package/dist/judges/data-security.d.ts +2 -0
- package/dist/judges/data-security.js +50 -0
- package/dist/judges/data-sovereignty.d.ts +2 -0
- package/dist/judges/data-sovereignty.js +60 -0
- package/dist/judges/database.d.ts +2 -0
- package/dist/judges/database.js +51 -0
- package/dist/judges/dependency-health.d.ts +2 -0
- package/dist/judges/dependency-health.js +48 -0
- package/dist/judges/documentation.d.ts +2 -0
- package/dist/judges/documentation.js +55 -0
- package/dist/judges/error-handling.d.ts +2 -0
- package/dist/judges/error-handling.js +55 -0
- package/dist/judges/ethics-bias.d.ts +2 -0
- package/dist/judges/ethics-bias.js +48 -0
- package/dist/judges/false-positive-review.d.ts +2 -0
- package/dist/judges/false-positive-review.js +85 -0
- package/dist/judges/framework-safety.d.ts +2 -0
- package/dist/judges/framework-safety.js +49 -0
- package/dist/judges/hallucination-detection.d.ts +2 -0
- package/dist/judges/hallucination-detection.js +48 -0
- package/dist/judges/iac-security.d.ts +2 -0
- package/dist/judges/iac-security.js +47 -0
- package/dist/judges/index.d.ts +88 -0
- package/dist/judges/index.js +128 -0
- package/dist/judges/intent-alignment.d.ts +2 -0
- package/dist/judges/intent-alignment.js +46 -0
- package/dist/judges/internationalization.d.ts +2 -0
- package/dist/judges/internationalization.js +44 -0
- package/dist/judges/logging-privacy.d.ts +2 -0
- package/dist/judges/logging-privacy.js +46 -0
- package/dist/judges/logic-review.d.ts +2 -0
- package/dist/judges/logic-review.js +36 -0
- package/dist/judges/maintainability.d.ts +2 -0
- package/dist/judges/maintainability.js +46 -0
- package/dist/judges/model-fingerprint.d.ts +2 -0
- package/dist/judges/model-fingerprint.js +35 -0
- package/dist/judges/multi-turn-coherence.d.ts +2 -0
- package/dist/judges/multi-turn-coherence.js +39 -0
- package/dist/judges/observability.d.ts +2 -0
- package/dist/judges/observability.js +54 -0
- package/dist/judges/over-engineering.d.ts +2 -0
- package/dist/judges/over-engineering.js +50 -0
- package/dist/judges/performance.d.ts +2 -0
- package/dist/judges/performance.js +46 -0
- package/dist/judges/portability.d.ts +2 -0
- package/dist/judges/portability.js +46 -0
- package/dist/judges/rate-limiting.d.ts +2 -0
- package/dist/judges/rate-limiting.js +55 -0
- package/dist/judges/reliability.d.ts +2 -0
- package/dist/judges/reliability.js +57 -0
- package/dist/judges/scalability.d.ts +2 -0
- package/dist/judges/scalability.js +52 -0
- package/dist/judges/security.d.ts +2 -0
- package/dist/judges/security.js +64 -0
- package/dist/judges/software-practices.d.ts +2 -0
- package/dist/judges/software-practices.js +56 -0
- package/dist/judges/testing.d.ts +2 -0
- package/dist/judges/testing.js +54 -0
- package/dist/judges/ux.d.ts +2 -0
- package/dist/judges/ux.js +46 -0
- package/dist/language-patterns.d.ts +653 -0
- package/dist/language-patterns.js +851 -0
- package/dist/parallel.d.ts +52 -0
- package/dist/parallel.js +157 -0
- package/dist/patches/apply.d.ts +15 -0
- package/dist/patches/apply.js +37 -0
- package/dist/patches/index.d.ts +9 -0
- package/dist/patches/index.js +2544 -0
- package/dist/plugins.d.ts +59 -0
- package/dist/plugins.js +76 -0
- package/dist/presets.d.ts +35 -0
- package/dist/presets.js +406 -0
- package/dist/probabilistic/llm-response-validator.d.ts +26 -0
- package/dist/probabilistic/llm-response-validator.js +122 -0
- package/dist/reports/public-repo-report.d.ts +42 -0
- package/dist/reports/public-repo-report.js +579 -0
- package/dist/review-conversation.d.ts +87 -0
- package/dist/review-conversation.js +307 -0
- package/dist/sast-integration.d.ts +112 -0
- package/dist/sast-integration.js +215 -0
- package/dist/scoring.d.ts +36 -0
- package/dist/scoring.js +437 -0
- package/dist/security-ids.d.ts +23 -0
- package/dist/security-ids.js +239 -0
- package/dist/skill-loader.d.ts +33 -0
- package/dist/skill-loader.js +167 -0
- package/dist/tools/command-safety.d.ts +13 -0
- package/dist/tools/command-safety.js +95 -0
- package/dist/tools/deep-review.d.ts +38 -0
- package/dist/tools/deep-review.js +302 -0
- package/dist/tools/prompts.d.ts +27 -0
- package/dist/tools/prompts.js +122 -0
- package/dist/tools/register-evaluation.d.ts +6 -0
- package/dist/tools/register-evaluation.js +587 -0
- package/dist/tools/register-fix.d.ts +5 -0
- package/dist/tools/register-fix.js +175 -0
- package/dist/tools/register-resources.d.ts +6 -0
- package/dist/tools/register-resources.js +177 -0
- package/dist/tools/register-review.d.ts +6 -0
- package/dist/tools/register-review.js +564 -0
- package/dist/tools/register-scaffold.d.ts +2 -0
- package/dist/tools/register-scaffold.js +398 -0
- package/dist/tools/register-workflow.d.ts +6 -0
- package/dist/tools/register-workflow.js +1037 -0
- package/dist/tools/register-workspace.d.ts +2 -0
- package/dist/tools/register-workspace.js +214 -0
- package/dist/tools/register.d.ts +6 -0
- package/dist/tools/register.js +21 -0
- package/dist/tools/schemas.d.ts +25 -0
- package/dist/tools/schemas.js +41 -0
- package/dist/tools/validation.d.ts +13 -0
- package/dist/tools/validation.js +77 -0
- package/dist/types.d.ts +898 -0
- package/dist/types.js +1 -0
- package/package.json +54 -0
- package/skills/ai-code-review.skill.md +57 -0
- package/skills/release-gate.skill.md +27 -0
- package/skills/security-review.skill.md +32 -0
|
@@ -0,0 +1,1250 @@
|
|
|
1
|
+
// ─── Hallucinated API / Import Validation ─────────────────────────────────────
|
|
2
|
+
// Detects APIs, imports, methods, and patterns that are commonly hallucinated
|
|
3
|
+
// by AI code generators. These include non-existent standard library functions,
|
|
4
|
+
// fabricated npm/PyPI packages, phantom class methods, and incorrect API
|
|
5
|
+
// signatures that look plausible but don't exist.
|
|
6
|
+
//
|
|
7
|
+
// This evaluator uses a curated registry of known hallucination patterns
|
|
8
|
+
// observed across popular LLMs.
|
|
9
|
+
// ──────────────────────────────────────────────────────────────────────────────
|
|
10
|
+
import { getLangFamily, isCommentLine } from "./shared.js";
|
|
11
|
+
// ─── Scope-Aware Method Definition Check ────────────────────────────────────
|
|
12
|
+
// Prevents false positives on generic method patterns (e.g. `.push()` in
|
|
13
|
+
// Python) when the method is actually defined locally in the same file.
|
|
14
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
15
|
+
function isMethodDefinedLocally(code, methodName, language) {
|
|
16
|
+
const esc = methodName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
17
|
+
const patterns = [];
|
|
18
|
+
switch (language) {
|
|
19
|
+
case "python":
|
|
20
|
+
patterns.push(new RegExp(`\\bdef\\s+${esc}\\s*\\(`));
|
|
21
|
+
break;
|
|
22
|
+
case "go":
|
|
23
|
+
patterns.push(new RegExp(`\\bfunc\\s+\\([^)]+\\)\\s+${esc}\\s*\\(`));
|
|
24
|
+
break;
|
|
25
|
+
case "java":
|
|
26
|
+
case "kotlin":
|
|
27
|
+
patterns.push(new RegExp(`(?:public|private|protected|static|abstract|override|final)\\s+.*\\b${esc}\\s*\\(`));
|
|
28
|
+
break;
|
|
29
|
+
case "csharp":
|
|
30
|
+
patterns.push(new RegExp(`(?:public|private|protected|internal|static|override|virtual|abstract)\\s+.*\\b${esc}\\s*\\(`));
|
|
31
|
+
break;
|
|
32
|
+
case "ruby":
|
|
33
|
+
patterns.push(new RegExp(`\\bdef\\s+${esc}\\b`));
|
|
34
|
+
break;
|
|
35
|
+
case "javascript":
|
|
36
|
+
case "typescript":
|
|
37
|
+
patterns.push(new RegExp(`\\bfunction\\s+${esc}\\s*\\(`));
|
|
38
|
+
patterns.push(new RegExp(`\\b${esc}\\s*\\([^)]*\\)\\s*\\{`));
|
|
39
|
+
patterns.push(new RegExp(`\\.prototype\\.${esc}\\s*=`));
|
|
40
|
+
break;
|
|
41
|
+
case "rust":
|
|
42
|
+
patterns.push(new RegExp(`\\bfn\\s+${esc}\\s*[(<]`));
|
|
43
|
+
break;
|
|
44
|
+
case "swift":
|
|
45
|
+
patterns.push(new RegExp(`\\bfunc\\s+${esc}\\s*[(<]`));
|
|
46
|
+
break;
|
|
47
|
+
case "php":
|
|
48
|
+
patterns.push(new RegExp(`\\bfunction\\s+${esc}\\s*\\(`));
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
return patterns.some((p) => p.test(code));
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Curated registry of APIs, methods, and imports that LLMs frequently
|
|
55
|
+
* hallucinate. Each entry includes the incorrect pattern, an explanation,
|
|
56
|
+
* and the correct alternative.
|
|
57
|
+
*/
|
|
58
|
+
const HALLUCINATED_PATTERNS = [
|
|
59
|
+
// ── Node.js / JavaScript ──────────────────────────────────────────────
|
|
60
|
+
// fs.readFileAsync doesn't exist — it's fs.promises.readFile
|
|
61
|
+
{
|
|
62
|
+
pattern: /\bfs\.readFileAsync\s*\(/,
|
|
63
|
+
hallucinated: "fs.readFileAsync()",
|
|
64
|
+
reason: "Node.js fs module has no readFileAsync. This is a common LLM hallucination.",
|
|
65
|
+
fix: "Use fs.promises.readFile() or util.promisify(fs.readFile)().",
|
|
66
|
+
languages: ["javascript", "typescript"],
|
|
67
|
+
},
|
|
68
|
+
// fs.writeFileAsync
|
|
69
|
+
{
|
|
70
|
+
pattern: /\bfs\.writeFileAsync\s*\(/,
|
|
71
|
+
hallucinated: "fs.writeFileAsync()",
|
|
72
|
+
reason: "Node.js fs module has no writeFileAsync.",
|
|
73
|
+
fix: "Use fs.promises.writeFile() or util.promisify(fs.writeFile)().",
|
|
74
|
+
languages: ["javascript", "typescript"],
|
|
75
|
+
},
|
|
76
|
+
// Array.prototype.flat doesn't take a callback (confusing flat with flatMap)
|
|
77
|
+
{
|
|
78
|
+
pattern: /\.flat\s*\(\s*(?:function|\([^)]*\)\s*=>|[a-zA-Z_]\w*\s*=>)/,
|
|
79
|
+
hallucinated: ".flat(callback)",
|
|
80
|
+
reason: "Array.flat() does not accept a callback — it only takes an optional depth number. LLMs confuse it with Array.flatMap().",
|
|
81
|
+
fix: "Use .flatMap(callback) to both map and flatten, or .map(callback).flat() for two steps.",
|
|
82
|
+
languages: ["javascript", "typescript"],
|
|
83
|
+
},
|
|
84
|
+
// Object.hasOwn is correct, but LLMs sometimes generate Object.hasOwnKey
|
|
85
|
+
{
|
|
86
|
+
pattern: /\bObject\.hasOwnKey\s*\(/,
|
|
87
|
+
hallucinated: "Object.hasOwnKey()",
|
|
88
|
+
reason: "Object.hasOwnKey() does not exist. LLMs conflate hasOwn() and hasOwnProperty().",
|
|
89
|
+
fix: "Use Object.hasOwn(obj, key) (ES2022+) or Object.prototype.hasOwnProperty.call(obj, key).",
|
|
90
|
+
languages: ["javascript", "typescript"],
|
|
91
|
+
},
|
|
92
|
+
// Promise.allResolved — doesn't exist, LLMs conflate allSettled
|
|
93
|
+
{
|
|
94
|
+
pattern: /\bPromise\.allResolved\s*\(/,
|
|
95
|
+
hallucinated: "Promise.allResolved()",
|
|
96
|
+
reason: "Promise.allResolved() does not exist. LLMs confuse it with Promise.allSettled().",
|
|
97
|
+
fix: "Use Promise.allSettled() to wait for all promises regardless of outcome.",
|
|
98
|
+
languages: ["javascript", "typescript"],
|
|
99
|
+
},
|
|
100
|
+
// String.prototype.contains — doesn't exist, it's includes
|
|
101
|
+
{
|
|
102
|
+
pattern: /(?<!\w)['"`]\w*['"`]\.contains\s*\(|\.contains\s*\(\s*['"`]/,
|
|
103
|
+
hallucinated: "String.contains()",
|
|
104
|
+
reason: "JavaScript strings have no .contains() method. LLMs port this from Java/Kotlin.",
|
|
105
|
+
fix: "Use .includes() instead of .contains().",
|
|
106
|
+
languages: ["javascript", "typescript"],
|
|
107
|
+
},
|
|
108
|
+
// fetch().body.json() — incorrect, it's fetch().then(r => r.json())
|
|
109
|
+
{
|
|
110
|
+
pattern: /\bfetch\s*\([^)]*\)\s*\.body\.json\s*\(/,
|
|
111
|
+
hallucinated: "fetch().body.json()",
|
|
112
|
+
reason: "The fetch() Response has .json() on the Response, not on .body.",
|
|
113
|
+
fix: "Use const res = await fetch(url); const data = await res.json();",
|
|
114
|
+
languages: ["javascript", "typescript"],
|
|
115
|
+
},
|
|
116
|
+
// console.debug is real, but console.log.error is hallucinated
|
|
117
|
+
{
|
|
118
|
+
pattern: /\bconsole\.log\.error\s*\(/,
|
|
119
|
+
hallucinated: "console.log.error()",
|
|
120
|
+
reason: "console.log.error() does not exist. console.log and console.error are separate methods.",
|
|
121
|
+
fix: "Use console.error() for error output.",
|
|
122
|
+
languages: ["javascript", "typescript"],
|
|
123
|
+
},
|
|
124
|
+
// require().default — common hallucination for CJS
|
|
125
|
+
{
|
|
126
|
+
pattern: /\brequire\s*\([^)]+\)\.default\s*\(/,
|
|
127
|
+
hallucinated: "require('module').default()",
|
|
128
|
+
reason: "CommonJS modules typically don't have a .default export. This pattern is an LLM conflation of ESM default imports with CJS require().",
|
|
129
|
+
fix: "Use const mod = require('module'); mod() directly, or switch to ESM: import mod from 'module';",
|
|
130
|
+
languages: ["javascript", "typescript"],
|
|
131
|
+
},
|
|
132
|
+
// ── Python ────────────────────────────────────────────────────────────
|
|
133
|
+
// os.exec doesn't exist — it's os.system or subprocess
|
|
134
|
+
{
|
|
135
|
+
pattern: /\bos\.exec\s*\(/,
|
|
136
|
+
hallucinated: "os.exec()",
|
|
137
|
+
reason: "Python's os module has no exec() function. LLMs hallucinate this from other languages.",
|
|
138
|
+
fix: "Use subprocess.run() for command execution, or os.system() for simple cases.",
|
|
139
|
+
languages: ["python"],
|
|
140
|
+
},
|
|
141
|
+
// string.format() used as a global function
|
|
142
|
+
{
|
|
143
|
+
pattern: /\bstring\.format\s*\(/,
|
|
144
|
+
hallucinated: "string.format()",
|
|
145
|
+
reason: "Python has no global string.format() function. LLMs confuse this with str.format() method or the string module.",
|
|
146
|
+
fix: 'Use "template {}".format(value) or f"template {value}" (f-strings).',
|
|
147
|
+
languages: ["python"],
|
|
148
|
+
},
|
|
149
|
+
// json.parse — doesn't exist, it's json.loads
|
|
150
|
+
{
|
|
151
|
+
pattern: /\bjson\.parse\s*\(/,
|
|
152
|
+
hallucinated: "json.parse()",
|
|
153
|
+
reason: "Python's json module has json.loads() and json.load(), not json.parse(). This is a JavaScript API hallucinated into Python.",
|
|
154
|
+
fix: "Use json.loads(string) for strings or json.load(file) for file objects.",
|
|
155
|
+
languages: ["python"],
|
|
156
|
+
},
|
|
157
|
+
// json.stringify — doesn't exist, it's json.dumps
|
|
158
|
+
{
|
|
159
|
+
pattern: /\bjson\.stringify\s*\(/,
|
|
160
|
+
hallucinated: "json.stringify()",
|
|
161
|
+
reason: "Python's json module has json.dumps() and json.dump(), not json.stringify(). This is a JavaScript API hallucinated into Python.",
|
|
162
|
+
fix: "Use json.dumps(obj) for strings or json.dump(obj, file) for file output.",
|
|
163
|
+
languages: ["python"],
|
|
164
|
+
},
|
|
165
|
+
// list.push — doesn't exist, it's list.append
|
|
166
|
+
{
|
|
167
|
+
pattern: /\b\w+\.push\s*\(/,
|
|
168
|
+
hallucinated: "list.push()",
|
|
169
|
+
reason: "Python lists have no .push() method. LLMs port this from JavaScript's Array.push().",
|
|
170
|
+
fix: "Use .append(item) for single items or .extend(items) for iterables.",
|
|
171
|
+
languages: ["python"],
|
|
172
|
+
scopeCheckMethod: "push",
|
|
173
|
+
},
|
|
174
|
+
// dict.containsKey — doesn't exist, it's `key in dict`
|
|
175
|
+
{
|
|
176
|
+
pattern: /\b\w+\.containsKey\s*\(/,
|
|
177
|
+
hallucinated: "dict.containsKey()",
|
|
178
|
+
reason: "Python dicts have no .containsKey() method. LLMs hallucinate this from Java Maps.",
|
|
179
|
+
fix: "Use the `in` operator: if key in my_dict:",
|
|
180
|
+
languages: ["python"],
|
|
181
|
+
scopeCheckMethod: "containsKey",
|
|
182
|
+
},
|
|
183
|
+
// string.isEmpty() — doesn't exist
|
|
184
|
+
{
|
|
185
|
+
pattern: /\b\w+\.isEmpty\s*\(\s*\)/,
|
|
186
|
+
hallucinated: "str.isEmpty()",
|
|
187
|
+
reason: "Python strings have no .isEmpty() method. LLMs hallucinate this from Java/Kotlin.",
|
|
188
|
+
fix: "Use `if not my_string:` or `if len(my_string) == 0:`.",
|
|
189
|
+
languages: ["python"],
|
|
190
|
+
scopeCheckMethod: "isEmpty",
|
|
191
|
+
},
|
|
192
|
+
// asyncio.sleep used without await
|
|
193
|
+
{
|
|
194
|
+
pattern: /(?<!\bawait\s)asyncio\.sleep\s*\(/,
|
|
195
|
+
hallucinated: "asyncio.sleep() without await",
|
|
196
|
+
reason: "asyncio.sleep() is a coroutine and must be awaited. Without await, it creates but never executes the coroutine.",
|
|
197
|
+
fix: "Use await asyncio.sleep(seconds).",
|
|
198
|
+
languages: ["python"],
|
|
199
|
+
},
|
|
200
|
+
// requests.get().data — doesn't exist, it's .text or .json()
|
|
201
|
+
{
|
|
202
|
+
pattern: /\brequests\.(?:get|post|put|delete|patch)\s*\([^)]*\)\.data\b/,
|
|
203
|
+
hallucinated: "requests.get().data",
|
|
204
|
+
reason: "The requests library Response has .text, .json(), .content — not .data. LLMs confuse this with axios.",
|
|
205
|
+
fix: "Use response.json() for parsed JSON or response.text for raw text.",
|
|
206
|
+
languages: ["python"],
|
|
207
|
+
},
|
|
208
|
+
// ── Go ────────────────────────────────────────────────────────────────
|
|
209
|
+
// strings.Contains with wrong case
|
|
210
|
+
{
|
|
211
|
+
pattern: /\bstrings\.contains\s*\(/,
|
|
212
|
+
hallucinated: "strings.contains()",
|
|
213
|
+
reason: "Go's strings package uses strings.Contains() (capital C). LLMs often use lowercase.",
|
|
214
|
+
fix: "Use strings.Contains(s, substr) with capital C.",
|
|
215
|
+
languages: ["go"],
|
|
216
|
+
},
|
|
217
|
+
// fmt.Println returning an error check that's never needed
|
|
218
|
+
{
|
|
219
|
+
pattern: /\berr\s*:?=\s*fmt\.Println\s*\(/,
|
|
220
|
+
hallucinated: "err := fmt.Println()",
|
|
221
|
+
reason: "While fmt.Println technically returns (n int, err error), checking its error is virtually never done and adds noise. LLMs generate this overly cautious pattern.",
|
|
222
|
+
fix: "Just call fmt.Println() without error checking. Reserve error handling for I/O and network operations.",
|
|
223
|
+
languages: ["go"],
|
|
224
|
+
},
|
|
225
|
+
// slice.append — wrong, it's append(slice, ...)
|
|
226
|
+
{
|
|
227
|
+
pattern: /\b\w+\.append\s*\(/,
|
|
228
|
+
hallucinated: "slice.append()",
|
|
229
|
+
reason: "Go uses the built-in append() function, not a method on slices. LLMs hallucinate OOP-style method calls.",
|
|
230
|
+
fix: "Use slice = append(slice, element) as a built-in function.",
|
|
231
|
+
languages: ["go"],
|
|
232
|
+
scopeCheckMethod: "append",
|
|
233
|
+
},
|
|
234
|
+
// http.HandleFunc on a ServeMux with wrong signature
|
|
235
|
+
{
|
|
236
|
+
pattern: /\bmux\.HandleFunc\s*\([^,]+,\s*func\s*\(\s*\w+\s+http\.Request\b/,
|
|
237
|
+
hallucinated: "func(w http.Request)",
|
|
238
|
+
reason: "http.Handler functions receive *http.Request (pointer), not http.Request (value). LLMs omit the pointer.",
|
|
239
|
+
fix: "Use func(w http.ResponseWriter, r *http.Request) with *http.Request.",
|
|
240
|
+
languages: ["go"],
|
|
241
|
+
},
|
|
242
|
+
// ── Java ──────────────────────────────────────────────────────────────
|
|
243
|
+
// String.isEmpty() is real, but LLMs sometimes generate String.blank()
|
|
244
|
+
{
|
|
245
|
+
pattern: /\.blank\s*\(\s*\)/,
|
|
246
|
+
hallucinated: ".blank()",
|
|
247
|
+
reason: "Java has .isBlank() (Java 11+), not .blank(). LLMs truncate the method name.",
|
|
248
|
+
fix: "Use .isBlank() for whitespace-only check or .isEmpty() for zero-length check.",
|
|
249
|
+
languages: ["java"],
|
|
250
|
+
scopeCheckMethod: "blank",
|
|
251
|
+
},
|
|
252
|
+
// Arrays.asList().add — this returns a fixed-size list, add throws
|
|
253
|
+
{
|
|
254
|
+
pattern: /\bArrays\.asList\s*\([^)]*\)\s*\.add\s*\(/,
|
|
255
|
+
hallucinated: "Arrays.asList().add()",
|
|
256
|
+
reason: "Arrays.asList() returns a fixed-size list backed by the array. Calling .add() throws UnsupportedOperationException at runtime.",
|
|
257
|
+
fix: "Use new ArrayList<>(Arrays.asList(...)) to get a mutable list, or use List.of() if immutability is intended.",
|
|
258
|
+
languages: ["java"],
|
|
259
|
+
},
|
|
260
|
+
// System.println — doesn't exist
|
|
261
|
+
{
|
|
262
|
+
pattern: /\bSystem\.println\s*\(/,
|
|
263
|
+
hallucinated: "System.println()",
|
|
264
|
+
reason: "Java has System.out.println(), not System.println(). LLMs sometimes skip the .out part.",
|
|
265
|
+
fix: "Use System.out.println() for console output.",
|
|
266
|
+
languages: ["java"],
|
|
267
|
+
},
|
|
268
|
+
// ── Rust ──────────────────────────────────────────────────────────────
|
|
269
|
+
// .len() on an iterator — iterators don't have .len()
|
|
270
|
+
{
|
|
271
|
+
pattern: /\.iter\s*\(\s*\)\s*\.len\s*\(\s*\)/,
|
|
272
|
+
hallucinated: ".iter().len()",
|
|
273
|
+
reason: "Rust iterators don't have .len(). Only the original collection has .len(). LLMs generate this when they mean .count() or the collection's .len().",
|
|
274
|
+
fix: "Use .count() on the iterator (consumes it), or call .len() directly on the collection.",
|
|
275
|
+
languages: ["rust"],
|
|
276
|
+
},
|
|
277
|
+
// String.new() — doesn't exist, it's String::new()
|
|
278
|
+
{
|
|
279
|
+
pattern: /\bString\.new\s*\(\s*\)/,
|
|
280
|
+
hallucinated: "String.new()",
|
|
281
|
+
reason: "Rust uses :: for associated functions, not dots. String::new() is correct.",
|
|
282
|
+
fix: 'Use String::new() or String::from("...").',
|
|
283
|
+
languages: ["rust"],
|
|
284
|
+
},
|
|
285
|
+
// ── C# ────────────────────────────────────────────────────────────────
|
|
286
|
+
// Console.PrintLine — doesn't exist, it's Console.WriteLine
|
|
287
|
+
{
|
|
288
|
+
pattern: /\bConsole\.PrintLine\s*\(/,
|
|
289
|
+
hallucinated: "Console.PrintLine()",
|
|
290
|
+
reason: "C# has Console.WriteLine(), not Console.PrintLine(). LLMs conflate print/write terminology.",
|
|
291
|
+
fix: "Use Console.WriteLine() for output with newline.",
|
|
292
|
+
languages: ["csharp"],
|
|
293
|
+
},
|
|
294
|
+
// string.IsEmpty — doesn't exist, it's String.IsNullOrEmpty
|
|
295
|
+
{
|
|
296
|
+
pattern: /\.IsEmpty\s*\(\s*\)/,
|
|
297
|
+
hallucinated: ".IsEmpty()",
|
|
298
|
+
reason: "C# strings have no .IsEmpty() instance method. LLMs hallucinate it from Java or Kotlin.",
|
|
299
|
+
fix: "Use string.IsNullOrEmpty(s) or string.IsNullOrWhiteSpace(s) as static methods.",
|
|
300
|
+
languages: ["csharp"],
|
|
301
|
+
scopeCheckMethod: "IsEmpty",
|
|
302
|
+
},
|
|
303
|
+
// ── PHP ───────────────────────────────────────────────────────────────
|
|
304
|
+
// array.push — PHP uses array_push() not OOP .push()
|
|
305
|
+
{
|
|
306
|
+
pattern: /\$\w+->push\s*\(/,
|
|
307
|
+
hallucinated: "$array->push()",
|
|
308
|
+
reason: "PHP arrays don't have a ->push() method. LLMs hallucinate OOP-style array methods from JavaScript.",
|
|
309
|
+
fix: "Use array_push($array, $value) or $array[] = $value.",
|
|
310
|
+
languages: ["php"],
|
|
311
|
+
scopeCheckMethod: "push",
|
|
312
|
+
},
|
|
313
|
+
// string.length — PHP uses strlen()
|
|
314
|
+
{
|
|
315
|
+
pattern: /\$\w+->length\b/,
|
|
316
|
+
hallucinated: "$string->length",
|
|
317
|
+
reason: "PHP strings have no ->length property. LLMs hallucinate from JavaScript.",
|
|
318
|
+
fix: "Use strlen($string) for byte length or mb_strlen($string) for character length.",
|
|
319
|
+
languages: ["php"],
|
|
320
|
+
},
|
|
321
|
+
// ── Ruby ──────────────────────────────────────────────────────────────
|
|
322
|
+
// Array.new.add — Ruby uses push or <<, not add
|
|
323
|
+
{
|
|
324
|
+
pattern: /\.\badd\s*\([^)]*\)\s*$/m,
|
|
325
|
+
hallucinated: "array.add()",
|
|
326
|
+
reason: "Ruby arrays have no .add() method. LLMs hallucinate this from Java/C#.",
|
|
327
|
+
fix: "Use .push(item) or the << operator: array << item.",
|
|
328
|
+
languages: ["ruby"],
|
|
329
|
+
scopeCheckMethod: "add",
|
|
330
|
+
},
|
|
331
|
+
// ── Kotlin ────────────────────────────────────────────────────────────
|
|
332
|
+
// println formatting: println("x = %d", x) — Kotlin println doesn't support formats
|
|
333
|
+
{
|
|
334
|
+
pattern: /\bprintln\s*\(\s*"[^"]*%[dsfx]/,
|
|
335
|
+
hallucinated: 'println("format %d", val)',
|
|
336
|
+
reason: "Kotlin's println() does not support printf-style formatting. LLMs confuse it with C/Java printf.",
|
|
337
|
+
fix: 'Use string templates: println("x = $x") or println("x = ${expression}").',
|
|
338
|
+
languages: ["kotlin"],
|
|
339
|
+
},
|
|
340
|
+
// ── Swift ─────────────────────────────────────────────────────────────
|
|
341
|
+
// Array.count() as a method — it's a property
|
|
342
|
+
{
|
|
343
|
+
pattern: /\.count\s*\(\s*\)/,
|
|
344
|
+
hallucinated: ".count()",
|
|
345
|
+
reason: "Swift's .count is a property, not a method. Calling .count() is a compile error.",
|
|
346
|
+
fix: "Use .count without parentheses: array.count.",
|
|
347
|
+
languages: ["swift"],
|
|
348
|
+
scopeCheckMethod: "count",
|
|
349
|
+
},
|
|
350
|
+
// ── Cross-language ────────────────────────────────────────────────────
|
|
351
|
+
// ── Python — FastAPI / SQLAlchemy / pandas ────────────────────────────
|
|
352
|
+
// FastAPI doesn't have app.route() — it's @app.get/@app.post
|
|
353
|
+
{
|
|
354
|
+
pattern: /\bapp\.route\s*\(\s*['"][^'"]+['"]\s*,\s*methods\s*=/,
|
|
355
|
+
hallucinated: "app.route(path, methods=...)",
|
|
356
|
+
reason: "FastAPI does not use Flask-style app.route() with methods=. LLMs conflate Flask and FastAPI routing.",
|
|
357
|
+
fix: 'Use @app.get("/path"), @app.post("/path"), etc. for FastAPI route decorators.',
|
|
358
|
+
languages: ["python"],
|
|
359
|
+
requiresImport: "fastapi",
|
|
360
|
+
},
|
|
361
|
+
// SQLAlchemy — session.query().all() is SA 1.x; LLMs mix it with 2.0 select()
|
|
362
|
+
{
|
|
363
|
+
pattern: /\bsession\.execute\s*\(\s*['"][^'"]*SELECT\b/i,
|
|
364
|
+
hallucinated: "session.execute(raw SQL string)",
|
|
365
|
+
reason: "SQLAlchemy 2.0 session.execute() expects a Select object, not a raw SQL string. LLMs hallucinate mixing raw SQL with the ORM API.",
|
|
366
|
+
fix: "Use session.execute(select(Model).where(...)) with SQLAlchemy 2.0, or text() for raw SQL: session.execute(text('SELECT ...'))",
|
|
367
|
+
languages: ["python"],
|
|
368
|
+
},
|
|
369
|
+
// pandas — df.to_array() doesn't exist
|
|
370
|
+
{
|
|
371
|
+
pattern: /\.to_array\s*\(\s*\)/,
|
|
372
|
+
hallucinated: "df.to_array()",
|
|
373
|
+
reason: "pandas DataFrames have no .to_array() method. LLMs hallucinate this from JavaScript patterns.",
|
|
374
|
+
fix: "Use .to_numpy() for ndarray or .values for the underlying array.",
|
|
375
|
+
languages: ["python"],
|
|
376
|
+
},
|
|
377
|
+
// pandas — df.filterBy doesn't exist
|
|
378
|
+
{
|
|
379
|
+
pattern: /\.filterBy\s*\(/,
|
|
380
|
+
hallucinated: "df.filterBy()",
|
|
381
|
+
reason: "pandas has no .filterBy() method. LLMs fabricate this from ORM/ActiveRecord patterns.",
|
|
382
|
+
fix: "Use boolean indexing: df[df['col'] > value] or df.query('col > value').",
|
|
383
|
+
languages: ["python"],
|
|
384
|
+
scopeCheckMethod: "filterBy",
|
|
385
|
+
},
|
|
386
|
+
// ── Java — Spring Boot ────────────────────────────────────────────────
|
|
387
|
+
// @Autowired on a local variable (invalid — only works on fields/constructors/setters)
|
|
388
|
+
{
|
|
389
|
+
pattern: /^\s*@Autowired\s*\n\s*(?:var|final)\s+\w+/m,
|
|
390
|
+
hallucinated: "@Autowired on local variable",
|
|
391
|
+
reason: "Spring's @Autowired cannot be applied to local variables. LLMs generate this when mixing constructor injection with field injection.",
|
|
392
|
+
fix: "Use constructor injection: add the dependency as a constructor parameter, or apply @Autowired to a field or setter.",
|
|
393
|
+
languages: ["java"],
|
|
394
|
+
},
|
|
395
|
+
// ResponseEntity.ok().body() — chaining is wrong, ok() already sets status
|
|
396
|
+
{
|
|
397
|
+
pattern: /\bResponseEntity\.ok\s*\(\s*\)\s*\.body\s*\(/,
|
|
398
|
+
hallucinated: "ResponseEntity.ok().body()",
|
|
399
|
+
reason: "ResponseEntity.ok() returns a BodyBuilder; use .body(data) directly. But ResponseEntity.ok(data) is a shorthand that returns ResponseEntity<T> — LLMs confuse the two.",
|
|
400
|
+
fix: "Use ResponseEntity.ok(body) as shorthand, or ResponseEntity.ok().body(data) — both work, but .ok().body() is less common.",
|
|
401
|
+
languages: ["java"],
|
|
402
|
+
},
|
|
403
|
+
// ── C# — ASP.NET / Entity Framework ──────────────────────────────────
|
|
404
|
+
// DbContext.Query<T>() — doesn't exist, it's DbSet<T> or Set<T>()
|
|
405
|
+
{
|
|
406
|
+
pattern: /\bDbContext\.Query\s*<[^>]+>\s*\(\s*\)/,
|
|
407
|
+
hallucinated: "DbContext.Query<T>()",
|
|
408
|
+
reason: "EF Core removed DbContext.Query<T>(). LLMs hallucinate this from older EF versions.",
|
|
409
|
+
fix: "Use DbContext.Set<T>() or define a DbSet<T> property on your context.",
|
|
410
|
+
languages: ["csharp"],
|
|
411
|
+
},
|
|
412
|
+
// HttpContext.Response.Write() — doesn't exist in ASP.NET Core the same way
|
|
413
|
+
{
|
|
414
|
+
pattern: /\bHttpContext\.Response\.Write\s*\(/,
|
|
415
|
+
hallucinated: "HttpContext.Response.Write()",
|
|
416
|
+
reason: "ASP.NET Core's HttpResponse has no synchronous Write() method. LLMs hallucinate this from classic ASP.NET.",
|
|
417
|
+
fix: "Use await HttpContext.Response.WriteAsync(content) for ASP.NET Core.",
|
|
418
|
+
languages: ["csharp"],
|
|
419
|
+
},
|
|
420
|
+
// ── Rust — tokio / async ──────────────────────────────────────────────
|
|
421
|
+
// tokio::spawn without async block
|
|
422
|
+
{
|
|
423
|
+
pattern: /\btokio::spawn\s*\(\s*[a-z_]\w*\s*\(\s*\)\s*\)/,
|
|
424
|
+
hallucinated: "tokio::spawn(fn())",
|
|
425
|
+
reason: "tokio::spawn requires a Future, not a function call result (unless the function is async). LLMs omit async/await when spawning tasks.",
|
|
426
|
+
fix: "Use tokio::spawn(async { my_function().await }) or pass an async fn directly.",
|
|
427
|
+
languages: ["rust"],
|
|
428
|
+
},
|
|
429
|
+
// .unwrap_or_default() vs .unwrap_or(default) — LLMs generate .unwrap_default()
|
|
430
|
+
{
|
|
431
|
+
pattern: /\.unwrap_default\s*\(\s*\)/,
|
|
432
|
+
hallucinated: ".unwrap_default()",
|
|
433
|
+
reason: "Rust has .unwrap_or_default(), not .unwrap_default(). LLMs truncate the method name.",
|
|
434
|
+
fix: "Use .unwrap_or_default() for Default impl or .unwrap_or(value) for a specific fallback.",
|
|
435
|
+
languages: ["rust"],
|
|
436
|
+
},
|
|
437
|
+
// ── JavaScript/TypeScript — Deno / Bun specific ───────────────────────
|
|
438
|
+
// Deno.readFile — should be Deno.readTextFile or Deno.readFile (returns Uint8Array)
|
|
439
|
+
{
|
|
440
|
+
pattern: /\bDeno\.readFile\s*\(\s*['"][^'"]+['"]\s*,\s*['"]utf-?8['"]\s*\)/,
|
|
441
|
+
hallucinated: 'Deno.readFile(path, "utf-8")',
|
|
442
|
+
reason: "Deno.readFile() does not accept an encoding parameter — it returns Uint8Array. LLMs confuse this with Node.js fs.readFile().",
|
|
443
|
+
fix: "Use Deno.readTextFile(path) for string output, or new TextDecoder().decode(await Deno.readFile(path)).",
|
|
444
|
+
languages: ["javascript", "typescript"],
|
|
445
|
+
},
|
|
446
|
+
// Bun.serve().listen() — Bun.serve already starts listening
|
|
447
|
+
{
|
|
448
|
+
pattern: /\bBun\.serve\s*\([^)]*\)\s*\.listen\s*\(/,
|
|
449
|
+
hallucinated: "Bun.serve().listen()",
|
|
450
|
+
reason: "Bun.serve() starts the server immediately — there is no .listen() method. LLMs hallucinate this from Express/Node patterns.",
|
|
451
|
+
fix: "Remove .listen(). Bun.serve({ port, fetch }) starts listening on creation.",
|
|
452
|
+
languages: ["javascript", "typescript"],
|
|
453
|
+
},
|
|
454
|
+
// ── Cross-language ────────────────────────────────────────────────────
|
|
455
|
+
// Fabricated npm packages — common hallucinated package names
|
|
456
|
+
{
|
|
457
|
+
pattern: /\bfrom\s+['"](?:easy-jwt|simple-crypto|auto-sanitize|quick-hash|fast-validate|node-security-utils|express-secure|react-safe-render|mongo-safe|api-guard|auth-helper|crypto-utils|secure-config|safe-eval|node-encrypt|express-auth|express-jwt-auth|express-session-store|react-auth-provider|react-secure|react-data-grid-pro|node-auth|node-sanitize|node-validator|db-connect|sql-builder|sql-safe|prisma-utils|mongoose-helper|redis-helper|cache-manager-redis|graphql-auth|graphql-validate|ws-auth|socket-secure|file-encrypt|pdf-extract|csv-parse-sync|image-resize|video-transcode|email-send|sms-send|payment-process|stripe-helper|aws-helper|azure-helper|gcp-helper|cloud-deploy)['"]/,
|
|
458
|
+
hallucinated: "Non-existent npm package import",
|
|
459
|
+
reason: "This import references a package name commonly hallucinated by LLMs. The package either doesn't exist on npm or is a name-squatted stub.",
|
|
460
|
+
fix: "Verify the package exists on npmjs.com. Use established alternatives: jose/jsonwebtoken for JWT, crypto for hashing, express-validator for validation, helmet for security headers.",
|
|
461
|
+
languages: ["javascript", "typescript"],
|
|
462
|
+
},
|
|
463
|
+
// Fabricated Python packages
|
|
464
|
+
{
|
|
465
|
+
pattern: /^\s*(?:from|import)\s+(?:easy_jwt|simple_crypto|auto_sanitize|quick_hash|fast_validate|python_security|django_secure|flask_safe|mongo_safe|api_guard|auth_helper|crypto_utils|secure_config|safe_eval|py_encrypt|django_auth_utils|flask_auth|fastapi_auth|fastapi_jwt|py_sanitize|py_validator|db_connect|sql_builder|sql_safe|redis_helper|cache_helper|graphql_auth|file_encrypt|pdf_extract|image_resize|email_send|payment_process|cloud_deploy|aws_helper|azure_helper|gcp_helper)\b/,
|
|
466
|
+
hallucinated: "Non-existent Python package import",
|
|
467
|
+
reason: "This import references a package name commonly hallucinated by LLMs. The package likely doesn't exist on PyPI.",
|
|
468
|
+
fix: "Verify the package exists on pypi.org. Use established alternatives: PyJWT for JWT, cryptography for crypto, flask-wtf for validation.",
|
|
469
|
+
languages: ["python"],
|
|
470
|
+
},
|
|
471
|
+
// Fabricated Go packages — common hallucinated module paths
|
|
472
|
+
{
|
|
473
|
+
pattern: /^\s*"(?:github\.com\/go-(?:jwt|auth|sanitize|validate|encrypt|hash|session|middleware|cache|queue|email|payments))\b/,
|
|
474
|
+
hallucinated: "Non-existent Go module import",
|
|
475
|
+
reason: "This import references a Go module path commonly hallucinated by LLMs. The module likely doesn't exist.",
|
|
476
|
+
fix: "Verify on pkg.go.dev. Use established alternatives: github.com/golang-jwt/jwt for JWT, golang.org/x/crypto for crypto.",
|
|
477
|
+
languages: ["go"],
|
|
478
|
+
},
|
|
479
|
+
// Fabricated Java/Kotlin packages
|
|
480
|
+
{
|
|
481
|
+
pattern: /^\s*import\s+(?:com\.(?:auth|security|validate|sanitize|encrypt)\.(?:utils|helper|manager|service)|org\.(?:auth|security|validate)\.(?:utils|helper|core))\b/,
|
|
482
|
+
hallucinated: "Non-existent Java/Kotlin package import",
|
|
483
|
+
reason: "This import references a Java/Kotlin package commonly hallucinated by LLMs.",
|
|
484
|
+
fix: "Verify the package exists on Maven Central/Gradle Plugin Portal. Use established alternatives from Spring Security, Apache Commons, or Bouncy Castle.",
|
|
485
|
+
languages: ["java", "kotlin"],
|
|
486
|
+
},
|
|
487
|
+
// ── Additional Node.js / JavaScript / TypeScript ──────────────────────
|
|
488
|
+
// crypto.hash() doesn't exist — it's crypto.createHash()
|
|
489
|
+
{
|
|
490
|
+
pattern: /\bcrypto\.hash\s*\(/,
|
|
491
|
+
hallucinated: "crypto.hash()",
|
|
492
|
+
reason: "Node.js crypto module has no hash() method. LLMs hallucinate a simplified API.",
|
|
493
|
+
fix: "Use crypto.createHash('sha256').update(data).digest('hex').",
|
|
494
|
+
languages: ["javascript", "typescript"],
|
|
495
|
+
},
|
|
496
|
+
// Promise.map/filter/timeout/retry/sequential — don't exist on native Promise
|
|
497
|
+
{
|
|
498
|
+
pattern: /\bPromise\.(?:map|filter|timeout|retry|sequential)\s*\(/,
|
|
499
|
+
hallucinated: "Promise.map/filter/timeout/retry/sequential()",
|
|
500
|
+
reason: "Native Promise has no map(), filter(), timeout(), retry(), or sequential() methods. LLMs hallucinate these from Bluebird or other promise libraries.",
|
|
501
|
+
fix: "Use Promise.all() with Array.map() for parallel, or implement custom retry/timeout logic.",
|
|
502
|
+
languages: ["javascript", "typescript"],
|
|
503
|
+
},
|
|
504
|
+
// Fake Node.js built-in submodules (node:url/validator, node:path/sanitize, etc.)
|
|
505
|
+
{
|
|
506
|
+
pattern: /\bfrom\s+['"]node:(?:url|path|net|tls|timers|util|worker_threads)\/\w+['"]/,
|
|
507
|
+
hallucinated: "Non-existent Node.js built-in submodule",
|
|
508
|
+
reason: "Node.js built-in modules do not have these submodule paths. LLMs fabricate submodule paths by combining real module names with plausible feature names.",
|
|
509
|
+
fix: "Import directly from the parent module (e.g., import { URL } from 'node:url').",
|
|
510
|
+
languages: ["javascript", "typescript"],
|
|
511
|
+
},
|
|
512
|
+
// os.getCpuUsagePercent / os.getMemoryUsagePercent / os.getDiskUsagePercent
|
|
513
|
+
{
|
|
514
|
+
pattern: /\bos\.(?:getCpuUsagePercent|getMemoryUsagePercent|getDiskUsagePercent)\s*\(/,
|
|
515
|
+
hallucinated: "os.getCpuUsagePercent/getMemoryUsagePercent/getDiskUsagePercent()",
|
|
516
|
+
reason: "Node.js os module has no percentage-based resource usage methods. LLMs fabricate convenient but non-existent APIs.",
|
|
517
|
+
fix: "Use os.cpus() for CPU info, os.freemem()/os.totalmem() for memory.",
|
|
518
|
+
languages: ["javascript", "typescript"],
|
|
519
|
+
},
|
|
520
|
+
// process.onUncaughtRejection / process.setMaxMemory / process.enableGracefulShutdown
|
|
521
|
+
{
|
|
522
|
+
pattern: /\bprocess\.(?:onUncaughtRejection|setMaxMemory|enableGracefulShutdown)\s*\(/,
|
|
523
|
+
hallucinated: "process.onUncaughtRejection/setMaxMemory/enableGracefulShutdown()",
|
|
524
|
+
reason: "Node.js process object does not have these methods. LLMs fabricate convenience APIs.",
|
|
525
|
+
fix: "Use process.on('unhandledRejection', handler). Use --max-old-space-size for memory. Implement graceful shutdown with process.on('SIGTERM').",
|
|
526
|
+
languages: ["javascript", "typescript"],
|
|
527
|
+
},
|
|
528
|
+
// Fake TypeScript utility types presented as built-in
|
|
529
|
+
{
|
|
530
|
+
pattern: /\b(?:StrictOmit|Validated|Frozen)\s*</,
|
|
531
|
+
hallucinated: "Non-existent TypeScript built-in utility type",
|
|
532
|
+
reason: "TypeScript does not have built-in StrictOmit, Validated, or Frozen utility types. LLMs hallucinate these as part of the standard type system.",
|
|
533
|
+
fix: "Use built-in types: Omit<T, K> for StrictOmit, Readonly<T> for Frozen. Define custom types for other needs.",
|
|
534
|
+
languages: ["typescript"],
|
|
535
|
+
},
|
|
536
|
+
// ── Additional Python ─────────────────────────────────────────────────
|
|
537
|
+
// requests.async_get/post/etc. — requests has no async methods
|
|
538
|
+
{
|
|
539
|
+
pattern: /\brequests\.async_(?:get|post|put|delete|patch)\s*\(/,
|
|
540
|
+
hallucinated: "requests.async_get()",
|
|
541
|
+
reason: "The requests library has no async methods. LLMs hallucinate async variants of the synchronous API.",
|
|
542
|
+
fix: "Use aiohttp or httpx for async HTTP: async with aiohttp.ClientSession() as s: await s.get(url).",
|
|
543
|
+
languages: ["python"],
|
|
544
|
+
},
|
|
545
|
+
// os.makedirs with permissions= parameter (should be mode=)
|
|
546
|
+
{
|
|
547
|
+
pattern: /\bos\.makedirs\s*\([^)]*\bpermissions\s*=/,
|
|
548
|
+
hallucinated: "os.makedirs(permissions=...)",
|
|
549
|
+
reason: "os.makedirs() uses 'mode=' for permissions, not 'permissions='. LLMs hallucinate a more readable parameter name.",
|
|
550
|
+
fix: "Use os.makedirs(path, mode=0o755, exist_ok=True).",
|
|
551
|
+
languages: ["python"],
|
|
552
|
+
},
|
|
553
|
+
// collections.OrderedDefaultDict doesn't exist
|
|
554
|
+
{
|
|
555
|
+
pattern: /\bfrom\s+collections\s+import\b.*\bOrderedDefaultDict\b/,
|
|
556
|
+
hallucinated: "collections.OrderedDefaultDict",
|
|
557
|
+
reason: "Python's collections module has no OrderedDefaultDict. LLMs fabricate this by combining OrderedDict and defaultdict.",
|
|
558
|
+
fix: "Use collections.OrderedDict or collections.defaultdict separately.",
|
|
559
|
+
languages: ["python"],
|
|
560
|
+
},
|
|
561
|
+
// typing.StrictDict doesn't exist
|
|
562
|
+
{
|
|
563
|
+
pattern: /\bfrom\s+typing\s+import\b.*\bStrictDict\b/,
|
|
564
|
+
hallucinated: "typing.StrictDict",
|
|
565
|
+
reason: "Python's typing module has no StrictDict. LLMs fabricate convenience types.",
|
|
566
|
+
fix: "Use typing.TypedDict for typed dicts or typing.Dict for generic dict hints.",
|
|
567
|
+
languages: ["python"],
|
|
568
|
+
},
|
|
569
|
+
// pathlib.SecurePath doesn't exist
|
|
570
|
+
{
|
|
571
|
+
pattern: /\bfrom\s+pathlib\s+import\b.*\bSecurePath\b/,
|
|
572
|
+
hallucinated: "pathlib.SecurePath",
|
|
573
|
+
reason: "Python's pathlib has no SecurePath class. LLMs fabricate security-focused variants.",
|
|
574
|
+
fix: "Use pathlib.Path and validate/sanitize paths manually.",
|
|
575
|
+
languages: ["python"],
|
|
576
|
+
},
|
|
577
|
+
// asyncio.ParallelMap doesn't exist
|
|
578
|
+
{
|
|
579
|
+
pattern: /\bfrom\s+asyncio\s+import\b.*\bParallelMap\b/,
|
|
580
|
+
hallucinated: "asyncio.ParallelMap",
|
|
581
|
+
reason: "Python's asyncio has no ParallelMap. LLMs fabricate parallel execution utilities.",
|
|
582
|
+
fix: "Use asyncio.gather(*[coro(x) for x in items]).",
|
|
583
|
+
languages: ["python"],
|
|
584
|
+
},
|
|
585
|
+
// json.schema doesn't exist in Python stdlib
|
|
586
|
+
{
|
|
587
|
+
pattern: /\bjson\.schema\b/,
|
|
588
|
+
hallucinated: "json.schema",
|
|
589
|
+
reason: "Python's json module has no schema submodule. LLMs conflate json with the jsonschema package.",
|
|
590
|
+
fix: "Install jsonschema: from jsonschema import validate.",
|
|
591
|
+
languages: ["python"],
|
|
592
|
+
},
|
|
593
|
+
// functools.memoize doesn't exist (it's lru_cache or cache)
|
|
594
|
+
{
|
|
595
|
+
pattern: /\bfrom\s+functools\s+import\b.*\bmemoize\b/,
|
|
596
|
+
hallucinated: "functools.memoize",
|
|
597
|
+
reason: "Python's functools has no memoize. LLMs hallucinate this from other languages.",
|
|
598
|
+
fix: "Use @functools.lru_cache(maxsize=128) or @functools.cache (Python 3.9+).",
|
|
599
|
+
languages: ["python"],
|
|
600
|
+
},
|
|
601
|
+
// ── Additional Java ───────────────────────────────────────────────────
|
|
602
|
+
// stream().filterMap() doesn't exist in Java (Rust concept)
|
|
603
|
+
{
|
|
604
|
+
pattern: /\.filterMap\s*\(/,
|
|
605
|
+
hallucinated: ".filterMap()",
|
|
606
|
+
reason: "Java Streams have no filterMap(). LLMs hallucinate this from Rust's filter_map().",
|
|
607
|
+
fix: "Use .filter(predicate).map(mapper) as two separate operations.",
|
|
608
|
+
languages: ["java"],
|
|
609
|
+
scopeCheckMethod: "filterMap",
|
|
610
|
+
},
|
|
611
|
+
// Stream.ofParallel() doesn't exist
|
|
612
|
+
{
|
|
613
|
+
pattern: /\bStream\.ofParallel\s*\(/,
|
|
614
|
+
hallucinated: "Stream.ofParallel()",
|
|
615
|
+
reason: "Java has no Stream.ofParallel(). LLMs fabricate this combining Stream.of() and parallelStream().",
|
|
616
|
+
fix: "Use collection.parallelStream() or Stream.of(...).parallel().",
|
|
617
|
+
languages: ["java"],
|
|
618
|
+
},
|
|
619
|
+
// Stream.zip() doesn't exist in Java stdlib
|
|
620
|
+
{
|
|
621
|
+
pattern: /\bStream\.zip\s*\(/,
|
|
622
|
+
hallucinated: "Stream.zip()",
|
|
623
|
+
reason: "Java Streams have no zip(). LLMs hallucinate this from Scala, Kotlin, or Python.",
|
|
624
|
+
fix: "Use IntStream.range() for manual zipping, or Guava's Streams.zip().",
|
|
625
|
+
languages: ["java"],
|
|
626
|
+
},
|
|
627
|
+
// .filterAsync() doesn't exist in Java Streams or C# LINQ
|
|
628
|
+
{
|
|
629
|
+
pattern: /\.filterAsync\s*\(/,
|
|
630
|
+
hallucinated: ".filterAsync()",
|
|
631
|
+
reason: "Neither Java Streams nor C# LINQ have filterAsync(). LLMs fabricate async variants.",
|
|
632
|
+
fix: "Use CompletableFuture with .filter() in Java, or async/await with Where() in C#.",
|
|
633
|
+
languages: ["java", "csharp"],
|
|
634
|
+
scopeCheckMethod: "filterAsync",
|
|
635
|
+
},
|
|
636
|
+
// Collectors.toUnmodifiableGroupingBy doesn't exist
|
|
637
|
+
{
|
|
638
|
+
pattern: /\bCollectors\.toUnmodifiableGroupingBy\s*\(/,
|
|
639
|
+
hallucinated: "Collectors.toUnmodifiableGroupingBy()",
|
|
640
|
+
reason: "Java has no Collectors.toUnmodifiableGroupingBy(). LLMs combine groupingBy() with unmodifiable concepts.",
|
|
641
|
+
fix: "Use Collectors.groupingBy() and wrap with Collections.unmodifiableMap().",
|
|
642
|
+
languages: ["java"],
|
|
643
|
+
},
|
|
644
|
+
// .groupByKey() on Java streams (Spark/Kotlin concept)
|
|
645
|
+
{
|
|
646
|
+
pattern: /\.groupByKey\s*\(/,
|
|
647
|
+
hallucinated: ".groupByKey()",
|
|
648
|
+
reason: "Java Streams have no groupByKey(). LLMs hallucinate this from Spark or Kotlin.",
|
|
649
|
+
fix: "Use .collect(Collectors.groupingBy(keyFunction)).",
|
|
650
|
+
languages: ["java"],
|
|
651
|
+
scopeCheckMethod: "groupByKey",
|
|
652
|
+
},
|
|
653
|
+
// .toConcurrentMap() terminal operation doesn't exist
|
|
654
|
+
{
|
|
655
|
+
pattern: /\.toConcurrentMap\s*\(\s*\)/,
|
|
656
|
+
hallucinated: ".toConcurrentMap()",
|
|
657
|
+
reason: "Java Streams have no .toConcurrentMap() terminal operation.",
|
|
658
|
+
fix: "Use .collect(Collectors.toConcurrentMap(keyMapper, valueMapper)).",
|
|
659
|
+
languages: ["java"],
|
|
660
|
+
scopeCheckMethod: "toConcurrentMap",
|
|
661
|
+
},
|
|
662
|
+
// ── Additional C# ────────────────────────────────────────────────────
|
|
663
|
+
// Fake LINQ extension methods
|
|
664
|
+
{
|
|
665
|
+
pattern: /\.(?:WhereAsync|BatchBy|ParallelSelect|FlattenAll|SortByMultiple|TakeWhileIncluding|SlidingWindow)\s*\(/,
|
|
666
|
+
hallucinated: "Non-existent LINQ extension method",
|
|
667
|
+
reason: "C# LINQ does not have WhereAsync, BatchBy, ParallelSelect, FlattenAll, SortByMultiple, TakeWhileIncluding, or SlidingWindow. LLMs hallucinate these extensions.",
|
|
668
|
+
fix: "Use standard LINQ: Where, Chunk (.NET 6+), AsParallel().Select, SelectMany, OrderBy.ThenBy, TakeWhile.",
|
|
669
|
+
languages: ["csharp"],
|
|
670
|
+
},
|
|
671
|
+
// ── Additional Go ─────────────────────────────────────────────────────
|
|
672
|
+
// 'implements' keyword in Go type constraints (Java/C# concept)
|
|
673
|
+
{
|
|
674
|
+
pattern: /\bimplements\s+\w+/,
|
|
675
|
+
hallucinated: "'implements' keyword in Go generics",
|
|
676
|
+
reason: "Go does not have an 'implements' keyword. LLMs hallucinate this from Java/C#.",
|
|
677
|
+
fix: "Use Go type constraints: [T comparable], [T constraints.Ordered], or define a constraint interface.",
|
|
678
|
+
languages: ["go"],
|
|
679
|
+
},
|
|
680
|
+
// ── Additional Patterns (Benchmark Gaps) ──────────────────────────────
|
|
681
|
+
// String.contains() doesn't exist in JS — Java confusion
|
|
682
|
+
{
|
|
683
|
+
pattern: /\.\bcontains\s*\(\s*(?:['"`]|[a-zA-Z_])/,
|
|
684
|
+
hallucinated: "String.contains()",
|
|
685
|
+
reason: "JavaScript strings have no .contains() method. This is a Java API hallucinated onto JS.",
|
|
686
|
+
fix: "Use .includes() instead of .contains().",
|
|
687
|
+
languages: ["javascript"],
|
|
688
|
+
scopeCheckMethod: "contains",
|
|
689
|
+
},
|
|
690
|
+
// crypto.signMessage() doesn't exist in Node.js
|
|
691
|
+
{
|
|
692
|
+
pattern: /\bcrypto\.signMessage\s*\(/,
|
|
693
|
+
hallucinated: "crypto.signMessage()",
|
|
694
|
+
reason: "Node.js crypto module has no signMessage() method.",
|
|
695
|
+
fix: "Use crypto.sign() or crypto.createSign() to sign data.",
|
|
696
|
+
languages: ["javascript", "typescript"],
|
|
697
|
+
},
|
|
698
|
+
// fetch().abort() — fetch returns a Promise, not an abortable request
|
|
699
|
+
{
|
|
700
|
+
pattern: /\.abort\s*\(\s*\)/,
|
|
701
|
+
hallucinated: "fetch().abort()",
|
|
702
|
+
reason: "fetch() returns a Promise, not an abortable request. There is no .abort() method on the returned value.",
|
|
703
|
+
fix: "Use AbortController: const controller = new AbortController(); fetch(url, { signal: controller.signal }); controller.abort();",
|
|
704
|
+
languages: ["javascript", "typescript"],
|
|
705
|
+
scopeCheckMethod: "abort",
|
|
706
|
+
requiresImport: "fetch",
|
|
707
|
+
},
|
|
708
|
+
// Python typing.Protocol.implements() doesn't exist
|
|
709
|
+
{
|
|
710
|
+
pattern: /\bProtocol\.implements\s*\(/,
|
|
711
|
+
hallucinated: "Protocol.implements()",
|
|
712
|
+
reason: "Python's typing.Protocol has no implements() class method. Protocol checking is structural.",
|
|
713
|
+
fix: "Use isinstance() with @runtime_checkable decorator, or rely on mypy/pyright for static checks.",
|
|
714
|
+
languages: ["python"],
|
|
715
|
+
},
|
|
716
|
+
// json.loads() on a file path — should be json.load(file_handle)
|
|
717
|
+
{
|
|
718
|
+
pattern: /\bjson\.loads\s*\(\s*(?:path|file_?path|config_?path|filename)\b/,
|
|
719
|
+
hallucinated: "json.loads(file_path)",
|
|
720
|
+
reason: "json.loads() parses a string, not a file path. LLMs confuse json.loads() with json.load().",
|
|
721
|
+
fix: "Use json.load(open(path)) or: with open(path) as f: data = json.load(f)",
|
|
722
|
+
languages: ["python"],
|
|
723
|
+
},
|
|
724
|
+
// Prisma fabricated methods
|
|
725
|
+
{
|
|
726
|
+
pattern: /\.groupByAndCount\s*\(/,
|
|
727
|
+
hallucinated: "prisma.model.groupByAndCount()",
|
|
728
|
+
reason: "Prisma has no groupByAndCount(). Use groupBy() with _count aggregation.",
|
|
729
|
+
fix: "Use prisma.model.groupBy({ by: ['field'], _count: true })",
|
|
730
|
+
languages: ["javascript", "typescript"],
|
|
731
|
+
},
|
|
732
|
+
{
|
|
733
|
+
pattern: /\.bulkUpsert\s*\(/,
|
|
734
|
+
hallucinated: "prisma.model.bulkUpsert()",
|
|
735
|
+
reason: "Prisma has no bulkUpsert(). Use createMany() or loop with upsert().",
|
|
736
|
+
fix: "Use prisma.model.createMany({ data: items }) or loop with prisma.model.upsert()",
|
|
737
|
+
languages: ["javascript", "typescript"],
|
|
738
|
+
},
|
|
739
|
+
{
|
|
740
|
+
pattern: /\.findManyOrThrow\s*\(/,
|
|
741
|
+
hallucinated: "prisma.model.findManyOrThrow()",
|
|
742
|
+
reason: "Prisma has findFirstOrThrow() and findUniqueOrThrow() but not findManyOrThrow().",
|
|
743
|
+
fix: "Use findMany() and check result length, or findFirstOrThrow() for single records.",
|
|
744
|
+
languages: ["javascript", "typescript"],
|
|
745
|
+
},
|
|
746
|
+
{
|
|
747
|
+
pattern: /\.softDelete\s*\(/,
|
|
748
|
+
hallucinated: "prisma.model.softDelete()",
|
|
749
|
+
reason: "Prisma has no built-in softDelete() method.",
|
|
750
|
+
fix: "Implement soft delete: prisma.model.update({ where: { id }, data: { deletedAt: new Date() } })",
|
|
751
|
+
languages: ["javascript", "typescript"],
|
|
752
|
+
},
|
|
753
|
+
// Rust std hallucinations
|
|
754
|
+
{
|
|
755
|
+
pattern: /\bget_or_default\s*\(/,
|
|
756
|
+
hallucinated: "HashMap.get_or_default()",
|
|
757
|
+
reason: "Rust HashMap has no get_or_default(). Java HashMap API hallucinated onto Rust.",
|
|
758
|
+
fix: "Use .entry(key).or_default() or .get(key).unwrap_or(&default).",
|
|
759
|
+
languages: ["rust"],
|
|
760
|
+
},
|
|
761
|
+
{
|
|
762
|
+
pattern: /\bVec::from_iter_parallel\b/,
|
|
763
|
+
hallucinated: "Vec::from_iter_parallel()",
|
|
764
|
+
reason: "Rust Vec has no from_iter_parallel() method.",
|
|
765
|
+
fix: "Use rayon: (0..1000).into_par_iter().map(|x| x * 2).collect()",
|
|
766
|
+
languages: ["rust"],
|
|
767
|
+
},
|
|
768
|
+
{
|
|
769
|
+
pattern: /\bArc::try_make_mut\b/,
|
|
770
|
+
hallucinated: "Arc::try_make_mut()",
|
|
771
|
+
reason: "Rust Arc has no try_make_mut(). Arc::make_mut() exists but requires Clone.",
|
|
772
|
+
fix: "Use Arc::make_mut() (clones if needed) or Arc::try_unwrap().",
|
|
773
|
+
languages: ["rust"],
|
|
774
|
+
},
|
|
775
|
+
{
|
|
776
|
+
pattern: /\btruncate_safe\s*\(/,
|
|
777
|
+
hallucinated: "String::truncate_safe()",
|
|
778
|
+
reason: "Rust String has no truncate_safe() method.",
|
|
779
|
+
fix: "Use .truncate(n) with char boundary check: if s.is_char_boundary(n) { s.truncate(n); }",
|
|
780
|
+
languages: ["rust"],
|
|
781
|
+
},
|
|
782
|
+
// secure_random crate doesn't exist in Rust
|
|
783
|
+
{
|
|
784
|
+
pattern: /\buse\s+secure_random\b/,
|
|
785
|
+
hallucinated: "secure_random crate",
|
|
786
|
+
reason: "There is no 'secure_random' crate. This is a fabricated crate name.",
|
|
787
|
+
fix: "Use the 'rand' crate with OsRng or ThreadRng for cryptographic randomness.",
|
|
788
|
+
languages: ["rust"],
|
|
789
|
+
},
|
|
790
|
+
// Java stream().toArray(Constructor::new) — wrong signature
|
|
791
|
+
{
|
|
792
|
+
pattern: /\.stream\(\)\.toArray\s*\(\s*\w+::new\s*\)/,
|
|
793
|
+
hallucinated: "stream().toArray(Constructor::new)",
|
|
794
|
+
reason: "Stream.toArray() takes an IntFunction<A[]> (e.g., String[]::new), not a constructor reference.",
|
|
795
|
+
fix: "Use .toArray(String[]::new) for typed arrays, or .toArray() for Object[].",
|
|
796
|
+
languages: ["java"],
|
|
797
|
+
},
|
|
798
|
+
// Fabricated npm packages (common webpack/build tool hallucinations)
|
|
799
|
+
{
|
|
800
|
+
pattern: /\brequire\s*\(\s*["']webpack-(?:auto-optimize|security-scan|smart-split)["']\s*\)/,
|
|
801
|
+
hallucinated: "webpack-auto-optimize / webpack-security-scan / webpack-smart-split",
|
|
802
|
+
reason: "These webpack plugins do not exist. LLMs fabricate plausible-sounding plugin names.",
|
|
803
|
+
fix: "Use real webpack plugins: TerserPlugin, BundleAnalyzerPlugin, SplitChunksPlugin (built-in).",
|
|
804
|
+
languages: ["javascript", "typescript"],
|
|
805
|
+
},
|
|
806
|
+
// Fabricated AWS SDK commands
|
|
807
|
+
{
|
|
808
|
+
pattern: /\b(?:SecurityScanCommand|AutoScaleCommand|WarmUpCommand)\b/,
|
|
809
|
+
hallucinated: "Fabricated AWS SDK commands",
|
|
810
|
+
reason: "SecurityScanCommand, AutoScaleCommand, WarmUpCommand do not exist in the AWS SDK.",
|
|
811
|
+
fix: "Use real AWS SDK commands: ListObjectsV2Command, PutItemCommand, InvokeCommand, etc.",
|
|
812
|
+
languages: ["javascript", "typescript"],
|
|
813
|
+
},
|
|
814
|
+
// Fabricated Octokit/GitHub API methods
|
|
815
|
+
{
|
|
816
|
+
pattern: /\.repos\.(?:getSecurityScore|getAICodeReview|getPerformanceMetrics)\s*\(/,
|
|
817
|
+
hallucinated: "Fabricated Octokit methods",
|
|
818
|
+
reason: "Octokit has no getSecurityScore(), getAICodeReview(), or getPerformanceMetrics() methods.",
|
|
819
|
+
fix: "Use real GitHub API endpoints: repos.get(), repos.listCommits(), repos.getContent(), etc.",
|
|
820
|
+
languages: ["javascript", "typescript"],
|
|
821
|
+
},
|
|
822
|
+
// Fabricated SQL functions
|
|
823
|
+
{
|
|
824
|
+
pattern: /\b(?:TOP_N|STRING_AGG_DISTINCT|FIRST_VALUE_IF|WEIGHTED_AVG|RUNNING_TOTAL|AUTO_BUCKET|FUZZY_MATCH|FILL_GAPS)\s*\(/i,
|
|
825
|
+
hallucinated: "Fabricated SQL functions",
|
|
826
|
+
reason: "TOP_N, STRING_AGG_DISTINCT, WEIGHTED_AVG, RUNNING_TOTAL, AUTO_BUCKET, FUZZY_MATCH, FILL_GAPS are not standard SQL functions.",
|
|
827
|
+
fix: "Use standard SQL: NTILE()/ROW_NUMBER(), STRING_AGG(), FIRST_VALUE() with FILTER, SUM() OVER(), WIDTH_BUCKET(), SIMILARITY() (PostgreSQL).",
|
|
828
|
+
languages: ["sql"],
|
|
829
|
+
},
|
|
830
|
+
];
|
|
831
|
+
// ─── Suspicious Import Patterns ─────────────────────────────────────────────
|
|
832
|
+
/**
|
|
833
|
+
* Detect imports that follow LLM hallucination patterns:
|
|
834
|
+
* - Importing from packages that combine too-generic words
|
|
835
|
+
* - Importing non-existent submodules from known packages
|
|
836
|
+
* - Using fabricated utility function names
|
|
837
|
+
*/
|
|
838
|
+
const SUSPICIOUS_SUBMODULE_PATTERNS = [
|
|
839
|
+
// React doesn't have these exports
|
|
840
|
+
{
|
|
841
|
+
parent: /\bfrom\s+['"]react['"]/,
|
|
842
|
+
invalidChild: /\b(?:useRequest|useFetch|useAPI|useAuth|useSocket|useAxios|useDatabase)\b/,
|
|
843
|
+
reason: "React does not export these hooks. They may come from third-party libraries (e.g., SWR, React Query, use-http) but LLMs often hallucinate them as built-in React hooks.",
|
|
844
|
+
languages: ["javascript", "typescript"],
|
|
845
|
+
},
|
|
846
|
+
// Express doesn't export these
|
|
847
|
+
{
|
|
848
|
+
parent: /\bfrom\s+['"]express['"]/,
|
|
849
|
+
invalidChild: /\b(?:validate|sanitize|authenticate|authorize|rateLimit|cors|helmet|csrf)\b/,
|
|
850
|
+
reason: "Express does not export these functions. They are separate middleware packages (express-validator, cors, helmet, csurf, express-rate-limit).",
|
|
851
|
+
languages: ["javascript", "typescript"],
|
|
852
|
+
},
|
|
853
|
+
// Flask doesn't export these
|
|
854
|
+
{
|
|
855
|
+
parent: /\bfrom\s+flask\s+import\b/,
|
|
856
|
+
invalidChild: /\b(?:validate|sanitize|authenticate|login_required|cors|csrf_protect|rate_limit)\b/,
|
|
857
|
+
reason: "Flask does not export these directly. They come from extensions: flask-login, flask-cors, flask-wtf, flask-limiter.",
|
|
858
|
+
languages: ["python"],
|
|
859
|
+
},
|
|
860
|
+
// FastAPI doesn't export these
|
|
861
|
+
{
|
|
862
|
+
parent: /\bfrom\s+fastapi\s+import\b/,
|
|
863
|
+
invalidChild: /\b(?:login_required|authenticate|validate_schema|cors|rate_limit|serialize)\b/,
|
|
864
|
+
reason: "FastAPI does not export these. Use Depends() for dependency injection, or install separate packages (fastapi-limiter, etc.).",
|
|
865
|
+
languages: ["python"],
|
|
866
|
+
},
|
|
867
|
+
// Next.js doesn't export these from 'next'
|
|
868
|
+
{
|
|
869
|
+
parent: /\bfrom\s+['"]next['"]/,
|
|
870
|
+
invalidChild: /\b(?:useAuth|useUser|useSession|useFetch|useAPI|useDatabase)\b/,
|
|
871
|
+
reason: "Next.js does not export these hooks. Authentication requires next-auth, data fetching uses SWR or React Query.",
|
|
872
|
+
languages: ["javascript", "typescript"],
|
|
873
|
+
},
|
|
874
|
+
// Vue doesn't export these
|
|
875
|
+
{
|
|
876
|
+
parent: /\bfrom\s+['"]vue['"]/,
|
|
877
|
+
invalidChild: /\b(?:useRequest|useFetch|useAuth|useStore|useAxios|useSocket)\b/,
|
|
878
|
+
reason: "Vue does not export these composables. useStore requires Pinia/Vuex, others need third-party libraries.",
|
|
879
|
+
languages: ["javascript", "typescript"],
|
|
880
|
+
},
|
|
881
|
+
];
|
|
882
|
+
// ─── Main Analyzer ──────────────────────────────────────────────────────────
|
|
883
|
+
export function analyzeHallucinationDetection(code, language) {
|
|
884
|
+
const findings = [];
|
|
885
|
+
const lines = code.split("\n");
|
|
886
|
+
let ruleNum = 1;
|
|
887
|
+
const prefix = "HALLU";
|
|
888
|
+
const lang = getLangFamily(language);
|
|
889
|
+
// 1. Check against known hallucinated API patterns
|
|
890
|
+
for (const hp of HALLUCINATED_PATTERNS) {
|
|
891
|
+
if (!hp.languages.includes(lang))
|
|
892
|
+
continue;
|
|
893
|
+
// Scope-aware suppression: skip if the method is defined locally
|
|
894
|
+
if (hp.scopeCheckMethod && isMethodDefinedLocally(code, hp.scopeCheckMethod, lang)) {
|
|
895
|
+
continue;
|
|
896
|
+
}
|
|
897
|
+
// Import guard: skip if the pattern requires a specific import that's absent
|
|
898
|
+
if (hp.requiresImport && !code.includes(hp.requiresImport)) {
|
|
899
|
+
continue;
|
|
900
|
+
}
|
|
901
|
+
const affectedLines = [];
|
|
902
|
+
for (let i = 0; i < lines.length; i++) {
|
|
903
|
+
if (isCommentLine(lines[i]))
|
|
904
|
+
continue;
|
|
905
|
+
if (hp.pattern.test(lines[i])) {
|
|
906
|
+
affectedLines.push(i + 1);
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
if (affectedLines.length > 0) {
|
|
910
|
+
// Build auto-fix patch for the first affected line
|
|
911
|
+
const firstLine = affectedLines[0] - 1;
|
|
912
|
+
const patch = {
|
|
913
|
+
oldText: lines[firstLine],
|
|
914
|
+
newText: `/* FIX: ${hp.fix} */ ${lines[firstLine]}`,
|
|
915
|
+
startLine: affectedLines[0],
|
|
916
|
+
endLine: affectedLines[0],
|
|
917
|
+
};
|
|
918
|
+
const evidenceChain = {
|
|
919
|
+
steps: [
|
|
920
|
+
{
|
|
921
|
+
observation: `Detected hallucinated API: ${hp.hallucinated}`,
|
|
922
|
+
source: "pattern-match",
|
|
923
|
+
line: affectedLines[0],
|
|
924
|
+
},
|
|
925
|
+
{
|
|
926
|
+
observation: hp.reason,
|
|
927
|
+
source: "framework-knowledge",
|
|
928
|
+
},
|
|
929
|
+
],
|
|
930
|
+
impactStatement: `Runtime error: ${hp.hallucinated} does not exist and will fail when executed`,
|
|
931
|
+
};
|
|
932
|
+
findings.push({
|
|
933
|
+
ruleId: `${prefix}-${String(ruleNum++).padStart(3, "0")}`,
|
|
934
|
+
severity: "high",
|
|
935
|
+
title: `Hallucinated API: ${hp.hallucinated}`,
|
|
936
|
+
description: hp.reason,
|
|
937
|
+
lineNumbers: affectedLines,
|
|
938
|
+
recommendation: hp.fix,
|
|
939
|
+
suggestedFix: hp.fix,
|
|
940
|
+
reference: "AI Code Safety — Hallucinated API Detection",
|
|
941
|
+
confidence: 0.85,
|
|
942
|
+
provenance: "regex-pattern-match",
|
|
943
|
+
patch,
|
|
944
|
+
evidenceChain,
|
|
945
|
+
evidenceBasis: "Known-hallucination-registry (+0.40), regex-pattern-match (+0.25), stdlib-knowledge (+0.20)",
|
|
946
|
+
});
|
|
947
|
+
}
|
|
948
|
+
}
|
|
949
|
+
// 2. Check for suspicious submodule imports
|
|
950
|
+
for (const sp of SUSPICIOUS_SUBMODULE_PATTERNS) {
|
|
951
|
+
if (!sp.languages.includes(lang))
|
|
952
|
+
continue;
|
|
953
|
+
for (let i = 0; i < lines.length; i++) {
|
|
954
|
+
if (isCommentLine(lines[i]))
|
|
955
|
+
continue;
|
|
956
|
+
if (sp.parent.test(lines[i]) && sp.invalidChild.test(lines[i])) {
|
|
957
|
+
findings.push({
|
|
958
|
+
ruleId: `${prefix}-${String(ruleNum++).padStart(3, "0")}`,
|
|
959
|
+
severity: "high",
|
|
960
|
+
title: "Hallucinated import — non-existent export from known package",
|
|
961
|
+
description: sp.reason,
|
|
962
|
+
lineNumbers: [i + 1],
|
|
963
|
+
recommendation: "Verify the import exists in the package's documentation. Install the correct third-party package instead.",
|
|
964
|
+
suggestedFix: "Remove the invalid import and install the correct package.",
|
|
965
|
+
reference: "AI Code Safety — Hallucinated Import Detection",
|
|
966
|
+
confidence: 0.8,
|
|
967
|
+
provenance: "regex-pattern-match",
|
|
968
|
+
evidenceChain: {
|
|
969
|
+
steps: [
|
|
970
|
+
{
|
|
971
|
+
observation: `Import from known package references non-existent export`,
|
|
972
|
+
source: "pattern-match",
|
|
973
|
+
line: i + 1,
|
|
974
|
+
},
|
|
975
|
+
{
|
|
976
|
+
observation: sp.reason,
|
|
977
|
+
source: "framework-knowledge",
|
|
978
|
+
},
|
|
979
|
+
],
|
|
980
|
+
impactStatement: `Import will fail: the referenced export does not exist in this package`,
|
|
981
|
+
},
|
|
982
|
+
evidenceBasis: "Known-package-export-registry (+0.35), regex-pattern-match (+0.25), framework-knowledge (+0.20)",
|
|
983
|
+
});
|
|
984
|
+
}
|
|
985
|
+
}
|
|
986
|
+
}
|
|
987
|
+
// 3. Detect common phantom method chains
|
|
988
|
+
// LLMs generate plausible-looking but non-existent method chains
|
|
989
|
+
if (lang === "javascript" || lang === "typescript") {
|
|
990
|
+
for (let i = 0; i < lines.length; i++) {
|
|
991
|
+
if (isCommentLine(lines[i]))
|
|
992
|
+
continue;
|
|
993
|
+
const line = lines[i];
|
|
994
|
+
// Promise.resolve().delay() — Bluebird API hallucinated into native Promise
|
|
995
|
+
if (/\bPromise\.resolve\s*\([^)]*\)\s*\.delay\s*\(/.test(line)) {
|
|
996
|
+
findings.push({
|
|
997
|
+
ruleId: `${prefix}-${String(ruleNum++).padStart(3, "0")}`,
|
|
998
|
+
severity: "high",
|
|
999
|
+
title: "Hallucinated API: Promise.resolve().delay()",
|
|
1000
|
+
description: "Native Promises have no .delay() method. LLMs hallucinate this from the Bluebird library.",
|
|
1001
|
+
lineNumbers: [i + 1],
|
|
1002
|
+
recommendation: "Use: await new Promise(resolve => setTimeout(resolve, ms));",
|
|
1003
|
+
suggestedFix: "await new Promise(resolve => setTimeout(resolve, ms));",
|
|
1004
|
+
reference: "AI Code Safety — Hallucinated API Detection",
|
|
1005
|
+
confidence: 0.9,
|
|
1006
|
+
provenance: "regex-pattern-match",
|
|
1007
|
+
evidenceChain: {
|
|
1008
|
+
steps: [
|
|
1009
|
+
{
|
|
1010
|
+
observation: "Promise.resolve().delay() detected — .delay() is a Bluebird-only API",
|
|
1011
|
+
source: "pattern-match",
|
|
1012
|
+
line: i + 1,
|
|
1013
|
+
},
|
|
1014
|
+
{
|
|
1015
|
+
observation: "Native Promise prototype has no .delay() method",
|
|
1016
|
+
source: "framework-knowledge",
|
|
1017
|
+
},
|
|
1018
|
+
],
|
|
1019
|
+
impactStatement: "Runtime TypeError: .delay() is not a function on native Promises",
|
|
1020
|
+
},
|
|
1021
|
+
evidenceBasis: "Known-hallucination-registry (+0.45), stdlib-knowledge (+0.25), regex-pattern-match (+0.20)",
|
|
1022
|
+
});
|
|
1023
|
+
}
|
|
1024
|
+
// Map.prototype.contains — should be .has
|
|
1025
|
+
if (/\bnew Map\b/.test(code) && /\.contains\s*\(/.test(line)) {
|
|
1026
|
+
findings.push({
|
|
1027
|
+
ruleId: `${prefix}-${String(ruleNum++).padStart(3, "0")}`,
|
|
1028
|
+
severity: "medium",
|
|
1029
|
+
title: "Possible hallucinated API: Map.contains()",
|
|
1030
|
+
description: "JavaScript Maps use .has() not .contains(). LLMs often hallucinate Java's Map.containsKey().",
|
|
1031
|
+
lineNumbers: [i + 1],
|
|
1032
|
+
recommendation: "Use map.has(key) to check for key existence.",
|
|
1033
|
+
suggestedFix: "Replace .contains(key) with .has(key).",
|
|
1034
|
+
reference: "AI Code Safety — Hallucinated API Detection",
|
|
1035
|
+
confidence: 0.7,
|
|
1036
|
+
provenance: "regex-pattern-match",
|
|
1037
|
+
evidenceChain: {
|
|
1038
|
+
steps: [
|
|
1039
|
+
{
|
|
1040
|
+
observation: ".contains() called in file that uses Map — Maps have .has(), not .contains()",
|
|
1041
|
+
source: "pattern-match",
|
|
1042
|
+
line: i + 1,
|
|
1043
|
+
},
|
|
1044
|
+
],
|
|
1045
|
+
impactStatement: "Potential TypeError: Map instances do not have a .contains() method",
|
|
1046
|
+
},
|
|
1047
|
+
evidenceBasis: "Map-usage-context (+0.30), regex-pattern-match (+0.20), stdlib-knowledge (+0.20)",
|
|
1048
|
+
});
|
|
1049
|
+
}
|
|
1050
|
+
}
|
|
1051
|
+
}
|
|
1052
|
+
// 4. Detect incorrect async patterns — common hallucination
|
|
1053
|
+
if (lang === "javascript" || lang === "typescript") {
|
|
1054
|
+
for (let i = 0; i < lines.length; i++) {
|
|
1055
|
+
if (isCommentLine(lines[i]))
|
|
1056
|
+
continue;
|
|
1057
|
+
const line = lines[i];
|
|
1058
|
+
// new Promise(async (resolve, reject) => { ... }) — anti-pattern
|
|
1059
|
+
if (/new\s+Promise\s*\(\s*async\s/.test(line)) {
|
|
1060
|
+
findings.push({
|
|
1061
|
+
ruleId: `${prefix}-${String(ruleNum++).padStart(3, "0")}`,
|
|
1062
|
+
severity: "medium",
|
|
1063
|
+
title: "Anti-pattern: async function inside Promise constructor",
|
|
1064
|
+
description: "Wrapping an async function inside new Promise() is an anti-pattern commonly generated by LLMs. Errors thrown in the async executor won't reject the promise, leading to unhandled rejections and swallowed errors.",
|
|
1065
|
+
lineNumbers: [i + 1],
|
|
1066
|
+
recommendation: "Remove the Promise wrapper — async functions already return Promises. Just use: async function name() { ... }",
|
|
1067
|
+
suggestedFix: "Remove the new Promise() wrapper and use the async function directly.",
|
|
1068
|
+
reference: "AI Code Safety — Hallucinated Pattern Detection",
|
|
1069
|
+
confidence: 0.85,
|
|
1070
|
+
provenance: "regex-pattern-match",
|
|
1071
|
+
evidenceChain: {
|
|
1072
|
+
steps: [
|
|
1073
|
+
{
|
|
1074
|
+
observation: "async executor inside new Promise() constructor",
|
|
1075
|
+
source: "pattern-match",
|
|
1076
|
+
line: i + 1,
|
|
1077
|
+
},
|
|
1078
|
+
{
|
|
1079
|
+
observation: "Async executors swallow thrown errors because Promise constructor only catches synchronous throws",
|
|
1080
|
+
source: "framework-knowledge",
|
|
1081
|
+
},
|
|
1082
|
+
],
|
|
1083
|
+
impactStatement: "Reliability risk: errors in async Promise executors cause unhandled rejections instead of proper rejection",
|
|
1084
|
+
},
|
|
1085
|
+
evidenceBasis: "Anti-pattern-registry (+0.40), regex-pattern-match (+0.25), runtime-semantics (+0.20)",
|
|
1086
|
+
});
|
|
1087
|
+
}
|
|
1088
|
+
}
|
|
1089
|
+
}
|
|
1090
|
+
// 5. Heuristic import verification — detect imports with suspiciously
|
|
1091
|
+
// generic compound names that LLMs fabricate (e.g. "super-auth-helper",
|
|
1092
|
+
// "easy-db-connect"). These follow an "adjective-noun-verb" naming pattern
|
|
1093
|
+
// rarely used by real packages.
|
|
1094
|
+
if (lang === "javascript" || lang === "typescript") {
|
|
1095
|
+
const genericPrefixes = /^(?:easy|simple|fast|quick|auto|super|smart|magic|instant|ultra|mega|safe|secure|better|awesome)[-_]/i;
|
|
1096
|
+
const genericSuffixes = /[-_](?:helper|utils|tools|manager|handler|wrapper|service|client|provider|plugin|module|kit|lib|core|engine|base|factory|builder|connector)$/i;
|
|
1097
|
+
for (let i = 0; i < lines.length; i++) {
|
|
1098
|
+
if (isCommentLine(lines[i]))
|
|
1099
|
+
continue;
|
|
1100
|
+
const line = lines[i];
|
|
1101
|
+
const importMatch = line.match(/\bfrom\s+['"]([^'"@./][^'"]*)['"]/);
|
|
1102
|
+
if (!importMatch)
|
|
1103
|
+
continue;
|
|
1104
|
+
const pkgName = importMatch[1].split("/")[0];
|
|
1105
|
+
// Must match BOTH a generic prefix and a generic suffix
|
|
1106
|
+
if (genericPrefixes.test(pkgName) && genericSuffixes.test(pkgName)) {
|
|
1107
|
+
findings.push({
|
|
1108
|
+
ruleId: `${prefix}-${String(ruleNum++).padStart(3, "0")}`,
|
|
1109
|
+
severity: "medium",
|
|
1110
|
+
title: `Suspicious package name: "${pkgName}"`,
|
|
1111
|
+
description: `The package "${pkgName}" follows a naming pattern commonly fabricated by AI code generators ` +
|
|
1112
|
+
"(generic-adjective + generic-noun). Verify this package exists on npmjs.com before using it.",
|
|
1113
|
+
lineNumbers: [i + 1],
|
|
1114
|
+
recommendation: "Search npmjs.com for this exact package name. If it doesn't exist, find an established alternative.",
|
|
1115
|
+
reference: "AI Code Safety — Import Verification",
|
|
1116
|
+
confidence: 0.65,
|
|
1117
|
+
provenance: "regex-pattern-match",
|
|
1118
|
+
evidenceChain: {
|
|
1119
|
+
steps: [
|
|
1120
|
+
{
|
|
1121
|
+
observation: `Package "${pkgName}" matches AI-fabricated naming pattern (adjective-noun)`,
|
|
1122
|
+
source: "pattern-match",
|
|
1123
|
+
line: i + 1,
|
|
1124
|
+
},
|
|
1125
|
+
],
|
|
1126
|
+
impactStatement: `Possible supply-chain risk: package "${pkgName}" may not exist on npm`,
|
|
1127
|
+
},
|
|
1128
|
+
evidenceBasis: "Naming-heuristic (+0.35), generic-prefix-suffix-match (+0.30)",
|
|
1129
|
+
});
|
|
1130
|
+
}
|
|
1131
|
+
}
|
|
1132
|
+
// 5b. Dependency confusion risk — unscoped packages with names suggesting
|
|
1133
|
+
// they should be org-scoped (@company/pkg). Internal-looking names like
|
|
1134
|
+
// "auth-service-internal" or "config-core-api" are supply-chain attack vectors.
|
|
1135
|
+
const internalSuffixes = /[-_](?:internal|private|corp|enterprise|backend|service|api|sdk|platform|infra|core-api|core-sdk|backend-sdk)$/i;
|
|
1136
|
+
const internalPrefixes = /^(?:auth|config|logging|analytics|billing|payment|identity|user|account|notification|messaging|telemetry)[-_]/i;
|
|
1137
|
+
for (let i = 0; i < lines.length; i++) {
|
|
1138
|
+
if (isCommentLine(lines[i]))
|
|
1139
|
+
continue;
|
|
1140
|
+
const line = lines[i];
|
|
1141
|
+
const importMatch = line.match(/\bfrom\s+['"]([^'"@./][^'"]*)['"]/);
|
|
1142
|
+
if (!importMatch)
|
|
1143
|
+
continue;
|
|
1144
|
+
const pkgName = importMatch[1].split("/")[0];
|
|
1145
|
+
if (internalPrefixes.test(pkgName) && internalSuffixes.test(pkgName)) {
|
|
1146
|
+
findings.push({
|
|
1147
|
+
ruleId: `${prefix}-${String(ruleNum++).padStart(3, "0")}`,
|
|
1148
|
+
severity: "high",
|
|
1149
|
+
title: `Dependency confusion risk: "${pkgName}"`,
|
|
1150
|
+
description: `The unscoped package "${pkgName}" has a name suggesting it should be an org-scoped package ` +
|
|
1151
|
+
`(e.g., @company/${pkgName}). AI code generators often fabricate internal-looking package names ` +
|
|
1152
|
+
"that don't exist on npm, creating a dependency confusion attack vector.",
|
|
1153
|
+
lineNumbers: [i + 1],
|
|
1154
|
+
recommendation: "Verify this package exists on npmjs.com. If it's an internal package, use org scoping (@yourorg/package-name) " +
|
|
1155
|
+
"and configure your .npmrc to route scoped packages to your private registry.",
|
|
1156
|
+
reference: "Dependency Confusion Attack / npm Security Best Practices",
|
|
1157
|
+
confidence: 0.75,
|
|
1158
|
+
provenance: "regex-pattern-match",
|
|
1159
|
+
evidenceChain: {
|
|
1160
|
+
steps: [
|
|
1161
|
+
{
|
|
1162
|
+
observation: `Package "${pkgName}" has an internal-service naming pattern`,
|
|
1163
|
+
source: "pattern-match",
|
|
1164
|
+
line: i + 1,
|
|
1165
|
+
},
|
|
1166
|
+
],
|
|
1167
|
+
impactStatement: `Possible dependency confusion attack: "${pkgName}" looks like a private/internal package name used without org scope`,
|
|
1168
|
+
},
|
|
1169
|
+
evidenceBasis: "Internal-naming-heuristic (+0.40), unscoped-private-pattern (+0.35)",
|
|
1170
|
+
});
|
|
1171
|
+
}
|
|
1172
|
+
}
|
|
1173
|
+
}
|
|
1174
|
+
if (lang === "python") {
|
|
1175
|
+
const genericPrefixes = /^(?:easy|simple|fast|quick|auto|super|smart|magic|instant|ultra|mega|safe|secure|better|awesome)[_-]/i;
|
|
1176
|
+
const genericSuffixes = /[_-](?:helper|utils|tools|manager|handler|wrapper|service|client|provider|plugin|module|kit|lib|core|engine|base|factory|builder|connector)$/i;
|
|
1177
|
+
for (let i = 0; i < lines.length; i++) {
|
|
1178
|
+
if (isCommentLine(lines[i]))
|
|
1179
|
+
continue;
|
|
1180
|
+
const line = lines[i];
|
|
1181
|
+
const importMatch = line.match(/^\s*(?:import|from)\s+([a-zA-Z_][a-zA-Z0-9_]*)/);
|
|
1182
|
+
if (!importMatch)
|
|
1183
|
+
continue;
|
|
1184
|
+
const pkgName = importMatch[1];
|
|
1185
|
+
if (genericPrefixes.test(pkgName) && genericSuffixes.test(pkgName)) {
|
|
1186
|
+
findings.push({
|
|
1187
|
+
ruleId: `${prefix}-${String(ruleNum++).padStart(3, "0")}`,
|
|
1188
|
+
severity: "medium",
|
|
1189
|
+
title: `Suspicious package name: "${pkgName}"`,
|
|
1190
|
+
description: `The package "${pkgName}" follows a naming pattern commonly fabricated by AI code generators. ` +
|
|
1191
|
+
"Verify this package exists on pypi.org before using it.",
|
|
1192
|
+
lineNumbers: [i + 1],
|
|
1193
|
+
recommendation: "Search pypi.org for this exact package name. If it doesn't exist, find an established alternative.",
|
|
1194
|
+
reference: "AI Code Safety — Import Verification",
|
|
1195
|
+
confidence: 0.65,
|
|
1196
|
+
provenance: "regex-pattern-match",
|
|
1197
|
+
evidenceChain: {
|
|
1198
|
+
steps: [
|
|
1199
|
+
{
|
|
1200
|
+
observation: `Package "${pkgName}" matches AI-fabricated naming pattern (adjective-noun)`,
|
|
1201
|
+
source: "pattern-match",
|
|
1202
|
+
line: i + 1,
|
|
1203
|
+
},
|
|
1204
|
+
],
|
|
1205
|
+
impactStatement: `Possible supply-chain risk: package "${pkgName}" may not exist on PyPI`,
|
|
1206
|
+
},
|
|
1207
|
+
evidenceBasis: "Naming-heuristic (+0.35), generic-prefix-suffix-match (+0.30)",
|
|
1208
|
+
});
|
|
1209
|
+
}
|
|
1210
|
+
}
|
|
1211
|
+
}
|
|
1212
|
+
// ── Dependency Confusion / Internal Namespace Detection ─────────────────
|
|
1213
|
+
// Detect unscoped package names that look like internal company packages
|
|
1214
|
+
// (common when AI fabricates imports based on the codebase context)
|
|
1215
|
+
if (lang === "javascript" || lang === "typescript") {
|
|
1216
|
+
const internalPatterns = /\bfrom\s+['"](?!@)([a-z]+-(?:internal|private|core-api|backend-sdk|shared-types|company|org|platform|infra|deploy|devtools|build-tools|internal-utils|private-utils)(?:[-/][a-z]+)*)['"]/;
|
|
1217
|
+
for (let i = 0; i < lines.length; i++) {
|
|
1218
|
+
if (isCommentLine(lines[i]))
|
|
1219
|
+
continue;
|
|
1220
|
+
const m = lines[i].match(internalPatterns);
|
|
1221
|
+
if (m) {
|
|
1222
|
+
findings.push({
|
|
1223
|
+
ruleId: `${prefix}-${String(ruleNum++).padStart(3, "0")}`,
|
|
1224
|
+
severity: "high",
|
|
1225
|
+
title: `Potential dependency confusion: "${m[1]}"`,
|
|
1226
|
+
description: `The package "${m[1]}" looks like an internal/private package name but is imported without a scoped namespace (@org/). ` +
|
|
1227
|
+
"AI code generators may fabricate package names based on project context, creating dependency confusion risks.",
|
|
1228
|
+
lineNumbers: [i + 1],
|
|
1229
|
+
recommendation: "Verify this package exists. Internal packages should use scoped names (@yourorg/package). " +
|
|
1230
|
+
"If this is a private package, ensure your .npmrc is configured for your private registry.",
|
|
1231
|
+
reference: "Dependency Confusion — Alex Birsan (2021)",
|
|
1232
|
+
confidence: 0.7,
|
|
1233
|
+
provenance: "regex-pattern-match",
|
|
1234
|
+
evidenceChain: {
|
|
1235
|
+
steps: [
|
|
1236
|
+
{
|
|
1237
|
+
observation: `Unscoped package "${m[1]}" contains internal-looking keywords`,
|
|
1238
|
+
source: "pattern-match",
|
|
1239
|
+
line: i + 1,
|
|
1240
|
+
},
|
|
1241
|
+
],
|
|
1242
|
+
impactStatement: `Supply-chain risk: "${m[1]}" could be claimed by an attacker on the public registry`,
|
|
1243
|
+
},
|
|
1244
|
+
evidenceBasis: "Dependency-confusion-heuristic (+0.40), naming-pattern (+0.30)",
|
|
1245
|
+
});
|
|
1246
|
+
}
|
|
1247
|
+
}
|
|
1248
|
+
}
|
|
1249
|
+
return findings;
|
|
1250
|
+
}
|