@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.
- package/config/pricing.json +39 -9
- 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 +172 -1
- 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/claude-code-provider.d.ts +7 -0
- package/dist/claude-code-provider.d.ts.map +1 -1
- package/dist/claude-code-provider.js +65 -1
- package/dist/claude-code-provider.js.map +1 -1
- 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 +45 -0
- package/dist/formatters/csv-formatter.d.ts.map +1 -0
- package/dist/formatters/csv-formatter.js +176 -0
- package/dist/formatters/csv-formatter.js.map +1 -0
- package/dist/formatters/html-formatter.d.ts +39 -0
- package/dist/formatters/html-formatter.d.ts.map +1 -0
- package/dist/formatters/html-formatter.js +432 -0
- package/dist/formatters/html-formatter.js.map +1 -0
- package/dist/formatters/index.d.ts.map +1 -1
- package/dist/formatters/index.js +6 -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 +365 -10
- 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 +334 -22
- 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/config/pricing.json
CHANGED
|
@@ -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-
|
|
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":
|
|
19
|
-
"outputPerMillion":
|
|
20
|
-
"cacheReadPerMillion":
|
|
21
|
-
"cacheWritePerMillion":
|
|
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":
|
|
37
|
-
"outputPerMillion":
|
|
38
|
-
"cacheReadPerMillion":
|
|
39
|
-
"cacheWritePerMillion":
|
|
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;
|
|
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"}
|
package/dist/build-config.js
CHANGED
|
@@ -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.
|
package/dist/build-config.js.map
CHANGED
|
@@ -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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"}
|
package/dist/check-library.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/check-library.js
CHANGED
|
@@ -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
|
|
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 ---
|