@vybestack/llxprt-code-core 0.2.25 → 0.3.4-nightly.250912.5e46408e
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/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/src/code_assist/converter.js +35 -3
- package/dist/src/code_assist/converter.js.map +1 -1
- package/dist/src/code_assist/oauth2.d.ts +1 -1
- package/dist/src/code_assist/oauth2.js +18 -25
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/config/config.d.ts +33 -2
- package/dist/src/config/config.js +73 -13
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/storage.d.ts +33 -0
- package/dist/src/config/storage.js +93 -0
- package/dist/src/config/storage.js.map +1 -0
- package/dist/src/core/client.d.ts +8 -5
- package/dist/src/core/client.js +119 -20
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/contentGenerator.js +11 -0
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/coreToolScheduler.d.ts +18 -12
- package/dist/src/core/coreToolScheduler.js +235 -241
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/logger.d.ts +3 -1
- package/dist/src/core/logger.js +5 -3
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.js +2 -2
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
- package/dist/src/core/subagent.js +2 -12
- package/dist/src/core/subagent.js.map +1 -1
- package/dist/src/core/turn.d.ts +13 -2
- package/dist/src/core/turn.js +15 -4
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/filters/EmojiFilter.d.ts +5 -0
- package/dist/src/filters/EmojiFilter.js +3 -2
- package/dist/src/filters/EmojiFilter.js.map +1 -1
- package/dist/src/ide/detect-ide.d.ts +8 -3
- package/dist/src/ide/detect-ide.js +29 -11
- package/dist/src/ide/detect-ide.js.map +1 -1
- package/dist/src/ide/ide-client.d.ts +5 -4
- package/dist/src/ide/ide-client.js +21 -17
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/ide/ide-installer.d.ts +1 -1
- package/dist/src/ide/ide-installer.js +29 -20
- package/dist/src/ide/ide-installer.js.map +1 -1
- package/dist/src/ide/process-utils.d.ts +7 -5
- package/dist/src/ide/process-utils.js +80 -47
- package/dist/src/ide/process-utils.js.map +1 -1
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.js +7 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/file-token-store.d.ts +58 -0
- package/dist/src/mcp/file-token-store.js +181 -0
- package/dist/src/mcp/file-token-store.js.map +1 -0
- package/dist/src/mcp/oauth-token-storage.d.ts +13 -28
- package/dist/src/mcp/oauth-token-storage.js +21 -87
- package/dist/src/mcp/oauth-token-storage.js.map +1 -1
- package/dist/src/mcp/oauth-utils.d.ts +8 -0
- package/dist/src/mcp/oauth-utils.js +41 -27
- package/dist/src/mcp/oauth-utils.js.map +1 -1
- package/dist/src/mcp/token-store.d.ts +99 -0
- package/dist/src/mcp/token-store.js +77 -0
- package/dist/src/mcp/token-store.js.map +1 -0
- package/dist/src/parsers/TextToolCallParser.d.ts +5 -0
- package/dist/src/parsers/TextToolCallParser.js +3 -13
- package/dist/src/parsers/TextToolCallParser.js.map +1 -1
- package/dist/src/providers/anthropic/AnthropicProvider.js +8 -9
- package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
- package/dist/src/providers/gemini/GeminiProvider.js +16 -1
- package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
- package/dist/src/providers/openai/OpenAIProvider.d.ts +5 -0
- package/dist/src/providers/openai/OpenAIProvider.js +21 -38
- package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
- package/dist/src/services/gitService.d.ts +3 -1
- package/dist/src/services/gitService.js +20 -10
- package/dist/src/services/gitService.js.map +1 -1
- package/dist/src/services/history/ContentConverters.js +40 -1
- package/dist/src/services/history/ContentConverters.js.map +1 -1
- package/dist/src/services/loopDetectionService.js +8 -2
- package/dist/src/services/loopDetectionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.js +2 -1
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/settings/SettingsService.d.ts +5 -0
- package/dist/src/settings/SettingsService.js +5 -0
- package/dist/src/settings/SettingsService.js.map +1 -1
- package/dist/src/settings/settingsServiceInstance.d.ts +5 -0
- package/dist/src/settings/settingsServiceInstance.js +5 -0
- package/dist/src/settings/settingsServiceInstance.js.map +1 -1
- package/dist/src/settings/types.d.ts +5 -0
- package/dist/src/settings/types.js +3 -1
- package/dist/src/settings/types.js.map +1 -1
- package/dist/src/tools/IToolFormatter.d.ts +5 -0
- package/dist/src/tools/IToolFormatter.js +3 -13
- package/dist/src/tools/IToolFormatter.js.map +1 -1
- package/dist/src/tools/ToolFormatter.d.ts +5 -0
- package/dist/src/tools/ToolFormatter.js +3 -13
- package/dist/src/tools/ToolFormatter.js.map +1 -1
- package/dist/src/tools/doubleEscapeUtils.d.ts +3 -13
- package/dist/src/tools/doubleEscapeUtils.js +5 -0
- package/dist/src/tools/doubleEscapeUtils.js.map +1 -1
- package/dist/src/tools/edit.js +10 -1
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/glob.d.ts +0 -4
- package/dist/src/tools/glob.js +18 -42
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/grep.d.ts +0 -4
- package/dist/src/tools/grep.js +41 -77
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/ls.d.ts +2 -6
- package/dist/src/tools/ls.js +18 -13
- package/dist/src/tools/ls.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +7 -0
- package/dist/src/tools/mcp-client.js +26 -21
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-tool.js +12 -2
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/memoryTool.js +7 -2
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/read-file.js +2 -30
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-many-files.js +29 -52
- package/dist/src/tools/read-many-files.js.map +1 -1
- package/dist/src/tools/ripGrep.d.ts +46 -0
- package/dist/src/tools/ripGrep.js +368 -0
- package/dist/src/tools/ripGrep.js.map +1 -0
- package/dist/src/tools/shell.js +13 -2
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/todo-pause.js +0 -1
- package/dist/src/tools/todo-pause.js.map +1 -1
- package/dist/src/tools/tool-error.d.ts +18 -2
- package/dist/src/tools/tool-error.js +27 -1
- package/dist/src/tools/tool-error.js.map +1 -1
- package/dist/src/tools/tool-registry.d.ts +13 -2
- package/dist/src/tools/tool-registry.js +30 -2
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tools.d.ts +7 -5
- package/dist/src/tools/tools.js +12 -0
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/web-fetch.js +101 -76
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-search-invocation.js +13 -1
- package/dist/src/tools/web-search-invocation.js.map +1 -1
- package/dist/src/utils/deterministicEditCorrector.d.ts +28 -0
- package/dist/src/utils/deterministicEditCorrector.js +295 -0
- package/dist/src/utils/deterministicEditCorrector.js.map +1 -0
- package/dist/src/utils/editCorrector.d.ts +4 -4
- package/dist/src/utils/editCorrector.js +15 -213
- package/dist/src/utils/editCorrector.js.map +1 -1
- package/dist/src/utils/editor.js +1 -1
- package/dist/src/utils/editor.js.map +1 -1
- package/dist/src/utils/errors.d.ts +19 -0
- package/dist/src/utils/errors.js +32 -0
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/fileUtils.d.ts +2 -7
- package/dist/src/utils/fileUtils.js +16 -47
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.d.ts +1 -0
- package/dist/src/utils/filesearch/fileSearch.js +14 -9
- package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
- package/dist/src/utils/ignorePatterns.d.ts +103 -0
- package/dist/src/utils/ignorePatterns.js +220 -0
- package/dist/src/utils/ignorePatterns.js.map +1 -0
- package/dist/src/utils/installationManager.d.ts +16 -0
- package/dist/src/utils/installationManager.js +50 -0
- package/dist/src/utils/installationManager.js.map +1 -0
- package/dist/src/utils/memoryDiscovery.d.ts +1 -1
- package/dist/src/utils/memoryDiscovery.js +64 -43
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/paths.d.ts +0 -17
- package/dist/src/utils/paths.js +0 -26
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/schemaValidator.js +4 -0
- package/dist/src/utils/schemaValidator.js.map +1 -1
- package/dist/src/utils/shell-utils.d.ts +1 -1
- package/dist/src/utils/shell-utils.js +23 -29
- package/dist/src/utils/shell-utils.js.map +1 -1
- package/dist/src/utils/tool-utils.d.ts +19 -0
- package/dist/src/utils/tool-utils.js +58 -0
- package/dist/src/utils/tool-utils.js.map +1 -0
- package/dist/src/utils/userAccountManager.d.ts +20 -0
- package/dist/src/utils/userAccountManager.js +122 -0
- package/dist/src/utils/userAccountManager.js.map +1 -0
- package/dist/src/utils/workspaceContext.js +11 -5
- package/dist/src/utils/workspaceContext.js.map +1 -1
- package/package.json +7 -3
- package/dist/src/utils/nextSpeakerChecker.d.ts +0 -12
- package/dist/src/utils/nextSpeakerChecker.js +0 -97
- package/dist/src/utils/nextSpeakerChecker.js.map +0 -1
- package/dist/src/utils/user_account.d.ts +0 -9
- package/dist/src/utils/user_account.js +0 -109
- package/dist/src/utils/user_account.js.map +0 -1
- package/dist/src/utils/user_id.d.ts +0 -11
- package/dist/src/utils/user_id.js +0 -49
- package/dist/src/utils/user_id.js.map +0 -1
@@ -0,0 +1,220 @@
|
|
1
|
+
/**
|
2
|
+
* @license
|
3
|
+
* Copyright 2025 Google LLC
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
5
|
+
*/
|
6
|
+
import path from 'path';
|
7
|
+
import { getCurrentLlxprtMdFilename } from '../tools/memoryTool.js';
|
8
|
+
/**
|
9
|
+
* Common ignore patterns used across multiple tools for basic exclusions.
|
10
|
+
* These are the most commonly ignored directories in development projects.
|
11
|
+
*/
|
12
|
+
export const COMMON_IGNORE_PATTERNS = [
|
13
|
+
'**/node_modules/**',
|
14
|
+
'**/.git/**',
|
15
|
+
'**/bower_components/**',
|
16
|
+
'**/.svn/**',
|
17
|
+
'**/.hg/**',
|
18
|
+
];
|
19
|
+
/**
|
20
|
+
* Binary file extension patterns that are typically excluded from text processing.
|
21
|
+
*/
|
22
|
+
export const BINARY_FILE_PATTERNS = [
|
23
|
+
'**/*.bin',
|
24
|
+
'**/*.exe',
|
25
|
+
'**/*.dll',
|
26
|
+
'**/*.so',
|
27
|
+
'**/*.dylib',
|
28
|
+
'**/*.class',
|
29
|
+
'**/*.jar',
|
30
|
+
'**/*.war',
|
31
|
+
'**/*.zip',
|
32
|
+
'**/*.tar',
|
33
|
+
'**/*.gz',
|
34
|
+
'**/*.bz2',
|
35
|
+
'**/*.rar',
|
36
|
+
'**/*.7z',
|
37
|
+
'**/*.doc',
|
38
|
+
'**/*.docx',
|
39
|
+
'**/*.xls',
|
40
|
+
'**/*.xlsx',
|
41
|
+
'**/*.ppt',
|
42
|
+
'**/*.pptx',
|
43
|
+
'**/*.odt',
|
44
|
+
'**/*.ods',
|
45
|
+
'**/*.odp',
|
46
|
+
];
|
47
|
+
/**
|
48
|
+
* Media file patterns that require special handling in tools like read-many-files.
|
49
|
+
* These files can be processed as inlineData when explicitly requested.
|
50
|
+
*/
|
51
|
+
export const MEDIA_FILE_PATTERNS = [
|
52
|
+
'**/*.pdf',
|
53
|
+
'**/*.png',
|
54
|
+
'**/*.jpg',
|
55
|
+
'**/*.jpeg',
|
56
|
+
'**/*.gif',
|
57
|
+
'**/*.webp',
|
58
|
+
'**/*.bmp',
|
59
|
+
'**/*.svg',
|
60
|
+
];
|
61
|
+
/**
|
62
|
+
* Common directory patterns that are typically ignored in development projects.
|
63
|
+
*/
|
64
|
+
export const COMMON_DIRECTORY_EXCLUDES = [
|
65
|
+
'**/.vscode/**',
|
66
|
+
'**/.idea/**',
|
67
|
+
'**/dist/**',
|
68
|
+
'**/build/**',
|
69
|
+
'**/coverage/**',
|
70
|
+
'**/__pycache__/**',
|
71
|
+
];
|
72
|
+
/**
|
73
|
+
* Python-specific patterns.
|
74
|
+
*/
|
75
|
+
export const PYTHON_EXCLUDES = ['**/*.pyc', '**/*.pyo'];
|
76
|
+
/**
|
77
|
+
* System and environment file patterns.
|
78
|
+
*/
|
79
|
+
export const SYSTEM_FILE_EXCLUDES = ['**/.DS_Store', '**/.env'];
|
80
|
+
/**
|
81
|
+
* Comprehensive file exclusion patterns combining all common ignore patterns.
|
82
|
+
* These patterns are compatible with glob ignore patterns.
|
83
|
+
* Note: Media files (PDF, images) are not excluded here as they need special handling in read-many-files.
|
84
|
+
*/
|
85
|
+
export const DEFAULT_FILE_EXCLUDES = [
|
86
|
+
...COMMON_IGNORE_PATTERNS,
|
87
|
+
...COMMON_DIRECTORY_EXCLUDES,
|
88
|
+
...BINARY_FILE_PATTERNS,
|
89
|
+
...PYTHON_EXCLUDES,
|
90
|
+
...SYSTEM_FILE_EXCLUDES,
|
91
|
+
];
|
92
|
+
/**
|
93
|
+
* Centralized file exclusion utility that provides configurable and extensible
|
94
|
+
* file exclusion patterns for different tools and use cases.
|
95
|
+
*/
|
96
|
+
export class FileExclusions {
|
97
|
+
config;
|
98
|
+
constructor(config) {
|
99
|
+
this.config = config;
|
100
|
+
}
|
101
|
+
/**
|
102
|
+
* Gets core ignore patterns for basic file operations like glob.
|
103
|
+
* These are the minimal essential patterns that should almost always be excluded.
|
104
|
+
*/
|
105
|
+
getCoreIgnorePatterns() {
|
106
|
+
return [...COMMON_IGNORE_PATTERNS];
|
107
|
+
}
|
108
|
+
/**
|
109
|
+
* Gets comprehensive default exclusion patterns for operations like read-many-files.
|
110
|
+
* Includes all standard exclusions: directories, binary files, system files, etc.
|
111
|
+
*/
|
112
|
+
getDefaultExcludePatterns(options = {}) {
|
113
|
+
const { includeDefaults = true, customPatterns = [], runtimePatterns = [], includeDynamicPatterns = true, } = options;
|
114
|
+
const patterns = [];
|
115
|
+
// Add base defaults if requested
|
116
|
+
if (includeDefaults) {
|
117
|
+
patterns.push(...DEFAULT_FILE_EXCLUDES);
|
118
|
+
}
|
119
|
+
// Add dynamic patterns (like current LLxprt MD filename)
|
120
|
+
if (includeDynamicPatterns) {
|
121
|
+
patterns.push(`**/${getCurrentLlxprtMdFilename()}`);
|
122
|
+
}
|
123
|
+
// Add custom patterns from configuration
|
124
|
+
// TODO: getCustomExcludes method needs to be implemented in Config interface
|
125
|
+
if (this.config) {
|
126
|
+
const configCustomExcludes = this.config.getCustomExcludes?.() ?? [];
|
127
|
+
patterns.push(...configCustomExcludes);
|
128
|
+
}
|
129
|
+
// Add user-provided custom patterns
|
130
|
+
patterns.push(...customPatterns);
|
131
|
+
// Add runtime patterns (e.g., from CLI)
|
132
|
+
patterns.push(...runtimePatterns);
|
133
|
+
return patterns;
|
134
|
+
}
|
135
|
+
/**
|
136
|
+
* Gets exclude patterns for read-many-files tool with legacy compatibility.
|
137
|
+
* This maintains the same behavior as the previous getDefaultExcludes() function.
|
138
|
+
*/
|
139
|
+
getReadManyFilesExcludes(additionalExcludes = []) {
|
140
|
+
return this.getDefaultExcludePatterns({
|
141
|
+
includeDefaults: true,
|
142
|
+
runtimePatterns: additionalExcludes,
|
143
|
+
includeDynamicPatterns: true,
|
144
|
+
});
|
145
|
+
}
|
146
|
+
/**
|
147
|
+
* Gets exclude patterns for glob tool operations.
|
148
|
+
* Uses core patterns by default but can be extended with additional patterns.
|
149
|
+
*/
|
150
|
+
getGlobExcludes(additionalExcludes = []) {
|
151
|
+
const corePatterns = this.getCoreIgnorePatterns();
|
152
|
+
// Add any custom patterns from config if available
|
153
|
+
// TODO: getCustomExcludes method needs to be implemented in Config interface
|
154
|
+
const configPatterns = this.config?.getCustomExcludes?.() ?? [];
|
155
|
+
return [...corePatterns, ...configPatterns, ...additionalExcludes];
|
156
|
+
}
|
157
|
+
/**
|
158
|
+
* Builds exclude patterns with full customization options.
|
159
|
+
* This is the most flexible method for advanced use cases.
|
160
|
+
*/
|
161
|
+
buildExcludePatterns(options) {
|
162
|
+
return this.getDefaultExcludePatterns(options);
|
163
|
+
}
|
164
|
+
}
|
165
|
+
/**
|
166
|
+
* Extracts file extensions from glob patterns.
|
167
|
+
* Converts patterns like glob/*.exe to .exe
|
168
|
+
* Handles brace expansion like glob/*.{js,ts} to .js and .ts
|
169
|
+
*/
|
170
|
+
export function extractExtensionsFromPatterns(patterns) {
|
171
|
+
const extensions = new Set(patterns
|
172
|
+
.filter((pattern) => pattern.includes('*.'))
|
173
|
+
.flatMap((pattern) => {
|
174
|
+
const extPart = pattern.substring(pattern.lastIndexOf('*.') + 1);
|
175
|
+
// Handle brace expansion e.g. `**/*.{jpg,png}`
|
176
|
+
if (extPart.startsWith('.{') && extPart.endsWith('}')) {
|
177
|
+
const inner = extPart.slice(2, -1); // get 'jpg,png'
|
178
|
+
return inner
|
179
|
+
.split(',')
|
180
|
+
.map((ext) => `.${ext.trim()}`)
|
181
|
+
.filter((ext) => ext !== '.');
|
182
|
+
}
|
183
|
+
// Handle simple/compound/dotfile extensions
|
184
|
+
if (extPart.startsWith('.') &&
|
185
|
+
!extPart.includes('/') &&
|
186
|
+
!extPart.includes('{') &&
|
187
|
+
!extPart.includes('}')) {
|
188
|
+
// Using path.extname on a dummy file handles various cases like
|
189
|
+
// '.tar.gz' -> '.gz' and '.profile' -> '.profile' correctly.
|
190
|
+
const extracted = path.extname(`dummy${extPart}`);
|
191
|
+
// If extname returns empty (e.g. for '.'), use the original part.
|
192
|
+
// Then filter out empty or '.' results and invalid double dot patterns.
|
193
|
+
const result = extracted || extPart;
|
194
|
+
return result && result !== '.' && !result.substring(1).includes('.')
|
195
|
+
? [result]
|
196
|
+
: [];
|
197
|
+
}
|
198
|
+
return [];
|
199
|
+
}));
|
200
|
+
return Array.from(extensions).sort();
|
201
|
+
}
|
202
|
+
/**
|
203
|
+
* Binary file extensions extracted from BINARY_FILE_PATTERNS for quick lookup.
|
204
|
+
* Additional extensions not covered by the patterns are included for completeness.
|
205
|
+
*/
|
206
|
+
export const BINARY_EXTENSIONS = [
|
207
|
+
...extractExtensionsFromPatterns([
|
208
|
+
...BINARY_FILE_PATTERNS,
|
209
|
+
...MEDIA_FILE_PATTERNS,
|
210
|
+
...PYTHON_EXCLUDES,
|
211
|
+
]),
|
212
|
+
// Additional binary extensions not in the main patterns
|
213
|
+
'.dat',
|
214
|
+
'.obj',
|
215
|
+
'.o',
|
216
|
+
'.a',
|
217
|
+
'.lib',
|
218
|
+
'.wasm',
|
219
|
+
].sort();
|
220
|
+
//# sourceMappingURL=ignorePatterns.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ignorePatterns.js","sourceRoot":"","sources":["../../../src/utils/ignorePatterns.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
/**
|
2
|
+
* @license
|
3
|
+
* Copyright 2025 Google LLC
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
5
|
+
*/
|
6
|
+
export declare class InstallationManager {
|
7
|
+
private getInstallationIdPath;
|
8
|
+
private readInstallationIdFromFile;
|
9
|
+
private writeInstallationIdToFile;
|
10
|
+
/**
|
11
|
+
* Retrieves the installation ID from a file, creating it if it doesn't exist.
|
12
|
+
* This ID is used for unique user installation tracking.
|
13
|
+
* @returns A UUID string for the user.
|
14
|
+
*/
|
15
|
+
getInstallationId(): string;
|
16
|
+
}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
/**
|
2
|
+
* @license
|
3
|
+
* Copyright 2025 Google LLC
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
5
|
+
*/
|
6
|
+
import * as fs from 'fs';
|
7
|
+
import { randomUUID } from 'crypto';
|
8
|
+
import * as path from 'node:path';
|
9
|
+
import { Storage } from '../config/storage.js';
|
10
|
+
export class InstallationManager {
|
11
|
+
getInstallationIdPath() {
|
12
|
+
return Storage.getInstallationIdPath();
|
13
|
+
}
|
14
|
+
readInstallationIdFromFile() {
|
15
|
+
const installationIdFile = this.getInstallationIdPath();
|
16
|
+
if (fs.existsSync(installationIdFile)) {
|
17
|
+
const installationid = fs
|
18
|
+
.readFileSync(installationIdFile, 'utf-8')
|
19
|
+
.trim();
|
20
|
+
return installationid || null;
|
21
|
+
}
|
22
|
+
return null;
|
23
|
+
}
|
24
|
+
writeInstallationIdToFile(installationId) {
|
25
|
+
const installationIdFile = this.getInstallationIdPath();
|
26
|
+
const dir = path.dirname(installationIdFile);
|
27
|
+
fs.mkdirSync(dir, { recursive: true });
|
28
|
+
fs.writeFileSync(installationIdFile, installationId, 'utf-8');
|
29
|
+
}
|
30
|
+
/**
|
31
|
+
* Retrieves the installation ID from a file, creating it if it doesn't exist.
|
32
|
+
* This ID is used for unique user installation tracking.
|
33
|
+
* @returns A UUID string for the user.
|
34
|
+
*/
|
35
|
+
getInstallationId() {
|
36
|
+
try {
|
37
|
+
let installationId = this.readInstallationIdFromFile();
|
38
|
+
if (!installationId) {
|
39
|
+
installationId = randomUUID();
|
40
|
+
this.writeInstallationIdToFile(installationId);
|
41
|
+
}
|
42
|
+
return installationId;
|
43
|
+
}
|
44
|
+
catch (error) {
|
45
|
+
console.error('Error accessing installation ID file, generating ephemeral ID:', error);
|
46
|
+
return '123456789';
|
47
|
+
}
|
48
|
+
}
|
49
|
+
}
|
50
|
+
//# sourceMappingURL=installationManager.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"installationManager.js","sourceRoot":"","sources":["../../../src/utils/installationManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,OAAO,mBAAmB;IACtB,qBAAqB;QAC3B,OAAO,OAAO,CAAC,qBAAqB,EAAE,CAAC;IACzC,CAAC;IAEO,0BAA0B;QAChC,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACxD,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACtC,MAAM,cAAc,GAAG,EAAE;iBACtB,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC;iBACzC,IAAI,EAAE,CAAC;YACV,OAAO,cAAc,IAAI,IAAI,CAAC;QAChC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,yBAAyB,CAAC,cAAsB;QACtD,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACxD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC7C,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAED;;;;OAIG;IACH,iBAAiB;QACf,IAAI,CAAC;YACH,IAAI,cAAc,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAEvD,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,cAAc,GAAG,UAAU,EAAE,CAAC;gBAC9B,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC;YACjD,CAAC;YAED,OAAO,cAAc,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,gEAAgE,EAChE,KAAK,CACN,CAAC;YACF,OAAO,WAAW,CAAC;QACrB,CAAC;IACH,CAAC;CACF"}
|
@@ -6,7 +6,7 @@
|
|
6
6
|
import { FileDiscoveryService } from '../services/fileDiscoveryService.js';
|
7
7
|
import { FileFilteringOptions } from '../config/config.js';
|
8
8
|
/**
|
9
|
-
* Loads hierarchical
|
9
|
+
* Loads hierarchical GEMINI.md files and concatenates their content.
|
10
10
|
* This function is intended for use by the server.
|
11
11
|
*/
|
12
12
|
export declare function loadServerHierarchicalMemory(currentWorkingDirectory: string, includeDirectoriesToReadGemini: readonly string[], debugMode: boolean, fileService: FileDiscoveryService, extensionContextFilePaths?: string[], importFormat?: 'flat' | 'tree', fileFilteringOptions?: FileFilteringOptions, maxDirs?: number): Promise<{
|
@@ -8,18 +8,14 @@ import * as fsSync from 'fs';
|
|
8
8
|
import * as path from 'path';
|
9
9
|
import { homedir } from 'os';
|
10
10
|
import { bfsFileSearch } from './bfsFileSearch.js';
|
11
|
-
import { LLXPRT_CONFIG_DIR, getAllLlxprtMdFilenames, } from '../tools/memoryTool.js';
|
11
|
+
import { LLXPRT_CONFIG_DIR as GEMINI_CONFIG_DIR, getAllLlxprtMdFilenames as getAllGeminiMdFilenames, } from '../tools/memoryTool.js';
|
12
12
|
import { processImports } from './memoryImportProcessor.js';
|
13
13
|
import { DEFAULT_MEMORY_FILE_FILTERING_OPTIONS, } from '../config/config.js';
|
14
14
|
// Simple console logger, similar to the one previously in CLI's config.ts
|
15
15
|
// TODO: Integrate with a more robust server-side logger if available/appropriate.
|
16
16
|
const logger = {
|
17
17
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
18
|
-
debug: (...args) =>
|
19
|
-
if (process.env.DEBUG) {
|
20
|
-
console.debug('[DEBUG] [MemoryDiscovery]', ...args);
|
21
|
-
}
|
22
|
-
},
|
18
|
+
debug: (...args) => console.debug('[DEBUG] [MemoryDiscovery]', ...args),
|
23
19
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
24
20
|
warn: (...args) => console.warn('[WARN] [MemoryDiscovery]', ...args),
|
25
21
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
@@ -43,8 +39,8 @@ async function findProjectRoot(startDir) {
|
|
43
39
|
'code' in error &&
|
44
40
|
error.code === 'ENOENT';
|
45
41
|
// Only log unexpected errors in non-test environments
|
46
|
-
// process.env
|
47
|
-
const isTestEnv = process.env
|
42
|
+
// process.env['NODE_ENV'] === 'test' or VITEST are common test indicators
|
43
|
+
const isTestEnv = process.env['NODE_ENV'] === 'test' || process.env['VITEST'];
|
48
44
|
if (!isENOENT && !isTestEnv) {
|
49
45
|
if (typeof error === 'object' && error !== null && 'code' in error) {
|
50
46
|
const fsError = error;
|
@@ -67,19 +63,35 @@ async function getGeminiMdFilePathsInternal(currentWorkingDirectory, includeDire
|
|
67
63
|
...includeDirectoriesToReadGemini,
|
68
64
|
currentWorkingDirectory,
|
69
65
|
]);
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
66
|
+
// Process directories in parallel with concurrency limit to prevent EMFILE errors
|
67
|
+
const CONCURRENT_LIMIT = 10;
|
68
|
+
const dirsArray = Array.from(dirs);
|
69
|
+
const pathsArrays = [];
|
70
|
+
for (let i = 0; i < dirsArray.length; i += CONCURRENT_LIMIT) {
|
71
|
+
const batch = dirsArray.slice(i, i + CONCURRENT_LIMIT);
|
72
|
+
const batchPromises = batch.map((dir) => getGeminiMdFilePathsInternalForEachDir(dir, userHomePath, debugMode, fileService, extensionContextFilePaths, fileFilteringOptions, maxDirs));
|
73
|
+
const batchResults = await Promise.allSettled(batchPromises);
|
74
|
+
for (const result of batchResults) {
|
75
|
+
if (result.status === 'fulfilled') {
|
76
|
+
pathsArrays.push(result.value);
|
77
|
+
}
|
78
|
+
else {
|
79
|
+
const error = result.reason;
|
80
|
+
const message = error instanceof Error ? error.message : String(error);
|
81
|
+
logger.error(`Error discovering files in directory: ${message}`);
|
82
|
+
// Continue processing other directories
|
83
|
+
}
|
84
|
+
}
|
74
85
|
}
|
86
|
+
const paths = pathsArrays.flat();
|
75
87
|
return Array.from(new Set(paths));
|
76
88
|
}
|
77
89
|
async function getGeminiMdFilePathsInternalForEachDir(dir, userHomePath, debugMode, fileService, extensionContextFilePaths = [], fileFilteringOptions, maxDirs) {
|
78
90
|
const allPaths = new Set();
|
79
|
-
const geminiMdFilenames =
|
91
|
+
const geminiMdFilenames = getAllGeminiMdFilenames();
|
80
92
|
for (const geminiMdFilename of geminiMdFilenames) {
|
81
93
|
const resolvedHome = path.resolve(userHomePath);
|
82
|
-
const globalMemoryPath = path.join(resolvedHome,
|
94
|
+
const globalMemoryPath = path.join(resolvedHome, GEMINI_CONFIG_DIR, geminiMdFilename);
|
83
95
|
// This part that finds the global file always runs.
|
84
96
|
try {
|
85
97
|
await fs.access(globalMemoryPath, fsSync.constants.R_OK);
|
@@ -105,16 +117,7 @@ async function getGeminiMdFilePathsInternalForEachDir(dir, userHomePath, debugMo
|
|
105
117
|
? path.dirname(projectRoot)
|
106
118
|
: path.dirname(resolvedHome);
|
107
119
|
while (currentDir && currentDir !== path.dirname(currentDir)) {
|
108
|
-
|
109
|
-
if (debugMode) {
|
110
|
-
logger.debug(`Checking for ${geminiMdFilename} in (upward scan): ${currentDir}`);
|
111
|
-
}
|
112
|
-
// Skip the global .llxprt directory itself during upward scan from CWD,
|
113
|
-
// as global is handled separately and explicitly first.
|
114
|
-
if (currentDir === path.join(resolvedHome, LLXPRT_CONFIG_DIR)) {
|
115
|
-
if (debugMode) {
|
116
|
-
logger.debug(`Upward scan reached global config dir path, stopping upward search here: ${currentDir}`);
|
117
|
-
}
|
120
|
+
if (currentDir === path.join(resolvedHome, GEMINI_CONFIG_DIR)) {
|
118
121
|
break;
|
119
122
|
}
|
120
123
|
const potentialPath = path.join(currentDir, geminiMdFilename);
|
@@ -156,29 +159,47 @@ async function getGeminiMdFilePathsInternalForEachDir(dir, userHomePath, debugMo
|
|
156
159
|
}
|
157
160
|
const finalPaths = Array.from(allPaths);
|
158
161
|
if (debugMode)
|
159
|
-
logger.debug(`Final ordered ${
|
162
|
+
logger.debug(`Final ordered ${getAllGeminiMdFilenames()} paths to read: ${JSON.stringify(finalPaths)}`);
|
160
163
|
return finalPaths;
|
161
164
|
}
|
162
165
|
async function readGeminiMdFiles(filePaths, debugMode, importFormat = 'tree') {
|
166
|
+
// Process files in parallel with concurrency limit to prevent EMFILE errors
|
167
|
+
const CONCURRENT_LIMIT = 20; // Higher limit for file reads as they're typically faster
|
163
168
|
const results = [];
|
164
|
-
for (
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
169
|
+
for (let i = 0; i < filePaths.length; i += CONCURRENT_LIMIT) {
|
170
|
+
const batch = filePaths.slice(i, i + CONCURRENT_LIMIT);
|
171
|
+
const batchPromises = batch.map(async (filePath) => {
|
172
|
+
try {
|
173
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
174
|
+
// Process imports in the content
|
175
|
+
const processedResult = await processImports(content, path.dirname(filePath), debugMode, undefined, undefined, importFormat);
|
176
|
+
if (debugMode)
|
177
|
+
logger.debug(`Successfully read and processed imports: ${filePath} (Length: ${processedResult.content.length})`);
|
178
|
+
return { filePath, content: processedResult.content };
|
179
|
+
}
|
180
|
+
catch (error) {
|
181
|
+
const isTestEnv = process.env['NODE_ENV'] === 'test' || process.env['VITEST'];
|
182
|
+
if (!isTestEnv) {
|
183
|
+
const message = error instanceof Error ? error.message : String(error);
|
184
|
+
logger.warn(`Warning: Could not read ${getAllGeminiMdFilenames()} file at ${filePath}. Error: ${message}`);
|
185
|
+
}
|
186
|
+
if (debugMode)
|
187
|
+
logger.debug(`Failed to read: ${filePath}`);
|
188
|
+
return { filePath, content: null }; // Still include it with null content
|
189
|
+
}
|
190
|
+
});
|
191
|
+
const batchResults = await Promise.allSettled(batchPromises);
|
192
|
+
for (const result of batchResults) {
|
193
|
+
if (result.status === 'fulfilled') {
|
194
|
+
results.push(result.value);
|
195
|
+
}
|
196
|
+
else {
|
197
|
+
// This case shouldn't happen since we catch all errors above,
|
198
|
+
// but handle it for completeness
|
199
|
+
const error = result.reason;
|
176
200
|
const message = error instanceof Error ? error.message : String(error);
|
177
|
-
logger.
|
201
|
+
logger.error(`Unexpected error processing file: ${message}`);
|
178
202
|
}
|
179
|
-
results.push({ filePath, content: null }); // Still include it with null content
|
180
|
-
if (debugMode)
|
181
|
-
logger.debug(`Failed to read: ${filePath}`);
|
182
203
|
}
|
183
204
|
}
|
184
205
|
return results;
|
@@ -202,7 +223,7 @@ currentWorkingDirectoryForDisplay) {
|
|
202
223
|
.join('\n\n');
|
203
224
|
}
|
204
225
|
/**
|
205
|
-
* Loads hierarchical
|
226
|
+
* Loads hierarchical GEMINI.md files and concatenates their content.
|
206
227
|
* This function is intended for use by the server.
|
207
228
|
*/
|
208
229
|
export async function loadServerHierarchicalMemory(currentWorkingDirectory, includeDirectoriesToReadGemini, debugMode, fileService, extensionContextFilePaths = [], importFormat = 'tree', fileFilteringOptions, maxDirs = 200) {
|
@@ -214,7 +235,7 @@ export async function loadServerHierarchicalMemory(currentWorkingDirectory, incl
|
|
214
235
|
const filePaths = await getGeminiMdFilePathsInternal(currentWorkingDirectory, includeDirectoriesToReadGemini, userHomePath, debugMode, fileService, extensionContextFilePaths, fileFilteringOptions || DEFAULT_MEMORY_FILE_FILTERING_OPTIONS, maxDirs);
|
215
236
|
if (filePaths.length === 0) {
|
216
237
|
if (debugMode)
|
217
|
-
logger.debug('No
|
238
|
+
logger.debug('No GEMINI.md files found in hierarchy of the workspace.');
|
218
239
|
return { memoryContent: '', fileCount: 0 };
|
219
240
|
}
|
220
241
|
const contentsWithPaths = await readGeminiMdFiles(filePaths, debugMode, importFormat);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"memoryDiscovery.js","sourceRoot":"","sources":["../../../src/utils/memoryDiscovery.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,MAAM,MAAM,IAAI,CAAC;AAC7B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,iBAAiB,
|
1
|
+
{"version":3,"file":"memoryDiscovery.js","sourceRoot":"","sources":["../../../src/utils/memoryDiscovery.ts"],"names":[],"mappings":"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"}
|
@@ -50,23 +50,6 @@ export declare function unescapePath(filePath: string): string;
|
|
50
50
|
* @returns A SHA256 hash of the project root path.
|
51
51
|
*/
|
52
52
|
export declare function getProjectHash(projectRoot: string): string;
|
53
|
-
/**
|
54
|
-
* Generates a unique temporary directory path for a project.
|
55
|
-
* @param projectRoot The absolute path to the project's root directory.
|
56
|
-
* @returns The path to the project's temporary directory.
|
57
|
-
*/
|
58
|
-
export declare function getProjectTempDir(projectRoot: string): string;
|
59
|
-
/**
|
60
|
-
* Returns the absolute path to the user-level commands directory.
|
61
|
-
* @returns The path to the user's commands directory.
|
62
|
-
*/
|
63
|
-
export declare function getUserCommandsDir(): string;
|
64
|
-
/**
|
65
|
-
* Returns the absolute path to the project-level commands directory.
|
66
|
-
* @param projectRoot The absolute path to the project's root directory.
|
67
|
-
* @returns The path to the project's commands directory.
|
68
|
-
*/
|
69
|
-
export declare function getProjectCommandsDir(projectRoot: string): string;
|
70
53
|
/**
|
71
54
|
* Checks if a path is a subpath of another path.
|
72
55
|
* @param parentPath The parent path.
|
package/dist/src/utils/paths.js
CHANGED
@@ -9,8 +9,6 @@ import * as crypto from 'crypto';
|
|
9
9
|
import * as fs from 'fs';
|
10
10
|
export const LLXPRT_DIR = '.llxprt';
|
11
11
|
export const GOOGLE_ACCOUNTS_FILENAME = 'google_accounts.json';
|
12
|
-
const TMP_DIR_NAME = 'tmp';
|
13
|
-
const COMMANDS_DIR_NAME = 'commands';
|
14
12
|
export function ensureLlxprtDirExists() {
|
15
13
|
const homeDir = os.homedir();
|
16
14
|
const llxprtDir = path.join(homeDir, LLXPRT_DIR);
|
@@ -151,30 +149,6 @@ export function unescapePath(filePath) {
|
|
151
149
|
export function getProjectHash(projectRoot) {
|
152
150
|
return crypto.createHash('sha256').update(projectRoot).digest('hex');
|
153
151
|
}
|
154
|
-
/**
|
155
|
-
* Generates a unique temporary directory path for a project.
|
156
|
-
* @param projectRoot The absolute path to the project's root directory.
|
157
|
-
* @returns The path to the project's temporary directory.
|
158
|
-
*/
|
159
|
-
export function getProjectTempDir(projectRoot) {
|
160
|
-
const hash = getProjectHash(projectRoot);
|
161
|
-
return path.join(os.homedir(), LLXPRT_DIR, TMP_DIR_NAME, hash);
|
162
|
-
}
|
163
|
-
/**
|
164
|
-
* Returns the absolute path to the user-level commands directory.
|
165
|
-
* @returns The path to the user's commands directory.
|
166
|
-
*/
|
167
|
-
export function getUserCommandsDir() {
|
168
|
-
return path.join(os.homedir(), LLXPRT_DIR, COMMANDS_DIR_NAME);
|
169
|
-
}
|
170
|
-
/**
|
171
|
-
* Returns the absolute path to the project-level commands directory.
|
172
|
-
* @param projectRoot The absolute path to the project's root directory.
|
173
|
-
* @returns The path to the project's commands directory.
|
174
|
-
*/
|
175
|
-
export function getProjectCommandsDir(projectRoot) {
|
176
|
-
return path.join(projectRoot, LLXPRT_DIR, COMMANDS_DIR_NAME);
|
177
|
-
}
|
178
152
|
/**
|
179
153
|
* Checks if a path is a subpath of another path.
|
180
154
|
* @param parentPath The parent path.
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/utils/paths.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC;AACpC,MAAM,CAAC,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/utils/paths.ts"],"names":[],"mappings":"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"}
|
@@ -4,10 +4,14 @@
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
5
5
|
*/
|
6
6
|
import AjvPkg from 'ajv';
|
7
|
+
import * as addFormats from 'ajv-formats';
|
7
8
|
// Ajv's ESM/CJS interop: use 'any' for compatibility as recommended by Ajv docs
|
8
9
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
9
10
|
const AjvClass = AjvPkg.default || AjvPkg;
|
10
11
|
const ajValidator = new AjvClass();
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
13
|
+
const addFormatsFunc = addFormats.default || addFormats;
|
14
|
+
addFormatsFunc(ajValidator);
|
11
15
|
/**
|
12
16
|
* Simple utility to validate objects against JSON Schemas
|
13
17
|
*/
|