@codemieai/code 0.0.3 → 0.0.5

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 (257) hide show
  1. package/README.md +375 -325
  2. package/bin/codemie-claude.js +23 -0
  3. package/bin/codemie-code.js +49 -11
  4. package/bin/codemie-codex.js +12 -13
  5. package/dist/agents/adapters/claude-code.d.ts +5 -0
  6. package/dist/agents/adapters/claude-code.d.ts.map +1 -1
  7. package/dist/agents/adapters/claude-code.js +76 -18
  8. package/dist/agents/adapters/claude-code.js.map +1 -1
  9. package/dist/agents/adapters/codex.d.ts +5 -0
  10. package/dist/agents/adapters/codex.d.ts.map +1 -1
  11. package/dist/agents/adapters/codex.js +75 -17
  12. package/dist/agents/adapters/codex.js.map +1 -1
  13. package/dist/agents/codemie-code/agent.d.ts.map +1 -1
  14. package/dist/agents/codemie-code/agent.js +187 -21
  15. package/dist/agents/codemie-code/agent.js.map +1 -1
  16. package/dist/agents/codemie-code/config.d.ts.map +1 -1
  17. package/dist/agents/codemie-code/config.js +29 -27
  18. package/dist/agents/codemie-code/config.js.map +1 -1
  19. package/dist/agents/codemie-code/index.d.ts +16 -2
  20. package/dist/agents/codemie-code/index.d.ts.map +1 -1
  21. package/dist/agents/codemie-code/index.js +74 -6
  22. package/dist/agents/codemie-code/index.js.map +1 -1
  23. package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts +87 -0
  24. package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts.map +1 -0
  25. package/dist/agents/codemie-code/modes/contextAwarePlanning.js +957 -0
  26. package/dist/agents/codemie-code/modes/contextAwarePlanning.js.map +1 -0
  27. package/dist/agents/codemie-code/modes/planMode.d.ts +116 -0
  28. package/dist/agents/codemie-code/modes/planMode.d.ts.map +1 -0
  29. package/dist/agents/codemie-code/modes/planMode.js +537 -0
  30. package/dist/agents/codemie-code/modes/planMode.js.map +1 -0
  31. package/dist/agents/codemie-code/prompts.d.ts +29 -0
  32. package/dist/agents/codemie-code/prompts.d.ts.map +1 -1
  33. package/dist/agents/codemie-code/prompts.js +129 -0
  34. package/dist/agents/codemie-code/prompts.js.map +1 -1
  35. package/dist/agents/codemie-code/storage/todoStorage.d.ts +78 -0
  36. package/dist/agents/codemie-code/storage/todoStorage.d.ts.map +1 -0
  37. package/dist/agents/codemie-code/storage/todoStorage.js +225 -0
  38. package/dist/agents/codemie-code/storage/todoStorage.js.map +1 -0
  39. package/dist/agents/codemie-code/tokenUtils.js +1 -1
  40. package/dist/agents/codemie-code/tokenUtils.js.map +1 -1
  41. package/dist/agents/codemie-code/tools/index.d.ts +26 -0
  42. package/dist/agents/codemie-code/tools/index.d.ts.map +1 -1
  43. package/dist/agents/codemie-code/tools/index.js +182 -14
  44. package/dist/agents/codemie-code/tools/index.js.map +1 -1
  45. package/dist/agents/codemie-code/tools/planning.d.ts +53 -0
  46. package/dist/agents/codemie-code/tools/planning.d.ts.map +1 -0
  47. package/dist/agents/codemie-code/tools/planning.js +224 -0
  48. package/dist/agents/codemie-code/tools/planning.js.map +1 -0
  49. package/dist/agents/codemie-code/types.d.ts +170 -6
  50. package/dist/agents/codemie-code/types.d.ts.map +1 -1
  51. package/dist/agents/codemie-code/types.js.map +1 -1
  52. package/dist/agents/codemie-code/ui/progressTracker.d.ts +125 -0
  53. package/dist/agents/codemie-code/ui/progressTracker.d.ts.map +1 -0
  54. package/dist/agents/codemie-code/ui/progressTracker.js +343 -0
  55. package/dist/agents/codemie-code/ui/progressTracker.js.map +1 -0
  56. package/dist/agents/codemie-code/ui/todoPanel.d.ts +112 -0
  57. package/dist/agents/codemie-code/ui/todoPanel.d.ts.map +1 -0
  58. package/dist/agents/codemie-code/ui/todoPanel.js +318 -0
  59. package/dist/agents/codemie-code/ui/todoPanel.js.map +1 -0
  60. package/dist/agents/codemie-code/ui.d.ts +106 -10
  61. package/dist/agents/codemie-code/ui.d.ts.map +1 -1
  62. package/dist/agents/codemie-code/ui.js +913 -129
  63. package/dist/agents/codemie-code/ui.js.map +1 -1
  64. package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts +87 -0
  65. package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts.map +1 -0
  66. package/dist/agents/codemie-code/utils/progressionEnforcer.js +293 -0
  67. package/dist/agents/codemie-code/utils/progressionEnforcer.js.map +1 -0
  68. package/dist/agents/codemie-code/utils/todoParser.d.ts +41 -0
  69. package/dist/agents/codemie-code/utils/todoParser.d.ts.map +1 -0
  70. package/dist/agents/codemie-code/utils/todoParser.js +305 -0
  71. package/dist/agents/codemie-code/utils/todoParser.js.map +1 -0
  72. package/dist/agents/codemie-code/utils/todoValidator.d.ts +65 -0
  73. package/dist/agents/codemie-code/utils/todoValidator.d.ts.map +1 -0
  74. package/dist/agents/codemie-code/utils/todoValidator.js +249 -0
  75. package/dist/agents/codemie-code/utils/todoValidator.js.map +1 -0
  76. package/dist/agents/codemie-code/validators/planValidator.d.ts +94 -0
  77. package/dist/agents/codemie-code/validators/planValidator.d.ts.map +1 -0
  78. package/dist/agents/codemie-code/validators/planValidator.js +281 -0
  79. package/dist/agents/codemie-code/validators/planValidator.js.map +1 -0
  80. package/dist/agents/registry.d.ts.map +1 -1
  81. package/dist/agents/registry.js +7 -5
  82. package/dist/agents/registry.js.map +1 -1
  83. package/dist/cli/commands/auth.d.ts +3 -0
  84. package/dist/cli/commands/auth.d.ts.map +1 -0
  85. package/dist/cli/commands/auth.js +170 -0
  86. package/dist/cli/commands/auth.js.map +1 -0
  87. package/dist/cli/commands/config.d.ts.map +1 -1
  88. package/dist/cli/commands/config.js +40 -13
  89. package/dist/cli/commands/config.js.map +1 -1
  90. package/dist/cli/commands/doctor.d.ts.map +1 -1
  91. package/dist/cli/commands/doctor.js +209 -16
  92. package/dist/cli/commands/doctor.js.map +1 -1
  93. package/dist/cli/commands/env.js +3 -3
  94. package/dist/cli/commands/env.js.map +1 -1
  95. package/dist/cli/commands/install.d.ts.map +1 -1
  96. package/dist/cli/commands/install.js +2 -1
  97. package/dist/cli/commands/install.js.map +1 -1
  98. package/dist/cli/commands/run.d.ts.map +1 -1
  99. package/dist/cli/commands/run.js +15 -9
  100. package/dist/cli/commands/run.js.map +1 -1
  101. package/dist/cli/commands/setup.d.ts.map +1 -1
  102. package/dist/cli/commands/setup.js +177 -11
  103. package/dist/cli/commands/setup.js.map +1 -1
  104. package/dist/cli/commands/tools.d.ts +6 -0
  105. package/dist/cli/commands/tools.d.ts.map +1 -0
  106. package/dist/cli/commands/tools.js +244 -0
  107. package/dist/cli/commands/tools.js.map +1 -0
  108. package/dist/cli/commands/version.js +1 -1
  109. package/dist/cli/commands/version.js.map +1 -1
  110. package/dist/cli/commands/workflow.d.ts +6 -0
  111. package/dist/cli/commands/workflow.d.ts.map +1 -0
  112. package/dist/cli/commands/workflow.js +424 -0
  113. package/dist/cli/commands/workflow.js.map +1 -0
  114. package/dist/cli/index.js +39 -5
  115. package/dist/cli/index.js.map +1 -1
  116. package/dist/clients/adapters/github.d.ts +17 -0
  117. package/dist/clients/adapters/github.d.ts.map +1 -0
  118. package/dist/clients/adapters/github.js +150 -0
  119. package/dist/clients/adapters/github.js.map +1 -0
  120. package/dist/clients/adapters/gitlab.d.ts +17 -0
  121. package/dist/clients/adapters/gitlab.d.ts.map +1 -0
  122. package/dist/clients/adapters/gitlab.js +147 -0
  123. package/dist/clients/adapters/gitlab.js.map +1 -0
  124. package/dist/clients/registry.d.ts +20 -0
  125. package/dist/clients/registry.d.ts.map +1 -0
  126. package/dist/clients/registry.js +27 -0
  127. package/dist/clients/registry.js.map +1 -0
  128. package/dist/tools/detector.d.ts +33 -0
  129. package/dist/tools/detector.d.ts.map +1 -0
  130. package/dist/tools/detector.js +145 -0
  131. package/dist/tools/detector.js.map +1 -0
  132. package/dist/tools/index.d.ts +8 -0
  133. package/dist/tools/index.d.ts.map +1 -0
  134. package/dist/tools/index.js +8 -0
  135. package/dist/tools/index.js.map +1 -0
  136. package/dist/tools/manager.d.ts +21 -0
  137. package/dist/tools/manager.d.ts.map +1 -0
  138. package/dist/tools/manager.js +104 -0
  139. package/dist/tools/manager.js.map +1 -0
  140. package/dist/tools/registry.d.ts +8 -0
  141. package/dist/tools/registry.d.ts.map +1 -0
  142. package/dist/tools/registry.js +36 -0
  143. package/dist/tools/registry.js.map +1 -0
  144. package/dist/tools/types.d.ts +41 -0
  145. package/dist/tools/types.d.ts.map +1 -0
  146. package/dist/tools/types.js +5 -0
  147. package/dist/tools/types.js.map +1 -0
  148. package/dist/types/sso.d.ts +42 -0
  149. package/dist/types/sso.d.ts.map +1 -0
  150. package/dist/types/sso.js +2 -0
  151. package/dist/types/sso.js.map +1 -0
  152. package/dist/utils/agent-compatibility.d.ts +32 -0
  153. package/dist/utils/agent-compatibility.d.ts.map +1 -0
  154. package/dist/utils/agent-compatibility.js +140 -0
  155. package/dist/utils/agent-compatibility.js.map +1 -0
  156. package/dist/utils/codemie-integration-validator.d.ts +17 -0
  157. package/dist/utils/codemie-integration-validator.d.ts.map +1 -0
  158. package/dist/utils/codemie-integration-validator.js +105 -0
  159. package/dist/utils/codemie-integration-validator.js.map +1 -0
  160. package/dist/utils/codemie-model-fetcher.d.ts +11 -0
  161. package/dist/utils/codemie-model-fetcher.d.ts.map +1 -0
  162. package/dist/utils/codemie-model-fetcher.js +242 -0
  163. package/dist/utils/codemie-model-fetcher.js.map +1 -0
  164. package/dist/utils/config-loader.d.ts +23 -1
  165. package/dist/utils/config-loader.d.ts.map +1 -1
  166. package/dist/utils/config-loader.js +73 -27
  167. package/dist/utils/config-loader.js.map +1 -1
  168. package/dist/utils/credential-store.d.ts +16 -0
  169. package/dist/utils/credential-store.d.ts.map +1 -0
  170. package/dist/utils/credential-store.js +109 -0
  171. package/dist/utils/credential-store.js.map +1 -0
  172. package/dist/utils/first-time.d.ts +1 -1
  173. package/dist/utils/first-time.d.ts.map +1 -1
  174. package/dist/utils/first-time.js +52 -71
  175. package/dist/utils/first-time.js.map +1 -1
  176. package/dist/utils/health-checker.d.ts.map +1 -1
  177. package/dist/utils/health-checker.js +5 -1
  178. package/dist/utils/health-checker.js.map +1 -1
  179. package/dist/utils/model-fetcher.d.ts.map +1 -1
  180. package/dist/utils/model-fetcher.js +15 -2
  181. package/dist/utils/model-fetcher.js.map +1 -1
  182. package/dist/utils/sso-auth.d.ts +15 -0
  183. package/dist/utils/sso-auth.d.ts.map +1 -0
  184. package/dist/utils/sso-auth.js +207 -0
  185. package/dist/utils/sso-auth.js.map +1 -0
  186. package/dist/utils/sso-gateway.d.ts +47 -0
  187. package/dist/utils/sso-gateway.d.ts.map +1 -0
  188. package/dist/utils/sso-gateway.js +298 -0
  189. package/dist/utils/sso-gateway.js.map +1 -0
  190. package/dist/workflows/detector.d.ts +37 -0
  191. package/dist/workflows/detector.d.ts.map +1 -0
  192. package/dist/workflows/detector.js +160 -0
  193. package/dist/workflows/detector.js.map +1 -0
  194. package/dist/workflows/index.d.ts +8 -0
  195. package/dist/workflows/index.d.ts.map +1 -0
  196. package/dist/workflows/index.js +8 -0
  197. package/dist/workflows/index.js.map +1 -0
  198. package/dist/workflows/installer.d.ts +24 -0
  199. package/dist/workflows/installer.d.ts.map +1 -0
  200. package/dist/workflows/installer.js +105 -0
  201. package/dist/workflows/installer.js.map +1 -0
  202. package/dist/workflows/registry.d.ts +29 -0
  203. package/dist/workflows/registry.d.ts.map +1 -0
  204. package/dist/workflows/registry.js +54 -0
  205. package/dist/workflows/registry.js.map +1 -0
  206. package/dist/workflows/templates/github/metadata.d.ts +6 -0
  207. package/dist/workflows/templates/github/metadata.d.ts.map +1 -0
  208. package/dist/workflows/templates/github/metadata.js +111 -0
  209. package/dist/workflows/templates/github/metadata.js.map +1 -0
  210. package/dist/workflows/templates/gitlab/metadata.d.ts +6 -0
  211. package/dist/workflows/templates/gitlab/metadata.d.ts.map +1 -0
  212. package/dist/workflows/templates/gitlab/metadata.js +14 -0
  213. package/dist/workflows/templates/gitlab/metadata.js.map +1 -0
  214. package/dist/workflows/types.d.ts +71 -0
  215. package/dist/workflows/types.d.ts.map +1 -0
  216. package/dist/workflows/types.js +5 -0
  217. package/dist/workflows/types.js.map +1 -0
  218. package/package.json +19 -6
  219. package/src/workflows/templates/github/code-ci.yml +529 -0
  220. package/src/workflows/templates/github/inline-fix.yml +665 -0
  221. package/src/workflows/templates/github/pr-review.yml +677 -0
  222. package/.claude/agents/README.md +0 -298
  223. package/.claude/agents/release-manager.md +0 -857
  224. package/.codemie/guides/git-workflow.md +0 -493
  225. package/CLAUDE.md +0 -225
  226. package/config.example.json +0 -10
  227. package/dist/agents/codemie-code/streaming/events.d.ts +0 -7
  228. package/dist/agents/codemie-code/streaming/events.d.ts.map +0 -1
  229. package/dist/agents/codemie-code/streaming/events.js +0 -7
  230. package/dist/agents/codemie-code/streaming/events.js.map +0 -1
  231. package/dist/agents/codemie-code/streaming/formatter.d.ts +0 -2
  232. package/dist/agents/codemie-code/streaming/formatter.d.ts.map +0 -1
  233. package/dist/agents/codemie-code/streaming/formatter.js +0 -2
  234. package/dist/agents/codemie-code/streaming/formatter.js.map +0 -1
  235. package/dist/agents/codemie-code/streaming/ui.d.ts +0 -2
  236. package/dist/agents/codemie-code/streaming/ui.d.ts.map +0 -1
  237. package/dist/agents/codemie-code/streaming/ui.js +0 -2
  238. package/dist/agents/codemie-code/streaming/ui.js.map +0 -1
  239. package/dist/agents/codemie-code/tools/command.d.ts +0 -2
  240. package/dist/agents/codemie-code/tools/command.d.ts.map +0 -1
  241. package/dist/agents/codemie-code/tools/command.js +0 -2
  242. package/dist/agents/codemie-code/tools/command.js.map +0 -1
  243. package/dist/agents/codemie-code/tools/filesystem.d.ts +0 -2
  244. package/dist/agents/codemie-code/tools/filesystem.d.ts.map +0 -1
  245. package/dist/agents/codemie-code/tools/filesystem.js +0 -2
  246. package/dist/agents/codemie-code/tools/filesystem.js.map +0 -1
  247. package/dist/agents/codemie-code/tools/git.d.ts +0 -2
  248. package/dist/agents/codemie-code/tools/git.d.ts.map +0 -1
  249. package/dist/agents/codemie-code/tools/git.js +0 -2
  250. package/dist/agents/codemie-code/tools/git.js.map +0 -1
  251. package/dist/agents/codemie-code/tools/security.d.ts +0 -2
  252. package/dist/agents/codemie-code/tools/security.d.ts.map +0 -1
  253. package/dist/agents/codemie-code/tools/security.js +0 -2
  254. package/dist/agents/codemie-code/tools/security.js.map +0 -1
  255. package/eslint.config.mjs +0 -43
  256. package/scripts/README.md +0 -80
  257. package/scripts/release.sh +0 -156
