@kevinrabun/judges 2.1.0 → 2.3.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 (133) hide show
  1. package/README.md +60 -9
  2. package/dist/evaluators/accessibility.d.ts.map +1 -1
  3. package/dist/evaluators/accessibility.js +32 -0
  4. package/dist/evaluators/accessibility.js.map +1 -1
  5. package/dist/evaluators/agent-instructions.d.ts.map +1 -1
  6. package/dist/evaluators/agent-instructions.js +59 -0
  7. package/dist/evaluators/agent-instructions.js.map +1 -1
  8. package/dist/evaluators/ai-code-safety.d.ts +9 -0
  9. package/dist/evaluators/ai-code-safety.d.ts.map +1 -0
  10. package/dist/evaluators/ai-code-safety.js +511 -0
  11. package/dist/evaluators/ai-code-safety.js.map +1 -0
  12. package/dist/evaluators/api-design.d.ts.map +1 -1
  13. package/dist/evaluators/api-design.js +31 -16
  14. package/dist/evaluators/api-design.js.map +1 -1
  15. package/dist/evaluators/authentication.d.ts.map +1 -1
  16. package/dist/evaluators/authentication.js +68 -10
  17. package/dist/evaluators/authentication.js.map +1 -1
  18. package/dist/evaluators/backwards-compatibility.d.ts.map +1 -1
  19. package/dist/evaluators/backwards-compatibility.js +25 -3
  20. package/dist/evaluators/backwards-compatibility.js.map +1 -1
  21. package/dist/evaluators/caching.d.ts.map +1 -1
  22. package/dist/evaluators/caching.js +25 -4
  23. package/dist/evaluators/caching.js.map +1 -1
  24. package/dist/evaluators/ci-cd.d.ts.map +1 -1
  25. package/dist/evaluators/ci-cd.js +34 -12
  26. package/dist/evaluators/ci-cd.js.map +1 -1
  27. package/dist/evaluators/cloud-readiness.d.ts.map +1 -1
  28. package/dist/evaluators/cloud-readiness.js +26 -0
  29. package/dist/evaluators/cloud-readiness.js.map +1 -1
  30. package/dist/evaluators/code-structure.d.ts.map +1 -1
  31. package/dist/evaluators/code-structure.js +17 -0
  32. package/dist/evaluators/code-structure.js.map +1 -1
  33. package/dist/evaluators/compliance.d.ts.map +1 -1
  34. package/dist/evaluators/compliance.js +34 -5
  35. package/dist/evaluators/compliance.js.map +1 -1
  36. package/dist/evaluators/concurrency.d.ts.map +1 -1
  37. package/dist/evaluators/concurrency.js +20 -0
  38. package/dist/evaluators/concurrency.js.map +1 -1
  39. package/dist/evaluators/configuration-management.d.ts.map +1 -1
  40. package/dist/evaluators/configuration-management.js +50 -11
  41. package/dist/evaluators/configuration-management.js.map +1 -1
  42. package/dist/evaluators/cost-effectiveness.d.ts.map +1 -1
  43. package/dist/evaluators/cost-effectiveness.js +26 -0
  44. package/dist/evaluators/cost-effectiveness.js.map +1 -1
  45. package/dist/evaluators/cybersecurity.d.ts.map +1 -1
  46. package/dist/evaluators/cybersecurity.js +140 -0
  47. package/dist/evaluators/cybersecurity.js.map +1 -1
  48. package/dist/evaluators/data-security.d.ts.map +1 -1
  49. package/dist/evaluators/data-security.js +105 -0
  50. package/dist/evaluators/data-security.js.map +1 -1
  51. package/dist/evaluators/data-sovereignty.d.ts.map +1 -1
  52. package/dist/evaluators/data-sovereignty.js +85 -0
  53. package/dist/evaluators/data-sovereignty.js.map +1 -1
  54. package/dist/evaluators/database.d.ts.map +1 -1
  55. package/dist/evaluators/database.js +33 -9
  56. package/dist/evaluators/database.js.map +1 -1
  57. package/dist/evaluators/dependency-health.d.ts.map +1 -1
  58. package/dist/evaluators/dependency-health.js +71 -9
  59. package/dist/evaluators/dependency-health.js.map +1 -1
  60. package/dist/evaluators/documentation.d.ts.map +1 -1
  61. package/dist/evaluators/documentation.js +20 -0
  62. package/dist/evaluators/documentation.js.map +1 -1
  63. package/dist/evaluators/error-handling.d.ts.map +1 -1
  64. package/dist/evaluators/error-handling.js +89 -24
  65. package/dist/evaluators/error-handling.js.map +1 -1
  66. package/dist/evaluators/ethics-bias.d.ts.map +1 -1
  67. package/dist/evaluators/ethics-bias.js +20 -0
  68. package/dist/evaluators/ethics-bias.js.map +1 -1
  69. package/dist/evaluators/index.d.ts +2 -1
  70. package/dist/evaluators/index.d.ts.map +1 -1
  71. package/dist/evaluators/index.js +56 -2
  72. package/dist/evaluators/index.js.map +1 -1
  73. package/dist/evaluators/internationalization.d.ts.map +1 -1
  74. package/dist/evaluators/internationalization.js +43 -0
  75. package/dist/evaluators/internationalization.js.map +1 -1
  76. package/dist/evaluators/logging-privacy.d.ts.map +1 -1
  77. package/dist/evaluators/logging-privacy.js +66 -30
  78. package/dist/evaluators/logging-privacy.js.map +1 -1
  79. package/dist/evaluators/maintainability.d.ts.map +1 -1
  80. package/dist/evaluators/maintainability.js +38 -17
  81. package/dist/evaluators/maintainability.js.map +1 -1
  82. package/dist/evaluators/observability.d.ts.map +1 -1
  83. package/dist/evaluators/observability.js +20 -0
  84. package/dist/evaluators/observability.js.map +1 -1
  85. package/dist/evaluators/performance.d.ts.map +1 -1
  86. package/dist/evaluators/performance.js +30 -0
  87. package/dist/evaluators/performance.js.map +1 -1
  88. package/dist/evaluators/portability.d.ts.map +1 -1
  89. package/dist/evaluators/portability.js +22 -0
  90. package/dist/evaluators/portability.js.map +1 -1
  91. package/dist/evaluators/rate-limiting.d.ts.map +1 -1
  92. package/dist/evaluators/rate-limiting.js +33 -10
  93. package/dist/evaluators/rate-limiting.js.map +1 -1
  94. package/dist/evaluators/reliability.d.ts.map +1 -1
  95. package/dist/evaluators/reliability.js +20 -0
  96. package/dist/evaluators/reliability.js.map +1 -1
  97. package/dist/evaluators/scalability.d.ts.map +1 -1
  98. package/dist/evaluators/scalability.js +24 -0
  99. package/dist/evaluators/scalability.js.map +1 -1
  100. package/dist/evaluators/shared.d.ts.map +1 -1
  101. package/dist/evaluators/shared.js +1 -0
  102. package/dist/evaluators/shared.js.map +1 -1
  103. package/dist/evaluators/software-practices.d.ts.map +1 -1
  104. package/dist/evaluators/software-practices.js +47 -0
  105. package/dist/evaluators/software-practices.js.map +1 -1
  106. package/dist/evaluators/testing.d.ts.map +1 -1
  107. package/dist/evaluators/testing.js +20 -0
  108. package/dist/evaluators/testing.js.map +1 -1
  109. package/dist/evaluators/ux.d.ts.map +1 -1
  110. package/dist/evaluators/ux.js +24 -0
  111. package/dist/evaluators/ux.js.map +1 -1
  112. package/dist/evaluators/v2.d.ts.map +1 -1
  113. package/dist/evaluators/v2.js +6 -4
  114. package/dist/evaluators/v2.js.map +1 -1
  115. package/dist/index.js +25 -1
  116. package/dist/index.js.map +1 -1
  117. package/dist/judges/ai-code-safety.d.ts +3 -0
  118. package/dist/judges/ai-code-safety.d.ts.map +1 -0
  119. package/dist/judges/ai-code-safety.js +45 -0
  120. package/dist/judges/ai-code-safety.js.map +1 -0
  121. package/dist/judges/index.d.ts.map +1 -1
  122. package/dist/judges/index.js +2 -0
  123. package/dist/judges/index.js.map +1 -1
  124. package/dist/language-patterns.js +1 -1
  125. package/dist/language-patterns.js.map +1 -1
  126. package/dist/reports/public-repo-report.d.ts +3 -1
  127. package/dist/reports/public-repo-report.d.ts.map +1 -1
  128. package/dist/reports/public-repo-report.js +136 -9
  129. package/dist/reports/public-repo-report.js.map +1 -1
  130. package/dist/types.d.ts +24 -0
  131. package/dist/types.d.ts.map +1 -1
  132. package/package.json +4 -2
  133. package/server.json +3 -3
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 **33 specialized judges** to evaluate AI-generated code — acting as an independent quality gate regardless of which project is being reviewed. Includes **built-in AST analysis** powered by the TypeScript Compiler API — no separate parser server needed.
3
+ An MCP (Model Context Protocol) server that provides a panel of **34 specialized judges** to evaluate AI-generated code — acting as an independent quality gate regardless of which project is being reviewed. Includes **built-in AST analysis** powered by the TypeScript Compiler API — no separate parser server needed.
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).
@@ -26,7 +26,7 @@ npm run build
26
26
 
