centaurus-cli 2.0.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 (338) hide show
  1. package/AUTH_FLOW.md +138 -0
  2. package/CONFIG_GUIDE.md +255 -0
  3. package/LICENSE +21 -0
  4. package/README.md +346 -0
  5. package/dist/ai/provider-factory.d.ts +6 -0
  6. package/dist/ai/provider-factory.d.ts.map +1 -0
  7. package/dist/ai/provider-factory.js +27 -0
  8. package/dist/ai/provider-factory.js.map +1 -0
  9. package/dist/ai/providers/base.d.ts +25 -0
  10. package/dist/ai/providers/base.d.ts.map +1 -0
  11. package/dist/ai/providers/base.js +9 -0
  12. package/dist/ai/providers/base.js.map +1 -0
  13. package/dist/ai/providers/gemini.d.ts +34 -0
  14. package/dist/ai/providers/gemini.d.ts.map +1 -0
  15. package/dist/ai/providers/gemini.js +146 -0
  16. package/dist/ai/providers/gemini.js.map +1 -0
  17. package/dist/ai/types.d.ts +20 -0
  18. package/dist/ai/types.d.ts.map +1 -0
  19. package/dist/ai/types.js +2 -0
  20. package/dist/ai/types.js.map +1 -0
  21. package/dist/cli-adapter.d.ts +78 -0
  22. package/dist/cli-adapter.d.ts.map +1 -0
  23. package/dist/cli-adapter.js +605 -0
  24. package/dist/cli-adapter.js.map +1 -0
  25. package/dist/commands/CommandParser.d.ts +27 -0
  26. package/dist/commands/CommandParser.d.ts.map +1 -0
  27. package/dist/commands/CommandParser.js +238 -0
  28. package/dist/commands/CommandParser.js.map +1 -0
  29. package/dist/config/ConfigManager.d.ts +59 -0
  30. package/dist/config/ConfigManager.d.ts.map +1 -0
  31. package/dist/config/ConfigManager.js +332 -0
  32. package/dist/config/ConfigManager.js.map +1 -0
  33. package/dist/config/defaultConfig.d.ts +82 -0
  34. package/dist/config/defaultConfig.d.ts.map +1 -0
  35. package/dist/config/defaultConfig.js +88 -0
  36. package/dist/config/defaultConfig.js.map +1 -0
  37. package/dist/config/manager.d.ts +60 -0
  38. package/dist/config/manager.d.ts.map +1 -0
  39. package/dist/config/manager.js +162 -0
  40. package/dist/config/manager.js.map +1 -0
  41. package/dist/config/types.d.ts +9 -0
  42. package/dist/config/types.d.ts.map +1 -0
  43. package/dist/config/types.js +6 -0
  44. package/dist/config/types.js.map +1 -0
  45. package/dist/index-custom.d.ts +3 -0
  46. package/dist/index-custom.d.ts.map +1 -0
  47. package/dist/index-custom.js +65 -0
  48. package/dist/index-custom.js.map +1 -0
  49. package/dist/index.d.ts +3 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +102 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/prompts/system-prompt.d.ts +47 -0
  54. package/dist/prompts/system-prompt.d.ts.map +1 -0
  55. package/dist/prompts/system-prompt.js +378 -0
  56. package/dist/prompts/system-prompt.js.map +1 -0
  57. package/dist/providers/GoogleProvider.d.ts +26 -0
  58. package/dist/providers/GoogleProvider.d.ts.map +1 -0
  59. package/dist/providers/GoogleProvider.js +313 -0
  60. package/dist/providers/GoogleProvider.js.map +1 -0
  61. package/dist/providers/Provider.d.ts +114 -0
  62. package/dist/providers/Provider.d.ts.map +1 -0
  63. package/dist/providers/Provider.js +44 -0
  64. package/dist/providers/Provider.js.map +1 -0
  65. package/dist/services/api-client.d.ts +282 -0
  66. package/dist/services/api-client.d.ts.map +1 -0
  67. package/dist/services/api-client.js +339 -0
  68. package/dist/services/api-client.js.map +1 -0
  69. package/dist/services/auth-handler.d.ts +30 -0
  70. package/dist/services/auth-handler.d.ts.map +1 -0
  71. package/dist/services/auth-handler.js +210 -0
  72. package/dist/services/auth-handler.js.map +1 -0
  73. package/dist/services/conversation-manager.d.ts +73 -0
  74. package/dist/services/conversation-manager.d.ts.map +1 -0
  75. package/dist/services/conversation-manager.js +128 -0
  76. package/dist/services/conversation-manager.js.map +1 -0
  77. package/dist/tests/automated-verification.d.ts +27 -0
  78. package/dist/tests/automated-verification.d.ts.map +1 -0
  79. package/dist/tests/automated-verification.js +359 -0
  80. package/dist/tests/automated-verification.js.map +1 -0
  81. package/dist/tests/integration-tests.d.ts +50 -0
  82. package/dist/tests/integration-tests.d.ts.map +1 -0
  83. package/dist/tests/integration-tests.js +648 -0
  84. package/dist/tests/integration-tests.js.map +1 -0
  85. package/dist/tools/ToolRegistry.d.ts +44 -0
  86. package/dist/tools/ToolRegistry.d.ts.map +1 -0
  87. package/dist/tools/ToolRegistry.js +494 -0
  88. package/dist/tools/ToolRegistry.js.map +1 -0
  89. package/dist/tools/command.d.ts +4 -0
  90. package/dist/tools/command.d.ts.map +1 -0
  91. package/dist/tools/command.js +117 -0
  92. package/dist/tools/command.js.map +1 -0
  93. package/dist/tools/file-ops-test.d.ts +6 -0
  94. package/dist/tools/file-ops-test.d.ts.map +1 -0
  95. package/dist/tools/file-ops-test.js +197 -0
  96. package/dist/tools/file-ops-test.js.map +1 -0
  97. package/dist/tools/file-ops.d.ts +6 -0
  98. package/dist/tools/file-ops.d.ts.map +1 -0
  99. package/dist/tools/file-ops.js +189 -0
  100. package/dist/tools/file-ops.js.map +1 -0
  101. package/dist/tools/plan-mode.d.ts +53 -0
  102. package/dist/tools/plan-mode.d.ts.map +1 -0
  103. package/dist/tools/plan-mode.js +202 -0
  104. package/dist/tools/plan-mode.js.map +1 -0
  105. package/dist/tools/registry.d.ts +30 -0
  106. package/dist/tools/registry.d.ts.map +1 -0
  107. package/dist/tools/registry.js +67 -0
  108. package/dist/tools/registry.js.map +1 -0
  109. package/dist/tools/types.d.ts +34 -0
  110. package/dist/tools/types.d.ts.map +1 -0
  111. package/dist/tools/types.js +2 -0
  112. package/dist/tools/types.js.map +1 -0
  113. package/dist/tools/web-search.d.ts +24 -0
  114. package/dist/tools/web-search.d.ts.map +1 -0
  115. package/dist/tools/web-search.js +194 -0
  116. package/dist/tools/web-search.js.map +1 -0
  117. package/dist/types/index.d.ts +32 -0
  118. package/dist/types/index.d.ts.map +1 -0
  119. package/dist/types/index.js +2 -0
  120. package/dist/types/index.js.map +1 -0
  121. package/dist/ui/DisplayHistory.d.ts +53 -0
  122. package/dist/ui/DisplayHistory.d.ts.map +1 -0
  123. package/dist/ui/DisplayHistory.js +82 -0
  124. package/dist/ui/DisplayHistory.js.map +1 -0
  125. package/dist/ui/clack-ui.d.ts +83 -0
  126. package/dist/ui/clack-ui.d.ts.map +1 -0
  127. package/dist/ui/clack-ui.js +304 -0
  128. package/dist/ui/clack-ui.js.map +1 -0
  129. package/dist/ui/components/App.d.ts +47 -0
  130. package/dist/ui/components/App.d.ts.map +1 -0
  131. package/dist/ui/components/App.js +389 -0
  132. package/dist/ui/components/App.js.map +1 -0
  133. package/dist/ui/components/AuthScreen.d.ts +8 -0
  134. package/dist/ui/components/AuthScreen.d.ts.map +1 -0
  135. package/dist/ui/components/AuthScreen.js +37 -0
  136. package/dist/ui/components/AuthScreen.js.map +1 -0
  137. package/dist/ui/components/AuthWelcomeScreen.d.ts +8 -0
  138. package/dist/ui/components/AuthWelcomeScreen.d.ts.map +1 -0
  139. package/dist/ui/components/AuthWelcomeScreen.js +34 -0
  140. package/dist/ui/components/AuthWelcomeScreen.js.map +1 -0
  141. package/dist/ui/components/CodeBlock.d.ts +9 -0
  142. package/dist/ui/components/CodeBlock.d.ts.map +1 -0
  143. package/dist/ui/components/CodeBlock.js +22 -0
  144. package/dist/ui/components/CodeBlock.js.map +1 -0
  145. package/dist/ui/components/ConfigViewer.d.ts +11 -0
  146. package/dist/ui/components/ConfigViewer.d.ts.map +1 -0
  147. package/dist/ui/components/ConfigViewer.js +27 -0
  148. package/dist/ui/components/ConfigViewer.js.map +1 -0
  149. package/dist/ui/components/ConfirmPrompt.d.ts +11 -0
  150. package/dist/ui/components/ConfirmPrompt.d.ts.map +1 -0
  151. package/dist/ui/components/ConfirmPrompt.js +55 -0
  152. package/dist/ui/components/ConfirmPrompt.js.map +1 -0
  153. package/dist/ui/components/DiffViewer.d.ts +8 -0
  154. package/dist/ui/components/DiffViewer.d.ts.map +1 -0
  155. package/dist/ui/components/DiffViewer.js +63 -0
  156. package/dist/ui/components/DiffViewer.js.map +1 -0
  157. package/dist/ui/components/DisplayItemRenderer.d.ts +18 -0
  158. package/dist/ui/components/DisplayItemRenderer.d.ts.map +1 -0
  159. package/dist/ui/components/DisplayItemRenderer.js +53 -0
  160. package/dist/ui/components/DisplayItemRenderer.js.map +1 -0
  161. package/dist/ui/components/DynamicMessage.d.ts +13 -0
  162. package/dist/ui/components/DynamicMessage.d.ts.map +1 -0
  163. package/dist/ui/components/DynamicMessage.js +27 -0
  164. package/dist/ui/components/DynamicMessage.js.map +1 -0
  165. package/dist/ui/components/ErrorBoundary.d.ts +16 -0
  166. package/dist/ui/components/ErrorBoundary.d.ts.map +1 -0
  167. package/dist/ui/components/ErrorBoundary.js +25 -0
  168. package/dist/ui/components/ErrorBoundary.js.map +1 -0
  169. package/dist/ui/components/FileOperation.d.ts +10 -0
  170. package/dist/ui/components/FileOperation.d.ts.map +1 -0
  171. package/dist/ui/components/FileOperation.js +31 -0
  172. package/dist/ui/components/FileOperation.js.map +1 -0
  173. package/dist/ui/components/InputBox.d.ts +12 -0
  174. package/dist/ui/components/InputBox.d.ts.map +1 -0
  175. package/dist/ui/components/InputBox.js +50 -0
  176. package/dist/ui/components/InputBox.js.map +1 -0
  177. package/dist/ui/components/KeyboardHelp.d.ts +7 -0
  178. package/dist/ui/components/KeyboardHelp.d.ts.map +1 -0
  179. package/dist/ui/components/KeyboardHelp.js +25 -0
  180. package/dist/ui/components/KeyboardHelp.js.map +1 -0
  181. package/dist/ui/components/LoadingIndicator.d.ts +3 -0
  182. package/dist/ui/components/LoadingIndicator.d.ts.map +1 -0
  183. package/dist/ui/components/LoadingIndicator.js +25 -0
  184. package/dist/ui/components/LoadingIndicator.js.map +1 -0
  185. package/dist/ui/components/MarkdownRenderer.d.ts +8 -0
  186. package/dist/ui/components/MarkdownRenderer.d.ts.map +1 -0
  187. package/dist/ui/components/MarkdownRenderer.js +96 -0
  188. package/dist/ui/components/MarkdownRenderer.js.map +1 -0
  189. package/dist/ui/components/MessageBox.d.ts +10 -0
  190. package/dist/ui/components/MessageBox.d.ts.map +1 -0
  191. package/dist/ui/components/MessageBox.js +50 -0
  192. package/dist/ui/components/MessageBox.js.map +1 -0
  193. package/dist/ui/components/MessageDisplay.d.ts +8 -0
  194. package/dist/ui/components/MessageDisplay.d.ts.map +1 -0
  195. package/dist/ui/components/MessageDisplay.js +43 -0
  196. package/dist/ui/components/MessageDisplay.js.map +1 -0
  197. package/dist/ui/components/ScrollableContent.d.ts +7 -0
  198. package/dist/ui/components/ScrollableContent.d.ts.map +1 -0
  199. package/dist/ui/components/ScrollableContent.js +6 -0
  200. package/dist/ui/components/ScrollableContent.js.map +1 -0
  201. package/dist/ui/components/ScrollableMessageList.d.ts +10 -0
  202. package/dist/ui/components/ScrollableMessageList.d.ts.map +1 -0
  203. package/dist/ui/components/ScrollableMessageList.js +133 -0
  204. package/dist/ui/components/ScrollableMessageList.js.map +1 -0
  205. package/dist/ui/components/ScrollableScreen.d.ts +9 -0
  206. package/dist/ui/components/ScrollableScreen.d.ts.map +1 -0
  207. package/dist/ui/components/ScrollableScreen.js +22 -0
  208. package/dist/ui/components/ScrollableScreen.js.map +1 -0
  209. package/dist/ui/components/SelectPrompt.d.ts +12 -0
  210. package/dist/ui/components/SelectPrompt.d.ts.map +1 -0
  211. package/dist/ui/components/SelectPrompt.js +10 -0
  212. package/dist/ui/components/SelectPrompt.js.map +1 -0
  213. package/dist/ui/components/StaticMessageHistory.d.ts +14 -0
  214. package/dist/ui/components/StaticMessageHistory.d.ts.map +1 -0
  215. package/dist/ui/components/StaticMessageHistory.js +19 -0
  216. package/dist/ui/components/StaticMessageHistory.js.map +1 -0
  217. package/dist/ui/components/StatusBar.d.ts +10 -0
  218. package/dist/ui/components/StatusBar.d.ts.map +1 -0
  219. package/dist/ui/components/StatusBar.js +20 -0
  220. package/dist/ui/components/StatusBar.js.map +1 -0
  221. package/dist/ui/components/StreamingMessageDisplay.d.ts +13 -0
  222. package/dist/ui/components/StreamingMessageDisplay.d.ts.map +1 -0
  223. package/dist/ui/components/StreamingMessageDisplay.js +26 -0
  224. package/dist/ui/components/StreamingMessageDisplay.js.map +1 -0
  225. package/dist/ui/components/ToolExecutionMessage.d.ts +8 -0
  226. package/dist/ui/components/ToolExecutionMessage.d.ts.map +1 -0
  227. package/dist/ui/components/ToolExecutionMessage.js +189 -0
  228. package/dist/ui/components/ToolExecutionMessage.js.map +1 -0
  229. package/dist/ui/components/ToolExecutionStatus.d.ts +10 -0
  230. package/dist/ui/components/ToolExecutionStatus.d.ts.map +1 -0
  231. package/dist/ui/components/ToolExecutionStatus.js +65 -0
  232. package/dist/ui/components/ToolExecutionStatus.js.map +1 -0
  233. package/dist/ui/components/ToolResult.d.ts +10 -0
  234. package/dist/ui/components/ToolResult.d.ts.map +1 -0
  235. package/dist/ui/components/ToolResult.js +17 -0
  236. package/dist/ui/components/ToolResult.js.map +1 -0
  237. package/dist/ui/components/WelcomeBanner.d.ts +3 -0
  238. package/dist/ui/components/WelcomeBanner.d.ts.map +1 -0
  239. package/dist/ui/components/WelcomeBanner.js +28 -0
  240. package/dist/ui/components/WelcomeBanner.js.map +1 -0
  241. package/dist/ui/components/code-block.d.ts +10 -0
  242. package/dist/ui/components/code-block.d.ts.map +1 -0
  243. package/dist/ui/components/code-block.js +74 -0
  244. package/dist/ui/components/code-block.js.map +1 -0
  245. package/dist/ui/components/confirm-prompt.d.ts +12 -0
  246. package/dist/ui/components/confirm-prompt.d.ts.map +1 -0
  247. package/dist/ui/components/confirm-prompt.js +104 -0
  248. package/dist/ui/components/confirm-prompt.js.map +1 -0
  249. package/dist/ui/components/diff-viewer.d.ts +9 -0
  250. package/dist/ui/components/diff-viewer.d.ts.map +1 -0
  251. package/dist/ui/components/diff-viewer.js +57 -0
  252. package/dist/ui/components/diff-viewer.js.map +1 -0
  253. package/dist/ui/components/input-box.d.ts +18 -0
  254. package/dist/ui/components/input-box.d.ts.map +1 -0
  255. package/dist/ui/components/input-box.js +157 -0
  256. package/dist/ui/components/input-box.js.map +1 -0
  257. package/dist/ui/components/keyboard-help.d.ts +7 -0
  258. package/dist/ui/components/keyboard-help.d.ts.map +1 -0
  259. package/dist/ui/components/keyboard-help.js +43 -0
  260. package/dist/ui/components/keyboard-help.js.map +1 -0
  261. package/dist/ui/components/loading-indicator.d.ts +3 -0
  262. package/dist/ui/components/loading-indicator.d.ts.map +1 -0
  263. package/dist/ui/components/loading-indicator.js +42 -0
  264. package/dist/ui/components/loading-indicator.js.map +1 -0
  265. package/dist/ui/components/message-display.d.ts +7 -0
  266. package/dist/ui/components/message-display.d.ts.map +1 -0
  267. package/dist/ui/components/message-display.js +104 -0
  268. package/dist/ui/components/message-display.js.map +1 -0
  269. package/dist/ui/components/misc.d.ts +28 -0
  270. package/dist/ui/components/misc.d.ts.map +1 -0
  271. package/dist/ui/components/misc.js +128 -0
  272. package/dist/ui/components/misc.js.map +1 -0
  273. package/dist/ui/components/select-prompt.d.ts +13 -0
  274. package/dist/ui/components/select-prompt.d.ts.map +1 -0
  275. package/dist/ui/components/select-prompt.js +42 -0
  276. package/dist/ui/components/select-prompt.js.map +1 -0
  277. package/dist/ui/components/status-bar.d.ts +11 -0
  278. package/dist/ui/components/status-bar.d.ts.map +1 -0
  279. package/dist/ui/components/status-bar.js +47 -0
  280. package/dist/ui/components/status-bar.js.map +1 -0
  281. package/dist/ui/components/tool-execution.d.ts +3 -0
  282. package/dist/ui/components/tool-execution.d.ts.map +1 -0
  283. package/dist/ui/components/tool-execution.js +374 -0
  284. package/dist/ui/components/tool-execution.js.map +1 -0
  285. package/dist/ui/components/tool-result.d.ts +11 -0
  286. package/dist/ui/components/tool-result.d.ts.map +1 -0
  287. package/dist/ui/components/tool-result.js +58 -0
  288. package/dist/ui/components/tool-result.js.map +1 -0
  289. package/dist/ui/components/welcome-banner.d.ts +3 -0
  290. package/dist/ui/components/welcome-banner.d.ts.map +1 -0
  291. package/dist/ui/components/welcome-banner.js +46 -0
  292. package/dist/ui/components/welcome-banner.js.map +1 -0
  293. package/dist/ui/hooks/useDisplayHistory.d.ts +13 -0
  294. package/dist/ui/hooks/useDisplayHistory.d.ts.map +1 -0
  295. package/dist/ui/hooks/useDisplayHistory.js +45 -0
  296. package/dist/ui/hooks/useDisplayHistory.js.map +1 -0
  297. package/dist/ui/render-engine.d.ts +69 -0
  298. package/dist/ui/render-engine.d.ts.map +1 -0
  299. package/dist/ui/render-engine.js +197 -0
  300. package/dist/ui/render-engine.js.map +1 -0
  301. package/dist/ui/terminal/TerminalRenderer.d.ts +84 -0
  302. package/dist/ui/terminal/TerminalRenderer.d.ts.map +1 -0
  303. package/dist/ui/terminal/TerminalRenderer.js +154 -0
  304. package/dist/ui/terminal/TerminalRenderer.js.map +1 -0
  305. package/dist/ui/terminal/TerminalUI.d.ts +139 -0
  306. package/dist/ui/terminal/TerminalUI.d.ts.map +1 -0
  307. package/dist/ui/terminal/TerminalUI.js +430 -0
  308. package/dist/ui/terminal/TerminalUI.js.map +1 -0
  309. package/dist/ui/terminal/VirtualChatBuffer.d.ts +32 -0
  310. package/dist/ui/terminal/VirtualChatBuffer.d.ts.map +1 -0
  311. package/dist/ui/terminal/VirtualChatBuffer.js +37 -0
  312. package/dist/ui/terminal/VirtualChatBuffer.js.map +1 -0
  313. package/dist/ui/terminal-kit-base.d.ts +117 -0
  314. package/dist/ui/terminal-kit-base.d.ts.map +1 -0
  315. package/dist/ui/terminal-kit-base.js +188 -0
  316. package/dist/ui/terminal-kit-base.js.map +1 -0
  317. package/dist/utils/file.d.ts +21 -0
  318. package/dist/utils/file.d.ts.map +1 -0
  319. package/dist/utils/file.js +68 -0
  320. package/dist/utils/file.js.map +1 -0
  321. package/dist/utils/logger.d.ts +17 -0
  322. package/dist/utils/logger.d.ts.map +1 -0
  323. package/dist/utils/logger.js +57 -0
  324. package/dist/utils/logger.js.map +1 -0
  325. package/dist/utils/markdown-parser.d.ts +56 -0
  326. package/dist/utils/markdown-parser.d.ts.map +1 -0
  327. package/dist/utils/markdown-parser.js +307 -0
  328. package/dist/utils/markdown-parser.js.map +1 -0
  329. package/dist/utils/shell.d.ts +7 -0
  330. package/dist/utils/shell.d.ts.map +1 -0
  331. package/dist/utils/shell.js +62 -0
  332. package/dist/utils/shell.js.map +1 -0
  333. package/dist/utils/state.d.ts +13 -0
  334. package/dist/utils/state.d.ts.map +1 -0
  335. package/dist/utils/state.js +25 -0
  336. package/dist/utils/state.js.map +1 -0
  337. package/package.json +81 -0
  338. package/postinstall.js +46 -0
