@vybestack/llxprt-code-core 0.1.20 → 0.1.22
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/README.md +31 -0
- package/dist/src/auth/types.d.ts +4 -4
- package/dist/src/code_assist/codeAssist.d.ts +1 -1
- package/dist/src/code_assist/codeAssist.js +5 -2
- package/dist/src/code_assist/codeAssist.js.map +1 -1
- package/dist/src/code_assist/converter.d.ts +2 -1
- package/dist/src/code_assist/converter.js +6 -4
- package/dist/src/code_assist/converter.js.map +1 -1
- package/dist/src/code_assist/oauth2.d.ts +1 -0
- package/dist/src/code_assist/oauth2.js +32 -15
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/server.d.ts +1 -2
- package/dist/src/code_assist/server.js +10 -5
- package/dist/src/code_assist/server.js.map +1 -1
- package/dist/src/code_assist/setup.js +2 -1
- package/dist/src/code_assist/setup.js.map +1 -1
- package/dist/src/config/config.d.ts +0 -3
- package/dist/src/config/config.js +8 -10
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/core/client.js +11 -2
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/coreToolScheduler.d.ts +1 -1
- package/dist/src/core/coreToolScheduler.js +9 -5
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/geminiChat.js +45 -4
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/logger.d.ts +22 -1
- package/dist/src/core/logger.js +103 -17
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/ide/constants.d.ts +6 -0
- package/dist/src/ide/constants.js +7 -0
- package/dist/src/ide/constants.js.map +1 -0
- package/dist/src/ide/ide-client.d.ts +10 -10
- package/dist/src/ide/ide-client.js +69 -58
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/ide/ide-installer.js +5 -4
- package/dist/src/ide/ide-installer.js.map +1 -1
- package/dist/src/ide/process-utils.d.ts +14 -0
- package/dist/src/ide/process-utils.js +57 -0
- package/dist/src/ide/process-utils.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/oauth-provider.js +176 -58
- package/dist/src/mcp/oauth-provider.js.map +1 -1
- package/dist/src/mcp/oauth-utils.d.ts +3 -1
- package/dist/src/mcp/oauth-utils.js +52 -22
- package/dist/src/mcp/oauth-utils.js.map +1 -1
- package/dist/src/providers/anthropic/AnthropicProvider.js +164 -115
- package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
- package/dist/src/providers/gemini/GeminiProvider.js +6 -3
- package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
- package/dist/src/providers/openai/OpenAIProvider.js +227 -53
- package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
- package/dist/src/services/shellExecutionService.d.ts +24 -0
- package/dist/src/services/shellExecutionService.js +43 -52
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +2 -2
- package/dist/src/telemetry/index.js +2 -2
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +2 -1
- package/dist/src/telemetry/loggers.js +14 -0
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/types.d.ts +8 -1
- package/dist/src/telemetry/types.js +12 -0
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/test-utils/tools.d.ts +21 -6
- package/dist/src/test-utils/tools.js +77 -12
- package/dist/src/test-utils/tools.js.map +1 -1
- package/dist/src/tools/edit.d.ts +1 -1
- package/dist/src/tools/edit.js +45 -19
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/mcp-client.js +46 -31
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-tool.js +19 -0
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/shell.js +25 -8
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/tool-error.d.ts +1 -0
- package/dist/src/tools/tool-error.js +1 -0
- package/dist/src/tools/tool-error.js.map +1 -1
- package/dist/src/tools/tools.d.ts +53 -75
- package/dist/src/tools/tools.js +111 -110
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/web-search-invocation.d.ts +51 -0
- package/dist/src/tools/web-search-invocation.js +132 -0
- package/dist/src/tools/web-search-invocation.js.map +1 -0
- package/dist/src/tools/web-search.d.ts +6 -36
- package/dist/src/tools/web-search.js +6 -129
- package/dist/src/tools/web-search.js.map +1 -1
- package/dist/src/tools/write-file.d.ts +17 -10
- package/dist/src/tools/write-file.js +125 -127
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/utils/filesearch/crawler.d.ts +15 -0
- package/dist/src/utils/filesearch/crawler.js +50 -0
- package/dist/src/utils/filesearch/crawler.js.map +1 -0
- package/dist/src/utils/filesearch/fileSearch.d.ts +9 -53
- package/dist/src/utils/filesearch/fileSearch.js +62 -117
- package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
- package/dist/src/utils/filesearch/ignore.d.ts +7 -0
- package/dist/src/utils/filesearch/ignore.js +25 -0
- package/dist/src/utils/filesearch/ignore.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.js +2 -6
- package/dist/src/utils/memoryImportProcessor.js.map +1 -1
- package/dist/src/utils/paths.d.ts +7 -0
- package/dist/src/utils/paths.js +15 -0
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/shell-utils.d.ts +39 -0
- package/dist/src/utils/shell-utils.js +72 -2
- package/dist/src/utils/shell-utils.js.map +1 -1
- package/dist/src/utils/workspaceContext.d.ts +22 -7
- package/dist/src/utils/workspaceContext.js +81 -55
- package/dist/src/utils/workspaceContext.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,7 +7,7 @@ import fs from 'fs';
|
|
|
7
7
|
import path from 'path';
|
|
8
8
|
import * as Diff from 'diff';
|
|
9
9
|
import { ApprovalMode } from '../config/config.js';
|
|
10
|
-
import {
|
|
10
|
+
import { BaseDeclarativeTool, BaseToolInvocation, ToolConfirmationOutcome, Kind, } from './tools.js';
|
|
11
11
|
import { ToolErrorType } from './tool-error.js';
|
|
12
12
|
import { SchemaValidator } from '../utils/schemaValidator.js';
|
|
13
13
|
import { makeRelative, shortenPath } from '../utils/paths.js';
|
|
@@ -39,87 +39,79 @@ function getEmojiFilter(config) {
|
|
|
39
39
|
return new EmojiFilter({ mode: filterMode });
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
|
-
*
|
|
42
|
+
* Gets corrected file content using AI correction services
|
|
43
43
|
*/
|
|
44
|
-
export
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
properties: {
|
|
52
|
-
file_path: {
|
|
53
|
-
description: "The absolute path to the file to write to (e.g., '/home/user/project/file.txt'). Relative paths are not supported.",
|
|
54
|
-
type: 'string',
|
|
55
|
-
},
|
|
56
|
-
content: {
|
|
57
|
-
description: 'The content to write to the file.',
|
|
58
|
-
type: 'string',
|
|
59
|
-
},
|
|
60
|
-
},
|
|
61
|
-
required: ['file_path', 'content'],
|
|
62
|
-
type: 'object',
|
|
63
|
-
});
|
|
64
|
-
this.config = config;
|
|
65
|
-
}
|
|
66
|
-
toolLocations(params) {
|
|
67
|
-
return [{ path: params.file_path }];
|
|
44
|
+
export async function getCorrectedFileContent(filePath, proposedContent, config, abortSignal) {
|
|
45
|
+
let originalContent = '';
|
|
46
|
+
let fileExists = false;
|
|
47
|
+
let correctedContent = proposedContent;
|
|
48
|
+
try {
|
|
49
|
+
originalContent = fs.readFileSync(filePath, 'utf8');
|
|
50
|
+
fileExists = true; // File exists and was read
|
|
68
51
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
const filePath = params.file_path;
|
|
75
|
-
if (!path.isAbsolute(filePath)) {
|
|
76
|
-
return `File path must be absolute: ${filePath}`;
|
|
52
|
+
catch (err) {
|
|
53
|
+
if (isNodeError(err) && err.code === 'ENOENT') {
|
|
54
|
+
fileExists = false;
|
|
55
|
+
originalContent = '';
|
|
77
56
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
if (stats.isDirectory()) {
|
|
89
|
-
return `Path is a directory, not a file: ${filePath}`;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
catch (statError) {
|
|
94
|
-
// If fs.existsSync is true but lstatSync fails (e.g., permissions, race condition where file is deleted)
|
|
95
|
-
// this indicates an issue with accessing the path that should be reported.
|
|
96
|
-
return `Error accessing path properties for validation: ${filePath}. Reason: ${statError instanceof Error ? statError.message : String(statError)}`;
|
|
57
|
+
else {
|
|
58
|
+
// File exists but could not be read (permissions, etc.)
|
|
59
|
+
fileExists = true; // Mark as existing but problematic
|
|
60
|
+
originalContent = ''; // Can't use its content
|
|
61
|
+
const error = {
|
|
62
|
+
message: getErrorMessage(err),
|
|
63
|
+
code: isNodeError(err) ? err.code : undefined,
|
|
64
|
+
};
|
|
65
|
+
// Return early as we can't proceed with content correction meaningfully
|
|
66
|
+
return { originalContent, correctedContent, fileExists, error };
|
|
97
67
|
}
|
|
98
|
-
return null;
|
|
99
68
|
}
|
|
100
|
-
|
|
101
|
-
|
|
69
|
+
// If readError is set, we have returned.
|
|
70
|
+
// So, file was either read successfully (fileExists=true, originalContent set)
|
|
71
|
+
// or it was ENOENT (fileExists=false, originalContent='').
|
|
72
|
+
if (fileExists) {
|
|
73
|
+
// This implies originalContent is available
|
|
74
|
+
const { params: correctedParams } = await ensureCorrectEdit(filePath, originalContent, {
|
|
75
|
+
old_string: originalContent, // Treat entire current content as old_string
|
|
76
|
+
new_string: proposedContent,
|
|
77
|
+
file_path: filePath,
|
|
78
|
+
}, config.getGeminiClient(), abortSignal);
|
|
79
|
+
correctedContent = correctedParams.new_string;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
// This implies new file (ENOENT)
|
|
83
|
+
correctedContent = await ensureCorrectFileContent(proposedContent, config.getGeminiClient(), abortSignal);
|
|
84
|
+
}
|
|
85
|
+
return { originalContent, correctedContent, fileExists };
|
|
86
|
+
}
|
|
87
|
+
class WriteFileToolInvocation extends BaseToolInvocation {
|
|
88
|
+
config;
|
|
89
|
+
constructor(config, params) {
|
|
90
|
+
super(params);
|
|
91
|
+
this.config = config;
|
|
92
|
+
}
|
|
93
|
+
toolLocations() {
|
|
94
|
+
return [{ path: this.params.file_path }];
|
|
95
|
+
}
|
|
96
|
+
getDescription() {
|
|
97
|
+
if (!this.params.file_path || !this.params.content) {
|
|
102
98
|
return `Model did not provide valid parameters for write file tool`;
|
|
103
99
|
}
|
|
104
|
-
const relativePath = makeRelative(params.file_path, this.config.getTargetDir());
|
|
100
|
+
const relativePath = makeRelative(this.params.file_path, this.config.getTargetDir());
|
|
105
101
|
return `Writing to ${shortenPath(relativePath)}`;
|
|
106
102
|
}
|
|
107
103
|
/**
|
|
108
104
|
* Handles the confirmation prompt for the WriteFile tool.
|
|
109
105
|
*/
|
|
110
|
-
async shouldConfirmExecute(
|
|
106
|
+
async shouldConfirmExecute(abortSignal) {
|
|
111
107
|
const approvalMode = this.config.getApprovalMode();
|
|
112
108
|
if (approvalMode === ApprovalMode.AUTO_EDIT ||
|
|
113
109
|
approvalMode === ApprovalMode.YOLO) {
|
|
114
110
|
return false;
|
|
115
111
|
}
|
|
116
|
-
const validationError = this.validateToolParams(params);
|
|
117
|
-
if (validationError) {
|
|
118
|
-
return false;
|
|
119
|
-
}
|
|
120
112
|
// Apply emoji filtering to params.content FIRST, before any processing
|
|
121
113
|
const filter = getEmojiFilter(this.config);
|
|
122
|
-
const filterResult = filter.filterFileContent(params.content, 'write_file');
|
|
114
|
+
const filterResult = filter.filterFileContent(this.params.content, 'write_file');
|
|
123
115
|
// If blocked in error mode, return false to prevent confirmation
|
|
124
116
|
if (filterResult.blocked) {
|
|
125
117
|
return false;
|
|
@@ -127,16 +119,16 @@ export class WriteFileTool extends BaseTool {
|
|
|
127
119
|
// Update params.content with filtered content for all downstream processing
|
|
128
120
|
const filteredParamsContent = typeof filterResult.filtered === 'string'
|
|
129
121
|
? filterResult.filtered
|
|
130
|
-
: params.content;
|
|
131
|
-
const correctedContentResult = await this.
|
|
132
|
-
abortSignal);
|
|
122
|
+
: this.params.content;
|
|
123
|
+
const correctedContentResult = await getCorrectedFileContent(this.params.file_path, filteredParamsContent, // Use filtered content
|
|
124
|
+
this.config, abortSignal);
|
|
133
125
|
if (correctedContentResult.error) {
|
|
134
126
|
// If file exists but couldn't be read, we can't show a diff for confirmation.
|
|
135
127
|
return false;
|
|
136
128
|
}
|
|
137
129
|
const { originalContent, correctedContent } = correctedContentResult;
|
|
138
|
-
const relativePath = makeRelative(params.file_path, this.config.getTargetDir());
|
|
139
|
-
const fileName = path.basename(params.file_path);
|
|
130
|
+
const relativePath = makeRelative(this.params.file_path, this.config.getTargetDir());
|
|
131
|
+
const fileName = path.basename(this.params.file_path);
|
|
140
132
|
const fileDiff = Diff.createPatch(fileName, originalContent, // Original content (empty if new file or unreadable)
|
|
141
133
|
correctedContent, // Content after correction and emoji filtering
|
|
142
134
|
'Current', 'Proposed', DEFAULT_DIFF_OPTIONS);
|
|
@@ -144,13 +136,13 @@ export class WriteFileTool extends BaseTool {
|
|
|
144
136
|
const ideConfirmation = this.config.getIdeMode() &&
|
|
145
137
|
ideClient &&
|
|
146
138
|
ideClient.getConnectionStatus().status === IDEConnectionStatus.Connected
|
|
147
|
-
? ideClient.openDiff(params.file_path, correctedContent)
|
|
139
|
+
? ideClient.openDiff(this.params.file_path, correctedContent)
|
|
148
140
|
: undefined;
|
|
149
141
|
const confirmationDetails = {
|
|
150
142
|
type: 'edit',
|
|
151
143
|
title: `Confirm Write: ${shortenPath(relativePath)}`,
|
|
152
144
|
fileName,
|
|
153
|
-
filePath: params.file_path,
|
|
145
|
+
filePath: this.params.file_path,
|
|
154
146
|
fileDiff,
|
|
155
147
|
originalContent,
|
|
156
148
|
newContent: correctedContent,
|
|
@@ -161,33 +153,22 @@ export class WriteFileTool extends BaseTool {
|
|
|
161
153
|
if (ideConfirmation) {
|
|
162
154
|
const result = await ideConfirmation;
|
|
163
155
|
if (result.status === 'accepted' && result.content) {
|
|
164
|
-
params.content = result.content;
|
|
156
|
+
this.params.content = result.content;
|
|
165
157
|
}
|
|
166
158
|
}
|
|
167
159
|
else {
|
|
168
160
|
// Update params.content with the filtered content so execute() uses it
|
|
169
|
-
params.content = correctedContent;
|
|
161
|
+
this.params.content = correctedContent;
|
|
170
162
|
}
|
|
171
163
|
},
|
|
172
164
|
ideConfirmation,
|
|
173
165
|
};
|
|
174
166
|
return confirmationDetails;
|
|
175
167
|
}
|
|
176
|
-
async execute(
|
|
177
|
-
const validationError = this.validateToolParams(params);
|
|
178
|
-
if (validationError) {
|
|
179
|
-
return {
|
|
180
|
-
llmContent: `Could not write file due to invalid parameters: ${validationError}`,
|
|
181
|
-
returnDisplay: validationError,
|
|
182
|
-
error: {
|
|
183
|
-
message: validationError,
|
|
184
|
-
type: ToolErrorType.INVALID_TOOL_PARAMS,
|
|
185
|
-
},
|
|
186
|
-
};
|
|
187
|
-
}
|
|
168
|
+
async execute(abortSignal) {
|
|
188
169
|
// Apply emoji filtering to file content
|
|
189
170
|
const filter = getEmojiFilter(this.config);
|
|
190
|
-
const filterResult = filter.filterFileContent(params.content, 'write_file');
|
|
171
|
+
const filterResult = filter.filterFileContent(this.params.content, 'write_file');
|
|
191
172
|
// Handle blocking in error mode
|
|
192
173
|
if (filterResult.blocked) {
|
|
193
174
|
return {
|
|
@@ -201,10 +182,10 @@ export class WriteFileTool extends BaseTool {
|
|
|
201
182
|
}
|
|
202
183
|
// Use filtered content
|
|
203
184
|
const filteredParams = {
|
|
204
|
-
...params,
|
|
185
|
+
...this.params,
|
|
205
186
|
content: filterResult.filtered,
|
|
206
187
|
};
|
|
207
|
-
const correctedContentResult = await
|
|
188
|
+
const correctedContentResult = await getCorrectedFileContent(filteredParams.file_path, filteredParams.content, this.config, abortSignal);
|
|
208
189
|
if (correctedContentResult.error) {
|
|
209
190
|
const errDetails = correctedContentResult.error;
|
|
210
191
|
const errorMsg = errDetails.code
|
|
@@ -338,58 +319,75 @@ export class WriteFileTool extends BaseTool {
|
|
|
338
319
|
};
|
|
339
320
|
}
|
|
340
321
|
}
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Implementation of the WriteFile tool logic
|
|
325
|
+
*/
|
|
326
|
+
export class WriteFileTool extends BaseDeclarativeTool {
|
|
327
|
+
config;
|
|
328
|
+
static Name = 'write_file';
|
|
329
|
+
constructor(config) {
|
|
330
|
+
super(WriteFileTool.Name, 'WriteFile', `Writes content to a specified file in the local filesystem.
|
|
331
|
+
|
|
332
|
+
The user has the ability to modify \`content\`. If modified, this will be stated in the response.`, Kind.Edit, {
|
|
333
|
+
properties: {
|
|
334
|
+
file_path: {
|
|
335
|
+
description: "The absolute path to the file to write to (e.g., '/home/user/project/file.txt'). Relative paths are not supported.",
|
|
336
|
+
type: 'string',
|
|
337
|
+
},
|
|
338
|
+
content: {
|
|
339
|
+
description: 'The content to write to the file.',
|
|
340
|
+
type: 'string',
|
|
341
|
+
},
|
|
342
|
+
},
|
|
343
|
+
required: ['file_path', 'content'],
|
|
344
|
+
type: 'object',
|
|
345
|
+
});
|
|
346
|
+
this.config = config;
|
|
347
|
+
}
|
|
348
|
+
validateToolParams(params) {
|
|
349
|
+
const errors = SchemaValidator.validate(this.schema.parametersJsonSchema, params);
|
|
350
|
+
if (errors) {
|
|
351
|
+
return errors;
|
|
348
352
|
}
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
originalContent = '';
|
|
353
|
-
}
|
|
354
|
-
else {
|
|
355
|
-
// File exists but could not be read (permissions, etc.)
|
|
356
|
-
fileExists = true; // Mark as existing but problematic
|
|
357
|
-
originalContent = ''; // Can't use its content
|
|
358
|
-
const error = {
|
|
359
|
-
message: getErrorMessage(err),
|
|
360
|
-
code: isNodeError(err) ? err.code : undefined,
|
|
361
|
-
};
|
|
362
|
-
// Return early as we can't proceed with content correction meaningfully
|
|
363
|
-
return { originalContent, correctedContent, fileExists, error };
|
|
364
|
-
}
|
|
353
|
+
const filePath = params.file_path;
|
|
354
|
+
if (!path.isAbsolute(filePath)) {
|
|
355
|
+
return `File path must be absolute: ${filePath}`;
|
|
365
356
|
}
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
// This implies originalContent is available
|
|
371
|
-
const { params: correctedParams } = await ensureCorrectEdit(filePath, originalContent, {
|
|
372
|
-
old_string: originalContent, // Treat entire current content as old_string
|
|
373
|
-
new_string: proposedContent,
|
|
374
|
-
file_path: filePath,
|
|
375
|
-
}, this.config.getGeminiClient(), abortSignal);
|
|
376
|
-
correctedContent = correctedParams.new_string;
|
|
357
|
+
const workspaceContext = this.config.getWorkspaceContext();
|
|
358
|
+
if (!workspaceContext.isPathWithinWorkspace(filePath)) {
|
|
359
|
+
const directories = workspaceContext.getDirectories();
|
|
360
|
+
return `File path must be within one of the workspace directories: ${directories.join(', ')}`;
|
|
377
361
|
}
|
|
378
|
-
|
|
379
|
-
// This
|
|
380
|
-
|
|
362
|
+
try {
|
|
363
|
+
// This check should be performed only if the path exists.
|
|
364
|
+
// If it doesn't exist, it's a new file, which is valid for writing.
|
|
365
|
+
if (fs.existsSync(filePath)) {
|
|
366
|
+
const stats = fs.lstatSync(filePath);
|
|
367
|
+
if (stats.isDirectory()) {
|
|
368
|
+
return `Path is a directory, not a file: ${filePath}`;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
381
371
|
}
|
|
382
|
-
|
|
372
|
+
catch (statError) {
|
|
373
|
+
// If fs.existsSync is true but lstatSync fails (e.g., permissions, race condition where file is deleted)
|
|
374
|
+
// this indicates an issue with accessing the path that should be reported.
|
|
375
|
+
return `Error accessing path properties for validation: ${filePath}. Reason: ${statError instanceof Error ? statError.message : String(statError)}`;
|
|
376
|
+
}
|
|
377
|
+
return null;
|
|
378
|
+
}
|
|
379
|
+
createInvocation(params) {
|
|
380
|
+
return new WriteFileToolInvocation(this.config, params);
|
|
383
381
|
}
|
|
384
382
|
getModifyContext(abortSignal) {
|
|
385
383
|
return {
|
|
386
384
|
getFilePath: (params) => params.file_path,
|
|
387
385
|
getCurrentContent: async (params) => {
|
|
388
|
-
const correctedContentResult = await
|
|
386
|
+
const correctedContentResult = await getCorrectedFileContent(params.file_path, params.content, this.config, abortSignal);
|
|
389
387
|
return correctedContentResult.originalContent;
|
|
390
388
|
},
|
|
391
389
|
getProposedContent: async (params) => {
|
|
392
|
-
const correctedContentResult = await
|
|
390
|
+
const correctedContentResult = await getCorrectedFileContent(params.file_path, params.content, this.config, abortSignal);
|
|
393
391
|
return correctedContentResult.correctedContent;
|
|
394
392
|
},
|
|
395
393
|
createUpdatedParams: (_oldContent, modifiedProposedContent, originalParams) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-file.js","sourceRoot":"","sources":["../../../src/tools/write-file.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"write-file.js","sourceRoot":"","sources":["../../../src/tools/write-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Ignore } from './ignore.js';
|
|
7
|
+
export interface CrawlOptions {
|
|
8
|
+
crawlDirectory: string;
|
|
9
|
+
cwd: string;
|
|
10
|
+
maxDepth?: number;
|
|
11
|
+
ignore: Ignore;
|
|
12
|
+
cache: boolean;
|
|
13
|
+
cacheTtl: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function crawl(options: CrawlOptions): Promise<string[]>;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
import { fdir } from 'fdir';
|
|
8
|
+
import * as cache from './crawlCache.js';
|
|
9
|
+
function toPosixPath(p) {
|
|
10
|
+
return p.split(path.sep).join(path.posix.sep);
|
|
11
|
+
}
|
|
12
|
+
export async function crawl(options) {
|
|
13
|
+
if (options.cache) {
|
|
14
|
+
const cacheKey = cache.getCacheKey(options.crawlDirectory, options.ignore.getFingerprint(), options.maxDepth);
|
|
15
|
+
const cachedResults = cache.read(cacheKey);
|
|
16
|
+
if (cachedResults) {
|
|
17
|
+
return cachedResults;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const posixCwd = toPosixPath(options.cwd);
|
|
21
|
+
const posixCrawlDirectory = toPosixPath(options.crawlDirectory);
|
|
22
|
+
let results;
|
|
23
|
+
try {
|
|
24
|
+
const dirFilter = options.ignore.getDirectoryFilter();
|
|
25
|
+
const api = new fdir()
|
|
26
|
+
.withRelativePaths()
|
|
27
|
+
.withDirs()
|
|
28
|
+
.withPathSeparator('/') // Always use unix style paths
|
|
29
|
+
.exclude((_, dirPath) => {
|
|
30
|
+
const relativePath = path.posix.relative(posixCrawlDirectory, dirPath);
|
|
31
|
+
return dirFilter(`${relativePath}/`);
|
|
32
|
+
});
|
|
33
|
+
if (options.maxDepth !== undefined) {
|
|
34
|
+
api.withMaxDepth(options.maxDepth);
|
|
35
|
+
}
|
|
36
|
+
results = await api.crawl(options.crawlDirectory).withPromise();
|
|
37
|
+
}
|
|
38
|
+
catch (_e) {
|
|
39
|
+
// The directory probably doesn't exist.
|
|
40
|
+
return [];
|
|
41
|
+
}
|
|
42
|
+
const relativeToCrawlDir = path.posix.relative(posixCwd, posixCrawlDirectory);
|
|
43
|
+
const relativeToCwdResults = results.map((p) => path.posix.join(relativeToCrawlDir, p));
|
|
44
|
+
if (options.cache) {
|
|
45
|
+
const cacheKey = cache.getCacheKey(options.crawlDirectory, options.ignore.getFingerprint(), options.maxDepth);
|
|
46
|
+
cache.write(cacheKey, relativeToCwdResults, options.cacheTtl * 1000);
|
|
47
|
+
}
|
|
48
|
+
return relativeToCwdResults;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=crawler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crawler.js","sourceRoot":"","sources":["../../../../src/utils/filesearch/crawler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAC;AAgBzC,SAAS,WAAW,CAAC,CAAS;IAC5B,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAqB;IAC/C,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAChC,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,EAC/B,OAAO,CAAC,QAAQ,CACjB,CAAC;QACF,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE3C,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,mBAAmB,GAAG,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAEhE,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;aACnB,iBAAiB,EAAE;aACnB,QAAQ,EAAE;aACV,iBAAiB,CAAC,GAAG,CAAC,CAAC,8BAA8B;aACrD,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE;YACtB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;YACvE,OAAO,SAAS,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEL,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;IAClE,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC;QACZ,wCAAwC;QACxC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAE9E,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CACvC,CAAC;IAEF,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAChC,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,EAC/B,OAAO,CAAC,QAAQ,CACjB,CAAC;QACF,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,oBAAoB,EAAE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,oBAAoB,CAAC;AAC9B,CAAC"}
|
|
@@ -3,15 +3,16 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
export
|
|
6
|
+
export interface FileSearchOptions {
|
|
7
7
|
projectRoot: string;
|
|
8
8
|
ignoreDirs: string[];
|
|
9
9
|
useGitignore: boolean;
|
|
10
10
|
useGeminiignore: boolean;
|
|
11
11
|
cache: boolean;
|
|
12
12
|
cacheTtl: number;
|
|
13
|
+
enableRecursiveFileSearch: boolean;
|
|
13
14
|
maxDepth?: number;
|
|
14
|
-
}
|
|
15
|
+
}
|
|
15
16
|
export declare class AbortError extends Error {
|
|
16
17
|
constructor(message?: string);
|
|
17
18
|
}
|
|
@@ -23,59 +24,14 @@ export declare class AbortError extends Error {
|
|
|
23
24
|
* @returns A promise that resolves to the filtered and sorted list of paths.
|
|
24
25
|
*/
|
|
25
26
|
export declare function filter(allPaths: string[], pattern: string, signal: AbortSignal | undefined): Promise<string[]>;
|
|
26
|
-
export
|
|
27
|
+
export interface SearchOptions {
|
|
27
28
|
signal?: AbortSignal;
|
|
28
29
|
maxResults?: number;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
* Provides a fast and efficient way to search for files within a project,
|
|
32
|
-
* respecting .gitignore and .geminiignore rules, and utilizing caching
|
|
33
|
-
* for improved performance.
|
|
34
|
-
*/
|
|
35
|
-
export declare class FileSearch {
|
|
36
|
-
private readonly options;
|
|
37
|
-
private readonly absoluteDir;
|
|
38
|
-
private readonly ignore;
|
|
39
|
-
private resultCache;
|
|
40
|
-
private allFiles;
|
|
41
|
-
private fzf;
|
|
42
|
-
/**
|
|
43
|
-
* Constructs a new `FileSearch` instance.
|
|
44
|
-
* @param options Configuration options for the file search.
|
|
45
|
-
*/
|
|
46
|
-
constructor(options: FileSearchOptions);
|
|
47
|
-
/**
|
|
48
|
-
* Initializes the file search engine by loading ignore rules, crawling the
|
|
49
|
-
* file system, and building the in-memory cache. This method must be called
|
|
50
|
-
* before performing any searches.
|
|
51
|
-
*/
|
|
30
|
+
}
|
|
31
|
+
export interface FileSearch {
|
|
52
32
|
initialize(): Promise<void>;
|
|
53
|
-
/**
|
|
54
|
-
* Searches for files matching a given pattern.
|
|
55
|
-
* @param pattern The picomatch pattern to search for (e.g., '*.js', 'src/**').
|
|
56
|
-
* @param options Search options, including an AbortSignal and maxResults.
|
|
57
|
-
* @returns A promise that resolves to a list of matching file paths, relative
|
|
58
|
-
* to the project root.
|
|
59
|
-
*/
|
|
60
33
|
search(pattern: string, options?: SearchOptions): Promise<string[]>;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
*/
|
|
65
|
-
private loadIgnoreRules;
|
|
66
|
-
/**
|
|
67
|
-
* Crawls the file system to get a list of all files and directories,
|
|
68
|
-
* optionally using a cache for faster initialization.
|
|
69
|
-
*/
|
|
70
|
-
private crawlFiles;
|
|
71
|
-
/**
|
|
72
|
-
* Performs the actual file system crawl using `fdir`, applying directory
|
|
73
|
-
* ignore rules.
|
|
74
|
-
* @returns A promise that resolves to a list of all files and directories.
|
|
75
|
-
*/
|
|
76
|
-
private performCrawl;
|
|
77
|
-
/**
|
|
78
|
-
* Builds the in-memory cache for fast pattern matching.
|
|
79
|
-
*/
|
|
80
|
-
private buildResultCache;
|
|
34
|
+
}
|
|
35
|
+
export declare class FileSearchFactory {
|
|
36
|
+
static create(options: FileSearchOptions): FileSearch;
|
|
81
37
|
}
|