@codemieai/code 0.0.1

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 (159) hide show
  1. package/.claude/agents/README.md +298 -0
  2. package/.claude/agents/release-manager.md +857 -0
  3. package/CLAUDE.md +856 -0
  4. package/LICENSE +201 -0
  5. package/README.md +917 -0
  6. package/bin/codemie-code.js +23 -0
  7. package/bin/codemie.js +8 -0
  8. package/dist/agents/adapters/aider.d.ts +12 -0
  9. package/dist/agents/adapters/aider.d.ts.map +1 -0
  10. package/dist/agents/adapters/aider.js +80 -0
  11. package/dist/agents/adapters/aider.js.map +1 -0
  12. package/dist/agents/adapters/claude-code.d.ts +12 -0
  13. package/dist/agents/adapters/claude-code.d.ts.map +1 -0
  14. package/dist/agents/adapters/claude-code.js +98 -0
  15. package/dist/agents/adapters/claude-code.js.map +1 -0
  16. package/dist/agents/adapters/codemie-code.d.ts +12 -0
  17. package/dist/agents/adapters/codemie-code.d.ts.map +1 -0
  18. package/dist/agents/adapters/codemie-code.js +42 -0
  19. package/dist/agents/adapters/codemie-code.js.map +1 -0
  20. package/dist/agents/adapters/codex.d.ts +12 -0
  21. package/dist/agents/adapters/codex.d.ts.map +1 -0
  22. package/dist/agents/adapters/codex.js +80 -0
  23. package/dist/agents/adapters/codex.js.map +1 -0
  24. package/dist/agents/registry.d.ts +18 -0
  25. package/dist/agents/registry.d.ts.map +1 -0
  26. package/dist/agents/registry.js +35 -0
  27. package/dist/agents/registry.js.map +1 -0
  28. package/dist/cli/cli.d.ts +4 -0
  29. package/dist/cli/cli.d.ts.map +1 -0
  30. package/dist/cli/cli.js +107 -0
  31. package/dist/cli/cli.js.map +1 -0
  32. package/dist/cli/commands/doctor.d.ts +3 -0
  33. package/dist/cli/commands/doctor.d.ts.map +1 -0
  34. package/dist/cli/commands/doctor.js +128 -0
  35. package/dist/cli/commands/doctor.js.map +1 -0
  36. package/dist/cli/commands/install.d.ts +3 -0
  37. package/dist/cli/commands/install.d.ts.map +1 -0
  38. package/dist/cli/commands/install.js +76 -0
  39. package/dist/cli/commands/install.js.map +1 -0
  40. package/dist/cli/commands/list.d.ts +3 -0
  41. package/dist/cli/commands/list.d.ts.map +1 -0
  42. package/dist/cli/commands/list.js +50 -0
  43. package/dist/cli/commands/list.js.map +1 -0
  44. package/dist/cli/commands/mcp.d.ts +3 -0
  45. package/dist/cli/commands/mcp.d.ts.map +1 -0
  46. package/dist/cli/commands/mcp.js +459 -0
  47. package/dist/cli/commands/mcp.js.map +1 -0
  48. package/dist/cli/commands/run.d.ts +3 -0
  49. package/dist/cli/commands/run.d.ts.map +1 -0
  50. package/dist/cli/commands/run.js +41 -0
  51. package/dist/cli/commands/run.js.map +1 -0
  52. package/dist/cli/commands/uninstall.d.ts +3 -0
  53. package/dist/cli/commands/uninstall.d.ts.map +1 -0
  54. package/dist/cli/commands/uninstall.js +71 -0
  55. package/dist/cli/commands/uninstall.js.map +1 -0
  56. package/dist/cli/commands/version.d.ts +3 -0
  57. package/dist/cli/commands/version.d.ts.map +1 -0
  58. package/dist/cli/commands/version.js +28 -0
  59. package/dist/cli/commands/version.js.map +1 -0
  60. package/dist/cli/index.d.ts +3 -0
  61. package/dist/cli/index.d.ts.map +1 -0
  62. package/dist/cli/index.js +50 -0
  63. package/dist/cli/index.js.map +1 -0
  64. package/dist/code/agent-events.d.ts +39 -0
  65. package/dist/code/agent-events.d.ts.map +1 -0
  66. package/dist/code/agent-events.js +4 -0
  67. package/dist/code/agent-events.js.map +1 -0
  68. package/dist/code/agent.d.ts +19 -0
  69. package/dist/code/agent.d.ts.map +1 -0
  70. package/dist/code/agent.js +144 -0
  71. package/dist/code/agent.js.map +1 -0
  72. package/dist/code/config.d.ts +13 -0
  73. package/dist/code/config.d.ts.map +1 -0
  74. package/dist/code/config.js +41 -0
  75. package/dist/code/config.js.map +1 -0
  76. package/dist/code/index.d.ts +19 -0
  77. package/dist/code/index.d.ts.map +1 -0
  78. package/dist/code/index.js +400 -0
  79. package/dist/code/index.js.map +1 -0
  80. package/dist/code/prompts.d.ts +2 -0
  81. package/dist/code/prompts.d.ts.map +1 -0
  82. package/dist/code/prompts.js +45 -0
  83. package/dist/code/prompts.js.map +1 -0
  84. package/dist/code/tools/command.d.ts +8 -0
  85. package/dist/code/tools/command.d.ts.map +1 -0
  86. package/dist/code/tools/command.js +83 -0
  87. package/dist/code/tools/command.js.map +1 -0
  88. package/dist/code/tools/diff-utils.d.ts +2 -0
  89. package/dist/code/tools/diff-utils.d.ts.map +1 -0
  90. package/dist/code/tools/diff-utils.js +45 -0
  91. package/dist/code/tools/diff-utils.js.map +1 -0
  92. package/dist/code/tools/filesystem.d.ts +11 -0
  93. package/dist/code/tools/filesystem.d.ts.map +1 -0
  94. package/dist/code/tools/filesystem.js +442 -0
  95. package/dist/code/tools/filesystem.js.map +1 -0
  96. package/dist/code/tools/git.d.ts +7 -0
  97. package/dist/code/tools/git.d.ts.map +1 -0
  98. package/dist/code/tools/git.js +111 -0
  99. package/dist/code/tools/git.js.map +1 -0
  100. package/dist/code/tools/mcp.d.ts +13 -0
  101. package/dist/code/tools/mcp.d.ts.map +1 -0
  102. package/dist/code/tools/mcp.js +230 -0
  103. package/dist/code/tools/mcp.js.map +1 -0
  104. package/dist/data/tips.json +118 -0
  105. package/dist/env/manager.d.ts +14 -0
  106. package/dist/env/manager.d.ts.map +1 -0
  107. package/dist/env/manager.js +99 -0
  108. package/dist/env/manager.js.map +1 -0
  109. package/dist/index.d.ts +14 -0
  110. package/dist/index.d.ts.map +1 -0
  111. package/dist/index.js +47 -0
  112. package/dist/index.js.map +1 -0
  113. package/dist/ui/terminal-ui.d.ts +73 -0
  114. package/dist/ui/terminal-ui.d.ts.map +1 -0
  115. package/dist/ui/terminal-ui.js +900 -0
  116. package/dist/ui/terminal-ui.js.map +1 -0
  117. package/dist/utils/async-tips.d.ts +64 -0
  118. package/dist/utils/async-tips.d.ts.map +1 -0
  119. package/dist/utils/async-tips.js +242 -0
  120. package/dist/utils/async-tips.js.map +1 -0
  121. package/dist/utils/env-mapper.d.ts +40 -0
  122. package/dist/utils/env-mapper.d.ts.map +1 -0
  123. package/dist/utils/env-mapper.js +122 -0
  124. package/dist/utils/env-mapper.js.map +1 -0
  125. package/dist/utils/errors.d.ts +25 -0
  126. package/dist/utils/errors.d.ts.map +1 -0
  127. package/dist/utils/errors.js +58 -0
  128. package/dist/utils/errors.js.map +1 -0
  129. package/dist/utils/exec.d.ts +12 -0
  130. package/dist/utils/exec.d.ts.map +1 -0
  131. package/dist/utils/exec.js +49 -0
  132. package/dist/utils/exec.js.map +1 -0
  133. package/dist/utils/logger.d.ts +19 -0
  134. package/dist/utils/logger.d.ts.map +1 -0
  135. package/dist/utils/logger.js +53 -0
  136. package/dist/utils/logger.js.map +1 -0
  137. package/dist/utils/tips.d.ts +35 -0
  138. package/dist/utils/tips.d.ts.map +1 -0
  139. package/dist/utils/tips.js +132 -0
  140. package/dist/utils/tips.js.map +1 -0
  141. package/docs/USER_GUIDE.md +573 -0
  142. package/eslint.config.mjs +43 -0
  143. package/package.json +66 -0
  144. package/tests/agent-direct.test.mjs +45 -0
  145. package/tests/agent-output.test.mjs +64 -0
  146. package/tests/codemie-code.test.mjs +42 -0
  147. package/tests/context7-only.test.mjs +42 -0
  148. package/tests/conversation-flow.test.mjs +63 -0
  149. package/tests/interactive-simulation.test.mjs +60 -0
  150. package/tests/live-output.test.mjs +53 -0
  151. package/tests/mcp-context7.test.mjs +105 -0
  152. package/tests/mcp-e2e.test.mjs +109 -0
  153. package/tests/mcp-time-server.test.mjs +58 -0
  154. package/tests/streaming.test.mjs +57 -0
  155. package/tests/test-helpers.mjs +94 -0
  156. package/tests/text-wrapping.test.mjs +33 -0
  157. package/tests/tool-count.test.mjs +81 -0
  158. package/tests/ui-format.test.mjs +39 -0
  159. package/tests/ui-state.test.mjs +72 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../../src/code/tools/filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAOvD,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAQD,qBAAa,eAAe;IACd,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAM5C,QAAQ,IAAI,cAAc,EAAE;CAc7B"}
