@kevinrabun/judges 3.20.13 → 3.21.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.
Files changed (57) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/dist/ast/taint-tracker.d.ts +3 -1
  3. package/dist/ast/taint-tracker.d.ts.map +1 -1
  4. package/dist/ast/taint-tracker.js +523 -12
  5. package/dist/ast/taint-tracker.js.map +1 -1
  6. package/dist/evaluators/authentication.d.ts +2 -2
  7. package/dist/evaluators/authentication.d.ts.map +1 -1
  8. package/dist/evaluators/authentication.js +26 -2
  9. package/dist/evaluators/authentication.js.map +1 -1
  10. package/dist/evaluators/cybersecurity.d.ts +2 -2
  11. package/dist/evaluators/cybersecurity.d.ts.map +1 -1
  12. package/dist/evaluators/cybersecurity.js +58 -5
  13. package/dist/evaluators/cybersecurity.js.map +1 -1
  14. package/dist/evaluators/false-positive-review.d.ts.map +1 -1
  15. package/dist/evaluators/false-positive-review.js +104 -10
  16. package/dist/evaluators/false-positive-review.js.map +1 -1
  17. package/dist/evaluators/framework-safety.d.ts.map +1 -1
  18. package/dist/evaluators/framework-safety.js +855 -365
  19. package/dist/evaluators/framework-safety.js.map +1 -1
  20. package/dist/evaluators/index.d.ts.map +1 -1
  21. package/dist/evaluators/index.js +5 -1
  22. package/dist/evaluators/index.js.map +1 -1
  23. package/dist/evaluators/performance.d.ts +2 -2
  24. package/dist/evaluators/performance.d.ts.map +1 -1
  25. package/dist/evaluators/performance.js +33 -4
  26. package/dist/evaluators/performance.js.map +1 -1
  27. package/dist/evaluators/project.d.ts.map +1 -1
  28. package/dist/evaluators/project.js +200 -0
  29. package/dist/evaluators/project.js.map +1 -1
  30. package/dist/evaluators/shared.d.ts +31 -3
  31. package/dist/evaluators/shared.d.ts.map +1 -1
  32. package/dist/evaluators/shared.js +145 -11
  33. package/dist/evaluators/shared.js.map +1 -1
  34. package/dist/language-patterns.d.ts +136 -0
  35. package/dist/language-patterns.d.ts.map +1 -1
  36. package/dist/language-patterns.js +155 -1
  37. package/dist/language-patterns.js.map +1 -1
  38. package/dist/patches/index.d.ts.map +1 -1
  39. package/dist/patches/index.js +210 -0
  40. package/dist/patches/index.js.map +1 -1
  41. package/dist/tools/register-fix.d.ts +6 -0
  42. package/dist/tools/register-fix.d.ts.map +1 -0
  43. package/dist/tools/register-fix.js +153 -0
  44. package/dist/tools/register-fix.js.map +1 -0
  45. package/dist/tools/register-workspace.d.ts +3 -0
  46. package/dist/tools/register-workspace.d.ts.map +1 -0
  47. package/dist/tools/register-workspace.js +215 -0
  48. package/dist/tools/register-workspace.js.map +1 -0
  49. package/dist/tools/register.d.ts +1 -1
  50. package/dist/tools/register.d.ts.map +1 -1
  51. package/dist/tools/register.js +5 -1
  52. package/dist/tools/register.js.map +1 -1
  53. package/dist/tools/schemas.d.ts +2 -2
  54. package/dist/types.d.ts +18 -2
  55. package/dist/types.d.ts.map +1 -1
  56. package/package.json +1 -1
  57. package/server.json +18 -2
package/CHANGELOG.md CHANGED
@@ -2,6 +2,60 @@
2
2
 
3
3
  All notable changes to **@kevinrabun/judges** are documented here.
4
4
 
