@owasp-aghast/aghast 0.8.4 → 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 (107) hide show
  1. package/dist/build-config.d.ts.map +1 -1
  2. package/dist/build-config.js +101 -2
  3. package/dist/build-config.js.map +1 -1
  4. package/dist/check-library.d.ts +25 -0
  5. package/dist/check-library.d.ts.map +1 -1
  6. package/dist/check-library.js +165 -0
  7. package/dist/check-library.js.map +1 -1
  8. package/dist/ci-metadata.d.ts +42 -0
  9. package/dist/ci-metadata.d.ts.map +1 -0
  10. package/dist/ci-metadata.js +131 -0
  11. package/dist/ci-metadata.js.map +1 -0
  12. package/dist/cli.js +4 -1
  13. package/dist/cli.js.map +1 -1
  14. package/dist/concurrency.d.ts +18 -0
  15. package/dist/concurrency.d.ts.map +1 -0
  16. package/dist/concurrency.js +39 -0
  17. package/dist/concurrency.js.map +1 -0
  18. package/dist/cost-tracker.d.ts +45 -0
  19. package/dist/cost-tracker.d.ts.map +1 -0
  20. package/dist/cost-tracker.js +56 -0
  21. package/dist/cost-tracker.js.map +1 -0
  22. package/dist/discoveries/glob-discovery.d.ts +21 -0
  23. package/dist/discoveries/glob-discovery.d.ts.map +1 -0
  24. package/dist/discoveries/glob-discovery.js +215 -0
  25. package/dist/discoveries/glob-discovery.js.map +1 -0
  26. package/dist/discoveries/script-discovery.d.ts +117 -0
  27. package/dist/discoveries/script-discovery.d.ts.map +1 -0
  28. package/dist/discoveries/script-discovery.js +593 -0
  29. package/dist/discoveries/script-discovery.js.map +1 -0
  30. package/dist/docs-url.d.ts +14 -0
  31. package/dist/docs-url.d.ts.map +1 -0
  32. package/dist/docs-url.js +17 -0
  33. package/dist/docs-url.js.map +1 -0
  34. package/dist/error-codes.d.ts +12 -1
  35. package/dist/error-codes.d.ts.map +1 -1
  36. package/dist/error-codes.js +16 -2
  37. package/dist/error-codes.js.map +1 -1
  38. package/dist/formatters/csv-formatter.d.ts +12 -1
  39. package/dist/formatters/csv-formatter.d.ts.map +1 -1
  40. package/dist/formatters/csv-formatter.js +64 -2
  41. package/dist/formatters/csv-formatter.js.map +1 -1
  42. package/dist/formatters/html-formatter.d.ts.map +1 -1
  43. package/dist/formatters/html-formatter.js +43 -3
  44. package/dist/formatters/html-formatter.js.map +1 -1
  45. package/dist/formatters/index.d.ts.map +1 -1
  46. package/dist/formatters/index.js +2 -0
  47. package/dist/formatters/index.js.map +1 -1
  48. package/dist/formatters/markdown-formatter.d.ts +61 -0
  49. package/dist/formatters/markdown-formatter.d.ts.map +1 -0
  50. package/dist/formatters/markdown-formatter.js +557 -0
  51. package/dist/formatters/markdown-formatter.js.map +1 -0
  52. package/dist/formatters/sarif-formatter.d.ts +7 -0
  53. package/dist/formatters/sarif-formatter.d.ts.map +1 -1
  54. package/dist/formatters/sarif-formatter.js +80 -0
  55. package/dist/formatters/sarif-formatter.js.map +1 -1
  56. package/dist/formatters/types.d.ts +24 -0
  57. package/dist/formatters/types.d.ts.map +1 -1
  58. package/dist/index.d.ts +4 -0
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +342 -9
  61. package/dist/index.js.map +1 -1
  62. package/dist/issue-file-writer.d.ts +21 -0
  63. package/dist/issue-file-writer.d.ts.map +1 -0
  64. package/dist/issue-file-writer.js +307 -0
  65. package/dist/issue-file-writer.js.map +1 -0
  66. package/dist/judge.d.ts +62 -0
  67. package/dist/judge.d.ts.map +1 -0
  68. package/dist/judge.js +305 -0
  69. package/dist/judge.js.map +1 -0
  70. package/dist/mock-agent-provider.d.ts +3 -0
  71. package/dist/mock-agent-provider.d.ts.map +1 -1
  72. package/dist/mock-agent-provider.js +13 -0
  73. package/dist/mock-agent-provider.js.map +1 -1
  74. package/dist/new-check.d.ts.map +1 -1
  75. package/dist/new-check.js +322 -13
  76. package/dist/new-check.js.map +1 -1
  77. package/dist/opencode-provider.d.ts.map +1 -1
  78. package/dist/opencode-provider.js +33 -0
  79. package/dist/opencode-provider.js.map +1 -1
  80. package/dist/repo-scan.d.ts +80 -0
  81. package/dist/repo-scan.d.ts.map +1 -0
  82. package/dist/repo-scan.js +250 -0
  83. package/dist/repo-scan.js.map +1 -0
  84. package/dist/result-handlers/pr-comment-handler.d.ts +136 -0
  85. package/dist/result-handlers/pr-comment-handler.d.ts.map +1 -0
  86. package/dist/result-handlers/pr-comment-handler.js +381 -0
  87. package/dist/result-handlers/pr-comment-handler.js.map +1 -0
  88. package/dist/retry.d.ts +128 -0
  89. package/dist/retry.d.ts.map +1 -0
  90. package/dist/retry.js +261 -0
  91. package/dist/retry.js.map +1 -0
  92. package/dist/runtime-config.d.ts.map +1 -1
  93. package/dist/runtime-config.js +62 -0
  94. package/dist/runtime-config.js.map +1 -1
  95. package/dist/scan-runner.d.ts +31 -22
  96. package/dist/scan-runner.d.ts.map +1 -1
  97. package/dist/scan-runner.js +145 -100
  98. package/dist/scan-runner.js.map +1 -1
  99. package/dist/semgrep-runner.js +6 -4
  100. package/dist/semgrep-runner.js.map +1 -1
  101. package/dist/stats.d.ts.map +1 -1
  102. package/dist/stats.js +4 -1
  103. package/dist/stats.js.map +1 -1
  104. package/dist/types.d.ts +149 -2
  105. package/dist/types.d.ts.map +1 -1
  106. package/dist/types.js.map +1 -1
  107. package/package.json +1 -1
