centaurus-cli 2.5.3 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli-adapter.d.ts +6 -0
- package/dist/cli-adapter.d.ts.map +1 -1
- package/dist/cli-adapter.js +215 -29
- package/dist/cli-adapter.js.map +1 -1
- package/dist/commands/CommandParser.js +2 -2
- package/dist/commands/CommandParser.js.map +1 -1
- package/dist/config/defaultConfig.js +1 -1
- package/dist/config/defaultConfig.js.map +1 -1
- package/dist/config/models.d.ts +50 -5
- package/dist/config/models.d.ts.map +1 -1
- package/dist/config/models.js +144 -22
- package/dist/config/models.js.map +1 -1
- package/dist/config/types.d.ts +3 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +3 -1
- package/dist/config/types.js.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/services/ai-service-client.d.ts +8 -2
- package/dist/services/ai-service-client.d.ts.map +1 -1
- package/dist/services/ai-service-client.js +2 -1
- package/dist/services/ai-service-client.js.map +1 -1
- package/dist/services/environment-context-injector.d.ts +69 -0
- package/dist/services/environment-context-injector.d.ts.map +1 -0
- package/dist/services/environment-context-injector.js +198 -0
- package/dist/services/environment-context-injector.js.map +1 -0
- package/dist/tools/ToolRegistry.d.ts.map +1 -1
- package/dist/tools/ToolRegistry.js +120 -26
- package/dist/tools/ToolRegistry.js.map +1 -1
- package/dist/tools/command.d.ts.map +1 -1
- package/dist/tools/command.js +30 -6
- package/dist/tools/command.js.map +1 -1
- package/dist/tools/file-ops.d.ts.map +1 -1
- package/dist/tools/file-ops.js +70 -23
- package/dist/tools/file-ops.js.map +1 -1
- package/dist/tools/find-files.d.ts +47 -0
- package/dist/tools/find-files.d.ts.map +1 -0
- package/dist/tools/find-files.js +190 -0
- package/dist/tools/find-files.js.map +1 -0
- package/dist/tools/get-diff.d.ts +45 -0
- package/dist/tools/get-diff.d.ts.map +1 -0
- package/dist/tools/get-diff.js +138 -0
- package/dist/tools/get-diff.js.map +1 -0
- package/dist/tools/grep-search.d.ts +85 -0
- package/dist/tools/grep-search.d.ts.map +1 -0
- package/dist/tools/grep-search.js +497 -0
- package/dist/tools/grep-search.js.map +1 -0
- package/dist/tools/inspect-symbol.d.ts +27 -0
- package/dist/tools/inspect-symbol.d.ts.map +1 -0
- package/dist/tools/inspect-symbol.js +259 -0
- package/dist/tools/inspect-symbol.js.map +1 -0
- package/dist/tools/validation.d.ts +49 -0
- package/dist/tools/validation.d.ts.map +1 -0
- package/dist/tools/validation.js +125 -0
- package/dist/tools/validation.js.map +1 -0
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/ui/components/App.d.ts +3 -0
- package/dist/ui/components/App.d.ts.map +1 -1
- package/dist/ui/components/App.js +173 -15
- package/dist/ui/components/App.js.map +1 -1
- package/dist/ui/components/ContextWindowIndicator.d.ts +8 -0
- package/dist/ui/components/ContextWindowIndicator.d.ts.map +1 -0
- package/dist/ui/components/ContextWindowIndicator.js +34 -0
- package/dist/ui/components/ContextWindowIndicator.js.map +1 -0
- package/dist/ui/components/InputBox.d.ts +2 -0
- package/dist/ui/components/InputBox.d.ts.map +1 -1
- package/dist/ui/components/InputBox.js +6 -2
- package/dist/ui/components/InputBox.js.map +1 -1
- package/dist/ui/components/MessageDisplay.d.ts.map +1 -1
- package/dist/ui/components/MessageDisplay.js +7 -0
- package/dist/ui/components/MessageDisplay.js.map +1 -1
- package/dist/ui/components/StreamingMessageDisplay.d.ts.map +1 -1
- package/dist/ui/components/StreamingMessageDisplay.js +9 -1
- package/dist/ui/components/StreamingMessageDisplay.js.map +1 -1
- package/dist/ui/components/ThinkingDisplay.d.ts +2 -3
- package/dist/ui/components/ThinkingDisplay.d.ts.map +1 -1
- package/dist/ui/components/ThinkingDisplay.js +19 -19
- package/dist/ui/components/ThinkingDisplay.js.map +1 -1
- package/dist/utils/markdown-parser.d.ts +4 -0
- package/dist/utils/markdown-parser.d.ts.map +1 -1
- package/dist/utils/markdown-parser.js +15 -1
- package/dist/utils/markdown-parser.js.map +1 -1
- package/package.json +2 -1
- package/AUTH_FLOW.md +0 -138
- package/CONFIG_GUIDE.md +0 -249
- package/README.md +0 -501
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import * as fs from 'fs/promises';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
export class InspectSymbolTool {
|
|
4
|
+
MAX_SYMBOLS = 100;
|
|
5
|
+
languageParsers = [
|
|
6
|
+
{
|
|
7
|
+
extensions: ['.ts', '.tsx', '.js', '.jsx'],
|
|
8
|
+
name: 'TypeScript/JavaScript',
|
|
9
|
+
parse: this.parseTypeScriptJavaScript.bind(this),
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
extensions: ['.py'],
|
|
13
|
+
name: 'Python',
|
|
14
|
+
parse: this.parsePython.bind(this),
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
extensions: ['.java'],
|
|
18
|
+
name: 'Java',
|
|
19
|
+
parse: this.parseJava.bind(this),
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
async execute(params, cwd) {
|
|
23
|
+
const { filePath } = params;
|
|
24
|
+
const fullPath = path.resolve(cwd, filePath);
|
|
25
|
+
// Check if file exists
|
|
26
|
+
try {
|
|
27
|
+
await fs.access(fullPath);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
throw new Error(`File not found: "${filePath}"\n` +
|
|
31
|
+
`Suggestion: Use find_files to locate the file first, or check the file path.`);
|
|
32
|
+
}
|
|
33
|
+
// Detect language from extension
|
|
34
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
35
|
+
const parser = this.languageParsers.find(p => p.extensions.includes(ext));
|
|
36
|
+
if (!parser) {
|
|
37
|
+
const supportedExts = this.languageParsers
|
|
38
|
+
.flatMap(p => p.extensions)
|
|
39
|
+
.join(', ');
|
|
40
|
+
throw new Error(`Unsupported file type: ${ext}\n` +
|
|
41
|
+
`Suggestion: inspect_symbol supports: ${supportedExts}`);
|
|
42
|
+
}
|
|
43
|
+
// Read file content
|
|
44
|
+
const content = await fs.readFile(fullPath, 'utf-8');
|
|
45
|
+
// Parse symbols
|
|
46
|
+
const allSymbols = parser.parse(content);
|
|
47
|
+
const truncated = allSymbols.length > this.MAX_SYMBOLS;
|
|
48
|
+
const symbols = allSymbols.slice(0, this.MAX_SYMBOLS);
|
|
49
|
+
return {
|
|
50
|
+
symbols,
|
|
51
|
+
filePath: this.normalizePath(filePath),
|
|
52
|
+
language: parser.name,
|
|
53
|
+
truncated,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
parseTypeScriptJavaScript(content) {
|
|
57
|
+
const symbols = [];
|
|
58
|
+
const lines = content.split('\n');
|
|
59
|
+
// Track current class context for methods
|
|
60
|
+
let currentClass = null;
|
|
61
|
+
let classDepth = 0;
|
|
62
|
+
for (let i = 0; i < lines.length; i++) {
|
|
63
|
+
const line = lines[i];
|
|
64
|
+
const lineNumber = i + 1;
|
|
65
|
+
// Track class context
|
|
66
|
+
const classMatch = line.match(/^(export\s+)?(abstract\s+)?class\s+(\w+)(\s+extends\s+(\w+))?/);
|
|
67
|
+
if (classMatch) {
|
|
68
|
+
currentClass = classMatch[3];
|
|
69
|
+
classDepth = this.getIndentLevel(line);
|
|
70
|
+
const signature = line.trim();
|
|
71
|
+
symbols.push({
|
|
72
|
+
name: classMatch[3],
|
|
73
|
+
type: 'class',
|
|
74
|
+
signature,
|
|
75
|
+
line: lineNumber,
|
|
76
|
+
});
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
// Reset class context when we exit the class
|
|
80
|
+
if (currentClass && line.trim() === '}' && this.getIndentLevel(line) === classDepth) {
|
|
81
|
+
currentClass = null;
|
|
82
|
+
}
|
|
83
|
+
// Interface declarations
|
|
84
|
+
const interfaceMatch = line.match(/^(export\s+)?interface\s+(\w+)/);
|
|
85
|
+
if (interfaceMatch) {
|
|
86
|
+
symbols.push({
|
|
87
|
+
name: interfaceMatch[2],
|
|
88
|
+
type: 'interface',
|
|
89
|
+
signature: line.trim(),
|
|
90
|
+
line: lineNumber,
|
|
91
|
+
});
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
// Type declarations
|
|
95
|
+
const typeMatch = line.match(/^(export\s+)?type\s+(\w+)/);
|
|
96
|
+
if (typeMatch) {
|
|
97
|
+
symbols.push({
|
|
98
|
+
name: typeMatch[2],
|
|
99
|
+
type: 'type',
|
|
100
|
+
signature: line.trim(),
|
|
101
|
+
line: lineNumber,
|
|
102
|
+
});
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
// Function declarations
|
|
106
|
+
const functionMatch = line.match(/^(export\s+)?(async\s+)?function\s+(\w+)\s*(\([^)]*\))/);
|
|
107
|
+
if (functionMatch) {
|
|
108
|
+
symbols.push({
|
|
109
|
+
name: functionMatch[3],
|
|
110
|
+
type: 'function',
|
|
111
|
+
signature: line.trim(),
|
|
112
|
+
line: lineNumber,
|
|
113
|
+
});
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
// Arrow function exports
|
|
117
|
+
const arrowMatch = line.match(/^export\s+const\s+(\w+)\s*=\s*(\([^)]*\))?\s*=>/);
|
|
118
|
+
if (arrowMatch) {
|
|
119
|
+
symbols.push({
|
|
120
|
+
name: arrowMatch[1],
|
|
121
|
+
type: 'export',
|
|
122
|
+
signature: line.trim(),
|
|
123
|
+
line: lineNumber,
|
|
124
|
+
});
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
// Const exports (non-arrow)
|
|
128
|
+
const constExportMatch = line.match(/^export\s+const\s+(\w+)/);
|
|
129
|
+
if (constExportMatch && !line.includes('=>')) {
|
|
130
|
+
symbols.push({
|
|
131
|
+
name: constExportMatch[1],
|
|
132
|
+
type: 'export',
|
|
133
|
+
signature: line.trim(),
|
|
134
|
+
line: lineNumber,
|
|
135
|
+
});
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
// Method declarations (inside classes)
|
|
139
|
+
if (currentClass) {
|
|
140
|
+
const methodMatch = line.match(/^\s+(public\s+|private\s+|protected\s+)?(static\s+)?(async\s+)?(\w+)\s*(\([^)]*\))/);
|
|
141
|
+
if (methodMatch && !line.includes('function') && methodMatch[4] !== 'if' && methodMatch[4] !== 'for' && methodMatch[4] !== 'while') {
|
|
142
|
+
symbols.push({
|
|
143
|
+
name: methodMatch[4],
|
|
144
|
+
type: 'method',
|
|
145
|
+
signature: line.trim(),
|
|
146
|
+
line: lineNumber,
|
|
147
|
+
parentClass: currentClass,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return symbols;
|
|
153
|
+
}
|
|
154
|
+
parsePython(content) {
|
|
155
|
+
const symbols = [];
|
|
156
|
+
const lines = content.split('\n');
|
|
157
|
+
let currentClass = null;
|
|
158
|
+
for (let i = 0; i < lines.length; i++) {
|
|
159
|
+
const line = lines[i];
|
|
160
|
+
const lineNumber = i + 1;
|
|
161
|
+
// Class definitions
|
|
162
|
+
const classMatch = line.match(/^class\s+(\w+)(\([^)]*\))?:/);
|
|
163
|
+
if (classMatch) {
|
|
164
|
+
currentClass = classMatch[1];
|
|
165
|
+
symbols.push({
|
|
166
|
+
name: classMatch[1],
|
|
167
|
+
type: 'class',
|
|
168
|
+
signature: line.trim(),
|
|
169
|
+
line: lineNumber,
|
|
170
|
+
});
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
// Function definitions (top-level)
|
|
174
|
+
const functionMatch = line.match(/^def\s+(\w+)\s*(\([^)]*\))/);
|
|
175
|
+
if (functionMatch) {
|
|
176
|
+
currentClass = null; // Reset class context for top-level functions
|
|
177
|
+
symbols.push({
|
|
178
|
+
name: functionMatch[1],
|
|
179
|
+
type: 'function',
|
|
180
|
+
signature: line.trim(),
|
|
181
|
+
line: lineNumber,
|
|
182
|
+
});
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
// Method definitions (indented, inside classes)
|
|
186
|
+
const methodMatch = line.match(/^\s+def\s+(\w+)\s*(\([^)]*\))/);
|
|
187
|
+
if (methodMatch && currentClass) {
|
|
188
|
+
symbols.push({
|
|
189
|
+
name: methodMatch[1],
|
|
190
|
+
type: 'method',
|
|
191
|
+
signature: line.trim(),
|
|
192
|
+
line: lineNumber,
|
|
193
|
+
parentClass: currentClass,
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return symbols;
|
|
198
|
+
}
|
|
199
|
+
parseJava(content) {
|
|
200
|
+
const symbols = [];
|
|
201
|
+
const lines = content.split('\n');
|
|
202
|
+
let currentClass = null;
|
|
203
|
+
let classDepth = 0;
|
|
204
|
+
for (let i = 0; i < lines.length; i++) {
|
|
205
|
+
const line = lines[i];
|
|
206
|
+
const lineNumber = i + 1;
|
|
207
|
+
// Class declarations
|
|
208
|
+
const classMatch = line.match(/^\s*(public\s+|private\s+|protected\s+)?(abstract\s+|final\s+)?class\s+(\w+)(\s+extends\s+(\w+))?/);
|
|
209
|
+
if (classMatch) {
|
|
210
|
+
currentClass = classMatch[3];
|
|
211
|
+
classDepth = this.getIndentLevel(line);
|
|
212
|
+
symbols.push({
|
|
213
|
+
name: classMatch[3],
|
|
214
|
+
type: 'class',
|
|
215
|
+
signature: line.trim(),
|
|
216
|
+
line: lineNumber,
|
|
217
|
+
});
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
// Interface declarations
|
|
221
|
+
const interfaceMatch = line.match(/^\s*(public\s+)?interface\s+(\w+)/);
|
|
222
|
+
if (interfaceMatch) {
|
|
223
|
+
symbols.push({
|
|
224
|
+
name: interfaceMatch[2],
|
|
225
|
+
type: 'interface',
|
|
226
|
+
signature: line.trim(),
|
|
227
|
+
line: lineNumber,
|
|
228
|
+
});
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
// Reset class context when we exit
|
|
232
|
+
if (currentClass && line.trim() === '}' && this.getIndentLevel(line) === classDepth) {
|
|
233
|
+
currentClass = null;
|
|
234
|
+
}
|
|
235
|
+
// Method declarations (inside classes)
|
|
236
|
+
if (currentClass) {
|
|
237
|
+
const methodMatch = line.match(/^\s+(public\s+|private\s+|protected\s+)?(static\s+)?(final\s+)?(\w+)\s+(\w+)\s*(\([^)]*\))/);
|
|
238
|
+
if (methodMatch && !line.includes('class') && !line.includes('interface')) {
|
|
239
|
+
symbols.push({
|
|
240
|
+
name: methodMatch[5],
|
|
241
|
+
type: 'method',
|
|
242
|
+
signature: line.trim(),
|
|
243
|
+
line: lineNumber,
|
|
244
|
+
parentClass: currentClass,
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
return symbols;
|
|
250
|
+
}
|
|
251
|
+
getIndentLevel(line) {
|
|
252
|
+
const match = line.match(/^(\s*)/);
|
|
253
|
+
return match ? match[1].length : 0;
|
|
254
|
+
}
|
|
255
|
+
normalizePath(filePath) {
|
|
256
|
+
return filePath.replace(/\\/g, '/');
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=inspect-symbol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect-symbol.js","sourceRoot":"","sources":["../../src/tools/inspect-symbol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Result of a validation operation
|
|
3
|
+
*/
|
|
4
|
+
export interface ValidationResult {
|
|
5
|
+
valid: boolean;
|
|
6
|
+
error?: string;
|
|
7
|
+
suggestion?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Intelligent tool validator that catches common mistakes before execution
|
|
11
|
+
*/
|
|
12
|
+
export declare class ToolValidator {
|
|
13
|
+
/**
|
|
14
|
+
* Validate edit_file parameters before execution
|
|
15
|
+
*
|
|
16
|
+
* @param filePath - Path to the file to edit
|
|
17
|
+
* @param searchPattern - The exact text to search for
|
|
18
|
+
* @param replacement - The replacement text
|
|
19
|
+
* @param cwd - Current working directory
|
|
20
|
+
* @returns Validation result with error and suggestion if invalid
|
|
21
|
+
*/
|
|
22
|
+
validateEditFile(filePath: string, searchPattern: string, replacement: string, cwd: string): Promise<ValidationResult>;
|
|
23
|
+
/**
|
|
24
|
+
* Check if pattern exists in file content
|
|
25
|
+
*
|
|
26
|
+
* @param content - File content to search
|
|
27
|
+
* @param pattern - Pattern to find
|
|
28
|
+
* @returns Object with exists flag and occurrence count
|
|
29
|
+
*/
|
|
30
|
+
private checkPatternExists;
|
|
31
|
+
/**
|
|
32
|
+
* Check if pattern exists with different whitespace
|
|
33
|
+
* This helps detect indentation mismatches
|
|
34
|
+
*
|
|
35
|
+
* @param content - File content to search
|
|
36
|
+
* @param pattern - Pattern to find
|
|
37
|
+
* @returns True if pattern exists with different whitespace
|
|
38
|
+
*/
|
|
39
|
+
private checkWhitespaceMismatch;
|
|
40
|
+
/**
|
|
41
|
+
* Generate a validation result with appropriate error message and suggestion
|
|
42
|
+
*
|
|
43
|
+
* @param issue - Type of validation issue
|
|
44
|
+
* @param details - Additional details about the issue
|
|
45
|
+
* @returns ValidationResult with error and suggestion
|
|
46
|
+
*/
|
|
47
|
+
private generateValidationResult;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/tools/validation.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAeD;;GAEG;AACH,qBAAa,aAAa;IACxB;;;;;;;;OAQG;IACG,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,gBAAgB,CAAC;IA+C5B;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;;;;;;OAOG;IACH,OAAO,CAAC,uBAAuB;IAa/B;;;;;;OAMG;IACH,OAAO,CAAC,wBAAwB;CAqCjC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
/**
|
|
4
|
+
* Intelligent tool validator that catches common mistakes before execution
|
|
5
|
+
*/
|
|
6
|
+
export class ToolValidator {
|
|
7
|
+
/**
|
|
8
|
+
* Validate edit_file parameters before execution
|
|
9
|
+
*
|
|
10
|
+
* @param filePath - Path to the file to edit
|
|
11
|
+
* @param searchPattern - The exact text to search for
|
|
12
|
+
* @param replacement - The replacement text
|
|
13
|
+
* @param cwd - Current working directory
|
|
14
|
+
* @returns Validation result with error and suggestion if invalid
|
|
15
|
+
*/
|
|
16
|
+
async validateEditFile(filePath, searchPattern, replacement, cwd) {
|
|
17
|
+
try {
|
|
18
|
+
// Resolve full path
|
|
19
|
+
const fullPath = path.resolve(cwd, filePath);
|
|
20
|
+
// Check if file exists
|
|
21
|
+
if (!fs.existsSync(fullPath)) {
|
|
22
|
+
return {
|
|
23
|
+
valid: false,
|
|
24
|
+
error: `File not found: ${filePath}`,
|
|
25
|
+
suggestion: 'Verify the file path is correct and the file exists.',
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
// Read file content
|
|
29
|
+
const content = fs.readFileSync(fullPath, 'utf-8');
|
|
30
|
+
// Check if pattern exists
|
|
31
|
+
const patternCheck = this.checkPatternExists(content, searchPattern);
|
|
32
|
+
if (!patternCheck.exists) {
|
|
33
|
+
// Check for whitespace mismatch
|
|
34
|
+
if (this.checkWhitespaceMismatch(content, searchPattern)) {
|
|
35
|
+
return this.generateValidationResult('whitespace_mismatch', {});
|
|
36
|
+
}
|
|
37
|
+
return this.generateValidationResult('not_found', {});
|
|
38
|
+
}
|
|
39
|
+
// Check for multiple matches
|
|
40
|
+
if (patternCheck.count > 1) {
|
|
41
|
+
return this.generateValidationResult('multiple_matches', {
|
|
42
|
+
count: patternCheck.count,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
// Validation passed
|
|
46
|
+
return { valid: true };
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
return {
|
|
50
|
+
valid: false,
|
|
51
|
+
error: `Validation error: ${error instanceof Error ? error.message : String(error)}`,
|
|
52
|
+
suggestion: 'Check the file path and ensure you have read permissions.',
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Check if pattern exists in file content
|
|
58
|
+
*
|
|
59
|
+
* @param content - File content to search
|
|
60
|
+
* @param pattern - Pattern to find
|
|
61
|
+
* @returns Object with exists flag and occurrence count
|
|
62
|
+
*/
|
|
63
|
+
checkPatternExists(content, pattern) {
|
|
64
|
+
if (!content.includes(pattern)) {
|
|
65
|
+
return { exists: false, count: 0 };
|
|
66
|
+
}
|
|
67
|
+
// Count occurrences by splitting and measuring array length
|
|
68
|
+
const count = content.split(pattern).length - 1;
|
|
69
|
+
return { exists: true, count };
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Check if pattern exists with different whitespace
|
|
73
|
+
* This helps detect indentation mismatches
|
|
74
|
+
*
|
|
75
|
+
* @param content - File content to search
|
|
76
|
+
* @param pattern - Pattern to find
|
|
77
|
+
* @returns True if pattern exists with different whitespace
|
|
78
|
+
*/
|
|
79
|
+
checkWhitespaceMismatch(content, pattern) {
|
|
80
|
+
// Normalize whitespace: replace all whitespace sequences with single space and trim
|
|
81
|
+
const normalizeWhitespace = (text) => {
|
|
82
|
+
return text.replace(/\s+/g, ' ').trim();
|
|
83
|
+
};
|
|
84
|
+
const normalizedContent = normalizeWhitespace(content);
|
|
85
|
+
const normalizedPattern = normalizeWhitespace(pattern);
|
|
86
|
+
// If normalized versions match, it's a whitespace issue
|
|
87
|
+
return normalizedContent.includes(normalizedPattern);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Generate a validation result with appropriate error message and suggestion
|
|
91
|
+
*
|
|
92
|
+
* @param issue - Type of validation issue
|
|
93
|
+
* @param details - Additional details about the issue
|
|
94
|
+
* @returns ValidationResult with error and suggestion
|
|
95
|
+
*/
|
|
96
|
+
generateValidationResult(issue, details) {
|
|
97
|
+
switch (issue) {
|
|
98
|
+
case 'not_found':
|
|
99
|
+
return {
|
|
100
|
+
valid: false,
|
|
101
|
+
error: 'Pattern not found in file.',
|
|
102
|
+
suggestion: 'Read the file again using read_file to ensure you have the current content. The file may have been modified.',
|
|
103
|
+
};
|
|
104
|
+
case 'whitespace_mismatch':
|
|
105
|
+
return {
|
|
106
|
+
valid: false,
|
|
107
|
+
error: 'Pattern found but whitespace does not match exactly.',
|
|
108
|
+
suggestion: 'The content exists but indentation differs. Read the file again and copy the exact text including all spaces, tabs, and newlines.',
|
|
109
|
+
};
|
|
110
|
+
case 'multiple_matches':
|
|
111
|
+
return {
|
|
112
|
+
valid: false,
|
|
113
|
+
error: `Pattern appears ${details.count} times in the file. It must be unique.`,
|
|
114
|
+
suggestion: 'Include more surrounding context (2-3 lines before and after the target) to make the pattern unique.',
|
|
115
|
+
};
|
|
116
|
+
default:
|
|
117
|
+
return {
|
|
118
|
+
valid: false,
|
|
119
|
+
error: 'Unknown validation error.',
|
|
120
|
+
suggestion: 'Please try again or contact support.',
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/tools/validation.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -59,6 +59,11 @@ export interface ApprovalData {
|
|
|
59
59
|
operationType?: 'write_file' | 'edit_file' | 'execute_command';
|
|
60
60
|
operationDetails?: Record<string, any>;
|
|
61
61
|
}
|
|
62
|
+
export interface ToolCall {
|
|
63
|
+
id: string;
|
|
64
|
+
name: string;
|
|
65
|
+
arguments: Record<string, any>;
|
|
66
|
+
}
|
|
62
67
|
export interface Message {
|
|
63
68
|
id: string;
|
|
64
69
|
role: 'user' | 'assistant' | 'system' | 'tool';
|
|
@@ -68,6 +73,10 @@ export interface Message {
|
|
|
68
73
|
shouldStream?: boolean;
|
|
69
74
|
isCommandMode?: boolean;
|
|
70
75
|
approval?: ApprovalData;
|
|
76
|
+
tool_call_id?: string;
|
|
77
|
+
tool_calls?: ToolCall[];
|
|
78
|
+
thoughts?: string[];
|
|
79
|
+
thinkingDuration?: number;
|
|
71
80
|
}
|
|
72
81
|
export interface ToolCall {
|
|
73
82
|
name: string;
|
|
@@ -84,4 +93,8 @@ export interface AppState {
|
|
|
84
93
|
isLoading: boolean;
|
|
85
94
|
currentModel: string;
|
|
86
95
|
}
|
|
96
|
+
export interface TokenUsage {
|
|
97
|
+
currentTokens: number;
|
|
98
|
+
maxTokens: number;
|
|
99
|
+
}
|
|
87
100
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,QAAQ,GAAG,eAAe,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC;IACtF,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,OAAO,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxE,aAAa,CAAC,EAAE,YAAY,GAAG,WAAW,GAAG,iBAAiB,CAAC;IAC/D,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,8 @@ interface AppProps {
|
|
|
6
6
|
initialPlanMode: boolean;
|
|
7
7
|
onResponseReceived: (callback: (message: string) => void) => void;
|
|
8
8
|
onResponseStream: (callback: (chunk: string) => void) => void;
|
|
9
|
+
onThoughtStream: (callback: (thought: string) => void) => void;
|
|
10
|
+
onThoughtComplete: (callback: (durationSeconds: number) => void) => void;
|
|
9
11
|
onPickerSetup: (callback: (options: {
|
|
10
12
|
message: string;
|
|
11
13
|
choices: Array<{
|
|
@@ -46,6 +48,7 @@ interface AppProps {
|
|
|
46
48
|
onCommandModeChange: (callback: (commandMode: boolean) => void) => void;
|
|
47
49
|
onToggleCommandMode: () => void;
|
|
48
50
|
onCwdChange: (callback: (cwd: string) => void) => void;
|
|
51
|
+
onModelChange: (callback: (modelName: string) => void) => void;
|
|
49
52
|
onSubshellContextChange: (callback: (context: SubshellContext) => void) => void;
|
|
50
53
|
onPasswordRequest: (callback: (message: string) => Promise<string>) => void;
|
|
51
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../../src/ui/components/App.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../../src/ui/components/App.tsx"],"names":[],"mappings":"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"}
|