circle-ir-ai 2.8.14 → 2.8.17

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 CHANGED
@@ -5,6 +5,194 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.8.17] - 2026-06-12
9
+
10
+ ### Fixed — LLM line-number drift (cognium-dev#29 / cognium-ai#89)
11
+
12
+ LLM-discovered vulnerabilities reported flapping line numbers across
13
+ identical runs of the CWE-Bench-Java benchmark — 3 of 40 LLM-discovery
14
+ findings drifted ±1 to ±4 lines (Keycloak −4, XStream +1, xwiki +1)
15
+ while static IR detections were 100% stable across the same 120-CVE
16
+ suite. Root cause: gemma-3-12b-it (and similar small open models)
17
+ selects a slightly different statement inside the same vulnerable
18
+ method on each run even at `temperature: 0`. The unstable line then
19
+ propagated unchanged through both the production discovery flow and
20
+ the benchmark batch path.
21
+
22
+ - **New helper `src/llm/anchoring.ts`** — `anchorLineToIRSink(rawLine,
23
+ sinks, methodStart, methodEnd, preferredType?)`. Anchors an
24
+ LLM-reported line to a real IR sink within the same method bounds.
25
+ Resolution order: in-method sink of matching type (closest to
26
+ rawLine) → any in-method sink → clamp rawLine into bounds →
27
+ methodStart. Deterministic regardless of LLM stochasticity.
28
+ - **`src/llm/discovery.ts`** — threads `ir.taint.sinks` from
29
+ `discoverInFile` into `analyzeMethod`, applies anchoring at the
30
+ result-population site (was: `response.vulnerability.line ||
31
+ method.startLine`).
32
+ - **`benchmarks/runners/run-cwe-bench-java.ts`** — `batchFileDiscovery`
33
+ now accepts `irSinks` and applies per-method anchoring at both the
34
+ array-path and single-object-fallback result sites. Caller surfaces
35
+ sinks via one extra `analyze()` call per LLM-discovered file
36
+ (negligible against the ~tens-of-seconds LLM call).
37
+ - **17 new tests** in `tests/llm/anchoring.test.ts` covering the three
38
+ reported drift cases (Keycloak, XStream, xwiki), preferred-type
39
+ selection, closest-candidate tiebreak, clamping above/below method
40
+ bounds, missing rawLine, invalid bounds, and loose substring type
41
+ matching.
42
+
43
+ Anchoring degrades to existing behavior when no IR sinks live in the
44
+ method (rawLine clamped or methodStart fallback), so the change is
45
+ strictly additive — discovery in methods with no static sink continues
46
+ to produce a stable per-method result.
47
+
48
+ ## [2.8.16] - 2026-06-12
49
+
50
+ ### Fixed — FP epic across the LLM discovery pipeline (#52, #90, #91, #92, #93, #94, #95)
51
+
52
+ Single coordinated cascade that closes seven false-positive issues
53
+ filed against the LLM-enhanced scan path. All three root causes from
54
+ the FP corpus reports are addressed at once.
55
+
56
+ - **Root cause (cross-cutting across #90–#94): phantom `sink.code`.**
57
+ `runMerge` (`src/agents/mastra/workflow.ts`) created LLM-discovered
58
+ sink entries from `enrichResult.sinks` **without populating the
59
+ `code` field**. Every downstream filter (`isSuppressedSinkShape`,
60
+ `isRequireOrImportSink`, `isKnownNonSink`) safely returned `false`
61
+ on `undefined` → sinks pointing at blank lines, closing braces, or
62
+ bare identifiers leaked all the way into `runReport`'s output. Each
63
+ of #90/#91/#92/#93/#94 reported the same "empty explanation, empty
64
+ sink.code" signature. Fix: added `sliceLine(sourceCode, line)`
65
+ helper, extended `runMerge` signature with optional `sourceCode` +
66
+ `filePath`, populated `code` + `file` on every LLM-discovered sink.
67
+ - **Defense-in-depth — `isPhantomLineSink()`** added to
68
+ `sink-filters.ts`. Rejects empty / whitespace / single-brace /
69
+ comment-marker / no-call-syntax lines. Wired in as the first
70
+ predicate inside `isSuppressedSinkShape()` so even if the source-
71
+ line lookup fails or the LLM emits a stale `line`, the FP doesn't
72
+ surface.
73
+ - **Sanity gate tightened** (`workflow.ts` verified path). The
74
+ existing `hasJustification = explanation.length >= 20` gate now
75
+ also requires `hasSinkCode = sink.code?.trim().length > 0`.
76
+ Verifier upgrades on phantom-line sinks are downgraded to
77
+ UNCERTAIN + medium severity rather than emitting a confident
78
+ TRUE_POSITIVE.
79
+ - **#90 — `command_injection` FP corpus.** Per-CWE patterns added
80
+ to `NON_SINK_PATTERNS`: `jedis.executeCommand(...)`,
81
+ `executeCommand(ProtocolCommand)`, `executeCommand(CommandArguments)`,
82
+ `Executor.execute(<identifier>)` (j.u.concurrent thread-pool
83
+ submission, not OS process exec). `Runtime.getRuntime().exec(cmd)`
84
+ remains a real sink.
85
+ - **#91 — `sql_injection` FP corpus.** Narrow `.execute(` suppressor
86
+ scoped to non-SQL receivers only: `Executor`, `ThreadPoolExecutor`,
87
+ `CommandLine` (picocli), `Statements` / `StatementVisitor`
88
+ (JSqlParser AST visitors). Deliberately narrowed from the initial
89
+ broad `*.execute(<ident>)` form so `connection.execute(query)` and
90
+ `statement.execute(sql)` continue firing.
91
+ - **#92 — `deserialization` FP corpus.** Typed Jackson
92
+ `readValue(x, Foo.class)` and `new TypeReference<…>(){}`, typed Gson
93
+ `fromJson(x, Foo.class)` and `new TypeToken<…>(){}`, typed FastJson
94
+ `parseObject(x, Foo.class)` — all suppressed (POJO binding is safe
95
+ by construction; untyped overloads remain real sinks).
96
+ - **#93 — `code_injection` FP corpus.** `Pattern.compile("literal")`,
97
+ `Class.forName("literal")` (literal must close without `+`),
98
+ `Class.forName(<bare identifier>)`, `method.invoke(...)` /
99
+ `Method.invoke(...)`. Tainted concatenations remain real sinks.
100
+ - **#94 — `nosql_injection` on browser files.** New
101
+ `isNosqlOnBrowserFile()` helper suppresses every nosql sink whose
102
+ `file` extension is `.js / .jsx / .mjs / .cjs / .html / .htm`. No
103
+ MongoDB driver runs in the browser by construction.
104
+ - **#52 — Express FP from require/import lines** (legacy filter
105
+ retained; tests cover both small-model regression and new
106
+ proxyaddr.compile + dynamic require patterns).
107
+ - **#95 — File-walker default excludes.** Added eight narrow
108
+ hyphenated globs to `src/security-scan/scanner.ts`:
109
+ `**/*-examples/**`, `**/*-example/**`, `**/*-samples/**`,
110
+ `**/*-sample/**`, `**/*-tests/**`, `**/*-test/**`,
111
+ `**/*-fixtures/**`, `**/*-fixture/**`. Safe because Java/Kotlin
112
+ package segments cannot contain `-` (JLS §3.8) — sidesteps the
113
+ #61 regression where `**/demo/**` matched `com.example.demo`.
114
+ Catches `picocli/picocli-examples`, `JSqlParser/.../examples` and
115
+ similar vendored fixture trees that the existing top-level
116
+ `examples/**` glob doesn't reach.
117
+
118
+ ### Tests
119
+
120
+ - `tests/sink-filters.test.ts` — extended from 13 to 41 cases:
121
+ - `isPhantomLineSink` (#94): empty / whitespace / single brace /
122
+ comment markers / bare identifier / genuine call sites /
123
+ integration with `isSuppressedSinkShape`.
124
+ - `isKnownNonSink` per-CWE tables for #90 / #91 / #92 with
125
+ confirmed negative coverage (`Runtime.exec`, `connection.execute`,
126
+ untyped `readValue` all preserved).
127
+ - `isNosqlOnBrowserFile` (#93): `.js / .jsx / .mjs / .cjs / .html /
128
+ .htm` suppressed; `.ts / .py / .java` preserved; other CWE types
129
+ untouched.
130
+ - `tests/workflow-finding-shape.test.ts` — sort-order test placeholder
131
+ `code: 'x'` updated to call-shaped `'doSomething(x)'` so it passes
132
+ the new phantom-line filter (the test was incidentally using
133
+ single-character placeholders that the filter would now correctly
134
+ reject).
135
+ - Full suite: **695 pass + 3 skipped** (up from 667).
136
+
137
+ ### Out of scope (filed as follow-ups)
138
+
139
+ - Aggressive nested-directory exclusion (`**/examples/**` etc.)
140
+ remains blocked by the #61 Java-package collision. A per-language
141
+ file walker would unblock this but isn't worth coupling to this
142
+ release.
143
+ - The deterministic pattern table covers ~95% of the FP corpus.
144
+ Rule-level FP-budget instrumentation in `runReport` would surface
145
+ the next wave without manual triage — punted to a follow-up issue.
146
+
147
+ ## [2.8.15] - 2026-06-12
148
+
149
+ ### Added — ax-client robustness (#96)
150
+
151
+ Closes the four tangential gaps surfaced during the qwen3.6:35b-a3b
152
+ benchmark investigation. None of these would have fixed qwen3.6 itself
153
+ (that's an upstream MoE routing bug), but they tighten the client so
154
+ other models behave better and JSONL telemetry tells a clearer story.
155
+
156
+ - **`stripThinkBlocks(s)` exported helper.** Removes `<think>...</think>`
157
+ reasoning blocks (closed and unterminated/truncated forms) from
158
+ raw LLM output. Centralizes the workaround previously duplicated
159
+ inline in `benchmarks/runners/run-cwe-bench-java.ts`. Applied
160
+ automatically inside `_chatJSONImpl` so every caller (mastra
161
+ workflow, discovery, batch classifier, doc-pattern passes, …)
162
+ benefits — not just the benchmark runner.
163
+ - **Empty-response detection.** HTTP 200 with empty
164
+ `choices[0].message.content` (e.g. qwen3.6 MoE routing failures)
165
+ now returns `null` on the first occurrence with a clear stderr
166
+ diagnostic — no retry, since empty responses are deterministic
167
+ per prompt and re-issuing the same call just wastes wall-clock.
168
+ Previously fell through to `JSON.parse('')`, burned a token-
169
+ reduced retry, and returned null with no signal in the JSONL log.
170
+ - **Transient 5xx retry (500/502/503/504).** Independent retry
171
+ budget (`MAX_TRANSIENT_5XX_RETRIES = 3`), Retry-After-honoring
172
+ with exponential-backoff fallback (reuses `parseRetryAfterMs`),
173
+ no `trackFailure` (transient = not endpoint health), no token
174
+ reduction. 501 / 505 remain permanent and fall through to the
175
+ http_error path. Fixes the OpenRouter `gemma3:12b` benchmark
176
+ flake noted in the 2026-06-12 CWE-Bench-Java run.
177
+ - **`LLMErrorCategory` field on JSONL log entries.** Enum:
178
+ `empty_response | parse_error | timeout | http_error |
179
+ rate_limited | connection_error | transient_server_error`. The
180
+ JSONL analyzer can now distinguish "model returned junk" from
181
+ "endpoint was down" without string-matching the `error` field.
182
+ Field is optional; backwards-compatible with existing log readers.
183
+
184
+ ### Tests
185
+
186
+ - `tests/llm/think-stripping.test.ts` — 11 cases (closed /
187
+ unterminated / nested / case-insensitive / empty / no-op).
188
+ - `tests/llm/empty-response.test.ts` — 5 cases (empty content /
189
+ think-only / unterminated-think / diagnostic / think-prefix +
190
+ valid JSON).
191
+ - `tests/llm/transient-5xx.test.ts` — 8 cases (500 / 502 / 503 /
192
+ 504 single retry + exhaustion + permanent 501 + permanent 400 +
193
+ retry-after honor).
194
+ - Full suite: **667 pass + 3 skipped** (was 643 before this PR).
195
+
8
196
  ## [2.8.14] - 2026-06-12
9
197
 
10
198
  ### Dependencies
@@ -45,7 +45,7 @@ export interface WorkflowOutput {
45
45
  /**
46
46
  * Run merge step
47
47
  */
48
- export declare function runMerge(patternSources: any[], patternSinks: any[], enrichmentResult: any | null, confidenceThreshold: number): {
48
+ export declare function runMerge(patternSources: any[], patternSinks: any[], enrichmentResult: any | null, confidenceThreshold: number, sourceCode?: string, filePath?: string): {
49
49
  mergedSources: any[];
50
50
  mergedSinks: any[];
51
51
  };
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../../src/agents/mastra/workflow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../../src/agents/mastra/workflow.ts"],"names":[],"mappings":"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"}
@@ -101,11 +101,39 @@ async function runEnrich(filePath, sourceCode, types, imports, patternSources, p
101
101
  processingTimeMs: Date.now() - startTime,
102
102
  };
103
103
  }
104
+ /**
105
+ * Look up a (1-indexed) line from the source. Returns the trimmed line
106
+ * content, or `undefined` if anything's off (no source, bad line, out of
107
+ * range). Safe by construction — downstream filters treat undefined as
108
+ * "no opinion" and fall through. Used by `runMerge` to populate
109
+ * `sink.code` on LLM-discovered sinks (#90/#91/#92/#93/#94).
110
+ */
111
+ function sliceLine(sourceCode, line) {
112
+ if (!sourceCode || !line || line < 1)
113
+ return undefined;
114
+ const lines = sourceCode.split('\n');
115
+ if (line > lines.length)
116
+ return undefined;
117
+ const slice = lines[line - 1];
118
+ if (typeof slice !== 'string')
119
+ return undefined;
120
+ const trimmed = slice.trim();
121
+ return trimmed.length > 0 ? trimmed : undefined;
122
+ }
104
123
  /**
105
124
  * Run merge step
106
125
  */
107
126
  // Exported for unit-testing (#48 regression coverage).
108
- export function runMerge(patternSources, patternSinks, enrichmentResult, confidenceThreshold) {
127
+ //
128
+ // `sourceCode` + `filePath` are optional context used to populate the
129
+ // `code` (and `file`) field on LLM-discovered sinks (#90/#91/#92/#93/#94).
130
+ // Without this, LLM-discovered sinks have `code === undefined`, every
131
+ // downstream sink-shape filter safely returns false on undefined, and
132
+ // phantom-line findings (pointing at blank lines / braces / single
133
+ // identifiers) leak through to the report. Pre-existing 4-arg callers
134
+ // (e.g. the #48 regression test) still work — when `sourceCode` is
135
+ // omitted, the population step is a no-op and the merge behaves as before.
136
+ export function runMerge(patternSources, patternSinks, enrichmentResult, confidenceThreshold, sourceCode, filePath) {
109
137
  // #48: previously these maps were keyed by `line` alone, which
110
138
  // collapsed any two sources / sinks that landed on the same source
111
139
  // line — even when they had different types or different variables.
@@ -164,6 +192,13 @@ export function runMerge(patternSources, patternSinks, enrichmentResult, confide
164
192
  });
165
193
  }
166
194
  else if (llmSink.confidence >= confidenceThreshold) {
195
+ // #90/#91/#92/#93/#94: previously LLM-discovered sinks omitted
196
+ // the `code` field entirely. Downstream `isSuppressedSinkShape`
197
+ // safely returns false on undefined → phantom-line findings
198
+ // leak through to the report. Look up the source line so the
199
+ // existing sink-shape filters (and the new phantom-line guard)
200
+ // can do their job.
201
+ const llmSinkCode = sliceLine(sourceCode, llmSink.line);
167
202
  sinksByKey.set(key, {
168
203
  line: llmSink.line,
169
204
  type: llmSink.type,
@@ -172,6 +207,8 @@ export function runMerge(patternSources, patternSinks, enrichmentResult, confide
172
207
  confidence: llmSink.confidence,
173
208
  method: llmSink.method,
174
209
  argPositions: llmSink.argPositions,
210
+ code: llmSinkCode,
211
+ file: filePath,
175
212
  });
176
213
  }
177
214
  }
@@ -379,7 +416,7 @@ export function runReport(filePath, mergedSources, mergedSinks, verificationResu
379
416
  // actually a `require(...)` / `import` statement is hallucinated
380
417
  // — drop regardless of verification verdict. Also drops known
381
418
  // non-sinks like `proxyaddr.compile()`.
382
- if (isSuppressedSinkShape(sink.code, sink.type))
419
+ if (isSuppressedSinkShape(sink.code, sink.type, sink.file ?? filePath))
383
420
  continue;
384
421
  const exploitabilityMap = {
385
422
  high: 'critical',
@@ -394,17 +431,28 @@ export function runReport(filePath, mergedSources, mergedSinks, verificationResu
394
431
  // defensible explanation is not credible — downgrade to
395
432
  // medium so the static-baseline rule severity dominates and
396
433
  // mark the verdict as UNCERTAIN.
434
+ //
435
+ // #90/#91/#92/#93/#94: also trigger on empty `sink.code`. A
436
+ // TRUE_POSITIVE claim against a phantom line (no real call site
437
+ // to point at) is structurally indistinguishable from a
438
+ // hallucination; downgrade for the same reason. runMerge now
439
+ // populates `code` on LLM-discovered sinks, so empty `code`
440
+ // here means the model claimed a sink at a blank/comment-only
441
+ // line — not credible.
397
442
  const explanation = (vr.result.explanation || '').trim();
398
443
  const hasJustification = explanation.length >= 20;
444
+ const hasSinkCode = (sink.code ?? '').toString().trim().length > 0;
399
445
  let severity;
400
446
  let verification;
401
- if (!hasJustification) {
447
+ if (!hasJustification || !hasSinkCode) {
402
448
  severity = 'medium';
403
449
  verification = {
404
450
  ...vr.result,
405
451
  verdict: 'UNCERTAIN',
406
452
  exploitability: 'unknown',
407
- sanity_gate: 'verifier upgrade ignored — explanation field empty',
453
+ sanity_gate: !hasJustification
454
+ ? 'verifier upgrade ignored — explanation field empty'
455
+ : 'verifier upgrade ignored — sink.code empty (phantom line)',
408
456
  };
409
457
  }
410
458
  else {
@@ -452,7 +500,7 @@ export function runReport(filePath, mergedSources, mergedSinks, verificationResu
452
500
  }
453
501
  for (const [, { sink, sources }] of sinkBuckets) {
454
502
  // #52 Bucket D — sink-shape FP filter (no-verification path).
455
- if (isSuppressedSinkShape(sink.code, sink.type))
503
+ if (isSuppressedSinkShape(sink.code, sink.type, sink.file ?? filePath))
456
504
  continue;
457
505
  const rule = getRuleInfo(sink.type);
458
506
  const primarySource = sources[0];
@@ -524,7 +572,7 @@ export async function analyzeFile(filePath, sourceCode, options) {
524
572
  const patternResult = await runPatternMatch(filePath, sourceCode, language, disabledPasses);
525
573
  const patternMatchTimeMs = Date.now() - patternStartTime;
526
574
  const enrichResult = await runEnrich(filePath, sourceCode, patternResult.types, patternResult.imports, patternResult.patternSources, patternResult.patternSinks, enableEnrichment, language, llmConfig);
527
- const mergeResult = runMerge(patternResult.patternSources, patternResult.patternSinks, enrichResult.enrichmentResult, confidenceThreshold);
575
+ const mergeResult = runMerge(patternResult.patternSources, patternResult.patternSinks, enrichResult.enrichmentResult, confidenceThreshold, sourceCode, filePath);
528
576
  const verifyResult = await runVerify(filePath, sourceCode, mergeResult.mergedSources, mergeResult.mergedSinks, patternResult.types, enableVerification, maxVerificationTargets, verificationStrategy, llmConfig);
529
577
  return runReport(filePath, mergeResult.mergedSources, mergeResult.mergedSinks, verifyResult.verificationResults, patternMatchTimeMs, enrichResult.processingTimeMs, verifyResult.processingTimeMs, enableVerification, patternResult.sastFindings);
530
578
  }
@@ -547,7 +595,7 @@ export async function* analyzeFileStream(filePath, sourceCode, options) {
547
595
  const enrichResult = await runEnrich(filePath, sourceCode, patternResult.types, patternResult.imports, patternResult.patternSources, patternResult.patternSinks, enableEnrichment, language, llmConfig);
548
596
  yield { step: 'enrich', status: 'completed', data: enrichResult };
549
597
  yield { step: 'merge', status: 'running' };
550
- const mergeResult = runMerge(patternResult.patternSources, patternResult.patternSinks, enrichResult.enrichmentResult, 0.7);
598
+ const mergeResult = runMerge(patternResult.patternSources, patternResult.patternSinks, enrichResult.enrichmentResult, 0.7, sourceCode, filePath);
551
599
  yield { step: 'merge', status: 'completed', data: mergeResult };
552
600
  yield { step: 'verify', status: 'running' };
553
601
  const verifyResult = await runVerify(filePath, sourceCode, mergeResult.mergedSources, mergeResult.mergedSinks, patternResult.types, enableVerification, maxVerificationTargets, verificationStrategy, llmConfig);
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../src/agents/mastra/workflow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../src/agents/mastra/workflow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * LLM line-number anchoring.
3
+ *
4
+ * LLM discovery (e.g. gemma-3-12b-it at temperature=0) is not byte-stable
5
+ * across runs: on the same prompt the model often picks a slightly different
6
+ * statement inside the same vulnerable method, producing line numbers that
7
+ * drift by ±1 to ±4 between identical invocations. The static IR is
8
+ * deterministic, so anchoring LLM-reported lines to a real IR sink within
9
+ * the same method bounds eliminates the drift without changing detection
10
+ * (the method is the unit of evaluation in IRIS-style metrics).
11
+ *
12
+ * Tracked in cognium-dev#29 / cognium-ai#89.
13
+ */
14
+ import type { TaintSink } from 'circle-ir';
15
+ /**
16
+ * Choose a deterministic line for an LLM-reported vulnerability by
17
+ * preferring the line of an IR sink that lives in the same method.
18
+ *
19
+ * Resolution order:
20
+ * 1. IR sinks whose `line` is inside [methodStart, methodEnd]. Among those,
21
+ * prefer ones whose `type` matches `preferredSinkType` (loose match: a
22
+ * substring either way). If multiple candidates remain and `rawLine` is
23
+ * a positive number, pick the candidate closest to `rawLine`; otherwise
24
+ * pick the first.
25
+ * 2. No in-method sink: clamp `rawLine` into [methodStart, methodEnd] when
26
+ * it is a positive number.
27
+ * 3. `rawLine` missing/zero: return `methodStart` as the stable fallback.
28
+ *
29
+ * @param rawLine Line reported by the LLM (may be undefined or 0)
30
+ * @param sinks IR taint sinks (may be empty)
31
+ * @param methodStart First line of the vulnerable method (inclusive)
32
+ * @param methodEnd Last line of the vulnerable method (inclusive)
33
+ * @param preferredSinkType Optional CWE-derived sink type to prefer
34
+ */
35
+ export declare function anchorLineToIRSink(rawLine: number | undefined, sinks: ReadonlyArray<TaintSink>, methodStart: number, methodEnd: number, preferredSinkType?: string): number;
36
+ //# sourceMappingURL=anchoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchoring.d.ts","sourceRoot":"","sources":["../../src/llm/anchoring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,EAC/B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,iBAAiB,CAAC,EAAE,MAAM,GACzB,MAAM,CAyCR"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Choose a deterministic line for an LLM-reported vulnerability by
3
+ * preferring the line of an IR sink that lives in the same method.
4
+ *
5
+ * Resolution order:
6
+ * 1. IR sinks whose `line` is inside [methodStart, methodEnd]. Among those,
7
+ * prefer ones whose `type` matches `preferredSinkType` (loose match: a
8
+ * substring either way). If multiple candidates remain and `rawLine` is
9
+ * a positive number, pick the candidate closest to `rawLine`; otherwise
10
+ * pick the first.
11
+ * 2. No in-method sink: clamp `rawLine` into [methodStart, methodEnd] when
12
+ * it is a positive number.
13
+ * 3. `rawLine` missing/zero: return `methodStart` as the stable fallback.
14
+ *
15
+ * @param rawLine Line reported by the LLM (may be undefined or 0)
16
+ * @param sinks IR taint sinks (may be empty)
17
+ * @param methodStart First line of the vulnerable method (inclusive)
18
+ * @param methodEnd Last line of the vulnerable method (inclusive)
19
+ * @param preferredSinkType Optional CWE-derived sink type to prefer
20
+ */
21
+ export function anchorLineToIRSink(rawLine, sinks, methodStart, methodEnd, preferredSinkType) {
22
+ // Defensive: empty/invalid method bounds → return whatever rawLine we got
23
+ if (!Number.isFinite(methodStart) ||
24
+ !Number.isFinite(methodEnd) ||
25
+ methodStart <= 0 ||
26
+ methodEnd < methodStart) {
27
+ return rawLine && rawLine > 0 ? rawLine : 0;
28
+ }
29
+ const inMethod = sinks.filter((s) => typeof s.line === 'number' && s.line >= methodStart && s.line <= methodEnd);
30
+ if (inMethod.length > 0) {
31
+ let candidates = inMethod;
32
+ if (preferredSinkType) {
33
+ const want = String(preferredSinkType).toLowerCase();
34
+ const typed = inMethod.filter((s) => {
35
+ const have = String(s.type || '').toLowerCase();
36
+ return have === want || have.includes(want) || want.includes(have);
37
+ });
38
+ if (typed.length > 0)
39
+ candidates = typed;
40
+ }
41
+ if (rawLine && rawLine > 0) {
42
+ return candidates.reduce((best, s) => Math.abs(s.line - rawLine) < Math.abs(best.line - rawLine) ? s : best).line;
43
+ }
44
+ return candidates[0].line;
45
+ }
46
+ // No in-method sink — clamp or fall back to method start
47
+ if (rawLine && rawLine > 0) {
48
+ if (rawLine < methodStart)
49
+ return methodStart;
50
+ if (rawLine > methodEnd)
51
+ return methodEnd;
52
+ return rawLine;
53
+ }
54
+ return methodStart;
55
+ }
56
+ //# sourceMappingURL=anchoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchoring.js","sourceRoot":"","sources":["../../src/llm/anchoring.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAA2B,EAC3B,KAA+B,EAC/B,WAAmB,EACnB,SAAiB,EACjB,iBAA0B;IAE1B,0EAA0E;IAC1E,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC7B,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC3B,WAAW,IAAI,CAAC;QAChB,SAAS,GAAG,WAAW,EACvB,CAAC;QACD,OAAO,OAAO,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,WAAW,IAAI,CAAC,CAAC,IAAI,IAAI,SAAS,CAClF,CAAC;IAEF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,IAAI,UAAU,GAAG,QAAQ,CAAC;QAC1B,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,EAAE,CAAC;YACrD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;gBAClC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBAChD,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrE,CAAC,CAAC,CAAC;YACH,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,UAAU,GAAG,KAAK,CAAC;QAC3C,CAAC;QAED,IAAI,OAAO,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CACnC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CACtE,CAAC,IAAI,CAAC;QACT,CAAC;QACD,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,yDAAyD;IACzD,IAAI,OAAO,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAC3B,IAAI,OAAO,GAAG,WAAW;YAAE,OAAO,WAAW,CAAC;QAC9C,IAAI,OAAO,GAAG,SAAS;YAAE,OAAO,SAAS,CAAC;QAC1C,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -59,6 +59,25 @@ export declare const MAX_CODE_CONTEXT_LENGTH: number;
59
59
  * back to exponential backoff with jitter (1s, 2s, 4s, 8s, 16s).
60
60
  */
61
61
  export declare function parseRetryAfterMs(header: string | null, attempt: number, now?: number): number;
62
+ /**
63
+ * Strip `<think>...</think>` reasoning blocks from LLM output.
64
+ *
65
+ * Several "thinking" models (deepseek-r1, o1, o3, qwen3.6 thinking
66
+ * variants) emit chain-of-thought reasoning wrapped in `<think>` tags
67
+ * before the actual answer. The Ollama OpenAI-compat endpoint forwards
68
+ * these unchanged, and if `max_tokens` is hit mid-reasoning the closing
69
+ * `</think>` is missing entirely. Either way the wrapper text breaks
70
+ * the downstream JSON parser.
71
+ *
72
+ * Strategy:
73
+ * 1. Remove all complete `<think>...</think>` blocks (greedy across newlines).
74
+ * 2. Remove any unterminated `<think>...` tail (handles truncated output).
75
+ * 3. Trim.
76
+ *
77
+ * Exported so benchmark runners and other call sites can apply the same
78
+ * contract without re-implementing the regex.
79
+ */
80
+ export declare function stripThinkBlocks(s: string): string;
62
81
  /**
63
82
  * Truncate code to fit within context limits. Prefers cutting at a
64
83
  * line boundary in the last 20% of the budget so we don't leave a
@@ -76,6 +95,12 @@ export declare class AxLLMClient {
76
95
  private consecutiveFailures;
77
96
  private llmDisabled;
78
97
  private connectionFailureWarned;
98
+ /**
99
+ * Set by `_chatJSONImpl` on failure so the outer `chatJSON` wrapper
100
+ * can write a categorical reason to the JSONL log without
101
+ * string-matching the error message. Reset to `undefined` on entry.
102
+ */
103
+ private lastErrorCategory;
79
104
  constructor(config?: Partial<LLMConfig>);
80
105
  /**
81
106
  * Check if LLM is currently available (not disabled due to failures)