@@ -33,13 +33,77 @@ class ReadFileTool extends StructuredTool {
33
33
  if (!resolvedPath.startsWith(this.workingDirectory)) {
34
34
  throw new Error('Access denied: Path is outside working directory');
35
35
  }
36
- const content = await fs.readFile(resolvedPath, 'utf-8');
37
- return `File: ${filePath}\n\n${content}`;
36
+ // Emit progress: starting file read
37
+ emitToolProgress(this.name, {
38
+ percentage: 10,
39
+ operation: `Reading ${path.basename(filePath)}...`,
40
+ details: `Opening file: ${filePath}`
41
+ });
42
+ // Check file stats for progress estimation
43
+ const stats = await fs.stat(resolvedPath);
44
+ const fileSize = stats.size;
45
+ // Emit progress: file opened
46
+ emitToolProgress(this.name, {
47
+ percentage: 30,
48
+ operation: `Reading ${path.basename(filePath)}...`,
49
+ details: `File size: ${this.formatFileSize(fileSize)}`
50
+ });
51
+ // For large files, simulate progress by reading in chunks
52
+ if (fileSize > 50000) { // 50KB threshold for showing progress
53
+ let content = '';
54
+ const chunkSize = 8192; // 8KB chunks
55
+ const totalChunks = Math.ceil(fileSize / chunkSize);
56
+ const fileHandle = await fs.open(resolvedPath, 'r');
57
+ const buffer = Buffer.alloc(chunkSize);
58
+ try {
59
+ for (let i = 0; i < totalChunks; i++) {
60
+ const { bytesRead } = await fileHandle.read(buffer, 0, chunkSize, i * chunkSize);
61
+ content += buffer.subarray(0, bytesRead).toString('utf-8');
62
+ const progress = Math.min(30 + Math.round((i + 1) / totalChunks * 60), 90);
63
+ emitToolProgress(this.name, {
64
+ percentage: progress,
65
+ operation: `Reading ${path.basename(filePath)}...`,
66
+ details: `${Math.round((i + 1) / totalChunks * 100)}% complete`
67
+ });
68
+ // Small delay for large files to show progress
69
+ if (i % 10 === 0) {
70
+ await new Promise(resolve => setTimeout(resolve, 1));
71
+ }
72
+ }
73
+ }
74
+ finally {
75
+ await fileHandle.close();
76
+ }
77
+ // Final progress
78
+ emitToolProgress(this.name, {
79
+ percentage: 100,
80
+ operation: `Completed reading ${path.basename(filePath)}`,
81
+ details: `Read ${this.formatFileSize(fileSize)}`
82
+ });
83
+ return `File: ${filePath}\n\n${content}`;
84
+ }
85
+ else {
86
+ // For small files, read normally but still show progress
87
+ const content = await fs.readFile(resolvedPath, 'utf-8');
88
+ emitToolProgress(this.name, {
89
+ percentage: 100,
90
+ operation: `Completed reading ${path.basename(filePath)}`,
91
+ details: `Read ${this.formatFileSize(fileSize)}`
92
+ });
93
+ return `File: ${filePath}\n\n${content}`;
94
+ }
38
95
  }
