@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.
Files changed (114) hide show
  1. package/README.md +31 -0
  2. package/dist/src/auth/types.d.ts +4 -4
  3. package/dist/src/code_assist/codeAssist.d.ts +1 -1
  4. package/dist/src/code_assist/codeAssist.js +5 -2
  5. package/dist/src/code_assist/codeAssist.js.map +1 -1
  6. package/dist/src/code_assist/converter.d.ts +2 -1
  7. package/dist/src/code_assist/converter.js +6 -4
  8. package/dist/src/code_assist/converter.js.map +1 -1
  9. package/dist/src/code_assist/oauth2.d.ts +1 -0
  10. package/dist/src/code_assist/oauth2.js +32 -15
  11. package/dist/src/code_assist/oauth2.js.map +1 -1
  12. package/dist/src/code_assist/server.d.ts +1 -2
  13. package/dist/src/code_assist/server.js +10 -5
  14. package/dist/src/code_assist/server.js.map +1 -1
  15. package/dist/src/code_assist/setup.js +2 -1
  16. package/dist/src/code_assist/setup.js.map +1 -1
  17. package/dist/src/config/config.d.ts +0 -3
  18. package/dist/src/config/config.js +8 -10
  19. package/dist/src/config/config.js.map +1 -1
  20. package/dist/src/core/client.js +11 -2
  21. package/dist/src/core/client.js.map +1 -1
  22. package/dist/src/core/coreToolScheduler.d.ts +1 -1
  23. package/dist/src/core/coreToolScheduler.js +9 -5
  24. package/dist/src/core/coreToolScheduler.js.map +1 -1
  25. package/dist/src/core/geminiChat.js +45 -4
  26. package/dist/src/core/geminiChat.js.map +1 -1
  27. package/dist/src/core/logger.d.ts +22 -1
  28. package/dist/src/core/logger.js +103 -17
  29. package/dist/src/core/logger.js.map +1 -1
  30. package/dist/src/ide/constants.d.ts +6 -0
  31. package/dist/src/ide/constants.js +7 -0
  32. package/dist/src/ide/constants.js.map +1 -0
  33. package/dist/src/ide/ide-client.d.ts +10 -10
  34. package/dist/src/ide/ide-client.js +69 -58
  35. package/dist/src/ide/ide-client.js.map +1 -1
  36. package/dist/src/ide/ide-installer.js +5 -4
  37. package/dist/src/ide/ide-installer.js.map +1 -1
  38. package/dist/src/ide/process-utils.d.ts +14 -0
  39. package/dist/src/ide/process-utils.js +57 -0
  40. package/dist/src/ide/process-utils.js.map +1 -0
  41. package/dist/src/index.d.ts +1 -0
  42. package/dist/src/index.js +1 -0
  43. package/dist/src/index.js.map +1 -1
  44. package/dist/src/mcp/oauth-provider.js +176 -58
  45. package/dist/src/mcp/oauth-provider.js.map +1 -1
  46. package/dist/src/mcp/oauth-utils.d.ts +3 -1
  47. package/dist/src/mcp/oauth-utils.js +52 -22
  48. package/dist/src/mcp/oauth-utils.js.map +1 -1
  49. package/dist/src/providers/anthropic/AnthropicProvider.js +164 -115
  50. package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
  51. package/dist/src/providers/gemini/GeminiProvider.js +6 -3
  52. package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
  53. package/dist/src/providers/openai/OpenAIProvider.js +227 -53
  54. package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
  55. package/dist/src/services/shellExecutionService.d.ts +24 -0
  56. package/dist/src/services/shellExecutionService.js +43 -52
  57. package/dist/src/services/shellExecutionService.js.map +1 -1
  58. package/dist/src/telemetry/index.d.ts +2 -2
  59. package/dist/src/telemetry/index.js +2 -2
  60. package/dist/src/telemetry/index.js.map +1 -1
  61. package/dist/src/telemetry/loggers.d.ts +2 -1
  62. package/dist/src/telemetry/loggers.js +14 -0
  63. package/dist/src/telemetry/loggers.js.map +1 -1
  64. package/dist/src/telemetry/types.d.ts +8 -1
  65. package/dist/src/telemetry/types.js +12 -0
  66. package/dist/src/telemetry/types.js.map +1 -1
  67. package/dist/src/test-utils/tools.d.ts +21 -6
  68. package/dist/src/test-utils/tools.js +77 -12
  69. package/dist/src/test-utils/tools.js.map +1 -1
  70. package/dist/src/tools/edit.d.ts +1 -1
  71. package/dist/src/tools/edit.js +45 -19
  72. package/dist/src/tools/edit.js.map +1 -1
  73. package/dist/src/tools/mcp-client.js +46 -31
  74. package/dist/src/tools/mcp-client.js.map +1 -1
  75. package/dist/src/tools/mcp-tool.js +19 -0
  76. package/dist/src/tools/mcp-tool.js.map +1 -1
  77. package/dist/src/tools/shell.js +25 -8
  78. package/dist/src/tools/shell.js.map +1 -1
  79. package/dist/src/tools/tool-error.d.ts +1 -0
  80. package/dist/src/tools/tool-error.js +1 -0
  81. package/dist/src/tools/tool-error.js.map +1 -1
  82. package/dist/src/tools/tools.d.ts +53 -75
  83. package/dist/src/tools/tools.js +111 -110
  84. package/dist/src/tools/tools.js.map +1 -1
  85. package/dist/src/tools/web-search-invocation.d.ts +51 -0
  86. package/dist/src/tools/web-search-invocation.js +132 -0
  87. package/dist/src/tools/web-search-invocation.js.map +1 -0
  88. package/dist/src/tools/web-search.d.ts +6 -36
  89. package/dist/src/tools/web-search.js +6 -129
  90. package/dist/src/tools/web-search.js.map +1 -1
  91. package/dist/src/tools/write-file.d.ts +17 -10
  92. package/dist/src/tools/write-file.js +125 -127
  93. package/dist/src/tools/write-file.js.map +1 -1
  94. package/dist/src/utils/filesearch/crawler.d.ts +15 -0
  95. package/dist/src/utils/filesearch/crawler.js +50 -0
  96. package/dist/src/utils/filesearch/crawler.js.map +1 -0
  97. package/dist/src/utils/filesearch/fileSearch.d.ts +9 -53
  98. package/dist/src/utils/filesearch/fileSearch.js +62 -117
  99. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  100. package/dist/src/utils/filesearch/ignore.d.ts +7 -0
  101. package/dist/src/utils/filesearch/ignore.js +25 -0
  102. package/dist/src/utils/filesearch/ignore.js.map +1 -1
  103. package/dist/src/utils/memoryImportProcessor.js +2 -6
  104. package/dist/src/utils/memoryImportProcessor.js.map +1 -1
  105. package/dist/src/utils/paths.d.ts +7 -0
  106. package/dist/src/utils/paths.js +15 -0
  107. package/dist/src/utils/paths.js.map +1 -1
  108. package/dist/src/utils/shell-utils.d.ts +39 -0
  109. package/dist/src/utils/shell-utils.js +72 -2
  110. package/dist/src/utils/shell-utils.js.map +1 -1
  111. package/dist/src/utils/workspaceContext.d.ts +22 -7
  112. package/dist/src/utils/workspaceContext.js +81 -55
  113. package/dist/src/utils/workspaceContext.js.map +1 -1
  114. 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 { BaseTool, ToolConfirmationOutcome, Kind, } from './tools.js';
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
- * Implementation of the WriteFile tool logic
42
+ * Gets corrected file content using AI correction services
43
43
  */
