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.
- package/LICENSE +21 -0
- package/README.md +224 -0
- package/dist/api/client.d.ts +15 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +129 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/universal-client.d.ts +36 -0
- package/dist/api/universal-client.d.ts.map +1 -0
- package/dist/api/universal-client.js +184 -0
- package/dist/api/universal-client.js.map +1 -0
- package/dist/cli/config-command.d.ts +29 -0
- package/dist/cli/config-command.d.ts.map +1 -0
- package/dist/cli/config-command.js +458 -0
- package/dist/cli/config-command.js.map +1 -0
- package/dist/cli/repl.d.ts +98 -0
- package/dist/cli/repl.d.ts.map +1 -0
- package/dist/cli/repl.js +1782 -0
- package/dist/cli/repl.js.map +1 -0
- package/dist/config/interactive-setup.d.ts +26 -0
- package/dist/config/interactive-setup.d.ts.map +1 -0
- package/dist/config/interactive-setup.js +308 -0
- package/dist/config/interactive-setup.js.map +1 -0
- package/dist/config/manager.d.ts +125 -0
- package/dist/config/manager.d.ts.map +1 -0
- package/dist/config/manager.js +240 -0
- package/dist/config/manager.js.map +1 -0
- package/dist/config/setup.d.ts +29 -0
- package/dist/config/setup.d.ts.map +1 -0
- package/dist/config/setup.js +442 -0
- package/dist/config/setup.js.map +1 -0
- package/dist/context/memory.d.ts +65 -0
- package/dist/context/memory.d.ts.map +1 -0
- package/dist/context/memory.js +215 -0
- package/dist/context/memory.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +207 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/client.d.ts +38 -0
- package/dist/mcp/client.d.ts.map +1 -0
- package/dist/mcp/client.js +288 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/manager.d.ts +43 -0
- package/dist/mcp/manager.d.ts.map +1 -0
- package/dist/mcp/manager.js +230 -0
- package/dist/mcp/manager.js.map +1 -0
- package/dist/mcp/types.d.ts +106 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +3 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/personality/manager.d.ts +24 -0
- package/dist/personality/manager.d.ts.map +1 -0
- package/dist/personality/manager.js +217 -0
- package/dist/personality/manager.js.map +1 -0
- package/dist/tools/codebase.d.ts +34 -0
- package/dist/tools/codebase.d.ts.map +1 -0
- package/dist/tools/codebase.js +291 -0
- package/dist/tools/codebase.js.map +1 -0
- package/dist/tools/filesystem.d.ts +41 -0
- package/dist/tools/filesystem.d.ts.map +1 -0
- package/dist/tools/filesystem.js +263 -0
- package/dist/tools/filesystem.js.map +1 -0
- package/dist/tools/terminal.d.ts +30 -0
- package/dist/tools/terminal.d.ts.map +1 -0
- package/dist/tools/terminal.js +217 -0
- package/dist/tools/terminal.js.map +1 -0
- package/dist/tools/todo.d.ts +58 -0
- package/dist/tools/todo.d.ts.map +1 -0
- package/dist/tools/todo.js +233 -0
- package/dist/tools/todo.js.map +1 -0
- package/dist/types/index.d.ts +104 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/personality.d.ts +21 -0
- package/dist/types/personality.d.ts.map +1 -0
- package/dist/types/personality.js +3 -0
- package/dist/types/personality.js.map +1 -0
- package/dist/ui/logger.d.ts +76 -0
- package/dist/ui/logger.d.ts.map +1 -0
- package/dist/ui/logger.js +488 -0
- package/dist/ui/logger.js.map +1 -0
- package/dist/ui/renderer.d.ts +52 -0
- package/dist/ui/renderer.d.ts.map +1 -0
- package/dist/ui/renderer.js +294 -0
- package/dist/ui/renderer.js.map +1 -0
- package/dist/ui/tui.d.ts +53 -0
- package/dist/ui/tui.d.ts.map +1 -0
- package/dist/ui/tui.js +131 -0
- package/dist/ui/tui.js.map +1 -0
- 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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"}
|