39
96
  catch (error) {
40
97
  return `Error reading file: ${error instanceof Error ? error.message : String(error)}`;
41
98
  }
42
99
  }
100
+ formatFileSize(bytes) {
101
+ if (bytes < 1024)
102
+ return `${bytes} B`;
103
+ if (bytes < 1024 * 1024)
104
+ return `${(bytes / 1024).toFixed(1)} KB`;
105
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
106
+ }
43
107
  }
44
108
  /**
45
109
  * Basic file write tool - writes content to a file
@@ -96,22 +160,83 @@ class ExecuteCommandTool extends StructuredTool {
96
160
  if (dangerousCommands.some(cmd => command.toLowerCase().includes(cmd))) {
97
161
  return `Error: Command rejected for security reasons: ${command}`;
98
162
  }
99
- const { stdout, stderr } = await execAsync(command, {
100
- cwd: this.workingDirectory,
101
- timeout: 30000, // 30 second timeout
102
- maxBuffer: 1024 * 1024 // 1MB output limit
163
+ // Emit progress: command starting
164
+ emitToolProgress(this.name, {
165
+ percentage: 10,
166
+ operation: `Executing command...`,
167
+ details: command.length > 50 ? `${command.substring(0, 47)}...` : command
103
168
  });
104
- let result = '';
105
- if (stdout)
106
- result += `STDOUT:\n${stdout}\n`;
107
- if (stderr)
108
- result += `STDERR:\n${stderr}\n`;
109
- return result || 'Command executed successfully (no output)';
169
+ // Start timer for progress estimation
170
+ const startTime = Date.now();
171
+ let progressInterval;
172
+ // For long-running commands, simulate progress
173
+ const estimatedTime = this.estimateCommandTime(command);
174
+ if (estimatedTime > 2000) { // Only show progress for commands estimated > 2s
175
+ progressInterval = setInterval(() => {
176
+ const elapsed = Date.now() - startTime;
177
+ const progress = Math.min(10 + Math.round((elapsed / estimatedTime) * 80), 90);
178
+ emitToolProgress(this.name, {
179
+ percentage: progress,
180
+ operation: `Executing command...`,
181
+ details: `Running for ${Math.round(elapsed / 1000)}s`,
182
+ estimatedTimeRemaining: Math.max(0, estimatedTime - elapsed)
183
+ });
184
+ }, 1000);
185
+ }
186
+ try {
187
+ const { stdout, stderr } = await execAsync(command, {
188
+ cwd: this.workingDirectory,
189
+ timeout: 30000, // 30 second timeout
190
+ maxBuffer: 1024 * 1024 // 1MB output limit
191
+ });
192
+ // Clear interval and emit completion
193
+ if (progressInterval) {
194
+ clearInterval(progressInterval);
195
+ }
196
+ const executionTime = Date.now() - startTime;
197
+ emitToolProgress(this.name, {
198
+ percentage: 100,
199
+ operation: `Command completed`,
200
+ details: `Finished in ${executionTime}ms`
201
+ });
202
+ let result = '';
203
+ if (stdout)
204
+ result += `STDOUT:\n${stdout}\n`;
205
+ if (stderr)
206
+ result += `STDERR:\n${stderr}\n`;
207
+ return result || 'Command executed successfully (no output)';
208
+ }
209
+ catch (error) {
210
+ if (progressInterval) {
211
+ clearInterval(progressInterval);
212
+ }
213
+ throw error;
214
+ }
110
215
  }
111
216
  catch (error) {
112
217
  return `Error executing command: ${error instanceof Error ? error.message : String(error)}`;
113
218
  }
114
219
  }
220
+ estimateCommandTime(command) {
221
+ // Simple heuristics for command execution time estimation
222
+ const lowerCommand = command.toLowerCase();
223
+ if (lowerCommand.includes('npm install') || lowerCommand.includes('yarn install')) {
224
+ return 15000; // 15s for package installs
225
+ }
226
+ if (lowerCommand.includes('npm run build') || lowerCommand.includes('yarn build')) {
227
+ return 10000; // 10s for builds
228
+ }
229
+ if (lowerCommand.includes('git clone') || lowerCommand.includes('git pull')) {
230
+ return 8000; // 8s for git operations
231
+ }
232
+ if (lowerCommand.includes('find') || lowerCommand.includes('grep -r')) {
233
+ return 5000; // 5s for search operations
234
+ }
235
+ if (lowerCommand.includes('tar') || lowerCommand.includes('zip') || lowerCommand.includes('unzip')) {
236
+ return 6000; // 6s for compression operations
237
+ }
238
+ return 2000; // Default 2s
239
+ }
115
240
  }
116
241
  /**
117
242
  * Directory listing tool - lists files and directories with intelligent filtering
@@ -200,6 +325,28 @@ class ListDirectoryTool extends StructuredTool {
200
325
  }
201
326
  }
202
327
  }
328
+ /**
329
+ * Global tool event emitter - set during chatStream
330
+ */
331
+ let globalToolEventCallback = null;
332
+ /**
333
+ * Set the global tool event callback for the current execution
334
+ */
335
+ export function setGlobalToolEventCallback(callback) {
336
+ globalToolEventCallback = callback;
337
+ }
338
+ /**
339
+ * Emit a tool progress event using the global callback
340
+ */
341
+ export function emitToolProgress(toolName, progress) {
342
+ if (globalToolEventCallback) {
343
+ globalToolEventCallback({
344
+ type: 'tool_call_progress',
345
+ toolName,
346
+ progress
347
+ });
348
+ }
349
+ }
203
350
  /**
204
351
  * Create system tools available to the CodeMie agent
205
352
  */
