dexto 1.3.0 → 1.5.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 (494) hide show
  1. package/README.md +87 -22
  2. package/dist/agents/agent-registry.json +9 -0
  3. package/dist/agents/agent-template.yml +2 -2
  4. package/dist/agents/coding-agent/coding-agent.yml +27 -16
  5. package/dist/agents/database-agent/database-agent.yml +2 -2
  6. package/dist/agents/default-agent.yml +9 -7
  7. package/dist/agents/github-agent/github-agent.yml +2 -2
  8. package/dist/agents/product-name-researcher/product-name-researcher.yml +2 -2
  9. package/dist/agents/talk2pdf-agent/talk2pdf-agent.yml +2 -2
  10. package/dist/analytics/events.d.ts +13 -6
  11. package/dist/analytics/events.d.ts.map +1 -1
  12. package/dist/analytics/index.d.ts +1 -1
  13. package/dist/analytics/index.d.ts.map +1 -1
  14. package/dist/analytics/index.js +6 -2
  15. package/dist/api/server-hono.d.ts.map +1 -1
  16. package/dist/api/server-hono.js +65 -9
  17. package/dist/cli/cli-subscriber.d.ts +4 -0
  18. package/dist/cli/cli-subscriber.d.ts.map +1 -1
  19. package/dist/cli/cli-subscriber.js +47 -3
  20. package/dist/cli/commands/create-app.d.ts +16 -14
  21. package/dist/cli/commands/create-app.d.ts.map +1 -1
  22. package/dist/cli/commands/create-app.js +626 -102
  23. package/dist/cli/commands/create-image.d.ts +7 -0
  24. package/dist/cli/commands/create-image.d.ts.map +1 -0
  25. package/dist/cli/commands/create-image.js +201 -0
  26. package/dist/cli/commands/helpers/formatters.d.ts.map +1 -1
  27. package/dist/cli/commands/helpers/formatters.js +9 -8
  28. package/dist/cli/commands/index.d.ts +2 -1
  29. package/dist/cli/commands/index.d.ts.map +1 -1
  30. package/dist/cli/commands/index.js +2 -1
  31. package/dist/cli/commands/init-app.js +7 -7
  32. package/dist/cli/commands/install.d.ts +0 -3
  33. package/dist/cli/commands/install.d.ts.map +1 -1
  34. package/dist/cli/commands/install.js +19 -70
  35. package/dist/cli/commands/interactive-commands/command-parser.d.ts +17 -14
  36. package/dist/cli/commands/interactive-commands/command-parser.d.ts.map +1 -1
  37. package/dist/cli/commands/interactive-commands/command-parser.js +7 -22
  38. package/dist/cli/commands/interactive-commands/commands.d.ts +4 -4
  39. package/dist/cli/commands/interactive-commands/commands.d.ts.map +1 -1
  40. package/dist/cli/commands/interactive-commands/commands.js +34 -42
  41. package/dist/cli/commands/interactive-commands/documentation-commands.d.ts.map +1 -1
  42. package/dist/cli/commands/interactive-commands/documentation-commands.js +4 -7
  43. package/dist/cli/commands/interactive-commands/general-commands.d.ts.map +1 -1
  44. package/dist/cli/commands/interactive-commands/general-commands.js +159 -117
  45. package/dist/cli/commands/interactive-commands/mcp/index.d.ts +9 -3
  46. package/dist/cli/commands/interactive-commands/mcp/index.d.ts.map +1 -1
  47. package/dist/cli/commands/interactive-commands/mcp/index.js +18 -3
  48. package/dist/cli/commands/interactive-commands/model/index.d.ts +8 -6
  49. package/dist/cli/commands/interactive-commands/model/index.d.ts.map +1 -1
  50. package/dist/cli/commands/interactive-commands/model/index.js +18 -6
  51. package/dist/cli/commands/interactive-commands/prompt-commands.d.ts +3 -2
  52. package/dist/cli/commands/interactive-commands/prompt-commands.d.ts.map +1 -1
  53. package/dist/cli/commands/interactive-commands/prompt-commands.js +77 -60
  54. package/dist/cli/commands/interactive-commands/session/index.d.ts +7 -12
  55. package/dist/cli/commands/interactive-commands/session/index.d.ts.map +1 -1
  56. package/dist/cli/commands/interactive-commands/session/index.js +7 -14
  57. package/dist/cli/commands/interactive-commands/session/session-commands.d.ts +10 -24
  58. package/dist/cli/commands/interactive-commands/session/session-commands.d.ts.map +1 -1
  59. package/dist/cli/commands/interactive-commands/session/session-commands.js +16 -371
  60. package/dist/cli/commands/interactive-commands/system/system-commands.d.ts +1 -0
  61. package/dist/cli/commands/interactive-commands/system/system-commands.d.ts.map +1 -1
  62. package/dist/cli/commands/interactive-commands/system/system-commands.js +106 -77
  63. package/dist/cli/commands/interactive-commands/tool-commands.d.ts +1 -1
  64. package/dist/cli/commands/interactive-commands/tool-commands.d.ts.map +1 -1
  65. package/dist/cli/commands/interactive-commands/tool-commands.js +5 -62
  66. package/dist/cli/commands/interactive-commands/utils/command-output.d.ts +13 -17
  67. package/dist/cli/commands/interactive-commands/utils/command-output.d.ts.map +1 -1
  68. package/dist/cli/commands/interactive-commands/utils/command-output.js +18 -37
  69. package/dist/cli/commands/list-agents.d.ts +2 -2
  70. package/dist/cli/commands/list-agents.d.ts.map +1 -1
  71. package/dist/cli/commands/list-agents.js +38 -34
  72. package/dist/cli/commands/session-commands.js +16 -16
  73. package/dist/cli/commands/setup.d.ts +13 -5
  74. package/dist/cli/commands/setup.d.ts.map +1 -1
  75. package/dist/cli/commands/setup.js +860 -65
  76. package/dist/cli/commands/uninstall.d.ts.map +1 -1
  77. package/dist/cli/commands/uninstall.js +4 -6
  78. package/dist/cli/commands/which.d.ts.map +1 -1
  79. package/dist/cli/commands/which.js +18 -4
  80. package/dist/cli/ink-cli/InkCLIRefactored.d.ts +9 -22
  81. package/dist/cli/ink-cli/InkCLIRefactored.d.ts.map +1 -1
  82. package/dist/cli/ink-cli/InkCLIRefactored.js +50 -133
  83. package/dist/cli/ink-cli/components/ApprovalPrompt.d.ts +26 -3
  84. package/dist/cli/ink-cli/components/ApprovalPrompt.d.ts.map +1 -1
  85. package/dist/cli/ink-cli/components/ApprovalPrompt.js +182 -45
  86. package/dist/cli/ink-cli/components/CustomInput.js +1 -1
  87. package/dist/cli/ink-cli/components/EditableMultiLineInput.js +4 -4
  88. package/dist/cli/ink-cli/components/ElicitationForm.d.ts +22 -0
  89. package/dist/cli/ink-cli/components/ElicitationForm.d.ts.map +1 -0
  90. package/dist/cli/ink-cli/components/ElicitationForm.js +358 -0
  91. package/dist/cli/ink-cli/components/ErrorBoundary.d.ts.map +1 -1
  92. package/dist/cli/ink-cli/components/ErrorBoundary.js +1 -1
  93. package/dist/cli/ink-cli/components/Footer.d.ts +16 -0
  94. package/dist/cli/ink-cli/components/Footer.d.ts.map +1 -0
  95. package/dist/cli/ink-cli/components/Footer.js +27 -0
  96. package/dist/cli/ink-cli/components/HistorySearchBar.d.ts +17 -0
  97. package/dist/cli/ink-cli/components/HistorySearchBar.d.ts.map +1 -0
  98. package/dist/cli/ink-cli/components/HistorySearchBar.js +8 -0
  99. package/dist/cli/ink-cli/components/MultiLineInput.d.ts.map +1 -1
  100. package/dist/cli/ink-cli/components/MultiLineInput.js +3 -3
  101. package/dist/cli/ink-cli/components/ResourceAutocomplete.d.ts +15 -2
  102. package/dist/cli/ink-cli/components/ResourceAutocomplete.d.ts.map +1 -1
  103. package/dist/cli/ink-cli/components/ResourceAutocomplete.js +126 -82
  104. package/dist/cli/ink-cli/components/SlashCommandAutocomplete.d.ts +15 -2
  105. package/dist/cli/ink-cli/components/SlashCommandAutocomplete.d.ts.map +1 -1
  106. package/dist/cli/ink-cli/components/SlashCommandAutocomplete.js +228 -122
  107. package/dist/cli/ink-cli/components/StatusBar.d.ts +15 -2
  108. package/dist/cli/ink-cli/components/StatusBar.d.ts.map +1 -1
  109. package/dist/cli/ink-cli/components/StatusBar.js +50 -10
  110. package/dist/cli/ink-cli/components/TextBufferInput.d.ts +52 -0
  111. package/dist/cli/ink-cli/components/TextBufferInput.d.ts.map +1 -0
  112. package/dist/cli/ink-cli/components/TextBufferInput.js +471 -0
  113. package/dist/cli/ink-cli/components/base/BaseAutocomplete.js +4 -4
  114. package/dist/cli/ink-cli/components/base/BaseSelector.d.ts +11 -1
  115. package/dist/cli/ink-cli/components/base/BaseSelector.d.ts.map +1 -1
  116. package/dist/cli/ink-cli/components/base/BaseSelector.js +90 -49
  117. package/dist/cli/ink-cli/components/chat/Footer.js +1 -1
  118. package/dist/cli/ink-cli/components/chat/Header.d.ts +1 -0
  119. package/dist/cli/ink-cli/components/chat/Header.d.ts.map +1 -1
  120. package/dist/cli/ink-cli/components/chat/Header.js +6 -3
  121. package/dist/cli/ink-cli/components/chat/MessageItem.d.ts +3 -0
  122. package/dist/cli/ink-cli/components/chat/MessageItem.d.ts.map +1 -1
  123. package/dist/cli/ink-cli/components/chat/MessageItem.js +95 -9
  124. package/dist/cli/ink-cli/components/chat/MessageList.js +1 -1
  125. package/dist/cli/ink-cli/components/chat/QueuedMessagesDisplay.d.ts +16 -0
  126. package/dist/cli/ink-cli/components/chat/QueuedMessagesDisplay.d.ts.map +1 -0
  127. package/dist/cli/ink-cli/components/chat/QueuedMessagesDisplay.js +27 -0
  128. package/dist/cli/ink-cli/components/chat/ToolIcon.d.ts +5 -3
  129. package/dist/cli/ink-cli/components/chat/ToolIcon.d.ts.map +1 -1
  130. package/dist/cli/ink-cli/components/chat/ToolIcon.js +21 -7
  131. package/dist/cli/ink-cli/components/chat/styled-boxes/ConfigBox.d.ts +10 -0
  132. package/dist/cli/ink-cli/components/chat/styled-boxes/ConfigBox.d.ts.map +1 -0
  133. package/dist/cli/ink-cli/components/chat/styled-boxes/ConfigBox.js +6 -0
  134. package/dist/cli/ink-cli/components/chat/styled-boxes/HelpBox.d.ts +10 -0
  135. package/dist/cli/ink-cli/components/chat/styled-boxes/HelpBox.d.ts.map +1 -0
  136. package/dist/cli/ink-cli/components/chat/styled-boxes/HelpBox.js +15 -0
  137. package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.d.ts +10 -0
  138. package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.d.ts.map +1 -0
  139. package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.js +9 -0
  140. package/dist/cli/ink-cli/components/chat/styled-boxes/SessionHistoryBox.d.ts +10 -0
  141. package/dist/cli/ink-cli/components/chat/styled-boxes/SessionHistoryBox.d.ts.map +1 -0
  142. package/dist/cli/ink-cli/components/chat/styled-boxes/SessionHistoryBox.js +37 -0
  143. package/dist/cli/ink-cli/components/chat/styled-boxes/SessionListBox.d.ts +10 -0
  144. package/dist/cli/ink-cli/components/chat/styled-boxes/SessionListBox.d.ts.map +1 -0
  145. package/dist/cli/ink-cli/components/chat/styled-boxes/SessionListBox.js +9 -0
  146. package/dist/cli/ink-cli/components/chat/styled-boxes/ShortcutsBox.d.ts +10 -0
  147. package/dist/cli/ink-cli/components/chat/styled-boxes/ShortcutsBox.d.ts.map +1 -0
  148. package/dist/cli/ink-cli/components/chat/styled-boxes/ShortcutsBox.js +6 -0
  149. package/dist/cli/ink-cli/components/chat/styled-boxes/StatsBox.d.ts +10 -0
  150. package/dist/cli/ink-cli/components/chat/styled-boxes/StatsBox.d.ts.map +1 -0
  151. package/dist/cli/ink-cli/components/chat/styled-boxes/StatsBox.js +29 -0
  152. package/dist/cli/ink-cli/components/chat/styled-boxes/StyledBox.d.ts +45 -0
  153. package/dist/cli/ink-cli/components/chat/styled-boxes/StyledBox.d.ts.map +1 -0
  154. package/dist/cli/ink-cli/components/chat/styled-boxes/StyledBox.js +38 -0
  155. package/dist/cli/ink-cli/components/chat/styled-boxes/SyspromptBox.d.ts +10 -0
  156. package/dist/cli/ink-cli/components/chat/styled-boxes/SyspromptBox.d.ts.map +1 -0
  157. package/dist/cli/ink-cli/components/chat/styled-boxes/SyspromptBox.js +6 -0
  158. package/dist/cli/ink-cli/components/chat/styled-boxes/index.d.ts +13 -0
  159. package/dist/cli/ink-cli/components/chat/styled-boxes/index.d.ts.map +1 -0
  160. package/dist/cli/ink-cli/components/chat/styled-boxes/index.js +12 -0
  161. package/dist/cli/ink-cli/components/input/InputArea.d.ts +36 -8
  162. package/dist/cli/ink-cli/components/input/InputArea.d.ts.map +1 -1
  163. package/dist/cli/ink-cli/components/input/InputArea.js +3 -3
  164. package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.d.ts +25 -0
  165. package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.d.ts.map +1 -0
  166. package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.js +166 -0
  167. package/dist/cli/ink-cli/components/modes/StaticCLI.d.ts +27 -0
  168. package/dist/cli/ink-cli/components/modes/StaticCLI.d.ts.map +1 -0
  169. package/dist/cli/ink-cli/components/modes/StaticCLI.js +95 -0
  170. package/dist/cli/ink-cli/components/modes/index.d.ts +10 -0
  171. package/dist/cli/ink-cli/components/modes/index.d.ts.map +1 -0
  172. package/dist/cli/ink-cli/components/modes/index.js +9 -0
  173. package/dist/cli/ink-cli/components/overlays/ApiKeyInput.d.ts +26 -0
  174. package/dist/cli/ink-cli/components/overlays/ApiKeyInput.d.ts.map +1 -0
  175. package/dist/cli/ink-cli/components/overlays/ApiKeyInput.js +92 -0
  176. package/dist/cli/ink-cli/components/overlays/CustomModelWizard.d.ts +29 -0
  177. package/dist/cli/ink-cli/components/overlays/CustomModelWizard.d.ts.map +1 -0
  178. package/dist/cli/ink-cli/components/overlays/CustomModelWizard.js +286 -0
  179. package/dist/cli/ink-cli/components/overlays/LogLevelSelector.d.ts +22 -0
  180. package/dist/cli/ink-cli/components/overlays/LogLevelSelector.d.ts.map +1 -0
  181. package/dist/cli/ink-cli/components/overlays/LogLevelSelector.js +59 -0
  182. package/dist/cli/ink-cli/components/overlays/McpAddChoice.d.ts +22 -0
  183. package/dist/cli/ink-cli/components/overlays/McpAddChoice.d.ts.map +1 -0
  184. package/dist/cli/ink-cli/components/overlays/McpAddChoice.js +59 -0
  185. package/dist/cli/ink-cli/components/overlays/McpAddSelector.d.ts +26 -0
  186. package/dist/cli/ink-cli/components/overlays/McpAddSelector.d.ts.map +1 -0
  187. package/dist/cli/ink-cli/components/overlays/McpAddSelector.js +73 -0
  188. package/dist/cli/ink-cli/components/overlays/McpCustomTypeSelector.d.ts +21 -0
  189. package/dist/cli/ink-cli/components/overlays/McpCustomTypeSelector.d.ts.map +1 -0
  190. package/dist/cli/ink-cli/components/overlays/McpCustomTypeSelector.js +51 -0
  191. package/dist/cli/ink-cli/components/overlays/McpCustomWizard.d.ts +29 -0
  192. package/dist/cli/ink-cli/components/overlays/McpCustomWizard.d.ts.map +1 -0
  193. package/dist/cli/ink-cli/components/overlays/McpCustomWizard.js +215 -0
  194. package/dist/cli/ink-cli/components/overlays/McpRemoveSelector.d.ts +22 -0
  195. package/dist/cli/ink-cli/components/overlays/McpRemoveSelector.d.ts.map +1 -0
  196. package/dist/cli/ink-cli/components/overlays/McpRemoveSelector.js +74 -0
  197. package/dist/cli/ink-cli/components/overlays/McpSelector.d.ts +21 -0
  198. package/dist/cli/ink-cli/components/overlays/McpSelector.d.ts.map +1 -0
  199. package/dist/cli/ink-cli/components/overlays/McpSelector.js +52 -0
  200. package/dist/cli/ink-cli/components/overlays/McpServerActions.d.ts +28 -0
  201. package/dist/cli/ink-cli/components/overlays/McpServerActions.d.ts.map +1 -0
  202. package/dist/cli/ink-cli/components/overlays/McpServerActions.js +84 -0
  203. package/dist/cli/ink-cli/components/overlays/McpServerList.d.ts +29 -0
  204. package/dist/cli/ink-cli/components/overlays/McpServerList.d.ts.map +1 -0
  205. package/dist/cli/ink-cli/components/overlays/McpServerList.js +109 -0
  206. package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.d.ts +15 -8
  207. package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.d.ts.map +1 -1
  208. package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.js +400 -23
  209. package/dist/cli/ink-cli/components/overlays/PromptAddChoice.d.ts +22 -0
  210. package/dist/cli/ink-cli/components/overlays/PromptAddChoice.d.ts.map +1 -0
  211. package/dist/cli/ink-cli/components/overlays/PromptAddChoice.js +52 -0
  212. package/dist/cli/ink-cli/components/overlays/PromptAddWizard.d.ts +29 -0
  213. package/dist/cli/ink-cli/components/overlays/PromptAddWizard.d.ts.map +1 -0
  214. package/dist/cli/ink-cli/components/overlays/PromptAddWizard.js +166 -0
  215. package/dist/cli/ink-cli/components/overlays/PromptDeleteSelector.d.ts +27 -0
  216. package/dist/cli/ink-cli/components/overlays/PromptDeleteSelector.d.ts.map +1 -0
  217. package/dist/cli/ink-cli/components/overlays/PromptDeleteSelector.js +119 -0
  218. package/dist/cli/ink-cli/components/overlays/PromptList.d.ts +33 -0
  219. package/dist/cli/ink-cli/components/overlays/PromptList.d.ts.map +1 -0
  220. package/dist/cli/ink-cli/components/overlays/PromptList.js +144 -0
  221. package/dist/cli/ink-cli/components/overlays/SearchOverlay.d.ts +23 -0
  222. package/dist/cli/ink-cli/components/overlays/SearchOverlay.d.ts.map +1 -0
  223. package/dist/cli/ink-cli/components/overlays/SearchOverlay.js +189 -0
  224. package/dist/cli/ink-cli/components/overlays/SessionSelectorRefactored.d.ts +7 -2
  225. package/dist/cli/ink-cli/components/overlays/SessionSelectorRefactored.d.ts.map +1 -1
  226. package/dist/cli/ink-cli/components/overlays/SessionSelectorRefactored.js +19 -5
  227. package/dist/cli/ink-cli/components/overlays/SessionSubcommandSelector.d.ts +21 -0
  228. package/dist/cli/ink-cli/components/overlays/SessionSubcommandSelector.d.ts.map +1 -0
  229. package/dist/cli/ink-cli/components/overlays/SessionSubcommandSelector.js +42 -0
  230. package/dist/cli/ink-cli/components/overlays/StreamSelector.d.ts +20 -0
  231. package/dist/cli/ink-cli/components/overlays/StreamSelector.d.ts.map +1 -0
  232. package/dist/cli/ink-cli/components/overlays/StreamSelector.js +58 -0
  233. package/dist/cli/ink-cli/components/overlays/ToolBrowser.d.ts +25 -0
  234. package/dist/cli/ink-cli/components/overlays/ToolBrowser.d.ts.map +1 -0
  235. package/dist/cli/ink-cli/components/overlays/ToolBrowser.js +400 -0
  236. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/LocalModelWizard.d.ts +25 -0
  237. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/LocalModelWizard.d.ts.map +1 -0
  238. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/LocalModelWizard.js +609 -0
  239. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/index.d.ts +15 -0
  240. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/index.d.ts.map +1 -0
  241. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/index.js +14 -0
  242. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/provider-config.d.ts +33 -0
  243. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/provider-config.d.ts.map +1 -0
  244. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/provider-config.js +419 -0
  245. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ApiKeyStep.d.ts +25 -0
  246. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ApiKeyStep.d.ts.map +1 -0
  247. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ApiKeyStep.js +29 -0
  248. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ProviderSelector.d.ts +17 -0
  249. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ProviderSelector.d.ts.map +1 -0
  250. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ProviderSelector.js +11 -0
  251. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/SetupInfoBanner.d.ts +20 -0
  252. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/SetupInfoBanner.d.ts.map +1 -0
  253. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/SetupInfoBanner.js +10 -0
  254. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/WizardStepInput.d.ts +30 -0
  255. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/WizardStepInput.d.ts.map +1 -0
  256. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/WizardStepInput.js +13 -0
  257. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/index.d.ts +8 -0
  258. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/index.d.ts.map +1 -0
  259. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/index.js +7 -0
  260. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/types.d.ts +79 -0
  261. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/types.d.ts.map +1 -0
  262. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/types.js +38 -0
  263. package/dist/cli/ink-cli/components/renderers/DiffRenderer.d.ts +21 -0
  264. package/dist/cli/ink-cli/components/renderers/DiffRenderer.d.ts.map +1 -0
  265. package/dist/cli/ink-cli/components/renderers/DiffRenderer.js +65 -0
  266. package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.d.ts +28 -0
  267. package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.d.ts.map +1 -0
  268. package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.js +66 -0
  269. package/dist/cli/ink-cli/components/renderers/FileRenderer.d.ts +19 -0
  270. package/dist/cli/ink-cli/components/renderers/FileRenderer.d.ts.map +1 -0
  271. package/dist/cli/ink-cli/components/renderers/FileRenderer.js +26 -0
  272. package/dist/cli/ink-cli/components/renderers/GenericRenderer.d.ts +21 -0
  273. package/dist/cli/ink-cli/components/renderers/GenericRenderer.d.ts.map +1 -0
  274. package/dist/cli/ink-cli/components/renderers/GenericRenderer.js +26 -0
  275. package/dist/cli/ink-cli/components/renderers/SearchRenderer.d.ts +20 -0
  276. package/dist/cli/ink-cli/components/renderers/SearchRenderer.d.ts.map +1 -0
  277. package/dist/cli/ink-cli/components/renderers/SearchRenderer.js +12 -0
  278. package/dist/cli/ink-cli/components/renderers/ShellRenderer.d.ts +21 -0
  279. package/dist/cli/ink-cli/components/renderers/ShellRenderer.d.ts.map +1 -0
  280. package/dist/cli/ink-cli/components/renderers/ShellRenderer.js +25 -0
  281. package/dist/cli/ink-cli/components/renderers/diff-shared.d.ts +61 -0
  282. package/dist/cli/ink-cli/components/renderers/diff-shared.d.ts.map +1 -0
  283. package/dist/cli/ink-cli/components/renderers/diff-shared.js +158 -0
  284. package/dist/cli/ink-cli/components/renderers/index.d.ts +28 -0
  285. package/dist/cli/ink-cli/components/renderers/index.d.ts.map +1 -0
  286. package/dist/cli/ink-cli/components/renderers/index.js +36 -0
  287. package/dist/cli/ink-cli/components/shared/MarkdownText.d.ts +38 -0
  288. package/dist/cli/ink-cli/components/shared/MarkdownText.d.ts.map +1 -0
  289. package/dist/cli/ink-cli/components/shared/MarkdownText.js +362 -0
  290. package/dist/cli/ink-cli/components/shared/VirtualizedList.d.ts +44 -0
  291. package/dist/cli/ink-cli/components/shared/VirtualizedList.d.ts.map +1 -0
  292. package/dist/cli/ink-cli/components/shared/VirtualizedList.js +300 -0
  293. package/dist/cli/ink-cli/components/shared/text-buffer.d.ts +185 -0
  294. package/dist/cli/ink-cli/components/shared/text-buffer.d.ts.map +1 -0
  295. package/dist/cli/ink-cli/components/shared/text-buffer.js +1338 -0
  296. package/dist/cli/ink-cli/constants/processingPhrases.d.ts +10 -0
  297. package/dist/cli/ink-cli/constants/processingPhrases.d.ts.map +1 -0
  298. package/dist/cli/ink-cli/constants/processingPhrases.js +64 -0
  299. package/dist/cli/ink-cli/constants/tips.d.ts +15 -0
  300. package/dist/cli/ink-cli/constants/tips.d.ts.map +1 -0
  301. package/dist/cli/ink-cli/constants/tips.js +53 -0
  302. package/dist/cli/ink-cli/containers/InputContainer.d.ts +42 -8
  303. package/dist/cli/ink-cli/containers/InputContainer.d.ts.map +1 -1
  304. package/dist/cli/ink-cli/containers/InputContainer.js +513 -85
  305. package/dist/cli/ink-cli/containers/OverlayContainer.d.ts +23 -5
  306. package/dist/cli/ink-cli/containers/OverlayContainer.d.ts.map +1 -1
  307. package/dist/cli/ink-cli/containers/OverlayContainer.js +1214 -132
  308. package/dist/cli/ink-cli/containers/index.d.ts +1 -1
  309. package/dist/cli/ink-cli/containers/index.d.ts.map +1 -1
  310. package/dist/cli/ink-cli/contexts/KeypressContext.d.ts +36 -0
  311. package/dist/cli/ink-cli/contexts/KeypressContext.d.ts.map +1 -0
  312. package/dist/cli/ink-cli/contexts/KeypressContext.js +461 -0
  313. package/dist/cli/ink-cli/contexts/MouseContext.d.ts +27 -0
  314. package/dist/cli/ink-cli/contexts/MouseContext.d.ts.map +1 -0
  315. package/dist/cli/ink-cli/contexts/MouseContext.js +102 -0
  316. package/dist/cli/ink-cli/contexts/ScrollProvider.d.ts +33 -0
  317. package/dist/cli/ink-cli/contexts/ScrollProvider.d.ts.map +1 -0
  318. package/dist/cli/ink-cli/contexts/ScrollProvider.js +170 -0
  319. package/dist/cli/ink-cli/contexts/index.d.ts +7 -0
  320. package/dist/cli/ink-cli/contexts/index.d.ts.map +1 -0
  321. package/dist/cli/ink-cli/contexts/index.js +6 -0
  322. package/dist/cli/ink-cli/hooks/index.d.ts +5 -0
  323. package/dist/cli/ink-cli/hooks/index.d.ts.map +1 -1
  324. package/dist/cli/ink-cli/hooks/index.js +6 -1
  325. package/dist/cli/ink-cli/hooks/useAgentEvents.d.ts +26 -9
  326. package/dist/cli/ink-cli/hooks/useAgentEvents.d.ts.map +1 -1
  327. package/dist/cli/ink-cli/hooks/useAgentEvents.js +90 -198
  328. package/dist/cli/ink-cli/hooks/useBatchedScroll.d.ts +14 -0
  329. package/dist/cli/ink-cli/hooks/useBatchedScroll.d.ts.map +1 -0
  330. package/dist/cli/ink-cli/hooks/useBatchedScroll.js +25 -0
  331. package/dist/cli/ink-cli/hooks/useCLIState.d.ts +50 -0
  332. package/dist/cli/ink-cli/hooks/useCLIState.d.ts.map +1 -0
  333. package/dist/cli/ink-cli/hooks/useCLIState.js +190 -0
  334. package/dist/cli/ink-cli/hooks/useElapsedTime.d.ts +24 -0
  335. package/dist/cli/ink-cli/hooks/useElapsedTime.d.ts.map +1 -0
  336. package/dist/cli/ink-cli/hooks/useElapsedTime.js +69 -0
  337. package/dist/cli/ink-cli/hooks/useHistorySearch.d.ts +61 -0
  338. package/dist/cli/ink-cli/hooks/useHistorySearch.d.ts.map +1 -0
  339. package/dist/cli/ink-cli/hooks/useHistorySearch.js +210 -0
  340. package/dist/cli/ink-cli/hooks/useInputOrchestrator.d.ts +136 -0
  341. package/dist/cli/ink-cli/hooks/useInputOrchestrator.d.ts.map +1 -0
  342. package/dist/cli/ink-cli/hooks/useInputOrchestrator.js +663 -0
  343. package/dist/cli/ink-cli/hooks/useKeyboardShortcuts.d.ts.map +1 -1
  344. package/dist/cli/ink-cli/hooks/useKeyboardShortcuts.js +7 -26
  345. package/dist/cli/ink-cli/hooks/useKeypress.d.ts +18 -0
  346. package/dist/cli/ink-cli/hooks/useKeypress.d.ts.map +1 -0
  347. package/dist/cli/ink-cli/hooks/useKeypress.js +26 -0
  348. package/dist/cli/ink-cli/hooks/usePhraseCycler.d.ts +30 -0
  349. package/dist/cli/ink-cli/hooks/usePhraseCycler.d.ts.map +1 -0
  350. package/dist/cli/ink-cli/hooks/usePhraseCycler.js +68 -0
  351. package/dist/cli/ink-cli/hooks/useStreaming.d.ts +19 -0
  352. package/dist/cli/ink-cli/hooks/useStreaming.d.ts.map +1 -0
  353. package/dist/cli/ink-cli/hooks/useStreaming.js +26 -0
  354. package/dist/cli/ink-cli/hooks/useTerminalSize.d.ts +14 -0
  355. package/dist/cli/ink-cli/hooks/useTerminalSize.d.ts.map +1 -0
  356. package/dist/cli/ink-cli/hooks/useTerminalSize.js +31 -0
  357. package/dist/cli/ink-cli/hooks/useTokenCounter.d.ts +42 -0
  358. package/dist/cli/ink-cli/hooks/useTokenCounter.d.ts.map +1 -0
  359. package/dist/cli/ink-cli/hooks/useTokenCounter.js +96 -0
  360. package/dist/cli/ink-cli/services/CommandService.d.ts +32 -1
  361. package/dist/cli/ink-cli/services/CommandService.d.ts.map +1 -1
  362. package/dist/cli/ink-cli/services/CommandService.js +36 -5
  363. package/dist/cli/ink-cli/services/InputService.d.ts +1 -5
  364. package/dist/cli/ink-cli/services/InputService.d.ts.map +1 -1
  365. package/dist/cli/ink-cli/services/InputService.js +1 -8
  366. package/dist/cli/ink-cli/services/index.d.ts +2 -1
  367. package/dist/cli/ink-cli/services/index.d.ts.map +1 -1
  368. package/dist/cli/ink-cli/services/index.js +2 -1
  369. package/dist/cli/ink-cli/services/processStream.d.ts +69 -0
  370. package/dist/cli/ink-cli/services/processStream.d.ts.map +1 -0
  371. package/dist/cli/ink-cli/services/processStream.js +742 -0
  372. package/dist/cli/ink-cli/state/actions.d.ts +30 -60
  373. package/dist/cli/ink-cli/state/actions.d.ts.map +1 -1
  374. package/dist/cli/ink-cli/state/actions.js +3 -0
  375. package/dist/cli/ink-cli/state/index.d.ts +5 -3
  376. package/dist/cli/ink-cli/state/index.d.ts.map +1 -1
  377. package/dist/cli/ink-cli/state/index.js +4 -3
  378. package/dist/cli/ink-cli/state/initialState.d.ts +4 -3
  379. package/dist/cli/ink-cli/state/initialState.d.ts.map +1 -1
  380. package/dist/cli/ink-cli/state/initialState.js +20 -4
  381. package/dist/cli/ink-cli/state/reducer.d.ts +3 -0
  382. package/dist/cli/ink-cli/state/reducer.d.ts.map +1 -1
  383. package/dist/cli/ink-cli/state/reducer.js +62 -168
  384. package/dist/cli/ink-cli/state/streaming-state.d.ts +27 -0
  385. package/dist/cli/ink-cli/state/streaming-state.d.ts.map +1 -0
  386. package/dist/cli/ink-cli/state/streaming-state.js +39 -0
  387. package/dist/cli/ink-cli/state/types.d.ts +223 -6
  388. package/dist/cli/ink-cli/state/types.d.ts.map +1 -1
  389. package/dist/cli/ink-cli/utils/bracketedPaste.d.ts +22 -0
  390. package/dist/cli/ink-cli/utils/bracketedPaste.d.ts.map +1 -0
  391. package/dist/cli/ink-cli/utils/bracketedPaste.js +27 -0
  392. package/dist/cli/ink-cli/utils/clipboardUtils.d.ts +49 -0
  393. package/dist/cli/ink-cli/utils/clipboardUtils.d.ts.map +1 -0
  394. package/dist/cli/ink-cli/utils/clipboardUtils.js +356 -0
  395. package/dist/cli/ink-cli/utils/commandOverlays.d.ts +33 -0
  396. package/dist/cli/ink-cli/utils/commandOverlays.d.ts.map +1 -0
  397. package/dist/cli/ink-cli/utils/commandOverlays.js +78 -0
  398. package/dist/cli/ink-cli/utils/debugLog.d.ts +38 -0
  399. package/dist/cli/ink-cli/utils/debugLog.d.ts.map +1 -0
  400. package/dist/cli/ink-cli/utils/debugLog.js +66 -0
  401. package/dist/cli/ink-cli/utils/index.d.ts +2 -1
  402. package/dist/cli/ink-cli/utils/index.d.ts.map +1 -1
  403. package/dist/cli/ink-cli/utils/index.js +3 -1
  404. package/dist/cli/ink-cli/utils/input.d.ts +25 -0
  405. package/dist/cli/ink-cli/utils/input.d.ts.map +1 -0
  406. package/dist/cli/ink-cli/utils/input.js +56 -0
  407. package/dist/cli/ink-cli/utils/inputParsing.d.ts +0 -9
  408. package/dist/cli/ink-cli/utils/inputParsing.d.ts.map +1 -1
  409. package/dist/cli/ink-cli/utils/inputParsing.js +0 -27
  410. package/dist/cli/ink-cli/utils/messageFormatting.d.ts +59 -3
  411. package/dist/cli/ink-cli/utils/messageFormatting.d.ts.map +1 -1
  412. package/dist/cli/ink-cli/utils/messageFormatting.js +348 -20
  413. package/dist/cli/ink-cli/utils/mouse.d.ts +61 -0
  414. package/dist/cli/ink-cli/utils/mouse.d.ts.map +1 -0
  415. package/dist/cli/ink-cli/utils/mouse.js +209 -0
  416. package/dist/cli/ink-cli/utils/streamSplitter.d.ts +44 -0
  417. package/dist/cli/ink-cli/utils/streamSplitter.d.ts.map +1 -0
  418. package/dist/cli/ink-cli/utils/streamSplitter.js +154 -0
  419. package/dist/cli/ink-cli/utils/textUtils.d.ts +63 -0
  420. package/dist/cli/ink-cli/utils/textUtils.d.ts.map +1 -0
  421. package/dist/cli/ink-cli/utils/textUtils.js +248 -0
  422. package/dist/cli/ink-cli/utils/toolUtils.d.ts +9 -0
  423. package/dist/cli/ink-cli/utils/toolUtils.d.ts.map +1 -0
  424. package/dist/cli/ink-cli/utils/toolUtils.js +15 -0
  425. package/dist/cli/utils/api-key-setup.d.ts +54 -4
  426. package/dist/cli/utils/api-key-setup.d.ts.map +1 -1
  427. package/dist/cli/utils/api-key-setup.js +433 -107
  428. package/dist/cli/utils/api-key-verification.d.ts +17 -0
  429. package/dist/cli/utils/api-key-verification.d.ts.map +1 -0
  430. package/dist/cli/utils/api-key-verification.js +211 -0
  431. package/dist/cli/utils/config-validation.d.ts +22 -2
  432. package/dist/cli/utils/config-validation.d.ts.map +1 -1
  433. package/dist/cli/utils/config-validation.js +354 -25
  434. package/dist/cli/utils/local-model-setup.d.ts +46 -0
  435. package/dist/cli/utils/local-model-setup.d.ts.map +1 -0
  436. package/dist/cli/utils/local-model-setup.js +662 -0
  437. package/dist/cli/utils/options.d.ts.map +1 -1
  438. package/dist/cli/utils/options.js +1 -3
  439. package/dist/cli/utils/prompt-helpers.d.ts +47 -0
  440. package/dist/cli/utils/prompt-helpers.d.ts.map +1 -0
  441. package/dist/cli/utils/prompt-helpers.js +66 -0
  442. package/dist/cli/utils/provider-setup.d.ts +66 -8
  443. package/dist/cli/utils/provider-setup.d.ts.map +1 -1
  444. package/dist/cli/utils/provider-setup.js +324 -84
  445. package/dist/cli/utils/scaffolding-utils.d.ts +76 -0
  446. package/dist/cli/utils/scaffolding-utils.d.ts.map +1 -0
  447. package/dist/cli/utils/scaffolding-utils.js +246 -0
  448. package/dist/cli/utils/setup-utils.d.ts +16 -0
  449. package/dist/cli/utils/setup-utils.d.ts.map +1 -1
  450. package/dist/cli/utils/setup-utils.js +72 -21
  451. package/dist/cli/utils/template-engine.d.ts +65 -0
  452. package/dist/cli/utils/template-engine.d.ts.map +1 -0
  453. package/dist/cli/utils/template-engine.js +1089 -0
  454. package/dist/config/cli-overrides.d.ts +45 -2
  455. package/dist/config/cli-overrides.d.ts.map +1 -1
  456. package/dist/config/cli-overrides.js +107 -10
  457. package/dist/index.js +379 -99
  458. package/dist/utils/agent-helpers.d.ts +95 -0
  459. package/dist/utils/agent-helpers.d.ts.map +1 -0
  460. package/dist/utils/agent-helpers.js +117 -0
  461. package/dist/webui/assets/index-8j-KMkX1.js +2054 -0
  462. package/dist/webui/assets/index-c_AX24V4.css +1 -0
  463. package/dist/webui/assets/{tanstack-DgxBONJY.js → tanstack-Br79RQ-n.js} +1 -1
  464. package/dist/webui/index.html +4 -10
  465. package/dist/webui/logos/aws-color.svg +1 -0
  466. package/dist/webui/logos/dexto/dexto_logo.svg +1 -1
  467. package/dist/webui/logos/dexto/dexto_logo_light.svg +6 -6
  468. package/dist/webui/logos/glama.svg +7 -0
  469. package/dist/webui/logos/litellm.svg +7 -0
  470. package/dist/webui/logos/openrouter.svg +1 -0
  471. package/package.json +18 -15
  472. package/dist/cli/commands/interactive-commands/index.d.ts +0 -63
  473. package/dist/cli/commands/interactive-commands/index.d.ts.map +0 -1
  474. package/dist/cli/commands/interactive-commands/index.js +0 -73
  475. package/dist/cli/commands/interactive-commands/mcp/mcp-add-utils.d.ts +0 -34
  476. package/dist/cli/commands/interactive-commands/mcp/mcp-add-utils.d.ts.map +0 -1
  477. package/dist/cli/commands/interactive-commands/mcp/mcp-add-utils.js +0 -178
  478. package/dist/cli/commands/interactive-commands/mcp/mcp-commands.d.ts +0 -9
  479. package/dist/cli/commands/interactive-commands/mcp/mcp-commands.d.ts.map +0 -1
  480. package/dist/cli/commands/interactive-commands/mcp/mcp-commands.js +0 -325
  481. package/dist/cli/commands/interactive-commands/model/model-commands.d.ts +0 -21
  482. package/dist/cli/commands/interactive-commands/model/model-commands.d.ts.map +0 -1
  483. package/dist/cli/commands/interactive-commands/model/model-commands.js +0 -190
  484. package/dist/cli/ink-cli/components/MultiLineTextInput.d.ts +0 -26
  485. package/dist/cli/ink-cli/components/MultiLineTextInput.d.ts.map +0 -1
  486. package/dist/cli/ink-cli/components/MultiLineTextInput.js +0 -220
  487. package/dist/discord/bot.d.ts +0 -4
  488. package/dist/discord/bot.d.ts.map +0 -1
  489. package/dist/discord/bot.js +0 -193
  490. package/dist/telegram/bot.d.ts +0 -5
  491. package/dist/telegram/bot.d.ts.map +0 -1
  492. package/dist/telegram/bot.js +0 -251
  493. package/dist/webui/assets/index-DKq5Xng1.js +0 -687
  494. 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,68 @@
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
+ * Gets the tool type badge for display.
41
+ * Returns: 'internal', MCP server name, or 'custom'
42
+ */
43
+ export declare function getToolTypeBadge(toolName: string): string;
44
+ /**
45
+ * Formats tool arguments for display.
46
+ * Format: ToolName(primary_arg) or ToolName(primary_arg, key: value)
47
+ *
48
+ * Uses tool-specific config to determine which args to show.
49
+ * - File paths: converted to relative paths, center-truncated if needed
50
+ * - Commands/URLs: shown in full (never truncated)
51
+ * - Other args: truncated at 40 chars
52
+ */
53
+ export declare function formatToolArgsForDisplay(toolName: string, args: Record<string, unknown>): string;
54
+ /**
55
+ * Formats tool arguments for display (compact preview).
56
+ * @deprecated Use formatToolArgsForDisplay instead
57
+ */
58
+ export declare function formatToolArgsPreview(args: Record<string, unknown>, maxLength?: number): string;
7
59
  /**
8
60
  * Creates a user message
9
61
  */
