@ddse/acm-aicoder 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/.aicoder/index.json +304 -0
  2. package/AICODER_IMPLEMENTATION_PLAN_PHASE2.md +284 -0
  3. package/LICENSE +21 -0
  4. package/README.md +490 -0
  5. package/bin/interactive.tsx +232 -0
  6. package/dist/bin/interactive.d.ts +3 -0
  7. package/dist/bin/interactive.d.ts.map +1 -0
  8. package/dist/bin/interactive.js +155 -0
  9. package/dist/bin/interactive.js.map +1 -0
  10. package/dist/src/config/providers.d.ts +15 -0
  11. package/dist/src/config/providers.d.ts.map +1 -0
  12. package/dist/src/config/providers.js +142 -0
  13. package/dist/src/config/providers.js.map +1 -0
  14. package/dist/src/config/session.d.ts +25 -0
  15. package/dist/src/config/session.d.ts.map +1 -0
  16. package/dist/src/config/session.js +97 -0
  17. package/dist/src/config/session.js.map +1 -0
  18. package/dist/src/context/bm25.d.ts +68 -0
  19. package/dist/src/context/bm25.d.ts.map +1 -0
  20. package/dist/src/context/bm25.js +131 -0
  21. package/dist/src/context/bm25.js.map +1 -0
  22. package/dist/src/context/code-search.d.ts +30 -0
  23. package/dist/src/context/code-search.d.ts.map +1 -0
  24. package/dist/src/context/code-search.js +150 -0
  25. package/dist/src/context/code-search.js.map +1 -0
  26. package/dist/src/context/context-pack.d.ts +25 -0
  27. package/dist/src/context/context-pack.d.ts.map +1 -0
  28. package/dist/src/context/context-pack.js +92 -0
  29. package/dist/src/context/context-pack.js.map +1 -0
  30. package/dist/src/context/dependency-mapper.d.ts +10 -0
  31. package/dist/src/context/dependency-mapper.d.ts.map +1 -0
  32. package/dist/src/context/dependency-mapper.js +62 -0
  33. package/dist/src/context/dependency-mapper.js.map +1 -0
  34. package/dist/src/context/index.d.ts +8 -0
  35. package/dist/src/context/index.d.ts.map +1 -0
  36. package/dist/src/context/index.js +9 -0
  37. package/dist/src/context/index.js.map +1 -0
  38. package/dist/src/context/symbol-extractor.d.ts +26 -0
  39. package/dist/src/context/symbol-extractor.d.ts.map +1 -0
  40. package/dist/src/context/symbol-extractor.js +129 -0
  41. package/dist/src/context/symbol-extractor.js.map +1 -0
  42. package/dist/src/context/test-mapper.d.ts +16 -0
  43. package/dist/src/context/test-mapper.d.ts.map +1 -0
  44. package/dist/src/context/test-mapper.js +66 -0
  45. package/dist/src/context/test-mapper.js.map +1 -0
  46. package/dist/src/context/types.d.ts +61 -0
  47. package/dist/src/context/types.d.ts.map +1 -0
  48. package/dist/src/context/types.js +3 -0
  49. package/dist/src/context/types.js.map +1 -0
  50. package/dist/src/context/workspace-indexer.d.ts +39 -0
  51. package/dist/src/context/workspace-indexer.d.ts.map +1 -0
  52. package/dist/src/context/workspace-indexer.js +222 -0
  53. package/dist/src/context/workspace-indexer.js.map +1 -0
  54. package/dist/src/index.d.ts +5 -0
  55. package/dist/src/index.d.ts.map +1 -0
  56. package/dist/src/index.js +6 -0
  57. package/dist/src/index.js.map +1 -0
  58. package/dist/src/registries.d.ts +34 -0
  59. package/dist/src/registries.d.ts.map +1 -0
  60. package/dist/src/registries.js +87 -0
  61. package/dist/src/registries.js.map +1 -0
  62. package/dist/src/runtime/budget-manager.d.ts +42 -0
  63. package/dist/src/runtime/budget-manager.d.ts.map +1 -0
  64. package/dist/src/runtime/budget-manager.js +82 -0
  65. package/dist/src/runtime/budget-manager.js.map +1 -0
  66. package/dist/src/runtime/interactive-runtime.d.ts +39 -0
  67. package/dist/src/runtime/interactive-runtime.d.ts.map +1 -0
  68. package/dist/src/runtime/interactive-runtime.js +321 -0
  69. package/dist/src/runtime/interactive-runtime.js.map +1 -0
  70. package/dist/src/tasks-v2/analysis-tasks.d.ts +117 -0
  71. package/dist/src/tasks-v2/analysis-tasks.d.ts.map +1 -0
  72. package/dist/src/tasks-v2/analysis-tasks.js +209 -0
  73. package/dist/src/tasks-v2/analysis-tasks.js.map +1 -0
  74. package/dist/src/tasks-v2/developer-tasks.d.ts +226 -0
  75. package/dist/src/tasks-v2/developer-tasks.d.ts.map +1 -0
  76. package/dist/src/tasks-v2/developer-tasks.js +322 -0
  77. package/dist/src/tasks-v2/developer-tasks.js.map +1 -0
  78. package/dist/src/tasks-v2/index.d.ts +3 -0
  79. package/dist/src/tasks-v2/index.d.ts.map +1 -0
  80. package/dist/src/tasks-v2/index.js +4 -0
  81. package/dist/src/tasks-v2/index.js.map +1 -0
  82. package/dist/src/tools-v2/edit-tools.d.ts +67 -0
  83. package/dist/src/tools-v2/edit-tools.d.ts.map +1 -0
  84. package/dist/src/tools-v2/edit-tools.js +117 -0
  85. package/dist/src/tools-v2/edit-tools.js.map +1 -0
  86. package/dist/src/tools-v2/index.d.ts +6 -0
  87. package/dist/src/tools-v2/index.d.ts.map +1 -0
  88. package/dist/src/tools-v2/index.js +7 -0
  89. package/dist/src/tools-v2/index.js.map +1 -0
  90. package/dist/src/tools-v2/read-tools.d.ts +129 -0
  91. package/dist/src/tools-v2/read-tools.d.ts.map +1 -0
  92. package/dist/src/tools-v2/read-tools.js +216 -0
  93. package/dist/src/tools-v2/read-tools.js.map +1 -0
  94. package/dist/src/tools-v2/search-tools.d.ts +73 -0
  95. package/dist/src/tools-v2/search-tools.d.ts.map +1 -0
  96. package/dist/src/tools-v2/search-tools.js +132 -0
  97. package/dist/src/tools-v2/search-tools.js.map +1 -0
  98. package/dist/src/tools-v2/test-tools.d.ts +59 -0
  99. package/dist/src/tools-v2/test-tools.d.ts.map +1 -0
  100. package/dist/src/tools-v2/test-tools.js +111 -0
  101. package/dist/src/tools-v2/test-tools.js.map +1 -0
  102. package/dist/src/tools-v2/workspace-context.d.ts +65 -0
  103. package/dist/src/tools-v2/workspace-context.d.ts.map +1 -0
  104. package/dist/src/tools-v2/workspace-context.js +336 -0
  105. package/dist/src/tools-v2/workspace-context.js.map +1 -0
  106. package/dist/src/ui/App.d.ts +9 -0
  107. package/dist/src/ui/App.d.ts.map +1 -0
  108. package/dist/src/ui/App.js +257 -0
  109. package/dist/src/ui/App.js.map +1 -0
  110. package/dist/src/ui/components/ChatPane.d.ts +12 -0
  111. package/dist/src/ui/components/ChatPane.d.ts.map +1 -0
  112. package/dist/src/ui/components/ChatPane.js +41 -0
  113. package/dist/src/ui/components/ChatPane.js.map +1 -0
  114. package/dist/src/ui/components/EventsPane.d.ts +12 -0
  115. package/dist/src/ui/components/EventsPane.d.ts.map +1 -0
  116. package/dist/src/ui/components/EventsPane.js +48 -0
  117. package/dist/src/ui/components/EventsPane.js.map +1 -0
  118. package/dist/src/ui/components/GoalsTasksPane.d.ts +18 -0
  119. package/dist/src/ui/components/GoalsTasksPane.d.ts.map +1 -0
  120. package/dist/src/ui/components/GoalsTasksPane.js +83 -0
  121. package/dist/src/ui/components/GoalsTasksPane.js.map +1 -0
  122. package/dist/src/ui/store.d.ts +74 -0
  123. package/dist/src/ui/store.d.ts.map +1 -0
  124. package/dist/src/ui/store.js +260 -0
  125. package/dist/src/ui/store.js.map +1 -0
  126. package/dist/tests/integration.test.d.ts +2 -0
  127. package/dist/tests/integration.test.d.ts.map +1 -0
  128. package/dist/tests/integration.test.js +415 -0
  129. package/dist/tests/integration.test.js.map +1 -0
  130. package/dist/tsconfig.tsbuildinfo +1 -0
  131. package/docs/AICODER.png +0 -0
  132. package/docs/INTERACTIVE_CLI_GUIDE.md +201 -0
  133. package/docs/TUI_MOCKUP.md +180 -0
  134. package/package.json +52 -0
  135. package/src/config/providers.ts +174 -0
  136. package/src/config/session.ts +143 -0
  137. package/src/context/bm25.ts +173 -0
  138. package/src/context/code-search.ts +188 -0
  139. package/src/context/context-pack.ts +133 -0
  140. package/src/context/dependency-mapper.ts +72 -0
  141. package/src/context/index.ts +8 -0
  142. package/src/context/symbol-extractor.ts +149 -0
  143. package/src/context/test-mapper.ts +77 -0
  144. package/src/context/types.ts +69 -0
  145. package/src/context/workspace-indexer.ts +249 -0
  146. package/src/index.ts +5 -0
  147. package/src/registries.ts +118 -0
  148. package/src/runtime/budget-manager.ts +118 -0
  149. package/src/runtime/interactive-runtime.ts +423 -0
  150. package/src/tasks-v2/analysis-tasks.ts +311 -0
  151. package/src/tasks-v2/developer-tasks.ts +437 -0
  152. package/src/tasks-v2/index.ts +3 -0
  153. package/src/tools-v2/edit-tools.ts +153 -0
  154. package/src/tools-v2/index.ts +6 -0
  155. package/src/tools-v2/read-tools.ts +286 -0
  156. package/src/tools-v2/search-tools.ts +175 -0
  157. package/src/tools-v2/test-tools.ts +147 -0
  158. package/src/tools-v2/workspace-context.ts +428 -0
  159. package/src/ui/App.tsx +392 -0
  160. package/src/ui/components/ChatPane.tsx +84 -0
  161. package/src/ui/components/EventsPane.tsx +81 -0
  162. package/src/ui/components/GoalsTasksPane.tsx +149 -0
  163. package/src/ui/store.ts +362 -0
  164. package/tests/integration.test.ts +537 -0
  165. package/tsconfig.json +22 -0
