@yeshwanthyk/coding-agent 0.3.0 → 0.3.3

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 (379) hide show
  1. package/README.md +8 -6
  2. package/dist/adapters/acp/index.d.ts +10 -0
  3. package/dist/adapters/acp/index.d.ts.map +1 -0
  4. package/dist/adapters/acp/index.js +250 -0
  5. package/dist/adapters/acp/index.js.map +1 -0
  6. package/dist/adapters/acp/protocol.d.ts +171 -0
  7. package/dist/adapters/acp/protocol.d.ts.map +1 -0
  8. package/dist/adapters/acp/protocol.js +25 -0
  9. package/dist/adapters/acp/protocol.js.map +1 -0
  10. package/dist/adapters/acp/session.d.ts +33 -0
  11. package/dist/adapters/acp/session.d.ts.map +1 -0
  12. package/dist/adapters/acp/session.js +216 -0
  13. package/dist/adapters/acp/session.js.map +1 -0
  14. package/dist/adapters/acp/updates.d.ts +17 -0
  15. package/dist/adapters/acp/updates.d.ts.map +1 -0
  16. package/dist/adapters/acp/updates.js +62 -0
  17. package/dist/adapters/acp/updates.js.map +1 -0
  18. package/dist/adapters/cli/headless.d.ts +7 -0
  19. package/dist/adapters/cli/headless.d.ts.map +1 -0
  20. package/dist/adapters/cli/headless.js +93 -0
  21. package/dist/adapters/cli/headless.js.map +1 -0
  22. package/dist/adapters/cli/validate.d.ts +3 -0
  23. package/dist/adapters/cli/validate.d.ts.map +1 -0
  24. package/dist/adapters/cli/validate.js +40 -0
  25. package/dist/adapters/cli/validate.js.map +1 -0
  26. package/dist/adapters/tui/app.d.ts +8 -0
  27. package/dist/adapters/tui/app.d.ts.map +1 -0
  28. package/dist/adapters/tui/app.jsx +25 -0
  29. package/dist/adapters/tui/app.jsx.map +1 -0
  30. package/dist/agent-events.d.ts +63 -0
  31. package/dist/agent-events.d.ts.map +1 -0
  32. package/dist/agent-events.js +510 -0
  33. package/dist/agent-events.js.map +1 -0
  34. package/dist/args.d.ts +18 -0
  35. package/dist/args.d.ts.map +1 -0
  36. package/dist/args.js +87 -0
  37. package/dist/args.js.map +1 -0
  38. package/dist/autocomplete-commands.d.ts +26 -0
  39. package/dist/autocomplete-commands.d.ts.map +1 -0
  40. package/dist/autocomplete-commands.js +82 -0
  41. package/dist/autocomplete-commands.js.map +1 -0
  42. package/dist/commands.d.ts +10 -0
  43. package/dist/commands.d.ts.map +1 -0
  44. package/dist/commands.js +17 -0
  45. package/dist/commands.js.map +1 -0
  46. package/dist/compact-handler.d.ts +42 -0
  47. package/dist/compact-handler.d.ts.map +1 -0
  48. package/dist/compact-handler.js +211 -0
  49. package/dist/compact-handler.js.map +1 -0
  50. package/dist/components/Footer.d.ts +9 -0
  51. package/dist/components/Footer.d.ts.map +1 -0
  52. package/dist/components/Footer.jsx +36 -0
  53. package/dist/components/Footer.jsx.map +1 -0
  54. package/dist/components/Header.d.ts +23 -0
  55. package/dist/components/Header.d.ts.map +1 -0
  56. package/dist/components/Header.jsx +174 -0
  57. package/dist/components/Header.jsx.map +1 -0
  58. package/dist/components/MessageList.d.ts +19 -0
  59. package/dist/components/MessageList.d.ts.map +1 -0
  60. package/dist/components/MessageList.jsx +237 -0
  61. package/dist/components/MessageList.jsx.map +1 -0
  62. package/dist/config.d.ts +2 -0
  63. package/dist/config.d.ts.map +1 -0
  64. package/dist/config.js +2 -0
  65. package/dist/config.js.map +1 -0
  66. package/dist/domain/commands/builtin/clear.d.ts +3 -0
  67. package/dist/domain/commands/builtin/clear.d.ts.map +1 -0
  68. package/dist/domain/commands/builtin/clear.js +13 -0
  69. package/dist/domain/commands/builtin/clear.js.map +1 -0
  70. package/dist/domain/commands/builtin/compact.d.ts +3 -0
  71. package/dist/domain/commands/builtin/compact.d.ts.map +1 -0
  72. package/dist/domain/commands/builtin/compact.js +84 -0
  73. package/dist/domain/commands/builtin/compact.js.map +1 -0
  74. package/dist/domain/commands/builtin/conceal.d.ts +3 -0
  75. package/dist/domain/commands/builtin/conceal.d.ts.map +1 -0
  76. package/dist/domain/commands/builtin/conceal.js +8 -0
  77. package/dist/domain/commands/builtin/conceal.js.map +1 -0
  78. package/dist/domain/commands/builtin/diffwrap.d.ts +3 -0
  79. package/dist/domain/commands/builtin/diffwrap.d.ts.map +1 -0
  80. package/dist/domain/commands/builtin/diffwrap.js +8 -0
  81. package/dist/domain/commands/builtin/diffwrap.js.map +1 -0
  82. package/dist/domain/commands/builtin/editor.d.ts +3 -0
  83. package/dist/domain/commands/builtin/editor.d.ts.map +1 -0
  84. package/dist/domain/commands/builtin/editor.js +22 -0
  85. package/dist/domain/commands/builtin/editor.js.map +1 -0
  86. package/dist/domain/commands/builtin/exit.d.ts +3 -0
  87. package/dist/domain/commands/builtin/exit.d.ts.map +1 -0
  88. package/dist/domain/commands/builtin/exit.js +14 -0
  89. package/dist/domain/commands/builtin/exit.js.map +1 -0
  90. package/dist/domain/commands/builtin/followup.d.ts +3 -0
  91. package/dist/domain/commands/builtin/followup.d.ts.map +1 -0
  92. package/dist/domain/commands/builtin/followup.js +20 -0
  93. package/dist/domain/commands/builtin/followup.js.map +1 -0
  94. package/dist/domain/commands/builtin/index.d.ts +2 -0
  95. package/dist/domain/commands/builtin/index.d.ts.map +1 -0
  96. package/dist/domain/commands/builtin/index.js +29 -0
  97. package/dist/domain/commands/builtin/index.js.map +1 -0
  98. package/dist/domain/commands/builtin/login.d.ts +3 -0
  99. package/dist/domain/commands/builtin/login.d.ts.map +1 -0
  100. package/dist/domain/commands/builtin/login.js +92 -0
  101. package/dist/domain/commands/builtin/login.js.map +1 -0
  102. package/dist/domain/commands/builtin/model.d.ts +3 -0
  103. package/dist/domain/commands/builtin/model.d.ts.map +1 -0
  104. package/dist/domain/commands/builtin/model.js +53 -0
  105. package/dist/domain/commands/builtin/model.js.map +1 -0
  106. package/dist/domain/commands/builtin/status.d.ts +3 -0
  107. package/dist/domain/commands/builtin/status.d.ts.map +1 -0
  108. package/dist/domain/commands/builtin/status.js +30 -0
  109. package/dist/domain/commands/builtin/status.js.map +1 -0
  110. package/dist/domain/commands/builtin/steer.d.ts +3 -0
  111. package/dist/domain/commands/builtin/steer.d.ts.map +1 -0
  112. package/dist/domain/commands/builtin/steer.js +20 -0
  113. package/dist/domain/commands/builtin/steer.js.map +1 -0
  114. package/dist/domain/commands/builtin/theme.d.ts +3 -0
  115. package/dist/domain/commands/builtin/theme.d.ts.map +1 -0
  116. package/dist/domain/commands/builtin/theme.js +19 -0
  117. package/dist/domain/commands/builtin/theme.js.map +1 -0
  118. package/dist/domain/commands/builtin/thinking.d.ts +3 -0
  119. package/dist/domain/commands/builtin/thinking.d.ts.map +1 -0
  120. package/dist/domain/commands/builtin/thinking.js +16 -0
  121. package/dist/domain/commands/builtin/thinking.js.map +1 -0
  122. package/dist/domain/commands/helpers.d.ts +7 -0
  123. package/dist/domain/commands/helpers.d.ts.map +1 -0
  124. package/dist/domain/commands/helpers.js +34 -0
  125. package/dist/domain/commands/helpers.js.map +1 -0
  126. package/dist/domain/commands/registry.d.ts +10 -0
  127. package/dist/domain/commands/registry.d.ts.map +1 -0
  128. package/dist/domain/commands/registry.js +36 -0
  129. package/dist/domain/commands/registry.js.map +1 -0
  130. package/dist/domain/commands/types.d.ts +62 -0
  131. package/dist/domain/commands/types.d.ts.map +1 -0
  132. package/dist/domain/commands/types.js +2 -0
  133. package/dist/domain/commands/types.js.map +1 -0
  134. package/dist/domain/messaging/content.d.ts +37 -0
  135. package/dist/domain/messaging/content.d.ts.map +1 -0
  136. package/dist/domain/messaging/content.js +103 -0
  137. package/dist/domain/messaging/content.js.map +1 -0
  138. package/dist/editor.d.ts +26 -0
  139. package/dist/editor.d.ts.map +1 -0
  140. package/dist/editor.js +81 -0
  141. package/dist/editor.js.map +1 -0
  142. package/dist/extensibility/schema.d.ts +2 -0
  143. package/dist/extensibility/schema.d.ts.map +1 -0
  144. package/{src/extensibility/schema.ts → dist/extensibility/schema.js} +2 -1
  145. package/dist/extensibility/schema.js.map +1 -0
  146. package/dist/extensibility/validation.d.ts +2 -0
  147. package/dist/extensibility/validation.d.ts.map +1 -0
  148. package/{src/extensibility/validation.ts → dist/extensibility/validation.js} +2 -1
  149. package/dist/extensibility/validation.js.map +1 -0
  150. package/dist/hooks/index.d.ts +2 -0
  151. package/dist/hooks/index.d.ts.map +1 -0
  152. package/dist/hooks/index.js +2 -0
  153. package/dist/hooks/index.js.map +1 -0
  154. package/dist/hooks/useAgentEvents.d.ts +8 -0
  155. package/dist/hooks/useAgentEvents.d.ts.map +1 -0
  156. package/dist/hooks/useAgentEvents.js +22 -0
  157. package/dist/hooks/useAgentEvents.js.map +1 -0
  158. package/dist/hooks/useEditorBridge.d.ts +20 -0
  159. package/dist/hooks/useEditorBridge.d.ts.map +1 -0
  160. package/dist/hooks/useEditorBridge.js +80 -0
  161. package/dist/hooks/useEditorBridge.js.map +1 -0
  162. package/dist/hooks/useGitStatus.d.ts +2 -0
  163. package/dist/hooks/useGitStatus.d.ts.map +1 -0
  164. package/dist/hooks/useGitStatus.js +26 -0
  165. package/dist/hooks/useGitStatus.js.map +1 -0
  166. package/dist/hooks/usePromptQueue.d.ts +2 -0
  167. package/dist/hooks/usePromptQueue.d.ts.map +1 -0
  168. package/dist/hooks/usePromptQueue.js +2 -0
  169. package/dist/hooks/usePromptQueue.js.map +1 -0
  170. package/dist/hooks/useSessionController.d.ts +2 -0
  171. package/dist/hooks/useSessionController.d.ts.map +1 -0
  172. package/dist/hooks/useSessionController.js +2 -0
  173. package/dist/hooks/useSessionController.js.map +1 -0
  174. package/dist/hooks/useSpinner.d.ts +4 -0
  175. package/dist/hooks/useSpinner.d.ts.map +1 -0
  176. package/dist/hooks/useSpinner.js +25 -0
  177. package/dist/hooks/useSpinner.js.map +1 -0
  178. package/dist/hooks/useToastManager.d.ts +6 -0
  179. package/dist/hooks/useToastManager.d.ts.map +1 -0
  180. package/dist/hooks/useToastManager.js +22 -0
  181. package/dist/hooks/useToastManager.js.map +1 -0
  182. package/dist/index.d.ts +3 -0
  183. package/dist/index.d.ts.map +1 -0
  184. package/dist/index.js +156 -0
  185. package/dist/index.js.map +1 -0
  186. package/dist/keyboard-handler.d.ts +30 -0
  187. package/dist/keyboard-handler.d.ts.map +1 -0
  188. package/dist/keyboard-handler.js +96 -0
  189. package/dist/keyboard-handler.js.map +1 -0
  190. package/dist/profiler.d.ts +2 -0
  191. package/dist/profiler.d.ts.map +1 -0
  192. package/dist/profiler.js +41 -0
  193. package/dist/profiler.js.map +1 -0
  194. package/dist/runtime/context.d.ts +8 -0
  195. package/dist/runtime/context.d.ts.map +1 -0
  196. package/dist/runtime/context.jsx +11 -0
  197. package/dist/runtime/context.jsx.map +1 -0
  198. package/dist/runtime/factory.d.ts +12 -0
  199. package/dist/runtime/factory.d.ts.map +1 -0
  200. package/dist/runtime/factory.js +37 -0
  201. package/dist/runtime/factory.js.map +1 -0
  202. package/dist/runtime/git/git-info.d.ts +3 -0
  203. package/dist/runtime/git/git-info.d.ts.map +1 -0
  204. package/dist/runtime/git/git-info.js +29 -0
  205. package/dist/runtime/git/git-info.js.map +1 -0
  206. package/dist/runtime/session/session-controller.d.ts +48 -0
  207. package/dist/runtime/session/session-controller.d.ts.map +1 -0
  208. package/dist/runtime/session/session-controller.js +159 -0
  209. package/dist/runtime/session/session-controller.js.map +1 -0
  210. package/dist/session-manager.d.ts +2 -0
  211. package/dist/session-manager.d.ts.map +1 -0
  212. package/dist/session-manager.js +2 -0
  213. package/dist/session-manager.js.map +1 -0
  214. package/dist/session-picker.d.ts +6 -0
  215. package/dist/session-picker.d.ts.map +1 -0
  216. package/dist/session-picker.jsx +96 -0
  217. package/dist/session-picker.jsx.map +1 -0
  218. package/dist/shell-runner.d.ts +21 -0
  219. package/dist/shell-runner.d.ts.map +1 -0
  220. package/dist/shell-runner.js +106 -0
  221. package/dist/shell-runner.js.map +1 -0
  222. package/dist/syntax-highlighting.d.ts +4 -0
  223. package/dist/syntax-highlighting.d.ts.map +1 -0
  224. package/dist/syntax-highlighting.js +108 -0
  225. package/dist/syntax-highlighting.js.map +1 -0
  226. package/dist/theme-names.d.ts +7 -0
  227. package/dist/theme-names.d.ts.map +1 -0
  228. package/dist/theme-names.js +38 -0
  229. package/dist/theme-names.js.map +1 -0
  230. package/dist/tool-ui-contracts.d.ts +30 -0
  231. package/dist/tool-ui-contracts.d.ts.map +1 -0
  232. package/dist/tool-ui-contracts.js +53 -0
  233. package/dist/tool-ui-contracts.js.map +1 -0
  234. package/dist/tui-open-rendering.d.ts +37 -0
  235. package/dist/tui-open-rendering.d.ts.map +1 -0
  236. package/dist/tui-open-rendering.jsx +462 -0
  237. package/dist/tui-open-rendering.jsx.map +1 -0
  238. package/dist/types.d.ts +117 -0
  239. package/dist/types.d.ts.map +1 -0
  240. package/dist/types.js +4 -0
  241. package/dist/types.js.map +1 -0
  242. package/dist/ui/app-shell/TuiApp.d.ts +6 -0
  243. package/dist/ui/app-shell/TuiApp.d.ts.map +1 -0
  244. package/dist/ui/app-shell/TuiApp.jsx +480 -0
  245. package/dist/ui/app-shell/TuiApp.jsx.map +1 -0
  246. package/dist/ui/clipboard/osc52.d.ts +2 -0
  247. package/dist/ui/clipboard/osc52.d.ts.map +1 -0
  248. package/dist/ui/clipboard/osc52.js +19 -0
  249. package/dist/ui/clipboard/osc52.js.map +1 -0
  250. package/dist/ui/components/modals/ConfirmModal.d.ts +8 -0
  251. package/dist/ui/components/modals/ConfirmModal.d.ts.map +1 -0
  252. package/dist/ui/components/modals/ConfirmModal.jsx +39 -0
  253. package/dist/ui/components/modals/ConfirmModal.jsx.map +1 -0
  254. package/dist/ui/components/modals/EditorModal.d.ts +8 -0
  255. package/dist/ui/components/modals/EditorModal.d.ts.map +1 -0
  256. package/dist/ui/components/modals/EditorModal.jsx +23 -0
  257. package/dist/ui/components/modals/EditorModal.jsx.map +1 -0
  258. package/dist/ui/components/modals/InputModal.d.ts +8 -0
  259. package/dist/ui/components/modals/InputModal.d.ts.map +1 -0
  260. package/dist/ui/components/modals/InputModal.jsx +15 -0
  261. package/dist/ui/components/modals/InputModal.jsx.map +1 -0
  262. package/dist/ui/components/modals/ModalContainer.d.ts +8 -0
  263. package/dist/ui/components/modals/ModalContainer.d.ts.map +1 -0
  264. package/dist/ui/components/modals/ModalContainer.jsx +34 -0
  265. package/dist/ui/components/modals/ModalContainer.jsx.map +1 -0
  266. package/dist/ui/components/modals/SelectModal.d.ts +8 -0
  267. package/dist/ui/components/modals/SelectModal.d.ts.map +1 -0
  268. package/dist/ui/components/modals/SelectModal.jsx +32 -0
  269. package/dist/ui/components/modals/SelectModal.jsx.map +1 -0
  270. package/{src/ui/components/modals/index.ts → dist/ui/components/modals/index.d.ts} +5 -4
  271. package/dist/ui/components/modals/index.d.ts.map +1 -0
  272. package/dist/ui/components/modals/index.js +5 -0
  273. package/dist/ui/components/modals/index.js.map +1 -0
  274. package/dist/ui/features/composer/Composer.d.ts +16 -0
  275. package/dist/ui/features/composer/Composer.d.ts.map +1 -0
  276. package/dist/ui/features/composer/Composer.jsx +39 -0
  277. package/dist/ui/features/composer/Composer.jsx.map +1 -0
  278. package/dist/ui/features/composer/SlashCommandHandler.d.ts +14 -0
  279. package/dist/ui/features/composer/SlashCommandHandler.d.ts.map +1 -0
  280. package/dist/ui/features/composer/SlashCommandHandler.js +43 -0
  281. package/dist/ui/features/composer/SlashCommandHandler.js.map +1 -0
  282. package/dist/ui/features/composer/keyboard.d.ts +3 -0
  283. package/dist/ui/features/composer/keyboard.d.ts.map +1 -0
  284. package/dist/ui/features/composer/keyboard.js +3 -0
  285. package/dist/ui/features/composer/keyboard.js.map +1 -0
  286. package/dist/ui/features/main-view/MainView.d.ts +52 -0
  287. package/dist/ui/features/main-view/MainView.d.ts.map +1 -0
  288. package/dist/ui/features/main-view/MainView.jsx +269 -0
  289. package/dist/ui/features/main-view/MainView.jsx.map +1 -0
  290. package/dist/ui/features/message-pane/MessagePane.d.ts +15 -0
  291. package/dist/ui/features/message-pane/MessagePane.d.ts.map +1 -0
  292. package/dist/ui/features/message-pane/MessagePane.jsx +7 -0
  293. package/dist/ui/features/message-pane/MessagePane.jsx.map +1 -0
  294. package/dist/ui/hooks/useModals.d.ts +35 -0
  295. package/dist/ui/hooks/useModals.d.ts.map +1 -0
  296. package/dist/ui/hooks/useModals.js +36 -0
  297. package/dist/ui/hooks/useModals.js.map +1 -0
  298. package/dist/ui/state/app-store.d.ts +42 -0
  299. package/dist/ui/state/app-store.d.ts.map +1 -0
  300. package/dist/ui/state/app-store.js +28 -0
  301. package/dist/ui/state/app-store.js.map +1 -0
  302. package/dist/utils.d.ts +3 -0
  303. package/dist/utils.d.ts.map +1 -0
  304. package/dist/utils.js +3 -0
  305. package/dist/utils.js.map +1 -0
  306. package/package.json +20 -7
  307. package/src/adapters/acp/index.ts +0 -305
  308. package/src/adapters/acp/protocol.ts +0 -191
  309. package/src/adapters/acp/session.ts +0 -289
  310. package/src/adapters/acp/updates.ts +0 -96
  311. package/src/adapters/cli/headless.ts +0 -112
  312. package/src/adapters/cli/validate.ts +0 -50
  313. package/src/adapters/tui/app.tsx +0 -39
  314. package/src/agent-events.ts +0 -671
  315. package/src/args.ts +0 -102
  316. package/src/autocomplete-commands.ts +0 -102
  317. package/src/commands.ts +0 -23
  318. package/src/compact-handler.ts +0 -272
  319. package/src/components/Footer.tsx +0 -49
  320. package/src/components/Header.tsx +0 -218
  321. package/src/components/MessageList.tsx +0 -380
  322. package/src/config.ts +0 -1
  323. package/src/domain/commands/builtin/clear.ts +0 -14
  324. package/src/domain/commands/builtin/compact.ts +0 -96
  325. package/src/domain/commands/builtin/conceal.ts +0 -9
  326. package/src/domain/commands/builtin/diffwrap.ts +0 -9
  327. package/src/domain/commands/builtin/editor.ts +0 -24
  328. package/src/domain/commands/builtin/exit.ts +0 -14
  329. package/src/domain/commands/builtin/followup.ts +0 -24
  330. package/src/domain/commands/builtin/index.ts +0 -29
  331. package/src/domain/commands/builtin/login.ts +0 -118
  332. package/src/domain/commands/builtin/model.ts +0 -66
  333. package/src/domain/commands/builtin/status.ts +0 -32
  334. package/src/domain/commands/builtin/steer.ts +0 -24
  335. package/src/domain/commands/builtin/theme.ts +0 -23
  336. package/src/domain/commands/builtin/thinking.ts +0 -16
  337. package/src/domain/commands/helpers.ts +0 -41
  338. package/src/domain/commands/registry.ts +0 -42
  339. package/src/domain/commands/types.ts +0 -69
  340. package/src/domain/messaging/content.ts +0 -117
  341. package/src/editor.ts +0 -103
  342. package/src/hooks/index.ts +0 -1
  343. package/src/hooks/useAgentEvents.ts +0 -28
  344. package/src/hooks/useEditorBridge.ts +0 -101
  345. package/src/hooks/useGitStatus.ts +0 -28
  346. package/src/hooks/usePromptQueue.ts +0 -7
  347. package/src/hooks/useSessionController.ts +0 -5
  348. package/src/hooks/useSpinner.ts +0 -28
  349. package/src/hooks/useToastManager.ts +0 -26
  350. package/src/index.ts +0 -188
  351. package/src/keyboard-handler.ts +0 -134
  352. package/src/profiler.ts +0 -40
  353. package/src/runtime/context.tsx +0 -16
  354. package/src/runtime/factory.ts +0 -63
  355. package/src/runtime/git/git-info.ts +0 -25
  356. package/src/runtime/session/session-controller.ts +0 -208
  357. package/src/session-manager.ts +0 -1
  358. package/src/session-picker.tsx +0 -134
  359. package/src/shell-runner.ts +0 -134
  360. package/src/syntax-highlighting.ts +0 -114
  361. package/src/theme-names.ts +0 -37
  362. package/src/tool-ui-contracts.ts +0 -77
  363. package/src/tui-open-rendering.tsx +0 -565
  364. package/src/types.ts +0 -89
  365. package/src/ui/app-shell/TuiApp.tsx +0 -586
  366. package/src/ui/clipboard/osc52.ts +0 -18
  367. package/src/ui/components/modals/ConfirmModal.tsx +0 -52
  368. package/src/ui/components/modals/EditorModal.tsx +0 -39
  369. package/src/ui/components/modals/InputModal.tsx +0 -30
  370. package/src/ui/components/modals/ModalContainer.tsx +0 -67
  371. package/src/ui/components/modals/SelectModal.tsx +0 -48
  372. package/src/ui/features/composer/Composer.tsx +0 -73
  373. package/src/ui/features/composer/SlashCommandHandler.ts +0 -58
  374. package/src/ui/features/composer/keyboard.ts +0 -3
  375. package/src/ui/features/main-view/MainView.tsx +0 -367
  376. package/src/ui/features/message-pane/MessagePane.tsx +0 -34
  377. package/src/ui/hooks/useModals.ts +0 -74
  378. package/src/ui/state/app-store.ts +0 -67
  379. package/src/utils.ts +0 -14
