centaurus-cli 3.0.1 → 3.1.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 (552) hide show
  1. package/dist/ai/types.js +0 -1
  2. package/dist/ai/types.js.map +1 -1
  3. package/dist/cli-adapter.js +5047 -5158
  4. package/dist/cli-adapter.js.map +1 -1
  5. package/dist/commands/CommandParser.js +372 -315
  6. package/dist/commands/CommandParser.js.map +1 -1
  7. package/dist/config/build-config.js +11 -42
  8. package/dist/config/build-config.js.map +1 -1
  9. package/dist/config/defaultConfig.js +94 -82
  10. package/dist/config/defaultConfig.js.map +1 -1
  11. package/dist/config/manager.js +144 -160
  12. package/dist/config/manager.js.map +1 -1
  13. package/dist/config/mcp-config-manager.js +411 -364
  14. package/dist/config/mcp-config-manager.js.map +1 -1
  15. package/dist/config/models.js +118 -185
  16. package/dist/config/models.js.map +1 -1
  17. package/dist/config/slash-commands.js +186 -184
  18. package/dist/config/slash-commands.js.map +1 -1
  19. package/dist/config/types.js +33 -26
  20. package/dist/config/types.js.map +1 -1
  21. package/dist/context/command-detector.js +63 -67
  22. package/dist/context/command-detector.js.map +1 -1
  23. package/dist/context/context-manager.js +533 -518
  24. package/dist/context/context-manager.js.map +1 -1
  25. package/dist/context/handlers/docker-handler.js +518 -576
  26. package/dist/context/handlers/docker-handler.js.map +1 -1
  27. package/dist/context/handlers/ssh-handler.js +1050 -1109
  28. package/dist/context/handlers/ssh-handler.js.map +1 -1
  29. package/dist/context/handlers/wsl-handler.js +558 -630
  30. package/dist/context/handlers/wsl-handler.js.map +1 -1
  31. package/dist/context/index.js +42 -6
  32. package/dist/context/index.js.map +1 -1
  33. package/dist/context/subshell-handler.js +0 -4
  34. package/dist/context/subshell-handler.js.map +1 -1
  35. package/dist/context/types.js +20 -31
  36. package/dist/context/types.js.map +1 -1
  37. package/dist/hooks/useConnectivity.js +13 -10
  38. package/dist/hooks/useConnectivity.js.map +1 -1
  39. package/dist/hooks/useTerminalDimensions.js +67 -79
  40. package/dist/hooks/useTerminalDimensions.js.map +1 -1
  41. package/dist/index.js +228 -251
  42. package/dist/index.js.map +1 -1
  43. package/dist/mcp/mcp-command-handler.js +297 -260
  44. package/dist/mcp/mcp-command-handler.js.map +1 -1
  45. package/dist/mcp/mcp-server-manager.js +139 -155
  46. package/dist/mcp/mcp-server-manager.js.map +1 -1
  47. package/dist/mcp/mcp-tool-wrapper.js +74 -94
  48. package/dist/mcp/mcp-tool-wrapper.js.map +1 -1
  49. package/dist/services/ai-autocomplete-agent.js +169 -181
  50. package/dist/services/ai-autocomplete-agent.js.map +1 -1
  51. package/dist/services/ai-context-injector.js +180 -93
  52. package/dist/services/ai-context-injector.js.map +1 -1
  53. package/dist/services/ai-service-client.js +513 -456
  54. package/dist/services/ai-service-client.js.map +1 -1
  55. package/dist/services/api-client.js +443 -441
  56. package/dist/services/api-client.js.map +1 -1
  57. package/dist/services/auth-handler.js +162 -198
  58. package/dist/services/auth-handler.js.map +1 -1
  59. package/dist/services/background-task-manager.js +258 -282
  60. package/dist/services/background-task-manager.js.map +1 -1
  61. package/dist/services/checkpoint-manager.js +1526 -1512
  62. package/dist/services/checkpoint-manager.js.map +1 -1
  63. package/dist/services/clipboard-service.js +151 -200
  64. package/dist/services/clipboard-service.js.map +1 -1
  65. package/dist/services/connectivity-manager.js +63 -65
  66. package/dist/services/connectivity-manager.js.map +1 -1
  67. package/dist/services/conversation-manager.js +118 -121
  68. package/dist/services/conversation-manager.js.map +1 -1
  69. package/dist/services/environment-context-injector.js +160 -187
  70. package/dist/services/environment-context-injector.js.map +1 -1
  71. package/dist/services/fast-context-agent.js +203 -243
  72. package/dist/services/fast-context-agent.js.map +1 -1
  73. package/dist/services/input-detection-agent.js +190 -202
  74. package/dist/services/input-detection-agent.js.map +1 -1
  75. package/dist/services/input-requirement-detector.js +155 -189
  76. package/dist/services/input-requirement-detector.js.map +1 -1
  77. package/dist/services/local-chat-storage.js +342 -365
  78. package/dist/services/local-chat-storage.js.map +1 -1
  79. package/dist/services/monitored-shell-manager.js +225 -233
  80. package/dist/services/monitored-shell-manager.js.map +1 -1
  81. package/dist/services/ollama-service.js +293 -310
  82. package/dist/services/ollama-service.js.map +1 -1
  83. package/dist/services/rules-storage.js +142 -0
  84. package/dist/services/rules-storage.js.map +1 -0
  85. package/dist/services/session-quota-manager.js +219 -235
  86. package/dist/services/session-quota-manager.js.map +1 -1
  87. package/dist/services/shell-input-agent.js +299 -334
  88. package/dist/services/shell-input-agent.js.map +1 -1
  89. package/dist/services/sub-agent-manager.js +459 -501
  90. package/dist/services/sub-agent-manager.js.map +1 -1
  91. package/dist/services/warpify-detector.js +133 -183
  92. package/dist/services/warpify-detector.js.map +1 -1
  93. package/dist/services/workflow-storage.js +202 -217
  94. package/dist/services/workflow-storage.js.map +1 -1
  95. package/dist/test-ssh-handler.js +148 -193
  96. package/dist/test-ssh-handler.js.map +1 -1
  97. package/dist/tools/add-mcp.js +161 -0
  98. package/dist/tools/add-mcp.js.map +1 -0
  99. package/dist/tools/background-command.js +240 -273
  100. package/dist/tools/background-command.js.map +1 -1
  101. package/dist/tools/command.js +447 -440
  102. package/dist/tools/command.js.map +1 -1
  103. package/dist/tools/create-image.js +172 -202
  104. package/dist/tools/create-image.js.map +1 -1
  105. package/dist/tools/enter-remote-session.js +169 -215
  106. package/dist/tools/enter-remote-session.js.map +1 -1
  107. package/dist/tools/fast-context.js +60 -67
  108. package/dist/tools/fast-context.js.map +1 -1
  109. package/dist/tools/file-ops.js +601 -572
  110. package/dist/tools/file-ops.js.map +1 -1
  111. package/dist/tools/find-files.js +262 -303
  112. package/dist/tools/find-files.js.map +1 -1
  113. package/dist/tools/get-diff.js +423 -406
  114. package/dist/tools/get-diff.js.map +1 -1
  115. package/dist/tools/grep-search.js +966 -948
  116. package/dist/tools/grep-search.js.map +1 -1
  117. package/dist/tools/inspect-symbol.js +308 -323
  118. package/dist/tools/inspect-symbol.js.map +1 -1
  119. package/dist/tools/plan-mode.js +459 -503
  120. package/dist/tools/plan-mode.js.map +1 -1
  121. package/dist/tools/read-binary-file.js +160 -190
  122. package/dist/tools/read-binary-file.js.map +1 -1
  123. package/dist/tools/registry.js +100 -84
  124. package/dist/tools/registry.js.map +1 -1
  125. package/dist/tools/reproduce_issue.js +170 -151
  126. package/dist/tools/reproduce_issue.js.map +1 -1
  127. package/dist/tools/sub-agent.js +223 -228
  128. package/dist/tools/sub-agent.js.map +1 -1
  129. package/dist/tools/task-complete.js +28 -27
  130. package/dist/tools/task-complete.js.map +1 -1
  131. package/dist/tools/types.js +0 -1
  132. package/dist/tools/types.js.map +1 -1
  133. package/dist/tools/validation.js +96 -118
  134. package/dist/tools/validation.js.map +1 -1
  135. package/dist/tools/web-search.js +194 -194
  136. package/dist/tools/web-search.js.map +1 -1
  137. package/dist/tools/workflow-tool.js +77 -82
  138. package/dist/tools/workflow-tool.js.map +1 -1
  139. package/dist/types/index.js +0 -1
  140. package/dist/types/index.js.map +1 -1
  141. package/dist/types/rule.js +1 -0
  142. package/dist/types/rule.js.map +1 -0
  143. package/dist/types/workflow.js +0 -7
  144. package/dist/types/workflow.js.map +1 -1
  145. package/dist/ui/components/AgentTimer.js +24 -25
  146. package/dist/ui/components/AgentTimer.js.map +1 -1
  147. package/dist/ui/components/App.js +3266 -3263
  148. package/dist/ui/components/App.js.map +1 -1
  149. package/dist/ui/components/AuthScreen.js +22 -34
  150. package/dist/ui/components/AuthScreen.js.map +1 -1
  151. package/dist/ui/components/AuthWelcomeScreen.js +30 -24
  152. package/dist/ui/components/AuthWelcomeScreen.js.map +1 -1
  153. package/dist/ui/components/Breadcrumbs.js +53 -82
  154. package/dist/ui/components/Breadcrumbs.js.map +1 -1
  155. package/dist/ui/components/CircularSelectInput.js +59 -67
  156. package/dist/ui/components/CircularSelectInput.js.map +1 -1
  157. package/dist/ui/components/ClipboardFileAutocomplete.js +78 -39
  158. package/dist/ui/components/ClipboardFileAutocomplete.js.map +1 -1
  159. package/dist/ui/components/CodeBlock.js +24 -42
  160. package/dist/ui/components/CodeBlock.js.map +1 -1
  161. package/dist/ui/components/ConfigViewer.js +18 -25
  162. package/dist/ui/components/ConfigViewer.js.map +1 -1
  163. package/dist/ui/components/ConfirmPrompt.js +49 -71
  164. package/dist/ui/components/ConfirmPrompt.js.map +1 -1
  165. package/dist/ui/components/ConnectionStatusMessage.js +32 -83
  166. package/dist/ui/components/ConnectionStatusMessage.js.map +1 -1
  167. package/dist/ui/components/ContextWindowIndicator.js +34 -49
  168. package/dist/ui/components/ContextWindowIndicator.js.map +1 -1
  169. package/dist/ui/components/DetailedPlanReviewScreen.js +104 -106
  170. package/dist/ui/components/DetailedPlanReviewScreen.js.map +1 -1
  171. package/dist/ui/components/DiffViewer.js +68 -121
  172. package/dist/ui/components/DiffViewer.js.map +1 -1
  173. package/dist/ui/components/ErrorBoundary.js +40 -48
  174. package/dist/ui/components/ErrorBoundary.js.map +1 -1
  175. package/dist/ui/components/FileCreationPreview.js +29 -60
  176. package/dist/ui/components/FileCreationPreview.js.map +1 -1
  177. package/dist/ui/components/FileOperation.js +34 -29
  178. package/dist/ui/components/FileOperation.js.map +1 -1
  179. package/dist/ui/components/FileTagAutocomplete.js +55 -25
  180. package/dist/ui/components/FileTagAutocomplete.js.map +1 -1
  181. package/dist/ui/components/FontRecommendation.js.map +1 -1
  182. package/dist/ui/components/GitDiffBreadcrumb.js +29 -0
  183. package/dist/ui/components/GitDiffBreadcrumb.js.map +1 -0
  184. package/dist/ui/components/InputBox.js +1620 -2150
  185. package/dist/ui/components/InputBox.js.map +1 -1
  186. package/dist/ui/components/InteractiveShell.js +234 -352
  187. package/dist/ui/components/InteractiveShell.js.map +1 -1
  188. package/dist/ui/components/KeyboardHelp.js +34 -35
  189. package/dist/ui/components/KeyboardHelp.js.map +1 -1
  190. package/dist/ui/components/LoadingIndicator.js +22 -25
  191. package/dist/ui/components/LoadingIndicator.js.map +1 -1
  192. package/dist/ui/components/MCPAddScreen.js +40 -51
  193. package/dist/ui/components/MCPAddScreen.js.map +1 -1
  194. package/dist/ui/components/MCPListScreen.js +40 -48
  195. package/dist/ui/components/MCPListScreen.js.map +1 -1
  196. package/dist/ui/components/MCPServerListScreen.js +49 -56
  197. package/dist/ui/components/MCPServerListScreen.js.map +1 -1
  198. package/dist/ui/components/MarkdownRenderer.js +69 -96
  199. package/dist/ui/components/MarkdownRenderer.js.map +1 -1
  200. package/dist/ui/components/MessageBox.js +66 -48
  201. package/dist/ui/components/MessageBox.js.map +1 -1
  202. package/dist/ui/components/MessageDisplay.js +150 -142
  203. package/dist/ui/components/MessageDisplay.js.map +1 -1
  204. package/dist/ui/components/MonitorModeAIPanel.js +46 -65
  205. package/dist/ui/components/MonitorModeAIPanel.js.map +1 -1
  206. package/dist/ui/components/MultiLineInput.js +243 -277
  207. package/dist/ui/components/MultiLineInput.js.map +1 -1
  208. package/dist/ui/components/PasswordPrompt.js +37 -18
  209. package/dist/ui/components/PasswordPrompt.js.map +1 -1
  210. package/dist/ui/components/PlanAcceptedMessage.js +27 -38
  211. package/dist/ui/components/PlanAcceptedMessage.js.map +1 -1
  212. package/dist/ui/components/PlanReviewScreen.js +46 -50
  213. package/dist/ui/components/PlanReviewScreen.js.map +1 -1
  214. package/dist/ui/components/RulesEditorScreen.js +81 -0
  215. package/dist/ui/components/RulesEditorScreen.js.map +1 -0
  216. package/dist/ui/components/SelectPrompt.js +19 -8
  217. package/dist/ui/components/SelectPrompt.js.map +1 -1
  218. package/dist/ui/components/ShimmerText.js +44 -0
  219. package/dist/ui/components/ShimmerText.js.map +1 -0
  220. package/dist/ui/components/SlashCommandAutocomplete.js +49 -22
  221. package/dist/ui/components/SlashCommandAutocomplete.js.map +1 -1
  222. package/dist/ui/components/StatusBar.js +56 -87
  223. package/dist/ui/components/StatusBar.js.map +1 -1
  224. package/dist/ui/components/StreamingMessageDisplay.js +116 -99
  225. package/dist/ui/components/StreamingMessageDisplay.js.map +1 -1
  226. package/dist/ui/components/TaskCompletedMessage.js +28 -23
  227. package/dist/ui/components/TaskCompletedMessage.js.map +1 -1
  228. package/dist/ui/components/TaskProgressIndicator.js +44 -70
  229. package/dist/ui/components/TaskProgressIndicator.js.map +1 -1
  230. package/dist/ui/components/ThinkingDisplay.js +44 -41
  231. package/dist/ui/components/ThinkingDisplay.js.map +1 -1
  232. package/dist/ui/components/ToolExecutionMessage.js +772 -1326
  233. package/dist/ui/components/ToolExecutionMessage.js.map +1 -1
  234. package/dist/ui/components/ToolExecutionStatus.js +53 -84
  235. package/dist/ui/components/ToolExecutionStatus.js.map +1 -1
  236. package/dist/ui/components/ToolResult.js +22 -15
  237. package/dist/ui/components/ToolResult.js.map +1 -1
  238. package/dist/ui/components/VersionUpdatePrompt.js +88 -120
  239. package/dist/ui/components/VersionUpdatePrompt.js.map +1 -1
  240. package/dist/ui/components/WelcomeBanner.js +176 -26
  241. package/dist/ui/components/WelcomeBanner.js.map +1 -1
  242. package/dist/ui/components/WorkflowCreatorScreen.js +94 -161
  243. package/dist/ui/components/WorkflowCreatorScreen.js.map +1 -1
  244. package/dist/utils/ansi-encoder.js +30 -61
  245. package/dist/utils/ansi-encoder.js.map +1 -1
  246. package/dist/utils/chat-formatter.js +327 -305
  247. package/dist/utils/chat-formatter.js.map +1 -1
  248. package/dist/utils/command-history.js +152 -174
  249. package/dist/utils/command-history.js.map +1 -1
  250. package/dist/utils/context-sanitizer.js +49 -112
  251. package/dist/utils/context-sanitizer.js.map +1 -1
  252. package/dist/utils/conversation-logger.js +292 -324
  253. package/dist/utils/conversation-logger.js.map +1 -1
  254. package/dist/utils/custom-commands-manager.js +126 -131
  255. package/dist/utils/custom-commands-manager.js.map +1 -1
  256. package/dist/utils/editor-utils.js +732 -837
  257. package/dist/utils/editor-utils.js.map +1 -1
  258. package/dist/utils/file.js +174 -213
  259. package/dist/utils/file.js.map +1 -1
  260. package/dist/utils/git-stats.js +169 -0
  261. package/dist/utils/git-stats.js.map +1 -0
  262. package/dist/utils/input-classifier.js +960 -482
  263. package/dist/utils/input-classifier.js.map +1 -1
  264. package/dist/utils/logger.js +48 -73
  265. package/dist/utils/logger.js.map +1 -1
  266. package/dist/utils/markdown-parser.js +277 -310
  267. package/dist/utils/markdown-parser.js.map +1 -1
  268. package/dist/utils/rule-reference-resolver.js +54 -0
  269. package/dist/utils/rule-reference-resolver.js.map +1 -0
  270. package/dist/utils/shell.js +144 -156
  271. package/dist/utils/shell.js.map +1 -1
  272. package/dist/utils/state.js +23 -22
  273. package/dist/utils/state.js.map +1 -1
  274. package/dist/utils/syntax-checker.js +279 -327
  275. package/dist/utils/syntax-checker.js.map +1 -1
  276. package/dist/utils/terminal-output.js +199 -302
  277. package/dist/utils/terminal-output.js.map +1 -1
  278. package/dist/utils/text-clipboard.js +47 -70
  279. package/dist/utils/text-clipboard.js.map +1 -1
  280. package/dist/utils/unicode-sanitizer.js +134 -197
  281. package/dist/utils/unicode-sanitizer.js.map +1 -1
  282. package/dist/utils/version-checker.js +46 -56
  283. package/dist/utils/version-checker.js.map +1 -1
  284. package/package.json +6 -4
  285. package/dist/ai/types.d.ts +0 -20
  286. package/dist/ai/types.d.ts.map +0 -1
  287. package/dist/cli-adapter.d.ts +0 -514
  288. package/dist/cli-adapter.d.ts.map +0 -1
  289. package/dist/commands/CommandParser.d.ts +0 -27
  290. package/dist/commands/CommandParser.d.ts.map +0 -1
  291. package/dist/config/build-config.d.ts +0 -42
  292. package/dist/config/build-config.d.ts.map +0 -1
  293. package/dist/config/defaultConfig.d.ts +0 -79
  294. package/dist/config/defaultConfig.d.ts.map +0 -1
  295. package/dist/config/manager.d.ts +0 -62
  296. package/dist/config/manager.d.ts.map +0 -1
  297. package/dist/config/mcp-config-manager.d.ts +0 -79
  298. package/dist/config/mcp-config-manager.d.ts.map +0 -1
  299. package/dist/config/models.d.ts +0 -83
  300. package/dist/config/models.d.ts.map +0 -1
  301. package/dist/config/slash-commands.d.ts +0 -23
  302. package/dist/config/slash-commands.d.ts.map +0 -1
  303. package/dist/config/types.d.ts +0 -35
  304. package/dist/config/types.d.ts.map +0 -1
  305. package/dist/context/command-detector.d.ts +0 -50
  306. package/dist/context/command-detector.d.ts.map +0 -1
  307. package/dist/context/context-manager.d.ts +0 -157
  308. package/dist/context/context-manager.d.ts.map +0 -1
  309. package/dist/context/handlers/docker-handler.d.ts +0 -130
  310. package/dist/context/handlers/docker-handler.d.ts.map +0 -1
  311. package/dist/context/handlers/ssh-handler.d.ts +0 -201
  312. package/dist/context/handlers/ssh-handler.d.ts.map +0 -1
  313. package/dist/context/handlers/wsl-handler.d.ts +0 -146
  314. package/dist/context/handlers/wsl-handler.d.ts.map +0 -1
  315. package/dist/context/index.d.ts +0 -8
  316. package/dist/context/index.d.ts.map +0 -1
  317. package/dist/context/subshell-handler.d.ts +0 -165
  318. package/dist/context/subshell-handler.d.ts.map +0 -1
  319. package/dist/context/types.d.ts +0 -70
  320. package/dist/context/types.d.ts.map +0 -1
  321. package/dist/hooks/useConnectivity.d.ts +0 -2
  322. package/dist/hooks/useConnectivity.d.ts.map +0 -1
  323. package/dist/hooks/useTerminalDimensions.d.ts +0 -41
  324. package/dist/hooks/useTerminalDimensions.d.ts.map +0 -1
  325. package/dist/index.d.ts +0 -9
  326. package/dist/index.d.ts.map +0 -1
  327. package/dist/mcp/mcp-command-handler.d.ts +0 -47
  328. package/dist/mcp/mcp-command-handler.d.ts.map +0 -1
  329. package/dist/mcp/mcp-server-manager.d.ts +0 -30
  330. package/dist/mcp/mcp-server-manager.d.ts.map +0 -1
  331. package/dist/mcp/mcp-tool-wrapper.d.ts +0 -12
  332. package/dist/mcp/mcp-tool-wrapper.d.ts.map +0 -1
  333. package/dist/services/ai-autocomplete-agent.d.ts +0 -39
  334. package/dist/services/ai-autocomplete-agent.d.ts.map +0 -1
  335. package/dist/services/ai-context-injector.d.ts +0 -41
  336. package/dist/services/ai-context-injector.d.ts.map +0 -1
  337. package/dist/services/ai-service-client.d.ts +0 -128
  338. package/dist/services/ai-service-client.d.ts.map +0 -1
  339. package/dist/services/api-client.d.ts +0 -353
  340. package/dist/services/api-client.d.ts.map +0 -1
  341. package/dist/services/auth-handler.d.ts +0 -30
  342. package/dist/services/auth-handler.d.ts.map +0 -1
  343. package/dist/services/background-task-manager.d.ts +0 -114
  344. package/dist/services/background-task-manager.d.ts.map +0 -1
  345. package/dist/services/checkpoint-manager.d.ts +0 -204
  346. package/dist/services/checkpoint-manager.d.ts.map +0 -1
  347. package/dist/services/clipboard-service.d.ts +0 -37
  348. package/dist/services/clipboard-service.d.ts.map +0 -1
  349. package/dist/services/connectivity-manager.d.ts +0 -18
  350. package/dist/services/connectivity-manager.d.ts.map +0 -1
  351. package/dist/services/conversation-manager.d.ts +0 -73
  352. package/dist/services/conversation-manager.d.ts.map +0 -1
  353. package/dist/services/environment-context-injector.d.ts +0 -69
  354. package/dist/services/environment-context-injector.d.ts.map +0 -1
  355. package/dist/services/fast-context-agent.d.ts +0 -12
  356. package/dist/services/fast-context-agent.d.ts.map +0 -1
  357. package/dist/services/input-detection-agent.d.ts +0 -40
  358. package/dist/services/input-detection-agent.d.ts.map +0 -1
  359. package/dist/services/input-requirement-detector.d.ts +0 -28
  360. package/dist/services/input-requirement-detector.d.ts.map +0 -1
  361. package/dist/services/local-chat-storage.d.ts +0 -182
  362. package/dist/services/local-chat-storage.d.ts.map +0 -1
  363. package/dist/services/monitored-shell-manager.d.ts +0 -120
  364. package/dist/services/monitored-shell-manager.d.ts.map +0 -1
  365. package/dist/services/ollama-service.d.ts +0 -197
  366. package/dist/services/ollama-service.d.ts.map +0 -1
  367. package/dist/services/session-quota-manager.d.ts +0 -101
  368. package/dist/services/session-quota-manager.d.ts.map +0 -1
  369. package/dist/services/shell-input-agent.d.ts +0 -89
  370. package/dist/services/shell-input-agent.d.ts.map +0 -1
  371. package/dist/services/sub-agent-manager.d.ts +0 -140
  372. package/dist/services/sub-agent-manager.d.ts.map +0 -1
  373. package/dist/services/warpify-detector.d.ts +0 -43
  374. package/dist/services/warpify-detector.d.ts.map +0 -1
  375. package/dist/services/workflow-storage.d.ts +0 -72
  376. package/dist/services/workflow-storage.d.ts.map +0 -1
  377. package/dist/test-ssh-handler.d.ts +0 -8
  378. package/dist/test-ssh-handler.d.ts.map +0 -1
  379. package/dist/tools/background-command.d.ts +0 -11
  380. package/dist/tools/background-command.d.ts.map +0 -1
  381. package/dist/tools/command.d.ts +0 -3
  382. package/dist/tools/command.d.ts.map +0 -1
  383. package/dist/tools/create-image.d.ts +0 -10
  384. package/dist/tools/create-image.d.ts.map +0 -1
  385. package/dist/tools/enter-remote-session.d.ts +0 -48
  386. package/dist/tools/enter-remote-session.d.ts.map +0 -1
  387. package/dist/tools/fast-context.d.ts +0 -3
  388. package/dist/tools/fast-context.d.ts.map +0 -1
  389. package/dist/tools/file-ops.d.ts +0 -7
  390. package/dist/tools/file-ops.d.ts.map +0 -1
  391. package/dist/tools/find-files.d.ts +0 -49
  392. package/dist/tools/find-files.d.ts.map +0 -1
  393. package/dist/tools/get-diff.d.ts +0 -14
  394. package/dist/tools/get-diff.d.ts.map +0 -1
  395. package/dist/tools/grep-search.d.ts +0 -155
  396. package/dist/tools/grep-search.d.ts.map +0 -1
  397. package/dist/tools/inspect-symbol.d.ts +0 -32
  398. package/dist/tools/inspect-symbol.d.ts.map +0 -1
  399. package/dist/tools/plan-mode.d.ts +0 -140
  400. package/dist/tools/plan-mode.d.ts.map +0 -1
  401. package/dist/tools/read-binary-file.d.ts +0 -10
  402. package/dist/tools/read-binary-file.d.ts.map +0 -1
  403. package/dist/tools/registry.d.ts +0 -31
  404. package/dist/tools/registry.d.ts.map +0 -1
  405. package/dist/tools/reproduce_issue.d.ts +0 -2
  406. package/dist/tools/reproduce_issue.d.ts.map +0 -1
  407. package/dist/tools/sub-agent.d.ts +0 -9
  408. package/dist/tools/sub-agent.d.ts.map +0 -1
  409. package/dist/tools/task-complete.d.ts +0 -3
  410. package/dist/tools/task-complete.d.ts.map +0 -1
  411. package/dist/tools/types.d.ts +0 -40
  412. package/dist/tools/types.d.ts.map +0 -1
  413. package/dist/tools/validation.d.ts +0 -47
  414. package/dist/tools/validation.d.ts.map +0 -1
  415. package/dist/tools/web-search.d.ts +0 -24
  416. package/dist/tools/web-search.d.ts.map +0 -1
  417. package/dist/tools/workflow-tool.d.ts +0 -11
  418. package/dist/tools/workflow-tool.d.ts.map +0 -1
  419. package/dist/types/index.d.ts +0 -123
  420. package/dist/types/index.d.ts.map +0 -1
  421. package/dist/types/workflow.d.ts +0 -110
  422. package/dist/types/workflow.d.ts.map +0 -1
  423. package/dist/ui/components/AgentTimer.d.ts +0 -7
  424. package/dist/ui/components/AgentTimer.d.ts.map +0 -1
  425. package/dist/ui/components/App.d.ts +0 -197
  426. package/dist/ui/components/App.d.ts.map +0 -1
  427. package/dist/ui/components/AuthScreen.d.ts +0 -8
  428. package/dist/ui/components/AuthScreen.d.ts.map +0 -1
  429. package/dist/ui/components/AuthWelcomeScreen.d.ts +0 -8
  430. package/dist/ui/components/AuthWelcomeScreen.d.ts.map +0 -1
  431. package/dist/ui/components/Breadcrumbs.d.ts +0 -13
  432. package/dist/ui/components/Breadcrumbs.d.ts.map +0 -1
  433. package/dist/ui/components/CircularSelectInput.d.ts +0 -24
  434. package/dist/ui/components/CircularSelectInput.d.ts.map +0 -1
  435. package/dist/ui/components/ClipboardFileAutocomplete.d.ts +0 -10
  436. package/dist/ui/components/ClipboardFileAutocomplete.d.ts.map +0 -1
  437. package/dist/ui/components/CodeBlock.d.ts +0 -9
  438. package/dist/ui/components/CodeBlock.d.ts.map +0 -1
  439. package/dist/ui/components/ConfigViewer.d.ts +0 -11
  440. package/dist/ui/components/ConfigViewer.d.ts.map +0 -1
  441. package/dist/ui/components/ConfirmPrompt.d.ts +0 -13
  442. package/dist/ui/components/ConfirmPrompt.d.ts.map +0 -1
  443. package/dist/ui/components/ConnectionStatusMessage.d.ts +0 -17
  444. package/dist/ui/components/ConnectionStatusMessage.d.ts.map +0 -1
  445. package/dist/ui/components/ContextWindowIndicator.d.ts +0 -8
  446. package/dist/ui/components/ContextWindowIndicator.d.ts.map +0 -1
  447. package/dist/ui/components/DetailedPlanReviewScreen.d.ts +0 -17
  448. package/dist/ui/components/DetailedPlanReviewScreen.d.ts.map +0 -1
  449. package/dist/ui/components/DiffViewer.d.ts +0 -9
  450. package/dist/ui/components/DiffViewer.d.ts.map +0 -1
  451. package/dist/ui/components/ErrorBoundary.d.ts +0 -17
  452. package/dist/ui/components/ErrorBoundary.d.ts.map +0 -1
  453. package/dist/ui/components/FileCreationPreview.d.ts +0 -8
  454. package/dist/ui/components/FileCreationPreview.d.ts.map +0 -1
  455. package/dist/ui/components/FileOperation.d.ts +0 -10
  456. package/dist/ui/components/FileOperation.d.ts.map +0 -1
  457. package/dist/ui/components/FileTagAutocomplete.d.ts +0 -11
  458. package/dist/ui/components/FileTagAutocomplete.d.ts.map +0 -1
  459. package/dist/ui/components/FontRecommendation.d.ts +0 -1
  460. package/dist/ui/components/FontRecommendation.d.ts.map +0 -1
  461. package/dist/ui/components/InputBox.d.ts +0 -42
  462. package/dist/ui/components/InputBox.d.ts.map +0 -1
  463. package/dist/ui/components/InteractiveShell.d.ts +0 -30
  464. package/dist/ui/components/InteractiveShell.d.ts.map +0 -1
  465. package/dist/ui/components/KeyboardHelp.d.ts +0 -7
  466. package/dist/ui/components/KeyboardHelp.d.ts.map +0 -1
  467. package/dist/ui/components/LoadingIndicator.d.ts +0 -3
  468. package/dist/ui/components/LoadingIndicator.d.ts.map +0 -1
  469. package/dist/ui/components/MCPAddScreen.d.ts +0 -13
  470. package/dist/ui/components/MCPAddScreen.d.ts.map +0 -1
  471. package/dist/ui/components/MCPListScreen.d.ts +0 -17
  472. package/dist/ui/components/MCPListScreen.d.ts.map +0 -1
  473. package/dist/ui/components/MCPServerListScreen.d.ts +0 -16
  474. package/dist/ui/components/MCPServerListScreen.d.ts.map +0 -1
  475. package/dist/ui/components/MarkdownRenderer.d.ts +0 -8
  476. package/dist/ui/components/MarkdownRenderer.d.ts.map +0 -1
  477. package/dist/ui/components/MessageBox.d.ts +0 -10
  478. package/dist/ui/components/MessageBox.d.ts.map +0 -1
  479. package/dist/ui/components/MessageDisplay.d.ts +0 -14
  480. package/dist/ui/components/MessageDisplay.d.ts.map +0 -1
  481. package/dist/ui/components/MonitorModeAIPanel.d.ts +0 -23
  482. package/dist/ui/components/MonitorModeAIPanel.d.ts.map +0 -1
  483. package/dist/ui/components/MultiLineInput.d.ts +0 -13
  484. package/dist/ui/components/MultiLineInput.d.ts.map +0 -1
  485. package/dist/ui/components/PasswordPrompt.d.ts +0 -9
  486. package/dist/ui/components/PasswordPrompt.d.ts.map +0 -1
  487. package/dist/ui/components/PlanAcceptedMessage.d.ts +0 -20
  488. package/dist/ui/components/PlanAcceptedMessage.d.ts.map +0 -1
  489. package/dist/ui/components/PlanReviewScreen.d.ts +0 -14
  490. package/dist/ui/components/PlanReviewScreen.d.ts.map +0 -1
  491. package/dist/ui/components/SelectPrompt.d.ts +0 -12
  492. package/dist/ui/components/SelectPrompt.d.ts.map +0 -1
  493. package/dist/ui/components/SlashCommandAutocomplete.d.ts +0 -13
  494. package/dist/ui/components/SlashCommandAutocomplete.d.ts.map +0 -1
  495. package/dist/ui/components/StatusBar.d.ts +0 -14
  496. package/dist/ui/components/StatusBar.d.ts.map +0 -1
  497. package/dist/ui/components/StreamingMessageDisplay.d.ts +0 -15
  498. package/dist/ui/components/StreamingMessageDisplay.d.ts.map +0 -1
  499. package/dist/ui/components/TaskCompletedMessage.d.ts +0 -14
  500. package/dist/ui/components/TaskCompletedMessage.d.ts.map +0 -1
  501. package/dist/ui/components/TaskProgressIndicator.d.ts +0 -18
  502. package/dist/ui/components/TaskProgressIndicator.d.ts.map +0 -1
  503. package/dist/ui/components/ThinkingDisplay.d.ts +0 -15
  504. package/dist/ui/components/ThinkingDisplay.d.ts.map +0 -1
  505. package/dist/ui/components/ToolExecutionMessage.d.ts +0 -8
  506. package/dist/ui/components/ToolExecutionMessage.d.ts.map +0 -1
  507. package/dist/ui/components/ToolExecutionStatus.d.ts +0 -10
  508. package/dist/ui/components/ToolExecutionStatus.d.ts.map +0 -1
  509. package/dist/ui/components/ToolResult.d.ts +0 -10
  510. package/dist/ui/components/ToolResult.d.ts.map +0 -1
  511. package/dist/ui/components/VersionUpdatePrompt.d.ts +0 -9
  512. package/dist/ui/components/VersionUpdatePrompt.d.ts.map +0 -1
  513. package/dist/ui/components/WelcomeBanner.d.ts +0 -3
  514. package/dist/ui/components/WelcomeBanner.d.ts.map +0 -1
  515. package/dist/ui/components/WorkflowCreatorScreen.d.ts +0 -25
  516. package/dist/ui/components/WorkflowCreatorScreen.d.ts.map +0 -1
  517. package/dist/utils/ansi-encoder.d.ts +0 -7
  518. package/dist/utils/ansi-encoder.d.ts.map +0 -1
  519. package/dist/utils/chat-formatter.d.ts +0 -12
  520. package/dist/utils/chat-formatter.d.ts.map +0 -1
  521. package/dist/utils/command-history.d.ts +0 -24
  522. package/dist/utils/command-history.d.ts.map +0 -1
  523. package/dist/utils/context-sanitizer.d.ts +0 -50
  524. package/dist/utils/context-sanitizer.d.ts.map +0 -1
  525. package/dist/utils/conversation-logger.d.ts +0 -142
  526. package/dist/utils/conversation-logger.d.ts.map +0 -1
  527. package/dist/utils/custom-commands-manager.d.ts +0 -59
  528. package/dist/utils/custom-commands-manager.d.ts.map +0 -1
  529. package/dist/utils/editor-utils.d.ts +0 -101
  530. package/dist/utils/editor-utils.d.ts.map +0 -1
  531. package/dist/utils/file.d.ts +0 -61
  532. package/dist/utils/file.d.ts.map +0 -1
  533. package/dist/utils/input-classifier.d.ts +0 -25
  534. package/dist/utils/input-classifier.d.ts.map +0 -1
  535. package/dist/utils/logger.d.ts +0 -17
  536. package/dist/utils/logger.d.ts.map +0 -1
  537. package/dist/utils/markdown-parser.d.ts +0 -60
  538. package/dist/utils/markdown-parser.d.ts.map +0 -1
  539. package/dist/utils/shell.d.ts +0 -47
  540. package/dist/utils/shell.d.ts.map +0 -1
  541. package/dist/utils/state.d.ts +0 -13
  542. package/dist/utils/state.d.ts.map +0 -1
  543. package/dist/utils/syntax-checker.d.ts +0 -24
  544. package/dist/utils/syntax-checker.d.ts.map +0 -1
  545. package/dist/utils/terminal-output.d.ts +0 -25
  546. package/dist/utils/terminal-output.d.ts.map +0 -1
  547. package/dist/utils/text-clipboard.d.ts +0 -12
  548. package/dist/utils/text-clipboard.d.ts.map +0 -1
  549. package/dist/utils/unicode-sanitizer.d.ts +0 -44
  550. package/dist/utils/unicode-sanitizer.d.ts.map +0 -1
  551. package/dist/utils/version-checker.d.ts +0 -14
  552. package/dist/utils/version-checker.d.ts.map +0 -1