27
27
  ### 2. Try the Demo
28
28
 
29
- Run the included demo to see all 33 judges evaluate a purposely flawed API server:
29
+ Run the included demo to see all 34 judges evaluate a purposely flawed API server:
30
30
 
31
31
  ```bash
32
32
  npm run demo
@@ -419,6 +419,9 @@ Clone a **public repository URL**, run the full judges panel across eligible sou
419
419
  | `credentialMode` | string | no | Credential detection mode: `standard` (default) or `strict` |
420
420
  | `includeAstFindings` | boolean | no | Include AST/code-structure findings (default: true) |
421
421
  | `minConfidence` | number | no | Minimum finding confidence to include (0-1, default: 0) |
422
+ | `enableMustFixGate` | boolean | no | Enable must-fix gate summary for high-confidence dangerous findings (default: false) |
423
+ | `mustFixMinConfidence` | number | no | Confidence threshold for must-fix gate triggers (0-1, default: 0.85) |
424
+ | `mustFixDangerousRulePrefixes` | string[] | no | Optional dangerous rule prefixes for gate matching (e.g., `AUTH`, `CYBER`, `DATA`) |
422
425
  | `keepClone` | boolean | no | Keep cloned repo on disk for inspection |
423
426
 
424
427
  **Quick examples**
@@ -436,6 +439,12 @@ npm run report:public-repo -- --repoUrl https://github.com/openclaw/openclaw --i
436
439
 
437
440
  # show only findings at 80%+ confidence
438
441
  npm run report:public-repo -- --repoUrl https://github.com/openclaw/openclaw --minConfidence 0.8 --output reports/openclaw-judges-report-high-confidence.md
442
+
443
+ # include must-fix gate summary in the generated report
444
+ npm run report:public-repo -- --repoUrl https://github.com/openclaw/openclaw --enableMustFixGate true --mustFixMinConfidence 0.9 --mustFixDangerousPrefix AUTH --mustFixDangerousPrefix CYBER --output reports/openclaw-judges-report-mustfix.md
445
+
446
+ # opinionated quick-start mode (recommended first run)
447
+ npm run report:quickstart -- --repoUrl https://github.com/openclaw/openclaw --output reports/openclaw-quickstart.md
439
448
  ```
