dexto 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (400) hide show
  1. package/README.md +25 -15
  2. package/dist/agents/agent-registry.json +9 -0
  3. package/dist/agents/coding-agent/coding-agent.yml +5 -0
  4. package/dist/agents/default-agent.yml +2 -2
  5. package/dist/api/server-hono.d.ts.map +1 -1
  6. package/dist/api/server-hono.js +39 -5
  7. package/dist/cli/cli-subscriber.d.ts.map +1 -1
  8. package/dist/cli/cli-subscriber.js +7 -1
  9. package/dist/cli/commands/helpers/formatters.d.ts.map +1 -1
  10. package/dist/cli/commands/helpers/formatters.js +2 -1
  11. package/dist/cli/commands/install.d.ts.map +1 -1
  12. package/dist/cli/commands/install.js +14 -40
  13. package/dist/cli/commands/interactive-commands/command-parser.d.ts +17 -14
  14. package/dist/cli/commands/interactive-commands/command-parser.d.ts.map +1 -1
  15. package/dist/cli/commands/interactive-commands/command-parser.js +0 -15
  16. package/dist/cli/commands/interactive-commands/commands.d.ts +4 -4
  17. package/dist/cli/commands/interactive-commands/commands.d.ts.map +1 -1
  18. package/dist/cli/commands/interactive-commands/commands.js +34 -42
  19. package/dist/cli/commands/interactive-commands/documentation-commands.d.ts.map +1 -1
  20. package/dist/cli/commands/interactive-commands/documentation-commands.js +4 -7
  21. package/dist/cli/commands/interactive-commands/general-commands.d.ts.map +1 -1
  22. package/dist/cli/commands/interactive-commands/general-commands.js +159 -117
  23. package/dist/cli/commands/interactive-commands/mcp/index.d.ts +9 -3
  24. package/dist/cli/commands/interactive-commands/mcp/index.d.ts.map +1 -1
  25. package/dist/cli/commands/interactive-commands/mcp/index.js +18 -3
  26. package/dist/cli/commands/interactive-commands/model/index.d.ts +8 -6
  27. package/dist/cli/commands/interactive-commands/model/index.d.ts.map +1 -1
  28. package/dist/cli/commands/interactive-commands/model/index.js +18 -6
  29. package/dist/cli/commands/interactive-commands/prompt-commands.d.ts +3 -2
  30. package/dist/cli/commands/interactive-commands/prompt-commands.d.ts.map +1 -1
  31. package/dist/cli/commands/interactive-commands/prompt-commands.js +69 -52
  32. package/dist/cli/commands/interactive-commands/session/index.d.ts +7 -12
  33. package/dist/cli/commands/interactive-commands/session/index.d.ts.map +1 -1
  34. package/dist/cli/commands/interactive-commands/session/index.js +7 -14
  35. package/dist/cli/commands/interactive-commands/session/session-commands.d.ts +10 -24
  36. package/dist/cli/commands/interactive-commands/session/session-commands.d.ts.map +1 -1
  37. package/dist/cli/commands/interactive-commands/session/session-commands.js +16 -371
  38. package/dist/cli/commands/interactive-commands/system/system-commands.d.ts +1 -0
  39. package/dist/cli/commands/interactive-commands/system/system-commands.d.ts.map +1 -1
  40. package/dist/cli/commands/interactive-commands/system/system-commands.js +103 -74
  41. package/dist/cli/commands/interactive-commands/tool-commands.d.ts +1 -1
  42. package/dist/cli/commands/interactive-commands/tool-commands.d.ts.map +1 -1
  43. package/dist/cli/commands/interactive-commands/tool-commands.js +5 -62
  44. package/dist/cli/commands/interactive-commands/utils/command-output.d.ts +13 -17
  45. package/dist/cli/commands/interactive-commands/utils/command-output.d.ts.map +1 -1
  46. package/dist/cli/commands/interactive-commands/utils/command-output.js +18 -37
  47. package/dist/cli/commands/list-agents.d.ts +2 -2
  48. package/dist/cli/commands/list-agents.d.ts.map +1 -1
  49. package/dist/cli/commands/list-agents.js +36 -32
  50. package/dist/cli/commands/uninstall.d.ts.map +1 -1
  51. package/dist/cli/commands/uninstall.js +4 -6
  52. package/dist/cli/commands/which.d.ts.map +1 -1
  53. package/dist/cli/commands/which.js +17 -3
  54. package/dist/cli/ink-cli/InkCLIRefactored.d.ts +9 -22
  55. package/dist/cli/ink-cli/InkCLIRefactored.d.ts.map +1 -1
  56. package/dist/cli/ink-cli/InkCLIRefactored.js +50 -133
  57. package/dist/cli/ink-cli/components/ApprovalPrompt.d.ts +24 -3
  58. package/dist/cli/ink-cli/components/ApprovalPrompt.d.ts.map +1 -1
  59. package/dist/cli/ink-cli/components/ApprovalPrompt.js +160 -45
  60. package/dist/cli/ink-cli/components/ElicitationForm.d.ts +22 -0
  61. package/dist/cli/ink-cli/components/ElicitationForm.d.ts.map +1 -0
  62. package/dist/cli/ink-cli/components/ElicitationForm.js +358 -0
  63. package/dist/cli/ink-cli/components/Footer.d.ts +16 -0
  64. package/dist/cli/ink-cli/components/Footer.d.ts.map +1 -0
  65. package/dist/cli/ink-cli/components/Footer.js +27 -0
  66. package/dist/cli/ink-cli/components/HistorySearchBar.d.ts +17 -0
  67. package/dist/cli/ink-cli/components/HistorySearchBar.d.ts.map +1 -0
  68. package/dist/cli/ink-cli/components/HistorySearchBar.js +8 -0
  69. package/dist/cli/ink-cli/components/ResourceAutocomplete.d.ts +15 -2
  70. package/dist/cli/ink-cli/components/ResourceAutocomplete.d.ts.map +1 -1
  71. package/dist/cli/ink-cli/components/ResourceAutocomplete.js +126 -82
  72. package/dist/cli/ink-cli/components/SlashCommandAutocomplete.d.ts +15 -2
  73. package/dist/cli/ink-cli/components/SlashCommandAutocomplete.d.ts.map +1 -1
  74. package/dist/cli/ink-cli/components/SlashCommandAutocomplete.js +228 -122
  75. package/dist/cli/ink-cli/components/StatusBar.d.ts +15 -2
  76. package/dist/cli/ink-cli/components/StatusBar.d.ts.map +1 -1
  77. package/dist/cli/ink-cli/components/StatusBar.js +46 -8
  78. package/dist/cli/ink-cli/components/TextBufferInput.d.ts +52 -0
  79. package/dist/cli/ink-cli/components/TextBufferInput.d.ts.map +1 -0
  80. package/dist/cli/ink-cli/components/TextBufferInput.js +471 -0
  81. package/dist/cli/ink-cli/components/base/BaseSelector.d.ts +11 -1
  82. package/dist/cli/ink-cli/components/base/BaseSelector.d.ts.map +1 -1
  83. package/dist/cli/ink-cli/components/base/BaseSelector.js +90 -49
  84. package/dist/cli/ink-cli/components/chat/Header.d.ts +1 -0
  85. package/dist/cli/ink-cli/components/chat/Header.d.ts.map +1 -1
  86. package/dist/cli/ink-cli/components/chat/Header.js +7 -2
  87. package/dist/cli/ink-cli/components/chat/MessageItem.d.ts +3 -0
  88. package/dist/cli/ink-cli/components/chat/MessageItem.d.ts.map +1 -1
  89. package/dist/cli/ink-cli/components/chat/MessageItem.js +95 -9
  90. package/dist/cli/ink-cli/components/chat/MessageList.js +1 -1
  91. package/dist/cli/ink-cli/components/chat/QueuedMessagesDisplay.d.ts +16 -0
  92. package/dist/cli/ink-cli/components/chat/QueuedMessagesDisplay.d.ts.map +1 -0
  93. package/dist/cli/ink-cli/components/chat/QueuedMessagesDisplay.js +27 -0
  94. package/dist/cli/ink-cli/components/chat/ToolIcon.d.ts +4 -2
  95. package/dist/cli/ink-cli/components/chat/ToolIcon.d.ts.map +1 -1
  96. package/dist/cli/ink-cli/components/chat/ToolIcon.js +19 -5
  97. package/dist/cli/ink-cli/components/chat/styled-boxes/ConfigBox.d.ts +10 -0
  98. package/dist/cli/ink-cli/components/chat/styled-boxes/ConfigBox.d.ts.map +1 -0
  99. package/dist/cli/ink-cli/components/chat/styled-boxes/ConfigBox.js +6 -0
  100. package/dist/cli/ink-cli/components/chat/styled-boxes/HelpBox.d.ts +10 -0
  101. package/dist/cli/ink-cli/components/chat/styled-boxes/HelpBox.d.ts.map +1 -0
  102. package/dist/cli/ink-cli/components/chat/styled-boxes/HelpBox.js +15 -0
  103. package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.d.ts +10 -0
  104. package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.d.ts.map +1 -0
  105. package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.js +9 -0
  106. package/dist/cli/ink-cli/components/chat/styled-boxes/SessionHistoryBox.d.ts +10 -0
  107. package/dist/cli/ink-cli/components/chat/styled-boxes/SessionHistoryBox.d.ts.map +1 -0
  108. package/dist/cli/ink-cli/components/chat/styled-boxes/SessionHistoryBox.js +37 -0
  109. package/dist/cli/ink-cli/components/chat/styled-boxes/SessionListBox.d.ts +10 -0
  110. package/dist/cli/ink-cli/components/chat/styled-boxes/SessionListBox.d.ts.map +1 -0
  111. package/dist/cli/ink-cli/components/chat/styled-boxes/SessionListBox.js +9 -0
  112. package/dist/cli/ink-cli/components/chat/styled-boxes/ShortcutsBox.d.ts +10 -0
  113. package/dist/cli/ink-cli/components/chat/styled-boxes/ShortcutsBox.d.ts.map +1 -0
  114. package/dist/cli/ink-cli/components/chat/styled-boxes/ShortcutsBox.js +6 -0
  115. package/dist/cli/ink-cli/components/chat/styled-boxes/StatsBox.d.ts +10 -0
  116. package/dist/cli/ink-cli/components/chat/styled-boxes/StatsBox.d.ts.map +1 -0
  117. package/dist/cli/ink-cli/components/chat/styled-boxes/StatsBox.js +29 -0
  118. package/dist/cli/ink-cli/components/chat/styled-boxes/StyledBox.d.ts +45 -0
  119. package/dist/cli/ink-cli/components/chat/styled-boxes/StyledBox.d.ts.map +1 -0
  120. package/dist/cli/ink-cli/components/chat/styled-boxes/StyledBox.js +38 -0
  121. package/dist/cli/ink-cli/components/chat/styled-boxes/SyspromptBox.d.ts +10 -0
  122. package/dist/cli/ink-cli/components/chat/styled-boxes/SyspromptBox.d.ts.map +1 -0
  123. package/dist/cli/ink-cli/components/chat/styled-boxes/SyspromptBox.js +6 -0
  124. package/dist/cli/ink-cli/components/chat/styled-boxes/index.d.ts +13 -0
  125. package/dist/cli/ink-cli/components/chat/styled-boxes/index.d.ts.map +1 -0
  126. package/dist/cli/ink-cli/components/chat/styled-boxes/index.js +12 -0
  127. package/dist/cli/ink-cli/components/input/InputArea.d.ts +36 -8
  128. package/dist/cli/ink-cli/components/input/InputArea.d.ts.map +1 -1
  129. package/dist/cli/ink-cli/components/input/InputArea.js +3 -3
  130. package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.d.ts +25 -0
  131. package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.d.ts.map +1 -0
  132. package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.js +166 -0
  133. package/dist/cli/ink-cli/components/modes/StaticCLI.d.ts +27 -0
  134. package/dist/cli/ink-cli/components/modes/StaticCLI.d.ts.map +1 -0
  135. package/dist/cli/ink-cli/components/modes/StaticCLI.js +95 -0
  136. package/dist/cli/ink-cli/components/modes/index.d.ts +10 -0
  137. package/dist/cli/ink-cli/components/modes/index.d.ts.map +1 -0
  138. package/dist/cli/ink-cli/components/modes/index.js +9 -0
  139. package/dist/cli/ink-cli/components/overlays/ApiKeyInput.d.ts +26 -0
  140. package/dist/cli/ink-cli/components/overlays/ApiKeyInput.d.ts.map +1 -0
  141. package/dist/cli/ink-cli/components/overlays/ApiKeyInput.js +92 -0
  142. package/dist/cli/ink-cli/components/overlays/CustomModelWizard.d.ts +21 -0
  143. package/dist/cli/ink-cli/components/overlays/CustomModelWizard.d.ts.map +1 -0
  144. package/dist/cli/ink-cli/components/overlays/CustomModelWizard.js +177 -0
  145. package/dist/cli/ink-cli/components/overlays/LogLevelSelector.d.ts +22 -0
  146. package/dist/cli/ink-cli/components/overlays/LogLevelSelector.d.ts.map +1 -0
  147. package/dist/cli/ink-cli/components/overlays/LogLevelSelector.js +59 -0
  148. package/dist/cli/ink-cli/components/overlays/McpAddChoice.d.ts +22 -0
  149. package/dist/cli/ink-cli/components/overlays/McpAddChoice.d.ts.map +1 -0
  150. package/dist/cli/ink-cli/components/overlays/McpAddChoice.js +59 -0
  151. package/dist/cli/ink-cli/components/overlays/McpAddSelector.d.ts +26 -0
  152. package/dist/cli/ink-cli/components/overlays/McpAddSelector.d.ts.map +1 -0
  153. package/dist/cli/ink-cli/components/overlays/McpAddSelector.js +73 -0
  154. package/dist/cli/ink-cli/components/overlays/McpCustomTypeSelector.d.ts +21 -0
  155. package/dist/cli/ink-cli/components/overlays/McpCustomTypeSelector.d.ts.map +1 -0
  156. package/dist/cli/ink-cli/components/overlays/McpCustomTypeSelector.js +51 -0
  157. package/dist/cli/ink-cli/components/overlays/McpCustomWizard.d.ts +29 -0
  158. package/dist/cli/ink-cli/components/overlays/McpCustomWizard.d.ts.map +1 -0
  159. package/dist/cli/ink-cli/components/overlays/McpCustomWizard.js +215 -0
  160. package/dist/cli/ink-cli/components/overlays/McpRemoveSelector.d.ts +22 -0
  161. package/dist/cli/ink-cli/components/overlays/McpRemoveSelector.d.ts.map +1 -0
  162. package/dist/cli/ink-cli/components/overlays/McpRemoveSelector.js +74 -0
  163. package/dist/cli/ink-cli/components/overlays/McpSelector.d.ts +21 -0
  164. package/dist/cli/ink-cli/components/overlays/McpSelector.d.ts.map +1 -0
  165. package/dist/cli/ink-cli/components/overlays/McpSelector.js +52 -0
  166. package/dist/cli/ink-cli/components/overlays/McpServerActions.d.ts +28 -0
  167. package/dist/cli/ink-cli/components/overlays/McpServerActions.d.ts.map +1 -0
  168. package/dist/cli/ink-cli/components/overlays/McpServerActions.js +84 -0
  169. package/dist/cli/ink-cli/components/overlays/McpServerList.d.ts +29 -0
  170. package/dist/cli/ink-cli/components/overlays/McpServerList.d.ts.map +1 -0
  171. package/dist/cli/ink-cli/components/overlays/McpServerList.js +109 -0
  172. package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.d.ts +15 -8
  173. package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.d.ts.map +1 -1
  174. package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.js +247 -24
  175. package/dist/cli/ink-cli/components/overlays/PromptAddChoice.d.ts +22 -0
  176. package/dist/cli/ink-cli/components/overlays/PromptAddChoice.d.ts.map +1 -0
  177. package/dist/cli/ink-cli/components/overlays/PromptAddChoice.js +52 -0
  178. package/dist/cli/ink-cli/components/overlays/PromptAddWizard.d.ts +29 -0
  179. package/dist/cli/ink-cli/components/overlays/PromptAddWizard.d.ts.map +1 -0
  180. package/dist/cli/ink-cli/components/overlays/PromptAddWizard.js +166 -0
  181. package/dist/cli/ink-cli/components/overlays/PromptDeleteSelector.d.ts +27 -0
  182. package/dist/cli/ink-cli/components/overlays/PromptDeleteSelector.d.ts.map +1 -0
  183. package/dist/cli/ink-cli/components/overlays/PromptDeleteSelector.js +119 -0
  184. package/dist/cli/ink-cli/components/overlays/PromptList.d.ts +33 -0
  185. package/dist/cli/ink-cli/components/overlays/PromptList.d.ts.map +1 -0
  186. package/dist/cli/ink-cli/components/overlays/PromptList.js +144 -0
  187. package/dist/cli/ink-cli/components/overlays/SearchOverlay.d.ts +23 -0
  188. package/dist/cli/ink-cli/components/overlays/SearchOverlay.d.ts.map +1 -0
  189. package/dist/cli/ink-cli/components/overlays/SearchOverlay.js +189 -0
  190. package/dist/cli/ink-cli/components/overlays/SessionSelectorRefactored.d.ts +7 -2
  191. package/dist/cli/ink-cli/components/overlays/SessionSelectorRefactored.d.ts.map +1 -1
  192. package/dist/cli/ink-cli/components/overlays/SessionSelectorRefactored.js +19 -5
  193. package/dist/cli/ink-cli/components/overlays/SessionSubcommandSelector.d.ts +21 -0
  194. package/dist/cli/ink-cli/components/overlays/SessionSubcommandSelector.d.ts.map +1 -0
  195. package/dist/cli/ink-cli/components/overlays/SessionSubcommandSelector.js +42 -0
  196. package/dist/cli/ink-cli/components/overlays/StreamSelector.d.ts +20 -0
  197. package/dist/cli/ink-cli/components/overlays/StreamSelector.d.ts.map +1 -0
  198. package/dist/cli/ink-cli/components/overlays/StreamSelector.js +58 -0
  199. package/dist/cli/ink-cli/components/overlays/ToolBrowser.d.ts +25 -0
  200. package/dist/cli/ink-cli/components/overlays/ToolBrowser.d.ts.map +1 -0
  201. package/dist/cli/ink-cli/components/overlays/ToolBrowser.js +400 -0
  202. package/dist/cli/ink-cli/components/renderers/DiffRenderer.d.ts +21 -0
  203. package/dist/cli/ink-cli/components/renderers/DiffRenderer.d.ts.map +1 -0
  204. package/dist/cli/ink-cli/components/renderers/DiffRenderer.js +65 -0
  205. package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.d.ts +28 -0
  206. package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.d.ts.map +1 -0
  207. package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.js +66 -0
  208. package/dist/cli/ink-cli/components/renderers/FileRenderer.d.ts +19 -0
  209. package/dist/cli/ink-cli/components/renderers/FileRenderer.d.ts.map +1 -0
  210. package/dist/cli/ink-cli/components/renderers/FileRenderer.js +26 -0
  211. package/dist/cli/ink-cli/components/renderers/GenericRenderer.d.ts +21 -0
  212. package/dist/cli/ink-cli/components/renderers/GenericRenderer.d.ts.map +1 -0
  213. package/dist/cli/ink-cli/components/renderers/GenericRenderer.js +26 -0
  214. package/dist/cli/ink-cli/components/renderers/SearchRenderer.d.ts +20 -0
  215. package/dist/cli/ink-cli/components/renderers/SearchRenderer.d.ts.map +1 -0
  216. package/dist/cli/ink-cli/components/renderers/SearchRenderer.js +12 -0
  217. package/dist/cli/ink-cli/components/renderers/ShellRenderer.d.ts +21 -0
  218. package/dist/cli/ink-cli/components/renderers/ShellRenderer.d.ts.map +1 -0
  219. package/dist/cli/ink-cli/components/renderers/ShellRenderer.js +25 -0
  220. package/dist/cli/ink-cli/components/renderers/diff-shared.d.ts +61 -0
  221. package/dist/cli/ink-cli/components/renderers/diff-shared.d.ts.map +1 -0
  222. package/dist/cli/ink-cli/components/renderers/diff-shared.js +158 -0
  223. package/dist/cli/ink-cli/components/renderers/index.d.ts +28 -0
  224. package/dist/cli/ink-cli/components/renderers/index.d.ts.map +1 -0
  225. package/dist/cli/ink-cli/components/renderers/index.js +36 -0
  226. package/dist/cli/ink-cli/components/shared/MarkdownText.d.ts +38 -0
  227. package/dist/cli/ink-cli/components/shared/MarkdownText.d.ts.map +1 -0
  228. package/dist/cli/ink-cli/components/shared/MarkdownText.js +360 -0
  229. package/dist/cli/ink-cli/components/shared/VirtualizedList.d.ts +44 -0
  230. package/dist/cli/ink-cli/components/shared/VirtualizedList.d.ts.map +1 -0
  231. package/dist/cli/ink-cli/components/shared/VirtualizedList.js +300 -0
  232. package/dist/cli/ink-cli/components/shared/text-buffer.d.ts +185 -0
  233. package/dist/cli/ink-cli/components/shared/text-buffer.d.ts.map +1 -0
  234. package/dist/cli/ink-cli/components/shared/text-buffer.js +1338 -0
  235. package/dist/cli/ink-cli/constants/processingPhrases.d.ts +10 -0
  236. package/dist/cli/ink-cli/constants/processingPhrases.d.ts.map +1 -0
  237. package/dist/cli/ink-cli/constants/processingPhrases.js +64 -0
  238. package/dist/cli/ink-cli/constants/tips.d.ts +15 -0
  239. package/dist/cli/ink-cli/constants/tips.d.ts.map +1 -0
  240. package/dist/cli/ink-cli/constants/tips.js +53 -0
  241. package/dist/cli/ink-cli/containers/InputContainer.d.ts +42 -8
  242. package/dist/cli/ink-cli/containers/InputContainer.d.ts.map +1 -1
  243. package/dist/cli/ink-cli/containers/InputContainer.js +491 -85
  244. package/dist/cli/ink-cli/containers/OverlayContainer.d.ts +23 -5
  245. package/dist/cli/ink-cli/containers/OverlayContainer.d.ts.map +1 -1
  246. package/dist/cli/ink-cli/containers/OverlayContainer.js +1156 -130
  247. package/dist/cli/ink-cli/containers/index.d.ts +1 -1
  248. package/dist/cli/ink-cli/containers/index.d.ts.map +1 -1
  249. package/dist/cli/ink-cli/contexts/KeypressContext.d.ts +36 -0
  250. package/dist/cli/ink-cli/contexts/KeypressContext.d.ts.map +1 -0
  251. package/dist/cli/ink-cli/contexts/KeypressContext.js +461 -0
  252. package/dist/cli/ink-cli/contexts/MouseContext.d.ts +27 -0
  253. package/dist/cli/ink-cli/contexts/MouseContext.d.ts.map +1 -0
  254. package/dist/cli/ink-cli/contexts/MouseContext.js +102 -0
  255. package/dist/cli/ink-cli/contexts/ScrollProvider.d.ts +33 -0
  256. package/dist/cli/ink-cli/contexts/ScrollProvider.d.ts.map +1 -0
  257. package/dist/cli/ink-cli/contexts/ScrollProvider.js +170 -0
  258. package/dist/cli/ink-cli/contexts/index.d.ts +7 -0
  259. package/dist/cli/ink-cli/contexts/index.d.ts.map +1 -0
  260. package/dist/cli/ink-cli/contexts/index.js +6 -0
  261. package/dist/cli/ink-cli/hooks/index.d.ts +5 -0
  262. package/dist/cli/ink-cli/hooks/index.d.ts.map +1 -1
  263. package/dist/cli/ink-cli/hooks/index.js +6 -1
  264. package/dist/cli/ink-cli/hooks/useAgentEvents.d.ts +26 -9
  265. package/dist/cli/ink-cli/hooks/useAgentEvents.d.ts.map +1 -1
  266. package/dist/cli/ink-cli/hooks/useAgentEvents.js +86 -198
  267. package/dist/cli/ink-cli/hooks/useBatchedScroll.d.ts +14 -0
  268. package/dist/cli/ink-cli/hooks/useBatchedScroll.d.ts.map +1 -0
  269. package/dist/cli/ink-cli/hooks/useBatchedScroll.js +25 -0
  270. package/dist/cli/ink-cli/hooks/useCLIState.d.ts +50 -0
  271. package/dist/cli/ink-cli/hooks/useCLIState.d.ts.map +1 -0
  272. package/dist/cli/ink-cli/hooks/useCLIState.js +188 -0
  273. package/dist/cli/ink-cli/hooks/useElapsedTime.d.ts +24 -0
  274. package/dist/cli/ink-cli/hooks/useElapsedTime.d.ts.map +1 -0
  275. package/dist/cli/ink-cli/hooks/useElapsedTime.js +69 -0
  276. package/dist/cli/ink-cli/hooks/useHistorySearch.d.ts +61 -0
  277. package/dist/cli/ink-cli/hooks/useHistorySearch.d.ts.map +1 -0
  278. package/dist/cli/ink-cli/hooks/useHistorySearch.js +210 -0
  279. package/dist/cli/ink-cli/hooks/useInputOrchestrator.d.ts +136 -0
  280. package/dist/cli/ink-cli/hooks/useInputOrchestrator.d.ts.map +1 -0
  281. package/dist/cli/ink-cli/hooks/useInputOrchestrator.js +663 -0
  282. package/dist/cli/ink-cli/hooks/useKeyboardShortcuts.d.ts.map +1 -1
  283. package/dist/cli/ink-cli/hooks/useKeyboardShortcuts.js +7 -26
  284. package/dist/cli/ink-cli/hooks/useKeypress.d.ts +18 -0
  285. package/dist/cli/ink-cli/hooks/useKeypress.d.ts.map +1 -0
  286. package/dist/cli/ink-cli/hooks/useKeypress.js +26 -0
  287. package/dist/cli/ink-cli/hooks/usePhraseCycler.d.ts +30 -0
  288. package/dist/cli/ink-cli/hooks/usePhraseCycler.d.ts.map +1 -0
  289. package/dist/cli/ink-cli/hooks/usePhraseCycler.js +68 -0
  290. package/dist/cli/ink-cli/hooks/useStreaming.d.ts +19 -0
  291. package/dist/cli/ink-cli/hooks/useStreaming.d.ts.map +1 -0
  292. package/dist/cli/ink-cli/hooks/useStreaming.js +26 -0
  293. package/dist/cli/ink-cli/hooks/useTerminalSize.d.ts +14 -0
  294. package/dist/cli/ink-cli/hooks/useTerminalSize.d.ts.map +1 -0
  295. package/dist/cli/ink-cli/hooks/useTerminalSize.js +31 -0
  296. package/dist/cli/ink-cli/hooks/useTokenCounter.d.ts +42 -0
  297. package/dist/cli/ink-cli/hooks/useTokenCounter.d.ts.map +1 -0
  298. package/dist/cli/ink-cli/hooks/useTokenCounter.js +96 -0
  299. package/dist/cli/ink-cli/services/CommandService.d.ts +32 -1
  300. package/dist/cli/ink-cli/services/CommandService.d.ts.map +1 -1
  301. package/dist/cli/ink-cli/services/CommandService.js +36 -5
  302. package/dist/cli/ink-cli/services/InputService.d.ts +1 -5
  303. package/dist/cli/ink-cli/services/InputService.d.ts.map +1 -1
  304. package/dist/cli/ink-cli/services/InputService.js +1 -8
  305. package/dist/cli/ink-cli/services/index.d.ts +2 -1
  306. package/dist/cli/ink-cli/services/index.d.ts.map +1 -1
  307. package/dist/cli/ink-cli/services/index.js +2 -1
  308. package/dist/cli/ink-cli/services/processStream.d.ts +69 -0
  309. package/dist/cli/ink-cli/services/processStream.d.ts.map +1 -0
  310. package/dist/cli/ink-cli/services/processStream.js +674 -0
  311. package/dist/cli/ink-cli/state/actions.d.ts +30 -60
  312. package/dist/cli/ink-cli/state/actions.d.ts.map +1 -1
  313. package/dist/cli/ink-cli/state/actions.js +3 -0
  314. package/dist/cli/ink-cli/state/index.d.ts +5 -3
  315. package/dist/cli/ink-cli/state/index.d.ts.map +1 -1
  316. package/dist/cli/ink-cli/state/index.js +4 -3
  317. package/dist/cli/ink-cli/state/initialState.d.ts +4 -3
  318. package/dist/cli/ink-cli/state/initialState.d.ts.map +1 -1
  319. package/dist/cli/ink-cli/state/initialState.js +20 -4
  320. package/dist/cli/ink-cli/state/reducer.d.ts +3 -0
  321. package/dist/cli/ink-cli/state/reducer.d.ts.map +1 -1
  322. package/dist/cli/ink-cli/state/reducer.js +62 -168
  323. package/dist/cli/ink-cli/state/streaming-state.d.ts +27 -0
  324. package/dist/cli/ink-cli/state/streaming-state.d.ts.map +1 -0
  325. package/dist/cli/ink-cli/state/streaming-state.js +39 -0
  326. package/dist/cli/ink-cli/state/types.d.ts +222 -6
  327. package/dist/cli/ink-cli/state/types.d.ts.map +1 -1
  328. package/dist/cli/ink-cli/utils/bracketedPaste.d.ts +22 -0
  329. package/dist/cli/ink-cli/utils/bracketedPaste.d.ts.map +1 -0
  330. package/dist/cli/ink-cli/utils/bracketedPaste.js +27 -0
  331. package/dist/cli/ink-cli/utils/clipboardUtils.d.ts +49 -0
  332. package/dist/cli/ink-cli/utils/clipboardUtils.d.ts.map +1 -0
  333. package/dist/cli/ink-cli/utils/clipboardUtils.js +356 -0
  334. package/dist/cli/ink-cli/utils/commandOverlays.d.ts +33 -0
  335. package/dist/cli/ink-cli/utils/commandOverlays.d.ts.map +1 -0
  336. package/dist/cli/ink-cli/utils/commandOverlays.js +78 -0
  337. package/dist/cli/ink-cli/utils/debugLog.d.ts +38 -0
  338. package/dist/cli/ink-cli/utils/debugLog.d.ts.map +1 -0
  339. package/dist/cli/ink-cli/utils/debugLog.js +66 -0
  340. package/dist/cli/ink-cli/utils/index.d.ts +2 -1
  341. package/dist/cli/ink-cli/utils/index.d.ts.map +1 -1
  342. package/dist/cli/ink-cli/utils/index.js +3 -1
  343. package/dist/cli/ink-cli/utils/input.d.ts +25 -0
  344. package/dist/cli/ink-cli/utils/input.d.ts.map +1 -0
  345. package/dist/cli/ink-cli/utils/input.js +56 -0
  346. package/dist/cli/ink-cli/utils/inputParsing.d.ts +0 -9
  347. package/dist/cli/ink-cli/utils/inputParsing.d.ts.map +1 -1
  348. package/dist/cli/ink-cli/utils/inputParsing.js +0 -27
  349. package/dist/cli/ink-cli/utils/messageFormatting.d.ts +54 -3
  350. package/dist/cli/ink-cli/utils/messageFormatting.d.ts.map +1 -1
  351. package/dist/cli/ink-cli/utils/messageFormatting.js +290 -20
  352. package/dist/cli/ink-cli/utils/mouse.d.ts +61 -0
  353. package/dist/cli/ink-cli/utils/mouse.d.ts.map +1 -0
  354. package/dist/cli/ink-cli/utils/mouse.js +209 -0
  355. package/dist/cli/ink-cli/utils/streamSplitter.d.ts +44 -0
  356. package/dist/cli/ink-cli/utils/streamSplitter.d.ts.map +1 -0
  357. package/dist/cli/ink-cli/utils/streamSplitter.js +154 -0
  358. package/dist/cli/ink-cli/utils/textUtils.d.ts +63 -0
  359. package/dist/cli/ink-cli/utils/textUtils.d.ts.map +1 -0
  360. package/dist/cli/ink-cli/utils/textUtils.js +248 -0
  361. package/dist/cli/ink-cli/utils/toolUtils.d.ts +9 -0
  362. package/dist/cli/ink-cli/utils/toolUtils.d.ts.map +1 -0
  363. package/dist/cli/ink-cli/utils/toolUtils.js +13 -0
  364. package/dist/cli/utils/options.d.ts.map +1 -1
  365. package/dist/cli/utils/options.js +0 -2
  366. package/dist/config/cli-overrides.d.ts +1 -1
  367. package/dist/config/cli-overrides.d.ts.map +1 -1
  368. package/dist/config/cli-overrides.js +5 -10
  369. package/dist/index.js +66 -48
  370. package/dist/utils/agent-helpers.d.ts +95 -0
  371. package/dist/utils/agent-helpers.d.ts.map +1 -0
  372. package/dist/utils/agent-helpers.js +117 -0
  373. package/dist/webui/assets/index-BkwPkZpd.css +1 -0
  374. package/dist/webui/assets/index-D9u1XfyH.js +2025 -0
  375. package/dist/webui/assets/{tanstack-DgxBONJY.js → tanstack-Br79RQ-n.js} +1 -1
  376. package/dist/webui/index.html +3 -3
  377. package/package.json +16 -14
  378. package/dist/cli/commands/interactive-commands/index.d.ts +0 -63
  379. package/dist/cli/commands/interactive-commands/index.d.ts.map +0 -1
  380. package/dist/cli/commands/interactive-commands/index.js +0 -73
  381. package/dist/cli/commands/interactive-commands/mcp/mcp-add-utils.d.ts +0 -34
  382. package/dist/cli/commands/interactive-commands/mcp/mcp-add-utils.d.ts.map +0 -1
  383. package/dist/cli/commands/interactive-commands/mcp/mcp-add-utils.js +0 -178
  384. package/dist/cli/commands/interactive-commands/mcp/mcp-commands.d.ts +0 -9
  385. package/dist/cli/commands/interactive-commands/mcp/mcp-commands.d.ts.map +0 -1
  386. package/dist/cli/commands/interactive-commands/mcp/mcp-commands.js +0 -325
  387. package/dist/cli/commands/interactive-commands/model/model-commands.d.ts +0 -21
  388. package/dist/cli/commands/interactive-commands/model/model-commands.d.ts.map +0 -1
  389. package/dist/cli/commands/interactive-commands/model/model-commands.js +0 -190
  390. package/dist/cli/ink-cli/components/MultiLineTextInput.d.ts +0 -26
  391. package/dist/cli/ink-cli/components/MultiLineTextInput.d.ts.map +0 -1
  392. package/dist/cli/ink-cli/components/MultiLineTextInput.js +0 -220
  393. package/dist/discord/bot.d.ts +0 -4
  394. package/dist/discord/bot.d.ts.map +0 -1
  395. package/dist/discord/bot.js +0 -193
  396. package/dist/telegram/bot.d.ts +0 -5
  397. package/dist/telegram/bot.d.ts.map +0 -1
  398. package/dist/telegram/bot.js +0 -251
  399. package/dist/webui/assets/index-DKq5Xng1.js +0 -687
  400. package/dist/webui/assets/index-D_0_GBu5.css +0 -1
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Input Utilities
3
+ * Constants and helpers for parsing terminal input sequences.
4
+ */
5
+ export const ESC = '\u001B';
6
+ export const SGR_EVENT_PREFIX = `${ESC}[<`;
7
+ export const X11_EVENT_PREFIX = `${ESC}[M`;
8
+ // Focus tracking sequences
9
+ export const FOCUS_IN = `${ESC}[I`;
10
+ export const FOCUS_OUT = `${ESC}[O`;
11
+ // Mouse event regex patterns
12
+ // Using ESC constant to avoid control-character lint warnings
13
+ const ESC_CHAR = String.fromCharCode(0x1b);
14
+ export const SGR_MOUSE_REGEX = new RegExp(`^${ESC_CHAR}\\[<(\\d+);(\\d+);(\\d+)([mM])`);
15
+ export const X11_MOUSE_REGEX = new RegExp(`^${ESC_CHAR}\\[M([\\s\\S]{3})`);
16
+ /**
17
+ * Check if buffer could be a SGR mouse sequence (or prefix thereof)
18
+ */
19
+ export function couldBeSGRMouseSequence(buffer) {
20
+ if (buffer.length === 0)
21
+ return true;
22
+ // Check if buffer is a prefix of a mouse sequence starter
23
+ if (SGR_EVENT_PREFIX.startsWith(buffer))
24
+ return true;
25
+ // Check if buffer is a mouse sequence prefix
26
+ if (buffer.startsWith(SGR_EVENT_PREFIX))
27
+ return true;
28
+ return false;
29
+ }
30
+ /**
31
+ * Check if buffer could be any mouse sequence (or prefix thereof)
32
+ */
33
+ export function couldBeMouseSequence(buffer) {
34
+ if (buffer.length === 0)
35
+ return true;
36
+ // Check SGR prefix
37
+ if (SGR_EVENT_PREFIX.startsWith(buffer) || buffer.startsWith(SGR_EVENT_PREFIX))
38
+ return true;
39
+ // Check X11 prefix
40
+ if (X11_EVENT_PREFIX.startsWith(buffer) || buffer.startsWith(X11_EVENT_PREFIX))
41
+ return true;
42
+ return false;
43
+ }
44
+ /**
45
+ * Get the length of a complete mouse sequence at the start of buffer.
46
+ * Returns 0 if no complete sequence found.
47
+ */
48
+ export function getMouseSequenceLength(buffer) {
49
+ const sgrMatch = buffer.match(SGR_MOUSE_REGEX);
50
+ if (sgrMatch)
51
+ return sgrMatch[0].length;
52
+ const x11Match = buffer.match(X11_MOUSE_REGEX);
53
+ if (x11Match)
54
+ return x11Match[0].length;
55
+ return 0;
56
+ }
@@ -3,23 +3,14 @@
3
3
  * Helpers for detecting autocomplete triggers and parsing input
