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,125 +1,72 @@
1
- import React, { useState } from 'react';
2
- import { Box, Text, useInput } from 'ink';
3
- import { wrapText } from '../../utils/markdown-parser.js';
4
- // Maximum number of lines to show before truncating in diff view
5
- // Using 10 lines to match FileCreationPreview
1
+ import React, { useState } from "react";
2
+ import { Box, Text, useInput } from "ink";
3
+ import { wrapText } from "../../utils/markdown-parser.js";
6
4
  const MAX_PREVIEW_LINES = 10;
7
- // Maximum number of lines to show in full view before truncating
8
- const MAX_FULL_VIEW_LINES = 1000;
9
- export const DiffViewer = ({ diff, filePath, fullDiff }) => {
10
- const [showFull, setShowFull] = useState(false);
11
- useInput((input, key) => {
12
- if (input === 'o' && key.ctrl) {
13
- setShowFull(prev => !prev);
5
+ const MAX_FULL_VIEW_LINES = 1e3;
6
+ const DiffViewer = ({ diff, filePath, fullDiff }) => {
7
+ const [showFull, setShowFull] = useState(false);
8
+ useInput((input, key) => {
9
+ if (input === "o" && key.ctrl) {
10
+ setShowFull((prev) => !prev);
11
+ }
12
+ });
13
+ const renderDiffContent = (content, maxLines) => {
14
+ const lines = content.split("\n");
15
+ const processedLines = [];
16
+ let currentLineNum = 1;
17
+ const terminalWidth = process.stdout.columns || 80;
18
+ const maxContentWidth = Math.max(40, terminalWidth - 11);
19
+ for (const line of lines) {
20
+ const trimmed = line.trim();
21
+ if (line.startsWith("@@")) {
22
+ const match = line.match(/@@ \-\d+(?:,\d+)? \+(\d+)(?:,\d+)? @@/);
23
+ if (match && match[1]) {
24
+ currentLineNum = parseInt(match[1], 10);
14
25
  }
15
- });
16
- // Process content into displayable lines (wrapped and styled)
17
- const renderDiffContent = (content, maxLines) => {
18
- const lines = content.split('\n');
19
- const processedLines = [];
20
- // Parse diff logic
21
- let currentLineNum = 1;
22
- // Calculate max content width
23
- // Terminal width - borders (2) - padding (2) - line number (5 with space)
24
- const terminalWidth = process.stdout.columns || 80;
25
- const maxContentWidth = Math.max(40, terminalWidth - 11);
26
- for (const line of lines) {
27
- const trimmed = line.trim();
28
- // Handle diff headers and hunk headers
29
- if (line.startsWith('@@')) {
30
- const match = line.match(/@@ \-\d+(?:,\d+)? \+(\d+)(?:,\d+)? @@/);
31
- if (match && match[1]) {
32
- currentLineNum = parseInt(match[1], 10);
33
- }
34
- // In full view or if this is relevant context, we generally want to show it
35
- // But for compactness in preview, sometimes hunks are skipped if we implemented smart slicing
36
- // Here we just render everything linearly
37
- }
38
- // Skip generic diff metadata if it's not useful code context
39
- if (line.startsWith('---') || line.startsWith('+++'))
40
- continue;
41
- if (line.startsWith('Index:'))
42
- continue;
43
- if (trimmed.startsWith('==='))
44
- continue;
45
- let type = 'context';
46
- let lineNum = undefined;
47
- if (line.startsWith('+')) {
48
- type = 'added';
49
- lineNum = currentLineNum++;
50
- }
51
- else if (line.startsWith('-')) {
52
- type = 'deleted';
53
- // No line num increment for deleted lines in new file version
54
- }
55
- else {
56
- type = 'context';
57
- lineNum = currentLineNum++;
58
- }
59
- // Determine style
60
- let style = { color: 'white', backgroundColor: undefined };
61
- if (type === 'added')
62
- style = { backgroundColor: undefined, color: 'green' }; // Clean look: colored text
63
- if (type === 'deleted')
64
- style = { backgroundColor: undefined, color: 'red' };
65
- // Format line number
66
- const lineNumStr = lineNum ? lineNum.toString().padStart(4, ' ') : ' ';
67
- const cleanText = (line.startsWith('+') || line.startsWith('-') || line.startsWith(' ')) ? line.slice(1) : line;
68
- // Wrap text
69
- const wrapped = wrapText(cleanText || ' ', maxContentWidth, 0);
70
- wrapped.forEach((wLine, idx) => {
71
- processedLines.push({
72
- text: wLine,
73
- ...style,
74
- lineNumStr: idx === 0 ? lineNumStr : ' '
75
- });
76
- });
77
- }
78
- // Determine truncation
79
- const totalLines = processedLines.length;
80
- const shouldTruncate = totalLines > maxLines;
81
- const displayLines = shouldTruncate ? processedLines.slice(0, maxLines) : processedLines;
82
- const hiddenLines = shouldTruncate ? totalLines - maxLines : 0;
83
- // Stats for summary
84
- const addedCount = (content.match(/^\+/gm) || []).length;
85
- const deletedCount = (content.match(/^\-/gm) || []).length;
86
- const addedText = addedCount === 1 ? '1 line added' : `${addedCount} lines added`;
87
- const deletedText = deletedCount === 1 ? '1 line deleted' : `${deletedCount} lines deleted`;
88
- return (React.createElement(React.Fragment, null,
89
- displayLines.map((line, idx) => (React.createElement(Box, { key: idx, flexDirection: "row" },
90
- React.createElement(Text, { color: "gray" },
91
- line.lineNumStr,
92
- " "),
93
- React.createElement(Text, { color: line.color, backgroundColor: line.backgroundColor }, line.text)))),
94
- shouldTruncate && (React.createElement(Box, { marginTop: 1 },
95
- React.createElement(Text, { color: "#ffaa00", dimColor: true },
96
- "... ",
97
- hiddenLines,
98
- " more ",
99
- hiddenLines === 1 ? 'line' : 'lines',
100
- " not shown ..."))),
101
- React.createElement(Box, { marginTop: 1, marginBottom: 1 },
102
- React.createElement(Text, { color: "#666666" }, '─'.repeat(terminalWidth - 4))),
103
- React.createElement(Box, null,
104
- React.createElement(Text, { color: "green" }, addedText),
105
- React.createElement(Text, { color: "#666666" }, ", "),
106
- React.createElement(Text, { color: "red" }, deletedText))));
107
- };
108
- // Determine which content to show
109
- // If showFull is true AND fullDiff is available, show fullDiff
110
- // If showFull is true but no fullDiff, show expanded regular diff
111
- // Otherwise show limited regular diff
112
- const contentToShow = (showFull && fullDiff) ? fullDiff : diff;
113
- const limit = showFull ? MAX_FULL_VIEW_LINES : MAX_PREVIEW_LINES;
114
- return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#ffaa00", paddingX: 1 },
115
- React.createElement(Box, { justifyContent: "space-between" },
116
- React.createElement(Text, { color: "#ffffff", bold: true },
117
- "Diff Preview: ",
118
- filePath || 'Untitled'),
119
- React.createElement(Box, null,
120
- React.createElement(Text, { color: "#666666", dimColor: true }, showFull ? 'Ctrl+O: Collapse' : 'Ctrl+O: Full File'))),
121
- React.createElement(Box, { marginTop: 1, marginBottom: 1 },
122
- React.createElement(Text, { color: "#666666" }, '─'.repeat((process.stdout.columns || 80) - 4))),
123
- renderDiffContent(contentToShow, limit)));
26
+ }
27
+ if (line.startsWith("---") || line.startsWith("+++")) continue;
28
+ if (line.startsWith("Index:")) continue;
29
+ if (trimmed.startsWith("===")) continue;
30
+ let type = "context";
31
+ let lineNum = void 0;
32
+ if (line.startsWith("+")) {
33
+ type = "added";
34
+ lineNum = currentLineNum++;
35
+ } else if (line.startsWith("-")) {
36
+ type = "deleted";
37
+ } else {
38
+ type = "context";
39
+ lineNum = currentLineNum++;
40
+ }
41
+ let style = { color: "white", backgroundColor: void 0 };
42
+ if (type === "added") style = { backgroundColor: void 0, color: "green" };
43
+ if (type === "deleted") style = { backgroundColor: void 0, color: "red" };
44
+ const lineNumStr = lineNum ? lineNum.toString().padStart(4, " ") : " ";
45
+ const cleanText = line.startsWith("+") || line.startsWith("-") || line.startsWith(" ") ? line.slice(1) : line;
46
+ const wrapped = wrapText(cleanText || " ", maxContentWidth, 0);
47
+ wrapped.forEach((wLine, idx) => {
48
+ processedLines.push({
49
+ text: wLine,
50
+ ...style,
51
+ lineNumStr: idx === 0 ? lineNumStr : " "
52
+ });
53
+ });
54
+ }
55
+ const totalLines = processedLines.length;
56
+ const shouldTruncate = totalLines > maxLines;
57
+ const displayLines = shouldTruncate ? processedLines.slice(0, maxLines) : processedLines;
58
+ const hiddenLines = shouldTruncate ? totalLines - maxLines : 0;
59
+ const addedCount = (content.match(/^\+/gm) || []).length;
60
+ const deletedCount = (content.match(/^\-/gm) || []).length;
61
+ const addedText = addedCount === 1 ? "1 line added" : `${addedCount} lines added`;
62
+ const deletedText = deletedCount === 1 ? "1 line deleted" : `${deletedCount} lines deleted`;
63
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, displayLines.map((line, idx) => /* @__PURE__ */ React.createElement(Box, { key: idx, flexDirection: "row" }, /* @__PURE__ */ React.createElement(Text, { color: "gray" }, line.lineNumStr, " "), /* @__PURE__ */ React.createElement(Text, { color: line.color, backgroundColor: line.backgroundColor }, line.text))), shouldTruncate && /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#ffaa00", dimColor: true }, "... ", hiddenLines, " more ", hiddenLines === 1 ? "line" : "lines", " not shown ...")), /* @__PURE__ */ React.createElement(Box, { marginTop: 1, marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, "\u2500".repeat(terminalWidth - 4))), /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "green" }, addedText), /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, ", "), /* @__PURE__ */ React.createElement(Text, { color: "red" }, deletedText)));
64
+ };
65
+ const contentToShow = showFull && fullDiff ? fullDiff : diff;
66
+ const limit = showFull ? MAX_FULL_VIEW_LINES : MAX_PREVIEW_LINES;
67
+ return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#ffaa00", paddingX: 1 }, /* @__PURE__ */ React.createElement(Box, { justifyContent: "space-between" }, /* @__PURE__ */ React.createElement(Text, { color: "#ffffff", bold: true }, "Diff Preview: ", filePath || "Untitled"), /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#666666", dimColor: true }, showFull ? "Ctrl+O: Collapse" : "Ctrl+O: Full File"))), /* @__PURE__ */ React.createElement(Box, { marginTop: 1, marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, "\u2500".repeat((process.stdout.columns || 80) - 4))), renderDiffContent(contentToShow, limit));
68
+ };
69
+ export {
70
+ DiffViewer
124
71
  };