@@ -1,235 +1,230 @@
1
- /**
2
- * Sub-Agent Tool
3
- *
4
- * Allows the main AI agent to spawn and manage background sub-agents
5
- * for delegated tasks. Uses action-based pattern similar to background_command.
6
- */
7
- import { SubAgentManager } from '../services/sub-agent-manager.js';
8
- export const subAgentTool = {
9
- schema: {
10
- name: 'sub_agent',
11
- description: `Spawn and manage background sub-agents for delegated tasks. Sub-agents run independently and have full tool access.
12
-
13
- ACTIONS:
14
- 1. "spawn" - Create and start a new sub-agent with a specific task
15
- 2. "wait_for_status" - Wait for a duration and then check the status/progress of a sub-agent enterduration as 0 if you want to check immediately
16
- 3. "terminate" - Kill a running sub-agent
17
- 4. "read_results" - Get the final results and diffs from a completed sub-agent
18
- 5. "list" - List all sub-agents and their current status
19
-
20
- USE CASES:
21
- - Delegate a well-defined subtask while you continue with other work
22
- - Run multiple independent tasks in parallel
23
- - Handle complex multi-step operations in the background
24
-
25
- COMPLEXITY GUIDELINES (1-10):
26
- - 1-3: Very simple tasks (create a single file, fix a typo)
27
- - 4-5: Simple tasks (implement a small function, update configs)
28
- - 6-7: Medium tasks (implement a feature, refactor a file)
29
- - 8-10: Complex tasks (multi-file refactors, debugging complex issues)
30
-
31
- IMPORTANT:
32
- - You CANNOT call task_complete while sub-agents are running
33
- - Always check status or read_results before completing your main task
34
- - Sub-agents auto-terminate after 10 minutes
35
- - Maximum 5 concurrent sub-agents allowed
1
+ import { SubAgentManager } from "../services/sub-agent-manager.js";
2
+ const subAgentTool = {
3
+ schema: {
4
+ name: "sub_agent",
5
+ description: `Spawn and manage background sub-agents for delegated tasks. Sub-agents run independently and have full tool access.
6
+
7
+ ACTIONS:
8
+ 1. "spawn" - Create and start a new sub-agent with a specific task
9
+ 2. "wait_for_status" - Wait for a duration and then check the status/progress of a sub-agent enterduration as 0 if you want to check immediately
10
+ 3. "terminate" - Kill a running sub-agent
11
+ 4. "read_results" - Get the final results and diffs from a completed sub-agent
12
+ 5. "list" - List all sub-agents and their current status
13
+
14
+ USE CASES:
15
+ - Delegate a well-defined subtask while you continue with other work
16
+ - Run multiple independent tasks in parallel
17
+ - Handle complex multi-step operations in the background
18
+
19
+ COMPLEXITY GUIDELINES (1-10):
20
+ - 1-3: Very simple tasks (create a single file, fix a typo)
21
+ - 4-5: Simple tasks (implement a small function, update configs)
22
+ - 6-7: Medium tasks (implement a feature, refactor a file)
23
+ - 8-10: Complex tasks (multi-file refactors, debugging complex issues)
24
+
25
+ IMPORTANT:
26
+ - You CANNOT call task_complete while sub-agents are running
27
+ - Always check status or read_results before completing your main task
28
+ - Sub-agents auto-terminate after 10 minutes
29
+ - Maximum 5 concurrent sub-agents allowed
36
30
  - Sub-agents use the same session quota as you`,
37
- parameters: {
38
- type: 'object',
39
- properties: {
40
- action: {
41
- type: 'string',
42
- enum: ['spawn', 'wait_for_status', 'terminate', 'read_results', 'list'],
43
- description: 'The action to perform.',
44
- },
45
- agent_id: {
46
- type: 'string',
47
- description: 'Sub-agent ID. REQUIRED for wait_for_status, terminate, and read_results actions.',
48
- },
49
- time_delay: {
50
- type: 'integer',
51
- description: 'Optional delay in seconds to wait before checking status (for wait_for_status action). Set to 0 for immediate check.',
52
- },
53
- prompt: {
54
- type: 'string',
55
- description: 'Detailed task description for the sub-agent. REQUIRED for spawn action. Be specific about what needs to be done.',
56
- },
57
- context: {
58
- type: 'string',
59
- description: 'Relevant context information for spawn action. Include file paths, project structure, relevant code snippets, or any information the sub-agent needs.',
60
- },
61
- working_directory: {
62
- type: 'string',
63
- description: 'Already Existing Working directory for the sub-agent to start working in. REQUIRED for spawn action.',
64
- },
65
- complexity: {
66
- type: 'integer',
67
- description: 'Task complexity rating 1-10. REQUIRED for spawn action. Determines which AI model is used.',
68
- },
69
- },
70
- required: ['action'],
31
+ parameters: {
32
+ type: "object",
33
+ properties: {
34
+ action: {
35
+ type: "string",
36
+ enum: ["spawn", "wait_for_status", "terminate", "read_results", "list"],
37
+ description: "The action to perform."
71
38
  },
72
- },
73
- async execute(args, context) {
74
- const { action, agent_id, prompt, context: agentContext, working_directory, complexity, time_delay } = args;
75
- switch (action) {
76
- case 'spawn': {
77
- // Validate required parameters
78
- if (!prompt) {
79
- throw new Error('Missing required parameter "prompt" for action "spawn"');
80
- }
81
- if (!working_directory) {
82
- throw new Error('Missing required parameter "working_directory" for action "spawn"');
83
- }
84
- if (complexity === undefined || complexity === null) {
85
- throw new Error('Missing required parameter "complexity" for action "spawn"');
86
- }
87
- if (complexity < 1 || complexity > 10) {
88
- throw new Error('Complexity must be between 1 and 10');
89
- }
90
- // Spawn the sub-agent
91
- // Pass parent's contextManager so the subagent can route tools
92
- // through the active remote session (SSH/Docker/WSL)
93
- const result = await SubAgentManager.spawnSubAgent({
94
- prompt,
95
- context: agentContext || '',
96
- workingDirectory: working_directory,
97
- complexity,
98
- parentContextManager: context.contextManager,
99
- });
100
- if (!result.success) {
101
- throw new Error(result.error || 'Failed to spawn sub-agent');
102
- }
103
- const modelUsed = complexity <= 5 ? 'Gemini 3 Flash Preview' : 'Gemini 3 Pro Preview';
104
- return `**Sub-Agent Spawned Successfully**
105
-
106
- **Agent ID:** ${result.agentId}
107
- **Model:** ${modelUsed} (complexity: ${complexity}/10)
108
- **Working Directory:** ${working_directory}
109
- **Task:** ${prompt.substring(0, 200)}${prompt.length > 200 ? '...' : ''}
110
-
111
- The sub-agent is now running in the background. Use:
112
- - \`sub_agent(action="wait_for_status", agent_id="${result.agentId}", time_delay=5)\` to wait and check progress
113
- - \`sub_agent(action="terminate", agent_id="${result.agentId}")\` to stop it
114
- - \`sub_agent(action="read_results", agent_id="${result.agentId}")\` to get results when completed
115
-
116
- ⚠️ You cannot call task_complete while this sub-agent is running.`;
117
- }
118
- case 'wait_for_status': {
119
- if (!agent_id) {
120
- throw new Error('Missing required parameter "agent_id" for action "wait_for_status"');
121
- }
122
- // Wait if delay is requested
123
- if (time_delay && time_delay > 0) {
124
- await new Promise(resolve => setTimeout(resolve, time_delay * 1000));
125
- }
126
- const subAgent = SubAgentManager.getSubAgent(agent_id);
127
- if (!subAgent) {
128
- // List available sub-agents
129
- const allAgents = SubAgentManager.getAllSubAgents();
130
- if (allAgents.length === 0) {
131
- throw new Error(`Sub-agent "${agent_id}" not found. No sub-agents are currently tracked.`);
132
- }
133
- const agentList = allAgents.map(a => `- ${a.id} (${a.status}): ${a.prompt.substring(0, 50)}...`).join('\n');
134
- throw new Error(`Sub-agent "${agent_id}" not found.\n\nAvailable sub-agents:\n${agentList}`);
135
- }
136
- const durationMs = (subAgent.endTime || new Date()).getTime() - subAgent.startTime.getTime();
137
- const durationSec = Math.round(durationMs / 1000);
138
- let statusEmoji = '⏳';
139
- if (subAgent.status === 'running')
140
- statusEmoji = '🔄';
141
- else if (subAgent.status === 'completed')
142
- statusEmoji = '✓';
143
- else if (subAgent.status === 'failed')
144
- statusEmoji = '❌';
145
- else if (subAgent.status === 'terminated')
146
- statusEmoji = '⏹️';
147
- let statusDetails = `**Sub-Agent Status**
148
-
149
- **Agent ID:** ${agent_id}
150
- **Status:** ${statusEmoji} ${subAgent.status}
151
- **Model:** ${subAgent.model}
152
- **Duration:** ${durationSec}s
153
- **Turns:** ${subAgent.turnCount}
154
- **File Operations:** ${subAgent.fileOperations.length}
39
+ agent_id: {
40
+ type: "string",
41
+ description: "Sub-agent ID. REQUIRED for wait_for_status, terminate, and read_results actions."
42
+ },
43
+ time_delay: {
44
+ type: "integer",
45
+ description: "Optional delay in seconds to wait before checking status (for wait_for_status action). Set to 0 for immediate check."
46
+ },
47
+ prompt: {
48
+ type: "string",
49
+ description: "Detailed task description for the sub-agent. REQUIRED for spawn action. Be specific about what needs to be done."
50
+ },
51
+ context: {
52
+ type: "string",
53
+ description: "Relevant context information for spawn action. Include file paths, project structure, relevant code snippets, or any information the sub-agent needs."
54
+ },
55
+ working_directory: {
56
+ type: "string",
57
+ description: "Already Existing Working directory for the sub-agent to start working in. REQUIRED for spawn action."
58
+ },
59
+ complexity: {
60
+ type: "integer",
61
+ description: "Task complexity rating 1-10. REQUIRED for spawn action. Determines which AI model is used."
62
+ }
63
+ },
64
+ required: ["action"]
65
+ }
66
+ },
67
+ async execute(args, context) {
68
+ const { action, agent_id, prompt, context: agentContext, working_directory, complexity, time_delay } = args;
69
+ switch (action) {
70
+ case "spawn": {
71
+ if (!prompt) {
72
+ throw new Error('Missing required parameter "prompt" for action "spawn"');
73
+ }
74
+ if (!working_directory) {
75
+ throw new Error('Missing required parameter "working_directory" for action "spawn"');
76
+ }
77
+ if (complexity === void 0 || complexity === null) {
78
+ throw new Error('Missing required parameter "complexity" for action "spawn"');
79
+ }
80
+ if (complexity < 1 || complexity > 10) {
81
+ throw new Error("Complexity must be between 1 and 10");
82
+ }
83
+ const result = await SubAgentManager.spawnSubAgent({
84
+ prompt,
85
+ context: agentContext || "",
86
+ workingDirectory: working_directory,
87
+ complexity,
88
+ parentContextManager: context.contextManager
89
+ });
90
+ if (!result.success) {
91
+ throw new Error(result.error || "Failed to spawn sub-agent");
92
+ }
93
+ const modelUsed = complexity <= 5 ? "Gemini 3 Flash Preview" : "Gemini 3.1 Pro Preview";
94
+ return `**Sub-Agent Spawned Successfully**
95
+
96
+ **Agent ID:** ${result.agentId}
97
+ **Model:** ${modelUsed} (complexity: ${complexity}/10)
98
+ **Working Directory:** ${working_directory}
99
+ **Task:** ${prompt.substring(0, 200)}${prompt.length > 200 ? "..." : ""}
100
+
101
+ The sub-agent is now running in the background. Use:
102
+ - \`sub_agent(action="wait_for_status", agent_id="${result.agentId}", time_delay=5)\` to wait and check progress
103
+ - \`sub_agent(action="terminate", agent_id="${result.agentId}")\` to stop it
104
+ - \`sub_agent(action="read_results", agent_id="${result.agentId}")\` to get results when completed
105
+
106
+ \u26A0\uFE0F You cannot call task_complete while this sub-agent is running.`;
107
+ }
108
+ case "wait_for_status": {
109
+ if (!agent_id) {
110
+ throw new Error('Missing required parameter "agent_id" for action "wait_for_status"');
111
+ }
112
+ if (time_delay && time_delay > 0) {
113
+ await new Promise((resolve) => setTimeout(resolve, time_delay * 1e3));
114
+ }
115
+ const subAgent = SubAgentManager.getSubAgent(agent_id);
116
+ if (!subAgent) {
117
+ const allAgents = SubAgentManager.getAllSubAgents();
118
+ if (allAgents.length === 0) {
119
+ throw new Error(`Sub-agent "${agent_id}" not found. No sub-agents are currently tracked.`);
120
+ }
121
+ const agentList = allAgents.map(
122
+ (a) => `- ${a.id} (${a.status}): ${a.prompt.substring(0, 50)}...`
123
+ ).join("\n");
124
+ throw new Error(`Sub-agent "${agent_id}" not found.
125
+
126
+ Available sub-agents:
127
+ ${agentList}`);
128
+ }
129
+ const durationMs = (subAgent.endTime || /* @__PURE__ */ new Date()).getTime() - subAgent.startTime.getTime();
130
+ const durationSec = Math.round(durationMs / 1e3);
131
+ let statusEmoji = "\u23F3";
132
+ if (subAgent.status === "running") statusEmoji = "\u{1F504}";
133
+ else if (subAgent.status === "completed") statusEmoji = "\u2713";
134
+ else if (subAgent.status === "failed") statusEmoji = "\u274C";
135
+ else if (subAgent.status === "terminated") statusEmoji = "\u23F9\uFE0F";
136
+ let statusDetails = `**Sub-Agent Status**
137
+
138
+ **Agent ID:** ${agent_id}
139
+ **Status:** ${statusEmoji} ${subAgent.status}
140
+ **Model:** ${subAgent.model}
141
+ **Duration:** ${durationSec}s
142
+ **Turns:** ${subAgent.turnCount}
143
+ **File Operations:** ${subAgent.fileOperations.length}
155
144
  **Tool Calls:** ${subAgent.toolHistory.length}`;
156
- if (subAgent.result) {
157
- statusDetails += `\n\n**Result:** ${subAgent.result}`;
158
- }
159
- if (subAgent.error) {
160
- statusDetails += `\n\n**Error:** ${subAgent.error}`;
161
- }
162
- if (subAgent.status === 'completed' || subAgent.status === 'failed' || subAgent.status === 'terminated') {
163
- statusDetails += `\n\nUse \`sub_agent(action="read_results", agent_id="${agent_id}")\` to see the full diff of changes.`;
164
- }
165
- return statusDetails;
166
- }
167
- case 'terminate': {
168
- if (!agent_id) {
169
- throw new Error('Missing required parameter "agent_id" for action "terminate"');
170
- }
171
- const result = SubAgentManager.terminateSubAgent(agent_id);
172
- if (!result.success) {
173
- throw new Error(result.error || 'Failed to terminate sub-agent');
174
- }
175
- return `**Sub-Agent Terminated**
176
-
177
- **Agent ID:** ${agent_id}
178
- **Status:** ⏹️ Terminated
179
-
145
+ if (subAgent.result) {
146
+ statusDetails += `
147
+
148
+ **Result:** ${subAgent.result}`;
149
+ }
150
+ if (subAgent.error) {
151
+ statusDetails += `
152
+
153
+ **Error:** ${subAgent.error}`;
154
+ }
155
+ if (subAgent.status === "completed" || subAgent.status === "failed" || subAgent.status === "terminated") {
156
+ statusDetails += `
157
+
158
+ Use \`sub_agent(action="read_results", agent_id="${agent_id}")\` to see the full diff of changes.`;
159
+ }
160
+ return statusDetails;
161
+ }
162
+ case "terminate": {
163
+ if (!agent_id) {
164
+ throw new Error('Missing required parameter "agent_id" for action "terminate"');
165
+ }
166
+ const result = SubAgentManager.terminateSubAgent(agent_id);
167
+ if (!result.success) {
168
+ throw new Error(result.error || "Failed to terminate sub-agent");
169
+ }
170
+ return `**Sub-Agent Terminated**
171
+
172
+ **Agent ID:** ${agent_id}
173
+ **Status:** \u23F9\uFE0F Terminated
174
+
180
175
  The sub-agent has been stopped. Use \`sub_agent(action="read_results", agent_id="${agent_id}")\` to see what it accomplished before termination.`;
181
- }
182
- case 'read_results': {
183
- if (!agent_id) {
184
- throw new Error('Missing required parameter "agent_id" for action "read_results"');
185
- }
186
- const subAgent = SubAgentManager.getSubAgent(agent_id);
187
- if (!subAgent) {
188
- throw new Error(`Sub-agent "${agent_id}" not found`);
189
- }
190
- if (subAgent.status === 'running' || subAgent.status === 'pending') {
191
- throw new Error(`Sub-agent "${agent_id}" is still running. Wait for it to complete or terminate it first.`);
192
- }
193
- // Get the formatted diff output
194
- const diffOutput = SubAgentManager.getSubAgentDiff(agent_id);
195
- // Mark as read
196
- SubAgentManager.markSubAgentRead(agent_id);
197
- return diffOutput;
198
- }
199
- case 'list': {
200
- const allAgents = SubAgentManager.getAllSubAgents();
201
- if (allAgents.length === 0) {
202
- return 'No sub-agents currently tracked.';
203
- }
204
- const runningCount = allAgents.filter(a => a.status === 'running' || a.status === 'pending').length;
205
- const completedCount = allAgents.filter(a => a.status === 'completed').length;
206
- const failedCount = allAgents.filter(a => a.status === 'failed' || a.status === 'terminated').length;
207
- let output = `**Sub-Agent Summary**
208
-
209
- **Running:** ${runningCount}
210
- **Completed:** ${completedCount}
211
- **Failed/Terminated:** ${failedCount}
212
-
213
- **All Sub-Agents:**
176
+ }
177
+ case "read_results": {
178
+ if (!agent_id) {
179
+ throw new Error('Missing required parameter "agent_id" for action "read_results"');
180
+ }
181
+ const subAgent = SubAgentManager.getSubAgent(agent_id);
182
+ if (!subAgent) {
183
+ throw new Error(`Sub-agent "${agent_id}" not found`);
184
+ }
185
+ if (subAgent.status === "running" || subAgent.status === "pending") {
186
+ throw new Error(`Sub-agent "${agent_id}" is still running. Wait for it to complete or terminate it first.`);
187
+ }
188
+ const diffOutput = SubAgentManager.getSubAgentDiff(agent_id);
189
+ SubAgentManager.markSubAgentRead(agent_id);
190
+ return diffOutput;
191
+ }
192
+ case "list": {
193
+ const allAgents = SubAgentManager.getAllSubAgents();
194
+ if (allAgents.length === 0) {
195
+ return "No sub-agents currently tracked.";
196
+ }
197
+ const runningCount = allAgents.filter((a) => a.status === "running" || a.status === "pending").length;
198
+ const completedCount = allAgents.filter((a) => a.status === "completed").length;
199
+ const failedCount = allAgents.filter((a) => a.status === "failed" || a.status === "terminated").length;
200
+ let output = `**Sub-Agent Summary**
201
+
202
+ **Running:** ${runningCount}
203
+ **Completed:** ${completedCount}
204
+ **Failed/Terminated:** ${failedCount}
205
+
206
+ **All Sub-Agents:**
214
207
  `;
215
- for (const agent of allAgents) {
216
- let statusEmoji = '⏳';
217
- if (agent.status === 'running')
218
- statusEmoji = '🔄';
219
- else if (agent.status === 'completed')
220
- statusEmoji = '✅';
221
- else if (agent.status === 'failed')
222
- statusEmoji = '❌';
223
- else if (agent.status === 'terminated')
224
- statusEmoji = '⏹️';
225
- const taskPreview = agent.prompt.substring(0, 60) + (agent.prompt.length > 60 ? '...' : '');
226
- output += `\n${statusEmoji} **${agent.id}** (${agent.status})\n Task: ${taskPreview}\n`;
227
- }
228
- return output;
229
- }
230
- default:
231
- throw new Error(`Unknown action "${action}". Valid actions are: spawn, status, terminate, read_results, list`);
232
- }
233
- },
208
+ for (const agent of allAgents) {
209
+ let statusEmoji = "\u23F3";
210
+ if (agent.status === "running") statusEmoji = "\u{1F504}";
211
+ else if (agent.status === "completed") statusEmoji = "\u2705";
212
+ else if (agent.status === "failed") statusEmoji = "\u274C";
213
+ else if (agent.status === "terminated") statusEmoji = "\u23F9\uFE0F";
214
+ const taskPreview = agent.prompt.substring(0, 60) + (agent.prompt.length > 60 ? "..." : "");
215
+ output += `
216
+ ${statusEmoji} **${agent.id}** (${agent.status})
217
+ Task: ${taskPreview}
218
+ `;
219
+ }
220
+ return output;
221
+ }
222
+ default:
223
+ throw new Error(`Unknown action "${action}". Valid actions are: spawn, status, terminate, read_results, list`);
224
+ }
225
+ }
226
+ };
227
+ export {
228
+ subAgentTool
234
229
  };
235
230
  //# sourceMappingURL=sub-agent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sub-agent.js","sourceRoot":"","sources":["../../src/tools/sub-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/tools/sub-agent.ts"],"sourcesContent":["/**\r\n * Sub-Agent Tool\r\n * \r\n * Allows the main AI agent to spawn and manage background sub-agents\r\n * for delegated tasks. Uses action-based pattern similar to background_command.\r\n */\r\n\r\nimport { Tool } from './types.js';\r\nimport { SubAgentManager } from '../services/sub-agent-manager.js';\r\n\r\nexport const subAgentTool: Tool = {\r\n schema: {\r\n name: 'sub_agent',\r\n description: `Spawn and manage background sub-agents for delegated tasks. Sub-agents run independently and have full tool access.\r\n\r\nACTIONS:\r\n1. \"spawn\" - Create and start a new sub-agent with a specific task\r\n2. \"wait_for_status\" - Wait for a duration and then check the status/progress of a sub-agent enterduration as 0 if you want to check immediately\r\n3. \"terminate\" - Kill a running sub-agent\r\n4. \"read_results\" - Get the final results and diffs from a completed sub-agent\r\n5. \"list\" - List all sub-agents and their current status\r\n\r\nUSE CASES:\r\n- Delegate a well-defined subtask while you continue with other work\r\n- Run multiple independent tasks in parallel\r\n- Handle complex multi-step operations in the background\r\n\r\nCOMPLEXITY GUIDELINES (1-10):\r\n- 1-3: Very simple tasks (create a single file, fix a typo)\r\n- 4-5: Simple tasks (implement a small function, update configs)\r\n- 6-7: Medium tasks (implement a feature, refactor a file)\r\n- 8-10: Complex tasks (multi-file refactors, debugging complex issues)\r\n\r\nIMPORTANT:\r\n- You CANNOT call task_complete while sub-agents are running\r\n- Always check status or read_results before completing your main task\r\n- Sub-agents auto-terminate after 10 minutes\r\n- Maximum 5 concurrent sub-agents allowed\r\n- Sub-agents use the same session quota as you`,\r\n parameters: {\r\n type: 'object',\r\n properties: {\r\n action: {\r\n type: 'string',\r\n enum: ['spawn', 'wait_for_status', 'terminate', 'read_results', 'list'],\r\n description: 'The action to perform.',\r\n },\r\n agent_id: {\r\n type: 'string',\r\n description: 'Sub-agent ID. REQUIRED for wait_for_status, terminate, and read_results actions.',\r\n },\r\n time_delay: {\r\n type: 'integer',\r\n description: 'Optional delay in seconds to wait before checking status (for wait_for_status action). Set to 0 for immediate check.',\r\n },\r\n prompt: {\r\n type: 'string',\r\n description: 'Detailed task description for the sub-agent. REQUIRED for spawn action. Be specific about what needs to be done.',\r\n },\r\n context: {\r\n type: 'string',\r\n description: 'Relevant context information for spawn action. Include file paths, project structure, relevant code snippets, or any information the sub-agent needs.',\r\n },\r\n working_directory: {\r\n type: 'string',\r\n description: 'Already Existing Working directory for the sub-agent to start working in. REQUIRED for spawn action.',\r\n },\r\n complexity: {\r\n type: 'integer',\r\n description: 'Task complexity rating 1-10. REQUIRED for spawn action. Determines which AI model is used.',\r\n },\r\n },\r\n required: ['action'],\r\n },\r\n },\r\n\r\n async execute(args, context) {\r\n const { action, agent_id, prompt, context: agentContext, working_directory, complexity, time_delay } = args;\r\n\r\n switch (action) {\r\n case 'spawn': {\r\n // Validate required parameters\r\n if (!prompt) {\r\n throw new Error('Missing required parameter \"prompt\" for action \"spawn\"');\r\n }\r\n if (!working_directory) {\r\n throw new Error('Missing required parameter \"working_directory\" for action \"spawn\"');\r\n }\r\n if (complexity === undefined || complexity === null) {\r\n throw new Error('Missing required parameter \"complexity\" for action \"spawn\"');\r\n }\r\n if (complexity < 1 || complexity > 10) {\r\n throw new Error('Complexity must be between 1 and 10');\r\n }\r\n\r\n // Spawn the sub-agent\r\n // Pass parent's contextManager so the subagent can route tools\r\n // through the active remote session (SSH/Docker/WSL)\r\n const result = await SubAgentManager.spawnSubAgent({\r\n prompt,\r\n context: agentContext || '',\r\n workingDirectory: working_directory,\r\n complexity,\r\n parentContextManager: context.contextManager,\r\n });\r\n\r\n if (!result.success) {\r\n throw new Error(result.error || 'Failed to spawn sub-agent');\r\n }\r\n\r\n const modelUsed = complexity <= 5 ? 'Gemini 3 Flash Preview' : 'Gemini 3.1 Pro Preview';\r\n\r\n return `**Sub-Agent Spawned Successfully**\r\n\r\n**Agent ID:** ${result.agentId}\r\n**Model:** ${modelUsed} (complexity: ${complexity}/10)\r\n**Working Directory:** ${working_directory}\r\n**Task:** ${prompt.substring(0, 200)}${prompt.length > 200 ? '...' : ''}\r\n\r\nThe sub-agent is now running in the background. Use:\r\n- \\`sub_agent(action=\"wait_for_status\", agent_id=\"${result.agentId}\", time_delay=5)\\` to wait and check progress\r\n- \\`sub_agent(action=\"terminate\", agent_id=\"${result.agentId}\")\\` to stop it\r\n- \\`sub_agent(action=\"read_results\", agent_id=\"${result.agentId}\")\\` to get results when completed\r\n\r\n⚠️ You cannot call task_complete while this sub-agent is running.`;\r\n }\r\n\r\n case 'wait_for_status': {\r\n if (!agent_id) {\r\n throw new Error('Missing required parameter \"agent_id\" for action \"wait_for_status\"');\r\n }\r\n\r\n // Wait if delay is requested\r\n if (time_delay && time_delay > 0) {\r\n await new Promise(resolve => setTimeout(resolve, time_delay * 1000));\r\n }\r\n\r\n const subAgent = SubAgentManager.getSubAgent(agent_id);\r\n if (!subAgent) {\r\n // List available sub-agents\r\n const allAgents = SubAgentManager.getAllSubAgents();\r\n if (allAgents.length === 0) {\r\n throw new Error(`Sub-agent \"${agent_id}\" not found. No sub-agents are currently tracked.`);\r\n }\r\n const agentList = allAgents.map(a =>\r\n `- ${a.id} (${a.status}): ${a.prompt.substring(0, 50)}...`\r\n ).join('\\n');\r\n throw new Error(`Sub-agent \"${agent_id}\" not found.\\n\\nAvailable sub-agents:\\n${agentList}`);\r\n }\r\n\r\n const durationMs = (subAgent.endTime || new Date()).getTime() - subAgent.startTime.getTime();\r\n const durationSec = Math.round(durationMs / 1000);\r\n\r\n let statusEmoji = '⏳';\r\n if (subAgent.status === 'running') statusEmoji = '🔄';\r\n else if (subAgent.status === 'completed') statusEmoji = '✓';\r\n else if (subAgent.status === 'failed') statusEmoji = '❌';\r\n else if (subAgent.status === 'terminated') statusEmoji = '⏹️';\r\n\r\n let statusDetails = `**Sub-Agent Status**\r\n\r\n**Agent ID:** ${agent_id}\r\n**Status:** ${statusEmoji} ${subAgent.status}\r\n**Model:** ${subAgent.model}\r\n**Duration:** ${durationSec}s\r\n**Turns:** ${subAgent.turnCount}\r\n**File Operations:** ${subAgent.fileOperations.length}\r\n**Tool Calls:** ${subAgent.toolHistory.length}`;\r\n\r\n if (subAgent.result) {\r\n statusDetails += `\\n\\n**Result:** ${subAgent.result}`;\r\n }\r\n\r\n if (subAgent.error) {\r\n statusDetails += `\\n\\n**Error:** ${subAgent.error}`;\r\n }\r\n\r\n if (subAgent.status === 'completed' || subAgent.status === 'failed' || subAgent.status === 'terminated') {\r\n statusDetails += `\\n\\nUse \\`sub_agent(action=\"read_results\", agent_id=\"${agent_id}\")\\` to see the full diff of changes.`;\r\n }\r\n\r\n return statusDetails;\r\n }\r\n\r\n case 'terminate': {\r\n if (!agent_id) {\r\n throw new Error('Missing required parameter \"agent_id\" for action \"terminate\"');\r\n }\r\n\r\n const result = SubAgentManager.terminateSubAgent(agent_id);\r\n if (!result.success) {\r\n throw new Error(result.error || 'Failed to terminate sub-agent');\r\n }\r\n\r\n return `**Sub-Agent Terminated**\r\n\r\n**Agent ID:** ${agent_id}\r\n**Status:** ⏹️ Terminated\r\n\r\nThe sub-agent has been stopped. Use \\`sub_agent(action=\"read_results\", agent_id=\"${agent_id}\")\\` to see what it accomplished before termination.`;\r\n }\r\n\r\n case 'read_results': {\r\n if (!agent_id) {\r\n throw new Error('Missing required parameter \"agent_id\" for action \"read_results\"');\r\n }\r\n\r\n const subAgent = SubAgentManager.getSubAgent(agent_id);\r\n if (!subAgent) {\r\n throw new Error(`Sub-agent \"${agent_id}\" not found`);\r\n }\r\n\r\n if (subAgent.status === 'running' || subAgent.status === 'pending') {\r\n throw new Error(`Sub-agent \"${agent_id}\" is still running. Wait for it to complete or terminate it first.`);\r\n }\r\n\r\n // Get the formatted diff output\r\n const diffOutput = SubAgentManager.getSubAgentDiff(agent_id);\r\n\r\n // Mark as read\r\n SubAgentManager.markSubAgentRead(agent_id);\r\n\r\n return diffOutput;\r\n }\r\n\r\n case 'list': {\r\n const allAgents = SubAgentManager.getAllSubAgents();\r\n\r\n if (allAgents.length === 0) {\r\n return 'No sub-agents currently tracked.';\r\n }\r\n\r\n const runningCount = allAgents.filter(a => a.status === 'running' || a.status === 'pending').length;\r\n const completedCount = allAgents.filter(a => a.status === 'completed').length;\r\n const failedCount = allAgents.filter(a => a.status === 'failed' || a.status === 'terminated').length;\r\n\r\n let output = `**Sub-Agent Summary**\r\n\r\n**Running:** ${runningCount}\r\n**Completed:** ${completedCount} \r\n**Failed/Terminated:** ${failedCount}\r\n\r\n**All Sub-Agents:**\r\n`;\r\n\r\n for (const agent of allAgents) {\r\n let statusEmoji = '⏳';\r\n if (agent.status === 'running') statusEmoji = '🔄';\r\n else if (agent.status === 'completed') statusEmoji = '✅';\r\n else if (agent.status === 'failed') statusEmoji = '❌';\r\n else if (agent.status === 'terminated') statusEmoji = '⏹️';\r\n\r\n const taskPreview = agent.prompt.substring(0, 60) + (agent.prompt.length > 60 ? '...' : '');\r\n output += `\\n${statusEmoji} **${agent.id}** (${agent.status})\\n Task: ${taskPreview}\\n`;\r\n }\r\n\r\n return output;\r\n }\r\n\r\n default:\r\n throw new Error(`Unknown action \"${action}\". Valid actions are: spawn, status, terminate, read_results, list`);\r\n }\r\n },\r\n};\r\n"],"mappings":"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","names":[]}