@@ -0,0 +1,430 @@
1
+ /**
2
+ * Terminal UI Manager
3
+ * Manages the UI state and rendering without React/Ink
4
+ */
5
+ import { TerminalRenderer } from './TerminalRenderer.js';
6
+ import chalk from 'chalk';
7
+ export class TerminalUI {
8
+ renderer;
9
+ screen = 'chat';
10
+ messageHistory = [];
11
+ currentMessage = null;
12
+ isLoading = false;
13
+ loadingMessage = '';
14
+ currentModel = '';
15
+ planMode = false;
16
+ autoAcceptMode = false;
17
+ approvalRequest;
18
+ pickerOptions;
19
+ planApprovalRequest;
20
+ selectedPickerIndex = 0;
21
+ inputBuffer = '';
22
+ // Callbacks
23
+ onMessageCallback;
24
+ onPickerSelectionCallback;
25
+ onToggleAutoAcceptCallback;
26
+ constructor(initialModel, initialPlanMode) {
27
+ this.renderer = new TerminalRenderer();
28
+ this.currentModel = initialModel;
29
+ this.planMode = initialPlanMode;
30
+ }
31
+ /**
32
+ * Initialize the UI
33
+ */
34
+ init() {
35
+ this.renderer.init();
36
+ this.renderBanner();
37
+ this.updateStatusBar();
38
+ this.renderer.setInputPrompt('> ');
39
+ this.renderer.render();
40
+ this.setupInputHandling();
41
+ }
42
+ /**
43
+ * Render the welcome banner
44
+ */
45
+ renderBanner() {
46
+ const banner = `
47
+ ${chalk.cyan('██████╗███████╗███╗ ██╗████████╗ █████╗ ██╗ ██╗██████╗ ██╗ ██╗███████╗')}
48
+ ${chalk.cyan('██╔════╝██╔════╝████╗ ██║╚══██╔══╝██╔══██╗██║ ██║██╔══██╗██║ ██║██╔════╝')}
49
+ ${chalk.cyan('██║ █████╗ ██╔██╗ ██║ ██║ ███████║██║ ██║██████╔╝██║ ██║███████╗')}
50
+ ${chalk.cyan('██║ ██╔══╝ ██║╚██╗██║ ██║ ██╔══██║██║ ██║██╔══██╗██║ ██║╚════██║')}
51
+ ${chalk.cyan('╚██████╗███████╗██║ ╚████║ ██║ ██║ ██║╚██████╔╝██║ ██║╚██████╔╝███████║')}
52
+ ${chalk.cyan(' ╚═════╝╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝')}
53
+ ${chalk.cyan('██████╗██╗ ██╗')}
54
+ ${chalk.cyan('██╔════╝██║ ██║')}
55
+ ${chalk.cyan('██║ ██║ ██║')}
56
+ ${chalk.cyan('██║ ██║ ██║')}
57
+ ${chalk.cyan('╚██████╗███████╗██║')}
58
+ ${chalk.cyan(' ╚═════╝╚══════╝╚═╝')}
59
+
60
+ ${chalk.gray('Type /help for commands')}
61
+ `;
62
+ console.log(banner);
63
+ }
64
+ /**
65
+ * Update the status bar
66
+ */
67
+ updateStatusBar() {
68
+ const cwd = process.cwd();
69
+ const mode = this.planMode ? 'Planning' : 'Execution';
70
+ const autoAccept = this.autoAcceptMode ? 'ON' : 'OFF';
71
+ const status = chalk.gray(`CWD: ${cwd} | Model: ${this.currentModel} | Mode: ${mode} | [AUTO-ACCEPT: ${autoAccept}] | Ctrl+T: toggle | Ctrl+C: exit`);
72
+ this.renderer.setStatusLine(status);
73
+ }
74
+ /**
75
+ * Setup input handling
76
+ */
77
+ setupInputHandling() {
78
+ process.stdin.on('data', (data) => {
79
+ const key = data.toString();
80
+ // Handle different screens
81
+ if (this.screen === 'chat') {
82
+ this.handleChatInput(key);
83
+ }
84
+ else if (this.screen === 'approval') {
85
+ this.handleApprovalInput(key);
86
+ }
87
+ else if (this.screen === 'picker') {
88
+ this.handlePickerInput(key);
89
+ }
90
+ else if (this.screen === 'plan-approval') {
91
+ this.handlePlanApprovalInput(key);
92
+ }
93
+ });
94
+ }
95
+ /**
96
+ * Handle chat screen input
97
+ */
98
+ handleChatInput(key) {
99
+ // Ctrl+C to exit
100
+ if (key === '\x03') {
101
+ this.cleanup();
102
+ process.exit(0);
103
+ }
104
+ // Ctrl+T to toggle auto-accept
105
+ if (key === '\x14') {
106
+ this.autoAcceptMode = !this.autoAcceptMode;
107
+ this.updateStatusBar();
108
+ this.renderer.render();
109
+ return;
110
+ }
111
+ // Enter to submit
112
+ if (key === '\r' || key === '\n') {
113
+ const input = this.inputBuffer.trim();
114
+ if (input && this.onMessageCallback) {
115
+ this.addUserMessage(input);
116
+ this.inputBuffer = '';
117
+ this.renderer.clearInput();
118
+ this.setLoading(true, 'Processing...');
119
+ this.onMessageCallback(input).catch(err => {
120
+ this.addSystemMessage(`Error: ${err.message}`);
121
+ this.setLoading(false);
122
+ });
123
+ }
124
+ return;
125
+ }
126
+ // Backspace
127
+ if (key === '\x7f' || key === '\b') {
128
+ if (this.inputBuffer.length > 0) {
129
+ this.inputBuffer = this.inputBuffer.slice(0, -1);
130
+ this.renderer.updateInput(this.inputBuffer);
131
+ }
132
+ return;
133
+ }
134
+ // Regular character
135
+ if (key.length === 1 && key >= ' ') {
136
+ this.inputBuffer += key;
137
+ this.renderer.updateInput(this.inputBuffer);
138
+ }
139
+ }
140
+ /**
141
+ * Handle approval screen input
142
+ */
143
+ handleApprovalInput(key) {
144
+ if (!this.approvalRequest)
145
+ return;
146
+ const lowerKey = key.toLowerCase();
147
+ if (lowerKey === 'y') {
148
+ // Add response to display
149
+ console.log(chalk.green('✓ Approved'));
150
+ this.approvalRequest.resolve(true);
151
+ this.approvalRequest = undefined;
152
+ this.screen = 'chat';
153
+ this.renderer.setInputPrompt('> ');
154
+ this.renderer.render();
155
+ }
156
+ else if (lowerKey === 'n') {
157
+ // Add response to display
158
+ console.log(chalk.red('✗ Rejected'));
159
+ this.approvalRequest.resolve(false);
160
+ this.approvalRequest = undefined;
161
+ this.screen = 'chat';
162
+ this.renderer.setInputPrompt('> ');
163
+ this.renderer.render();
164
+ }
165
+ }
166
+ /**
167
+ * Handle picker screen input
168
+ */
169
+ handlePickerInput(key) {
170
+ if (!this.pickerOptions)
171
+ return;
172
+ // Arrow up
173
+ if (key === '\x1b[A') {
174
+ this.selectedPickerIndex = Math.max(0, this.selectedPickerIndex - 1);
175
+ // Re-render picker with updated selection
176
+ this.showPicker(this.pickerOptions);
177
+ return;
178
+ }
179
+ // Arrow down
180
+ if (key === '\x1b[B') {
181
+ this.selectedPickerIndex = Math.min(this.pickerOptions.choices.length - 1, this.selectedPickerIndex + 1);
182
+ // Re-render picker with updated selection
183
+ this.showPicker(this.pickerOptions);
184
+ return;
185
+ }
186
+ // Enter to select
187
+ if (key === '\r' || key === '\n') {
188
+ const selected = this.pickerOptions.choices[this.selectedPickerIndex];
189
+ const type = this.pickerOptions.type;
190
+ // Add selection to display
191
+ this.renderer.addLine(chalk.green(`✓ Selected: ${selected.label}`));
192
+ this.pickerOptions = undefined;
193
+ this.screen = 'chat';
194
+ this.renderer.setInputPrompt('> ');
195
+ this.setLoading(true, 'Updating...');
196
+ if (this.onPickerSelectionCallback) {
197
+ this.onPickerSelectionCallback(selected.value, type).then(() => {
198
+ if (type === 'model') {
199
+ this.currentModel = selected.value;
200
+ this.updateStatusBar();
201
+ }
202
+ this.setLoading(false);
203
+ this.renderer.render();
204
+ });
205
+ }
206
+ }
207
+ }
208
+ /**
209
+ * Handle plan approval input
210
+ */
211
+ handlePlanApprovalInput(key) {
212
+ if (!this.planApprovalRequest)
213
+ return;
214
+ const lowerKey = key.toLowerCase();
215
+ if (lowerKey === 'y') {
216
+ this.renderer.addLine(chalk.green('✓ Plan approved'));
217
+ this.planApprovalRequest.resolve(true);
218
+ this.planApprovalRequest = undefined;
219
+ this.screen = 'chat';
220
+ this.renderer.setInputPrompt('> ');
221
+ this.setLoading(true, 'Implementing plan...');
222
+ }
223
+ else if (lowerKey === 'n') {
224
+ this.renderer.addLine(chalk.red('✗ Plan rejected'));
225
+ this.planApprovalRequest.resolve(false);
226
+ this.planApprovalRequest = undefined;
227
+ this.screen = 'chat';
228
+ this.renderer.setInputPrompt('> ');
229
+ this.renderer.render();
230
+ }
231
+ }
232
+ /**
233
+ * Add a user message
234
+ */
235
+ addUserMessage(content) {
236
+ const message = {
237
+ id: `user-${Date.now()}`,
238
+ role: 'user',
239
+ content,
240
+ timestamp: new Date()
241
+ };
242
+ this.messageHistory.push(message);
243
+ // Output directly to terminal
244
+ console.log('');
245
+ console.log(chalk.blue(`You: ${this.formatTime(message.timestamp)}`));
246
+ console.log(content);
247
+ this.renderer.render();
248
+ }
249
+ /**
250
+ * Add an assistant message
251
+ */
252
+ addAssistantMessage(content) {
253
+ const message = {
254
+ id: `assistant-${Date.now()}`,
255
+ role: 'assistant',
256
+ content,
257
+ timestamp: new Date()
258
+ };
259
+ this.messageHistory.push(message);
260
+ // Output directly to terminal
261
+ console.log('');
262
+ console.log(chalk.cyan(`Centaurus: ${this.formatTime(message.timestamp)}`));
263
+ console.log(content);
264
+ this.setLoading(false);
265
+ this.renderer.render();
266
+ }
267
+ /**
268
+ * Add a system message
269
+ */
270
+ addSystemMessage(content) {
271
+ console.log('');
272
+ console.log(chalk.red(content));
273
+ this.renderer.render();
274
+ }
275
+ /**
276
+ * Add a tool execution message
277
+ */
278
+ addToolMessage(toolName, status, details) {
279
+ const emoji = this.getToolEmoji(toolName);
280
+ if (status === 'executing') {
281
+ console.log('');
282
+ console.log(chalk.cyan(`⏳ ${emoji} ${this.getToolLabel(toolName)}...`));
283
+ }
284
+ else if (status === 'completed') {
285
+ console.log(chalk.green(`✓ ${emoji} ${this.getToolLabel(toolName)}`));
286
+ }
287
+ else if (status === 'error') {
288
+ console.log(chalk.red(`✗ ${emoji} ${this.getToolLabel(toolName)} failed`));
289
+ }
290
+ this.renderer.render();
291
+ }
292
+ /**
293
+ * Set loading state
294
+ */
295
+ setLoading(loading, message = '') {
296
+ this.isLoading = loading;
297
+ this.loadingMessage = message;
298
+ if (loading && message) {
299
+ console.log('');
300
+ console.log(chalk.cyan(`⏳ ${message}`));
301
+ this.renderer.render();
302
+ }
303
+ }
304
+ /**
305
+ * Show approval request
306
+ */
307
+ showApprovalRequest(request) {
308
+ this.approvalRequest = request;
309
+ this.screen = 'approval';
310
+ // Add approval message inline
311
+ console.log('');
312
+ console.log(chalk.yellow(`⚠️ ${request.message}`));
313
+ console.log('');
314
+ console.log(chalk.white('▶ [Y]es [N]o'));
315
+ this.renderer.setInputPrompt('');
316
+ this.renderer.render();
317
+ }
318
+ /**
319
+ * Show picker
320
+ */
321
+ showPicker(options) {
322
+ this.pickerOptions = options;
323
+ this.selectedPickerIndex = 0;
324
+ this.screen = 'picker';
325
+ // Add picker inline
326
+ this.renderer.addLine('');
327
+ this.renderer.addLine(chalk.cyan(options.message));
328
+ this.renderer.addLine('');
329
+ options.choices.forEach((choice, index) => {
330
+ const prefix = index === this.selectedPickerIndex ? '▶ ' : ' ';
331
+ const color = index === this.selectedPickerIndex ? chalk.cyan : chalk.white;
332
+ this.renderer.addLine(color(`${prefix}${choice.label}`));
333
+ });
334
+ this.renderer.addLine('');
335
+ this.renderer.addLine(chalk.gray('Use arrow keys to navigate, Enter to select'));
336
+ this.renderer.setInputPrompt('');
337
+ this.renderer.render();
338
+ }
339
+ /**
340
+ * Show plan approval
341
+ */
342
+ showPlanApproval(request) {
343
+ this.planApprovalRequest = request;
344
+ this.screen = 'plan-approval';
345
+ // Add plan approval inline
346
+ this.renderer.addLine('');
347
+ this.renderer.addLine(chalk.cyan('📋 Implementation Plan'));
348
+ this.renderer.addLine('');
349
+ this.renderer.addLine(chalk.yellow('Tasks:'));
350
+ request.tasks.forEach((task, index) => {
351
+ this.renderer.addLine(chalk.white(` ${index + 1}. ${task}`));
352
+ });
353
+ this.renderer.addLine('');
354
+ this.renderer.addLine(chalk.cyan(request.question));
355
+ this.renderer.addLine('');
356
+ this.renderer.addLine(chalk.white('▶ [Y]es [N]o'));
357
+ this.renderer.setInputPrompt('');
358
+ this.renderer.render();
359
+ }
360
+ /**
361
+ * Render chat screen
362
+ */
363
+ renderChatScreen() {
364
+ // Don't clear lines or re-render banner - just update what's needed
365
+ this.renderer.setInputPrompt('> ');
366
+ this.updateStatusBar();
367
+ this.renderer.render();
368
+ }
369
+ /**
370
+ * Get tool emoji
371
+ */
372
+ getToolEmoji(toolName) {
373
+ const emojis = {
374
+ read_file: '📖',
375
+ write_file: '✍️',
376
+ edit_file: '✏️',
377
+ list_directory: '📁',
378
+ execute_command: '⚡',
379
+ grep_search: '🔍',
380
+ web_search: '🌐',
381
+ fetch_url: '📡'
382
+ };
383
+ return emojis[toolName] || '🔧';
384
+ }
385
+ /**
386
+ * Get tool label
387
+ */
388
+ getToolLabel(toolName) {
389
+ const labels = {
390
+ read_file: 'Reading file',
391
+ write_file: 'Writing file',
392
+ edit_file: 'Editing file',
393
+ list_directory: 'Listing directory',
394
+ execute_command: 'Executing command',
395
+ grep_search: 'Searching files',
396
+ web_search: 'Searching web',
397
+ fetch_url: 'Fetching URL'
398
+ };
399
+ return labels[toolName] || 'Executing';
400
+ }
401
+ /**
402
+ * Format timestamp
403
+ */
404
+ formatTime(date) {
405
+ return date.toLocaleTimeString('en-US', {
406
+ hour: 'numeric',
407
+ minute: '2-digit',
408
+ hour12: true
409
+ });
410
+ }
411
+ /**
412
+ * Set callbacks
413
+ */
414
+ setOnMessage(callback) {
415
+ this.onMessageCallback = callback;
416
+ }
417
+ setOnPickerSelection(callback) {
418
+ this.onPickerSelectionCallback = callback;
419
+ }
420
+ setOnToggleAutoAccept(callback) {
421
+ this.onToggleAutoAcceptCallback = callback;
422
+ }
423
+ /**
424
+ * Cleanup
425
+ */
426
+ cleanup() {
427
+ this.renderer.cleanup();
428
+ }
429
+ }
430
+ //# sourceMappingURL=TerminalUI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerminalUI.js","sourceRoot":"","sources":["../../../src/ui/terminal/TerminalUI.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ export type Role = 'user' | 'assistant' | 'system' | 'tool';
2
+ export interface ChatEntry {
3
+ id: string;
4
+ role: Role;
5
+ text?: string;
6
+ timestamp: Date;
7
+ tool?: {
8
+ name: string;
9
+ status: 'executing' | 'completed' | 'error';
10
+ result?: string;
11
+ error?: string;
12
+ arguments?: Record<string, any>;
13
+ };
14
+ }
15
+ export interface ToolLive {
16
+ id: string;
17
+ name: string;
18
+ status: 'executing' | 'completed' | 'error';
19
+ result?: string;
20
+ error?: string;
21
+ arguments?: Record<string, any>;
22
+ }
23
+ export declare class VirtualChatBuffer {
24
+ finalized: ChatEntry[];
25
+ live: Map<string, ToolLive>;
26
+ appendUser(text: string): void;
27
+ appendAssistant(text: string): void;
28
+ startTool(id: string, name: string, args?: Record<string, any>): void;
29
+ updateTool(id: string, patch: Partial<ToolLive>): void;
30
+ finalizeTool(id: string, status: 'completed' | 'error', result?: string, error?: string): void;
31
+ }
32
+ //# sourceMappingURL=VirtualChatBuffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VirtualChatBuffer.d.ts","sourceRoot":"","sources":["../../../src/ui/terminal/VirtualChatBuffer.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE5D,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;IAChB,IAAI,CAAC,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,OAAO,CAAC;QAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACjC,CAAC;CACH;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,OAAO,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACjC;AAED,qBAAa,iBAAiB;IAC5B,SAAS,EAAE,SAAS,EAAE,CAAM;IAC5B,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAa;IAExC,UAAU,CAAC,IAAI,EAAE,MAAM;IAIvB,eAAe,CAAC,IAAI,EAAE,MAAM;IAI5B,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAI9D,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;IAM/C,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;CAiBxF"}
@@ -0,0 +1,37 @@
1
+ export class VirtualChatBuffer {
2
+ finalized = [];
3
+ live = new Map();
4
+ appendUser(text) {
5
+ this.finalized.push({ id: `user-${Date.now()}-${Math.random()}`, role: 'user', text, timestamp: new Date() });
6
+ }
7
+ appendAssistant(text) {
8
+ this.finalized.push({ id: `assistant-${Date.now()}-${Math.random()}`, role: 'assistant', text, timestamp: new Date() });
9
+ }
10
+ startTool(id, name, args) {
11
+ this.live.set(id, { id, name, status: 'executing', arguments: args });
12
+ }
13
+ updateTool(id, patch) {
14
+ const cur = this.live.get(id);
15
+ if (!cur)
16
+ return;
17
+ this.live.set(id, { ...cur, ...patch });
18
+ }
19
+ finalizeTool(id, status, result, error) {
20
+ const cur = this.live.get(id);
21
+ const entry = {
22
+ id: `tool-${id}-${Date.now()}`,
23
+ role: 'tool',
24
+ timestamp: new Date(),
25
+ tool: {
26
+ name: cur?.name || id,
27
+ status,
28
+ result,
29
+ error,
30
+ arguments: cur?.arguments,
31
+ },
32
+ };
33
+ this.finalized.push(entry);
34
+ this.live.delete(id);
35
+ }
36
+ }
37
+ //# sourceMappingURL=VirtualChatBuffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VirtualChatBuffer.js","sourceRoot":"","sources":["../../../src/ui/terminal/VirtualChatBuffer.ts"],"names":[],"mappings":"AA2BA,MAAM,OAAO,iBAAiB;IAC5B,SAAS,GAAgB,EAAE,CAAC;IAC5B,IAAI,GAA0B,IAAI,GAAG,EAAE,CAAC;IAExC,UAAU,CAAC,IAAY;QACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;IAChH,CAAC;IAED,eAAe,CAAC,IAAY;QAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;IAC1H,CAAC;IAED,SAAS,CAAC,EAAU,EAAE,IAAY,EAAE,IAA0B;QAC5D,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,UAAU,CAAC,EAAU,EAAE,KAAwB;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,YAAY,CAAC,EAAU,EAAE,MAA6B,EAAE,MAAe,EAAE,KAAc;QACrF,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAc;YACvB,EAAE,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;YAC9B,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,IAAI,EAAE;gBACJ,IAAI,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE;gBACrB,MAAM;gBACN,MAAM;gBACN,KAAK;gBACL,SAAS,EAAE,GAAG,EAAE,SAAS;aAC1B;SACF,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,117 @@
1
+ export declare const term: any;
2
+ export declare let screenBuffer: any;
3
+ export declare function ensureScreenBuffer(): any;
4
+ export declare const colors: {
5
+ primary: {
6
+ r: number;
7
+ g: number;
8
+ b: number;
9
+ };
10
+ success: {
11
+ r: number;
12
+ g: number;
13
+ b: number;
14
+ };
15
+ error: {
16
+ r: number;
17
+ g: number;
18
+ b: number;
19
+ };
20
+ warning: {
21
+ r: number;
22
+ g: number;
23
+ b: number;
24
+ };
25
+ border: {
26
+ r: number;
27
+ g: number;
28
+ b: number;
29
+ };
30
+ dimmed: {
31
+ r: number;
32
+ g: number;
33
+ b: number;
34
+ };
35
+ text: {
36
+ r: number;
37
+ g: number;
38
+ b: number;
39
+ };
40
+ lightGreen: {
41
+ r: number;
42
+ g: number;
43
+ b: number;
44
+ };
45
+ lightRed: {
46
+ r: number;
47
+ g: number;
48
+ b: number;
49
+ };
50
+ lightGray: {
51
+ r: number;
52
+ g: number;
53
+ b: number;
54
+ };
55
+ };
56
+ export declare const borders: {
57
+ rounded: {
58
+ topLeft: string;
59
+ topRight: string;
60
+ bottomLeft: string;
61
+ bottomRight: string;
62
+ horizontal: string;
63
+ vertical: string;
64
+ };
65
+ single: {
66
+ topLeft: string;
67
+ topRight: string;
68
+ bottomLeft: string;
69
+ bottomRight: string;
70
+ horizontal: string;
71
+ vertical: string;
72
+ };
73
+ double: {
74
+ topLeft: string;
75
+ topRight: string;
76
+ bottomLeft: string;
77
+ bottomRight: string;
78
+ horizontal: string;
79
+ vertical: string;
80
+ };
81
+ };
82
+ export declare function createColorAttr(color: {
83
+ r: number;
84
+ g: number;
85
+ b: number;
86
+ }, bold?: boolean, dim?: boolean): {
87
+ color: [number, number, number];
88
+ bgColor: "default";
89
+ bold: boolean;
90
+ dim: boolean;
91
+ };
92
+ export interface BoxOptions {
93
+ x: number;
94
+ y: number;
95
+ width: number;
96
+ height: number;
97
+ borderStyle?: 'rounded' | 'single' | 'double';
98
+ borderColor?: {
99
+ r: number;
100
+ g: number;
101
+ b: number;
102
+ };
103
+ title?: string;
104
+ titleColor?: {
105
+ r: number;
106
+ g: number;
107
+ b: number;
108
+ };
109
+ }
110
+ export declare function drawBox(options: BoxOptions): void;
111
+ export declare function clearRegion(x: number, y: number, width: number, height: number): void;
112
+ export declare function wrapText(text: string, maxWidth: number): string[];
113
+ export declare function truncate(text: string, maxLength: number): string;
114
+ export declare function pad(text: string, length: number, char?: string, align?: 'left' | 'right' | 'center'): string;
115
+ export declare function initializeTerminal(): () => void;
116
+ export declare function render(): void;
117
+ //# sourceMappingURL=terminal-kit-base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-kit-base.d.ts","sourceRoot":"","sources":["../../src/ui/terminal-kit-base.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,IAAI,KAAoB,CAAC;AAGtC,eAAO,IAAI,YAAY,EAAE,GAAU,CAAC;AAGpC,wBAAgB,kBAAkB,QAajC;AAGD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAclB,CAAC;AAGF,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;CA8BnB,CAAC;AAGF,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,UAAQ,EAAE,GAAG,UAAQ;WAE3D,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;;;;EAKjE;AAGD,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC9C,WAAW,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClD;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,UAAU,QA0C1C;AAGD,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAS9E;AAGD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAgBjE;AAGD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAGhE;AAGD,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,SAAM,EAAE,KAAK,GAAE,MAAM,GAAG,OAAO,GAAG,QAAiB,GAAG,MAAM,CAejH;AAGD,wBAAgB,kBAAkB,eA2BjC;AAGD,wBAAgB,MAAM,SAMrB"}