4
4
  */
5
5
  import { parseInput } from '../../commands/interactive-commands/command-parser.js';
6
- import type { CommandResult } from '../../commands/interactive-commands/command-parser.js';
7
6
  /**
8
7
  * Autocomplete type
9
8
  */
10
9
  export type AutocompleteType = 'none' | 'slash' | 'resource';
11
- /**
12
- * Interactive selector type
13
- */
14
- export type InteractiveSelectorType = 'none' | 'model' | 'session';
15
10
  /**
16
11
  * Detects what type of autocomplete should be shown based on input
17
12
  */
18
13
  export declare function detectAutocompleteType(input: string): AutocompleteType;
19
- /**
20
- * Detects if an interactive selector should be shown based on parsed command
21
- */
22
- export declare function detectInteractiveSelector(parsed: CommandResult): InteractiveSelectorType;
23
14
  /**
24
15
  * Extracts the query string for slash command autocomplete
25
16
  */
@@ -1 +1 @@
1
- {"version":3,"file":"inputParsing.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/inputParsing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uDAAuD,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uDAAuD,CAAC;AAE3F;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAEnE;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAkBtE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,aAAa,GAAG,uBAAuB,CA+BxF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI1D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAkBtE;AAED;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"inputParsing.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/inputParsing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uDAAuD,CAAC;AAEnF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;AAE7D;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAkBtE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI1D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAkBtE;AAED;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -23,33 +23,6 @@ export function detectAutocompleteType(input) {
23
23
  }
24
24
  return 'none';
25
25
  }