@@ -212,8 +359,24 @@ export async function createSystemTools(config) {
212
359
  tools.push(new ListDirectoryTool(config.workingDirectory, config.directoryFilters));
213
360
  // Command execution tool
214
361
  tools.push(new ExecuteCommandTool(config.workingDirectory));
362
+ // Planning and todo tools
363
+ try {
364
+ const { planningTools, initializeTodoStorage } = await import('./planning.js');
365
+ // Initialize todo storage for this working directory
366
+ initializeTodoStorage(config.workingDirectory, config.debug);
367
+ tools.push(...planningTools);
368
+ if (config.debug) {
369
+ console.log(`[DEBUG] Added ${planningTools.length} planning tools`);
370
+ console.log(`[DEBUG] Initialized todo storage for: ${config.workingDirectory}`);
371
+ }
372
+ }
373
+ catch (error) {
374
+ if (config.debug) {
375
+ console.warn('[DEBUG] Planning tools not available:', error);
376
+ }
377
+ }
215
378
  if (config.debug) {
216
- console.log(`[DEBUG] Created ${tools.length} system tools`);
379
+ console.log(`[DEBUG] Created ${tools.length} total system tools`);
217
380
  }
218
381
  return tools;
219
382
  }
@@ -233,7 +396,12 @@ export function getToolSummary() {
233
396
  { name: 'read_file', description: 'Read the contents of a file from the filesystem' },
234
397
  { name: 'write_file', description: 'Write content to a file in the filesystem' },
235
398
  { name: 'list_directory', description: 'List files and directories in a given path, automatically filtering out common ignore patterns (node_modules, .git, build artifacts, etc.)' },
236
- { name: 'execute_command', description: 'Execute a shell command in the working directory' }
399
+ { name: 'execute_command', description: 'Execute a shell command in the working directory' },
400
+ { name: 'write_todos', description: 'Create or update a structured todo list for planning and progress tracking' },
401
+ { name: 'update_todo_status', description: 'Update the status of a specific todo by index' },
402
+ { name: 'append_todo', description: 'Add a new todo item to the existing list' },
403
+ { name: 'clear_todos', description: 'Clear all todos from the list' },
404
+ { name: 'show_todos', description: 'Display the current todo list with progress information' }
237
405
  ];
