dexto 1.6.0 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (510) hide show
  1. package/dist/agents/coding-agent/coding-agent.yml +3 -1
  2. package/dist/analytics/wrapper.js +1 -1
  3. package/dist/cli/auth/dexto-api-key.d.ts +34 -0
  4. package/dist/cli/auth/dexto-api-key.d.ts.map +1 -0
  5. package/dist/cli/auth/dexto-api-key.js +161 -0
  6. package/dist/cli/auth/index.d.ts +2 -1
  7. package/dist/cli/auth/index.d.ts.map +1 -1
  8. package/dist/cli/auth/index.js +2 -1
  9. package/dist/cli/auth/oauth.d.ts +10 -0
  10. package/dist/cli/auth/oauth.d.ts.map +1 -1
  11. package/dist/cli/auth/oauth.js +113 -36
  12. package/dist/cli/auth/service.d.ts +1 -0
  13. package/dist/cli/auth/service.d.ts.map +1 -1
  14. package/dist/cli/auth/service.js +1 -0
  15. package/dist/cli/commands/auth/login.d.ts.map +1 -1
  16. package/dist/cli/commands/auth/login.js +40 -105
  17. package/dist/cli/commands/setup.d.ts.map +1 -1
  18. package/dist/cli/commands/setup.js +157 -120
  19. package/dist/cli/utils/config-validation.js +3 -3
  20. package/dist/cli/utils/options.d.ts.map +1 -1
  21. package/dist/cli/utils/options.js +6 -0
  22. package/dist/index-main.js +36 -2
  23. package/dist/utils/session-logger-factory.d.ts.map +1 -1
  24. package/dist/utils/session-logger-factory.js +17 -2
  25. package/dist/webui/assets/index-BPlk2Wbt.css +1 -0
  26. package/dist/webui/assets/index-BZvrpxyh.js +2059 -0
  27. package/dist/webui/index.html +2 -2
  28. package/package.json +13 -23
  29. package/dist/cli/commands/interactive-commands/auth/index.d.ts +0 -12
  30. package/dist/cli/commands/interactive-commands/auth/index.d.ts.map +0 -1
  31. package/dist/cli/commands/interactive-commands/auth/index.js +0 -20
  32. package/dist/cli/commands/interactive-commands/command-parser.d.ts +0 -56
  33. package/dist/cli/commands/interactive-commands/command-parser.d.ts.map +0 -1
  34. package/dist/cli/commands/interactive-commands/command-parser.js +0 -173
  35. package/dist/cli/commands/interactive-commands/commands.d.ts +0 -52
  36. package/dist/cli/commands/interactive-commands/commands.d.ts.map +0 -1
  37. package/dist/cli/commands/interactive-commands/commands.js +0 -142
  38. package/dist/cli/commands/interactive-commands/documentation-commands.d.ts +0 -15
  39. package/dist/cli/commands/interactive-commands/documentation-commands.d.ts.map +0 -1
  40. package/dist/cli/commands/interactive-commands/documentation-commands.js +0 -39
  41. package/dist/cli/commands/interactive-commands/export/index.d.ts +0 -13
  42. package/dist/cli/commands/interactive-commands/export/index.d.ts.map +0 -1
  43. package/dist/cli/commands/interactive-commands/export/index.js +0 -21
  44. package/dist/cli/commands/interactive-commands/general-commands.d.ts +0 -22
  45. package/dist/cli/commands/interactive-commands/general-commands.d.ts.map +0 -1
  46. package/dist/cli/commands/interactive-commands/general-commands.js +0 -458
  47. package/dist/cli/commands/interactive-commands/mcp/index.d.ts +0 -13
  48. package/dist/cli/commands/interactive-commands/mcp/index.d.ts.map +0 -1
  49. package/dist/cli/commands/interactive-commands/mcp/index.js +0 -18
  50. package/dist/cli/commands/interactive-commands/model/index.d.ts +0 -13
  51. package/dist/cli/commands/interactive-commands/model/index.d.ts.map +0 -1
  52. package/dist/cli/commands/interactive-commands/model/index.js +0 -19
  53. package/dist/cli/commands/interactive-commands/plugin/index.d.ts +0 -13
  54. package/dist/cli/commands/interactive-commands/plugin/index.d.ts.map +0 -1
  55. package/dist/cli/commands/interactive-commands/plugin/index.js +0 -18
  56. package/dist/cli/commands/interactive-commands/prompt-commands.d.ts +0 -25
  57. package/dist/cli/commands/interactive-commands/prompt-commands.d.ts.map +0 -1
  58. package/dist/cli/commands/interactive-commands/prompt-commands.js +0 -339
  59. package/dist/cli/commands/interactive-commands/session/index.d.ts +0 -16
  60. package/dist/cli/commands/interactive-commands/session/index.d.ts.map +0 -1
  61. package/dist/cli/commands/interactive-commands/session/index.js +0 -15
  62. package/dist/cli/commands/interactive-commands/session/session-commands.d.ts +0 -32
  63. package/dist/cli/commands/interactive-commands/session/session-commands.d.ts.map +0 -1
  64. package/dist/cli/commands/interactive-commands/session/session-commands.js +0 -67
  65. package/dist/cli/commands/interactive-commands/system/index.d.ts +0 -13
  66. package/dist/cli/commands/interactive-commands/system/index.d.ts.map +0 -1
  67. package/dist/cli/commands/interactive-commands/system/index.js +0 -12
  68. package/dist/cli/commands/interactive-commands/system/system-commands.d.ts +0 -18
  69. package/dist/cli/commands/interactive-commands/system/system-commands.d.ts.map +0 -1
  70. package/dist/cli/commands/interactive-commands/system/system-commands.js +0 -197
  71. package/dist/cli/commands/interactive-commands/tool-commands.d.ts +0 -15
  72. package/dist/cli/commands/interactive-commands/tool-commands.d.ts.map +0 -1
  73. package/dist/cli/commands/interactive-commands/tool-commands.js +0 -24
  74. package/dist/cli/commands/interactive-commands/utils/arg-parser.d.ts +0 -57
  75. package/dist/cli/commands/interactive-commands/utils/arg-parser.d.ts.map +0 -1
  76. package/dist/cli/commands/interactive-commands/utils/arg-parser.js +0 -81
  77. package/dist/cli/commands/interactive-commands/utils/command-output.d.ts +0 -40
  78. package/dist/cli/commands/interactive-commands/utils/command-output.d.ts.map +0 -1
  79. package/dist/cli/commands/interactive-commands/utils/command-output.js +0 -56
  80. package/dist/cli/commands/interactive-commands/utils/format-output.d.ts +0 -14
  81. package/dist/cli/commands/interactive-commands/utils/format-output.d.ts.map +0 -1
  82. package/dist/cli/commands/interactive-commands/utils/format-output.js +0 -18
  83. package/dist/cli/ink-cli/InkCLIRefactored.d.ts +0 -52
  84. package/dist/cli/ink-cli/InkCLIRefactored.d.ts.map +0 -1
  85. package/dist/cli/ink-cli/InkCLIRefactored.js +0 -120
  86. package/dist/cli/ink-cli/components/ApprovalPrompt.d.ts +0 -44
  87. package/dist/cli/ink-cli/components/ApprovalPrompt.d.ts.map +0 -1
  88. package/dist/cli/ink-cli/components/ApprovalPrompt.js +0 -269
  89. package/dist/cli/ink-cli/components/BackgroundTasksPanel.d.ts +0 -18
  90. package/dist/cli/ink-cli/components/BackgroundTasksPanel.d.ts.map +0 -1
  91. package/dist/cli/ink-cli/components/BackgroundTasksPanel.js +0 -48
  92. package/dist/cli/ink-cli/components/CustomInput.d.ts +0 -17
  93. package/dist/cli/ink-cli/components/CustomInput.d.ts.map +0 -1
  94. package/dist/cli/ink-cli/components/CustomInput.js +0 -51
  95. package/dist/cli/ink-cli/components/CustomTextInput.d.ts +0 -16
  96. package/dist/cli/ink-cli/components/CustomTextInput.d.ts.map +0 -1
  97. package/dist/cli/ink-cli/components/CustomTextInput.js +0 -36
  98. package/dist/cli/ink-cli/components/EditableMultiLineInput.d.ts +0 -19
  99. package/dist/cli/ink-cli/components/EditableMultiLineInput.d.ts.map +0 -1
  100. package/dist/cli/ink-cli/components/EditableMultiLineInput.js +0 -120
  101. package/dist/cli/ink-cli/components/ElicitationForm.d.ts +0 -22
  102. package/dist/cli/ink-cli/components/ElicitationForm.d.ts.map +0 -1
  103. package/dist/cli/ink-cli/components/ElicitationForm.js +0 -358
  104. package/dist/cli/ink-cli/components/ErrorBoundary.d.ts +0 -20
  105. package/dist/cli/ink-cli/components/ErrorBoundary.d.ts.map +0 -1
  106. package/dist/cli/ink-cli/components/ErrorBoundary.js +0 -29
  107. package/dist/cli/ink-cli/components/Footer.d.ts +0 -22
  108. package/dist/cli/ink-cli/components/Footer.d.ts.map +0 -1
  109. package/dist/cli/ink-cli/components/Footer.js +0 -76
  110. package/dist/cli/ink-cli/components/HistorySearchBar.d.ts +0 -17
  111. package/dist/cli/ink-cli/components/HistorySearchBar.d.ts.map +0 -1
  112. package/dist/cli/ink-cli/components/HistorySearchBar.js +0 -8
  113. package/dist/cli/ink-cli/components/MultiLineInput.d.ts +0 -12
  114. package/dist/cli/ink-cli/components/MultiLineInput.d.ts.map +0 -1
  115. package/dist/cli/ink-cli/components/MultiLineInput.js +0 -27
  116. package/dist/cli/ink-cli/components/ResourceAutocomplete.d.ts +0 -26
  117. package/dist/cli/ink-cli/components/ResourceAutocomplete.d.ts.map +0 -1
  118. package/dist/cli/ink-cli/components/ResourceAutocomplete.js +0 -376
  119. package/dist/cli/ink-cli/components/SlashCommandAutocomplete.d.ts +0 -28
  120. package/dist/cli/ink-cli/components/SlashCommandAutocomplete.d.ts.map +0 -1
  121. package/dist/cli/ink-cli/components/SlashCommandAutocomplete.js +0 -432
  122. package/dist/cli/ink-cli/components/StatusBar.d.ts +0 -41
  123. package/dist/cli/ink-cli/components/StatusBar.d.ts.map +0 -1
  124. package/dist/cli/ink-cli/components/StatusBar.js +0 -110
  125. package/dist/cli/ink-cli/components/TextBufferInput.d.ts +0 -52
  126. package/dist/cli/ink-cli/components/TextBufferInput.d.ts.map +0 -1
  127. package/dist/cli/ink-cli/components/TextBufferInput.js +0 -490
  128. package/dist/cli/ink-cli/components/TodoPanel.d.ts +0 -26
  129. package/dist/cli/ink-cli/components/TodoPanel.d.ts.map +0 -1
  130. package/dist/cli/ink-cli/components/TodoPanel.js +0 -62
  131. package/dist/cli/ink-cli/components/base/BaseAutocomplete.d.ts +0 -29
  132. package/dist/cli/ink-cli/components/base/BaseAutocomplete.d.ts.map +0 -1
  133. package/dist/cli/ink-cli/components/base/BaseAutocomplete.js +0 -98
  134. package/dist/cli/ink-cli/components/base/BaseSelector.d.ts +0 -36
  135. package/dist/cli/ink-cli/components/base/BaseSelector.d.ts.map +0 -1
  136. package/dist/cli/ink-cli/components/base/BaseSelector.js +0 -118
  137. package/dist/cli/ink-cli/components/base/index.d.ts +0 -6
  138. package/dist/cli/ink-cli/components/base/index.d.ts.map +0 -1
  139. package/dist/cli/ink-cli/components/base/index.js +0 -5
  140. package/dist/cli/ink-cli/components/chat/ChatView.d.ts +0 -19
  141. package/dist/cli/ink-cli/components/chat/ChatView.d.ts.map +0 -1
  142. package/dist/cli/ink-cli/components/chat/ChatView.js +0 -11
  143. package/dist/cli/ink-cli/components/chat/Footer.d.ts +0 -9
  144. package/dist/cli/ink-cli/components/chat/Footer.d.ts.map +0 -1
  145. package/dist/cli/ink-cli/components/chat/Footer.js +0 -8
  146. package/dist/cli/ink-cli/components/chat/Header.d.ts +0 -18
  147. package/dist/cli/ink-cli/components/chat/Header.d.ts.map +0 -1
  148. package/dist/cli/ink-cli/components/chat/Header.js +0 -16
  149. package/dist/cli/ink-cli/components/chat/MessageItem.d.ts +0 -21
  150. package/dist/cli/ink-cli/components/chat/MessageItem.d.ts.map +0 -1
  151. package/dist/cli/ink-cli/components/chat/MessageItem.js +0 -180
  152. package/dist/cli/ink-cli/components/chat/MessageList.d.ts +0 -16
  153. package/dist/cli/ink-cli/components/chat/MessageList.d.ts.map +0 -1
  154. package/dist/cli/ink-cli/components/chat/MessageList.js +0 -20
  155. package/dist/cli/ink-cli/components/chat/QueuedMessagesDisplay.d.ts +0 -16
  156. package/dist/cli/ink-cli/components/chat/QueuedMessagesDisplay.d.ts.map +0 -1
  157. package/dist/cli/ink-cli/components/chat/QueuedMessagesDisplay.js +0 -27
  158. package/dist/cli/ink-cli/components/chat/ToolIcon.d.ts +0 -18
  159. package/dist/cli/ink-cli/components/chat/ToolIcon.d.ts.map +0 -1
  160. package/dist/cli/ink-cli/components/chat/ToolIcon.js +0 -46
  161. package/dist/cli/ink-cli/components/chat/index.d.ts +0 -10
  162. package/dist/cli/ink-cli/components/chat/index.d.ts.map +0 -1
  163. package/dist/cli/ink-cli/components/chat/index.js +0 -9
  164. package/dist/cli/ink-cli/components/chat/styled-boxes/ConfigBox.d.ts +0 -10
  165. package/dist/cli/ink-cli/components/chat/styled-boxes/ConfigBox.d.ts.map +0 -1
  166. package/dist/cli/ink-cli/components/chat/styled-boxes/ConfigBox.js +0 -6
  167. package/dist/cli/ink-cli/components/chat/styled-boxes/HelpBox.d.ts +0 -10
  168. package/dist/cli/ink-cli/components/chat/styled-boxes/HelpBox.d.ts.map +0 -1
  169. package/dist/cli/ink-cli/components/chat/styled-boxes/HelpBox.js +0 -15
  170. package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.d.ts +0 -10
  171. package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.d.ts.map +0 -1
  172. package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.js +0 -9
  173. package/dist/cli/ink-cli/components/chat/styled-boxes/SessionHistoryBox.d.ts +0 -10
  174. package/dist/cli/ink-cli/components/chat/styled-boxes/SessionHistoryBox.d.ts.map +0 -1
  175. package/dist/cli/ink-cli/components/chat/styled-boxes/SessionHistoryBox.js +0 -37
  176. package/dist/cli/ink-cli/components/chat/styled-boxes/SessionListBox.d.ts +0 -10
  177. package/dist/cli/ink-cli/components/chat/styled-boxes/SessionListBox.d.ts.map +0 -1
  178. package/dist/cli/ink-cli/components/chat/styled-boxes/SessionListBox.js +0 -9
  179. package/dist/cli/ink-cli/components/chat/styled-boxes/ShortcutsBox.d.ts +0 -10
  180. package/dist/cli/ink-cli/components/chat/styled-boxes/ShortcutsBox.d.ts.map +0 -1
  181. package/dist/cli/ink-cli/components/chat/styled-boxes/ShortcutsBox.js +0 -6
  182. package/dist/cli/ink-cli/components/chat/styled-boxes/StatsBox.d.ts +0 -10
  183. package/dist/cli/ink-cli/components/chat/styled-boxes/StatsBox.d.ts.map +0 -1
  184. package/dist/cli/ink-cli/components/chat/styled-boxes/StatsBox.js +0 -29
  185. package/dist/cli/ink-cli/components/chat/styled-boxes/StyledBox.d.ts +0 -45
  186. package/dist/cli/ink-cli/components/chat/styled-boxes/StyledBox.d.ts.map +0 -1
  187. package/dist/cli/ink-cli/components/chat/styled-boxes/StyledBox.js +0 -38
  188. package/dist/cli/ink-cli/components/chat/styled-boxes/SyspromptBox.d.ts +0 -10
  189. package/dist/cli/ink-cli/components/chat/styled-boxes/SyspromptBox.d.ts.map +0 -1
  190. package/dist/cli/ink-cli/components/chat/styled-boxes/SyspromptBox.js +0 -6
  191. package/dist/cli/ink-cli/components/chat/styled-boxes/index.d.ts +0 -13
  192. package/dist/cli/ink-cli/components/chat/styled-boxes/index.d.ts.map +0 -1
  193. package/dist/cli/ink-cli/components/chat/styled-boxes/index.js +0 -12
  194. package/dist/cli/ink-cli/components/input/InputArea.d.ts +0 -46
  195. package/dist/cli/ink-cli/components/input/InputArea.d.ts.map +0 -1
  196. package/dist/cli/ink-cli/components/input/InputArea.js +0 -6
  197. package/dist/cli/ink-cli/components/input/index.d.ts +0 -5
  198. package/dist/cli/ink-cli/components/input/index.d.ts.map +0 -1
  199. package/dist/cli/ink-cli/components/input/index.js +0 -4
  200. package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.d.ts +0 -27
  201. package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.d.ts.map +0 -1
  202. package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.js +0 -180
  203. package/dist/cli/ink-cli/components/modes/StaticCLI.d.ts +0 -29
  204. package/dist/cli/ink-cli/components/modes/StaticCLI.d.ts.map +0 -1
  205. package/dist/cli/ink-cli/components/modes/StaticCLI.js +0 -107
  206. package/dist/cli/ink-cli/components/modes/index.d.ts +0 -10
  207. package/dist/cli/ink-cli/components/modes/index.d.ts.map +0 -1
  208. package/dist/cli/ink-cli/components/modes/index.js +0 -9
  209. package/dist/cli/ink-cli/components/overlays/ApiKeyInput.d.ts +0 -26
  210. package/dist/cli/ink-cli/components/overlays/ApiKeyInput.d.ts.map +0 -1
  211. package/dist/cli/ink-cli/components/overlays/ApiKeyInput.js +0 -92
  212. package/dist/cli/ink-cli/components/overlays/ContextStatsOverlay.d.ts +0 -26
  213. package/dist/cli/ink-cli/components/overlays/ContextStatsOverlay.d.ts.map +0 -1
  214. package/dist/cli/ink-cli/components/overlays/ContextStatsOverlay.js +0 -241
  215. package/dist/cli/ink-cli/components/overlays/CustomModelWizard.d.ts +0 -29
  216. package/dist/cli/ink-cli/components/overlays/CustomModelWizard.d.ts.map +0 -1
  217. package/dist/cli/ink-cli/components/overlays/CustomModelWizard.js +0 -301
  218. package/dist/cli/ink-cli/components/overlays/ExportWizard.d.ts +0 -22
  219. package/dist/cli/ink-cli/components/overlays/ExportWizard.d.ts.map +0 -1
  220. package/dist/cli/ink-cli/components/overlays/ExportWizard.js +0 -308
  221. package/dist/cli/ink-cli/components/overlays/LogLevelSelector.d.ts +0 -23
  222. package/dist/cli/ink-cli/components/overlays/LogLevelSelector.d.ts.map +0 -1
  223. package/dist/cli/ink-cli/components/overlays/LogLevelSelector.js +0 -70
  224. package/dist/cli/ink-cli/components/overlays/MarketplaceAddPrompt.d.ts +0 -20
  225. package/dist/cli/ink-cli/components/overlays/MarketplaceAddPrompt.d.ts.map +0 -1
  226. package/dist/cli/ink-cli/components/overlays/MarketplaceAddPrompt.js +0 -81
  227. package/dist/cli/ink-cli/components/overlays/MarketplaceBrowser.d.ts +0 -31
  228. package/dist/cli/ink-cli/components/overlays/MarketplaceBrowser.d.ts.map +0 -1
  229. package/dist/cli/ink-cli/components/overlays/MarketplaceBrowser.js +0 -297
  230. package/dist/cli/ink-cli/components/overlays/McpAddChoice.d.ts +0 -22
  231. package/dist/cli/ink-cli/components/overlays/McpAddChoice.d.ts.map +0 -1
  232. package/dist/cli/ink-cli/components/overlays/McpAddChoice.js +0 -59
  233. package/dist/cli/ink-cli/components/overlays/McpAddSelector.d.ts +0 -26
  234. package/dist/cli/ink-cli/components/overlays/McpAddSelector.d.ts.map +0 -1
  235. package/dist/cli/ink-cli/components/overlays/McpAddSelector.js +0 -73
  236. package/dist/cli/ink-cli/components/overlays/McpCustomTypeSelector.d.ts +0 -21
  237. package/dist/cli/ink-cli/components/overlays/McpCustomTypeSelector.d.ts.map +0 -1
  238. package/dist/cli/ink-cli/components/overlays/McpCustomTypeSelector.js +0 -51
  239. package/dist/cli/ink-cli/components/overlays/McpCustomWizard.d.ts +0 -29
  240. package/dist/cli/ink-cli/components/overlays/McpCustomWizard.d.ts.map +0 -1
  241. package/dist/cli/ink-cli/components/overlays/McpCustomWizard.js +0 -215
  242. package/dist/cli/ink-cli/components/overlays/McpRemoveSelector.d.ts +0 -22
  243. package/dist/cli/ink-cli/components/overlays/McpRemoveSelector.d.ts.map +0 -1
  244. package/dist/cli/ink-cli/components/overlays/McpRemoveSelector.js +0 -80
  245. package/dist/cli/ink-cli/components/overlays/McpSelector.d.ts +0 -21
  246. package/dist/cli/ink-cli/components/overlays/McpSelector.d.ts.map +0 -1
  247. package/dist/cli/ink-cli/components/overlays/McpSelector.js +0 -52
  248. package/dist/cli/ink-cli/components/overlays/McpServerActions.d.ts +0 -28
  249. package/dist/cli/ink-cli/components/overlays/McpServerActions.d.ts.map +0 -1
  250. package/dist/cli/ink-cli/components/overlays/McpServerActions.js +0 -93
  251. package/dist/cli/ink-cli/components/overlays/McpServerList.d.ts +0 -29
  252. package/dist/cli/ink-cli/components/overlays/McpServerList.d.ts.map +0 -1
  253. package/dist/cli/ink-cli/components/overlays/McpServerList.js +0 -116
  254. package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.d.ts +0 -28
  255. package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.d.ts.map +0 -1
  256. package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.js +0 -630
  257. package/dist/cli/ink-cli/components/overlays/PluginActions.d.ts +0 -27
  258. package/dist/cli/ink-cli/components/overlays/PluginActions.d.ts.map +0 -1
  259. package/dist/cli/ink-cli/components/overlays/PluginActions.js +0 -66
  260. package/dist/cli/ink-cli/components/overlays/PluginList.d.ts +0 -21
  261. package/dist/cli/ink-cli/components/overlays/PluginList.d.ts.map +0 -1
  262. package/dist/cli/ink-cli/components/overlays/PluginList.js +0 -70
  263. package/dist/cli/ink-cli/components/overlays/PluginManager.d.ts +0 -21
  264. package/dist/cli/ink-cli/components/overlays/PluginManager.d.ts.map +0 -1
  265. package/dist/cli/ink-cli/components/overlays/PluginManager.js +0 -63
  266. package/dist/cli/ink-cli/components/overlays/PromptAddChoice.d.ts +0 -22
  267. package/dist/cli/ink-cli/components/overlays/PromptAddChoice.d.ts.map +0 -1
  268. package/dist/cli/ink-cli/components/overlays/PromptAddChoice.js +0 -52
  269. package/dist/cli/ink-cli/components/overlays/PromptAddWizard.d.ts +0 -29
  270. package/dist/cli/ink-cli/components/overlays/PromptAddWizard.d.ts.map +0 -1
  271. package/dist/cli/ink-cli/components/overlays/PromptAddWizard.js +0 -166
  272. package/dist/cli/ink-cli/components/overlays/PromptDeleteSelector.d.ts +0 -27
  273. package/dist/cli/ink-cli/components/overlays/PromptDeleteSelector.d.ts.map +0 -1
  274. package/dist/cli/ink-cli/components/overlays/PromptDeleteSelector.js +0 -119
  275. package/dist/cli/ink-cli/components/overlays/PromptList.d.ts +0 -33
  276. package/dist/cli/ink-cli/components/overlays/PromptList.d.ts.map +0 -1
  277. package/dist/cli/ink-cli/components/overlays/PromptList.js +0 -147
  278. package/dist/cli/ink-cli/components/overlays/SearchOverlay.d.ts +0 -23
  279. package/dist/cli/ink-cli/components/overlays/SearchOverlay.d.ts.map +0 -1
  280. package/dist/cli/ink-cli/components/overlays/SearchOverlay.js +0 -189
  281. package/dist/cli/ink-cli/components/overlays/SessionRenameOverlay.d.ts +0 -21
  282. package/dist/cli/ink-cli/components/overlays/SessionRenameOverlay.d.ts.map +0 -1
  283. package/dist/cli/ink-cli/components/overlays/SessionRenameOverlay.js +0 -63
  284. package/dist/cli/ink-cli/components/overlays/SessionSelectorRefactored.d.ts +0 -26
  285. package/dist/cli/ink-cli/components/overlays/SessionSelectorRefactored.d.ts.map +0 -1
  286. package/dist/cli/ink-cli/components/overlays/SessionSelectorRefactored.js +0 -126
  287. package/dist/cli/ink-cli/components/overlays/SessionSubcommandSelector.d.ts +0 -21
  288. package/dist/cli/ink-cli/components/overlays/SessionSubcommandSelector.d.ts.map +0 -1
  289. package/dist/cli/ink-cli/components/overlays/SessionSubcommandSelector.js +0 -42
  290. package/dist/cli/ink-cli/components/overlays/StreamSelector.d.ts +0 -20
  291. package/dist/cli/ink-cli/components/overlays/StreamSelector.d.ts.map +0 -1
  292. package/dist/cli/ink-cli/components/overlays/StreamSelector.js +0 -58
  293. package/dist/cli/ink-cli/components/overlays/ToolBrowser.d.ts +0 -26
  294. package/dist/cli/ink-cli/components/overlays/ToolBrowser.d.ts.map +0 -1
  295. package/dist/cli/ink-cli/components/overlays/ToolBrowser.js +0 -642
  296. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/LocalModelWizard.d.ts +0 -25
  297. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/LocalModelWizard.d.ts.map +0 -1
  298. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/LocalModelWizard.js +0 -609
  299. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/index.d.ts +0 -15
  300. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/index.d.ts.map +0 -1
  301. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/index.js +0 -14
  302. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/provider-config.d.ts +0 -42
  303. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/provider-config.d.ts.map +0 -1
  304. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/provider-config.js +0 -547
  305. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ApiKeyStep.d.ts +0 -25
  306. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ApiKeyStep.d.ts.map +0 -1
  307. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ApiKeyStep.js +0 -29
  308. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ProviderSelector.d.ts +0 -17
  309. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ProviderSelector.d.ts.map +0 -1
  310. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ProviderSelector.js +0 -11
  311. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/SetupInfoBanner.d.ts +0 -20
  312. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/SetupInfoBanner.d.ts.map +0 -1
  313. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/SetupInfoBanner.js +0 -10
  314. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/WizardStepInput.d.ts +0 -30
  315. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/WizardStepInput.d.ts.map +0 -1
  316. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/WizardStepInput.js +0 -13
  317. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/index.d.ts +0 -8
  318. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/index.d.ts.map +0 -1
  319. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/index.js +0 -7
  320. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/types.d.ts +0 -85
  321. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/types.d.ts.map +0 -1
  322. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/types.js +0 -38
  323. package/dist/cli/ink-cli/components/renderers/DiffRenderer.d.ts +0 -21
  324. package/dist/cli/ink-cli/components/renderers/DiffRenderer.d.ts.map +0 -1
  325. package/dist/cli/ink-cli/components/renderers/DiffRenderer.js +0 -65
  326. package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.d.ts +0 -30
  327. package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.d.ts.map +0 -1
  328. package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.js +0 -66
  329. package/dist/cli/ink-cli/components/renderers/FileRenderer.d.ts +0 -19
  330. package/dist/cli/ink-cli/components/renderers/FileRenderer.d.ts.map +0 -1
  331. package/dist/cli/ink-cli/components/renderers/FileRenderer.js +0 -26
  332. package/dist/cli/ink-cli/components/renderers/GenericRenderer.d.ts +0 -21
  333. package/dist/cli/ink-cli/components/renderers/GenericRenderer.d.ts.map +0 -1
  334. package/dist/cli/ink-cli/components/renderers/GenericRenderer.js +0 -26
  335. package/dist/cli/ink-cli/components/renderers/SearchRenderer.d.ts +0 -20
  336. package/dist/cli/ink-cli/components/renderers/SearchRenderer.d.ts.map +0 -1
  337. package/dist/cli/ink-cli/components/renderers/SearchRenderer.js +0 -26
  338. package/dist/cli/ink-cli/components/renderers/ShellRenderer.d.ts +0 -21
  339. package/dist/cli/ink-cli/components/renderers/ShellRenderer.d.ts.map +0 -1
  340. package/dist/cli/ink-cli/components/renderers/ShellRenderer.js +0 -25
  341. package/dist/cli/ink-cli/components/renderers/diff-shared.d.ts +0 -61
  342. package/dist/cli/ink-cli/components/renderers/diff-shared.d.ts.map +0 -1
  343. package/dist/cli/ink-cli/components/renderers/diff-shared.js +0 -158
  344. package/dist/cli/ink-cli/components/renderers/index.d.ts +0 -28
  345. package/dist/cli/ink-cli/components/renderers/index.d.ts.map +0 -1
  346. package/dist/cli/ink-cli/components/renderers/index.js +0 -36
  347. package/dist/cli/ink-cli/components/shared/MarkdownText.d.ts +0 -38
  348. package/dist/cli/ink-cli/components/shared/MarkdownText.d.ts.map +0 -1
  349. package/dist/cli/ink-cli/components/shared/MarkdownText.js +0 -389
  350. package/dist/cli/ink-cli/components/shared/VirtualizedList.d.ts +0 -44
  351. package/dist/cli/ink-cli/components/shared/VirtualizedList.d.ts.map +0 -1
  352. package/dist/cli/ink-cli/components/shared/VirtualizedList.js +0 -300
  353. package/dist/cli/ink-cli/components/shared/text-buffer.d.ts +0 -185
  354. package/dist/cli/ink-cli/components/shared/text-buffer.d.ts.map +0 -1
  355. package/dist/cli/ink-cli/components/shared/text-buffer.js +0 -1338
  356. package/dist/cli/ink-cli/constants/processingPhrases.d.ts +0 -10
  357. package/dist/cli/ink-cli/constants/processingPhrases.d.ts.map +0 -1
  358. package/dist/cli/ink-cli/constants/processingPhrases.js +0 -92
  359. package/dist/cli/ink-cli/constants/tips.d.ts +0 -15
  360. package/dist/cli/ink-cli/constants/tips.d.ts.map +0 -1
  361. package/dist/cli/ink-cli/constants/tips.js +0 -57
  362. package/dist/cli/ink-cli/containers/InputContainer.d.ts +0 -62
  363. package/dist/cli/ink-cli/containers/InputContainer.d.ts.map +0 -1
  364. package/dist/cli/ink-cli/containers/InputContainer.js +0 -639
  365. package/dist/cli/ink-cli/containers/OverlayContainer.d.ts +0 -42
  366. package/dist/cli/ink-cli/containers/OverlayContainer.d.ts.map +0 -1
  367. package/dist/cli/ink-cli/containers/OverlayContainer.js +0 -1824
  368. package/dist/cli/ink-cli/containers/index.d.ts +0 -6
  369. package/dist/cli/ink-cli/containers/index.d.ts.map +0 -1
  370. package/dist/cli/ink-cli/containers/index.js +0 -5
  371. package/dist/cli/ink-cli/contexts/KeypressContext.d.ts +0 -36
  372. package/dist/cli/ink-cli/contexts/KeypressContext.d.ts.map +0 -1
  373. package/dist/cli/ink-cli/contexts/KeypressContext.js +0 -461
  374. package/dist/cli/ink-cli/contexts/MouseContext.d.ts +0 -27
  375. package/dist/cli/ink-cli/contexts/MouseContext.d.ts.map +0 -1
  376. package/dist/cli/ink-cli/contexts/MouseContext.js +0 -102
  377. package/dist/cli/ink-cli/contexts/ScrollProvider.d.ts +0 -33
  378. package/dist/cli/ink-cli/contexts/ScrollProvider.d.ts.map +0 -1
  379. package/dist/cli/ink-cli/contexts/ScrollProvider.js +0 -170
  380. package/dist/cli/ink-cli/contexts/SoundContext.d.ts +0 -23
  381. package/dist/cli/ink-cli/contexts/SoundContext.d.ts.map +0 -1
  382. package/dist/cli/ink-cli/contexts/SoundContext.js +0 -22
  383. package/dist/cli/ink-cli/contexts/index.d.ts +0 -8
  384. package/dist/cli/ink-cli/contexts/index.d.ts.map +0 -1
  385. package/dist/cli/ink-cli/contexts/index.js +0 -7
  386. package/dist/cli/ink-cli/hooks/index.d.ts +0 -12
  387. package/dist/cli/ink-cli/hooks/index.d.ts.map +0 -1
  388. package/dist/cli/ink-cli/hooks/index.js +0 -14
  389. package/dist/cli/ink-cli/hooks/useAgentEvents.d.ts +0 -49
  390. package/dist/cli/ink-cli/hooks/useAgentEvents.d.ts.map +0 -1
  391. package/dist/cli/ink-cli/hooks/useAgentEvents.js +0 -369
  392. package/dist/cli/ink-cli/hooks/useBatchedScroll.d.ts +0 -14
  393. package/dist/cli/ink-cli/hooks/useBatchedScroll.d.ts.map +0 -1
  394. package/dist/cli/ink-cli/hooks/useBatchedScroll.js +0 -25
  395. package/dist/cli/ink-cli/hooks/useCLIState.d.ts +0 -52
  396. package/dist/cli/ink-cli/hooks/useCLIState.d.ts.map +0 -1
  397. package/dist/cli/ink-cli/hooks/useCLIState.js +0 -223
  398. package/dist/cli/ink-cli/hooks/useElapsedTime.d.ts +0 -24
  399. package/dist/cli/ink-cli/hooks/useElapsedTime.d.ts.map +0 -1
  400. package/dist/cli/ink-cli/hooks/useElapsedTime.js +0 -69
  401. package/dist/cli/ink-cli/hooks/useGitBranch.d.ts +0 -13
  402. package/dist/cli/ink-cli/hooks/useGitBranch.d.ts.map +0 -1
  403. package/dist/cli/ink-cli/hooks/useGitBranch.js +0 -35
  404. package/dist/cli/ink-cli/hooks/useHistorySearch.d.ts +0 -61
  405. package/dist/cli/ink-cli/hooks/useHistorySearch.d.ts.map +0 -1
  406. package/dist/cli/ink-cli/hooks/useHistorySearch.js +0 -210
  407. package/dist/cli/ink-cli/hooks/useInputHistory.d.ts +0 -18
  408. package/dist/cli/ink-cli/hooks/useInputHistory.d.ts.map +0 -1
  409. package/dist/cli/ink-cli/hooks/useInputHistory.js +0 -26
  410. package/dist/cli/ink-cli/hooks/useInputOrchestrator.d.ts +0 -136
  411. package/dist/cli/ink-cli/hooks/useInputOrchestrator.d.ts.map +0 -1
  412. package/dist/cli/ink-cli/hooks/useInputOrchestrator.js +0 -715
  413. package/dist/cli/ink-cli/hooks/useKeyboardShortcuts.d.ts +0 -21
  414. package/dist/cli/ink-cli/hooks/useKeyboardShortcuts.d.ts.map +0 -1
  415. package/dist/cli/ink-cli/hooks/useKeyboardShortcuts.js +0 -80
  416. package/dist/cli/ink-cli/hooks/useKeypress.d.ts +0 -18
  417. package/dist/cli/ink-cli/hooks/useKeypress.d.ts.map +0 -1
  418. package/dist/cli/ink-cli/hooks/useKeypress.js +0 -26
  419. package/dist/cli/ink-cli/hooks/usePhraseCycler.d.ts +0 -30
  420. package/dist/cli/ink-cli/hooks/usePhraseCycler.d.ts.map +0 -1
  421. package/dist/cli/ink-cli/hooks/usePhraseCycler.js +0 -68
  422. package/dist/cli/ink-cli/hooks/useStreaming.d.ts +0 -19
  423. package/dist/cli/ink-cli/hooks/useStreaming.d.ts.map +0 -1
  424. package/dist/cli/ink-cli/hooks/useStreaming.js +0 -26
  425. package/dist/cli/ink-cli/hooks/useTerminalSize.d.ts +0 -14
  426. package/dist/cli/ink-cli/hooks/useTerminalSize.d.ts.map +0 -1
  427. package/dist/cli/ink-cli/hooks/useTerminalSize.js +0 -31
  428. package/dist/cli/ink-cli/hooks/useTokenCounter.d.ts +0 -46
  429. package/dist/cli/ink-cli/hooks/useTokenCounter.d.ts.map +0 -1
  430. package/dist/cli/ink-cli/hooks/useTokenCounter.js +0 -122
  431. package/dist/cli/ink-cli/services/CommandService.d.ts +0 -58
  432. package/dist/cli/ink-cli/services/CommandService.d.ts.map +0 -1
  433. package/dist/cli/ink-cli/services/CommandService.js +0 -64
  434. package/dist/cli/ink-cli/services/InputService.d.ts +0 -40
  435. package/dist/cli/ink-cli/services/InputService.d.ts.map +0 -1
  436. package/dist/cli/ink-cli/services/InputService.js +0 -87
  437. package/dist/cli/ink-cli/services/MessageService.d.ts +0 -35
  438. package/dist/cli/ink-cli/services/MessageService.d.ts.map +0 -1
  439. package/dist/cli/ink-cli/services/MessageService.js +0 -49
  440. package/dist/cli/ink-cli/services/index.d.ts +0 -8
  441. package/dist/cli/ink-cli/services/index.d.ts.map +0 -1
  442. package/dist/cli/ink-cli/services/index.js +0 -7
  443. package/dist/cli/ink-cli/services/processStream.d.ts +0 -75
  444. package/dist/cli/ink-cli/services/processStream.d.ts.map +0 -1
  445. package/dist/cli/ink-cli/services/processStream.js +0 -942
  446. package/dist/cli/ink-cli/state/actions.d.ts +0 -124
  447. package/dist/cli/ink-cli/state/actions.d.ts.map +0 -1
  448. package/dist/cli/ink-cli/state/actions.js +0 -8
  449. package/dist/cli/ink-cli/state/index.d.ts +0 -10
  450. package/dist/cli/ink-cli/state/index.d.ts.map +0 -1
  451. package/dist/cli/ink-cli/state/index.js +0 -8
  452. package/dist/cli/ink-cli/state/initialState.d.ts +0 -12
  453. package/dist/cli/ink-cli/state/initialState.d.ts.map +0 -1
  454. package/dist/cli/ink-cli/state/initialState.js +0 -57
  455. package/dist/cli/ink-cli/state/reducer.d.ts +0 -15
  456. package/dist/cli/ink-cli/state/reducer.d.ts.map +0 -1
  457. package/dist/cli/ink-cli/state/reducer.js +0 -341
  458. package/dist/cli/ink-cli/state/streaming-state.d.ts +0 -27
  459. package/dist/cli/ink-cli/state/streaming-state.d.ts.map +0 -1
  460. package/dist/cli/ink-cli/state/streaming-state.js +0 -39
  461. package/dist/cli/ink-cli/state/types.d.ts +0 -366
  462. package/dist/cli/ink-cli/state/types.d.ts.map +0 -1
  463. package/dist/cli/ink-cli/state/types.js +0 -5
  464. package/dist/cli/ink-cli/utils/bracketedPaste.d.ts +0 -22
  465. package/dist/cli/ink-cli/utils/bracketedPaste.d.ts.map +0 -1
  466. package/dist/cli/ink-cli/utils/bracketedPaste.js +0 -27
  467. package/dist/cli/ink-cli/utils/clipboardUtils.d.ts +0 -49
  468. package/dist/cli/ink-cli/utils/clipboardUtils.d.ts.map +0 -1
  469. package/dist/cli/ink-cli/utils/clipboardUtils.js +0 -356
  470. package/dist/cli/ink-cli/utils/commandOverlays.d.ts +0 -33
  471. package/dist/cli/ink-cli/utils/commandOverlays.d.ts.map +0 -1
  472. package/dist/cli/ink-cli/utils/commandOverlays.js +0 -84
  473. package/dist/cli/ink-cli/utils/debugLog.d.ts +0 -38
  474. package/dist/cli/ink-cli/utils/debugLog.d.ts.map +0 -1
  475. package/dist/cli/ink-cli/utils/debugLog.js +0 -66
  476. package/dist/cli/ink-cli/utils/idGenerator.d.ts +0 -10
  477. package/dist/cli/ink-cli/utils/idGenerator.d.ts.map +0 -1
  478. package/dist/cli/ink-cli/utils/idGenerator.js +0 -12
  479. package/dist/cli/ink-cli/utils/index.d.ts +0 -9
  480. package/dist/cli/ink-cli/utils/index.d.ts.map +0 -1
  481. package/dist/cli/ink-cli/utils/index.js +0 -13
  482. package/dist/cli/ink-cli/utils/input.d.ts +0 -25
  483. package/dist/cli/ink-cli/utils/input.d.ts.map +0 -1
  484. package/dist/cli/ink-cli/utils/input.js +0 -56
  485. package/dist/cli/ink-cli/utils/inputParsing.d.ts +0 -31
  486. package/dist/cli/ink-cli/utils/inputParsing.d.ts.map +0 -1
  487. package/dist/cli/ink-cli/utils/inputParsing.js +0 -70
  488. package/dist/cli/ink-cli/utils/llm-provider-display.d.ts +0 -3
  489. package/dist/cli/ink-cli/utils/llm-provider-display.d.ts.map +0 -1
  490. package/dist/cli/ink-cli/utils/llm-provider-display.js +0 -22
  491. package/dist/cli/ink-cli/utils/messageFormatting.d.ts +0 -140
  492. package/dist/cli/ink-cli/utils/messageFormatting.d.ts.map +0 -1
  493. package/dist/cli/ink-cli/utils/messageFormatting.js +0 -591
  494. package/dist/cli/ink-cli/utils/mouse.d.ts +0 -61
  495. package/dist/cli/ink-cli/utils/mouse.d.ts.map +0 -1
  496. package/dist/cli/ink-cli/utils/mouse.js +0 -209
  497. package/dist/cli/ink-cli/utils/soundNotification.d.ts +0 -71
  498. package/dist/cli/ink-cli/utils/soundNotification.d.ts.map +0 -1
  499. package/dist/cli/ink-cli/utils/soundNotification.js +0 -203
  500. package/dist/cli/ink-cli/utils/streamSplitter.d.ts +0 -44
  501. package/dist/cli/ink-cli/utils/streamSplitter.d.ts.map +0 -1
  502. package/dist/cli/ink-cli/utils/streamSplitter.js +0 -154
  503. package/dist/cli/ink-cli/utils/textUtils.d.ts +0 -63
  504. package/dist/cli/ink-cli/utils/textUtils.d.ts.map +0 -1
  505. package/dist/cli/ink-cli/utils/textUtils.js +0 -248
  506. package/dist/cli/ink-cli/utils/toolUtils.d.ts +0 -20
  507. package/dist/cli/ink-cli/utils/toolUtils.d.ts.map +0 -1
  508. package/dist/cli/ink-cli/utils/toolUtils.js +0 -25
  509. package/dist/webui/assets/index-C9JXwpvo.css +0 -1
  510. package/dist/webui/assets/index-DwtueA8l.js +0 -2059