@@ -0,0 +1,442 @@
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 tools_1 = require("@langchain/core/tools");
38
+ const zod_1 = require("zod");
39
+ const fs = __importStar(require("fs/promises"));
40
+ const path = __importStar(require("path"));
41
+ const diff_utils_js_1 = require("./diff-utils.js");
42
+ const errors_js_1 = require("../../utils/errors.js");
43
+ const DEFAULT_IGNORE_PATTERNS = [
44
+ 'node_modules', '.git', '__pycache__', '.pytest_cache',
45
+ '.venv', 'venv', 'dist', 'build', '.next', '.nuxt',
46
+ 'coverage', '.DS_Store'
47
+ ];
48
+ class FilesystemTools {
49
+ config;
50
+ constructor(config) {
51
+ this.config = config;
52
+ if (!config.ignorePatterns) {
53
+ config.ignorePatterns = DEFAULT_IGNORE_PATTERNS;
54
+ }
55
+ }
56
+ getTools() {
57
+ return [
58
+ new ReadFileTool(this.config),
59
+ new ReadMultipleFilesTool(this.config),
60
+ new WriteFileTool(this.config),
61
+ new EditFileTool(this.config),
62
+ new CreateDirectoryTool(this.config),
63
+ new ListDirectoryTool(this.config),
64
+ new ProjectTreeTool(this.config),
65
+ new MoveFileTool(this.config),
66
+ new SearchFilesTool(this.config),
67
+ new ListAllowedDirectoriesTool(this.config)
68
+ ];
69
+ }
70
+ }
71
+ exports.FilesystemTools = FilesystemTools;
72
+ // Base class with security validation
73
+ class BaseFilesystemTool extends tools_1.StructuredTool {
74
+ config;
75
+ constructor(config) {
76
+ super();
77
+ this.config = config;
78
+ }
79
+ async validatePath(requestedPath) {
80
+ // Expand home directory
81
+ const expanded = requestedPath.startsWith('~/')
82
+ ? path.join(process.env.HOME || '', requestedPath.slice(2))
83
+ : requestedPath;
84
+ // Get absolute path
85
+ const absolute = path.resolve(expanded);
86
+ const normalized = path.normalize(absolute);
87
+ // Check if path is within allowed directories
88
+ const isAllowed = this.config.allowedDirectories.some(dir => normalized.startsWith(path.normalize(dir)));
89
+ if (!isAllowed) {
90
+ throw new errors_js_1.PathSecurityError(absolute, 'path outside allowed directories');
91
+ }
92
+ // Resolve symlinks and validate again
93
+ try {
94
+ const realPath = await fs.realpath(absolute);
95
+ const isRealAllowed = this.config.allowedDirectories.some(dir => realPath.startsWith(path.normalize(dir)));
96
+ if (!isRealAllowed) {
97
+ throw new errors_js_1.PathSecurityError(realPath, 'symlink target outside allowed directories');
98
+ }
99
+ return realPath;
100
+ }
101
+ catch {
102
+ // File doesn't exist yet, validate parent
103
+ const parent = path.dirname(absolute);
104
+ try {
105
+ const realParent = await fs.realpath(parent);
106
+ const isParentAllowed = this.config.allowedDirectories.some(dir => realParent.startsWith(path.normalize(dir)));
107
+ if (!isParentAllowed) {
108
+ throw new errors_js_1.PathSecurityError(parent, 'parent directory outside allowed directories');
109
+ }
110
+ return absolute;
111
+ }
112
+ catch {
113
+ throw new errors_js_1.PathSecurityError(parent, 'parent directory does not exist');
114
+ }
115
+ }
116
+ }
117
+ shouldIgnore(filePath) {
118
+ return this.config.ignorePatterns.some(pattern => filePath.includes(pattern));
119
+ }
120
+ }
121
+ // 1. Read File Tool
122
+ class ReadFileTool extends BaseFilesystemTool {
123
+ name = 'read_file';
124
+ description = 'Read contents of a file';
125
+ schema = zod_1.z.object({
126
+ path: zod_1.z.string().describe('File path to read')
127
+ });
128
+ async _call({ path: filePath }) {
129
+ try {
130
+ const validated = await this.validatePath(filePath);
131
+ const content = await fs.readFile(validated, 'utf-8');
132
+ return content;
133
+ }
134
+ catch (error) {
135
+ return `Error reading file: ${(0, errors_js_1.getErrorMessage)(error)}`;
136
+ }
137
+ }
138
+ }
139
+ // 2. Read Multiple Files Tool
140
+ class ReadMultipleFilesTool extends BaseFilesystemTool {
141
+ name = 'read_multiple_files';
142
+ description = 'Read contents of multiple files at once';
143
+ schema = zod_1.z.object({
144
+ paths: zod_1.z.array(zod_1.z.string()).describe('Array of file paths to read')
145
+ });
146
+ async _call({ paths }) {
147
+ const results = [];
148
+ for (const filePath of paths) {
149
+ try {
150
+ const validated = await this.validatePath(filePath);
151
+ const content = await fs.readFile(validated, 'utf-8');
152
+ results.push(`${filePath}:\n${content}\n`);
153
+ }
154
+ catch (error) {
155
+ results.push(`${filePath}: Error - ${(0, errors_js_1.getErrorMessage)(error)}`);
156
+ }
157
+ }
158
+ return results.join('\n---\n');
159
+ }
160
+ }
161
+ // 3. Write File Tool
162
+ class WriteFileTool extends BaseFilesystemTool {
163
+ name = 'write_file';
164
+ description = 'Write content to a file, creating parent directories if needed';
165
+ schema = zod_1.z.object({
166
+ path: zod_1.z.string().describe('File path to write'),
167
+ content: zod_1.z.string().describe('Content to write to file')
168
+ });
169
+ async _call({ path: filePath, content }) {
170
+ try {
171
+ const validated = await this.validatePath(filePath);
172
+ await fs.mkdir(path.dirname(validated), { recursive: true });
173
+ await fs.writeFile(validated, content, 'utf-8');
174
+ return `Successfully wrote to ${filePath}`;
175
+ }
176
+ catch (error) {
177
+ return `Error writing file: ${(0, errors_js_1.getErrorMessage)(error)}`;
178
+ }
179
+ }
180
+ }
181
+ // 4. Edit File Tool (with indentation preservation and diff generation)
182
+ class EditFileTool extends BaseFilesystemTool {
183
+ name = 'edit_file';
184
+ description = `Edit a file by replacing specific text blocks. Provides a diff of changes.
185
+
186
+ Each edit should specify:
187
+ - old_text: Exact text to find (must match exactly including whitespace)
188
+ - new_text: Replacement text
189
+
190
+ The tool preserves indentation and shows a unified diff of changes.`;
191
+ schema = zod_1.z.object({
192
+ path: zod_1.z.string().describe('File path to edit'),
193
+ edits: zod_1.z.array(zod_1.z.object({
194
+ old_text: zod_1.z.string().describe('Exact text to find'),
195
+ new_text: zod_1.z.string().describe('Replacement text')
196
+ })).describe('Array of edit operations'),
197
+ dry_run: zod_1.z.boolean().nullable().optional().describe('If true, show diff without writing')
198
+ });
199
+ async _call({ path: filePath, edits, dry_run = false }) {
200
+ try {
201
+ const validated = await this.validatePath(filePath);
202
+ const originalContent = await fs.readFile(validated, 'utf-8');
203
+ let modifiedContent = originalContent;
204
+ // Apply each edit
205
+ for (const edit of edits) {
206
+ const oldText = this.normalizeLineEndings(edit.old_text);
207
+ const newText = this.normalizeLineEndings(edit.new_text);
208
+ // Try direct replacement first
209
+ if (modifiedContent.includes(oldText)) {
210
+ modifiedContent = modifiedContent.replace(oldText, newText);
211
+ continue;
212
+ }
213
+ // Try line-by-line with indentation preservation
214
+ const result = this.applyEditWithIndentation(modifiedContent, oldText, newText);
215
+ if (result) {
216
+ modifiedContent = result;
217
+ }
218
+ else {
219
+ throw new Error(`Could not find exact match for:\n${edit.old_text}`);
220
+ }
221
+ }
222
+ // Create diff
223
+ const diff = (0, diff_utils_js_1.createUnifiedDiff)(originalContent, modifiedContent, filePath);
224
+ // Write if not dry run
225
+ if (!dry_run) {
226
+ await fs.writeFile(validated, modifiedContent, 'utf-8');
227
+ }
228
+ return diff;
229
+ }
230
+ catch (error) {
231
+ return `Error editing file: ${(0, errors_js_1.getErrorMessage)(error)}`;
232
+ }
233
+ }
234
+ normalizeLineEndings(text) {
235
+ return text.replace(/\r\n/g, '\n');
236
+ }
237
+ applyEditWithIndentation(content, oldText, newText) {
238
+ const contentLines = content.split('\n');
239
+ const oldLines = oldText.split('\n');
240
+ const newLines = newText.split('\n');
241
+ // Find matching position
242
+ for (let i = 0; i <= contentLines.length - oldLines.length; i++) {
243
+ const matches = oldLines.every((oldLine, j) => contentLines[i + j].trim() === oldLine.trim());
244
+ if (matches) {
245
+ // Preserve original indentation
246
+ const indent = contentLines[i].match(/^\s*/)?.[0] || '';
247
+ const indentedNewLines = newLines.map((line, j) => {
248
+ if (j === 0)
249
+ return indent + line.trimStart();
250
+ return line;
251
+ });
252
+ contentLines.splice(i, oldLines.length, ...indentedNewLines);
253
+ return contentLines.join('\n');
254
+ }
255
+ }
256
+ return null;
257
+ }
258
+ }
259
+ // 5. Create Directory Tool
260
+ class CreateDirectoryTool extends BaseFilesystemTool {
261
+ name = 'create_directory';
262
+ description = 'Create a directory (and parent directories if needed)';
263
+ schema = zod_1.z.object({
264
+ path: zod_1.z.string().describe('Directory path to create')
265
+ });
266
+ async _call({ path: dirPath }) {
267
+ try {
268
+ const validated = await this.validatePath(dirPath);
269
+ await fs.mkdir(validated, { recursive: true });
270
+ return `Successfully created directory ${dirPath}`;
271
+ }
272
+ catch (error) {
273
+ return `Error creating directory: ${(0, errors_js_1.getErrorMessage)(error)}`;
274
+ }
275
+ }
276
+ }
277
+ // 6. List Directory Tool
278
+ class ListDirectoryTool extends BaseFilesystemTool {
279
+ name = 'list_directory';
280
+ description = 'List files and directories in a path';
281
+ schema = zod_1.z.object({
282
+ path: zod_1.z.string().describe('Directory path to list')
283
+ });
284
+ async _call({ path: dirPath }) {
285
+ try {
286
+ const validated = await this.validatePath(dirPath);
287
+ const entries = await fs.readdir(validated, { withFileTypes: true });
288
+ const formatted = entries.map(entry => {
289
+ const type = entry.isDirectory() ? '[DIR]' : '[FILE]';
290
+ return `${type} ${entry.name}`;
291
+ });
292
+ return formatted.length > 0 ? formatted.join('\n') : 'Empty directory';
293
+ }
294
+ catch (error) {
295
+ return `Error listing directory: ${(0, errors_js_1.getErrorMessage)(error)}`;
296
+ }
297
+ }
298
+ }
299
+ // 7. Project Tree Tool
300
+ class ProjectTreeTool extends BaseFilesystemTool {
301
+ name = 'project_tree';
302
+ description = 'Get complete project file tree as JSON array, excluding ignored patterns';
303
+ schema = zod_1.z.object({
304
+ directory: zod_1.z.string().nullable().optional().describe('Directory to scan (default: first allowed directory)')
305
+ });
306
+ async _call({ directory }) {
307
+ try {
308
+ const targetDir = directory || this.config.allowedDirectories[0];
309
+ const validated = await this.validatePath(targetDir);
310
+ const files = await this.collectFiles(validated, validated);
311
+ return JSON.stringify(files, null, 2);
312
+ }
313
+ catch (error) {
314
+ return `Error generating project tree: ${(0, errors_js_1.getErrorMessage)(error)}`;
315
+ }
316
+ }
317
+ async collectFiles(rootDir, currentDir) {
318
+ const files = [];
319
+ try {
320
+ const entries = await fs.readdir(currentDir, { withFileTypes: true });
321
+ for (const entry of entries) {
322
+ const fullPath = path.join(currentDir, entry.name);
323
+ const relativePath = path.relative(rootDir, fullPath);
324
+ // Skip ignored patterns
325
+ if (this.shouldIgnore(relativePath)) {
326
+ continue;
327
+ }
328
+ if (entry.isDirectory()) {
329
+ const subFiles = await this.collectFiles(rootDir, fullPath);
330
+ files.push(...subFiles);
331
+ }
332
+ else {
333
+ files.push(relativePath);
334
+ }
335
+ }
336
+ }
337
+ catch {
338
+ // Skip directories we can't read
339
+ }
340
+ return files;
341
+ }
342
+ }
343
+ // 8. Move File Tool
344
+ class MoveFileTool extends BaseFilesystemTool {
345
+ name = 'move_file';
346
+ description = 'Move or rename a file';
347
+ schema = zod_1.z.object({
348
+ source: zod_1.z.string().describe('Source file path'),
349
+ destination: zod_1.z.string().describe('Destination file path')
350
+ });
351
+ async _call({ source, destination }) {
352
+ try {
353
+ const validatedSource = await this.validatePath(source);
354
+ const validatedDest = await this.validatePath(destination);
355
+ await fs.mkdir(path.dirname(validatedDest), { recursive: true });
356
+ await fs.rename(validatedSource, validatedDest);
357
+ return `Successfully moved ${source} to ${destination}`;
358
+ }
359
+ catch (error) {
360
+ return `Error moving file: ${(0, errors_js_1.getErrorMessage)(error)}`;
361
+ }
362
+ }
363
+ }
364
+ // 9. Search Files Tool
365
+ class SearchFilesTool extends BaseFilesystemTool {
366
+ name = 'search_files';
367
+ description = `Search for files by name or content.
368
+
369
+ - By default, searches file names
370
+ - With full_search=true, also searches file contents
371
+ - Respects ignore patterns`;
372
+ schema = zod_1.z.object({
373
+ path: zod_1.z.string().describe('Directory to search in'),
374
+ pattern: zod_1.z.string().describe('Search pattern (case-insensitive)'),
375
+ exclude_patterns: zod_1.z.array(zod_1.z.string()).nullable().optional().describe('Additional patterns to exclude'),
376
+ full_search: zod_1.z.boolean().nullable().optional().describe('Search file contents (default: false)')
377
+ });
378
+ async _call({ path: searchPath, pattern, exclude_patterns, full_search }) {
379
+ try {
380
+ const validated = await this.validatePath(searchPath);
381
+ const excludeArray = exclude_patterns || [];
382
+ const allExclude = [...this.config.ignorePatterns, ...excludeArray];
383
+ const fullSearchBool = full_search || false;
384
+ const results = await this.searchFiles(validated, pattern.toLowerCase(), allExclude, fullSearchBool);
385
+ return results.length > 0 ? results.join('\n') : 'No matches found';
386
+ }
387
+ catch (error) {
388
+ return `Error searching: ${(0, errors_js_1.getErrorMessage)(error)}`;
389
+ }
390
+ }
391
+ async searchFiles(dir, pattern, excludePatterns, fullSearch) {
392
+ const results = [];
393
+ try {
394
+ const entries = await fs.readdir(dir, { withFileTypes: true });
395
+ for (const entry of entries) {
396
+ const fullPath = path.join(dir, entry.name);
397
+ // Skip excluded patterns
398
+ if (excludePatterns.some(p => fullPath.includes(p))) {
399
+ continue;
400
+ }
401
+ if (entry.isDirectory()) {
402
+ const subResults = await this.searchFiles(fullPath, pattern, excludePatterns, fullSearch);
403
+ results.push(...subResults);
404
+ }
405
+ else {
406
+ // Check filename
407
+ if (entry.name.toLowerCase().includes(pattern)) {
408
+ results.push(fullPath);
409
+ continue;
410
+ }
411
+ // Check content if full_search
412
+ if (fullSearch && await this.fileContainsPattern(fullPath, pattern)) {
413
+ results.push(fullPath);
414
+ }
415
+ }
416
+ }
417
+ }
418
+ catch {
419
+ // Skip directories we can't read
420
+ }
421
+ return results;
422
+ }
423
+ async fileContainsPattern(filePath, pattern) {
424
+ try {
425
+ const content = await fs.readFile(filePath, 'utf-8');
426
+ return content.toLowerCase().includes(pattern);
427
+ }
428
+ catch {
429
+ return false;
430
+ }
431
+ }
432
+ }
433
+ // 10. List Allowed Directories Tool
434
+ class ListAllowedDirectoriesTool extends BaseFilesystemTool {
435
+ name = 'list_allowed_directories';
436
+ description = 'Show which directories are accessible';
437
+ schema = zod_1.z.object({});
438
+ async _call() {
439
+ return 'Allowed directories:\n' + this.config.allowedDirectories.join('\n');
440
+ }
441
+ }
442
+ //# sourceMappingURL=filesystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../../src/code/tools/filesystem.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { StructuredTool } from '@langchain/core/tools';
2
+ export declare class GitTools {
3
+ private rootDir;
4
+ constructor(rootDir: string);
5
+ getTools(): StructuredTool[];
6
+ }
7
+ //# sourceMappingURL=git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../src/code/tools/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKvD,qBAAa,QAAQ;IACP,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM;IAEnC,QAAQ,IAAI,cAAc,EAAE;CAQ7B"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GitTools = void 0;
4
+ const tools_1 = require("@langchain/core/tools");
5
+ const zod_1 = require("zod");
6
+ const exec_js_1 = require("../../utils/exec.js");
7
+ const errors_js_1 = require("../../utils/errors.js");
8
+ class GitTools {
9
+ rootDir;
10
+ constructor(rootDir) {
11
+ this.rootDir = rootDir;
12
+ }
13
+ getTools() {
14
+ return [
15
+ new GitStatusTool(this.rootDir),
16
+ new GitDiffTool(this.rootDir),
17
+ new GitLogTool(this.rootDir),
18
+ new GenericGitTool(this.rootDir)
19
+ ];
20
+ }
21
+ }
22
+ exports.GitTools = GitTools;
23
+ class GitStatusTool extends tools_1.StructuredTool {
24
+ rootDir;
25
+ name = 'git_status';
26
+ description = 'Get git repository status';
27
+ schema = zod_1.z.object({});
28
+ constructor(rootDir) {
29
+ super();
30
+ this.rootDir = rootDir;
31
+ }
32
+ async _call() {
33
+ try {
34
+ const result = await (0, exec_js_1.exec)('git', ['status', '--short'], { cwd: this.rootDir });
35
+ return result.stdout || 'No changes';
36
+ }
37
+ catch (error) {
38
+ return `Error: ${(0, errors_js_1.getErrorMessage)(error)}`;
39
+ }
40
+ }
41
+ }
42
+ class GitDiffTool extends tools_1.StructuredTool {
43
+ rootDir;
44
+ name = 'git_diff';
45
+ description = 'Get git diff for changes';
46
+ schema = zod_1.z.object({
47
+ path: zod_1.z.string().nullable().optional().describe('File path to diff (optional)')
48
+ });
49
+ constructor(rootDir) {
50
+ super();
51
+ this.rootDir = rootDir;
52
+ }
53
+ async _call({ path }) {
54
+ try {
55
+ const args = ['diff'];
56
+ if (path)
57
+ args.push(path);
58
+ const result = await (0, exec_js_1.exec)('git', args, { cwd: this.rootDir });
59
+ return result.stdout || 'No differences';
60
+ }
61
+ catch (error) {
62
+ return `Error: ${(0, errors_js_1.getErrorMessage)(error)}`;
63
+ }
64
+ }
65
+ }
66
+ class GitLogTool extends tools_1.StructuredTool {
67
+ rootDir;
68
+ name = 'git_log';
69
+ description = 'Get git commit history';
70
+ schema = zod_1.z.object({
71
+ count: zod_1.z.number().nullable().optional().default(10).describe('Number of commits to show')
72
+ });
73
+ constructor(rootDir) {
74
+ super();
75
+ this.rootDir = rootDir;
76
+ }
77
+ async _call({ count }) {
78
+ try {
79
+ const result = await (0, exec_js_1.exec)('git', ['log', `--max-count=${count}`, '--oneline'], { cwd: this.rootDir });
80
+ return result.stdout || 'No commits';
81
+ }
82
+ catch (error) {
83
+ return `Error: ${(0, errors_js_1.getErrorMessage)(error)}`;
84
+ }
85
+ }
86
+ }
87
+ class GenericGitTool extends tools_1.StructuredTool {
88
+ rootDir;
89
+ name = 'git_command';
90
+ description = 'Execute any git command. Input is the git command without "git" prefix.';
91
+ schema = zod_1.z.object({
92
+ command: zod_1.z.string().describe('Git command to execute (without "git" prefix)')
93
+ });
94
+ constructor(rootDir) {
95
+ super();
96
+ this.rootDir = rootDir;
97
+ }
98
+ async _call({ command }) {
99
+ try {
100
+ // Split command safely
101
+ const args = command.match(/(?:[^\s"]+|"[^"]*")+/g) || [];
102
+ const cleanArgs = args.map(arg => arg.replace(/^"|"$/g, ''));
103
+ const result = await (0, exec_js_1.exec)('git', cleanArgs, { cwd: this.rootDir });
104
+ return result.stdout || 'Command executed successfully';
105
+ }
106
+ catch (error) {
107
+ return `Error: ${(0, errors_js_1.getErrorMessage)(error)}`;
108
+ }
109
+ }
110
+ }
111
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/code/tools/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { StructuredTool } from '@langchain/core/tools';
2
+ export declare class MCPTools {
3
+ private rootDir;
4
+ private mcpClient;
5
+ private enabledServers;
6
+ constructor(rootDir: string);
7
+ initialize(servers?: string[]): Promise<void>;
8
+ getTools(): Promise<StructuredTool[]>;
9
+ private loadMCPConfigs;
10
+ private interpolateEnvVars;
11
+ dispose(): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/code/tools/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAQvD,qBAAa,QAAQ;IAIP,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,cAAc,CAAgB;gBAElB,OAAO,EAAE,MAAM;IAE7B,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC7C,QAAQ,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAiB7B,cAAc;IAoD5B,OAAO,CAAC,kBAAkB;IAMpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAS/B"}