440
449
 
441
450
  Call from MCP client:
@@ -451,6 +460,9 @@ Call from MCP client:
451
460
  "credentialMode": "strict",
452
461
  "includeAstFindings": false,
453
462
  "minConfidence": 0.8,
463
+ "enableMustFixGate": true,
464
+ "mustFixMinConfidence": 0.9,
465
+ "mustFixDangerousRulePrefixes": ["AUTH", "CYBER", "DATA"],
454
466
  "outputPath": "reports/vscode-judges-report.md"
455
467
  }
456
468
  }
@@ -479,7 +491,7 @@ Generated from https://github.com/microsoft/vscode on 2026-02-21T12:00:00.000Z.
479
491
  List all available judges with their domains and descriptions.
480
492
 
481
493
  ### `evaluate_code`
482
- Submit code to the **full judges panel**. All 33 judges evaluate independently and return a combined verdict.
494
+ Submit code to the **full judges panel**. All 34 judges evaluate independently and return a combined verdict.
483
495
 
484
496
  | Parameter | Type | Required | Description |
485
497
  |-----------|------|----------|-------------|
@@ -501,7 +513,7 @@ Submit code to a **specific judge** for targeted review.
501
513
  | `minConfidence` | number | no | Minimum finding confidence to include (0-1, default: 0) |
502
514
 
503
515
  ### `evaluate_project`
504
- Submit multiple files for **project-level analysis**. All 33 judges evaluate each file, plus cross-file architectural analysis detects code duplication, inconsistent error handling, and dependency cycles.
516
+ Submit multiple files for **project-level analysis**. All 34 judges evaluate each file, plus cross-file architectural analysis detects code duplication, inconsistent error handling, and dependency cycles.
505
517
 
506
518
  | Parameter | Type | Required | Description |
507
519
  |-----------|------|----------|-------------|
@@ -511,7 +523,7 @@ Submit multiple files for **project-level analysis**. All 33 judges evaluate eac
511
523
  | `minConfidence` | number | no | Minimum finding confidence to include (0-1, default: 0) |
512
524
 
513
525
  ### `evaluate_diff`
514
- Evaluate only the **changed lines** in a code diff. Runs all 33 judges on the full file but filters findings to lines you specify. Ideal for PR reviews and incremental analysis.
526
+ Evaluate only the **changed lines** in a code diff. Runs all 34 judges on the full file but filters findings to lines you specify. Ideal for PR reviews and incremental analysis.
515
527
 
516
528
  | Parameter | Type | Required | Description |
517
529
  |-----------|------|----------|-------------|
@@ -533,7 +545,7 @@ Analyze a dependency manifest file for supply-chain risks, version pinning issue
533
545
 
534
546
  #### Judge IDs
535
547
 
536
- `data-security` · `cybersecurity` · `cost-effectiveness` · `scalability` · `cloud-readiness` · `software-practices` · `accessibility` · `api-design` · `reliability` · `observability` · `performance` · `compliance` · `data-sovereignty` · `testing` · `documentation` · `internationalization` · `dependency-health` · `concurrency` · `ethics-bias` · `maintainability` · `error-handling` · `authentication` · `database` · `caching` · `configuration-management` · `backwards-compatibility` · `portability` · `ux` · `logging-privacy` · `rate-limiting` · `ci-cd` · `code-structure` · `agent-instructions`
548
+ `data-security` · `cybersecurity` · `cost-effectiveness` · `scalability` · `cloud-readiness` · `software-practices` · `accessibility` · `api-design` · `reliability` · `observability` · `performance` · `compliance` · `data-sovereignty` · `testing` · `documentation` · `internationalization` · `dependency-health` · `concurrency` · `ethics-bias` · `maintainability` · `error-handling` · `authentication` · `database` · `caching` · `configuration-management` · `backwards-compatibility` · `portability` · `ux` · `logging-privacy` · `rate-limiting` · `ci-cd` · `code-structure` · `agent-instructions` · `ai-code-safety`
537
549
 
538
550
  ---
539
551
 
@@ -576,7 +588,8 @@ Each judge has a corresponding prompt for LLM-powered deep analysis:
576
588
  | `judge-ci-cd` | Deep CI/CD pipeline review |