5
+ ## [3.21.0] — 2026-03-05
6
+
7
+ ### Added — P0: GitHub Action CI/CD
8
+ - **PR inline review comments** — New `pr-review` input in `action.yml` posts findings as inline PR review comments with severity badges, auto-fix hints, and judge attribution
9
+ - **Diff-only mode** — New `diff-only` input restricts analysis to changed files using `git diff`, dramatically reducing CI noise on large repos
10
+ - **Baseline filtering** — New `baseline-file` input suppresses known findings via a baseline JSON, surfacing only new issues in PRs
11
+ - **Improved step summary** — GitHub Actions summary now includes findings table, score badge, and must-fix gate status
12
+
13
+ ### Added — P1: Core Engine Enhancements
14
+ - **AST context in more evaluators** — `AnalyzeContext` interface pipes tree-sitter AST data into cybersecurity (scope-aware taint), performance (async/complexity detection), and authentication (decorator/import awareness) evaluators
15
+ - **`fix_code` MCP tool** — New tool evaluates code and auto-applies all available patches, returning fixed code + summary of remaining findings
16
+ - **Multi-language framework evaluators** — Extended `framework-safety.ts` from JS/TS-only to 8 frameworks: Django (6 rules), Flask (4), FastAPI (1), Spring Boot (6), ASP.NET Core (6), Go/Gin/Echo/Fiber (5)
17
+
18
+ ### Added — P2: Depth & Tooling
19
+ - **20+ new auto-fix patches** — Added patches for Python (7), Go (2), Java (5), C# (4), Rust (2) covering SQL injection, command injection, weak hashing, empty catch, and more
20
+ - **VS Code findings panel** — TreeView-based panel with sort-by-severity/judge, filter controls, go-to-line navigation, and 7 new commands (`judges.showFindingsPanel`, `judges.sortBySeverity`, etc.)
21
+ - **Cross-file type/state tracking** — Three new project-level detectors: `detectSharedMutableState()`, `detectTypeSafetyGaps()`, `detectScatteredEnvAccess()` in `project.ts`
22
+ - **Taint tracker language depth** — Expanded from 5 to 9 language-specific pattern sets with `LanguagePatternSet` interface; each set defines sources, sinks, sanitizers, assign patterns, and guard conditions
23
+
24
+ ### Added — P3: Breadth & Polish
25
+ - **PHP/Ruby/Kotlin/Swift language support** — Added 4 new languages to `LangFamily`, expanded all ~35 pattern constants in `language-patterns.ts`, added 4 complete taint tracker pattern sets (PHP: 7 sources/11 sinks/11 sanitizers, Ruby: 9/11/10, Kotlin: 9/8/8, Swift: 8/9/6)
26
+ - **Performance & snapshot tests** — 3 new test suites: performance budgets (tribunal <5s, per-judge <500ms, evaluateDiff <3s, large-block <15s), rule coverage stability (≥30 judges, 100-600 findings, required families, severity distribution), multi-language pattern coverage (8 tests for PHP/Ruby/Kotlin/Swift)
27
+ - **Framework version awareness** — `detectFrameworkVersions()` extracts versions from 14 manifest/config patterns; `getVersionConfidenceAdjustment()` applies version-specific confidence rules for Django 4+, Spring 3+, Next.js 13+/14+, Express 5+, Rails 6+/7+, Laravel 9+, ASP.NET 8+; integrated into `applyFrameworkAwareness()`
28
+ - **MCP workspace & streaming tools** — 3 new MCP tools: `list_files` (recursive directory listing with skip-dirs), `read_file` (content reading with line-range slicing), `evaluate_with_progress` (progressive judge-by-judge reporting with count updates)
29
+
30
+ ### Changed
31
+ - **MCP tool count** — 10 → 13 tools registered in `server.json`
32
+ - **`applyFrameworkAwareness()` rewritten** — Now combines framework mitigation with version-aware confidence adjustments and stacked provenance notes
33
+ - **`register.ts` modular architecture** — Now orchestrates 4 registration modules: evaluation, workflow, fix, workspace
34
+
35
+ ### Tests
36
+ - 19 new performance/snapshot/multi-language tests in `judges.test.ts`
37
+ - 19 new framework version awareness tests in `subsystems.test.ts`
38
+ - 1006 tests in judges.test.ts, 392 tests in subsystems.test.ts — all passing
39
+
40
+ ## [3.20.14] — 2026-03-04
41
+
42
+ ### Added
43
+ - **Three new FP heuristics (H33–H35)** — Expanded the false-positive filter from 32 to 35 deterministic heuristics:
44
+ - **H33: Destructuring variable extraction** — Suppresses hardcoded-credential findings when the security keyword is a destructured variable name (`const { password } = req.body`), recognizing the code extracts a named field from runtime data
45
+ - **H34: Dictionary/map key access** — Suppresses hardcoded-credential findings when the keyword is a dictionary key being accessed (`data["password"]`, `request.form.get("token")`), not a hardcoded value; excludes LOGPRIV and exposure-related findings
46
+ - **H35: CLI argument/option definitions** — Suppresses findings when the keyword defines a CLI parameter in argparse, click, commander.js, or yargs (`parser.add_argument("--password")`, `.option("--token")`)
47
+ - **Expanded H6 keyword-in-identifier patterns** — Significantly broadened compound-identifier recognition for all five security keywords:
48
+ - `password`: ~25 new suffixes (manager, service, handler, helper, criteria, complexity, expiry, generator, mask, etc.) and ~16 new prefixes (set, get, save, store, update, change, manage, generate, etc.)
49
+ - `secret`: ~14 new suffixes (holder, service, handler, helper, resolver, loader, fetcher, etc.) and ~20 new prefixes (get, set, read, fetch, load, resolve, lookup, rotate, etc.)
50
+ - `token`: ~18 new suffixes (manager, service, handler, provider, factory, builder, cache, parser, etc.) and ~26 new prefixes (get, set, create, generate, fetch, store, validate, revoke, etc.)
51
+ - `delete`: Refined to add safe lifecycle prefixes (soft, hard, mark, pre, post, async, schedule) and safe naming suffixes (scheduled, pending, mark) while deliberately excluding operation-target suffixes (many, all, records) that represent actual data operations
52
+ - `exec`: ~13 new suffixes (command, args, timeout, callback, handler, etc.) and ~12 new prefixes (pre, post, async, remote, batch, parallel, etc.)
53
+ - **Three new safe idiom patterns (H7)** — Added vault/secrets-manager SDK calls, hash/digest function calls, and UI label/placeholder strings as recognized safe contexts
54
+
55
+ ### Tests
56
+ - Added 29 new FP heuristic tests covering all new and expanded heuristics with both FP-suppression and TP-retention validation
57
+ - 1666 tests, 0 failures
58
+
5
59
  ## [3.20.13] — 2026-03-04