44
- export class WriteFileTool extends BaseTool {
45
- config;
46
- static Name = 'write_file';
47
- constructor(config) {
48
- super(WriteFileTool.Name, 'WriteFile', `Writes content to a specified file in the local filesystem.
49
-
50
- The user has the ability to modify \`content\`. If modified, this will be stated in the response.`, Kind.Edit, {
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
- validateToolParams(params) {
70
- const errors = SchemaValidator.validate(this.schema.parametersJsonSchema, params);
71
- if (errors) {
72
- return errors;
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
- const workspaceContext = this.config.getWorkspaceContext();
79
- if (!workspaceContext.isPathWithinWorkspace(filePath)) {
80
- const directories = workspaceContext.getDirectories();
81
- return `File path must be within one of the workspace directories: ${directories.join(', ')}`;
82
- }
83
- try {
84
- // This check should be performed only if the path exists.
85
- // If it doesn't exist, it's a new file, which is valid for writing.
86
- if (fs.existsSync(filePath)) {
87
- const stats = fs.lstatSync(filePath);
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
- getDescription(params) {
101
- if (!params.file_path || !params.content) {
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(params, abortSignal) {
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._getCorrectedFileContent(params.file_path, filteredParamsContent, // Use filtered content
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(params, abortSignal) {
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 this._getCorrectedFileContent(filteredParams.file_path, filteredParams.content, abortSignal);
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
- async _getCorrectedFileContent(filePath, proposedContent, abortSignal) {
342
- let originalContent = '';
343
- let fileExists = false;
344
- let correctedContent = proposedContent;
345
- try {
346
- originalContent = fs.readFileSync(filePath, 'utf8');
347
- fileExists = true; // File exists and was read
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
- catch (err) {
350
- if (isNodeError(err) && err.code === 'ENOENT') {
351
- fileExists = false;
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
- // If readError is set, we have returned.
367
- // So, file was either read successfully (fileExists=true, originalContent set)
368
- // or it was ENOENT (fileExists=false, originalContent='').
369
- if (fileExists) {
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
- else {
379
- // This implies new file (ENOENT)
380
- correctedContent = await ensureCorrectFileContent(proposedContent, this.config.getGeminiClient(), abortSignal);
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
- return { originalContent, correctedContent, fileExists };
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 this._getCorrectedFileContent(params.file_path, params.content, abortSignal);
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 this._getCorrectedFileContent(params.file_path, params.content, abortSignal);
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 type FileSearchOptions = {
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 type SearchOptions = {
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
- * Loads ignore rules from .gitignore and .geminiignore files, and applies
63
- * any additional ignore directories specified in the options.
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
  }