centaurus-cli 3.0.0 → 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 -5037
  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 +1513 -973
  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 +605 -537
  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 -400
  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 -3249
  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 -511
  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 -167
  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,361 +1,326 @@
1
- /**
2
- * Shell Input Agent Service
3
- *
4
- * An isolated AI agent that handles shell input prompts during Agent Control Mode.
5
- * Completely separate from the main chat agent - has its own conversation history,
6
- * tools, and lifecycle. Terminates immediately when the shell command completes.
7
- */
8
- import { aiServiceClient } from './ai-service-client.js';
9
- import { sessionQuotaManager } from './session-quota-manager.js';
10
- import { quickLog } from '../utils/conversation-logger.js';
11
- // ==================== Constants ====================
12
- const MAX_TURNS_PER_SESSION = 20; // Max AI turns per shell session
13
- const MODEL = 'gemini-3-flash-preview'; // Fast model for quick responses
14
- // ==================== Helper Functions ====================
15
- /**
16
- * Convert literal escape sequences (like \n, \r, \t) to actual control characters.
17
- * The AI often returns "1\n" where \n is meant to be a newline but arrives as literal chars.
18
- */
1
+ import { aiServiceClient } from "./ai-service-client.js";
2
+ import { sessionQuotaManager } from "./session-quota-manager.js";
3
+ import { quickLog } from "../utils/conversation-logger.js";
4
+ const MAX_TURNS_PER_SESSION = 20;
5
+ const MODEL = "gemini-3-flash-preview";
19
6
  function convertEscapeSequences(input) {
20
- return input
21
- .replace(/\\n/g, '\n') // newline
22
- .replace(/\\r/g, '\r') // carriage return
23
- .replace(/\\t/g, '\t') // tab
24
- .replace(/\\x1b/gi, '\x1b') // escape for arrow keys etc
25
- .replace(/\\e/g, '\x1b'); // alternative escape notation
7
+ return input.replace(/\\n/g, "\n").replace(/\\r/g, "\r").replace(/\\t/g, " ").replace(/\\x1b/gi, "\x1B").replace(/\\e/g, "\x1B");
26
8
  }