26
- /**
27
- * Detects if an interactive selector should be shown based on parsed command
28
- */
29
- export function detectInteractiveSelector(parsed) {
30
- if (parsed.type !== 'command' || !parsed.command) {
31
- return 'none';
32
- }
33
- const command = parsed.command;
34
- const hasArgs = parsed.args && parsed.args.length > 0;
35
- const hasSpaceAfterCommand = parsed.rawInput.includes(' ') && parsed.rawInput.trim().length > command.length + 1;
36
- // Model selector
37
- if (command === 'model' && !hasArgs && !hasSpaceAfterCommand) {
38
- return 'model';
39
- }
40
- // Session selector
41
- if ((command === 'resume' || command === 'switch') && !hasArgs && !hasSpaceAfterCommand) {
42
- return 'session';
43
- }
44
- if (command === 'session' &&
45
- parsed.args &&
46
- parsed.args[0] === 'switch' &&
47
- parsed.args.length === 1 &&
48
- !hasSpaceAfterCommand) {
49
- return 'session';
50
- }
51
- return 'none';
52
- }
53
26
  /**
54
27
  * Extracts the query string for slash command autocomplete
55
28
  */
@@ -2,12 +2,63 @@
2
2
  * Message formatting utilities
3
3
  * Helpers for creating and formatting messages