577
589
  | `judge-code-structure` | Deep AST-based structural analysis review |
578
590
  | `judge-agent-instructions` | Deep review of agent instruction markdown quality and safety |
579
- | `full-tribunal` | All 33 judges in a single prompt |
591
+ | `judge-ai-code-safety` | Deep review of AI-generated code risks: prompt injection, insecure LLM output handling, debug defaults, missing validation |
592
+ | `full-tribunal` | All 34 judges in a single prompt |
580
593
 
581
594
  ---
582
595
 
@@ -597,7 +610,7 @@ Each judge scores the code from **0 to 100**:
597
610
  - **WARNING** — Any high finding, any medium finding, or score < 80
598
611
  - **PASS** — Score ≥ 80 with no critical, high, or medium findings
599
612
 
600
- The **overall tribunal score** is the average of all 33 judges. The overall verdict fails if **any** judge fails.
613
+ The **overall tribunal score** is the average of all 34 judges. The overall verdict fails if **any** judge fails.
601
614
 
602
615
  ---
603
616
 
@@ -623,7 +636,8 @@ judges/
623
636
  │ ├── index.ts # JUDGES array, getJudge(), getJudgeSummaries()
624
637
  │ └── *.ts # One definition per judge (33 files)
625
638
  ├── scripts/
626
- └── generate-public-repo-report.ts # Run: npm run report:public-repo -- --repoUrl <url>
639
+ ├── generate-public-repo-report.ts # Run: npm run report:public-repo -- --repoUrl <url>
640
+ │ └── daily-popular-repo-autofix.ts # Run: npm run automation:daily-popular
627
641
  ├── examples/
628
642
  │ ├── sample-vulnerable-api.ts # Intentionally flawed code (triggers all judges)
629
643
  │ └── demo.ts # Run: npm run demo
@@ -646,11 +660,48 @@ judges/
646
660
  | `npm test` | Run the full test suite |
647
661
  | `npm run demo` | Run the sample tribunal demo |
648
662
  | `npm run report:public-repo -- --repoUrl <url>` | Generate a full tribunal report for a public repository URL |
663
+ | `npm run report:quickstart -- --repoUrl <url>` | Run opinionated high-signal report defaults for fast adoption |
664
+ | `npm run automation:daily-popular` | Analyze up to 10 rotating popular repos/day and open up to 5 remediation PRs per repo |
649
665
  | `npm start` | Start the MCP server |
650
666
  | `npm run clean` | Remove `dist/` |
651
667
 
652
668
  ---
653
669
 
670
+ ## Daily Popular Repo Automation
671
+
672
+ This repo includes a scheduled workflow at `.github/workflows/daily-popular-repo-autofix.yml` that:
673
+ - selects up to 10 repositories per day from a default pool of 100+ popular repos (or a manually supplied target),
674
+ - runs the full Judges evaluation across supported source languages,
675
+ - applies only conservative, single-line remediations that reduce matching finding counts,
676
+ - opens up to 5 PRs per repository with attribution to both Judges and the target repository,
677
+ - skips repositories unless they are public and PR creation is possible with existing GitHub auth (no additional auth flow).
678
+ - enforces hard runtime caps of 10 repositories/day and 5 PRs/repository.
679
+
680
+ Each run writes `daily-autofix-summary.json` (or `SUMMARY_PATH`) with per-repository telemetry, including:
681
+ - `runAggregate` — compact run-level totals and cross-repo top prioritized rules,
682
+ - `runAggregate.totalCandidatesDiscovered` and `runAggregate.totalCandidatesAfterLocationDedupe` — signal how much overlap was removed before attempting fixes,
683
+ - `runAggregate.totalCandidatesAfterPriorityThreshold` — candidates that remain after applying minimum priority score,
684
+ - `runAggregate.dedupeReductionPercent` — percent reduction from location dedupe for quick runtime-efficiency tracking,
685
+ - `runAggregate.priorityThresholdReductionPercent` — percent reduction from minimum-priority filtering after dedupe,
686
+ - `priorityRulePrefixesUsed` — dangerous rule prefixes used during prioritization,
687
+ - `minPriorityScoreUsed` — minimum `candidatePriorityScore` applied for candidate inclusion,
688
+ - `candidatesDiscovered`, `candidatesAfterLocationDedupe`, and `candidatesAfterPriorityThreshold` — per-repo candidate counts after each filter stage,
689
+ - `topPrioritizedRuleCounts` — most common rule IDs among ranked candidates,
690
+ - `topPrioritizedCandidates` — top ranked candidate samples (rule, severity, confidence, file, line, priority score).
691
+
692
+ Optional runtime control:
693
+ - `AUTOFIX_MIN_PRIORITY_SCORE` — minimum candidate priority score required after dedupe (default: `0`, disabled).
694
+
695
+ Required secret:
696
+ - `JUDGES_AUTOFIX_GH_TOKEN` — GitHub token with permission to fork/push/create PRs for target repositories.
697
+
698
+ Manual run:
699
+ ```bash
700
+ gh workflow run "Judges Daily Full-Run Autofix PRs" -f targetRepoUrl=https://github.com/owner/repo
701
+ ```
702
+
703
+ ---
704
+
654
705
  ## License
655
706
 
