circle-ir-ai 2.44.0 → 2.46.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/CHANGELOG.md +116 -0
- package/dist/agents/mastra/swarm.js +3 -3
- package/dist/agents/mastra/swarm.js.map +1 -1
- package/dist/agents/mastra/workflow.d.ts.map +1 -1
- package/dist/agents/mastra/workflow.js +11 -1
- package/dist/agents/mastra/workflow.js.map +1 -1
- package/dist/llm/adaptive-concurrency.d.ts +73 -0
- package/dist/llm/adaptive-concurrency.d.ts.map +1 -0
- package/dist/llm/adaptive-concurrency.js +121 -0
- package/dist/llm/adaptive-concurrency.js.map +1 -0
- package/dist/llm/ax-client.d.ts +45 -4
- package/dist/llm/ax-client.d.ts.map +1 -1
- package/dist/llm/ax-client.js +188 -20
- package/dist/llm/ax-client.js.map +1 -1
- package/dist/llm/call-limiter.d.ts +18 -15
- package/dist/llm/call-limiter.d.ts.map +1 -1
- package/dist/llm/call-limiter.js +38 -8
- package/dist/llm/call-limiter.js.map +1 -1
- package/dist/security-scan/scanner.d.ts.map +1 -1
- package/dist/security-scan/scanner.js +69 -46
- package/dist/security-scan/scanner.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adaptive-concurrency.js","sourceRoot":"","sources":["../../src/llm/adaptive-concurrency.ts"],"names":[],"mappings":"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"}
|
package/dist/llm/ax-client.d.ts
CHANGED
|
@@ -53,6 +53,31 @@ export declare const correlatedPredicateSignature: AxSignature<Record<string, an
|
|
|
53
53
|
*/
|
|
54
54
|
export declare const crossFileTaintSignature: AxSignature<Record<string, any>, Record<string, any>>;
|
|
55
55
|
export type AxPhase = 'enrichment' | 'verification' | 'analysis';
|
|
56
|
+
/**
|
|
57
|
+
* cognium-ai#228 — reset ALL breaker state for a fresh scan. Called at the
|
|
58
|
+
* true top-level scan entry (scanner's file loop, single-file workflow) so a
|
|
59
|
+
* long-lived process (circle-pack) doesn't carry a tripped breaker across
|
|
60
|
+
* repos. The per-file `resetCircuitBreaker()` deliberately does NOT clear the
|
|
61
|
+
* project-dead state (#217); this does.
|
|
62
|
+
*/
|
|
63
|
+
export declare function resetLLMBreakerForScan(): void;
|
|
64
|
+
/**
|
|
65
|
+
* cognium-ai#217 — reset only the PER-FILE breaker (consecutive-failure count
|
|
66
|
+
* + the soft disable) between files within a scan, so one bad file doesn't
|
|
67
|
+
* disable LLM for the whole run. Deliberately does NOT clear the project-dead
|
|
68
|
+
* state — that's the cross-file backstop that must survive per-file resets.
|
|
69
|
+
*/
|
|
70
|
+
export declare function resetLLMPerFileBreaker(): void;
|
|
71
|
+
/** cognium-ai#217 — true once the project-dead breaker has tripped. Module
|
|
72
|
+
* accessor so callers (CLI degraded-status) don't need a client handle. */
|
|
73
|
+
export declare function isLLMEndpointDead(): boolean;
|
|
74
|
+
/** cognium-ai#228 — test/inspection accessor for the shared breaker state. */
|
|
75
|
+
export declare function getLLMBreakerState(): {
|
|
76
|
+
consecutiveFailures: number;
|
|
77
|
+
llmDisabled: boolean;
|
|
78
|
+
projectDeadCalls: number;
|
|
79
|
+
llmProjectDead: boolean;
|
|
80
|
+
};
|
|
56
81
|
export declare const MAX_CODE_CONTEXT_LENGTH: number;
|
|
57
82
|
/**
|
|
58
83
|
* Compute the delay to wait before retrying a rate-limited request.
|
|
@@ -124,9 +149,6 @@ export declare class AxLLMClient {
|
|
|
124
149
|
private config;
|
|
125
150
|
private ai;
|
|
126
151
|
private generators;
|
|
127
|
-
private consecutiveFailures;
|
|
128
|
-
private llmDisabled;
|
|
129
|
-
private connectionFailureWarned;
|
|
130
152
|
/**
|
|
131
153
|
* Set by `_chatJSONImpl` on failure so the outer `chatJSON` wrapper
|
|
132
154
|
* can write a categorical reason to the JSONL log without
|
|
@@ -188,13 +210,32 @@ export declare class AxLLMClient {
|
|
|
188
210
|
*/
|
|
189
211
|
resetCircuitBreaker(): void;
|
|
190
212
|
/**
|
|
191
|
-
*
|
|
213
|
+
* cognium-ai#217 — true once the project-level dead-endpoint breaker has
|
|
214
|
+
* tripped (the LLM endpoint returned empty/timeout/connection failures on
|
|
215
|
+
* ~4 files' worth of calls with no intervening success). The scan then
|
|
216
|
+
* runs static-only; callers can surface a `degraded: llm-unavailable`
|
|
217
|
+
* status instead of reporting a plain size timeout.
|
|
218
|
+
*/
|
|
219
|
+
isLLMProjectDead(): boolean;
|
|
220
|
+
/**
|
|
221
|
+
* Reset the per-file failure counter. Called on any HTTP 200 — note an
|
|
222
|
+
* HTTP-200-but-empty body is NOT a genuine success (it's the #217
|
|
223
|
+
* dead-endpoint signature), so the project-dead counter is reset elsewhere
|
|
224
|
+
* (on genuine content success in `chatJSON`), not here.
|
|
192
225
|
*/
|
|
193
226
|
private resetFailures;
|
|
194
227
|
/**
|
|
195
228
|
* Track a failure and potentially disable LLM
|
|
196
229
|
*/
|
|
197
230
|
private trackFailure;
|
|
231
|
+
/**
|
|
232
|
+
* cognium-ai#217 — track an *endpoint-dead* failure (empty response,
|
|
233
|
+
* timeout, or connection error). Unlike {@link trackFailure}, this counter
|
|
234
|
+
* survives the per-file `resetCircuitBreaker()`, so a wholesale endpoint
|
|
235
|
+
* stall trips a project-level breaker and the scan finishes static-only
|
|
236
|
+
* rather than re-paying dead time on every file to the wall-clock cap.
|
|
237
|
+
*/
|
|
238
|
+
private trackDeadCall;
|
|
198
239
|
/**
|
|
199
240
|
* Detect connection-class errors (endpoint unreachable, DNS failure,
|
|
200
241
|
* connection refused, etc.). These should immediately trip the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ax-client.d.ts","sourceRoot":"","sources":["../../src/llm/ax-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ax-client.d.ts","sourceRoot":"","sources":["../../src/llm/ax-client.ts"],"names":[],"mappings":"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"}
|
package/dist/llm/ax-client.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { AxAIOpenAI, AxGen, AxSignature, } from '@ax-llm/ax';
|
|
8
8
|
import PQueue from 'p-queue';
|
|
9
|
+
import { AdaptiveConcurrency, parseConcurrencySetting, resolveAdaptiveConfig, } from './adaptive-concurrency.js';
|
|
9
10
|
import { getDefaultLLMConfig, validateLLMConfig, buildChatCompletionBody } from './config.js';
|
|
10
11
|
import { RoleClassificationResponseSchema, SourceDiscoveryResponseSchema, SinkDiscoveryResponseSchema, VerificationResponseSchema, } from './schemas.js';
|
|
11
12
|
import { sanitizeCodeForPrompt, sanitizeListForPrompt, formatSystemPrompt, logInjectionAttempt, } from './prompt-security.js';
|
|
@@ -104,6 +105,86 @@ export const crossFileTaintSignature = AxSignature.create(`
|
|
|
104
105
|
* Maximum consecutive LLM failures before skipping further calls
|
|
105
106
|
*/
|
|
106
107
|
const MAX_CONSECUTIVE_FAILURES = 5;
|
|
108
|
+
/**
|
|
109
|
+
* cognium-ai#217 — project-level dead-endpoint breaker threshold.
|
|
110
|
+
*
|
|
111
|
+
* The per-file breaker (`MAX_CONSECUTIVE_FAILURES`) is reset between files
|
|
112
|
+
* (`resetCircuitBreaker`) so one bad file doesn't disable LLM for the whole
|
|
113
|
+
* project. But when the *endpoint itself* is dead (empty-body 60s hangs,
|
|
114
|
+
* timeouts, connection failures on every call — the #217 Gemma-vLLM stall),
|
|
115
|
+
* that per-file reset means each new file re-pays ~5×60s of dead time before
|
|
116
|
+
* re-tripping, consuming the entire per-repo wall-clock budget (16/72 Tier-1
|
|
117
|
+
* repos hit the 60-min cap with zero output).
|
|
118
|
+
*
|
|
119
|
+
* This counts *endpoint-dead* failures (empty/timeout/connection) that are
|
|
120
|
+
* NOT interrupted by a success, and — unlike the per-file breaker — is NOT
|
|
121
|
+
* cleared by `resetCircuitBreaker`. Once it trips, LLM stays off for the rest
|
|
122
|
+
* of the scan and the run finishes static-only. Set to 4× the per-file
|
|
123
|
+
* threshold so a single unlucky file can't project-kill, while a genuinely
|
|
124
|
+
* dead endpoint trips after ~4 files (~2 min wall-clock at concurrency 10,
|
|
125
|
+
* vs the 60-min cap). A single success resets the counter, so a healthy
|
|
126
|
+
* endpoint with scattered blips never trips.
|
|
127
|
+
*/
|
|
128
|
+
const PROJECT_DEAD_THRESHOLD = 20;
|
|
129
|
+
// ---------------------------------------------------------------------------
|
|
130
|
+
// cognium-ai#228 — MODULE-LEVEL circuit-breaker state.
|
|
131
|
+
//
|
|
132
|
+
// `getAxLLMClient()` returns a FRESH `AxLLMClient` per request (intentional —
|
|
133
|
+
// the per-call `lastErrorCategory`/`lastUsage`/`lastAttemptCount` fields would
|
|
134
|
+
// race under concurrency if a client were shared). But that means an
|
|
135
|
+
// *instance*-level breaker never accumulates across the throwaway clients —
|
|
136
|
+
// discovery/enrichment/verification each spin up their own client, so the
|
|
137
|
+
// per-file breaker (#16) and the project-dead breaker (#217) were both no-ops
|
|
138
|
+
// in the real scan path (confirmed on apache/camel: 613 empty-response calls,
|
|
139
|
+
// breaker never tripped). The cap (#160) worked only because it lives in
|
|
140
|
+
// call-limiter.ts at module scope. So the breaker state lives here, shared
|
|
141
|
+
// across every client; the instance methods below are thin accessors.
|
|
142
|
+
let breakerConsecutiveFailures = 0;
|
|
143
|
+
let breakerLLMDisabled = false;
|
|
144
|
+
let breakerConnectionWarned = false;
|
|
145
|
+
let breakerProjectDeadCalls = 0;
|
|
146
|
+
let breakerLLMProjectDead = false;
|
|
147
|
+
let breakerProjectDeadWarned = false;
|
|
148
|
+
/**
|
|
149
|
+
* cognium-ai#228 — reset ALL breaker state for a fresh scan. Called at the
|
|
150
|
+
* true top-level scan entry (scanner's file loop, single-file workflow) so a
|
|
151
|
+
* long-lived process (circle-pack) doesn't carry a tripped breaker across
|
|
152
|
+
* repos. The per-file `resetCircuitBreaker()` deliberately does NOT clear the
|
|
153
|
+
* project-dead state (#217); this does.
|
|
154
|
+
*/
|
|
155
|
+
export function resetLLMBreakerForScan() {
|
|
156
|
+
breakerConsecutiveFailures = 0;
|
|
157
|
+
breakerLLMDisabled = false;
|
|
158
|
+
breakerConnectionWarned = false;
|
|
159
|
+
breakerProjectDeadCalls = 0;
|
|
160
|
+
breakerLLMProjectDead = false;
|
|
161
|
+
breakerProjectDeadWarned = false;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* cognium-ai#217 — reset only the PER-FILE breaker (consecutive-failure count
|
|
165
|
+
* + the soft disable) between files within a scan, so one bad file doesn't
|
|
166
|
+
* disable LLM for the whole run. Deliberately does NOT clear the project-dead
|
|
167
|
+
* state — that's the cross-file backstop that must survive per-file resets.
|
|
168
|
+
*/
|
|
169
|
+
export function resetLLMPerFileBreaker() {
|
|
170
|
+
breakerConsecutiveFailures = 0;
|
|
171
|
+
breakerLLMDisabled = false;
|
|
172
|
+
breakerConnectionWarned = false;
|
|
173
|
+
}
|
|
174
|
+
/** cognium-ai#217 — true once the project-dead breaker has tripped. Module
|
|
175
|
+
* accessor so callers (CLI degraded-status) don't need a client handle. */
|
|
176
|
+
export function isLLMEndpointDead() {
|
|
177
|
+
return breakerLLMProjectDead;
|
|
178
|
+
}
|
|
179
|
+
/** cognium-ai#228 — test/inspection accessor for the shared breaker state. */
|
|
180
|
+
export function getLLMBreakerState() {
|
|
181
|
+
return {
|
|
182
|
+
consecutiveFailures: breakerConsecutiveFailures,
|
|
183
|
+
llmDisabled: breakerLLMDisabled,
|
|
184
|
+
projectDeadCalls: breakerProjectDeadCalls,
|
|
185
|
+
llmProjectDead: breakerLLMProjectDead,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
107
188
|
/**
|
|
108
189
|
* Maximum code context length to send to LLM (in characters).
|
|
109
190
|
* Prevents 400 errors from exceeding model context limits AND keeps
|
|
@@ -147,7 +228,19 @@ export const MAX_CODE_CONTEXT_LENGTH = parsePositiveInt(process.env.CP_MAX_CODE_
|
|
|
147
228
|
// #159 (2026-07-02): `LLM_CONCURRENCY` is the canonical ticket name; the
|
|
148
229
|
// pre-existing `LLM_MAX_CONCURRENT` is honored as a fallback so pre-2.32
|
|
149
230
|
// deployments don't regress. First positive value wins.
|
|
150
|
-
|
|
231
|
+
// cognium-ai#229 — concurrency can be a fixed int OR adaptive (`-1`/`auto`).
|
|
232
|
+
// In adaptive mode an AIMD controller (see adaptive-concurrency.ts) tunes the
|
|
233
|
+
// p-queue live: halve on a 429, ramp +1 after a success streak, so the scan
|
|
234
|
+
// self-tunes to whatever rate limit the provider/plan actually enforces.
|
|
235
|
+
const concurrencySetting = parseConcurrencySetting(process.env.LLM_CONCURRENCY ?? process.env.LLM_MAX_CONCURRENT);
|
|
236
|
+
const adaptiveConcurrency = concurrencySetting?.mode === 'adaptive'
|
|
237
|
+
? new AdaptiveConcurrency(resolveAdaptiveConfig())
|
|
238
|
+
: null;
|
|
239
|
+
const LLM_MAX_CONCURRENT = adaptiveConcurrency
|
|
240
|
+
? adaptiveConcurrency.current // start point; the controller moves it live
|
|
241
|
+
: concurrencySetting?.mode === 'fixed'
|
|
242
|
+
? concurrencySetting.value
|
|
243
|
+
: 10;
|
|
151
244
|
const LLM_RATE_LIMIT = Math.max(0, parseInt(process.env.LLM_RATE_LIMIT || '20', 10));
|
|
152
245
|
const llmQueue = new PQueue({
|
|
153
246
|
concurrency: LLM_MAX_CONCURRENT,
|
|
@@ -156,6 +249,27 @@ const llmQueue = new PQueue({
|
|
|
156
249
|
intervalCap: LLM_RATE_LIMIT,
|
|
157
250
|
} : {}),
|
|
158
251
|
});
|
|
252
|
+
if (adaptiveConcurrency) {
|
|
253
|
+
const cfg = adaptiveConcurrency.config;
|
|
254
|
+
console.error(`[info] cognium-ai#229: adaptive LLM concurrency ON ` +
|
|
255
|
+
`(start=${cfg.start}, min=${cfg.min}, max=${cfg.max}); tunes on 429s.`);
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* cognium-ai#229 — apply the adaptive controller's verdict to the live
|
|
259
|
+
* p-queue. p-queue supports changing `.concurrency` at runtime; raising it
|
|
260
|
+
* lets queued tasks start immediately, lowering it lets in-flight tasks drain
|
|
261
|
+
* before new ones start. No-op in fixed mode.
|
|
262
|
+
*/
|
|
263
|
+
function applyAdaptiveConcurrency(next) {
|
|
264
|
+
if (!adaptiveConcurrency)
|
|
265
|
+
return;
|
|
266
|
+
if (next !== llmQueue.concurrency) {
|
|
267
|
+
const prev = llmQueue.concurrency;
|
|
268
|
+
llmQueue.concurrency = next;
|
|
269
|
+
console.error(`[info] cognium-ai#229: LLM concurrency ${prev} → ${next} ` +
|
|
270
|
+
`(${next < prev ? 'backing off after 429' : 'ramping up after success streak'}).`);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
159
273
|
/**
|
|
160
274
|
* Maximum HTTP 429 (rate-limit) retries per call. Independent from the
|
|
161
275
|
* parse-error retry budget — rate limits are transient and shouldn't
|
|
@@ -345,9 +459,9 @@ export class AxLLMClient {
|
|
|
345
459
|
config;
|
|
346
460
|
ai;
|
|
347
461
|
generators = new Map();
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
462
|
+
// cognium-ai#228 — circuit-breaker state is module-level (see top of file),
|
|
463
|
+
// NOT per-instance, because `getAxLLMClient()` hands out a fresh client per
|
|
464
|
+
// request. The breaker methods below read/write the shared `breaker*` vars.
|
|
351
465
|
/**
|
|
352
466
|
* Set by `_chatJSONImpl` on failure so the outer `chatJSON` wrapper
|
|
353
467
|
* can write a categorical reason to the JSONL log without
|
|
@@ -433,7 +547,7 @@ export class AxLLMClient {
|
|
|
433
547
|
* Check if LLM is currently available (not disabled due to failures)
|
|
434
548
|
*/
|
|
435
549
|
isAvailable() {
|
|
436
|
-
return !
|
|
550
|
+
return !breakerLLMDisabled;
|
|
437
551
|
}
|
|
438
552
|
/**
|
|
439
553
|
* Reset the circuit breaker so LLM calls are re-enabled.
|
|
@@ -441,23 +555,55 @@ export class AxLLMClient {
|
|
|
441
555
|
* LLM for the entire project analysis.
|
|
442
556
|
*/
|
|
443
557
|
resetCircuitBreaker() {
|
|
444
|
-
|
|
445
|
-
|
|
558
|
+
resetLLMPerFileBreaker();
|
|
559
|
+
}
|
|
560
|
+
/**
|
|
561
|
+
* cognium-ai#217 — true once the project-level dead-endpoint breaker has
|
|
562
|
+
* tripped (the LLM endpoint returned empty/timeout/connection failures on
|
|
563
|
+
* ~4 files' worth of calls with no intervening success). The scan then
|
|
564
|
+
* runs static-only; callers can surface a `degraded: llm-unavailable`
|
|
565
|
+
* status instead of reporting a plain size timeout.
|
|
566
|
+
*/
|
|
567
|
+
isLLMProjectDead() {
|
|
568
|
+
return breakerLLMProjectDead;
|
|
446
569
|
}
|
|
447
570
|
/**
|
|
448
|
-
* Reset failure counter
|
|
571
|
+
* Reset the per-file failure counter. Called on any HTTP 200 — note an
|
|
572
|
+
* HTTP-200-but-empty body is NOT a genuine success (it's the #217
|
|
573
|
+
* dead-endpoint signature), so the project-dead counter is reset elsewhere
|
|
574
|
+
* (on genuine content success in `chatJSON`), not here.
|
|
449
575
|
*/
|
|
450
576
|
resetFailures() {
|
|
451
|
-
|
|
577
|
+
breakerConsecutiveFailures = 0;
|
|
452
578
|
}
|
|
453
579
|
/**
|
|
454
580
|
* Track a failure and potentially disable LLM
|
|
455
581
|
*/
|
|
456
582
|
trackFailure() {
|
|
457
|
-
|
|
458
|
-
if (
|
|
583
|
+
breakerConsecutiveFailures++;
|
|
584
|
+
if (breakerConsecutiveFailures >= MAX_CONSECUTIVE_FAILURES) {
|
|
459
585
|
console.warn(`LLM disabled after ${MAX_CONSECUTIVE_FAILURES} consecutive failures`);
|
|
460
|
-
|
|
586
|
+
breakerLLMDisabled = true;
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
/**
|
|
590
|
+
* cognium-ai#217 — track an *endpoint-dead* failure (empty response,
|
|
591
|
+
* timeout, or connection error). Unlike {@link trackFailure}, this counter
|
|
592
|
+
* survives the per-file `resetCircuitBreaker()`, so a wholesale endpoint
|
|
593
|
+
* stall trips a project-level breaker and the scan finishes static-only
|
|
594
|
+
* rather than re-paying dead time on every file to the wall-clock cap.
|
|
595
|
+
*/
|
|
596
|
+
trackDeadCall() {
|
|
597
|
+
breakerProjectDeadCalls++;
|
|
598
|
+
if (!breakerLLMProjectDead &&
|
|
599
|
+
breakerProjectDeadCalls >= PROJECT_DEAD_THRESHOLD) {
|
|
600
|
+
breakerLLMProjectDead = true;
|
|
601
|
+
if (!breakerProjectDeadWarned) {
|
|
602
|
+
breakerProjectDeadWarned = true;
|
|
603
|
+
console.warn(`\nLLM endpoint appears dead: ${breakerProjectDeadCalls} empty/timeout/connection ` +
|
|
604
|
+
`failures with no success (${this.config.baseUrl}). Disabling LLM for the rest ` +
|
|
605
|
+
`of this scan and continuing static-only. Use --no-llm to silence.\n`);
|
|
606
|
+
}
|
|
461
607
|
}
|
|
462
608
|
}
|
|
463
609
|
/**
|
|
@@ -497,14 +643,15 @@ export class AxLLMClient {
|
|
|
497
643
|
* default LLM endpoint isn't reachable).
|
|
498
644
|
*/
|
|
499
645
|
tripBreakerOnConnectionFailure(err) {
|
|
500
|
-
if (!
|
|
501
|
-
|
|
646
|
+
if (!breakerConnectionWarned) {
|
|
647
|
+
breakerConnectionWarned = true;
|
|
502
648
|
const msg = err instanceof Error ? err.message : String(err);
|
|
503
649
|
console.warn(`\nLLM endpoint unreachable (${this.config.baseUrl}): ${msg}`);
|
|
504
650
|
console.warn('Falling back to static analysis. Use --no-llm to silence, or set LLM_BASE_URL/LLM_API_KEY.\n');
|
|
505
651
|
}
|
|
506
|
-
|
|
507
|
-
|
|
652
|
+
breakerConsecutiveFailures = MAX_CONSECUTIVE_FAILURES;
|
|
653
|
+
breakerLLMDisabled = true;
|
|
654
|
+
this.trackDeadCall(); // #217: also counts toward the project-dead breaker
|
|
508
655
|
}
|
|
509
656
|
/**
|
|
510
657
|
* Get or create a generator for a signature.
|
|
@@ -830,6 +977,19 @@ INFORMATION EXPOSURE (CWE-200/209) SPECIFIC:
|
|
|
830
977
|
catch (e) {
|
|
831
978
|
errorMsg = e instanceof Error ? e.message : String(e);
|
|
832
979
|
}
|
|
980
|
+
// cognium-ai#217 — a genuine content success proves the endpoint is
|
|
981
|
+
// alive: reset the project-dead counter so scattered failures on a
|
|
982
|
+
// healthy endpoint never accumulate to the trip. (An HTTP-200-but-empty
|
|
983
|
+
// body returns null here, so it does NOT reset — that's the dead
|
|
984
|
+
// signature the breaker is counting.)
|
|
985
|
+
if (result !== null && errorMsg === undefined) {
|
|
986
|
+
breakerProjectDeadCalls = 0;
|
|
987
|
+
// cognium-ai#229 — AIMD: a clean success feeds the ramp-up. After a
|
|
988
|
+
// streak (outside the post-429 cooldown) the controller nudges
|
|
989
|
+
// concurrency +1 toward the provider's real ceiling. No-op in fixed mode.
|
|
990
|
+
if (adaptiveConcurrency)
|
|
991
|
+
applyAdaptiveConcurrency(adaptiveConcurrency.onSuccess());
|
|
992
|
+
}
|
|
833
993
|
// Derive the category: thrown exceptions take precedence; otherwise
|
|
834
994
|
// use whatever `_chatJSONImpl` recorded. A null result with no
|
|
835
995
|
// category is the historical "parse_error" path (no closer cause).
|
|
@@ -898,8 +1058,9 @@ INFORMATION EXPOSURE (CWE-200/209) SPECIFIC:
|
|
|
898
1058
|
* consecutive-failure circuit breaker (rate limits are transient).
|
|
899
1059
|
*/
|
|
900
1060
|
async _chatJSONImpl(systemPrompt, userPrompt, phase = 'enrichment', retryCount = 0, rateLimitRetryCount = 0) {
|
|
901
|
-
// Skip if LLM has been disabled due to repeated failures
|
|
902
|
-
|
|
1061
|
+
// Skip if LLM has been disabled due to repeated failures (per-file
|
|
1062
|
+
// breaker) or the endpoint is dead across the whole scan (#217).
|
|
1063
|
+
if (breakerLLMDisabled || breakerLLMProjectDead) {
|
|
903
1064
|
return null;
|
|
904
1065
|
}
|
|
905
1066
|
// Use the correct phase config
|
|
@@ -955,13 +1116,13 @@ INFORMATION EXPOSURE (CWE-200/209) SPECIFIC:
|
|
|
955
1116
|
// error, so retrying is just burning the failure budget. One clear
|
|
956
1117
|
// diagnostic on stderr, then static-only for the rest of the run.
|
|
957
1118
|
const stripped = phaseConfig.model.replace(/^[a-z]+\//, '');
|
|
958
|
-
if (/-pro$/i.test(stripped) && !
|
|
1119
|
+
if (/-pro$/i.test(stripped) && !breakerLLMDisabled) {
|
|
959
1120
|
console.error(`LLM model '${phaseConfig.model}' is not a chat-completions model ` +
|
|
960
1121
|
`(OpenAI rejects */chat/completions for *-pro variants). ` +
|
|
961
1122
|
`Use a chat-capable model — gpt-5-nano, gpt-4o-mini, gpt-4o, or claude-*-latest. ` +
|
|
962
1123
|
`Falling back to static analysis. Use --no-llm to silence.`);
|
|
963
1124
|
this.lastErrorCategory = 'http_error';
|
|
964
|
-
|
|
1125
|
+
breakerLLMDisabled = true;
|
|
965
1126
|
return null;
|
|
966
1127
|
}
|
|
967
1128
|
// All LLM requests go through the shared throttled queue.
|
|
@@ -1050,6 +1211,7 @@ INFORMATION EXPOSURE (CWE-200/209) SPECIFIC:
|
|
|
1050
1211
|
this.lastErrorCategory = 'connection_error';
|
|
1051
1212
|
}
|
|
1052
1213
|
this.trackFailure();
|
|
1214
|
+
this.trackDeadCall(); // #217: timeout / network error = endpoint-dead
|
|
1053
1215
|
return null;
|
|
1054
1216
|
}
|
|
1055
1217
|
if (!response.ok) {
|
|
@@ -1058,6 +1220,11 @@ INFORMATION EXPOSURE (CWE-200/209) SPECIFIC:
|
|
|
1058
1220
|
// wrong response to throttling) and without `trackFailure`
|
|
1059
1221
|
// (rate limits are transient, not endpoint failures).
|
|
1060
1222
|
if (response.status === 429 && rateLimitAttempt < maxRateLimitRetries) {
|
|
1223
|
+
// cognium-ai#229 — AIMD: back off the shared p-queue on a 429.
|
|
1224
|
+
// The controller's cooldown collapses a burst of 429s into one
|
|
1225
|
+
// halving, so calling it per-429 here is safe. No-op in fixed mode.
|
|
1226
|
+
if (adaptiveConcurrency)
|
|
1227
|
+
applyAdaptiveConcurrency(adaptiveConcurrency.onRateLimited());
|
|
1061
1228
|
const sleepMs = parseRetryAfterMs(response.headers.get('Retry-After'), rateLimitAttempt);
|
|
1062
1229
|
console.error(`LLM rate limited (HTTP 429); sleeping ${sleepMs}ms before retry ${rateLimitAttempt + 1}/${maxRateLimitRetries}`);
|
|
1063
1230
|
emitAttempt('rate_limited', attemptStart, {
|
|
@@ -1176,6 +1343,7 @@ INFORMATION EXPOSURE (CWE-200/209) SPECIFIC:
|
|
|
1176
1343
|
this.lastErrorCategory = 'empty_response';
|
|
1177
1344
|
emitAttempt('empty_response', attemptStart, { httpStatus: response.status });
|
|
1178
1345
|
this.trackFailure();
|
|
1346
|
+
this.trackDeadCall(); // #217: empty body = endpoint-dead (the 60s stall)
|
|
1179
1347
|
return null;
|
|
1180
1348
|
}
|
|
1181
1349
|
// Parse JSON from response (handle markdown code blocks)
|