4
4
  */
5
- import type { DextoAgent } from '@dexto/core';
5
+ import type { DextoAgent, InternalMessage } from '@dexto/core';
6
6
  import type { Message } from '../state/types.js';
7
+ /**
8
+ * Convert absolute path to display-friendly relative path.
9
+ * Strategy:
10
+ * 1. If path is under cwd → relative from cwd (e.g., "src/file.ts")
11
+ * 2. If path is under home → use tilde (e.g., "~/Projects/file.ts")
12
+ * 3. Otherwise → return absolute path
13
+ */
14
+ export declare function makeRelativePath(absolutePath: string, cwd?: string): string;
15
+ /**
16
+ * Format a path for display: relative + center-truncate if needed.
17
+ * @param absolutePath - The absolute file path
18
+ * @param maxWidth - Maximum display width (default 60)
19
+ * @param cwd - Current working directory for relative path calculation
20
+ */
21
+ export declare function formatPathForDisplay(absolutePath: string, maxWidth?: number, cwd?: string): string;
22
+ /**
23
+ * Center-truncate a file path to keep the filename visible.
24
+ * e.g., "/Users/karaj/Projects/very/long/path/to/file.ts" → "/Users/karaj/…/to/file.ts"
25
+ *
26
+ * Strategy:
27
+ * 1. If path fits within maxWidth, return as-is
28
+ * 2. Keep first segment (root/home) and last 2 segments (parent + filename)
29
+ * 3. Add "…" in the middle
30
+ */
31
+ export declare function centerTruncatePath(filePath: string, maxWidth: number): string;
32
+ /**
33
+ * Gets a user-friendly display name for a tool.
34
+ * Returns the friendly name if known, otherwise returns the original name
35
+ * with any "internal--" prefix stripped.
36
+ * MCP tools keep their server prefix for clarity (e.g., "mcp_server__tool").
37
+ */
38
+ export declare function getToolDisplayName(toolName: string): string;
39
+ /**
40
+ * Formats tool arguments for display.
41
+ * Format: ToolName(primary_arg) or ToolName(primary_arg, key: value)
42
+ *
43
+ * Uses tool-specific config to determine which args to show.
44
+ * - File paths: converted to relative paths, center-truncated if needed
45
+ * - Commands/URLs: shown in full (never truncated)
46
+ * - Other args: truncated at 40 chars
47
+ */
48
+ export declare function formatToolArgsForDisplay(toolName: string, args: Record<string, unknown>): string;
49
+ /**
50
+ * Formats tool arguments for display (compact preview).
51
+ * @deprecated Use formatToolArgsForDisplay instead
52
+ */
53
+ export declare function formatToolArgsPreview(args: Record<string, unknown>, maxLength?: number): string;
7
54
  /**
8
55
  * Creates a user message
9
56
  */