6
60
 
7
61
  ### Fixed
@@ -29,7 +29,9 @@ export type TaintSinkKind = "code-execution" | "command-exec" | "sql-query" | "x
29
29
  * dangerous sinks through variable assignments and string concatenation.
30
30
  *
31
31
  * For JS/TS, uses the TypeScript compiler AST for precise variable tracking.
32
- * For other languages, falls back to regex-based lightweight analysis.
32
+ * For Python, Java, Go, C#, and Rust: uses language-specific source/sink/
33
+ * sanitizer patterns for deeper analysis.
34
+ * For other languages, falls back to generic regex-based analysis.
33
35
  */
34
36
  export declare function analyzeTaintFlows(code: string, language: string): TaintFlow[];
35
37
  //# sourceMappingURL=taint-tracker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"taint-tracker.d.ts","sourceRoot":"","sources":["../../src/ast/taint-tracker.ts"],"names":[],"mappings":"AAmBA;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,0CAA0C;IAC1C,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,eAAe,CAAC;KACvB,CAAC;IACF,kDAAkD;IAClD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,aAAa,CAAC;KACrB,CAAC;IACF,qDAAqD;IACrD,aAAa,EAAE,KAAK,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,eAAe,GACvB,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,WAAW,GACX,eAAe,CAAC;AAEpB,MAAM,MAAM,aAAa,GACrB,gBAAgB,GAChB,cAAc,GACd,WAAW,GACX,KAAK,GACL,gBAAgB,GAChB,UAAU,GACV,UAAU,GACV,iBAAiB,CAAC;AAoPtB;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,CAU7E"}
1
+ {"version":3,"file":"taint-tracker.d.ts","sourceRoot":"","sources":["../../src/ast/taint-tracker.ts"],"names":[],"mappings":"AAmBA;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,0CAA0C;IAC1C,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,eAAe,CAAC;KACvB,CAAC;IACF,kDAAkD;IAClD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,aAAa,CAAC;KACrB,CAAC;IACF,qDAAqD;IACrD,aAAa,EAAE,KAAK,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,eAAe,GACvB,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,WAAW,GACX,eAAe,CAAC;AAEpB,MAAM,MAAM,aAAa,GACrB,gBAAgB,GAChB,cAAc,GACd,WAAW,GACX,KAAK,GACL,gBAAgB,GAChB,UAAU,GACV,UAAU,GACV,iBAAiB,CAAC;AAguBtB;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,CAY7E"}