@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,26 @@
1
+ import { getProviders } from '@yeshwanthyk/ai';
2
+ type KnownProvider = ReturnType<typeof getProviders>[number];
3
+ export interface AutocompleteContext {
4
+ currentProvider: KnownProvider;
5
+ }
6
+ export interface SlashCommand {
7
+ name: string;
8
+ description: string;
9
+ getArgumentCompletions?: (argumentText: string, ctx: AutocompleteContext) => Array<{
10
+ value: string;
11
+ label: string;
12
+ description?: string;
13
+ }>;
14
+ }
15
+ export declare const slashCommands: SlashCommand[];
16
+ export declare function createAutocompleteCommands(getContext: () => AutocompleteContext): {
17
+ name: string;
18
+ description: string;
19
+ getArgumentCompletions: ((text: string) => {
20
+ value: string;
21
+ label: string;
22
+ description?: string;
23
+ }[]) | undefined;
24
+ }[];
25
+ export {};
26
+ //# sourceMappingURL=autocomplete-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocomplete-commands.d.ts","sourceRoot":"","sources":["../src/autocomplete-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI1D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,aAAa,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,mBAAmB,KAAK,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5I;AASD,eAAO,MAAM,aAAa,EAAE,YAAY,EAoEvC,CAAC;AAEF,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,mBAAmB;;;oCAKjE,MAAM;eArFyE,MAAM;eAAS,MAAM;sBAAgB,MAAM;;IAwFxI"}
@@ -0,0 +1,82 @@
1
+ import { getModels, getProviders } from '@yeshwanthyk/ai';
2
+ import { THEME_NAMES } from "./theme-names.js";
3
+ const resolveProvider = (raw) => {
4
+ const trimmed = raw.trim();
5
+ if (!trimmed)
6
+ return undefined;
7
+ const providers = getProviders();
8
+ return providers.includes(trimmed) ? trimmed : undefined;
9
+ };
10
+ export const slashCommands = [
11
+ { name: 'clear', description: 'Clear chat + reset agent' },
12
+ { name: 'compact', description: 'Compact context into summary + start fresh' },
13
+ { name: 'conceal', description: 'Toggle markdown conceal mode (hide syntax chars)' },
14
+ { name: 'diffwrap', description: 'Toggle diff word wrap mode' },
15
+ { name: 'abort', description: 'Abort in-flight request' },
16
+ { name: 'exit', description: 'Exit' },
17
+ { name: 'status', description: 'Show session status (model, context, turns)' },
18
+ { name: 'steer', description: 'Interrupt current run: /steer <text>' },
19
+ { name: 'followup', description: 'Queue follow-up text: /followup <text>' },
20
+ {
21
+ name: 'theme',
22
+ description: 'Set theme: /theme <name> (or /theme to list)',
23
+ getArgumentCompletions: (argumentText) => {
24
+ const prefix = argumentText.trim().toLowerCase();
25
+ return THEME_NAMES
26
+ .filter((t) => t.startsWith(prefix))
27
+ .map((t) => ({ value: t, label: t }));
28
+ },
29
+ },
30
+ { name: 'editor', description: 'Open configured editor' },
31
+ {
32
+ name: 'model',
33
+ description: 'Set model: /model <provider> <modelId> (or /model <modelId>)',
34
+ getArgumentCompletions: (argumentText, ctx) => {
35
+ const text = argumentText.trimStart();
36
+ const providers = getProviders();
37
+ const providerItems = (prefix) => providers
38
+ .filter((p) => p.toLowerCase().startsWith(prefix.toLowerCase()))
39
+ .map((p) => ({ value: `${p} `, label: p, description: 'provider' }));
40
+ const spaceIdx = text.search(/\s/);
41
+ if (!text || spaceIdx === -1) {
42
+ const prefix = text;
43
+ const models = getModels(ctx.currentProvider)
44
+ .filter((m) => m.id.toLowerCase().startsWith(prefix.toLowerCase()))
45
+ .slice(0, 50)
46
+ .map((m) => ({ value: m.id, label: m.id, description: m.name }));
47
+ return [...providerItems(prefix), ...models];
48
+ }
49
+ const providerToken = text.slice(0, spaceIdx);
50
+ const provider = resolveProvider(providerToken);
51
+ if (!provider) {
52
+ return providerItems(providerToken);
53
+ }
54
+ const modelPrefix = text.slice(spaceIdx + 1).trimStart();
55
+ return getModels(provider)
56
+ .filter((m) => m.id.toLowerCase().startsWith(modelPrefix.toLowerCase()))
57
+ .slice(0, 50)
58
+ .map((m) => ({ value: `${provider} ${m.id}`, label: m.id, description: m.name }));
59
+ },
60
+ },
61
+ {
62
+ name: 'thinking',
63
+ description: 'Set thinking: /thinking off|minimal|low|medium|high|xhigh',
64
+ getArgumentCompletions: (argumentPrefix) => {
65
+ const levels = ['off', 'minimal', 'low', 'medium', 'high', 'xhigh'];
66
+ const prefix = argumentPrefix.trim().toLowerCase();
67
+ return levels
68
+ .filter((level) => level.startsWith(prefix))
69
+ .map((level) => ({ value: level, label: level }));
70
+ },
71
+ },
72
+ ];
73
+ export function createAutocompleteCommands(getContext) {
74
+ return slashCommands.map((cmd) => ({
75
+ name: cmd.name,
76
+ description: cmd.description,
77
+ getArgumentCompletions: cmd.getArgumentCompletions
78
+ ? (text) => cmd.getArgumentCompletions(text, getContext())
79
+ : undefined,
80
+ }));
81
+ }
82
+ //# sourceMappingURL=autocomplete-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocomplete-commands.js","sourceRoot":"","sources":["../src/autocomplete-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { CommandRegistry } from "./domain/commands/registry.js";
2
+ import { resolveModel, resolveProvider } from "./domain/commands/helpers.js";
3
+ import { THINKING_LEVELS, type CommandContext } from "./domain/commands/types.js";
4
+ import type { CommandDefinition } from "./domain/commands/types.js";
5
+ export declare const commandRegistry: CommandRegistry;
6
+ export declare const registerCommand: (definition: CommandDefinition) => void;
7
+ export declare const handleSlashCommand: (line: string, ctx: CommandContext) => Promise<boolean>;
8
+ export { THINKING_LEVELS, resolveProvider, resolveModel, CommandRegistry };
9
+ export type { CommandContext, CommandDefinition };
10
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC3E,OAAO,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAChF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAOlE,eAAO,MAAM,eAAe,iBAAW,CAAA;AAEvC,eAAO,MAAM,eAAe,GAAI,YAAY,iBAAiB,KAAG,IAE/D,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,EAAE,KAAK,cAAc,qBAEnE,CAAA;AAED,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,CAAA;AAC1E,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,CAAA"}
@@ -0,0 +1,17 @@
1
+ import { builtinCommands } from "./domain/commands/builtin/index.js";
2
+ import { CommandRegistry } from "./domain/commands/registry.js";
3
+ import { resolveModel, resolveProvider } from "./domain/commands/helpers.js";
4
+ import { THINKING_LEVELS } from "./domain/commands/types.js";
5
+ const registry = new CommandRegistry();
6
+ for (const command of builtinCommands) {
7
+ registry.register(command);
8
+ }
9
+ export const commandRegistry = registry;
10
+ export const registerCommand = (definition) => {
11
+ registry.register(definition);
12
+ };
13
+ export const handleSlashCommand = (line, ctx) => {
14
+ return registry.execute(line, ctx);
15
+ };
16
+ export { THINKING_LEVELS, resolveProvider, resolveModel, CommandRegistry };
17
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC3E,OAAO,EAAE,eAAe,EAAuB,MAAM,2BAA2B,CAAA;AAGhF,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAA;AACtC,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AAC3B,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAA;AAEvC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,UAA6B,EAAQ,EAAE;IACtE,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;AAC9B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAE,GAAmB,EAAE,EAAE;IACvE,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AACnC,CAAC,CAAA;AAED,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,CAAA"}
@@ -0,0 +1,42 @@
1
+ import type { Agent, AppMessage } from '@yeshwanthyk/agent-core';
2
+ import { type Message } from '@yeshwanthyk/ai';
3
+ import type { CodexTransport } from '@yeshwanthyk/agent-core';
4
+ /**
5
+ * Tracks file operations across messages for deterministic file list generation.
6
+ */
7
+ export interface FileOperations {
8
+ read: Set<string>;
9
+ written: Set<string>;
10
+ edited: Set<string>;
11
+ }
12
+ /**
13
+ * Extract file operations from all messages.
14
+ */
15
+ export declare function extractAllFileOps(messages: Message[]): FileOperations;
16
+ /**
17
+ * Format file operations as XML tags for appending to summary.
18
+ * Modified files = edited ∪ written
19
+ * Read files = read - modified (files only read, not modified)
20
+ */
21
+ export declare function formatFileOperations(fileOps: FileOperations): string;
22
+ export declare const SUMMARY_PREFIX = "The conversation history before this point was compacted into the following summary:\n\n<summary>\n";
23
+ export declare const SUMMARY_SUFFIX = "\n</summary>";
24
+ export interface CompactResult {
25
+ summary: string;
26
+ summaryMessage: AppMessage;
27
+ fileOps: FileOperations;
28
+ }
29
+ export interface CompactOptions {
30
+ agent: Agent;
31
+ currentProvider: string;
32
+ getApiKey: (provider: string) => string | undefined;
33
+ codexTransport: CodexTransport;
34
+ customInstructions?: string;
35
+ previousSummary?: string;
36
+ previousFileOps?: {
37
+ readFiles: string[];
38
+ modifiedFiles: string[];
39
+ };
40
+ }
41
+ export declare function handleCompact(opts: CompactOptions): Promise<CompactResult>;
42
+ //# sourceMappingURL=compact-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compact-handler.d.ts","sourceRoot":"","sources":["../src/compact-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAkB,KAAK,OAAO,EAAoB,MAAM,iBAAiB,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACrB;AA4BD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,cAAc,CAYrE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAgBpE;AAED,eAAO,MAAM,cAAc,wGAG1B,CAAC;AAEF,eAAO,MAAM,cAAc,iBAChB,CAAC;AAkFZ,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,UAAU,CAAC;IAC3B,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACpD,cAAc,EAAE,cAAc,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,aAAa,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACpE;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAwFhF"}
@@ -0,0 +1,211 @@
1
+ import { completeSimple } from '@yeshwanthyk/ai';
2
+ /**
3
+ * Extract file operations from a single message's tool calls.
4
+ */
5
+ function extractFileOpsFromMessage(message, fileOps) {
6
+ if (message.role !== 'assistant')
7
+ return;
8
+ for (const block of message.content) {
9
+ if (block.type !== 'toolCall')
10
+ continue;
11
+ const path = block.arguments?.path;
12
+ if (typeof path !== 'string')
13
+ continue;
14
+ switch (block.name) {
15
+ case 'read':
16
+ fileOps.read.add(path);
17
+ break;
18
+ case 'write':
19
+ fileOps.written.add(path);
20
+ break;
21
+ case 'edit':
22
+ fileOps.edited.add(path);
23
+ break;
24
+ }
25
+ }
26
+ }
27
+ /**
28
+ * Extract file operations from all messages.
29
+ */
30
+ export function extractAllFileOps(messages) {
31
+ const fileOps = {
32
+ read: new Set(),
33
+ written: new Set(),
34
+ edited: new Set(),
35
+ };
36
+ for (const msg of messages) {
37
+ extractFileOpsFromMessage(msg, fileOps);
38
+ }
39
+ return fileOps;
40
+ }
41
+ /**
42
+ * Format file operations as XML tags for appending to summary.
43
+ * Modified files = edited ∪ written
44
+ * Read files = read - modified (files only read, not modified)
45
+ */
46
+ export function formatFileOperations(fileOps) {
47
+ const modified = new Set([...fileOps.edited, ...fileOps.written]);
48
+ const readOnly = [...fileOps.read].filter(f => !modified.has(f)).sort();
49
+ const modifiedList = [...modified].sort();
50
+ let result = '';
51
+ if (readOnly.length > 0) {
52
+ result += `\n\n<read-files>\n${readOnly.join('\n')}\n</read-files>`;
53
+ }
54
+ if (modifiedList.length > 0) {
55
+ result += `\n\n<modified-files>\n${modifiedList.join('\n')}\n</modified-files>`;
56
+ }
57
+ return result;
58
+ }
59
+ export const SUMMARY_PREFIX = `The conversation history before this point was compacted into the following summary:
60
+
61
+ <summary>
62
+ `;
63
+ export const SUMMARY_SUFFIX = `
64
+ </summary>`;
65
+ const SUMMARIZATION_PROMPT = `You are performing a CONTEXT CHECKPOINT COMPACTION. Create a handoff summary for another LLM.
66
+
67
+ Use this EXACT format:
68
+
69
+ ## Goal
70
+ [What is the user trying to accomplish? Can be multiple items if the session covers different tasks.]
71
+
72
+ ## Constraints & Preferences
73
+ - [Any constraints, preferences, or requirements mentioned by user]
74
+ - [Or "(none)" if none were mentioned]
75
+
76
+ ## Progress
77
+ ### Done
78
+ - [x] [Completed task with relevant file paths]
79
+
80
+ ### In Progress
81
+ - [ ] [Current work being done]
82
+
83
+ ### Blocked
84
+ - [Issues preventing progress, if any, or "(none)"]
85
+
86
+ ## Key Decisions
87
+ - **[Decision]**: [Brief rationale]
88
+ - [Or "(none)" if no significant decisions]
89
+
90
+ ## Next Steps
91
+ 1. [Immediate next action]
92
+ 2. [Following actions in order]
93
+
94
+ ## Critical Context
95
+ - [Data, examples, error messages, or references needed to continue]
96
+ - [Or "(none)" if not applicable]
97
+
98
+ IMPORTANT:
99
+ - Be concise but preserve ALL important details
100
+ - Include exact file paths, function names, error messages
101
+ - Preserve any code snippets or data the next LLM will need`;
102
+ const UPDATE_SUMMARIZATION_PROMPT = `You are performing a CONTEXT CHECKPOINT COMPACTION. The previous summary is provided in <previous-summary> tags. Update it with information from the NEW messages above.
103
+
104
+ RULES:
105
+ - PRESERVE all existing information from the previous summary
106
+ - ADD new progress, decisions, and context from the new messages
107
+ - UPDATE the Progress section: move items from "In Progress" to "Done" when completed
108
+ - UPDATE "Next Steps" based on what was accomplished
109
+ - PRESERVE exact file paths, function names, and error messages
110
+ - If something is no longer relevant, you may remove it
111
+ - Keep the same structured format
112
+
113
+ Use this EXACT format:
114
+
115
+ ## Goal
116
+ [What is the user trying to accomplish? Can be multiple items if the session covers different tasks.]
117
+
118
+ ## Constraints & Preferences
119
+ - [Any constraints, preferences, or requirements mentioned by user]
120
+ - [Or "(none)" if none were mentioned]
121
+
122
+ ## Progress
123
+ ### Done
124
+ - [x] [Completed task with relevant file paths]
125
+
126
+ ### In Progress
127
+ - [ ] [Current work being done]
128
+
129
+ ### Blocked
130
+ - [Issues preventing progress, if any, or "(none)"]
131
+
132
+ ## Key Decisions
133
+ - **[Decision]**: [Brief rationale]
134
+ - [Or "(none)" if no significant decisions]
135
+
136
+ ## Next Steps
137
+ 1. [Immediate next action]
138
+ 2. [Following actions in order]
139
+
140
+ ## Critical Context
141
+ - [Data, examples, error messages, or references needed to continue]
142
+ - [Or "(none)" if not applicable]`;
143
+ export async function handleCompact(opts) {
144
+ const { agent, currentProvider, getApiKey, codexTransport, customInstructions, previousSummary, previousFileOps } = opts;
145
+ const model = agent.state.model;
146
+ if (!model) {
147
+ throw new Error('No model configured');
148
+ }
149
+ // Build messages for summarization (filter to LLM-compatible roles)
150
+ const messages = agent.state.messages.filter((m) => m.role === 'user' || m.role === 'assistant' || m.role === 'toolResult');
151
+ // Choose prompt based on whether we have a previous summary
152
+ let basePrompt;
153
+ if (previousSummary) {
154
+ basePrompt = `${UPDATE_SUMMARIZATION_PROMPT}\n\n<previous-summary>\n${previousSummary}\n</previous-summary>`;
155
+ }
156
+ else {
157
+ basePrompt = SUMMARIZATION_PROMPT;
158
+ }
159
+ const prompt = customInstructions
160
+ ? `${basePrompt}\n\nAdditional focus: ${customInstructions}`
161
+ : basePrompt;
162
+ const summarizationMessages = [
163
+ ...messages,
164
+ {
165
+ role: 'user',
166
+ content: [{ type: 'text', text: prompt }],
167
+ timestamp: Date.now(),
168
+ },
169
+ ];
170
+ // Generate summary - Codex needs model overrides + instructions (like normal agent turns)
171
+ const isCodex = currentProvider === 'codex' || model.provider === 'codex';
172
+ const direct = isCodex ? await codexTransport.getDirectCallConfig(model) : null;
173
+ const callModel = direct?.model ?? model;
174
+ const response = await completeSimple(callModel, { messages: summarizationMessages }, {
175
+ maxTokens: 8192,
176
+ apiKey: direct?.apiKey ?? getApiKey(callModel.provider),
177
+ fetch: direct?.fetch,
178
+ instructions: direct?.instructions,
179
+ });
180
+ if (response.errorMessage) {
181
+ throw new Error(response.errorMessage);
182
+ }
183
+ let summary = response.content
184
+ .filter((c) => c.type === 'text')
185
+ .map((c) => c.text)
186
+ .join('\n');
187
+ if (!summary.trim()) {
188
+ const contentTypes = response.content.map(c => c.type).join(', ');
189
+ throw new Error(`No text in response (got: ${contentTypes || 'empty'})`);
190
+ }
191
+ // Extract file operations from current messages
192
+ const fileOps = extractAllFileOps(messages);
193
+ // Merge with previous file operations (union)
194
+ if (previousFileOps) {
195
+ for (const path of previousFileOps.readFiles) {
196
+ fileOps.read.add(path);
197
+ }
198
+ for (const path of previousFileOps.modifiedFiles) {
199
+ // Previous modified files go into written (they were modified at some point)
200
+ fileOps.written.add(path);
201
+ }
202
+ }
203
+ summary += formatFileOperations(fileOps);
204
+ const summaryMessage = {
205
+ role: 'user',
206
+ content: [{ type: 'text', text: SUMMARY_PREFIX + summary + SUMMARY_SUFFIX }],
207
+ timestamp: Date.now(),
208
+ };
209
+ return { summary, summaryMessage, fileOps };
210
+ }
211
+ //# sourceMappingURL=compact-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compact-handler.js","sourceRoot":"","sources":["../src/compact-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Footer - Subtle dashed line with dir · branch on right.
3
+ */
4
+ export interface FooterProps {
5
+ branch: string | null;
6
+ bashMode?: boolean;
7
+ }
8
+ export declare function Footer(props: FooterProps): any;
9
+ //# sourceMappingURL=Footer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../src/components/Footer.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,OAmCxC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Footer - Subtle dashed line with dir · branch on right.
3
+ */
4
+ import { createMemo } from "solid-js";
5
+ import { useTerminalDimensions } from "@opentui/solid";
6
+ import { useTheme } from "@yeshwanthyk/open-tui";
7
+ export function Footer(props) {
8
+ const { theme } = useTheme();
9
+ const dims = useTerminalDimensions();
10
+ const dirName = createMemo(() => process.cwd().split("/").pop() || "");
11
+ const shortBranch = createMemo(() => {
12
+ const branch = props.branch;
13
+ if (!branch)
14
+ return null;
15
+ const parts = branch.split(/[/-]/).filter(p => p.length > 0);
16
+ return parts.length > 2 ? parts.slice(-2).join("-") : branch;
17
+ });
18
+ const rightText = createMemo(() => {
19
+ const dir = dirName();
20
+ const branch = shortBranch();
21
+ return branch ? `${dir} · ${branch}` : dir;
22
+ });
23
+ const dashedLine = createMemo(() => {
24
+ const textLen = rightText().length + 2;
25
+ const lineLen = Math.max(0, dims().width - textLen - 1);
26
+ return "┄".repeat(lineLen);
27
+ });
28
+ const lineColor = () => props.bashMode ? theme.warning : theme.border;
29
+ return (<box flexShrink={0} height={1} marginTop={0} paddingTop={0}>
30
+ <text>
31
+ <span style={{ fg: lineColor() }}>{dashedLine()}</span>
32
+ <span style={{ fg: theme.textMuted }}> {rightText()}</span>
33
+ </text>
34
+ </box>);
35
+ }
36
+ //# sourceMappingURL=Footer.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Footer.jsx","sourceRoot":"","sources":["../../src/components/Footer.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAOhD,MAAM,UAAU,MAAM,CAAC,KAAkB;IACvC,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAA;IAC5B,MAAM,IAAI,GAAG,qBAAqB,EAAE,CAAA;IAEpC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAA;IAEtE,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAC3B,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAA;QACxB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAC5D,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;QAChC,MAAM,GAAG,GAAG,OAAO,EAAE,CAAA;QACrB,MAAM,MAAM,GAAG,WAAW,EAAE,CAAA;QAC5B,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;IAC5C,CAAC,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;QACjC,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC,MAAM,GAAG,CAAC,CAAA;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,GAAG,OAAO,GAAG,CAAC,CAAC,CAAA;QACvD,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAA;IAErE,OAAO,CACL,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CACzD;MAAA,CAAC,IAAI,CACH;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,CACtD;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAG,EAAA,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,CAC7D;MAAA,EAAE,IAAI,CACR;IAAA,EAAE,GAAG,CAAC,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Header - Single row, minimal by default, click to expand.
3
+ * Left: activity + model·thinking + progress bar + queue
4
+ * Right (expanded): branch + LSP
5
+ */
6
+ import type { ThinkingLevel } from "@yeshwanthyk/agent-core";
7
+ import type { LspManager } from "@yeshwanthyk/lsp";
8
+ import type { ActivityState } from "../types.js";
9
+ import type { QueueCounts } from "@yeshwanthyk/runtime-effect/session/prompt-queue.js";
10
+ export interface HeaderProps {
11
+ modelId: string;
12
+ thinking: ThinkingLevel;
13
+ contextTokens: number;
14
+ contextWindow: number;
15
+ queueCounts: QueueCounts;
16
+ activityState: ActivityState;
17
+ retryStatus: string | null;
18
+ lspActive: boolean;
19
+ spinnerFrame: number;
20
+ lsp: LspManager;
21
+ }
22
+ export declare function Header(props: HeaderProps): any;
23
+ //# sourceMappingURL=Header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,kBAAkB,CAAA;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAqChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qDAAqD,CAAA;AAEtF,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,aAAa,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,WAAW,CAAA;IACxB,aAAa,EAAE,aAAa,CAAA;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,SAAS,EAAE,OAAO,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,GAAG,EAAE,UAAU,CAAA;CAChB;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,OA2JxC"}