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 +1 @@
1
- {"version":3,"file":"wsl-handler.js","sourceRoot":"","sources":["../../../src/context/handlers/wsl-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/context/handlers/wsl-handler.ts"],"sourcesContent":["/**\r\n * WSL Handler for Windows Subsystem for Linux\r\n */\r\n\r\nimport { exec, spawn, ChildProcess } from 'child_process';\r\nimport { promisify } from 'util';\r\nimport { SubshellHandler, BreadcrumbInfo, CommandResult, DirectoryEntry, SearchResult } from '../subshell-handler.js';\r\nimport { SubshellContext, SubshellConnectionError, SubshellExecutionError, OSType } from '../types.js';\r\nimport { randomBytes } from 'crypto';\r\nimport * as os from 'os';\r\n\r\nconst execAsync = promisify(exec);\r\n\r\n/**\r\n * WSL-specific configuration\r\n */\r\nexport interface WSLConfig {\r\n /** WSL distribution name (e.g., \"Ubuntu\", \"Debian\") */\r\n distribution: string;\r\n}\r\n\r\n/**\r\n * WSL Handler implementation\r\n */\r\nexport class WSLHandler implements SubshellHandler {\r\n readonly type = 'wsl';\r\n readonly detectionPatterns = [\r\n /^wsl$/,\r\n /^wsl\\s+/,\r\n /^wsl\\.exe\\s+/,\r\n ];\r\n\r\n private config: WSLConfig | null = null;\r\n private currentWorkingDirectory: string = '~';\r\n private shellType: string = 'bash';\r\n private sessionId: string = '';\r\n private shellProcess: ChildProcess | null = null;\r\n private commandQueue: Array<{\r\n command: string;\r\n resolve: (result: CommandResult) => void;\r\n reject: (error: Error) => void;\r\n }> = [];\r\n private currentOutput: string = '';\r\n private currentError: string = '';\r\n\r\n // Streaming output callback for real-time display\r\n private onOutputCallback: ((data: string, type: 'stdout' | 'stderr') => void) | null = null;\r\n\r\n /**\r\n * Set a callback to receive real-time output from commands\r\n * This is essential for interactive commands like sudo that need user input\r\n */\r\n setOutputCallback(callback: ((data: string, type: 'stdout' | 'stderr') => void) | null): void {\r\n this.onOutputCallback = callback;\r\n }\r\n\r\n /**\r\n * Write data to the shell's stdin (for user input like passwords)\r\n */\r\n writeToStdin(data: string): boolean {\r\n if (this.shellProcess && this.shellProcess.stdin && !this.shellProcess.stdin.destroyed) {\r\n this.shellProcess.stdin.write(data);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Detect if a command should trigger this handler\r\n */\r\n detect(command: string): boolean {\r\n return this.detectionPatterns.some(pattern => pattern.test(command));\r\n }\r\n\r\n /**\r\n * Connect to the WSL environment\r\n */\r\n async connect(command: string, cwd: string): Promise<SubshellContext> {\r\n this.sessionId = randomBytes(16).toString('hex');\r\n\r\n try {\r\n // Verify WSL is available (Windows only)\r\n this.verifyWSLAvailable();\r\n\r\n // Parse WSL command to extract distribution\r\n this.config = await this.parseWSLCommand(command);\r\n\r\n // Spawn interactive shell\r\n await this.spawnInteractiveShell();\r\n\r\n // Detect shell type\r\n this.shellType = await this.detectShellType();\r\n\r\n // Get initial working directory\r\n this.currentWorkingDirectory = await this.getCurrentWorkingDirectory();\r\n\r\n return {\r\n type: 'wsl',\r\n handler: this,\r\n metadata: {\r\n workingDirectory: this.currentWorkingDirectory,\r\n shell: this.shellType,\r\n os: 'linux',\r\n distroName: this.config.distribution,\r\n },\r\n connectionState: 'connected',\r\n sessionId: this.sessionId,\r\n };\r\n } catch (error) {\r\n throw new SubshellConnectionError(\r\n 'wsl',\r\n error instanceof Error ? error.message : 'Unknown error',\r\n false\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Spawn an interactive shell process\r\n */\r\n private async spawnInteractiveShell(): Promise<void> {\r\n if (!this.config) {\r\n throw new Error('Config not initialized');\r\n }\r\n\r\n const distro = this.config.distribution.trim().replace(/\\0/g, '');\r\n\r\n return new Promise((resolve, reject) => {\r\n // Spawn wsl.exe with the distribution\r\n this.shellProcess = spawn('wsl.exe', ['-d', distro], {\r\n stdio: ['pipe', 'pipe', 'pipe'],\r\n shell: false,\r\n });\r\n\r\n if (!this.shellProcess.stdout || !this.shellProcess.stderr || !this.shellProcess.stdin) {\r\n reject(new Error('Failed to create shell process streams'));\r\n return;\r\n }\r\n\r\n let hasResolved = false;\r\n let errorOutput = '';\r\n let initCommandSent = false;\r\n\r\n // Set up output handlers\r\n this.shellProcess.stdout.on('data', (data: Buffer) => {\r\n const text = data.toString();\r\n this.currentOutput += text;\r\n\r\n // Stream to callback if registered (for real-time UI display)\r\n if (this.onOutputCallback) {\r\n this.onOutputCallback(text, 'stdout');\r\n }\r\n\r\n // If we get any output, the shell is working\r\n if (!hasResolved) {\r\n hasResolved = true;\r\n resolve();\r\n }\r\n });\r\n\r\n this.shellProcess.stderr.on('data', (data: Buffer) => {\r\n const text = data.toString();\r\n this.currentError += text;\r\n errorOutput += text;\r\n\r\n // Stream to callback if registered (for real-time UI display)\r\n if (this.onOutputCallback) {\r\n this.onOutputCallback(text, 'stderr');\r\n }\r\n });\r\n\r\n this.shellProcess.on('exit', (code) => {\r\n if (!hasResolved) {\r\n hasResolved = true;\r\n\r\n // Check for common WSL errors\r\n if (errorOutput.includes('HCS_E_SERVICE_NOT_AVAILABLE')) {\r\n reject(new Error('WSL service is not running. Try running \"wsl --shutdown\" and then try again, or restart your computer.'));\r\n } else if (errorOutput.includes('required feature is not installed')) {\r\n reject(new Error('WSL is not properly installed or enabled. Please ensure WSL 2 is installed and the Virtual Machine Platform feature is enabled.'));\r\n } else {\r\n reject(new Error(`WSL process exited with code ${code}. Error: ${errorOutput || 'No error output'}`));\r\n }\r\n }\r\n this.shellProcess = null;\r\n });\r\n\r\n this.shellProcess.on('error', (error) => {\r\n if (!hasResolved) {\r\n hasResolved = true;\r\n reject(new Error(`Failed to spawn WSL process: ${error.message}`));\r\n }\r\n });\r\n\r\n // Wait for stdin to be ready, then send initialization command\r\n const sendInitCommand = () => {\r\n if (!initCommandSent && this.shellProcess && this.shellProcess.stdin && !this.shellProcess.stdin.destroyed) {\r\n initCommandSent = true;\r\n this.shellProcess.stdin.write('echo \"CENTAURUS_READY\"\\n');\r\n }\r\n };\r\n\r\n // Try to send command immediately if stdin is already writable\r\n if (this.shellProcess.stdin.writable) {\r\n sendInitCommand();\r\n } else {\r\n // Otherwise wait for the 'ready' event on stdin\r\n this.shellProcess.stdin.once('ready', sendInitCommand);\r\n }\r\n\r\n // Fallback: also try after a small delay in case ready event doesn't fire\r\n setTimeout(() => {\r\n sendInitCommand();\r\n }, 200);\r\n\r\n // Timeout if we don't get a response\r\n // WSL cold-start can take 10+ seconds on first run\r\n setTimeout(() => {\r\n if (!hasResolved) {\r\n hasResolved = true;\r\n reject(new Error(`WSL shell initialization timed out. Error: ${errorOutput || 'No error output'}`));\r\n }\r\n }, 15000);\r\n });\r\n }\r\n\r\n /**\r\n * Disconnect from the WSL environment\r\n */\r\n async disconnect(): Promise<void> {\r\n if (this.shellProcess) {\r\n this.shellProcess.kill();\r\n this.shellProcess = null;\r\n }\r\n this.config = null;\r\n }\r\n\r\n /**\r\n * Check if this handler is currently connected to a WSL environment\r\n */\r\n isConnected(): boolean {\r\n return this.config !== null && this.shellProcess !== null;\r\n }\r\n\r\n /**\r\n * Execute a command in the WSL environment\r\n */\r\n async executeCommand(command: string): Promise<CommandResult> {\r\n if (!this.config) {\r\n throw new SubshellExecutionError(command, 'Not connected to WSL - config is null');\r\n }\r\n\r\n if (!this.shellProcess) {\r\n throw new SubshellExecutionError(command, 'Not connected to WSL - shell process is null');\r\n }\r\n\r\n if (!this.shellProcess.stdin) {\r\n throw new SubshellExecutionError(command, 'Not connected to WSL - stdin is null');\r\n }\r\n\r\n if (this.shellProcess.killed || this.shellProcess.exitCode !== null) {\r\n throw new SubshellExecutionError(command, 'Not connected to WSL - shell process has exited');\r\n }\r\n\r\n try {\r\n // Clear previous output\r\n this.currentOutput = '';\r\n this.currentError = '';\r\n\r\n // Unique PWD tag for this session\r\n const pwdTag = `__CENTAURUS_PWD_${this.sessionId}__`;\r\n\r\n // Build command with pwd tracking\r\n let commandWithPwd: string;\r\n const trimmedCommand = command.trim();\r\n\r\n // Check if this is a cd command\r\n if (trimmedCommand.startsWith('cd ') || trimmedCommand === 'cd') {\r\n // For cd commands, execute directly without prepending current directory\r\n // The shell maintains its own state\r\n commandWithPwd = `${command}; echo \"${pwdTag}:$(pwd)\"\\n`;\r\n } else {\r\n // For other commands, ensure we're in the right directory first\r\n commandWithPwd = `cd ${this.currentWorkingDirectory} && ${command}; echo \"${pwdTag}:$(pwd)\"\\n`;\r\n }\r\n\r\n // Send command to shell\r\n this.shellProcess.stdin.write(commandWithPwd);\r\n\r\n // Wait for command to complete (look for the pwd marker)\r\n const result = await this.waitForCommandCompletion(30000);\r\n\r\n return result;\r\n } catch (error: any) {\r\n return {\r\n stdout: '',\r\n stderr: error.message || 'Command execution failed',\r\n exitCode: 1,\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Wait for command completion by monitoring output\r\n */\r\n private async waitForCommandCompletion(timeoutMs = 30000): Promise<CommandResult> {\r\n const pwdTag = `__CENTAURUS_PWD_${this.sessionId}__`;\r\n const pwdRegex = new RegExp(`${pwdTag}:(.+)$`, 'm');\r\n const removeRegex = new RegExp(`${pwdTag}:.+$`, 'm');\r\n\r\n return new Promise((resolve, reject) => {\r\n const startTime = Date.now();\r\n const checkInterval = setInterval(() => {\r\n if (timeoutMs > 0 && Date.now() - startTime >= timeoutMs) {\r\n clearInterval(checkInterval);\r\n reject(new Error(`Command execution timed out after ${timeoutMs}ms`));\r\n return;\r\n }\r\n\r\n const pwdMatch = this.currentOutput.match(pwdRegex);\r\n\r\n if (pwdMatch) {\r\n clearInterval(checkInterval);\r\n\r\n // Extract working directory\r\n const newCwd = pwdMatch[1].trim();\r\n this.currentWorkingDirectory = newCwd;\r\n\r\n // Clean output\r\n const cleanStdout = this.currentOutput\r\n .replace(removeRegex, '')\r\n .trim();\r\n\r\n resolve({\r\n stdout: cleanStdout,\r\n stderr: this.currentError,\r\n exitCode: 0,\r\n });\r\n }\r\n }, 100);\r\n });\r\n }\r\n\r\n /**\r\n * Read a file from the WSL filesystem\r\n */\r\n async readFile(path: string): Promise<string> {\r\n if (!this.config) {\r\n throw new Error('Not connected to WSL');\r\n }\r\n\r\n const distro = this.config.distribution.trim().replace(/\\0/g, '');\r\n const wslPath = this.resolveWSLPath(path);\r\n // Use base64 to avoid encoding issues and binary-safe transfer\r\n const command = `wsl.exe -d ${distro} -- bash -c \"base64 '${wslPath}' 2>/dev/null || cat '${wslPath}' | base64\"`;\r\n\r\n try {\r\n const { stdout } = await execAsync(command);\r\n const b64 = stdout.replace(/\\s+/g, '');\r\n return Buffer.from(b64, 'base64').toString('utf-8');\r\n } catch (error: any) {\r\n throw new Error(`Failed to read file ${path}: ${error.message}`);\r\n }\r\n }\r\n\r\n /**\r\n * Write a file to the WSL filesystem\r\n */\r\n async writeFile(path: string, content: string | Buffer): Promise<void> {\r\n if (!this.config) {\r\n throw new Error('Not connected to WSL');\r\n }\r\n\r\n const distro = this.config.distribution.trim().replace(/\\0/g, '');\r\n const wslPath = this.resolveWSLPath(path);\r\n\r\n // Use base64-encoded, chunked writes to avoid shell arg/command length limits\r\n const inputBuffer = Buffer.isBuffer(content) ? content : Buffer.from(content, 'utf8');\r\n const base64Content = inputBuffer.toString('base64');\r\n const CHUNK_SIZE = 32000; // conservative size per command\r\n\r\n try {\r\n // Truncate/initialize file\r\n const truncateCmd = `wsl.exe -d ${distro} -- bash -c \": > '${wslPath}'\"`;\r\n await execAsync(truncateCmd);\r\n\r\n // Write in chunks\r\n for (let i = 0; i < base64Content.length; i += CHUNK_SIZE) {\r\n const chunk = base64Content.slice(i, i + CHUNK_SIZE);\r\n const writeCmd = `wsl.exe -d ${distro} -- bash -c \"echo '${chunk}' | base64 -d >> '${wslPath}'\"`;\r\n await execAsync(writeCmd);\r\n }\r\n } catch (error: any) {\r\n throw new Error(`Failed to write file ${path}: ${error.message}`);\r\n }\r\n }\r\n\r\n /**\r\n * List directory contents in WSL\r\n */\r\n async listDirectory(path: string): Promise<DirectoryEntry[]> {\r\n if (!this.config) {\r\n throw new Error('Not connected to WSL');\r\n }\r\n\r\n const distro = this.config.distribution.trim().replace(/\\0/g, '');\r\n const wslPath = this.resolveWSLPath(path);\r\n const command = `wsl.exe -d ${distro} -- ls -la \"${wslPath}\"`;\r\n\r\n try {\r\n const { stdout } = await execAsync(command);\r\n return this.parseDirectoryListing(stdout);\r\n } catch (error: any) {\r\n throw new Error(`Failed to list directory ${path}: ${error.message}`);\r\n }\r\n }\r\n\r\n /**\r\n * Search for files matching a pattern in WSL\r\n */\r\n async searchFiles(pattern: string, directory: string): Promise<SearchResult[]> {\r\n if (!this.config) {\r\n throw new Error('Not connected to WSL');\r\n }\r\n\r\n const distro = this.config.distribution.trim().replace(/\\0/g, '');\r\n const wslPath = this.resolveWSLPath(directory);\r\n const escapedPattern = pattern.replace(/'/g, \"'\\\\''\");\r\n const command = `wsl.exe -d ${distro} -- bash -c \"grep -rn '${escapedPattern}' '${wslPath}' 2>/dev/null || true\"`;\r\n\r\n try {\r\n const { stdout } = await execAsync(command);\r\n return this.parseSearchResults(stdout);\r\n } catch (error: any) {\r\n // grep returns non-zero if no matches, which is not an error\r\n return [];\r\n }\r\n }\r\n\r\n /**\r\n * Get the current working directory in WSL\r\n */\r\n async getCurrentWorkingDirectory(): Promise<string> {\r\n if (!this.config || !this.shellProcess || !this.shellProcess.stdin) {\r\n return '~';\r\n }\r\n\r\n try {\r\n // Clear output\r\n this.currentOutput = '';\r\n\r\n // Send pwd command\r\n this.shellProcess.stdin.write('pwd\\n');\r\n\r\n // Wait for output\r\n await new Promise(resolve => setTimeout(resolve, 300));\r\n\r\n const lines = this.currentOutput.trim().split('\\n');\r\n const path = lines[lines.length - 1].trim();\r\n\r\n return path || '~';\r\n } catch {\r\n return '~';\r\n }\r\n }\r\n\r\n /**\r\n * Get the shell type\r\n */\r\n async getShellType(): Promise<string> {\r\n return this.shellType;\r\n }\r\n\r\n /**\r\n * Get the operating system type (always linux for WSL)\r\n */\r\n async getOSType(): Promise<OSType> {\r\n return 'linux';\r\n }\r\n\r\n /**\r\n * Get breadcrumb information for the UI\r\n */\r\n getBreadcrumbs(): BreadcrumbInfo[] {\r\n if (!this.config) {\r\n return [];\r\n }\r\n\r\n return [\r\n {\r\n label: 'wsl',\r\n color: 'yellow',\r\n },\r\n {\r\n label: this.config.distribution,\r\n color: 'yellow',\r\n },\r\n ];\r\n }\r\n\r\n // Private helper methods\r\n\r\n /**\r\n * Verify that WSL is available on the system\r\n */\r\n private verifyWSLAvailable(): void {\r\n if (os.platform() !== 'win32') {\r\n throw new Error('WSL is only available on Windows');\r\n }\r\n }\r\n\r\n /**\r\n * Parse WSL command to extract distribution name\r\n */\r\n private async parseWSLCommand(command: string): Promise<WSLConfig> {\r\n const parts = command.trim().split(/\\s+/);\r\n let distribution = '';\r\n\r\n // Look for -d or --distribution flag\r\n for (let i = 1; i < parts.length; i++) {\r\n const part = parts[i];\r\n\r\n if ((part === '-d' || part === '--distribution') && i + 1 < parts.length) {\r\n distribution = parts[i + 1];\r\n break;\r\n }\r\n }\r\n\r\n // If no distribution specified, get the default\r\n if (!distribution) {\r\n distribution = await this.getDefaultDistribution();\r\n }\r\n\r\n return {\r\n distribution,\r\n };\r\n }\r\n\r\n /**\r\n * Get the default WSL distribution\r\n */\r\n private async getDefaultDistribution(): Promise<string> {\r\n try {\r\n const { stdout } = await execAsync('wsl.exe --list --verbose');\r\n\r\n // Remove BOM and null bytes from output\r\n const cleanOutput = stdout.replace(/^\\uFEFF/, '').replace(/\\0/g, '');\r\n const lines = cleanOutput.split('\\n');\r\n\r\n // Find the line with * (default distribution)\r\n for (const line of lines) {\r\n if (line.includes('*')) {\r\n const match = line.match(/\\*\\s+(\\S+)/);\r\n if (match) {\r\n const distro = match[1].trim().replace(/\\0/g, '');\r\n if (distro) {\r\n return distro;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // If no default found, return the first distribution\r\n for (const line of lines) {\r\n const match = line.match(/^\\s+(\\S+)/);\r\n if (match && !match[1].includes('NAME')) {\r\n const distro = match[1].trim().replace(/\\0/g, '');\r\n if (distro) {\r\n return distro;\r\n }\r\n }\r\n }\r\n\r\n throw new Error('No WSL distributions found');\r\n } catch (error) {\r\n throw new Error('Failed to detect WSL distribution');\r\n }\r\n }\r\n\r\n /**\r\n * Detect the shell type in WSL\r\n */\r\n private async detectShellType(): Promise<string> {\r\n if (!this.config || !this.shellProcess || !this.shellProcess.stdin) {\r\n return 'bash';\r\n }\r\n\r\n try {\r\n // Clear output\r\n this.currentOutput = '';\r\n\r\n // Send command to detect shell\r\n this.shellProcess.stdin.write('echo $SHELL\\n');\r\n\r\n // Wait for output\r\n await new Promise(resolve => setTimeout(resolve, 300));\r\n\r\n const shellPath = this.currentOutput.trim();\r\n\r\n if (shellPath.includes('bash')) return 'bash';\r\n if (shellPath.includes('zsh')) return 'zsh';\r\n if (shellPath.includes('fish')) return 'fish';\r\n\r\n return 'bash';\r\n } catch {\r\n return 'bash';\r\n }\r\n }\r\n\r\n /**\r\n * Build a WSL command with working directory context\r\n */\r\n private buildWSLCommand(command: string): string {\r\n if (!this.config) {\r\n throw new Error('Not connected to WSL');\r\n }\r\n\r\n // Validate distribution name\r\n const distro = this.config.distribution.trim().replace(/\\0/g, '');\r\n if (!distro) {\r\n throw new Error('Invalid WSL distribution name');\r\n }\r\n\r\n // Determine the directory to cd into\r\n const targetDir = this.currentWorkingDirectory === '~' || this.currentWorkingDirectory === ''\r\n ? '~'\r\n : this.currentWorkingDirectory;\r\n\r\n // Unique PWD tag\r\n const pwdTag = `__CENTAURUS_PWD_${this.sessionId}__`;\r\n\r\n // Build the command with pwd tracking\r\n // Use single quotes to avoid escaping issues with $\r\n const bashScript = `cd ${targetDir} && ${command}; echo \"${pwdTag}:$(pwd)\"`;\r\n\r\n // Use wsl.exe with bash -c and single quotes\r\n return `wsl.exe -d ${distro} -- bash -c '${bashScript.replace(/'/g, \"'\\\\''\")}'`;\r\n }\r\n\r\n /**\r\n * Convert Windows path to WSL path\r\n */\r\n static windowsToWSLPath(windowsPath: string): string {\r\n // Convert C:\\Users\\... to /mnt/c/Users/...\r\n const match = windowsPath.match(/^([A-Za-z]):(\\\\|\\/)/);\r\n if (match) {\r\n const drive = match[1].toLowerCase();\r\n const rest = windowsPath.substring(2).replace(/\\\\/g, '/');\r\n return `/mnt/${drive}${rest}`;\r\n }\r\n\r\n // Already a Unix path\r\n return windowsPath.replace(/\\\\/g, '/');\r\n }\r\n\r\n /**\r\n * Convert WSL path to Windows path\r\n */\r\n static wslToWindowsPath(wslPath: string): string {\r\n // Convert /mnt/c/Users/... to C:\\Users\\...\r\n const match = wslPath.match(/^\\/mnt\\/([a-z])(\\/.*)?$/);\r\n if (match) {\r\n const drive = match[1].toUpperCase();\r\n const rest = (match[2] || '').replace(/\\//g, '\\\\');\r\n return `${drive}:${rest}`;\r\n }\r\n\r\n // Not a /mnt path, return as-is\r\n return wslPath;\r\n }\r\n\r\n /**\r\n * Resolve a path to a WSL path\r\n */\r\n private resolveWSLPath(path: string): string {\r\n // If it's already an absolute Unix path, use it\r\n if (path.startsWith('/')) {\r\n return path;\r\n }\r\n\r\n // If it starts with ~, use it\r\n if (path.startsWith('~')) {\r\n return path;\r\n }\r\n\r\n // If it's a Windows path, convert it\r\n if (path.match(/^[A-Za-z]:/)) {\r\n return WSLHandler.windowsToWSLPath(path);\r\n }\r\n\r\n // Otherwise, treat as relative to current working directory\r\n return `${this.currentWorkingDirectory}/${path}`;\r\n }\r\n\r\n /**\r\n * Parse directory listing output\r\n */\r\n private parseDirectoryListing(output: string): DirectoryEntry[] {\r\n const entries: DirectoryEntry[] = [];\r\n const lines = output.split('\\n').filter(line => line.trim());\r\n\r\n for (const line of lines) {\r\n // Skip total line and current/parent directory\r\n if (line.startsWith('total') || line.endsWith(' .') || line.endsWith(' ..')) {\r\n continue;\r\n }\r\n\r\n // Parse ls -la output: permissions links owner group size date time name\r\n const match = line.match(/^([drwx-]+)\\s+\\d+\\s+\\S+\\s+\\S+\\s+(\\d+)\\s+\\S+\\s+\\S+\\s+\\S+\\s+(.+)$/);\r\n if (match) {\r\n const permissions = match[1];\r\n const size = parseInt(match[2], 10);\r\n const name = match[3];\r\n\r\n entries.push({\r\n name,\r\n type: permissions.startsWith('d') ? 'directory' : 'file',\r\n size,\r\n permissions,\r\n });\r\n }\r\n }\r\n\r\n return entries;\r\n }\r\n\r\n /**\r\n * Parse search results from grep output\r\n */\r\n private parseSearchResults(output: string): SearchResult[] {\r\n const results: SearchResult[] = [];\r\n const lines = output.split('\\n').filter(line => line.trim());\r\n\r\n for (const line of lines) {\r\n const match = line.match(/^(.+?):(\\d+):(.+)$/);\r\n if (match) {\r\n results.push({\r\n file: match[1],\r\n line: parseInt(match[2], 10),\r\n content: match[3],\r\n });\r\n }\r\n }\r\n\r\n return results;\r\n }\r\n\r\n /**\r\n * Execute a promise with a timeout\r\n */\r\n private async executeWithTimeout<T>(\r\n operation: () => Promise<T>,\r\n timeoutMs: number,\r\n operationName: string\r\n ): Promise<T> {\r\n return Promise.race([\r\n operation(),\r\n new Promise<T>((_, reject) =>\r\n setTimeout(\r\n () => reject(new Error(`${operationName} timed out after ${timeoutMs}ms`)),\r\n timeoutMs\r\n )\r\n ),\r\n ]);\r\n }\r\n\r\n /**\r\n * Create a new instance of this handler\r\n */\r\n createNew(): SubshellHandler {\r\n const newHandler = new WSLHandler();\r\n if (this.onOutputCallback) {\r\n newHandler.setOutputCallback(this.onOutputCallback);\r\n }\r\n return newHandler;\r\n }\r\n}\r\n"],"mappings":"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","names":[]}
@@ -1,7 +1,43 @@
1
- /**
2
- * Context management system exports
3
- */
4
- export { SubshellConnectionError, SubshellExecutionError, } from './types';
5
- export { ContextManager, } from './context-manager';
6
- export { CommandDetector, } from './command-detector';
1
+ import {
2
+ SubshellContext,
3
+ SubshellMetadata,
4
+ SubshellType,
5
+ ConnectionState,
6
+ OSType,
7
+ SubshellConnectionError,
8
+ SubshellExecutionError
9
+ } from "./types";
10
+ import {
11
+ SubshellHandler,
12
+ BreadcrumbInfo,
13
+ CommandResult,
14
+ DirectoryEntry,
15
+ SearchResult
16
+ } from "./subshell-handler";
17
+ import {
18
+ ContextManager,
19
+ ContextChangeCallback
20
+ } from "./context-manager";
21
+ import {
22
+ CommandDetector,
23
+ DetectionResult
24
+ } from "./command-detector";
25
+ export {
26
+ BreadcrumbInfo,
27
+ CommandDetector,
28
+ CommandResult,
29
+ ConnectionState,
30
+ ContextChangeCallback,
31
+ ContextManager,
32
+ DetectionResult,
33
+ DirectoryEntry,
34
+ OSType,
35
+ SearchResult,
36
+ SubshellConnectionError,
37
+ SubshellContext,
38
+ SubshellExecutionError,
39
+ SubshellHandler,
40
+ SubshellMetadata,
41
+ SubshellType
42
+ };
7
43
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAML,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,SAAS,CAAC;AAUjB,OAAO,EACL,cAAc,GAEf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,eAAe,GAEhB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"sources":["../../src/context/index.ts"],"sourcesContent":["/**\r\n * Context management system exports\r\n */\r\n\r\nexport {\r\n SubshellContext,\r\n SubshellMetadata,\r\n SubshellType,\r\n ConnectionState,\r\n OSType,\r\n SubshellConnectionError,\r\n SubshellExecutionError,\r\n} from './types';\r\n\r\nexport {\r\n SubshellHandler,\r\n BreadcrumbInfo,\r\n CommandResult,\r\n DirectoryEntry,\r\n SearchResult,\r\n} from './subshell-handler';\r\n\r\nexport {\r\n ContextManager,\r\n ContextChangeCallback,\r\n} from './context-manager';\r\n\r\nexport {\r\n CommandDetector,\r\n DetectionResult,\r\n} from './command-detector';\r\n"],"mappings":"AAIA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;","names":[]}
@@ -1,5 +1 @@
1
- /**
2
- * Interface and types for subshell handlers
3
- */
4
- export {};
5
1
  //# sourceMappingURL=subshell-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"subshell-handler.js","sourceRoot":"","sources":["../../src/context/subshell-handler.ts"],"names":[],"mappings":"AAAA;;GAEG"}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,34 +1,23 @@