@@ -0,0 +1,322 @@
1
+ // Enhanced Developer Tasks using Context Engine and V2 Tools
2
+ import { Task } from '@ddse/acm-sdk';
3
+ import path from 'path';
4
+ /**
5
+ * FindSymbolDefinitionTask - Locate symbol across codebase
6
+ */
7
+ export class FindSymbolDefinitionTask extends Task {
8
+ constructor() {
9
+ super('find-symbol-definition', 'find_symbol_definition');
10
+ }
11
+ async execute(ctx, input) {
12
+ const searchTool = ctx.getTool('code_search');
13
+ if (!searchTool)
14
+ throw new Error('CodeSearchTool not found');
15
+ // Search for symbol
16
+ const query = `${input.symbolName} function class interface`;
17
+ const result = await searchTool.call({
18
+ query,
19
+ k: 5,
20
+ preferTypes: ['.ts', '.tsx', '.js', '.jsx'],
21
+ includeContext: true,
22
+ });
23
+ ctx.stream?.emit('task', {
24
+ taskId: this.id,
25
+ step: 'symbol_search_complete',
26
+ resultsFound: result.results.length,
27
+ });
28
+ return {
29
+ locations: result.results.map((r) => ({
30
+ path: r.path,
31
+ line: r.line,
32
+ snippet: r.snippet,
33
+ })),
34
+ };
35
+ }
36
+ verification() {
37
+ return ['output.locations !== undefined'];
38
+ }
39
+ }
40
+ /**
41
+ * ImplementFunctionTask - Create function with AI assistance
42
+ */
43
+ export class ImplementFunctionTask extends Task {
44
+ constructor() {
45
+ super('implement-function', 'implement_function');
46
+ }
47
+ async execute(ctx, input) {
48
+ const readTool = ctx.getTool('file_read_lines');
49
+ const editTool = ctx.getTool('code_edit_v2');
50
+ if (!readTool || !editTool) {
51
+ throw new Error('Required tools not found');
52
+ }
53
+ const workspaceRoot = getWorkspaceRoot(ctx);
54
+ const targetPath = resolveWorkspacePath(workspaceRoot, input.path);
55
+ // Read the file to understand context
56
+ ctx.stream?.emit('task', { taskId: this.id, step: 'reading_file' });
57
+ const fileContent = await readTool.call({ path: targetPath });
58
+ // Generate function implementation (simplified - in real use, call LLM)
59
+ const implementation = `
60
+ export ${input.signature} {
61
+ // TODO: ${input.intent}
62
+ throw new Error('Not implemented');
63
+ }
64
+ `;
65
+ // Apply changes
66
+ ctx.stream?.emit('task', { taskId: this.id, step: 'applying_changes' });
67
+ const newContent = fileContent.content + '\n' + implementation;
68
+ const result = await editTool.call({
69
+ path: targetPath,
70
+ content: newContent,
71
+ dryRun: input.dryRun,
72
+ backup: !input.dryRun,
73
+ });
74
+ ctx.stream?.emit('task', { taskId: this.id, step: 'implementation_complete' });
75
+ return {
76
+ implemented: result.success,
77
+ changes: implementation,
78
+ };
79
+ }
80
+ policyInput(ctx, input) {
81
+ const workspaceRoot = getWorkspaceRoot(ctx);
82
+ return {
83
+ path: resolveWorkspacePath(workspaceRoot, input.path),
84
+ action: 'implement_function',
85
+ dryRun: input.dryRun || false,
86
+ };
87
+ }
88
+ verification() {
89
+ return ['output.implemented === true'];
90
+ }
91
+ }
92
+ /**
93
+ * RefactorRenameSymbolTask - Rename symbol across codebase
94
+ */
95
+ export class RefactorRenameSymbolTask extends Task {
96
+ constructor() {
97
+ super('refactor-rename-symbol', 'refactor_rename_symbol');
98
+ }
99
+ async execute(ctx, input) {
100
+ const grepTool = ctx.getTool('grep');
101
+ if (!grepTool)
102
+ throw new Error('GrepTool not found');
103
+ // Find all occurrences
104
+ ctx.stream?.emit('task', { taskId: this.id, step: 'searching_occurrences' });
105
+ const matches = await grepTool.call({
106
+ pattern: input.symbol,
107
+ regex: false,
108
+ caseInsensitive: false,
109
+ maxResults: 100,
110
+ });
111
+ ctx.stream?.emit('task', {
112
+ taskId: this.id,
113
+ step: 'occurrences_found',
114
+ count: matches.matches.length,
115
+ });
116
+ // Get unique files
117
+ const filesSet = new Set(matches.matches.map((m) => String(m.path)));
118
+ const filesChanged = Array.from(filesSet);
119
+ // In production, would actually perform the rename
120
+ if (!input.dryRun) {
121
+ // TODO: Implement actual rename logic
122
+ ctx.stream?.emit('task', { taskId: this.id, step: 'renaming_symbols' });
123
+ }
124
+ return {
125
+ occurrences: matches.matches.length,
126
+ filesChanged,
127
+ success: true,
128
+ };
129
+ }
130
+ policyInput(ctx, input) {
131
+ return {
132
+ action: 'refactor_rename',
133
+ symbol: input.symbol,
134
+ dryRun: input.dryRun || false,
135
+ };
136
+ }
137
+ verification() {
138
+ return ['output.occurrences >= 0', 'output.success === true'];
139
+ }
140
+ }
141
+ /**
142
+ * FixTypeErrorTask - Resolve TypeScript errors
143
+ */
144
+ export class FixTypeErrorTask extends Task {
145
+ constructor() {
146
+ super('fix-type-error', 'fix_type_error');
147
+ }
148
+ async execute(ctx, input) {
149
+ const buildTool = ctx.getTool('build');
150
+ if (!buildTool)
151
+ throw new Error('BuildTool not found');
152
+ // Run build to get current errors
153
+ ctx.stream?.emit('task', { taskId: this.id, step: 'building_project' });
154
+ const buildResult = await buildTool.call({
155
+ command: 'npm run build',
156
+ });
157
+ const errorCount = buildResult.errors.length;
158
+ ctx.stream?.emit('task', {
159
+ taskId: this.id,
160
+ step: 'errors_detected',
161
+ count: errorCount,
162
+ });
163
+ // In production, would use LLM to suggest fixes
164
+ return {
165
+ fixed: errorCount === 0,
166
+ changes: [],
167
+ remainingErrors: errorCount,
168
+ };
169
+ }
170
+ policyInput(ctx, input) {
171
+ return {
172
+ action: 'fix_type_error',
173
+ dryRun: input.dryRun || false,
174
+ };
175
+ }
176
+ verification() {
177
+ return ['output.remainingErrors !== undefined'];
178
+ }
179
+ }
180
+ /**
181
+ * GenerateUnitTestsTask - Create tests with AI
182
+ */
183
+ export class GenerateUnitTestsTask extends Task {
184
+ constructor() {
185
+ super('generate-unit-tests', 'generate_unit_tests');
186
+ }
187
+ async execute(ctx, input) {
188
+ const readTool = ctx.getTool('file_read_lines');
189
+ const editTool = ctx.getTool('code_edit_v2');
190
+ if (!readTool || !editTool) {
191
+ throw new Error('Required tools not found');
192
+ }
193
+ const workspaceRoot = getWorkspaceRoot(ctx);
194
+ const absoluteTargetPath = resolveWorkspacePath(workspaceRoot, input.targetPath);
195
+ // Read target file
196
+ ctx.stream?.emit('task', { taskId: this.id, step: 'reading_target' });
197
+ await readTool.call({ path: absoluteTargetPath });
198
+ // Generate test file path
199
+ const testPathAbsolute = absoluteTargetPath.replace(/\.ts$/, '.test.ts');
200
+ const testPath = toWorkspaceRelative(workspaceRoot, testPathAbsolute);
201
+ // Generate test template (simplified)
202
+ const testContent = `import { describe, it, expect } from 'vitest';
203
+ import { ${input.symbolName || 'module'} } from './${input.targetPath.replace(/\.ts$/, '')}';
204
+
205
+ describe('${input.symbolName || 'Module'} Tests', () => {
206
+ it('should work correctly', () => {
207
+ // TODO: Implement test
208
+ expect(true).toBe(true);
209
+ });
210
+ });
211
+ `;
212
+ ctx.stream?.emit('task', { taskId: this.id, step: 'generating_tests' });
213
+ const result = await editTool.call({
214
+ path: testPathAbsolute,
215
+ content: testContent,
216
+ dryRun: input.dryRun,
217
+ });
218
+ return {
219
+ implemented: result.success,
220
+ testPath,
221
+ testCount: 1,
222
+ };
223
+ }
224
+ policyInput(ctx, input) {
225
+ const workspaceRoot = getWorkspaceRoot(ctx);
226
+ return {
227
+ action: 'generate_tests',
228
+ targetPath: resolveWorkspacePath(workspaceRoot, input.targetPath),
229
+ dryRun: input.dryRun || false,
230
+ };
231
+ }
232
+ verification() {
233
+ return ['output.implemented === true', 'output.testCount > 0'];
234
+ }
235
+ }
236
+ function getWorkspaceRoot(ctx) {
237
+ const workspace = ctx.context?.facts?.workspace ?? process.cwd();
238
+ return path.resolve(workspace);
239
+ }
240
+ function resolveWorkspacePath(workspaceRoot, filePath) {
241
+ if (!filePath || typeof filePath !== 'string') {
242
+ throw new Error('Task requires a valid file path');
243
+ }
244
+ return path.isAbsolute(filePath)
245
+ ? filePath
246
+ : path.resolve(workspaceRoot, filePath);
247
+ }
248
+ function toWorkspaceRelative(workspaceRoot, targetPath) {
249
+ const relative = path.relative(workspaceRoot, targetPath);
250
+ return relative && !relative.startsWith('..') ? relative : targetPath;
251
+ }
252
+ /**
253
+ * ReadFileLinesTask - Precise file slice reading
254
+ */
255
+ export class ReadFileLinesTask extends Task {
256
+ constructor() {
257
+ super('read-file-lines', 'read_file_lines');
258
+ }
259
+ async execute(ctx, input) {
260
+ const readLines = ctx.getTool('file_read_lines');
261
+ if (!readLines)
262
+ throw new Error('FileReadLinesTool not found');
263
+ // Normalize path aliases from planner (filepath/filePath)
264
+ const anyInput = input;
265
+ const normalizedPath = anyInput?.path ?? anyInput?.filepath ?? anyInput?.filePath;
266
+ if (!normalizedPath) {
267
+ throw new Error('ReadFileLinesTask: missing required path. Accepted keys: path | filepath | filePath');
268
+ }
269
+ const res = await readLines.call({
270
+ path: normalizedPath,
271
+ startLine: input.startLine,
272
+ endLine: input.endLine,
273
+ maxLines: input.maxLines,
274
+ });
275
+ return res;
276
+ }
277
+ verification() {
278
+ return ['output.content !== undefined'];
279
+ }
280
+ }
281
+ /**
282
+ * DiffFilesTask - Generate unified diff between two files
283
+ */
284
+ export class DiffFilesTask extends Task {
285
+ constructor() {
286
+ super('diff-files', 'diff_files');
287
+ }
288
+ async execute(ctx, input) {
289
+ const diffTool = ctx.getTool('diff');
290
+ if (!diffTool)
291
+ throw new Error('DiffTool not found');
292
+ const res = await diffTool.call({ aPath: input.aPath, bPath: input.bPath, context: input.context });
293
+ return res;
294
+ }
295
+ verification() {
296
+ return ['output.diff !== undefined'];
297
+ }
298
+ }
299
+ /**
300
+ * GrepSearchTask - Fast pattern search across workspace
301
+ */
302
+ export class GrepSearchTask extends Task {
303
+ constructor() {
304
+ super('grep-search', 'grep_search');
305
+ }
306
+ async execute(ctx, input) {
307
+ const grep = ctx.getTool('grep');
308
+ if (!grep)
309
+ throw new Error('GrepTool not found');
310
+ const res = await grep.call({
311
+ pattern: input.pattern,
312
+ regex: input.regex,
313
+ caseInsensitive: input.caseInsensitive,
314
+ maxResults: input.maxResults,
315
+ });
316
+ return res;
317
+ }
318
+ verification() {
319
+ return ['output.matches !== undefined'];
320
+ }
321
+ }
322
+ //# sourceMappingURL=developer-tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"developer-tasks.js","sourceRoot":"","sources":["../../../src/tasks-v2/developer-tasks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './developer-tasks.js';
2
+ export * from './analysis-tasks.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tasks-v2/index.ts"],"names":[],"mappings":"AACA,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,4 @@
1
+ // Enhanced Developer Tasks
2
+ export * from './developer-tasks.js';
3
+ export * from './analysis-tasks.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tasks-v2/index.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { Tool } from '@ddse/acm-sdk';
2
+ /**
3
+ * PatchApplyTool - Apply unified diffs with conflict handling
4
+ */
5
+ export declare class PatchApplyTool extends Tool<{
6
+ diffs: string | string[];
7
+ strategy?: 'fail' | 'best-effort';
8
+ dryRun?: boolean;
9
+ }, {
10
+ applied: Array<{
11
+ path: string;
12
+ hunks: number;
13
+ }>;
14
+ conflicts: Array<{
15
+ path: string;
16
+ context: string;
17
+ }>;
18
+ preview?: boolean;
19
+ }> {
20
+ name(): string;
21
+ call(input: {
22
+ diffs: string | string[];
23
+ strategy?: 'fail' | 'best-effort';
24
+ dryRun?: boolean;
25
+ }): Promise<{
26
+ applied: Array<{
27
+ path: string;
28
+ hunks: number;
29
+ }>;
30
+ conflicts: Array<{
31
+ path: string;
32
+ context: string;
33
+ }>;
34
+ preview?: boolean;
35
+ }>;
36
+ }
37
+ /**
38
+ * CodeEditToolV2 - Enhanced code editing with backup
39
+ */
40
+ export declare class CodeEditToolV2 extends Tool<{
41
+ path: string;
42
+ content: string;
43
+ dryRun?: boolean;
44
+ backup?: boolean;
45
+ }, {
46
+ success: boolean;
47
+ path: string;
48
+ message: string;
49
+ backupPath?: string;
50
+ }> {
51
+ private rootPath;
52
+ constructor(rootPath?: string);
53
+ name(): string;
54
+ call(input: {
55
+ path: string;
56
+ content: string;
57
+ dryRun?: boolean;
58
+ backup?: boolean;
59
+ }): Promise<{
60
+ success: boolean;
61
+ path: string;
62
+ message: string;
63
+ backupPath?: string;
64
+ }>;
65
+ private resolvePath;
66
+ }
67
+ //# sourceMappingURL=edit-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-tools.d.ts","sourceRoot":"","sources":["../../../src/tools-v2/edit-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAIrC;;GAEG;AACH,qBAAa,cAAe,SAAQ,IAAI,CACtC;IAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,EACjF;IACE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CACF;IACC,IAAI,IAAI,MAAM;IAIR,IAAI,CAAC,KAAK,EAAE;QAChB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;QAClC,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,OAAO,CAAC;QACV,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAChD,SAAS,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACpD,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CAwDH;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,IAAI,CACtC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,EACrE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CACzE;IACC,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,GAAE,MAAsB;IAK5C,IAAI,IAAI,MAAM;IAIR,IAAI,CAAC,KAAK,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAsCrF,OAAO,CAAC,WAAW;CAKpB"}
@@ -0,0 +1,117 @@
1
+ // Edit Tools - Code modification with safety
2
+ import { Tool } from '@ddse/acm-sdk';
3
+ import * as fs from 'fs/promises';
4
+ import * as path from 'path';
5
+ /**
6
+ * PatchApplyTool - Apply unified diffs with conflict handling
7
+ */
8
+ export class PatchApplyTool extends Tool {
9
+ name() {
10
+ return 'patch_apply';
11
+ }
12
+ async call(input) {
13
+ const diffs = Array.isArray(input.diffs) ? input.diffs : [input.diffs];
14
+ const strategy = input.strategy ?? 'fail';
15
+ const dryRun = input.dryRun ?? false;
16
+ const applied = [];
17
+ const conflicts = [];
18
+ for (const diff of diffs) {
19
+ // Parse diff to extract file path and changes
20
+ const lines = diff.split('\n');
21
+ let filePath = '';
22
+ let hunks = 0;
23
+ for (const line of lines) {
24
+ if (line.startsWith('+++')) {
25
+ // Extract file path (remove +++ prefix and any a/ or b/ prefix)
26
+ filePath = line.substring(4).trim().replace(/^[ab]\//, '');
27
+ }
28
+ else if (line.startsWith('@@')) {
29
+ hunks++;
30
+ }
31
+ }
32
+ if (!filePath) {
33
+ conflicts.push({
34
+ path: 'unknown',
35
+ context: 'Could not parse file path from diff',
36
+ });
37
+ continue;
38
+ }
39
+ // Apply changes (simplified - in production, use a proper diff parser)
40
+ if (!dryRun) {
41
+ try {
42
+ // For now, just track that we would apply
43
+ applied.push({ path: filePath, hunks });
44
+ }
45
+ catch (error) {
46
+ if (strategy === 'fail') {
47
+ throw error;
48
+ }
49
+ conflicts.push({
50
+ path: filePath,
51
+ context: error.message,
52
+ });
53
+ }
54
+ }
55
+ else {
56
+ applied.push({ path: filePath, hunks });
57
+ }
58
+ }
59
+ return {
60
+ applied,
61
+ conflicts,
62
+ preview: dryRun,
63
+ };
64
+ }
65
+ }
66
+ /**
67
+ * CodeEditToolV2 - Enhanced code editing with backup
68
+ */
69
+ export class CodeEditToolV2 extends Tool {
70
+ rootPath;
71
+ constructor(rootPath = process.cwd()) {
72
+ super();
73
+ this.rootPath = path.resolve(rootPath);
74
+ }
75
+ name() {
76
+ return 'code_edit_v2';
77
+ }
78
+ async call(input) {
79
+ const targetPath = this.resolvePath(input.path);
80
+ if (input.dryRun) {
81
+ return {
82
+ success: true,
83
+ path: targetPath,
84
+ message: `Dry run: would write ${input.content.length} bytes to ${targetPath}`,
85
+ };
86
+ }
87
+ // Create backup if requested
88
+ let backupPath;
89
+ if (input.backup) {
90
+ try {
91
+ const existing = await fs.readFile(targetPath, 'utf-8');
92
+ backupPath = `${targetPath}.backup`;
93
+ await fs.writeFile(backupPath, existing, 'utf-8');
94
+ }
95
+ catch {
96
+ // File might not exist yet
97
+ }
98
+ }
99
+ // Ensure directory exists
100
+ const dir = path.dirname(targetPath);
101
+ await fs.mkdir(dir, { recursive: true });
102
+ // Write file
103
+ await fs.writeFile(targetPath, input.content, 'utf-8');
104
+ return {
105
+ success: true,
106
+ path: targetPath,
107
+ message: `Successfully wrote ${input.content.length} bytes to ${targetPath}`,
108
+ backupPath,
109
+ };
110
+ }
111
+ resolvePath(filePath) {
112
+ return path.isAbsolute(filePath)
113
+ ? filePath
114
+ : path.resolve(this.rootPath, filePath);
115
+ }
116
+ }
117
+ //# sourceMappingURL=edit-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-tools.js","sourceRoot":"","sources":["../../../src/tools-v2/edit-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export * from './read-tools.js';
2
+ export * from './search-tools.js';
3
+ export * from './edit-tools.js';
4
+ export * from './test-tools.js';
5
+ export * from './workspace-context.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools-v2/index.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,7 @@
1
+ // Enhanced Code Tools - Main export
2
+ export * from './read-tools.js';
3
+ export * from './search-tools.js';
4
+ export * from './edit-tools.js';
5
+ export * from './test-tools.js';
6
+ export * from './workspace-context.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools-v2/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC"}