27
- // ==================== Shell Input System Prompt ====================
28
- const SHELL_INPUT_SYSTEM_PROMPT = `You are a specialized AI agent that ONLY provides input to an interactive shell command.
29
-
30
- CRITICAL RULES:
31
- 1. You may ONLY use the execute_command tool with shell_input parameter
32
- 2. NEVER try to start a new command - only send input to the EXISTING running shell
33
- 3. Respond with ONLY the tool call - no explanations needed
34
- 4. Set SafeToAutoRun: true to avoid approval prompts
35
- 5. For password prompts, DO NOT provide passwords - skip with a neutral response
36
- 6. IMPORTANT: The shell_input value will automatically have Enter pressed after it
37
- - Just provide the text you want to type, the system will press Enter
38
- - For example: shell_input="1" NOT shell_input="1\\n"
39
-
9
+ const SHELL_INPUT_SYSTEM_PROMPT = `You are a specialized AI agent that ONLY provides input to an interactive shell command.
10
+
11
+ CRITICAL RULES:
12
+ 1. You may ONLY use the execute_command tool with shell_input parameter
13
+ 2. NEVER try to start a new command - only send input to the EXISTING running shell
14
+ 3. Respond with ONLY the tool call - no explanations needed
15
+ 4. Set SafeToAutoRun: true to avoid approval prompts
16
+ 5. For password prompts, DO NOT provide passwords - skip with a neutral response
17
+ 6. IMPORTANT: The shell_input value will automatically have Enter pressed after it
18
+ - Just provide the text you want to type, the system will press Enter
19
+ - For example: shell_input="1" NOT shell_input="1\\n"
20
+
40
21
  Your ONLY job is to analyze shell output and provide appropriate input when prompted.`;
41
- // ==================== ShellInputAgent Class ====================
42
22
  class ShellInputAgentClass {
43
- sessions = new Map();
44
- toolRegistry;
45
- onShellInput;
46
- onToolExecutionUpdate;
47
- onPromptAnswered; // Callback when a prompt has been answered
48
- processingLock = new Map(); // Prevent concurrent AI calls per shell
49
- /**
50
- * Initialize the agent with a tool registry
51
- */
52
- initialize(toolRegistry) {
53
- this.toolRegistry = toolRegistry;
54
- quickLog(`[${new Date().toISOString()}] [ShellInputAgent] Initialized with tool registry\n`);
23
+ sessions = /* @__PURE__ */ new Map();
24
+ toolRegistry;
25
+ onShellInput;
26
+ onToolExecutionUpdate;
27
+ onPromptAnswered;
28
+ // Callback when a prompt has been answered
29
+ processingLock = /* @__PURE__ */ new Map();
30
+ // Prevent concurrent AI calls per shell
31
+ /**
32
+ * Initialize the agent with a tool registry
33
+ */
34
+ initialize(toolRegistry) {
35
+ this.toolRegistry = toolRegistry;
36
+ quickLog(`[${(/* @__PURE__ */ new Date()).toISOString()}] [ShellInputAgent] Initialized with tool registry
37
+ `);
38
+ }
39
+ /**
40
+ * Set callback for sending input to shell (bridges to App.tsx's onShellInput)
41
+ */
42
+ setOnShellInput(callback) {
43
+ this.onShellInput = callback;
44
+ }
45
+ /**
46
+ * Set callback for tool execution updates (for UI feedback)
47
+ */
48
+ setOnToolExecutionUpdate(callback) {
49
+ this.onToolExecutionUpdate = callback;
50
+ }
51
+ /**
52
+ * Set callback for when a prompt has been answered
53
+ * This is used to update the UI to show a tick instead of spinner
54
+ */
55
+ setOnPromptAnswered(callback) {
56
+ this.onPromptAnswered = callback;
57
+ }
58
+ /**
59
+ * Start a new shell input session
60
+ * @param shellId Unique identifier for this shell session
61
+ * @param command The command being run
62
+ * @param cwd Current working directory
63
+ * @param mainConversation Optional main agent conversation history for context
64
+ */
65
+ startSession(shellId, command, cwd, mainConversation) {
66
+ this.terminateSession(shellId);
67
+ const session = {
68
+ shellId,
69
+ command,
70
+ cwd,
71
+ isActive: true,
72
+ abortController: new AbortController(),
73
+ conversationHistory: [],
74
+ mainConversationContext: mainConversation,
75
+ turnCount: 0,
76
+ startTime: /* @__PURE__ */ new Date()
77
+ };
78
+ this.sessions.set(shellId, session);
79
+ this.processingLock.set(shellId, false);
80
+ const contextInfo = mainConversation ? ` (with ${mainConversation.length} context messages)` : "";
81
+ quickLog(`[${(/* @__PURE__ */ new Date()).toISOString()}] [ShellInputAgent] Started session for ${shellId}: ${command}${contextInfo}
82
+ `);
83
+ }
84
+ /**
85
+ * Handle an input prompt detected in shell output
86
+ * Returns quickly - AI call runs in background
87
+ */
88
+ async handleInputPrompt(shellId, shellOutput, promptContext, inputType, confidence) {
89
+ quickLog(`[${(/* @__PURE__ */ new Date()).toISOString()}] [ShellInputAgent] handleInputPrompt called for ${shellId}, sessions count: ${this.sessions.size}
90
+ `);
91
+ const session = this.sessions.get(shellId);
92
+ if (!session || !session.isActive) {
93
+ quickLog(`[${(/* @__PURE__ */ new Date()).toISOString()}] [ShellInputAgent] No active session for ${shellId}, ignoring prompt
94
+ `);
95
+ return;
55
96
  }
56
- /**
57
- * Set callback for sending input to shell (bridges to App.tsx's onShellInput)
58
- */
59
- setOnShellInput(callback) {
60
- this.onShellInput = callback;
97
+ if (this.processingLock.get(shellId)) {
98
+ quickLog(`[${(/* @__PURE__ */ new Date()).toISOString()}] [ShellInputAgent] Already processing for ${shellId}, ignoring duplicate
99
+ `);
100
+ return;
61
101
  }
62
- /**
63
- * Set callback for tool execution updates (for UI feedback)
64
- */
65
- setOnToolExecutionUpdate(callback) {
66
- this.onToolExecutionUpdate = callback;
102
+ this.processingLock.set(shellId, true);
103
+ this.processInputPrompt(session, shellOutput, promptContext, inputType, confidence).catch((error) => {
104
+ quickLog(`[${(/* @__PURE__ */ new Date()).toISOString()}] [ShellInputAgent] Error processing prompt for ${shellId}: ${error.message}
105
+ `);
106
+ }).finally(() => {
107
+ this.processingLock.set(shellId, false);
108
+ });
109
+ }
110
+ /**
111
+ * Process an input prompt with AI
112
+ */
113
+ async processInputPrompt(session, shellOutput, promptContext, inputType, confidence) {
114
+ quickLog(`[${(/* @__PURE__ */ new Date()).toISOString()}] [ShellInputAgent] processInputPrompt entry for ${session.shellId}, isActive=${session.isActive}, turnCount=${session.turnCount}
115
+ `);
116
+ if (!session.isActive) {
117
+ quickLog(`[${(/* @__PURE__ */ new Date()).toISOString()}] [ShellInputAgent] Session not active, returning
118
+ `);
119
+ return;
67
120
  }
68
- /**
69
- * Set callback for when a prompt has been answered
70
- * This is used to update the UI to show a tick instead of spinner
71
- */
72
- setOnPromptAnswered(callback) {
73
- this.onPromptAnswered = callback;
121
+ if (session.turnCount >= MAX_TURNS_PER_SESSION) {
122
+ quickLog(`[${(/* @__PURE__ */ new Date()).toISOString()}] [ShellInputAgent] Session ${session.shellId} hit max turns
123
+ `);
124
+ return;
74
125
  }
75
- /**
76
- * Start a new shell input session
77
- * @param shellId Unique identifier for this shell session
78
- * @param command The command being run
79
- * @param cwd Current working directory
80
- * @param mainConversation Optional main agent conversation history for context
81
- */
82
- startSession(shellId, command, cwd, mainConversation) {
83
- // Terminate any existing session for this shell
84
- this.terminateSession(shellId);
85
- const session = {
86
- shellId,
87
- command,
88
- cwd,
89
- isActive: true,
90
- abortController: new AbortController(),
91
- conversationHistory: [],
92
- mainConversationContext: mainConversation,
93
- turnCount: 0,
94
- startTime: new Date()
95
- };
96
- this.sessions.set(shellId, session);
97
- this.processingLock.set(shellId, false);
98
- const contextInfo = mainConversation ? ` (with ${mainConversation.length} context messages)` : '';
99
- quickLog(`[${new Date().toISOString()}] [ShellInputAgent] Started session for ${shellId}: ${command}${contextInfo}\n`);
126
+ if (!sessionQuotaManager.canSendMessage()) {
127
+ quickLog(`[${(/* @__PURE__ */ new Date()).toISOString()}] [ShellInputAgent] Session quota exhausted
128
+ `);
129
+ return;
100
130
  }
101
- /**
102
- * Handle an input prompt detected in shell output
103
- * Returns quickly - AI call runs in background
104
- */
105
- async handleInputPrompt(shellId, shellOutput, promptContext, inputType, confidence) {
106
- quickLog(`[${new Date().toISOString()}] [ShellInputAgent] handleInputPrompt called for ${shellId}, sessions count: ${this.sessions.size}\n`);
107
- const session = this.sessions.get(shellId);
108
- if (!session || !session.isActive) {
109
- quickLog(`[${new Date().toISOString()}] [ShellInputAgent] No active session for ${shellId}, ignoring prompt\n`);
110
- return;
111
- }
112
- // Check if already processing a prompt for this shell
113
- if (this.processingLock.get(shellId)) {
114
- quickLog(`[${new Date().toISOString()}] [ShellInputAgent] Already processing for ${shellId}, ignoring duplicate\n`);
115
- return;
116
- }
117
- // Set lock
118
- this.processingLock.set(shellId, true);
119
- // Run AI call in background (don't await)
120
- this.processInputPrompt(session, shellOutput, promptContext, inputType, confidence)
121
- .catch(error => {
122
- quickLog(`[${new Date().toISOString()}] [ShellInputAgent] Error processing prompt for ${shellId}: ${error.message}\n`);
123
- })
124
- .finally(() => {
125
- this.processingLock.set(shellId, false);
126
- });
131
+ if (!this.toolRegistry) {
132
+ quickLog(`[${(/* @__PURE__ */ new Date()).toISOString()}] [ShellInputAgent] Tool registry not initialized
133
+ `);
134
+ return;
127
135
  }
128
- /**
129
- * Process an input prompt with AI
130
- */
131
- async processInputPrompt(session, shellOutput, promptContext, inputType, confidence) {
132
- quickLog(`[${new Date().toISOString()}] [ShellInputAgent] processInputPrompt entry for ${session.shellId}, isActive=${session.isActive}, turnCount=${session.turnCount}\n`);
136
+ session.turnCount++;
137
+ session.lastInputTime = /* @__PURE__ */ new Date();
138
+ const userPrompt = this.buildInputPrompt(session, shellOutput, promptContext, inputType, confidence);
139
+ if (session.conversationHistory.length === 0) {
140
+ session.conversationHistory.push({
141
+ role: "user",
142
+ content: SHELL_INPUT_SYSTEM_PROMPT + "\n\n" + userPrompt
143
+ });
144
+ } else {
145
+ session.conversationHistory.push({
146
+ role: "user",
147
+ content: userPrompt
148
+ });
149
+ }
150
+ const executeCommandSchema = this.toolRegistry.getSchemas().filter((t) => t.name === "execute_command");
151
+ try {
152
+ let assistantMessage = "";
153
+ let toolCalls = [];
154
+ sessionQuotaManager.incrementMessageCount();
155
+ for await (const chunk of aiServiceClient.streamChat(
156
+ MODEL,
157
+ session.conversationHistory,
158
+ executeCommandSchema,
159
+ {
160
+ cwd: session.cwd,
161
+ platform: process.platform,
162
+ shell: process.env.SHELL || "cmd.exe",
163
+ os: "windows",
164
+ homeDir: process.env.USERPROFILE || ""
165
+ },
166
+ void 0,
167
+ void 0,
168
+ session.abortController.signal
169
+ )) {
133
170
  if (!session.isActive) {
134
- quickLog(`[${new Date().toISOString()}] [ShellInputAgent] Session not active, returning\n`);
135
- return;
171
+ quickLog(`[${(/* @__PURE__ */ new Date()).toISOString()}] [ShellInputAgent] Session ${session.shellId} terminated during streaming
172
+ `);
173
+ return;
136
174
  }
137
- // Check turn limit
138
- if (session.turnCount >= MAX_TURNS_PER_SESSION) {
139
- quickLog(`[${new Date().toISOString()}] [ShellInputAgent] Session ${session.shellId} hit max turns\n`);
140
- return;
175
+ if (chunk.type === "error") {
176
+ throw new Error(chunk.message);
141
177
  }
142
- // Check quota
143
- if (!sessionQuotaManager.canSendMessage()) {
144
- quickLog(`[${new Date().toISOString()}] [ShellInputAgent] Session quota exhausted\n`);
145
- return;
178
+ if (chunk.type === "text") {
179
+ assistantMessage += chunk.content;
146
180
  }
147
- // Check if tool registry is available
148
- if (!this.toolRegistry) {
149
- quickLog(`[${new Date().toISOString()}] [ShellInputAgent] Tool registry not initialized\n`);
150
- return;
181
+ if (chunk.type === "tool_call") {
182
+ const toolCall = chunk.toolCall;
183
+ if (toolCall.arguments && typeof toolCall.arguments === "string") {
184
+ try {
185
+ toolCall.arguments = JSON.parse(toolCall.arguments);
186
+ } catch (e) {
187
+ }
188
+ }
189
+ toolCalls.push(toolCall);
190
+ }
191
+ if (chunk.type === "done") {
192
+ break;
151
193
  }
152
- session.turnCount++;
153
- session.lastInputTime = new Date();
154
- // Build the prompt for this input
155
- const userPrompt = this.buildInputPrompt(session, shellOutput, promptContext, inputType, confidence);
156
- // Add to session's isolated conversation history
157
- if (session.conversationHistory.length === 0) {
158
- // First message includes system context
194
+ }
195
+ if (!session.isActive) {
196
+ return;
197
+ }
198
+ for (const toolCall of toolCalls) {
199
+ if (toolCall.name === "execute_command" && toolCall.arguments?.shell_input) {
200
+ const rawShellInput = toolCall.arguments.shell_input;
201
+ let shellInput = convertEscapeSequences(rawShellInput);
202
+ if (!shellInput.endsWith("\n") && !shellInput.endsWith("\r")) {
203
+ shellInput += "\r";
204
+ }
205
+ if (this.onShellInput) {
206
+ quickLog(`[${(/* @__PURE__ */ new Date()).toISOString()}] [ShellInputAgent] Sending input to ${session.shellId}: "${rawShellInput}" + Enter
207
+ `);
208
+ this.onShellInput(session.shellId, shellInput);
209
+ if (this.onPromptAnswered) {
210
+ this.onPromptAnswered(session.shellId);
211
+ }
159
212
  session.conversationHistory.push({
160
- role: 'user',
161
- content: SHELL_INPUT_SYSTEM_PROMPT + '\n\n' + userPrompt
213
+ role: "assistant",
214
+ content: "",
215
+ tool_calls: [toolCall]
162
216
  });
163
- }
164
- else {
165
217
  session.conversationHistory.push({
166
- role: 'user',
167
- content: userPrompt
218
+ role: "tool",
219
+ tool_call_id: toolCall.id,
220
+ content: `Sent input to shell: ${shellInput}`
168
221
  });
222
+ }
169
223
  }
170
- // Get only execute_command tool schema
171
- const executeCommandSchema = this.toolRegistry.getSchemas().filter(t => t.name === 'execute_command');
172
- try {
173
- let assistantMessage = '';
174
- let toolCalls = [];
175
- // Increment quota
176
- sessionQuotaManager.incrementMessageCount();
177
- // Stream AI response with abort signal
178
- for await (const chunk of aiServiceClient.streamChat(MODEL, session.conversationHistory, executeCommandSchema, {
179
- cwd: session.cwd,
180
- platform: process.platform,
181
- shell: process.env.SHELL || 'cmd.exe',
182
- os: 'windows',
183
- homeDir: process.env.USERPROFILE || ''
184
- }, undefined, undefined, session.abortController.signal)) {
185
- // Check if session was terminated
186
- if (!session.isActive) {
187
- quickLog(`[${new Date().toISOString()}] [ShellInputAgent] Session ${session.shellId} terminated during streaming\n`);
188
- return;
189
- }
190
- if (chunk.type === 'error') {
191
- throw new Error(chunk.message);
192
- }
193
- if (chunk.type === 'text') {
194
- assistantMessage += chunk.content;
195
- }
196
- if (chunk.type === 'tool_call') {
197
- const toolCall = chunk.toolCall;
198
- // Parse string arguments if needed
199
- if (toolCall.arguments && typeof toolCall.arguments === 'string') {
200
- try {
201
- toolCall.arguments = JSON.parse(toolCall.arguments);
202
- }
203
- catch (e) {
204
- // Ignore parsing error
205
- }
206
- }
207
- toolCalls.push(toolCall);
208
- }
209
- if (chunk.type === 'done') {
210
- break;
211
- }
212
- }
213
- // Check again if session is still active
214
- if (!session.isActive) {
215
- return;
216
- }
217
- // Process tool calls
218
- for (const toolCall of toolCalls) {
219
- if (toolCall.name === 'execute_command' && toolCall.arguments?.shell_input) {
220
- const rawShellInput = toolCall.arguments.shell_input;
221
- // Convert escape sequences like \n to actual newlines
222
- let shellInput = convertEscapeSequences(rawShellInput);
223
- // Automatically append Enter (carriage return) if not already present
224
- // This ensures the input is actually submitted to the shell
225
- if (!shellInput.endsWith('\n') && !shellInput.endsWith('\r')) {
226
- shellInput += '\r';
227
- }
228
- // Send input to shell via callback
229
- if (this.onShellInput) {
230
- quickLog(`[${new Date().toISOString()}] [ShellInputAgent] Sending input to ${session.shellId}: "${rawShellInput}" + Enter\n`);
231
- this.onShellInput(session.shellId, shellInput);
232
- // Notify that a prompt has been answered (to update UI spinner -> tick)
233
- if (this.onPromptAnswered) {
234
- this.onPromptAnswered(session.shellId);
235
- }
236
- // Add to conversation history
237
- session.conversationHistory.push({
238
- role: 'assistant',
239
- content: '',
240
- tool_calls: [toolCall]
241
- });
242
- session.conversationHistory.push({
243
- role: 'tool',
244
- tool_call_id: toolCall.id,
245
- content: `Sent input to shell: ${shellInput}`
246
- });
247
- }
248
- }
249
- }
250
- }
251
- catch (error) {
252
- if (error.name === 'AbortError') {
253
- quickLog(`[${new Date().toISOString()}] [ShellInputAgent] Session ${session.shellId} aborted\n`);
254
- return;
255
- }
256
- throw error;
257
- }
224
+ }
225
+ } catch (error) {
226
+ if (error.name === "AbortError") {
227
+ quickLog(`[${(/* @__PURE__ */ new Date()).toISOString()}] [ShellInputAgent] Session ${session.shellId} aborted
228
+ `);
229
+ return;
230
+ }
231
+ throw error;
258
232
  }
259
- /**
260
- * Build the input prompt for AI
261
- */
262
- buildInputPrompt(session, shellOutput, promptContext, inputType, confidence) {
263
- // Get last 30 lines of output
264
- const lastLines = shellOutput.split('\n').slice(-30).join('\n');
265
- // Build context from main conversation if available
266
- let conversationContext = '';
267
- if (session.mainConversationContext && session.mainConversationContext.length > 0) {
268
- // Extract user messages for context (most relevant for understanding intent)
269
- const userMessages = session.mainConversationContext
270
- .filter(msg => msg.role === 'user' && typeof msg.content === 'string')
271
- .map(msg => msg.content)
272
- .slice(-3) // Last 3 user messages for context
273
- .join('\n---\n');
274
- if (userMessages) {
275
- conversationContext = `
276
- **User's Original Intent (from main conversation):**
277
- \`\`\`
278
- ${userMessages.substring(0, 1000)}${userMessages.length > 1000 ? '...[truncated]' : ''}
279
- \`\`\`
280
-
281
- Consider the user's original intent when providing input. If the user mentioned specific values to use, prefer those.
233
+ }
234
+ /**
235
+ * Build the input prompt for AI
236
+ */
237
+ buildInputPrompt(session, shellOutput, promptContext, inputType, confidence) {
238
+ const lastLines = shellOutput.split("\n").slice(-30).join("\n");
239
+ let conversationContext = "";
240
+ if (session.mainConversationContext && session.mainConversationContext.length > 0) {
241
+ const userMessages = session.mainConversationContext.filter((msg) => msg.role === "user" && typeof msg.content === "string").map((msg) => msg.content).slice(-3).join("\n---\n");
242
+ if (userMessages) {
243
+ conversationContext = `
244
+ **User's Original Intent (from main conversation):**
245
+ \`\`\`
246
+ ${userMessages.substring(0, 1e3)}${userMessages.length > 1e3 ? "...[truncated]" : ""}
247
+ \`\`\`
248
+
249
+ Consider the user's original intent when providing input. If the user mentioned specific values to use, prefer those.
282
250
  `;