10
57
  export declare function createUserMessage(content: string): Message;
58
+ /**
59
+ * Creates a queued user message (shown when message is queued while processing)
60
+ */
61
+ export declare function createQueuedUserMessage(content: string, queuePosition: number): Message;
11
62
  /**
12
63
  * Creates a system message
13
64
  */
@@ -27,7 +78,7 @@ export declare function createStreamingMessage(): Message;
27
78
  /**
28
79
  * Converts session history messages to UI messages
29
80
  */
30
- export declare function convertHistoryToUIMessages(history: any[], sessionId: string): Message[];
81
+ export declare function convertHistoryToUIMessages(history: InternalMessage[], sessionId: string): Message[];
31
82
  /**
32
83
  * Collects startup information for display in header
33
84
  */
@@ -38,6 +89,6 @@ export declare function getStartupInfo(agent: DextoAgent): Promise<{
38
89
  };
39
90
  failedConnections: string[];
40
91
  toolCount: number;
41
- logFile: string;
92
+ logFile: string | null;
42
93
  }>;
43
94
  //# sourceMappingURL=messageFormatting.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"messageFormatting.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/messageFormatting.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGjD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAO1D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAO5D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAQjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAO3D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAQhD;AAuBD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE,CAqBvF;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,UAAU;;;;;;;;GAgBrD"}