125
72
  //# sourceMappingURL=DiffViewer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DiffViewer.js","sourceRoot":"","sources":["../../../src/ui/components/DiffViewer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/ui/components/DiffViewer.tsx"],"sourcesContent":["import React, { useState } from 'react';\r\nimport { Box, Text, useInput } from 'ink';\r\nimport { wrapText } from '../../utils/markdown-parser.js';\r\n\r\ninterface DiffViewerProps {\r\n diff: string;\r\n filePath: string;\r\n fullDiff?: string;\r\n}\r\n\r\n// Maximum number of lines to show before truncating in diff view\r\n// Using 10 lines to match FileCreationPreview\r\nconst MAX_PREVIEW_LINES = 10;\r\n// Maximum number of lines to show in full view before truncating\r\nconst MAX_FULL_VIEW_LINES = 1000;\r\n\r\nexport const DiffViewer: React.FC<DiffViewerProps> = ({ diff, filePath, fullDiff }) => {\r\n const [showFull, setShowFull] = useState(false);\r\n\r\n useInput((input, key) => {\r\n if (input === 'o' && key.ctrl) {\r\n setShowFull(prev => !prev);\r\n }\r\n });\r\n\r\n // Process content into displayable lines (wrapped and styled)\r\n const renderDiffContent = (content: string, maxLines: number) => {\r\n const lines = content.split('\\n');\r\n const processedLines: { text: string; color: string; backgroundColor?: string; lineNumStr: string }[] = [];\r\n\r\n // Parse diff logic\r\n let currentLineNum = 1;\r\n\r\n // Calculate max content width\r\n // Terminal width - borders (2) - padding (2) - line number (5 with space)\r\n const terminalWidth = process.stdout.columns || 80;\r\n const maxContentWidth = Math.max(40, terminalWidth - 11);\r\n\r\n for (const line of lines) {\r\n const trimmed = line.trim();\r\n\r\n // Handle diff headers and hunk headers\r\n if (line.startsWith('@@')) {\r\n const match = line.match(/@@ \\-\\d+(?:,\\d+)? \\+(\\d+)(?:,\\d+)? @@/);\r\n if (match && match[1]) {\r\n currentLineNum = parseInt(match[1], 10);\r\n }\r\n // In full view or if this is relevant context, we generally want to show it\r\n // But for compactness in preview, sometimes hunks are skipped if we implemented smart slicing\r\n // Here we just render everything linearly\r\n }\r\n\r\n // Skip generic diff metadata if it's not useful code context\r\n if (line.startsWith('---') || line.startsWith('+++')) continue;\r\n if (line.startsWith('Index:')) continue;\r\n if (trimmed.startsWith('===')) continue;\r\n\r\n let type: 'added' | 'deleted' | 'context' = 'context';\r\n let lineNum: number | undefined = undefined;\r\n\r\n if (line.startsWith('+')) {\r\n type = 'added';\r\n lineNum = currentLineNum++;\r\n } else if (line.startsWith('-')) {\r\n type = 'deleted';\r\n // No line num increment for deleted lines in new file version\r\n } else {\r\n type = 'context';\r\n lineNum = currentLineNum++;\r\n }\r\n\r\n // Determine style\r\n let style = { color: 'white', backgroundColor: undefined as string | undefined };\r\n if (type === 'added') style = { backgroundColor: undefined, color: 'green' }; // Clean look: colored text\r\n if (type === 'deleted') style = { backgroundColor: undefined, color: 'red' };\r\n\r\n // Format line number\r\n const lineNumStr = lineNum ? lineNum.toString().padStart(4, ' ') : ' ';\r\n const cleanText = (line.startsWith('+') || line.startsWith('-') || line.startsWith(' ')) ? line.slice(1) : line;\r\n\r\n // Wrap text\r\n const wrapped = wrapText(cleanText || ' ', maxContentWidth, 0);\r\n\r\n wrapped.forEach((wLine, idx) => {\r\n processedLines.push({\r\n text: wLine,\r\n ...style,\r\n lineNumStr: idx === 0 ? lineNumStr : ' '\r\n });\r\n });\r\n }\r\n\r\n // Determine truncation\r\n const totalLines = processedLines.length;\r\n const shouldTruncate = totalLines > maxLines;\r\n const displayLines = shouldTruncate ? processedLines.slice(0, maxLines) : processedLines;\r\n const hiddenLines = shouldTruncate ? totalLines - maxLines : 0;\r\n\r\n // Stats for summary\r\n const addedCount = (content.match(/^\\+/gm) || []).length;\r\n const deletedCount = (content.match(/^\\-/gm) || []).length;\r\n const addedText = addedCount === 1 ? '1 line added' : `${addedCount} lines added`;\r\n const deletedText = deletedCount === 1 ? '1 line deleted' : `${deletedCount} lines deleted`;\r\n\r\n return (\r\n <>\r\n {/* Code changes */}\r\n {displayLines.map((line, idx) => (\r\n <Box key={idx} flexDirection=\"row\">\r\n <Text color=\"gray\">{line.lineNumStr} </Text>\r\n <Text color={line.color} backgroundColor={line.backgroundColor}>{line.text}</Text>\r\n </Box>\r\n ))}\r\n\r\n {/* Truncation notice */}\r\n {shouldTruncate && (\r\n <Box marginTop={1}>\r\n <Text color=\"#ffaa00\" dimColor>\r\n ... {hiddenLines} more {hiddenLines === 1 ? 'line' : 'lines'} not shown ...\r\n </Text>\r\n </Box>\r\n )}\r\n\r\n {/* Bottom separator line */}\r\n <Box marginTop={1} marginBottom={1}>\r\n <Text color=\"#666666\">{'─'.repeat(terminalWidth - 4)}</Text>\r\n </Box>\r\n\r\n {/* Summary */}\r\n <Box>\r\n <Text color=\"green\">{addedText}</Text>\r\n <Text color=\"#666666\">, </Text>\r\n <Text color=\"red\">{deletedText}</Text>\r\n </Box>\r\n </>\r\n );\r\n };\r\n\r\n // Determine which content to show\r\n // If showFull is true AND fullDiff is available, show fullDiff\r\n // If showFull is true but no fullDiff, show expanded regular diff\r\n // Otherwise show limited regular diff\r\n const contentToShow = (showFull && fullDiff) ? fullDiff : diff;\r\n const limit = showFull ? MAX_FULL_VIEW_LINES : MAX_PREVIEW_LINES;\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#ffaa00\" paddingX={1}>\r\n {/* File path header */}\r\n <Box justifyContent=\"space-between\">\r\n <Text color=\"#ffffff\" bold>Diff Preview: {filePath || 'Untitled'}</Text>\r\n <Box>\r\n <Text color=\"#666666\" dimColor>\r\n {showFull ? 'Ctrl+O: Collapse' : 'Ctrl+O: Full File'}\r\n </Text>\r\n </Box>\r\n </Box>\r\n\r\n {/* Separator line */}\r\n <Box marginTop={1} marginBottom={1}>\r\n <Text color=\"#666666\">{'─'.repeat((process.stdout.columns || 80) - 4)}</Text>\r\n </Box>\r\n\r\n {renderDiffContent(contentToShow, limit)}\r\n </Box>\r\n );\r\n};\r\n"],"mappings":"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","names":[]}