656
707
  MIT
@@ -1 +1 @@
1
- {"version":3,"file":"accessibility.d.ts","sourceRoot":"","sources":["../../src/evaluators/accessibility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAItC,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE,CAkU9E"}
1
+ {"version":3,"file":"accessibility.d.ts","sourceRoot":"","sources":["../../src/evaluators/accessibility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE,CAkW9E"}
@@ -21,6 +21,8 @@ export function analyzeAccessibility(code, language) {
21
21
  lineNumbers: imgNoAltLines,
22
22
  recommendation: "Add meaningful alt text describing the image content. Use alt=\"\" only for purely decorative images.",
23
23
  reference: "WCAG 2.1 SC 1.1.1 Non-text Content",
24
+ suggestedFix: "Add descriptive alt text: <img src=\"photo.jpg\" alt=\"Team photo at annual conference\"> or alt=\"\" for decorative images.",
25
+ confidence: 0.85,
24
26
  });
25
27
  }
26
28
  // Detect click handlers without keyboard equivalents
@@ -39,6 +41,8 @@ export function analyzeAccessibility(code, language) {
39
41
  lineNumbers: clickNoKeyLines,
40
42
  recommendation: "Add onKeyDown or onKeyPress handlers alongside onClick. Ensure all interactive elements are keyboard accessible.",
41
43
  reference: "WCAG 2.1 SC 2.1.1 Keyboard",
44
+ suggestedFix: "Add keyboard support: <button onClick={handler} onKeyDown={(e) => e.key === 'Enter' && handler()}> or use native <button> elements which handle this automatically.",
45
+ confidence: 0.75,
42
46
  });
43
47
  }
44
48
  // Detect non-semantic elements used for structure
@@ -57,6 +61,8 @@ export function analyzeAccessibility(code, language) {
57
61
  lineNumbers: nonSemanticLines,
58
62
  recommendation: "Use semantic HTML elements (button, a, h1-h6, nav, main) instead of divs with ARIA roles.",
59
63
  reference: "WCAG 2.1 SC 4.1.2 Name, Role, Value",
64
+ suggestedFix: "Replace <div role=\"button\"> with <button>, <div role=\"link\"> with <a href>, <div role=\"navigation\"> with <nav>, etc.",
65
+ confidence: 0.85,
60
66
  });
61
67
  }
62
68
  // Detect missing form labels
@@ -75,6 +81,8 @@ export function analyzeAccessibility(code, language) {
75
81
  lineNumbers: inputNoLabelLines,
76
82
  recommendation: "Associate each input with a <label> element using for/id, or use aria-label / aria-labelledby.",
77
83
  reference: "WCAG 2.1 SC 1.3.1 Info and Relationships",
84
+ suggestedFix: "Associate labels: <label htmlFor=\"email\">Email</label><input id=\"email\"> or use aria-label={\"Email address\"} directly on the input.",
85
+ confidence: 0.85,
78
86
  });
79
87
  }
80
88
  // Detect tabIndex > 0
@@ -93,6 +101,8 @@ export function analyzeAccessibility(code, language) {
93
101
  lineNumbers: tabIndexLines,
94
102
  recommendation: "Use tabIndex={0} to add to natural tab order or tabIndex={-1} for programmatic focus only. Never use positive values.",
95
103
  reference: "WCAG 2.1 SC 2.4.3 Focus Order",
104
+ suggestedFix: "Replace tabIndex={5} with tabIndex={0} to add to natural tab order, or tabIndex={-1} for programmatic focus only.",
105
+ confidence: 0.9,
96
106
  });
97
107
  }
98
108
  // Detect color-only status indicators
@@ -111,6 +121,8 @@ export function analyzeAccessibility(code, language) {
111
121
  lineNumbers: colorOnlyLines,
112
122
  recommendation: "Use text labels, icons, or patterns in addition to color to convey status information.",
113
123
  reference: "WCAG 2.1 SC 1.4.1 Use of Color",
124
+ suggestedFix: "Add text or icon alongside color: <span className=\"error\"><ErrorIcon /> {errorMessage}</span> instead of relying on red color alone.",
125
+ confidence: 0.75,
114
126
  });
115
127
  }
116
128
  // Detect autoplay media
@@ -129,6 +141,8 @@ export function analyzeAccessibility(code, language) {
129
141
  lineNumbers: autoplayLines,
130
142
  recommendation: "Avoid autoplay or provide a mechanism to pause/stop/mute within the first 3 seconds.",
131
143
  reference: "WCAG 2.1 SC 1.4.2 Audio Control",
144
+ suggestedFix: "Remove autoplay or add muted: <video muted autoPlay> and provide visible pause/stop controls within the first 3 seconds.",
145
+ confidence: 0.9,
132
146
  });
133
147
  }
134
148
  // Missing lang attribute on html element
@@ -147,6 +161,8 @@ export function analyzeAccessibility(code, language) {
147
161
  lineNumbers: htmlNoLangLines,
148
162
  recommendation: "Add lang attribute: <html lang=\"en\">. Use the appropriate BCP 47 language tag.",
149
163
  reference: "WCAG 2.1 SC 3.1.1 Language of Page",
164
+ suggestedFix: "Add language attribute: <html lang=\"en\"> using the appropriate BCP 47 language tag for your content.",
165
+ confidence: 0.85,
150
166
  });
