@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,MAAM,WAAW,YAAY;IAC3B,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC;IACxC,uCAAuC;IACvC,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,qEAAqE;IACrE,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IACtB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,GAAG,aAAa,GAAG,YAAY,CAAC,CAIpG,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,+DAA+D;AAC/D,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAkExD;AAID,MAAM,WAAW,qBAAqB;IACpC,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAED,qEAAqE;AACrE,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,mBAAmB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAM3D;AAED;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,mBAAmB,CAAK;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,OAAO,EAAE,qBAAqB;IAO1C,sEAAsE;IACtE,MAAM,IAAI,OAAO;IAIjB,qCAAqC;IACrC,aAAa,IAAI,IAAI;IAIrB,4EAA4E;IAC5E,aAAa,IAAI,IAAI;IAIrB,qEAAqE;IACrE,KAAK,IAAI,IAAI;IAIb,iEAAiE;IACjE,sBAAsB,IAAI,MAAM;CAGjC;AAID,wEAAwE;AACxE,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,MAAM,MAAoB,GACjC,MAAM,CAOR;AAKD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAiE1F"}
|
package/dist/retry.js
ADDED
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retry helper with exponential backoff and an optional shared circuit breaker.
|
|
3
|
+
*
|
|
4
|
+
* Spec Appendix E.6 — Retry and Resilience.
|
|
5
|
+
*
|
|
6
|
+
* Default classifier retries on rate-limit (429), 5xx, network/timeout errors;
|
|
7
|
+
* does NOT retry auth errors (401/403) or validation errors. Callers can override
|
|
8
|
+
* via `isRetryable`.
|
|
9
|
+
*
|
|
10
|
+
* The circuit breaker is shared across every `withRetry` invocation that
|
|
11
|
+
* receives the same `CircuitBreaker` instance. Within a single scan that
|
|
12
|
+
* means concurrent target analyses share one breaker; across multiple
|
|
13
|
+
* `runMultiScan` invocations the scope depends on whether the caller hoists
|
|
14
|
+
* the breaker to module scope or constructs a fresh one per scan (currently
|
|
15
|
+
* `runMultiScan` does the latter, so the breaker is per-scan, not per-process).
|
|
16
|
+
* When `consecutiveFailures` reaches the configured threshold, subsequent
|
|
17
|
+
* calls fail-fast with `CircuitOpenError` without invoking the wrapped
|
|
18
|
+
* function. A successful call resets the counter.
|
|
19
|
+
*/
|
|
20
|
+
import { logDebug } from './logging.js';
|
|
21
|
+
const TAG = 'retry';
|
|
22
|
+
/**
|
|
23
|
+
* Default retry options used when callers don't supply a value.
|
|
24
|
+
*
|
|
25
|
+
* `maxAttempts: 1` means retry is OFF unless explicitly configured — one
|
|
26
|
+
* attempt, no backoff, the original error rethrown untouched. This keeps a
|
|
27
|
+
* plain `aghast scan` behaving exactly as it did before retry existed.
|
|
28
|
+
* Opt in with `--retry-max-attempts`, `AGHAST_RETRY_MAX_ATTEMPTS`, or
|
|
29
|
+
* `retry.maxAttempts` in runtime config.
|
|
30
|
+
*
|
|
31
|
+
* The backoff values below are the defaults used *once retry is enabled*;
|
|
32
|
+
* they have no effect at `maxAttempts: 1`.
|
|
33
|
+
*/
|
|
34
|
+
export const DEFAULT_RETRY = {
|
|
35
|
+
maxAttempts: 1,
|
|
36
|
+
baseDelayMs: 1000,
|
|
37
|
+
maxDelayMs: 16000,
|
|
38
|
+
};
|
|
39
|
+
/** Attempts at or below this mean the caller has not opted into retry. */
|
|
40
|
+
export const RETRY_DISABLED_ATTEMPTS = 1;
|
|
41
|
+
/** True when the resolved options leave retry switched off. */
|
|
42
|
+
export function isRetryEnabled(maxAttempts) {
|
|
43
|
+
return maxAttempts > RETRY_DISABLED_ATTEMPTS;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Default retryable-error classifier.
|
|
47
|
+
*
|
|
48
|
+
* Decision order (first match wins):
|
|
49
|
+
* 1. HTTP status / statusCode property — authoritative when present.
|
|
50
|
+
* 4xx (except 429) → not retryable; 429 and 5xx → retryable.
|
|
51
|
+
* 2. errno-style `code` property (ECONNRESET, ETIMEDOUT, etc.) → retryable.
|
|
52
|
+
* 3. Free-text message fallback — only consulted when neither status nor
|
|
53
|
+
* code matched. Looks for explicit substrings like "rate limit",
|
|
54
|
+
* "timed out", "socket hang up". We deliberately do NOT pattern-match
|
|
55
|
+
* bare 5xx digits in messages (too prone to false positives — e.g.
|
|
56
|
+
* "failed at 500ms timeout" would otherwise be classified retryable).
|
|
57
|
+
*
|
|
58
|
+
* Does NOT retry:
|
|
59
|
+
* - 401 / 403 (auth)
|
|
60
|
+
* - 400 / 404 / 422 (client/validation)
|
|
61
|
+
* - Anything classified as fatal by the agent provider (the scan runner
|
|
62
|
+
* handles FatalProviderError separately — those never reach this classifier).
|
|
63
|
+
* - Unknown errors (callers can pass a custom `isRetryable` to widen this).
|
|
64
|
+
*/
|
|
65
|
+
export function defaultIsRetryable(err) {
|
|
66
|
+
if (err === null || err === undefined)
|
|
67
|
+
return false;
|
|
68
|
+
// Inspect error properties without coupling to a specific SDK
|
|
69
|
+
const e = err;
|
|
70
|
+
// 0. Errors the rest of the system has already decided are terminal. This has
|
|
71
|
+
// to come first, and it has to be here rather than relying on the caller.
|
|
72
|
+
//
|
|
73
|
+
// `claude-code-provider` raises FatalProviderError for quota exhaustion
|
|
74
|
+
// ("you've hit your limit" / 429) and for 401s, with the explicit reasoning
|
|
75
|
+
// that retrying cannot help — a subscription limit resets on a schedule,
|
|
76
|
+
// not in seconds. Those messages contain "rate limit", so the message
|
|
77
|
+
// fallback below would otherwise classify them as retryable and we would
|
|
78
|
+
// spend the remaining attempts re-hitting an exhausted quota.
|
|
79
|
+
//
|
|
80
|
+
// BudgetExceededError is the same shape of decision: the scan has spent
|
|
81
|
+
// what it was allowed to spend, and retrying is precisely wrong.
|
|
82
|
+
//
|
|
83
|
+
// Matched by name rather than instanceof so this holds for errors that
|
|
84
|
+
// crossed a serialization boundary and lost their prototype.
|
|
85
|
+
if (e.name === 'FatalProviderError' || e.name === 'BudgetExceededError')
|
|
86
|
+
return false;
|
|
87
|
+
// 0b. aghast's own timeout guard. Classified explicitly rather than falling
|
|
88
|
+
// through to the message fallback below, so the decision is deliberate and
|
|
89
|
+
// testable rather than a side effect of the word "timeout" appearing in
|
|
90
|
+
// the text. Retryable: a hung stream often succeeds on a fresh call.
|
|
91
|
+
if (e.name === 'AgentTimeoutError')
|
|
92
|
+
return true;
|
|
93
|
+
// 1. Status code (authoritative). If present, this short-circuits message inspection.
|
|
94
|
+
const status = e.status ?? e.statusCode;
|
|
95
|
+
if (typeof status === 'number') {
|
|
96
|
+
if (status === 429)
|
|
97
|
+
return true;
|
|
98
|
+
if (status >= 500 && status < 600)
|
|
99
|
+
return true;
|
|
100
|
+
if (status >= 400 && status < 500)
|
|
101
|
+
return false; // includes 401/403/422/etc
|
|
102
|
+
}
|
|
103
|
+
// 2. errno-style code (authoritative when present).
|
|
104
|
+
const code = e.code;
|
|
105
|
+
if (typeof code === 'string') {
|
|
106
|
+
const retryableCodes = new Set([
|
|
107
|
+
'ECONNRESET',
|
|
108
|
+
'ETIMEDOUT',
|
|
109
|
+
'EAI_AGAIN',
|
|
110
|
+
'ECONNREFUSED',
|
|
111
|
+
'ENETUNREACH',
|
|
112
|
+
'EPIPE',
|
|
113
|
+
'ENOTFOUND',
|
|
114
|
+
]);
|
|
115
|
+
if (retryableCodes.has(code))
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
// 3. Message-substring fallback. Only reached when neither status nor code
|
|
119
|
+
// matched. Keep this list narrow — bare numeric ranges like "5xx" or `\d{3}`
|
|
120
|
+
// are too easy to match incidentally (e.g. ports, byte counts). The `\b429\b`
|
|
121
|
+
// pattern is the one numeric exception: providers that surface rate-limit
|
|
122
|
+
// errors as plain text (e.g. "HTTP 429: too many requests") still need to
|
|
123
|
+
// retry, and 429 with word-boundaries is unambiguous enough.
|
|
124
|
+
const msg = (e.message ?? '').toLowerCase();
|
|
125
|
+
if (msg.includes('rate limit') || /\b429\b/.test(msg))
|
|
126
|
+
return true;
|
|
127
|
+
if (msg.includes('timed out') || msg.includes('timeout'))
|
|
128
|
+
return true;
|
|
129
|
+
if (msg.includes('econnreset') || msg.includes('etimedout') || msg.includes('socket hang up'))
|
|
130
|
+
return true;
|
|
131
|
+
// Default: don't retry unknown errors. Better to surface unexpected failures than
|
|
132
|
+
// to mask them by silently retrying — caller can pass a custom classifier if needed.
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Thrown when aghast's own per-call guard fires because a provider call did not
|
|
137
|
+
* return in time. Distinct from a provider-reported network timeout.
|
|
138
|
+
*
|
|
139
|
+
* Named rather than message-matched so the retry decision is deliberate: before
|
|
140
|
+
* this existed, the classification depended on the word "timeout" appearing in
|
|
141
|
+
* a free-text message, which is exactly the incidental matching the classifier
|
|
142
|
+
* warns against elsewhere.
|
|
143
|
+
*
|
|
144
|
+
* It IS retryable — a hung stream frequently succeeds on a fresh call — but the
|
|
145
|
+
* cost is visible: with `maxAttempts: n` a genuinely wedged provider takes up to
|
|
146
|
+
* n × the timeout to give up. That trade is documented in
|
|
147
|
+
* docs/configuration.md so anyone enabling retry knows what they are buying.
|
|
148
|
+
*/
|
|
149
|
+
export class AgentTimeoutError extends Error {
|
|
150
|
+
constructor(message) {
|
|
151
|
+
super(message);
|
|
152
|
+
this.name = 'AgentTimeoutError';
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/** Thrown by `withRetry` when the breaker is open (failing fast). */
|
|
156
|
+
export class CircuitOpenError extends Error {
|
|
157
|
+
constructor(consecutiveFailures, threshold) {
|
|
158
|
+
super(`Circuit breaker open: ${consecutiveFailures} consecutive failures reached threshold ${threshold}. Failing fast — wrapped function will not be invoked.`);
|
|
159
|
+
this.name = 'CircuitOpenError';
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Process-level circuit breaker. Shared across all `withRetry` calls that
|
|
164
|
+
* receive the same instance. Counts only TOTAL failures (after all retries
|
|
165
|
+
* for a single call exhausted), not individual attempts.
|
|
166
|
+
*/
|
|
167
|
+
export class CircuitBreaker {
|
|
168
|
+
consecutiveFailures = 0;
|
|
169
|
+
threshold;
|
|
170
|
+
constructor(options) {
|
|
171
|
+
if (options.threshold < 1) {
|
|
172
|
+
throw new Error(`CircuitBreaker threshold must be >= 1 (got ${options.threshold})`);
|
|
173
|
+
}
|
|
174
|
+
this.threshold = options.threshold;
|
|
175
|
+
}
|
|
176
|
+
/** True when the breaker is open (further calls should fail-fast). */
|
|
177
|
+
isOpen() {
|
|
178
|
+
return this.consecutiveFailures >= this.threshold;
|
|
179
|
+
}
|
|
180
|
+
/** Increment the failure counter. */
|
|
181
|
+
recordFailure() {
|
|
182
|
+
this.consecutiveFailures++;
|
|
183
|
+
}
|
|
184
|
+
/** Reset the failure counter. Called on any successful `withRetry` call. */
|
|
185
|
+
recordSuccess() {
|
|
186
|
+
this.consecutiveFailures = 0;
|
|
187
|
+
}
|
|
188
|
+
/** Force-reset the counter (useful for tests or manual recovery). */
|
|
189
|
+
reset() {
|
|
190
|
+
this.consecutiveFailures = 0;
|
|
191
|
+
}
|
|
192
|
+
/** Current consecutive-failure count (for diagnostics/tests). */
|
|
193
|
+
getConsecutiveFailures() {
|
|
194
|
+
return this.consecutiveFailures;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
// ─── Backoff ──────────────────────────────────────────────────────────────────
|
|
198
|
+
/** Compute the next backoff delay given an attempt number (1-based). */
|
|
199
|
+
export function computeBackoff(attempt, baseDelayMs, maxDelayMs, random = Math.random) {
|
|
200
|
+
// Exponential growth: base * 2^(attempt-1), capped at maxDelayMs
|
|
201
|
+
const exp = baseDelayMs * Math.pow(2, attempt - 1);
|
|
202
|
+
const capped = Math.min(maxDelayMs, exp);
|
|
203
|
+
// Jitter factor in [0.5, 1.0)
|
|
204
|
+
const jitter = 0.5 + random() * 0.5;
|
|
205
|
+
return Math.floor(capped * jitter);
|
|
206
|
+
}
|
|
207
|
+
const defaultSleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
208
|
+
/**
|
|
209
|
+
* Run `fn` with retry on transient errors. Returns its result on success;
|
|
210
|
+
* throws on the final failure (or `CircuitOpenError` if the breaker is open).
|
|
211
|
+
*/
|
|
212
|
+
export async function withRetry(fn, options) {
|
|
213
|
+
const { maxAttempts, baseDelayMs, maxDelayMs, isRetryable = defaultIsRetryable, breaker, sleep = defaultSleep, random = Math.random, label, } = options;
|
|
214
|
+
if (maxAttempts < 1) {
|
|
215
|
+
throw new Error(`withRetry: maxAttempts must be >= 1 (got ${maxAttempts})`);
|
|
216
|
+
}
|
|
217
|
+
if (breaker?.isOpen()) {
|
|
218
|
+
throw new CircuitOpenError(breaker.getConsecutiveFailures(), breaker.threshold);
|
|
219
|
+
}
|
|
220
|
+
const prefix = label ? `[${label}] ` : '';
|
|
221
|
+
let lastError;
|
|
222
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
223
|
+
// Re-check breaker on each iteration so a concurrent caller tripping the
|
|
224
|
+
// breaker mid-sleep aborts subsequent retries instead of pushing further
|
|
225
|
+
// load onto a known-broken downstream. We do NOT count this fail-fast as
|
|
226
|
+
// a fresh failure (the breaker already counted the failures that opened it).
|
|
227
|
+
if (attempt > 1 && breaker?.isOpen()) {
|
|
228
|
+
logDebug(TAG, `${prefix}Breaker opened during retry sleep; aborting further attempts.`);
|
|
229
|
+
throw new CircuitOpenError(breaker.getConsecutiveFailures(), breaker.threshold);
|
|
230
|
+
}
|
|
231
|
+
try {
|
|
232
|
+
const result = await fn();
|
|
233
|
+
breaker?.recordSuccess();
|
|
234
|
+
return result;
|
|
235
|
+
}
|
|
236
|
+
catch (err) {
|
|
237
|
+
lastError = err;
|
|
238
|
+
const retryable = isRetryable(err);
|
|
239
|
+
const isLast = attempt === maxAttempts;
|
|
240
|
+
const errMsg = err instanceof Error ? err.message : String(err);
|
|
241
|
+
if (!retryable || isLast) {
|
|
242
|
+
if (!retryable) {
|
|
243
|
+
logDebug(TAG, `${prefix}Non-retryable error on attempt ${attempt}: ${errMsg}`);
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
logDebug(TAG, `${prefix}Exhausted ${maxAttempts} attempts; final error: ${errMsg}`);
|
|
247
|
+
}
|
|
248
|
+
// Total failure for this call — increment breaker (if any) and rethrow.
|
|
249
|
+
breaker?.recordFailure();
|
|
250
|
+
throw err;
|
|
251
|
+
}
|
|
252
|
+
const delay = computeBackoff(attempt, baseDelayMs, maxDelayMs, random);
|
|
253
|
+
logDebug(TAG, `${prefix}Attempt ${attempt}/${maxAttempts} failed (${errMsg}); retrying in ${delay}ms`);
|
|
254
|
+
await sleep(delay);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
// Unreachable — the loop either returns or throws — but TypeScript doesn't know that.
|
|
258
|
+
/* istanbul ignore next */
|
|
259
|
+
throw lastError;
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,MAAM,GAAG,GAAG,OAAO,CAAC;AAqBpB;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,aAAa,GAA+E;IACvG,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,KAAK;CAClB,CAAC;AAEF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAEzC,+DAA+D;AAC/D,MAAM,UAAU,cAAc,CAAC,WAAmB;IAChD,OAAO,WAAW,GAAG,uBAAuB,CAAC;AAC/C,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAEpD,8DAA8D;IAC9D,MAAM,CAAC,GAAG,GAA+F,CAAC;IAE1G,8EAA8E;IAC9E,6EAA6E;IAC7E,EAAE;IACF,2EAA2E;IAC3E,+EAA+E;IAC/E,4EAA4E;IAC5E,yEAAyE;IACzE,4EAA4E;IAC5E,iEAAiE;IACjE,EAAE;IACF,2EAA2E;IAC3E,oEAAoE;IACpE,EAAE;IACF,0EAA0E;IAC1E,gEAAgE;IAChE,IAAI,CAAC,CAAC,IAAI,KAAK,oBAAoB,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAqB;QAAE,OAAO,KAAK,CAAC;IAEtF,4EAA4E;IAC5E,+EAA+E;IAC/E,4EAA4E;IAC5E,yEAAyE;IACzE,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB;QAAE,OAAO,IAAI,CAAC;IAEhD,sFAAsF;IACtF,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC;IACxC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAChC,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG;YAAE,OAAO,IAAI,CAAC;QAC/C,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG;YAAE,OAAO,KAAK,CAAC,CAAC,2BAA2B;IAC9E,CAAC;IAED,oDAAoD;IACpD,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IACpB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;YAC7B,YAAY;YACZ,WAAW;YACX,WAAW;YACX,cAAc;YACd,aAAa;YACb,OAAO;YACP,WAAW;SACZ,CAAC,CAAC;QACH,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IAC5C,CAAC;IAED,2EAA2E;IAC3E,6EAA6E;IAC7E,8EAA8E;IAC9E,0EAA0E;IAC1E,0EAA0E;IAC1E,6DAA6D;IAC7D,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5C,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACnE,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IACtE,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3G,kFAAkF;IAClF,qFAAqF;IACrF,OAAO,KAAK,CAAC;AACf,CAAC;AASD;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,qEAAqE;AACrE,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YAAY,mBAA2B,EAAE,SAAiB;QACxD,KAAK,CACH,yBAAyB,mBAAmB,2CAA2C,SAAS,wDAAwD,CACzJ,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,cAAc;IACjB,mBAAmB,GAAG,CAAC,CAAC;IACvB,SAAS,CAAS;IAE3B,YAAY,OAA8B;QACxC,IAAI,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,8CAA8C,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACrC,CAAC;IAED,sEAAsE;IACtE,MAAM;QACJ,OAAO,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,SAAS,CAAC;IACpD,CAAC;IAED,qCAAqC;IACrC,aAAa;QACX,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED,4EAA4E;IAC5E,aAAa;QACX,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,qEAAqE;IACrE,KAAK;QACH,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,iEAAiE;IACjE,sBAAsB;QACpB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,iFAAiF;AAEjF,wEAAwE;AACxE,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,WAAmB,EACnB,UAAkB,EAClB,SAAuB,IAAI,CAAC,MAAM;IAElC,iEAAiE;IACjE,MAAM,GAAG,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACzC,8BAA8B;IAC9B,MAAM,MAAM,GAAG,GAAG,GAAG,MAAM,EAAE,GAAG,GAAG,CAAC;IACpC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,EAAU,EAAiB,EAAE,CACjD,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAEpD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,EAAoB,EAAE,OAAqB;IAC5E,MAAM,EACJ,WAAW,EACX,WAAW,EACX,UAAU,EACV,WAAW,GAAG,kBAAkB,EAChC,OAAO,EACP,KAAK,GAAG,YAAY,EACpB,MAAM,GAAG,IAAI,CAAC,MAAM,EACpB,KAAK,GACN,GAAG,OAAO,CAAC;IAEZ,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,4CAA4C,WAAW,GAAG,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;QACtB,MAAM,IAAI,gBAAgB,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAE1C,IAAI,SAAkB,CAAC;IACvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,yEAAyE;QACzE,yEAAyE;QACzE,yEAAyE;QACzE,6EAA6E;QAC7E,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;YACrC,QAAQ,CACN,GAAG,EACH,GAAG,MAAM,+DAA+D,CACzE,CAAC;YACF,MAAM,IAAI,gBAAgB,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;YAC1B,OAAO,EAAE,aAAa,EAAE,CAAC;YACzB,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,GAAG,GAAG,CAAC;YAChB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,OAAO,KAAK,WAAW,CAAC;YACvC,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChE,IAAI,CAAC,SAAS,IAAI,MAAM,EAAE,CAAC;gBACzB,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,QAAQ,CAAC,GAAG,EAAE,GAAG,MAAM,kCAAkC,OAAO,KAAK,MAAM,EAAE,CAAC,CAAC;gBACjF,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,GAAG,EAAE,GAAG,MAAM,aAAa,WAAW,2BAA2B,MAAM,EAAE,CAAC,CAAC;gBACtF,CAAC;gBACD,wEAAwE;gBACxE,OAAO,EAAE,aAAa,EAAE,CAAC;gBACzB,MAAM,GAAG,CAAC;YACZ,CAAC;YACD,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;YACvE,QAAQ,CACN,GAAG,EACH,GAAG,MAAM,WAAW,OAAO,IAAI,WAAW,YAAY,MAAM,kBAAkB,KAAK,IAAI,CACxF,CAAC;YACF,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,sFAAsF;IACtF,0BAA0B;IAC1B,MAAM,SAAS,CAAC;AAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-config.d.ts","sourceRoot":"","sources":["../src/runtime-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"runtime-config.d.ts","sourceRoot":"","sources":["../src/runtime-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAkPzG"}
|
package/dist/runtime-config.js
CHANGED
|
@@ -68,6 +68,17 @@ export async function loadRuntimeConfig(configDir, explicitPath) {
|
|
|
68
68
|
if (rpt.outputFormat !== undefined && typeof rpt.outputFormat !== 'string') {
|
|
69
69
|
throw new Error(`Runtime config "${pathToLoad}": "reporting.outputFormat" must be a string`);
|
|
70
70
|
}
|
|
71
|
+
if (rpt.includeIndividualIssueFiles !== undefined && typeof rpt.includeIndividualIssueFiles !== 'boolean') {
|
|
72
|
+
throw new Error(`Runtime config "${pathToLoad}": "reporting.includeIndividualIssueFiles" must be a boolean`);
|
|
73
|
+
}
|
|
74
|
+
if (rpt.individualIssueFormat !== undefined) {
|
|
75
|
+
if (typeof rpt.individualIssueFormat !== 'string') {
|
|
76
|
+
throw new Error(`Runtime config "${pathToLoad}": "reporting.individualIssueFormat" must be a string`);
|
|
77
|
+
}
|
|
78
|
+
if (rpt.individualIssueFormat !== 'markdown' && rpt.individualIssueFormat !== 'json' && rpt.individualIssueFormat !== 'html') {
|
|
79
|
+
throw new Error(`Runtime config "${pathToLoad}": "reporting.individualIssueFormat" must be one of "markdown", "json", "html"`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
71
82
|
}
|
|
72
83
|
if (obj.genericPrompt !== undefined && typeof obj.genericPrompt !== 'string') {
|
|
73
84
|
throw new Error(`Runtime config "${pathToLoad}": "genericPrompt" must be a string`);
|
|
@@ -138,6 +149,32 @@ export async function loadRuntimeConfig(configDir, explicitPath) {
|
|
|
138
149
|
}
|
|
139
150
|
}
|
|
140
151
|
}
|
|
152
|
+
if (obj.retry !== undefined) {
|
|
153
|
+
if (typeof obj.retry !== 'object' || obj.retry === null || Array.isArray(obj.retry)) {
|
|
154
|
+
throw new Error(`Runtime config "${pathToLoad}": "retry" must be an object`);
|
|
155
|
+
}
|
|
156
|
+
const retry = obj.retry;
|
|
157
|
+
// Validated at load rather than at first use: an invalid retry setting
|
|
158
|
+
// otherwise surfaces mid-scan, after AI calls have already been paid for.
|
|
159
|
+
const positiveInt = (key, min) => {
|
|
160
|
+
const value = retry[key];
|
|
161
|
+
if (value === undefined)
|
|
162
|
+
return;
|
|
163
|
+
if (typeof value !== 'number' || !Number.isInteger(value) || value < min) {
|
|
164
|
+
throw new Error(`Runtime config "${pathToLoad}": "retry.${key}" must be an integer >= ${min}`);
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
// maxAttempts counts the first attempt, so 1 is valid and means no retry.
|
|
168
|
+
positiveInt('maxAttempts', 1);
|
|
169
|
+
positiveInt('baseDelayMs', 0);
|
|
170
|
+
positiveInt('maxDelayMs', 0);
|
|
171
|
+
positiveInt('circuitBreakerThreshold', 1);
|
|
172
|
+
const base = retry.baseDelayMs;
|
|
173
|
+
const max = retry.maxDelayMs;
|
|
174
|
+
if (typeof base === 'number' && typeof max === 'number' && max < base) {
|
|
175
|
+
throw new Error(`Runtime config "${pathToLoad}": "retry.maxDelayMs" (${max}) must be >= "retry.baseDelayMs" (${base})`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
141
178
|
if (obj.pricing !== undefined) {
|
|
142
179
|
if (typeof obj.pricing !== 'object' || obj.pricing === null || Array.isArray(obj.pricing)) {
|
|
143
180
|
throw new Error(`Runtime config "${pathToLoad}": "pricing" must be an object`);
|
|
@@ -182,6 +219,31 @@ export async function loadRuntimeConfig(configDir, explicitPath) {
|
|
|
182
219
|
throw new Error(`Runtime config "${pathToLoad}": "logging.level" must be a string`);
|
|
183
220
|
}
|
|
184
221
|
}
|
|
222
|
+
if (obj.judge !== undefined) {
|
|
223
|
+
if (typeof obj.judge !== 'object' || obj.judge === null || Array.isArray(obj.judge)) {
|
|
224
|
+
throw new Error(`Runtime config "${pathToLoad}": "judge" must be an object`);
|
|
225
|
+
}
|
|
226
|
+
const j = obj.judge;
|
|
227
|
+
if (j.provider !== undefined && typeof j.provider !== 'string') {
|
|
228
|
+
throw new Error(`Runtime config "${pathToLoad}": "judge.provider" must be a string`);
|
|
229
|
+
}
|
|
230
|
+
if (j.model !== undefined && typeof j.model !== 'string') {
|
|
231
|
+
throw new Error(`Runtime config "${pathToLoad}": "judge.model" must be a string`);
|
|
232
|
+
}
|
|
233
|
+
if (j.concurrency !== undefined) {
|
|
234
|
+
if (typeof j.concurrency !== 'number' || !Number.isInteger(j.concurrency) || j.concurrency <= 0) {
|
|
235
|
+
throw new Error(`Runtime config "${pathToLoad}": "judge.concurrency" must be a positive integer`);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
if (j.dropFalsePositives !== undefined && typeof j.dropFalsePositives !== 'boolean') {
|
|
239
|
+
throw new Error(`Runtime config "${pathToLoad}": "judge.dropFalsePositives" must be a boolean`);
|
|
240
|
+
}
|
|
241
|
+
if (j.minConfidence !== undefined) {
|
|
242
|
+
if (typeof j.minConfidence !== 'number' || j.minConfidence < 0 || j.minConfidence > 1) {
|
|
243
|
+
throw new Error(`Runtime config "${pathToLoad}": "judge.minConfidence" must be a number between 0 and 1`);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
185
247
|
return parsed;
|
|
186
248
|
}
|
|
187
249
|
//# sourceMappingURL=runtime-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-config.js","sourceRoot":"","sources":["../src/runtime-config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime-config.js","sourceRoot":"","sources":["../src/runtime-config.ts"],"names":[],"mappings":"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"}
|
package/dist/scan-runner.d.ts
CHANGED
|
@@ -4,9 +4,12 @@
|
|
|
4
4
|
* Implements the core workflow from spec Section 2.2.
|
|
5
5
|
*/
|
|
6
6
|
import { type AgentProvider, type RepositoryInfo, type CheckDetails, type SecurityCheck, type ScanResults, type TokenUsage } from './types.js';
|
|
7
|
-
import {
|
|
7
|
+
import type { PricingConfig, CostBreakdown } from './cost-calculator.js';
|
|
8
8
|
import { type BudgetLimits } from './budget.js';
|
|
9
9
|
import type { ScanRecord } from './scan-history.js';
|
|
10
|
+
import { type ScanCostTracker } from './cost-tracker.js';
|
|
11
|
+
import { type RetryOptions } from './retry.js';
|
|
12
|
+
import { type JudgeOptions } from './judge.js';
|
|
10
13
|
/**
|
|
11
14
|
* Decide whether to apply the diff filter to a check's discovered targets.
|
|
12
15
|
*
|
|
@@ -28,12 +31,23 @@ export declare function shouldApplyDiffFilter(check: SecurityCheck, discovery: {
|
|
|
28
31
|
* back to undefined (which triggers rate-based estimation later).
|
|
29
32
|
*/
|
|
30
33
|
export declare function sumTokenUsage(usages: (TokenUsage | undefined)[]): TokenUsage | undefined;
|
|
34
|
+
/** Scan-level resilience settings. Omit for the defaults. */
|
|
35
|
+
export interface ScanRetryOptions extends Partial<RetryOptions> {
|
|
36
|
+
/**
|
|
37
|
+
* Consecutive transient failures across the whole scan before retrying stops.
|
|
38
|
+
* The breaker is shared by every check and target, so this counts failures
|
|
39
|
+
* anywhere, not per target.
|
|
40
|
+
*/
|
|
41
|
+
circuitBreakerThreshold?: number;
|
|
42
|
+
}
|
|
31
43
|
export interface MultiScanOptions {
|
|
32
44
|
repositoryPath: string;
|
|
33
45
|
checks: Array<{
|
|
34
46
|
check: SecurityCheck;
|
|
35
47
|
details: CheckDetails;
|
|
36
48
|
}>;
|
|
49
|
+
/** Retry/backoff settings for transient provider failures. */
|
|
50
|
+
retry?: ScanRetryOptions;
|
|
37
51
|
agentProvider?: AgentProvider;
|
|
38
52
|
modelName?: string;
|
|
39
53
|
agentProviderName?: string;
|
|
@@ -67,28 +81,15 @@ export interface MultiScanOptions {
|
|
|
67
81
|
scanHistory?: ScanRecord[];
|
|
68
82
|
/** true when AGHAST_LOCAL_CLAUDE=true — triggers budget warning if limits are also set */
|
|
69
83
|
isLocalClaude?: boolean;
|
|
84
|
+
/** Judge stage options. The stage runs iff this is provided (model presence enforced by caller). */
|
|
85
|
+
judge?: JudgeOptions;
|
|
86
|
+
/**
|
|
87
|
+
* Map of checkId → check instructions content, used by the judge to frame its verdict.
|
|
88
|
+
* When omitted, the judge runs without check-specific context.
|
|
89
|
+
*/
|
|
90
|
+
judgeCheckInstructions?: Map<string, string>;
|
|
70
91
|
}
|
|
71
|
-
|
|
72
|
-
* Tracks accumulated tokens/cost across a scan so the budget can be evaluated
|
|
73
|
-
* before each AI call. Mutated in place by AI invocations.
|
|
74
|
-
*/
|
|
75
|
-
export interface ScanCostTracker {
|
|
76
|
-
pricing?: PricingConfig;
|
|
77
|
-
budgetLimits?: BudgetLimits;
|
|
78
|
-
scanHistory?: ScanRecord[];
|
|
79
|
-
totalTokens: number;
|
|
80
|
-
totalCostUsd: number;
|
|
81
|
-
/** Cost source from the last recorded AI call. Used for banner labelling. */
|
|
82
|
-
lastCostSource?: CostBreakdown['source'];
|
|
83
|
-
lastCostReportedBy?: CostBreakdown['reportedBy'];
|
|
84
|
-
lastCostCoveredBySubscription?: boolean;
|
|
85
|
-
/** Set true after the first warn so we don't log it repeatedly. */
|
|
86
|
-
warned: boolean;
|
|
87
|
-
/** Most recent budget action returned to the runner. */
|
|
88
|
-
lastAction: 'continue' | 'warn' | 'abort';
|
|
89
|
-
/** Reason from the most recent non-continue check. */
|
|
90
|
-
lastReason?: string;
|
|
91
|
-
}
|
|
92
|
+
export type { ScanCostTracker };
|
|
92
93
|
/**
|
|
93
94
|
* Generate a scanId in the format: scan-<timestamp>-<hash>
|
|
94
95
|
*/
|
|
@@ -109,6 +110,14 @@ export interface MultiScanOutcome {
|
|
|
109
110
|
budgetAborted?: boolean;
|
|
110
111
|
/** Reason from the budget abort, when budgetAborted is true. */
|
|
111
112
|
budgetAbortReason?: string;
|
|
113
|
+
/** Judge model name when the judge stage ran. */
|
|
114
|
+
judgeModel?: string;
|
|
115
|
+
/** Judge verdicts summary when the judge stage ran. */
|
|
116
|
+
judgeSummary?: {
|
|
117
|
+
judgedIssues: number;
|
|
118
|
+
falsePositives: number;
|
|
119
|
+
uncertainJudgements: number;
|
|
120
|
+
};
|
|
112
121
|
}
|
|
113
122
|
/**
|
|
114
123
|
* Run multiple security checks and return aggregated ScanResults.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan-runner.d.ts","sourceRoot":"","sources":["../src/scan-runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"scan-runner.d.ts","sourceRoot":"","sources":["../src/scan-runner.ts"],"names":[],"mappings":"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"}
|