@omaikit/agents 0.1.2 → 0.1.4

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 (131) hide show
  1. package/README.md +17 -0
  2. package/dist/ai-provider/openai.d.ts +2 -2
  3. package/dist/ai-provider/openai.d.ts.map +1 -1
  4. package/dist/ai-provider/openai.js +74 -135
  5. package/dist/ai-provider/openai.js.map +1 -1
  6. package/dist/ai-provider/provider.d.ts +8 -1
  7. package/dist/ai-provider/provider.d.ts.map +1 -1
  8. package/dist/analysis/cache-manager.d.ts +9 -0
  9. package/dist/analysis/cache-manager.d.ts.map +1 -0
  10. package/dist/analysis/cache-manager.js +33 -0
  11. package/dist/analysis/cache-manager.js.map +1 -0
  12. package/dist/analysis/context-writer.d.ts +29 -0
  13. package/dist/analysis/context-writer.d.ts.map +1 -0
  14. package/dist/analysis/context-writer.js +168 -0
  15. package/dist/analysis/context-writer.js.map +1 -0
  16. package/dist/analysis/index.d.ts +5 -0
  17. package/dist/analysis/index.d.ts.map +1 -0
  18. package/dist/analysis/index.js +5 -0
  19. package/dist/analysis/index.js.map +1 -0
  20. package/dist/analysis/plan-writer.d.ts +11 -0
  21. package/dist/analysis/plan-writer.d.ts.map +1 -0
  22. package/dist/analysis/plan-writer.js +87 -0
  23. package/dist/analysis/plan-writer.js.map +1 -0
  24. package/dist/analysis/test-writer.d.ts +9 -0
  25. package/dist/analysis/test-writer.d.ts.map +1 -0
  26. package/dist/analysis/test-writer.js +42 -0
  27. package/dist/analysis/test-writer.js.map +1 -0
  28. package/dist/coder/coder.d.ts +0 -16
  29. package/dist/coder/coder.d.ts.map +1 -1
  30. package/dist/coder/coder.js +35 -245
  31. package/dist/coder/coder.js.map +1 -1
  32. package/dist/coder/prompt-templates.d.ts +1 -1
  33. package/dist/coder/prompt-templates.d.ts.map +1 -1
  34. package/dist/coder/prompt-templates.js +25 -46
  35. package/dist/coder/prompt-templates.js.map +1 -1
  36. package/dist/index.d.ts +1 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +1 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/manager/manager.d.ts.map +1 -1
  41. package/dist/manager/manager.js +5 -16
  42. package/dist/manager/manager.js.map +1 -1
  43. package/dist/memory/memory-store.d.ts +2 -0
  44. package/dist/memory/memory-store.d.ts.map +1 -1
  45. package/dist/memory/memory-store.js +27 -0
  46. package/dist/memory/memory-store.js.map +1 -1
  47. package/dist/planner/clarification-handler.d.ts.map +1 -1
  48. package/dist/planner/clarification-handler.js +2 -12
  49. package/dist/planner/clarification-handler.js.map +1 -1
  50. package/dist/planner/plan-parser.d.ts.map +1 -1
  51. package/dist/planner/plan-parser.js +33 -31
  52. package/dist/planner/plan-parser.js.map +1 -1
  53. package/dist/planner/planner.d.ts +3 -7
  54. package/dist/planner/planner.d.ts.map +1 -1
  55. package/dist/planner/planner.js +77 -230
  56. package/dist/planner/planner.js.map +1 -1
  57. package/dist/planner/prompt-templates.d.ts +4 -2
  58. package/dist/planner/prompt-templates.d.ts.map +1 -1
  59. package/dist/planner/prompt-templates.js +38 -137
  60. package/dist/planner/prompt-templates.js.map +1 -1
  61. package/dist/tester/prompt-templates.d.ts.map +1 -1
  62. package/dist/tester/prompt-templates.js +14 -21
  63. package/dist/tester/prompt-templates.js.map +1 -1
  64. package/dist/tools/apply-patch.d.ts.map +1 -1
  65. package/dist/tools/apply-patch.js +76 -86
  66. package/dist/tools/apply-patch.js.map +1 -1
  67. package/dist/tools/default-registry.d.ts.map +1 -1
  68. package/dist/tools/default-registry.js +6 -2
  69. package/dist/tools/default-registry.js.map +1 -1
  70. package/dist/tools/edit-file.d.ts +4 -0
  71. package/dist/tools/edit-file.d.ts.map +1 -0
  72. package/dist/tools/edit-file.js +95 -0
  73. package/dist/tools/edit-file.js.map +1 -0
  74. package/dist/tools/index.d.ts +3 -2
  75. package/dist/tools/index.d.ts.map +1 -1
  76. package/dist/tools/index.js +3 -2
  77. package/dist/tools/index.js.map +1 -1
  78. package/dist/tools/list-files.d.ts +4 -0
  79. package/dist/tools/list-files.d.ts.map +1 -0
  80. package/dist/tools/list-files.js +45 -0
  81. package/dist/tools/list-files.js.map +1 -0
  82. package/dist/tools/read-file.d.ts +4 -0
  83. package/dist/tools/read-file.d.ts.map +1 -0
  84. package/dist/tools/read-file.js +39 -0
  85. package/dist/tools/read-file.js.map +1 -0
  86. package/dist/tools/registry.d.ts.map +1 -1
  87. package/dist/tools/registry.js +1 -0
  88. package/dist/tools/registry.js.map +1 -1
  89. package/dist/tools/search.js +1 -1
  90. package/dist/tools/search.js.map +1 -1
  91. package/dist/tools/types.d.ts +1 -0
  92. package/dist/tools/types.d.ts.map +1 -1
  93. package/dist/tools/utils.d.ts.map +1 -1
  94. package/dist/tools/utils.js +34 -3
  95. package/dist/tools/utils.js.map +1 -1
  96. package/dist/utils/cache-manager.d.ts +9 -0
  97. package/dist/utils/cache-manager.d.ts.map +1 -0
  98. package/dist/utils/cache-manager.js +33 -0
  99. package/dist/utils/cache-manager.js.map +1 -0
  100. package/dist/utils/context-writer.d.ts +29 -0
  101. package/dist/utils/context-writer.d.ts.map +1 -0
  102. package/dist/utils/context-writer.js +168 -0
  103. package/dist/utils/context-writer.js.map +1 -0
  104. package/dist/utils/index.d.ts +7 -0
  105. package/dist/utils/index.d.ts.map +1 -0
  106. package/dist/utils/index.js +7 -0
  107. package/dist/utils/index.js.map +1 -0
  108. package/dist/utils/plan-writer.d.ts +17 -0
  109. package/dist/utils/plan-writer.d.ts.map +1 -0
  110. package/dist/utils/plan-writer.js +175 -0
  111. package/dist/utils/plan-writer.js.map +1 -0
  112. package/dist/utils/prompt.d.ts +3 -0
  113. package/dist/utils/prompt.d.ts.map +1 -0
  114. package/dist/utils/prompt.js +55 -0
  115. package/dist/utils/prompt.js.map +1 -0
  116. package/dist/utils/test-writer.d.ts +9 -0
  117. package/dist/utils/test-writer.d.ts.map +1 -0
  118. package/dist/utils/test-writer.js +42 -0
  119. package/dist/utils/test-writer.js.map +1 -0
  120. package/package.json +3 -3
  121. package/prompts/coder/task.md +59 -0
  122. package/prompts/manager/context.md +11 -0
  123. package/prompts/planner/clarification.md +12 -0
  124. package/prompts/planner/clarification.questions.md +10 -0
  125. package/prompts/planner/optimize.md +75 -0
  126. package/prompts/planner/plan-milestones.md +73 -0
  127. package/prompts/planner/repair.md +6 -0
  128. package/prompts/planner/summary.md +22 -0
  129. package/prompts/planner/system.md +4 -0
  130. package/prompts/planner/tasks.md +82 -0
  131. package/prompts/tester/prompt.md +19 -0
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-templates.js","sourceRoot":"","sources":["../../src/planner/prompt-templates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt-templates.js","sourceRoot":"","sources":["../../src/planner/prompt-templates.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-templates.d.ts","sourceRoot":"","sources":["../../src/tester/prompt-templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAG5C,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAsB;IAEhC,cAAc,CAClB,IAAI,EAAE,IAAI,EACV,cAAc,EAAE,GAAG,EACnB,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC;CA4BnB"}
1
+ {"version":3,"file":"prompt-templates.d.ts","sourceRoot":"","sources":["../../src/tester/prompt-templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAI5C,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAsB;IAEhC,cAAc,CAClB,IAAI,EAAE,IAAI,EACV,cAAc,EAAE,GAAG,EACnB,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC;CAmBnB"}
@@ -1,30 +1,23 @@
1
1
  import { TestPatterns } from './test-patterns.js';
2
+ import { readPrompt } from '../utils/prompt.js';
2
3
  export class TestPromptTemplates {
3
4
  patterns = new TestPatterns();
4
5
  async generatePrompt(task, projectContext, plan, language, framework) {
5
6
  const patterns = this.patterns.getPatterns(language, framework);
6
7
  const projectName = projectContext?.name || projectContext?.project?.name || 'the project';
7
- return [
8
- `You are a test engineer generating ${framework} tests for ${projectName}.`,
9
- '',
10
- `Task: ${task.title}`,
11
- `Description: ${task.description || 'No description provided.'}`,
12
- '',
13
- 'Requirements:',
14
- ...task.acceptanceCriteria.map((criteria) => `- ${criteria}`),
15
- '',
16
- 'Generate comprehensive unit, integration, and edge case tests.',
17
- 'Return tests as code blocks. Include a file header in each block like:',
18
- ' // File: tests/<name>.test.ts',
19
- '',
20
- 'Patterns:',
21
- ...patterns.map((pattern) => `- ${pattern.name}: ${pattern.description}\n Example: ${pattern.example}`),
22
- '',
23
- `Target language: ${language}`,
24
- `Test framework: ${framework}`,
25
- '',
26
- 'Ensure tests include error handling, clear assertions, and descriptive names.',
27
- ].join('\n');
8
+ const acceptanceCriteria = task.acceptanceCriteria.map((criteria) => `- ${criteria}`).join('\n');
9
+ const patternLines = patterns
10
+ .map((pattern) => `- ${pattern.name}: ${pattern.description}\n Example: ${pattern.example}`)
11
+ .join('\n');
12
+ return readPrompt('tester.prompt', {
13
+ framework,
14
+ projectName,
15
+ taskTitle: task.title,
16
+ taskDescription: task.description || 'No description provided.',
17
+ acceptanceCriteria,
18
+ patterns: patternLines,
19
+ language,
20
+ });
28
21
  }
29
22
  }
30
23
  //# sourceMappingURL=prompt-templates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-templates.js","sourceRoot":"","sources":["../../src/tester/prompt-templates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,OAAO,mBAAmB;IACtB,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;IAEtC,KAAK,CAAC,cAAc,CAClB,IAAU,EACV,cAAmB,EACnB,IAAS,EACT,QAAgB,EAChB,SAAiB;QAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,cAAc,EAAE,IAAI,IAAI,cAAc,EAAE,OAAO,EAAE,IAAI,IAAI,aAAa,CAAC;QAE3F,OAAO;YACL,sCAAsC,SAAS,cAAc,WAAW,GAAG;YAC3E,EAAE;YACF,SAAS,IAAI,CAAC,KAAK,EAAE;YACrB,gBAAgB,IAAI,CAAC,WAAW,IAAI,0BAA0B,EAAE;YAChE,EAAE;YACF,eAAe;YACf,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC7D,EAAE;YACF,gEAAgE;YAChE,wEAAwE;YACxE,iCAAiC;YACjC,EAAE;YACF,WAAW;YACX,GAAG,QAAQ,CAAC,GAAG,CACb,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,WAAW,gBAAgB,OAAO,CAAC,OAAO,EAAE,CACxF;YACD,EAAE;YACF,oBAAoB,QAAQ,EAAE;YAC9B,mBAAmB,SAAS,EAAE;YAC9B,EAAE;YACF,+EAA+E;SAChF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"prompt-templates.js","sourceRoot":"","sources":["../../src/tester/prompt-templates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,OAAO,mBAAmB;IACtB,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;IAEtC,KAAK,CAAC,cAAc,CAClB,IAAU,EACV,cAAmB,EACnB,IAAS,EACT,QAAgB,EAChB,SAAiB;QAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,cAAc,EAAE,IAAI,IAAI,cAAc,EAAE,OAAO,EAAE,IAAI,IAAI,aAAa,CAAC;QAE3F,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjG,MAAM,YAAY,GAAG,QAAQ;aAC1B,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,WAAW,gBAAgB,OAAO,CAAC,OAAO,EAAE,CAAC;aAC5F,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO,UAAU,CAAC,eAAe,EAAE;YACjC,SAAS;YACT,WAAW;YACX,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,eAAe,EAAE,IAAI,CAAC,WAAW,IAAI,0BAA0B;YAC/D,kBAAkB;YAClB,QAAQ,EAAE,YAAY;YACtB,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"apply-patch.d.ts","sourceRoot":"","sources":["../../src/tools/apply-patch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAqBtD,eAAO,MAAM,wBAAwB,EAAE,cAUtC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,WA4CnC,CAAC"}
1
+ {"version":3,"file":"apply-patch.d.ts","sourceRoot":"","sources":["../../src/tools/apply-patch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAoBtD,eAAO,MAAM,wBAAwB,EAAE,cAuBtC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,WA+CnC,CAAC"}
@@ -2,102 +2,94 @@ import * as fs from 'fs';
2
2
  import * as path from 'path';
3
3
  import { resolveSafePath, ensureFileExists, readFileLines, writeFileLines } from './utils.js';
4
4
  export const applyPatchToolDefinition = {
5
- name: 'apply_patch',
5
+ type: 'apply_patch',
6
+ name: 'apply_patch_call',
6
7
  description: 'Apply a patch to one or more files within the project root.',
7
8
  parameters: {
8
9
  type: 'object',
9
10
  properties: {
10
- input: { type: 'string', description: 'Patch content in apply-patch format.' },
11
+ operation: {
12
+ type: 'object',
13
+ description: 'Patch operation with type, path, and diff (for create/update).',
14
+ properties: {
15
+ type: { type: 'string', enum: ['create_file', 'update_file', 'delete_file'] },
16
+ path: { type: 'string', description: 'File path relative to the project root.' },
17
+ diff: { type: 'string', description: 'Unified diff content for create/update.' },
18
+ },
19
+ required: ['type', 'path'],
20
+ },
21
+ type: { type: 'string', enum: ['create_file', 'update_file', 'delete_file'] },
22
+ path: { type: 'string', description: 'File path relative to the project root.' },
23
+ diff: { type: 'string', description: 'Unified diff content for create/update.' },
11
24
  },
12
- required: ['input'],
25
+ required: ['operation'],
13
26
  },
14
27
  };
15
28
  export const applyPatchToolHandler = (args, context) => {
16
- const input = String(args.input ?? '');
17
- if (!input.trim()) {
18
- return { ok: false, error: { message: 'input is required', code: 'INVALID_ARGS' } };
29
+ const op = (args.operation ?? args);
30
+ if (!op || !op.type || !op.path) {
31
+ return { ok: false, error: { message: 'operation.type and operation.path are required' } };
19
32
  }
20
- const ops = parsePatch(input);
21
33
  const applied = [];
22
- for (const op of ops) {
23
- const { absolutePath, relativePath } = resolveSafePath(op.path, context.rootPath || context.cwd);
24
- if (op.action === 'delete') {
25
- ensureFileExists(absolutePath);
26
- fs.unlinkSync(absolutePath);
27
- applied.push({ action: op.action, path: relativePath });
28
- continue;
29
- }
30
- if (op.action === 'add') {
31
- if (fs.existsSync(absolutePath)) {
32
- return {
33
- ok: false,
34
- error: { message: `File already exists: ${relativePath}`, code: 'FILE_EXISTS' },
35
- };
36
- }
37
- ensureDir(path.dirname(absolutePath));
38
- const content = (op.content || []).join('\n');
39
- fs.writeFileSync(absolutePath, content, 'utf-8');
40
- applied.push({ action: op.action, path: relativePath });
41
- continue;
42
- }
43
- if (op.action === 'update') {
44
- ensureFileExists(absolutePath);
45
- const lines = readFileLines(absolutePath, 'utf-8');
46
- const updated = applyHunks(lines, op.hunks || []);
47
- writeFileLines(absolutePath, updated, 'utf-8');
48
- applied.push({ action: op.action, path: relativePath });
49
- continue;
50
- }
34
+ const { absolutePath, relativePath } = resolveSafePath(op.path, context.rootPath || context.cwd);
35
+ if (op.type === 'delete_file') {
36
+ ensureFileExists(absolutePath);
37
+ fs.unlinkSync(absolutePath);
38
+ applied.push({ action: op.type, path: relativePath });
39
+ return { ok: true, data: { applied } };
51
40
  }
52
- return { ok: true, data: { applied } };
41
+ if (op.type === 'create_file') {
42
+ if (fs.existsSync(absolutePath)) {
43
+ return {
44
+ ok: false,
45
+ error: { message: `File already exists: ${relativePath}`, code: 'FILE_EXISTS' },
46
+ };
47
+ }
48
+ ensureDir(path.dirname(absolutePath));
49
+ const content = normalizeCreateContent(String(op.diff ?? ''));
50
+ fs.writeFileSync(absolutePath, content, 'utf-8');
51
+ applied.push({ action: op.type, path: relativePath });
52
+ return { ok: true, data: { applied } };
53
+ }
54
+ if (op.type === 'update_file') {
55
+ if (typeof op.diff !== 'string') {
56
+ return { ok: false, error: { message: 'operation.diff is required for update_file' } };
57
+ }
58
+ ensureFileExists(absolutePath);
59
+ const lines = readFileLines(absolutePath, 'utf-8');
60
+ const hunks = parseDiffHunks(op.diff);
61
+ const updated = applyHunks(lines, hunks);
62
+ writeFileLines(absolutePath, updated, 'utf-8');
63
+ applied.push({ action: op.type, path: relativePath });
64
+ return { ok: true, data: { applied } };
65
+ }
66
+ return { ok: false, error: { message: `Unsupported operation type: ${op.type}` } };
53
67
  };
54
- function parsePatch(input) {
55
- const lines = input.replace(/\r\n/g, '\n').split('\n');
56
- const ops = [];
57
- let i = 0;
58
- const isHeader = (line) => line.startsWith('*** ');
59
- while (i < lines.length) {
60
- const line = lines[i];
61
- if (!isHeader(line)) {
62
- i += 1;
63
- continue;
64
- }
65
- if (line.startsWith('*** Begin Patch')) {
66
- i += 1;
67
- continue;
68
- }
69
- if (line.startsWith('*** End Patch')) {
70
- break;
71
- }
72
- const headerMatch = /^\*\*\*\s+(Update|Add|Delete)\s+File:\s*(.+)$/i.exec(line);
73
- if (!headerMatch) {
74
- i += 1;
75
- continue;
76
- }
77
- const action = headerMatch[1].toLowerCase();
78
- const rawPath = headerMatch[2].split('->')[0]?.trim() || '';
79
- if (!rawPath) {
80
- throw new Error('Invalid patch header: missing file path');
81
- }
82
- i += 1;
83
- if (action === 'delete') {
84
- ops.push({ action, path: rawPath });
85
- continue;
86
- }
87
- const body = [];
88
- while (i < lines.length && !isHeader(lines[i])) {
89
- body.push(lines[i]);
90
- i += 1;
91
- }
92
- if (action === 'add') {
93
- const content = body.map((line) => (line.startsWith('+') ? line.slice(1) : line));
94
- ops.push({ action, path: rawPath, content });
95
- continue;
68
+ function parseDiffHunks(diff) {
69
+ const rawLines = diff.replace(/\r\n/g, '\n').split('\n');
70
+ const lines = rawLines.filter((line) => !isDiffHeader(line));
71
+ return parseHunks(lines);
72
+ }
73
+ function isDiffHeader(line) {
74
+ return (line.startsWith('diff ') ||
75
+ line.startsWith('index ') ||
76
+ line.startsWith('---') ||
77
+ line.startsWith('+++') ||
78
+ line.startsWith('*** ') ||
79
+ line.startsWith('@@@'));
80
+ }
81
+ function normalizeCreateContent(diff) {
82
+ const lines = diff.replace(/\r\n/g, '\n').split('\n');
83
+ const filtered = lines.filter((line) => !isDiffHeader(line));
84
+ const nonEmpty = filtered.filter((line) => line.trim().length > 0);
85
+ const allPlus = nonEmpty.length > 0 && nonEmpty.every((line) => line.startsWith('+'));
86
+ const normalized = filtered.map((line) => {
87
+ if (line.startsWith('+')) {
88
+ return line.slice(1);
96
89
  }
97
- const hunks = parseHunks(body);
98
- ops.push({ action, path: rawPath, hunks });
99
- }
100
- return ops;
90
+ return allPlus ? line : line;
91
+ });
92
+ return normalized.join('\n');
101
93
  }
102
94
  function parseHunks(lines) {
103
95
  const hunks = [];
@@ -134,9 +126,7 @@ function parseHunks(lines) {
134
126
  function applyHunks(lines, hunks) {
135
127
  let output = [...lines];
136
128
  for (const hunk of hunks) {
137
- const oldBlock = hunk.tokens
138
- .filter((token) => token.type !== 'add')
139
- .map((token) => token.text);
129
+ const oldBlock = hunk.tokens.filter((token) => token.type !== 'add').map((token) => token.text);
140
130
  const newBlock = hunk.tokens
141
131
  .filter((token) => token.type !== 'remove')
142
132
  .map((token) => token.text);
@@ -1 +1 @@
1
- {"version":3,"file":"apply-patch.js","sourceRoot":"","sources":["../../src/tools/apply-patch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apply-patch.js","sourceRoot":"","sources":["../../src/tools/apply-patch.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"default-registry.d.ts","sourceRoot":"","sources":["../../src/tools/default-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK1C,wBAAgB,yBAAyB,IAAI,YAAY,CAMxD"}
1
+ {"version":3,"file":"default-registry.d.ts","sourceRoot":"","sources":["../../src/tools/default-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAO1C,wBAAgB,yBAAyB,IAAI,YAAY,CAQxD"}
@@ -1,12 +1,16 @@
1
1
  import { ToolRegistry } from './registry.js';
2
- import { readToolDefinition, readToolHandler } from './read.js';
2
+ import { readFileToolDefinition, readFileToolHandler } from './read-file.js';
3
3
  import { searchToolDefinition, searchToolHandler } from './search.js';
4
+ import { editFileToolDefinition, editFileToolHandler } from './edit-file.js';
4
5
  import { applyPatchToolDefinition, applyPatchToolHandler } from './apply-patch.js';
6
+ import { listFilesToolDefinition, listFilesToolHandler } from './list-files.js';
5
7
  export function createDefaultToolRegistry() {
6
8
  const registry = new ToolRegistry();
7
- registry.register(readToolDefinition, readToolHandler);
9
+ registry.register(readFileToolDefinition, readFileToolHandler);
8
10
  registry.register(searchToolDefinition, searchToolHandler);
11
+ registry.register(editFileToolDefinition, editFileToolHandler);
9
12
  registry.register(applyPatchToolDefinition, applyPatchToolHandler);
13
+ registry.register(listFilesToolDefinition, listFilesToolHandler);
10
14
  return registry;
11
15
  }
12
16
  //# sourceMappingURL=default-registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"default-registry.js","sourceRoot":"","sources":["../../src/tools/default-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEhF,MAAM,UAAU,yBAAyB;IACvC,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;IACvD,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;IAC3D,QAAQ,CAAC,QAAQ,CAAC,wBAAwB,EAAE,qBAAqB,CAAC,CAAC;IACnE,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"default-registry.js","sourceRoot":"","sources":["../../src/tools/default-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAE7E,MAAM,UAAU,yBAAyB;IACvC,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CAAC;IAC/D,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;IAC3D,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CAAC;IAC/D,QAAQ,CAAC,QAAQ,CAAC,wBAAwB,EAAE,qBAAqB,CAAC,CAAC;IACnE,QAAQ,CAAC,QAAQ,CAAC,uBAAuB,EAAE,oBAAoB,CAAC,CAAC;IACjE,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { ToolDefinition, ToolHandler } from './types.js';
2
+ export declare const editFileToolDefinition: ToolDefinition;
3
+ export declare const editFileToolHandler: ToolHandler;
4
+ //# sourceMappingURL=edit-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-file.d.ts","sourceRoot":"","sources":["../../src/tools/edit-file.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtD,eAAO,MAAM,sBAAsB,EAAE,cAqBpC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,WAwEjC,CAAC"}
@@ -0,0 +1,95 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import { resolveSafePath, ensureFileExists, readFileLines, writeFileLines } from './utils.js';
4
+ export const editFileToolDefinition = {
5
+ name: 'edit_file',
6
+ description: 'Edit a text file by replacing, inserting, appending, or overwriting content.',
7
+ parameters: {
8
+ type: 'object',
9
+ properties: {
10
+ path: { type: 'string', description: 'Path to the file, relative to the project root.' },
11
+ mode: {
12
+ type: 'string',
13
+ enum: ['overwrite', 'append', 'replace', 'insert'],
14
+ description: 'Edit mode to apply.',
15
+ },
16
+ content: { type: 'string', description: 'Content to write or insert.' },
17
+ startLine: { type: 'integer', description: '1-based start line for replace/insert.' },
18
+ endLine: { type: 'integer', description: '1-based end line for replace.' },
19
+ find: { type: 'string', description: 'String or regex pattern to replace.' },
20
+ replace: { type: 'string', description: 'Replacement string.' },
21
+ useRegex: { type: 'boolean', description: 'Treat find as regex (default: false).' },
22
+ },
23
+ required: ['path', 'mode'],
24
+ },
25
+ };
26
+ export const editFileToolHandler = (args, context) => {
27
+ const pathArg = String(args.path || '');
28
+ const mode = String(args.mode || '');
29
+ if (!pathArg) {
30
+ return { ok: false, error: { message: 'path is required', code: 'INVALID_ARGS' } };
31
+ }
32
+ if (!mode) {
33
+ return { ok: false, error: { message: 'mode is required', code: 'INVALID_ARGS' } };
34
+ }
35
+ const { absolutePath, relativePath } = resolveSafePath(pathArg, context.rootPath || context.cwd);
36
+ const encoding = 'utf-8';
37
+ if (mode === 'overwrite') {
38
+ const content = String(args.content ?? '');
39
+ ensureDir(path.dirname(absolutePath));
40
+ fs.writeFileSync(absolutePath, content, encoding);
41
+ return { ok: true, data: { path: relativePath, mode, bytes: Buffer.byteLength(content) } };
42
+ }
43
+ ensureFileExists(absolutePath);
44
+ if (mode === 'append') {
45
+ const content = String(args.content ?? '');
46
+ fs.appendFileSync(absolutePath, content, encoding);
47
+ return { ok: true, data: { path: relativePath, mode, bytes: Buffer.byteLength(content) } };
48
+ }
49
+ const lines = readFileLines(absolutePath, encoding);
50
+ if (mode === 'insert') {
51
+ const content = String(args.content ?? '');
52
+ const startLine = typeof args.startLine === 'number' ? Math.max(args.startLine, 1) : lines.length + 1;
53
+ const insertLines = content.split(/\r?\n/);
54
+ const updated = [
55
+ ...lines.slice(0, startLine - 1),
56
+ ...insertLines,
57
+ ...lines.slice(startLine - 1),
58
+ ];
59
+ writeFileLines(absolutePath, updated, encoding);
60
+ return { ok: true, data: { path: relativePath, mode, startLine } };
61
+ }
62
+ if (mode === 'replace') {
63
+ const content = String(args.content ?? '');
64
+ if (typeof args.startLine === 'number') {
65
+ const startLine = Math.max(args.startLine, 1);
66
+ const endLine = typeof args.endLine === 'number' ? Math.max(args.endLine, startLine) : startLine;
67
+ const replacement = content.split(/\r?\n/);
68
+ const updated = [...lines.slice(0, startLine - 1), ...replacement, ...lines.slice(endLine)];
69
+ writeFileLines(absolutePath, updated, encoding);
70
+ return { ok: true, data: { path: relativePath, mode, startLine, endLine } };
71
+ }
72
+ const find = String(args.find ?? '');
73
+ if (!find) {
74
+ return {
75
+ ok: false,
76
+ error: { message: 'find is required when startLine is not provided', code: 'INVALID_ARGS' },
77
+ };
78
+ }
79
+ const useRegex = Boolean(args.useRegex);
80
+ const regex = useRegex ? new RegExp(find, 'g') : new RegExp(escapeRegex(find), 'g');
81
+ const updatedContent = lines.join('\n').replace(regex, String(args.replace ?? ''));
82
+ fs.writeFileSync(absolutePath, updatedContent, encoding);
83
+ return { ok: true, data: { path: relativePath, mode } };
84
+ }
85
+ return { ok: false, error: { message: `Unsupported mode: ${mode}`, code: 'INVALID_ARGS' } };
86
+ };
87
+ function ensureDir(dirPath) {
88
+ if (!fs.existsSync(dirPath)) {
89
+ fs.mkdirSync(dirPath, { recursive: true });
90
+ }
91
+ }
92
+ function escapeRegex(value) {
93
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
94
+ }
95
+ //# sourceMappingURL=edit-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-file.js","sourceRoot":"","sources":["../../src/tools/edit-file.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  export * from './registry.js';
2
2
  export * from './default-registry.js';
3
- export { readToolDefinition, readToolHandler } from './read.js';
3
+ export { readFileToolDefinition, readFileToolHandler } from './read-file.js';
4
4
  export { searchToolDefinition, searchToolHandler } from './search.js';
5
- export { editToolDefinition, editToolHandler } from './edit.js';
5
+ export { editFileToolDefinition, editFileToolHandler } from './edit-file.js';
6
6
  export { applyPatchToolDefinition, applyPatchToolHandler } from './apply-patch.js';
7
+ export { listFilesToolDefinition, listFilesToolHandler } from './list-files.js';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
@@ -1,7 +1,8 @@
1
1
  export * from './registry.js';
2
2
  export * from './default-registry.js';
3
- export { readToolDefinition, readToolHandler } from './read.js';
3
+ export { readFileToolDefinition, readFileToolHandler } from './read-file.js';
4
4
  export { searchToolDefinition, searchToolHandler } from './search.js';
5
- export { editToolDefinition, editToolHandler } from './edit.js';
5
+ export { editFileToolDefinition, editFileToolHandler } from './edit-file.js';
6
6
  export { applyPatchToolDefinition, applyPatchToolHandler } from './apply-patch.js';
7
+ export { listFilesToolDefinition, listFilesToolHandler } from './list-files.js';
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { ToolDefinition, ToolHandler } from './types.js';
2
+ export declare const listFilesToolDefinition: ToolDefinition;
3
+ export declare const listFilesToolHandler: ToolHandler;
4
+ //# sourceMappingURL=list-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-files.d.ts","sourceRoot":"","sources":["../../src/tools/list-files.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtD,eAAO,MAAM,uBAAuB,EAAE,cAiBrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,WA0BlC,CAAC"}
@@ -0,0 +1,45 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import { resolveSafePath, walkFiles, globToRegex } from './utils.js';
4
+ export const listFilesToolDefinition = {
5
+ name: 'list_files',
6
+ description: 'List files under a directory within the project root.',
7
+ parameters: {
8
+ type: 'object',
9
+ properties: {
10
+ path: {
11
+ type: 'string',
12
+ description: 'Directory path to list, relative to the project root (default: .).',
13
+ },
14
+ includePattern: {
15
+ type: 'string',
16
+ description: 'Optional glob pattern to filter file paths.',
17
+ },
18
+ maxResults: { type: 'integer', description: 'Maximum number of files to return.' },
19
+ },
20
+ },
21
+ };
22
+ export const listFilesToolHandler = (args, context) => {
23
+ const pathArg = typeof args.path === 'string' && args.path.length > 0 ? args.path : '.';
24
+ const root = context.rootPath || context.cwd || process.cwd();
25
+ const { absolutePath, relativePath } = resolveSafePath(pathArg, root);
26
+ const stat = fs.statSync(absolutePath);
27
+ if (stat.isFile()) {
28
+ return { ok: true, data: { path: relativePath, files: [relativePath] } };
29
+ }
30
+ const includePattern = typeof args.includePattern === 'string' && args.includePattern.length > 0
31
+ ? globToRegex(args.includePattern)
32
+ : undefined;
33
+ const files = walkFiles(absolutePath, includePattern);
34
+ const maxResults = typeof args.maxResults === 'number' ? Math.max(args.maxResults, 1) : files.length;
35
+ const baseRoot = path.resolve(root);
36
+ const sliced = files.slice(0, maxResults).map((file) => {
37
+ const relativeToRoot = path.relative(baseRoot, file);
38
+ if (relativeToRoot && !relativeToRoot.startsWith('..') && !path.isAbsolute(relativeToRoot)) {
39
+ return relativeToRoot;
40
+ }
41
+ return path.relative(absolutePath, file);
42
+ });
43
+ return { ok: true, data: { path: relativePath, files: sliced } };
44
+ };
45
+ //# sourceMappingURL=list-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-files.js","sourceRoot":"","sources":["../../src/tools/list-files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAElE,MAAM,CAAC,MAAM,uBAAuB,GAAmB;IACrD,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,uDAAuD;IACpE,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,oEAAoE;aAClF;YACD,cAAc,EAAE;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6CAA6C;aAC3D;YACD,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,oCAAoC,EAAE;SACnF;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;IACjE,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IACxF,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC9D,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAEtE,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAClB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;IAC3E,CAAC;IAED,MAAM,cAAc,GAClB,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;QACvE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC;QAClC,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;IACrG,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACrD,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,cAAc,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3F,OAAO,cAAc,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC;AACnE,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { ToolDefinition, ToolHandler } from './types.js';
2
+ export declare const readFileToolDefinition: ToolDefinition;
3
+ export declare const readFileToolHandler: ToolHandler;
4
+ //# sourceMappingURL=read-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-file.d.ts","sourceRoot":"","sources":["../../src/tools/read-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtD,eAAO,MAAM,sBAAsB,EAAE,cAapC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,WA4BjC,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { resolveSafePath, ensureFileExists, readFileLines } from './utils.js';
2
+ export const readFileToolDefinition = {
3
+ name: 'read_file',
4
+ description: 'Read a file from disk with optional line range.',
5
+ parameters: {
6
+ type: 'object',
7
+ properties: {
8
+ path: { type: 'string', description: 'Path to the file, relative to the project root.' },
9
+ startLine: { type: 'integer', description: '1-based start line number (inclusive).' },
10
+ endLine: { type: 'integer', description: '1-based end line number (inclusive).' },
11
+ encoding: { type: 'string', description: 'File encoding (default: utf-8).' },
12
+ },
13
+ required: ['path'],
14
+ },
15
+ };
16
+ export const readFileToolHandler = (args, context) => {
17
+ const pathArg = String(args.path || '');
18
+ if (!pathArg) {
19
+ return { ok: false, error: { message: 'path is required', code: 'INVALID_ARGS' } };
20
+ }
21
+ const { absolutePath, relativePath } = resolveSafePath(pathArg, context.rootPath || context.cwd);
22
+ ensureFileExists(absolutePath);
23
+ const encoding = args.encoding || 'utf-8';
24
+ const lines = readFileLines(absolutePath, encoding);
25
+ const startLine = typeof args.startLine === 'number' ? Math.max(args.startLine, 1) : 1;
26
+ const endLine = typeof args.endLine === 'number' ? Math.min(args.endLine, lines.length) : lines.length;
27
+ const slice = lines.slice(startLine - 1, endLine).join('\n');
28
+ return {
29
+ ok: true,
30
+ data: {
31
+ path: relativePath,
32
+ startLine,
33
+ endLine,
34
+ totalLines: lines.length,
35
+ content: slice,
36
+ },
37
+ };
38
+ };
39
+ //# sourceMappingURL=read-file.js.map