283
- }
284
- }
285
- return `[SHELL INPUT REQUIRED]
286
-
287
- **Running command:** ${session.command}
288
- **Working directory:** ${session.cwd}
289
- ${conversationContext}
290
- **Current shell output (last 30 lines):**
291
- \`\`\`
292
- ${lastLines}
293
- \`\`\`
294
-
295
- **Detected prompt:** ${promptContext}
296
- **Input type needed:** ${inputType}
297
- **Confidence:** ${confidence}
298
-
299
- Use execute_command with shell_input to respond. Example:
300
- {
301
- "tool": "execute_command",
302
- "arguments": {
303
- "shell_input": "YOUR_INPUT_HERE",
304
- "SafeToAutoRun": true,
305
- "CommandLine": "${session.command}",
306
- "Cwd": "${session.cwd}"
307
- }
308
- }`;
309
- }
310
- /**
311
- * Terminate a shell input session immediately
312
- */
313
- terminateSession(shellId) {
314
- const session = this.sessions.get(shellId);
315
- if (session) {
316
- quickLog(`[${new Date().toISOString()}] [ShellInputAgent] Terminating session ${shellId}\n`);
317
- // Mark as inactive first
318
- session.isActive = false;
319
- // Abort any running AI call
320
- try {
321
- session.abortController.abort();
322
- }
323
- catch (e) {
324
- // Ignore abort errors
325
- }
326
- // Clean up
327
- this.sessions.delete(shellId);
328
- this.processingLock.delete(shellId);
329
- }
251
+ }
330
252
  }