@@ -0,0 +1,2 @@
1
+ export declare const copyToClipboard: (text: string) => void;
2
+ //# sourceMappingURL=osc52.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"osc52.d.ts","sourceRoot":"","sources":["../../../src/ui/clipboard/osc52.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,KAAG,IAe9C,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { spawnSync } from "child_process";
2
+ export const copyToClipboard = (text) => {
3
+ const base64 = Buffer.from(text).toString("base64");
4
+ if (process.env["TMUX"]) {
5
+ process.stdout.write(`\x1bPtmux;\x1b\x1b]52;c;${base64}\x07\x1b\\`);
6
+ }
7
+ else {
8
+ process.stdout.write(`\x1b]52;c;${base64}\x07`);
9
+ }
10
+ if (process.platform === "darwin") {
11
+ try {
12
+ spawnSync("pbcopy", { input: text, encoding: "utf-8" });
13
+ }
14
+ catch {
15
+ // Ignore clipboard failures on non-macOS systems
16
+ }
17
+ }
18
+ };
19
+ //# sourceMappingURL=osc52.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"osc52.js","sourceRoot":"","sources":["../../../src/ui/clipboard/osc52.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAEzC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAQ,EAAE;IACrD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACnD,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,MAAM,YAAY,CAAC,CAAA;IACpE,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,MAAM,MAAM,CAAC,CAAA;IAChD,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACnC,IAAI,CAAC;YACJ,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;QACxD,CAAC;QAAC,MAAM,CAAC;YACR,iDAAiD;QAClD,CAAC;IACF,CAAC;AACF,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { JSX } from "solid-js";
2
+ export interface ConfirmModalProps {
3
+ title: string;
4
+ message: string;
5
+ onConfirm: (confirmed: boolean) => void;
6
+ }
7
+ export declare function ConfirmModal(props: ConfirmModalProps): JSX.Element;
8
+ //# sourceMappingURL=ConfirmModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfirmModal.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/modals/ConfirmModal.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAEnC,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAA;CACvC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAwClE"}
@@ -0,0 +1,39 @@
1
+ import { createSignal } from "solid-js";
2
+ import { useKeyboard } from "@opentui/solid";
3
+ import { Dialog, useTheme } from "@yeshwanthyk/open-tui";
4
+ export function ConfirmModal(props) {
5
+ const { theme } = useTheme();
6
+ const [selected, setSelected] = createSignal("no");
7
+ useKeyboard((e) => {
8
+ if (e.name === "left" || e.name === "h") {
9
+ setSelected("yes");
10
+ }
11
+ else if (e.name === "right" || e.name === "l") {
12
+ setSelected("no");
13
+ }
14
+ else if (e.name === "y") {
15
+ props.onConfirm(true);
16
+ }
17
+ else if (e.name === "n" || e.name === "escape") {
18
+ props.onConfirm(false);
19
+ }
20
+ else if (e.name === "return") {
21
+ props.onConfirm(selected() === "yes");
22
+ }
23
+ });
24
+ return (<Dialog open={true} title={props.title} closeOnOverlayClick={false}>
25
+ <text fg={theme.text}>{props.message}</text>
26
+ <box height={1}/>
27
+ <box flexDirection="row" gap={2}>
28
+ <text fg={selected() === "yes" ? theme.selectionFg : theme.text} bg={selected() === "yes" ? theme.selectionBg : undefined}>
29
+ {" [Y]es "}
30
+ </text>
31
+ <text fg={selected() === "no" ? theme.selectionFg : theme.text} bg={selected() === "no" ? theme.selectionBg : undefined}>
32
+ {" [N]o "}
33
+ </text>
34
+ </box>
35
+ <box height={1}/>
36
+ <text fg={theme.textMuted}>←/→ or y/n to select • Enter to confirm • Esc to cancel</text>
37
+ </Dialog>);
38
+ }
39
+ //# sourceMappingURL=ConfirmModal.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfirmModal.jsx","sourceRoot":"","sources":["../../../../src/ui/components/modals/ConfirmModal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AASxD,MAAM,UAAU,YAAY,CAAC,KAAwB;IACpD,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAA;IAC5B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,YAAY,CAAe,IAAI,CAAC,CAAA;IAEhE,WAAW,CAAC,CAAC,CAAmB,EAAE,EAAE;QACnC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACzC,WAAW,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACjD,WAAW,CAAC,IAAI,CAAC,CAAA;QAClB,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAC3B,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACtB,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClD,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAChC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,CAAA;QACtC,CAAC;IACF,CAAC,CAAC,CAAA;IAEF,OAAO,CACN,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,CAClE;GAAA,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,CAC3C;GAAA,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACf;GAAA,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAC/B;IAAA,CAAC,IAAI,CACJ,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAC1D,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAEzD;KAAA,CAAC,SAAS,CACX;IAAA,EAAE,IAAI,CACN;IAAA,CAAC,IAAI,CACJ,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CACzD,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAExD;KAAA,CAAC,QAAQ,CACV;IAAA,EAAE,IAAI,CACP;GAAA,EAAE,GAAG,CACL;GAAA,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACf;GAAA,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,uDAAuD,EAAE,IAAI,CACzF;EAAA,EAAE,MAAM,CAAC,CACT,CAAA;AACF,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { JSX } from "solid-js";
2
+ export interface EditorModalProps {
3
+ title: string;
4
+ initialText?: string;
5
+ onSubmit: (value: string | undefined) => void;
6
+ }
7
+ export declare function EditorModal(props: EditorModalProps): JSX.Element;
8
+ //# sourceMappingURL=EditorModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditorModal.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/modals/EditorModal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAEnC,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAA;CAC7C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CA4BhE"}
@@ -0,0 +1,23 @@
1
+ import { useKeyboard } from "@opentui/solid";
2
+ import { Dialog, Editor, useTheme } from "@yeshwanthyk/open-tui";
3
+ export function EditorModal(props) {
4
+ const { theme } = useTheme();
5
+ let editorRef;
6
+ useKeyboard((e) => {
7
+ if (e.name === "escape") {
8
+ props.onSubmit(undefined);
9
+ }
10
+ else if (e.name === "s" && (e.ctrl || e.meta)) {
11
+ const text = editorRef?.getText();
12
+ props.onSubmit(text);
13
+ }
14
+ });
15
+ return (<Dialog open={true} title={props.title} closeOnOverlayClick={false}>
16
+ <box height="80%" minHeight={10}>
17
+ <Editor initialValue={props.initialText} focused={true} minHeight={10} maxHeight={30} ref={(ref) => { editorRef = ref; }}/>
18
+ </box>
19
+ <box height={1}/>
20
+ <text fg={theme.textMuted}>Ctrl+S to save • Esc to cancel</text>
21
+ </Dialog>);
22
+ }
23
+ //# sourceMappingURL=EditorModal.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditorModal.jsx","sourceRoot":"","sources":["../../../../src/ui/components/modals/EditorModal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAkB,MAAM,uBAAuB,CAAA;AAShF,MAAM,UAAU,WAAW,CAAC,KAAuB;IAClD,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAA;IAC5B,IAAI,SAAgC,CAAA;IAEpC,WAAW,CAAC,CAAC,CAAmD,EAAE,EAAE;QACnE,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzB,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAC1B,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,SAAS,EAAE,OAAO,EAAE,CAAA;YACjC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACrB,CAAC;IACF,CAAC,CAAC,CAAA;IAEF,OAAO,CACN,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,CAClE;GAAA,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAC/B;IAAA,CAAC,MAAM,CACN,YAAY,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAChC,OAAO,CAAC,CAAC,IAAI,CAAC,CACd,SAAS,CAAC,CAAC,EAAE,CAAC,CACd,SAAS,CAAC,CAAC,EAAE,CAAC,CACd,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,SAAS,GAAG,GAAG,CAAA,CAAC,CAAC,CAAC,EAEpC;GAAA,EAAE,GAAG,CACL;GAAA,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACf;GAAA,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,8BAA8B,EAAE,IAAI,CAChE;EAAA,EAAE,MAAM,CAAC,CACT,CAAA;AACF,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { JSX } from "solid-js";
2
+ export interface InputModalProps {
3
+ title: string;
4
+ placeholder?: string;
5
+ onSubmit: (value: string | undefined) => void;
6
+ }
7
+ export declare function InputModal(props: InputModalProps): JSX.Element;
8
+ //# sourceMappingURL=InputModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputModal.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/modals/InputModal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAEnC,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAA;CAC7C;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CAmB9D"}
@@ -0,0 +1,15 @@
1
+ import { useKeyboard } from "@opentui/solid";
2
+ import { Dialog, Input } from "@yeshwanthyk/open-tui";
3
+ export function InputModal(props) {
4
+ useKeyboard((e) => {
5
+ if (e.name === "escape") {
6
+ props.onSubmit(undefined);
7
+ }
8
+ });
9
+ return (<Dialog open={true} title={props.title} closeOnOverlayClick={false}>
10
+ <Input placeholder={props.placeholder} focused={true} onSubmit={(value) => props.onSubmit(value || undefined)} onEscape={() => props.onSubmit(undefined)}/>
11
+ <box height={1}/>
12
+ <text>Enter to submit • Esc to cancel</text>
13
+ </Dialog>);
14
+ }
15
+ //# sourceMappingURL=InputModal.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputModal.jsx","sourceRoot":"","sources":["../../../../src/ui/components/modals/InputModal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AASrD,MAAM,UAAU,UAAU,CAAC,KAAsB;IAChD,WAAW,CAAC,CAAC,CAAmB,EAAE,EAAE;QACnC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzB,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAC1B,CAAC;IACF,CAAC,CAAC,CAAA;IAEF,OAAO,CACN,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,CAClE;GAAA,CAAC,KAAK,CACL,WAAW,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAC/B,OAAO,CAAC,CAAC,IAAI,CAAC,CACd,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC,CACxD,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAE3C;GAAA,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACf;GAAA,CAAC,IAAI,CAAC,+BAA+B,EAAE,IAAI,CAC5C;EAAA,EAAE,MAAM,CAAC,CACT,CAAA;AACF,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ModalState } from "../../hooks/useModals.js";
2
+ import type { JSX } from "solid-js";
3
+ export interface ModalContainerProps {
4
+ modalState: ModalState;
5
+ onClose: () => void;
6
+ }
7
+ export declare function ModalContainer(props: ModalContainerProps): JSX.Element;
8
+ //# sourceMappingURL=ModalContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModalContainer.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/modals/ModalContainer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAK1D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAEnC,MAAM,WAAW,mBAAmB;IACnC,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,MAAM,IAAI,CAAA;CACnB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,GAAG,CAAC,OAAO,CAqDtE"}
@@ -0,0 +1,34 @@
1
+ import { Match, Switch } from "solid-js";
2
+ import { SelectModal } from "./SelectModal.js";
3
+ import { InputModal } from "./InputModal.js";
4
+ import { ConfirmModal } from "./ConfirmModal.js";
5
+ import { EditorModal } from "./EditorModal.js";
6
+ export function ModalContainer(props) {
7
+ return (<Switch>
8
+ <Match when={props.modalState?.type === "select" && props.modalState}>
9
+ {(state) => (<SelectModal title={state().title} options={state().options} onSelect={(value) => {
10
+ state().resolve(value);
11
+ props.onClose();
12
+ }}/>)}
13
+ </Match>
14
+ <Match when={props.modalState?.type === "input" && props.modalState}>
15
+ {(state) => (<InputModal title={state().title} placeholder={state().placeholder} onSubmit={(value) => {
16
+ state().resolve(value);
17
+ props.onClose();
18
+ }}/>)}
19
+ </Match>
20
+ <Match when={props.modalState?.type === "confirm" && props.modalState}>
21
+ {(state) => (<ConfirmModal title={state().title} message={state().message} onConfirm={(confirmed) => {
22
+ state().resolve(confirmed);
23
+ props.onClose();
24
+ }}/>)}
25
+ </Match>
26
+ <Match when={props.modalState?.type === "editor" && props.modalState}>
27
+ {(state) => (<EditorModal title={state().title} initialText={state().initialText} onSubmit={(value) => {
28
+ state().resolve(value);
29
+ props.onClose();
30
+ }}/>)}
31
+ </Match>
32
+ </Switch>);
33
+ }
34
+ //# sourceMappingURL=ModalContainer.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModalContainer.jsx","sourceRoot":"","sources":["../../../../src/ui/components/modals/ModalContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAQ9C,MAAM,UAAU,cAAc,CAAC,KAA0B;IACxD,OAAO,CACN,CAAC,MAAM,CACN;GAAA,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,CACpE;IAAA,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACX,CAAC,WAAW,CACX,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CACrB,OAAO,CAAC,CAAE,KAAK,EAA4B,CAAC,OAAO,CAAC,CACpD,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;gBAClB,KAAK,EAAmD,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;gBACxE,KAAK,CAAC,OAAO,EAAE,CAAA;YAChB,CAAC,CAAC,EACD,CACF,CACF;GAAA,EAAE,KAAK,CACP;GAAA,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,CACnE;IAAA,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACX,CAAC,UAAU,CACV,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CACrB,WAAW,CAAC,CAAE,KAAK,EAA+B,CAAC,WAAW,CAAC,CAC/D,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;gBAClB,KAAK,EAAmD,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;gBACxE,KAAK,CAAC,OAAO,EAAE,CAAA;YAChB,CAAC,CAAC,EACD,CACF,CACF;GAAA,EAAE,KAAK,CACP;GAAA,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,CACrE;IAAA,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACX,CAAC,YAAY,CACZ,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CACrB,OAAO,CAAC,CAAE,KAAK,EAA0B,CAAC,OAAO,CAAC,CAClD,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE;gBACvB,KAAK,EAAwC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;gBACjE,KAAK,CAAC,OAAO,EAAE,CAAA;YAChB,CAAC,CAAC,EACD,CACF,CACF;GAAA,EAAE,KAAK,CACP;GAAA,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,CACpE;IAAA,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACX,CAAC,WAAW,CACX,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CACrB,WAAW,CAAC,CAAE,KAAK,EAA+B,CAAC,WAAW,CAAC,CAC/D,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;gBAClB,KAAK,EAAmD,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;gBACxE,KAAK,CAAC,OAAO,EAAE,CAAA;YAChB,CAAC,CAAC,EACD,CACF,CACF;GAAA,EAAE,KAAK,CACR;EAAA,EAAE,MAAM,CAAC,CACT,CAAA;AACF,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type JSX } from "solid-js";
2
+ export interface SelectModalProps {
3
+ title: string;
4
+ options: string[];
5
+ onSelect: (value: string | undefined) => void;
6
+ }
7
+ export declare function SelectModal(props: SelectModalProps): JSX.Element;
8
+ //# sourceMappingURL=SelectModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectModal.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/modals/SelectModal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,GAAG,EAAE,MAAM,UAAU,CAAA;AAIjD,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAA;CAC7C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAqChE"}
@@ -0,0 +1,32 @@
1
+ import { createSignal } from "solid-js";
2
+ import { useKeyboard } from "@opentui/solid";
3
+ import { Dialog, SelectList } from "@yeshwanthyk/open-tui";
4
+ export function SelectModal(props) {
5
+ const [selectedIndex, setSelectedIndex] = createSignal(0);
6
+ let listRef;
7
+ const items = props.options.map((opt) => ({
8
+ value: opt,
9
+ label: opt,
10
+ }));
11
+ useKeyboard((e) => {
12
+ if (e.name === "up") {
13
+ listRef?.moveUp();
14
+ }
15
+ else if (e.name === "down") {
16
+ listRef?.moveDown();
17
+ }
18
+ else if (e.name === "return") {
19
+ const item = listRef?.getSelectedItem();
20
+ props.onSelect(item?.value);
21
+ }
22
+ else if (e.name === "escape") {
23
+ props.onSelect(undefined);
24
+ }
25
+ });
26
+ return (<Dialog open={true} title={props.title} closeOnOverlayClick={false}>
27
+ <SelectList items={items} selectedIndex={selectedIndex()} onSelectionChange={(_, index) => setSelectedIndex(index)} onSelect={(item) => props.onSelect(item.value)} onCancel={() => props.onSelect(undefined)} maxVisible={10} ref={(ref) => { listRef = ref; }}/>
28
+ <box height={1}/>
29
+ <text>↑/↓ navigate • Enter select • Esc cancel</text>
30
+ </Dialog>);
31
+ }
32
+ //# sourceMappingURL=SelectModal.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectModal.jsx","sourceRoot":"","sources":["../../../../src/ui/components/modals/SelectModal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAY,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAuC,MAAM,uBAAuB,CAAA;AAQ/F,MAAM,UAAU,WAAW,CAAC,KAAuB;IAClD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;IACzD,IAAI,OAAkC,CAAA;IAEtC,MAAM,KAAK,GAAiB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACvD,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;KACV,CAAC,CAAC,CAAA;IAEH,WAAW,CAAC,CAAC,CAAmB,EAAE,EAAE;QACnC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,EAAE,MAAM,EAAE,CAAA;QAClB,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,EAAE,QAAQ,EAAE,CAAA;QACpB,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,OAAO,EAAE,eAAe,EAAE,CAAA;YACvC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC5B,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAChC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAC1B,CAAC;IACF,CAAC,CAAC,CAAA;IAEF,OAAO,CACN,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,CAClE;GAAA,CAAC,UAAU,CACV,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,aAAa,CAAC,CAAC,aAAa,EAAE,CAAC,CAC/B,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CACzD,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAC/C,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAC1C,UAAU,CAAC,CAAC,EAAE,CAAC,CACf,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,GAAG,GAAG,CAAA,CAAC,CAAC,CAAC,EAEjC;GAAA,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACf;GAAA,CAAC,IAAI,CAAC,wCAAwC,EAAE,IAAI,CACrD;EAAA,EAAE,MAAM,CAAC,CACT,CAAA;AACF,CAAC"}
@@ -1,4 +1,5 @@
1
- export { SelectModal, type SelectModalProps } from "./SelectModal.js"
2
- export { InputModal, type InputModalProps } from "./InputModal.js"
3
- export { ConfirmModal, type ConfirmModalProps } from "./ConfirmModal.js"
4
- export { EditorModal, type EditorModalProps } from "./EditorModal.js"
1
+ export { SelectModal, type SelectModalProps } from "./SelectModal.js";
2
+ export { InputModal, type InputModalProps } from "./InputModal.js";
3
+ export { ConfirmModal, type ConfirmModalProps } from "./ConfirmModal.js";
4
+ export { EditorModal, type EditorModalProps } from "./EditorModal.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/modals/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,5 @@
1
+ export { SelectModal } from "./SelectModal.js";
2
+ export { InputModal } from "./InputModal.js";
3
+ export { ConfirmModal } from "./ConfirmModal.js";
4
+ export { EditorModal } from "./EditorModal.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ui/components/modals/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAyB,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAE,YAAY,EAA0B,MAAM,mBAAmB,CAAA;AACxE,OAAO,EAAE,WAAW,EAAyB,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { TextareaRenderable, type KeyEvent } from "@opentui/core";
2
+ import { type AutocompleteItem, type Theme } from "@yeshwanthyk/open-tui";
3
+ export interface ComposerProps {
4
+ theme: Theme;
5
+ isBashMode: () => boolean;
6
+ showAutocomplete: () => boolean;
7
+ autocompleteItems: () => AutocompleteItem[];
8
+ autocompleteIndex: () => number;
9
+ textareaRef: (ref: TextareaRenderable) => void;
10
+ onContentChange: () => void;
11
+ onSubmit: () => void;
12
+ onKeyDown: (event: KeyEvent) => void;
13
+ terminalWidth: () => number;
14
+ }
15
+ export declare function Composer(props: ComposerProps): any;
16
+ //# sourceMappingURL=Composer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../../../src/ui/features/composer/Composer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAA;AAEjE,OAAO,EAAc,KAAK,gBAAgB,EAAmB,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAEtG,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE,MAAM,OAAO,CAAA;IACzB,gBAAgB,EAAE,MAAM,OAAO,CAAA;IAC/B,iBAAiB,EAAE,MAAM,gBAAgB,EAAE,CAAA;IAC3C,iBAAiB,EAAE,MAAM,MAAM,CAAA;IAC/B,WAAW,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,CAAA;IAC9C,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;IACpC,aAAa,EAAE,MAAM,MAAM,CAAA;CAC3B;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,OAuD5C"}
@@ -0,0 +1,39 @@
1
+ import { TextareaRenderable } from "@opentui/core";
2
+ import { Show } from "solid-js";
3
+ import { SelectList } from "@yeshwanthyk/open-tui";
4
+ export function Composer(props) {
5
+ return (<>
6
+ <Show when={props.showAutocomplete() && props.autocompleteItems().length > 0}>
7
+ <box flexDirection="column" borderColor={props.theme.border} maxHeight={15} flexShrink={0}>
8
+ <SelectList items={props.autocompleteItems().map((item) => ({
9
+ value: item.value,
10
+ label: item.label,
11
+ description: item.description,
12
+ }))} selectedIndex={props.autocompleteIndex()} maxVisible={12} width={Math.max(10, props.terminalWidth() - 2)}/>
13
+ <text fg={props.theme.textMuted}>{" "}↑↓ navigate · Tab select · Esc cancel</text>
14
+ </box>
15
+ </Show>
16
+ <box border={["top"]} borderColor={props.isBashMode() ? props.theme.warning : props.theme.border} paddingTop={1} flexShrink={0}>
17
+ <textarea ref={(r) => {
18
+ props.textareaRef(r);
19
+ }} placeholder="" backgroundColor={props.theme.background} focusedBackgroundColor={props.theme.background} textColor={props.theme.text} focusedTextColor={props.theme.text} cursorColor={props.theme.text} minHeight={1} maxHeight={6} keyBindings={[
20
+ { name: "return", shift: true, action: "newline" },
21
+ { name: "return", ctrl: true, action: "newline" },
22
+ { name: "return", meta: true, action: "newline" },
23
+ { name: "return", action: "submit" },
24
+ { name: "left", action: "move-left" },
25
+ { name: "right", action: "move-right" },
26
+ { name: "backspace", action: "backspace" },
27
+ { name: "delete", action: "delete" },
28
+ { name: "a", ctrl: true, action: "line-home" },
29
+ { name: "e", ctrl: true, action: "line-end" },
30
+ { name: "k", ctrl: true, action: "delete-to-line-end" },
31
+ { name: "u", ctrl: true, action: "delete-to-line-start" },
32
+ { name: "w", ctrl: true, action: "delete-word-backward" },
33
+ ]} onKeyDown={(event) => {
34
+ props.onKeyDown(event);
35
+ }} onContentChange={props.onContentChange} onSubmit={props.onSubmit}/>
36
+ </box>
37
+ </>);
38
+ }
39
+ //# sourceMappingURL=Composer.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Composer.jsx","sourceRoot":"","sources":["../../../../src/ui/features/composer/Composer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { CommandContext } from "../../../commands.js";
2
+ import { type CustomCommand } from "@yeshwanthyk/runtime-effect/extensibility/custom-commands.js";
3
+ export interface SlashCommandBridge {
4
+ commandContext: CommandContext;
5
+ customCommands: Map<string, CustomCommand>;
6
+ builtInCommandNames: Set<string>;
7
+ onExpand: (expanded: string) => void | Promise<void>;
8
+ }
9
+ /**
10
+ * Handles slash command processing, returning true when the command is consumed.
11
+ * Checks hook commands first, then built-in commands, then custom commands.
12
+ */
13
+ export declare const handleSlashInput: (input: string, bridge: SlashCommandBridge) => Promise<boolean>;
14
+ //# sourceMappingURL=SlashCommandHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlashCommandHandler.d.ts","sourceRoot":"","sources":["../../../../src/ui/features/composer/SlashCommandHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1D,OAAO,EAEN,KAAK,aAAa,EAClB,MAAM,8DAA8D,CAAA;AAErE,MAAM,WAAW,kBAAkB;IAClC,cAAc,EAAE,cAAc,CAAA;IAC9B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC1C,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAChC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACpD;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAU,OAAO,MAAM,EAAE,QAAQ,kBAAkB,KAAG,OAAO,CAAC,OAAO,CAuCjG,CAAA"}
@@ -0,0 +1,43 @@
1
+ import { handleSlashCommand } from "../../../commands.js";
2
+ import { tryExpandCustomCommand, } from "@yeshwanthyk/runtime-effect/extensibility/custom-commands.js";
3
+ /**
4
+ * Handles slash command processing, returning true when the command is consumed.
5
+ * Checks hook commands first, then built-in commands, then custom commands.
6
+ */
7
+ export const handleSlashInput = async (input, bridge) => {
8
+ const trimmed = input.trim();
9
+ // Parse command name and args
10
+ const match = trimmed.match(/^\/(\S+)(?:\s+([\s\S]*))?$/);
11
+ if (!match)
12
+ return false;
13
+ const cmdName = match[1];
14
+ const cmdArgs = match[2] ?? "";
15
+ // Check hook-registered commands first
16
+ const { hookRunner } = bridge.commandContext;
17
+ if (hookRunner) {
18
+ const hookCmd = hookRunner.getCommand(cmdName);
19
+ if (hookCmd) {
20
+ try {
21
+ await hookCmd.handler(cmdArgs, hookRunner.getContext());
22
+ }
23
+ catch (err) {
24
+ // Hook command errors are logged but don't crash
25
+ console.error(`Hook command error [${cmdName}]:`, err);
26
+ }
27
+ return true;
28
+ }
29
+ }
30
+ // Then check built-in commands
31
+ const handled = handleSlashCommand(trimmed, bridge.commandContext);
32
+ if (handled instanceof Promise ? await handled : handled) {
33
+ return true;
34
+ }
35
+ // Finally check custom commands
36
+ const expanded = tryExpandCustomCommand(trimmed, bridge.builtInCommandNames, bridge.customCommands);
37
+ if (expanded !== null) {
38
+ await bridge.onExpand(expanded);
39
+ return true;
40
+ }
41
+ return false;
42
+ };
43
+ //# sourceMappingURL=SlashCommandHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlashCommandHandler.js","sourceRoot":"","sources":["../../../../src/ui/features/composer/SlashCommandHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EACN,sBAAsB,GAEtB,MAAM,8DAA8D,CAAA;AASrE;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,KAAa,EAAE,MAA0B,EAAoB,EAAE;IACrG,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAE5B,8BAA8B;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;IACzD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAA;IAExB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAE,CAAA;IACzB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAE9B,uCAAuC;IACvC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,cAAc,CAAA;IAC5C,IAAI,UAAU,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAC9C,IAAI,OAAO,EAAE,CAAC;YACb,IAAI,CAAC;gBACJ,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,CAAA;YACxD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,iDAAiD;gBACjD,OAAO,CAAC,KAAK,CAAC,uBAAuB,OAAO,IAAI,EAAE,GAAG,CAAC,CAAA;YACvD,CAAC;YACD,OAAO,IAAI,CAAA;QACZ,CAAC;IACF,CAAC;IAED,+BAA+B;IAC/B,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,cAAc,CAAC,CAAA;IAClE,IAAI,OAAO,YAAY,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,gCAAgC;IAChC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,cAAc,CAAC,CAAA;IACnG,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACvB,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAC/B,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,OAAO,KAAK,CAAA;AACb,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { type KeyboardHandlerConfig } from "../../../keyboard-handler.js";
2
+ export declare const createComposerKeyboardHandler: (config: KeyboardHandlerConfig) => (e: import("@opentui/core").KeyEvent) => void;
3
+ //# sourceMappingURL=keyboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../../../../src/ui/features/composer/keyboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAEhG,eAAO,MAAM,6BAA6B,GAAI,QAAQ,qBAAqB,kDAAkC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { createKeyboardHandler } from "../../../keyboard-handler.js";
2
+ export const createComposerKeyboardHandler = (config) => createKeyboardHandler(config);
3
+ //# sourceMappingURL=keyboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../../../../src/ui/features/composer/keyboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAA8B,MAAM,8BAA8B,CAAA;AAEhG,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,MAA6B,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAA"}
@@ -0,0 +1,52 @@
1
+ import type { ThinkingLevel } from "@yeshwanthyk/agent-core";
2
+ import type { KnownProvider } from "@yeshwanthyk/ai";
3
+ import type { LspManager } from "@yeshwanthyk/lsp";
4
+ import type { CustomCommand } from "@yeshwanthyk/runtime-effect/extensibility/custom-commands.js";
5
+ import type { ActivityState, ToolBlock, UIMessage } from "../../../types.js";
6
+ import type { QueueCounts } from "@yeshwanthyk/runtime-effect/session/prompt-queue.js";
7
+ import type { ValidationIssue } from "../../../extensibility/schema.js";
8
+ export interface MainViewProps {
9
+ validationIssues?: ValidationIssue[];
10
+ messages: UIMessage[];
11
+ toolBlocks: ToolBlock[];
12
+ isResponding: boolean;
13
+ activityState: ActivityState;
14
+ thinkingVisible: boolean;
15
+ modelId: string;
16
+ thinking: ThinkingLevel;
17
+ provider: KnownProvider;
18
+ contextTokens: number;
19
+ contextWindow: number;
20
+ queueCounts: QueueCounts;
21
+ retryStatus: string | null;
22
+ turnCount: number;
23
+ lspActive: boolean;
24
+ diffWrapMode: "word" | "none";
25
+ concealMarkdown: boolean;
26
+ customCommands: Map<string, CustomCommand>;
27
+ onSubmit: (text: string, clearFn?: () => void) => void;
28
+ onAbort: () => string | null;
29
+ onToggleThinking: () => void;
30
+ onCycleModel: () => void;
31
+ onCycleThinking: () => void;
32
+ exitHandlerRef: {
33
+ current: () => void;
34
+ };
35
+ editorOpenRef: {
36
+ current: () => Promise<void> | void;
37
+ };
38
+ setEditorTextRef: {
39
+ current: (text: string) => void;
40
+ };
41
+ getEditorTextRef: {
42
+ current: () => string;
43
+ };
44
+ showToastRef: {
45
+ current: (title: string, message: string, variant?: "info" | "warning" | "success" | "error") => void;
46
+ };
47
+ onBeforeExit?: () => Promise<void>;
48
+ editor?: import("../../../config.js").EditorConfig;
49
+ lsp: LspManager;
50
+ }
51
+ export declare function MainView(props: MainViewProps): any;
52
+ //# sourceMappingURL=MainView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MainView.d.ts","sourceRoot":"","sources":["../../../../src/ui/features/main-view/MainView.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAGlD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAA;AAGjG,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qDAAqD,CAAA;AAQtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAErD,MAAM,WAAW,aAAa;IAC7B,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAA;IACpC,QAAQ,EAAE,SAAS,EAAE,CAAA;IACrB,UAAU,EAAE,SAAS,EAAE,CAAA;IACvB,YAAY,EAAE,OAAO,CAAA;IACrB,aAAa,EAAE,aAAa,CAAA;IAC5B,eAAe,EAAE,OAAO,CAAA;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,aAAa,CAAA;IACvB,QAAQ,EAAE,aAAa,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,WAAW,CAAA;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,YAAY,EAAE,MAAM,GAAG,MAAM,CAAA;IAC7B,eAAe,EAAE,OAAO,CAAA;IACxB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC1C,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;IACtD,OAAO,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IAC5B,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,cAAc,EAAE;QAAE,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAA;IACvC,aAAa,EAAE;QAAE,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;KAAE,CAAA;IACtD,gBAAgB,EAAE;QAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAA;IACrD,gBAAgB,EAAE;QAAE,OAAO,EAAE,MAAM,MAAM,CAAA;KAAE,CAAA;IAC3C,YAAY,EAAE;QAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,KAAK,IAAI,CAAA;KAAE,CAAA;IACvH,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,CAAC,EAAE,OAAO,oBAAoB,EAAE,YAAY,CAAA;IAClD,GAAG,EAAE,UAAU,CAAA;CACf;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,OA+S5C"}