1
+ {"version":3,"file":"messageFormatting.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/messageFormatting.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAe,MAAM,aAAa,CAAC;AAE5E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGjD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,MAAM,CAmB1F;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAChC,YAAY,EAAE,MAAM,EACpB,QAAQ,GAAE,MAAW,EACrB,GAAG,GAAE,MAAsB,GAC5B,MAAM,CAWR;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiC7E;AAmED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAW3D;AA8BD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAwEhG;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,SAAS,GAAE,MAAW,GACvB,MAAM,CAeR;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAO1D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CASvF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAO5D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAQjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAO3D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAQhD;AAgBD;;GAEG;AACH,wBAAgB,0BAA0B,CACtC,OAAO,EAAE,eAAe,EAAE,EAC1B,SAAS,EAAE,MAAM,GAClB,OAAO,EAAE,CAmBX;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,UAAU;;;;;;;;GAiBrD"}
@@ -2,8 +2,271 @@
2
2
  * Message formatting utilities
3
3
  * Helpers for creating and formatting messages
4
4
  */
5
- import { getDextoPath, logger } from '@dexto/core';
5
+ import path from 'path';
6
+ import os from 'os';
7
+ import { isTextPart } from '@dexto/core';
6
8
  import { generateMessageId } from './idGenerator.js';