@@ -1,54 +1,46 @@
1
- import React, { Component } from 'react';
2
- import { Box, Text } from 'ink';
3
- import { logError } from '../../utils/logger.js';
4
- import { quickLog } from '../../utils/conversation-logger.js';
5
- // Maximum recovery attempts before showing error screen
1
+ import React, { Component } from "react";
2
+ import { Box, Text } from "ink";
3
+ import { logError } from "../../utils/logger.js";
4
+ import { quickLog } from "../../utils/conversation-logger.js";
6
5
  const MAX_RECOVERY_ATTEMPTS = 3;
7
- export class ErrorBoundary extends Component {
8
- constructor(props) {
9
- super(props);
10
- this.state = { hasError: false, recoveryAttempts: 0 };
6
+ class ErrorBoundary extends Component {
7
+ constructor(props) {
8
+ super(props);
9
+ this.state = { hasError: false, recoveryAttempts: 0 };
10
+ }
11
+ static getDerivedStateFromError(error) {
12
+ if (error.name === "RuntimeError" && error.message?.includes("memory access out of bounds")) {
13
+ return {};
11
14
  }
12
- static getDerivedStateFromError(error) {
13
- // Check if this is a recoverable WASM error
14
- if (error.name === 'RuntimeError' && error.message?.includes('memory access out of bounds')) {
15
- // Don't set hasError for WASM memory errors - they're recoverable
16
- return {};
17
- }
18
- return { hasError: true, error };
15
+ return { hasError: true, error };
16
+ }
17
+ componentDidCatch(error, errorInfo) {
18
+ if (error.name === "RuntimeError" && error.message?.includes("memory access out of bounds")) {
19
+ quickLog(`[${(/* @__PURE__ */ new Date()).toISOString()}] [WASM] ErrorBoundary recovering: ${error.message}
20
+ `);
21
+ const newAttempts = this.state.recoveryAttempts + 1;
22
+ if (newAttempts > MAX_RECOVERY_ATTEMPTS) {
23
+ quickLog(`[${(/* @__PURE__ */ new Date()).toISOString()}] [WASM] Too many errors, showing error screen
24
+ `);
25
+ this.setState({ hasError: true, error, recoveryAttempts: 0 });
26
+ } else {
27
+ this.setState({ recoveryAttempts: newAttempts });
28
+ setTimeout(() => {
29
+ this.forceUpdate();
30
+ }, 100);
31
+ }
32
+ return;
19
33
  }
20
- componentDidCatch(error, errorInfo) {
21
- // Check if this is a WASM memory error - these are recoverable
22
- if (error.name === 'RuntimeError' && error.message?.includes('memory access out of bounds')) {
23
- quickLog(`[${new Date().toISOString()}] [WASM] ErrorBoundary recovering: ${error.message}\n`);
24
- // Increment recovery attempts
25
- const newAttempts = this.state.recoveryAttempts + 1;
26
- if (newAttempts > MAX_RECOVERY_ATTEMPTS) {
27
- // Too many errors, show error screen
28
- quickLog(`[${new Date().toISOString()}] [WASM] Too many errors, showing error screen\n`);
29
- this.setState({ hasError: true, error, recoveryAttempts: 0 });
30
- }
31
- else {
32
- // Try to recover by re-rendering after a brief delay
33
- this.setState({ recoveryAttempts: newAttempts });
34
- setTimeout(() => {
35
- this.forceUpdate();
36
- }, 100);
37
- }
38
- return;
39
- }
40
- // Log non-recoverable errors
41
- logError('Centaurus CLI Error', error);
42
- }
43
- render() {
44
- if (this.state.hasError) {
45
- return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#ff3366", paddingX: 1, marginY: 1 },
46
- React.createElement(Text, { color: "#ff3366", bold: true }, "\u26A0 An error occurred:"),
47
- React.createElement(Text, { color: "#ffffff" }, this.state.error?.message),
48
- React.createElement(Box, { marginTop: 1 },
49
- React.createElement(Text, { color: "#666666" }, "Please restart the application or check the logs for details."))));
50
- }
51
- return this.props.children;
34
+ logError("Centaurus CLI Error", error);
35
+ }
36
+ render() {
37
+ if (this.state.hasError) {
38
+ return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#ff3366", paddingX: 1, marginY: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#ff3366", bold: true }, "\u26A0 An error occurred:"), /* @__PURE__ */ React.createElement(Text, { color: "#ffffff" }, this.state.error?.message), /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, "Please restart the application or check the logs for details.")));
52
39
  }
40
+ return this.props.children;
41
+ }
53
42
  }
43
+ export {
44
+ ErrorBoundary
45
+ };
54
46
  //# sourceMappingURL=ErrorBoundary.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorBoundary.js","sourceRoot":"","sources":["../../../src/ui/components/ErrorBoundary.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAa,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAY9D,wDAAwD;AACxD,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEhC,MAAM,OAAO,aAAc,SAAQ,SAAuB;IACxD,YAAY,KAAY;QACtB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,wBAAwB,CAAC,KAAY;QAC1C,4CAA4C;QAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,6BAA6B,CAAC,EAAE,CAAC;YAC5F,kEAAkE;YAClE,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,iBAAiB,CAAC,KAAY,EAAE,SAAc;QAC5C,+DAA+D;QAC/D,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,6BAA6B,CAAC,EAAE,CAAC;YAC5F,QAAQ,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,sCAAsC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;YAE9F,8BAA8B;YAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAEpD,IAAI,WAAW,GAAG,qBAAqB,EAAE,CAAC;gBACxC,qCAAqC;gBACrC,QAAQ,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,kDAAkD,CAAC,CAAC;gBACzF,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,qDAAqD;gBACrD,IAAI,CAAC,QAAQ,CAAC,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,CAAC;gBACjD,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,CAAC,EAAE,GAAG,CAAC,CAAC;YACV,CAAC;YACD,OAAO;QACT,CAAC;QAED,6BAA6B;QAC7B,QAAQ,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACxB,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,SAAS,EAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;gBAC3F,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,sCAA4B;gBACtD,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,IAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAQ;gBACxD,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC;oBACf,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,oEAEd,CACH,CACF,CACP,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,CAAC;CACF"}
1
+ {"version":3,"sources":["../../../src/ui/components/ErrorBoundary.tsx"],"sourcesContent":["import React, { Component, ReactNode } from 'react';\r\nimport { Box, Text } from 'ink';\r\nimport { logError } from '../../utils/logger.js';\r\nimport { quickLog } from '../../utils/conversation-logger.js';\r\n\r\ninterface Props {\r\n children: ReactNode;\r\n}\r\n\r\ninterface State {\r\n hasError: boolean;\r\n error?: Error;\r\n recoveryAttempts: number;\r\n}\r\n\r\n// Maximum recovery attempts before showing error screen\r\nconst MAX_RECOVERY_ATTEMPTS = 3;\r\n\r\nexport class ErrorBoundary extends Component<Props, State> {\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = { hasError: false, recoveryAttempts: 0 };\r\n }\r\n\r\n static getDerivedStateFromError(error: Error): Partial<State> {\r\n // Check if this is a recoverable WASM error\r\n if (error.name === 'RuntimeError' && error.message?.includes('memory access out of bounds')) {\r\n // Don't set hasError for WASM memory errors - they're recoverable\r\n return {};\r\n }\r\n return { hasError: true, error };\r\n }\r\n\r\n componentDidCatch(error: Error, errorInfo: any) {\r\n // Check if this is a WASM memory error - these are recoverable\r\n if (error.name === 'RuntimeError' && error.message?.includes('memory access out of bounds')) {\r\n quickLog(`[${new Date().toISOString()}] [WASM] ErrorBoundary recovering: ${error.message}\\n`);\r\n\r\n // Increment recovery attempts\r\n const newAttempts = this.state.recoveryAttempts + 1;\r\n\r\n if (newAttempts > MAX_RECOVERY_ATTEMPTS) {\r\n // Too many errors, show error screen\r\n quickLog(`[${new Date().toISOString()}] [WASM] Too many errors, showing error screen\\n`);\r\n this.setState({ hasError: true, error, recoveryAttempts: 0 });\r\n } else {\r\n // Try to recover by re-rendering after a brief delay\r\n this.setState({ recoveryAttempts: newAttempts });\r\n setTimeout(() => {\r\n this.forceUpdate();\r\n }, 100);\r\n }\r\n return;\r\n }\r\n\r\n // Log non-recoverable errors\r\n logError('Centaurus CLI Error', error);\r\n }\r\n\r\n render() {\r\n if (this.state.hasError) {\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#ff3366\" paddingX={1} marginY={1}>\r\n <Text color=\"#ff3366\" bold>⚠ An error occurred:</Text>\r\n <Text color=\"#ffffff\">{this.state.error?.message}</Text>\r\n <Box marginTop={1}>\r\n <Text color=\"#666666\">\r\n Please restart the application or check the logs for details.\r\n </Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n return this.props.children;\r\n }\r\n}\r\n"],"mappings":"AAAA,OAAO,SAAS,iBAA4B;AAC5C,SAAS,KAAK,YAAY;AAC1B,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAazB,MAAM,wBAAwB;AAEvB,MAAM,sBAAsB,UAAwB;AAAA,EACzD,YAAY,OAAc;AACxB,UAAM,KAAK;AACX,SAAK,QAAQ,EAAE,UAAU,OAAO,kBAAkB,EAAE;AAAA,EACtD;AAAA,EAEA,OAAO,yBAAyB,OAA8B;AAE5D,QAAI,MAAM,SAAS,kBAAkB,MAAM,SAAS,SAAS,6BAA6B,GAAG;AAE3F,aAAO,CAAC;AAAA,IACV;AACA,WAAO,EAAE,UAAU,MAAM,MAAM;AAAA,EACjC;AAAA,EAEA,kBAAkB,OAAc,WAAgB;AAE9C,QAAI,MAAM,SAAS,kBAAkB,MAAM,SAAS,SAAS,6BAA6B,GAAG;AAC3F,eAAS,KAAI,oBAAI,KAAK,GAAE,YAAY,CAAC,sCAAsC,MAAM,OAAO;AAAA,CAAI;AAG5F,YAAM,cAAc,KAAK,MAAM,mBAAmB;AAElD,UAAI,cAAc,uBAAuB;AAEvC,iBAAS,KAAI,oBAAI,KAAK,GAAE,YAAY,CAAC;AAAA,CAAkD;AACvF,aAAK,SAAS,EAAE,UAAU,MAAM,OAAO,kBAAkB,EAAE,CAAC;AAAA,MAC9D,OAAO;AAEL,aAAK,SAAS,EAAE,kBAAkB,YAAY,CAAC;AAC/C,mBAAW,MAAM;AACf,eAAK,YAAY;AAAA,QACnB,GAAG,GAAG;AAAA,MACR;AACA;AAAA,IACF;AAGA,aAAS,uBAAuB,KAAK;AAAA,EACvC;AAAA,EAEA,SAAS;AACP,QAAI,KAAK,MAAM,UAAU;AACvB,aACE,oCAAC,OAAI,eAAc,UAAS,aAAY,SAAQ,aAAY,WAAU,UAAU,GAAG,SAAS,KAC1F,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,2BAAoB,GAC/C,oCAAC,QAAK,OAAM,aAAW,KAAK,MAAM,OAAO,OAAQ,GACjD,oCAAC,OAAI,WAAW,KACd,oCAAC,QAAK,OAAM,aAAU,+DAEtB,CACF,CACF;AAAA,IAEJ;AAEA,WAAO,KAAK,MAAM;AAAA,EACpB;AACF;","names":[]}
@@ -1,63 +1,32 @@
1
- import React, { useState } from 'react';
2
- import { Box, Text, useInput } from 'ink';
3
- import { wrapText } from '../../utils/markdown-parser.js';
4
- // Maximum number of lines to show before truncating in preview
5
- // Using 10 lines as a reasonable default for preview
1
+ import React, { useState } from "react";
2
+ import { Box, Text, useInput } from "ink";
3
+ import { wrapText } from "../../utils/markdown-parser.js";
6
4
  const MAX_PREVIEW_LINES = 10;
7
- // Maximum number of lines to show in full view before truncating
8
- const MAX_FULL_VIEW_LINES = 1000;
9
- export const FileCreationPreview = ({ content, filePath }) => {
10
- const [showFull, setShowFull] = useState(false);
11
- useInput((input, key) => {
12
- if (input === 'o' && key.ctrl) {
13
- setShowFull(prev => !prev);
14
- }
15
- });
16
- const renderContent = (text, maxLines) => {
17
- const lines = text.split('\n');
18
- const totalLines = lines.length;
19
- const shouldTruncate = totalLines > maxLines;
20
- const displayLines = shouldTruncate ? lines.slice(0, maxLines) : lines;
21
- const hiddenLines = shouldTruncate ? totalLines - maxLines : 0;
22
- // Calculate available width for content
23
- // Terminal width - borders (2) - padding (2) - line number (5 with space)
24
- const terminalWidth = process.stdout.columns || 80;
25
- const maxContentWidth = Math.max(40, terminalWidth - 11);
26
- return (React.createElement(React.Fragment, null,
27
- displayLines.map((line, idx) => {
28
- // Format line number: fixed width 4 chars
29
- const lineNumStr = (idx + 1).toString().padStart(4, ' ');
30
- // Use wrapText utility to wrap long lines properly
31
- const wrappedLines = wrapText(line || ' ', maxContentWidth, 0);
32
- return wrappedLines.map((wrappedLine, lineIdx) => (React.createElement(Box, { key: `${idx}-${lineIdx}`, flexDirection: "column" },
33
- React.createElement(Box, { flexDirection: "row" },
34
- React.createElement(Text, { color: "gray" },
35
- lineIdx === 0 ? lineNumStr : ' ',
36
- ' '),
37
- React.createElement(Text, { color: "white" }, wrappedLine)))));
38
- }).flat(),
39
- shouldTruncate && (React.createElement(Box, { marginTop: 1 },
40
- React.createElement(Text, { color: "#00cc66", dimColor: true },
41
- "... ",
42
- hiddenLines,
43
- " more ",
44
- hiddenLines === 1 ? 'line' : 'lines',
45
- " not shown ..."))),
46
- React.createElement(Box, { marginTop: 1, marginBottom: 1 },
47
- React.createElement(Text, { color: "#666666" }, '─'.repeat(80))),
48
- React.createElement(Box, null,
49
- React.createElement(Text, { color: "#00cc66" },
50
- totalLines,
51
- " lines to be created"))));
52
- };
53
- return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#00cc66", paddingX: 1 },
54
- React.createElement(Box, { justifyContent: "space-between" },
55
- React.createElement(Text, { color: "#ffffff", bold: true },
56
- "New File Preview: ",
57
- filePath || 'Untitled'),
58
- React.createElement(Text, { color: "#666666", dimColor: true }, showFull ? 'Press Ctrl+O to collapse' : 'Press Ctrl+O for Full File')),
59
- React.createElement(Box, { marginTop: 1, marginBottom: 1 },
60
- React.createElement(Text, { color: "#666666" }, '─'.repeat(80))),
61
- renderContent(content, showFull ? MAX_FULL_VIEW_LINES : MAX_PREVIEW_LINES)));
5
+ const MAX_FULL_VIEW_LINES = 1e3;
6
+ const FileCreationPreview = ({ content, filePath }) => {
7
+ const [showFull, setShowFull] = useState(false);
8
+ useInput((input, key) => {
9
+ if (input === "o" && key.ctrl) {
10
+ setShowFull((prev) => !prev);
11
+ }
12
+ });
13
+ const renderContent = (text, maxLines) => {
14
+ const lines = text.split("\n");
15
+ const totalLines = lines.length;
16
+ const shouldTruncate = totalLines > maxLines;
17
+ const displayLines = shouldTruncate ? lines.slice(0, maxLines) : lines;
18
+ const hiddenLines = shouldTruncate ? totalLines - maxLines : 0;
19
+ const terminalWidth = process.stdout.columns || 80;
20
+ const maxContentWidth = Math.max(40, terminalWidth - 11);
21
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, displayLines.map((line, idx) => {
22
+ const lineNumStr = (idx + 1).toString().padStart(4, " ");
23
+ const wrappedLines = wrapText(line || " ", maxContentWidth, 0);
24
+ return wrappedLines.map((wrappedLine, lineIdx) => /* @__PURE__ */ React.createElement(Box, { key: `${idx}-${lineIdx}`, flexDirection: "column" }, /* @__PURE__ */ React.createElement(Box, { flexDirection: "row" }, /* @__PURE__ */ React.createElement(Text, { color: "gray" }, lineIdx === 0 ? lineNumStr : " ", " "), /* @__PURE__ */ React.createElement(Text, { color: "white" }, wrappedLine))));
25
+ }).flat(), shouldTruncate && /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#00cc66", dimColor: true }, "... ", hiddenLines, " more ", hiddenLines === 1 ? "line" : "lines", " not shown ...")), /* @__PURE__ */ React.createElement(Box, { marginTop: 1, marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, "\u2500".repeat(80))), /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#00cc66" }, totalLines, " lines to be created")));
26
+ };
27
+ return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#00cc66", paddingX: 1 }, /* @__PURE__ */ React.createElement(Box, { justifyContent: "space-between" }, /* @__PURE__ */ React.createElement(Text, { color: "#ffffff", bold: true }, "New File Preview: ", filePath || "Untitled"), /* @__PURE__ */ React.createElement(Text, { color: "#666666", dimColor: true }, showFull ? "Press Ctrl+O to collapse" : "Press Ctrl+O for Full File")), /* @__PURE__ */ React.createElement(Box, { marginTop: 1, marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, "\u2500".repeat(80))), renderContent(content, showFull ? MAX_FULL_VIEW_LINES : MAX_PREVIEW_LINES));
28
+ };
29
+ export {
30
+ FileCreationPreview
62
31
  };
63
32
  //# sourceMappingURL=FileCreationPreview.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileCreationPreview.js","sourceRoot":"","sources":["../../../src/ui/components/FileCreationPreview.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/ui/components/FileCreationPreview.tsx"],"sourcesContent":["import React, { useState } from 'react';\r\nimport { Box, Text, useInput } from 'ink';\r\nimport { wrapText } from '../../utils/markdown-parser.js';\r\n\r\ninterface FileCreationPreviewProps {\r\n content: string;\r\n filePath?: string;\r\n}\r\n\r\n// Maximum number of lines to show before truncating in preview\r\n// Using 10 lines as a reasonable default for preview\r\nconst MAX_PREVIEW_LINES = 10;\r\n// Maximum number of lines to show in full view before truncating\r\nconst MAX_FULL_VIEW_LINES = 1000;\r\n\r\nexport const FileCreationPreview: React.FC<FileCreationPreviewProps> = ({ content, filePath }) => {\r\n const [showFull, setShowFull] = useState(false);\r\n\r\n useInput((input, key) => {\r\n if (input === 'o' && key.ctrl) {\r\n setShowFull(prev => !prev);\r\n }\r\n });\r\n\r\n const renderContent = (text: string, maxLines: number) => {\r\n const lines = text.split('\\n');\r\n const totalLines = lines.length;\r\n const shouldTruncate = totalLines > maxLines;\r\n const displayLines = shouldTruncate ? lines.slice(0, maxLines) : lines;\r\n const hiddenLines = shouldTruncate ? totalLines - maxLines : 0;\r\n\r\n // Calculate available width for content\r\n // Terminal width - borders (2) - padding (2) - line number (5 with space)\r\n const terminalWidth = process.stdout.columns || 80;\r\n const maxContentWidth = Math.max(40, terminalWidth - 11);\r\n\r\n return (\r\n <>\r\n {displayLines.map((line, idx) => {\r\n // Format line number: fixed width 4 chars\r\n const lineNumStr = (idx + 1).toString().padStart(4, ' ');\r\n\r\n // Use wrapText utility to wrap long lines properly\r\n const wrappedLines = wrapText(line || ' ', maxContentWidth, 0);\r\n\r\n return wrappedLines.map((wrappedLine, lineIdx) => (\r\n <Box key={`${idx}-${lineIdx}`} flexDirection=\"column\">\r\n <Box flexDirection=\"row\">\r\n <Text color=\"gray\">\r\n {lineIdx === 0 ? lineNumStr : ' '}\r\n {' '}\r\n </Text>\r\n <Text color=\"white\">{wrappedLine}</Text>\r\n </Box>\r\n </Box>\r\n ));\r\n }).flat()}\r\n\r\n {/* Truncation notice */}\r\n {shouldTruncate && (\r\n <Box marginTop={1}>\r\n <Text color=\"#00cc66\" dimColor>\r\n ... {hiddenLines} more {hiddenLines === 1 ? 'line' : 'lines'} not shown ...\r\n </Text>\r\n </Box>\r\n )}\r\n\r\n {/* Bottom separator line */}\r\n <Box marginTop={1} marginBottom={1}>\r\n <Text color=\"#666666\">{'─'.repeat(80)}</Text>\r\n </Box>\r\n\r\n {/* Summary */}\r\n <Box>\r\n <Text color=\"#00cc66\">{totalLines} lines to be created</Text>\r\n </Box>\r\n </>\r\n );\r\n };\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00cc66\" paddingX={1}>\r\n {/* File path header */}\r\n <Box justifyContent=\"space-between\">\r\n <Text color=\"#ffffff\" bold>New File Preview: {filePath || 'Untitled'}</Text>\r\n <Text color=\"#666666\" dimColor>\r\n {showFull ? 'Press Ctrl+O to collapse' : 'Press Ctrl+O for Full File'}\r\n </Text>\r\n </Box>\r\n\r\n {/* Separator line */}\r\n <Box marginTop={1} marginBottom={1}>\r\n <Text color=\"#666666\">{'─'.repeat(80)}</Text>\r\n </Box>\r\n\r\n {renderContent(content, showFull ? MAX_FULL_VIEW_LINES : MAX_PREVIEW_LINES)}\r\n </Box>\r\n );\r\n};\r\n"],"mappings":"AAAA,OAAO,SAAS,gBAAgB;AAChC,SAAS,KAAK,MAAM,gBAAgB;AACpC,SAAS,gBAAgB;AASzB,MAAM,oBAAoB;AAE1B,MAAM,sBAAsB;AAErB,MAAM,sBAA0D,CAAC,EAAE,SAAS,SAAS,MAAM;AAC9F,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAE9C,WAAS,CAAC,OAAO,QAAQ;AACrB,QAAI,UAAU,OAAO,IAAI,MAAM;AAC3B,kBAAY,UAAQ,CAAC,IAAI;AAAA,IAC7B;AAAA,EACJ,CAAC;AAED,QAAM,gBAAgB,CAAC,MAAc,aAAqB;AACtD,UAAM,QAAQ,KAAK,MAAM,IAAI;AAC7B,UAAM,aAAa,MAAM;AACzB,UAAM,iBAAiB,aAAa;AACpC,UAAM,eAAe,iBAAiB,MAAM,MAAM,GAAG,QAAQ,IAAI;AACjE,UAAM,cAAc,iBAAiB,aAAa,WAAW;AAI7D,UAAM,gBAAgB,QAAQ,OAAO,WAAW;AAChD,UAAM,kBAAkB,KAAK,IAAI,IAAI,gBAAgB,EAAE;AAEvD,WACI,0DACK,aAAa,IAAI,CAAC,MAAM,QAAQ;AAE7B,YAAM,cAAc,MAAM,GAAG,SAAS,EAAE,SAAS,GAAG,GAAG;AAGvD,YAAM,eAAe,SAAS,QAAQ,KAAK,iBAAiB,CAAC;AAE7D,aAAO,aAAa,IAAI,CAAC,aAAa,YAClC,oCAAC,OAAI,KAAK,GAAG,GAAG,IAAI,OAAO,IAAI,eAAc,YACzC,oCAAC,OAAI,eAAc,SACf,oCAAC,QAAK,OAAM,UACP,YAAY,IAAI,aAAa,QAC7B,GACL,GACA,oCAAC,QAAK,OAAM,WAAS,WAAY,CACrC,CACJ,CACH;AAAA,IACL,CAAC,EAAE,KAAK,GAGP,kBACG,oCAAC,OAAI,WAAW,KACZ,oCAAC,QAAK,OAAM,WAAU,UAAQ,QAAC,QACtB,aAAY,UAAO,gBAAgB,IAAI,SAAS,SAAQ,gBACjE,CACJ,GAIJ,oCAAC,OAAI,WAAW,GAAG,cAAc,KAC7B,oCAAC,QAAK,OAAM,aAAW,SAAI,OAAO,EAAE,CAAE,CAC1C,GAGA,oCAAC,WACG,oCAAC,QAAK,OAAM,aAAW,YAAW,sBAAoB,CAC1D,CACJ;AAAA,EAER;AAEA,SACI,oCAAC,OAAI,eAAc,UAAS,aAAY,SAAQ,aAAY,WAAU,UAAU,KAE5E,oCAAC,OAAI,gBAAe,mBAChB,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,sBAAmB,YAAY,UAAW,GACrE,oCAAC,QAAK,OAAM,WAAU,UAAQ,QACzB,WAAW,6BAA6B,4BAC7C,CACJ,GAGA,oCAAC,OAAI,WAAW,GAAG,cAAc,KAC7B,oCAAC,QAAK,OAAM,aAAW,SAAI,OAAO,EAAE,CAAE,CAC1C,GAEC,cAAc,SAAS,WAAW,sBAAsB,iBAAiB,CAC9E;AAER;","names":[]}
@@ -1,31 +1,36 @@
1
- import React from 'react';
2
- import { Box, Text } from 'ink';
3
- import { DiffViewer } from './DiffViewer.js';
4
- import { CodeBlock } from './CodeBlock.js';
5
- export const FileOperation = ({ operation, filePath, content, diff }) => {
6
- const getOperationColor = () => {
7
- switch (operation) {
8
- case 'create': return '#00cc66';
9
- case 'edit': return '#ffaa00';
10
- case 'delete': return '#ff3366';
11
- }
12
- };
13
- const getOperationIcon = () => {
14
- switch (operation) {
15
- case 'create': return '+';
16
- case 'edit': return '~';
17
- case 'delete': return '-';
18
- }
19
- };
20
- return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: getOperationColor(), paddingX: 1, marginY: 1 },
21
- React.createElement(Box, { marginBottom: 1 },
22
- React.createElement(Text, { color: getOperationColor(), bold: true },
23
- getOperationIcon(),
24
- " ",
25
- operation.toUpperCase(),
26
- ": ",
27
- filePath)),
28
- diff && React.createElement(DiffViewer, { diff: diff, filePath: filePath }),
29
- content && !diff && React.createElement(CodeBlock, { code: content })));
1
+ import React from "react";
2
+ import { Box, Text } from "ink";
3
+ import { DiffViewer } from "./DiffViewer.js";
4
+ import { CodeBlock } from "./CodeBlock.js";
5
+ const FileOperation = ({
6
+ operation,
7
+ filePath,
8
+ content,
9
+ diff
10
+ }) => {
11
+ const getOperationColor = () => {
12
+ switch (operation) {
13
+ case "create":
14
+ return "#00cc66";
15
+ case "edit":
16
+ return "#ffaa00";
17
+ case "delete":
18
+ return "#ff3366";
19
+ }
20
+ };
21
+ const getOperationIcon = () => {
22
+ switch (operation) {
23
+ case "create":
24
+ return "+";
25
+ case "edit":
26
+ return "~";
27
+ case "delete":
28
+ return "-";
29
+ }
30
+ };
31
+ return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: getOperationColor(), paddingX: 1, marginY: 1 }, /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: getOperationColor(), bold: true }, getOperationIcon(), " ", operation.toUpperCase(), ": ", filePath)), diff && /* @__PURE__ */ React.createElement(DiffViewer, { diff, filePath }), content && !diff && /* @__PURE__ */ React.createElement(CodeBlock, { code: content }));
32
+ };
33
+ export {
34
+ FileOperation
30
35
  };