238
406
  }
239
407
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/agents/codemie-code/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/agents/codemie-code/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEvH,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC;;GAEG;AACH,MAAM,YAAa,SAAQ,cAAc;IACvC,IAAI,GAAG,WAAW,CAAC;IACnB,WAAW,GAAG,iDAAiD,CAAC;IAEhE,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KAC1D,CAAC,CAAC;IAEK,gBAAgB,CAAS;IAEjC,YAAY,gBAAwB;QAClC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAA+B;QACnD,IAAI,CAAC;YACH,6CAA6C;YAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAEnE,qEAAqE;YACrE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACtE,CAAC;YAED,oCAAoC;YACpC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE;gBAC1B,UAAU,EAAE,EAAE;gBACd,SAAS,EAAE,WAAW,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK;gBAClD,OAAO,EAAE,iBAAiB,QAAQ,EAAE;aACrC,CAAC,CAAC;YAEH,2CAA2C;YAC3C,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;YAE5B,6BAA6B;YAC7B,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE;gBAC1B,UAAU,EAAE,EAAE;gBACd,SAAS,EAAE,WAAW,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK;gBAClD,OAAO,EAAE,cAAc,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;aACvD,CAAC,CAAC;YAEH,0DAA0D;YAC1D,IAAI,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,sCAAsC;gBAC5D,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,aAAa;gBACrC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;gBAEpD,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;gBACpD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAEvC,IAAI,CAAC;oBACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;wBACrC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;wBACjF,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;wBAE3D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;wBAC3E,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE;4BAC1B,UAAU,EAAE,QAAQ;4BACpB,SAAS,EAAE,WAAW,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK;4BAClD,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,GAAG,GAAG,CAAC,YAAY;yBAChE,CAAC,CAAC;wBAEH,+CAA+C;wBAC/C,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;4BACjB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;wBACvD,CAAC;oBACH,CAAC;gBACH,CAAC;wBAAS,CAAC;oBACT,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;gBAC3B,CAAC;gBAED,iBAAiB;gBACjB,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE;oBACxB,UAAU,EAAE,GAAG;oBACf,SAAS,EAAE,qBAAqB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;oBACzD,OAAO,EAAE,QAAQ,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;iBACjD,CAAC,CAAC;gBAEL,OAAO,SAAS,QAAQ,OAAO,OAAO,EAAE,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,yDAAyD;gBACzD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBAEzD,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE;oBACxB,UAAU,EAAE,GAAG;oBACf,SAAS,EAAE,qBAAqB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;oBACzD,OAAO,EAAE,QAAQ,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;iBACjD,CAAC,CAAC;gBAEL,OAAO,SAAS,QAAQ,OAAO,OAAO,EAAE,CAAC;YAC3C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,uBAAuB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACzF,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,KAAa;QAClC,IAAI,KAAK,GAAG,IAAI;YAAE,OAAO,GAAG,KAAK,IAAI,CAAC;QACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;YAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QAClE,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,aAAc,SAAQ,cAAc;IACxC,IAAI,GAAG,YAAY,CAAC;IACpB,WAAW,GAAG,2CAA2C,CAAC;IAE1D,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAC1D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;KAC7D,CAAC,CAAC;IAEK,gBAAgB,CAAS;IAEjC,YAAY,gBAAwB;QAClC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,OAAO,EAA+B;QAC5D,IAAI,CAAC;YACH,6CAA6C;YAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAEnE,qEAAqE;YACrE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACtE,CAAC;YAED,0BAA0B;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACvC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEzC,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YACnD,OAAO,sBAAsB,OAAO,CAAC,MAAM,kBAAkB,QAAQ,EAAE,CAAC;QAC1E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,uBAAuB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACzF,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,kBAAmB,SAAQ,cAAc;IAC7C,IAAI,GAAG,iBAAiB,CAAC;IACzB,WAAW,GAAG,kDAAkD,CAAC;IAEjE,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KACzD,CAAC,CAAC;IAEK,gBAAgB,CAAS;IAEjC,YAAY,gBAAwB;QAClC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,EAA+B;QAClD,IAAI,CAAC;YACH,wBAAwB;YACxB,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YACzE,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACvE,OAAO,iDAAiD,OAAO,EAAE,CAAC;YACpE,CAAC;YAED,kCAAkC;YAClC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE;gBACxB,UAAU,EAAE,EAAE;gBACd,SAAS,EAAE,sBAAsB;gBACjC,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;aAC1E,CAAC,CAAC;YAEL,sCAAsC;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,IAAI,gBAA4C,CAAC;YAEjD,+CAA+C;YAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACxD,IAAI,aAAa,GAAG,IAAI,EAAE,CAAC,CAAC,iDAAiD;gBAC3E,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE;oBAClC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;oBACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBAE/E,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE;wBAC1B,UAAU,EAAE,QAAQ;wBACpB,SAAS,EAAE,sBAAsB;wBACjC,OAAO,EAAE,eAAe,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;wBACrD,sBAAsB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;qBAC7D,CAAC,CAAC;gBACL,CAAC,EAAE,IAAI,CAAC,CAAC;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE;oBAClD,GAAG,EAAE,IAAI,CAAC,gBAAgB;oBAC1B,OAAO,EAAE,KAAK,EAAE,oBAAoB;oBACpC,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC,mBAAmB;iBAC3C,CAAC,CAAC;gBAEH,qCAAqC;gBACrC,IAAI,gBAAgB,EAAE,CAAC;oBACrB,aAAa,CAAC,gBAAgB,CAAC,CAAC;gBAClC,CAAC;gBAED,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBAC7C,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE;oBACxB,UAAU,EAAE,GAAG;oBACf,SAAS,EAAE,mBAAmB;oBAC9B,OAAO,EAAE,eAAe,aAAa,IAAI;iBAC1C,CAAC,CAAC;gBAEL,IAAI,MAAM,GAAG,EAAE,CAAC;gBAChB,IAAI,MAAM;oBAAE,MAAM,IAAI,YAAY,MAAM,IAAI,CAAC;gBAC7C,IAAI,MAAM;oBAAE,MAAM,IAAI,YAAY,MAAM,IAAI,CAAC;gBAE7C,OAAO,MAAM,IAAI,2CAA2C,CAAC;YAC/D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,gBAAgB,EAAE,CAAC;oBACrB,aAAa,CAAC,gBAAgB,CAAC,CAAC;gBAClC,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9F,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,OAAe;QACzC,0DAA0D;QAC1D,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAE3C,IAAI,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAClF,OAAO,KAAK,CAAC,CAAC,2BAA2B;QAC3C,CAAC;QACD,IAAI,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAClF,OAAO,KAAK,CAAC,CAAC,iBAAiB;QACjC,CAAC;QACD,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5E,OAAO,IAAI,CAAC,CAAC,wBAAwB;QACvC,CAAC;QACD,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACtE,OAAO,IAAI,CAAC,CAAC,2BAA2B;QAC1C,CAAC;QACD,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACnG,OAAO,IAAI,CAAC,CAAC,gCAAgC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC,CAAC,aAAa;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,iBAAkB,SAAQ,cAAc;IAC5C,IAAI,GAAG,gBAAgB,CAAC;IACxB,WAAW,GAAG,4IAA4I,CAAC;IAE3J,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAChB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;QACvG,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;QAC5G,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;KACxG,CAAC,CAAC;IAEK,gBAAgB,CAAS;IACzB,YAAY,CAAM;IAE1B,YAAY,gBAAwB,EAAE,YAAkB;QACtD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,qBAAqB,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,OAAO,GAAG,KAAK,EAAE,aAAa,GAAG,KAAK,EAA+B;QAChG,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,aAAa;gBAC9B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC;gBACpD,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAE1B,iBAAiB;YACjB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACtE,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAEtE,sCAAsC;YACtC,IAAI,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC3C,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE;aACjC,CAAC,CAAC,CAAC;YAEJ,uCAAuC;YACvC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACnF,CAAC;YAED,sCAAsC;YACtC,MAAM,eAAe,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC;YAE9C,iCAAiC;YACjC,IAAI,eAAe,GAAG,gBAAgB,CAAC;YACvC,IAAI,WAAW,CAAC;YAEhB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,YAAY,GAAG,kBAAkB,CAAC;oBACtC,GAAG,IAAI,CAAC,YAAY;oBACpB,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;gBAEH,eAAe,GAAG,sBAAsB,CAAC,gBAAgB,EAAE,YAAY,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC;gBAC9F,WAAW,GAAG,mBAAmB,CAAC,eAAe,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;YACpF,CAAC;YAED,sCAAsC;YACtC,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAa,EAAE,CAAC;YAEjC,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;gBACpC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;oBACtB,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;YAED,sBAAsB;YACtB,IAAI,MAAM,GAAG,cAAc,aAAa,IAAI,GAAG,MAAM,CAAC;YAEtD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,gBAAgB,CAAC;gBAC3B,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;YACnE,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,UAAU,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,CAAC;YAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnD,MAAM,IAAI,oBAAoB,CAAC;YACjC,CAAC;YAED,iDAAiD;YACjD,IAAI,CAAC,OAAO,IAAI,WAAW,IAAI,WAAW,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;gBAC9D,MAAM,IAAI,wBAAwB,WAAW,CAAC,cAAc,YAAY,CAAC;gBACzE,MAAM,IAAI,aAAa,WAAW,CAAC,eAAe,OAAO,WAAW,CAAC,YAAY,cAAc,CAAC;gBAChG,MAAM,IAAI,sCAAsC,CAAC;YACnD,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9F,CAAC;IACH,CAAC;CACF;AAgBD;;GAEG;AACH,IAAI,uBAAuB,GAA6B,IAAI,CAAC;AAE7D;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,QAAkC;IAC3E,uBAAuB,GAAG,QAAQ,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,QAKlD;IACC,IAAI,uBAAuB,EAAE,CAAC;QAC5B,uBAAuB,CAAC;YACtB,IAAI,EAAE,oBAAoB;YAC1B,QAAQ;YACR,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAqB;IAC3D,MAAM,KAAK,GAAqB,EAAE,CAAC;IAEnC,IAAI,CAAC;QACH,0BAA0B;QAC1B,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAEpF,yBAAyB;QACzB,KAAK,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAE5D,0BAA0B;QAC1B,IAAI,CAAC;YACH,MAAM,EAAE,aAAa,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YAE/E,qDAAqD;YACrD,qBAAqB,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAE7D,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;YAE7B,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,iBAAiB,aAAa,CAAC,MAAM,iBAAiB,CAAC,CAAC;gBACpE,OAAO,CAAC,GAAG,CAAC,yCAAyC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,CAAC,MAAM,qBAAqB,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;QAC/D,CAAC;QAED,yDAAyD;QACzD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO;QACL,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,iDAAiD,EAAE;QACrF,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,2CAA2C,EAAE;QAChF,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,4IAA4I,EAAE;QACrL,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,kDAAkD,EAAE;QAC5F,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,4EAA4E,EAAE;QAClH,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,+CAA+C,EAAE;QAC5F,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,0CAA0C,EAAE;QAChF,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,+BAA+B,EAAE;QACrE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,yDAAyD,EAAE;KAC/F,CAAC;AACJ,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Planning Tools for CodeMie Agent
3
+ *
4
+ * Implementation of todo management tools with persistent file storage
5
+ */
6
+ import { StructuredTool } from '@langchain/core/tools';
7
+ import { z } from 'zod';
8
+ import type { Todo, TodoUpdateEvent } from '../types.js';
9
+ /**
10
+ * Initialize todo storage for the current working directory
11
+ */
12
+ export declare function initializeTodoStorage(workingDirectory: string, debug?: boolean): void;
13
+ /**
14
+ * Simple Write Todos Tool
15
+ */
16
+ declare class WriteSimpleTodosTool extends StructuredTool {
17
+ name: string;
18
+ description: string;
19
+ schema: z.ZodObject<{
20
+ todos: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
21
+ content: z.ZodString;
22
+ status: z.ZodOptional<z.ZodEnum<{
23
+ in_progress: "in_progress";
24
+ completed: "completed";
25
+ pending: "pending";
26
+ }>>;
27
+ }, z.core.$strip>>]>;
28
+ }, z.core.$strip>;
29
+ _call(input: {
30
+ todos: any;
31
+ }): Promise<string>;
32
+ }
33
+ /**
34
+ * Show Todos Tool with Storage Information
35
+ */
36
+ declare class ShowSimpleTodosTool extends StructuredTool {
37
+ name: string;
38
+ description: string;
39
+ schema: z.ZodObject<{}, z.core.$strip>;
40
+ _call(): Promise<string>;
41
+ }
42
+ export declare const planningTools: (WriteSimpleTodosTool | ShowSimpleTodosTool)[];
43
+ export declare const writeTodos: WriteSimpleTodosTool;
44
+ export declare const showTodos: ShowSimpleTodosTool;
45
+ export declare class TodoStateManager {
46
+ static addEventCallback(callback: (event: TodoUpdateEvent) => void): void;
47
+ static removeEventCallback(callback: (event: TodoUpdateEvent) => void): void;
48
+ static getCurrentTodos(): Todo[];
49
+ static clearTodos(): Promise<void>;
50
+ static getStorageInfo(): any;
51
+ }
52
+ export {};
53
+ //# sourceMappingURL=planning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning.d.ts","sourceRoot":"","sources":["../../../../src/agents/codemie-code/tools/planning.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAQzD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,IAAI,CAmCnF;AAED;;GAEG;AACH,cAAM,oBAAqB,SAAQ,cAAc;IAC/C,IAAI,SAAiB;IACrB,WAAW,SAAgF;IAE3F,MAAM;;;;;;;;;sBASH;IAEG,KAAK,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAwEpD;AAED;;GAEG;AACH,cAAM,mBAAoB,SAAQ,cAAc;IAC9C,IAAI,SAAgB;IACpB,WAAW,SAAiF;IAE5F,MAAM,iCAAgB;IAEhB,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;CA0C/B;AAGD,eAAO,MAAM,aAAa,gDAGzB,CAAC;AAGF,eAAO,MAAM,UAAU,sBAA6B,CAAC;AACrD,eAAO,MAAM,SAAS,qBAA4B,CAAC;AAGnD,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,IAAI;IAIzE,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,IAAI;IAO5E,MAAM,CAAC,eAAe,IAAI,IAAI,EAAE;WAInB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BxC,MAAM,CAAC,cAAc,IAAI,GAAG;CAG7B"}
@@ -0,0 +1,224 @@
1
+ /**
2
+ * Planning Tools for CodeMie Agent
3
+ *
4
+ * Implementation of todo management tools with persistent file storage
5
+ */
6
+ import { StructuredTool } from '@langchain/core/tools';
7
+ import { z } from 'zod';
8
+ import { TodoFileStorage } from '../storage/todoStorage.js';
9
+ // Global todo state and storage for integration with plan mode
10
+ let globalTodos = [];
11
+ let eventCallbacks = [];
12
+ let todoStorage = null;
13
+ /**
14
+ * Initialize todo storage for the current working directory
15
+ */
16
+ export function initializeTodoStorage(workingDirectory, debug = false) {
17
+ todoStorage = new TodoFileStorage({
18
+ workingDirectory,
19
+ enableGlobalBackup: true,
20
+ debug
21
+ });
22
+ // Load existing todos on initialization
23
+ todoStorage.loadTodos().then(todos => {
24
+ globalTodos = todos;
25
+ if (debug && todos.length > 0) {
26
+ console.log(`[TodoStorage] Loaded ${todos.length} existing todos`);
27
+ }
28
+ // Emit loaded todos event
29
+ if (todos.length > 0) {
30
+ const todoEvent = {
31
+ type: 'todo_update',
32
+ todos: todos,
33
+ changeType: 'update',
34
+ timestamp: new Date()
35
+ };
36
+ eventCallbacks.forEach(callback => {
37
+ try {
38
+ callback(todoEvent);
39
+ }
40
+ catch (error) {
41
+ console.warn('[TodoStorage] Event callback error:', error);
42
+ }
43
+ });
44
+ }
45
+ }).catch(error => {
46
+ console.warn('[TodoStorage] Failed to load initial todos:', error);
47
+ });
48
+ }
49
+ /**
50
+ * Simple Write Todos Tool
51
+ */
52
+ class WriteSimpleTodosTool extends StructuredTool {
53
+ name = 'write_todos';
54
+ description = 'Create or update a structured todo list for planning and progress tracking';
55
+ schema = z.object({
56
+ todos: z.union([
57
+ z.string(),
58
+ z.array(z.string()),
59
+ z.array(z.object({
60
+ content: z.string(),
61
+ status: z.enum(['pending', 'in_progress', 'completed']).optional()
62
+ }))
63
+ ]).describe('The todo list in various supported formats')
64
+ });
65
+ async _call(input) {
66
+ try {
67
+ // Simple parsing - convert any format to string array
68
+ let todoItems = [];
69
+ if (typeof input.todos === 'string') {
70
+ // Handle string format
71
+ todoItems = input.todos.split('\n')
72
+ .filter(line => line.trim())
73
+ .map(line => line.replace(/^[-*•]\s*/, '').trim())
74
+ .filter(item => item);
75
+ }
76
+ else if (Array.isArray(input.todos)) {
77
+ todoItems = input.todos.map(item => typeof item === 'string' ? item : item.content || String(item));
78
+ }
79
+ if (todoItems.length === 0) {
80
+ return 'āŒ No valid todos found in input';
81
+ }
82
+ // Create proper Todo objects
83
+ const todos = todoItems.map((content, index) => ({
84
+ content: content.trim(),
85
+ status: 'pending',
86
+ index,
87
+ timestamp: new Date()
88
+ }));
89
+ // Store in global state
90
+ globalTodos = todos;
91
+ // Save to file storage
92
+ if (todoStorage) {
93
+ try {
94
+ await todoStorage.saveTodos(todos);
95
+ }
96
+ catch (error) {
97
+ console.warn('[write_todos] Failed to save to file:', error);
98
+ // Continue execution - file save failure shouldn't break todo creation
99
+ }
100
+ }
101
+ // Emit todo_update event for plan mode integration
102
+ const todoEvent = {
103
+ type: 'todo_update',
104
+ todos: todos,
105
+ changeType: 'create',
106
+ timestamp: new Date()
107
+ };
108
+ // Notify all callbacks (plan mode, UI, etc.)
109
+ eventCallbacks.forEach(callback => {
110
+ try {
111
+ callback(todoEvent);
112
+ }
113
+ catch (error) {
114
+ console.warn('[write_todos] Event callback error:', error);
115
+ }
116
+ });
117
+ // Format response
118
+ const response = `āœ… **Todo List Created** (${todoItems.length} items)\n\n` +
119
+ todoItems.map((item, i) => `${i + 1}. ${item}`).join('\n') +
120
+ '\n\nšŸŽÆ **Status**: Ready for execution\n' +
121
+ 'šŸ’” **Tip**: Use Ctrl+T to view todos during execution';
122
+ return response;
123
+ }
124
+ catch (error) {
125
+ const errorMessage = error instanceof Error ? error.message : String(error);
126
+ return `āŒ Error creating todos: ${errorMessage}`;
127
+ }
128
+ }
129
+ }
130
+ /**
131
+ * Show Todos Tool with Storage Information
132
+ */
133
+ class ShowSimpleTodosTool extends StructuredTool {
134
+ name = 'show_todos';
135
+ description = 'Display the current todo list with progress information and storage details';
136
+ schema = z.object({});
137
+ async _call() {
138
+ const todos = globalTodos;
139
+ if (todos.length === 0) {
140
+ return `šŸ“‹ **Current Todo List**\n\n` +
141
+ `No todos currently active.\n` +
142
+ `Use the write_todos tool to create a structured plan.\n\n` +
143
+ `šŸ’” **Tip**: Start with write_todos to create your task list`;
144
+ }
145
+ const completed = todos.filter(t => t.status === 'completed').length;
146
+ const inProgress = todos.filter(t => t.status === 'in_progress').length;
147
+ const pending = todos.filter(t => t.status === 'pending').length;
148
+ const statusIcon = (status) => {
149
+ switch (status) {
150
+ case 'completed': return 'āœ…';
151
+ case 'in_progress': return 'šŸ”„';
152
+ case 'pending': return 'ā³';
153
+ default: return 'ā—‹';
154
+ }
155
+ };
156
+ let result = `šŸ“‹ **Current Todo List** (${todos.length} items)\n\n`;
157
+ todos.forEach((todo, i) => {
158
+ result += `${statusIcon(todo.status)} ${i + 1}. ${todo.content}\n`;
159
+ });
160
+ result += `\n**Progress**: ${completed} completed, ${inProgress} in progress, ${pending} pending`;
161
+ // Add storage information
162
+ const storageInfo = TodoStateManager.getStorageInfo();
163
+ if (storageInfo) {
164
+ result += `\n\nšŸ“ **Storage**: Project todos saved to .codemie/todos.json`;
165
+ result += `\nšŸ”„ **Backup**: Global backup at ~/.codemie/todos/${storageInfo.projectHash}.json`;
166
+ }
167
+ result += `\nšŸ’” **Tip**: Use Ctrl+T to view todos in interactive mode`;
168
+ return result;
169
+ }
170
+ }
171
+ // Export the tools
172
+ export const planningTools = [
173
+ new WriteSimpleTodosTool(),
174
+ new ShowSimpleTodosTool()
175
+ ];
176
+ // Also export individual tools for compatibility
177
+ export const writeTodos = new WriteSimpleTodosTool();
178
+ export const showTodos = new ShowSimpleTodosTool();
179
+ // Todo state manager for plan mode integration
180
+ export class TodoStateManager {
181
+ static addEventCallback(callback) {
182
+ eventCallbacks.push(callback);
183
+ }
184
+ static removeEventCallback(callback) {
185
+ const index = eventCallbacks.indexOf(callback);
186
+ if (index > -1) {
187
+ eventCallbacks.splice(index, 1);
188
+ }
189
+ }
190
+ static getCurrentTodos() {
191
+ return [...globalTodos];
192
+ }
193
+ static async clearTodos() {
194
+ globalTodos = [];
195
+ // Clear file storage
196
+ if (todoStorage) {
197
+ try {
198
+ await todoStorage.clearTodos();
199
+ }
200
+ catch (error) {
201
+ console.warn('[TodoStateManager] Failed to clear file storage:', error);
202
+ }
203
+ }
204
+ // Emit clear event
205
+ const todoEvent = {
206
+ type: 'todo_update',
207
+ todos: [],
208
+ changeType: 'delete',
209
+ timestamp: new Date()
210
+ };
211
+ eventCallbacks.forEach(callback => {
212
+ try {
213
+ callback(todoEvent);
214
+ }
215
+ catch (error) {
216
+ console.warn('[TodoStateManager] Event callback error:', error);
217
+ }
218
+ });
219
+ }
220
+ static getStorageInfo() {
221
+ return todoStorage?.getStorageInfo() || null;
222
+ }
223
+ }
224
+ //# sourceMappingURL=planning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning.js","sourceRoot":"","sources":["../../../../src/agents/codemie-code/tools/planning.ts"],"names":[],"mappings":"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"}