kaze-cli 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +224 -0
  3. package/dist/api/client.d.ts +15 -0
  4. package/dist/api/client.d.ts.map +1 -0
  5. package/dist/api/client.js +129 -0
  6. package/dist/api/client.js.map +1 -0
  7. package/dist/api/universal-client.d.ts +36 -0
  8. package/dist/api/universal-client.d.ts.map +1 -0
  9. package/dist/api/universal-client.js +184 -0
  10. package/dist/api/universal-client.js.map +1 -0
  11. package/dist/cli/config-command.d.ts +29 -0
  12. package/dist/cli/config-command.d.ts.map +1 -0
  13. package/dist/cli/config-command.js +458 -0
  14. package/dist/cli/config-command.js.map +1 -0
  15. package/dist/cli/repl.d.ts +98 -0
  16. package/dist/cli/repl.d.ts.map +1 -0
  17. package/dist/cli/repl.js +1782 -0
  18. package/dist/cli/repl.js.map +1 -0
  19. package/dist/config/interactive-setup.d.ts +26 -0
  20. package/dist/config/interactive-setup.d.ts.map +1 -0
  21. package/dist/config/interactive-setup.js +308 -0
  22. package/dist/config/interactive-setup.js.map +1 -0
  23. package/dist/config/manager.d.ts +125 -0
  24. package/dist/config/manager.d.ts.map +1 -0
  25. package/dist/config/manager.js +240 -0
  26. package/dist/config/manager.js.map +1 -0
  27. package/dist/config/setup.d.ts +29 -0
  28. package/dist/config/setup.d.ts.map +1 -0
  29. package/dist/config/setup.js +442 -0
  30. package/dist/config/setup.js.map +1 -0
  31. package/dist/context/memory.d.ts +65 -0
  32. package/dist/context/memory.d.ts.map +1 -0
  33. package/dist/context/memory.js +215 -0
  34. package/dist/context/memory.js.map +1 -0
  35. package/dist/index.d.ts +2 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +207 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/mcp/client.d.ts +38 -0
  40. package/dist/mcp/client.d.ts.map +1 -0
  41. package/dist/mcp/client.js +288 -0
  42. package/dist/mcp/client.js.map +1 -0
  43. package/dist/mcp/manager.d.ts +43 -0
  44. package/dist/mcp/manager.d.ts.map +1 -0
  45. package/dist/mcp/manager.js +230 -0
  46. package/dist/mcp/manager.js.map +1 -0
  47. package/dist/mcp/types.d.ts +106 -0
  48. package/dist/mcp/types.d.ts.map +1 -0
  49. package/dist/mcp/types.js +3 -0
  50. package/dist/mcp/types.js.map +1 -0
  51. package/dist/personality/manager.d.ts +24 -0
  52. package/dist/personality/manager.d.ts.map +1 -0
  53. package/dist/personality/manager.js +217 -0
  54. package/dist/personality/manager.js.map +1 -0
  55. package/dist/tools/codebase.d.ts +34 -0
  56. package/dist/tools/codebase.d.ts.map +1 -0
  57. package/dist/tools/codebase.js +291 -0
  58. package/dist/tools/codebase.js.map +1 -0
  59. package/dist/tools/filesystem.d.ts +41 -0
  60. package/dist/tools/filesystem.d.ts.map +1 -0
  61. package/dist/tools/filesystem.js +263 -0
  62. package/dist/tools/filesystem.js.map +1 -0
  63. package/dist/tools/terminal.d.ts +30 -0
  64. package/dist/tools/terminal.d.ts.map +1 -0
  65. package/dist/tools/terminal.js +217 -0
  66. package/dist/tools/terminal.js.map +1 -0
  67. package/dist/tools/todo.d.ts +58 -0
  68. package/dist/tools/todo.d.ts.map +1 -0
  69. package/dist/tools/todo.js +233 -0
  70. package/dist/tools/todo.js.map +1 -0
  71. package/dist/types/index.d.ts +104 -0
  72. package/dist/types/index.d.ts.map +1 -0
  73. package/dist/types/index.js +3 -0
  74. package/dist/types/index.js.map +1 -0
  75. package/dist/types/personality.d.ts +21 -0
  76. package/dist/types/personality.d.ts.map +1 -0
  77. package/dist/types/personality.js +3 -0
  78. package/dist/types/personality.js.map +1 -0
  79. package/dist/ui/logger.d.ts +76 -0
  80. package/dist/ui/logger.d.ts.map +1 -0
  81. package/dist/ui/logger.js +488 -0
  82. package/dist/ui/logger.js.map +1 -0
  83. package/dist/ui/renderer.d.ts +52 -0
  84. package/dist/ui/renderer.d.ts.map +1 -0
  85. package/dist/ui/renderer.js +294 -0
  86. package/dist/ui/renderer.js.map +1 -0
  87. package/dist/ui/tui.d.ts +53 -0
  88. package/dist/ui/tui.d.ts.map +1 -0
  89. package/dist/ui/tui.js +131 -0
  90. package/dist/ui/tui.js.map +1 -0
  91. package/package.json +70 -0
