circle-ir-ai 2.8.24 → 2.10.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 +160 -0
- package/dist/llm/verification.d.ts +62 -0
- package/dist/llm/verification.d.ts.map +1 -1
- package/dist/llm/verification.js +195 -16
- package/dist/llm/verification.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,166 @@ 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.10.0] - 2026-06-16
|
|
9
|
+
|
|
10
|
+
### Changed — circle-ir 3.52.0 → 3.56.0
|
|
11
|
+
|
|
12
|
+
Drop-in engine bump spanning four upstream feature releases. The
|
|
13
|
+
engine-only changes surface as additional `findings[].type` values
|
|
14
|
+
through the same `analyze()` / mastra workflow output — no API
|
|
15
|
+
breaks, no flag additions on this layer.
|
|
16
|
+
|
|
17
|
+
**3.53.0** (cognium-dev#52 + #87 partial)
|
|
18
|
+
|
|
19
|
+
- **Text4Shell (CVE-2022-42889, CWE-94)** — `StringSubstitutor.replace`
|
|
20
|
+
now fires both via explicit-ctor and the chained
|
|
21
|
+
`createInterpolator()` form.
|
|
22
|
+
- **FreeMarker SSTI (CWE-94)** — `new Template(name, new StringReader(taint), cfg)`
|
|
23
|
+
classified as `code_injection`.
|
|
24
|
+
- **Zip-Slip (CWE-22)** — `ZipEntry.getName` / `ZipArchiveEntry` /
|
|
25
|
+
`TarArchiveEntry` reclassified from sink → source, eliminating
|
|
26
|
+
3×-per-vuln noise. Exactly one `path_traversal` finding per real
|
|
27
|
+
flow.
|
|
28
|
+
- **Java weak-crypto config** — static / zero IV (CWE-329), hardcoded
|
|
29
|
+
symmetric key (CWE-321), weak RSA key size (CWE-326).
|
|
30
|
+
- **Taint matcher fix** — both `matchesSinkPattern` and
|
|
31
|
+
`matchesSourcePattern` now consult IR-resolved `receiver_type` /
|
|
32
|
+
`receiver_type_fqn` before falling back to name heuristic.
|
|
33
|
+
Unblocks all class-qualified sink/source patterns.
|
|
34
|
+
|
|
35
|
+
**3.54.0** (Sprint 5)
|
|
36
|
+
|
|
37
|
+
- **`jwt-verify-disabled` (CWE-347, pass #93)** — pure pattern pass
|
|
38
|
+
for PyJWT `options={"verify_signature": False}`, jsonwebtoken
|
|
39
|
+
`algorithms: ['none']`, auth0 `Algorithm.none()`, jjwt-0.x unsigned
|
|
40
|
+
`parse(token)`.
|
|
41
|
+
- **`redos` SinkType (CWE-1333)** — taint flow into regex
|
|
42
|
+
compile/match primitives (Python `re.*`, Java `Pattern.compile`,
|
|
43
|
+
JS `new RegExp`, Go `regexp.*`). Severity high (medium for Go —
|
|
44
|
+
non-backtracking).
|
|
45
|
+
- **`format_string` SinkType (CWE-134)** — taint flow into format
|
|
46
|
+
primitives (Java `String.format`/`printf`, Go `fmt.*`, Python
|
|
47
|
+
`ctypes printf`).
|
|
48
|
+
|
|
49
|
+
**3.55.0** (Sprint 6 — completes #86 9-category gap analysis)
|
|
50
|
+
|
|
51
|
+
- **`crlf` SinkType (CWE-113)** — HTTP response splitting via
|
|
52
|
+
`setHeader`/`addHeader` (Java/JS/Go). Re-routed from `xss` for
|
|
53
|
+
header-only sinks. Severity medium.
|
|
54
|
+
- **`mass_assignment` SinkType (CWE-915)** — `Object.assign`,
|
|
55
|
+
`_.merge`/`_.extend`, jQuery `$.extend`. Severity high.
|
|
56
|
+
- **`csrf-protection-disabled` (CWE-352, pass #94)** — explicit
|
|
57
|
+
`http.csrf().disable()`, `csrfTokenRepository(null)`,
|
|
58
|
+
`@csrf_exempt`. Severity critical.
|
|
59
|
+
- **`xml-entity-expansion` (CWE-776, pass #95)** — XXE / billion-laughs
|
|
60
|
+
via `SAXParserFactory.newInstance()` / `lxml.etree.parse` without
|
|
61
|
+
defusedxml or DTD-disable flags. Severity high.
|
|
62
|
+
- **`mass-assignment` pattern (CWE-915, pass #96)** — `User(**request.form)`,
|
|
63
|
+
`{...req.body}`. Complements the taint sink. Severity high.
|
|
64
|
+
- **`canSourceReachSink` coverage matrix** extended for `crlf` and
|
|
65
|
+
`mass_assignment` — without this, inline source-as-argument flow
|
|
66
|
+
(`res.setHeader('X-Tag', req.query.t)`) was silently rejected.
|
|
67
|
+
|
|
68
|
+
**3.56.0** (#87 — Sprint 7, cross-language `weak-crypto` parity)
|
|
69
|
+
|
|
70
|
+
- **Python weak-crypto config** — `modes.ECB()` (CWE-327),
|
|
71
|
+
`AES.new(b"literal", …)` and `algorithms.AES(b"literal")` (CWE-321),
|
|
72
|
+
`rsa.generate_private_key(key_size<2048)` (CWE-326).
|
|
73
|
+
- **Go weak-crypto config** — `aes.NewCipher([]byte("literal"))` +
|
|
74
|
+
`des`/`rc4` siblings (CWE-321), `rsa.GenerateKey(rand.Reader, N)`
|
|
75
|
+
with `N<2048` (CWE-326).
|
|
76
|
+
- Both languages support a regex-fallback literal-binding scan for
|
|
77
|
+
the two-line bind-then-use pattern; function parameters / runtime
|
|
78
|
+
values still ignored (no KMS/Vault FPs).
|
|
79
|
+
- Python plugin emits bytes literals as `b"…"`; the `weak-crypto`
|
|
80
|
+
pass now prefers `argument.expression` over `argument.literal`
|
|
81
|
+
for the inline regex (the `literal` field strips the trailing
|
|
82
|
+
quote).
|
|
83
|
+
|
|
84
|
+
### Counts
|
|
85
|
+
|
|
86
|
+
Upstream now ships **24 security passes** (was 19) and **8 pattern
|
|
87
|
+
passes** (was 4). Five new `SinkType` values surface through
|
|
88
|
+
`findings[].type`: `crlf`, `mass_assignment`, `redos`, `format_string`,
|
|
89
|
+
plus the existing `code_injection` / `path_traversal` re-routes from
|
|
90
|
+
the Text4Shell / Zip-Slip / FreeMarker fixes. Downstream consumers
|
|
91
|
+
that switch on `SinkType` should pick these up automatically; trust /
|
|
92
|
+
quality / health scoring categories are unaffected.
|
|
93
|
+
|
|
94
|
+
Full test suite: **766/766 passing** (3 skipped), no regressions.
|
|
95
|
+
|
|
96
|
+
## [2.9.0] - 2026-06-16
|
|
97
|
+
|
|
98
|
+
### Added — windowed source/sink batch-verification (cognium-ai#86)
|
|
99
|
+
|
|
100
|
+
For files larger than `LLM_MAX_CODE_CONTEXT` the #83 truncation contract
|
|
101
|
+
silently dropped sinks past the cut. `verifyBatchChunk` in
|
|
102
|
+
`src/llm/verification.ts` now replaces single-shot truncation with
|
|
103
|
+
windowed chunking:
|
|
104
|
+
|
|
105
|
+
1. **Code under budget** → passed through unchanged (fast path).
|
|
106
|
+
2. **Code over budget** → extract merged ±`LLM_VERIFY_WINDOW_LINES`
|
|
107
|
+
(default 80) line windows around every source and sink center.
|
|
108
|
+
Overlapping/adjacent windows are merged. Original 1-based line
|
|
109
|
+
numbers are preserved as a `${lineNo}: ${content}` prefix and each
|
|
110
|
+
window is labeled `=== lines L1-L2 ===`, so the LLM's
|
|
111
|
+
`source_line` / `sink_line` answers map back to the file unchanged.
|
|
112
|
+
3. **Windowed code still over budget** → partition the sinks across
|
|
113
|
+
up to `LLM_VERIFY_MAX_CHUNKS` (default 4) sub-calls. Each sub-call
|
|
114
|
+
carries all sources + a slice of sinks, recursively re-enters
|
|
115
|
+
`verifyBatchChunk`, and gets a correspondingly smaller windowed
|
|
116
|
+
body. Recursion terminates because each sub-call has strictly
|
|
117
|
+
fewer sinks, and `prepareSafeCode` falls back to plain truncation
|
|
118
|
+
when sinks ≤ 1.
|
|
119
|
+
4. **No usable centers** → falls back to the existing #83
|
|
120
|
+
`truncateCode` path with the same warning shape.
|
|
121
|
+
|
|
122
|
+
New env vars (read at module load, mirroring `LLM_MAX_CODE_CONTEXT`):
|
|
123
|
+
|
|
124
|
+
- `LLM_VERIFY_WINDOW_LINES` — lines of context per source/sink center
|
|
125
|
+
(default: 80; ~160 lines per window).
|
|
126
|
+
- `LLM_VERIFY_MAX_CHUNKS` — cap on per-batch sub-call count
|
|
127
|
+
(default: 4).
|
|
128
|
+
|
|
129
|
+
New public exports from `circle-ir-ai`:
|
|
130
|
+
|
|
131
|
+
- `buildWindowedCode(code, centerLines, windowLines)` — pure helper,
|
|
132
|
+
reusable across other LLM call sites that may want the same
|
|
133
|
+
contract.
|
|
134
|
+
- `VERIFY_WINDOW_LINES`, `VERIFY_MAX_CHUNKS` constants.
|
|
135
|
+
|
|
136
|
+
### Added — skip LLM verification on minified content (cognium-ai#102)
|
|
137
|
+
|
|
138
|
+
Follow-up to the windowed-chunking work above. Windowed verification
|
|
139
|
+
can't help on minified / bundled single-line JS because every
|
|
140
|
+
source/sink lives on the same logical line — the merged window
|
|
141
|
+
degenerates to the whole file and recursive splitting can't reduce
|
|
142
|
+
the body. `verifyBatchChunk` now short-circuits on minified content
|
|
143
|
+
before any LLM call, returning an empty batch result with a one-line
|
|
144
|
+
stderr warning. **Static-analysis findings are unaffected** (circle-ir
|
|
145
|
+
taint engine + security passes still run); only the LLM verification
|
|
146
|
+
layer is bypassed.
|
|
147
|
+
|
|
148
|
+
New public export `isMinifiedContent(code)` — conservative heuristic
|
|
149
|
+
requiring all three to hold:
|
|
150
|
+
|
|
151
|
+
- File > 50 KB
|
|
152
|
+
- Longest line > 5,000 chars
|
|
153
|
+
- Average line length > 500 chars
|
|
154
|
+
|
|
155
|
+
Triple-condition guard avoids false positives on legitimate files
|
|
156
|
+
that embed a long JSON / base64 line in otherwise-normal code.
|
|
157
|
+
|
|
158
|
+
Tests: 6 new minified-detection cases (small files, normal large
|
|
159
|
+
files, single long line under size guard, embedded blob in normal
|
|
160
|
+
code, classic single-line bundle, webpack-style chunked bundle).
|
|
161
|
+
|
|
162
|
+
### Combined test totals
|
|
163
|
+
|
|
164
|
+
20 new tests in `tests/llm/verification-chunking.test.ts` (14
|
|
165
|
+
windowing + 6 minified). Full suite: **766/766 passing** (3 skipped),
|
|
166
|
+
no regressions vs 2.8.24.
|
|
167
|
+
|
|
8
168
|
## [2.8.24] - 2026-06-16
|
|
9
169
|
|
|
10
170
|
### Changed — bump `circle-ir` 3.50.0 → 3.52.0
|
|
@@ -6,6 +6,37 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { type AxLLMClient } from './ax-client.js';
|
|
8
8
|
import type { LLMConfig } from './config.js';
|
|
9
|
+
export declare const VERIFY_WINDOW_LINES: number;
|
|
10
|
+
export declare const VERIFY_MAX_CHUNKS: number;
|
|
11
|
+
/**
|
|
12
|
+
* Detect minified / bundled single-line content. #102.
|
|
13
|
+
*
|
|
14
|
+
* Windowed verification can't help when every source/sink lives on the
|
|
15
|
+
* same logical line — the merged window degenerates to the whole file
|
|
16
|
+
* and recursive splitting can't reduce the body further. Skipping LLM
|
|
17
|
+
* verification on minified content avoids pure-cost-no-benefit LLM
|
|
18
|
+
* fan-out; static-analysis findings are unaffected.
|
|
19
|
+
*
|
|
20
|
+
* All three conditions must hold (conservative — avoids flagging
|
|
21
|
+
* legitimate files with one long embedded JSON / base64 line):
|
|
22
|
+
*
|
|
23
|
+
* - File > 50 KB
|
|
24
|
+
* - Longest line > 5,000 chars
|
|
25
|
+
* - Average line length > 500 chars
|
|
26
|
+
*/
|
|
27
|
+
export declare function isMinifiedContent(code: string): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Extract merged ±`windowLines` windows around the given 1-based center
|
|
30
|
+
* lines from `code`. Output preserves original line numbers as a
|
|
31
|
+
* `${lineNo}: ${content}` prefix and labels each window with
|
|
32
|
+
* `=== lines L1-L2 ===` so the LLM can refer to absolute line numbers
|
|
33
|
+
* unchanged. Overlapping or adjacent windows are merged.
|
|
34
|
+
*
|
|
35
|
+
* Returns an empty string when there are no usable centers.
|
|
36
|
+
*
|
|
37
|
+
* For #86.
|
|
38
|
+
*/
|
|
39
|
+
export declare function buildWindowedCode(code: string, centerLines: number[], windowLines?: number): string;
|
|
9
40
|
export type VerificationVerdict = 'TRUE_POSITIVE' | 'FALSE_POSITIVE' | 'UNCERTAIN';
|
|
10
41
|
export type Exploitability = 'high' | 'medium' | 'low' | 'none';
|
|
11
42
|
export interface VerificationResult {
|
|
@@ -93,6 +124,37 @@ export declare class VerificationEngine {
|
|
|
93
124
|
* Process a single chunk of source-sink pairs
|
|
94
125
|
*/
|
|
95
126
|
private verifyBatchChunk;
|
|
127
|
+
/**
|
|
128
|
+
* Decide how to fit `input.code` into the prompt budget. Returns the
|
|
129
|
+
* string to interpolate, or `'SPLIT'` if the caller must partition the
|
|
130
|
+
* sinks across multiple sub-calls.
|
|
131
|
+
*
|
|
132
|
+
* Resolution order (#86):
|
|
133
|
+
* 1. Code already under budget → pass through.
|
|
134
|
+
* 2. Windowed code (±N lines around all source/sink centers) under
|
|
135
|
+
* budget → use it. Preserves all sinks; only inter-sink dead
|
|
136
|
+
* code is dropped.
|
|
137
|
+
* 3. Even windowed code over budget AND sinks > 1 → tell caller to
|
|
138
|
+
* partition sinks and recurse.
|
|
139
|
+
* 4. Last resort (no usable centers, OR single sink with windowed
|
|
140
|
+
* output still too large) → fall back to #83 truncation.
|
|
141
|
+
*/
|
|
142
|
+
private prepareSafeCode;
|
|
143
|
+
/**
|
|
144
|
+
* Partition `input.sinks` across up to `VERIFY_MAX_CHUNKS` sub-calls
|
|
145
|
+
* when even windowed code exceeds the budget. Each sub-call carries
|
|
146
|
+
* all sources (sources are typically few) plus a slice of sinks; its
|
|
147
|
+
* windowed code is correspondingly smaller. Recursion terminates
|
|
148
|
+
* because each sub-call has strictly fewer sinks, and `prepareSafeCode`
|
|
149
|
+
* falls back to truncation when sinks <= 1. #86.
|
|
150
|
+
*/
|
|
151
|
+
private verifyBatchChunkSplit;
|
|
152
|
+
/**
|
|
153
|
+
* Issue a single batch-verify LLM call against the prepared code body.
|
|
154
|
+
* Extracted so `verifyBatchChunk` and `verifyBatchChunkSplit` share the
|
|
155
|
+
* exact same LLM call path.
|
|
156
|
+
*/
|
|
157
|
+
private runBatchVerifyCall;
|
|
96
158
|
/**
|
|
97
159
|
* Build verification prompt
|
|
98
160
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/llm/verification.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/llm/verification.ts"],"names":[],"mappings":"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"}
|
package/dist/llm/verification.js
CHANGED
|
@@ -4,9 +4,105 @@
|
|
|
4
4
|
* Uses a powerful LLM to verify vulnerability exploitability.
|
|
5
5
|
* Analyzes real source code to determine TRUE_POSITIVE, FALSE_POSITIVE, or UNCERTAIN.
|
|
6
6
|
*/
|
|
7
|
-
import { getAxLLMClient, truncateCode } from './ax-client.js';
|
|
7
|
+
import { MAX_CODE_CONTEXT_LENGTH, getAxLLMClient, truncateCode, } from './ax-client.js';
|
|
8
8
|
import { withLLMContext } from './debug-context.js';
|
|
9
9
|
// ============================================================================
|
|
10
|
+
// #86 — Windowed verification configuration
|
|
11
|
+
// ============================================================================
|
|
12
|
+
//
|
|
13
|
+
// For files larger than `MAX_CODE_CONTEXT_LENGTH` the truncation contract
|
|
14
|
+
// from #83 silently drops sinks past the cut. #86 replaces single-shot
|
|
15
|
+
// truncation with windowed chunking: ±N lines around each source/sink
|
|
16
|
+
// center, merged across overlaps, with original line numbers preserved so
|
|
17
|
+
// the LLM's `source_line` / `sink_line` answers map back to the file.
|
|
18
|
+
//
|
|
19
|
+
// Env vars (read at module load, mirrors LLM_MAX_CODE_CONTEXT pattern):
|
|
20
|
+
// LLM_VERIFY_WINDOW_LINES — lines of context per center (default: 80)
|
|
21
|
+
// LLM_VERIFY_MAX_CHUNKS — cap on per-batch sub-calls (default: 4)
|
|
22
|
+
const envVerifyWindowLines = parseInt(process.env.LLM_VERIFY_WINDOW_LINES || '', 10);
|
|
23
|
+
export const VERIFY_WINDOW_LINES = Number.isFinite(envVerifyWindowLines) && envVerifyWindowLines > 0
|
|
24
|
+
? envVerifyWindowLines
|
|
25
|
+
: 80;
|
|
26
|
+
const envVerifyMaxChunks = parseInt(process.env.LLM_VERIFY_MAX_CHUNKS || '', 10);
|
|
27
|
+
export const VERIFY_MAX_CHUNKS = Number.isFinite(envVerifyMaxChunks) && envVerifyMaxChunks > 0
|
|
28
|
+
? envVerifyMaxChunks
|
|
29
|
+
: 4;
|
|
30
|
+
/**
|
|
31
|
+
* Detect minified / bundled single-line content. #102.
|
|
32
|
+
*
|
|
33
|
+
* Windowed verification can't help when every source/sink lives on the
|
|
34
|
+
* same logical line — the merged window degenerates to the whole file
|
|
35
|
+
* and recursive splitting can't reduce the body further. Skipping LLM
|
|
36
|
+
* verification on minified content avoids pure-cost-no-benefit LLM
|
|
37
|
+
* fan-out; static-analysis findings are unaffected.
|
|
38
|
+
*
|
|
39
|
+
* All three conditions must hold (conservative — avoids flagging
|
|
40
|
+
* legitimate files with one long embedded JSON / base64 line):
|
|
41
|
+
*
|
|
42
|
+
* - File > 50 KB
|
|
43
|
+
* - Longest line > 5,000 chars
|
|
44
|
+
* - Average line length > 500 chars
|
|
45
|
+
*/
|
|
46
|
+
export function isMinifiedContent(code) {
|
|
47
|
+
if (code.length < 50_000)
|
|
48
|
+
return false;
|
|
49
|
+
const lines = code.split(/\r?\n/);
|
|
50
|
+
if (lines.length === 0)
|
|
51
|
+
return false;
|
|
52
|
+
let maxLine = 0;
|
|
53
|
+
for (const l of lines)
|
|
54
|
+
if (l.length > maxLine)
|
|
55
|
+
maxLine = l.length;
|
|
56
|
+
if (maxLine < 5_000)
|
|
57
|
+
return false;
|
|
58
|
+
const avgLine = code.length / lines.length;
|
|
59
|
+
return avgLine > 500;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Extract merged ±`windowLines` windows around the given 1-based center
|
|
63
|
+
* lines from `code`. Output preserves original line numbers as a
|
|
64
|
+
* `${lineNo}: ${content}` prefix and labels each window with
|
|
65
|
+
* `=== lines L1-L2 ===` so the LLM can refer to absolute line numbers
|
|
66
|
+
* unchanged. Overlapping or adjacent windows are merged.
|
|
67
|
+
*
|
|
68
|
+
* Returns an empty string when there are no usable centers.
|
|
69
|
+
*
|
|
70
|
+
* For #86.
|
|
71
|
+
*/
|
|
72
|
+
export function buildWindowedCode(code, centerLines, windowLines = VERIFY_WINDOW_LINES) {
|
|
73
|
+
const lines = code.split(/\r?\n/);
|
|
74
|
+
if (lines.length === 0)
|
|
75
|
+
return '';
|
|
76
|
+
const dedupedCenters = Array.from(new Set(centerLines.filter((l) => Number.isFinite(l) && l > 0)));
|
|
77
|
+
if (dedupedCenters.length === 0)
|
|
78
|
+
return '';
|
|
79
|
+
const raw = dedupedCenters
|
|
80
|
+
.map((l) => ({
|
|
81
|
+
startLine: Math.max(1, l - windowLines),
|
|
82
|
+
endLine: Math.min(lines.length, l + windowLines),
|
|
83
|
+
}))
|
|
84
|
+
.sort((a, b) => a.startLine - b.startLine);
|
|
85
|
+
const merged = [{ ...raw[0] }];
|
|
86
|
+
for (let i = 1; i < raw.length; i++) {
|
|
87
|
+
const last = merged[merged.length - 1];
|
|
88
|
+
const w = raw[i];
|
|
89
|
+
if (w.startLine <= last.endLine + 1) {
|
|
90
|
+
last.endLine = Math.max(last.endLine, w.endLine);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
merged.push({ ...w });
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
const parts = [];
|
|
97
|
+
for (const w of merged) {
|
|
98
|
+
parts.push(`=== lines ${w.startLine}-${w.endLine} ===`);
|
|
99
|
+
for (let i = w.startLine; i <= w.endLine; i++) {
|
|
100
|
+
parts.push(`${i}: ${lines[i - 1] ?? ''}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return parts.join('\n');
|
|
104
|
+
}
|
|
105
|
+
// ============================================================================
|
|
10
106
|
// Verification Prompt Template
|
|
11
107
|
// ============================================================================
|
|
12
108
|
const VERIFICATION_PROMPT = `You are a security expert analyzing code for vulnerabilities.
|
|
@@ -254,26 +350,110 @@ export class VerificationEngine {
|
|
|
254
350
|
* Process a single chunk of source-sink pairs
|
|
255
351
|
*/
|
|
256
352
|
async verifyBatchChunk(input, startTime, modelUsed) {
|
|
257
|
-
//
|
|
353
|
+
// #102 — Skip LLM verification on minified / bundled single-line
|
|
354
|
+
// content. Windowed chunking degenerates here (all centers on the
|
|
355
|
+
// same line → window is the whole file → splitting can't reduce).
|
|
356
|
+
// Static-analysis findings are unaffected.
|
|
357
|
+
if (isMinifiedContent(input.code)) {
|
|
358
|
+
const sizeKb = Math.round(input.code.length / 1024);
|
|
359
|
+
const maxLine = input.code.split(/\r?\n/).reduce((m, l) => Math.max(m, l.length), 0);
|
|
360
|
+
console.error(` ⚠ verification: skipping minified content (${sizeKb}kb, max line ${maxLine}c). ` +
|
|
361
|
+
`Static findings unchanged. cognium-ai#102`);
|
|
362
|
+
return {
|
|
363
|
+
pairs: [],
|
|
364
|
+
summary: { total_analyzed: 0, true_positives: 0, false_positives: 0, uncertain: 0 },
|
|
365
|
+
processingTimeMs: Date.now() - startTime,
|
|
366
|
+
modelUsed,
|
|
367
|
+
};
|
|
368
|
+
}
|
|
369
|
+
const prepared = this.prepareSafeCode(input);
|
|
370
|
+
if (prepared === 'SPLIT') {
|
|
371
|
+
return this.verifyBatchChunkSplit(input, startTime, modelUsed);
|
|
372
|
+
}
|
|
373
|
+
return this.runBatchVerifyCall(input, prepared, startTime, modelUsed);
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Decide how to fit `input.code` into the prompt budget. Returns the
|
|
377
|
+
* string to interpolate, or `'SPLIT'` if the caller must partition the
|
|
378
|
+
* sinks across multiple sub-calls.
|
|
379
|
+
*
|
|
380
|
+
* Resolution order (#86):
|
|
381
|
+
* 1. Code already under budget → pass through.
|
|
382
|
+
* 2. Windowed code (±N lines around all source/sink centers) under
|
|
383
|
+
* budget → use it. Preserves all sinks; only inter-sink dead
|
|
384
|
+
* code is dropped.
|
|
385
|
+
* 3. Even windowed code over budget AND sinks > 1 → tell caller to
|
|
386
|
+
* partition sinks and recurse.
|
|
387
|
+
* 4. Last resort (no usable centers, OR single sink with windowed
|
|
388
|
+
* output still too large) → fall back to #83 truncation.
|
|
389
|
+
*/
|
|
390
|
+
prepareSafeCode(input) {
|
|
391
|
+
if (input.code.length <= MAX_CODE_CONTEXT_LENGTH)
|
|
392
|
+
return input.code;
|
|
393
|
+
const centers = [
|
|
394
|
+
...input.sources.map((s) => s.line),
|
|
395
|
+
...input.sinks.map((s) => s.line),
|
|
396
|
+
];
|
|
397
|
+
const windowed = buildWindowedCode(input.code, centers, VERIFY_WINDOW_LINES);
|
|
398
|
+
if (windowed.length > 0 && windowed.length <= MAX_CODE_CONTEXT_LENGTH) {
|
|
399
|
+
console.error(` ↻ verification: windowed code from ${input.code.length} → ${windowed.length} chars ` +
|
|
400
|
+
`(±${VERIFY_WINDOW_LINES} around ${centers.length} centers). #86`);
|
|
401
|
+
return windowed;
|
|
402
|
+
}
|
|
403
|
+
if (windowed.length > MAX_CODE_CONTEXT_LENGTH && input.sinks.length > 1) {
|
|
404
|
+
return 'SPLIT';
|
|
405
|
+
}
|
|
406
|
+
const truncated = truncateCode(input.code);
|
|
407
|
+
console.error(` ⚠ verification: code truncated from ${input.code.length} → ${truncated.length} chars ` +
|
|
408
|
+
`(LLM_MAX_CODE_CONTEXT, windowing didn't fit). Sinks past the cut will not be verified. #86`);
|
|
409
|
+
return truncated;
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* Partition `input.sinks` across up to `VERIFY_MAX_CHUNKS` sub-calls
|
|
413
|
+
* when even windowed code exceeds the budget. Each sub-call carries
|
|
414
|
+
* all sources (sources are typically few) plus a slice of sinks; its
|
|
415
|
+
* windowed code is correspondingly smaller. Recursion terminates
|
|
416
|
+
* because each sub-call has strictly fewer sinks, and `prepareSafeCode`
|
|
417
|
+
* falls back to truncation when sinks <= 1. #86.
|
|
418
|
+
*/
|
|
419
|
+
async verifyBatchChunkSplit(input, startTime, modelUsed) {
|
|
420
|
+
const sinks = input.sinks;
|
|
421
|
+
const chunkCount = Math.min(VERIFY_MAX_CHUNKS, sinks.length);
|
|
422
|
+
const sinksPerChunk = Math.ceil(sinks.length / chunkCount);
|
|
423
|
+
const subInputs = [];
|
|
424
|
+
for (let i = 0; i < sinks.length; i += sinksPerChunk) {
|
|
425
|
+
subInputs.push({ ...input, sinks: sinks.slice(i, i + sinksPerChunk) });
|
|
426
|
+
}
|
|
427
|
+
console.error(` ↻ verification: code too large even windowed; splitting ${sinks.length} sinks across ${subInputs.length} sub-calls. #86`);
|
|
428
|
+
const merged = {
|
|
429
|
+
pairs: [],
|
|
430
|
+
summary: { total_analyzed: 0, true_positives: 0, false_positives: 0, uncertain: 0 },
|
|
431
|
+
processingTimeMs: 0,
|
|
432
|
+
modelUsed,
|
|
433
|
+
};
|
|
434
|
+
for (const sub of subInputs) {
|
|
435
|
+
const r = await this.verifyBatchChunk(sub, Date.now(), modelUsed);
|
|
436
|
+
merged.pairs.push(...r.pairs);
|
|
437
|
+
merged.summary.total_analyzed += r.summary.total_analyzed;
|
|
438
|
+
merged.summary.true_positives += r.summary.true_positives;
|
|
439
|
+
merged.summary.false_positives += r.summary.false_positives;
|
|
440
|
+
merged.summary.uncertain += r.summary.uncertain;
|
|
441
|
+
}
|
|
442
|
+
merged.processingTimeMs = Date.now() - startTime;
|
|
443
|
+
return merged;
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Issue a single batch-verify LLM call against the prepared code body.
|
|
447
|
+
* Extracted so `verifyBatchChunk` and `verifyBatchChunkSplit` share the
|
|
448
|
+
* exact same LLM call path.
|
|
449
|
+
*/
|
|
450
|
+
async runBatchVerifyCall(input, safeCode, startTime, modelUsed) {
|
|
258
451
|
const sourcesText = input.sources
|
|
259
452
|
.map((s, i) => ` ${i + 1}. Line ${s.line}: ${s.type}${s.variable ? ` (${s.variable})` : ''}`)
|
|
260
453
|
.join('\n');
|
|
261
|
-
// Build sinks list
|
|
262
454
|
const sinksText = input.sinks
|
|
263
455
|
.map((s, i) => ` ${i + 1}. Line ${s.line}: ${s.type} [${s.cwe}]${s.method ? ` - ${s.method}()` : ''}`)
|
|
264
456
|
.join('\n');
|
|
265
|
-
// #83 — bound the prompt size. Without truncation, large unstructured
|
|
266
|
-
// files (180 KB build.sh, framework-free Python modules) exceed slow
|
|
267
|
-
// models' per-call timeout. Mirrors the contract already applied at
|
|
268
|
-
// discovery time in ax-client.ts. Sinks past the cut won't be verified;
|
|
269
|
-
// raise `LLM_MAX_CODE_CONTEXT` to widen the window or wait on the
|
|
270
|
-
// follow-up chunked-verification work.
|
|
271
|
-
const safeCode = truncateCode(input.code);
|
|
272
|
-
if (safeCode.length < input.code.length) {
|
|
273
|
-
console.error(` ⚠ verification: code truncated from ${input.code.length} → ${safeCode.length} chars ` +
|
|
274
|
-
`(LLM_MAX_CODE_CONTEXT). Sinks past the cut will not be verified. #83`);
|
|
275
|
-
}
|
|
276
|
-
// Build the batch prompt
|
|
277
457
|
const prompt = BATCH_VERIFICATION_PROMPT
|
|
278
458
|
.replace('{code}', safeCode)
|
|
279
459
|
.replace('{sources}', sourcesText)
|
|
@@ -301,7 +481,6 @@ export class VerificationEngine {
|
|
|
301
481
|
modelUsed,
|
|
302
482
|
};
|
|
303
483
|
}
|
|
304
|
-
// Empty response - return no pairs
|
|
305
484
|
return {
|
|
306
485
|
pairs: [],
|
|
307
486
|
summary: { total_analyzed: 0, true_positives: 0, false_positives: 0, uncertain: 0 },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/llm/verification.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/llm/verification.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "circle-ir-ai",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.10.0",
|
|
4
4
|
"description": "LLM-enhanced SAST analysis built on circle-ir",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"dependencies": {
|
|
95
95
|
"@ax-llm/ax": "^20.0.0",
|
|
96
96
|
"@mastra/core": "^1.18.0",
|
|
97
|
-
"circle-ir": "3.
|
|
97
|
+
"circle-ir": "3.56.0",
|
|
98
98
|
"minimatch": "^10.2.5",
|
|
99
99
|
"p-queue": "^9.1.0"
|
|
100
100
|
},
|