@owasp-aghast/aghast 0.8.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/README.md +127 -0
- package/assets/img/aghastowaspcaption.png +0 -0
- package/assets/txt/logo.txt +52 -0
- package/config/pricing.json +42 -0
- package/config/prompts/false-positive-validation.md +78 -0
- package/config/prompts/general-vuln-discovery.md +99 -0
- package/config/prompts/generic-instructions.md +59 -0
- package/config/prompts/test-cheaper-instructions.md +57 -0
- package/dist/budget.d.ts +62 -0
- package/dist/budget.d.ts.map +1 -0
- package/dist/budget.js +137 -0
- package/dist/budget.js.map +1 -0
- package/dist/build-config.d.ts +15 -0
- package/dist/build-config.d.ts.map +1 -0
- package/dist/build-config.js +568 -0
- package/dist/build-config.js.map +1 -0
- package/dist/check-library.d.ts +88 -0
- package/dist/check-library.d.ts.map +1 -0
- package/dist/check-library.js +461 -0
- package/dist/check-library.js.map +1 -0
- package/dist/check-types.d.ts +35 -0
- package/dist/check-types.d.ts.map +1 -0
- package/dist/check-types.js +66 -0
- package/dist/check-types.js.map +1 -0
- package/dist/claude-code-provider.d.ts +29 -0
- package/dist/claude-code-provider.d.ts.map +1 -0
- package/dist/claude-code-provider.js +347 -0
- package/dist/claude-code-provider.js.map +1 -0
- package/dist/cli.d.ts +13 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +109 -0
- package/dist/cli.js.map +1 -0
- package/dist/colors.d.ts +7 -0
- package/dist/colors.d.ts.map +1 -0
- package/dist/colors.js +18 -0
- package/dist/colors.js.map +1 -0
- package/dist/cost-calculator.d.ts +80 -0
- package/dist/cost-calculator.d.ts.map +1 -0
- package/dist/cost-calculator.js +226 -0
- package/dist/cost-calculator.js.map +1 -0
- package/dist/defaults.d.ts +21 -0
- package/dist/defaults.d.ts.map +1 -0
- package/dist/defaults.js +21 -0
- package/dist/defaults.js.map +1 -0
- package/dist/diff-filter.d.ts +50 -0
- package/dist/diff-filter.d.ts.map +1 -0
- package/dist/diff-filter.js +130 -0
- package/dist/diff-filter.js.map +1 -0
- package/dist/diff-parser.d.ts +40 -0
- package/dist/diff-parser.d.ts.map +1 -0
- package/dist/diff-parser.js +112 -0
- package/dist/diff-parser.js.map +1 -0
- package/dist/diff-unit-matcher.d.ts +53 -0
- package/dist/diff-unit-matcher.d.ts.map +1 -0
- package/dist/diff-unit-matcher.js +156 -0
- package/dist/diff-unit-matcher.js.map +1 -0
- package/dist/discoveries/openant-discovery.d.ts +10 -0
- package/dist/discoveries/openant-discovery.d.ts.map +1 -0
- package/dist/discoveries/openant-discovery.js +56 -0
- package/dist/discoveries/openant-discovery.js.map +1 -0
- package/dist/discoveries/sarif-discovery.d.ts +9 -0
- package/dist/discoveries/sarif-discovery.d.ts.map +1 -0
- package/dist/discoveries/sarif-discovery.js +56 -0
- package/dist/discoveries/sarif-discovery.js.map +1 -0
- package/dist/discoveries/semgrep-discovery.d.ts +9 -0
- package/dist/discoveries/semgrep-discovery.d.ts.map +1 -0
- package/dist/discoveries/semgrep-discovery.js +61 -0
- package/dist/discoveries/semgrep-discovery.js.map +1 -0
- package/dist/discovery.d.ts +100 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +49 -0
- package/dist/discovery.js.map +1 -0
- package/dist/error-codes.d.ts +46 -0
- package/dist/error-codes.d.ts.map +1 -0
- package/dist/error-codes.js +70 -0
- package/dist/error-codes.js.map +1 -0
- package/dist/formatters/index.d.ts +10 -0
- package/dist/formatters/index.d.ts.map +1 -0
- package/dist/formatters/index.js +23 -0
- package/dist/formatters/index.js.map +1 -0
- package/dist/formatters/json-formatter.d.ts +11 -0
- package/dist/formatters/json-formatter.d.ts.map +1 -0
- package/dist/formatters/json-formatter.js +11 -0
- package/dist/formatters/json-formatter.js.map +1 -0
- package/dist/formatters/sarif-formatter.d.ts +18 -0
- package/dist/formatters/sarif-formatter.d.ts.map +1 -0
- package/dist/formatters/sarif-formatter.js +103 -0
- package/dist/formatters/sarif-formatter.js.map +1 -0
- package/dist/formatters/types.d.ts +11 -0
- package/dist/formatters/types.d.ts.map +1 -0
- package/dist/formatters/types.js +6 -0
- package/dist/formatters/types.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +754 -0
- package/dist/index.js.map +1 -0
- package/dist/logging.d.ts +140 -0
- package/dist/logging.d.ts.map +1 -0
- package/dist/logging.js +344 -0
- package/dist/logging.js.map +1 -0
- package/dist/mock-agent-provider.d.ts +24 -0
- package/dist/mock-agent-provider.d.ts.map +1 -0
- package/dist/mock-agent-provider.js +38 -0
- package/dist/mock-agent-provider.js.map +1 -0
- package/dist/mock-ai-provider.d.ts +21 -0
- package/dist/mock-ai-provider.d.ts.map +1 -0
- package/dist/mock-ai-provider.js +31 -0
- package/dist/mock-ai-provider.js.map +1 -0
- package/dist/new-check.d.ts +13 -0
- package/dist/new-check.d.ts.map +1 -0
- package/dist/new-check.js +515 -0
- package/dist/new-check.js.map +1 -0
- package/dist/openant-loader.d.ts +105 -0
- package/dist/openant-loader.d.ts.map +1 -0
- package/dist/openant-loader.js +135 -0
- package/dist/openant-loader.js.map +1 -0
- package/dist/openant-runner.d.ts +30 -0
- package/dist/openant-runner.d.ts.map +1 -0
- package/dist/openant-runner.js +113 -0
- package/dist/openant-runner.js.map +1 -0
- package/dist/opencode-provider.d.ts +63 -0
- package/dist/opencode-provider.d.ts.map +1 -0
- package/dist/opencode-provider.js +719 -0
- package/dist/opencode-provider.js.map +1 -0
- package/dist/prompt-template.d.ts +12 -0
- package/dist/prompt-template.d.ts.map +1 -0
- package/dist/prompt-template.js +36 -0
- package/dist/prompt-template.js.map +1 -0
- package/dist/provider-registry.d.ts +15 -0
- package/dist/provider-registry.d.ts.map +1 -0
- package/dist/provider-registry.js +29 -0
- package/dist/provider-registry.js.map +1 -0
- package/dist/provider-utils.d.ts +52 -0
- package/dist/provider-utils.d.ts.map +1 -0
- package/dist/provider-utils.js +40 -0
- package/dist/provider-utils.js.map +1 -0
- package/dist/repository-analyzer.d.ts +68 -0
- package/dist/repository-analyzer.d.ts.map +1 -0
- package/dist/repository-analyzer.js +238 -0
- package/dist/repository-analyzer.js.map +1 -0
- package/dist/response-parser.d.ts +14 -0
- package/dist/response-parser.d.ts.map +1 -0
- package/dist/response-parser.js +111 -0
- package/dist/response-parser.js.map +1 -0
- package/dist/runtime-config.d.ts +15 -0
- package/dist/runtime-config.d.ts.map +1 -0
- package/dist/runtime-config.js +187 -0
- package/dist/runtime-config.js.map +1 -0
- package/dist/sarif-parser.d.ts +20 -0
- package/dist/sarif-parser.d.ts.map +1 -0
- package/dist/sarif-parser.js +76 -0
- package/dist/sarif-parser.js.map +1 -0
- package/dist/scan-history.d.ts +82 -0
- package/dist/scan-history.d.ts.map +1 -0
- package/dist/scan-history.js +127 -0
- package/dist/scan-history.js.map +1 -0
- package/dist/scan-runner.d.ts +122 -0
- package/dist/scan-runner.d.ts.map +1 -0
- package/dist/scan-runner.js +928 -0
- package/dist/scan-runner.js.map +1 -0
- package/dist/semgrep-runner.d.ts +25 -0
- package/dist/semgrep-runner.d.ts.map +1 -0
- package/dist/semgrep-runner.js +100 -0
- package/dist/semgrep-runner.js.map +1 -0
- package/dist/snippet-extractor.d.ts +25 -0
- package/dist/snippet-extractor.d.ts.map +1 -0
- package/dist/snippet-extractor.js +56 -0
- package/dist/snippet-extractor.js.map +1 -0
- package/dist/stats.d.ts +11 -0
- package/dist/stats.d.ts.map +1 -0
- package/dist/stats.js +197 -0
- package/dist/stats.js.map +1 -0
- package/dist/types.d.ts +321 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +19 -0
- package/dist/types.js.map +1 -0
- package/package.json +61 -0
package/dist/budget.js
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Budget controls: per-scan and per-period token/cost limits.
|
|
3
|
+
*
|
|
4
|
+
* `checkBudget` is called before each AI invocation in the scan runner with
|
|
5
|
+
* the current accumulated cost. It returns one of:
|
|
6
|
+
* - `continue` — under the warn threshold, proceed silently.
|
|
7
|
+
* - `warn` — at or above the warn threshold but below the abort threshold.
|
|
8
|
+
* - `abort` — at or above the abort threshold; the scan should stop.
|
|
9
|
+
*
|
|
10
|
+
* Period limits are computed against historical scan records (from
|
|
11
|
+
* scan-history.ts) plus the in-flight scan's accumulated cost.
|
|
12
|
+
*/
|
|
13
|
+
const DEFAULT_WARN_AT = 0.8;
|
|
14
|
+
const DEFAULT_ABORT_AT = 1.0;
|
|
15
|
+
/**
|
|
16
|
+
* Compute the start of the current budget window for `now`.
|
|
17
|
+
*/
|
|
18
|
+
function windowStart(now, window) {
|
|
19
|
+
const d = new Date(now);
|
|
20
|
+
d.setUTCHours(0, 0, 0, 0);
|
|
21
|
+
if (window === 'day')
|
|
22
|
+
return d;
|
|
23
|
+
if (window === 'week') {
|
|
24
|
+
// ISO-style week: start on Monday (UTC).
|
|
25
|
+
const day = d.getUTCDay(); // 0=Sun..6=Sat
|
|
26
|
+
const offset = (day + 6) % 7; // days since Monday
|
|
27
|
+
d.setUTCDate(d.getUTCDate() - offset);
|
|
28
|
+
return d;
|
|
29
|
+
}
|
|
30
|
+
// month
|
|
31
|
+
d.setUTCDate(1);
|
|
32
|
+
return d;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Sum costs of historical records whose startedAt falls within [start, now].
|
|
36
|
+
*
|
|
37
|
+
* The upper bound on `now` matters because clock-skewed CI machines can write
|
|
38
|
+
* history records dated in the future. Without an upper bound, those records
|
|
39
|
+
* would count toward every period until "now" surpasses them.
|
|
40
|
+
*/
|
|
41
|
+
function sumHistoryWithinWindow(history, start, now) {
|
|
42
|
+
const startIso = start.toISOString();
|
|
43
|
+
const nowIso = now.toISOString();
|
|
44
|
+
let total = 0;
|
|
45
|
+
for (const r of history) {
|
|
46
|
+
if (r.startedAt >= startIso && r.startedAt <= nowIso) {
|
|
47
|
+
total += r.totalCost;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return total;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Evaluate the current scan against the configured budget limits.
|
|
54
|
+
*/
|
|
55
|
+
export function checkBudget(input, limits) {
|
|
56
|
+
if (!limits || (!limits.perScan && !limits.perPeriod)) {
|
|
57
|
+
return { ok: true, action: 'continue' };
|
|
58
|
+
}
|
|
59
|
+
const warnAt = limits.thresholds?.warnAt ?? DEFAULT_WARN_AT;
|
|
60
|
+
const abortAt = limits.thresholds?.abortAt ?? DEFAULT_ABORT_AT;
|
|
61
|
+
let worst = { ok: true, action: 'continue' };
|
|
62
|
+
const escalate = (status) => {
|
|
63
|
+
if (status.action === 'abort' || (status.action === 'warn' && worst.action === 'continue')) {
|
|
64
|
+
worst = status;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
// Per-scan token limit
|
|
68
|
+
if (limits.perScan?.maxTokens !== undefined && limits.perScan.maxTokens > 0) {
|
|
69
|
+
const ratio = input.currentScanTokens / limits.perScan.maxTokens;
|
|
70
|
+
if (ratio >= abortAt) {
|
|
71
|
+
escalate({
|
|
72
|
+
ok: false,
|
|
73
|
+
action: 'abort',
|
|
74
|
+
reason: `Per-scan token limit reached: ${input.currentScanTokens} / ${limits.perScan.maxTokens}`,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
else if (ratio >= warnAt) {
|
|
78
|
+
escalate({
|
|
79
|
+
ok: true,
|
|
80
|
+
action: 'warn',
|
|
81
|
+
reason: `Per-scan token usage at ${(ratio * 100).toFixed(0)}% of limit (${input.currentScanTokens} / ${limits.perScan.maxTokens})`,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Per-scan cost limit
|
|
86
|
+
if (limits.perScan?.maxCostUsd !== undefined && limits.perScan.maxCostUsd > 0) {
|
|
87
|
+
const ratio = input.currentScanCostUsd / limits.perScan.maxCostUsd;
|
|
88
|
+
if (ratio >= abortAt) {
|
|
89
|
+
escalate({
|
|
90
|
+
ok: false,
|
|
91
|
+
action: 'abort',
|
|
92
|
+
reason: `Per-scan cost limit reached: ${input.currentScanCostUsd.toFixed(4)} / ${limits.perScan.maxCostUsd} USD`,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
else if (ratio >= warnAt) {
|
|
96
|
+
escalate({
|
|
97
|
+
ok: true,
|
|
98
|
+
action: 'warn',
|
|
99
|
+
reason: `Per-scan cost at ${(ratio * 100).toFixed(0)}% of limit (${input.currentScanCostUsd.toFixed(4)} / ${limits.perScan.maxCostUsd} USD)`,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Per-period cost limit
|
|
104
|
+
if (limits.perPeriod && limits.perPeriod.maxCostUsd > 0) {
|
|
105
|
+
const now = input.now ?? new Date();
|
|
106
|
+
const start = windowStart(now, limits.perPeriod.window);
|
|
107
|
+
const historical = sumHistoryWithinWindow(input.history ?? [], start, now);
|
|
108
|
+
const total = historical + input.currentScanCostUsd;
|
|
109
|
+
const ratio = total / limits.perPeriod.maxCostUsd;
|
|
110
|
+
if (ratio >= abortAt) {
|
|
111
|
+
escalate({
|
|
112
|
+
ok: false,
|
|
113
|
+
action: 'abort',
|
|
114
|
+
reason: `Per-${limits.perPeriod.window} cost limit reached: ${total.toFixed(4)} / ${limits.perPeriod.maxCostUsd} USD`,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
else if (ratio >= warnAt) {
|
|
118
|
+
escalate({
|
|
119
|
+
ok: true,
|
|
120
|
+
action: 'warn',
|
|
121
|
+
reason: `Per-${limits.perPeriod.window} cost at ${(ratio * 100).toFixed(0)}% of limit (${total.toFixed(4)} / ${limits.perPeriod.maxCostUsd} USD)`,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return worst;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Sentinel error thrown by the scan runner when a budget abort fires mid-scan.
|
|
129
|
+
* Distinct class so callers can detect budget aborts vs other failures.
|
|
130
|
+
*/
|
|
131
|
+
export class BudgetExceededError extends Error {
|
|
132
|
+
constructor(message) {
|
|
133
|
+
super(message);
|
|
134
|
+
this.name = 'BudgetExceededError';
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budget.js","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI utility for building / editing a runtime-config.json file.
|
|
3
|
+
*
|
|
4
|
+
* Interactive by default; flag-only mode skips prompts. If a config file
|
|
5
|
+
* already exists, its values are loaded and used as defaults — only the
|
|
6
|
+
* fields you change (or pass as flags) are updated.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* aghast build-config --config-dir <path> # interactive, file at <path>/runtime-config.json
|
|
10
|
+
* aghast build-config --runtime-config <file> # interactive, write to explicit file
|
|
11
|
+
* aghast build-config --config-dir <path> --provider claude-code --model sonnet # non-interactive
|
|
12
|
+
* aghast build-config --config-dir <path> --non-interactive # accept all current/defaults
|
|
13
|
+
*/
|
|
14
|
+
export declare function runBuildConfig(args: string[]): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=build-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-config.d.ts","sourceRoot":"","sources":["../src/build-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA4XH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkOlE"}
|