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,41 +1,80 @@
1
- import React from 'react';
2
- import { Box, Text } from 'ink';
3
- import { formatFileSize } from '../../services/clipboard-service.js';
4
- export const ClipboardFileAutocomplete = ({ files, selectedIndex, isLoading = false }) => {
5
- // Show loading state
6
- if (isLoading) {
7
- return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#ff9900", paddingX: 1, marginLeft: 1, marginTop: 0 },
8
- React.createElement(Box, { marginBottom: 0 },
9
- React.createElement(Text, { color: "#666666", dimColor: true }, "Checking clipboard...")),
10
- React.createElement(Box, { paddingX: 1 },
11
- React.createElement(Text, { color: "#ff9900" }, "\u23F3 Loading..."))));
12
- }
13
- // Show empty state
14
- if (files.length === 0) {
15
- return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#ff9900", paddingX: 1, marginLeft: 1, marginTop: 0 },
16
- React.createElement(Box, { marginBottom: 0 },
17
- React.createElement(Text, { color: "#666666", dimColor: true }, "Clipboard Files")),
18
- React.createElement(Box, { paddingX: 1 },
19
- React.createElement(Text, { color: "#888888" }, "No files in clipboard")),
20
- React.createElement(Box, { marginTop: 0 },
21
- React.createElement(Text, { color: "#666666", dimColor: true }, "Copy a file or image first"))));
22
- }
23
- return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#ff9900", paddingX: 1, marginLeft: 1, marginTop: 0 },
24
- React.createElement(Box, { marginBottom: 0 },
25
- React.createElement(Text, { color: "#666666", dimColor: true }, "Clipboard Files (# to attach)")),
26
- files.map((file, index) => {
27
- const isSelected = index === selectedIndex;
28
- const icon = file.mimeType?.startsWith('image/') ? '📋' : '📄';
29
- return (React.createElement(Box, { key: file.id, paddingX: 1 },
30
- React.createElement(Text, { color: isSelected ? '#ff9900' : '#aaaaaa', bold: isSelected, inverse: isSelected },
31
- icon,
32
- " ",
33
- file.displayName),
34
- React.createElement(Text, { color: "#666666" },
35
- " ",
36
- formatFileSize(file.sizeBytes))));
37
- }),
38
- React.createElement(Box, { marginTop: 0 },
39
- React.createElement(Text, { color: "#666666", dimColor: true }, "\u2191\u2193 to select, Enter to attach"))));
1
+ import React from "react";
2
+ import { Box, Text } from "ink";
3
+ import { formatFileSize } from "../../services/clipboard-service.js";
4
+ const ClipboardFileAutocomplete = ({
5
+ files,
6
+ selectedIndex,
7
+ isLoading = false
8
+ }) => {
9
+ if (isLoading) {
10
+ return /* @__PURE__ */ React.createElement(
11
+ Box,
12
+ {
13
+ flexDirection: "column",
14
+ borderStyle: "round",
15
+ borderColor: "#ff9900",
16
+ paddingX: 1,
17
+ marginLeft: 1,
18
+ marginTop: 0
19
+ },
20
+ /* @__PURE__ */ React.createElement(Box, { marginBottom: 0 }, /* @__PURE__ */ React.createElement(Text, { color: "#666666", dimColor: true }, "Checking clipboard...")),
21
+ /* @__PURE__ */ React.createElement(Box, { paddingX: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#ff9900" }, "\u23F3 Loading..."))
22
+ );
23
+ }
24
+ if (files.length === 0) {
25
+ return /* @__PURE__ */ React.createElement(
26
+ Box,
27
+ {
28
+ flexDirection: "column",
29
+ borderStyle: "round",
30
+ borderColor: "#ff9900",
31
+ paddingX: 1,
32
+ marginLeft: 1,
33
+ marginTop: 0
34
+ },
35
+ /* @__PURE__ */ React.createElement(Box, { marginBottom: 0 }, /* @__PURE__ */ React.createElement(Text, { color: "#666666", dimColor: true }, "Clipboard Files")),
36
+ /* @__PURE__ */ React.createElement(Box, { paddingX: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, "No files in clipboard")),
37
+ /* @__PURE__ */ React.createElement(Box, { marginTop: 0 }, /* @__PURE__ */ React.createElement(Text, { color: "#666666", dimColor: true }, "Copy a file or image first"))
38
+ );
39
+ }
40
+ return /* @__PURE__ */ React.createElement(
41
+ Box,
42
+ {
43
+ flexDirection: "column",
44
+ borderStyle: "round",
45
+ borderColor: "#ff9900",
46
+ paddingX: 1,
47
+ marginLeft: 1,
48
+ marginTop: 0
49
+ },
50
+ /* @__PURE__ */ React.createElement(Box, { marginBottom: 0 }, /* @__PURE__ */ React.createElement(Text, { color: "#666666", dimColor: true }, "Clipboard Files (# to attach)")),
51
+ files.map((file, index) => {
52
+ const isSelected = index === selectedIndex;
53
+ const icon = file.mimeType?.startsWith("image/") ? "\u{1F4CB}" : "\u{1F4C4}";
54
+ return /* @__PURE__ */ React.createElement(
55
+ Box,
56
+ {
57
+ key: file.id,
58
+ paddingX: 1
59
+ },
60
+ /* @__PURE__ */ React.createElement(
61
+ Text,
62
+ {
63
+ color: isSelected ? "#ff9900" : "#aaaaaa",
64
+ bold: isSelected,
65
+ inverse: isSelected
66
+ },
67
+ icon,
68
+ " ",
69
+ file.displayName
70
+ ),
71
+ /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, " ", formatFileSize(file.sizeBytes))
72
+ );
73
+ }),
74
+ /* @__PURE__ */ React.createElement(Box, { marginTop: 0 }, /* @__PURE__ */ React.createElement(Text, { color: "#666666", dimColor: true }, "\u2191\u2193 to select, Enter to attach"))
75
+ );
76
+ };
77
+ export {
78
+ ClipboardFileAutocomplete
40
79
  };
41
80
  //# sourceMappingURL=ClipboardFileAutocomplete.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClipboardFileAutocomplete.js","sourceRoot":"","sources":["../../../src/ui/components/ClipboardFileAutocomplete.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/ui/components/ClipboardFileAutocomplete.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Box, Text } from 'ink';\r\nimport { formatFileSize, ClipboardFile } from '../../services/clipboard-service.js';\r\n\r\ninterface ClipboardFileAutocompleteProps {\r\n files: ClipboardFile[];\r\n selectedIndex: number;\r\n isLoading?: boolean;\r\n}\r\n\r\nexport const ClipboardFileAutocomplete: React.FC<ClipboardFileAutocompleteProps> = ({\r\n files,\r\n selectedIndex,\r\n isLoading = false\r\n}) => {\r\n // Show loading state\r\n if (isLoading) {\r\n return (\r\n <Box\r\n flexDirection=\"column\"\r\n borderStyle=\"round\"\r\n borderColor=\"#ff9900\"\r\n paddingX={1}\r\n marginLeft={1}\r\n marginTop={0}\r\n >\r\n <Box marginBottom={0}>\r\n <Text color=\"#666666\" dimColor>Checking clipboard...</Text>\r\n </Box>\r\n <Box paddingX={1}>\r\n <Text color=\"#ff9900\">⏳ Loading...</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // Show empty state\r\n if (files.length === 0) {\r\n return (\r\n <Box\r\n flexDirection=\"column\"\r\n borderStyle=\"round\"\r\n borderColor=\"#ff9900\"\r\n paddingX={1}\r\n marginLeft={1}\r\n marginTop={0}\r\n >\r\n <Box marginBottom={0}>\r\n <Text color=\"#666666\" dimColor>Clipboard Files</Text>\r\n </Box>\r\n <Box paddingX={1}>\r\n <Text color=\"#888888\">No files in clipboard</Text>\r\n </Box>\r\n <Box marginTop={0}>\r\n <Text color=\"#666666\" dimColor>Copy a file or image first</Text>\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n return (\r\n <Box\r\n flexDirection=\"column\"\r\n borderStyle=\"round\"\r\n borderColor=\"#ff9900\"\r\n paddingX={1}\r\n marginLeft={1}\r\n marginTop={0}\r\n >\r\n <Box marginBottom={0}>\r\n <Text color=\"#666666\" dimColor>Clipboard Files (# to attach)</Text>\r\n </Box>\r\n {files.map((file, index) => {\r\n const isSelected = index === selectedIndex;\r\n const icon = file.mimeType?.startsWith('image/') ? '📋' : '📄';\r\n\r\n return (\r\n <Box\r\n key={file.id}\r\n paddingX={1}\r\n >\r\n <Text\r\n color={isSelected ? '#ff9900' : '#aaaaaa'}\r\n bold={isSelected}\r\n inverse={isSelected}\r\n >\r\n {icon} {file.displayName}\r\n </Text>\r\n <Text color=\"#666666\"> {formatFileSize(file.sizeBytes)}</Text>\r\n </Box>\r\n );\r\n })}\r\n <Box marginTop={0}>\r\n <Text color=\"#666666\" dimColor>↑↓ to select, Enter to attach</Text>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n"],"mappings":"AAAA,OAAO,WAAW;AAClB,SAAS,KAAK,YAAY;AAC1B,SAAS,sBAAqC;AAQvC,MAAM,4BAAsE,CAAC;AAAA,EAChF;AAAA,EACA;AAAA,EACA,YAAY;AAChB,MAAM;AAEF,MAAI,WAAW;AACX,WACI;AAAA,MAAC;AAAA;AAAA,QACG,eAAc;AAAA,QACd,aAAY;AAAA,QACZ,aAAY;AAAA,QACZ,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,WAAW;AAAA;AAAA,MAEX,oCAAC,OAAI,cAAc,KACf,oCAAC,QAAK,OAAM,WAAU,UAAQ,QAAC,uBAAqB,CACxD;AAAA,MACA,oCAAC,OAAI,UAAU,KACX,oCAAC,QAAK,OAAM,aAAU,mBAAY,CACtC;AAAA,IACJ;AAAA,EAER;AAGA,MAAI,MAAM,WAAW,GAAG;AACpB,WACI;AAAA,MAAC;AAAA;AAAA,QACG,eAAc;AAAA,QACd,aAAY;AAAA,QACZ,aAAY;AAAA,QACZ,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,WAAW;AAAA;AAAA,MAEX,oCAAC,OAAI,cAAc,KACf,oCAAC,QAAK,OAAM,WAAU,UAAQ,QAAC,iBAAe,CAClD;AAAA,MACA,oCAAC,OAAI,UAAU,KACX,oCAAC,QAAK,OAAM,aAAU,uBAAqB,CAC/C;AAAA,MACA,oCAAC,OAAI,WAAW,KACZ,oCAAC,QAAK,OAAM,WAAU,UAAQ,QAAC,4BAA0B,CAC7D;AAAA,IACJ;AAAA,EAER;AAEA,SACI;AAAA,IAAC;AAAA;AAAA,MACG,eAAc;AAAA,MACd,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,WAAW;AAAA;AAAA,IAEX,oCAAC,OAAI,cAAc,KACf,oCAAC,QAAK,OAAM,WAAU,UAAQ,QAAC,+BAA6B,CAChE;AAAA,IACC,MAAM,IAAI,CAAC,MAAM,UAAU;AACxB,YAAM,aAAa,UAAU;AAC7B,YAAM,OAAO,KAAK,UAAU,WAAW,QAAQ,IAAI,cAAO;AAE1D,aACI;AAAA,QAAC;AAAA;AAAA,UACG,KAAK,KAAK;AAAA,UACV,UAAU;AAAA;AAAA,QAEV;AAAA,UAAC;AAAA;AAAA,YACG,OAAO,aAAa,YAAY;AAAA,YAChC,MAAM;AAAA,YACN,SAAS;AAAA;AAAA,UAER;AAAA,UAAK;AAAA,UAAE,KAAK;AAAA,QACjB;AAAA,QACA,oCAAC,QAAK,OAAM,aAAU,MAAG,eAAe,KAAK,SAAS,CAAE;AAAA,MAC5D;AAAA,IAER,CAAC;AAAA,IACD,oCAAC,OAAI,WAAW,KACZ,oCAAC,QAAK,OAAM,WAAU,UAAQ,QAAC,yCAA6B,CAChE;AAAA,EACJ;AAER;","names":[]}
@@ -1,45 +1,27 @@
1
- import React, { useState } from 'react';
2
- import { Box, Text, useInput } from 'ink';
3
- // Maximum number of lines to show before truncating
1
+ import React, { useState } from "react";
2
+ import { Box, Text, useInput } from "ink";
4
3
  const MAX_PREVIEW_LINES = 8;
5
- // Maximum number of lines to show in full view
6
- const MAX_FULL_VIEW_LINES = 1000;
7
- export const CodeBlock = React.memo(({ code, language = 'text', title }) => {
8
- const [showFull, setShowFull] = useState(false);
9
- useInput((input, key) => {
10
- if (input === 'o' && key.ctrl) {
11
- setShowFull(prev => !prev);
12
- }
13
- });
14
- const lines = code.split('\n');
15
- // Determine if we need to truncate
16
- const totalLines = lines.length;
17
- const limit = showFull ? MAX_FULL_VIEW_LINES : MAX_PREVIEW_LINES;
18
- const shouldTruncate = totalLines > limit;
19
- const displayLines = shouldTruncate ? lines.slice(0, limit) : lines;
20
- const hiddenLines = shouldTruncate ? totalLines - limit : 0;
21
- return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#003b59", paddingX: 1, paddingY: 1 },
22
- title && (React.createElement(Box, { marginBottom: 1, justifyContent: "space-between" },
23
- React.createElement(Box, null,
24
- React.createElement(Text, { color: "#00ccff", bold: true },
25
- "\uD83D\uDCC4 ",
26
- title),
27
- language && React.createElement(Text, { color: "#666666" },
28
- " (",
29
- language,
30
- ")")),
31
- React.createElement(Text, { color: "#666666", dimColor: true }, showFull ? 'Press Ctrl+O to collapse' : 'Press Ctrl+O to expand'))),
32
- displayLines.map((line, idx) => (React.createElement(Box, { key: idx },
33
- React.createElement(Text, { color: "#666666" },
34
- String(idx + 1).padStart(3, ' '),
35
- " \u2502 "),
36
- React.createElement(Text, { color: "#ffffff" }, line)))),
37
- shouldTruncate && (React.createElement(Box, { marginTop: 1 },
38
- React.createElement(Text, { color: "#00ccff", dimColor: true },
39
- "... ",
40
- hiddenLines,
41
- " more ",
42
- hiddenLines === 1 ? 'line' : 'lines',
43
- " not shown ...")))));
4
+ const MAX_FULL_VIEW_LINES = 1e3;
5
+ const CodeBlock = React.memo(({
6
+ code,
7
+ language = "text",
8
+ title
9
+ }) => {
10
+ const [showFull, setShowFull] = useState(false);
11
+ useInput((input, key) => {
12
+ if (input === "o" && key.ctrl) {
13
+ setShowFull((prev) => !prev);
14
+ }
15
+ });
16
+ const lines = code.split("\n");
17
+ const totalLines = lines.length;
18
+ const limit = showFull ? MAX_FULL_VIEW_LINES : MAX_PREVIEW_LINES;
19
+ const shouldTruncate = totalLines > limit;
20
+ const displayLines = shouldTruncate ? lines.slice(0, limit) : lines;
21
+ const hiddenLines = shouldTruncate ? totalLines - limit : 0;
22
+ return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#003b59", paddingX: 1, paddingY: 1 }, title && /* @__PURE__ */ React.createElement(Box, { marginBottom: 1, justifyContent: "space-between" }, /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#00ccff", bold: true }, "\u{1F4C4} ", title), language && /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, " (", language, ")")), /* @__PURE__ */ React.createElement(Text, { color: "#666666", dimColor: true }, showFull ? "Press Ctrl+O to collapse" : "Press Ctrl+O to expand")), displayLines.map((line, idx) => /* @__PURE__ */ React.createElement(Box, { key: idx }, /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, String(idx + 1).padStart(3, " "), " \u2502 "), /* @__PURE__ */ React.createElement(Text, { color: "#ffffff" }, line))), shouldTruncate && /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#00ccff", dimColor: true }, "... ", hiddenLines, " more ", hiddenLines === 1 ? "line" : "lines", " not shown ...")));
44
23
  });
24
+ export {
25
+ CodeBlock
26
+ };
45
27
  //# sourceMappingURL=CodeBlock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CodeBlock.js","sourceRoot":"","sources":["../../../src/ui/components/CodeBlock.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAQ1C,oDAAoD;AACpD,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,+CAA+C;AAC/C,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC,MAAM,CAAC,MAAM,SAAS,GAA6B,KAAK,CAAC,IAAI,CAAC,CAAC,EAC7D,IAAI,EACJ,QAAQ,GAAG,MAAM,EACjB,KAAK,EACN,EAAE,EAAE;IACH,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhD,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE/B,mCAAmC;IACnC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;IAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,iBAAiB,CAAC;IACjE,MAAM,cAAc,GAAG,UAAU,GAAG,KAAK,CAAC;IAC1C,MAAM,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACpE,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5D,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,SAAS,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;QAC3F,KAAK,IAAI,CACR,oBAAC,GAAG,IAAC,YAAY,EAAE,CAAC,EAAE,cAAc,EAAC,eAAe;YAClD,oBAAC,GAAG;gBACF,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI;;oBAAK,KAAK,CAAQ;gBAC3C,QAAQ,IAAI,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS;;oBAAI,QAAQ;wBAAS,CACnD;YACN,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,QAAQ,UAC3B,QAAQ,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,wBAAwB,CAC5D,CACH,CACP;QAEA,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAC/B,oBAAC,GAAG,IAAC,GAAG,EAAE,GAAG;YACX,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS;gBAAE,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;2BAAW;YAClE,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,IAAE,IAAI,CAAQ,CAC/B,CACP,CAAC;QAGD,cAAc,IAAI,CACjB,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC;YACf,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,QAAQ;;gBACvB,WAAW;;gBAAQ,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;iCACvD,CACH,CACP,CACG,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"sources":["../../../src/ui/components/CodeBlock.tsx"],"sourcesContent":["import React, { useState } from 'react';\r\nimport { Box, Text, useInput } from 'ink';\r\n\r\ninterface CodeBlockProps {\r\n code: string;\r\n language?: string;\r\n title?: string;\r\n}\r\n\r\n// Maximum number of lines to show before truncating\r\nconst MAX_PREVIEW_LINES = 8;\r\n// Maximum number of lines to show in full view\r\nconst MAX_FULL_VIEW_LINES = 1000;\r\n\r\nexport const CodeBlock: React.FC<CodeBlockProps> = React.memo(({\r\n code,\r\n language = 'text',\r\n title\r\n}) => {\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 lines = code.split('\\n');\r\n\r\n // Determine if we need to truncate\r\n const totalLines = lines.length;\r\n const limit = showFull ? MAX_FULL_VIEW_LINES : MAX_PREVIEW_LINES;\r\n const shouldTruncate = totalLines > limit;\r\n const displayLines = shouldTruncate ? lines.slice(0, limit) : lines;\r\n const hiddenLines = shouldTruncate ? totalLines - limit : 0;\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#003b59\" paddingX={1} paddingY={1}>\r\n {title && (\r\n <Box marginBottom={1} justifyContent=\"space-between\">\r\n <Box>\r\n <Text color=\"#00ccff\" bold>📄 {title}</Text>\r\n {language && <Text color=\"#666666\"> ({language})</Text>}\r\n </Box>\r\n <Text color=\"#666666\" dimColor>\r\n {showFull ? 'Press Ctrl+O to collapse' : 'Press Ctrl+O to expand'}\r\n </Text>\r\n </Box>\r\n )}\r\n\r\n {displayLines.map((line, idx) => (\r\n <Box key={idx}>\r\n <Text color=\"#666666\">{String(idx + 1).padStart(3, ' ')} │ </Text>\r\n <Text color=\"#ffffff\">{line}</Text>\r\n </Box>\r\n ))}\r\n\r\n {/* Truncation notice */}\r\n {shouldTruncate && (\r\n <Box marginTop={1}>\r\n <Text color=\"#00ccff\" dimColor>\r\n ... {hiddenLines} more {hiddenLines === 1 ? 'line' : 'lines'} not shown ...\r\n </Text>\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n});\r\n"],"mappings":"AAAA,OAAO,SAAS,gBAAgB;AAChC,SAAS,KAAK,MAAM,gBAAgB;AASpC,MAAM,oBAAoB;AAE1B,MAAM,sBAAsB;AAErB,MAAM,YAAsC,MAAM,KAAK,CAAC;AAAA,EAC7D;AAAA,EACA,WAAW;AAAA,EACX;AACF,MAAM;AACJ,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAE9C,WAAS,CAAC,OAAO,QAAQ;AACvB,QAAI,UAAU,OAAO,IAAI,MAAM;AAC7B,kBAAY,UAAQ,CAAC,IAAI;AAAA,IAC3B;AAAA,EACF,CAAC;AAED,QAAM,QAAQ,KAAK,MAAM,IAAI;AAG7B,QAAM,aAAa,MAAM;AACzB,QAAM,QAAQ,WAAW,sBAAsB;AAC/C,QAAM,iBAAiB,aAAa;AACpC,QAAM,eAAe,iBAAiB,MAAM,MAAM,GAAG,KAAK,IAAI;AAC9D,QAAM,cAAc,iBAAiB,aAAa,QAAQ;AAE1D,SACE,oCAAC,OAAI,eAAc,UAAS,aAAY,SAAQ,aAAY,WAAU,UAAU,GAAG,UAAU,KAC1F,SACC,oCAAC,OAAI,cAAc,GAAG,gBAAe,mBACnC,oCAAC,WACC,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,cAAI,KAAM,GACpC,YAAY,oCAAC,QAAK,OAAM,aAAU,MAAG,UAAS,GAAC,CAClD,GACA,oCAAC,QAAK,OAAM,WAAU,UAAQ,QAC3B,WAAW,6BAA6B,wBAC3C,CACF,GAGD,aAAa,IAAI,CAAC,MAAM,QACvB,oCAAC,OAAI,KAAK,OACR,oCAAC,QAAK,OAAM,aAAW,OAAO,MAAM,CAAC,EAAE,SAAS,GAAG,GAAG,GAAE,UAAG,GAC3D,oCAAC,QAAK,OAAM,aAAW,IAAK,CAC9B,CACD,GAGA,kBACC,oCAAC,OAAI,WAAW,KACd,oCAAC,QAAK,OAAM,WAAU,UAAQ,QAAC,QACxB,aAAY,UAAO,gBAAgB,IAAI,SAAS,SAAQ,gBAC/D,CACF,CAEJ;AAEJ,CAAC;","names":[]}
@@ -1,27 +1,20 @@
1
- import React from 'react';
2
- import { Box, Text, useInput } from 'ink';
3
- export const ConfigViewer = ({ provider, model, apiKeyMasked, autoAcceptMode, onClose }) => {
4
- useInput((input, key) => {
5
- if (key.escape || input === 'q') {
6
- onClose();
7
- }
8
- });
9
- return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#00ccff", paddingX: 1, marginY: 1 },
10
- React.createElement(Box, { marginBottom: 1 },
11
- React.createElement(Text, { color: "#00ccff", bold: true }, "Current Configuration")),
12
- React.createElement(Box, { marginBottom: 1 },
13
- React.createElement(Text, { color: "#ffaa00" }, "Provider: "),
14
- React.createElement(Text, { color: "#ffffff" }, provider)),
15
- React.createElement(Box, { marginBottom: 1 },
16
- React.createElement(Text, { color: "#ffaa00" }, "Model: "),
17
- React.createElement(Text, { color: "#ffffff" }, model)),
18
- React.createElement(Box, { marginBottom: 1 },
19
- React.createElement(Text, { color: "#ffaa00" }, "API Key: "),
20
- React.createElement(Text, { color: "#ffffff" }, apiKeyMasked)),
21
- React.createElement(Box, { marginBottom: 1 },
22
- React.createElement(Text, { color: "#ffaa00" }, "Auto-Accept: "),
23
- React.createElement(Text, { color: autoAcceptMode ? '#00cc66' : '#ff3366' }, autoAcceptMode ? 'ON' : 'OFF')),
24
- React.createElement(Box, { marginTop: 1 },
25
- React.createElement(Text, { color: "#666666", dimColor: true }, "Press ESC or Q to close"))));
1
+ import React from "react";
2
+ import { Box, Text, useInput } from "ink";
3
+ const ConfigViewer = ({
4
+ provider,
5
+ model,
6
+ apiKeyMasked,
7
+ autoAcceptMode,
8
+ onClose
9
+ }) => {
10
+ useInput((input, key) => {
11
+ if (key.escape || input === "q") {
12
+ onClose();
13
+ }
14
+ });
15
+ return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#00ccff", paddingX: 1, marginY: 1 }, /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#00ccff", bold: true }, "Current Configuration")), /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#ffaa00" }, "Provider: "), /* @__PURE__ */ React.createElement(Text, { color: "#ffffff" }, provider)), /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#ffaa00" }, "Model: "), /* @__PURE__ */ React.createElement(Text, { color: "#ffffff" }, model)), /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#ffaa00" }, "API Key: "), /* @__PURE__ */ React.createElement(Text, { color: "#ffffff" }, apiKeyMasked)), /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#ffaa00" }, "Auto-Accept: "), /* @__PURE__ */ React.createElement(Text, { color: autoAcceptMode ? "#00cc66" : "#ff3366" }, autoAcceptMode ? "ON" : "OFF")), /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#666666", dimColor: true }, "Press ESC or Q to close")));
16
+ };
17
+ export {
18
+ ConfigViewer
26
19
  };