10
62
  export declare function createUserMessage(content: string): Message;
63
+ /**
64
+ * Creates a queued user message (shown when message is queued while processing)
65
+ */
66
+ export declare function createQueuedUserMessage(content: string, queuePosition: number): Message;
11
67
  /**
12
68
  * Creates a system message
13
69
  */
@@ -27,7 +83,7 @@ export declare function createStreamingMessage(): Message;
27
83
  /**
28
84
  * Converts session history messages to UI messages
29
85
  */
30
- export declare function convertHistoryToUIMessages(history: any[], sessionId: string): Message[];
86
+ export declare function convertHistoryToUIMessages(history: InternalMessage[], sessionId: string): Message[];
31
87
  /**
32
88
  * Collects startup information for display in header
33
89
  */
@@ -38,6 +94,6 @@ export declare function getStartupInfo(agent: DextoAgent): Promise<{
38
94
  };
39
95
  failedConnections: string[];
40
96
  toolCount: number;
41
- logFile: string;
97
+ logFile: string | null;
42
98
  }>;
43
99
  //# 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;AAyED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA6B3D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA8BzD;AA8BD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CA0EhG;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,329 @@
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
+ // Strip "custom--" prefix and try again
130
+ if (toolName.startsWith('custom--')) {
131
+ const baseName = toolName.replace('custom--', '');
132
+ return TOOL_CONFIGS[baseName];
133
+ }
134
+ return undefined;
135
+ }
136
+ /**
137
+ * Gets a user-friendly display name for a tool.
138
+ * Returns the friendly name if known, otherwise returns the original name
139
+ * with any "internal--" prefix stripped.
140
+ * MCP tools keep their server prefix for clarity (e.g., "mcp_server__tool").
141
+ */
142
+ export function getToolDisplayName(toolName) {
143
+ const config = getToolConfig(toolName);
144
+ if (config) {
145
+ return config.displayName;
146
+ }
147
+ // Strip "internal--" prefix for unknown internal tools
148
+ if (toolName.startsWith('internal--')) {
149
+ return toolName.replace('internal--', '');
150
+ }
151
+ // Strip "custom--" prefix for custom tools
152
+ if (toolName.startsWith('custom--')) {
153
+ return toolName.replace('custom--', '');
154
+ }
155
+ // MCP tools: strip mcp-- or mcp__ prefix and server name for clean display
156
+ if (toolName.startsWith('mcp--')) {
157
+ const parts = toolName.split('--');
158
+ if (parts.length >= 3) {
159
+ return parts.slice(2).join('--');
160
+ }
161
+ return toolName.substring(5);
162
+ }
163
+ if (toolName.startsWith('mcp__')) {
164
+ const parts = toolName.substring(5).split('__');
165
+ if (parts.length >= 2) {
166
+ return parts.slice(1).join('__');
167
+ }
168
+ return toolName.substring(5);
169
+ }
170
+ return toolName;
171
+ }
172
+ /**
173
+ * Gets the tool type badge for display.
174
+ * Returns: 'internal', MCP server name, or 'custom'
175
+ */
176
+ export function getToolTypeBadge(toolName) {
177
+ // Internal tools
178
+ if (toolName.startsWith('internal--') || toolName.startsWith('internal__')) {
179
+ return 'internal';
180
+ }
181
+ // MCP tools with server name
182
+ if (toolName.startsWith('mcp--')) {
183
+ const parts = toolName.split('--');
184
+ if (parts.length >= 3 && parts[1]) {
185
+ return `MCP: ${parts[1]}`; // Format: 'MCP: github', 'MCP: postgres'
186
+ }
187
+ return 'MCP';
188
+ }
189
+ if (toolName.startsWith('mcp__')) {
190
+ const parts = toolName.substring(5).split('__');
191
+ if (parts.length >= 2 && parts[0]) {
192
+ return `MCP: ${parts[0]}`; // Format: 'MCP: servername'
193
+ }
194
+ return 'MCP';
195
+ }
196
+ // Custom tools
197
+ if (toolName.startsWith('custom--')) {
198
+ return 'custom';
199
+ }
200
+ // Unknown - likely custom
201
+ return 'custom';
202
+ }
203
+ /**
204
+ * Fallback primary argument names for unknown tools.
205
+ * Used when we don't have a specific config for a tool.
206
+ */
207
+ const FALLBACK_PRIMARY_ARGS = new Set([
208
+ 'file_path',
209
+ 'path',
210
+ 'pattern',
211
+ 'command',
212
+ 'query',
213
+ 'question',
214
+ 'url',
215
+ ]);
216
+ /**
217
+ * Arguments that are file paths and should use relative path formatting.
218
+ * These get converted to relative paths and center-truncated if needed.
219
+ */
220
+ const PATH_ARGS = new Set(['file_path', 'path']);
221
+ /**
222
+ * Arguments that should never be truncated (urls, etc.)
223
+ * These provide important context that users need to see in full.
224
+ * Note: 'command' is handled specially - single-line commands are not truncated,
225
+ * but multi-line commands (heredocs) are truncated to first line only.
226
+ */
227
+ const NEVER_TRUNCATE_ARGS = new Set(['url']);
228
+ /**
229
+ * Formats tool arguments for display.
230
+ * Format: ToolName(primary_arg) or ToolName(primary_arg, key: value)
231
+ *
232
+ * Uses tool-specific config to determine which args to show.
233
+ * - File paths: converted to relative paths, center-truncated if needed
234
+ * - Commands/URLs: shown in full (never truncated)
235
+ * - Other args: truncated at 40 chars
236
+ */
237
+ export function formatToolArgsForDisplay(toolName, args) {
238
+ const entries = Object.entries(args);
239
+ if (entries.length === 0)
240
+ return '';
241
+ const config = getToolConfig(toolName);
242
+ const parts = [];
243
+ /**
244
+ * Format a single argument value for display
245
+ */
246
+ const formatArgValue = (argName, value) => {
247
+ const strValue = typeof value === 'string' ? value : JSON.stringify(value);
248
+ // File paths: use relative path + center-truncation
249
+ if (PATH_ARGS.has(argName)) {
250
+ return formatPathForDisplay(strValue);
251
+ }
252
+ // Commands: show single-line in full, truncate multi-line (heredocs) to first line
253
+ if (argName === 'command') {
254
+ const newlineIndex = strValue.indexOf('\n');
255
+ if (newlineIndex === -1) {
256
+ // Single-line command: show in full (useful for complex pipes)
257
+ return strValue;
258
+ }
259
+ // Multi-line command (heredoc): show first line only
260
+ return strValue.slice(0, newlineIndex) + '...';
261
+ }
262
+ // URLs: never truncate
263
+ if (NEVER_TRUNCATE_ARGS.has(argName)) {
264
+ return strValue;
265
+ }
266
+ // Other args: simple truncation
267
+ return strValue.length > 40 ? strValue.slice(0, 37) + '...' : strValue;
268
+ };
269
+ if (config) {
270
+ // Use tool-specific config
271
+ for (const argName of config.argsToShow) {
272
+ if (!(argName in args))
273
+ continue;
274
+ if (argName === 'description')
275
+ continue; // Skip description field
276
+ if (parts.length >= 3)
277
+ break;
278
+ const formattedValue = formatArgValue(argName, args[argName]);
279
+ if (argName === config.primaryArg) {
280
+ // Primary arg without key name
281
+ parts.unshift(formattedValue);
282
+ }
283
+ else {
284
+ // Secondary args with key name
285
+ parts.push(`${argName}: ${formattedValue}`);
286
+ }
287
+ }
288
+ }
289
+ else {
290
+ // Fallback for unknown tools (MCP, etc.)
291
+ for (const [key, value] of entries) {
292
+ if (key === 'description')
293
+ continue; // Skip description field
294
+ if (parts.length >= 3)
295
+ break;
296
+ const formattedValue = formatArgValue(key, value);
297
+ if (FALLBACK_PRIMARY_ARGS.has(key) || PATH_ARGS.has(key)) {
298
+ // Primary arg without key name
299
+ parts.unshift(formattedValue);
300
+ }
301
+ else {
302
+ // Other args with key name
303
+ parts.push(`${key}: ${formattedValue}`);
304
+ }
305
+ }
306
+ }
307
+ return parts.join(', ');
308
+ }
309
+ /**
310
+ * Formats tool arguments for display (compact preview).
311
+ * @deprecated Use formatToolArgsForDisplay instead
312
+ */
313
+ export function formatToolArgsPreview(args, maxLength = 60) {
314
+ const entries = Object.entries(args);
315
+ if (entries.length === 0)
316
+ return '';
317
+ // Show key parameters in a compact format
318
+ const preview = entries
319
+ .slice(0, 3) // Max 3 params
320
+ .map(([key, value]) => {
321
+ const strValue = typeof value === 'string' ? value : JSON.stringify(value);
322
+ const truncated = strValue.length > 30 ? strValue.slice(0, 27) + '...' : strValue;
323
+ return `${key}: "${truncated}"`;
324
+ })
325
+ .join(', ');
326
+ return preview.length > maxLength ? preview.slice(0, maxLength - 3) + '...' : preview;
327
+ }
7
328
  /**
8
329
  * Creates a user message
9
330
  */