@@ -1,609 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- /**
3
- * LocalModelWizard Component
4
- * Specialized wizard for adding local GGUF models with:
5
- * - Registry model selection with download support
6
- * - Custom GGUF file path option
7
- * - Download progress display
8
- */
9
- import { useState, useEffect, forwardRef, useImperativeHandle, useCallback } from 'react';
10
- import { Box, Text } from 'ink';
11
- import * as fs from 'fs';
12
- import * as path from 'path';
13
- import { spawn } from 'child_process';
14
- import { saveCustomModel, getAllInstalledModels, addInstalledModel, removeInstalledModel, getModelsDirectory, formatSize, getDextoGlobalPath, } from '@dexto/agent-management';
15
- import { promises as fsPromises } from 'fs';
16
- import { getAllLocalModels, getLocalModelById, getRecommendedLocalModels, downloadModel, isNodeLlamaCppInstalled, } from '@dexto/core';
17
- import { SetupInfoBanner } from './shared/index.js';
18
- const MAX_VISIBLE_ITEMS = 8;
19
- /**
20
- * Specialized wizard for local GGUF model setup.
21
- * Similar UX to CLI setup flow but in Ink.
22
- */
23
- const LocalModelWizard = forwardRef(function LocalModelWizard({ isVisible, onComplete, onClose }, ref) {
24
- const [step, setStep] = useState('select-model');
25
- const [models, setModels] = useState([]);
26
- const [installedIds, setInstalledIds] = useState(new Set());
27
- const [selectedIndex, setSelectedIndex] = useState(0);
28
- const [scrollOffset, setScrollOffset] = useState(0);
29
- const [showAllModels, setShowAllModels] = useState(false);
30
- const [isLoading, setIsLoading] = useState(true);
31
- const [error, setError] = useState(null);
32
- const [nodeLlamaInstalled, setNodeLlamaInstalled] = useState(true);
33
- const [nodeLlamaChecked, setNodeLlamaChecked] = useState(false); // Track if we've checked installation
34
- const [isInstallingNodeLlama, setIsInstallingNodeLlama] = useState(false);
35
- const [installConfirmIndex, setInstallConfirmIndex] = useState(0); // 0 = Yes, 1 = No
36
- const [installSpinnerFrame, setInstallSpinnerFrame] = useState(0);
37
- const [refreshTrigger, setRefreshTrigger] = useState(0); // Increment to trigger data reload
38
- // Custom path input state
39
- const [customPath, setCustomPath] = useState('');
40
- // Display name input state
41
- const [displayName, setDisplayName] = useState('');
42
- const [selectedModelId, setSelectedModelId] = useState(null);
43
- const [selectedModelPath, setSelectedModelPath] = useState(null);
44
- // Download state
45
- const [downloadProgress, setDownloadProgress] = useState(null);
46
- const [downloadError, setDownloadError] = useState(null);
47
- // Installed model options state
48
- const [installedOptionIndex, setInstalledOptionIndex] = useState(0);
49
- const [selectedInstalledModel, setSelectedInstalledModel] = useState(null);
50
- const [isDeleting, setIsDeleting] = useState(false);
51
- // Reset state when becoming visible
52
- useEffect(() => {
53
- if (!isVisible)
54
- return;
55
- setStep('select-model');
56
- setSelectedIndex(0);
57
- setScrollOffset(0);
58
- setShowAllModels(false);
59
- setCustomPath('');
60
- setDisplayName('');
61
- setSelectedModelId(null);
62
- setSelectedModelPath(null);
63
- setDownloadProgress(null);
64
- setDownloadError(null);
65
- setInstalledOptionIndex(0);
66
- setSelectedInstalledModel(null);
67
- setIsDeleting(false);
68
- setError(null);
69
- setIsInstallingNodeLlama(false);
70
- setInstallConfirmIndex(0);
71
- setInstallSpinnerFrame(0);
72
- setNodeLlamaChecked(false);
73
- }, [isVisible]);
74
- // Spinner animation for installation
75
- useEffect(() => {
76
- if (!isInstallingNodeLlama)
77
- return;
78
- const spinnerFrames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
79
- const interval = setInterval(() => {
80
- setInstallSpinnerFrame((prev) => (prev + 1) % spinnerFrames.length);
81
- }, 80);
82
- return () => clearInterval(interval);
83
- }, [isInstallingNodeLlama]);
84
- // Load models when visible or when showAllModels changes
85
- useEffect(() => {
86
- if (!isVisible)
87
- return;
88
- let cancelled = false;
89
- const loadData = async () => {
90
- setIsLoading(true);
91
- try {
92
- // Check if node-llama-cpp is installed
93
- // Skip if we've already checked AND it's installed (prevents re-check after install)
94
- if (!nodeLlamaChecked || !nodeLlamaInstalled) {
95
- const installed = await isNodeLlamaCppInstalled();
96
- if (!cancelled) {
97
- setNodeLlamaInstalled(installed);
98
- setNodeLlamaChecked(true);
99
- if (!installed) {
100
- setStep('install-node-llama');
101
- setIsLoading(false);
102
- return;
103
- }
104
- }
105
- }
106
- // Get installed models
107
- const installedModels = await getAllInstalledModels();
108
- const installedSet = new Set(installedModels.map((m) => m.id));
109
- if (!cancelled) {
110
- setInstalledIds(installedSet);
111
- }
112
- // Get registry models based on showAllModels flag
113
- const registryModels = showAllModels
114
- ? getAllLocalModels()
115
- : getRecommendedLocalModels();
116
- const options = registryModels.map((m) => ({
117
- id: m.id,
118
- name: m.name,
119
- description: m.description,
120
- sizeBytes: m.sizeBytes,
121
- isInstalled: installedSet.has(m.id),
122
- minVRAM: m.minVRAM,
123
- }));
124
- if (!cancelled) {
125
- setModels(options);
126
- setIsLoading(false);
127
- }
128
- }
129
- catch (err) {
130
- if (!cancelled) {
131
- setError(err instanceof Error ? err.message : 'Failed to load models');
132
- setIsLoading(false);
133
- }
134
- }
135
- };
136
- void loadData();
137
- return () => {
138
- cancelled = true;
139
- };
140
- }, [isVisible, showAllModels, refreshTrigger, nodeLlamaInstalled, nodeLlamaChecked]);
141
- // Calculate scroll offset
142
- useEffect(() => {
143
- const itemCount = models.length + 3; // +3 for special options
144
- if (selectedIndex < scrollOffset) {
145
- setScrollOffset(selectedIndex);
146
- }
147
- else if (selectedIndex >= scrollOffset + MAX_VISIBLE_ITEMS) {
148
- setScrollOffset(Math.min(selectedIndex - MAX_VISIBLE_ITEMS + 1, itemCount - MAX_VISIBLE_ITEMS));
149
- }
150
- }, [selectedIndex, models.length, scrollOffset]);
151
- // Handle model selection
152
- const handleSelectModel = useCallback(async (modelId) => {
153
- // Check if already installed - show options (Use / Delete)
154
- if (installedIds.has(modelId)) {
155
- const modelInfo = getLocalModelById(modelId);
156
- const installedModels = await getAllInstalledModels();
157
- const installedModel = installedModels.find((m) => m.id === modelId);
158
- setSelectedInstalledModel({
159
- id: modelId,
160
- filePath: installedModel?.filePath || '',
161
- displayName: modelInfo?.name || modelId,
162
- });
163
- setInstalledOptionIndex(0);
164
- setStep('installed-options');
165
- return;
166
- }
167
- // Need to download - start download
168
- setSelectedModelId(modelId);
169
- setStep('downloading');
170
- setDownloadProgress(null);
171
- setDownloadError(null);
172
- try {
173
- const result = await downloadModel(modelId, {
174
- targetDir: getModelsDirectory(),
175
- events: {
176
- onProgress: (progress) => {
177
- setDownloadProgress(progress);
178
- },
179
- onComplete: () => {
180
- // Download complete
181
- },
182
- onError: (_id, err) => {
183
- setDownloadError(err.message);
184
- },
185
- },
186
- });
187
- // Register the installed model
188
- const modelInfo = getLocalModelById(modelId);
189
- const installedModel = {
190
- id: modelId,
191
- filePath: result.filePath,
192
- sizeBytes: result.sizeBytes,
193
- downloadedAt: new Date().toISOString(),
194
- source: 'huggingface',
195
- filename: modelInfo?.filename || path.basename(result.filePath),
196
- };
197
- if (result.sha256) {
198
- installedModel.sha256 = result.sha256;
199
- }
200
- await addInstalledModel(installedModel);
201
- // Registry models are tracked in state.json, not custom-models.json
202
- // Just complete - the model will appear in the selector via getAllInstalledModels()
203
- onComplete({
204
- name: modelId,
205
- provider: 'local',
206
- displayName: modelInfo?.name || modelId,
207
- });
208
- }
209
- catch (err) {
210
- setDownloadError(err instanceof Error ? err.message : 'Download failed');
211
- }
212
- }, [installedIds, onComplete]);
213
- // Handle custom path submission
214
- const handleCustomPathSubmit = useCallback(async () => {
215
- const trimmedPath = customPath.trim();
216
- // Validate path
217
- if (!trimmedPath) {
218
- setError('File path is required');
219
- return;
220
- }
221
- if (!trimmedPath.toLowerCase().endsWith('.gguf')) {
222
- setError('File must have .gguf extension');
223
- return;
224
- }
225
- // Expand ~ to home directory
226
- const expandedPath = trimmedPath.startsWith('~')
227
- ? trimmedPath.replace('~', process.env.HOME || '')
228
- : trimmedPath;
229
- if (!path.isAbsolute(expandedPath)) {
230
- setError('Please enter an absolute path (starting with / or ~)');
231
- return;
232
- }
233
- if (!fs.existsSync(expandedPath)) {
234
- setError(`File not found: ${trimmedPath}`);
235
- return;
236
- }
237
- // Path is valid - move to display name step
238
- setSelectedModelPath(expandedPath);
239
- const filename = path.basename(expandedPath, '.gguf');
240
- setDisplayName(filename);
241
- setStep('display-name');
242
- setError(null);
243
- }, [customPath]);
244
- // Handle display name submission
245
- const handleDisplayNameSubmit = useCallback(async () => {
246
- if (!selectedModelPath)
247
- return;
248
- const trimmedName = displayName.trim();
249
- const filename = path.basename(selectedModelPath, '.gguf');
250
- // Generate model ID from filename
251
- const modelId = filename
252
- .toLowerCase()
253
- .replace(/\s+/g, '-')
254
- .replace(/[^a-z0-9-]/g, '')
255
- .substring(0, 50);
256
- const model = {
257
- name: modelId,
258
- provider: 'local',
259
- filePath: selectedModelPath,
260
- displayName: trimmedName || filename,
261
- };
262
- try {
263
- await saveCustomModel(model);
264
- onComplete(model);
265
- }
266
- catch (err) {
267
- setError(err instanceof Error ? err.message : 'Failed to save model');
268
- }
269
- }, [selectedModelPath, displayName, onComplete]);
270
- // Handle installed model option selection
271
- const handleInstalledOption = useCallback(async () => {
272
- if (!selectedInstalledModel)
273
- return;
274
- if (installedOptionIndex === 0) {
275
- // "Use this model" option
276
- onComplete({
277
- name: selectedInstalledModel.id,
278
- provider: 'local',
279
- displayName: selectedInstalledModel.displayName,
280
- });
281
- }
282
- else {
283
- // "Delete model" option
284
- setIsDeleting(true);
285
- setError(null);
286
- try {
287
- // Delete the GGUF file from disk
288
- if (selectedInstalledModel.filePath) {
289
- try {
290
- await fsPromises.unlink(selectedInstalledModel.filePath);
291
- }
292
- catch (err) {
293
- // File might already be deleted - continue
294
- const nodeErr = err;
295
- if (nodeErr.code !== 'ENOENT') {
296
- throw err;
297
- }
298
- }
299
- }
300
- // Remove from state.json
301
- await removeInstalledModel(selectedInstalledModel.id);
302
- // Refresh the model list
303
- setInstalledIds((prev) => {
304
- const next = new Set(prev);
305
- next.delete(selectedInstalledModel.id);
306
- return next;
307
- });
308
- // Go back to model selection
309
- setStep('select-model');
310
- setSelectedInstalledModel(null);
311
- }
312
- catch (err) {
313
- setError(err instanceof Error ? err.message : 'Failed to delete model');
314
- }
315
- finally {
316
- setIsDeleting(false);
317
- }
318
- }
319
- }, [selectedInstalledModel, installedOptionIndex, onComplete]);
320
- // Install node-llama-cpp to global deps directory
321
- const installNodeLlamaCpp = useCallback(async () => {
322
- const depsDir = getDextoGlobalPath('deps');
323
- // Ensure deps directory exists
324
- if (!fs.existsSync(depsDir)) {
325
- fs.mkdirSync(depsDir, { recursive: true });
326
- }
327
- // Initialize package.json if it doesn't exist
328
- const packageJsonPath = path.join(depsDir, 'package.json');
329
- if (!fs.existsSync(packageJsonPath)) {
330
- fs.writeFileSync(packageJsonPath, JSON.stringify({
331
- name: 'dexto-deps',
332
- version: '1.0.0',
333
- private: true,
334
- description: 'Native dependencies for Dexto',
335
- }, null, 2));
336
- }
337
- return new Promise((resolve) => {
338
- const child = spawn('npm', ['install', 'node-llama-cpp'], {
339
- stdio: ['ignore', 'ignore', 'pipe'], // stdin ignored, stdout ignored (not needed), stderr piped for errors
340
- cwd: depsDir,
341
- });
342
- let stderr = '';
343
- child.stderr?.on('data', (data) => {
344
- stderr += data.toString();
345
- });
346
- child.on('close', (code) => {
347
- if (code === 0) {
348
- resolve(true);
349
- }
350
- else {
351
- setError(`Installation failed: ${stderr.slice(0, 200)}`);
352
- resolve(false);
353
- }
354
- });
355
- child.on('error', (err) => {
356
- setError(`Installation failed: ${err.message}`);
357
- resolve(false);
358
- });
359
- });
360
- }, []);
361
- // Handle install confirmation
362
- const handleInstallConfirm = useCallback(async () => {
363
- if (installConfirmIndex === 1) {
364
- // User chose "No"
365
- onClose();
366
- return;
367
- }
368
- // User chose "Yes" - start installation
369
- setIsInstallingNodeLlama(true);
370
- setError(null);
371
- const success = await installNodeLlamaCpp();
372
- setIsInstallingNodeLlama(false);
373
- if (success) {
374
- // Trust npm's exit code - set states and go directly to model selection
375
- setNodeLlamaInstalled(true);
376
- setNodeLlamaChecked(true);
377
- setStep('select-model');
378
- setIsLoading(true);
379
- // Trigger reload of models
380
- setRefreshTrigger((prev) => prev + 1);
381
- }
382
- else {
383
- // Error should already be set by installNodeLlamaCpp, but ensure we show something
384
- setError((prev) => prev || 'Installation failed. Check your internet connection and try again.');
385
- }
386
- }, [installConfirmIndex, installNodeLlamaCpp, onClose]);
387
- // Handle input
388
- useImperativeHandle(ref, () => ({
389
- handleInput: (input, key) => {
390
- if (!isVisible)
391
- return false;
392
- // Escape to go back/close
393
- if (key.escape) {
394
- if (step === 'custom-path' ||
395
- step === 'display-name' ||
396
- step === 'installed-options') {
397
- setStep('select-model');
398
- setError(null);
399
- setSelectedInstalledModel(null);
400
- return true;
401
- }
402
- if (step === 'downloading' && downloadError) {
403
- setStep('select-model');
404
- setDownloadError(null);
405
- return true;
406
- }
407
- onClose();
408
- return true;
409
- }
410
- // Handle based on current step
411
- if (step === 'install-node-llama') {
412
- if (isInstallingNodeLlama)
413
- return true; // Don't allow input while installing
414
- if (key.upArrow || key.downArrow) {
415
- setInstallConfirmIndex((prev) => (prev === 0 ? 1 : 0));
416
- return true;
417
- }
418
- if (key.return) {
419
- void handleInstallConfirm();
420
- return true;
421
- }
422
- return true;
423
- }
424
- if (step === 'select-model') {
425
- const itemCount = models.length + 3; // +3 for special options
426
- if (key.upArrow) {
427
- setSelectedIndex((prev) => (prev > 0 ? prev - 1 : itemCount - 1));
428
- return true;
429
- }
430
- if (key.downArrow) {
431
- setSelectedIndex((prev) => (prev < itemCount - 1 ? prev + 1 : 0));
432
- return true;
433
- }
434
- if (key.return) {
435
- // Special options are at the end
436
- const showAllIndex = models.length;
437
- const customPathIndex = models.length + 1;
438
- const backIndex = models.length + 2;
439
- if (selectedIndex === backIndex) {
440
- onClose();
441
- return true;
442
- }
443
- if (selectedIndex === showAllIndex) {
444
- setShowAllModels(!showAllModels);
445
- setSelectedIndex(0);
446
- setScrollOffset(0);
447
- return true;
448
- }
449
- if (selectedIndex === customPathIndex) {
450
- setStep('custom-path');
451
- setCustomPath('');
452
- setError(null);
453
- return true;
454
- }
455
- // Model selected
456
- const model = models[selectedIndex];
457
- if (model) {
458
- void handleSelectModel(model.id);
459
- }
460
- return true;
461
- }
462
- return true; // Consume all input in select mode
463
- }
464
- if (step === 'custom-path') {
465
- if (key.return) {
466
- void handleCustomPathSubmit();
467
- return true;
468
- }
469
- if (key.backspace || key.delete) {
470
- setCustomPath((prev) => prev.slice(0, -1));
471
- setError(null);
472
- return true;
473
- }
474
- if (input && !key.ctrl && !key.meta) {
475
- setCustomPath((prev) => prev + input);
476
- setError(null);
477
- return true;
478
- }
479
- return true;
480
- }
481
- if (step === 'display-name') {
482
- if (key.return) {
483
- void handleDisplayNameSubmit();
484
- return true;
485
- }
486
- if (key.backspace || key.delete) {
487
- setDisplayName((prev) => prev.slice(0, -1));
488
- return true;
489
- }
490
- if (input && !key.ctrl && !key.meta) {
491
- setDisplayName((prev) => prev + input);
492
- return true;
493
- }
494
- return true;
495
- }
496
- if (step === 'installed-options') {
497
- if (isDeleting)
498
- return true; // Don't allow input while deleting
499
- if (key.upArrow || key.downArrow) {
500
- setInstalledOptionIndex((prev) => (prev === 0 ? 1 : 0));
501
- return true;
502
- }
503
- if (key.return) {
504
- void handleInstalledOption();
505
- return true;
506
- }
507
- return true;
508
- }
509
- if (step === 'downloading') {
510
- // Only allow escape if there's an error
511
- return true;
512
- }
513
- return false;
514
- },
515
- }), [
516
- isVisible,
517
- step,
518
- models,
519
- selectedIndex,
520
- showAllModels,
521
- customPath,
522
- displayName,
523
- downloadError,
524
- isDeleting,
525
- installedOptionIndex,
526
- handleSelectModel,
527
- handleCustomPathSubmit,
528
- handleDisplayNameSubmit,
529
- handleInstalledOption,
530
- handleInstallConfirm,
531
- isInstallingNodeLlama,
532
- installConfirmIndex,
533
- onClose,
534
- ]);
535
- if (!isVisible)
536
- return null;
537
- // Node-llama-cpp install prompt
538
- if (step === 'install-node-llama') {
539
- const options = [
540
- { label: 'Yes', description: 'Install now (may take 1-2 minutes)' },
541
- { label: 'No', description: 'Go back' },
542
- ];
543
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "yellow", paddingX: 1, marginTop: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, color: "yellow", children: "Dependency Required" }) }), _jsx(Text, { children: "Local model execution requires node-llama-cpp." }), _jsx(Text, { color: "gray", children: "This will compile native bindings for your system." }), isInstallingNodeLlama ? (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Box, { children: _jsxs(Text, { color: "cyan", children: [['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'][installSpinnerFrame], ' ', "Installing node-llama-cpp (compiling native bindings)..."] }) }), _jsx(Text, { color: "gray", children: "This may take 1-2 minutes." })] })) : (_jsxs(_Fragment, { children: [_jsx(Box, { marginTop: 1, marginBottom: 1, children: _jsx(Text, { children: "Install node-llama-cpp now?" }) }), options.map((option, idx) => (_jsxs(Box, { children: [_jsxs(Text, { color: idx === installConfirmIndex ? 'cyan' : 'white', children: [idx === installConfirmIndex ? '❯ ' : ' ', option.label] }), idx === installConfirmIndex && (_jsxs(Text, { color: "gray", children: [" - ", option.description] }))] }, option.label)))] })), error && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "red", children: error }) })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: isInstallingNodeLlama
544
- ? 'Please wait...'
545
- : '↑↓ navigate • Enter select • Esc cancel' }) })] }));
546
- }
547
- // Loading state
548
- if (isLoading) {
549
- return (_jsx(Box, { flexDirection: "column", borderStyle: "round", borderColor: "green", paddingX: 1, marginTop: 1, children: _jsx(Text, { color: "gray", children: "Loading models..." }) }));
550
- }
551
- // Download progress
552
- if (step === 'downloading') {
553
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "green", paddingX: 1, marginTop: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, color: "green", children: "Downloading Model" }) }), downloadError ? (_jsxs(_Fragment, { children: [_jsxs(Text, { color: "red", children: ["Download failed: ", downloadError] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "Press Esc to go back" }) })] })) : downloadProgress ? (_jsxs(_Fragment, { children: [_jsxs(Text, { children: [selectedModelId, ": ", downloadProgress.percentage.toFixed(1), "%"] }), _jsxs(Text, { color: "gray", children: [formatSize(downloadProgress.bytesDownloaded), " /", ' ', formatSize(downloadProgress.totalBytes), downloadProgress.speed
554
- ? ` • ${formatSize(downloadProgress.speed)}/s`
555
- : '', downloadProgress.eta
556
- ? ` • ETA: ${Math.round(downloadProgress.eta)}s`
557
- : ''] }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "green", children: '█'.repeat(Math.min(20, Math.floor(downloadProgress.percentage / 5))) }), _jsx(Text, { color: "gray", children: '░'.repeat(Math.max(0, 20 - Math.floor(downloadProgress.percentage / 5))) })] })] })) : (_jsx(Text, { color: "gray", children: "Starting download..." }))] }));
558
- }
559
- // Installed model options (Use / Delete)
560
- if (step === 'installed-options' && selectedInstalledModel) {
561
- const options = [
562
- { label: 'Use this model', description: 'Select this model for chat' },
563
- { label: 'Delete model', description: 'Remove from disk and uninstall' },
564
- ];
565
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "green", paddingX: 1, marginTop: 1, children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { bold: true, color: "green", children: selectedInstalledModel.displayName }), _jsx(Text, { color: "gray", children: " (installed)" })] }), isDeleting ? (_jsx(Text, { color: "yellow", children: "Deleting model..." })) : (_jsx(_Fragment, { children: options.map((option, idx) => (_jsxs(Box, { children: [_jsxs(Text, { color: idx === installedOptionIndex ? 'cyan' : 'white', children: [idx === installedOptionIndex ? '❯ ' : ' ', option.label] }), idx === installedOptionIndex && (_jsxs(Text, { color: "gray", children: [" - ", option.description] }))] }, option.label))) })), error && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "red", children: error }) })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: isDeleting ? 'Please wait...' : 'Enter to select • Esc to go back' }) })] }));
566
- }
567
- // Custom path input
568
- if (step === 'custom-path') {
569
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "green", paddingX: 1, marginTop: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, color: "green", children: "Custom GGUF File" }) }), _jsx(Text, { children: "Enter path to GGUF file:" }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "gray", children: "> " }), _jsx(Text, { children: customPath }), _jsx(Text, { color: "cyan", children: "\u258C" })] }), _jsx(Text, { color: "gray", children: "e.g., /path/to/model.gguf or ~/models/llama.gguf" }), error && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "red", children: error }) })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "Enter to continue \u2022 Esc to go back" }) })] }));
570
- }
571
- // Display name input
572
- if (step === 'display-name') {
573
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "green", paddingX: 1, marginTop: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, color: "green", children: "Display Name" }) }), _jsx(Text, { children: "Display name (optional):" }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "gray", children: "> " }), _jsx(Text, { children: displayName }), _jsx(Text, { color: "cyan", children: "\u258C" })] }), error && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "red", children: error }) })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "Enter to save \u2022 Esc to go back" }) })] }));
574
- }
575
- // Model selection
576
- const allItems = [
577
- ...models,
578
- { type: 'show-all' },
579
- { type: 'custom-path' },
580
- { type: 'back' },
581
- ];
582
- const visibleStart = scrollOffset;
583
- const visibleEnd = Math.min(scrollOffset + MAX_VISIBLE_ITEMS, allItems.length);
584
- const visibleItems = allItems.slice(visibleStart, visibleEnd);
585
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "green", paddingX: 1, marginTop: 1, children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { bold: true, color: "green", children: "Local Model" }), _jsxs(Text, { color: "gray", children: [' ', "(", selectedIndex + 1, "/", allItems.length, ")"] })] }), _jsx(SetupInfoBanner, { title: "Local Models", description: "Select a model to download, or use a custom GGUF file. Models run completely on your machine - free, private, and offline.", docsUrl: "https://docs.dexto.ai/docs/guides/supported-llm-providers#local-models" }), visibleItems.map((item, visibleIndex) => {
586
- const actualIndex = scrollOffset + visibleIndex;
587
- const isSelected = actualIndex === selectedIndex;
588
- if ('type' in item) {
589
- if (item.type === 'show-all') {
590
- return (_jsxs(Box, { paddingY: 0, children: [_jsxs(Text, { color: isSelected ? 'cyan' : 'blue', bold: isSelected, children: [isSelected ? '› ' : ' ', showAllModels
591
- ? '↩ Show recommended'
592
- : '... Show all models'] }), _jsxs(Text, { color: "gray", children: [' ', "(", getAllLocalModels().length, " available)"] })] }, "show-all"));
593
- }
594
- if (item.type === 'custom-path') {
595
- return (_jsx(Box, { paddingY: 0, children: _jsxs(Text, { color: isSelected ? 'cyan' : 'blue', bold: isSelected, children: [isSelected ? '› ' : ' ', "... Use custom GGUF file"] }) }, "custom-path"));
596
- }
597
- if (item.type === 'back') {
598
- return (_jsx(Box, { paddingY: 0, children: _jsxs(Text, { color: isSelected ? 'cyan' : 'gray', bold: isSelected, children: [isSelected ? '› ' : ' ', "\u2190 Back"] }) }, "back"));
599
- }
600
- }
601
- // Model option
602
- const model = item;
603
- const statusIcon = model.isInstalled ? '✓' : '○';
604
- const statusColor = model.isInstalled ? 'green' : 'gray';
605
- const vramHint = model.minVRAM ? `${model.minVRAM}GB+ VRAM` : 'CPU OK';
606
- return (_jsxs(Box, { paddingY: 0, children: [_jsx(Text, { color: isSelected ? 'cyan' : 'white', bold: isSelected, children: isSelected ? '› ' : ' ' }), _jsxs(Text, { color: statusColor, children: [statusIcon, " "] }), _jsx(Text, { color: isSelected ? 'cyan' : 'white', bold: isSelected, children: model.name }), _jsxs(Text, { color: "gray", children: [' ', formatSize(model.sizeBytes), " | ", vramHint, model.isInstalled ? ' (installed)' : ''] })] }, model.id));
607
- }), allItems.length > MAX_VISIBLE_ITEMS && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: "gray", children: [scrollOffset > 0 ? '↑ more above ' : '', visibleEnd < allItems.length ? '↓ more below' : ''] }) })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "\u2191\u2193 navigate \u2022 Enter select \u2022 Esc back" }) }), error && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "red", children: error }) }))] }));
608
- });
609
- export default LocalModelWizard;
@@ -1,15 +0,0 @@
1
- /**
2
- * CustomModelWizard module exports.
3
- *
4
- * Architecture:
5
- * - types.ts: Shared interfaces (WizardStep, ProviderConfig, validators)
6
- * - provider-config.ts: Provider registry with steps, display names, validation
7
- * - shared/: Reusable UI components (ProviderSelector, WizardStepInput, etc.)
8
- *
9
- * The main CustomModelWizard.tsx uses these modules instead of having
10
- * all provider-specific logic scattered throughout.
11
- */
12
- export * from './types.js';
13
- export * from './provider-config.js';
14
- export * from './shared/index.js';
15
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/ink-cli/components/overlays/custom-model-wizard/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC"}
@@ -1,14 +0,0 @@
1
- /**
2
- * CustomModelWizard module exports.
3
- *
4
- * Architecture:
5
- * - types.ts: Shared interfaces (WizardStep, ProviderConfig, validators)
6
- * - provider-config.ts: Provider registry with steps, display names, validation
7
- * - shared/: Reusable UI components (ProviderSelector, WizardStepInput, etc.)
8
- *
9
- * The main CustomModelWizard.tsx uses these modules instead of having
10
- * all provider-specific logic scattered throughout.
11
- */
12
- export * from './types.js';
13
- export * from './provider-config.js';
14
- export * from './shared/index.js';