27
20
  //# sourceMappingURL=ConfigViewer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigViewer.js","sourceRoot":"","sources":["../../../src/ui/components/ConfigViewer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAU1C,MAAM,CAAC,MAAM,YAAY,GAAgC,CAAC,EACxD,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,cAAc,EACd,OAAO,EACR,EAAE,EAAE;IACH,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAChC,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,SAAS,EAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;QAC3F,oBAAC,GAAG,IAAC,YAAY,EAAE,CAAC;YAClB,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,kCAA6B,CACnD;QAEN,oBAAC,GAAG,IAAC,YAAY,EAAE,CAAC;YAClB,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,iBAAkB;YACvC,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,IAAE,QAAQ,CAAQ,CACnC;QAEN,oBAAC,GAAG,IAAC,YAAY,EAAE,CAAC;YAClB,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,cAAe;YACpC,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,IAAE,KAAK,CAAQ,CAChC;QAEN,oBAAC,GAAG,IAAC,YAAY,EAAE,CAAC;YAClB,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,gBAAiB;YACtC,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,IAAE,YAAY,CAAQ,CACvC;QAEN,oBAAC,GAAG,IAAC,YAAY,EAAE,CAAC;YAClB,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,oBAAqB;YAC1C,oBAAC,IAAI,IAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,IAChD,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CACzB,CACH;QAEN,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC;YACf,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,QAAQ,oCAEvB,CACH,CACF,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"sources":["../../../src/ui/components/ConfigViewer.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Box, Text, useInput } from 'ink';\r\n\r\ninterface ConfigViewerProps {\r\n provider: string;\r\n model: string;\r\n apiKeyMasked: string;\r\n autoAcceptMode: boolean;\r\n onClose: () => void;\r\n}\r\n\r\nexport const ConfigViewer: React.FC<ConfigViewerProps> = ({ \r\n provider, \r\n model, \r\n apiKeyMasked, \r\n autoAcceptMode,\r\n onClose \r\n}) => {\r\n useInput((input, key) => {\r\n if (key.escape || input === 'q') {\r\n onClose();\r\n }\r\n });\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1} marginY={1}>\r\n <Box marginBottom={1}>\r\n <Text color=\"#00ccff\" bold>Current Configuration</Text>\r\n </Box>\r\n \r\n <Box marginBottom={1}>\r\n <Text color=\"#ffaa00\">Provider: </Text>\r\n <Text color=\"#ffffff\">{provider}</Text>\r\n </Box>\r\n \r\n <Box marginBottom={1}>\r\n <Text color=\"#ffaa00\">Model: </Text>\r\n <Text color=\"#ffffff\">{model}</Text>\r\n </Box>\r\n \r\n <Box marginBottom={1}>\r\n <Text color=\"#ffaa00\">API Key: </Text>\r\n <Text color=\"#ffffff\">{apiKeyMasked}</Text>\r\n </Box>\r\n \r\n <Box marginBottom={1}>\r\n <Text color=\"#ffaa00\">Auto-Accept: </Text>\r\n <Text color={autoAcceptMode ? '#00cc66' : '#ff3366'}>\r\n {autoAcceptMode ? 'ON' : 'OFF'}\r\n </Text>\r\n </Box>\r\n\r\n <Box marginTop={1}>\r\n <Text color=\"#666666\" dimColor>\r\n Press ESC or Q to close\r\n </Text>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n"],"mappings":"AAAA,OAAO,WAAW;AAClB,SAAS,KAAK,MAAM,gBAAgB;AAU7B,MAAM,eAA4C,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,WAAS,CAAC,OAAO,QAAQ;AACvB,QAAI,IAAI,UAAU,UAAU,KAAK;AAC/B,cAAQ;AAAA,IACV;AAAA,EACF,CAAC;AAED,SACE,oCAAC,OAAI,eAAc,UAAS,aAAY,SAAQ,aAAY,WAAU,UAAU,GAAG,SAAS,KAC1F,oCAAC,OAAI,cAAc,KACjB,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,uBAAqB,CAClD,GAEA,oCAAC,OAAI,cAAc,KACjB,oCAAC,QAAK,OAAM,aAAU,YAAU,GAChC,oCAAC,QAAK,OAAM,aAAW,QAAS,CAClC,GAEA,oCAAC,OAAI,cAAc,KACjB,oCAAC,QAAK,OAAM,aAAU,SAAO,GAC7B,oCAAC,QAAK,OAAM,aAAW,KAAM,CAC/B,GAEA,oCAAC,OAAI,cAAc,KACjB,oCAAC,QAAK,OAAM,aAAU,WAAS,GAC/B,oCAAC,QAAK,OAAM,aAAW,YAAa,CACtC,GAEA,oCAAC,OAAI,cAAc,KACjB,oCAAC,QAAK,OAAM,aAAU,eAAa,GACnC,oCAAC,QAAK,OAAO,iBAAiB,YAAY,aACvC,iBAAiB,OAAO,KAC3B,CACF,GAEA,oCAAC,OAAI,WAAW,KACd,oCAAC,QAAK,OAAM,WAAU,UAAQ,QAAC,yBAE/B,CACF,CACF;AAEJ;","names":[]}
