@kevinrabun/judges 3.35.0 → 3.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/README.md +17 -15
- package/dist/api.d.ts +1 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +1 -1
- package/dist/api.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +27 -8
- package/dist/cli.js.map +1 -1
- package/dist/commands/benchmark-ai-output.d.ts +10 -0
- package/dist/commands/benchmark-ai-output.d.ts.map +1 -0
- package/dist/commands/benchmark-ai-output.js +366 -0
- package/dist/commands/benchmark-ai-output.js.map +1 -0
- package/dist/commands/benchmark.d.ts.map +1 -1
- package/dist/commands/benchmark.js +2 -0
- package/dist/commands/benchmark.js.map +1 -1
- package/dist/dedup.d.ts.map +1 -1
- package/dist/dedup.js +61 -0
- package/dist/dedup.js.map +1 -1
- package/dist/evaluators/hallucination-detection.d.ts.map +1 -1
- package/dist/evaluators/hallucination-detection.js +55 -2
- package/dist/evaluators/hallucination-detection.js.map +1 -1
- package/dist/evaluators/index.d.ts +10 -0
- package/dist/evaluators/index.d.ts.map +1 -1
- package/dist/evaluators/index.js +130 -6
- package/dist/evaluators/index.js.map +1 -1
- package/dist/evaluators/logic-review.d.ts +3 -0
- package/dist/evaluators/logic-review.d.ts.map +1 -0
- package/dist/evaluators/logic-review.js +263 -0
- package/dist/evaluators/logic-review.js.map +1 -0
- package/dist/evaluators/project.d.ts +19 -0
- package/dist/evaluators/project.d.ts.map +1 -1
- package/dist/evaluators/project.js +2 -2
- package/dist/evaluators/project.js.map +1 -1
- package/dist/evaluators/testing.d.ts.map +1 -1
- package/dist/evaluators/testing.js +39 -0
- package/dist/evaluators/testing.js.map +1 -1
- package/dist/finding-lifecycle.d.ts +11 -0
- package/dist/finding-lifecycle.d.ts.map +1 -1
- package/dist/finding-lifecycle.js +49 -0
- package/dist/finding-lifecycle.js.map +1 -1
- package/dist/judges/index.d.ts.map +1 -1
- package/dist/judges/index.js +4 -0
- package/dist/judges/index.js.map +1 -1
- package/dist/judges/logic-review.d.ts +3 -0
- package/dist/judges/logic-review.d.ts.map +1 -0
- package/dist/judges/logic-review.js +33 -0
- package/dist/judges/logic-review.js.map +1 -0
- package/dist/types.d.ts +30 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/server.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,38 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to **@kevinrabun/judges** are documented here.
|
|
4
4
|
|
|
5
|
+
## [3.37.0] — 2026-03-10
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- **Auto-onboarding preset** — When no `.judgesrc` config file exists and no `--preset` or `--config` flag is provided, the CLI automatically applies the `onboarding` preset (high-severity only, 9 noisy judges disabled) with a guidance message to run `judges init` for full control. Reduces noise for first-time users.
|
|
9
|
+
- **Fix rate visibility (CLI)** — Findings summary now shows auto-fixable count everywhere: verdict summary (`Findings : 12 (4 auto-fixable)`), `--summary` one-liner, multi-file per-file progress, multi-file summary, and critical/high findings list (tagged with 🔧). New guidance line after verdict: `🔧 N finding(s) can be auto-fixed. Run: judges eval <file> --fix`.
|
|
10
|
+
|
|
11
|
+
### Changed (VS Code Extension)
|
|
12
|
+
- **Live status bar** — Status bar now updates dynamically after evaluations, showing finding count and fixable count (e.g., `Judges: 5 finding(s), 2 fixable`) instead of the static "Judges" label. Also updates when switching between editor tabs.
|
|
13
|
+
- **`getCachedFindings()` API** — New method on `JudgesDiagnosticProvider` for retrieving cached findings by URI, used by the status bar.
|
|
14
|
+
|
|
15
|
+
### Tests
|
|
16
|
+
- 1,082 tests pass across 218 suites
|
|
17
|
+
|
|
18
|
+
## [3.36.0] — 2026-03-10
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
- **New judge: logic-review** — 7 detection categories for semantic correctness: inverted security conditions (critical), off-by-one errors (high), dead code after return/throw (medium), name-body mismatch (medium), swapped comparison operands (high), empty catch/except blocks (medium), redundant boolean comparisons (low). 45 judges total.
|
|
22
|
+
- **Review verdict & summary** — `synthesizeReviewDecision()` wired into `TribunalVerdict`, producing an approve/request-changes/comment decision with blocking findings list and executive summary.
|
|
23
|
+
- **Package registry verification** — expanded fabricated package detection: 50+ npm names, 30+ Python names, Go module hallucination patterns, Java/Kotlin hallucination patterns, and dependency confusion detection for unscoped packages with internal-looking names.
|
|
24
|
+
- **Test adequacy assessment** — 2 new test quality checks: happy-path-only detection (test files with ≥3 cases but no error/edge scenarios) and status-code-only detection (API tests that only assert HTTP codes without body verification).
|
|
25
|
+
- **LLM contextual auto-fixes** — `enrichWithContextualFixes()` generates `suggestedFix` for findings that lack a deterministic patch, using actual code context from affected lines.
|
|
26
|
+
- **Triage feedback learning loop** — `computeTriageFeedback()` and `applyTriageFeedback()` adjust confidence scores based on historical false-positive rates from the finding lifecycle store. Rules with FP rate >30% get proportional confidence reduction (max -0.3).
|
|
27
|
+
- **JetBrains IDE integration guide** — documentation for connecting Judges as an MCP server in IntelliJ IDEA, WebStorm, PyCharm, GoLand, and Rider via `.mcp.json` or IDE settings.
|
|
28
|
+
- **AI-output benchmark suite** — 18 new benchmark cases targeting LLM-generated code patterns: logic inversions, off-by-one errors, dead code, name-body mismatches, swapped operands, empty catch blocks, happy-path-only tests, status-code-only tests, dependency confusion, and 3 negative (clean code) cases.
|
|
29
|
+
|
|
30
|
+
### Changed (VS Code Extension)
|
|
31
|
+
- **Diff-aware evaluation** — new `judges.evaluateDiff` command evaluates the full file but only reports findings on lines changed relative to git HEAD (±2 line context margin).
|
|
32
|
+
- **Judge grouping in findings panel** — new "Sort by Judge" mode groups findings by judge prefix (AUTH, CRYPTO, LOGIC, etc.) with collapsible tree nodes.
|
|
33
|
+
|
|
34
|
+
### Tests
|
|
35
|
+
- 1,082 tests pass across 218 suites
|
|
36
|
+
|
|
5
37
|
## [3.35.0] — 2026-03-10
|
|
6
38
|
|
|
7
39
|
### Added
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Judges Panel
|
|
2
2
|
|
|
3
|
-
An MCP (Model Context Protocol) server that provides a panel of **
|
|
3
|
+
An MCP (Model Context Protocol) server that provides a panel of **45 specialized judges** to evaluate AI-generated code — acting as an independent quality gate regardless of which project is being reviewed. Combines **deterministic pattern matching & AST analysis** (instant, offline, zero LLM calls) with **LLM-powered deep-review prompts** that let your AI assistant perform expert-persona analysis across all 45 domains.
|
|
4
4
|
|
|
5
5
|
**Highlights:**
|
|
6
6
|
- Includes an **App Builder Workflow (3-step)** demo for release decisions, plain-language risk summaries, and prioritized fixes — see [Try the Demo](#2-try-the-demo).
|
|
@@ -21,7 +21,7 @@ AI code generators (Copilot, Cursor, Claude, ChatGPT, etc.) write code fast —
|
|
|
21
21
|
|
|
22
22
|
| | ESLint / Biome | SonarQube | Semgrep / CodeQL | **Judges** |
|
|
23
23
|
|---|---|---|---|---|
|
|
24
|
-
| **Scope** | Style + some bugs | Bugs + code smells | Security patterns | **
|
|
24
|
+
| **Scope** | Style + some bugs | Bugs + code smells | Security patterns | **45 domains**: security, cost, compliance, a11y, API design, cloud, UX, … |
|
|
25
25
|
| **AI-generated code focus** | No | No | Partial | **Purpose-built** for AI output failure modes |
|
|
26
26
|
| **Setup** | Config per project | Server + scanner | Cloud or local | **One command**: `npx @kevinrabun/judges eval file.ts` |
|
|
27
27
|
| **Auto-fix patches** | Some | No | No | **114 deterministic patches** — instant, offline |
|
|
@@ -79,7 +79,7 @@ judges eval --min-score 80 src/api.ts
|
|
|
79
79
|
# One-line summary for scripts
|
|
80
80
|
judges eval --summary src/api.ts
|
|
81
81
|
|
|
82
|
-
# List all
|
|
82
|
+
# List all 45 judges
|
|
83
83
|
judges list
|
|
84
84
|
```
|
|
85
85
|
|
|
@@ -190,7 +190,7 @@ npm run build
|
|
|
190
190
|
|
|
191
191
|
### 2. Try the Demo
|
|
192
192
|
|
|
193
|
-
Run the included demo to see all
|
|
193
|
+
Run the included demo to see all 45 judges evaluate a purposely flawed API server:
|
|
194
194
|
|
|
195
195
|
```bash
|
|
196
196
|
npm run demo
|
|
@@ -293,7 +293,7 @@ Install the **[Judges Panel](https://marketplace.visualstudio.com/items?itemName
|
|
|
293
293
|
|
|
294
294
|
- **Inline diagnostics & quick-fixes** on every file save
|
|
295
295
|
- **`@judges` chat participant** — type `@judges` in Copilot Chat, or just ask for a "judges panel review" and Copilot routes automatically
|
|
296
|
-
- **Auto-configured MCP server** — all
|
|
296
|
+
- **Auto-configured MCP server** — all 45 expert-persona prompts available to Copilot with zero setup
|
|
297
297
|
|
|
298
298
|
```bash
|
|
299
299
|
code --install-extension kevinrabun.judges-panel
|
|
@@ -420,7 +420,7 @@ All commands support `--help` for usage details.
|
|
|
420
420
|
|
|
421
421
|
### `judges eval`
|
|
422
422
|
|
|
423
|
-
Evaluate a file with all
|
|
423
|
+
Evaluate a file with all 45 judges or a single judge.
|
|
424
424
|
|
|
425
425
|
| Flag | Description |
|
|
426
426
|
|------|-------------|
|
|
@@ -665,6 +665,7 @@ const svg2 = generateBadgeSvg(75, "quality"); // custom label
|
|
|
665
665
|
| **Multi-Turn Coherence** | Code Coherence & Consistency | `COH-` | Self-contradicting patterns, duplicate definitions, dead code, inconsistent naming |
|
|
666
666
|
| **Model Fingerprint Detection** | AI Code Provenance & Model Attribution | `MFPR-` | Detects stylistic fingerprints characteristic of specific AI code generators |
|
|
667
667
|
| **Over-Engineering** | Simplicity & Pragmatism | `OVER-` | Unnecessary abstractions, wrapper-mania, premature generalization, over-complex patterns |
|
|
668
|
+
| **Logic Review** | Semantic Correctness & Logic Integrity | `LOGIC-` | Inverted conditions, dead code, name-body mismatch, off-by-one, incomplete control flow |
|
|
668
669
|
| **False-Positive Review** | False Positive Detection & Finding Accuracy | `FPR-` | Meta-judge reviewing pattern-based findings for false positives: string literal context, comment/docstring matches, test scaffolding, IaC template gating |
|
|
669
670
|
<!-- JUDGES_TABLE_END -->
|
|
670
671
|
|
|
@@ -678,13 +679,13 @@ The tribunal operates in three layers:
|
|
|
678
679
|
|
|
679
680
|
2. **AST-Based Structural Analysis** — The Code Structure judge (`STRUCT-*` rules) uses real Abstract Syntax Tree parsing to measure cyclomatic complexity, nesting depth, function length, parameter count, dead code, and type safety with precision that regex cannot achieve. All supported languages — **TypeScript, JavaScript, Python, Rust, Go, Java, C#, and C++** — are parsed via **tree-sitter WASM grammars** (real syntax trees compiled to WebAssembly, in-process, zero native dependencies). A scope-tracking structural parser is kept as a fallback when WASM grammars are unavailable. No external AST server required.
|
|
680
681
|
|
|
681
|
-
3. **LLM-Powered Deep Analysis (Prompts)** — The server exposes MCP prompts (e.g., `judge-data-security`, `full-tribunal`) that provide each judge's expert persona as a system prompt. When used by an LLM-based client (Copilot, Claude, Cursor, etc.), the host LLM performs deeper, context-aware probabilistic analysis beyond what static patterns can detect. This is where the `systemPrompt` on each judge comes alive — Judges itself makes no LLM calls, but it provides the expert criteria so your AI assistant can act as
|
|
682
|
+
3. **LLM-Powered Deep Analysis (Prompts)** — The server exposes MCP prompts (e.g., `judge-data-security`, `full-tribunal`) that provide each judge's expert persona as a system prompt. When used by an LLM-based client (Copilot, Claude, Cursor, etc.), the host LLM performs deeper, context-aware probabilistic analysis beyond what static patterns can detect. This is where the `systemPrompt` on each judge comes alive — Judges itself makes no LLM calls, but it provides the expert criteria so your AI assistant can act as 45 specialized reviewers.
|
|
682
683
|
|
|
683
684
|
---
|
|
684
685
|
|
|
685
686
|
## Composable by Design
|
|
686
687
|
|
|
687
|
-
Judges Panel is a **dual-layer** review system: instant **deterministic tools** (offline, no API keys) for pattern and AST analysis, plus **
|
|
688
|
+
Judges Panel is a **dual-layer** review system: instant **deterministic tools** (offline, no API keys) for pattern and AST analysis, plus **45 expert-persona MCP prompts** that unlock LLM-powered deep analysis when connected to an AI client. It does not try to be a CVE scanner or a linter. Those capabilities belong in dedicated MCP servers that an AI agent can orchestrate alongside Judges.
|
|
688
689
|
|
|
689
690
|
### Built-in AST Analysis (v2.0.0+)
|
|
690
691
|
|
|
@@ -733,7 +734,7 @@ When your AI coding assistant connects to multiple MCP servers, each one contrib
|
|
|
733
734
|
|
|
734
735
|
| Layer | What It Does | Example Servers |
|
|
735
736
|
|-------|-------------|-----------------|
|
|
736
|
-
| **Judges Panel** |
|
|
737
|
+
| **Judges Panel** | 45-judge quality gate — security patterns, AST analysis, cost, scalability, a11y, compliance, sovereignty, ethics, dependency health, agent instruction governance, AI code safety, framework safety | This server |
|
|
737
738
|
| **CVE / SBOM** | Vulnerability scanning against live databases — known CVEs, license risks, supply chain | OSV, Snyk, Trivy, Grype MCP servers |
|
|
738
739
|
| **Linting** | Language-specific style and correctness rules | ESLint, Ruff, Clippy MCP servers |
|
|
739
740
|
| **Runtime Profiling** | Memory, CPU, latency measurement on running code | Custom profiling MCP servers |
|
|
@@ -887,7 +888,7 @@ Generated from https://github.com/microsoft/vscode on 2026-02-21T12:00:00.000Z.
|
|
|
887
888
|
List all available judges with their domains and descriptions.
|
|
888
889
|
|
|
889
890
|
### `evaluate_code`
|
|
890
|
-
Submit code to the **full judges panel**. all
|
|
891
|
+
Submit code to the **full judges panel**. all 45 judges evaluate independently and return a combined verdict.
|
|
891
892
|
|
|
892
893
|
| Parameter | Type | Required | Description |
|
|
893
894
|
|-----------|------|----------|-------------|
|
|
@@ -911,7 +912,7 @@ Submit code to a **specific judge** for targeted review.
|
|
|
911
912
|
| `config` | object | no | Inline configuration (see [Configuration](#configuration)) |
|
|
912
913
|
|
|
913
914
|
### `evaluate_project`
|
|
914
|
-
Submit multiple files for **project-level analysis**. all
|
|
915
|
+
Submit multiple files for **project-level analysis**. all 45 judges evaluate each file, plus cross-file architectural analysis detects code duplication, inconsistent error handling, and dependency cycles.
|
|
915
916
|
|
|
916
917
|
| Parameter | Type | Required | Description |
|
|
917
918
|
|-----------|------|----------|-------------|
|
|
@@ -922,7 +923,7 @@ Submit multiple files for **project-level analysis**. all 44 judges evaluate eac
|
|
|
922
923
|
| `config` | object | no | Inline configuration (see [Configuration](#configuration)) |
|
|
923
924
|
|
|
924
925
|
### `evaluate_diff`
|
|
925
|
-
Evaluate only the **changed lines** in a code diff. Runs all
|
|
926
|
+
Evaluate only the **changed lines** in a code diff. Runs all 45 judges on the full file but filters findings to lines you specify. Ideal for PR reviews and incremental analysis.
|
|
926
927
|
|
|
927
928
|
| Parameter | Type | Required | Description |
|
|
928
929
|
|-----------|------|----------|-------------|
|
|
@@ -999,8 +1000,9 @@ Each judge has a corresponding prompt for LLM-powered deep analysis:
|
|
|
999
1000
|
| `judge-multi-turn-coherence` | Deep review of code coherence: self-contradictions, duplicate definitions, dead code |
|
|
1000
1001
|
| `judge-model-fingerprint` | Deep review of AI code provenance and model attribution fingerprints |
|
|
1001
1002
|
| `judge-over-engineering` | Deep review of unnecessary abstractions, wrapper-mania, premature generalization |
|
|
1003
|
+
| `judge-logic-review` | Deep review of logic correctness, semantic mismatches, and dead code in AI-generated code |
|
|
1002
1004
|
| `judge-false-positive-review` | Meta-judge review of pattern-based findings for false positive detection and accuracy |
|
|
1003
|
-
| `full-tribunal` | all
|
|
1005
|
+
| `full-tribunal` | all 45 judges in a single prompt |
|
|
1004
1006
|
<!-- PROMPTS_TABLE_END -->
|
|
1005
1007
|
|
|
1006
1008
|
---
|
|
@@ -1123,7 +1125,7 @@ Each judge scores the code from **0 to 100**:
|
|
|
1123
1125
|
- **WARNING** — Any high finding, any medium finding, or score < 80
|
|
1124
1126
|
- **PASS** — Score ≥ 80 with no critical, high, or medium findings
|
|
1125
1127
|
|
|
1126
|
-
The **overall tribunal score** is the average of all
|
|
1128
|
+
The **overall tribunal score** is the average of all 45 judges. The overall verdict fails if **any** judge fails.
|
|
1127
1129
|
|
|
1128
1130
|
---
|
|
1129
1131
|
|
|
@@ -1260,7 +1262,7 @@ judges/
|
|
|
1260
1262
|
| `judges config export` | Export config as shareable package |
|
|
1261
1263
|
| `judges config import <src>` | Import a shared configuration |
|
|
1262
1264
|
| `judges compare` | Compare judges against other code review tools |
|
|
1263
|
-
| `judges list` | List all
|
|
1265
|
+
| `judges list` | List all 45 judges with domains and descriptions |
|
|
1264
1266
|
|
|
1265
1267
|
---
|
|
1266
1268
|
|
package/dist/api.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export type { Severity, Verdict, Finding, Patch, LangFamily, JudgesConfig, RuleO
|
|
|
12
12
|
export { JudgesError, ConfigError, EvaluationError, ParseError } from "./errors.js";
|
|
13
13
|
export { parseConfig, defaultConfig, mergeConfigs, discoverCascadingConfigs, loadCascadingConfig, loadPluginJudges, validatePluginSpecifiers, isValidJudgeDefinition, applyOverridesForFile, applyLanguageProfile, resolveExtendsConfig, } from "./config.js";
|
|
14
14
|
export { JUDGES, getJudge, getJudgeSummaries } from "./judges/index.js";
|
|
15
|
-
export { evaluateWithJudge, evaluateWithTribunal, evaluateProject, evaluateDiff, analyzeDependencies, enrichWithPatches, crossEvaluatorDedup, diffFindings, formatFindingDiff, evaluateNetChangeGate, applyInlineSuppressions, applyInlineSuppressionsWithAudit, runAppBuilderWorkflow, formatVerdictAsMarkdown, formatEvaluationAsMarkdown, clearEvaluationCaches, } from "./evaluators/index.js";
|
|
15
|
+
export { evaluateWithJudge, evaluateWithTribunal, evaluateProject, evaluateDiff, analyzeDependencies, enrichWithPatches, crossEvaluatorDedup, diffFindings, formatFindingDiff, evaluateNetChangeGate, applyInlineSuppressions, applyInlineSuppressionsWithAudit, runAppBuilderWorkflow, formatVerdictAsMarkdown, formatEvaluationAsMarkdown, clearEvaluationCaches, scanProjectWideSecurityPatterns, } from "./evaluators/index.js";
|
|
16
16
|
export type { FindingDiff, NetChangeGateOptions, NetChangeGateResult } from "./evaluators/index.js";
|
|
17
17
|
export { evaluateCodeV2, evaluateProjectV2, getSupportedPolicyProfiles } from "./evaluators/v2.js";
|
|
18
18
|
export { analyzeCrossFileTaint } from "./ast/cross-file-taint.js";
|
package/dist/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,YAAY,EACV,QAAQ,EACR,OAAO,EACP,OAAO,EACP,KAAK,EACL,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,cAAc,EACd,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGpF,OAAO,EACL,WAAW,EACX,aAAa,EACb,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAIxE,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,gCAAgC,EAChC,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/api.js
CHANGED
|
@@ -15,7 +15,7 @@ export { parseConfig, defaultConfig, mergeConfigs, discoverCascadingConfigs, loa
|
|
|
15
15
|
// ─── Judge Registry ──────────────────────────────────────────────────────────
|
|
16
16
|
export { JUDGES, getJudge, getJudgeSummaries } from "./judges/index.js";
|
|
17
17
|
// ─── Core Evaluation Functions ───────────────────────────────────────────────
|
|
18
|
-
export { evaluateWithJudge, evaluateWithTribunal, evaluateProject, evaluateDiff, analyzeDependencies, enrichWithPatches, crossEvaluatorDedup, diffFindings, formatFindingDiff, evaluateNetChangeGate, applyInlineSuppressions, applyInlineSuppressionsWithAudit, runAppBuilderWorkflow, formatVerdictAsMarkdown, formatEvaluationAsMarkdown, clearEvaluationCaches, } from "./evaluators/index.js";
|
|
18
|
+
export { evaluateWithJudge, evaluateWithTribunal, evaluateProject, evaluateDiff, analyzeDependencies, enrichWithPatches, crossEvaluatorDedup, diffFindings, formatFindingDiff, evaluateNetChangeGate, applyInlineSuppressions, applyInlineSuppressionsWithAudit, runAppBuilderWorkflow, formatVerdictAsMarkdown, formatEvaluationAsMarkdown, clearEvaluationCaches, scanProjectWideSecurityPatterns, } from "./evaluators/index.js";
|
|
19
19
|
// ─── V2 Policy-Aware API ────────────────────────────────────────────────────
|
|
20
20
|
export { evaluateCodeV2, evaluateProjectV2, getSupportedPolicyProfiles } from "./evaluators/v2.js";
|
|
21
21
|
// ─── Cross-File Taint Analysis ───────────────────────────────────────────────
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAiCH,gFAAgF;AAChF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEpF,gFAAgF;AAChF,OAAO,EACL,WAAW,EACX,aAAa,EACb,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAErB,gFAAgF;AAChF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAExE,gFAAgF;AAEhF,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,gCAAgC,EAChC,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AA4ZH;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAcnD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAQzE;AAiBD,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,MAAM,EAAE,CAwBnF;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AA4ZH;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAcnD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAQzE;AAiBD,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,MAAM,EAAE,CAwBnF;AAgRD,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuiB1D"}
|
package/dist/cli.js
CHANGED
|
@@ -548,6 +548,7 @@ function formatTribunalOutput(verdict, format, filePath) {
|
|
|
548
548
|
function formatTextOutput(verdict) {
|
|
549
549
|
const lines = [];
|
|
550
550
|
const totalFindings = verdict.evaluations.reduce((s, e) => s + e.findings.length, 0);
|
|
551
|
+
const fixableCount = verdict.evaluations.reduce((s, e) => s + e.findings.filter((f) => f.patch).length, 0);
|
|
551
552
|
lines.push("╔══════════════════════════════════════════════════════════════╗");
|
|
552
553
|
lines.push("║ Judges Panel — Evaluation Result ║");
|
|
553
554
|
lines.push("╚══════════════════════════════════════════════════════════════╝");
|
|
@@ -556,7 +557,7 @@ function formatTextOutput(verdict) {
|
|
|
556
557
|
lines.push(` Score : ${verdict.overallScore}/100`);
|
|
557
558
|
lines.push(` Critical : ${verdict.criticalCount}`);
|
|
558
559
|
lines.push(` High : ${verdict.highCount}`);
|
|
559
|
-
lines.push(` Findings : ${totalFindings}`);
|
|
560
|
+
lines.push(` Findings : ${totalFindings}${fixableCount > 0 ? ` (${fixableCount} auto-fixable)` : ""}`);
|
|
560
561
|
lines.push(` Judges : ${verdict.evaluations.length}`);
|
|
561
562
|
lines.push("");
|
|
562
563
|
// Per-judge table
|
|
@@ -611,7 +612,8 @@ function formatTextOutput(verdict) {
|
|
|
611
612
|
lines.push(" Critical & High Findings:");
|
|
612
613
|
lines.push(" " + "─".repeat(60));
|
|
613
614
|
for (const f of critical.slice(0, 20)) {
|
|
614
|
-
|
|
615
|
+
const fixTag = f.patch ? " 🔧" : "";
|
|
616
|
+
lines.push(` [${f.severity.toUpperCase().padEnd(8)}] ${f.ruleId}: ${f.title}${fixTag}`);
|
|
615
617
|
if (f.lineNumbers && f.lineNumbers.length > 0) {
|
|
616
618
|
lines.push(` Line ${f.lineNumbers[0]}: ${f.description.slice(0, 100)}`);
|
|
617
619
|
}
|
|
@@ -631,6 +633,9 @@ function formatTextOutput(verdict) {
|
|
|
631
633
|
else {
|
|
632
634
|
lines.push(" ✅ PASS — No critical issues detected.");
|
|
633
635
|
}
|
|
636
|
+
if (fixableCount > 0) {
|
|
637
|
+
lines.push(` 🔧 ${fixableCount} finding(s) can be auto-fixed. Run: judges eval <file> --fix`);
|
|
638
|
+
}
|
|
634
639
|
lines.push("");
|
|
635
640
|
return lines.join("\n");
|
|
636
641
|
}
|
|
@@ -927,6 +932,7 @@ export async function runCli(argv) {
|
|
|
927
932
|
let totalHigh = 0;
|
|
928
933
|
let failCount = 0;
|
|
929
934
|
let totalFixed = 0;
|
|
935
|
+
let totalFixable = 0;
|
|
930
936
|
for (let idx = 0; idx < files.length; idx++) {
|
|
931
937
|
const filePath = files[idx];
|
|
932
938
|
const relPath = relative(resolve("."), filePath);
|
|
@@ -944,14 +950,17 @@ export async function runCli(argv) {
|
|
|
944
950
|
verdict.findings = verdict.findings.filter((f) => !isBaselined(f, loadedBaseline, fileCode, relPath));
|
|
945
951
|
}
|
|
946
952
|
const fileFindings = verdict.evaluations.reduce((s, e) => s + e.findings.length, 0);
|
|
953
|
+
const fileFixable = verdict.evaluations.reduce((s, e) => s + e.findings.filter((f) => f.patch).length, 0);
|
|
947
954
|
totalFindings += fileFindings;
|
|
955
|
+
totalFixable += fileFixable;
|
|
948
956
|
totalCritical += verdict.criticalCount;
|
|
949
957
|
totalHigh += verdict.highCount;
|
|
950
958
|
if (verdict.overallVerdict === "fail")
|
|
951
959
|
failCount++;
|
|
952
960
|
if (!args.quiet) {
|
|
953
961
|
const icon = verdict.overallVerdict === "pass" ? "✅" : verdict.overallVerdict === "warning" ? "⚠️" : "❌";
|
|
954
|
-
|
|
962
|
+
const fixSuffix = fileFixable > 0 ? `, ${fileFixable} fixable` : "";
|
|
963
|
+
process.stderr.write(` ${icon} ${verdict.overallScore}/100 (${fileFindings} findings${fixSuffix})\n`);
|
|
955
964
|
}
|
|
956
965
|
// Auto-fix in multi-file mode
|
|
957
966
|
if (args.fix) {
|
|
@@ -980,7 +989,7 @@ export async function runCli(argv) {
|
|
|
980
989
|
console.log("╚══════════════════════════════════════════════════════════════╝");
|
|
981
990
|
console.log("");
|
|
982
991
|
console.log(` Files : ${files.length}`);
|
|
983
|
-
console.log(` Findings : ${totalFindings}`);
|
|
992
|
+
console.log(` Findings : ${totalFindings}${totalFixable > 0 ? ` (${totalFixable} auto-fixable)` : ""}`);
|
|
984
993
|
console.log(` Critical : ${totalCritical}`);
|
|
985
994
|
console.log(` High : ${totalHigh}`);
|
|
986
995
|
console.log(` Failed : ${failCount} file(s)`);
|
|
@@ -1019,7 +1028,7 @@ export async function runCli(argv) {
|
|
|
1019
1028
|
}
|
|
1020
1029
|
const elapsed = Date.now() - startTime;
|
|
1021
1030
|
if (args.summary) {
|
|
1022
|
-
printSummaryLine(evaluation.verdict, evaluation.score, evaluation.findings.length);
|
|
1031
|
+
printSummaryLine(evaluation.verdict, evaluation.score, evaluation.findings.length, evaluation.findings.filter((f) => f.patch).length);
|
|
1023
1032
|
}
|
|
1024
1033
|
else if (args.format === "json") {
|
|
1025
1034
|
console.log(JSON.stringify(evaluation, null, 2));
|
|
@@ -1118,7 +1127,8 @@ export async function runCli(argv) {
|
|
|
1118
1127
|
const elapsed = Date.now() - startTime;
|
|
1119
1128
|
if (args.summary) {
|
|
1120
1129
|
const totalFindings = verdict.evaluations.reduce((s, e) => s + e.findings.length, 0);
|
|
1121
|
-
|
|
1130
|
+
const totalFixable = verdict.evaluations.reduce((s, e) => s + e.findings.filter((f) => f.patch).length, 0);
|
|
1131
|
+
printSummaryLine(verdict.overallVerdict, verdict.overallScore, totalFindings, totalFixable);
|
|
1122
1132
|
}
|
|
1123
1133
|
else if (args.format === "html") {
|
|
1124
1134
|
console.log(verdictToHtml(verdict, resolvedPath || args.file));
|
|
@@ -1182,9 +1192,10 @@ export async function runCli(argv) {
|
|
|
1182
1192
|
// Baseline loading and matching is now handled by src/commands/baseline.ts
|
|
1183
1193
|
// Exports: loadBaselineData, isBaselined, LoadedBaseline
|
|
1184
1194
|
// ─── Summary Line Output ───────────────────────────────────────────────────
|
|
1185
|
-
function printSummaryLine(verdict, score, findings) {
|
|
1195
|
+
function printSummaryLine(verdict, score, findings, fixable = 0) {
|
|
1186
1196
|
const icon = verdict === "pass" ? "✅" : verdict === "warning" ? "⚠️" : "❌";
|
|
1187
|
-
|
|
1197
|
+
const fixSuffix = fixable > 0 ? `, ${fixable} auto-fixable` : "";
|
|
1198
|
+
console.log(`${icon} ${verdict.toUpperCase()} ${score}/100 (${findings} findings${fixSuffix})`);
|
|
1188
1199
|
}
|
|
1189
1200
|
// ─── Config / Preset Loader ────────────────────────────────────────────────
|
|
1190
1201
|
function loadEvalConfig(args) {
|
|
@@ -1241,6 +1252,14 @@ function loadEvalConfig(args) {
|
|
|
1241
1252
|
}
|
|
1242
1253
|
}
|
|
1243
1254
|
}
|
|
1255
|
+
// 3b. No config found anywhere — apply onboarding preset for first-time users
|
|
1256
|
+
if (!config && !args.config && !args.preset) {
|
|
1257
|
+
const onboarding = getPreset("onboarding");
|
|
1258
|
+
if (onboarding) {
|
|
1259
|
+
config = { ...onboarding.config };
|
|
1260
|
+
console.error("ℹ No .judgesrc found — using onboarding preset (high-severity only). Run 'judges init' for full control.");
|
|
1261
|
+
}
|
|
1262
|
+
}
|
|
1244
1263
|
// 4. Apply config.preset if no CLI --preset was given
|
|
1245
1264
|
if (config?.preset && !args.preset) {
|
|
1246
1265
|
const presetNames = config.preset.split(",").map((n) => n.trim());
|