31
36
  //# sourceMappingURL=FileOperation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileOperation.js","sourceRoot":"","sources":["../../../src/ui/components/FileOperation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAS3C,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EAC1D,SAAS,EACT,QAAQ,EACR,OAAO,EACP,IAAI,EACL,EAAE,EAAE;IACH,MAAM,iBAAiB,GAAG,GAAG,EAAE;QAC7B,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,QAAQ,CAAC,CAAC,OAAO,SAAS,CAAC;YAChC,KAAK,MAAM,CAAC,CAAC,OAAO,SAAS,CAAC;YAC9B,KAAK,QAAQ,CAAC,CAAC,OAAO,SAAS,CAAC;QAClC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,QAAQ,CAAC,CAAC,OAAO,GAAG,CAAC;YAC1B,KAAK,MAAM,CAAC,CAAC,OAAO,GAAG,CAAC;YACxB,KAAK,QAAQ,CAAC,CAAC,OAAO,GAAG,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;QACvG,oBAAC,GAAG,IAAC,YAAY,EAAE,CAAC;YAClB,oBAAC,IAAI,IAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE,IAAI;gBACnC,gBAAgB,EAAE;;gBAAG,SAAS,CAAC,WAAW,EAAE;;gBAAI,QAAQ,CACpD,CACH;QAEL,IAAI,IAAI,oBAAC,UAAU,IAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAI;QACtD,OAAO,IAAI,CAAC,IAAI,IAAI,oBAAC,SAAS,IAAC,IAAI,EAAE,OAAO,GAAI,CAC7C,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"sources":["../../../src/ui/components/FileOperation.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Box, Text } from 'ink';\r\nimport { DiffViewer } from './DiffViewer.js';\r\nimport { CodeBlock } from './CodeBlock.js';\r\n\r\ninterface FileOperationProps {\r\n operation: 'create' | 'edit' | 'delete';\r\n filePath: string;\r\n content?: string;\r\n diff?: string;\r\n}\r\n\r\nexport const FileOperation: React.FC<FileOperationProps> = ({\r\n operation,\r\n filePath,\r\n content,\r\n diff\r\n}) => {\r\n const getOperationColor = () => {\r\n switch (operation) {\r\n case 'create': return '#00cc66';\r\n case 'edit': return '#ffaa00';\r\n case 'delete': return '#ff3366';\r\n }\r\n };\r\n\r\n const getOperationIcon = () => {\r\n switch (operation) {\r\n case 'create': return '+';\r\n case 'edit': return '~';\r\n case 'delete': return '-';\r\n }\r\n };\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor={getOperationColor()} paddingX={1} marginY={1}>\r\n <Box marginBottom={1}>\r\n <Text color={getOperationColor()} bold>\r\n {getOperationIcon()} {operation.toUpperCase()}: {filePath}\r\n </Text>\r\n </Box>\r\n \r\n {diff && <DiffViewer diff={diff} filePath={filePath} />}\r\n {content && !diff && <CodeBlock code={content} />}\r\n </Box>\r\n );\r\n};\r\n"],"mappings":"AAAA,OAAO,WAAW;AAClB,SAAS,KAAK,YAAY;AAC1B,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AASnB,MAAM,gBAA8C,CAAC;AAAA,EAC1D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,oBAAoB,MAAM;AAC9B,YAAQ,WAAW;AAAA,MACjB,KAAK;AAAU,eAAO;AAAA,MACtB,KAAK;AAAQ,eAAO;AAAA,MACpB,KAAK;AAAU,eAAO;AAAA,IACxB;AAAA,EACF;AAEA,QAAM,mBAAmB,MAAM;AAC7B,YAAQ,WAAW;AAAA,MACjB,KAAK;AAAU,eAAO;AAAA,MACtB,KAAK;AAAQ,eAAO;AAAA,MACpB,KAAK;AAAU,eAAO;AAAA,IACxB;AAAA,EACF;AAEA,SACE,oCAAC,OAAI,eAAc,UAAS,aAAY,SAAQ,aAAa,kBAAkB,GAAG,UAAU,GAAG,SAAS,KACtG,oCAAC,OAAI,cAAc,KACjB,oCAAC,QAAK,OAAO,kBAAkB,GAAG,MAAI,QACnC,iBAAiB,GAAE,KAAE,UAAU,YAAY,GAAE,MAAG,QACnD,CACF,GAEC,QAAQ,oCAAC,cAAW,MAAY,UAAoB,GACpD,WAAW,CAAC,QAAQ,oCAAC,aAAU,MAAM,SAAS,CACjD;AAEJ;","names":[]}