@@ -1,74 +1,52 @@
1
- import React, { useState } from 'react';
2
- import { Box, Text, useInput } from 'ink';
3
- export const ConfirmPrompt = React.memo(({ message, onYes, onNo, onFeedback, showFeedbackOption = false, warningMessage }) => {
4
- const [selected, setSelected] = useState('yes');
5
- useInput((input, key) => {
6
- if (key.upArrow || key.downArrow) {
7
- if (showFeedbackOption) {
8
- setSelected(prev => {
9
- const options = ['yes', 'no', 'feedback'];
10
- const currentIdx = options.indexOf(prev);
11
- const nextIdx = key.upArrow
12
- ? (currentIdx - 1 + options.length) % options.length
13
- : (currentIdx + 1) % options.length;
14
- return options[nextIdx];
15
- });
16
- }
17
- else {
18
- setSelected(prev => prev === 'yes' ? 'no' : 'yes');
19
- }
20
- return;
21
- }
22
- // Y key for yes
23
- if (input === 'y' || input === 'Y') {
24
- onYes();
25
- return;
26
- }
27
- // N key for no
28
- if (input === 'n' || input === 'N') {
29
- onNo();
30
- return;
31
- }
32
- // F key for feedback
33
- if (showFeedbackOption && (input === 'f' || input === 'F') && onFeedback) {
34
- onFeedback();
35
- return;
36
- }
37
- // Enter key to confirm selection
38
- if (key.return) {
39
- if (selected === 'yes')
40
- onYes();
41
- else if (selected === 'no')
42
- onNo();
43
- else if (selected === 'feedback' && onFeedback)
44
- onFeedback();
45
- return;
46
- }
47
- });
48
- return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: warningMessage ? "#ff6600" : "#ffaa00", paddingX: 1, paddingY: 1 },
49
- warningMessage && (React.createElement(Box, { marginBottom: 1, borderStyle: "single", borderColor: "#ff3366", paddingX: 1 },
50
- React.createElement(Text, { color: "#ff3366", bold: true },
51
- "\u26A0\uFE0F ",
52
- warningMessage))),
53
- React.createElement(Box, { marginBottom: 1 },
54
- React.createElement(Text, { color: "#ffaa00", bold: true }, message)),
55
- React.createElement(Box, { flexDirection: "column" },
56
- React.createElement(Box, null,
57
- React.createElement(Text, { color: selected === 'yes' ? '#00cc66' : '#666666', bold: selected === 'yes' },
58
- selected === 'yes' ? '> ' : ' ',
59
- "1. Yes")),
60
- React.createElement(Box, null,
61
- React.createElement(Text, { color: selected === 'no' ? '#ff3366' : '#666666', bold: selected === 'no' },
62
- selected === 'no' ? '> ' : ' ',
63
- "2. No")),
64
- showFeedbackOption && (React.createElement(Box, null,
65
- React.createElement(Text, { color: selected === 'feedback' ? '#00ccff' : '#666666', bold: selected === 'feedback' },
66
- selected === 'feedback' ? '> ' : ' ',
67
- "3. Feedback"))))));
1
+ import React, { useState } from "react";
2
+ import { Box, Text, useInput } from "ink";
3
+ const ConfirmPrompt = React.memo(({
4
+ message,
5
+ onYes,
6
+ onNo,
7
+ onFeedback,
8
+ showFeedbackOption = false,
9
+ warningMessage
10
+ }) => {
11
+ const [selected, setSelected] = useState("yes");
12
+ useInput((input, key) => {
13
+ if (key.upArrow || key.downArrow) {
14
+ if (showFeedbackOption) {
15
+ setSelected((prev) => {
16
+ const options = ["yes", "no", "feedback"];
17
+ const currentIdx = options.indexOf(prev);
18
+ const nextIdx = key.upArrow ? (currentIdx - 1 + options.length) % options.length : (currentIdx + 1) % options.length;
19
+ return options[nextIdx];
20
+ });
21
+ } else {
22
+ setSelected((prev) => prev === "yes" ? "no" : "yes");
23
+ }
24
+ return;
25
+ }
26
+ if (input === "y" || input === "Y") {
27
+ onYes();
28
+ return;
29
+ }
30
+ if (input === "n" || input === "N") {
31
+ onNo();
32
+ return;
33
+ }
34
+ if (showFeedbackOption && (input === "f" || input === "F") && onFeedback) {
35
+ onFeedback();
36
+ return;
37
+ }
38
+ if (key.return) {
39
+ if (selected === "yes") onYes();
40
+ else if (selected === "no") onNo();
41
+ else if (selected === "feedback" && onFeedback) onFeedback();
42
+ return;
43
+ }
44
+ });
45
+ return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: warningMessage ? "#ff6600" : "#ffaa00", paddingX: 1, paddingY: 1 }, warningMessage && /* @__PURE__ */ React.createElement(Box, { marginBottom: 1, borderStyle: "single", borderColor: "#ff3366", paddingX: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#ff3366", bold: true }, "\u26A0\uFE0F ", warningMessage)), /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#ffaa00", bold: true }, message)), /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: selected === "yes" ? "#00cc66" : "#666666", bold: selected === "yes" }, selected === "yes" ? "> " : " ", "1. Yes")), /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: selected === "no" ? "#ff3366" : "#666666", bold: selected === "no" }, selected === "no" ? "> " : " ", "2. No")), showFeedbackOption && /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: selected === "feedback" ? "#00ccff" : "#666666", bold: selected === "feedback" }, selected === "feedback" ? "> " : " ", "3. Feedback"))));
68
46
  }, (prevProps, nextProps) => {
69
- // Only re-render if message or showFeedbackOption changes
70
- return prevProps.message === nextProps.message &&
71
- prevProps.showFeedbackOption === nextProps.showFeedbackOption &&
72
- prevProps.warningMessage === nextProps.warningMessage;
47
+ return prevProps.message === nextProps.message && prevProps.showFeedbackOption === nextProps.showFeedbackOption && prevProps.warningMessage === nextProps.warningMessage;
73
48
  });
49
+ export {
50
+ ConfirmPrompt
51
+ };
74
52
  //# sourceMappingURL=ConfirmPrompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmPrompt.js","sourceRoot":"","sources":["../../../src/ui/components/ConfirmPrompt.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAY1C,MAAM,CAAC,MAAM,aAAa,GAAiC,KAAK,CAAC,IAAI,CAAC,CAAC,EACrE,OAAO,EACP,KAAK,EACL,IAAI,EACJ,UAAU,EACV,kBAAkB,GAAG,KAAK,EAC1B,cAAc,EACf,EAAE,EAAE;IACH,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAA4B,KAAK,CAAC,CAAC;IAE3E,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YACjC,IAAI,kBAAkB,EAAE,CAAC;gBACvB,WAAW,CAAC,IAAI,CAAC,EAAE;oBACjB,MAAM,OAAO,GAAqC,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;oBAC5E,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACzC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO;wBACzB,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM;wBACpD,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;oBACtC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC1B,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACrD,CAAC;YACD,OAAO;QACT,CAAC;QAED,gBAAgB;QAChB,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YACnC,KAAK,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QAED,eAAe;QACf,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YACnC,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QAED,qBAAqB;QACrB,IAAI,kBAAkB,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,IAAI,UAAU,EAAE,CAAC;YACzE,UAAU,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,iCAAiC;QACjC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,IAAI,QAAQ,KAAK,KAAK;gBAAE,KAAK,EAAE,CAAC;iBAC3B,IAAI,QAAQ,KAAK,IAAI;gBAAE,IAAI,EAAE,CAAC;iBAC9B,IAAI,QAAQ,KAAK,UAAU,IAAI,UAAU;gBAAE,UAAU,EAAE,CAAC;YAC7D,OAAO;QACT,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;QAE1H,cAAc,IAAI,CACjB,oBAAC,GAAG,IAAC,YAAY,EAAE,CAAC,EAAE,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,SAAS,EAAC,QAAQ,EAAE,CAAC;YAC1E,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI;;gBAAK,cAAc,CAAQ,CACjD,CACP;QACD,oBAAC,GAAG,IAAC,YAAY,EAAE,CAAC;YAClB,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,UAAE,OAAO,CAAQ,CACvC;QACN,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;YACzB,oBAAC,GAAG;gBACF,oBAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,KAAK,KAAK;oBAC9E,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;6BAC5B,CACH;YACN,oBAAC,GAAG;gBACF,oBAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI;oBAC5E,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;4BAC3B,CACH;YACL,kBAAkB,IAAI,CACrB,oBAAC,GAAG;gBACF,oBAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,KAAK,UAAU;oBACxF,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;kCACjC,CACH,CACP,CACG,CACF,CACP,CAAC;AACJ,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE;IAC1B,0DAA0D;IAC1D,OAAO,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO;QAC5C,SAAS,CAAC,kBAAkB,KAAK,SAAS,CAAC,kBAAkB;QAC7D,SAAS,CAAC,cAAc,KAAK,SAAS,CAAC,cAAc,CAAC;AAC1D,CAAC,CAAC,CAAC"}
1
+ {"version":3,"sources":["../../../src/ui/components/ConfirmPrompt.tsx"],"sourcesContent":["import React, { useState } from 'react';\r\nimport { Box, Text, useInput } from 'ink';\r\n\r\ninterface ConfirmPromptProps {\r\n message: string;\r\n onYes: () => void;\r\n onNo: () => void;\r\n onFeedback?: () => void;\r\n showFeedbackOption?: boolean;\r\n /** Optional warning message to display above the prompt (shown in orange/red) */\r\n warningMessage?: string;\r\n}\r\n\r\nexport const ConfirmPrompt: React.FC<ConfirmPromptProps> = React.memo(({\r\n message,\r\n onYes,\r\n onNo,\r\n onFeedback,\r\n showFeedbackOption = false,\r\n warningMessage\r\n}) => {\r\n const [selected, setSelected] = useState<'yes' | 'no' | 'feedback'>('yes');\r\n\r\n useInput((input, key) => {\r\n if (key.upArrow || key.downArrow) {\r\n if (showFeedbackOption) {\r\n setSelected(prev => {\r\n const options: Array<'yes' | 'no' | 'feedback'> = ['yes', 'no', 'feedback'];\r\n const currentIdx = options.indexOf(prev);\r\n const nextIdx = key.upArrow\r\n ? (currentIdx - 1 + options.length) % options.length\r\n : (currentIdx + 1) % options.length;\r\n return options[nextIdx];\r\n });\r\n } else {\r\n setSelected(prev => prev === 'yes' ? 'no' : 'yes');\r\n }\r\n return;\r\n }\r\n\r\n // Y key for yes\r\n if (input === 'y' || input === 'Y') {\r\n onYes();\r\n return;\r\n }\r\n\r\n // N key for no\r\n if (input === 'n' || input === 'N') {\r\n onNo();\r\n return;\r\n }\r\n\r\n // F key for feedback\r\n if (showFeedbackOption && (input === 'f' || input === 'F') && onFeedback) {\r\n onFeedback();\r\n return;\r\n }\r\n\r\n // Enter key to confirm selection\r\n if (key.return) {\r\n if (selected === 'yes') onYes();\r\n else if (selected === 'no') onNo();\r\n else if (selected === 'feedback' && onFeedback) onFeedback();\r\n return;\r\n }\r\n });\r\n\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor={warningMessage ? \"#ff6600\" : \"#ffaa00\"} paddingX={1} paddingY={1}>\r\n {/* Warning message if provided */}\r\n {warningMessage && (\r\n <Box marginBottom={1} borderStyle=\"single\" borderColor=\"#ff3366\" paddingX={1}>\r\n <Text color=\"#ff3366\" bold>⚠️ {warningMessage}</Text>\r\n </Box>\r\n )}\r\n <Box marginBottom={1}>\r\n <Text color=\"#ffaa00\" bold>{message}</Text>\r\n </Box>\r\n <Box flexDirection=\"column\">\r\n <Box>\r\n <Text color={selected === 'yes' ? '#00cc66' : '#666666'} bold={selected === 'yes'}>\r\n {selected === 'yes' ? '> ' : ' '}1. Yes\r\n </Text>\r\n </Box>\r\n <Box>\r\n <Text color={selected === 'no' ? '#ff3366' : '#666666'} bold={selected === 'no'}>\r\n {selected === 'no' ? '> ' : ' '}2. No\r\n </Text>\r\n </Box>\r\n {showFeedbackOption && (\r\n <Box>\r\n <Text color={selected === 'feedback' ? '#00ccff' : '#666666'} bold={selected === 'feedback'}>\r\n {selected === 'feedback' ? '> ' : ' '}3. Feedback\r\n </Text>\r\n </Box>\r\n )}\r\n </Box>\r\n </Box>\r\n );\r\n}, (prevProps, nextProps) => {\r\n // Only re-render if message or showFeedbackOption changes\r\n return prevProps.message === nextProps.message &&\r\n prevProps.showFeedbackOption === nextProps.showFeedbackOption &&\r\n prevProps.warningMessage === nextProps.warningMessage;\r\n});\r\n\r\n"],"mappings":"AAAA,OAAO,SAAS,gBAAgB;AAChC,SAAS,KAAK,MAAM,gBAAgB;AAY7B,MAAM,gBAA8C,MAAM,KAAK,CAAC;AAAA,EACrE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,qBAAqB;AAAA,EACrB;AACF,MAAM;AACJ,QAAM,CAAC,UAAU,WAAW,IAAI,SAAoC,KAAK;AAEzE,WAAS,CAAC,OAAO,QAAQ;AACvB,QAAI,IAAI,WAAW,IAAI,WAAW;AAChC,UAAI,oBAAoB;AACtB,oBAAY,UAAQ;AAClB,gBAAM,UAA4C,CAAC,OAAO,MAAM,UAAU;AAC1E,gBAAM,aAAa,QAAQ,QAAQ,IAAI;AACvC,gBAAM,UAAU,IAAI,WACf,aAAa,IAAI,QAAQ,UAAU,QAAQ,UAC3C,aAAa,KAAK,QAAQ;AAC/B,iBAAO,QAAQ,OAAO;AAAA,QACxB,CAAC;AAAA,MACH,OAAO;AACL,oBAAY,UAAQ,SAAS,QAAQ,OAAO,KAAK;AAAA,MACnD;AACA;AAAA,IACF;AAGA,QAAI,UAAU,OAAO,UAAU,KAAK;AAClC,YAAM;AACN;AAAA,IACF;AAGA,QAAI,UAAU,OAAO,UAAU,KAAK;AAClC,WAAK;AACL;AAAA,IACF;AAGA,QAAI,uBAAuB,UAAU,OAAO,UAAU,QAAQ,YAAY;AACxE,iBAAW;AACX;AAAA,IACF;AAGA,QAAI,IAAI,QAAQ;AACd,UAAI,aAAa,MAAO,OAAM;AAAA,eACrB,aAAa,KAAM,MAAK;AAAA,eACxB,aAAa,cAAc,WAAY,YAAW;AAC3D;AAAA,IACF;AAAA,EACF,CAAC;AAED,SACE,oCAAC,OAAI,eAAc,UAAS,aAAY,SAAQ,aAAa,iBAAiB,YAAY,WAAW,UAAU,GAAG,UAAU,KAEzH,kBACC,oCAAC,OAAI,cAAc,GAAG,aAAY,UAAS,aAAY,WAAU,UAAU,KACzE,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,iBAAI,cAAe,CAChD,GAEF,oCAAC,OAAI,cAAc,KACjB,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAE,OAAQ,CACtC,GACA,oCAAC,OAAI,eAAc,YACjB,oCAAC,WACC,oCAAC,QAAK,OAAO,aAAa,QAAQ,YAAY,WAAW,MAAM,aAAa,SACzE,aAAa,QAAQ,OAAO,MAAK,QACpC,CACF,GACA,oCAAC,WACC,oCAAC,QAAK,OAAO,aAAa,OAAO,YAAY,WAAW,MAAM,aAAa,QACxE,aAAa,OAAO,OAAO,MAAK,OACnC,CACF,GACC,sBACC,oCAAC,WACC,oCAAC,QAAK,OAAO,aAAa,aAAa,YAAY,WAAW,MAAM,aAAa,cAC9E,aAAa,aAAa,OAAO,MAAK,aACzC,CACF,CAEJ,CACF;AAEJ,GAAG,CAAC,WAAW,cAAc;AAE3B,SAAO,UAAU,YAAY,UAAU,WACrC,UAAU,uBAAuB,UAAU,sBAC3C,UAAU,mBAAmB,UAAU;AAC3C,CAAC;","names":[]}
@@ -1,87 +1,36 @@
1
- import React from 'react';
2
- import { Box, Text } from 'ink';
3
- import Spinner from 'ink-spinner';
4
- /**
5
- * Dynamic connection status message that shows a spinner while connecting
6
- * and transforms to a static "Connected" message once connected.
7
- */
8
- export const ConnectionStatusMessage = React.memo(({ status }) => {
9
- const getTypeLabel = () => {
10
- switch (status.type) {
11
- case 'ssh': return 'ssh';
12
- case 'wsl': return 'WSL';
13
- case 'docker': return 'Docker';
14
- default: return status.type;
15
- }
16
- };
17
- // CONNECTING state - shows spinner
18
- if (status.status === 'connecting') {
19
- return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#9945FF", paddingX: 1, marginBottom: 1, alignSelf: "flex-start" },
20
- React.createElement(Box, null,
21
- React.createElement(Text, { color: "#00ccff" },
22
- React.createElement(Spinner, { type: "dots" })),
23
- React.createElement(Text, { color: "#9945FF" },
24
- " Tunnelling to ",
25
- getTypeLabel(),
26
- " environment..."))));
1
+ import React from "react";
2
+ import { Box, Text } from "ink";
3
+ import Spinner from "ink-spinner";
4
+ const ConnectionStatusMessage = React.memo(({ status }) => {
5
+ const getTypeLabel = () => {
6
+ switch (status.type) {
7
+ case "ssh":
8
+ return "ssh";
9
+ case "wsl":
10
+ return "WSL";
11
+ case "docker":
12
+ return "Docker";
13
+ default:
14
+ return status.type;
27
15
  }
28
- // CONNECTED state - static success message
29
- if (status.status === 'connected') {
30
- return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#00cc66", paddingX: 1, marginBottom: 1, alignSelf: "flex-start" },
31
- React.createElement(Box, null,
32
- React.createElement(Text, { color: "#00cc66", bold: true }, "\u2713"),
33
- React.createElement(Text, { color: "#00cc66" },
34
- " Established Wormhole to ",
35
- getTypeLabel(),
36
- " environment"),
37
- status.connectionString && (React.createElement(Text, { color: "#666666" },
38
- " [",
39
- getTypeLabel(),
40
- " ",
41
- status.connectionString,
42
- "]")))));
43
- }
44
- // ERROR state
45
- if (status.status === 'error') {
46
- return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#ff3366", paddingX: 1, marginBottom: 1, alignSelf: "flex-start" },
47
- React.createElement(Box, null,
48
- React.createElement(Text, { color: "#ff3366", bold: true }, "\u2717"),
49
- React.createElement(Text, { color: "#ff3366" },
50
- " Failed to connect to ",
51
- getTypeLabel(),
52
- " environment")),
53
- status.error && (React.createElement(Box, { paddingLeft: 1, marginTop: 0 },
54
- React.createElement(Text, { color: "#ff3366" },
55
- status.error.slice(0, 300),
56
- status.error.length > 300 ? '...' : '')))));
57
- }
58
- // DISCONNECTED state - shows disconnect notification
59
- if (status.status === 'disconnected') {
60
- return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#ff9900", paddingX: 1, marginBottom: 1, alignSelf: "flex-start" },
61
- React.createElement(Box, null,
62
- React.createElement(Text, { color: "#ff9900", bold: true }, "\u2717"),
63
- React.createElement(Text, { color: "#ff9900" },
64
- " Disconnected from ",
65
- getTypeLabel(),
66
- " environment"),
67
- status.connectionString && (React.createElement(Text, { color: "#666666" },
68
- " [",
69
- getTypeLabel(),
70
- " ",
71
- status.connectionString,
72
- "]"))),
73
- status.error && (React.createElement(Box, null,
74
- React.createElement(Text, { color: "#ff9900" },
75
- " ",
76
- status.error.slice(0, 300),
77
- status.error.length > 300 ? '...' : '')))));
78
- }
79
- return null;
16
+ };
17
+ if (status.status === "connecting") {
18
+ return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#9945FF", paddingX: 1, marginBottom: 1, alignSelf: "flex-start" }, /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#00ccff" }, /* @__PURE__ */ React.createElement(Spinner, { type: "dots" })), /* @__PURE__ */ React.createElement(Text, { color: "#9945FF" }, " Tunnelling to ", getTypeLabel(), " environment...")));
19
+ }
20
+ if (status.status === "connected") {
21
+ return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#00cc66", paddingX: 1, marginBottom: 1, alignSelf: "flex-start" }, /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#00cc66", bold: true }, "\u2713"), /* @__PURE__ */ React.createElement(Text, { color: "#00cc66" }, " Established Wormhole to ", getTypeLabel(), " environment"), status.connectionString && /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, " [", getTypeLabel(), " ", status.connectionString, "]")));
22
+ }
23
+ if (status.status === "error") {
24
+ return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#ff3366", paddingX: 1, marginBottom: 1, alignSelf: "flex-start" }, /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#ff3366", bold: true }, "\u2717"), /* @__PURE__ */ React.createElement(Text, { color: "#ff3366" }, " Failed to connect to ", getTypeLabel(), " environment")), status.error && /* @__PURE__ */ React.createElement(Box, { paddingLeft: 1, marginTop: 0 }, /* @__PURE__ */ React.createElement(Text, { color: "#ff3366" }, status.error.slice(0, 300), status.error.length > 300 ? "..." : "")));
25
+ }
26
+ if (status.status === "disconnected") {
27
+ return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#ff9900", paddingX: 1, marginBottom: 1, alignSelf: "flex-start" }, /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#ff9900", bold: true }, "\u2717"), /* @__PURE__ */ React.createElement(Text, { color: "#ff9900" }, " Disconnected from ", getTypeLabel(), " environment"), status.connectionString && /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, " [", getTypeLabel(), " ", status.connectionString, "]")), status.error && /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#ff9900" }, " ", status.error.slice(0, 300), status.error.length > 300 ? "..." : "")));
28
+ }
29
+ return null;
80
30
  }, (prevProps, nextProps) => {
81
- // Only re-render if status changes
82
- return prevProps.status.status === nextProps.status.status &&
83
- prevProps.status.type === nextProps.status.type &&
84
- prevProps.status.connectionString === nextProps.status.connectionString &&
85
- prevProps.status.error === nextProps.status.error;
31
+ return prevProps.status.status === nextProps.status.status && prevProps.status.type === nextProps.status.type && prevProps.status.connectionString === nextProps.status.connectionString && prevProps.status.error === nextProps.status.error;
86
32
  });
33
+ export {
34
+ ConnectionStatusMessage
35
+ };
87
36
  //# sourceMappingURL=ConnectionStatusMessage.js.map