@owasp-aghast/aghast 0.8.3 → 0.9.0-rc.1

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 (113) hide show
  1. package/config/pricing.json +39 -9
  2. package/dist/build-config.d.ts.map +1 -1
  3. package/dist/build-config.js +101 -2
  4. package/dist/build-config.js.map +1 -1
  5. package/dist/check-library.d.ts +25 -0
  6. package/dist/check-library.d.ts.map +1 -1
  7. package/dist/check-library.js +172 -1
  8. package/dist/check-library.js.map +1 -1
  9. package/dist/ci-metadata.d.ts +42 -0
  10. package/dist/ci-metadata.d.ts.map +1 -0
  11. package/dist/ci-metadata.js +131 -0
  12. package/dist/ci-metadata.js.map +1 -0
  13. package/dist/claude-code-provider.d.ts +7 -0
  14. package/dist/claude-code-provider.d.ts.map +1 -1
  15. package/dist/claude-code-provider.js +65 -1
  16. package/dist/claude-code-provider.js.map +1 -1
  17. package/dist/cli.js +4 -1
  18. package/dist/cli.js.map +1 -1
  19. package/dist/concurrency.d.ts +18 -0
  20. package/dist/concurrency.d.ts.map +1 -0
  21. package/dist/concurrency.js +39 -0
  22. package/dist/concurrency.js.map +1 -0
  23. package/dist/cost-tracker.d.ts +45 -0
  24. package/dist/cost-tracker.d.ts.map +1 -0
  25. package/dist/cost-tracker.js +56 -0
  26. package/dist/cost-tracker.js.map +1 -0
  27. package/dist/discoveries/glob-discovery.d.ts +21 -0
  28. package/dist/discoveries/glob-discovery.d.ts.map +1 -0
  29. package/dist/discoveries/glob-discovery.js +215 -0
  30. package/dist/discoveries/glob-discovery.js.map +1 -0
  31. package/dist/discoveries/script-discovery.d.ts +117 -0
  32. package/dist/discoveries/script-discovery.d.ts.map +1 -0
  33. package/dist/discoveries/script-discovery.js +593 -0
  34. package/dist/discoveries/script-discovery.js.map +1 -0
  35. package/dist/docs-url.d.ts +14 -0
  36. package/dist/docs-url.d.ts.map +1 -0
  37. package/dist/docs-url.js +17 -0
  38. package/dist/docs-url.js.map +1 -0
  39. package/dist/error-codes.d.ts +12 -1
  40. package/dist/error-codes.d.ts.map +1 -1
  41. package/dist/error-codes.js +16 -2
  42. package/dist/error-codes.js.map +1 -1
  43. package/dist/formatters/csv-formatter.d.ts +45 -0
  44. package/dist/formatters/csv-formatter.d.ts.map +1 -0
  45. package/dist/formatters/csv-formatter.js +176 -0
  46. package/dist/formatters/csv-formatter.js.map +1 -0
  47. package/dist/formatters/html-formatter.d.ts +39 -0
  48. package/dist/formatters/html-formatter.d.ts.map +1 -0
  49. package/dist/formatters/html-formatter.js +432 -0
  50. package/dist/formatters/html-formatter.js.map +1 -0
  51. package/dist/formatters/index.d.ts.map +1 -1
  52. package/dist/formatters/index.js +6 -0
  53. package/dist/formatters/index.js.map +1 -1
  54. package/dist/formatters/markdown-formatter.d.ts +61 -0
  55. package/dist/formatters/markdown-formatter.d.ts.map +1 -0
  56. package/dist/formatters/markdown-formatter.js +557 -0
  57. package/dist/formatters/markdown-formatter.js.map +1 -0
  58. package/dist/formatters/sarif-formatter.d.ts +7 -0
  59. package/dist/formatters/sarif-formatter.d.ts.map +1 -1
  60. package/dist/formatters/sarif-formatter.js +80 -0
  61. package/dist/formatters/sarif-formatter.js.map +1 -1
  62. package/dist/formatters/types.d.ts +24 -0
  63. package/dist/formatters/types.d.ts.map +1 -1
  64. package/dist/index.d.ts +4 -0
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +365 -10
  67. package/dist/index.js.map +1 -1
  68. package/dist/issue-file-writer.d.ts +21 -0
  69. package/dist/issue-file-writer.d.ts.map +1 -0
  70. package/dist/issue-file-writer.js +307 -0
  71. package/dist/issue-file-writer.js.map +1 -0
  72. package/dist/judge.d.ts +62 -0
  73. package/dist/judge.d.ts.map +1 -0
  74. package/dist/judge.js +305 -0
  75. package/dist/judge.js.map +1 -0
  76. package/dist/mock-agent-provider.d.ts +3 -0
  77. package/dist/mock-agent-provider.d.ts.map +1 -1
  78. package/dist/mock-agent-provider.js +13 -0
  79. package/dist/mock-agent-provider.js.map +1 -1
  80. package/dist/new-check.d.ts.map +1 -1
  81. package/dist/new-check.js +334 -22
  82. package/dist/new-check.js.map +1 -1
  83. package/dist/opencode-provider.d.ts.map +1 -1
  84. package/dist/opencode-provider.js +33 -0
  85. package/dist/opencode-provider.js.map +1 -1
  86. package/dist/repo-scan.d.ts +80 -0
  87. package/dist/repo-scan.d.ts.map +1 -0
  88. package/dist/repo-scan.js +250 -0
  89. package/dist/repo-scan.js.map +1 -0
  90. package/dist/result-handlers/pr-comment-handler.d.ts +136 -0
  91. package/dist/result-handlers/pr-comment-handler.d.ts.map +1 -0
  92. package/dist/result-handlers/pr-comment-handler.js +381 -0
  93. package/dist/result-handlers/pr-comment-handler.js.map +1 -0
  94. package/dist/retry.d.ts +128 -0
  95. package/dist/retry.d.ts.map +1 -0
  96. package/dist/retry.js +261 -0
  97. package/dist/retry.js.map +1 -0
  98. package/dist/runtime-config.d.ts.map +1 -1
  99. package/dist/runtime-config.js +62 -0
  100. package/dist/runtime-config.js.map +1 -1
  101. package/dist/scan-runner.d.ts +31 -22
  102. package/dist/scan-runner.d.ts.map +1 -1
  103. package/dist/scan-runner.js +145 -100
  104. package/dist/scan-runner.js.map +1 -1
  105. package/dist/semgrep-runner.js +6 -4
  106. package/dist/semgrep-runner.js.map +1 -1
  107. package/dist/stats.d.ts.map +1 -1
  108. package/dist/stats.js +4 -1
  109. package/dist/stats.js.map +1 -1
  110. package/dist/types.d.ts +149 -2
  111. package/dist/types.d.ts.map +1 -1
  112. package/dist/types.js.map +1 -1
  113. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  {
2
- "_comment": "AI provider pricing in USD per 1,000,000 tokens. Prices change over time and may need updates. Last verified: 2026-05. Cache rates: reads ~10% of input rate, writes ~125% of input rate (Anthropic published multipliers).",
2
+ "_comment": "AI provider pricing in USD per 1,000,000 tokens. Prices change over time and may need updates. Last verified: 2026-07. Cache rates: reads ~10% of input rate, writes ~125% of input rate (Anthropic published multipliers).",
3
3
  "currency": "USD",
4
4
  "models": {
5
5
  "claude-haiku-4-5": {
@@ -8,6 +8,18 @@
8
8
  "cacheReadPerMillion": 0.1,
9
9
  "cacheWritePerMillion": 1.25
10
10
  },
11
+ "claude-haiku-4-5-20251001": {
12
+ "inputPerMillion": 1.0,
13
+ "outputPerMillion": 5.0,
14
+ "cacheReadPerMillion": 0.1,
15
+ "cacheWritePerMillion": 1.25
16
+ },
17
+ "claude-sonnet-5": {
18
+ "inputPerMillion": 2.0,
19
+ "outputPerMillion": 10.0,
20
+ "cacheReadPerMillion": 0.2,
21
+ "cacheWritePerMillion": 2.5
22
+ },
11
23
  "claude-sonnet-4-6": {
12
24
  "inputPerMillion": 3.0,
13
25
  "outputPerMillion": 15.0,
@@ -15,10 +27,28 @@
15
27
  "cacheWritePerMillion": 3.75
16
28
  },
17
29
  "claude-opus-4-7": {
18
- "inputPerMillion": 15.0,
19
- "outputPerMillion": 75.0,
20
- "cacheReadPerMillion": 1.5,
21
- "cacheWritePerMillion": 18.75
30
+ "inputPerMillion": 5.0,
31
+ "outputPerMillion": 25.0,
32
+ "cacheReadPerMillion": 0.5,
33
+ "cacheWritePerMillion": 6.25
34
+ },
35
+ "claude-opus-4-8": {
36
+ "inputPerMillion": 5.0,
37
+ "outputPerMillion": 25.0,
38
+ "cacheReadPerMillion": 0.5,
39
+ "cacheWritePerMillion": 6.25
40
+ },
41
+ "claude-fable-5": {
42
+ "inputPerMillion": 10.0,
43
+ "outputPerMillion": 50.0,
44
+ "cacheReadPerMillion": 1.0,
45
+ "cacheWritePerMillion": 12.5
46
+ },
47
+ "claude-mythos-5": {
48
+ "inputPerMillion": 10.0,
49
+ "outputPerMillion": 50.0,
50
+ "cacheReadPerMillion": 1.0,
51
+ "cacheWritePerMillion": 12.5
22
52
  },
23
53
  "haiku": {
24
54
  "inputPerMillion": 1.0,
@@ -33,10 +63,10 @@
33
63
  "cacheWritePerMillion": 3.75
34
64
  },
35
65
  "opus": {
36
- "inputPerMillion": 15.0,
37
- "outputPerMillion": 75.0,
38
- "cacheReadPerMillion": 1.5,
39
- "cacheWritePerMillion": 18.75
66
+ "inputPerMillion": 5.0,
67
+ "outputPerMillion": 25.0,
68
+ "cacheReadPerMillion": 0.5,
69
+ "cacheWritePerMillion": 6.25
40
70
  }
41
71
  }
42
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"build-config.d.ts","sourceRoot":"","sources":["../src/build-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA4XH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkOlE"}
1
+ {"version":3,"file":"build-config.d.ts","sourceRoot":"","sources":["../src/build-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAgbH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuRlE"}
@@ -22,6 +22,7 @@ import { createProviderByName, getProviderNames, DEFAULT_PROVIDER_NAME } from '.
22
22
  import { getAvailableFormats } from './formatters/index.js';
23
23
  import { getAvailableLogTypes, isValidLogLevel, getLogLevel, setLogLevel } from './logging.js';
24
24
  import { DEFAULT_MODEL } from './types.js';
25
+ import { docsFooter } from './docs-url.js';
25
26
  import { DEFAULT_OUTPUT_FORMAT, DEFAULT_LOG_LEVEL, DEFAULT_LOG_TYPE, DEFAULT_GENERIC_PROMPT, DEFAULT_FAIL_ON_CHECK_FAILURE, } from './defaults.js';
26
27
  /** Defaults shown in interactive prompts so users know what they'd get by leaving a field unset.
27
28
  * Sourced from the same constants the scanner uses at runtime — no duplication. */
@@ -49,6 +50,11 @@ const FLAG_MAP = {
49
50
  '--log-type': 'logType',
50
51
  '--generic-prompt': 'genericPrompt',
51
52
  '--fail-on-check-failure': 'failOnCheckFailure',
53
+ '--judge-model': 'judgeModel',
54
+ '--judge-provider': 'judgeProvider',
55
+ '--judge-concurrency': 'judgeConcurrency',
56
+ '--judge-drop-false-positives': 'judgeDropFalsePositives',
57
+ '--judge-min-confidence': 'judgeMinConfidence',
52
58
  };
53
59
  const KNOWN_FLAGS = new Set([...Object.keys(FLAG_MAP), '--non-interactive', '--clear', '--help', '-h']);
54
60
  function parseFlags(args) {
@@ -113,13 +119,18 @@ Field flags (any value provided here skips its prompt; closed lists are validate
113
119
  --model <id> Model ID. Must be one returned by the provider's
114
120
  listModels() (skip flag and use interactive mode to
115
121
  browse the live list).
116
- --output-format <fmt> Output format: json | sarif
122
+ --output-format <fmt> Output format: json | sarif | csv | html | markdown
117
123
  --output-directory <path> Default output directory for results
118
124
  --log-level <level> Console log level: error | warn | info | debug | trace
119
125
  --log-file <path> Log file path (omit to disable)
120
126
  --log-type <type> Log file handler type (default: file)
121
127
  --generic-prompt <file> Generic prompt template filename
122
128
  --fail-on-check-failure <b> true | false
129
+ --judge-model <model> Enable the LLM judge stage using this model
130
+ --judge-provider <name> Agent provider for the judge stage (defaults to scan provider)
131
+ --judge-concurrency <n> Max parallel judge calls (default: 5)
132
+ --judge-drop-false-positives <b> true | false
133
+ --judge-min-confidence <0-1> Confidence threshold; true_positive verdicts below this become uncertain
123
134
 
124
135
  Mode flags:
125
136
  --non-interactive Don't prompt — use existing values / defaults / flags only
@@ -133,7 +144,9 @@ Examples:
133
144
  aghast build-config --config-dir ./my-checks
134
145
  aghast build-config --config-dir ./my-checks --provider claude-code --model sonnet --non-interactive
135
146
  aghast build-config --runtime-config ./prod.json --output-format sarif --fail-on-check-failure true
136
- aghast build-config --config-dir ./my-checks --clear logFile --clear genericPrompt`;
147
+ aghast build-config --config-dir ./my-checks --clear logFile --clear genericPrompt
148
+
149
+ ${docsFooter('configuration.md')}`;
137
150
  const CLEARABLE_FIELDS = new Set([
138
151
  'provider',
139
152
  'model',
@@ -144,6 +157,11 @@ const CLEARABLE_FIELDS = new Set([
144
157
  'logType',
145
158
  'genericPrompt',
146
159
  'failOnCheckFailure',
160
+ 'judgeModel',
161
+ 'judgeProvider',
162
+ 'judgeConcurrency',
163
+ 'judgeDropFalsePositives',
164
+ 'judgeMinConfidence',
147
165
  ]);
148
166
  async function fileExists(path) {
149
167
  try {
@@ -165,6 +183,11 @@ function configToFlatDefaults(config) {
165
183
  logType: config.logging?.logType,
166
184
  genericPrompt: config.genericPrompt,
167
185
  failOnCheckFailure: config.failOnCheckFailure,
186
+ judgeModel: config.judge?.model,
187
+ judgeProvider: config.judge?.provider,
188
+ judgeConcurrency: config.judge?.concurrency,
189
+ judgeDropFalsePositives: config.judge?.dropFalsePositives,
190
+ judgeMinConfidence: config.judge?.minConfidence,
168
191
  };
169
192
  }
170
193
  function buildConfig(values) {
@@ -196,6 +219,23 @@ function buildConfig(values) {
196
219
  config.genericPrompt = values.genericPrompt;
197
220
  if (values.failOnCheckFailure !== undefined)
198
221
  config.failOnCheckFailure = values.failOnCheckFailure;
222
+ if (values.judgeModel !== undefined ||
223
+ values.judgeProvider !== undefined ||
224
+ values.judgeConcurrency !== undefined ||
225
+ values.judgeDropFalsePositives !== undefined ||
226
+ values.judgeMinConfidence !== undefined) {
227
+ config.judge = {};
228
+ if (values.judgeModel !== undefined)
229
+ config.judge.model = values.judgeModel;
230
+ if (values.judgeProvider !== undefined)
231
+ config.judge.provider = values.judgeProvider;
232
+ if (values.judgeConcurrency !== undefined)
233
+ config.judge.concurrency = values.judgeConcurrency;
234
+ if (values.judgeDropFalsePositives !== undefined)
235
+ config.judge.dropFalsePositives = values.judgeDropFalsePositives;
236
+ if (values.judgeMinConfidence !== undefined)
237
+ config.judge.minConfidence = values.judgeMinConfidence;
238
+ }
199
239
  return config;
200
240
  }
201
241
  async function getProviderModels(providerName) {
@@ -430,6 +470,33 @@ export async function runBuildConfig(args) {
430
470
  }
431
471
  result.failOnCheckFailure = flags.failOnCheckFailure === 'true';
432
472
  }
473
+ if (flags.judgeModel !== undefined)
474
+ result.judgeModel = flags.judgeModel;
475
+ if (flags.judgeProvider !== undefined)
476
+ result.judgeProvider = flags.judgeProvider;
477
+ if (flags.judgeConcurrency !== undefined) {
478
+ const n = parseInt(flags.judgeConcurrency, 10);
479
+ if (isNaN(n) || n < 1) {
480
+ console.error(formatError(ERROR_CODES.E1001, `Invalid --judge-concurrency "${flags.judgeConcurrency}". Must be a positive integer.`));
481
+ process.exit(1);
482
+ }
483
+ result.judgeConcurrency = n;
484
+ }
485
+ if (flags.judgeDropFalsePositives !== undefined) {
486
+ if (!VALID_BOOLS.includes(flags.judgeDropFalsePositives)) {
487
+ console.error(formatError(ERROR_CODES.E1001, `Invalid --judge-drop-false-positives "${flags.judgeDropFalsePositives}". Must be true or false.`));
488
+ process.exit(1);
489
+ }
490
+ result.judgeDropFalsePositives = flags.judgeDropFalsePositives === 'true';
491
+ }
492
+ if (flags.judgeMinConfidence !== undefined) {
493
+ const n = parseFloat(flags.judgeMinConfidence);
494
+ if (isNaN(n) || n < 0 || n > 1) {
495
+ console.error(formatError(ERROR_CODES.E1001, `Invalid --judge-min-confidence "${flags.judgeMinConfidence}". Must be a number between 0 and 1.`));
496
+ process.exit(1);
497
+ }
498
+ result.judgeMinConfidence = n;
499
+ }
433
500
  // Model is applied last, after we have a resolved provider, so we can validate against listModels
434
501
  const pendingModelFlag = flags.model;
435
502
  // Cache provider→models lookups so we never call the SDK twice in one run.
@@ -501,6 +568,38 @@ export async function runBuildConfig(args) {
501
568
  if (flags.failOnCheckFailure === undefined) {
502
569
  result.failOnCheckFailure = await helpers.askBool('Fail on check failure', result.failOnCheckFailure, SCAN_DEFAULTS.failOnCheckFailure);
503
570
  }
571
+ if (flags.judgeModel === undefined) {
572
+ result.judgeModel = await helpers.ask('Judge model (leave unset to disable judge stage)', result.judgeModel);
573
+ }
574
+ if (flags.judgeProvider === undefined) {
575
+ const providers = getProviderNames();
576
+ result.judgeProvider = await helpers.askChoice('Judge provider (defaults to scan provider)', providers, result.judgeProvider);
577
+ }
578
+ if (flags.judgeConcurrency === undefined) {
579
+ const raw = await helpers.ask('Judge concurrency', result.judgeConcurrency !== undefined ? String(result.judgeConcurrency) : undefined, '5');
580
+ if (raw !== undefined) {
581
+ const n = parseInt(raw, 10);
582
+ if (!isNaN(n) && n >= 1)
583
+ result.judgeConcurrency = n;
584
+ }
585
+ else {
586
+ result.judgeConcurrency = undefined;
587
+ }
588
+ }
589
+ if (flags.judgeDropFalsePositives === undefined) {
590
+ result.judgeDropFalsePositives = await helpers.askBool('Drop false positives confirmed by judge', result.judgeDropFalsePositives);
591
+ }
592
+ if (flags.judgeMinConfidence === undefined) {
593
+ const raw = await helpers.ask('Judge min confidence (0-1, demotes TP below threshold to uncertain)', result.judgeMinConfidence !== undefined ? String(result.judgeMinConfidence) : undefined);
594
+ if (raw !== undefined) {
595
+ const n = parseFloat(raw);
596
+ if (!isNaN(n) && n >= 0 && n <= 1)
597
+ result.judgeMinConfidence = n;
598
+ }
599
+ else {
600
+ result.judgeMinConfidence = undefined;
601
+ }
602
+ }
504
603
  }
505
604
  catch (err) {
506
605
  // Includes "No valid choice for X after N attempts" — surface as a usage error.
@@ -1 +1 @@
1
- {"version":3,"file":"build-config.js","sourceRoot":"","sources":["../src/build-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-config.js","sourceRoot":"","sources":["../src/build-config.ts"],"names":[],"mappings":"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"}
@@ -59,8 +59,33 @@ export declare function checkMatchesRepository(check: SecurityCheck, repositoryU
59
59
  /**
60
60
  * Filter checks to those matching the given repository URL/path.
61
61
  * Also filters out disabled checks (enabled === false).
62
+ *
63
+ * Note: this synchronous variant ignores `matchCriteria` (no filesystem
64
+ * access). For full dynamic-matching support use
65
+ * `filterChecksForRepositoryAsync`.
62
66
  */
63
67
  export declare function filterChecksForRepository(checks: SecurityCheck[], repositoryUrl: string): SecurityCheck[];
68
+ /**
69
+ * Async variant that additionally evaluates `matchCriteria` against the target
70
+ * repository's filesystem/tags. The repo snapshot is cached so repeated calls
71
+ * for the same `repositoryPath` walk the tree only once.
72
+ *
73
+ * Matching semantics:
74
+ * - If a check has an explicit repository in its `repositories` list that
75
+ * matches `repositoryUrl`, it is included regardless of `matchCriteria`
76
+ * (explicit match wins; criteria can only ADD matches).
77
+ * - Otherwise, if `matchCriteria` is set and evaluates true against the repo
78
+ * snapshot, the check is included.
79
+ */
80
+ export declare function filterChecksForRepositoryAsync(checks: SecurityCheck[], repositoryUrl: string, repositoryPath: string): Promise<SecurityCheck[]>;
81
+ /**
82
+ * Sort checks by `priority` ascending (lower runs first). Stable: checks
83
+ * without a priority preserve their relative order and sort to the end.
84
+ *
85
+ * Returns a new array; does not mutate the input.
86
+ */
87
+ export declare function sortChecksByPriority(checks: SecurityCheck[]): SecurityCheck[];
88
+ export type { MatchCriteria } from './types.js';
64
89
  /**
65
90
  * Parse a markdown check file into CheckDetails.
66
91
  * Extracts name from first ### heading, overview from #### Overview section.
@@ -1 +1 @@
1
- {"version":3,"file":"check-library.d.ts","sourceRoot":"","sources":["../src/check-library.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,eAAe,EAChB,MAAM,YAAY,CAAC;AAMpB,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,kBAAkB,EAAE,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAwEjF;AAID;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA0I3F;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA2B9B;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,aAAa,EACvB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC,aAAa,EAAE,CAAC,CAqD1B;AAID,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAiChF;AAID,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,CAAC,CAqC3B;AAKD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,MAAM,GACpB,OAAO,CAoBT;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,aAAa,EAAE,EACvB,aAAa,EAAE,MAAM,GACpB,aAAa,EAAE,CAIjB;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,CAoB7E;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,CAAC,CAgBvB;AAOD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EAAE,EACf,eAAe,CAAC,EAAE,MAAM,EAAE,GACzB,MAAM,EAAE,CAOV;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EAAE,EACf,aAAa,CAAC,EAAE,MAAM,EAAE,GACvB,MAAM,EAAE,CAOV;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EAAE,EACf,KAAK,EAAE,aAAa,GACnB,MAAM,EAAE,CAGV"}
1
+ {"version":3,"file":"check-library.d.ts","sourceRoot":"","sources":["../src/check-library.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,eAAe,EAChB,MAAM,YAAY,CAAC;AAOpB,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,kBAAkB,EAAE,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAiIjF;AAID;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA6M3F;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA2B9B;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,aAAa,EACvB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC,aAAa,EAAE,CAAC,CAyD1B;AAID,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAiChF;AAID,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,CAAC,CA0C3B;AAKD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,MAAM,GACpB,OAAO,CAoBT;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,aAAa,EAAE,EACvB,aAAa,EAAE,MAAM,GACpB,aAAa,EAAE,CAIjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,aAAa,EAAE,EACvB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,aAAa,EAAE,CAAC,CAiC1B;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAY7E;AAGD,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,CAoB7E;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,CAAC,CAqBvB;AAOD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EAAE,EACf,eAAe,CAAC,EAAE,MAAM,EAAE,GACzB,MAAM,EAAE,CAOV;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EAAE,EACf,aAAa,CAAC,EAAE,MAAM,EAAE,GACvB,MAAM,EAAE,CAOV;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EAAE,EACf,KAAK,EAAE,aAAa,GACnB,MAAM,EAAE,CAGV"}
@@ -10,6 +10,7 @@ import picomatch from 'picomatch';
10
10
  import { normalizeRepoPath } from './repository-analyzer.js';
11
11
  import { getCheckType, getValidCheckTypes } from './check-types.js';
12
12
  import { getRegisteredDiscoveries } from './discovery.js';
13
+ import { evaluateMatchCriteria, getRepoSnapshot } from './repo-scan.js';
13
14
  /**
14
15
  * Load and parse the Layer 1 registry from <configDir>/checks-config.json.
15
16
  * Throws on missing file, malformed JSON, or invalid structure.
@@ -68,6 +69,51 @@ export async function loadCheckRegistry(configDir) {
68
69
  if (obj.enabled !== undefined && typeof obj.enabled !== 'boolean') {
69
70
  throw new Error(`Config file "${configPath}": checks[${i}].enabled must be a boolean`);
70
71
  }
72
+ if (obj.priority !== undefined) {
73
+ if (typeof obj.priority !== 'number' || !Number.isInteger(obj.priority) || obj.priority < 0) {
74
+ throw new Error(`Config file "${configPath}": checks[${i}].priority must be a non-negative integer`);
75
+ }
76
+ }
77
+ if (obj.matchCriteria !== undefined) {
78
+ if (typeof obj.matchCriteria !== 'object' || obj.matchCriteria === null || Array.isArray(obj.matchCriteria)) {
79
+ throw new Error(`Config file "${configPath}": checks[${i}].matchCriteria must be an object`);
80
+ }
81
+ const mc = obj.matchCriteria;
82
+ const stringArrayFields = ['hasFileTypes', 'hasFiles', 'hasPaths', 'tags'];
83
+ let populatedFieldCount = 0;
84
+ for (const field of stringArrayFields) {
85
+ const val = mc[field];
86
+ if (val === undefined)
87
+ continue;
88
+ if (!Array.isArray(val)) {
89
+ throw new Error(`Config file "${configPath}": checks[${i}].matchCriteria.${field} must be an array of strings`);
90
+ }
91
+ for (let k = 0; k < val.length; k++) {
92
+ if (typeof val[k] !== 'string') {
93
+ throw new Error(`Config file "${configPath}": checks[${i}].matchCriteria.${field}[${k}] must be a string`);
94
+ }
95
+ if (val[k].trim() === '') {
96
+ throw new Error(`Config file "${configPath}": checks[${i}].matchCriteria.${field}[${k}] must be a non-empty string`);
97
+ }
98
+ }
99
+ if (val.length > 0)
100
+ populatedFieldCount++;
101
+ }
102
+ // Reject unknown keys to surface typos
103
+ const allowed = new Set(stringArrayFields);
104
+ for (const key of Object.keys(mc)) {
105
+ if (!allowed.has(key)) {
106
+ throw new Error(`Config file "${configPath}": checks[${i}].matchCriteria has unknown field "${key}". ` +
107
+ `Allowed: ${[...allowed].join(', ')}`);
108
+ }
109
+ }
110
+ // Reject empty / all-empty matchCriteria — would silently match nothing
111
+ // and is almost always a config typo.
112
+ if (populatedFieldCount === 0) {
113
+ throw new Error(`Config file "${configPath}": checks[${i}].matchCriteria must specify at least one of: ` +
114
+ `${[...allowed].join(', ')}`);
115
+ }
116
+ }
71
117
  }
72
118
  return parsed;
73
119
  }
@@ -112,6 +158,9 @@ export async function loadCheckDefinition(checkFolderPath) {
112
158
  if (obj.model !== undefined && typeof obj.model !== 'string') {
113
159
  throw new Error(`Check definition "${defPath}": "model" must be a string`);
114
160
  }
161
+ if (obj.judge !== undefined && typeof obj.judge !== 'boolean') {
162
+ throw new Error(`Check definition "${defPath}": "judge" must be a boolean`);
163
+ }
115
164
  if (obj.applicablePaths !== undefined && !Array.isArray(obj.applicablePaths)) {
116
165
  throw new Error(`Check definition "${defPath}": "applicablePaths" must be an array`);
117
166
  }
@@ -163,6 +212,48 @@ export async function loadCheckDefinition(checkFolderPath) {
163
212
  if (ct.diffRef !== undefined && typeof ct.diffRef !== 'string') {
164
213
  throw new Error(`Check definition "${defPath}": "checkTarget.diffRef" must be a string`);
165
214
  }
215
+ // Validate glob discovery fields
216
+ if (ct.glob !== undefined && (typeof ct.glob !== 'string' || ct.glob.trim() === '')) {
217
+ throw new Error(`Check definition "${defPath}": "checkTarget.glob" must be a non-empty string`);
218
+ }
219
+ if (ct.discovery === 'glob' && (typeof ct.glob !== 'string' || ct.glob.trim() === '')) {
220
+ throw new Error(`Check definition "${defPath}": "checkTarget.glob" must be a non-empty string when discovery is "glob"`);
221
+ }
222
+ // Validate script-discovery fields
223
+ if (ct.script !== undefined && typeof ct.script !== 'string') {
224
+ throw new Error(`Check definition "${defPath}": "checkTarget.script" must be a string`);
225
+ }
226
+ if (ct.scriptType !== undefined) {
227
+ if (typeof ct.scriptType !== 'string' || (ct.scriptType !== 'node' && ct.scriptType !== 'bash')) {
228
+ throw new Error(`Check definition "${defPath}": "checkTarget.scriptType" must be "node" or "bash"`);
229
+ }
230
+ }
231
+ if (ct.outputFormat !== undefined) {
232
+ if (typeof ct.outputFormat !== 'string' ||
233
+ (ct.outputFormat !== 'lines' &&
234
+ ct.outputFormat !== 'json-array' &&
235
+ ct.outputFormat !== 'json-object')) {
236
+ throw new Error(`Check definition "${defPath}": "checkTarget.outputFormat" must be one of "lines", "json-array", "json-object"`);
237
+ }
238
+ }
239
+ if (ct.cwd !== undefined && typeof ct.cwd !== 'string') {
240
+ throw new Error(`Check definition "${defPath}": "checkTarget.cwd" must be a string`);
241
+ }
242
+ if (ct.timeoutMs !== undefined &&
243
+ (typeof ct.timeoutMs !== 'number' || ct.timeoutMs <= 0 || !Number.isFinite(ct.timeoutMs))) {
244
+ throw new Error(`Check definition "${defPath}": "checkTarget.timeoutMs" must be a positive number`);
245
+ }
246
+ if (ct.discovery === 'script') {
247
+ if (typeof ct.script !== 'string' || ct.script.trim() === '') {
248
+ throw new Error(`Check definition "${defPath}": "checkTarget.script" is required when discovery is "script"`);
249
+ }
250
+ if (typeof ct.scriptType !== 'string') {
251
+ throw new Error(`Check definition "${defPath}": "checkTarget.scriptType" is required when discovery is "script"`);
252
+ }
253
+ if (typeof ct.outputFormat !== 'string') {
254
+ throw new Error(`Check definition "${defPath}": "checkTarget.outputFormat" is required when discovery is "script"`);
255
+ }
256
+ }
166
257
  // Validate openant filter config
167
258
  if (ct.openant !== undefined) {
168
259
  if (typeof ct.openant !== 'object' || ct.openant === null) {
@@ -257,12 +348,18 @@ export async function resolveChecks(registry, checkFolders) {
257
348
  enabled: entry.enabled,
258
349
  checkDir: folderPath,
259
350
  };
351
+ if (entry.matchCriteria)
352
+ merged.matchCriteria = entry.matchCriteria;
353
+ if (entry.priority !== undefined)
354
+ merged.priority = entry.priority;
260
355
  if (def.severity)
261
356
  merged.severity = def.severity;
262
357
  if (def.confidence)
263
358
  merged.confidence = def.confidence;
264
359
  if (def.model)
265
360
  merged.model = def.model;
361
+ if (def.judge !== undefined)
362
+ merged.judge = def.judge;
266
363
  if (def.applicablePaths)
267
364
  merged.applicablePaths = def.applicablePaths;
268
365
  if (def.excludedPaths)
@@ -344,7 +441,10 @@ export async function validateCheck(check, basePath) {
344
441
  // instructionsFile may already be an absolute path (from resolveChecks)
345
442
  const instructionsPath = resolve(basePath, check.instructionsFile);
346
443
  try {
347
- await access(instructionsPath, constants.R_OK);
444
+ const markdown = await readFile(instructionsPath, 'utf-8');
445
+ if (markdown.trim() === '') {
446
+ errors.push(`Instructions file "${check.instructionsFile}" is empty`);
447
+ }
348
448
  }
349
449
  catch {
350
450
  errors.push(`Instructions file "${check.instructionsFile}" not found at "${instructionsPath}"`);
@@ -379,12 +479,80 @@ export function checkMatchesRepository(check, repositoryUrl) {
379
479
  /**
380
480
  * Filter checks to those matching the given repository URL/path.
381
481
  * Also filters out disabled checks (enabled === false).
482
+ *
483
+ * Note: this synchronous variant ignores `matchCriteria` (no filesystem
484
+ * access). For full dynamic-matching support use
485
+ * `filterChecksForRepositoryAsync`.
382
486
  */
383
487
  export function filterChecksForRepository(checks, repositoryUrl) {
384
488
  return checks
385
489
  .filter((check) => check.enabled !== false)
386
490
  .filter((check) => checkMatchesRepository(check, repositoryUrl));
387
491
  }
492
+ /**
493
+ * Async variant that additionally evaluates `matchCriteria` against the target
494
+ * repository's filesystem/tags. The repo snapshot is cached so repeated calls
495
+ * for the same `repositoryPath` walk the tree only once.
496
+ *
497
+ * Matching semantics:
498
+ * - If a check has an explicit repository in its `repositories` list that
499
+ * matches `repositoryUrl`, it is included regardless of `matchCriteria`
500
+ * (explicit match wins; criteria can only ADD matches).
501
+ * - Otherwise, if `matchCriteria` is set and evaluates true against the repo
502
+ * snapshot, the check is included.
503
+ */
504
+ export async function filterChecksForRepositoryAsync(checks, repositoryUrl, repositoryPath) {
505
+ const enabled = checks.filter((c) => c.enabled !== false);
506
+ let needsSnapshot = false;
507
+ for (const check of enabled) {
508
+ if (!checkMatchesRepository(check, repositoryUrl) && check.matchCriteria) {
509
+ needsSnapshot = true;
510
+ break;
511
+ }
512
+ }
513
+ if (!needsSnapshot) {
514
+ return enabled.filter((c) => checkMatchesRepository(c, repositoryUrl));
515
+ }
516
+ // One filesystem walk shared across all criteria checks for this repo.
517
+ // `repositoryPath` is expected to be absolute (CLI resolves it at parse
518
+ // time); resolving again would double-normalise on Windows and could
519
+ // produce a second cache entry for the same physical path under a
520
+ // different drive-letter casing.
521
+ const snapshot = await getRepoSnapshot(repositoryPath);
522
+ const result = [];
523
+ for (const check of enabled) {
524
+ if (checkMatchesRepository(check, repositoryUrl)) {
525
+ result.push(check);
526
+ continue;
527
+ }
528
+ if (check.matchCriteria && evaluateMatchCriteria(check.matchCriteria, snapshot)) {
529
+ result.push(check);
530
+ }
531
+ }
532
+ return result;
533
+ }
534
+ /**
535
+ * Sort checks by `priority` ascending (lower runs first). Stable: checks
536
+ * without a priority preserve their relative order and sort to the end.
537
+ *
538
+ * Returns a new array; does not mutate the input.
539
+ */
540
+ export function sortChecksByPriority(checks) {
541
+ // Decorate with original index for stable sort across all engines.
542
+ const decorated = checks.map((check, index) => ({ check, index }));
543
+ decorated.sort((a, b) => {
544
+ const ap = a.check.priority;
545
+ const bp = b.check.priority;
546
+ if (ap === bp)
547
+ return a.index - b.index;
548
+ if (ap === undefined)
549
+ return 1;
550
+ if (bp === undefined)
551
+ return -1;
552
+ return ap - bp;
553
+ });
554
+ return decorated.map((d) => d.check);
555
+ }
388
556
  // --- Markdown Parsing (spec A.7) ---
389
557
  /**
390
558
  * Parse a markdown check file into CheckDetails.
@@ -423,6 +591,9 @@ export async function loadCheckDetails(check, basePath) {
423
591
  catch (err) {
424
592
  throw new Error(`Failed to load instructions file "${check.instructionsFile}": ${err instanceof Error ? err.message : String(err)}`, { cause: err });
425
593
  }
594
+ if (markdown.trim() === '') {
595
+ throw new Error(`Instructions file "${check.instructionsFile}" for check "${check.id}" is empty`);
596
+ }
426
597
  return parseCheckMarkdown(check.id, markdown);
427
598
  }
428
599
  // --- Path Filtering ---