erosolar-cli 1.7.161 → 1.7.164
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/contracts/unified-schema.json +6 -6
- package/dist/core/unified/tools.d.ts.map +1 -1
- package/dist/core/unified/tools.js +12 -34
- package/dist/core/unified/tools.js.map +1 -1
- package/dist/security/tool-security-wrapper.js +3 -3
- package/dist/security/tool-security-wrapper.js.map +1 -1
- package/dist/shell/claudeCodeStreamHandler.d.ts +145 -0
- package/dist/shell/claudeCodeStreamHandler.d.ts.map +1 -0
- package/dist/shell/claudeCodeStreamHandler.js +312 -0
- package/dist/shell/claudeCodeStreamHandler.js.map +1 -0
- package/dist/shell/inputQueueManager.d.ts +144 -0
- package/dist/shell/inputQueueManager.d.ts.map +1 -0
- package/dist/shell/inputQueueManager.js +290 -0
- package/dist/shell/inputQueueManager.js.map +1 -0
- package/dist/shell/interactiveShell.d.ts +21 -0
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +140 -51
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/shell/streamingOutputManager.d.ts +88 -0
- package/dist/shell/streamingOutputManager.d.ts.map +1 -0
- package/dist/shell/streamingOutputManager.js +155 -0
- package/dist/shell/streamingOutputManager.js.map +1 -0
- package/dist/shell/systemPrompt.js +2 -2
- package/dist/shell/systemPrompt.js.map +1 -1
- package/dist/shell/taskCompletionDetector.d.ts.map +1 -1
- package/dist/shell/taskCompletionDetector.js +1 -3
- package/dist/shell/taskCompletionDetector.js.map +1 -1
- package/dist/shell/unifiedChatBox.d.ts +178 -0
- package/dist/shell/unifiedChatBox.d.ts.map +1 -0
- package/dist/shell/unifiedChatBox.js +539 -0
- package/dist/shell/unifiedChatBox.js.map +1 -0
- package/dist/tools/diffUtils.d.ts +1 -1
- package/dist/tools/diffUtils.d.ts.map +1 -1
- package/dist/tools/diffUtils.js +19 -3
- package/dist/tools/diffUtils.js.map +1 -1
- package/dist/tools/editTools.d.ts +11 -0
- package/dist/tools/editTools.d.ts.map +1 -1
- package/dist/tools/editTools.js +141 -98
- package/dist/tools/editTools.js.map +1 -1
- package/dist/tools/fileTools.d.ts.map +1 -1
- package/dist/tools/fileTools.js +2 -126
- package/dist/tools/fileTools.js.map +1 -1
- package/dist/tools/softwareEngineeringTools.d.ts +7 -0
- package/dist/tools/softwareEngineeringTools.d.ts.map +1 -0
- package/dist/tools/softwareEngineeringTools.js +338 -0
- package/dist/tools/softwareEngineeringTools.js.map +1 -0
- package/dist/ui/toolDisplay.d.ts.map +1 -1
- package/dist/ui/toolDisplay.js +1 -3
- package/dist/ui/toolDisplay.js.map +1 -1
- package/dist/ui/toolDisplayAdapter.d.ts.map +1 -1
- package/dist/ui/toolDisplayAdapter.js +0 -3
- package/dist/ui/toolDisplayAdapter.js.map +1 -1
- package/package.json +1 -1
|
@@ -15,4 +15,15 @@ import type { ToolDefinition } from '../core/toolRuntime.js';
|
|
|
15
15
|
* @returns Array containing the Edit tool definition
|
|
16
16
|
*/
|
|
17
17
|
export declare function createEditTools(workingDir: string): ToolDefinition[];
|
|
18
|
+
export interface EditArguments {
|
|
19
|
+
file_path?: unknown;
|
|
20
|
+
old_string?: unknown;
|
|
21
|
+
new_string?: unknown;
|
|
22
|
+
replace_all?: unknown;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Shared edit executor used by both legacy and unified tool flows.
|
|
26
|
+
* Provides consistent validation, creation/deletion handling, and diff output.
|
|
27
|
+
*/
|
|
28
|
+
export declare function performSurgicalEdit(workingDir: string, args: EditArguments | Record<string, unknown>): Promise<string>;
|
|
18
29
|
//# sourceMappingURL=editTools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editTools.d.ts","sourceRoot":"","sources":["../../src/tools/editTools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAI7D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"editTools.d.ts","sourceRoot":"","sources":["../../src/tools/editTools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAI7D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,EAAE,CAkCpE;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5C,OAAO,CAAC,MAAM,CAAC,CA+IjB"}
|
package/dist/tools/editTools.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { readFile, writeFile, stat } from 'node:fs/promises';
|
|
2
|
-
import { join, relative } from 'node:path';
|
|
1
|
+
import { readFile, writeFile, stat, mkdir } from 'node:fs/promises';
|
|
2
|
+
import { join, relative, dirname } from 'node:path';
|
|
3
3
|
import { buildError } from '../core/errors.js';
|
|
4
4
|
import { buildDiffSegmentsFast, formatDiffLines } from './diffUtils.js';
|
|
5
5
|
/**
|
|
@@ -21,120 +21,163 @@ export function createEditTools(workingDir) {
|
|
|
21
21
|
return [
|
|
22
22
|
{
|
|
23
23
|
name: 'Edit',
|
|
24
|
-
description: 'Performs exact string replacements in files. Use for surgical edits when you know the exact text to replace. The edit will FAIL if old_string is not unique unless replace_all is true.',
|
|
24
|
+
description: 'Performs exact string replacements in files. Use for surgical edits when you know the exact text to replace. To CREATE a new file, use empty old_string. To DELETE text, use empty new_string. The edit will FAIL if old_string is not unique unless replace_all is true.',
|
|
25
25
|
parameters: {
|
|
26
26
|
type: 'object',
|
|
27
27
|
properties: {
|
|
28
28
|
file_path: {
|
|
29
29
|
type: 'string',
|
|
30
|
-
description: 'The absolute path to the file to modify',
|
|
30
|
+
description: 'The absolute path to the file to modify or create',
|
|
31
31
|
},
|
|
32
32
|
old_string: {
|
|
33
33
|
type: 'string',
|
|
34
|
-
description: 'The exact text to replace (must match precisely including
|
|
34
|
+
description: 'The exact text to replace (must match precisely including whitespace). Use empty string "" to create a new file.',
|
|
35
35
|
},
|
|
36
36
|
new_string: {
|
|
37
37
|
type: 'string',
|
|
38
|
-
description: 'The text to replace it with
|
|
38
|
+
description: 'The text to replace it with. Use empty string "" to delete the old_string. For new files, this is the full content. Defaults to "" when omitted.',
|
|
39
39
|
},
|
|
40
40
|
replace_all: {
|
|
41
41
|
type: 'boolean',
|
|
42
42
|
description: 'Replace all occurrences of old_string (default false). When false, the edit fails if old_string appears multiple times.',
|
|
43
43
|
},
|
|
44
44
|
},
|
|
45
|
-
required: ['file_path', 'old_string'
|
|
45
|
+
required: ['file_path', 'old_string'],
|
|
46
46
|
additionalProperties: false,
|
|
47
47
|
},
|
|
48
|
-
handler: async (args) =>
|
|
49
|
-
const pathArg = args['file_path'];
|
|
50
|
-
const oldString = args['old_string'];
|
|
51
|
-
const newString = args['new_string'];
|
|
52
|
-
const replaceAll = args['replace_all'] === true;
|
|
53
|
-
// Validate inputs
|
|
54
|
-
if (typeof pathArg !== 'string' || !pathArg.trim()) {
|
|
55
|
-
return 'Error: file_path must be a non-empty string.';
|
|
56
|
-
}
|
|
57
|
-
if (typeof oldString !== 'string') {
|
|
58
|
-
return 'Error: old_string must be a string.';
|
|
59
|
-
}
|
|
60
|
-
if (typeof newString !== 'string') {
|
|
61
|
-
return 'Error: new_string must be a string.';
|
|
62
|
-
}
|
|
63
|
-
if (oldString === newString) {
|
|
64
|
-
return 'Error: old_string and new_string must be different.';
|
|
65
|
-
}
|
|
66
|
-
try {
|
|
67
|
-
const filePath = resolveFilePath(workingDir, pathArg);
|
|
68
|
-
// Check file exists (async for speed)
|
|
69
|
-
try {
|
|
70
|
-
await stat(filePath);
|
|
71
|
-
}
|
|
72
|
-
catch {
|
|
73
|
-
return `Error: File not found: ${filePath}`;
|
|
74
|
-
}
|
|
75
|
-
// Read current content (async for speed)
|
|
76
|
-
const currentContent = await readFile(filePath, 'utf-8');
|
|
77
|
-
// Check if old_string exists in file
|
|
78
|
-
if (!currentContent.includes(oldString)) {
|
|
79
|
-
// Provide helpful debugging info when match fails
|
|
80
|
-
const firstLine = oldString.split('\n')[0] || '';
|
|
81
|
-
const hints = findSimilarLines(currentContent, firstLine, filePath);
|
|
82
|
-
return [
|
|
83
|
-
'Error: old_string not found in file.',
|
|
84
|
-
'',
|
|
85
|
-
`File: ${filePath}`,
|
|
86
|
-
`Searching for: ${JSON.stringify(firstLine.substring(0, 80))}${firstLine.length > 80 ? '...' : ''}`,
|
|
87
|
-
'',
|
|
88
|
-
hints,
|
|
89
|
-
'',
|
|
90
|
-
'Tips:',
|
|
91
|
-
'- Ensure exact whitespace/indentation matches',
|
|
92
|
-
'- Copy text directly from Read output',
|
|
93
|
-
'- Check for tabs vs spaces',
|
|
94
|
-
].join('\n');
|
|
95
|
-
}
|
|
96
|
-
// Count occurrences
|
|
97
|
-
const occurrences = countOccurrences(currentContent, oldString);
|
|
98
|
-
if (!replaceAll && occurrences > 1) {
|
|
99
|
-
return `Error: old_string appears ${occurrences} times in the file. Either:\n1. Provide a larger unique string that includes more context\n2. Set replace_all: true to replace all ${occurrences} occurrences\n\nFile: ${filePath}`;
|
|
100
|
-
}
|
|
101
|
-
// Perform replacement
|
|
102
|
-
const newContent = replaceAll
|
|
103
|
-
? currentContent.split(oldString).join(newString)
|
|
104
|
-
: currentContent.replace(oldString, newString);
|
|
105
|
-
// Generate diff (fast in-memory algorithm, no git spawning)
|
|
106
|
-
const diffSegments = buildDiffSegmentsFast(currentContent, newContent);
|
|
107
|
-
// Write file (async for speed)
|
|
108
|
-
await writeFile(filePath, newContent, 'utf-8');
|
|
109
|
-
// Build summary
|
|
110
|
-
const relativePath = relative(workingDir, filePath);
|
|
111
|
-
const displayPath = relativePath && !relativePath.startsWith('..') ? relativePath : filePath;
|
|
112
|
-
const addedLines = diffSegments.filter(s => s.type === 'added').length;
|
|
113
|
-
const removedLines = diffSegments.filter(s => s.type === 'removed').length;
|
|
114
|
-
const occurrencesText = replaceAll ? ` (${occurrences} occurrence${occurrences > 1 ? 's' : ''})` : '';
|
|
115
|
-
const diffLines = formatDiffLines(diffSegments);
|
|
116
|
-
const diffBlock = diffLines.length > 0
|
|
117
|
-
? ['```diff', ...diffLines, '```'].join('\n')
|
|
118
|
-
: '(No visual diff - whitespace or formatting changes only)';
|
|
119
|
-
return [
|
|
120
|
-
`✓ Edited ${displayPath}${occurrencesText}`,
|
|
121
|
-
`Lines changed: +${addedLines} / -${removedLines}`,
|
|
122
|
-
'',
|
|
123
|
-
'Diff preview:',
|
|
124
|
-
diffBlock,
|
|
125
|
-
].join('\n');
|
|
126
|
-
}
|
|
127
|
-
catch (error) {
|
|
128
|
-
return buildError('editing file', error, {
|
|
129
|
-
file_path: pathArg,
|
|
130
|
-
old_string_length: typeof oldString === 'string' ? oldString.length : 0,
|
|
131
|
-
new_string_length: typeof newString === 'string' ? newString.length : 0,
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
},
|
|
48
|
+
handler: async (args) => performSurgicalEdit(workingDir, args),
|
|
135
49
|
},
|
|
136
50
|
];
|
|
137
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Shared edit executor used by both legacy and unified tool flows.
|
|
54
|
+
* Provides consistent validation, creation/deletion handling, and diff output.
|
|
55
|
+
*/
|
|
56
|
+
export async function performSurgicalEdit(workingDir, args) {
|
|
57
|
+
const pathArg = args['file_path'];
|
|
58
|
+
const oldString = args['old_string'];
|
|
59
|
+
const newStringRaw = args['new_string'];
|
|
60
|
+
const replaceAll = args['replace_all'] === true;
|
|
61
|
+
const newString = typeof newStringRaw === 'string' ? newStringRaw : '';
|
|
62
|
+
// Validate inputs
|
|
63
|
+
if (typeof pathArg !== 'string' || !pathArg.trim()) {
|
|
64
|
+
return 'Error: file_path must be a non-empty string.';
|
|
65
|
+
}
|
|
66
|
+
if (typeof oldString !== 'string') {
|
|
67
|
+
return 'Error: old_string must be a string (use "" for empty).';
|
|
68
|
+
}
|
|
69
|
+
if (newStringRaw !== undefined && typeof newStringRaw !== 'string') {
|
|
70
|
+
return 'Error: new_string must be a string (use "" for empty).';
|
|
71
|
+
}
|
|
72
|
+
// Only error if both are identical AND non-empty (no-op edit)
|
|
73
|
+
// Allow: empty old + content = create, content + empty new = delete
|
|
74
|
+
if (oldString === newString && oldString !== '') {
|
|
75
|
+
return 'Error: old_string and new_string are identical. No changes would be made.';
|
|
76
|
+
}
|
|
77
|
+
// Both empty is also a no-op
|
|
78
|
+
if (oldString === '' && newString === '') {
|
|
79
|
+
return 'Error: Both old_string and new_string are empty. Provide content to create a file or text to replace.';
|
|
80
|
+
}
|
|
81
|
+
try {
|
|
82
|
+
const filePath = resolveFilePath(workingDir, pathArg);
|
|
83
|
+
// Check if file exists
|
|
84
|
+
let fileExists = false;
|
|
85
|
+
try {
|
|
86
|
+
await stat(filePath);
|
|
87
|
+
fileExists = true;
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
fileExists = false;
|
|
91
|
+
}
|
|
92
|
+
// Handle file creation mode (empty old_string)
|
|
93
|
+
if (oldString === '') {
|
|
94
|
+
if (fileExists) {
|
|
95
|
+
return `Error: File already exists: ${filePath}\nTo modify an existing file, provide the exact text to replace in old_string.`;
|
|
96
|
+
}
|
|
97
|
+
// Create parent directories if needed
|
|
98
|
+
const dir = dirname(filePath);
|
|
99
|
+
await mkdir(dir, { recursive: true });
|
|
100
|
+
// Write new file
|
|
101
|
+
await writeFile(filePath, newString, 'utf-8');
|
|
102
|
+
const relativePath = relative(workingDir, filePath);
|
|
103
|
+
const displayPath = relativePath && !relativePath.startsWith('..') ? relativePath : filePath;
|
|
104
|
+
const lineCount = newString.split('\n').length;
|
|
105
|
+
const diffSegments = buildDiffSegmentsFast('', newString);
|
|
106
|
+
const addedLines = diffSegments.filter((s) => s.type === 'added').length;
|
|
107
|
+
const diffLines = formatDiffLines(diffSegments, true);
|
|
108
|
+
const diffBlock = diffLines.length > 0 ? diffLines.join('\n') : '(No visual diff - whitespace or formatting changes only)';
|
|
109
|
+
return [
|
|
110
|
+
`✓ Created ${displayPath}`,
|
|
111
|
+
`Lines changed: +${addedLines} / -0`,
|
|
112
|
+
`${lineCount} line${lineCount === 1 ? '' : 's'} written`,
|
|
113
|
+
'',
|
|
114
|
+
'Diff preview:',
|
|
115
|
+
diffBlock,
|
|
116
|
+
].join('\n');
|
|
117
|
+
}
|
|
118
|
+
// For modifications, file must exist
|
|
119
|
+
if (!fileExists) {
|
|
120
|
+
return `Error: File not found: ${filePath}\nTo create a new file, use empty old_string ("").`;
|
|
121
|
+
}
|
|
122
|
+
// Read current content (async for speed)
|
|
123
|
+
const currentContent = await readFile(filePath, 'utf-8');
|
|
124
|
+
// Check if old_string exists in file
|
|
125
|
+
if (!currentContent.includes(oldString)) {
|
|
126
|
+
// Provide helpful debugging info when match fails
|
|
127
|
+
const firstLine = oldString.split('\n')[0] || '';
|
|
128
|
+
const hints = findSimilarLines(currentContent, firstLine, filePath);
|
|
129
|
+
return [
|
|
130
|
+
'Error: old_string not found in file.',
|
|
131
|
+
'',
|
|
132
|
+
`File: ${filePath}`,
|
|
133
|
+
`Searching for: ${JSON.stringify(firstLine.substring(0, 80))}${firstLine.length > 80 ? '...' : ''}`,
|
|
134
|
+
'',
|
|
135
|
+
hints,
|
|
136
|
+
'',
|
|
137
|
+
'Tips:',
|
|
138
|
+
'- Ensure exact whitespace/indentation matches',
|
|
139
|
+
'- Copy text directly from Read output',
|
|
140
|
+
'- Check for tabs vs spaces',
|
|
141
|
+
].join('\n');
|
|
142
|
+
}
|
|
143
|
+
// Count occurrences
|
|
144
|
+
const occurrences = countOccurrences(currentContent, oldString);
|
|
145
|
+
if (!replaceAll && occurrences > 1) {
|
|
146
|
+
return `Error: old_string appears ${occurrences} times in the file. Either:\n1. Provide a larger unique string that includes more context\n2. Set replace_all: true to replace all ${occurrences} occurrences\n\nFile: ${filePath}`;
|
|
147
|
+
}
|
|
148
|
+
// Perform replacement
|
|
149
|
+
const newContent = replaceAll
|
|
150
|
+
? currentContent.split(oldString).join(newString)
|
|
151
|
+
: currentContent.replace(oldString, newString);
|
|
152
|
+
// Generate diff (fast in-memory algorithm, no git spawning)
|
|
153
|
+
const diffSegments = buildDiffSegmentsFast(currentContent, newContent);
|
|
154
|
+
// Write file (async for speed)
|
|
155
|
+
await writeFile(filePath, newContent, 'utf-8');
|
|
156
|
+
// Build summary
|
|
157
|
+
const relativePath = relative(workingDir, filePath);
|
|
158
|
+
const displayPath = relativePath && !relativePath.startsWith('..') ? relativePath : filePath;
|
|
159
|
+
const addedLines = diffSegments.filter((s) => s.type === 'added').length;
|
|
160
|
+
const removedLines = diffSegments.filter((s) => s.type === 'removed').length;
|
|
161
|
+
const occurrencesText = replaceAll ? ` (${occurrences} occurrence${occurrences > 1 ? 's' : ''})` : '';
|
|
162
|
+
// Format diff with colors for terminal display
|
|
163
|
+
const diffLines = formatDiffLines(diffSegments, true);
|
|
164
|
+
const diffBlock = diffLines.length > 0 ? diffLines.join('\n') : '(No visual diff - whitespace or formatting changes only)';
|
|
165
|
+
return [
|
|
166
|
+
`✓ Edited ${displayPath}${occurrencesText}`,
|
|
167
|
+
`Lines changed: +${addedLines} / -${removedLines}`,
|
|
168
|
+
'',
|
|
169
|
+
'Diff preview:',
|
|
170
|
+
diffBlock,
|
|
171
|
+
].join('\n');
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
return buildError('editing file', error, {
|
|
175
|
+
file_path: typeof pathArg === 'string' ? pathArg : '',
|
|
176
|
+
old_string_length: typeof oldString === 'string' ? oldString.length : 0,
|
|
177
|
+
new_string_length: typeof newString === 'string' ? newString.length : 0,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
}
|
|
138
181
|
function resolveFilePath(workingDir, path) {
|
|
139
182
|
const normalized = path.trim();
|
|
140
183
|
return normalized.startsWith('/') ? normalized : join(workingDir, normalized);
|
|
@@ -162,7 +205,7 @@ function findSimilarLines(content, searchFirstLine, _filePath) {
|
|
|
162
205
|
const searchNormalized = searchFirstLine.trim().toLowerCase();
|
|
163
206
|
const matches = [];
|
|
164
207
|
// Find lines that contain key words from the search
|
|
165
|
-
const searchWords = searchNormalized.split(/\s+/).filter(w => w.length > 2);
|
|
208
|
+
const searchWords = searchNormalized.split(/\s+/).filter((w) => w.length > 2);
|
|
166
209
|
for (let i = 0; i < lines.length; i++) {
|
|
167
210
|
const line = lines[i] || '';
|
|
168
211
|
const lineNormalized = line.trim().toLowerCase();
|
|
@@ -181,7 +224,7 @@ function findSimilarLines(content, searchFirstLine, _filePath) {
|
|
|
181
224
|
}
|
|
182
225
|
// Check for word overlap
|
|
183
226
|
if (searchWords.length > 0) {
|
|
184
|
-
const matchingWords = searchWords.filter(w => lineNormalized.includes(w));
|
|
227
|
+
const matchingWords = searchWords.filter((w) => lineNormalized.includes(w));
|
|
185
228
|
const similarity = matchingWords.length / searchWords.length;
|
|
186
229
|
if (similarity >= 0.5) {
|
|
187
230
|
matches.push({ lineNum: i + 1, line, similarity });
|
|
@@ -194,13 +237,13 @@ function findSimilarLines(content, searchFirstLine, _filePath) {
|
|
|
194
237
|
// Sort by similarity and take top 3
|
|
195
238
|
matches.sort((a, b) => b.similarity - a.similarity);
|
|
196
239
|
const topMatches = matches.slice(0, 3);
|
|
197
|
-
const suggestions = topMatches.map(m => {
|
|
240
|
+
const suggestions = topMatches.map((m) => {
|
|
198
241
|
const truncated = m.line.length > 80 ? m.line.substring(0, 77) + '...' : m.line;
|
|
199
242
|
const issueNote = m.issue ? ` (${m.issue})` : '';
|
|
200
243
|
return ` Line ${m.lineNum}${issueNote}: ${JSON.stringify(truncated)}`;
|
|
201
244
|
});
|
|
202
245
|
// Add auto-correction hint for whitespace issues
|
|
203
|
-
const whitespaceMatch = topMatches.find(m => m.issue);
|
|
246
|
+
const whitespaceMatch = topMatches.find((m) => m.issue);
|
|
204
247
|
if (whitespaceMatch) {
|
|
205
248
|
return `Similar lines found (possible whitespace mismatch):\n${suggestions.join('\n')}\n\nTip: Copy the exact text from Read output including indentation.`;
|
|
206
249
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editTools.js","sourceRoot":"","sources":["../../src/tools/editTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"editTools.js","sourceRoot":"","sources":["../../src/tools/editTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileTools.d.ts","sourceRoot":"","sources":["../../src/tools/fileTools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"fileTools.d.ts","sourceRoot":"","sources":["../../src/tools/fileTools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAM7D,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,EAAE,CAkKpE"}
|
package/dist/tools/fileTools.js
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
import { readFileSync,
|
|
2
|
-
import { join,
|
|
1
|
+
import { readFileSync, existsSync, readdirSync, statSync } from 'node:fs';
|
|
2
|
+
import { join, relative } from 'node:path';
|
|
3
3
|
import { buildError } from '../core/errors.js';
|
|
4
|
-
import { buildDiffSegments } from './diffUtils.js';
|
|
5
|
-
import { theme } from '../ui/theme.js';
|
|
6
4
|
// Maximum file size to read (10MB) to prevent memory exhaustion
|
|
7
5
|
const MAX_FILE_SIZE = 10 * 1024 * 1024;
|
|
8
|
-
// Destructive write protection - block writes that would delete significant content
|
|
9
|
-
// Threshold: more than 100 lines AND more than 50% of the file
|
|
10
|
-
const DESTRUCTIVE_LINE_THRESHOLD = 100;
|
|
11
|
-
const DESTRUCTIVE_PERCENTAGE_THRESHOLD = 0.5;
|
|
12
6
|
export function createFileTools(workingDir) {
|
|
13
7
|
return [
|
|
14
8
|
{
|
|
@@ -77,85 +71,6 @@ export function createFileTools(workingDir) {
|
|
|
77
71
|
}
|
|
78
72
|
},
|
|
79
73
|
},
|
|
80
|
-
{
|
|
81
|
-
name: 'write_file',
|
|
82
|
-
description: 'Create a NEW file with the specified content. IMPORTANT: Only use for NEW files. For modifying existing files, ALWAYS use the Edit tool instead - it makes surgical replacements and prevents accidental deletions. Creates parent directories if needed.',
|
|
83
|
-
parameters: {
|
|
84
|
-
type: 'object',
|
|
85
|
-
properties: {
|
|
86
|
-
path: {
|
|
87
|
-
type: 'string',
|
|
88
|
-
description: 'The file path (relative to working directory or absolute)',
|
|
89
|
-
minLength: 1,
|
|
90
|
-
},
|
|
91
|
-
content: {
|
|
92
|
-
type: 'string',
|
|
93
|
-
description: 'The content to write to the file',
|
|
94
|
-
},
|
|
95
|
-
},
|
|
96
|
-
required: ['path', 'content'],
|
|
97
|
-
additionalProperties: false,
|
|
98
|
-
},
|
|
99
|
-
handler: async (args) => {
|
|
100
|
-
const pathArg = args['path'];
|
|
101
|
-
const requestedPath = normalizePathContext(pathArg);
|
|
102
|
-
let resolvedPath;
|
|
103
|
-
try {
|
|
104
|
-
const filePath = resolveFilePath(workingDir, pathArg);
|
|
105
|
-
resolvedPath = filePath;
|
|
106
|
-
const dir = dirname(filePath);
|
|
107
|
-
if (!existsSync(dir)) {
|
|
108
|
-
mkdirSync(dir, { recursive: true });
|
|
109
|
-
}
|
|
110
|
-
// Ensure content is a valid string (handle null/undefined edge cases)
|
|
111
|
-
const contentArg = args['content'];
|
|
112
|
-
const nextContent = contentArg == null ? '' : String(contentArg);
|
|
113
|
-
const filePreviouslyExisted = existsSync(filePath);
|
|
114
|
-
// Safely read previous content - handle binary files and read errors
|
|
115
|
-
let previousContent = '';
|
|
116
|
-
if (filePreviouslyExisted) {
|
|
117
|
-
try {
|
|
118
|
-
previousContent = readFileSync(filePath, 'utf-8');
|
|
119
|
-
// Check for binary content (null bytes indicate binary)
|
|
120
|
-
if (previousContent.includes('\0')) {
|
|
121
|
-
previousContent = ''; // Treat binary files as empty for diff purposes
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
catch {
|
|
125
|
-
// If we can't read the file (permissions, etc.), treat as empty
|
|
126
|
-
previousContent = '';
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
// Build diff before writing to capture changes
|
|
130
|
-
const diffSegments = buildDiffSegments(previousContent, nextContent);
|
|
131
|
-
// Block destructive writes to existing files
|
|
132
|
-
if (filePreviouslyExisted && previousContent) {
|
|
133
|
-
const prevLineCount = previousContent.split('\n').length;
|
|
134
|
-
const removedCount = diffSegments.filter((s) => s.type === 'removed').length;
|
|
135
|
-
const deletionRatio = prevLineCount > 0 ? removedCount / prevLineCount : 0;
|
|
136
|
-
if (removedCount > DESTRUCTIVE_LINE_THRESHOLD && deletionRatio > DESTRUCTIVE_PERCENTAGE_THRESHOLD) {
|
|
137
|
-
const relPath = relative(workingDir, filePath) || filePath;
|
|
138
|
-
const newLineCount = nextContent.split('\n').length;
|
|
139
|
-
return [
|
|
140
|
-
`${theme.error('✗ Blocked destructive write')} to ${theme.info(relPath)}`,
|
|
141
|
-
'',
|
|
142
|
-
`This would delete ${theme.diff.removed(String(removedCount))} lines (${Math.round(deletionRatio * 100)}% of the file).`,
|
|
143
|
-
`${prevLineCount} lines → ${newLineCount} lines`,
|
|
144
|
-
'',
|
|
145
|
-
`${theme.warning('Use the Edit tool for modifications.')} It makes surgical replacements.`,
|
|
146
|
-
theme.ui.muted('write_file is for creating NEW files only.'),
|
|
147
|
-
].join('\n');
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
// Write the file
|
|
151
|
-
writeFileSync(filePath, nextContent, 'utf-8');
|
|
152
|
-
return buildWriteSummary(filePath, diffSegments, workingDir, filePreviouslyExisted);
|
|
153
|
-
}
|
|
154
|
-
catch (error) {
|
|
155
|
-
return buildError('writing file', error, { path: requestedPath, resolvedPath });
|
|
156
|
-
}
|
|
157
|
-
},
|
|
158
|
-
},
|
|
159
74
|
{
|
|
160
75
|
name: 'list_files',
|
|
161
76
|
description: 'List files and directories at the specified path',
|
|
@@ -319,45 +234,6 @@ function searchFilesGlob(dir, pattern) {
|
|
|
319
234
|
search(dir);
|
|
320
235
|
return results;
|
|
321
236
|
}
|
|
322
|
-
function buildWriteSummary(filePath, diffSegments, workingDir, filePreviouslyExisted) {
|
|
323
|
-
const readablePath = formatRelativeFilePath(filePath, workingDir);
|
|
324
|
-
const addedLines = diffSegments.filter((segment) => segment.type === 'added').length;
|
|
325
|
-
const removedLines = diffSegments.filter((segment) => segment.type === 'removed').length;
|
|
326
|
-
const hasChanges = diffSegments.length > 0;
|
|
327
|
-
const actionLabel = !filePreviouslyExisted ? 'Created' : hasChanges ? 'Updated' : 'Updated';
|
|
328
|
-
// Build colored header
|
|
329
|
-
const header = `${theme.success('✓')} ${actionLabel} ${theme.info(readablePath)}`;
|
|
330
|
-
if (!hasChanges) {
|
|
331
|
-
return `${header}\n${theme.ui.muted('No textual changes.')}`;
|
|
332
|
-
}
|
|
333
|
-
// Build colored stats line
|
|
334
|
-
const statsLine = ` ${theme.diff.added(`+${addedLines}`)} ${theme.diff.removed(`-${removedLines}`)}`;
|
|
335
|
-
// Build colored diff preview (max 10 lines to keep output compact)
|
|
336
|
-
const maxDiffLines = 10;
|
|
337
|
-
const diffToShow = diffSegments.slice(0, maxDiffLines);
|
|
338
|
-
const hasMore = diffSegments.length > maxDiffLines;
|
|
339
|
-
const coloredDiff = diffToShow.map((segment) => {
|
|
340
|
-
const lineNum = theme.ui.muted(String(segment.lineNumber).padStart(4));
|
|
341
|
-
if (segment.type === 'added') {
|
|
342
|
-
return ` ${lineNum} ${theme.diff.added('+')} ${theme.diff.added(segment.content)}`;
|
|
343
|
-
}
|
|
344
|
-
else {
|
|
345
|
-
return ` ${lineNum} ${theme.diff.removed('-')} ${theme.diff.removed(segment.content)}`;
|
|
346
|
-
}
|
|
347
|
-
});
|
|
348
|
-
if (hasMore) {
|
|
349
|
-
const remaining = diffSegments.length - maxDiffLines;
|
|
350
|
-
coloredDiff.push(` ${theme.ui.muted(`... +${remaining} more change${remaining === 1 ? '' : 's'}`)}`);
|
|
351
|
-
}
|
|
352
|
-
return [header, statsLine, ...coloredDiff].join('\n');
|
|
353
|
-
}
|
|
354
|
-
function formatRelativeFilePath(filePath, workingDir) {
|
|
355
|
-
const relPath = relative(workingDir, filePath);
|
|
356
|
-
if (!relPath || relPath.startsWith('..')) {
|
|
357
|
-
return filePath;
|
|
358
|
-
}
|
|
359
|
-
return relPath;
|
|
360
|
-
}
|
|
361
237
|
function globToRegex(pattern) {
|
|
362
238
|
const escaped = pattern
|
|
363
239
|
.replace(/\./g, '\\.')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileTools.js","sourceRoot":"","sources":["../../src/tools/fileTools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fileTools.js","sourceRoot":"","sources":["../../src/tools/fileTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ToolDefinition } from '../core/toolRuntime.js';
|
|
2
|
+
/**
|
|
3
|
+
* Software Engineering Tools for enhanced code quality and development experience
|
|
4
|
+
* Provides real-time code analysis, complexity monitoring, and quality metrics
|
|
5
|
+
*/
|
|
6
|
+
export declare function createSoftwareEngineeringTools(workingDir: string): ToolDefinition[];
|
|
7
|
+
//# sourceMappingURL=softwareEngineeringTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"softwareEngineeringTools.d.ts","sourceRoot":"","sources":["../../src/tools/softwareEngineeringTools.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7D;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,EAAE,CAkInF"}
|