@yeshwanthyk/coding-agent 0.3.0 → 0.3.2

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 +19 -6
  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 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/domain/commands/registry.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;AAE3E,MAAM,OAAO,eAAe;IACV,WAAW,GAAG,IAAI,GAAG,EAA6B,CAAA;IAClD,MAAM,GAAG,IAAI,GAAG,EAA6B,CAAA;IAE9D,QAAQ,CAAC,UAA6B;QACrC,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAChD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;QAC3C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;QACtC,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YAC9C,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;YACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;QACtC,CAAC;IACF,CAAC;IAED,GAAG,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA;IAC5C,CAAC;IAED,IAAI;QACH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,GAAmB;QAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;QAC5B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAA;QAE1C,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACrC,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChD,MAAM,QAAQ,GAAG,eAAe,EAAE,KAAK,IAAI,CAAC,CAAC,CAAA;QAC7C,MAAM,WAAW,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;QACpF,MAAM,IAAI,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAA;QACpE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACrC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAA;QAE1B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC1C,OAAO,OAAO,YAAY,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,OAAO,CAAA;IAC5D,CAAC;CACD"}
@@ -0,0 +1,62 @@
1
+ import type { Agent, ThinkingLevel } from "@yeshwanthyk/agent-core";
2
+ import type { CodexTransport } from "@yeshwanthyk/agent-core";
3
+ import type { Api, Model, KnownProvider } from "@yeshwanthyk/ai";
4
+ import type { SessionManager } from "../../session-manager.js";
5
+ import type { ActivityState, ToolBlock, UIMessage } from "../../types.js";
6
+ import type { EditorConfig } from "../../config.js";
7
+ import type { HookRunner } from "../../hooks/index.js";
8
+ import type { PromptDeliveryMode } from "@yeshwanthyk/runtime-effect/session/prompt-queue.js";
9
+ import type { PromptSubmitOptions } from "@yeshwanthyk/runtime-effect/session/orchestrator.js";
10
+ export declare const THINKING_LEVELS: ThinkingLevel[];
11
+ export interface CommandContext {
12
+ agent: Agent;
13
+ sessionManager: SessionManager;
14
+ configDir: string;
15
+ configPath: string;
16
+ cwd: string;
17
+ editor?: EditorConfig;
18
+ codexTransport: CodexTransport;
19
+ getApiKey: (provider: string) => string | undefined;
20
+ currentProvider: KnownProvider;
21
+ currentModelId: string;
22
+ currentThinking: ThinkingLevel;
23
+ setCurrentProvider: (provider: KnownProvider) => void;
24
+ setCurrentModelId: (modelId: string) => void;
25
+ setCurrentThinking: (thinking: ThinkingLevel) => void;
26
+ isResponding: () => boolean;
27
+ setIsResponding: (value: boolean) => void;
28
+ setActivityState: (state: ActivityState) => void;
29
+ setMessages: (updater: (prev: UIMessage[]) => UIMessage[]) => void;
30
+ setToolBlocks: (updater: (prev: ToolBlock[]) => ToolBlock[]) => void;
31
+ setContextTokens: (value: number) => void;
32
+ setCacheStats: (value: {
33
+ cacheRead: number;
34
+ input: number;
35
+ } | null) => void;
36
+ setDisplayModelId: (modelId: string) => void;
37
+ setDisplayThinking: (thinking: ThinkingLevel) => void;
38
+ setDisplayContextWindow: (tokens: number) => void;
39
+ setDiffWrapMode: (updater: (prev: "word" | "none") => "word" | "none") => void;
40
+ setConcealMarkdown: (updater: (prev: boolean) => boolean) => void;
41
+ setTheme?: (name: string) => void;
42
+ launchEditor?: (command: string, args: string[], cwd: string, onError: (error: Error) => void) => void;
43
+ openEditor?: () => Promise<void> | void;
44
+ onExit?: () => void;
45
+ hookRunner?: HookRunner;
46
+ submitPrompt: (text: string, options?: PromptSubmitOptions) => Promise<void>;
47
+ steer: (text: string) => Promise<void>;
48
+ followUp: (text: string) => Promise<void>;
49
+ sendUserMessage: (text: string, options?: {
50
+ deliverAs?: PromptDeliveryMode;
51
+ }) => Promise<void>;
52
+ }
53
+ export type CommandHandlerResult = boolean | Promise<boolean>;
54
+ export interface CommandDefinition {
55
+ name: string;
56
+ aliases?: string[];
57
+ description?: string;
58
+ execute: (args: string, ctx: CommandContext) => CommandHandlerResult;
59
+ }
60
+ export type CommandHandler = CommandDefinition["execute"];
61
+ export type ModelResolver = (provider: KnownProvider, modelId: string) => Model<Api> | undefined;
62
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/domain/commands/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export const THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh"];
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/domain/commands/types.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,eAAe,GAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA"}
@@ -0,0 +1,37 @@
1
+ export declare const MESSAGE_CAP = 75;
2
+ export declare const appendWithCap: <T>(arr: T[], item: T, cap?: number) => T[];
3
+ export declare const getToolText: (result: unknown) => string;
4
+ export declare const getEditDiffText: (result: unknown) => string | null;
5
+ export declare const extractText: (content: unknown[]) => string;
6
+ export declare const buildThinkingSummary: (full: string) => {
7
+ summary: string;
8
+ preview: string;
9
+ };
10
+ export declare const extractThinking: (content: unknown[]) => {
11
+ summary: string;
12
+ preview: string;
13
+ full: string;
14
+ } | null;
15
+ export interface ExtractedToolCall {
16
+ id: string;
17
+ name: string;
18
+ args: unknown;
19
+ }
20
+ export declare const extractToolCalls: (content: unknown[]) => ExtractedToolCall[];
21
+ export type OrderedBlock = {
22
+ type: "thinking";
23
+ id: string;
24
+ summary: string;
25
+ preview: string;
26
+ full: string;
27
+ } | {
28
+ type: "text";
29
+ text: string;
30
+ } | {
31
+ type: "toolCall";
32
+ id: string;
33
+ name: string;
34
+ args: unknown;
35
+ };
36
+ export declare const extractOrderedBlocks: (content: unknown[]) => OrderedBlock[];
37
+ //# sourceMappingURL=content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../src/domain/messaging/content.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,KAAK,CAAA;AAE7B,eAAO,MAAM,aAAa,GAAI,CAAC,EAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,YAAiB,KAAG,CAAC,EAGzE,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,QAAQ,OAAO,KAAG,MAW7C,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,QAAQ,OAAO,KAAG,MAAM,GAAG,IAI1D,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,SAAS,OAAO,EAAE,KAAG,MAUhD,CAAA;AAKD,eAAO,MAAM,oBAAoB,GAAI,MAAM,MAAM,KAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAWrF,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,SAAS,OAAO,EAAE,KAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAWzG,CAAA;AAED,MAAM,WAAW,iBAAiB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,CAAA;CACb;AAED,eAAO,MAAM,gBAAgB,GAAI,SAAS,OAAO,EAAE,KAAG,iBAAiB,EAUtE,CAAA;AAED,MAAM,MAAM,YAAY,GACrB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChF;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAA;AAEhE,eAAO,MAAM,oBAAoB,GAAI,SAAS,OAAO,EAAE,KAAG,YAAY,EA0BrE,CAAA"}
@@ -0,0 +1,103 @@
1
+ export const MESSAGE_CAP = 75;
2
+ export const appendWithCap = (arr, item, cap = MESSAGE_CAP) => {
3
+ const next = [...arr, item];
4
+ return next.length > cap ? next.slice(-cap) : next;
5
+ };
6
+ export const getToolText = (result) => {
7
+ if (!result || typeof result !== "object")
8
+ return String(result);
9
+ const maybe = result;
10
+ const content = Array.isArray(maybe.content) ? maybe.content : [];
11
+ const parts = [];
12
+ for (const block of content) {
13
+ if (typeof block === "object" && block !== null && block.type === "text") {
14
+ parts.push(block.text);
15
+ }
16
+ }
17
+ return parts.join("");
18
+ };
19
+ export const getEditDiffText = (result) => {
20
+ if (!result || typeof result !== "object")
21
+ return null;
22
+ const maybe = result;
23
+ return maybe.details?.diff || null;
24
+ };
25
+ export const extractText = (content) => {
26
+ let text = "";
27
+ for (const block of content) {
28
+ if (typeof block !== "object" || block === null)
29
+ continue;
30
+ const b = block;
31
+ if (b.type === "text" && typeof b.text === "string") {
32
+ text += b.text;
33
+ }
34
+ }
35
+ return text;
36
+ };
37
+ const THINKING_SUMMARY_MAX = 80;
38
+ const THINKING_PREVIEW_MAX = 50;
39
+ export const buildThinkingSummary = (full) => {
40
+ const trimmed = full.trim();
41
+ const lines = trimmed.split("\n").filter((l) => l.trim().length > 20);
42
+ const base = (lines[0]?.trim() || trimmed).slice(0, THINKING_SUMMARY_MAX);
43
+ const summary = base.length >= THINKING_SUMMARY_MAX ? base + "..." : base;
44
+ const previewSource = summary || trimmed;
45
+ const firstLine = previewSource.split("\n")[0] || "";
46
+ const preview = firstLine.length <= THINKING_PREVIEW_MAX
47
+ ? firstLine
48
+ : firstLine.slice(0, THINKING_PREVIEW_MAX - 3) + "...";
49
+ return { summary, preview };
50
+ };
51
+ export const extractThinking = (content) => {
52
+ for (const block of content) {
53
+ if (typeof block !== "object" || block === null)
54
+ continue;
55
+ const b = block;
56
+ if (b.type === "thinking" && typeof b.thinking === "string") {
57
+ const full = b.thinking;
58
+ const { summary, preview } = buildThinkingSummary(full);
59
+ return { summary, preview, full };
60
+ }
61
+ }
62
+ return null;
63
+ };
64
+ export const extractToolCalls = (content) => {
65
+ const toolCalls = [];
66
+ for (const block of content) {
67
+ if (typeof block !== "object" || block === null)
68
+ continue;
69
+ const b = block;
70
+ if (b.type === "toolCall" && typeof b.id === "string" && typeof b.name === "string") {
71
+ toolCalls.push({ id: b.id, name: b.name, args: b.arguments ?? {} });
72
+ }
73
+ }
74
+ return toolCalls;
75
+ };
76
+ export const extractOrderedBlocks = (content) => {
77
+ const blocks = [];
78
+ let thinkingCounter = 0;
79
+ for (const block of content) {
80
+ if (typeof block !== "object" || block === null)
81
+ continue;
82
+ const b = block;
83
+ if (b.type === "thinking" && typeof b.thinking === "string") {
84
+ const full = b.thinking;
85
+ const { summary, preview } = buildThinkingSummary(full);
86
+ blocks.push({
87
+ type: "thinking",
88
+ id: `thinking-${thinkingCounter++}`,
89
+ summary,
90
+ preview,
91
+ full,
92
+ });
93
+ }
94
+ else if (b.type === "text" && typeof b.text === "string") {
95
+ blocks.push({ type: "text", text: b.text });
96
+ }
97
+ else if (b.type === "toolCall" && typeof b.id === "string" && typeof b.name === "string") {
98
+ blocks.push({ type: "toolCall", id: b.id, name: b.name, args: b.arguments ?? {} });
99
+ }
100
+ }
101
+ return blocks;
102
+ };
103
+ //# sourceMappingURL=content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/domain/messaging/content.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { CliRenderer } from "@yeshwanthyk/open-tui";
2
+ import type { EditorConfig } from "./config.js";
3
+ export declare const buildEditorInvocation: (editor: EditorConfig, cwd: string, options?: {
4
+ appendCwd?: boolean;
5
+ }) => {
6
+ command: string;
7
+ args: string[];
8
+ };
9
+ export declare const openExternalEditor: (opts: {
10
+ editor: EditorConfig;
11
+ cwd: string;
12
+ renderer: CliRenderer;
13
+ initialValue: string;
14
+ }) => Promise<string | undefined>;
15
+ /**
16
+ * Open an existing file in the user's editor.
17
+ * Unlike openExternalEditor, this opens the file directly without creating a temp copy.
18
+ */
19
+ export declare const openFileInEditor: (opts: {
20
+ editor: EditorConfig;
21
+ filePath: string;
22
+ line?: number;
23
+ cwd: string;
24
+ renderer: CliRenderer;
25
+ }) => Promise<void>;
26
+ //# sourceMappingURL=editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAsB/C,eAAO,MAAM,qBAAqB,GACjC,QAAQ,YAAY,EACpB,KAAK,MAAM,EACX,UAAU;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,KAC/B;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAMnC,CAAA;AAUD,eAAO,MAAM,kBAAkB,GAAU,MAAM;IAC9C,MAAM,EAAE,YAAY,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,WAAW,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;CACpB,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAsB7B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAU,MAAM;IAC5C,MAAM,EAAE,YAAY,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,WAAW,CAAA;CACrB,KAAG,OAAO,CAAC,IAAI,CAgBf,CAAA"}
package/dist/editor.js ADDED
@@ -0,0 +1,81 @@
1
+ import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
2
+ import { tmpdir } from "node:os";
3
+ import * as path from "node:path";
4
+ import { spawn } from "node:child_process";
5
+ const CWD_PLACEHOLDER = "{cwd}";
6
+ const LINE_JUMP_EDITORS = new Set([
7
+ "vi",
8
+ "vim",
9
+ "nvim",
10
+ "emacs",
11
+ "emacsclient",
12
+ "nano",
13
+ "hx",
14
+ "helix",
15
+ "micro",
16
+ "kak",
17
+ "kakoune",
18
+ ]);
19
+ const supportsLineJump = (command) => {
20
+ const baseName = path.basename(command).toLowerCase();
21
+ return LINE_JUMP_EDITORS.has(baseName);
22
+ };
23
+ export const buildEditorInvocation = (editor, cwd, options) => {
24
+ const usesCwd = editor.command.includes(CWD_PLACEHOLDER) || editor.args.some((arg) => arg.includes(CWD_PLACEHOLDER));
25
+ const command = editor.command.replaceAll(CWD_PLACEHOLDER, cwd);
26
+ const args = editor.args.map((arg) => arg.replaceAll(CWD_PLACEHOLDER, cwd));
27
+ if (options?.appendCwd !== false && !usesCwd)
28
+ args.push(cwd);
29
+ return { command, args };
30
+ };
31
+ const runEditor = async (command, args, cwd) => {
32
+ await new Promise((resolve, reject) => {
33
+ const proc = spawn(command, args, { cwd, stdio: "inherit" });
34
+ proc.once("error", (err) => reject(err));
35
+ proc.once("exit", () => resolve());
36
+ });
37
+ };
38
+ export const openExternalEditor = async (opts) => {
39
+ const { command, args } = buildEditorInvocation(opts.editor, opts.cwd, { appendCwd: false });
40
+ const dir = await mkdtemp(path.join(tmpdir(), "marvin-editor-"));
41
+ const filePath = path.join(dir, "prompt.md");
42
+ let suspended = false;
43
+ try {
44
+ await writeFile(filePath, opts.initialValue, "utf8");
45
+ opts.renderer.suspend();
46
+ suspended = true;
47
+ opts.renderer.currentRenderBuffer.clear();
48
+ await runEditor(command, [...args, filePath], opts.cwd);
49
+ const content = await readFile(filePath, "utf8");
50
+ return content.length > 0 ? content : undefined;
51
+ }
52
+ finally {
53
+ if (suspended) {
54
+ opts.renderer.currentRenderBuffer.clear();
55
+ opts.renderer.resume();
56
+ opts.renderer.requestRender();
57
+ }
58
+ await rm(dir, { recursive: true, force: true });
59
+ }
60
+ };
61
+ /**
62
+ * Open an existing file in the user's editor.
63
+ * Unlike openExternalEditor, this opens the file directly without creating a temp copy.
64
+ */
65
+ export const openFileInEditor = async (opts) => {
66
+ const { command, args } = buildEditorInvocation(opts.editor, opts.cwd, { appendCwd: false });
67
+ const lineArg = typeof opts.line === "number" && Number.isFinite(opts.line) && opts.line > 0 && supportsLineJump(command)
68
+ ? [`+${opts.line}`]
69
+ : [];
70
+ opts.renderer.suspend();
71
+ opts.renderer.currentRenderBuffer.clear();
72
+ try {
73
+ await runEditor(command, [...args, ...lineArg, opts.filePath], opts.cwd);
74
+ }
75
+ finally {
76
+ opts.renderer.currentRenderBuffer.clear();
77
+ opts.renderer.resume();
78
+ opts.renderer.requestRender();
79
+ }
80
+ };
81
+ //# sourceMappingURL=editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor.js","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "@yeshwanthyk/runtime-effect/extensibility/schema.js";
2
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/extensibility/schema.ts"],"names":[],"mappings":"AAAA,cAAc,qDAAqD,CAAA"}
@@ -1 +1,2 @@
1
- export * from "@yeshwanthyk/runtime-effect/extensibility/schema.js"
1
+ export * from "@yeshwanthyk/runtime-effect/extensibility/schema.js";
2
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/extensibility/schema.ts"],"names":[],"mappings":"AAAA,cAAc,qDAAqD,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "@yeshwanthyk/runtime-effect/extensibility/validation.js";
2
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/extensibility/validation.ts"],"names":[],"mappings":"AAAA,cAAc,yDAAyD,CAAA"}
@@ -1 +1,2 @@
1
- export * from "@yeshwanthyk/runtime-effect/extensibility/validation.js"
1
+ export * from "@yeshwanthyk/runtime-effect/extensibility/validation.js";
2
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/extensibility/validation.ts"],"names":[],"mappings":"AAAA,cAAc,yDAAyD,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "@yeshwanthyk/runtime-effect/hooks/index.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,4CAA4C,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "@yeshwanthyk/runtime-effect/hooks/index.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,4CAA4C,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { Agent } from "@yeshwanthyk/agent-core";
2
+ import { type EventHandlerContext } from "../agent-events.js";
3
+ export interface AgentEventsOptions {
4
+ agent: Agent;
5
+ context: EventHandlerContext;
6
+ }
7
+ export declare function useAgentEvents(options: AgentEventsOptions): void;
8
+ //# sourceMappingURL=useAgentEvents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAgentEvents.d.ts","sourceRoot":"","sources":["../../src/hooks/useAgentEvents.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAc,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAA2B,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAEtF,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,KAAK,CAAA;IACZ,OAAO,EAAE,mBAAmB,CAAA;CAC5B;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAkBhE"}
@@ -0,0 +1,22 @@
1
+ import { createEffect, onCleanup } from "solid-js";
2
+ import { createAgentEventHandler } from "../agent-events.js";
3
+ export function useAgentEvents(options) {
4
+ const handler = createAgentEventHandler(options.context);
5
+ createEffect(() => {
6
+ const unsubscribe = options.agent.subscribe((event) => {
7
+ try {
8
+ handler(event);
9
+ }
10
+ catch (err) {
11
+ if (process.env.NODE_ENV !== "production") {
12
+ console.error("Agent event handler error", err);
13
+ }
14
+ }
15
+ });
16
+ onCleanup(() => {
17
+ unsubscribe();
18
+ handler.dispose();
19
+ });
20
+ });
21
+ }
22
+ //# sourceMappingURL=useAgentEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAgentEvents.js","sourceRoot":"","sources":["../../src/hooks/useAgentEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAElD,OAAO,EAAE,uBAAuB,EAA4B,MAAM,oBAAoB,CAAA;AAOtF,MAAM,UAAU,cAAc,CAAC,OAA2B;IACzD,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAExD,YAAY,CAAC,GAAG,EAAE;QACjB,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAiB,EAAE,EAAE;YACjE,IAAI,CAAC;gBACJ,OAAO,CAAC,KAAK,CAAC,CAAA;YACf,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;oBAC3C,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAA;gBAChD,CAAC;YACF,CAAC;QACF,CAAC,CAAC,CAAA;QACF,SAAS,CAAC,GAAG,EAAE;YACd,WAAW,EAAE,CAAA;YACb,OAAO,CAAC,OAAO,EAAE,CAAA;QAClB,CAAC,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { CliRenderer } from "@yeshwanthyk/open-tui";
2
+ import type { EditorConfig } from "../config.js";
3
+ interface ToastOptions {
4
+ title: string;
5
+ message?: string;
6
+ variant?: "success" | "warning" | "error" | "info";
7
+ }
8
+ interface EditorBridgeOptions {
9
+ editor?: EditorConfig;
10
+ renderer: CliRenderer;
11
+ pushToast: (toast: ToastOptions, ttlMs?: number) => void;
12
+ isResponding: () => boolean;
13
+ onSubmit: (text: string) => void;
14
+ }
15
+ export declare function useEditorBridge(options: EditorBridgeOptions): {
16
+ openBuffer: (initialValue?: string) => Promise<string | undefined>;
17
+ editFile: (filePath: string, line?: number) => Promise<void>;
18
+ };
19
+ export {};
20
+ //# sourceMappingURL=useEditorBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEditorBridge.d.ts","sourceRoot":"","sources":["../../src/hooks/useEditorBridge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,UAAU,YAAY;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAA;CAClD;AAED,UAAU,mBAAmB;IAC5B,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,QAAQ,EAAE,WAAW,CAAA;IACrB,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACxD,YAAY,EAAE,MAAM,OAAO,CAAA;IAC3B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAChC;AAID,wBAAgB,eAAe,CAAC,OAAO,EAAE,mBAAmB;;yBAqBzB,MAAM,SAAS,MAAM;EA0DvD"}
@@ -0,0 +1,80 @@
1
+ import { createPatch } from "diff";
2
+ import { openExternalEditor, openFileInEditor } from "../editor.js";
3
+ const DEFAULT_EDITOR = { command: "nvim", args: [] };
4
+ export function useEditorBridge(options) {
5
+ const getEditor = () => options.editor ?? DEFAULT_EDITOR;
6
+ const openBuffer = async (initialValue = "") => {
7
+ try {
8
+ return await openExternalEditor({
9
+ editor: getEditor(),
10
+ cwd: process.cwd(),
11
+ renderer: options.renderer,
12
+ initialValue,
13
+ });
14
+ }
15
+ catch (err) {
16
+ options.pushToast({
17
+ title: "Editor failed",
18
+ message: err instanceof Error ? err.message : String(err),
19
+ variant: "error",
20
+ }, 4000);
21
+ return undefined;
22
+ }
23
+ };
24
+ const editFile = async (filePath, line) => {
25
+ if (options.isResponding())
26
+ return;
27
+ let beforeContent;
28
+ try {
29
+ beforeContent = await Bun.file(filePath).text();
30
+ }
31
+ catch (err) {
32
+ options.pushToast({
33
+ title: `Cannot read file: ${filePath}`,
34
+ message: err instanceof Error ? err.message : String(err),
35
+ variant: "error",
36
+ }, 3000);
37
+ return;
38
+ }
39
+ try {
40
+ await openFileInEditor({
41
+ editor: getEditor(),
42
+ filePath,
43
+ line,
44
+ cwd: process.cwd(),
45
+ renderer: options.renderer,
46
+ });
47
+ }
48
+ catch (err) {
49
+ options.pushToast({
50
+ title: err instanceof Error ? err.message : String(err),
51
+ variant: "error",
52
+ }, 3000);
53
+ return;
54
+ }
55
+ let afterContent;
56
+ try {
57
+ afterContent = await Bun.file(filePath).text();
58
+ }
59
+ catch (err) {
60
+ options.pushToast({
61
+ title: `Cannot read file after edit: ${filePath}`,
62
+ message: err instanceof Error ? err.message : String(err),
63
+ variant: "error",
64
+ }, 3000);
65
+ return;
66
+ }
67
+ if (beforeContent === afterContent) {
68
+ return;
69
+ }
70
+ const diff = createPatch(filePath, beforeContent, afterContent);
71
+ const lines = diff.split("\n");
72
+ const hunkStart = lines.findIndex((line) => line.startsWith("@@"));
73
+ const diffBody = hunkStart >= 0 ? lines.slice(hunkStart).join("\n") : diff;
74
+ const message = `Modified ${filePath}:\n${diffBody}`;
75
+ options.onSubmit(message);
76
+ options.pushToast({ title: "Edit recorded", variant: "success" }, 1500);
77
+ };
78
+ return { openBuffer, editFile };
79
+ }
80
+ //# sourceMappingURL=useEditorBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEditorBridge.js","sourceRoot":"","sources":["../../src/hooks/useEditorBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAElC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAiBnE,MAAM,cAAc,GAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;AAElE,MAAM,UAAU,eAAe,CAAC,OAA4B;IAC3D,MAAM,SAAS,GAAG,GAAiB,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,cAAc,CAAA;IAEtE,MAAM,UAAU,GAAG,KAAK,EAAE,YAAY,GAAG,EAAE,EAAE,EAAE;QAC9C,IAAI,CAAC;YACJ,OAAO,MAAM,kBAAkB,CAAC;gBAC/B,MAAM,EAAE,SAAS,EAAE;gBACnB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;gBAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,YAAY;aACZ,CAAC,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,SAAS,CAAC;gBACjB,KAAK,EAAE,eAAe;gBACtB,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;gBACzD,OAAO,EAAE,OAAO;aAChB,EAAE,IAAI,CAAC,CAAA;YACR,OAAO,SAAS,CAAA;QACjB,CAAC;IACF,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAgB,EAAE,IAAa,EAAE,EAAE;QAC1D,IAAI,OAAO,CAAC,YAAY,EAAE;YAAE,OAAM;QAElC,IAAI,aAAqB,CAAA;QACzB,IAAI,CAAC;YACJ,aAAa,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAA;QAChD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,SAAS,CAAC;gBACjB,KAAK,EAAE,qBAAqB,QAAQ,EAAE;gBACtC,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;gBACzD,OAAO,EAAE,OAAO;aAChB,EAAE,IAAI,CAAC,CAAA;YACR,OAAM;QACP,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,gBAAgB,CAAC;gBACtB,MAAM,EAAE,SAAS,EAAE;gBACnB,QAAQ;gBACR,IAAI;gBACJ,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;gBAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC1B,CAAC,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,SAAS,CAAC;gBACjB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;gBACvD,OAAO,EAAE,OAAO;aAChB,EAAE,IAAI,CAAC,CAAA;YACR,OAAM;QACP,CAAC;QAED,IAAI,YAAoB,CAAA;QACxB,IAAI,CAAC;YACJ,YAAY,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAA;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,SAAS,CAAC;gBACjB,KAAK,EAAE,gCAAgC,QAAQ,EAAE;gBACjD,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;gBACzD,OAAO,EAAE,OAAO;aAChB,EAAE,IAAI,CAAC,CAAA;YACR,OAAM;QACP,CAAC;QAED,IAAI,aAAa,KAAK,YAAY,EAAE,CAAC;YACpC,OAAM;QACP,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,CAAA;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;QAClE,MAAM,QAAQ,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAE1E,MAAM,OAAO,GAAG,YAAY,QAAQ,MAAM,QAAQ,EAAE,CAAA;QACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QACzB,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,IAAI,CAAC,CAAA;IACxE,CAAC,CAAA;IAED,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAA;AAChC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function useGitStatus(): () => string | null;
2
+ //# sourceMappingURL=useGitStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGitStatus.d.ts","sourceRoot":"","sources":["../../src/hooks/useGitStatus.ts"],"names":[],"mappings":"AAIA,wBAAgB,YAAY,IAAI,MAAM,MAAM,GAAG,IAAI,CAuBlD"}
@@ -0,0 +1,26 @@
1
+ import { createSignal, onCleanup, onMount } from "solid-js";
2
+ import { watch } from "fs";
3
+ import { findGitHeadPath, getCurrentBranch } from "../runtime/git/git-info.js";
4
+ export function useGitStatus() {
5
+ const [branch, setBranch] = createSignal(getCurrentBranch());
6
+ let watcher = null;
7
+ onMount(() => {
8
+ const gitHeadPath = findGitHeadPath();
9
+ if (gitHeadPath) {
10
+ try {
11
+ watcher = watch(gitHeadPath, () => setBranch(getCurrentBranch()));
12
+ }
13
+ catch {
14
+ // ignore watcher errors
15
+ }
16
+ }
17
+ });
18
+ onCleanup(() => {
19
+ if (watcher) {
20
+ watcher.close();
21
+ watcher = null;
22
+ }
23
+ });
24
+ return branch;
25
+ }
26
+ //# sourceMappingURL=useGitStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGitStatus.js","sourceRoot":"","sources":["../../src/hooks/useGitStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAC3D,OAAO,EAAE,KAAK,EAAkB,MAAM,IAAI,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAE5E,MAAM,UAAU,YAAY;IAC3B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,YAAY,CAAgB,gBAAgB,EAAE,CAAC,CAAA;IAC3E,IAAI,OAAO,GAAqB,IAAI,CAAA;IAEpC,OAAO,CAAC,GAAG,EAAE;QACZ,MAAM,WAAW,GAAG,eAAe,EAAE,CAAA;QACrC,IAAI,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC;gBACJ,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAA;YAClE,CAAC;YAAC,MAAM,CAAC;gBACR,wBAAwB;YACzB,CAAC;QACF,CAAC;IACF,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,EAAE,CAAA;YACf,OAAO,GAAG,IAAI,CAAA;QACf,CAAC;IACF,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACd,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createPromptQueue, type PromptQueue, type PromptQueueItem, type PromptDeliveryMode, type QueueCounts, } from "@yeshwanthyk/runtime-effect/session/prompt-queue.js";
2
+ //# sourceMappingURL=usePromptQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePromptQueue.d.ts","sourceRoot":"","sources":["../../src/hooks/usePromptQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,WAAW,GAChB,MAAM,qDAAqD,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { createPromptQueue, } from "@yeshwanthyk/runtime-effect/session/prompt-queue.js";
2
+ //# sourceMappingURL=usePromptQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePromptQueue.js","sourceRoot":"","sources":["../../src/hooks/usePromptQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,GAKjB,MAAM,qDAAqD,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { createSessionController, type SessionControllerOptions, type SessionControllerState, } from "../runtime/session/session-controller.js";
2
+ //# sourceMappingURL=useSessionController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSessionController.d.ts","sourceRoot":"","sources":["../../src/hooks/useSessionController.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,GAC3B,MAAM,wCAAwC,CAAA"}