@vybestack/llxprt-code-tools 0.10.0 → 0.11.0-nightly.260727.c4abf5792
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/src/index.d.ts +2 -0
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/tools/ast-edit/ast-edit-invocation.d.ts +1 -0
- package/dist/src/tools/ast-edit/ast-edit-invocation.js +38 -11
- package/dist/src/tools/ast-edit/ast-edit-invocation.js.map +1 -1
- package/dist/src/tools/ast-edit/edit-calculator.d.ts +6 -3
- package/dist/src/tools/ast-edit/edit-calculator.js +24 -6
- package/dist/src/tools/ast-edit/edit-calculator.js.map +1 -1
- package/dist/src/tools/ast-edit/validation-categorizer.d.ts +58 -0
- package/dist/src/tools/ast-edit/validation-categorizer.js +207 -0
- package/dist/src/tools/ast-edit/validation-categorizer.js.map +1 -0
- package/dist/src/tools/tool-registry.js +6 -43
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/utils/fileUtils.js +8 -1
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/package.json +151 -1
- package/src/index.ts +10 -0
- package/src/tools/ast-edit/ast-edit-invocation.ts +80 -10
- package/src/tools/ast-edit/edit-calculator.ts +26 -6
- package/src/tools/ast-edit/validation-categorizer.ts +263 -0
- package/src/tools/tool-registry.ts +13 -80
- package/src/utils/fileUtils.ts +11 -1
package/dist/src/index.d.ts
CHANGED
|
@@ -56,6 +56,7 @@ export { TodoReminderService, type TodoStateChange, } from './utils/todoReminder
|
|
|
56
56
|
export { TodoContextTracker } from './utils/todoContextTracker.js';
|
|
57
57
|
export type { ModifiableDeclarativeTool, ModifyContext, ModifyResult, ModifyContentOverrides, } from './tools/modifiable-tool.js';
|
|
58
58
|
export { ShellTool, ShellToolInvocation, OUTPUT_UPDATE_INTERVAL_MS, type ShellToolParams, } from './tools/shell.js';
|
|
59
|
+
export { buildCommandToExecute } from './tools/shell-helpers.js';
|
|
59
60
|
export { DISCOVERED_TOOL_PREFIX, ToolRegistry, DiscoveredTool, } from './tools/tool-registry.js';
|
|
60
61
|
export { ToolKeyStorageFacade } from './utils/tool-key-storage-facade.js';
|
|
61
62
|
export { CheckAsyncTasksTool, type CheckAsyncTasksParams, type CheckAsyncTasksToolDependencies, } from './tools/check-async-tasks.js';
|
|
@@ -87,4 +88,5 @@ export { ASTConfig } from './tools/ast-edit/ast-config.js';
|
|
|
87
88
|
export { ASTQueryExtractor } from './tools/ast-edit/ast-query-extractor.js';
|
|
88
89
|
export { RepositoryContextProvider } from './tools/ast-edit/repository-context-provider.js';
|
|
89
90
|
export { validateASTSyntax } from './tools/ast-edit/edit-calculator.js';
|
|
91
|
+
export { summarizeAstValidation, computeLineDelta, findEditStartLine, extractErrorLineNumber, formatValidationLineLabel, type AstValidationResult, type AstValidationSummary, } from './tools/ast-edit/validation-categorizer.js';
|
|
90
92
|
export { detectLanguage, extractImports, } from './tools/ast-edit/language-analysis.js';
|
package/dist/src/index.js
CHANGED
|
@@ -37,6 +37,7 @@ export { formatTodoListForDisplay, groupToolCalls, } from './utils/todoFormatter
|
|
|
37
37
|
export { TodoReminderService, } from './utils/todoReminderService.js';
|
|
38
38
|
export { TodoContextTracker } from './utils/todoContextTracker.js';
|
|
39
39
|
export { ShellTool, ShellToolInvocation, OUTPUT_UPDATE_INTERVAL_MS, } from './tools/shell.js';
|
|
40
|
+
export { buildCommandToExecute } from './tools/shell-helpers.js';
|
|
40
41
|
export { DISCOVERED_TOOL_PREFIX, ToolRegistry, DiscoveredTool, } from './tools/tool-registry.js';
|
|
41
42
|
export { ToolKeyStorageFacade } from './utils/tool-key-storage-facade.js';
|
|
42
43
|
export { CheckAsyncTasksTool, } from './tools/check-async-tasks.js';
|
|
@@ -68,5 +69,6 @@ export { ASTConfig } from './tools/ast-edit/ast-config.js';
|
|
|
68
69
|
export { ASTQueryExtractor } from './tools/ast-edit/ast-query-extractor.js';
|
|
69
70
|
export { RepositoryContextProvider } from './tools/ast-edit/repository-context-provider.js';
|
|
70
71
|
export { validateASTSyntax } from './tools/ast-edit/edit-calculator.js';
|
|
72
|
+
export { summarizeAstValidation, computeLineDelta, findEditStartLine, extractErrorLineNumber, formatValidationLineLabel, } from './tools/ast-edit/validation-categorizer.js';
|
|
71
73
|
export { detectLanguage, extractImports, } from './tools/ast-edit/language-analysis.js';
|
|
72
74
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,7 @@ export declare class ASTEditToolInvocation implements ToolInvocation<ASTEditTool
|
|
|
31
31
|
getDescription(): string;
|
|
32
32
|
execute(signal: AbortSignal, _updateOutput?: (output: string | AnsiOutput) => void, _terminalColumns?: number, _terminalRows?: number, _setPidCallback?: (pid: number) => void): Promise<ToolResult>;
|
|
33
33
|
private executePreview;
|
|
34
|
+
private computeValidationContext;
|
|
34
35
|
private buildPreviewLlmContent;
|
|
35
36
|
private formatConnectedFilesContext;
|
|
36
37
|
private formatRelatedSymbols;
|
|
@@ -18,6 +18,7 @@ import { collectLspDiagnosticsBlock } from '../../utils/lsp-diagnostics-helper.j
|
|
|
18
18
|
import { ensureParentDirectoriesExist } from '../../utils/ensure-dirs.js';
|
|
19
19
|
import { ASTConfig } from './ast-config.js';
|
|
20
20
|
import { calculateEdit, validateASTSyntax, getFileLastModified, } from './edit-calculator.js';
|
|
21
|
+
import { summarizeAstValidation, computeLineDelta, findEditStartLine, formatValidationLineLabel, } from './validation-categorizer.js';
|
|
21
22
|
function normalizeSeverity(severity) {
|
|
22
23
|
if (typeof severity !== 'number') {
|
|
23
24
|
return String(severity ?? 'error');
|
|
@@ -98,6 +99,7 @@ export class ASTEditToolInvocation {
|
|
|
98
99
|
ideConfirmation,
|
|
99
100
|
metadata: {
|
|
100
101
|
astValidation: editData.astValidation,
|
|
102
|
+
preEditValidation: editData.preEditValidation,
|
|
101
103
|
fileFreshness: editData.fileFreshness,
|
|
102
104
|
},
|
|
103
105
|
};
|
|
@@ -143,17 +145,16 @@ export class ASTEditToolInvocation {
|
|
|
143
145
|
const currentMtime = editData.fileFreshness ?? null;
|
|
144
146
|
const workspaceRoot = this.host.getTargetDir();
|
|
145
147
|
const enhancedContext = await this.contextCollector.collectEnhancedContext(this.params.file_path, currentContent, workspaceRoot);
|
|
146
|
-
const astValidation = editData
|
|
147
|
-
this.validateASTSyntax(this.params.file_path, editData.newContent);
|
|
148
|
+
const { astValidation, preEditValidation, lineDelta, editStartLine } = this.computeValidationContext(editData);
|
|
148
149
|
const fileName = path.basename(this.params.file_path);
|
|
149
150
|
const fileDiff = Diff.createPatch(fileName, currentContent, editData.newContent, 'Current', 'Proposed', DEFAULT_CREATE_PATCH_OPTIONS);
|
|
150
|
-
const editPreviewLlmContent = this.buildPreviewLlmContent(enhancedContext, astValidation, currentMtime, workspaceRoot);
|
|
151
|
+
const editPreviewLlmContent = this.buildPreviewLlmContent(enhancedContext, astValidation, preEditValidation, lineDelta, editStartLine, currentMtime, workspaceRoot);
|
|
151
152
|
const returnDisplay = {
|
|
152
153
|
fileDiff,
|
|
153
154
|
fileName,
|
|
154
155
|
originalContent: currentContent,
|
|
155
156
|
newContent: editData.newContent,
|
|
156
|
-
metadata: { astValidation, currentMtime },
|
|
157
|
+
metadata: { astValidation, preEditValidation, currentMtime },
|
|
157
158
|
};
|
|
158
159
|
return {
|
|
159
160
|
llmContent: editPreviewLlmContent,
|
|
@@ -172,13 +173,31 @@ export class ASTEditToolInvocation {
|
|
|
172
173
|
};
|
|
173
174
|
}
|
|
174
175
|
}
|
|
175
|
-
|
|
176
|
+
computeValidationContext(editData) {
|
|
177
|
+
const astValidation = editData.astValidation ??
|
|
178
|
+
this.validateASTSyntax(this.params.file_path, editData.newContent);
|
|
179
|
+
const preEditValidation = editData.preEditValidation ??
|
|
180
|
+
(editData.currentContent !== null
|
|
181
|
+
? this.validateASTSyntax(this.params.file_path, editData.currentContent)
|
|
182
|
+
: undefined);
|
|
183
|
+
const lineDelta = computeLineDelta(this.params.old_string, this.params.new_string);
|
|
184
|
+
const editStartLine = findEditStartLine(editData.currentContent, this.params.old_string);
|
|
185
|
+
return { astValidation, preEditValidation, lineDelta, editStartLine };
|
|
186
|
+
}
|
|
187
|
+
buildPreviewLlmContent(enhancedContext, astValidation, preEditValidation, lineDelta, editStartLine, currentMtime, workspaceRoot) {
|
|
188
|
+
const summary = summarizeAstValidation(preEditValidation, astValidation, lineDelta, editStartLine);
|
|
176
189
|
return [
|
|
177
190
|
`LLXPRT EDIT PREVIEW: ${this.params.file_path}`,
|
|
178
191
|
`- Context: ${enhancedContext.language} file with ${enhancedContext.declarations.length} declarations`,
|
|
179
192
|
`- Functions: ${enhancedContext.languageContext.functions.length}`,
|
|
180
193
|
`- Classes: ${enhancedContext.languageContext.classes.length}`,
|
|
181
|
-
`- AST validation: ${
|
|
194
|
+
`- AST validation: ${summary.label}`,
|
|
195
|
+
preEditValidation && !preEditValidation.valid
|
|
196
|
+
? `- Pre-existing syntax errors: Yes${formatValidationLineLabel(preEditValidation.errors)}`
|
|
197
|
+
: '',
|
|
198
|
+
!astValidation.valid
|
|
199
|
+
? `- AST errors: ${astValidation.errors.join(', ')}`
|
|
200
|
+
: '',
|
|
182
201
|
`- Relevant snippets: ${enhancedContext.relevantSnippets.length} found`,
|
|
183
202
|
enhancedContext.repositoryContext
|
|
184
203
|
? `- Repository: ${enhancedContext.repositoryContext.gitUrl}`
|
|
@@ -187,9 +206,6 @@ export class ASTEditToolInvocation {
|
|
|
187
206
|
? `- Related files: ${enhancedContext.relatedFiles.length}`
|
|
188
207
|
: '',
|
|
189
208
|
this.formatConnectedFilesContext(enhancedContext, workspaceRoot),
|
|
190
|
-
!astValidation.valid
|
|
191
|
-
? `- AST errors: ${astValidation.errors.join(', ')}`
|
|
192
|
-
: '',
|
|
193
209
|
currentMtime !== null ? `- Timestamp: ${currentMtime}` : '',
|
|
194
210
|
'',
|
|
195
211
|
'ENHANCED CONTEXT ANALYSIS:',
|
|
@@ -274,19 +290,30 @@ export class ASTEditToolInvocation {
|
|
|
274
290
|
await fsPromises.writeFile(this.params.file_path, contentToWrite, 'utf-8');
|
|
275
291
|
const fileName = path.basename(this.params.file_path);
|
|
276
292
|
const fileDiff = Diff.createPatch(fileName, editData.currentContent ?? '', contentToWrite, 'Current', 'Applied', DEFAULT_CREATE_PATCH_OPTIONS);
|
|
293
|
+
const { astValidation, preEditValidation, lineDelta, editStartLine } = this.computeValidationContext(editData);
|
|
277
294
|
const displayResult = {
|
|
278
295
|
fileDiff,
|
|
279
296
|
fileName,
|
|
280
297
|
originalContent: editData.currentContent,
|
|
281
298
|
newContent: contentToWrite,
|
|
282
299
|
applied: true,
|
|
283
|
-
metadata: {
|
|
300
|
+
metadata: {
|
|
301
|
+
astValidation,
|
|
302
|
+
preEditValidation,
|
|
303
|
+
},
|
|
284
304
|
};
|
|
305
|
+
const summary = summarizeAstValidation(preEditValidation, astValidation, lineDelta, editStartLine);
|
|
285
306
|
const llmSuccessMessageParts = [
|
|
286
307
|
`Successfully applied edit to: ${this.params.file_path}`,
|
|
287
308
|
`- Changes: ${editData.occurrences} replacement(s) applied`,
|
|
288
|
-
`- AST validation: ${
|
|
309
|
+
`- AST validation: ${summary.label}`,
|
|
289
310
|
];
|
|
311
|
+
if (preEditValidation && !preEditValidation.valid) {
|
|
312
|
+
llmSuccessMessageParts.push(`- Pre-existing syntax errors: Yes${formatValidationLineLabel(preEditValidation.errors)}${summary.newlyIntroduced ? '' : ' (not introduced by this edit)'}`);
|
|
313
|
+
}
|
|
314
|
+
if (summary.newlyIntroduced) {
|
|
315
|
+
llmSuccessMessageParts.push(`- AST errors: ${astValidation.errors.join(', ')}`);
|
|
316
|
+
}
|
|
290
317
|
await this.appendLspDiagnostics(llmSuccessMessageParts);
|
|
291
318
|
return {
|
|
292
319
|
llmContent: llmSuccessMessageParts.join('\n\n'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast-edit-invocation.js","sourceRoot":"","sources":["../../../../src/tools/ast-edit/ast-edit-invocation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ast-edit-invocation.js","sourceRoot":"","sources":["../../../../src/tools/ast-edit/ast-edit-invocation.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,10 @@ export interface CalculatedEdit {
|
|
|
26
26
|
valid: boolean;
|
|
27
27
|
errors: string[];
|
|
28
28
|
};
|
|
29
|
+
preEditValidation?: {
|
|
30
|
+
valid: boolean;
|
|
31
|
+
errors: string[];
|
|
32
|
+
};
|
|
29
33
|
fileFreshness?: number | null;
|
|
30
34
|
}
|
|
31
35
|
/**
|
|
@@ -38,12 +42,11 @@ export interface CalculatedEdit {
|
|
|
38
42
|
*/
|
|
39
43
|
export declare function calculateEdit(params: ASTEditToolParams, host: IToolHost, _abortSignal: AbortSignal): Promise<CalculatedEdit>;
|
|
40
44
|
/**
|
|
41
|
-
*
|
|
42
|
-
* Returns 0/1 not true count, aligned with String.replace() single-replacement semantics.
|
|
45
|
+
* Returns the true number of occurrences of searchString in content.
|
|
43
46
|
*
|
|
44
47
|
* @param content - File content
|
|
45
48
|
* @param searchString - String to search for
|
|
46
|
-
* @returns 0 if not found
|
|
49
|
+
* @returns Number of occurrences (0 if not found)
|
|
47
50
|
*/
|
|
48
51
|
export declare function countOccurrences(content: string, searchString: string): number;
|
|
49
52
|
/**
|
|
@@ -36,6 +36,12 @@ export async function calculateEdit(params, host, _abortSignal) {
|
|
|
36
36
|
? applyReplacement(currentContent, normalizedOldString, normalizedNewString, isNewFile)
|
|
37
37
|
: (currentContent ?? '');
|
|
38
38
|
const noChangeError = checkNoChange(error, fileExists, currentContent, newContent, params.file_path);
|
|
39
|
+
// Validate the original (pre-edit) content so post-edit errors can be
|
|
40
|
+
// categorized as pre-existing vs newly-introduced (issue #2124).
|
|
41
|
+
// Skipped for new files where there is no prior content to baseline.
|
|
42
|
+
const preEditValidation = !noChangeError && currentContent !== null
|
|
43
|
+
? validateASTSyntax(params.file_path, currentContent)
|
|
44
|
+
: undefined;
|
|
39
45
|
let astValidation;
|
|
40
46
|
if (!noChangeError) {
|
|
41
47
|
astValidation = validateASTSyntax(params.file_path, newContent);
|
|
@@ -47,6 +53,7 @@ export async function calculateEdit(params, host, _abortSignal) {
|
|
|
47
53
|
error: noChangeError,
|
|
48
54
|
isNewFile,
|
|
49
55
|
astValidation,
|
|
56
|
+
preEditValidation,
|
|
50
57
|
fileFreshness: currentMtime,
|
|
51
58
|
};
|
|
52
59
|
}
|
|
@@ -95,6 +102,7 @@ function checkFreshness(params, currentMtime, fileExists, currentContent) {
|
|
|
95
102
|
},
|
|
96
103
|
isNewFile: false,
|
|
97
104
|
astValidation: undefined,
|
|
105
|
+
preEditValidation: undefined,
|
|
98
106
|
fileFreshness: currentMtime,
|
|
99
107
|
};
|
|
100
108
|
}
|
|
@@ -123,6 +131,13 @@ function validateEditParams(params, currentContent, fileExists, normalizedOldStr
|
|
|
123
131
|
type: ToolErrorType.EDIT_NO_OCCURRENCE_FOUND,
|
|
124
132
|
};
|
|
125
133
|
}
|
|
134
|
+
else if (occurrences > 1) {
|
|
135
|
+
error = {
|
|
136
|
+
display: `old_string appears ${occurrences} times. Include more surrounding context to target a specific occurrence.`,
|
|
137
|
+
raw: `old_string appears ${occurrences} times in ${params.file_path}. Provide more surrounding context to disambiguate.`,
|
|
138
|
+
type: ToolErrorType.EDIT_EXPECTED_OCCURRENCE_MISMATCH,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
126
141
|
else if (normalizedOldString === normalizedNewString) {
|
|
127
142
|
error = {
|
|
128
143
|
display: `No changes to apply. The old_string and new_string are identical.`,
|
|
@@ -144,19 +159,22 @@ function checkNoChange(error, fileExists, currentContent, newContent, filePath)
|
|
|
144
159
|
return error;
|
|
145
160
|
}
|
|
146
161
|
/**
|
|
147
|
-
*
|
|
148
|
-
* Returns 0/1 not true count, aligned with String.replace() single-replacement semantics.
|
|
162
|
+
* Returns the true number of occurrences of searchString in content.
|
|
149
163
|
*
|
|
150
164
|
* @param content - File content
|
|
151
165
|
* @param searchString - String to search for
|
|
152
|
-
* @returns 0 if not found
|
|
166
|
+
* @returns Number of occurrences (0 if not found)
|
|
153
167
|
*/
|
|
154
168
|
export function countOccurrences(content, searchString) {
|
|
155
169
|
if (!searchString)
|
|
156
170
|
return 0;
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
171
|
+
let count = 0;
|
|
172
|
+
let idx = content.indexOf(searchString);
|
|
173
|
+
while (idx !== -1) {
|
|
174
|
+
count++;
|
|
175
|
+
idx = content.indexOf(searchString, idx + searchString.length);
|
|
176
|
+
}
|
|
177
|
+
return count;
|
|
160
178
|
}
|
|
161
179
|
/**
|
|
162
180
|
* Validates AST syntax for the given file path and content.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit-calculator.js","sourceRoot":"","sources":["../../../../src/tools/ast-edit/edit-calculator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,IAAI,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"edit-calculator.js","sourceRoot":"","sources":["../../../../src/tools/ast-edit/edit-calculator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Vybestack LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*
|
|
6
|
+
* Categorizes AST validation results into pre-existing vs newly-introduced
|
|
7
|
+
* errors by comparing the pre-edit and post-edit parse trees.
|
|
8
|
+
*
|
|
9
|
+
* Background (issue #2124): tree-sitter is error-recovering and will report
|
|
10
|
+
* ERROR/MISSING nodes for any pre-existing syntax weirdness in a file. Without
|
|
11
|
+
* a baseline, every post-edit validation failure looks like the edit's fault,
|
|
12
|
+
* causing the LLM to either blindly force the edit or abandon it for a less
|
|
13
|
+
* capable tool. Comparing against the pre-edit baseline lets us tell the LLM
|
|
14
|
+
* whether the failure was already there.
|
|
15
|
+
*/
|
|
16
|
+
export type AstValidationResult = {
|
|
17
|
+
valid: boolean;
|
|
18
|
+
errors: string[];
|
|
19
|
+
};
|
|
20
|
+
export interface AstValidationSummary {
|
|
21
|
+
/** Post-edit validation status. */
|
|
22
|
+
status: 'PASSED' | 'FAILED' | 'SKIPPED';
|
|
23
|
+
/** True when the post-edit error(s) also existed in the pre-edit content. */
|
|
24
|
+
preExisting: boolean;
|
|
25
|
+
/** True when the edit likely introduced an error that did not exist before. */
|
|
26
|
+
newlyIntroduced: boolean;
|
|
27
|
+
/** One-line label suitable for LLM-facing output. */
|
|
28
|
+
label: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Extracts the leading line number from a validation error message such as
|
|
32
|
+
* "Syntax error at line 173, column 5". Returns null when no line is found.
|
|
33
|
+
*/
|
|
34
|
+
export declare function extractErrorLineNumber(error: string): number | null;
|
|
35
|
+
/**
|
|
36
|
+
* Finds the 1-based line number where an edit begins in the original content.
|
|
37
|
+
* Returns null when the position cannot be determined (e.g. new file) or when
|
|
38
|
+
* oldString appears more than once (ambiguous — indexOf would return the first
|
|
39
|
+
* match, but the actual edit could target a different occurrence, making the
|
|
40
|
+
* computed line unreliable for shift matching).
|
|
41
|
+
*/
|
|
42
|
+
export declare function findEditStartLine(content: string | null, oldString: string): number | null;
|
|
43
|
+
/**
|
|
44
|
+
* Computes the net line delta an edit introduces. A positive value means the
|
|
45
|
+
* edit added lines (shifting errors below it downward); negative means removed.
|
|
46
|
+
*/
|
|
47
|
+
export declare function computeLineDelta(oldString: string | undefined, newString: string | undefined): number;
|
|
48
|
+
/**
|
|
49
|
+
* Categorizes post-edit AST validation results relative to the pre-edit
|
|
50
|
+
* baseline so the LLM understands whether failures are its fault.
|
|
51
|
+
*
|
|
52
|
+
* @param preEdit - Validation result of the original file content.
|
|
53
|
+
* @param postEdit - Validation result of the edited file content.
|
|
54
|
+
* @param lineDelta - Net lines added/removed by the edit (for shift matching).
|
|
55
|
+
* @param editStartLine - 1-based line where the edit begins (for precise matching).
|
|
56
|
+
*/
|
|
57
|
+
export declare function summarizeAstValidation(preEdit: AstValidationResult | undefined, postEdit: AstValidationResult | undefined, lineDelta?: number, editStartLine?: number | null): AstValidationSummary;
|
|
58
|
+
export declare function formatValidationLineLabel(errors: string[]): string;
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Vybestack LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*
|
|
6
|
+
* Categorizes AST validation results into pre-existing vs newly-introduced
|
|
7
|
+
* errors by comparing the pre-edit and post-edit parse trees.
|
|
8
|
+
*
|
|
9
|
+
* Background (issue #2124): tree-sitter is error-recovering and will report
|
|
10
|
+
* ERROR/MISSING nodes for any pre-existing syntax weirdness in a file. Without
|
|
11
|
+
* a baseline, every post-edit validation failure looks like the edit's fault,
|
|
12
|
+
* causing the LLM to either blindly force the edit or abandon it for a less
|
|
13
|
+
* capable tool. Comparing against the pre-edit baseline lets us tell the LLM
|
|
14
|
+
* whether the failure was already there.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Extracts the leading line number from a validation error message such as
|
|
18
|
+
* "Syntax error at line 173, column 5". Returns null when no line is found.
|
|
19
|
+
*/
|
|
20
|
+
export function extractErrorLineNumber(error) {
|
|
21
|
+
const match = /line (\d+)/i.exec(error);
|
|
22
|
+
return match ? parseInt(match[1], 10) : null;
|
|
23
|
+
}
|
|
24
|
+
function extractErrorLocation(error) {
|
|
25
|
+
const match = /line (\d+), column (\d+)/i.exec(error);
|
|
26
|
+
if (!match)
|
|
27
|
+
return null;
|
|
28
|
+
return {
|
|
29
|
+
line: parseInt(match[1], 10),
|
|
30
|
+
column: parseInt(match[2], 10),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Finds the 1-based line number where an edit begins in the original content.
|
|
35
|
+
* Returns null when the position cannot be determined (e.g. new file) or when
|
|
36
|
+
* oldString appears more than once (ambiguous — indexOf would return the first
|
|
37
|
+
* match, but the actual edit could target a different occurrence, making the
|
|
38
|
+
* computed line unreliable for shift matching).
|
|
39
|
+
*/
|
|
40
|
+
export function findEditStartLine(content, oldString) {
|
|
41
|
+
if (!content || !oldString)
|
|
42
|
+
return null;
|
|
43
|
+
const firstIdx = content.indexOf(oldString);
|
|
44
|
+
if (firstIdx === -1)
|
|
45
|
+
return null;
|
|
46
|
+
// Ambiguous: oldString appears more than once, so we cannot reliably
|
|
47
|
+
// determine which occurrence the edit targets. Return null to fall back
|
|
48
|
+
// to the less precise (but safe) lineDelta-based matching.
|
|
49
|
+
if (content.indexOf(oldString, firstIdx + 1) !== -1)
|
|
50
|
+
return null;
|
|
51
|
+
return content.substring(0, firstIdx).split('\n').length;
|
|
52
|
+
}
|
|
53
|
+
/** Counts newline delimiters, which determine shifts below an edit. */
|
|
54
|
+
function countLineBreaks(s) {
|
|
55
|
+
if (!s)
|
|
56
|
+
return 0;
|
|
57
|
+
return s.split('\n').length - 1;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Computes the net line delta an edit introduces. A positive value means the
|
|
61
|
+
* edit added lines (shifting errors below it downward); negative means removed.
|
|
62
|
+
*/
|
|
63
|
+
export function computeLineDelta(oldString, newString) {
|
|
64
|
+
return countLineBreaks(newString) - countLineBreaks(oldString);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Determines whether a pre-edit error line and a post-edit error line refer to
|
|
68
|
+
* the same location, accounting for line shifts caused by the edit.
|
|
69
|
+
*
|
|
70
|
+
* When the edit's start line is known, errors at or below the edit must have
|
|
71
|
+
* shifted by `lineDelta`, while errors above it did not shift — this avoids the
|
|
72
|
+
* false positive of matching a newly-introduced error to a nearby pre-existing
|
|
73
|
+
* one. The validator emits deterministic line and column coordinates, so both
|
|
74
|
+
* must match exactly after applying the known line shift.
|
|
75
|
+
*
|
|
76
|
+
* When the edit position is unknown, the two cases are made mutually exclusive
|
|
77
|
+
* based on whether `lineDelta` is zero, which is the safest fallback.
|
|
78
|
+
*/
|
|
79
|
+
function locationsMatch(pre, post, lineDelta, editStartLine) {
|
|
80
|
+
if (pre.column !== post.column)
|
|
81
|
+
return false;
|
|
82
|
+
if (editStartLine !== null) {
|
|
83
|
+
if (pre.line > editStartLine) {
|
|
84
|
+
return pre.line + lineDelta === post.line;
|
|
85
|
+
}
|
|
86
|
+
if (pre.line === editStartLine) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
return pre.line === post.line;
|
|
90
|
+
}
|
|
91
|
+
return lineDelta === 0 && pre.line === post.line;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Categorizes post-edit AST validation results relative to the pre-edit
|
|
95
|
+
* baseline so the LLM understands whether failures are its fault.
|
|
96
|
+
*
|
|
97
|
+
* @param preEdit - Validation result of the original file content.
|
|
98
|
+
* @param postEdit - Validation result of the edited file content.
|
|
99
|
+
* @param lineDelta - Net lines added/removed by the edit (for shift matching).
|
|
100
|
+
* @param editStartLine - 1-based line where the edit begins (for precise matching).
|
|
101
|
+
*/
|
|
102
|
+
export function summarizeAstValidation(preEdit, postEdit, lineDelta = 0, editStartLine = null) {
|
|
103
|
+
if (!postEdit) {
|
|
104
|
+
return {
|
|
105
|
+
status: 'SKIPPED',
|
|
106
|
+
preExisting: false,
|
|
107
|
+
newlyIntroduced: false,
|
|
108
|
+
label: 'SKIPPED (validation not performed)',
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
// Post-edit is valid.
|
|
112
|
+
if (postEdit.valid) {
|
|
113
|
+
if (preEdit && !preEdit.valid) {
|
|
114
|
+
return {
|
|
115
|
+
status: 'PASSED',
|
|
116
|
+
preExisting: false,
|
|
117
|
+
newlyIntroduced: false,
|
|
118
|
+
label: `PASSED (edit may have resolved pre-existing error${formatLineLabel(preEdit.errors)})`,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
status: 'PASSED',
|
|
123
|
+
preExisting: false,
|
|
124
|
+
newlyIntroduced: false,
|
|
125
|
+
label: 'PASSED',
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
// Post-edit is invalid.
|
|
129
|
+
const postErrors = postEdit.errors;
|
|
130
|
+
const preHadErrors = preEdit !== undefined && !preEdit.valid;
|
|
131
|
+
// Pre-edit was clean (or no baseline / new file) → the edit introduced the error.
|
|
132
|
+
if (!preHadErrors) {
|
|
133
|
+
return {
|
|
134
|
+
status: 'FAILED',
|
|
135
|
+
preExisting: false,
|
|
136
|
+
newlyIntroduced: true,
|
|
137
|
+
label: `FAILED (new error introduced by this edit${formatLineLabel(postErrors)})`,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
// Both pre- and post-edit are invalid. Determine whether every post-edit
|
|
141
|
+
// error corresponds to the same location as a pre-edit one. Iterate over the
|
|
142
|
+
// raw error strings (not just those with parseable line numbers) so that
|
|
143
|
+
// unparseable post-edit errors are conservatively treated as unmatched
|
|
144
|
+
// rather than silently dropped.
|
|
145
|
+
const unmatchedPreLocations = preEdit.errors
|
|
146
|
+
.map(extractErrorLocation)
|
|
147
|
+
.filter((location) => location !== null);
|
|
148
|
+
let matchedCount = 0;
|
|
149
|
+
let allMatched = postErrors.length > 0;
|
|
150
|
+
for (const postErr of postErrors) {
|
|
151
|
+
const postLocation = extractErrorLocation(postErr);
|
|
152
|
+
const matchingIndex = postLocation === null
|
|
153
|
+
? -1
|
|
154
|
+
: unmatchedPreLocations.findIndex((preLocation) => locationsMatch(preLocation, postLocation, lineDelta, editStartLine));
|
|
155
|
+
if (matchingIndex === -1) {
|
|
156
|
+
allMatched = false;
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
matchedCount++;
|
|
160
|
+
unmatchedPreLocations.splice(matchingIndex, 1);
|
|
161
|
+
}
|
|
162
|
+
if (allMatched) {
|
|
163
|
+
return {
|
|
164
|
+
status: 'FAILED',
|
|
165
|
+
preExisting: true,
|
|
166
|
+
newlyIntroduced: false,
|
|
167
|
+
label: `FAILED (pre-existing error${formatLineLabel(postErrors)} — present before this edit)`,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
// File was already broken, but the post-edit errors don't line up with the
|
|
171
|
+
// pre-existing ones. They may be cascading from the same root cause or newly
|
|
172
|
+
// introduced; surface both for the LLM to judge.
|
|
173
|
+
return formatMixedValidationSummary(preEdit.errors, postErrors, matchedCount > 0);
|
|
174
|
+
}
|
|
175
|
+
function formatMixedValidationSummary(preErrors, postErrors, hasMatchedError) {
|
|
176
|
+
const preErrorNoun = preErrors.length === 1 ? 'error' : 'errors';
|
|
177
|
+
let postErrorDescription = 'post-edit validation failed without error details';
|
|
178
|
+
if (postErrors.length > 0) {
|
|
179
|
+
const postErrorNoun = postErrors.length === 1 ? 'error' : 'errors';
|
|
180
|
+
postErrorDescription = `post-edit ${postErrorNoun}${formatLineLabel(postErrors)} may be newly introduced`;
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
status: 'FAILED',
|
|
184
|
+
preExisting: hasMatchedError,
|
|
185
|
+
newlyIntroduced: true,
|
|
186
|
+
label: `FAILED (file had pre-existing ${preErrorNoun}${formatLineLabel(preErrors)}; ${postErrorDescription})`,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
function extractErrorLineNumbers(errors) {
|
|
190
|
+
const lines = [];
|
|
191
|
+
for (const err of errors) {
|
|
192
|
+
const line = extractErrorLineNumber(err);
|
|
193
|
+
if (line !== null)
|
|
194
|
+
lines.push(line);
|
|
195
|
+
}
|
|
196
|
+
return lines;
|
|
197
|
+
}
|
|
198
|
+
export function formatValidationLineLabel(errors) {
|
|
199
|
+
const lines = extractErrorLineNumbers(errors);
|
|
200
|
+
if (lines.length === 0)
|
|
201
|
+
return '';
|
|
202
|
+
return ` at line${lines.length > 1 ? 's' : ''} ${lines.join(', ')}`;
|
|
203
|
+
}
|
|
204
|
+
function formatLineLabel(errors) {
|
|
205
|
+
return formatValidationLineLabel(errors);
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=validation-categorizer.js.map
|