@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.
- package/dist/build-config.d.ts.map +1 -1
- package/dist/build-config.js +101 -2
- package/dist/build-config.js.map +1 -1
- package/dist/check-library.d.ts +25 -0
- package/dist/check-library.d.ts.map +1 -1
- package/dist/check-library.js +165 -0
- package/dist/check-library.js.map +1 -1
- package/dist/ci-metadata.d.ts +42 -0
- package/dist/ci-metadata.d.ts.map +1 -0
- package/dist/ci-metadata.js +131 -0
- package/dist/ci-metadata.js.map +1 -0
- package/dist/cli.js +4 -1
- package/dist/cli.js.map +1 -1
- package/dist/concurrency.d.ts +18 -0
- package/dist/concurrency.d.ts.map +1 -0
- package/dist/concurrency.js +39 -0
- package/dist/concurrency.js.map +1 -0
- package/dist/cost-tracker.d.ts +45 -0
- package/dist/cost-tracker.d.ts.map +1 -0
- package/dist/cost-tracker.js +56 -0
- package/dist/cost-tracker.js.map +1 -0
- package/dist/discoveries/glob-discovery.d.ts +21 -0
- package/dist/discoveries/glob-discovery.d.ts.map +1 -0
- package/dist/discoveries/glob-discovery.js +215 -0
- package/dist/discoveries/glob-discovery.js.map +1 -0
- package/dist/discoveries/script-discovery.d.ts +117 -0
- package/dist/discoveries/script-discovery.d.ts.map +1 -0
- package/dist/discoveries/script-discovery.js +593 -0
- package/dist/discoveries/script-discovery.js.map +1 -0
- package/dist/docs-url.d.ts +14 -0
- package/dist/docs-url.d.ts.map +1 -0
- package/dist/docs-url.js +17 -0
- package/dist/docs-url.js.map +1 -0
- package/dist/error-codes.d.ts +12 -1
- package/dist/error-codes.d.ts.map +1 -1
- package/dist/error-codes.js +16 -2
- package/dist/error-codes.js.map +1 -1
- package/dist/formatters/csv-formatter.d.ts +12 -1
- package/dist/formatters/csv-formatter.d.ts.map +1 -1
- package/dist/formatters/csv-formatter.js +64 -2
- package/dist/formatters/csv-formatter.js.map +1 -1
- package/dist/formatters/html-formatter.d.ts.map +1 -1
- package/dist/formatters/html-formatter.js +43 -3
- package/dist/formatters/html-formatter.js.map +1 -1
- package/dist/formatters/index.d.ts.map +1 -1
- package/dist/formatters/index.js +2 -0
- package/dist/formatters/index.js.map +1 -1
- package/dist/formatters/markdown-formatter.d.ts +61 -0
- package/dist/formatters/markdown-formatter.d.ts.map +1 -0
- package/dist/formatters/markdown-formatter.js +557 -0
- package/dist/formatters/markdown-formatter.js.map +1 -0
- package/dist/formatters/sarif-formatter.d.ts +7 -0
- package/dist/formatters/sarif-formatter.d.ts.map +1 -1
- package/dist/formatters/sarif-formatter.js +80 -0
- package/dist/formatters/sarif-formatter.js.map +1 -1
- package/dist/formatters/types.d.ts +24 -0
- package/dist/formatters/types.d.ts.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +342 -9
- package/dist/index.js.map +1 -1
- package/dist/issue-file-writer.d.ts +21 -0
- package/dist/issue-file-writer.d.ts.map +1 -0
- package/dist/issue-file-writer.js +307 -0
- package/dist/issue-file-writer.js.map +1 -0
- package/dist/judge.d.ts +62 -0
- package/dist/judge.d.ts.map +1 -0
- package/dist/judge.js +305 -0
- package/dist/judge.js.map +1 -0
- package/dist/mock-agent-provider.d.ts +3 -0
- package/dist/mock-agent-provider.d.ts.map +1 -1
- package/dist/mock-agent-provider.js +13 -0
- package/dist/mock-agent-provider.js.map +1 -1
- package/dist/new-check.d.ts.map +1 -1
- package/dist/new-check.js +322 -13
- package/dist/new-check.js.map +1 -1
- package/dist/opencode-provider.d.ts.map +1 -1
- package/dist/opencode-provider.js +33 -0
- package/dist/opencode-provider.js.map +1 -1
- package/dist/repo-scan.d.ts +80 -0
- package/dist/repo-scan.d.ts.map +1 -0
- package/dist/repo-scan.js +250 -0
- package/dist/repo-scan.js.map +1 -0
- package/dist/result-handlers/pr-comment-handler.d.ts +136 -0
- package/dist/result-handlers/pr-comment-handler.d.ts.map +1 -0
- package/dist/result-handlers/pr-comment-handler.js +381 -0
- package/dist/result-handlers/pr-comment-handler.js.map +1 -0
- package/dist/retry.d.ts +128 -0
- package/dist/retry.d.ts.map +1 -0
- package/dist/retry.js +261 -0
- package/dist/retry.js.map +1 -0
- package/dist/runtime-config.d.ts.map +1 -1
- package/dist/runtime-config.js +62 -0
- package/dist/runtime-config.js.map +1 -1
- package/dist/scan-runner.d.ts +31 -22
- package/dist/scan-runner.d.ts.map +1 -1
- package/dist/scan-runner.js +145 -100
- package/dist/scan-runner.js.map +1 -1
- package/dist/semgrep-runner.js +6 -4
- package/dist/semgrep-runner.js.map +1 -1
- package/dist/stats.d.ts.map +1 -1
- package/dist/stats.js +4 -1
- package/dist/stats.js.map +1 -1
- package/dist/types.d.ts +149 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- 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
|
-
|
|
165
|
-
|
|
166
|
-
|
|
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
|
-
|
|
252
|
-
|
|
253
|
-
|
|
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
|
-
|
|
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);
|
package/dist/new-check.js.map
CHANGED
|
@@ -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;
|
|
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,
|