9
+ /**
10
+ * Convert absolute path to display-friendly relative path.
11
+ * Strategy:
12
+ * 1. If path is under cwd → relative from cwd (e.g., "src/file.ts")
13
+ * 2. If path is under home → use tilde (e.g., "~/Projects/file.ts")
14
+ * 3. Otherwise → return absolute path
15
+ */
16
+ export function makeRelativePath(absolutePath, cwd = process.cwd()) {
17
+ // Normalize paths for comparison
18
+ const normalizedPath = path.normalize(absolutePath);
19
+ const normalizedCwd = path.normalize(cwd);
20
+ const homeDir = os.homedir();
21
+ // If under cwd, return relative path
22
+ if (normalizedPath.startsWith(normalizedCwd + path.sep) || normalizedPath === normalizedCwd) {
23
+ const relative = path.relative(normalizedCwd, normalizedPath);
24
+ return relative || '.';
25
+ }
26
+ // If under home directory, use tilde
27
+ if (normalizedPath.startsWith(homeDir + path.sep) || normalizedPath === homeDir) {
28
+ return '~' + normalizedPath.slice(homeDir.length);
29
+ }
30
+ // Return absolute path as-is
31
+ return absolutePath;
32
+ }
33
+ /**
34
+ * Format a path for display: relative + center-truncate if needed.
35
+ * @param absolutePath - The absolute file path
36
+ * @param maxWidth - Maximum display width (default 60)
37
+ * @param cwd - Current working directory for relative path calculation
38
+ */
39
+ export function formatPathForDisplay(absolutePath, maxWidth = 60, cwd = process.cwd()) {
40
+ // First convert to relative
41
+ const relativePath = makeRelativePath(absolutePath, cwd);
42
+ // If fits, return as-is
43
+ if (relativePath.length <= maxWidth) {
44
+ return relativePath;
45
+ }
46
+ // Apply center-truncation
47
+ return centerTruncatePath(relativePath, maxWidth);
48
+ }
49
+ /**
50
+ * Center-truncate a file path to keep the filename visible.
51
+ * e.g., "/Users/karaj/Projects/very/long/path/to/file.ts" → "/Users/karaj/…/to/file.ts"
52
+ *
53
+ * Strategy:
54
+ * 1. If path fits within maxWidth, return as-is
55
+ * 2. Keep first segment (root/home) and last 2 segments (parent + filename)
56
+ * 3. Add "…" in the middle
57
+ */
58
+ export function centerTruncatePath(filePath, maxWidth) {
59
+ if (filePath.length <= maxWidth) {
60
+ return filePath;
61
+ }
62
+ const sep = path.sep;
63
+ const segments = filePath.split(sep).filter(Boolean);
64
+ if (segments.length <= 3) {
65
+ // Too few segments to center-truncate, just end-truncate
66
+ return filePath.slice(0, maxWidth - 1) + '…';
67
+ }
68
+ // Keep first segment and last 2 segments
69
+ const first = filePath.startsWith(sep) ? sep + segments[0] : segments[0];
70
+ const lastTwo = segments.slice(-2).join(sep);
71
+ const truncated = `${first}${sep}…${sep}${lastTwo}`;
72
+ if (truncated.length <= maxWidth) {
73
+ return truncated;
74
+ }
75
+ // Still too long - try with just the filename
76
+ const filename = segments[segments.length - 1] || '';
77
+ const withJustFilename = `…${sep}${filename}`;
78
+ if (withJustFilename.length <= maxWidth) {
79
+ return withJustFilename;
80
+ }
81
+ // Filename itself is too long, end-truncate it
82
+ return filename.slice(0, maxWidth - 1) + '…';
83
+ }
84
+ /**
85
+ * Per-tool display configurations.
86
+ * Each tool specifies exactly which arguments to show and how.
87
+ */
88
+ const TOOL_CONFIGS = {
89
+ // File tools - show file_path as primary
90
+ read_file: { displayName: 'Read', argsToShow: ['file_path'], primaryArg: 'file_path' },
91
+ write_file: { displayName: 'Write', argsToShow: ['file_path'], primaryArg: 'file_path' },
92
+ edit_file: { displayName: 'Update', argsToShow: ['file_path'], primaryArg: 'file_path' },
93
+ // Search tools - show pattern as primary, path as secondary
94
+ glob_files: {
95
+ displayName: 'Find files',
96
+ argsToShow: ['pattern', 'path'],
97
+ primaryArg: 'pattern',
98
+ },
99
+ grep_content: {
100
+ displayName: 'Search files',
101
+ argsToShow: ['pattern', 'path'],
102
+ primaryArg: 'pattern',
103
+ },
104
+ // Bash - show command only, skip description
105
+ bash_exec: { displayName: 'Bash', argsToShow: ['command'], primaryArg: 'command' },
106
+ bash_output: {
107
+ displayName: 'BashOutput',
108
+ argsToShow: ['process_id'],
109
+ primaryArg: 'process_id',
110
+ },
111
+ kill_process: { displayName: 'Kill', argsToShow: ['process_id'], primaryArg: 'process_id' },
112
+ // User interaction
113
+ ask_user: { displayName: 'Ask', argsToShow: ['question'], primaryArg: 'question' },
114
+ };
115
+ /**
116
+ * Gets the display config for a tool.
117
+ * Handles internal-- prefix by stripping it before lookup.
118
+ */
119
+ function getToolConfig(toolName) {
120
+ // Try direct lookup first
121
+ if (TOOL_CONFIGS[toolName]) {
122
+ return TOOL_CONFIGS[toolName];
123
+ }
124
+ // Strip internal-- prefix and try again
125
+ if (toolName.startsWith('internal--')) {
126
+ const baseName = toolName.replace('internal--', '');
127
+ return TOOL_CONFIGS[baseName];
128
+ }
129
+ return undefined;
130
+ }
131
+ /**
132
+ * Gets a user-friendly display name for a tool.
133
+ * Returns the friendly name if known, otherwise returns the original name
134
+ * with any "internal--" prefix stripped.
135
+ * MCP tools keep their server prefix for clarity (e.g., "mcp_server__tool").
136
+ */
137
+ export function getToolDisplayName(toolName) {
138
+ const config = getToolConfig(toolName);
139
+ if (config) {
140
+ return config.displayName;
141
+ }
142
+ // Strip "internal--" prefix for unknown internal tools
143
+ if (toolName.startsWith('internal--')) {
144
+ return toolName.replace('internal--', '');
145
+ }
146
+ // MCP tools keep their full name (server__tool format) for clarity
147
+ return toolName;
148
+ }
149
+ /**
150
+ * Fallback primary argument names for unknown tools.
151
+ * Used when we don't have a specific config for a tool.
152
+ */
153
+ const FALLBACK_PRIMARY_ARGS = new Set([
154
+ 'file_path',
155
+ 'path',
156
+ 'pattern',
157
+ 'command',
158
+ 'query',
159
+ 'question',
160
+ 'url',
161
+ ]);
162
+ /**
163
+ * Arguments that are file paths and should use relative path formatting.
164
+ * These get converted to relative paths and center-truncated if needed.
165
+ */
166
+ const PATH_ARGS = new Set(['file_path', 'path']);
167
+ /**
168
+ * Arguments that should never be truncated (urls, etc.)
169
+ * These provide important context that users need to see in full.
170
+ * Note: 'command' is handled specially - single-line commands are not truncated,
171
+ * but multi-line commands (heredocs) are truncated to first line only.
172
+ */
173
+ const NEVER_TRUNCATE_ARGS = new Set(['url']);
174
+ /**
175
+ * Formats tool arguments for display.
176
+ * Format: ToolName(primary_arg) or ToolName(primary_arg, key: value)
177
+ *
178
+ * Uses tool-specific config to determine which args to show.
179
+ * - File paths: converted to relative paths, center-truncated if needed
180
+ * - Commands/URLs: shown in full (never truncated)
181
+ * - Other args: truncated at 40 chars
182
+ */
183
+ export function formatToolArgsForDisplay(toolName, args) {
184
+ const entries = Object.entries(args);
185
+ if (entries.length === 0)
186
+ return '';
187
+ const config = getToolConfig(toolName);
188
+ const parts = [];
189
+ /**
190
+ * Format a single argument value for display
191
+ */
192
+ const formatArgValue = (argName, value) => {
193
+ const strValue = typeof value === 'string' ? value : JSON.stringify(value);
194
+ // File paths: use relative path + center-truncation
195
+ if (PATH_ARGS.has(argName)) {
196
+ return formatPathForDisplay(strValue);
197
+ }
198
+ // Commands: show single-line in full, truncate multi-line (heredocs) to first line
199
+ if (argName === 'command') {
200
+ const newlineIndex = strValue.indexOf('\n');
201
+ if (newlineIndex === -1) {
202
+ // Single-line command: show in full (useful for complex pipes)
203
+ return strValue;
204
+ }
205
+ // Multi-line command (heredoc): show first line only
206
+ return strValue.slice(0, newlineIndex) + '...';
207
+ }
208
+ // URLs: never truncate
209
+ if (NEVER_TRUNCATE_ARGS.has(argName)) {
210
+ return strValue;
211
+ }
212
+ // Other args: simple truncation
213
+ return strValue.length > 40 ? strValue.slice(0, 37) + '...' : strValue;
214
+ };
215
+ if (config) {
216
+ // Use tool-specific config
217
+ for (const argName of config.argsToShow) {
218
+ if (!(argName in args))
219
+ continue;
220
+ if (parts.length >= 3)
221
+ break;
222
+ const formattedValue = formatArgValue(argName, args[argName]);
223
+ if (argName === config.primaryArg) {
224
+ // Primary arg without key name
225
+ parts.unshift(formattedValue);
226
+ }
227
+ else {
228
+ // Secondary args with key name
229
+ parts.push(`${argName}: ${formattedValue}`);
230
+ }
231
+ }
232
+ }
233
+ else {
234
+ // Fallback for unknown tools (MCP, etc.)
235
+ for (const [key, value] of entries) {
236
+ if (parts.length >= 3)
237
+ break;
238
+ const formattedValue = formatArgValue(key, value);
239
+ if (FALLBACK_PRIMARY_ARGS.has(key) || PATH_ARGS.has(key)) {
240
+ // Primary arg without key name
241
+ parts.unshift(formattedValue);
242
+ }
243
+ else {
244
+ // Other args with key name
245
+ parts.push(`${key}: ${formattedValue}`);
246
+ }
247
+ }
248
+ }
249
+ return parts.join(', ');
250
+ }
251
+ /**
252
+ * Formats tool arguments for display (compact preview).
253
+ * @deprecated Use formatToolArgsForDisplay instead
254
+ */
255
+ export function formatToolArgsPreview(args, maxLength = 60) {
256
+ const entries = Object.entries(args);
257
+ if (entries.length === 0)
258
+ return '';
259
+ // Show key parameters in a compact format
260
+ const preview = entries
261
+ .slice(0, 3) // Max 3 params
262
+ .map(([key, value]) => {
263
+ const strValue = typeof value === 'string' ? value : JSON.stringify(value);
264
+ const truncated = strValue.length > 30 ? strValue.slice(0, 27) + '...' : strValue;
265
+ return `${key}: "${truncated}"`;
266
+ })
267
+ .join(', ');
268
+ return preview.length > maxLength ? preview.slice(0, maxLength - 3) + '...' : preview;
269
+ }
7
270
  /**
8
271
  * Creates a user message
9
272
  */