@@ -1,30 +1,31 @@
1
- export const taskCompleteTool = {
2
- schema: {
3
- name: 'task_complete',
4
- description: `FINAL TOOL - Call this to end the conversation after completing the user's request.
5
-
6
- IMPORTANT - How to use this tool:
7
- 1. First, output ALL your response text (explanations, summaries, results, etc.)
8
- 2. Then call task_complete() with NO PARAMETERS to signal you are done
9
-
10
- This tool takes NO parameters. Your response text should be streamed before calling this tool.
11
-
12
- EXAMPLES:
13
- - User: "Hey" Output: "Hello! How can I help you today?" Then call: task_complete()
14
- - User: "Fix the bug" Do work Output: "I've fixed the bug by..." Then call: task_complete()
15
- - User: "Add feature X" Do work Output: "I've implemented feature X. Here's what I did..." Then call: task_complete()
16
-
1
+ const taskCompleteTool = {
2
+ schema: {
3
+ name: "task_complete",
4
+ description: `FINAL TOOL - Call this to end the conversation after completing the user's request.
5
+
6
+ IMPORTANT - How to use this tool:
7
+ 1. First, output ALL your response text (explanations, summaries, results, etc.)
8
+ 2. Then call task_complete() with NO PARAMETERS to signal you are done
9
+
10
+ This tool takes NO parameters. Your response text should be streamed before calling this tool.
11
+
12
+ EXAMPLES:
13
+ - User: "Hey" \u2192 Output: "Hello! How can I help you today?" \u2192 Then call: task_complete()
14
+ - User: "Fix the bug" \u2192 Do work \u2192 Output: "I've fixed the bug by..." \u2192 Then call: task_complete()
15
+ - User: "Add feature X" \u2192 Do work \u2192 Output: "I've implemented feature X. Here's what I did..." \u2192 Then call: task_complete()
16
+
17
17
  DO NOT include any summary in this tool call - put all your response in the text output before calling this tool.`,
18
- parameters: {
19
- type: 'object',
20
- properties: {},
21
- required: [],
22
- },
23
- },
24
- async execute() {
25
- // This tool just signals completion - no parameters needed
26
- // All response content should be streamed before this tool is called
27
- return 'Task completed.';
28
- },
18
+ parameters: {
19
+ type: "object",
20
+ properties: {},
21
+ required: []
22
+ }
23
+ },
24
+ async execute() {
25
+ return "Task completed.";
26
+ }
27
+ };
28
+ export {
29
+ taskCompleteTool
29
30
  };
30
31
  //# sourceMappingURL=task-complete.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"task-complete.js","sourceRoot":"","sources":["../../src/tools/task-complete.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAS;IACpC,MAAM,EAAE;QACN,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE;;;;;;;;;;;;;kHAaiG;QAC9G,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACb;KACF;IACD,KAAK,CAAC,OAAO;QACX,2DAA2D;QAC3D,qEAAqE;QACrE,OAAO,iBAAiB,CAAC;IAC3B,CAAC;CACF,CAAC"}
1
+ {"version":3,"sources":["../../src/tools/task-complete.ts"],"sourcesContent":["import { Tool } from './types.js';\r\n\r\nexport const taskCompleteTool: Tool = {\r\n schema: {\r\n name: 'task_complete',\r\n description: `FINAL TOOL - Call this to end the conversation after completing the user's request.\r\n\r\nIMPORTANT - How to use this tool:\r\n1. First, output ALL your response text (explanations, summaries, results, etc.)\r\n2. Then call task_complete() with NO PARAMETERS to signal you are done\r\n\r\nThis tool takes NO parameters. Your response text should be streamed before calling this tool.\r\n\r\nEXAMPLES:\r\n- User: \"Hey\" → Output: \"Hello! How can I help you today?\" → Then call: task_complete()\r\n- User: \"Fix the bug\" → Do work → Output: \"I've fixed the bug by...\" → Then call: task_complete()\r\n- User: \"Add feature X\" → Do work → Output: \"I've implemented feature X. Here's what I did...\" → Then call: task_complete()\r\n\r\nDO NOT include any summary in this tool call - put all your response in the text output before calling this tool.`,\r\n parameters: {\r\n type: 'object',\r\n properties: {},\r\n required: [],\r\n },\r\n },\r\n async execute() {\r\n // This tool just signals completion - no parameters needed\r\n // All response content should be streamed before this tool is called\r\n return 'Task completed.';\r\n },\r\n};\r\n\r\n"],"mappings":"AAEO,MAAM,mBAAyB;AAAA,EACpC,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAcb,YAAY;AAAA,MACV,MAAM;AAAA,MACN,YAAY,CAAC;AAAA,MACb,UAAU,CAAC;AAAA,IACb;AAAA,EACF;AAAA,EACA,MAAM,UAAU;AAGd,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -1,2 +1 @@
1
- export {};
2
1
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}