331
- /**
332
- * Check if a session is active
333
- */
334
- isSessionActive(shellId) {
335
- const session = this.sessions.get(shellId);
336
- return session?.isActive ?? false;
337
- }
338
- /**
339
- * Get session info (for debugging)
340
- */
341
- getSessionInfo(shellId) {
342
- const session = this.sessions.get(shellId);
343
- if (!session)
344
- return undefined;
345
- return {
346
- turnCount: session.turnCount,
347
- isActive: session.isActive
348
- };
253
+ return `[SHELL INPUT REQUIRED]
254
+
255
+ **Running command:** ${session.command}
256
+ **Working directory:** ${session.cwd}
257
+ ${conversationContext}
258
+ **Current shell output (last 30 lines):**
259
+ \`\`\`
260
+ ${lastLines}
261
+ \`\`\`
262
+
263
+ **Detected prompt:** ${promptContext}
264
+ **Input type needed:** ${inputType}
265
+ **Confidence:** ${confidence}
266
+
267
+ Use execute_command with shell_input to respond. Example:
268
+ {
269
+ "tool": "execute_command",
270
+ "arguments": {
271
+ "shell_input": "YOUR_INPUT_HERE",
272
+ "SafeToAutoRun": true,
273
+ "CommandLine": "${session.command}",
274
+ "Cwd": "${session.cwd}"
275
+ }
276
+ }`;
277
+ }
278
+ /**
279
+ * Terminate a shell input session immediately
280
+ */
281
+ terminateSession(shellId) {
282
+ const session = this.sessions.get(shellId);
283
+ if (session) {
284
+ quickLog(`[${(/* @__PURE__ */ new Date()).toISOString()}] [ShellInputAgent] Terminating session ${shellId}
285
+ `);
286
+ session.isActive = false;
287
+ try {
288
+ session.abortController.abort();
289
+ } catch (e) {
290
+ }
291
+ this.sessions.delete(shellId);
292
+ this.processingLock.delete(shellId);
349
293
  }
350
- /**
351
- * Terminate all active sessions
352
- */
353
- terminateAllSessions() {
354
- for (const shellId of this.sessions.keys()) {
355
- this.terminateSession(shellId);
356
- }
294
+ }
295
+ /**
296
+ * Check if a session is active
297
+ */
298
+ isSessionActive(shellId) {
299
+ const session = this.sessions.get(shellId);
300
+ return session?.isActive ?? false;
301
+ }
302
+ /**
303
+ * Get session info (for debugging)
304
+ */
305
+ getSessionInfo(shellId) {
306
+ const session = this.sessions.get(shellId);
307
+ if (!session) return void 0;
308
+ return {
309
+ turnCount: session.turnCount,
310
+ isActive: session.isActive
311
+ };
312
+ }
313
+ /**
314
+ * Terminate all active sessions
315
+ */
316
+ terminateAllSessions() {
317
+ for (const shellId of this.sessions.keys()) {
318
+ this.terminateSession(shellId);
357
319
  }
320
+ }
358
321
  }
359
- // Export singleton
360
- export const ShellInputAgent = new ShellInputAgentClass();
322
+ const ShellInputAgent = new ShellInputAgentClass();
323
+ export {
324
+ ShellInputAgent
325
+ };
361
326
  //# sourceMappingURL=shell-input-agent.js.map