151
167
  }
152
168
  // Skip navigation link missing
@@ -160,6 +176,8 @@ export function analyzeAccessibility(code, language) {
160
176
  description: "Pages with navigation should include a 'Skip to main content' link so keyboard users can bypass repetitive navigation.",
161
177
  recommendation: "Add a visually hidden 'Skip to main content' link as the first focusable element on the page.",
162
178
  reference: "WCAG 2.1 SC 2.4.1 Bypass Blocks",
179
+ suggestedFix: "Add a skip link as the first focusable element: <a href=\"#main-content\" className=\"sr-only focus:not-sr-only\">Skip to main content</a>.",
180
+ confidence: 0.7,
163
181
  });
164
182
  }
165
183
  // Focus management — outline:none without replacement
@@ -181,6 +199,8 @@ export function analyzeAccessibility(code, language) {
181
199
  lineNumbers: outlineNoneLines,
182
200
  recommendation: "If removing outline, provide a visible alternative focus indicator (box-shadow, border, custom :focus-visible styles).",
183
201
  reference: "WCAG 2.1 SC 2.4.7 Focus Visible",
202
+ suggestedFix: "Provide alternative focus styles: :focus-visible { outline: 2px solid #4A90D9; outline-offset: 2px; } instead of outline: none.",
203
+ confidence: 0.85,
184
204
  });
185
205
  }
186
206
  // Missing ARIA live regions for dynamic content
@@ -200,6 +220,8 @@ export function analyzeAccessibility(code, language) {
200
220
  lineNumbers: dynamicUpdateLines.slice(0, 5),
201
221
  recommendation: "Wrap dynamic notification areas with aria-live='polite' (or role='alert' for urgent messages).",
202
222
  reference: "WCAG 2.1 SC 4.1.3 Status Messages",
223
+ suggestedFix: "Wrap notification areas: <div aria-live=\"polite\" role=\"status\">{statusMessage}</div> or use role=\"alert\" for urgent messages.",
224
+ confidence: 0.7,
203
225
  });
204
226
  }
205
227
  // Heading hierarchy issues
@@ -225,6 +247,8 @@ export function analyzeAccessibility(code, language) {
225
247
  lineNumbers: skippedHeadingLines,
226
248
  recommendation: "Use headings in sequential order. Don't skip from h1 to h3. Use CSS for visual styling instead of choosing heading levels by appearance.",
227
249
  reference: "WCAG 2.1 SC 1.3.1 Info and Relationships",
250
+ suggestedFix: "Fix heading hierarchy: change <h3> to <h2> if its parent heading is <h1>. Use CSS for visual sizing instead of skipping heading levels.",
251
+ confidence: 0.85,
228
252
  });
229
253
  }
230
254
  // Touch target size too small
@@ -243,6 +267,8 @@ export function analyzeAccessibility(code, language) {
243
267
  lineNumbers: smallTargetLines,
244
268
  recommendation: "Ensure interactive elements have a minimum touch/click target size of 44x44 CSS pixels (WCAG) or 48x48dp (Material Design).",
245
269
  reference: "WCAG 2.1 SC 2.5.5 Target Size",
270
+ suggestedFix: "Ensure minimum size: .icon-button { min-width: 44px; min-height: 44px; padding: 12px; } to meet WCAG touch target requirements.",
271
+ confidence: 0.75,
246
272
  });
247
273
  }
248
274
  // Motion/animation without reduced-motion support
@@ -262,6 +288,8 @@ export function analyzeAccessibility(code, language) {
262
288
  lineNumbers: animationLines.slice(0, 5),
263
289
  recommendation: "Add @media (prefers-reduced-motion: reduce) { ... } to disable or simplify animations for users who prefer reduced motion.",
264
290
  reference: "WCAG 2.1 SC 2.3.3 Animation from Interactions",
291
+ suggestedFix: "Add reduced motion support: @media (prefers-reduced-motion: reduce) { * { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; } }",
292
+ confidence: 0.7,
265
293
  });
266
294
  }
267
295
  // Video/audio without captions/transcript
@@ -283,6 +311,8 @@ export function analyzeAccessibility(code, language) {
283
311
  lineNumbers: mediaLines,
284
312
  recommendation: "Add <track kind='captions'> for videos, provide transcripts for audio, and ensure embedded videos have captions enabled.",
285
313
  reference: "WCAG 2.1 SC 1.2.2 Captions (Prerecorded)",
314
+ suggestedFix: "Add captions track: <video><track kind=\"captions\" src=\"captions.vtt\" srclang=\"en\" label=\"English\" default></video>.",
315
+ confidence: 0.85,
286
316
  });
287
317
  }
288
318
  // Form error messages not associated with inputs
@@ -301,6 +331,8 @@ export function analyzeAccessibility(code, language) {
301
331
  lineNumbers: errorMsgLines.slice(0, 5),
302
332
  recommendation: "Use aria-describedby to link error messages to inputs, and aria-invalid='true' on invalid inputs.",
303
333
  reference: "WCAG 2.1 SC 3.3.1 Error Identification",
334
+ suggestedFix: "Associate errors with inputs: <input id=\"email\" aria-describedby=\"email-error\" aria-invalid=\"true\"><span id=\"email-error\">Invalid email</span>.",
335
+ confidence: 0.75,
304
336
  });