@@ -0,0 +1,291 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.CodebaseSearcher = void 0;
37
+ const fs = __importStar(require("fs/promises"));
38
+ const path = __importStar(require("path"));
39
+ const glob_1 = require("glob");
40
+ class CodebaseSearcher {
41
+ maxFileSize = 100000;
42
+ languageExtensions = {
43
+ javascript: ['.js', '.jsx', '.mjs', '.cjs'],
44
+ typescript: ['.ts', '.tsx'],
45
+ python: ['.py'],
46
+ go: ['.go'],
47
+ rust: ['.rs'],
48
+ java: ['.java'],
49
+ c: ['.c', '.h'],
50
+ cpp: ['.cpp', '.hpp', '.cc', '.cxx'],
51
+ ruby: ['.rb'],
52
+ php: ['.php'],
53
+ swift: ['.swift'],
54
+ kotlin: ['.kt', '.kts'],
55
+ scala: ['.scala'],
56
+ shell: ['.sh', '.bash', '.zsh'],
57
+ sql: ['.sql'],
58
+ html: ['.html', '.htm'],
59
+ css: ['.css', '.scss', '.sass', '.less'],
60
+ json: ['.json'],
61
+ yaml: ['.yaml', '.yml'],
62
+ xml: ['.xml'],
63
+ markdown: ['.md'],
64
+ };
65
+ async semanticSearch(query, options = {}) {
66
+ const { maxResults = 50, targetDirectories = [process.cwd()], excludePatterns = ['node_modules', 'dist', 'build'], includeTests = false, minScore = 0.3 } = options;
67
+ const keywords = this.extractKeywords(this.tokenize(query));
68
+ const allMatches = [];
69
+ const files = await this.findFiles(targetDirectories, excludePatterns, includeTests);
70
+ for (const filePath of files) {
71
+ const content = await this.readFileContent(filePath);
72
+ if (!content)
73
+ continue;
74
+ const language = this.detectLanguage(filePath);
75
+ const lines = content.split('\n');
76
+ const matches = this.searchInFile(filePath, lines, language, keywords, query, minScore);
77
+ allMatches.push(...matches);
78
+ }
79
+ return allMatches
80
+ .sort((a, b) => b.score - a.score)
81
+ .slice(0, maxResults);
82
+ }
83
+ async findFiles(targetDirectories, excludePatterns, includeTests) {
84
+ const files = [];
85
+ for (const dir of targetDirectories) {
86
+ const absolutePath = path.resolve(dir);
87
+ const found = await (0, glob_1.glob)('**/*', {
88
+ cwd: absolutePath,
89
+ ignore: includeTests ? excludePatterns : [...excludePatterns, '***.spec.*'],
90
+ nodir: true,
91
+ absolute: true
92
+ });
93
+ files.push(...found);
94
+ }
95
+ return files;
96
+ }
97
+ async readFileContent(filePath) {
98
+ try {
99
+ const stats = await fs.stat(filePath);
100
+ if (stats.isDirectory() || stats.size > this.maxFileSize) {
101
+ return null;
102
+ }
103
+ return await fs.readFile(filePath, 'utf-8');
104
+ }
105
+ catch {
106
+ return null;
107
+ }
108
+ }
109
+ detectLanguage(filePath) {
110
+ const ext = path.extname(filePath).toLowerCase();
111
+ for (const [lang, extensions] of Object.entries(this.languageExtensions)) {
112
+ if (extensions.includes(ext)) {
113
+ return lang;
114
+ }
115
+ }
116
+ return 'unknown';
117
+ }
118
+ tokenize(text) {
119
+ return text.toLowerCase()
120
+ .split(/[^a-z0-9]+/)
121
+ .filter(token => token.length > 2);
122
+ }
123
+ extractKeywords(tokens) {
124
+ const stopWords = new Set(['the', 'and', 'for', 'are', 'but', 'not', 'you', 'all', 'can', 'had', 'her', 'was', 'one', 'our', 'out', 'get', 'has', 'him', 'his', 'how', 'man', 'new', 'now', 'old', 'see', 'two', 'way', 'who', 'boy', 'did', 'its', 'let', 'put', 'say', 'she', 'too', 'use', 'dad', 'mom', 'act', 'add', 'age', 'ago', 'air', 'art', 'ask', 'bad', 'bag', 'bar', 'bed', 'big', 'box', 'bus', 'car', 'cat', 'cow', 'cup', 'cut', 'day', 'dog', 'ear', 'eat', 'egg', 'end', 'eye', 'far', 'fat', 'few', 'fit', 'fly', 'fun', 'gas', 'god', 'got', 'gun', 'guy', 'hat', 'hit', 'hot', 'ice', 'ill', 'ink', 'job', 'joy', 'key', 'kid', 'law', 'lay', 'lie', 'low', 'map', 'may', 'mix', 'net', 'nod', 'off', 'oil', 'own', 'pan', 'pay', 'pen', 'per', 'pet', 'pie', 'pig', 'pot', 'rat', 'red', 'run', 'sad', 'sea', 'set', 'sit', 'six', 'sky', 'son', 'sun', 'tax', 'tea', 'ten', 'tie', 'tip', 'toy', 'try', 'van', 'war', 'wet', 'win', 'yes', 'yet', 'zip']);
125
+ return tokens.filter(token => !stopWords.has(token));
126
+ }
127
+ searchInFile(filePath, lines, language, keywords, query, minScore) {
128
+ const matches = [];
129
+ const windowSize = 10;
130
+ for (let i = 0; i < lines.length; i++) {
131
+ const line = lines[i].toLowerCase();
132
+ const lineTokens = this.tokenize(line);
133
+ let score = 0;
134
+ let matchCount = 0;
135
+ for (const keyword of keywords) {
136
+ if (line.includes(keyword)) {
137
+ score += 1 / (keywords.length);
138
+ matchCount++;
139
+ }
140
+ }
141
+ if (query.toLowerCase().includes(line.trim().toLowerCase())) {
142
+ score += 0.5;
143
+ }
144
+ if (score >= minScore) {
145
+ const startLine = Math.max(0, i - Math.floor(windowSize / 2));
146
+ const endLine = Math.min(lines.length, i + Math.ceil(windowSize / 2));
147
+ const content = lines.slice(startLine, endLine).join('\n');
148
+ matches.push({
149
+ filePath,
150
+ startLine: startLine + 1,
151
+ endLine: endLine,
152
+ content,
153
+ language,
154
+ score
155
+ });
156
+ }
157
+ }
158
+ return matches;
159
+ }
160
+ findFunctionsInFile(filePath, lines, language, pattern) {
161
+ const matches = [];
162
+ const regex = new RegExp(pattern, 'i');
163
+ const functionPatterns = {
164
+ javascript: /^(?:async\s+)?(?:function\s+\w+|const\s+\w+\s*=\s*(?:async\s+)?\(?[^)]*\)?\s*=>|\w+\s*\([^)]*\)\s*{)/,
165
+ typescript: /^(?:async\s+)?(?:function\s+\w+|const\s+\w+\s*=\s*(?:async\s+)?\(?[^)]*\)?\s*=>|\w+\s*\([^)]*\)\s*(?::\s*[^{]+)?\s*{)/,
166
+ python: /^def\s+\w+\s*\(/,
167
+ go: /^func\s+\w+\s*\(/,
168
+ rust: /^fn\s+\w+\s*\(/,
169
+ java: /^(?:public|private|protected)?\s*(?:static)?\s*\w+\s+\w+\s*\(/,
170
+ c: /^\w+\s+\*?\s*\w+\s*\(/,
171
+ cpp: /^\w+::?\*?\s*\w+\s*\(/,
172
+ ruby: /^def\s+\w+\s*/,
173
+ php: /^function\s+\w+\s*\(/,
174
+ swift: /^func\s+\w+\s*\(/,
175
+ kotlin: /^fun\s+\w+\s*\(/,
176
+ scala: /^def\s+\w+\s*\(/,
177
+ };
178
+ const patternForLang = functionPatterns[language] || functionPatterns.javascript;
179
+ for (let i = 0; i < lines.length; i++) {
180
+ const line = lines[i];
181
+ if (patternForLang.test(line) && regex.test(line)) {
182
+ const startLine = i;
183
+ let braceCount = 0;
184
+ let endLine = i;
185
+ for (let j = i; j < lines.length; j++) {
186
+ braceCount += (lines[j].match(/{/g) || []).length;
187
+ braceCount -= (lines[j].match(/}/g) || []).length;
188
+ if (braceCount === 0 && j > i) {
189
+ endLine = j;
190
+ break;
191
+ }
192
+ }
193
+ const content = lines.slice(startLine, endLine + 1).join('\n');
194
+ matches.push({
195
+ filePath,
196
+ startLine: startLine + 1,
197
+ endLine: endLine + 1,
198
+ content,
199
+ language,
200
+ score: 1.0
201
+ });
202
+ }
203
+ }
204
+ return matches;
205
+ }
206
+ isImport(line) {
207
+ return /^(import|require|from|use|include)\s/.test(line);
208
+ }
209
+ isExport(line) {
210
+ return /^export\s/.test(line);
211
+ }
212
+ isClassDefinition(line, language) {
213
+ const patterns = {
214
+ javascript: /^class\s+\w+/,
215
+ typescript: /^class\s+\w+/,
216
+ python: /^class\s+\w+/,
217
+ java: /^(?:public|private|protected)?\s*class\s+\w+/,
218
+ cpp: /^class\s+\w+/,
219
+ kotlin: /^class\s+\w+/,
220
+ scala: /^(?:trait|class|object)\s+\w+/,
221
+ };
222
+ const pattern = patterns[language];
223
+ return pattern ? pattern.test(line) : false;
224
+ }
225
+ isFunctionDefinition(line, language) {
226
+ const patterns = {
227
+ javascript: /^(?:async\s+)?(?:function\s+\w+|const\s+\w+\s*=\s*(?:async\s+)?\(?[^)]*\)?\s*=>|\w+\s*\([^)]*\)\s*{)/,
228
+ typescript: /^(?:async\s+)?(?:function\s+\w+|const\s+\w+\s*=\s*(?:async\s+)?\(?[^)]*\)?\s*=>|\w+\s*\([^)]*\)\s*(?::\s*[^{]+)?\s*{)/,
229
+ python: /^def\s+\w+\s*\(/,
230
+ go: /^func\s+\w+\s*\(/,
231
+ rust: /^fn\s+\w+\s*\(/,
232
+ java: /^(?:public|private|protected)?\s*(?:static)?\s*\w+\s+\w+\s*\(/,
233
+ c: /^\w+\s+\*?\s*\w+\s*\(/,
234
+ cpp: /^\w+::?\*?\s*\w+\s*\(/,
235
+ ruby: /^def\s+\w+\s*/,
236
+ php: /^function\s+\w+\s*\(/,
237
+ swift: /^func\s+\w+\s*\(/,
238
+ kotlin: /^fun\s+\w+\s*\(/,
239
+ scala: /^def\s+\w+\s*\(/,
240
+ };
241
+ const pattern = patterns[language];
242
+ return pattern ? pattern.test(line) : false;
243
+ }
244
+ parseClassDefinition(lines, startIndex, language) {
245
+ const line = lines[startIndex];
246
+ const match = line.match(/class\s+(\w+)/);
247
+ if (!match)
248
+ return null;
249
+ const className = match[1];
250
+ const methods = [];
251
+ let i = startIndex + 1;
252
+ while (i < lines.length && i < startIndex + 50) {
253
+ if (this.isFunctionDefinition(lines[i], language)) {
254
+ methods.push(lines[i].trim());
255
+ }
256
+ i++;
257
+ }
258
+ return {
259
+ name: className,
260
+ line: startIndex + 1,
261
+ methods
262
+ };
263
+ }
264
+ parseFunctionDefinition(lines, startIndex, language) {
265
+ const line = lines[startIndex];
266
+ let name = '';
267
+ if (language === 'python') {
268
+ const match = line.match(/def\s+(\w+)/);
269
+ name = match ? match[1] : '';
270
+ }
271
+ else if (language === 'go' || language === 'rust') {
272
+ const match = line.match(/(?:func|fn)\s+(\w+)/);
273
+ name = match ? match[1] : '';
274
+ }
275
+ else if (language === 'java' || language === 'c' || language === 'cpp') {
276
+ const match = line.match(/\w+\s+(\w+)\s*\(/);
277
+ name = match ? match[1] : '';
278
+ }
279
+ else {
280
+ const match = line.match(/(?:function|const)\s+(\w+)/);
281
+ name = match ? match[1] : '';
282
+ }
283
+ return {
284
+ name,
285
+ line: startIndex + 1,
286
+ signature: line.trim()
287
+ };
288
+ }
289
+ }
290
+ exports.CodebaseSearcher = CodebaseSearcher;
291
+ //# sourceMappingURL=codebase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codebase.js","sourceRoot":"","sources":["../../src/tools/codebase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ export interface ReadFileResult {
2
+ content: string;
3
+ lines: number;
4
+ size: number;
5
+ language?: string;
6
+ }
7
+ export interface SearchResult {
8
+ path: string;
9
+ matches: Array<{
10
+ line: number;
11
+ content: string;
12
+ contextBefore?: string[];
13
+ contextAfter?: string[];
14
+ }>;
15
+ }
16
+ export declare class FileSystemTools {
17
+ private maxFileSize;
18
+ private editProgressCallback;
19
+ onEditProgress(callback: ((step: string, progress: number, total: number, message: string) => void) | null): void;
20
+ private reportProgress;
21
+ readFile(filePath: string, offset?: number, limit?: number): Promise<ReadFileResult>;
22
+ writeFile(filePath: string, content: string): Promise<void>;
23
+ editFile(filePath: string, oldStr: string, newStr: string): Promise<{
24
+ success: boolean;
25
+ modified?: number;
26
+ }>;
27
+ searchFiles(pattern: string, options?: {
28
+ path?: string;
29
+ glob?: string;
30
+ type?: string;
31
+ caseInsensitive?: boolean;
32
+ maxResults?: number;
33
+ contextLines?: number;
34
+ searchMode?: 'content' | 'filename' | 'both';
35
+ }): Promise<SearchResult[]>;
36
+ listDirectory(dirPath: string, ignore?: string[]): Promise<string[]>;
37
+ deleteFiles(filePaths: string[]): Promise<void>;
38
+ fileExists(filePath: string): Promise<boolean>;
39
+ private detectLanguage;
40
+ }
41
+ //# sourceMappingURL=filesystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/tools/filesystem.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC,CAAC;CACJ;AACD,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAW;IAC9B,OAAO,CAAC,oBAAoB,CAA2F;IACvH,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI;IAGjH,OAAO,CAAC,cAAc;IAKhB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAI,EAAE,KAAK,SAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAwB7E,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3D,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAkB5G,WAAW,CACf,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;KACzC,GACL,OAAO,CAAC,YAAY,EAAE,CAAC;IAmFpB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAqBxE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/C,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQpD,OAAO,CAAC,cAAc;CA2CvB"}
@@ -0,0 +1,263 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.FileSystemTools = void 0;
37
+ const fs = __importStar(require("fs/promises"));
38
+ const path = __importStar(require("path"));
39
+ const glob_1 = require("glob");
40
+ const minimatch_1 = require("minimatch");
41
+ class FileSystemTools {
42
+ maxFileSize = 2000000;
43
+ editProgressCallback = null;
44
+ onEditProgress(callback) {
45
+ this.editProgressCallback = callback;
46
+ }
47
+ reportProgress(step, progress, total, message) {
48
+ if (this.editProgressCallback) {
49
+ this.editProgressCallback(step, progress, total, message);
50
+ }
51
+ }
52
+ async readFile(filePath, offset = 1, limit = 2000) {
53
+ const absolutePath = path.resolve(filePath);
54
+ const stats = await fs.stat(absolutePath);
55
+ if (stats.isDirectory()) {
56
+ throw new Error(`Path is a directory: ${absolutePath}`);
57
+ }
58
+ if (stats.size > this.maxFileSize) {
59
+ throw new Error(`File too large (${stats.size} bytes). Max size: ${this.maxFileSize}`);
60
+ }
61
+ const content = await fs.readFile(absolutePath, 'utf-8');
62
+ const lines = content.split('\n');
63
+ const totalLines = lines.length;
64
+ if (offset < 1)
65
+ offset = 1;
66
+ if (limit < 1)
67
+ limit = 1;
68
+ const startLine = offset - 1;
69
+ const endLine = Math.min(startLine + limit, totalLines);
70
+ const relevantContent = lines.slice(startLine, endLine).join('\n');
71
+ return {
72
+ content: relevantContent,
73
+ lines: totalLines,
74
+ size: stats.size,
75
+ language: this.detectLanguage(absolutePath)
76
+ };
77
+ }
78
+ async writeFile(filePath, content) {
79
+ const absolutePath = path.resolve(filePath);
80
+ const dir = path.dirname(absolutePath);
81
+ await fs.mkdir(dir, { recursive: true });
82
+ await fs.writeFile(absolutePath, content, 'utf-8');
83
+ }
84
+ async editFile(filePath, oldStr, newStr) {
85
+ const steps = 5;
86
+ this.reportProgress('reading', 1, steps, `Reading ${filePath}`);
87
+ const absolutePath = path.resolve(filePath);
88
+ const content = await fs.readFile(absolutePath, 'utf-8');
89
+ this.reportProgress('searching', 2, steps, 'Searching for pattern');
90
+ if (!content.includes(oldStr)) {
91
+ this.reportProgress('done', steps, steps, 'Pattern not found');
92
+ return { success: false };
93
+ }
94
+ this.reportProgress('diffing', 3, steps, 'Computing diff');
95
+ const newContent = content.replace(oldStr, newStr);
96
+ this.reportProgress('applying', 4, steps, 'Applying changes');
97
+ this.reportProgress('saving', 5, steps, 'Saving file');
98
+ await fs.writeFile(absolutePath, newContent, 'utf-8');
99
+ this.reportProgress('done', steps, steps, 'Edit complete');
100
+ return { success: true, modified: 1 };
101
+ }
102
+ async searchFiles(pattern, options = {}) {
103
+ const { path: searchPath = process.cwd(), glob: globPattern = '**/*', type: fileType, caseInsensitive = false, maxResults = 100, contextLines = 0, searchMode = 'content' } = options;
104
+ const files = await (0, glob_1.glob)(globPattern, {
105
+ cwd: searchPath,
106
+ ignore: ['node_modules/**', '.git/**', 'dist/**', 'build/**'],
107
+ nodir: true
108
+ });
109
+ const results = [];
110
+ const regexFlags = caseInsensitive ? 'gi' : 'g';
111
+ if (searchMode === 'filename') {
112
+ const patternRegex = caseInsensitive
113
+ ? new RegExp(pattern, 'gi')
114
+ : new RegExp(pattern);
115
+ for (const file of files) {
116
+ if (fileType && !file.endsWith(`.${fileType}`))
117
+ continue;
118
+ if (patternRegex.test(file)) {
119
+ const absolutePath = path.join(searchPath, file);
120
+ const content = await fs.readFile(absolutePath, 'utf-8');
121
+ const lines = content.split('\n');
122
+ results.push({
123
+ path: absolutePath,
124
+ matches: [{
125
+ line: 1,
126
+ content: `Found file: ${file}`
127
+ }]
128
+ });
129
+ if (results.length >= maxResults)
130
+ break;
131
+ }
132
+ }
133
+ return results;
134
+ }
135
+ try {
136
+ const regex = new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), regexFlags);
137
+ for (const file of files) {
138
+ if (fileType && !file.endsWith(`.${fileType}`))
139
+ continue;
140
+ const absolutePath = path.join(searchPath, file);
141
+ try {
142
+ const content = await fs.readFile(absolutePath, 'utf-8');
143
+ const lines = content.split('\n');
144
+ const matches = [];
145
+ lines.forEach((line, index) => {
146
+ if (matches.length >= maxResults)
147
+ return;
148
+ regex.lastIndex = 0;
149
+ if (regex.test(line)) {
150
+ const match = {
151
+ line: index + 1,
152
+ content: line.trim()
153
+ };
154
+ if (contextLines > 0) {
155
+ match.contextBefore = lines
156
+ .slice(Math.max(0, index - contextLines), index)
157
+ .map(l => l.trim());
158
+ match.contextAfter = lines
159
+ .slice(index + 1, Math.min(lines.length, index + contextLines + 1))
160
+ .map(l => l.trim());
161
+ }
162
+ matches.push(match);
163
+ }
164
+ });
165
+ if (matches.length > 0) {
166
+ results.push({
167
+ path: absolutePath,
168
+ matches: matches.slice(0, maxResults)
169
+ });
170
+ if (results.length >= maxResults)
171
+ break;
172
+ }
173
+ }
174
+ catch (e) {
175
+ continue;
176
+ }
177
+ }
178
+ }
179
+ catch (e) {
180
+ throw new Error(`Invalid regex pattern: ${pattern}`);
181
+ }
182
+ return results;
183
+ }
184
+ async listDirectory(dirPath, ignore = []) {
185
+ const absolutePath = path.resolve(dirPath);
186
+ const entries = await fs.readdir(absolutePath, { withFileTypes: true });
187
+ let results = [];
188
+ for (const entry of entries) {
189
+ const relativePath = path.relative(absolutePath, path.join(absolutePath, entry.name));
190
+ if (ignore.some(pattern => (0, minimatch_1.minimatch)(relativePath, pattern))) {
191
+ continue;
192
+ }
193
+ if (entry.isDirectory()) {
194
+ const subEntries = await this.listDirectory(path.join(absolutePath, entry.name), ignore);
195
+ results = results.concat(subEntries.map(sub => path.join(entry.name, sub)));
196
+ }
197
+ else {
198
+ results.push(entry.name);
199
+ }
200
+ }
201
+ return results;
202
+ }
203
+ async deleteFiles(filePaths) {
204
+ for (const filePath of filePaths) {
205
+ const absolutePath = path.resolve(filePath);
206
+ await fs.unlink(absolutePath);
207
+ }
208
+ }
209
+ async fileExists(filePath) {
210
+ try {
211
+ await fs.access(filePath);
212
+ return true;
213
+ }
214
+ catch {
215
+ return false;
216
+ }
217
+ }
218
+ detectLanguage(filePath) {
219
+ const ext = path.extname(filePath).toLowerCase();
220
+ const languageMap = {
221
+ '.js': 'javascript',
222
+ '.ts': 'typescript',
223
+ '.jsx': 'javascript',
224
+ '.tsx': 'typescript',
225
+ '.py': 'python',
226
+ '.go': 'go',
227
+ '.rs': 'rust',
228
+ '.java': 'java',
229
+ '.c': 'c',
230
+ '.cpp': 'cpp',
231
+ '.h': 'c',
232
+ '.hpp': 'cpp',
233
+ '.cs': 'csharp',
234
+ '.php': 'php',
235
+ '.rb': 'ruby',
236
+ '.swift': 'swift',
237
+ '.kt': 'kotlin',
238
+ '.scala': 'scala',
239
+ '.sh': 'shell',
240
+ '.bash': 'shell',
241
+ '.zsh': 'shell',
242
+ '.fish': 'shell',
243
+ '.sql': 'sql',
244
+ '.html': 'html',
245
+ '.css': 'css',
246
+ '.scss': 'scss',
247
+ '.sass': 'sass',
248
+ '.less': 'less',
249
+ '.json': 'json',
250
+ '.xml': 'xml',
251
+ '.yaml': 'yaml',
252
+ '.yml': 'yaml',
253
+ '.toml': 'toml',
254
+ '.md': 'markdown',
255
+ '.txt': 'text',
256
+ '.graphql': 'graphql',
257
+ '.gql': 'graphql'
258
+ };
259
+ return languageMap[ext] || 'unknown';
260
+ }
261
+ }
262
+ exports.FileSystemTools = FileSystemTools;
263
+ //# sourceMappingURL=filesystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/tools/filesystem.ts"],"names":[],"mappings":"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"}