@@ -15,6 +278,19 @@ export function createUserMessage(content) {
15
278
  timestamp: new Date(),
16
279
  };
17
280
  }
281
+ /**
282
+ * Creates a queued user message (shown when message is queued while processing)
283
+ */
284
+ export function createQueuedUserMessage(content, queuePosition) {
285
+ return {
286
+ id: generateMessageId('user-queued'),
287
+ role: 'user',
288
+ content,
289
+ timestamp: new Date(),
290
+ isQueued: true,
291
+ queuePosition,
292
+ };
293
+ }
18
294
  /**
19
295
  * Creates a system message
20
296
  */
@@ -62,42 +338,35 @@ export function createStreamingMessage() {
62
338
  };
63
339
  }
64
340
  /**
65
- * Extracts text content from message content (handles string or content parts array)
341
+ * Extracts text content from message content (handles ContentPart array or null)
66
342
  */
67
343
  function extractTextContent(content) {
68
- // Simple string content
69
- if (typeof content === 'string') {
70
- return content;
71
- }
72
- // Array of content parts (from Anthropic/OpenAI format)
73
- if (Array.isArray(content)) {
74
- return content
75
- .filter((part) => part.type === 'text')
76
- .map((part) => part.text || '')
77
- .join('\n');
344
+ if (!content) {
345
+ return '';
78
346
  }
79
- // Fallback for unexpected formats
80
- return String(content);
347
+ return content
348
+ .filter(isTextPart)
349
+ .map((part) => part.text)
350
+ .join('\n');
81
351
  }
82
352
  /**
83
353
  * Converts session history messages to UI messages
84
354
  */
85
355
  export function convertHistoryToUIMessages(history, sessionId) {
86
356
  const uiMessages = [];
87
- for (let index = 0; index < history.length; index++) {
88
- const msg = history[index];
357
+ history.forEach((msg, index) => {
89
358
  // Extract text content properly
90
359
  const textContent = extractTextContent(msg.content);
91
360
  // Skip empty messages
92
361
  if (!textContent)
93
- continue;
362
+ return;
94
363
  uiMessages.push({
95
364
  id: `session-${sessionId}-${index}`,
96
365
  role: msg.role,
97
366
  content: textContent,
98
- timestamp: new Date(msg.timestamp || Date.now() - (history.length - index) * 1000),
367
+ timestamp: new Date(msg.timestamp ?? Date.now() - (history.length - index) * 1000),
99
368
  });
100
- }
369
+ });
101
370
  return uiMessages;
102
371
  }
103
372
  /**
@@ -108,7 +377,8 @@ export async function getStartupInfo(agent) {
108
377
  const failedConnections = agent.mcpManager.getFailedConnections();
109
378
  const tools = await agent.getAllTools();
110
379
  const toolCount = Object.keys(tools).length;
111
- const logFile = logger.getLogFilePath() || getDextoPath('logs', 'dexto.log');
380
+ // Use agent's logger which has the correct per-agent log path from enriched config
381
+ const logFile = agent.logger.getLogFilePath();
112
382
  return {
113
383
  connectedServers: {
114
384
  count: connectedServers.size,
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Mouse Event Utilities
3
+ * Provides trackpad/mouse scroll support.
4
+ */
5
+ import { ESC } from './input.js';
6
+ export type MouseEventName = 'scroll-up' | 'scroll-down' | 'scroll-left' | 'scroll-right' | 'left-press' | 'left-release' | 'right-press' | 'right-release' | 'middle-press' | 'middle-release' | 'move';
7
+ export interface MouseEvent {
8
+ name: MouseEventName;
9
+ col: number;
10
+ row: number;
11
+ shift: boolean;
12
+ meta: boolean;
13
+ ctrl: boolean;
14
+ button: 'left' | 'middle' | 'right' | 'none';
15
+ }
16
+ export type MouseHandler = (event: MouseEvent) => void | boolean;
17
+ /**
18
+ * Enable mouse events in the terminal.
19
+ * Uses SGR extended mouse mode for better coordinate handling.
20
+ */
21
+ export declare function enableMouseEvents(): void;
22
+ /**
23
+ * Disable mouse events in the terminal.
24
+ */
25
+ export declare function disableMouseEvents(): void;
26
+ /**
27
+ * Get mouse event name from button code
28
+ *
29
+ * NOTE: X11 mouse protocol limitation - all button releases report the same code (3),
30
+ * so we cannot distinguish between left-release, middle-release, and right-release.
31
+ * This function returns 'left-release' for all releases in X11 mode.
32
+ * Consumers needing accurate release identification should track press state themselves.
33
+ */
34
+ export declare function getMouseEventName(buttonCode: number, isRelease: boolean): MouseEventName | null;
35
+ /**
36
+ * Parse SGR format mouse event
37
+ */
38
+ export declare function parseSGRMouseEvent(buffer: string): {
39
+ event: MouseEvent;
40
+ length: number;
41
+ } | null;
42
+ /**
43
+ * Parse X11 format mouse event
44
+ */
45
+ export declare function parseX11MouseEvent(buffer: string): {
46
+ event: MouseEvent;
47
+ length: number;
48
+ } | null;
49
+ /**
50
+ * Parse mouse event from buffer (tries both SGR and X11 formats)
51
+ */
52
+ export declare function parseMouseEvent(buffer: string): {
53
+ event: MouseEvent;
54
+ length: number;
55
+ } | null;
56
+ /**
57
+ * Check if buffer could be an incomplete mouse sequence
58
+ */
59
+ export declare function isIncompleteMouseSequence(buffer: string): boolean;
60
+ export { ESC };
61
+ //# sourceMappingURL=mouse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mouse.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/mouse.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACH,GAAG,EAMN,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,cAAc,GACpB,WAAW,GACX,aAAa,GACb,aAAa,GACb,cAAc,GACd,YAAY,GACZ,cAAc,GACd,aAAa,GACb,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,MAAM,CAAC;AAEb,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,cAAc,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;CAChD;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC;AAEjE;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAIxC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI,CAmC/F;AAmBD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiC/F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAoE/F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAE5F;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAmBjE;AAGD,OAAO,EAAE,GAAG,EAAE,CAAC"}