305
337
  }
306
338
  return findings;
@@ -1 +1 @@
1
- {"version":3,"file":"accessibility.js","sourceRoot":"","sources":["../../src/evaluators/accessibility.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accessibility.js","sourceRoot":"","sources":["../../src/evaluators/accessibility.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"agent-instructions.d.ts","sourceRoot":"","sources":["../../src/evaluators/agent-instructions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAatC,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE,CAqHlF"}
1
+ {"version":3,"file":"agent-instructions.d.ts","sourceRoot":"","sources":["../../src/evaluators/agent-instructions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAatC,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE,CAyLlF"}
@@ -27,6 +27,8 @@ export function analyzeAgentInstructions(code, language) {
27
27
  lineNumbers: unsafeOverrideLines,
28
28
  recommendation: "Remove override phrases and explicitly preserve policy hierarchy (system > developer > user > project/task).",
29
29
  reference: "Prompt Injection & Instruction Hierarchy Safety",
30
+ suggestedFix: "Remove phrases like 'ignore previous instructions' and add an explicit hierarchy header: ## Instruction Priority\n1. System policy (immutable)\n2. Developer rules\n3. User instructions\n4. Task context.",
31
+ confidence: 0.95,
30
32
  });
31
33
  }
32
34
  const hasExplicitHierarchy = /system|developer|user/i.test(code) && /priority|precedence|hierarchy|order/i.test(code);
@@ -38,6 +40,8 @@ export function analyzeAgentInstructions(code, language) {
38
40
  description: "Instruction markdown does not clearly define rule precedence. Without hierarchy, agents may resolve conflicts inconsistently.",
39
41
  recommendation: "Add a dedicated hierarchy section describing precedence and conflict-resolution order.",
40
42
  reference: "Instruction Priority Design Best Practices",
43
+ suggestedFix: "Add a '## Precedence' section listing rule layers in descending priority (system > developer > user > project) with a conflict-resolution policy.",
44
+ confidence: 0.7,
41
45
  });
42
46
  }
43
47
  const askAlways = /always\s+ask|must\s+always\s+ask/i.test(code);
@@ -50,6 +54,8 @@ export function analyzeAgentInstructions(code, language) {
50
54
  description: "The file contains contradictory instructions about asking clarifying questions, which creates nondeterministic behavior.",
51
55
  recommendation: "Define a single rule: ask only when missing information blocks safe execution; otherwise proceed with documented defaults.",
52
56
  reference: "Deterministic Agent Behavior Guidance",
57
+ suggestedFix: "Replace contradictory ask/never-ask directives with a single rule: 'Ask for clarification only when missing information blocks safe execution; otherwise proceed using documented defaults.'",
58
+ confidence: 0.9,
53
59
  });
54
60
  }
55
61
  const hasValidation = /test|build|lint|verify|validation|compile/i.test(code);
@@ -61,6 +67,8 @@ export function analyzeAgentInstructions(code, language) {
61
67
  description: "No explicit expectation for running tests/build/verification was found. This can cause unvalidated code changes.",
62
68
  recommendation: "Add a validation section defining when to run tests/build, and how to report failures or blockers.",
63
69
  reference: "Agent Reliability and QA Guardrails",
70
+ suggestedFix: "Add a '## Validation' section: 'After every code change run `npm test` and `npm run build`. Report failures before proceeding.'",
71
+ confidence: 0.7,
64
72
  });
65
73
  }
66
74
  const hasScopeBoundaries = /scope|out\s+of\s+scope|do\s+not\s+change|only\s+modify|boundaries/i.test(code);
@@ -72,6 +80,8 @@ export function analyzeAgentInstructions(code, language) {
72
80
  description: "Instruction set lacks clear boundaries for what files/features the agent may or may not modify.",
73
81
  recommendation: "Add explicit scope constraints to reduce unintended edits and feature creep.",
74
82
  reference: "Change Scope Governance",
83
+ suggestedFix: "Add a '## Scope' section listing allowed directories, file patterns, and out-of-scope areas (e.g., 'Do not modify CI configs or package.json without approval').",
84
+ confidence: 0.7,
75
85
  });
76
86
  }
77
87
  const hasSafetyPolicy = /harmful|safety|privacy|security|compliance|refus(e|al)|cannot assist/i.test(code);
@@ -83,6 +93,8 @@ export function analyzeAgentInstructions(code, language) {
83
93
  description: "No clear safety and policy constraints were found for harmful requests, privacy-sensitive content, or compliance boundaries.",
84
94
  recommendation: "Add explicit refusal and safety-handling guidance for harmful or policy-violating requests.",
85
95
  reference: "AI Safety Policy Design",
96
+ suggestedFix: "Add a '## Safety' section: 'Refuse harmful, hateful, or privacy-violating requests. Never generate credentials or PII. Respond with a safe refusal message when policy is violated.'",
97
+ confidence: 0.7,
86
98
  });
87
99
  }
