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,356 @@
1
+ /**
2
+ * Clipboard utilities for reading images from system clipboard
3
+ *
4
+ * Supports macOS, Windows/WSL, and Linux (Wayland + X11).
5
+ *
6
+ */
7
+ import { spawn } from 'node:child_process';
8
+ import { platform, release } from 'node:os';
9
+ import * as fs from 'node:fs/promises';
10
+ import * as path from 'node:path';
11
+ import * as os from 'node:os';
12
+ /**
13
+ * Execute a command and return stdout as a buffer
14
+ * @param command - The command to execute
15
+ * @param args - Command arguments
16
+ * @param timeoutMs - Timeout in milliseconds (default: 10000)
17
+ */
18
+ async function execCommand(command, args, timeoutMs = 10000) {
19
+ return new Promise((resolve) => {
20
+ let timedOut = false;
21
+ const proc = spawn(command, args);
22
+ const stdoutChunks = [];
23
+ let stderr = '';
24
+ const timer = setTimeout(() => {
25
+ timedOut = true;
26
+ proc.kill();
27
+ resolve({
28
+ stdout: Buffer.concat(stdoutChunks),
29
+ stderr: stderr + '\nCommand timed out',
30
+ exitCode: 1,
31
+ });
32
+ }, timeoutMs);
33
+ proc.stdout.on('data', (chunk) => {
34
+ stdoutChunks.push(chunk);
35
+ });
36
+ proc.stderr.on('data', (chunk) => {
37
+ stderr += chunk.toString();
38
+ });
39
+ proc.on('close', (exitCode) => {
40
+ if (timedOut)
41
+ return;
42
+ clearTimeout(timer);
43
+ resolve({
44
+ stdout: Buffer.concat(stdoutChunks),
45
+ stderr,
46
+ exitCode: exitCode ?? 1,
47
+ });
48
+ });
49
+ proc.on('error', () => {
50
+ if (timedOut)
51
+ return;
52
+ clearTimeout(timer);
53
+ resolve({
54
+ stdout: Buffer.concat(stdoutChunks),
55
+ stderr,
56
+ exitCode: 1,
57
+ });
58
+ });
59
+ });
60
+ }
61
+ /**
62
+ * Execute an osascript command and return stdout as string
63
+ */
64
+ async function execOsascript(script) {
65
+ const result = await execCommand('osascript', ['-e', script]);
66
+ return {
67
+ stdout: result.stdout.toString().trim(),
68
+ success: result.exitCode === 0,
69
+ };
70
+ }
71
+ /**
72
+ * Read image from clipboard on macOS
73
+ * Uses osascript to save clipboard image to temp file, reads it, then cleans up
74
+ */
75
+ async function readClipboardImageMacOS() {
76
+ const tmpFile = path.join(os.tmpdir(), `dexto-clipboard-${Date.now()}-${process.pid}.png`);
77
+ try {
78
+ // AppleScript to save clipboard image as PNG to temp file
79
+ const script = `
80
+ set imageData to the clipboard as "PNGf"
81
+ set fileRef to open for access POSIX file "${tmpFile}" with write permission
82
+ set eof fileRef to 0
83
+ write imageData to fileRef
84
+ close access fileRef
85
+ `;
86
+ const result = await execOsascript(script);
87
+ if (!result.success) {
88
+ return undefined;
89
+ }
90
+ // Read the temp file
91
+ const buffer = await fs.readFile(tmpFile);
92
+ if (buffer.length === 0) {
93
+ return undefined;
94
+ }
95
+ return {
96
+ data: buffer.toString('base64'),
97
+ mimeType: 'image/png',
98
+ };
99
+ }
100
+ catch {
101
+ return undefined;
102
+ }
103
+ finally {
104
+ // Clean up temp file
105
+ try {
106
+ await fs.unlink(tmpFile);
107
+ }
108
+ catch {
109
+ // Ignore cleanup errors
110
+ }
111
+ }
112
+ }
113
+ /**
114
+ * Read image from clipboard on Windows (including WSL)
115
+ * Uses PowerShell to get clipboard image and convert to base64
116
+ */
117
+ async function readClipboardImageWindows() {
118
+ try {
119
+ // PowerShell script to get clipboard image as base64 PNG
120
+ const script = `
121
+ Add-Type -AssemblyName System.Windows.Forms
122
+ $img = [System.Windows.Forms.Clipboard]::GetImage()
123
+ if ($img) {
124
+ $ms = New-Object System.IO.MemoryStream
125
+ $img.Save($ms, [System.Drawing.Imaging.ImageFormat]::Png)
126
+ [System.Convert]::ToBase64String($ms.ToArray())
127
+ }
128
+ `.trim();
129
+ // Use powershell.exe for both native Windows and WSL (works on both)
130
+ const powershellCmd = 'powershell.exe';
131
+ const result = await execCommand(powershellCmd, ['-command', script]);
132
+ const base64 = result.stdout.toString().trim();
133
+ if (!base64 || result.exitCode !== 0) {
134
+ return undefined;
135
+ }
136
+ // Validate it's actually base64 data
137
+ const buffer = Buffer.from(base64, 'base64');
138
+ if (buffer.length === 0) {
139
+ return undefined;
140
+ }
141
+ return {
142
+ data: base64,
143
+ mimeType: 'image/png',
144
+ };
145
+ }
146
+ catch {
147
+ return undefined;
148
+ }
149
+ }
150
+ /**
151
+ * Check if current environment is WSL (Windows Subsystem for Linux)
152
+ * Checks for both 'wsl' (WSL2) and 'microsoft' (WSL1) in kernel release
153
+ */
154
+ function isWSL() {
155
+ if (platform() !== 'linux')
156
+ return false;
157
+ const rel = release().toLowerCase();
158
+ return rel.includes('wsl') || rel.includes('microsoft');
159
+ }
160
+ /**
161
+ * Read image from clipboard on Linux
162
+ * Tries Wayland (wl-paste) first, then X11 (xclip)
163
+ */
164
+ async function readClipboardImageLinux() {
165
+ // Try Wayland first (wl-paste)
166
+ try {
167
+ const result = await execCommand('wl-paste', ['-t', 'image/png']);
168
+ if (result.exitCode === 0 && result.stdout.length > 0) {
169
+ return {
170
+ data: result.stdout.toString('base64'),
171
+ mimeType: 'image/png',
172
+ };
173
+ }
174
+ }
175
+ catch {
176
+ // wl-paste not available or failed, try xclip
177
+ }
178
+ // Try X11 (xclip)
179
+ try {
180
+ const result = await execCommand('xclip', [
181
+ '-selection',
182
+ 'clipboard',
183
+ '-t',
184
+ 'image/png',
185
+ '-o',
186
+ ]);
187
+ if (result.exitCode === 0 && result.stdout.length > 0) {
188
+ return {
189
+ data: result.stdout.toString('base64'),
190
+ mimeType: 'image/png',
191
+ };
192
+ }
193
+ }
194
+ catch {
195
+ // xclip not available or failed
196
+ }
197
+ return undefined;
198
+ }
199
+ /**
200
+ * Read image from system clipboard
201
+ *
202
+ * @returns ClipboardImageContent if clipboard contains an image, undefined otherwise
203
+ *
204
+ * @example
205
+ * ```typescript
206
+ * const image = await readClipboardImage();
207
+ * if (image) {
208
+ * console.log(`Got ${image.mimeType} image, ${image.data.length} bytes base64`);
209
+ * }
210
+ * ```
211
+ */
212
+ export async function readClipboardImage() {
213
+ const os = platform();
214
+ if (os === 'darwin') {
215
+ return readClipboardImageMacOS();
216
+ }
217
+ if (os === 'win32' || isWSL()) {
218
+ return readClipboardImageWindows();
219
+ }
220
+ if (os === 'linux') {
221
+ return readClipboardImageLinux();
222
+ }
223
+ return undefined;
224
+ }
225
+ /**
226
+ * Write text to system clipboard
227
+ *
228
+ * @param text - The text to copy to clipboard
229
+ * @returns true if successful, false otherwise
230
+ *
231
+ * @example
232
+ * ```typescript
233
+ * const success = await writeToClipboard('Hello, World!');
234
+ * if (success) {
235
+ * console.log('Copied to clipboard');
236
+ * }
237
+ * ```
238
+ */
239
+ export async function writeToClipboard(text) {
240
+ const os = platform();
241
+ try {
242
+ if (os === 'darwin') {
243
+ // macOS: use pbcopy
244
+ const proc = spawn('pbcopy');
245
+ proc.stdin.write(text);
246
+ proc.stdin.end();
247
+ return new Promise((resolve) => {
248
+ proc.on('close', (code) => resolve(code === 0));
249
+ proc.on('error', () => resolve(false));
250
+ });
251
+ }
252
+ if (os === 'win32' || isWSL()) {
253
+ // Windows/WSL: use clip.exe (simpler than PowerShell)
254
+ const proc = spawn('clip.exe');
255
+ proc.stdin.write(text);
256
+ proc.stdin.end();
257
+ return new Promise((resolve) => {
258
+ proc.on('close', (code) => resolve(code === 0));
259
+ proc.on('error', () => resolve(false));
260
+ });
261
+ }
262
+ if (os === 'linux') {
263
+ // Try Wayland first (wl-copy), fall back to X11 (xclip)
264
+ const tryClipboardTool = (cmd, args = []) => {
265
+ return new Promise((resolve) => {
266
+ const proc = spawn(cmd, args);
267
+ let errorOccurred = false;
268
+ proc.on('error', () => {
269
+ errorOccurred = true;
270
+ resolve(false);
271
+ });
272
+ proc.stdin.write(text);
273
+ proc.stdin.end();
274
+ proc.on('close', (code) => {
275
+ if (!errorOccurred) {
276
+ resolve(code === 0);
277
+ }
278
+ });
279
+ });
280
+ };
281
+ // Try wl-copy first, then xclip
282
+ const wlResult = await tryClipboardTool('wl-copy');
283
+ if (wlResult)
284
+ return true;
285
+ return tryClipboardTool('xclip', ['-selection', 'clipboard']);
286
+ }
287
+ return false;
288
+ }
289
+ catch {
290
+ return false;
291
+ }
292
+ }
293
+ /**
294
+ * Check if clipboard contains an image (without reading it)
295
+ * This is a lighter-weight check that doesn't require reading the full image data.
296
+ *
297
+ * @returns true if clipboard likely contains an image
298
+ */
299
+ export async function clipboardHasImage() {
300
+ const os = platform();
301
+ if (os === 'darwin') {
302
+ try {
303
+ const result = await execOsascript('clipboard info');
304
+ // Check for image types in clipboard info
305
+ const imageRegex = /«class PNGf»|TIFF picture|JPEG picture|GIF picture|«class JPEG»|«class TIFF»/;
306
+ return imageRegex.test(result.stdout);
307
+ }
308
+ catch {
309
+ return false;
310
+ }
311
+ }
312
+ if (os === 'win32' || isWSL()) {
313
+ try {
314
+ // Quick check if clipboard has an image
315
+ const script = `
316
+ Add-Type -AssemblyName System.Windows.Forms
317
+ [System.Windows.Forms.Clipboard]::ContainsImage()
318
+ `.trim();
319
+ const powershellCmd = 'powershell.exe';
320
+ const result = await execCommand(powershellCmd, ['-command', script]);
321
+ return result.stdout.toString().trim().toLowerCase() === 'true';
322
+ }
323
+ catch {
324
+ return false;
325
+ }
326
+ }
327
+ if (os === 'linux') {
328
+ // Try Wayland first
329
+ try {
330
+ const result = await execCommand('wl-paste', ['--list-types']);
331
+ if (result.exitCode === 0 && result.stdout.toString().includes('image/')) {
332
+ return true;
333
+ }
334
+ }
335
+ catch {
336
+ // Try X11
337
+ }
338
+ // Try X11
339
+ try {
340
+ const result = await execCommand('xclip', [
341
+ '-selection',
342
+ 'clipboard',
343
+ '-t',
344
+ 'TARGETS',
345
+ '-o',
346
+ ]);
347
+ if (result.exitCode === 0 && result.stdout.toString().includes('image/')) {
348
+ return true;
349
+ }
350
+ }
351
+ catch {
352
+ // xclip not available
353
+ }
354
+ }
355
+ return false;
356
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Command Overlay Registry
3
+ *
4
+ * Central source of truth for command-to-overlay mappings.
5
+ * When adding a new interactive command, add it here - no other files need changes.
6
+ */
7
+ import type { OverlayType } from '../state/types.js';
8
+ /**
9
+ * Get the overlay for a command submission (with parsed args).
10
+ * Used by InputContainer.handleSubmit
11
+ *
12
+ * @param command - The base command name (e.g., 'mcp', 'search')
13
+ * @param args - Arguments passed to the command
14
+ * @returns Overlay type to show, or null to execute command handler
15
+ */
16
+ export declare function getCommandOverlay(command: string, args: string[]): OverlayType | null;
17
+ /**
18
+ * Get the overlay for a command selected from autocomplete.
19
+ * Used by OverlayContainer.handleSystemCommandSelect
20
+ *
21
+ * When selecting from autocomplete, there are never args -
22
+ * we just need to know if this command has an overlay.
23
+ *
24
+ * @param command - The command name selected from autocomplete
25
+ * @returns Overlay type to show, or null to execute command
26
+ */
27
+ export declare function getCommandOverlayForSelect(command: string): OverlayType | null;
28
+ /**
29
+ * Check if a command has any overlay behavior.
30
+ * Useful for determining if a command should be handled specially.
31
+ */
32
+ export declare function isInteractiveCommand(command: string): boolean;
33
+ //# sourceMappingURL=commandOverlays.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandOverlays.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/commandOverlays.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA2BrD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,GAAG,IAAI,CAYrF;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAU9E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE7D"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Command Overlay Registry
3
+ *
4
+ * Central source of truth for command-to-overlay mappings.
5
+ * When adding a new interactive command, add it here - no other files need changes.
6
+ */
7
+ /**
8
+ * Commands that ALWAYS show an overlay when invoked.
9
+ * These commands have no handler logic - the overlay IS the functionality.
10
+ */
11
+ const ALWAYS_OVERLAY = {
12
+ search: 'search',
13
+ find: 'search', // alias
14
+ model: 'model-selector',
15
+ resume: 'session-selector',
16
+ switch: 'session-selector',
17
+ stream: 'stream-selector',
18
+ tools: 'tool-browser',
19
+ mcp: 'mcp-server-list',
20
+ };
21
+ /**
22
+ * Commands that show an overlay ONLY when invoked without arguments.
23
+ * With arguments, they execute their handler instead.
24
+ */
25
+ const NO_ARGS_OVERLAY = {
26
+ session: 'session-subcommand-selector',
27
+ log: 'log-level-selector',
28
+ prompts: 'prompt-list',
29
+ };
30
+ /**
31
+ * Get the overlay for a command submission (with parsed args).
32
+ * Used by InputContainer.handleSubmit
33
+ *
34
+ * @param command - The base command name (e.g., 'mcp', 'search')
35
+ * @param args - Arguments passed to the command
36
+ * @returns Overlay type to show, or null to execute command handler
37
+ */
38
+ export function getCommandOverlay(command, args) {
39
+ // Commands that always show overlay
40
+ const alwaysOverlay = ALWAYS_OVERLAY[command];
41
+ if (alwaysOverlay)
42
+ return alwaysOverlay;
43
+ // Commands that show overlay only when no args
44
+ if (args.length === 0) {
45
+ const noArgsOverlay = NO_ARGS_OVERLAY[command];
46
+ if (noArgsOverlay)
47
+ return noArgsOverlay;
48
+ }
49
+ return null;
50
+ }
51
+ /**
52
+ * Get the overlay for a command selected from autocomplete.
53
+ * Used by OverlayContainer.handleSystemCommandSelect
54
+ *
55
+ * When selecting from autocomplete, there are never args -
56
+ * we just need to know if this command has an overlay.
57
+ *
58
+ * @param command - The command name selected from autocomplete
59
+ * @returns Overlay type to show, or null to execute command
60
+ */
61
+ export function getCommandOverlayForSelect(command) {
62
+ // Check "always overlay" commands first
63
+ const alwaysOverlay = ALWAYS_OVERLAY[command];
64
+ if (alwaysOverlay)
65
+ return alwaysOverlay;
66
+ // Check "no args overlay" commands (selecting = no args)
67
+ const noArgsOverlay = NO_ARGS_OVERLAY[command];
68
+ if (noArgsOverlay)
69
+ return noArgsOverlay;
70
+ return null;
71
+ }
72
+ /**
73
+ * Check if a command has any overlay behavior.
74
+ * Useful for determining if a command should be handled specially.
75
+ */
76
+ export function isInteractiveCommand(command) {
77
+ return command in ALWAYS_OVERLAY || command in NO_ARGS_OVERLAY;
78
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Debug Logging Utility
3
+ *
4
+ * Cross-platform debug logging that writes to temp directory.
5
+ * Controlled via environment variables for easy enable/disable.
6
+ *
7
+ * Usage:
8
+ * import { createDebugLogger } from './debugLog.js';
9
+ * const debug = createDebugLogger('stream');
10
+ * debug.log('EVENT', { foo: 'bar' });
11
+ *
12
+ * Enable via environment:
13
+ * DEXTO_DEBUG_STREAM=true dexto
14
+ * DEXTO_DEBUG_ALL=true dexto (enables all debug loggers)
15
+ */
16
+ export interface DebugLogger {
17
+ /** Log a message with optional data */
18
+ log: (msg: string, data?: Record<string, unknown>) => void;
19
+ /** Check if debug logging is enabled */
20
+ isEnabled: () => boolean;
21
+ /** Get the log file path */
22
+ getLogPath: () => string;
23
+ /** Clear the log file and write a header */
24
+ reset: (header?: string) => void;
25
+ }
26
+ /**
27
+ * Creates a debug logger for a specific component.
28
+ *
29
+ * @param name Component name (used in env var and filename)
30
+ * @returns Debug logger instance
31
+ *
32
+ * @example
33
+ * const debug = createDebugLogger('stream');
34
+ * // Enabled via DEXTO_DEBUG_STREAM=true or DEXTO_DEBUG_ALL=true
35
+ * // Writes to: {tmpdir}/dexto-debug-stream.log
36
+ */
37
+ export declare function createDebugLogger(name: string): DebugLogger;
38
+ //# sourceMappingURL=debugLog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debugLog.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/debugLog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,MAAM,WAAW,WAAW;IACxB,uCAAuC;IACvC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC3D,wCAAwC;IACxC,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,MAAM,CAAC;IACzB,4CAA4C;IAC5C,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAsC3D"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Debug Logging Utility
3
+ *
4
+ * Cross-platform debug logging that writes to temp directory.
5
+ * Controlled via environment variables for easy enable/disable.
6
+ *
7
+ * Usage:
8
+ * import { createDebugLogger } from './debugLog.js';
9
+ * const debug = createDebugLogger('stream');
10
+ * debug.log('EVENT', { foo: 'bar' });
11
+ *
12
+ * Enable via environment:
13
+ * DEXTO_DEBUG_STREAM=true dexto
14
+ * DEXTO_DEBUG_ALL=true dexto (enables all debug loggers)
15
+ */
16
+ import { appendFileSync, writeFileSync } from 'fs';
17
+ import { tmpdir } from 'os';
18
+ import { join } from 'path';
19
+ /**
20
+ * Creates a debug logger for a specific component.
21
+ *
22
+ * @param name Component name (used in env var and filename)
23
+ * @returns Debug logger instance
24
+ *
25
+ * @example
26
+ * const debug = createDebugLogger('stream');
27
+ * // Enabled via DEXTO_DEBUG_STREAM=true or DEXTO_DEBUG_ALL=true
28
+ * // Writes to: {tmpdir}/dexto-debug-stream.log
29
+ */
30
+ export function createDebugLogger(name) {
31
+ const envVar = `DEXTO_DEBUG_${name.toUpperCase()}`;
32
+ const logPath = join(tmpdir(), `dexto-debug-${name.toLowerCase()}.log`);
33
+ const isEnabled = () => {
34
+ return process.env[envVar] === 'true' || process.env.DEXTO_DEBUG_ALL === 'true';
35
+ };
36
+ const log = (msg, data) => {
37
+ if (!isEnabled())
38
+ return;
39
+ try {
40
+ const timestamp = new Date().toISOString().split('T')[1];
41
+ const dataStr = data ? ` ${JSON.stringify(data)}` : '';
42
+ const line = `[${timestamp}] ${msg}${dataStr}\n`;
43
+ appendFileSync(logPath, line);
44
+ }
45
+ catch {
46
+ // Silently ignore serialization and write errors in debug logging
47
+ }
48
+ };
49
+ const reset = (header) => {
50
+ if (!isEnabled())
51
+ return;
52
+ const defaultHeader = `=== DEXTO DEBUG [${name.toUpperCase()}] ${new Date().toISOString()} ===`;
53
+ try {
54
+ writeFileSync(logPath, `${header ?? defaultHeader}\n`);
55
+ }
56
+ catch {
57
+ // Silently ignore write errors in debug logging
58
+ }
59
+ };
60
+ return {
61
+ log,
62
+ isEnabled,
63
+ getLogPath: () => logPath,
64
+ reset,
65
+ };
66
+ }
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * Utils module exports
3
3
  */
4
- export { type AutocompleteType, type InteractiveSelectorType, detectAutocompleteType, detectInteractiveSelector, extractSlashQuery, extractResourceQuery, findActiveAtIndex, } from './inputParsing.js';
4
+ export { type AutocompleteType, detectAutocompleteType, extractSlashQuery, extractResourceQuery, findActiveAtIndex, } from './inputParsing.js';
5
+ export { getCommandOverlay, getCommandOverlayForSelect, isInteractiveCommand, } from './commandOverlays.js';
5
6
  export { createUserMessage, createSystemMessage, createErrorMessage, createToolMessage, createStreamingMessage, convertHistoryToUIMessages, getStartupInfo, } from './messageFormatting.js';
6
7
  export { generateMessageId } from './idGenerator.js';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,sBAAsB,EACtB,yBAAyB,EACzB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,GACpB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACH,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,cAAc,GACjB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACH,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,GACpB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACH,iBAAiB,EACjB,0BAA0B,EAC1B,oBAAoB,GACvB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACH,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,cAAc,GACjB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -2,7 +2,9 @@
2
2
  * Utils module exports
3
3
  */
4
4
  // Input parsing
5
- export { detectAutocompleteType, detectInteractiveSelector, extractSlashQuery, extractResourceQuery, findActiveAtIndex, } from './inputParsing.js';
5
+ export { detectAutocompleteType, extractSlashQuery, extractResourceQuery, findActiveAtIndex, } from './inputParsing.js';
6
+ // Command overlays (central registry)
7
+ export { getCommandOverlay, getCommandOverlayForSelect, isInteractiveCommand, } from './commandOverlays.js';
6
8
  // Message formatting
7
9
  export { createUserMessage, createSystemMessage, createErrorMessage, createToolMessage, createStreamingMessage, convertHistoryToUIMessages, getStartupInfo, } from './messageFormatting.js';
8
10
  // ID generation
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Input Utilities
3
+ * Constants and helpers for parsing terminal input sequences.
4
+ */
5
+ export declare const ESC = "\u001B";
6
+ export declare const SGR_EVENT_PREFIX = "\u001B[<";
7
+ export declare const X11_EVENT_PREFIX = "\u001B[M";
8
+ export declare const FOCUS_IN = "\u001B[I";
9
+ export declare const FOCUS_OUT = "\u001B[O";
10
+ export declare const SGR_MOUSE_REGEX: RegExp;
11
+ export declare const X11_MOUSE_REGEX: RegExp;
12
+ /**
13
+ * Check if buffer could be a SGR mouse sequence (or prefix thereof)
14
+ */
15
+ export declare function couldBeSGRMouseSequence(buffer: string): boolean;
16
+ /**
17
+ * Check if buffer could be any mouse sequence (or prefix thereof)
18
+ */
19
+ export declare function couldBeMouseSequence(buffer: string): boolean;
20
+ /**
21
+ * Get the length of a complete mouse sequence at the start of buffer.
22
+ * Returns 0 if no complete sequence found.
23
+ */
24
+ export declare function getMouseSequenceLength(buffer: string): number;
25
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/input.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,GAAG,WAAW,CAAC;AAC5B,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAC3C,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAG3C,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,SAAS,aAAa,CAAC;AAKpC,eAAO,MAAM,eAAe,QAA2D,CAAC;AACxF,eAAO,MAAM,eAAe,QAA8C,CAAC;AAE3E;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAO/D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAS5D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ7D"}