1
- /**
2
- * Core types for the subshell context management system
3
- */
4
- /**
5
- * Error thrown when a subshell connection fails
6
- */
7
- export class SubshellConnectionError extends Error {
8
- type;
9
- reason;
10
- recoverable;
11
- constructor(type, reason, recoverable) {
12
- super(`${type} connection failed: ${reason}`);
13
- this.type = type;
14
- this.reason = reason;
15
- this.recoverable = recoverable;
16
- this.name = 'SubshellConnectionError';
17
- }
1
+ class SubshellConnectionError extends Error {
2
+ constructor(type, reason, recoverable) {
3
+ super(`${type} connection failed: ${reason}`);
4
+ this.type = type;
5
+ this.reason = reason;
6
+ this.recoverable = recoverable;
7
+ this.name = "SubshellConnectionError";
8
+ }
18
9
  }
19
- /**
20
- * Error thrown when a subshell command execution fails
21
- */
22
- export class SubshellExecutionError extends Error {
23
- command;
24
- reason;
25
- exitCode;
26
- constructor(command, reason, exitCode) {
27
- super(`Command execution failed: ${reason}`);
28
- this.command = command;
29
- this.reason = reason;
30
- this.exitCode = exitCode;
31
- this.name = 'SubshellExecutionError';
32
- }
10
+ class SubshellExecutionError extends Error {
11
+ constructor(command, reason, exitCode) {
12
+ super(`Command execution failed: ${reason}`);
13
+ this.command = command;
14
+ this.reason = reason;
15
+ this.exitCode = exitCode;
16
+ this.name = "SubshellExecutionError";
17
+ }
33
18
  }
19
+ export {
20
+ SubshellConnectionError,
21
+ SubshellExecutionError
22
+ };
34
23
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/context/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkEH;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAEvC;IACA;IACA;IAHT,YACS,IAAY,EACZ,MAAc,EACd,WAAoB;QAE3B,KAAK,CAAC,GAAG,IAAI,uBAAuB,MAAM,EAAE,CAAC,CAAC;QAJvC,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAS;QAG3B,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAEtC;IACA;IACA;IAHT,YACS,OAAe,EACf,MAAc,EACd,QAAiB;QAExB,KAAK,CAAC,6BAA6B,MAAM,EAAE,CAAC,CAAC;QAJtC,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAS;QAGxB,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF"}
1
+ {"version":3,"sources":["../../src/context/types.ts"],"sourcesContent":["/**\r\n * Core types for the subshell context management system\r\n */\r\n\r\n/**\r\n * Connection state for a subshell\r\n */\r\nexport type ConnectionState = 'connecting' | 'connected' | 'disconnected' | 'error';\r\n\r\n/**\r\n * Operating system types\r\n */\r\nexport type OSType = 'windows' | 'macos' | 'linux';\r\n\r\n/**\r\n * Subshell type identifiers\r\n */\r\nexport type SubshellType = 'local' | 'ssh' | 'wsl' | 'docker';\r\n\r\n/**\r\n * Metadata about a subshell environment\r\n */\r\nexport interface SubshellMetadata {\r\n /** Remote hostname (for SSH) */\r\n hostname?: string;\r\n \r\n /** Remote username (for SSH) */\r\n username?: string;\r\n \r\n /** Current working directory in the subshell */\r\n workingDirectory: string;\r\n \r\n /** Shell type (bash, zsh, fish, etc.) */\r\n shell: string;\r\n \r\n /** Operating system type */\r\n os: OSType;\r\n \r\n /** WSL distribution name (for WSL) */\r\n distroName?: string;\r\n \r\n /** Docker container ID (for Docker) */\r\n containerId?: string;\r\n \r\n /** Port number (for SSH) */\r\n port?: number;\r\n}\r\n\r\n/**\r\n * Context representing the current execution environment\r\n */\r\nexport interface SubshellContext {\r\n /** Type of the current context */\r\n type: SubshellType;\r\n \r\n /** Handler for this subshell (undefined for local) */\r\n handler?: any; // Using any to avoid circular dependency, will be SubshellHandler at runtime\r\n \r\n /** Metadata about the environment */\r\n metadata: SubshellMetadata;\r\n \r\n /** Current connection state */\r\n connectionState: ConnectionState;\r\n \r\n /** Unique session identifier */\r\n sessionId: string;\r\n}\r\n\r\n/**\r\n * Error thrown when a subshell connection fails\r\n */\r\nexport class SubshellConnectionError extends Error {\r\n constructor(\r\n public type: string,\r\n public reason: string,\r\n public recoverable: boolean\r\n ) {\r\n super(`${type} connection failed: ${reason}`);\r\n this.name = 'SubshellConnectionError';\r\n }\r\n}\r\n\r\n/**\r\n * Error thrown when a subshell command execution fails\r\n */\r\nexport class SubshellExecutionError extends Error {\r\n constructor(\r\n public command: string,\r\n public reason: string,\r\n public exitCode?: number\r\n ) {\r\n super(`Command execution failed: ${reason}`);\r\n this.name = 'SubshellExecutionError';\r\n }\r\n}\r\n"],"mappings":"AAuEO,MAAM,gCAAgC,MAAM;AAAA,EACjD,YACS,MACA,QACA,aACP;AACA,UAAM,GAAG,IAAI,uBAAuB,MAAM,EAAE;AAJrC;AACA;AACA;AAGP,SAAK,OAAO;AAAA,EACd;AACF;AAKO,MAAM,+BAA+B,MAAM;AAAA,EAChD,YACS,SACA,QACA,UACP;AACA,UAAM,6BAA6B,MAAM,EAAE;AAJpC;AACA;AACA;AAGP,SAAK,OAAO;AAAA,EACd;AACF;","names":[]}
@@ -1,12 +1,15 @@
1
- import { useState, useEffect } from 'react';
2
- import { ConnectivityManager } from '../services/connectivity-manager.js';
3
- export function useConnectivity() {
4
- const [isConnected, setIsConnected] = useState(true);
5
- useEffect(() => {
6
- const manager = ConnectivityManager.getInstance();
7
- const unsubscribe = manager.subscribe(setIsConnected);
8
- return () => unsubscribe();
9
- }, []);
10
- return isConnected;
1
+ import { useState, useEffect } from "react";
2
+ import { ConnectivityManager } from "../services/connectivity-manager.js";
3
+ function useConnectivity() {
4
+ const [isConnected, setIsConnected] = useState(true);
5
+ useEffect(() => {
6
+ const manager = ConnectivityManager.getInstance();
7
+ const unsubscribe = manager.subscribe(setIsConnected);
8
+ return () => unsubscribe();
9
+ }, []);
10
+ return isConnected;
11
11
  }
12
+ export {
13
+ useConnectivity
14
+ };
12
15
  //# sourceMappingURL=useConnectivity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useConnectivity.js","sourceRoot":"","sources":["../../src/hooks/useConnectivity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,MAAM,UAAU,eAAe;IAC3B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAErD,SAAS,CAAC,GAAG,EAAE;QACX,MAAM,OAAO,GAAG,mBAAmB,CAAC,WAAW,EAAE,CAAC;QAClD,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACtD,OAAO,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,WAAW,CAAC;AACvB,CAAC"}
1
+ {"version":3,"sources":["../../src/hooks/useConnectivity.ts"],"sourcesContent":["\r\nimport { useState, useEffect } from 'react';\r\nimport { ConnectivityManager } from '../services/connectivity-manager.js';\r\n\r\nexport function useConnectivity() {\r\n const [isConnected, setIsConnected] = useState(true);\r\n\r\n useEffect(() => {\r\n const manager = ConnectivityManager.getInstance();\r\n const unsubscribe = manager.subscribe(setIsConnected);\r\n return () => unsubscribe();\r\n }, []);\r\n\r\n return isConnected;\r\n}\r\n"],"mappings":"AACA,SAAS,UAAU,iBAAiB;AACpC,SAAS,2BAA2B;AAE7B,SAAS,kBAAkB;AAC9B,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,IAAI;AAEnD,YAAU,MAAM;AACZ,UAAM,UAAU,oBAAoB,YAAY;AAChD,UAAM,cAAc,QAAQ,UAAU,cAAc;AACpD,WAAO,MAAM,YAAY;AAAA,EAC7B,GAAG,CAAC,CAAC;AAEL,SAAO;AACX;","names":[]}
@@ -1,84 +1,72 @@
1
- import { useState, useEffect, useCallback } from 'react';
2
- /**
3
- * Constants for terminal height calculations
4
- * VERY AGGRESSIVELY tuned to prevent streaming issues in VS Code integrated terminal
5
- * VS Code may report terminal buffer size (e.g., 50+ rows) even when only 10-15 are visible
6
- */
7
- export const TERMINAL_HEIGHT_CONSTANTS = {
8
- // InputBox reserved height:
9
- // - Header row (CWD, Model, Mode) = 1 line
10
- // - Input area borders = 2 lines (top + bottom of box)
11
- // - Input prompt line = 1 line
12
- // - Footer hints row = 1 line
13
- // - Autocomplete dropdown (if visible) = up to 3 lines
14
- // - Extra margin for markdown padding = 2 lines
15
- INPUT_BOX_RESERVED_HEIGHT: 10,
16
- // ABSOLUTE MINIMUM terminal rows to enable streaming
17
- // Must be fairly high because integrated terminals may report buffer size
18
- // Enable streaming for terminals with 35+ rows
19
- MIN_ROWS_FOR_STREAMING: 35,
20
- // Extra safety buffer to prevent edge-case flickering
21
- SAFETY_BUFFER: 6,
22
- // Reserved height for thinking display when active
23
- THINKING_RESERVED_HEIGHT: 6,
24
- // Minimum lines for streaming display (floor value)
25
- MIN_STREAMING_LINES: 3,
1
+ import { useState, useEffect, useCallback } from "react";
2
+ const TERMINAL_HEIGHT_CONSTANTS = {
3
+ // InputBox reserved height:
4
+ // - Header row (CWD, Model, Mode) = 1 line
5
+ // - Input area borders = 2 lines (top + bottom of box)
6
+ // - Input prompt line = 1 line
7
+ // - Footer hints row = 1 line
8
+ // - Autocomplete dropdown (if visible) = up to 3 lines
9
+ // - Extra margin for markdown padding = 2 lines
10
+ INPUT_BOX_RESERVED_HEIGHT: 10,
11
+ // ABSOLUTE MINIMUM terminal rows to enable streaming
12
+ // Must be fairly high because integrated terminals may report buffer size
13
+ // Enable streaming for terminals with 35+ rows
14
+ MIN_ROWS_FOR_STREAMING: 35,
15
+ // Extra safety buffer to prevent edge-case flickering
16
+ SAFETY_BUFFER: 6,
17
+ // Reserved height for thinking display when active
18
+ THINKING_RESERVED_HEIGHT: 6,
19
+ // Minimum lines for streaming display (floor value)
20
+ MIN_STREAMING_LINES: 3
26
21
  };
27
- /**
28
- * Get current terminal dimensions and calculate streaming parameters
29
- */
30
- export function getTerminalDimensions() {
31
- const columns = process.stdout.columns || 80;
32
- const rows = process.stdout.rows || 24;
33
- const { INPUT_BOX_RESERVED_HEIGHT, MIN_ROWS_FOR_STREAMING, SAFETY_BUFFER, THINKING_RESERVED_HEIGHT, MIN_STREAMING_LINES, } = TERMINAL_HEIGHT_CONSTANTS;
34
- // Calculate available space for streaming content
35
- const availableStreamingLines = Math.max(0, rows - INPUT_BOX_RESERVED_HEIGHT - THINKING_RESERVED_HEIGHT - SAFETY_BUFFER);
36
- // VERY STRICT CHECK: Only enable streaming if terminal has enough ABSOLUTE rows
37
- // This is intentionally very conservative to prevent issues in VS Code integrated terminals
38
- const shouldEnableStreaming = rows >= MIN_ROWS_FOR_STREAMING;
39
- // Calculate max lines for streaming display
40
- // Use available lines minus safety buffer, with a minimum floor
41
- const maxStreamingLines = shouldEnableStreaming
42
- ? Math.max(MIN_STREAMING_LINES, availableStreamingLines - SAFETY_BUFFER)
43
- : MIN_STREAMING_LINES;
44
- // Calculate max height for thinking display (dynamic based on available space)
45
- // Default to 2-3, but can be smaller in tight spaces
46
- const maxThinkingHeight = Math.max(2, Math.min(3, Math.floor(availableStreamingLines / 5)));
47
- return {
48
- columns,
49
- rows,
50
- availableStreamingLines,
51
- shouldEnableStreaming,
52
- maxStreamingLines,
53
- maxThinkingHeight,
54
- };
22
+ function getTerminalDimensions() {
23
+ const columns = process.stdout.columns || 80;
24
+ const rows = process.stdout.rows || 24;
25
+ const {
26
+ INPUT_BOX_RESERVED_HEIGHT,
27
+ MIN_ROWS_FOR_STREAMING,
28
+ SAFETY_BUFFER,
29
+ THINKING_RESERVED_HEIGHT,
30
+ MIN_STREAMING_LINES
31
+ } = TERMINAL_HEIGHT_CONSTANTS;
32
+ const availableStreamingLines = Math.max(
33
+ 0,
34
+ rows - INPUT_BOX_RESERVED_HEIGHT - THINKING_RESERVED_HEIGHT - SAFETY_BUFFER
35
+ );
36
+ const shouldEnableStreaming = rows >= MIN_ROWS_FOR_STREAMING;
37
+ const maxStreamingLines = shouldEnableStreaming ? Math.max(MIN_STREAMING_LINES, availableStreamingLines - SAFETY_BUFFER) : MIN_STREAMING_LINES;
38
+ const maxThinkingHeight = Math.max(2, Math.min(3, Math.floor(availableStreamingLines / 5)));
39
+ return {
40
+ columns,
41
+ rows,
42
+ availableStreamingLines,
43
+ shouldEnableStreaming,
44
+ maxStreamingLines,
45
+ maxThinkingHeight
46
+ };
55
47
  }
56
- /**
57
- * React hook for reactive terminal dimension tracking
58
- * Updates on terminal resize events
59
- */
60
- export function useTerminalDimensions() {
61
- const [dimensions, setDimensions] = useState(getTerminalDimensions);
62
- const handleResize = useCallback(() => {
63
- setDimensions(getTerminalDimensions());
64
- }, []);
65
- useEffect(() => {
66
- // Listen for resize events
67
- process.stdout.on('resize', handleResize);
68
- // Initial calculation
69
- handleResize();
70
- return () => {
71
- process.stdout.off('resize', handleResize);
72
- };
73
- }, [handleResize]);
74
- return dimensions;
48
+ function useTerminalDimensions() {
49
+ const [dimensions, setDimensions] = useState(getTerminalDimensions);
50
+ const handleResize = useCallback(() => {
51
+ setDimensions(getTerminalDimensions());
52
+ }, []);
53
+ useEffect(() => {
54
+ process.stdout.on("resize", handleResize);
55
+ handleResize();
56
+ return () => {
57
+ process.stdout.off("resize", handleResize);
58
+ };
59
+ }, [handleResize]);
60
+ return dimensions;
75
61
  }
76
- /**
77
- * Utility to check if terminal is too small for streaming
78
- * Can be used outside of React components
79
- */
80
- export function isTerminalTooSmallForStreaming() {
81
- const { shouldEnableStreaming } = getTerminalDimensions();
82
- return !shouldEnableStreaming;
62
+ function isTerminalTooSmallForStreaming() {
63
+ const { shouldEnableStreaming } = getTerminalDimensions();
64
+ return !shouldEnableStreaming;
83
65
  }
66
+ export {
67
+ TERMINAL_HEIGHT_CONSTANTS,
68
+ getTerminalDimensions,
69
+ isTerminalTooSmallForStreaming,
70
+ useTerminalDimensions
71
+ };
84
72
  //# sourceMappingURL=useTerminalDimensions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTerminalDimensions.js","sourceRoot":"","sources":["../../src/hooks/useTerminalDimensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACrC,4BAA4B;IAC5B,2CAA2C;IAC3C,uDAAuD;IACvD,+BAA+B;IAC/B,gCAAgC;IAChC,uDAAuD;IACvD,gDAAgD;IAChD,yBAAyB,EAAE,EAAE;IAE7B,qDAAqD;IACrD,0EAA0E;IAC1E,+CAA+C;IAC/C,sBAAsB,EAAE,EAAE;IAE1B,sDAAsD;IACtD,aAAa,EAAE,CAAC;IAEhB,mDAAmD;IACnD,wBAAwB,EAAE,CAAC;IAE3B,oDAAoD;IACpD,mBAAmB,EAAE,CAAC;CACzB,CAAC;AAiBF;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACjC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IAEvC,MAAM,EACF,yBAAyB,EACzB,sBAAsB,EACtB,aAAa,EACb,wBAAwB,EACxB,mBAAmB,GACtB,GAAG,yBAAyB,CAAC;IAE9B,kDAAkD;IAClD,MAAM,uBAAuB,GAAG,IAAI,CAAC,GAAG,CACpC,CAAC,EACD,IAAI,GAAG,yBAAyB,GAAG,wBAAwB,GAAG,aAAa,CAC9E,CAAC;IAEF,gFAAgF;IAChF,4FAA4F;IAC5F,MAAM,qBAAqB,GAAG,IAAI,IAAI,sBAAsB,CAAC;IAE7D,4CAA4C;IAC5C,gEAAgE;IAChE,MAAM,iBAAiB,GAAG,qBAAqB;QAC3C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,uBAAuB,GAAG,aAAa,CAAC;QACxE,CAAC,CAAC,mBAAmB,CAAC;IAE1B,+EAA+E;IAC/E,qDAAqD;IACrD,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5F,OAAO;QACH,OAAO;QACP,IAAI;QACJ,uBAAuB;QACvB,qBAAqB;QACrB,iBAAiB;QACjB,iBAAiB;KACpB,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB;IACjC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAqB,qBAAqB,CAAC,CAAC;IAExF,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC3C,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACX,2BAA2B;QAC3B,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAE1C,sBAAsB;QACtB,YAAY,EAAE,CAAC;QAEf,OAAO,GAAG,EAAE;YACR,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC/C,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,OAAO,UAAU,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,8BAA8B;IAC1C,MAAM,EAAE,qBAAqB,EAAE,GAAG,qBAAqB,EAAE,CAAC;IAC1D,OAAO,CAAC,qBAAqB,CAAC;AAClC,CAAC"}
1
+ {"version":3,"sources":["../../src/hooks/useTerminalDimensions.ts"],"sourcesContent":["import { useState, useEffect, useCallback } from 'react';\r\n\r\n/**\r\n * Constants for terminal height calculations\r\n * VERY AGGRESSIVELY tuned to prevent streaming issues in VS Code integrated terminal\r\n * VS Code may report terminal buffer size (e.g., 50+ rows) even when only 10-15 are visible\r\n */\r\nexport const TERMINAL_HEIGHT_CONSTANTS = {\r\n // InputBox reserved height:\r\n // - Header row (CWD, Model, Mode) = 1 line\r\n // - Input area borders = 2 lines (top + bottom of box)\r\n // - Input prompt line = 1 line\r\n // - Footer hints row = 1 line \r\n // - Autocomplete dropdown (if visible) = up to 3 lines\r\n // - Extra margin for markdown padding = 2 lines\r\n INPUT_BOX_RESERVED_HEIGHT: 10,\r\n\r\n // ABSOLUTE MINIMUM terminal rows to enable streaming\r\n // Must be fairly high because integrated terminals may report buffer size\r\n // Enable streaming for terminals with 35+ rows\r\n MIN_ROWS_FOR_STREAMING: 35,\r\n\r\n // Extra safety buffer to prevent edge-case flickering\r\n SAFETY_BUFFER: 6,\r\n\r\n // Reserved height for thinking display when active\r\n THINKING_RESERVED_HEIGHT: 6,\r\n\r\n // Minimum lines for streaming display (floor value)\r\n MIN_STREAMING_LINES: 3,\r\n};\r\n\r\nexport interface TerminalDimensions {\r\n /** Terminal width in columns */\r\n columns: number;\r\n /** Terminal height in rows */\r\n rows: number;\r\n /** Available lines for streaming content after InputBox reservation */\r\n availableStreamingLines: number;\r\n /** Whether streaming should be enabled based on available height */\r\n shouldEnableStreaming: boolean;\r\n /** Maximum lines to show in streaming display */\r\n maxStreamingLines: number;\r\n /** Maximum height for thinking display */\r\n maxThinkingHeight: number;\r\n}\r\n\r\n/**\r\n * Get current terminal dimensions and calculate streaming parameters\r\n */\r\nexport function getTerminalDimensions(): TerminalDimensions {\r\n const columns = process.stdout.columns || 80;\r\n const rows = process.stdout.rows || 24;\r\n\r\n const {\r\n INPUT_BOX_RESERVED_HEIGHT,\r\n MIN_ROWS_FOR_STREAMING,\r\n SAFETY_BUFFER,\r\n THINKING_RESERVED_HEIGHT,\r\n MIN_STREAMING_LINES,\r\n } = TERMINAL_HEIGHT_CONSTANTS;\r\n\r\n // Calculate available space for streaming content\r\n const availableStreamingLines = Math.max(\r\n 0,\r\n rows - INPUT_BOX_RESERVED_HEIGHT - THINKING_RESERVED_HEIGHT - SAFETY_BUFFER\r\n );\r\n\r\n // VERY STRICT CHECK: Only enable streaming if terminal has enough ABSOLUTE rows\r\n // This is intentionally very conservative to prevent issues in VS Code integrated terminals\r\n const shouldEnableStreaming = rows >= MIN_ROWS_FOR_STREAMING;\r\n\r\n // Calculate max lines for streaming display\r\n // Use available lines minus safety buffer, with a minimum floor\r\n const maxStreamingLines = shouldEnableStreaming\r\n ? Math.max(MIN_STREAMING_LINES, availableStreamingLines - SAFETY_BUFFER)\r\n : MIN_STREAMING_LINES;\r\n\r\n // Calculate max height for thinking display (dynamic based on available space)\r\n // Default to 2-3, but can be smaller in tight spaces\r\n const maxThinkingHeight = Math.max(2, Math.min(3, Math.floor(availableStreamingLines / 5)));\r\n\r\n return {\r\n columns,\r\n rows,\r\n availableStreamingLines,\r\n shouldEnableStreaming,\r\n maxStreamingLines,\r\n maxThinkingHeight,\r\n };\r\n}\r\n\r\n/**\r\n * React hook for reactive terminal dimension tracking\r\n * Updates on terminal resize events\r\n */\r\nexport function useTerminalDimensions(): TerminalDimensions {\r\n const [dimensions, setDimensions] = useState<TerminalDimensions>(getTerminalDimensions);\r\n\r\n const handleResize = useCallback(() => {\r\n setDimensions(getTerminalDimensions());\r\n }, []);\r\n\r\n useEffect(() => {\r\n // Listen for resize events\r\n process.stdout.on('resize', handleResize);\r\n\r\n // Initial calculation\r\n handleResize();\r\n\r\n return () => {\r\n process.stdout.off('resize', handleResize);\r\n };\r\n }, [handleResize]);\r\n\r\n return dimensions;\r\n}\r\n\r\n/**\r\n * Utility to check if terminal is too small for streaming\r\n * Can be used outside of React components\r\n */\r\nexport function isTerminalTooSmallForStreaming(): boolean {\r\n const { shouldEnableStreaming } = getTerminalDimensions();\r\n return !shouldEnableStreaming;\r\n}\r\n"],"mappings":"AAAA,SAAS,UAAU,WAAW,mBAAmB;AAO1C,MAAM,4BAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQrC,2BAA2B;AAAA;AAAA;AAAA;AAAA,EAK3B,wBAAwB;AAAA;AAAA,EAGxB,eAAe;AAAA;AAAA,EAGf,0BAA0B;AAAA;AAAA,EAG1B,qBAAqB;AACzB;AAoBO,SAAS,wBAA4C;AACxD,QAAM,UAAU,QAAQ,OAAO,WAAW;AAC1C,QAAM,OAAO,QAAQ,OAAO,QAAQ;AAEpC,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAI;AAGJ,QAAM,0BAA0B,KAAK;AAAA,IACjC;AAAA,IACA,OAAO,4BAA4B,2BAA2B;AAAA,EAClE;AAIA,QAAM,wBAAwB,QAAQ;AAItC,QAAM,oBAAoB,wBACpB,KAAK,IAAI,qBAAqB,0BAA0B,aAAa,IACrE;AAIN,QAAM,oBAAoB,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,MAAM,0BAA0B,CAAC,CAAC,CAAC;AAE1F,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACJ;AAMO,SAAS,wBAA4C;AACxD,QAAM,CAAC,YAAY,aAAa,IAAI,SAA6B,qBAAqB;AAEtF,QAAM,eAAe,YAAY,MAAM;AACnC,kBAAc,sBAAsB,CAAC;AAAA,EACzC,GAAG,CAAC,CAAC;AAEL,YAAU,MAAM;AAEZ,YAAQ,OAAO,GAAG,UAAU,YAAY;AAGxC,iBAAa;AAEb,WAAO,MAAM;AACT,cAAQ,OAAO,IAAI,UAAU,YAAY;AAAA,IAC7C;AAAA,EACJ,GAAG,CAAC,YAAY,CAAC;AAEjB,SAAO;AACX;AAMO,SAAS,iCAA0C;AACtD,QAAM,EAAE,sBAAsB,IAAI,sBAAsB;AACxD,SAAO,CAAC;AACZ;","names":[]}