88
100
  const headingCount = (code.match(/(^|\n)#{1,6}\s+/g) ?? []).length;
@@ -94,6 +106,53 @@ export function analyzeAgentInstructions(code, language) {
94
106
  description: "Instruction content has no heading structure, reducing readability and increasing interpretation drift for both humans and agents.",
95
107
  recommendation: "Use headings and short sections (scope, hierarchy, validation, safety, ambiguity handling).",
96
108
  reference: "Documentation Structure Best Practices",
109
+ suggestedFix: "Structure the document with markdown headings: ## Scope, ## Hierarchy, ## Validation, ## Safety, ## Ambiguity Handling — each containing concise, actionable rules.",
110
+ confidence: 0.7,
111
+ });
112
+ }
113
+ // Agent with powerful capabilities without sandboxing
114
+ const hasPowerfulCapabilities = /(?:exec|execute|run|spawn|shell|child_process|subprocess|os\.system|file.*write|fs\.write|delete.*file|rm\s|remove.*file|network|http|fetch|download|curl|wget)/i.test(code);
115
+ const hasSandboxing = /sandbox|container|docker|isolation|restrict|permission|allow.?list|deny.?list|firewall|seccomp|chroot|namespace|limit/i.test(code);
116
+ if (hasPowerfulCapabilities && !hasSandboxing) {
117
+ findings.push({
118
+ ruleId: `${prefix}-${String(ruleNum++).padStart(3, "0")}`,
119
+ severity: "high",
120
+ title: "Agent capabilities without sandboxing guidance",
121
+ description: "Instructions reference powerful capabilities (exec, filesystem, network) without specifying sandboxing or isolation boundaries. An agent with unrestricted capabilities can cause damage through unintended actions.",
122
+ recommendation: "Define explicit sandboxing requirements: which directories are writable, which commands are allowed, network access restrictions, and resource limits.",
123
+ reference: "Agent Capability Isolation / Principle of Least Privilege",
124
+ suggestedFix: "Add sandboxing requirements: specify writable directories, allowlisted commands, network access restrictions, and resource limits (CPU, memory, time).",
125
+ confidence: 0.8,
126
+ });
127
+ }
128
+ // Agent tool definitions without input constraints
129
+ const hasToolDefs = /tool|function|action|command|capability|plugin|extension/i.test(code);
130
+ const hasInputConstraints = /(?:parameter|param|input|argument).*(?:type|format|range|min|max|pattern|regex|enum|valid|constraint|required|optional)/i.test(code);
131
+ if (hasToolDefs && !hasInputConstraints && code.split("\n").length > 15) {
132
+ findings.push({
133
+ ruleId: `${prefix}-${String(ruleNum++).padStart(3, "0")}`,
134
+ severity: "medium",
135
+ title: "Tool/action definitions without input parameter constraints",
136
+ description: "Agent instructions define tools or actions but do not specify input parameter constraints (types, ranges, validation rules). Without constraints, the agent may pass invalid or dangerous inputs to tools.",
137
+ recommendation: "For each tool/action, define parameter types, allowed values/ranges, required vs optional fields, and any validation rules that must be applied before execution.",
138
+ reference: "MCP Tool Schema Best Practices / Input Validation",
139
+ suggestedFix: "For each tool definition, add parameter schemas with types, allowed values/ranges, required vs optional flags, and validation rules (e.g., 'filePath: string, must be relative, no ../ traversal').",
140
+ confidence: 0.75,
141
+ });
142
+ }
143
+ // Agent loop without termination condition
144
+ const hasLoopConcept = /(?:loop|iterate|repeat|recursive|retry|continue|re-?run|cycle|round|step|phase)/i.test(code);
145
+ const hasTermination = /(?:terminat|stop|halt|exit|break|max.*(?:iteration|step|round|attempt|loop|cycle)|limit|timeout|budget|deadline|guard|circuit.?break)/i.test(code);
146
+ if (hasLoopConcept && !hasTermination) {
147
+ findings.push({
148
+ ruleId: `${prefix}-${String(ruleNum++).padStart(3, "0")}`,
149
+ severity: "high",
150
+ title: "Agent loop without termination condition",
151
+ description: "Instructions describe iterative or looping behavior without specifying termination conditions. Without limits, agents can enter infinite loops, consuming resources and generating costs indefinitely.",
152
+ recommendation: "Define explicit termination conditions: maximum iterations, time budget, token/cost limits, success criteria, and a fallback action when limits are reached.",
153
+ reference: "Agentic Loop Safety / Resource Governance",
154
+ suggestedFix: "Add termination guards: 'Maximum 10 iterations per task. Stop after 5 minutes or 50k tokens. On limit: summarize progress, save state, and yield to user.'",
155
+ confidence: 0.8,
97
156
  });
98
157
  }
99
158
  return findings;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-instructions.js","sourceRoot":"","sources":["../../src/evaluators/agent-instructions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-instructions.js","sourceRoot":"","sources":["../../src/evaluators/agent-instructions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { Finding } from "../types.js";
2
+ /**
3
+ * Evaluates code for security and quality risks that are specifically
4
+ * common in AI-generated code — prompt injection, unsanitised LLM output,
5
+ * hallucinated imports, debug-mode defaults, insecure WebSocket, placeholder
6
+ * security comments, and overly permissive CSP directives.
7
+ */
8
+ export declare function analyzeAiCodeSafety(code: string, language: string): Finding[];
9
+ //# sourceMappingURL=ai-code-safety.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-code-safety.d.ts","sourceRoot":"","sources":["../../src/evaluators/ai-code-safety.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAItC;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,EAAE,CA+lBX"}