@@ -15,6 +336,19 @@ export function createUserMessage(content) {
15
336
  timestamp: new Date(),
16
337
  };
17
338
  }
339
+ /**
340
+ * Creates a queued user message (shown when message is queued while processing)
341
+ */
342
+ export function createQueuedUserMessage(content, queuePosition) {
343
+ return {
344
+ id: generateMessageId('user-queued'),
345
+ role: 'user',
346
+ content,
347
+ timestamp: new Date(),
348
+ isQueued: true,
349
+ queuePosition,
350
+ };
351
+ }
18
352
  /**
19
353
  * Creates a system message
20
354
  */
@@ -62,42 +396,35 @@ export function createStreamingMessage() {
62
396
  };
63
397
  }
64
398
  /**
65
- * Extracts text content from message content (handles string or content parts array)
399
+ * Extracts text content from message content (handles ContentPart array or null)
66
400
  */
67
401
  function extractTextContent(content) {
68
- // Simple string content
69
- if (typeof content === 'string') {
70
- return content;
402
+ if (!content) {
403
+ return '';
71
404
  }
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');
78
- }
79
- // Fallback for unexpected formats
80
- return String(content);
405
+ return content
406
+ .filter(isTextPart)
407
+ .map((part) => part.text)
408
+ .join('\n');
81
409
  }