package/dist/new-check.js CHANGED
@@ -17,6 +17,7 @@ import { createRequire } from 'node:module';
17
17
  import { ERROR_CODES, formatError, formatFatalError } from './error-codes.js';
18
18
  import { getCheckType, getValidCheckTypes } from './check-types.js';
19
19
  import { DEFAULT_MODEL } from './types.js';
20
+ import { docsFooter } from './docs-url.js';
20
21
  const ID_PREFIX = 'aghast-';
21
22
  const SUPPORTED_LANGUAGES = {
22
23
  python: { semgrepId: 'python', extension: '.py', commentPrefix: '#' },
@@ -45,9 +46,20 @@ const CLI_FLAG_MAP = {
45
46
  '--semgrep-rules': 'semgrepRules',
46
47
  '--opengrep-rules': 'semgrepRules',
47
48
  '--sarif-file': 'sarifFile',
49
+ '--glob': 'glob',
48
50
  '--analysis-mode': 'analysisMode',
49
51
  '--max-targets': 'maxTargets',
50
52
  '--language': 'language',
53
+ '--script': 'script',
54
+ '--script-type': 'scriptType',
55
+ '--output-format': 'outputFormat',
56
+ '--cwd': 'cwd',
57
+ '--timeout-ms': 'timeoutMs',
58
+ '--priority': 'priority',
59
+ '--match-file-types': 'matchFileTypes',
60
+ '--match-paths': 'matchPaths',
61
+ '--match-files': 'matchFiles',
62
+ '--match-tags': 'matchTags',
51
63
  '--config-dir': 'configDir',
52
64
  };
53
65
  function parseFlags(args) {
@@ -131,6 +143,14 @@ async function promptForMissing(flags) {
131
143
  rl.close();
132
144
  process.exit(1);
133
145
  }
146
+ // Yes/no gate. Defaults to "no" on empty input. Non-interactive callers never
147
+ // reach this (they gate on whether flags were supplied instead).
148
+ async function askYesNo(label) {
149
+ if (!rl)
150
+ return false;
151
+ const answer = await rl.question(`${label} (y/N): `);
152
+ return /^y(es)?$/i.test(answer.trim());
153
+ }
134
154
  // Phase 1: Basic identity
135
155
  const result = {
136
156
  id: await ask('Check ID (e.g. aghast-xss)', flags.id),
@@ -149,21 +169,42 @@ async function promptForMissing(flags) {
149
169
  analysisMode: '',
150
170
  semgrepRules: '',
151
171
  sarifFile: '',
172
+ glob: '',
152
173
  maxTargets: '',
153
174
  language: '',
175
+ script: '',
176
+ scriptType: '',
177
+ outputFormat: '',
178
+ cwd: '',
179
+ timeoutMs: '',
180
+ priority: '',
181
+ matchFileTypes: '',
182
+ matchPaths: '',
183
+ matchFiles: '',
184
+ matchTags: '',
154
185
  };
155
186
  // Phase 2: Check type, discovery, and analysis mode (determines what other questions to ask)
156
187
  result.checkType = await askChoice('Check type', getValidCheckTypes(), 'targeted', flags.checkType);
157
188
  if (result.checkType === 'targeted' || result.checkType === 'static') {
158
189
  const discoveryChoices = result.checkType === 'targeted'
159
- ? ['semgrep', 'opengrep', 'openant', 'sarif']
190
+ ? ['semgrep', 'opengrep', 'openant', 'sarif', 'glob', 'script']
160
191
  : ['semgrep', 'opengrep'];
161
192
  result.discovery = await askChoice('Discovery method', discoveryChoices, 'semgrep', flags.discovery);
162
193
  result.maxTargets = await askOptional('Max targets', flags.maxTargets);
163
194
  if (result.checkType === 'targeted') {
164
- const modeChoices = result.discovery === 'openant'
165
- ? ['custom', 'general-vuln-discovery']
166
- : ['custom', 'false-positive-validation', 'general-vuln-discovery'];
195
+ let modeChoices;
196
+ if (result.discovery === 'openant') {
197
+ modeChoices = ['custom', 'general-vuln-discovery'];
198
+ }
199
+ else if (result.discovery === 'glob' || result.discovery === 'script') {
200
+ // glob/script discovery do not support false-positive-validation (no
201
+ // per-target tool finding to validate); offer custom and
202
+ // general-vuln-discovery.
203
+ modeChoices = ['custom', 'general-vuln-discovery'];
204
+ }
205
+ else {
206
+ modeChoices = ['custom', 'false-positive-validation', 'general-vuln-discovery'];
207
+ }
167
208
  result.analysisMode = await askChoice('Analysis mode', modeChoices, 'custom', flags.analysisMode);
168
209
  }
169
210
  if (result.discovery === 'semgrep' || result.discovery === 'opengrep') {
@@ -183,12 +224,49 @@ async function promptForMissing(flags) {
183
224
  ? flags.sarifFile
184
225
  : await ask('SARIF file path (relative to target repo, e.g. ./sast-results.sarif)', flags.sarifFile);
185
226
  }
227
+ else if (result.discovery === 'glob') {
228
+ result.glob = flags.glob !== undefined
229
+ ? flags.glob
230
+ : await ask('Glob pattern (e.g. src/routes/**/*.ts)', flags.glob);
231
+ }
232
+ else if (result.discovery === 'script') {
233
+ result.scriptType = await askChoice('Script runtime', ['node', 'bash'], 'node', flags.scriptType);
234
+ result.outputFormat = await askChoice('Script output format', ['lines', 'json-array', 'json-object'], 'json-array', flags.outputFormat);
235
+ // Empty script path means "generate a starter script" (mirrors the
236
+ // semgrep-rules empty→template behaviour above).
237
+ result.script = flags.script !== undefined
238
+ ? flags.script
239
+ : await askOptional('Script file path (relative to check folder, or Enter to generate a starter script)', undefined);
240
+ result.cwd = await askOptional('Working directory (relative to repo root, default: repo root)', flags.cwd);
241
+ result.timeoutMs = await askOptional('Script timeout in ms (default: 30000)', flags.timeoutMs);
242
+ }
186
243
  }
187
244
  // Phase 3: Severity, confidence, model, repositories
188
245
  result.severity = await askChoice('Severity', ['critical', 'high', 'medium', 'low', 'informational'], 'high', flags.severity);
189
246
  result.confidence = await askChoice('Confidence', ['high', 'medium', 'low'], 'medium', flags.confidence);
190
247
  result.model = flags.model !== undefined ? flags.model : await askOptional(`AI model override (default: ${DEFAULT_MODEL})`, undefined);
191
248
  result.repositories = flags.repositories !== undefined ? flags.repositories : await askOptional('Repositories (comma-separated URLs, or empty for all)', undefined);
249
+ // Phase 3.5: Registry-level fields (Layer 1) — execution ordering and dynamic
250
+ // repository matching. Apply to every check type.
251
+ result.priority = flags.priority !== undefined
252
+ ? flags.priority
253
+ : await askOptional('Execution priority (non-negative integer, lower runs first)', undefined);
254
+ const matchFlagsProvided = flags.matchFileTypes !== undefined || flags.matchPaths !== undefined ||
255
+ flags.matchFiles !== undefined || flags.matchTags !== undefined;
256
+ if (matchFlagsProvided) {
257
+ // Non-interactive / flag-driven: take whatever flags were supplied.
258
+ result.matchFileTypes = flags.matchFileTypes ?? '';
259
+ result.matchPaths = flags.matchPaths ?? '';
260
+ result.matchFiles = flags.matchFiles ?? '';
261
+ result.matchTags = flags.matchTags ?? '';
262
+ }
263
+ else if (await askYesNo('Add repository match criteria?')) {
264
+ // Interactive gate said yes — prompt for each sub-field.
265
+ result.matchFileTypes = await askOptional(' Match file types (comma-separated extensions, e.g. .ts,.tsx)', undefined);
266
+ result.matchPaths = await askOptional(' Match paths (comma-separated glob patterns; any match)', undefined);
267
+ result.matchFiles = await askOptional(' Require files (comma-separated paths/globs; all must exist)', undefined);
268
+ result.matchTags = await askOptional(' Require tags (comma-separated; all must be present)', undefined);
269
+ }
192
270
  // Phase 4: Instructions (only for check types/modes that need custom instructions)
193
271
  const builtInAnalysisMode = result.analysisMode === 'false-positive-validation'
194
272
  || result.analysisMode === 'general-vuln-discovery';
@@ -237,9 +315,36 @@ function validateInputs(inputs) {
237
315
  errors.push(`Invalid maxTargets "${inputs.maxTargets}". Must be a positive integer`);
238
316
  }
239
317
  }
318
+ if (inputs.timeoutMs) {
319
+ const parsed = parseInt(inputs.timeoutMs, 10);
320
+ if (isNaN(parsed) || parsed <= 0) {
321
+ errors.push(`Invalid timeoutMs "${inputs.timeoutMs}". Must be a positive integer`);
322
+ }
323
+ }
324
+ if (inputs.priority) {
325
+ const parsed = parseInt(inputs.priority, 10);
326
+ if (isNaN(parsed) || parsed < 0 || String(parsed) !== inputs.priority.trim()) {
327
+ errors.push(`Invalid priority "${inputs.priority}". Must be a non-negative integer`);
328
+ }
329
+ }
330
+ // A blank/whitespace/comma-only match-* value would otherwise scaffold an
331
+ // empty-array matchCriteria sub-field, which fails loadCheckRegistry's
332
+ // "at least one of ..." check for the *whole* registry, not just this
333
+ // check. Reject it here instead, at scaffold time.
334
+ const matchFieldChecks = [
335
+ ['--match-file-types', inputs.matchFileTypes, splitList(inputs.matchFileTypes)],
336
+ ['--match-paths', inputs.matchPaths, splitGlobList(inputs.matchPaths)],
337
+ ['--match-files', inputs.matchFiles, splitGlobList(inputs.matchFiles)],
338
+ ['--match-tags', inputs.matchTags, splitList(inputs.matchTags)],
339
+ ];
340
+ for (const [label, raw, split] of matchFieldChecks) {
341
+ if (raw && split.length === 0) {
342
+ errors.push(`${label} "${raw}" contains no usable values after parsing; provide at least one non-empty, comma-separated value or omit the flag`);
343
+ }
344
+ }
240
345
  if ((inputs.checkType === 'targeted' || inputs.checkType === 'static') && inputs.checkType) {
241
346
  const validDiscoveries = inputs.checkType === 'targeted'
242
- ? ['semgrep', 'opengrep', 'openant', 'sarif']
347
+ ? ['semgrep', 'opengrep', 'openant', 'sarif', 'glob', 'script']
243
348
  : ['semgrep', 'opengrep'];
244
349
  if (!inputs.discovery || !validDiscoveries.includes(inputs.discovery)) {
245
350
  errors.push(`Invalid discovery "${inputs.discovery}" for check type "${inputs.checkType}". Must be one of: ${validDiscoveries.join(', ')}`);
@@ -247,10 +352,27 @@ function validateInputs(inputs) {
247
352
  if (inputs.discovery === 'sarif' && !inputs.sarifFile) {
248
353
  errors.push('sarifFile is required for sarif discovery');
249
354
  }
355
+ if (inputs.discovery === 'glob' && !inputs.glob) {
356
+ errors.push('glob pattern is required for glob discovery');
357
+ }
358
+ if (inputs.discovery === 'script') {
359
+ const validScriptTypes = ['node', 'bash'];
360
+ if (!inputs.scriptType || !validScriptTypes.includes(inputs.scriptType)) {
361
+ errors.push(`Invalid scriptType "${inputs.scriptType}" for script discovery. Must be one of: ${validScriptTypes.join(', ')}`);
362
+ }
363
+ const validOutputFormats = ['lines', 'json-array', 'json-object'];
364
+ if (!inputs.outputFormat || !validOutputFormats.includes(inputs.outputFormat)) {
365
+ errors.push(`Invalid outputFormat "${inputs.outputFormat}" for script discovery. Must be one of: ${validOutputFormats.join(', ')}`);
366
+ }
367
+ }
250
368
  if (inputs.analysisMode) {
251
- const validModes = inputs.discovery === 'openant'
252
- ? ['custom', 'general-vuln-discovery']
253
- : ['custom', 'false-positive-validation', 'general-vuln-discovery'];
369
+ let validModes;
370
+ if (inputs.discovery === 'openant' || inputs.discovery === 'glob' || inputs.discovery === 'script') {
371
+ validModes = ['custom', 'general-vuln-discovery'];
372
+ }
373
+ else {
374
+ validModes = ['custom', 'false-positive-validation', 'general-vuln-discovery'];
375
+ }
254
376
  if (!validModes.includes(inputs.analysisMode)) {
255
377
  errors.push(`Invalid analysis mode "${inputs.analysisMode}" for ${inputs.discovery} discovery. Must be one of: ${validModes.join(', ')}`);
256
378
  }
@@ -295,6 +417,86 @@ ${comment} ok: ${checkId}
295
417
  ${comment} TODO: Add code that should NOT be matched by the rule
296
418
  `;
297
419
  }
420
+ // --- Script Discovery Template ---
421
+ /** File extension for a generated starter discovery script. */
422
+ function scriptExtension(scriptType) {
423
+ return scriptType === 'bash' ? '.sh' : '.js';
424
+ }
425
+ /**
426
+ * Generate a starter discovery script for `script` discovery. The body matches
427
+ * the chosen `outputFormat` and the output contract is documented in comments
428
+ * (see docs/configuration.md#script-discovery).
429
+ */
430
+ function generateDiscoveryScript(checkId, scriptType, outputFormat) {
431
+ if (scriptType === 'bash') {
432
+ // Runs in the target repo (cwd = repo root by default). Print targets to
433
+ // stdout; write diagnostics to stderr. A non-zero exit fails the check.
434
+ const header = `#!/usr/bin/env bash
435
+ # Discovery script for ${checkId}.
436
+ # Runs inside the target repo (cwd = repo root by default).
437
+ # Output contract: print discovery targets to stdout in the "${outputFormat}" format.
438
+ # - Only the "file" field is required; it must be a repo-relative path that
439
+ # stays inside the repo (no absolute paths, no ".." escape).
440
+ # - Optional fields: startLine, endLine, message, snippet.
441
+ # Write diagnostics to stderr. A non-zero exit status fails the check.
442
+ # The environment is curated: API keys/tokens are NOT available to this script.
443
+ set -euo pipefail
444
+ `;
445
+ if (outputFormat === 'lines') {
446
+ return `${header}
447
+ # TODO: replace with real discovery logic — one repo-relative file path per line.
448
+ # printf '%s\\n' 'src/example.ts'
449
+ `;
450
+ }
451
+ if (outputFormat === 'json-object') {
452
+ return `${header}
453
+ # TODO: replace with real discovery logic — emit a JSON object with a "targets" array.
454
+ echo '{ "targets": [] }'
455
+ `;
456
+ }
457
+ return `${header}
458
+ # TODO: replace with real discovery logic — emit a JSON array of target objects.
459
+ # echo '[{ "file": "src/example.ts", "startLine": 1, "endLine": 20, "message": "example target" }]'
460
+ echo '[]'
461
+ `;
462
+ }
463
+ // node
464
+ const header = `#!/usr/bin/env node
465
+ // Discovery script for ${checkId}.
466
+ // Runs inside the target repo (cwd = repo root by default).
467
+ // Output contract: print discovery targets to stdout in the "${outputFormat}" format.
468
+ // - Only the "file" field is required; it must be a repo-relative path that
469
+ // stays inside the repo (no absolute paths, no ".." escape).
470
+ // - Optional fields: startLine, endLine, message, snippet.
471
+ // Write diagnostics to stderr (console.error). A non-zero exit fails the check.
472
+ // The environment is curated: API keys/tokens are NOT available to this script.
473
+ `;
474
+ if (outputFormat === 'lines') {
475
+ return `${header}
476
+ // TODO: replace with real discovery logic — one repo-relative file path per line.
477
+ const files = [
478
+ // 'src/example.ts',
479
+ ];
480
+ process.stdout.write(files.join('\\n'));
481
+ `;
482
+ }
483
+ if (outputFormat === 'json-object') {
484
+ return `${header}
485
+ // TODO: replace with real discovery logic.
486
+ const targets = [
487
+ // { file: 'src/example.ts', startLine: 1, endLine: 20, message: 'example target' },
488
+ ];
489
+ process.stdout.write(JSON.stringify({ targets }));
490
+ `;
491
+ }
492
+ return `${header}
493
+ // TODO: replace with real discovery logic.
494
+ const targets = [
495
+ // { file: 'src/example.ts', startLine: 1, endLine: 20, message: 'example target' },
496
+ ];
497
+ process.stdout.write(JSON.stringify(targets));
498
+ `;
499
+ }
298
500
  // --- File Generation ---
299
501
  function generateMarkdown(inputs) {
300
502
  const items = inputs.checkItems
@@ -356,6 +558,23 @@ function generateCheckDefinition(inputs) {
356
558
  else if (inputs.discovery === 'sarif') {
357
559
  checkTarget.sarifFile = inputs.sarifFile;
358
560
  }
561
+ else if (inputs.discovery === 'glob') {
562
+ checkTarget.glob = inputs.glob;
563
+ }
564
+ else if (inputs.discovery === 'script') {
565
+ // When no explicit script path is given, a starter script named after the
566
+ // check id + runtime extension is generated (see runNewCheck).
567
+ const scriptType = (inputs.scriptType || 'node');
568
+ checkTarget.script = inputs.script || `${inputs.id}${scriptExtension(scriptType)}`;
569
+ checkTarget.scriptType = scriptType;
570
+ checkTarget.outputFormat = inputs.outputFormat || 'json-array';
571
+ if (inputs.cwd) {
572
+ checkTarget.cwd = inputs.cwd;
573
+ }
574
+ if (inputs.timeoutMs) {
575
+ checkTarget.timeoutMs = parseInt(inputs.timeoutMs, 10);
576
+ }
577
+ }
359
578
  if (inputs.analysisMode && inputs.analysisMode !== 'custom') {
360
579
  checkTarget.analysisMode = inputs.analysisMode;
361
580
  }
@@ -366,14 +585,67 @@ function generateCheckDefinition(inputs) {
366
585
  }
367
586
  return def;
368
587
  }
588
+ /** Split a comma-separated flag value into a trimmed, non-empty list. */
589
+ function splitList(value) {
590
+ return value.split(',').map((v) => v.trim()).filter(Boolean);
591
+ }
592
+ /**
593
+ * Split a comma-separated list of glob patterns, brace-aware: commas inside
594
+ * `{...}` brace-expansion groups (e.g. `src/**\/*.{ts,tsx}`) are not treated
595
+ * as list separators, so a single pattern using brace expansion survives
596
+ * intact instead of being torn into two malformed patterns. Otherwise
597
+ * behaves like splitList (trims and drops empty segments).
598
+ */
599
+ function splitGlobList(value) {
600
+ const parts = [];
601
+ let depth = 0;
602
+ let current = '';
603
+ for (const char of value) {
604
+ if (char === '{')
605
+ depth++;
606
+ else if (char === '}')
607
+ depth = Math.max(0, depth - 1);
608
+ if (char === ',' && depth === 0) {
609
+ parts.push(current);
610
+ current = '';
611
+ }
612
+ else {
613
+ current += char;
614
+ }
615
+ }
616
+ parts.push(current);
617
+ return parts.map((v) => v.trim()).filter(Boolean);
618
+ }
369
619
  function generateRegistryEntry(inputs) {
370
- return {
620
+ const entry = {
371
621
  id: inputs.id,
372
- repositories: inputs.repositories
373
- ? inputs.repositories.split(',').map((r) => r.trim()).filter(Boolean)
374
- : [],
622
+ repositories: inputs.repositories ? splitList(inputs.repositories) : [],
375
623
  enabled: true,
376
624
  };
625
+ if (inputs.priority) {
626
+ entry.priority = parseInt(inputs.priority, 10);
627
+ }
628
+ // matchCriteria (Layer 1) — include only the sub-fields that produced at
629
+ // least one item after splitting (a blank/whitespace/comma-only value must
630
+ // not scaffold an empty array — see validateInputs, which rejects that
631
+ // case before we get here).
632
+ const matchCriteria = {};
633
+ const fileTypes = splitList(inputs.matchFileTypes);
634
+ const paths = splitGlobList(inputs.matchPaths);
635
+ const files = splitGlobList(inputs.matchFiles);
636
+ const tags = splitList(inputs.matchTags);
637
+ if (fileTypes.length > 0)
638
+ matchCriteria.hasFileTypes = fileTypes;
639
+ if (paths.length > 0)
640
+ matchCriteria.hasPaths = paths;
641
+ if (files.length > 0)
642
+ matchCriteria.hasFiles = files;
643
+ if (tags.length > 0)
644
+ matchCriteria.tags = tags;
645
+ if (Object.keys(matchCriteria).length > 0) {
646
+ entry.matchCriteria = matchCriteria;
647
+ }
648
+ return entry;
377
649
  }
378
650
  // --- Main ---
379
651
  const NEW_CHECK_HELP = `Usage: aghast new-check --config-dir <path> [options]
@@ -402,9 +674,21 @@ Options:
402
674
  --semgrep-rules <paths> Comma-separated rule file paths (for semgrep/opengrep discovery)
403
675
  --opengrep-rules <paths> Alias for --semgrep-rules; do not pass both (error)
404
676
  --sarif-file <path> SARIF file path in check definition, relative to repo (for sarif discovery)
677
+ --glob <pattern> Glob pattern (for glob discovery, e.g. "src/routes/**/*.ts")
678
+ --script <path> Script path relative to the check folder (for script
679
+ discovery; omit to generate a starter script)
680
+ --script-type <type> Script runtime: node or bash (for script discovery)
681
+ --output-format <format> Script stdout format: lines, json-array, json-object
682
+ --cwd <path> Working directory for the script, relative to repo root
683
+ --timeout-ms <n> Script timeout in milliseconds (default: 30000)
405
684
  --analysis-mode <mode> Analysis mode for targeted checks (default: custom). See below
406
685
  --max-targets <n> Maximum number of targets to analyze
407
686
  --language <lang> Language for Semgrep/Opengrep template: python, javascript, typescript
687
+ --priority <n> Execution order (non-negative integer, lower runs first)
688
+ --match-file-types <exts> matchCriteria: comma-separated file extensions (e.g. .ts,.tsx)
689
+ --match-paths <globs> matchCriteria: comma-separated glob patterns (any match)
690
+ --match-files <paths> matchCriteria: comma-separated paths/globs (all must exist)
691
+ --match-tags <tags> matchCriteria: comma-separated repo tags (all must be present)
408
692
  -h, --help Show this help message
409
693
 
410
694
  Environment variables:
@@ -420,17 +704,27 @@ Discovery mechanisms:
420
704
  opengrep Opengrep (Semgrep fork) rules find targets (targeted or static)
421
705
  openant OpenAnt code analysis finds units (targeted only)
422
706
  sarif External SARIF file provides findings (targeted only)
707
+ glob File path glob pattern selects whole-file targets (targeted only)
708
+ script User-provided node/bash script emits targets (targeted only)
423
709
 
424
710
  Analysis modes (targeted checks only):
425
711
  custom Use a custom instructions markdown file (default)
426
712
  false-positive-validation AI validates each finding as true/false positive (semgrep, opengrep, sarif)
427
713
  general-vuln-discovery AI scans each target for general security vulnerabilities (all)
428
714
 
715
+ Repository matching / ordering (registry-level, all check types):
716
+ --priority Lower values run first; unset checks run last
717
+ --match-* Add repos dynamically via matchCriteria in addition to
718
+ the explicit --repositories list
719
+
429
720
  Examples:
430
721
  aghast new-check --config-dir ./my-checks
431
722
  aghast new-check --config-dir ./my-checks --id xss --name "XSS Prevention"
432
723
  aghast new-check --config-dir ./my-checks --check-type targeted --discovery semgrep --language typescript
433
- aghast new-check --config-dir ./my-checks --check-type targeted --discovery sarif --sarif-file ./sast-results.sarif`;
724
+ aghast new-check --config-dir ./my-checks --check-type targeted --discovery sarif --sarif-file ./sast-results.sarif
725
+ aghast new-check --config-dir ./my-checks --check-type targeted --discovery script --script-type node --output-format json-array
726
+
727
+ ${docsFooter('creating-checks.md')}`;
434
728
  export async function runNewCheck(args) {
435
729
  if (args.includes('--help') || args.includes('-h')) {
436
730
  console.log(NEW_CHECK_HELP);
@@ -468,6 +762,12 @@ export async function runNewCheck(args) {
468
762
  }
469
763
  process.exit(1);
470
764
  }
765
+ // Script discovery with scriptType "bash" can never run on Windows
766
+ // (E7106) — warn now, at scaffold time, rather than let the author
767
+ // discover it only after a failed scan.
768
+ if (inputs.discovery === 'script' && (inputs.scriptType || 'node') === 'bash' && process.platform === 'win32') {
769
+ console.warn(`Warning: --script-type bash is not supported on Windows (${ERROR_CODES.E7106.code}); this check will fail at scan time on this machine. Use --script-type node, or run scans from Linux/macOS/WSL.`);
770
+ }
471
771
  // Create check folder
472
772
  const checkFolder = resolve(checksDir, inputs.id);
473
773
  if (await checkFileExists(checkFolder)) {
@@ -508,6 +808,15 @@ export async function runNewCheck(args) {
508
808
  console.log(`Created: ${checkFolder}/tests/${testFileName} (test scaffold — edit before running)`);
509
809
  }
510
810
  }
811
+ // Generate a starter discovery script when the author didn't supply their own.
812
+ if (inputs.discovery === 'script' && !inputs.script) {
813
+ const scriptType = (inputs.scriptType || 'node');
814
+ const outputFormat = (inputs.outputFormat || 'json-array');
815
+ const scriptName = `${inputs.id}${scriptExtension(scriptType)}`;
816
+ const scriptPath = resolve(checkFolder, scriptName);
817
+ await writeFile(scriptPath, generateDiscoveryScript(inputs.id, scriptType, outputFormat), 'utf-8');
818
+ console.log(`Created: ${checkFolder}/${scriptName} (starter script — edit before running)`);
819
+ }
511
820
  // Update registry (Layer 1)
512
821
  if (!isAlreadyRegistered) {
513
822
  const registryEntry = generateRegistryEntry(inputs);
@@ -1 +1 @@
1
- {"version":3,"file":"new-check.js","sourceRoot":"","sources":["../src/new-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"new-check.js","sourceRoot":"","sources":["../src/new-check.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"opencode-provider.d.ts","sourceRoot":"","sources":["../src/opencode-provider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAiB,iBAAiB,EAAc,MAAM,YAAY,CAAC;AAmK7H,KAAK,cAAc,GAAG,YAAY,CAAC,CAAC,cAAc,qBAAqB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAE7F,8DAA8D;AAC9D,MAAM,WAAW,uBAAuB;IACtC,8DAA8D;IAC9D,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,qBAAa,gBAAiB,YAAW,aAAa;IACpD,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAA6C;IAC5D,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,aAAa,CAA2B;IAChD;gGAC4F;IAC5F,OAAO,CAAC,cAAc,CAA6B;IACnD;mFAC+E;IAC/E,OAAO,CAAC,WAAW,CAAoC;IACvD,wFAAwF;IACxF,OAAO,CAAC,iBAAiB,CAAU;gBAEvB,OAAO,CAAC,EAAE,uBAAuB;IAO7C,kBAAkB,IAAI,IAAI;IAIpB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;YA+CzC,aAAa;IA0BrB,UAAU,IAAI,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC;IAwBzD,YAAY,IAAI,MAAM;IAItB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM7B,sFAAsF;YACxE,cAAc;IAY5B;;;;;sDAKkD;YACpC,mBAAmB;IAwCjC;uDACmD;YACrC,oBAAoB;IA0BlC;;6EAEyE;IACzE,OAAO,CAAC,kBAAkB;IAWpB,YAAY,CAChB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/B,OAAO,CAAC,aAAa,CAAC;YAkBX,iBAAiB;IA6QzB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAIxC,6DAA6D;IAC7D,OAAO,CAAC,WAAW;IAyBb,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CA4C/B"}
1
+ {"version":3,"file":"opencode-provider.d.ts","sourceRoot":"","sources":["../src/opencode-provider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAiB,iBAAiB,EAAc,MAAM,YAAY,CAAC;AAmK7H,KAAK,cAAc,GAAG,YAAY,CAAC,CAAC,cAAc,qBAAqB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAE7F,8DAA8D;AAC9D,MAAM,WAAW,uBAAuB;IACtC,8DAA8D;IAC9D,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,qBAAa,gBAAiB,YAAW,aAAa;IACpD,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAA6C;IAC5D,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,aAAa,CAA2B;IAChD;gGAC4F;IAC5F,OAAO,CAAC,cAAc,CAA6B;IACnD;mFAC+E;IAC/E,OAAO,CAAC,WAAW,CAAoC;IACvD,wFAAwF;IACxF,OAAO,CAAC,iBAAiB,CAAU;gBAEvB,OAAO,CAAC,EAAE,uBAAuB;IAO7C,kBAAkB,IAAI,IAAI;IAIpB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;YA+CzC,aAAa;IA0BrB,UAAU,IAAI,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC;IAwBzD,YAAY,IAAI,MAAM;IAItB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM7B,sFAAsF;YACxE,cAAc;IAY5B;;;;;sDAKkD;YACpC,mBAAmB;IAwCjC;uDACmD;YACrC,oBAAoB;IA0BlC;;6EAEyE;IACzE,OAAO,CAAC,kBAAkB;IAWpB,YAAY,CAChB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/B,OAAO,CAAC,aAAa,CAAC;YAkBX,iBAAiB;IA8SzB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAIxC,6DAA6D;IAC7D,OAAO,CAAC,WAAW;IAyBb,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CA4C/B"}
@@ -423,6 +423,14 @@ export class OpenCodeProvider {
423
423
  // instead of session.next.tool.* and the --print-logs stderr capture.
424
424
  const sseAbort = new AbortController();
425
425
  const seenPartStatuses = new Map(); // partId → last logged status
426
+ // A `session.error` means the model call itself failed (e.g. "Streaming
427
+ // response failed"). Whatever `session.prompt()` returns afterwards is
428
+ // partial or empty, so we abort the wait and fail the target rather than
429
+ // parsing an untrustworthy response. Failing here is deliberate: the caller
430
+ // in scan-runner marks the target as errored, which is recoverable and
431
+ // visible, whereas silently accepting the response reports wrong findings.
432
+ let sessionError;
433
+ const promptAbort = new AbortController();
426
434
  const sseTask = (async () => {
427
435
  try {
428
436
  const sseResult = await client.event.subscribe({ directory: repositoryPath }, { signal: sseAbort.signal });
@@ -480,6 +488,13 @@ export class OpenCodeProvider {
480
488
  const errData = error?.['data'];
481
489
  const message = errData?.['message'] ?? error?.['name'] ?? 'unknown error';
482
490
  logWarn(TAG, `${prefix}OpenCode session error: ${message}`);
491
+ // Record the failure and stop waiting. Anything the session produces
492
+ // after this is partial or empty, and must not be parsed as a result
493
+ // — doing so previously turned a provider fault into confidently
494
+ // wrong findings rather than a visible error.
495
+ if (sessionError === undefined)
496
+ sessionError = message;
497
+ promptAbort.abort();
483
498
  }
484
499
  }
485
500
  }
@@ -505,13 +520,31 @@ export class OpenCodeProvider {
505
520
  schema: OUTPUT_SCHEMA,
506
521
  },
507
522
  directory: repositoryPath,
523
+ }, {
524
+ // Request options are the client's second argument (the same shape
525
+ // `client.event.subscribe` uses above), not part of the request body.
526
+ signal: promptAbort.signal,
508
527
  });
509
528
  }
529
+ catch (err) {
530
+ // If we aborted because of a session error, report that as the cause —
531
+ // the AbortError itself is our own doing and says nothing useful.
532
+ if (sessionError !== undefined) {
533
+ throw new Error(`${prefix}OpenCode session failed: ${sessionError}`, { cause: err });
534
+ }
535
+ throw err;
536
+ }
510
537
  finally {
511
538
  sseAbort.abort();
512
539
  await sseTask;
513
540
  clearInterval(heartbeatInterval);
514
541
  }
542
+ // The session may report an error and still resolve normally (the abort can
543
+ // land after the response is already in flight). Treat it as a failure
544
+ // either way, so the outcome does not depend on that race.
545
+ if (sessionError !== undefined) {
546
+ throw new Error(`${prefix}OpenCode session failed: ${sessionError}`);
547
+ }
515
548
  let info = promptResult.data?.info;
516
549
  let parts = promptResult.data?.parts;
517
550
  // Some providers (e.g. OpenRouter routing) reject requests when tool_choice is set,