@yeshwanthyk/coding-agent 0.2.2 → 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,216 @@
1
+ /**
2
+ * ACP Session - wraps Agent and emits ACP updates
3
+ */
4
+ import { textChunk, thoughtChunk, toolCall, toolCallUpdate, toolNameToKind } from "./updates.js";
5
+ import { Effect } from "effect";
6
+ // Slash commands exposed to Zed
7
+ const AVAILABLE_COMMANDS = [
8
+ { name: "model", description: "Switch model: /model <modelId>" },
9
+ { name: "thinking", description: "Set thinking: /thinking off|minimal|low|medium|high|xhigh" },
10
+ { name: "status", description: "Show session status" },
11
+ { name: "compact", description: "Compact conversation context" },
12
+ { name: "clear", description: "Clear conversation" },
13
+ ];
14
+ export function createAcpSession(config) {
15
+ const { sessionId, cwd, agent, emitter, models, contextWindow, sessionOrchestrator } = config;
16
+ let currentModelId = config.currentModelId;
17
+ let thinkingLevel = config.thinkingLevel;
18
+ let cancelled = false;
19
+ let unsubscribe = null;
20
+ // Track session stats
21
+ let turnCount = 0;
22
+ let lastUsage = null;
23
+ // Track emitted content to avoid duplicate chunks
24
+ let lastEmittedTextLen = 0;
25
+ let lastEmittedThinkingLen = 0;
26
+ // Subscribe to agent events and emit ACP updates
27
+ function subscribeToEvents() {
28
+ lastEmittedTextLen = 0;
29
+ lastEmittedThinkingLen = 0;
30
+ return agent.subscribe((event) => {
31
+ if (cancelled)
32
+ return;
33
+ switch (event.type) {
34
+ case "message_update":
35
+ if (event.message.role === "assistant") {
36
+ // Extract text and thinking from content
37
+ const content = event.message.content;
38
+ let totalText = "";
39
+ let totalThinking = "";
40
+ for (const block of content) {
41
+ if (typeof block !== "object" || block === null)
42
+ continue;
43
+ const b = block;
44
+ if (b.type === "text" && typeof b.text === "string") {
45
+ totalText += b.text;
46
+ }
47
+ else if (b.type === "thinking" && typeof b.thinking === "string") {
48
+ totalThinking += b.thinking;
49
+ }
50
+ }
51
+ // Emit only new content (delta)
52
+ if (totalText.length > lastEmittedTextLen) {
53
+ const delta = totalText.slice(lastEmittedTextLen);
54
+ lastEmittedTextLen = totalText.length;
55
+ emitter.emit(textChunk(delta));
56
+ }
57
+ if (totalThinking.length > lastEmittedThinkingLen) {
58
+ const delta = totalThinking.slice(lastEmittedThinkingLen);
59
+ lastEmittedThinkingLen = totalThinking.length;
60
+ emitter.emit(thoughtChunk(delta));
61
+ }
62
+ }
63
+ break;
64
+ case "tool_execution_start":
65
+ emitter.emit(toolCall(event.toolCallId, event.toolName, toolNameToKind(event.toolName), event.args));
66
+ break;
67
+ case "tool_execution_update":
68
+ emitter.emit(toolCallUpdate(event.toolCallId, "in_progress", event.partialResult ? JSON.stringify(event.partialResult) : undefined));
69
+ break;
70
+ case "tool_execution_end":
71
+ emitter.emit(toolCallUpdate(event.toolCallId, event.isError ? "failed" : "completed", event.result ? JSON.stringify(event.result) : undefined));
72
+ break;
73
+ case "message_end":
74
+ // Capture usage from assistant messages
75
+ if (event.message.role === "assistant") {
76
+ const msg = event.message;
77
+ if (msg.usage?.totalTokens) {
78
+ lastUsage = {
79
+ totalTokens: msg.usage.totalTokens,
80
+ cacheRead: msg.usage.cacheRead,
81
+ cacheWrite: msg.usage.cacheWrite,
82
+ };
83
+ }
84
+ }
85
+ break;
86
+ }
87
+ });
88
+ }
89
+ async function prompt(content) {
90
+ cancelled = false;
91
+ turnCount++;
92
+ unsubscribe = subscribeToEvents();
93
+ try {
94
+ // Check for slash command
95
+ const firstText = content.find((b) => b.type === "text")?.text?.trim();
96
+ if (firstText?.startsWith("/")) {
97
+ return handleSlashCommand(firstText);
98
+ }
99
+ // Extract text and images
100
+ let textContent = "";
101
+ const images = [];
102
+ for (const block of content) {
103
+ if (block.type === "text" && block.text) {
104
+ textContent += block.text;
105
+ }
106
+ else if (block.type === "image" && block.data && block.mimeType) {
107
+ images.push({ data: block.data, mimeType: block.mimeType });
108
+ }
109
+ }
110
+ if (!textContent && images.length === 0) {
111
+ return "end_turn";
112
+ }
113
+ // Convert images to attachment format
114
+ const attachments = images.map((img, idx) => ({
115
+ id: `acp-img-${idx}`,
116
+ type: "image",
117
+ content: img.data,
118
+ mimeType: img.mimeType,
119
+ fileName: `image-${idx}`,
120
+ size: Math.ceil(img.data.length * 0.75),
121
+ }));
122
+ await Effect.runPromise(sessionOrchestrator.submitPromptAndWait(textContent, {
123
+ mode: "followUp",
124
+ attachments: attachments.length > 0 ? attachments : undefined,
125
+ }));
126
+ return cancelled ? "cancelled" : "end_turn";
127
+ }
128
+ finally {
129
+ unsubscribe?.();
130
+ unsubscribe = null;
131
+ }
132
+ }
133
+ function handleSlashCommand(line) {
134
+ const parts = line.slice(1).split(/\s+/);
135
+ const cmd = parts[0]?.toLowerCase();
136
+ const args = parts.slice(1).join(" ");
137
+ switch (cmd) {
138
+ case "model":
139
+ if (args && setModel(args)) {
140
+ emitter.emit(textChunk(`Model switched to ${args}`));
141
+ }
142
+ else if (args) {
143
+ emitter.emit(textChunk(`Unknown model: ${args}. Available: ${models.map((m) => m.modelId).join(", ")}`));
144
+ }
145
+ else {
146
+ emitter.emit(textChunk(`Current model: ${currentModelId}\nAvailable: ${models.map((m) => m.modelId).join(", ")}`));
147
+ }
148
+ break;
149
+ case "thinking": {
150
+ const levels = ["off", "minimal", "low", "medium", "high", "xhigh"];
151
+ if (levels.includes(args)) {
152
+ agent.setThinkingLevel(args);
153
+ thinkingLevel = args;
154
+ emitter.emit(textChunk(`Thinking level set to ${args}`));
155
+ }
156
+ else {
157
+ emitter.emit(textChunk(`Invalid thinking level. Use: ${levels.join(", ")}`));
158
+ }
159
+ break;
160
+ }
161
+ case "status": {
162
+ const provider = currentModelId.includes("/") ? currentModelId.split("/")[0] : "anthropic";
163
+ const fmt = (n) => n >= 1000 ? `${(n / 1000).toFixed(1)}k` : String(n);
164
+ let ctx = `0/${fmt(contextWindow)}`;
165
+ let cache = "";
166
+ if (lastUsage && contextWindow > 0) {
167
+ const pct = ((lastUsage.totalTokens / contextWindow) * 100).toFixed(1);
168
+ ctx = `${fmt(lastUsage.totalTokens)}/${fmt(contextWindow)} (${pct}%)`;
169
+ if (lastUsage.cacheRead)
170
+ cache = ` | cache: ${fmt(lastUsage.cacheRead)} read`;
171
+ }
172
+ const status = `${currentModelId} (${provider}) | ${thinkingLevel} | ${ctx}${cache} | turns: ${turnCount}`;
173
+ emitter.emit(textChunk(status));
174
+ break;
175
+ }
176
+ case "clear":
177
+ agent.reset();
178
+ emitter.emit(textChunk("Conversation cleared"));
179
+ break;
180
+ case "compact":
181
+ emitter.emit(textChunk("Compact not yet implemented in ACP mode"));
182
+ break;
183
+ default:
184
+ emitter.emit(textChunk(`Unknown command: /${cmd}`));
185
+ }
186
+ return "end_turn";
187
+ }
188
+ function cancel() {
189
+ cancelled = true;
190
+ agent.abort();
191
+ }
192
+ function getAvailableCommands() {
193
+ return AVAILABLE_COMMANDS;
194
+ }
195
+ function getModels() {
196
+ return { options: models, currentModelId };
197
+ }
198
+ function setModel(modelId) {
199
+ const success = config.setModel(modelId);
200
+ if (success) {
201
+ currentModelId = modelId;
202
+ emitter.emitModels(models, currentModelId);
203
+ }
204
+ return success;
205
+ }
206
+ return {
207
+ id: sessionId,
208
+ cwd,
209
+ prompt,
210
+ cancel,
211
+ getAvailableCommands,
212
+ getModels,
213
+ setModel,
214
+ };
215
+ }
216
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/adapters/acp/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAEhG,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAyB/B,gCAAgC;AAChC,MAAM,kBAAkB,GAAmB;IAC1C,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,gCAAgC,EAAE;IAChE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,2DAA2D,EAAE;IAC9F,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE;IACtD,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,8BAA8B,EAAE;IAChE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE;CACpD,CAAA;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAwB;IACxD,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAAA;IAC7F,IAAI,cAAc,GAAG,MAAM,CAAC,cAAc,CAAA;IAC1C,IAAI,aAAa,GAAG,MAAM,CAAC,aAAa,CAAA;IACxC,IAAI,SAAS,GAAG,KAAK,CAAA;IACrB,IAAI,WAAW,GAAwB,IAAI,CAAA;IAE3C,sBAAsB;IACtB,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,IAAI,SAAS,GAA4E,IAAI,CAAA;IAE7F,kDAAkD;IAClD,IAAI,kBAAkB,GAAG,CAAC,CAAA;IAC1B,IAAI,sBAAsB,GAAG,CAAC,CAAA;IAE9B,iDAAiD;IACjD,SAAS,iBAAiB;QACzB,kBAAkB,GAAG,CAAC,CAAA;QACtB,sBAAsB,GAAG,CAAC,CAAA;QAE1B,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,KAAiB,EAAE,EAAE;YAC5C,IAAI,SAAS;gBAAE,OAAM;YAErB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACpB,KAAK,gBAAgB;oBACpB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;wBACxC,yCAAyC;wBACzC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAoB,CAAA;wBAClD,IAAI,SAAS,GAAG,EAAE,CAAA;wBAClB,IAAI,aAAa,GAAG,EAAE,CAAA;wBAEtB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;4BAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;gCAAE,SAAQ;4BACzD,MAAM,CAAC,GAAG,KAAgC,CAAA;4BAC1C,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gCACrD,SAAS,IAAI,CAAC,CAAC,IAAI,CAAA;4BACpB,CAAC;iCAAM,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gCACpE,aAAa,IAAI,CAAC,CAAC,QAAQ,CAAA;4BAC5B,CAAC;wBACF,CAAC;wBAED,gCAAgC;wBAChC,IAAI,SAAS,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;4BAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;4BACjD,kBAAkB,GAAG,SAAS,CAAC,MAAM,CAAA;4BACrC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;wBAC/B,CAAC;wBACD,IAAI,aAAa,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;4BACnD,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;4BACzD,sBAAsB,GAAG,aAAa,CAAC,MAAM,CAAA;4BAC7C,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;wBAClC,CAAC;oBACF,CAAC;oBACD,MAAK;gBAEN,KAAK,sBAAsB;oBAC1B,OAAO,CAAC,IAAI,CACX,QAAQ,CACP,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,QAAQ,EACd,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC9B,KAAK,CAAC,IAAI,CACV,CACD,CAAA;oBACD,MAAK;gBAEN,KAAK,uBAAuB;oBAC3B,OAAO,CAAC,IAAI,CACX,cAAc,CACb,KAAK,CAAC,UAAU,EAChB,aAAa,EACb,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CACrE,CACD,CAAA;oBACD,MAAK;gBAEN,KAAK,oBAAoB;oBACxB,OAAO,CAAC,IAAI,CACX,cAAc,CACb,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EACtC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CACvD,CACD,CAAA;oBACD,MAAK;gBAEN,KAAK,aAAa;oBACjB,wCAAwC;oBACxC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;wBACxC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAwF,CAAA;wBAC1G,IAAI,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;4BAC5B,SAAS,GAAG;gCACX,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW;gCAClC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS;gCAC9B,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU;6BAChC,CAAA;wBACF,CAAC;oBACF,CAAC;oBACD,MAAK;YACP,CAAC;QACF,CAAC,CAAC,CAAA;IACH,CAAC;IAED,KAAK,UAAU,MAAM,CAAC,OAAuB;QAC5C,SAAS,GAAG,KAAK,CAAA;QACjB,SAAS,EAAE,CAAA;QACX,WAAW,GAAG,iBAAiB,EAAE,CAAA;QAEjC,IAAI,CAAC;YACJ,0BAA0B;YAC1B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;YACtE,IAAI,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,OAAO,kBAAkB,CAAC,SAAS,CAAC,CAAA;YACrC,CAAC;YAED,0BAA0B;YAC1B,IAAI,WAAW,GAAG,EAAE,CAAA;YACpB,MAAM,MAAM,GAA8C,EAAE,CAAA;YAE5D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACzC,WAAW,IAAI,KAAK,CAAC,IAAI,CAAA;gBAC1B,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACnE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAC5D,CAAC;YACF,CAAC;YAED,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzC,OAAO,UAAU,CAAA;YAClB,CAAC;YAED,sCAAsC;YACtC,MAAM,WAAW,GAAiB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC3D,EAAE,EAAE,WAAW,GAAG,EAAE;gBACpB,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,GAAG,CAAC,IAAI;gBACjB,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,QAAQ,EAAE,SAAS,GAAG,EAAE;gBACxB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;aACvC,CAAC,CAAC,CAAA;YAEH,MAAM,MAAM,CAAC,UAAU,CACtB,mBAAmB,CAAC,mBAAmB,CAAC,WAAW,EAAE;gBACpD,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;aAC7D,CAAC,CACF,CAAA;YAED,OAAO,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAA;QAC5C,CAAC;gBAAS,CAAC;YACV,WAAW,EAAE,EAAE,CAAA;YACf,WAAW,GAAG,IAAI,CAAA;QACnB,CAAC;IACF,CAAC;IAED,SAAS,kBAAkB,CAAC,IAAY;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACxC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAA;QACnC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAErC,QAAQ,GAAG,EAAE,CAAC;YACb,KAAK,OAAO;gBACX,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAA;gBACrD,CAAC;qBAAM,IAAI,IAAI,EAAE,CAAC;oBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,IAAI,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;gBACzG,CAAC;qBAAM,CAAC;oBACP,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,cAAc,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;gBACnH,CAAC;gBACD,MAAK;YAEN,KAAK,UAAU,CAAC,CAAC,CAAC;gBACjB,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;gBACnE,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC3B,KAAK,CAAC,gBAAgB,CAAC,IAA+D,CAAC,CAAA;oBACvF,aAAa,GAAG,IAAI,CAAA;oBACpB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC,CAAA;gBACzD,CAAC;qBAAM,CAAC;oBACP,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,gCAAgC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC7E,CAAC;gBACD,MAAK;YACN,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACf,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;gBAC1F,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;gBAC9E,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,aAAa,CAAC,EAAE,CAAA;gBACnC,IAAI,KAAK,GAAG,EAAE,CAAA;gBACd,IAAI,SAAS,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;oBACpC,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,GAAG,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;oBACtE,GAAG,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAA;oBACrE,IAAI,SAAS,CAAC,SAAS;wBAAE,KAAK,GAAG,aAAa,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAA;gBAC9E,CAAC;gBACD,MAAM,MAAM,GAAG,GAAG,cAAc,KAAK,QAAQ,OAAO,aAAa,MAAM,GAAG,GAAG,KAAK,aAAa,SAAS,EAAE,CAAA;gBAC1G,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;gBAC/B,MAAK;YACN,CAAC;YAED,KAAK,OAAO;gBACX,KAAK,CAAC,KAAK,EAAE,CAAA;gBACb,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAA;gBAC/C,MAAK;YAEN,KAAK,SAAS;gBACb,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC,CAAA;gBAClE,MAAK;YAEN;gBACC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC,CAAA;QACrD,CAAC;QAED,OAAO,UAAU,CAAA;IAClB,CAAC;IAED,SAAS,MAAM;QACd,SAAS,GAAG,IAAI,CAAA;QAChB,KAAK,CAAC,KAAK,EAAE,CAAA;IACd,CAAC;IAED,SAAS,oBAAoB;QAC5B,OAAO,kBAAkB,CAAA;IAC1B,CAAC;IAED,SAAS,SAAS;QACjB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;IAC3C,CAAC;IAED,SAAS,QAAQ,CAAC,OAAe;QAChC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QACxC,IAAI,OAAO,EAAE,CAAC;YACb,cAAc,GAAG,OAAO,CAAA;YACxB,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;QAC3C,CAAC;QACD,OAAO,OAAO,CAAA;IACf,CAAC;IAED,OAAO;QACN,EAAE,EAAE,SAAS;QACb,GAAG;QACH,MAAM;QACN,MAAM;QACN,oBAAoB;QACpB,SAAS;QACT,QAAQ;KACR,CAAA;AACF,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * ACP session/update notification emitter
3
+ * Bridges agent events to ACP protocol notifications
4
+ */
5
+ import type { SessionUpdate, SlashCommand, ModelOption, ToolCallKind, ToolCallStatus, JsonRpcNotification } from "./protocol.js";
6
+ export interface UpdateEmitter {
7
+ emit(update: SessionUpdate): void;
8
+ emitCommands(commands: SlashCommand[]): void;
9
+ emitModels(availableModels: ModelOption[], currentModelId: string): void;
10
+ }
11
+ export declare function createUpdateEmitter(sessionId: string, write: (notification: JsonRpcNotification) => void): UpdateEmitter;
12
+ export declare function textChunk(text: string): SessionUpdate;
13
+ export declare function thoughtChunk(text: string): SessionUpdate;
14
+ export declare function toolCall(toolCallId: string, title: string, kind: ToolCallKind, rawInput?: unknown): SessionUpdate;
15
+ export declare function toolCallUpdate(toolCallId: string, status: ToolCallStatus, content?: string, title?: string): SessionUpdate;
16
+ export declare function toolNameToKind(name: string): ToolCallKind;
17
+ //# sourceMappingURL=updates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updates.d.ts","sourceRoot":"","sources":["../../../src/adapters/acp/updates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACX,aAAa,EAEb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,MAAM,eAAe,CAAA;AAGtB,MAAM,WAAW,aAAa;IAC7B,IAAI,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;IACjC,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;IAC5C,UAAU,CAAC,eAAe,EAAE,WAAW,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CACxE;AAED,wBAAgB,mBAAmB,CAClC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,CAAC,YAAY,EAAE,mBAAmB,KAAK,IAAI,GAChD,aAAa,CAiBf;AAMD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAErD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAExD;AAED,wBAAgB,QAAQ,CACvB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,YAAY,EAClB,QAAQ,CAAC,EAAE,OAAO,GAChB,aAAa,CASf;AAED,wBAAgB,cAAc,CAC7B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,GACZ,aAAa,CAQf;AAGD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAOzD"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * ACP session/update notification emitter
3
+ * Bridges agent events to ACP protocol notifications
4
+ */
5
+ import { makeNotification } from "./protocol.js";
6
+ export function createUpdateEmitter(sessionId, write) {
7
+ const emit = (update) => {
8
+ const params = { sessionId, update };
9
+ write(makeNotification("session/update", params));
10
+ };
11
+ return {
12
+ emit,
13
+ emitCommands(commands) {
14
+ emit({ sessionUpdate: "available_commands_update", availableCommands: commands });
15
+ },
16
+ emitModels(availableModels, currentModelId) {
17
+ emit({ sessionUpdate: "models_update", models: { availableModels, currentModelId } });
18
+ },
19
+ };
20
+ }
21
+ // ============================================================================
22
+ // Convenience builders for common updates
23
+ // ============================================================================
24
+ export function textChunk(text) {
25
+ return { sessionUpdate: "agent_message_chunk", content: { type: "text", text } };
26
+ }
27
+ export function thoughtChunk(text) {
28
+ return { sessionUpdate: "agent_thought_chunk", content: { type: "text", text } };
29
+ }
30
+ export function toolCall(toolCallId, title, kind, rawInput) {
31
+ return {
32
+ sessionUpdate: "tool_call",
33
+ toolCallId,
34
+ title,
35
+ kind,
36
+ status: "pending",
37
+ rawInput,
38
+ };
39
+ }
40
+ export function toolCallUpdate(toolCallId, status, content, title) {
41
+ return {
42
+ sessionUpdate: "tool_call_update",
43
+ toolCallId,
44
+ status,
45
+ title,
46
+ content: content ? [{ type: "text", text: content }] : undefined,
47
+ };
48
+ }
49
+ // Map tool names to ACP kinds
50
+ export function toolNameToKind(name) {
51
+ const lower = name.toLowerCase();
52
+ if (lower === "read" || lower.includes("read"))
53
+ return "read";
54
+ if (lower === "write" || lower.includes("write"))
55
+ return "write";
56
+ if (lower === "edit" || lower.includes("edit"))
57
+ return "edit";
58
+ if (lower === "bash" || lower === "command" || lower.includes("terminal"))
59
+ return "command";
60
+ return "other";
61
+ }
62
+ //# sourceMappingURL=updates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updates.js","sourceRoot":"","sources":["../../../src/adapters/acp/updates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAQhD,MAAM,UAAU,mBAAmB,CAClC,SAAiB,EACjB,KAAkD;IAElD,MAAM,IAAI,GAAG,CAAC,MAAqB,EAAQ,EAAE;QAC5C,MAAM,MAAM,GAAwB,EAAE,SAAS,EAAE,MAAM,EAAE,CAAA;QACzD,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAA;IAClD,CAAC,CAAA;IAED,OAAO;QACN,IAAI;QAEJ,YAAY,CAAC,QAAwB;YACpC,IAAI,CAAC,EAAE,aAAa,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,CAAA;QAClF,CAAC;QAED,UAAU,CAAC,eAA8B,EAAE,cAAsB;YAChE,IAAI,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,cAAc,EAAE,EAAE,CAAC,CAAA;QACtF,CAAC;KACD,CAAA;AACF,CAAC;AAED,+EAA+E;AAC/E,0CAA0C;AAC1C,+EAA+E;AAE/E,MAAM,UAAU,SAAS,CAAC,IAAY;IACrC,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAA;AACjF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACxC,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAA;AACjF,CAAC;AAED,MAAM,UAAU,QAAQ,CACvB,UAAkB,EAClB,KAAa,EACb,IAAkB,EAClB,QAAkB;IAElB,OAAO;QACN,aAAa,EAAE,WAAW;QAC1B,UAAU;QACV,KAAK;QACL,IAAI;QACJ,MAAM,EAAE,SAAS;QACjB,QAAQ;KACR,CAAA;AACF,CAAC;AAED,MAAM,UAAU,cAAc,CAC7B,UAAkB,EAClB,MAAsB,EACtB,OAAgB,EAChB,KAAc;IAEd,OAAO;QACN,aAAa,EAAE,kBAAkB;QACjC,UAAU;QACV,MAAM;QACN,KAAK;QACL,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;KACzE,CAAA;AACF,CAAC;AAED,8BAA8B;AAC9B,MAAM,UAAU,cAAc,CAAC,IAAY;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IAChC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAA;IAC7D,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAA;IAChE,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAA;IAC7D,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAA;IAC3F,OAAO,OAAO,CAAA;AACf,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type RuntimeInitArgs } from "../../runtime/factory.js";
2
+ interface HeadlessArgs extends RuntimeInitArgs {
3
+ prompt?: string;
4
+ }
5
+ export declare const runHeadless: (args: HeadlessArgs) => Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=headless.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/headless.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAiCzE,UAAU,YAAa,SAAQ,eAAe;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAA;CACf;AAED,eAAO,MAAM,WAAW,GAAU,MAAM,YAAY,kBAwEnD,CAAA"}
@@ -0,0 +1,93 @@
1
+ import { Effect } from "effect";
2
+ import { createRuntime } from "../../runtime/factory.js";
3
+ const readStdin = async () => {
4
+ const chunks = [];
5
+ for await (const chunk of process.stdin)
6
+ chunks.push(Buffer.from(chunk));
7
+ return Buffer.concat(chunks).toString("utf8");
8
+ };
9
+ const textFromBlocks = (blocks) => {
10
+ const parts = [];
11
+ for (const block of blocks) {
12
+ if (block.type === "text")
13
+ parts.push(block.text);
14
+ }
15
+ return parts.join("");
16
+ };
17
+ const renderMessage = (message) => {
18
+ if (message.role === "user") {
19
+ if (typeof message.content === "string")
20
+ return message.content;
21
+ return textFromBlocks(message.content);
22
+ }
23
+ if (message.role === "assistant") {
24
+ const parts = [];
25
+ for (const block of message.content) {
26
+ if (block.type === "text")
27
+ parts.push(block.text);
28
+ }
29
+ return parts.join("");
30
+ }
31
+ return textFromBlocks(message.content);
32
+ };
33
+ export const runHeadless = async (args) => {
34
+ const runtime = await createRuntime({
35
+ configDir: args.configDir,
36
+ configPath: args.configPath,
37
+ provider: args.provider,
38
+ model: args.model,
39
+ thinking: args.thinking,
40
+ }, "headless");
41
+ // Initialize hooks with no-op handlers for headless mode (single-shot, no UI)
42
+ runtime.hookRunner.initialize({
43
+ sendHandler: () => { },
44
+ sendMessageHandler: () => { },
45
+ sendUserMessageHandler: async () => { },
46
+ steerHandler: async () => { },
47
+ followUpHandler: async () => { },
48
+ isIdleHandler: () => true,
49
+ appendEntryHandler: (customType, data) => runtime.sessionManager.appendEntry(customType, data),
50
+ getSessionId: () => runtime.sessionManager.sessionId,
51
+ getModel: () => runtime.agent.state.model,
52
+ hasUI: false,
53
+ });
54
+ const prompt = (args.prompt ?? (await readStdin())).trim();
55
+ if (!prompt) {
56
+ process.stdout.write(JSON.stringify({ ok: false, error: "Empty prompt" }) + "\n");
57
+ process.exitCode = 2;
58
+ return;
59
+ }
60
+ try {
61
+ await Effect.runPromise(runtime.sessionOrchestrator.submitPromptAndWait(prompt, { mode: "followUp" }));
62
+ const conversation = runtime.agent.state.messages.filter((m) => {
63
+ const role = m.role;
64
+ return role === "user" || role === "assistant" || role === "toolResult";
65
+ });
66
+ const lastAssistant = [...conversation].reverse().find((m) => m.role === "assistant");
67
+ const assistant = lastAssistant ? renderMessage(lastAssistant) : "";
68
+ process.stdout.write(JSON.stringify({
69
+ ok: true,
70
+ provider: runtime.config.provider,
71
+ model: runtime.config.modelId,
72
+ prompt,
73
+ assistant,
74
+ validationIssues: runtime.validationIssues,
75
+ }) + "\n");
76
+ }
77
+ catch (err) {
78
+ process.stdout.write(JSON.stringify({
79
+ ok: false,
80
+ provider: runtime.config.provider,
81
+ model: runtime.config.modelId,
82
+ prompt,
83
+ assistant: "",
84
+ error: err instanceof Error ? err.message : String(err),
85
+ validationIssues: runtime.validationIssues,
86
+ }) + "\n");
87
+ process.exitCode = 1;
88
+ }
89
+ finally {
90
+ await runtime.close().catch(() => { });
91
+ }
92
+ };
93
+ //# sourceMappingURL=headless.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headless.js","sourceRoot":"","sources":["../../../src/adapters/cli/headless.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { RuntimeInitArgs } from "../../runtime/factory.js";
2
+ export declare const runValidate: (args?: RuntimeInitArgs) => Promise<void>;
3
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/validate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAO1D,eAAO,MAAM,WAAW,GAAU,OAAM,eAAoB,KAAG,OAAO,CAAC,IAAI,CAuC1E,CAAA"}
@@ -0,0 +1,40 @@
1
+ import { createToolRegistry } from "@yeshwanthyk/base-tools";
2
+ import { loadAppConfig } from "../../config.js";
3
+ import { loadCustomCommands } from "@yeshwanthyk/runtime-effect/extensibility/custom-commands.js";
4
+ import { loadExtensibility } from "@yeshwanthyk/runtime-effect/extensibility/index.js";
5
+ import { formatValidationIssue, hasBlockingIssues } from "../../extensibility/validation.js";
6
+ import { SessionManager } from "../../session-manager.js";
7
+ export const runValidate = async (args = {}) => {
8
+ const loaded = await loadAppConfig({
9
+ configDir: args.configDir,
10
+ configPath: args.configPath,
11
+ provider: args.provider,
12
+ model: args.model,
13
+ thinking: args.thinking,
14
+ });
15
+ const { issues: commandIssues } = loadCustomCommands(loaded.configDir);
16
+ const sendRef = { current: () => { } };
17
+ const sessionManager = new SessionManager(loaded.configDir);
18
+ const builtinToolNames = Object.keys(createToolRegistry(process.cwd()));
19
+ const extensibility = await loadExtensibility({
20
+ configDir: loaded.configDir,
21
+ cwd: process.cwd(),
22
+ sendRef,
23
+ builtinToolNames,
24
+ hasUI: false,
25
+ sessionManager,
26
+ });
27
+ const issues = [...commandIssues, ...extensibility.validationIssues];
28
+ if (issues.length === 0) {
29
+ process.stdout.write("No validation issues found.\n");
30
+ return;
31
+ }
32
+ process.stdout.write(`Found ${issues.length} validation issue${issues.length === 1 ? "" : "s"}:\n`);
33
+ for (const issue of issues) {
34
+ process.stdout.write(`${formatValidationIssue(issue)}\n`);
35
+ }
36
+ if (hasBlockingIssues(issues)) {
37
+ process.exitCode = 1;
38
+ }
39
+ };
40
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/adapters/cli/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8DAA8D,CAAA;AAEjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAA;AACtF,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAG7E,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAEzD,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,OAAwB,EAAE,EAAiB,EAAE;IAC9E,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;QAClC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACvB,CAAC,CAAA;IAEF,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACtE,MAAM,OAAO,GAAY,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAA;IAC9C,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAE3D,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAEvE,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC;QAC7C,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,OAAO;QACP,gBAAgB;QAChB,KAAK,EAAE,KAAK;QACZ,cAAc;KACd,CAAC,CAAA;IAEF,MAAM,MAAM,GAAsB,CAAC,GAAG,aAAa,EAAE,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAA;IAEvF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAA;QACrD,OAAM;IACP,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,MAAM,CAAC,MAAM,oBAAoB,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAA;IACnG,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC1D,CAAC;IAED,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;IACrB,CAAC;AACF,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { type RuntimeInitArgs } from "../../runtime/factory.js";
2
+ interface RunTuiArgs extends RuntimeInitArgs {
3
+ continueSession?: boolean;
4
+ resumeSession?: boolean;
5
+ }
6
+ export declare const runTuiOpen: (args?: RunTuiArgs) => Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/adapters/tui/app.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAKzE,UAAU,UAAW,SAAQ,eAAe;IAC3C,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,aAAa,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,eAAO,MAAM,UAAU,GAAU,OAAO,UAAU,kBA0BjD,CAAA"}
@@ -0,0 +1,25 @@
1
+ import { render } from "@opentui/solid";
2
+ import { RuntimeProvider } from "../../runtime/context.js";
3
+ import { createRuntime } from "../../runtime/factory.js";
4
+ import { selectSession as selectSessionOpen } from "../../session-picker.js";
5
+ import { TuiApp } from "../../ui/app-shell/TuiApp.js";
6
+ export const runTuiOpen = async (args) => {
7
+ const runtime = await createRuntime(args, "tui");
8
+ const { sessionManager } = runtime;
9
+ let initialSession = null;
10
+ if (args?.resumeSession) {
11
+ const selectedPath = await selectSessionOpen(sessionManager);
12
+ if (selectedPath === null) {
13
+ process.stdout.write("No session selected\n");
14
+ return;
15
+ }
16
+ initialSession = sessionManager.loadSession(selectedPath);
17
+ }
18
+ if (args?.continueSession && !initialSession) {
19
+ initialSession = sessionManager.loadLatest();
20
+ }
21
+ render(() => (<RuntimeProvider runtime={runtime}>
22
+ <TuiApp initialSession={initialSession}/>
23
+ </RuntimeProvider>), { targetFps: 30, exitOnCtrlC: false, useKittyKeyboard: {} });
24
+ };
25
+ //# sourceMappingURL=app.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.jsx","sourceRoot":"","sources":["../../../src/adapters/tui/app.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAwB,MAAM,qBAAqB,CAAA;AAEzE,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAOhD,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,IAAiB,EAAE,EAAE;IACrD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAChD,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAA;IAClC,IAAI,cAAc,GAAyB,IAAI,CAAA;IAE/C,IAAI,IAAI,EAAE,aAAa,EAAE,CAAC;QACzB,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,cAAc,CAAC,CAAA;QAC5D,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;YAC7C,OAAM;QACP,CAAC;QACD,cAAc,GAAG,cAAc,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;IAC1D,CAAC;IAED,IAAI,IAAI,EAAE,eAAe,IAAI,CAAC,cAAc,EAAE,CAAC;QAC9C,cAAc,GAAG,cAAc,CAAC,UAAU,EAAE,CAAA;IAC7C,CAAC;IAED,MAAM,CACL,GAAG,EAAE,CAAC,CACL,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CACjC;IAAA,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,EACxC;GAAA,EAAE,eAAe,CAAC,CAClB,EACD,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAC3D,CAAA;AACF,CAAC,CAAA"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Agent event handler for TUI application
3
+ */
4
+ import type { AgentEvent } from "@yeshwanthyk/agent-core";
5
+ import type { AgentToolResult } from "@yeshwanthyk/ai";
6
+ import type { Theme } from "@yeshwanthyk/open-tui";
7
+ import type { JSX } from "solid-js";
8
+ import type { SessionManager } from "./session-manager.js";
9
+ import type { UIMessage, ToolBlock, ActivityState } from "./types.js";
10
+ import type { PromptQueue } from "./hooks/usePromptQueue.js";
11
+ import type { HookRunner } from "./hooks/index.js";
12
+ import type { RenderResultOptions } from "@yeshwanthyk/runtime-effect/extensibility/custom-tools/types.js";
13
+ /** Tool metadata for UI rendering */
14
+ export interface ToolMeta {
15
+ label: string;
16
+ source: "builtin" | "custom";
17
+ sourcePath?: string;
18
+ renderCall?: (args: any, theme: Theme) => JSX.Element;
19
+ renderResult?: (result: AgentToolResult<any>, opts: RenderResultOptions, theme: Theme) => JSX.Element;
20
+ }
21
+ export interface EventHandlerContext {
22
+ setMessages: (updater: (prev: UIMessage[]) => UIMessage[]) => void;
23
+ setToolBlocks: (updater: (prev: ToolBlock[]) => ToolBlock[]) => void;
24
+ setActivityState: (s: ActivityState) => void;
25
+ setIsResponding: (v: boolean) => void;
26
+ setContextTokens: (v: number) => void;
27
+ setCacheStats: (v: {
28
+ cacheRead: number;
29
+ input: number;
30
+ } | null) => void;
31
+ setRetryStatus: (v: string | null) => void;
32
+ setTurnCount: (v: number) => void;
33
+ promptQueue: PromptQueue;
34
+ sessionManager: SessionManager;
35
+ streamingMessageId: {
36
+ current: string | null;
37
+ };
38
+ retryConfig: {
39
+ enabled: boolean;
40
+ maxRetries: number;
41
+ baseDelayMs: number;
42
+ };
43
+ retryablePattern: RegExp;
44
+ retryState: {
45
+ attempt: number;
46
+ abortController: AbortController | null;
47
+ };
48
+ agent: {
49
+ state: {
50
+ messages: unknown[];
51
+ };
52
+ replaceMessages: (messages: unknown[]) => void;
53
+ continue: () => Promise<void>;
54
+ };
55
+ hookRunner?: HookRunner;
56
+ toolByName?: Map<string, ToolMeta>;
57
+ getContextWindow?: () => number;
58
+ }
59
+ export type AgentEventHandler = ((event: AgentEvent) => void) & {
60
+ dispose: () => void;
61
+ };
62
+ export declare function createAgentEventHandler(ctx: EventHandlerContext): AgentEventHandler;
63
+ //# sourceMappingURL=agent-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-events.d.ts","sourceRoot":"","sources":["../src/agent-events.ts"],"names":[],"mappings":"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"}