82
410
  /**
83
411
  * Converts session history messages to UI messages
84
412
  */
85
413
  export function convertHistoryToUIMessages(history, sessionId) {
86
414
  const uiMessages = [];
87
- for (let index = 0; index < history.length; index++) {
88
- const msg = history[index];
415
+ history.forEach((msg, index) => {
89
416
  // Extract text content properly
90
417
  const textContent = extractTextContent(msg.content);
91
418
  // Skip empty messages
92
419
  if (!textContent)
93
- continue;
420
+ return;
94
421
  uiMessages.push({
95
422
  id: `session-${sessionId}-${index}`,
96
423
  role: msg.role,
97
424
  content: textContent,
98
- timestamp: new Date(msg.timestamp || Date.now() - (history.length - index) * 1000),
425
+ timestamp: new Date(msg.timestamp ?? Date.now() - (history.length - index) * 1000),
99
426
  });
100
- }
427
+ });
101
428
  return uiMessages;
102
429
  }
103
430
  /**
@@ -108,7 +435,8 @@ export async function getStartupInfo(agent) {
108
435
  const failedConnections = agent.mcpManager.getFailedConnections();
109
436
  const tools = await agent.getAllTools();
110
437
  const toolCount = Object.keys(tools).length;
111
- const logFile = logger.getLogFilePath() || getDextoPath('logs', 'dexto.log');
438
+ // Use agent's logger which has the correct per-agent log path from enriched config
439
+ const logFile = agent.logger.getLogFilePath();
112
440
  return {
113
441
  connectedServers: {
114
442
  count: connectedServers.size,