@mmnto/totem 1.3.0 → 1.3.2
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/dist/compiler-schema.d.ts +201 -0
- package/dist/compiler-schema.d.ts.map +1 -0
- package/dist/compiler-schema.js +46 -0
- package/dist/compiler-schema.js.map +1 -0
- package/dist/compiler.d.ts +14 -230
- package/dist/compiler.d.ts.map +1 -1
- package/dist/compiler.js +17 -380
- package/dist/compiler.js.map +1 -1
- package/dist/diff-parser.d.ts +8 -0
- package/dist/diff-parser.d.ts.map +1 -0
- package/dist/diff-parser.js +70 -0
- package/dist/diff-parser.js.map +1 -0
- package/dist/embedders/embedder.d.ts.map +1 -1
- package/dist/embedders/embedder.js +3 -7
- package/dist/embedders/embedder.js.map +1 -1
- package/dist/embedders/gemini-embedder.d.ts.map +1 -1
- package/dist/embedders/gemini-embedder.js +7 -9
- package/dist/embedders/gemini-embedder.js.map +1 -1
- package/dist/embedders/openai-embedder.d.ts.map +1 -1
- package/dist/embedders/openai-embedder.js +4 -4
- package/dist/embedders/openai-embedder.js.map +1 -1
- package/dist/exporter.d.ts.map +1 -1
- package/dist/exporter.js +3 -2
- package/dist/exporter.js.map +1 -1
- package/dist/lesson-io.d.ts.map +1 -1
- package/dist/lesson-io.js +19 -4
- package/dist/lesson-io.js.map +1 -1
- package/dist/lesson-io.test.js +18 -0
- package/dist/lesson-io.test.js.map +1 -1
- package/dist/lock.d.ts.map +1 -1
- package/dist/lock.js +2 -2
- package/dist/lock.js.map +1 -1
- package/dist/rule-engine.d.ts +31 -0
- package/dist/rule-engine.d.ts.map +1 -0
- package/dist/rule-engine.js +278 -0
- package/dist/rule-engine.js.map +1 -0
- package/dist/sarif.d.ts.map +1 -1
- package/dist/sarif.js +2 -1
- package/dist/sarif.js.map +1 -1
- package/package.json +1 -1
package/dist/compiler.js
CHANGED
|
@@ -1,46 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compiler facade — re-exports from focused modules.
|
|
3
|
+
*
|
|
4
|
+
* Schemas and types: ./compiler-schema.ts
|
|
5
|
+
* Diff parsing: ./diff-parser.ts
|
|
6
|
+
* Rule execution: ./rule-engine.ts
|
|
7
|
+
*
|
|
8
|
+
* This file retains: hashing, regex validation, file I/O, and LLM response parsing.
|
|
9
|
+
*/
|
|
1
10
|
import * as crypto from 'node:crypto';
|
|
2
11
|
import * as fs from 'node:fs';
|
|
3
|
-
import * as path from 'node:path';
|
|
4
12
|
import safeRegex from 'safe-regex2';
|
|
5
13
|
import { z } from 'zod';
|
|
6
|
-
import {
|
|
7
|
-
import { matchAstGrepPatternsBatch } from './ast-grep-query.js';
|
|
8
|
-
import { matchAstQueriesBatch } from './ast-query.js';
|
|
14
|
+
import { CompiledRulesFileSchema, CompilerOutputSchema } from './compiler-schema.js';
|
|
9
15
|
import { TotemParseError } from './errors.js';
|
|
10
|
-
|
|
11
|
-
export
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
/** Human-readable heading from the lesson (for diagnostics) */
|
|
15
|
-
lessonHeading: z.string(),
|
|
16
|
-
/** Regex pattern to match against added diff lines */
|
|
17
|
-
pattern: z.string(),
|
|
18
|
-
/** Human-readable violation message shown when the pattern matches */
|
|
19
|
-
message: z.string(),
|
|
20
|
-
/** Engine type — 'regex' for line-level matching, 'ast' for Tree-sitter S-expression queries, 'ast-grep' for ast-grep structural patterns */
|
|
21
|
-
engine: z.enum(['regex', 'ast', 'ast-grep']),
|
|
22
|
-
/** Tree-sitter S-expression query (required when engine is 'ast') */
|
|
23
|
-
astQuery: z.string().optional(),
|
|
24
|
-
/** ast-grep pattern — string for simple patterns, object for compound rules (has/inside/not) */
|
|
25
|
-
astGrepPattern: z.union([z.string(), z.record(z.unknown())]).optional(),
|
|
26
|
-
/** ISO timestamp of when this rule was compiled */
|
|
27
|
-
compiledAt: z.string(),
|
|
28
|
-
/** ISO timestamp of when this rule was first created (survives recompilation) */
|
|
29
|
-
createdAt: z.string().optional(),
|
|
30
|
-
/** Optional file glob patterns — rule only applies to matching files (e.g., ["*.sh", "*.yml"]) */
|
|
31
|
-
fileGlobs: z.array(z.string()).optional(),
|
|
32
|
-
/** Rule category for Trap Ledger classification */
|
|
33
|
-
category: z.enum(['security', 'architecture', 'style', 'performance']).optional(),
|
|
34
|
-
/** Severity level — error blocks CI, warning reports but doesn't fail */
|
|
35
|
-
severity: z.enum(['error', 'warning']).optional(),
|
|
36
|
-
});
|
|
37
|
-
export const CompiledRulesFileSchema = z.object({
|
|
38
|
-
version: z.literal(1),
|
|
39
|
-
rules: z.array(CompiledRuleSchema),
|
|
40
|
-
/** Lesson hashes that the LLM determined cannot be compiled (conceptual/architectural). */
|
|
41
|
-
nonCompilable: z.array(z.string()).optional(),
|
|
42
|
-
});
|
|
43
|
-
// ─── Hashing ─────────────────────────────────────────
|
|
16
|
+
export { CompiledRuleSchema, CompiledRulesFileSchema, CompilerOutputSchema, } from './compiler-schema.js';
|
|
17
|
+
export { extractAddedLines } from './diff-parser.js';
|
|
18
|
+
export { applyAstRulesToAdditions, applyRules, applyRulesToAdditions, matchesGlob, } from './rule-engine.js';
|
|
19
|
+
// ─── Hashing ────────────────────────────────────────
|
|
44
20
|
const HASH_SLICE_LEN = 16;
|
|
45
21
|
/** Hash a lesson's heading + body to detect changes since compilation. */
|
|
46
22
|
export function hashLesson(heading, body) {
|
|
@@ -50,6 +26,7 @@ export function hashLesson(heading, body) {
|
|
|
50
26
|
.digest('hex')
|
|
51
27
|
.slice(0, HASH_SLICE_LEN);
|
|
52
28
|
}
|
|
29
|
+
// ─── Regex validation ───────────────────────────────
|
|
53
30
|
/**
|
|
54
31
|
* Validate that a pattern string is a syntactically valid RegExp
|
|
55
32
|
* and is not vulnerable to ReDoS (catastrophic backtracking).
|
|
@@ -66,337 +43,7 @@ export function validateRegex(pattern) {
|
|
|
66
43
|
}
|
|
67
44
|
return { valid: true };
|
|
68
45
|
}
|
|
69
|
-
|
|
70
|
-
* Extract added lines from a unified diff.
|
|
71
|
-
* Returns only lines that start with `+` (excluding `+++` file headers).
|
|
72
|
-
* Tracks the preceding line content (context or added) for suppression support.
|
|
73
|
-
*/
|
|
74
|
-
export function extractAddedLines(diff) {
|
|
75
|
-
const additions = [];
|
|
76
|
-
let currentFile = '';
|
|
77
|
-
let lineNum = 0;
|
|
78
|
-
let prevLineContent = null;
|
|
79
|
-
let insideHunk = false;
|
|
80
|
-
for (const rawLine of diff.split('\n')) {
|
|
81
|
-
// New file block — reset hunk state
|
|
82
|
-
if (rawLine.startsWith('diff ')) {
|
|
83
|
-
insideHunk = false;
|
|
84
|
-
continue;
|
|
85
|
-
}
|
|
86
|
-
// Track current file from diff headers — only BEFORE the first hunk.
|
|
87
|
-
// Inside a hunk, a line starting with +++ is an added line whose
|
|
88
|
-
// content happens to start with ++ (e.g., template literal test fixtures
|
|
89
|
-
// containing embedded diff headers like "+++ b/some-file.ts").
|
|
90
|
-
if (!insideHunk && rawLine.startsWith('+++')) {
|
|
91
|
-
let pathPart = rawLine.slice(4); // strip "+++ "
|
|
92
|
-
// Strip surrounding quotes (git adds them for paths with spaces)
|
|
93
|
-
if (pathPart.startsWith('"') && pathPart.endsWith('"')) {
|
|
94
|
-
pathPart = pathPart.slice(1, -1);
|
|
95
|
-
}
|
|
96
|
-
// Strip the "b/" prefix git uses for the destination file
|
|
97
|
-
currentFile = pathPart.startsWith('b/') ? pathPart.slice(2) : pathPart;
|
|
98
|
-
prevLineContent = null;
|
|
99
|
-
continue;
|
|
100
|
-
}
|
|
101
|
-
// Parse hunk header for line numbers: @@ -X,Y +Z,W @@
|
|
102
|
-
const hunkMatch = rawLine.match(/^@@ -\d+(?:,\d+)? \+(\d+)/);
|
|
103
|
-
if (hunkMatch) {
|
|
104
|
-
insideHunk = true;
|
|
105
|
-
lineNum = parseInt(hunkMatch[1], 10) - 1; // will be incremented on first line
|
|
106
|
-
prevLineContent = null;
|
|
107
|
-
continue;
|
|
108
|
-
}
|
|
109
|
-
// Skip diff metadata lines
|
|
110
|
-
if (rawLine.startsWith('---') || rawLine.startsWith('index ')) {
|
|
111
|
-
continue;
|
|
112
|
-
}
|
|
113
|
-
// Count lines for position tracking
|
|
114
|
-
if (rawLine.startsWith('+')) {
|
|
115
|
-
lineNum++;
|
|
116
|
-
const lineContent = rawLine.slice(1); // strip the leading +
|
|
117
|
-
additions.push({
|
|
118
|
-
file: currentFile,
|
|
119
|
-
line: lineContent,
|
|
120
|
-
lineNumber: lineNum,
|
|
121
|
-
precedingLine: prevLineContent,
|
|
122
|
-
});
|
|
123
|
-
prevLineContent = lineContent;
|
|
124
|
-
}
|
|
125
|
-
else if (rawLine.startsWith('-')) {
|
|
126
|
-
// Deleted line — NOT in new file, don't update prevLineContent or lineNum
|
|
127
|
-
}
|
|
128
|
-
else if (rawLine.startsWith(' ')) {
|
|
129
|
-
// Context line — in new file
|
|
130
|
-
lineNum++;
|
|
131
|
-
prevLineContent = rawLine.slice(1);
|
|
132
|
-
}
|
|
133
|
-
// Ignore other lines (e.g., '')
|
|
134
|
-
}
|
|
135
|
-
return additions;
|
|
136
|
-
}
|
|
137
|
-
// ─── Rule execution ──────────────────────────────────
|
|
138
|
-
// ─── File glob matching ─────────────────────────────
|
|
139
|
-
/**
|
|
140
|
-
* Check if a file path matches a single glob pattern.
|
|
141
|
-
* Supports: `*.ext`, `**\/*.ext`, `dir/**\/*.ext`, `dir/**`, literal filenames.
|
|
142
|
-
*/
|
|
143
|
-
export function matchesGlob(filePath, glob) {
|
|
144
|
-
// Normalize separators
|
|
145
|
-
const normalized = filePath.replace(/\\/g, '/');
|
|
146
|
-
// *.ext — match file extension anywhere
|
|
147
|
-
if (glob.startsWith('*.')) {
|
|
148
|
-
return normalized.endsWith(glob.slice(1));
|
|
149
|
-
}
|
|
150
|
-
// **/*.ext — same as *.ext (match extension anywhere in path)
|
|
151
|
-
if (glob.startsWith('**/')) {
|
|
152
|
-
return matchesGlob(normalized, glob.slice(3));
|
|
153
|
-
}
|
|
154
|
-
// dir/**/*.ext or dir/** — directory-prefixed recursive glob
|
|
155
|
-
const dstarIdx = glob.indexOf('/**/');
|
|
156
|
-
if (dstarIdx > 0) {
|
|
157
|
-
const prefix = glob.slice(0, dstarIdx);
|
|
158
|
-
const suffix = glob.slice(dstarIdx + 4); // after "/**/"
|
|
159
|
-
if (!normalized.startsWith(prefix + '/'))
|
|
160
|
-
return false;
|
|
161
|
-
const rest = normalized.slice(prefix.length + 1);
|
|
162
|
-
return suffix === '' || matchesGlob(rest, suffix);
|
|
163
|
-
}
|
|
164
|
-
// dir/** — match anything under directory (no trailing pattern)
|
|
165
|
-
if (glob.endsWith('/**')) {
|
|
166
|
-
const prefix = glob.slice(0, -3);
|
|
167
|
-
return normalized.startsWith(prefix + '/');
|
|
168
|
-
}
|
|
169
|
-
// dir/*.ext — single-star, non-recursive (matches files in exact directory)
|
|
170
|
-
const singleStarIdx = glob.indexOf('/*.');
|
|
171
|
-
if (singleStarIdx > 0 && !glob.includes('**')) {
|
|
172
|
-
const prefix = glob.slice(0, singleStarIdx);
|
|
173
|
-
const ext = glob.slice(singleStarIdx + 2); // "*.ext" portion
|
|
174
|
-
if (!normalized.startsWith(prefix + '/'))
|
|
175
|
-
return false;
|
|
176
|
-
const rest = normalized.slice(prefix.length + 1);
|
|
177
|
-
// Must be a direct child (no further slashes) and match the extension
|
|
178
|
-
return !rest.includes('/') && rest.endsWith(ext);
|
|
179
|
-
}
|
|
180
|
-
// Literal filename match (e.g., "Dockerfile")
|
|
181
|
-
return normalized === glob || normalized.endsWith('/' + glob);
|
|
182
|
-
}
|
|
183
|
-
function fileMatchesGlobs(filePath, globs) {
|
|
184
|
-
const positive = globs.filter((g) => !g.startsWith('!'));
|
|
185
|
-
const negative = globs.filter((g) => g.startsWith('!')).map((g) => g.slice(1));
|
|
186
|
-
const positiveMatch = positive.length === 0 || positive.some((g) => matchesGlob(filePath, g));
|
|
187
|
-
const negativeMatch = negative.some((g) => matchesGlob(filePath, g));
|
|
188
|
-
return positiveMatch && !negativeMatch;
|
|
189
|
-
}
|
|
190
|
-
// ─── Rule execution ──────────────────────────────────
|
|
191
|
-
// ─── Inline suppression ─────────────────────────────
|
|
192
|
-
const SUPPRESS_MARKER = 'totem-ignore';
|
|
193
|
-
const SUPPRESS_NEXT_LINE_MARKER = 'totem-ignore-next-line';
|
|
194
|
-
/**
|
|
195
|
-
* Check if a line should be suppressed via inline directives.
|
|
196
|
-
* Supports two forms:
|
|
197
|
-
* - Same-line: code(); // totem-ignore (suppresses all rules on this line)
|
|
198
|
-
* - Next-line: // totem-ignore-next-line on the preceding line (suppresses all rules on this line)
|
|
199
|
-
*
|
|
200
|
-
* Syntax-agnostic: works with any comment style (//, #, HTML comments, block comments).
|
|
201
|
-
*/
|
|
202
|
-
function isSuppressed(line, precedingLine) {
|
|
203
|
-
// Same-line: 'totem-ignore' substring also matches 'totem-ignore-next-line',
|
|
204
|
-
// so directive lines themselves are inherently suppressed.
|
|
205
|
-
if (line.includes(SUPPRESS_MARKER))
|
|
206
|
-
return true;
|
|
207
|
-
// Next-line: preceding line (context or added) contains the next-line directive
|
|
208
|
-
if (precedingLine != null && precedingLine.includes(SUPPRESS_NEXT_LINE_MARKER))
|
|
209
|
-
return true;
|
|
210
|
-
return false;
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* Apply compiled rules against pre-extracted diff additions.
|
|
214
|
-
* Skips additions with non-code AST context (strings, comments, regex).
|
|
215
|
-
* Optional `onRuleEvent` callback enables observability metrics collection.
|
|
216
|
-
*/
|
|
217
|
-
export function applyRulesToAdditions(rules, additions, onRuleEvent) {
|
|
218
|
-
if (additions.length === 0 || rules.length === 0)
|
|
219
|
-
return [];
|
|
220
|
-
const violations = [];
|
|
221
|
-
for (const rule of rules) {
|
|
222
|
-
let re;
|
|
223
|
-
try {
|
|
224
|
-
re = new RegExp(rule.pattern);
|
|
225
|
-
}
|
|
226
|
-
catch {
|
|
227
|
-
// Skip invalid patterns (shouldn't happen if validation gate works)
|
|
228
|
-
continue;
|
|
229
|
-
}
|
|
230
|
-
for (const addition of additions) {
|
|
231
|
-
// Skip non-code lines when AST context is available
|
|
232
|
-
if (addition.astContext && addition.astContext !== 'code')
|
|
233
|
-
continue;
|
|
234
|
-
// Skip if rule has fileGlobs and this file doesn't match
|
|
235
|
-
if (rule.fileGlobs && rule.fileGlobs.length > 0) {
|
|
236
|
-
if (!fileMatchesGlobs(addition.file, rule.fileGlobs))
|
|
237
|
-
continue;
|
|
238
|
-
}
|
|
239
|
-
// Skip if suppressed via inline directive
|
|
240
|
-
if (isSuppressed(addition.line, addition.precedingLine)) {
|
|
241
|
-
if (re.test(addition.line)) {
|
|
242
|
-
onRuleEvent?.('suppress', rule.lessonHash);
|
|
243
|
-
}
|
|
244
|
-
continue;
|
|
245
|
-
}
|
|
246
|
-
if (re.test(addition.line)) {
|
|
247
|
-
onRuleEvent?.('trigger', rule.lessonHash);
|
|
248
|
-
violations.push({
|
|
249
|
-
rule,
|
|
250
|
-
file: addition.file,
|
|
251
|
-
line: addition.line,
|
|
252
|
-
lineNumber: addition.lineNumber,
|
|
253
|
-
});
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
return violations;
|
|
258
|
-
}
|
|
259
|
-
/**
|
|
260
|
-
* Apply AST-engine compiled rules against pre-extracted diff additions.
|
|
261
|
-
* Handles both Tree-sitter S-expression ('ast') and ast-grep ('ast-grep') engines.
|
|
262
|
-
* Async because it reads files and runs Tree-sitter queries.
|
|
263
|
-
* Handles fileGlobs filtering and suppression same as regex rules.
|
|
264
|
-
*/
|
|
265
|
-
export async function applyAstRulesToAdditions(rules, additions, cwd, onRuleEvent) {
|
|
266
|
-
const treeSitterRules = rules.filter((r) => r.engine === 'ast' && r.astQuery);
|
|
267
|
-
const astGrepRules = rules.filter((r) => r.engine === 'ast-grep' && r.astGrepPattern);
|
|
268
|
-
if ((treeSitterRules.length === 0 && astGrepRules.length === 0) || additions.length === 0) {
|
|
269
|
-
return [];
|
|
270
|
-
}
|
|
271
|
-
// Group additions by file
|
|
272
|
-
const byFile = new Map();
|
|
273
|
-
for (const a of additions) {
|
|
274
|
-
const existing = byFile.get(a.file);
|
|
275
|
-
if (existing) {
|
|
276
|
-
existing.push(a);
|
|
277
|
-
}
|
|
278
|
-
else {
|
|
279
|
-
byFile.set(a.file, [a]);
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
const violations = [];
|
|
283
|
-
// Process each file once — batch all applicable queries per file
|
|
284
|
-
for (const [file, fileAdditions] of byFile) {
|
|
285
|
-
// Check language support
|
|
286
|
-
const ext = path.extname(file);
|
|
287
|
-
if (!extensionToLanguage(ext))
|
|
288
|
-
continue;
|
|
289
|
-
// Collect added line numbers, filtering suppressed lines
|
|
290
|
-
const addedLineNumbers = [];
|
|
291
|
-
for (const addition of fileAdditions) {
|
|
292
|
-
if (addition.astContext && addition.astContext !== 'code')
|
|
293
|
-
continue;
|
|
294
|
-
if (isSuppressed(addition.line, addition.precedingLine))
|
|
295
|
-
continue;
|
|
296
|
-
addedLineNumbers.push(addition.lineNumber);
|
|
297
|
-
}
|
|
298
|
-
if (addedLineNumbers.length === 0)
|
|
299
|
-
continue;
|
|
300
|
-
// ── Tree-sitter S-expression rules ────────────────
|
|
301
|
-
if (treeSitterRules.length > 0) {
|
|
302
|
-
const applicableTreeSitter = treeSitterRules.filter((rule) => {
|
|
303
|
-
if (rule.fileGlobs && rule.fileGlobs.length > 0) {
|
|
304
|
-
return fileMatchesGlobs(file, rule.fileGlobs);
|
|
305
|
-
}
|
|
306
|
-
return true;
|
|
307
|
-
});
|
|
308
|
-
if (applicableTreeSitter.length > 0) {
|
|
309
|
-
// Batch: parse file once, run all queries against the cached tree
|
|
310
|
-
const queries = applicableTreeSitter.map((rule) => ({
|
|
311
|
-
astQuery: rule.astQuery,
|
|
312
|
-
addedLineNumbers,
|
|
313
|
-
}));
|
|
314
|
-
const batchResults = await matchAstQueriesBatch(file, queries, cwd);
|
|
315
|
-
// Map results back to violations
|
|
316
|
-
for (const rule of applicableTreeSitter) {
|
|
317
|
-
const matches = batchResults.get(rule.astQuery) ?? [];
|
|
318
|
-
for (const match of matches) {
|
|
319
|
-
const addition = fileAdditions.find((a) => a.lineNumber === match.lineNumber);
|
|
320
|
-
if (addition && isSuppressed(addition.line, addition.precedingLine)) {
|
|
321
|
-
onRuleEvent?.('suppress', rule.lessonHash);
|
|
322
|
-
continue;
|
|
323
|
-
}
|
|
324
|
-
onRuleEvent?.('trigger', rule.lessonHash);
|
|
325
|
-
violations.push({
|
|
326
|
-
rule,
|
|
327
|
-
file,
|
|
328
|
-
line: match.lineText,
|
|
329
|
-
lineNumber: match.lineNumber,
|
|
330
|
-
});
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
// ── ast-grep structural pattern rules ─────────────
|
|
336
|
-
if (astGrepRules.length > 0) {
|
|
337
|
-
const applicableAstGrep = astGrepRules.filter((rule) => {
|
|
338
|
-
if (rule.fileGlobs && rule.fileGlobs.length > 0) {
|
|
339
|
-
return fileMatchesGlobs(file, rule.fileGlobs);
|
|
340
|
-
}
|
|
341
|
-
return true;
|
|
342
|
-
});
|
|
343
|
-
if (applicableAstGrep.length > 0) {
|
|
344
|
-
// Read file content once for all ast-grep rules on this file
|
|
345
|
-
let content = null;
|
|
346
|
-
try {
|
|
347
|
-
const fullPath = path.resolve(cwd, file);
|
|
348
|
-
content = await fs.promises.readFile(fullPath, 'utf-8');
|
|
349
|
-
}
|
|
350
|
-
catch {
|
|
351
|
-
// Fall through — content stays null
|
|
352
|
-
}
|
|
353
|
-
if (content) {
|
|
354
|
-
// Batch: parse file once, run all patterns
|
|
355
|
-
const queries = applicableAstGrep.map((rule) => ({
|
|
356
|
-
rule: rule.astGrepPattern,
|
|
357
|
-
addedLineNumbers,
|
|
358
|
-
}));
|
|
359
|
-
const batchResults = matchAstGrepPatternsBatch(content, ext, queries);
|
|
360
|
-
for (let i = 0; i < applicableAstGrep.length; i++) {
|
|
361
|
-
const rule = applicableAstGrep[i];
|
|
362
|
-
const matches = batchResults[i] ?? [];
|
|
363
|
-
for (const match of matches) {
|
|
364
|
-
const addition = fileAdditions.find((a) => a.lineNumber === match.lineNumber);
|
|
365
|
-
if (addition && isSuppressed(addition.line, addition.precedingLine)) {
|
|
366
|
-
onRuleEvent?.('suppress', rule.lessonHash);
|
|
367
|
-
continue;
|
|
368
|
-
}
|
|
369
|
-
onRuleEvent?.('trigger', rule.lessonHash);
|
|
370
|
-
violations.push({
|
|
371
|
-
rule,
|
|
372
|
-
file,
|
|
373
|
-
line: match.lineText,
|
|
374
|
-
lineNumber: match.lineNumber,
|
|
375
|
-
});
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
return violations;
|
|
383
|
-
}
|
|
384
|
-
/**
|
|
385
|
-
* Apply compiled rules against added lines from a diff.
|
|
386
|
-
* Returns all violations found.
|
|
387
|
-
* @param excludeFiles — file paths to skip (e.g., compiled-rules.json to avoid self-matches)
|
|
388
|
-
*/
|
|
389
|
-
export function applyRules(rules, diff, excludeFiles) {
|
|
390
|
-
let additions = extractAddedLines(diff);
|
|
391
|
-
if (additions.length === 0 || rules.length === 0)
|
|
392
|
-
return [];
|
|
393
|
-
if (excludeFiles && excludeFiles.length > 0) {
|
|
394
|
-
const excluded = new Set(excludeFiles);
|
|
395
|
-
additions = additions.filter((a) => !excluded.has(a.file));
|
|
396
|
-
}
|
|
397
|
-
return applyRulesToAdditions(rules, additions);
|
|
398
|
-
}
|
|
399
|
-
// ─── File I/O ────────────────────────────────────────
|
|
46
|
+
// ─── File I/O ───────────────────────────────────────
|
|
400
47
|
/** Load compiled rules from a JSON file. Returns empty array if file missing. */
|
|
401
48
|
export function loadCompiledRules(rulesPath, onWarn) {
|
|
402
49
|
if (!fs.existsSync(rulesPath))
|
|
@@ -452,17 +99,7 @@ export function saveCompiledRulesFile(rulesPath, data) {
|
|
|
452
99
|
mode: 0o644,
|
|
453
100
|
});
|
|
454
101
|
}
|
|
455
|
-
// ─── LLM response parsing
|
|
456
|
-
/** Schema for the structured JSON the LLM returns when compiling a lesson. */
|
|
457
|
-
export const CompilerOutputSchema = z.object({
|
|
458
|
-
compilable: z.boolean(),
|
|
459
|
-
pattern: z.string().optional(),
|
|
460
|
-
message: z.string().optional(),
|
|
461
|
-
fileGlobs: z.array(z.string()).optional(),
|
|
462
|
-
engine: z.enum(['regex', 'ast', 'ast-grep']).optional(),
|
|
463
|
-
astQuery: z.string().optional(),
|
|
464
|
-
astGrepPattern: z.union([z.string(), z.record(z.unknown())]).optional(),
|
|
465
|
-
});
|
|
102
|
+
// ─── LLM response parsing ──────────────────────────
|
|
466
103
|
/**
|
|
467
104
|
* Parse the LLM's compilation response. Extracts JSON from the response text,
|
|
468
105
|
* validates it, and returns the structured output or null if unparseable.
|
package/dist/compiler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,wDAAwD;AAExD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,0EAA0E;IAC1E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,+DAA+D;IAC/D,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,sDAAsD;IACtD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,sEAAsE;IACtE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,6IAA6I;IAC7I,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAC5C,qEAAqE;IACrE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,gGAAgG;IAChG,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACvE,mDAAmD;IACnD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,iFAAiF;IACjF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,kGAAkG;IAClG,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzC,mDAAmD;IACnD,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjF,yEAAyE;IACzE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;CAClD,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;IAClC,2FAA2F;IAC3F,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC;AAiBH,wDAAwD;AAExD,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B,0EAA0E;AAC1E,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,IAAY;IACtD,OAAO,MAAM;SACV,UAAU,CAAC,QAAQ,CAAC;SACpB,MAAM,CAAC,GAAG,OAAO,KAAK,IAAI,EAAE,CAAC;SAC7B,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;AAC9B,CAAC;AASD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,IAAI,CAAC;QACH,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,8BAA8B,EAAE,CAAC;IAClE,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAiBD;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,SAAS,GAAmB,EAAE,CAAC;IACrC,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,eAAe,GAAkB,IAAI,CAAC;IAC1C,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,oCAAoC;QACpC,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,UAAU,GAAG,KAAK,CAAC;YACnB,SAAS;QACX,CAAC;QAED,qEAAqE;QACrE,iEAAiE;QACjE,yEAAyE;QACzE,+DAA+D;QAC/D,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe;YAChD,iEAAiE;YACjE,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvD,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC;YACD,0DAA0D;YAC1D,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YACvE,eAAe,GAAG,IAAI,CAAC;YACvB,SAAS;QACX,CAAC;QAED,sDAAsD;QACtD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC7D,IAAI,SAAS,EAAE,CAAC;YACd,UAAU,GAAG,IAAI,CAAC;YAClB,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,oCAAoC;YAC/E,eAAe,GAAG,IAAI,CAAC;YACvB,SAAS;QACX,CAAC;QAED,2BAA2B;QAC3B,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9D,SAAS;QACX,CAAC;QAED,oCAAoC;QACpC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAC;YACV,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB;YAC5D,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,WAAW;gBACjB,UAAU,EAAE,OAAO;gBACnB,aAAa,EAAE,eAAe;aAC/B,CAAC,CAAC;YACH,eAAe,GAAG,WAAW,CAAC;QAChC,CAAC;aAAM,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,0EAA0E;QAC5E,CAAC;aAAM,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,6BAA6B;YAC7B,OAAO,EAAE,CAAC;YACV,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;QACD,2DAA2D;IAC7D,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,wDAAwD;AAExD,uDAAuD;AAEvD;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,IAAY;IACxD,uBAAuB;IACvB,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAChD,wCAAwC;IACxC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,8DAA8D;IAC9D,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,6DAA6D;IAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe;QACxD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACvD,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjD,OAAO,MAAM,KAAK,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IACD,gEAAgE;IAChE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjC,OAAO,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IAC7C,CAAC;IACD,4EAA4E;IAC5E,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAE1C,IAAI,aAAa,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB;QAC7D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACvD,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjD,sEAAsE;QACtE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC;IAED,8CAA8C;IAC9C,OAAO,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB,EAAE,KAAe;IACzD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/E,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9F,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;IAErE,OAAO,aAAa,IAAI,CAAC,aAAa,CAAC;AACzC,CAAC;AAED,wDAAwD;AAExD,uDAAuD;AAEvD,MAAM,eAAe,GAAG,cAAc,CAAC;AACvC,MAAM,yBAAyB,GAAG,wBAAwB,CAAC;AAE3D;;;;;;;GAOG;AACH,SAAS,YAAY,CAAC,IAAY,EAAE,aAA4B;IAC9D,6EAA6E;IAC7E,2DAA2D;IAC3D,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhD,gFAAgF;IAChF,IAAI,aAAa,IAAI,IAAI,IAAI,aAAa,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5F,OAAO,KAAK,CAAC;AACf,CAAC;AAKD;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAqB,EACrB,SAAyB,EACzB,WAA+B;IAE/B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAE5D,MAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,EAAU,CAAC;QACf,IAAI,CAAC;YACH,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;YACpE,SAAS;QACX,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,oDAAoD;YACpD,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,KAAK,MAAM;gBAAE,SAAS;YAEpE,yDAAyD;YACzD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBAAE,SAAS;YACjE,CAAC;YAED,0CAA0C;YAC1C,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;gBACxD,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC3B,WAAW,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC7C,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,WAAW,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC1C,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI;oBACJ,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,UAAU,EAAE,QAAQ,CAAC,UAAU;iBAChC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAAqB,EACrB,SAAyB,EACzB,GAAW,EACX,WAA+B;IAE/B,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC9E,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;IACtF,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1F,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,0BAA0B;IAC1B,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;IACjD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,iEAAiE;IACjE,KAAK,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,MAAM,EAAE,CAAC;QAC3C,yBAAyB;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;YAAE,SAAS;QAExC,yDAAyD;QACzD,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,KAAK,MAAM;gBAAE,SAAS;YACpE,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC;gBAAE,SAAS;YAClE,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAE5C,qDAAqD;QACrD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,oBAAoB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC3D,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChD,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAChD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;YAEH,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,kEAAkE;gBAClE,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAClD,QAAQ,EAAE,IAAI,CAAC,QAAS;oBACxB,gBAAgB;iBACjB,CAAC,CAAC,CAAC;gBAEJ,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;gBAEpE,iCAAiC;gBACjC,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE,CAAC;oBACxC,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,QAAS,CAAC,IAAI,EAAE,CAAC;oBAEvD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC5B,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC;wBAC9E,IAAI,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;4BACpE,WAAW,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;4BAC3C,SAAS;wBACX,CAAC;wBAED,WAAW,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;wBAC1C,UAAU,CAAC,IAAI,CAAC;4BACd,IAAI;4BACJ,IAAI;4BACJ,IAAI,EAAE,KAAK,CAAC,QAAQ;4BACpB,UAAU,EAAE,KAAK,CAAC,UAAU;yBAC7B,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,qDAAqD;QACrD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,iBAAiB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;gBACrD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChD,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAChD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;YAEH,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjC,6DAA6D;gBAC7D,IAAI,OAAO,GAAkB,IAAI,CAAC;gBAClC,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBACzC,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC1D,CAAC;gBAAC,MAAM,CAAC;oBACP,oCAAoC;gBACtC,CAAC;gBAED,IAAI,OAAO,EAAE,CAAC;oBACZ,2CAA2C;oBAC3C,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBAC/C,IAAI,EAAE,IAAI,CAAC,cAA4D;wBACvE,gBAAgB;qBACjB,CAAC,CAAC,CAAC;oBACJ,MAAM,YAAY,GAAG,yBAAyB,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;oBAEtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBAClD,MAAM,IAAI,GAAG,iBAAiB,CAAC,CAAC,CAAE,CAAC;wBACnC,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;wBAEtC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;4BAC5B,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC;4BAC9E,IAAI,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;gCACpE,WAAW,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gCAC3C,SAAS;4BACX,CAAC;4BAED,WAAW,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;4BAC1C,UAAU,CAAC,IAAI,CAAC;gCACd,IAAI;gCACJ,IAAI;gCACJ,IAAI,EAAE,KAAK,CAAC,QAAQ;gCACpB,UAAU,EAAE,KAAK,CAAC,UAAU;6BAC7B,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACxB,KAAqB,EACrB,IAAY,EACZ,YAAuB;IAEvB,IAAI,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAE5D,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QACvC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACjD,CAAC;AAED,wDAAwD;AAExD,iFAAiF;AACjF,MAAM,UAAU,iBAAiB,CAC/B,SAAiB,EACjB,MAA8B;IAE9B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IAEzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QACxC,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnD,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QACxF,IAAI,GAAG,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,eAAe,CACvB,gCAAgC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC7E,2DAA2D,CAC5D,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,CAAC,kCAAkC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/F,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,qBAAqB,CACnC,SAAiB,EACjB,MAA8B;IAE9B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;IAEnF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QACxC,OAAO,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;QACtD,CAAC;QACD,IAAI,GAAG,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,eAAe,CACvB,gCAAgC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC7E,2DAA2D,CAC5D,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,CAAC,kCAAkC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/F,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;IACtD,CAAC;AACH,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,iBAAiB,CAAC,SAAiB,EAAE,KAAqB;IACxE,MAAM,IAAI,GAAsB,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;IACtD,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;QAChE,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;AACL,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,qBAAqB,CAAC,SAAiB,EAAE,IAAuB;IAC9E,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;QAChE,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;AACL,CAAC;AAED,uDAAuD;AAEvD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;IACvD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACxE,CAAC,CAAC;AAIH;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACpD,4EAA4E;IAC5E,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAE5D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QACjC,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { DiffAddition } from './compiler-schema.js';
|
|
2
|
+
/**
|
|
3
|
+
* Extract added lines from a unified diff.
|
|
4
|
+
* Returns only lines that start with `+` (excluding `+++` file headers).
|
|
5
|
+
* Tracks the preceding line content (context or added) for suppression support.
|
|
6
|
+
*/
|
|
7
|
+
export declare function extractAddedLines(diff: string): DiffAddition[];
|
|
8
|
+
//# sourceMappingURL=diff-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-parser.d.ts","sourceRoot":"","sources":["../src/diff-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIzD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAkE9D"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// ─── Diff parsing ───────────────────────────────────
|
|
2
|
+
/**
|
|
3
|
+
* Extract added lines from a unified diff.
|
|
4
|
+
* Returns only lines that start with `+` (excluding `+++` file headers).
|
|
5
|
+
* Tracks the preceding line content (context or added) for suppression support.
|
|
6
|
+
*/
|
|
7
|
+
export function extractAddedLines(diff) {
|
|
8
|
+
const additions = [];
|
|
9
|
+
let currentFile = '';
|
|
10
|
+
let lineNum = 0;
|
|
11
|
+
let prevLineContent = null;
|
|
12
|
+
let insideHunk = false;
|
|
13
|
+
for (const rawLine of diff.split('\n')) {
|
|
14
|
+
// New file block — reset hunk state
|
|
15
|
+
if (rawLine.startsWith('diff ')) {
|
|
16
|
+
insideHunk = false;
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
// Track current file from diff headers — only BEFORE the first hunk.
|
|
20
|
+
// Inside a hunk, a line starting with +++ is an added line whose
|
|
21
|
+
// content happens to start with ++ (e.g., template literal test fixtures
|
|
22
|
+
// containing embedded diff headers like "+++ b/some-file.ts").
|
|
23
|
+
if (!insideHunk && rawLine.startsWith('+++')) {
|
|
24
|
+
let pathPart = rawLine.slice(4); // strip "+++ "
|
|
25
|
+
// Strip surrounding quotes (git adds them for paths with spaces)
|
|
26
|
+
if (pathPart.startsWith('"') && pathPart.endsWith('"')) {
|
|
27
|
+
pathPart = pathPart.slice(1, -1);
|
|
28
|
+
}
|
|
29
|
+
// Strip the "b/" prefix git uses for the destination file
|
|
30
|
+
currentFile = pathPart.startsWith('b/') ? pathPart.slice(2) : pathPart;
|
|
31
|
+
prevLineContent = null;
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
// Parse hunk header for line numbers: @@ -X,Y +Z,W @@
|
|
35
|
+
const hunkMatch = rawLine.match(/^@@ -\d+(?:,\d+)? \+(\d+)/);
|
|
36
|
+
if (hunkMatch) {
|
|
37
|
+
insideHunk = true;
|
|
38
|
+
lineNum = parseInt(hunkMatch[1], 10) - 1; // will be incremented on first line
|
|
39
|
+
prevLineContent = null;
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
// Skip diff metadata lines
|
|
43
|
+
if (rawLine.startsWith('---') || rawLine.startsWith('index ')) {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
// Count lines for position tracking
|
|
47
|
+
if (rawLine.startsWith('+')) {
|
|
48
|
+
lineNum++;
|
|
49
|
+
const lineContent = rawLine.slice(1); // strip the leading +
|
|
50
|
+
additions.push({
|
|
51
|
+
file: currentFile,
|
|
52
|
+
line: lineContent,
|
|
53
|
+
lineNumber: lineNum,
|
|
54
|
+
precedingLine: prevLineContent,
|
|
55
|
+
});
|
|
56
|
+
prevLineContent = lineContent;
|
|
57
|
+
}
|
|
58
|
+
else if (rawLine.startsWith('-')) {
|
|
59
|
+
// Deleted line — NOT in new file, don't update prevLineContent or lineNum
|
|
60
|
+
}
|
|
61
|
+
else if (rawLine.startsWith(' ')) {
|
|
62
|
+
// Context line — in new file
|
|
63
|
+
lineNum++;
|
|
64
|
+
prevLineContent = rawLine.slice(1);
|
|
65
|
+
}
|
|
66
|
+
// Ignore other lines (e.g., '')
|
|
67
|
+
}
|
|
68
|
+
return additions;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=diff-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-parser.js","sourceRoot":"","sources":["../src/diff-parser.ts"],"names":[],"mappings":"AAEA,uDAAuD;AAEvD;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,SAAS,GAAmB,EAAE,CAAC;IACrC,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,eAAe,GAAkB,IAAI,CAAC;IAC1C,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,oCAAoC;QACpC,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,UAAU,GAAG,KAAK,CAAC;YACnB,SAAS;QACX,CAAC;QAED,qEAAqE;QACrE,iEAAiE;QACjE,yEAAyE;QACzE,+DAA+D;QAC/D,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe;YAChD,iEAAiE;YACjE,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvD,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC;YACD,0DAA0D;YAC1D,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YACvE,eAAe,GAAG,IAAI,CAAC;YACvB,SAAS;QACX,CAAC;QAED,sDAAsD;QACtD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC7D,IAAI,SAAS,EAAE,CAAC;YACd,UAAU,GAAG,IAAI,CAAC;YAClB,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,oCAAoC;YAC/E,eAAe,GAAG,IAAI,CAAC;YACvB,SAAS;QACX,CAAC;QAED,2BAA2B;QAC3B,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9D,SAAS;QACX,CAAC;QAED,oCAAoC;QACpC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAC;YACV,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB;YAC5D,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,WAAW;gBACjB,UAAU,EAAE,OAAO;gBACnB,aAAa,EAAE,eAAe;aAC/B,CAAC,CAAC;YACH,eAAe,GAAG,WAAW,CAAC;QAChC,CAAC;aAAM,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,0EAA0E;QAC5E,CAAC;aAAM,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,6BAA6B;YAC7B,OAAO,EAAE,CAAC;YACV,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;QACD,2DAA2D;IAC7D,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedder.d.ts","sourceRoot":"","sources":["../../src/embedders/embedder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"embedder.d.ts","sourceRoot":"","sources":["../../src/embedders/embedder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAI7D;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,8DAA8D;IAC9D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;CAC7C;AA2CD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,iBAAiB,EACzB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC7B,QAAQ,CAOV"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TotemConfigError } from '../errors.js';
|
|
1
2
|
import { OllamaEmbedder } from './ollama-embedder.js';
|
|
2
3
|
const OLLAMA_DEFAULTS = {
|
|
3
4
|
model: 'nomic-embed-text',
|
|
@@ -32,7 +33,7 @@ async function tryBuildEmbedder(config) {
|
|
|
32
33
|
const { GeminiEmbedder } = await import('./gemini-embedder.js');
|
|
33
34
|
return new GeminiEmbedder(config.model, config.dimensions);
|
|
34
35
|
}
|
|
35
|
-
throw new
|
|
36
|
+
throw new TotemConfigError(`Unknown embedding provider: ${config.provider}`, "Check totem.config.ts — valid providers: 'openai', 'gemini', 'ollama'.", 'CONFIG_INVALID');
|
|
36
37
|
}
|
|
37
38
|
/**
|
|
38
39
|
* Create an embedder from config. If the configured provider's SDK or API key
|
|
@@ -84,12 +85,7 @@ class LazyEmbedder {
|
|
|
84
85
|
`[Totem] Falling back to Ollama (${OLLAMA_DEFAULTS.model})...`);
|
|
85
86
|
const available = await isOllamaAvailable();
|
|
86
87
|
if (!available) {
|
|
87
|
-
throw new
|
|
88
|
-
'The configured provider failed and Ollama is not running.\n' +
|
|
89
|
-
'Either:\n' +
|
|
90
|
-
' 1. Install the SDK and set the API key for your configured provider\n' +
|
|
91
|
-
' 2. Install and start Ollama: https://ollama.com\n' +
|
|
92
|
-
" 3. Set provider: 'ollama' in totem.config.ts embedding config");
|
|
88
|
+
throw new TotemConfigError('No embedding provider available. The configured provider failed and Ollama is not running.', "Either: (1) Install the SDK and set the API key for your configured provider, (2) Install and start Ollama: https://ollama.com, or (3) Set provider: 'ollama' in totem.config.ts.", 'CONFIG_MISSING');
|
|
93
89
|
}
|
|
94
90
|
this.warn(`[Totem] Using Ollama fallback embedder (${OLLAMA_DEFAULTS.model}, ${OLLAMA_DEFAULTS.dimensions}d).\n` +
|
|
95
91
|
'[Totem] If your index was built with a different provider, run `totem sync --full` to rebuild.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedder.js","sourceRoot":"","sources":["../../src/embedders/embedder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAgBtD,MAAM,eAAe,GAAG;IACtB,KAAK,EAAE,kBAAkB;IACzB,OAAO,EAAE,wBAAwB;IACjC,UAAU,EAAE,GAAG;CAChB,CAAC;AAEF;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,UAAkB,eAAe,CAAC,OAAO;IACxE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,WAAW,EAAE;YAClD,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,gBAAgB,CAAC,MAAyB;IACvD,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAChE,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAChE,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"embedder.js","sourceRoot":"","sources":["../../src/embedders/embedder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-embedder.d.ts","sourceRoot":"","sources":["../../src/embedders/gemini-embedder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gemini-embedder.d.ts","sourceRoot":"","sources":["../../src/embedders/gemini-embedder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AA4D9C;;;GAGG;AACH,qBAAa,cAAe,YAAW,QAAQ;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAS;gBAEX,KAAK,GAAE,MAAsB,EAAE,UAAU,CAAC,EAAE,MAAM;IAgBxD,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAiBnC,cAAc;CA8C7B"}
|