@dexto/tui 1.14.6 → 1.15.0-beta.1

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 (570) hide show
  1. package/dist/InkCLIRefactored.cjs +30 -24
  2. package/dist/InkCLIRefactored.d.ts.map +1 -1
  3. package/dist/InkCLIRefactored.js +30 -24
  4. package/dist/components/ApprovalPrompt.cjs +128 -40
  5. package/dist/components/ApprovalPrompt.d.ts +2 -0
  6. package/dist/components/ApprovalPrompt.d.ts.map +1 -1
  7. package/dist/components/ApprovalPrompt.js +128 -41
  8. package/dist/components/CustomInput.cjs +4 -3
  9. package/dist/components/CustomInput.d.ts.map +1 -1
  10. package/dist/components/CustomInput.js +4 -3
  11. package/dist/components/DeckArea.cjs +43 -0
  12. package/dist/components/DeckArea.d.ts +14 -0
  13. package/dist/components/DeckArea.d.ts.map +1 -0
  14. package/dist/components/DeckArea.js +19 -0
  15. package/dist/components/EditableMultiLineInput.cjs +9 -8
  16. package/dist/components/EditableMultiLineInput.d.ts.map +1 -1
  17. package/dist/components/EditableMultiLineInput.js +9 -8
  18. package/dist/components/ElicitationForm.cjs +78 -18
  19. package/dist/components/ElicitationForm.d.ts.map +1 -1
  20. package/dist/components/ElicitationForm.js +78 -18
  21. package/dist/components/ErrorBoundary.cjs +15 -5
  22. package/dist/components/ErrorBoundary.d.ts.map +1 -1
  23. package/dist/components/ErrorBoundary.js +15 -5
  24. package/dist/components/Footer.cjs +41 -86
  25. package/dist/components/Footer.d.ts +2 -2
  26. package/dist/components/Footer.d.ts.map +1 -1
  27. package/dist/components/Footer.js +44 -92
  28. package/dist/components/Footer.test.cjs +44 -0
  29. package/dist/components/Footer.test.js +44 -0
  30. package/dist/components/HistorySearchBar.cjs +6 -5
  31. package/dist/components/HistorySearchBar.d.ts.map +1 -1
  32. package/dist/components/HistorySearchBar.js +6 -5
  33. package/dist/components/MultiLineInput.cjs +6 -5
  34. package/dist/components/MultiLineInput.d.ts.map +1 -1
  35. package/dist/components/MultiLineInput.js +6 -5
  36. package/dist/components/ResourceAutocomplete.cjs +5 -4
  37. package/dist/components/ResourceAutocomplete.d.ts.map +1 -1
  38. package/dist/components/ResourceAutocomplete.js +5 -4
  39. package/dist/components/SignalGates.test.cjs +215 -0
  40. package/dist/components/SignalGates.test.d.ts +2 -0
  41. package/dist/components/SignalGates.test.d.ts.map +1 -0
  42. package/dist/components/SignalGates.test.js +217 -0
  43. package/dist/components/SlashCommandAutocomplete.cjs +4 -3
  44. package/dist/components/SlashCommandAutocomplete.d.ts.map +1 -1
  45. package/dist/components/SlashCommandAutocomplete.js +4 -3
  46. package/dist/components/StatusBar.cjs +13 -30
  47. package/dist/components/StatusBar.d.ts +1 -3
  48. package/dist/components/StatusBar.d.ts.map +1 -1
  49. package/dist/components/StatusBar.js +13 -30
  50. package/dist/components/TextBufferInput.cjs +13 -12
  51. package/dist/components/TextBufferInput.d.ts.map +1 -1
  52. package/dist/components/TextBufferInput.js +13 -12
  53. package/dist/components/TodoPanel.cjs +23 -16
  54. package/dist/components/TodoPanel.d.ts.map +1 -1
  55. package/dist/components/TodoPanel.js +23 -16
  56. package/dist/components/base/BaseAutocomplete.cjs +7 -6
  57. package/dist/components/base/BaseAutocomplete.d.ts.map +1 -1
  58. package/dist/components/base/BaseAutocomplete.js +7 -6
  59. package/dist/components/base/BaseSelector.cjs +5 -4
  60. package/dist/components/base/BaseSelector.d.ts.map +1 -1
  61. package/dist/components/base/BaseSelector.js +5 -4
  62. package/dist/components/chat/Footer.cjs +2 -1
  63. package/dist/components/chat/Footer.d.ts.map +1 -1
  64. package/dist/components/chat/Footer.js +2 -1
  65. package/dist/components/chat/Header.cjs +20 -16
  66. package/dist/components/chat/Header.d.ts.map +1 -1
  67. package/dist/components/chat/Header.js +20 -16
  68. package/dist/components/chat/MessageItem.cjs +47 -30
  69. package/dist/components/chat/MessageItem.d.ts.map +1 -1
  70. package/dist/components/chat/MessageItem.js +52 -29
  71. package/dist/components/chat/MessageList.cjs +3 -2
  72. package/dist/components/chat/MessageList.d.ts.map +1 -1
  73. package/dist/components/chat/MessageList.js +3 -2
  74. package/dist/components/chat/QueuedMessagesDisplay.cjs +17 -5
  75. package/dist/components/chat/QueuedMessagesDisplay.d.ts.map +1 -1
  76. package/dist/components/chat/QueuedMessagesDisplay.js +18 -6
  77. package/dist/components/chat/SignalMessage.cjs +116 -0
  78. package/dist/components/chat/SignalMessage.d.ts +18 -0
  79. package/dist/components/chat/SignalMessage.d.ts.map +1 -0
  80. package/dist/components/chat/SignalMessage.js +96 -0
  81. package/dist/components/chat/SignalMessage.test.cjs +112 -0
  82. package/dist/components/chat/SignalMessage.test.d.ts +2 -0
  83. package/dist/components/chat/SignalMessage.test.d.ts.map +1 -0
  84. package/dist/components/chat/SignalMessage.test.js +116 -0
  85. package/dist/components/chat/ToolIcon.cjs +6 -5
  86. package/dist/components/chat/ToolIcon.d.ts.map +1 -1
  87. package/dist/components/chat/ToolIcon.js +6 -5
  88. package/dist/components/chat/styled-boxes/ConfigBox.cjs +8 -7
  89. package/dist/components/chat/styled-boxes/ConfigBox.d.ts.map +1 -1
  90. package/dist/components/chat/styled-boxes/ConfigBox.js +8 -7
  91. package/dist/components/chat/styled-boxes/HelpBox.cjs +4 -3
  92. package/dist/components/chat/styled-boxes/HelpBox.d.ts.map +1 -1
  93. package/dist/components/chat/styled-boxes/HelpBox.js +4 -3
  94. package/dist/components/chat/styled-boxes/LogConfigBox.cjs +11 -3
  95. package/dist/components/chat/styled-boxes/LogConfigBox.d.ts.map +1 -1
  96. package/dist/components/chat/styled-boxes/LogConfigBox.js +11 -3
  97. package/dist/components/chat/styled-boxes/SessionHistoryBox.cjs +8 -7
  98. package/dist/components/chat/styled-boxes/SessionHistoryBox.d.ts.map +1 -1
  99. package/dist/components/chat/styled-boxes/SessionHistoryBox.js +8 -7
  100. package/dist/components/chat/styled-boxes/SessionListBox.cjs +19 -11
  101. package/dist/components/chat/styled-boxes/SessionListBox.d.ts.map +1 -1
  102. package/dist/components/chat/styled-boxes/SessionListBox.js +19 -11
  103. package/dist/components/chat/styled-boxes/ShortcutsBox.cjs +4 -3
  104. package/dist/components/chat/styled-boxes/ShortcutsBox.d.ts.map +1 -1
  105. package/dist/components/chat/styled-boxes/ShortcutsBox.js +4 -3
  106. package/dist/components/chat/styled-boxes/StatsBox.cjs +13 -5
  107. package/dist/components/chat/styled-boxes/StatsBox.d.ts.map +1 -1
  108. package/dist/components/chat/styled-boxes/StatsBox.js +13 -5
  109. package/dist/components/chat/styled-boxes/StyledBox.cjs +7 -6
  110. package/dist/components/chat/styled-boxes/StyledBox.d.ts.map +1 -1
  111. package/dist/components/chat/styled-boxes/StyledBox.js +7 -6
  112. package/dist/components/chat/styled-boxes/SyspromptBox.cjs +2 -1
  113. package/dist/components/chat/styled-boxes/SyspromptBox.d.ts.map +1 -1
  114. package/dist/components/chat/styled-boxes/SyspromptBox.js +2 -1
  115. package/dist/components/modes/AlternateBufferCLI.cjs +53 -43
  116. package/dist/components/modes/AlternateBufferCLI.d.ts.map +1 -1
  117. package/dist/components/modes/AlternateBufferCLI.js +53 -43
  118. package/dist/components/modes/StaticCLI.cjs +53 -42
  119. package/dist/components/modes/StaticCLI.d.ts.map +1 -1
  120. package/dist/components/modes/StaticCLI.js +53 -42
  121. package/dist/components/overlays/ApiKeyInput.cjs +12 -11
  122. package/dist/components/overlays/ApiKeyInput.d.ts.map +1 -1
  123. package/dist/components/overlays/ApiKeyInput.js +12 -11
  124. package/dist/components/overlays/ChatGPTUsageCapOverlay.cjs +7 -6
  125. package/dist/components/overlays/ChatGPTUsageCapOverlay.d.ts.map +1 -1
  126. package/dist/components/overlays/ChatGPTUsageCapOverlay.js +7 -6
  127. package/dist/components/overlays/CommandOutputOverlay.cjs +2 -1
  128. package/dist/components/overlays/CommandOutputOverlay.d.ts.map +1 -1
  129. package/dist/components/overlays/CommandOutputOverlay.js +2 -1
  130. package/dist/components/overlays/ConnectOverlay.cjs +10 -9
  131. package/dist/components/overlays/ConnectOverlay.d.ts.map +1 -1
  132. package/dist/components/overlays/ConnectOverlay.js +10 -9
  133. package/dist/components/overlays/ContextStatsOverlay.cjs +48 -37
  134. package/dist/components/overlays/ContextStatsOverlay.d.ts.map +1 -1
  135. package/dist/components/overlays/ContextStatsOverlay.js +48 -37
  136. package/dist/components/overlays/CustomModelWizard.cjs +5 -4
  137. package/dist/components/overlays/CustomModelWizard.d.ts.map +1 -1
  138. package/dist/components/overlays/CustomModelWizard.js +5 -4
  139. package/dist/components/overlays/ExportWizard.cjs +28 -27
  140. package/dist/components/overlays/ExportWizard.d.ts.map +1 -1
  141. package/dist/components/overlays/ExportWizard.js +28 -27
  142. package/dist/components/overlays/InsufficientCreditsOverlay.cjs +25 -9
  143. package/dist/components/overlays/InsufficientCreditsOverlay.d.ts +2 -0
  144. package/dist/components/overlays/InsufficientCreditsOverlay.d.ts.map +1 -1
  145. package/dist/components/overlays/InsufficientCreditsOverlay.js +25 -9
  146. package/dist/components/overlays/LogLevelSelector.cjs +6 -5
  147. package/dist/components/overlays/LogLevelSelector.d.ts.map +1 -1
  148. package/dist/components/overlays/LogLevelSelector.js +6 -5
  149. package/dist/components/overlays/LoginOverlay.cjs +31 -66
  150. package/dist/components/overlays/LoginOverlay.d.ts +1 -3
  151. package/dist/components/overlays/LoginOverlay.d.ts.map +1 -1
  152. package/dist/components/overlays/LoginOverlay.js +32 -71
  153. package/dist/components/overlays/LogoutOverlay.cjs +16 -24
  154. package/dist/components/overlays/LogoutOverlay.d.ts +1 -0
  155. package/dist/components/overlays/LogoutOverlay.d.ts.map +1 -1
  156. package/dist/components/overlays/LogoutOverlay.js +18 -38
  157. package/dist/components/overlays/MarketplaceAddPrompt.cjs +12 -11
  158. package/dist/components/overlays/MarketplaceAddPrompt.d.ts.map +1 -1
  159. package/dist/components/overlays/MarketplaceAddPrompt.js +12 -11
  160. package/dist/components/overlays/MarketplaceBrowser.cjs +27 -26
  161. package/dist/components/overlays/MarketplaceBrowser.d.ts.map +1 -1
  162. package/dist/components/overlays/MarketplaceBrowser.js +27 -26
  163. package/dist/components/overlays/McpAddChoice.cjs +4 -3
  164. package/dist/components/overlays/McpAddChoice.d.ts.map +1 -1
  165. package/dist/components/overlays/McpAddChoice.js +4 -3
  166. package/dist/components/overlays/McpAddSelector.cjs +4 -3
  167. package/dist/components/overlays/McpAddSelector.d.ts.map +1 -1
  168. package/dist/components/overlays/McpAddSelector.js +4 -3
  169. package/dist/components/overlays/McpCustomTypeSelector.cjs +4 -3
  170. package/dist/components/overlays/McpCustomTypeSelector.d.ts.map +1 -1
  171. package/dist/components/overlays/McpCustomTypeSelector.js +4 -3
  172. package/dist/components/overlays/McpCustomWizard.cjs +9 -8
  173. package/dist/components/overlays/McpCustomWizard.d.ts.map +1 -1
  174. package/dist/components/overlays/McpCustomWizard.js +9 -8
  175. package/dist/components/overlays/McpRemoveSelector.cjs +5 -4
  176. package/dist/components/overlays/McpRemoveSelector.d.ts.map +1 -1
  177. package/dist/components/overlays/McpRemoveSelector.js +5 -4
  178. package/dist/components/overlays/McpSelector.cjs +4 -3
  179. package/dist/components/overlays/McpSelector.d.ts.map +1 -1
  180. package/dist/components/overlays/McpSelector.js +4 -3
  181. package/dist/components/overlays/McpServerActions.cjs +7 -6
  182. package/dist/components/overlays/McpServerActions.d.ts.map +1 -1
  183. package/dist/components/overlays/McpServerActions.js +7 -6
  184. package/dist/components/overlays/McpServerList.cjs +6 -5
  185. package/dist/components/overlays/McpServerList.d.ts.map +1 -1
  186. package/dist/components/overlays/McpServerList.js +6 -5
  187. package/dist/components/overlays/ModelSelectorRefactored.cjs +32 -17
  188. package/dist/components/overlays/ModelSelectorRefactored.d.ts.map +1 -1
  189. package/dist/components/overlays/ModelSelectorRefactored.js +32 -17
  190. package/dist/components/overlays/PermissionsSelector.cjs +6 -5
  191. package/dist/components/overlays/PermissionsSelector.d.ts.map +1 -1
  192. package/dist/components/overlays/PermissionsSelector.js +6 -5
  193. package/dist/components/overlays/PluginActions.cjs +7 -6
  194. package/dist/components/overlays/PluginActions.d.ts.map +1 -1
  195. package/dist/components/overlays/PluginActions.js +7 -6
  196. package/dist/components/overlays/PluginList.cjs +12 -11
  197. package/dist/components/overlays/PluginList.d.ts.map +1 -1
  198. package/dist/components/overlays/PluginList.js +12 -11
  199. package/dist/components/overlays/PluginManager.cjs +13 -5
  200. package/dist/components/overlays/PluginManager.d.ts.map +1 -1
  201. package/dist/components/overlays/PluginManager.js +13 -5
  202. package/dist/components/overlays/PromptAddChoice.cjs +5 -4
  203. package/dist/components/overlays/PromptAddChoice.d.ts.map +1 -1
  204. package/dist/components/overlays/PromptAddChoice.js +5 -4
  205. package/dist/components/overlays/PromptAddWizard.cjs +10 -9
  206. package/dist/components/overlays/PromptAddWizard.d.ts.map +1 -1
  207. package/dist/components/overlays/PromptAddWizard.js +10 -9
  208. package/dist/components/overlays/PromptDeleteSelector.cjs +6 -5
  209. package/dist/components/overlays/PromptDeleteSelector.d.ts.map +1 -1
  210. package/dist/components/overlays/PromptDeleteSelector.js +6 -5
  211. package/dist/components/overlays/PromptList.cjs +10 -9
  212. package/dist/components/overlays/PromptList.d.ts.map +1 -1
  213. package/dist/components/overlays/PromptList.js +10 -9
  214. package/dist/components/overlays/ReasoningOverlay.cjs +30 -23
  215. package/dist/components/overlays/ReasoningOverlay.d.ts.map +1 -1
  216. package/dist/components/overlays/ReasoningOverlay.js +30 -23
  217. package/dist/components/overlays/SearchOverlay.cjs +15 -14
  218. package/dist/components/overlays/SearchOverlay.d.ts.map +1 -1
  219. package/dist/components/overlays/SearchOverlay.js +15 -14
  220. package/dist/components/overlays/SessionRenameOverlay.cjs +9 -8
  221. package/dist/components/overlays/SessionRenameOverlay.d.ts.map +1 -1
  222. package/dist/components/overlays/SessionRenameOverlay.js +9 -8
  223. package/dist/components/overlays/SessionSelectorRefactored.cjs +4 -3
  224. package/dist/components/overlays/SessionSelectorRefactored.d.ts.map +1 -1
  225. package/dist/components/overlays/SessionSelectorRefactored.js +4 -3
  226. package/dist/components/overlays/SessionSubcommandSelector.cjs +4 -3
  227. package/dist/components/overlays/SessionSubcommandSelector.d.ts.map +1 -1
  228. package/dist/components/overlays/SessionSubcommandSelector.js +4 -3
  229. package/dist/components/overlays/SoundsSelector.cjs +15 -7
  230. package/dist/components/overlays/SoundsSelector.d.ts.map +1 -1
  231. package/dist/components/overlays/SoundsSelector.js +15 -7
  232. package/dist/components/overlays/StreamSelector.cjs +5 -4
  233. package/dist/components/overlays/StreamSelector.d.ts.map +1 -1
  234. package/dist/components/overlays/StreamSelector.js +5 -4
  235. package/dist/components/overlays/ToolBrowser.cjs +73 -56
  236. package/dist/components/overlays/ToolBrowser.d.ts.map +1 -1
  237. package/dist/components/overlays/ToolBrowser.js +73 -56
  238. package/dist/components/overlays/custom-model-wizard/LocalModelWizard.cjs +103 -69
  239. package/dist/components/overlays/custom-model-wizard/LocalModelWizard.d.ts.map +1 -1
  240. package/dist/components/overlays/custom-model-wizard/LocalModelWizard.js +103 -69
  241. package/dist/components/overlays/custom-model-wizard/provider-config.cjs +4 -4
  242. package/dist/components/overlays/custom-model-wizard/provider-config.js +4 -4
  243. package/dist/components/overlays/custom-model-wizard/shared/ApiKeyStep.cjs +3 -2
  244. package/dist/components/overlays/custom-model-wizard/shared/ApiKeyStep.d.ts.map +1 -1
  245. package/dist/components/overlays/custom-model-wizard/shared/ApiKeyStep.js +3 -2
  246. package/dist/components/overlays/custom-model-wizard/shared/ProviderSelector.cjs +5 -4
  247. package/dist/components/overlays/custom-model-wizard/shared/ProviderSelector.d.ts.map +1 -1
  248. package/dist/components/overlays/custom-model-wizard/shared/ProviderSelector.js +5 -4
  249. package/dist/components/overlays/custom-model-wizard/shared/SetupInfoBanner.cjs +4 -3
  250. package/dist/components/overlays/custom-model-wizard/shared/SetupInfoBanner.d.ts.map +1 -1
  251. package/dist/components/overlays/custom-model-wizard/shared/SetupInfoBanner.js +4 -3
  252. package/dist/components/overlays/custom-model-wizard/shared/WizardStepInput.cjs +7 -6
  253. package/dist/components/overlays/custom-model-wizard/shared/WizardStepInput.d.ts.map +1 -1
  254. package/dist/components/overlays/custom-model-wizard/shared/WizardStepInput.js +7 -6
  255. package/dist/components/renderers/DiffRenderer.cjs +5 -4
  256. package/dist/components/renderers/DiffRenderer.d.ts.map +1 -1
  257. package/dist/components/renderers/DiffRenderer.js +5 -4
  258. package/dist/components/renderers/FilePreviewRenderer.cjs +23 -13
  259. package/dist/components/renderers/FilePreviewRenderer.d.ts.map +1 -1
  260. package/dist/components/renderers/FilePreviewRenderer.js +23 -13
  261. package/dist/components/renderers/FileRenderer.cjs +9 -8
  262. package/dist/components/renderers/FileRenderer.d.ts.map +1 -1
  263. package/dist/components/renderers/FileRenderer.js +9 -8
  264. package/dist/components/renderers/GenericRenderer.cjs +5 -4
  265. package/dist/components/renderers/GenericRenderer.d.ts.map +1 -1
  266. package/dist/components/renderers/GenericRenderer.js +5 -4
  267. package/dist/components/renderers/SearchRenderer.cjs +4 -3
  268. package/dist/components/renderers/SearchRenderer.d.ts.map +1 -1
  269. package/dist/components/renderers/SearchRenderer.js +4 -3
  270. package/dist/components/renderers/ShellRenderer.cjs +6 -5
  271. package/dist/components/renderers/ShellRenderer.d.ts.map +1 -1
  272. package/dist/components/renderers/ShellRenderer.js +6 -5
  273. package/dist/components/renderers/SignalDiff.cjs +139 -0
  274. package/dist/components/renderers/SignalDiff.d.ts +21 -0
  275. package/dist/components/renderers/SignalDiff.d.ts.map +1 -0
  276. package/dist/components/renderers/SignalDiff.js +106 -0
  277. package/dist/components/renderers/SignalDiff.test.cjs +78 -0
  278. package/dist/components/renderers/SignalDiff.test.d.ts +2 -0
  279. package/dist/components/renderers/SignalDiff.test.d.ts.map +1 -0
  280. package/dist/components/renderers/SignalDiff.test.js +77 -0
  281. package/dist/components/renderers/diff-shared.cjs +13 -7
  282. package/dist/components/renderers/diff-shared.d.ts +5 -0
  283. package/dist/components/renderers/diff-shared.d.ts.map +1 -1
  284. package/dist/components/renderers/diff-shared.js +12 -7
  285. package/dist/components/shared/FocusOverlayFrame.cjs +3 -2
  286. package/dist/components/shared/FocusOverlayFrame.d.ts.map +1 -1
  287. package/dist/components/shared/FocusOverlayFrame.js +3 -2
  288. package/dist/components/shared/HintBar.cjs +2 -1
  289. package/dist/components/shared/HintBar.d.ts.map +1 -1
  290. package/dist/components/shared/HintBar.js +2 -1
  291. package/dist/components/shared/MarkdownText.cjs +36 -53
  292. package/dist/components/shared/MarkdownText.d.ts +2 -0
  293. package/dist/components/shared/MarkdownText.d.ts.map +1 -1
  294. package/dist/components/shared/MarkdownText.js +36 -54
  295. package/dist/components/shared/VirtualizedList.cjs +2 -1
  296. package/dist/components/shared/VirtualizedList.d.ts.map +1 -1
  297. package/dist/components/shared/VirtualizedList.js +2 -1
  298. package/dist/containers/OverlayContainer.cjs +32 -44
  299. package/dist/containers/OverlayContainer.d.ts.map +1 -1
  300. package/dist/containers/OverlayContainer.js +32 -44
  301. package/dist/contexts/KeypressContext.cjs +7 -1
  302. package/dist/contexts/KeypressContext.d.ts.map +1 -1
  303. package/dist/contexts/KeypressContext.js +7 -1
  304. package/dist/contexts/KeypressContext.test.cjs +82 -0
  305. package/dist/contexts/KeypressContext.test.d.ts +2 -0
  306. package/dist/contexts/KeypressContext.test.d.ts.map +1 -0
  307. package/dist/contexts/KeypressContext.test.js +81 -0
  308. package/dist/hooks/useAgentEvents.cjs +1 -74
  309. package/dist/hooks/useAgentEvents.d.ts.map +1 -1
  310. package/dist/hooks/useAgentEvents.js +1 -74
  311. package/dist/hooks/useCLIState.cjs +0 -3
  312. package/dist/hooks/useCLIState.d.ts.map +1 -1
  313. package/dist/hooks/useCLIState.js +0 -3
  314. package/dist/hooks/useContextStats.cjs +91 -0
  315. package/dist/hooks/useContextStats.d.ts +13 -0
  316. package/dist/hooks/useContextStats.d.ts.map +1 -0
  317. package/dist/hooks/useContextStats.js +67 -0
  318. package/dist/hooks/useDeckState.cjs +140 -0
  319. package/dist/hooks/useDeckState.d.ts +20 -0
  320. package/dist/hooks/useDeckState.d.ts.map +1 -0
  321. package/dist/hooks/useDeckState.js +123 -0
  322. package/dist/hooks/useDextoCredits.cjs +81 -0
  323. package/dist/hooks/useDextoCredits.d.ts +14 -0
  324. package/dist/hooks/useDextoCredits.d.ts.map +1 -0
  325. package/dist/hooks/useDextoCredits.js +56 -0
  326. package/dist/hooks/useDextoCredits.test.cjs +73 -0
  327. package/dist/hooks/useDextoCredits.test.d.ts +2 -0
  328. package/dist/hooks/useDextoCredits.test.d.ts.map +1 -0
  329. package/dist/hooks/useDextoCredits.test.js +72 -0
  330. package/dist/hooks/useElapsedTime.cjs +13 -24
  331. package/dist/hooks/useElapsedTime.d.ts +3 -1
  332. package/dist/hooks/useElapsedTime.d.ts.map +1 -1
  333. package/dist/hooks/useElapsedTime.js +13 -24
  334. package/dist/hooks/useElapsedTime.test.cjs +35 -0
  335. package/dist/hooks/useElapsedTime.test.d.ts +2 -0
  336. package/dist/hooks/useElapsedTime.test.d.ts.map +1 -0
  337. package/dist/hooks/useElapsedTime.test.js +34 -0
  338. package/dist/hooks/useGitDirtyFiles.cjs +59 -0
  339. package/dist/hooks/useGitDirtyFiles.d.ts +5 -0
  340. package/dist/hooks/useGitDirtyFiles.d.ts.map +1 -0
  341. package/dist/hooks/useGitDirtyFiles.js +34 -0
  342. package/dist/hooks/useGitDirtyFiles.test.cjs +9 -0
  343. package/dist/hooks/useGitDirtyFiles.test.d.ts +2 -0
  344. package/dist/hooks/useGitDirtyFiles.test.d.ts.map +1 -0
  345. package/dist/hooks/useGitDirtyFiles.test.js +8 -0
  346. package/dist/hooks/useHeldValue.cjs +33 -0
  347. package/dist/hooks/useHeldValue.d.ts +3 -0
  348. package/dist/hooks/useHeldValue.d.ts.map +1 -0
  349. package/dist/hooks/useHeldValue.js +9 -0
  350. package/dist/hooks/useHeldValue.test.cjs +31 -0
  351. package/dist/hooks/useHeldValue.test.d.ts +2 -0
  352. package/dist/hooks/useHeldValue.test.d.ts.map +1 -0
  353. package/dist/hooks/useHeldValue.test.js +30 -0
  354. package/dist/hooks/useInputOrchestrator.cjs +22 -30
  355. package/dist/hooks/useInputOrchestrator.d.ts +2 -0
  356. package/dist/hooks/useInputOrchestrator.d.ts.map +1 -1
  357. package/dist/hooks/useInputOrchestrator.js +21 -30
  358. package/dist/hooks/useInputOrchestrator.test.cjs +24 -0
  359. package/dist/hooks/useInputOrchestrator.test.d.ts +2 -0
  360. package/dist/hooks/useInputOrchestrator.test.d.ts.map +1 -0
  361. package/dist/hooks/useInputOrchestrator.test.js +23 -0
  362. package/dist/host/index.cjs +22 -49
  363. package/dist/host/index.d.ts +18 -72
  364. package/dist/host/index.d.ts.map +1 -1
  365. package/dist/host/index.js +18 -42
  366. package/dist/host/index.test.cjs +21 -35
  367. package/dist/host/index.test.js +22 -40
  368. package/dist/index.d.cts +13 -52
  369. package/dist/interactive-commands/command-parser.cjs +13 -21
  370. package/dist/interactive-commands/command-parser.d.ts.map +1 -1
  371. package/dist/interactive-commands/command-parser.js +13 -11
  372. package/dist/interactive-commands/general-commands.cjs +8 -7
  373. package/dist/interactive-commands/general-commands.d.ts.map +1 -1
  374. package/dist/interactive-commands/general-commands.js +8 -7
  375. package/dist/services/processStream.cjs +33 -21
  376. package/dist/services/processStream.d.ts.map +1 -1
  377. package/dist/services/processStream.js +34 -22
  378. package/dist/services/processStream.test.cjs +52 -4
  379. package/dist/services/processStream.test.js +52 -4
  380. package/dist/signal/background.cjs +154 -0
  381. package/dist/signal/background.d.ts +43 -0
  382. package/dist/signal/background.d.ts.map +1 -0
  383. package/dist/signal/background.js +124 -0
  384. package/dist/signal/background.test.cjs +186 -0
  385. package/dist/signal/background.test.d.ts +2 -0
  386. package/dist/signal/background.test.d.ts.map +1 -0
  387. package/dist/signal/background.test.js +192 -0
  388. package/dist/signal/caps.cjs +100 -0
  389. package/dist/signal/caps.d.ts +23 -0
  390. package/dist/signal/caps.d.ts.map +1 -0
  391. package/dist/signal/caps.js +73 -0
  392. package/dist/signal/caps.test.cjs +56 -0
  393. package/dist/signal/caps.test.d.ts +2 -0
  394. package/dist/signal/caps.test.d.ts.map +1 -0
  395. package/dist/signal/caps.test.js +55 -0
  396. package/dist/signal/components.cjs +257 -0
  397. package/dist/signal/components.d.ts +120 -0
  398. package/dist/signal/components.d.ts.map +1 -0
  399. package/dist/signal/components.js +226 -0
  400. package/dist/signal/components.test.cjs +156 -0
  401. package/dist/signal/components.test.d.ts +2 -0
  402. package/dist/signal/components.test.d.ts.map +1 -0
  403. package/dist/signal/components.test.js +133 -0
  404. package/dist/signal/cut.cjs +103 -0
  405. package/dist/signal/cut.d.ts +11 -0
  406. package/dist/signal/cut.d.ts.map +1 -0
  407. package/dist/signal/cut.js +77 -0
  408. package/dist/signal/cut.test.cjs +20 -0
  409. package/dist/signal/cut.test.d.ts +2 -0
  410. package/dist/signal/cut.test.d.ts.map +1 -0
  411. package/dist/signal/cut.test.js +19 -0
  412. package/dist/signal/deck-layout.cjs +57 -0
  413. package/dist/signal/deck-layout.d.ts +29 -0
  414. package/dist/signal/deck-layout.d.ts.map +1 -0
  415. package/dist/signal/deck-layout.js +30 -0
  416. package/dist/signal/deck-parts.cjs +243 -0
  417. package/dist/signal/deck-parts.d.ts +55 -0
  418. package/dist/signal/deck-parts.d.ts.map +1 -0
  419. package/dist/signal/deck-parts.js +205 -0
  420. package/dist/signal/deck.test.cjs +311 -0
  421. package/dist/signal/deck.test.d.ts +2 -0
  422. package/dist/signal/deck.test.d.ts.map +1 -0
  423. package/dist/signal/deck.test.js +288 -0
  424. package/dist/signal/glyphs.cjs +195 -0
  425. package/dist/signal/glyphs.d.ts +8 -0
  426. package/dist/signal/glyphs.d.ts.map +1 -0
  427. package/dist/signal/glyphs.js +171 -0
  428. package/dist/signal/glyphs.test.cjs +17 -0
  429. package/dist/signal/glyphs.test.d.ts +2 -0
  430. package/dist/signal/glyphs.test.d.ts.map +1 -0
  431. package/dist/signal/glyphs.test.js +16 -0
  432. package/dist/signal/harness.cjs +103 -0
  433. package/dist/signal/harness.d.ts +70 -0
  434. package/dist/signal/harness.d.ts.map +1 -0
  435. package/dist/signal/harness.js +67 -0
  436. package/dist/signal/harness.test.cjs +84 -0
  437. package/dist/signal/harness.test.d.ts +2 -0
  438. package/dist/signal/harness.test.d.ts.map +1 -0
  439. package/dist/signal/harness.test.js +61 -0
  440. package/dist/signal/index.cjs +76 -0
  441. package/dist/signal/index.d.ts +8 -0
  442. package/dist/signal/index.d.ts.map +1 -0
  443. package/dist/signal/index.js +45 -0
  444. package/dist/signal/kit.snapshot.test.cjs +56 -0
  445. package/dist/signal/kit.snapshot.test.d.ts +2 -0
  446. package/dist/signal/kit.snapshot.test.d.ts.map +1 -0
  447. package/dist/signal/kit.snapshot.test.js +55 -0
  448. package/dist/signal/no-raw-colours.test.cjs +32 -0
  449. package/dist/signal/no-raw-colours.test.d.ts +2 -0
  450. package/dist/signal/no-raw-colours.test.d.ts.map +1 -0
  451. package/dist/signal/no-raw-colours.test.js +30 -0
  452. package/dist/signal/paint.cjs +76 -0
  453. package/dist/signal/paint.d.ts +15 -0
  454. package/dist/signal/paint.d.ts.map +1 -0
  455. package/dist/signal/paint.js +41 -0
  456. package/dist/signal/paint.test.cjs +98 -0
  457. package/dist/signal/paint.test.d.ts +2 -0
  458. package/dist/signal/paint.test.d.ts.map +1 -0
  459. package/dist/signal/paint.test.js +75 -0
  460. package/dist/signal/tone.cjs +109 -0
  461. package/dist/signal/tone.d.ts +17 -0
  462. package/dist/signal/tone.d.ts.map +1 -0
  463. package/dist/signal/tone.js +83 -0
  464. package/dist/signal/tone.test.cjs +70 -0
  465. package/dist/signal/tone.test.d.ts +2 -0
  466. package/dist/signal/tone.test.d.ts.map +1 -0
  467. package/dist/signal/tone.test.js +69 -0
  468. package/dist/signal/trace.cjs +142 -0
  469. package/dist/signal/trace.d.ts +41 -0
  470. package/dist/signal/trace.d.ts.map +1 -0
  471. package/dist/signal/trace.js +113 -0
  472. package/dist/signal/trace.test.cjs +50 -0
  473. package/dist/signal/trace.test.d.ts +2 -0
  474. package/dist/signal/trace.test.d.ts.map +1 -0
  475. package/dist/signal/trace.test.js +49 -0
  476. package/dist/signal/use-trace.cjs +73 -0
  477. package/dist/signal/use-trace.d.ts +5 -0
  478. package/dist/signal/use-trace.d.ts.map +1 -0
  479. package/dist/signal/use-trace.js +48 -0
  480. package/dist/signal/wordmark-art.generated.cjs +375 -0
  481. package/dist/signal/wordmark-art.generated.d.ts +3 -0
  482. package/dist/signal/wordmark-art.generated.d.ts.map +1 -0
  483. package/dist/signal/wordmark-art.generated.js +351 -0
  484. package/dist/signal/wordmark.cjs +60 -0
  485. package/dist/signal/wordmark.d.ts +23 -0
  486. package/dist/signal/wordmark.d.ts.map +1 -0
  487. package/dist/signal/wordmark.js +34 -0
  488. package/dist/signal/wordmark.test.cjs +71 -0
  489. package/dist/signal/wordmark.test.d.ts +2 -0
  490. package/dist/signal/wordmark.test.d.ts.map +1 -0
  491. package/dist/signal/wordmark.test.js +70 -0
  492. package/dist/state/initialState.cjs +0 -3
  493. package/dist/state/initialState.d.ts.map +1 -1
  494. package/dist/state/initialState.js +0 -3
  495. package/dist/state/types.d.ts +13 -7
  496. package/dist/state/types.d.ts.map +1 -1
  497. package/dist/utils/approval-response.cjs +45 -0
  498. package/dist/utils/approval-response.d.ts +14 -0
  499. package/dist/utils/approval-response.d.ts.map +1 -0
  500. package/dist/utils/approval-response.js +21 -0
  501. package/dist/utils/approval-response.test.cjs +49 -0
  502. package/dist/utils/approval-response.test.d.ts +2 -0
  503. package/dist/utils/approval-response.test.d.ts.map +1 -0
  504. package/dist/utils/approval-response.test.js +55 -0
  505. package/dist/utils/approvalScope.cjs +12 -0
  506. package/dist/utils/approvalScope.d.ts.map +1 -1
  507. package/dist/utils/approvalScope.js +12 -0
  508. package/dist/utils/approvalScope.test.cjs +23 -0
  509. package/dist/utils/approvalScope.test.d.ts +2 -0
  510. package/dist/utils/approvalScope.test.d.ts.map +1 -0
  511. package/dist/utils/approvalScope.test.js +22 -0
  512. package/dist/utils/background-failure.cjs +51 -0
  513. package/dist/utils/background-failure.d.ts +12 -0
  514. package/dist/utils/background-failure.d.ts.map +1 -0
  515. package/dist/utils/background-failure.js +26 -0
  516. package/dist/utils/chatgpt-rate-limit.cjs +10 -0
  517. package/dist/utils/chatgpt-rate-limit.d.ts +9 -0
  518. package/dist/utils/chatgpt-rate-limit.d.ts.map +1 -1
  519. package/dist/utils/chatgpt-rate-limit.js +9 -0
  520. package/dist/utils/chatgpt-rate-limit.test.cjs +10 -0
  521. package/dist/utils/chatgpt-rate-limit.test.js +11 -0
  522. package/dist/utils/deck-state.cjs +107 -0
  523. package/dist/utils/deck-state.d.ts +79 -0
  524. package/dist/utils/deck-state.d.ts.map +1 -0
  525. package/dist/utils/deck-state.js +76 -0
  526. package/dist/utils/deck-state.test.cjs +208 -0
  527. package/dist/utils/deck-state.test.d.ts +2 -0
  528. package/dist/utils/deck-state.test.d.ts.map +1 -0
  529. package/dist/utils/deck-state.test.js +216 -0
  530. package/dist/utils/fault-block.cjs +37 -0
  531. package/dist/utils/fault-block.d.ts +13 -0
  532. package/dist/utils/fault-block.d.ts.map +1 -0
  533. package/dist/utils/fault-block.js +13 -0
  534. package/dist/utils/fault-block.test.cjs +23 -0
  535. package/dist/utils/fault-block.test.d.ts +2 -0
  536. package/dist/utils/fault-block.test.d.ts.map +1 -0
  537. package/dist/utils/fault-block.test.js +22 -0
  538. package/dist/utils/llm-provider-display.cjs +1 -1
  539. package/dist/utils/llm-provider-display.js +1 -1
  540. package/dist/utils/messageFormatting.cjs +26 -23
  541. package/dist/utils/messageFormatting.d.ts +5 -2
  542. package/dist/utils/messageFormatting.d.ts.map +1 -1
  543. package/dist/utils/messageFormatting.js +25 -21
  544. package/dist/utils/messageFormatting.test.cjs +34 -0
  545. package/dist/utils/messageFormatting.test.js +35 -1
  546. package/dist/utils/reasoning-variant.cjs +35 -0
  547. package/dist/utils/reasoning-variant.d.ts +13 -0
  548. package/dist/utils/reasoning-variant.d.ts.map +1 -0
  549. package/dist/utils/reasoning-variant.js +11 -0
  550. package/dist/utils/resize-reflow.cjs +119 -0
  551. package/dist/utils/resize-reflow.d.ts +18 -0
  552. package/dist/utils/resize-reflow.d.ts.map +1 -0
  553. package/dist/utils/resize-reflow.js +83 -0
  554. package/dist/utils/resize-reflow.test.cjs +100 -0
  555. package/dist/utils/resize-reflow.test.d.ts +2 -0
  556. package/dist/utils/resize-reflow.test.d.ts.map +1 -0
  557. package/dist/utils/resize-reflow.test.js +99 -0
  558. package/dist/utils/tool-step.cjs +183 -0
  559. package/dist/utils/tool-step.d.ts +28 -0
  560. package/dist/utils/tool-step.d.ts.map +1 -0
  561. package/dist/utils/tool-step.js +156 -0
  562. package/dist/utils/tool-step.test.cjs +263 -0
  563. package/dist/utils/tool-step.test.d.ts +2 -0
  564. package/dist/utils/tool-step.test.d.ts.map +1 -0
  565. package/dist/utils/tool-step.test.js +262 -0
  566. package/package.json +9 -5
  567. package/dist/components/BackgroundTasksPanel.cjs +0 -117
  568. package/dist/components/BackgroundTasksPanel.d.ts +0 -18
  569. package/dist/components/BackgroundTasksPanel.d.ts.map +0 -1
  570. package/dist/components/BackgroundTasksPanel.js +0 -93
@@ -1,47 +1,33 @@
1
1
  "use strict";
2
2
  var import_vitest = require("vitest");
3
3
  var import_index = require("./index.js");
4
- (0, import_vitest.describe)("TUI auth runtime services", () => {
4
+ (0, import_vitest.describe)("TUI sign-in runtime services", () => {
5
5
  (0, import_vitest.afterEach)(() => {
6
6
  (0, import_index.setTuiRuntimeServices)({});
7
7
  });
8
- (0, import_vitest.it)("uses host-provided API-key device login and persistence services", async () => {
9
- const prompt = import_vitest.vi.fn();
10
- const perform = import_vitest.vi.fn().mockResolvedValue({
11
- dextoApiKey: "dxt_full_key",
12
- dextoKeyDisplay: "dxt_abc...",
13
- dextoKeyId: "key-id"
14
- });
15
- const persist = import_vitest.vi.fn().mockResolvedValue({
16
- keyId: "key-id",
17
- hasDextoApiKey: true
18
- });
8
+ (0, import_vitest.it)("signs in, says who, and signs out through the host", async () => {
9
+ const signal = new AbortController().signal;
10
+ const onNote = import_vitest.vi.fn();
11
+ const hostSignIn = import_vitest.vi.fn().mockResolvedValue("Signed in as ada@example.com in Acme.");
19
12
  (0, import_index.setTuiRuntimeServices)({
20
- performDeviceCodeLogin: perform,
21
- persistDeviceApiKeyLoginResult: persist
22
- });
23
- const loginResult = await (0, import_index.performDeviceCodeLogin)({
24
- onPrompt: prompt
25
- });
26
- const persisted = await (0, import_index.persistDeviceApiKeyLoginResult)(loginResult);
27
- (0, import_vitest.expect)(perform).toHaveBeenCalledWith({ onPrompt: prompt });
28
- (0, import_vitest.expect)(persist).toHaveBeenCalledWith({
29
- dextoApiKey: "dxt_full_key",
30
- dextoKeyDisplay: "dxt_abc...",
31
- dextoKeyId: "key-id"
32
- });
33
- (0, import_vitest.expect)(persisted).toEqual({
34
- keyId: "key-id",
35
- hasDextoApiKey: true
13
+ currentSignIn: async () => "ada@example.com in Acme",
14
+ signIn: hostSignIn,
15
+ signOut: async () => "Logged out."
36
16
  });
17
+ (0, import_vitest.expect)(await (0, import_index.currentSignIn)()).toBe("ada@example.com in Acme");
18
+ (0, import_vitest.expect)(await (0, import_index.signIn)({ signal, onNote })).toBe("Signed in as ada@example.com in Acme.");
19
+ (0, import_vitest.expect)(hostSignIn).toHaveBeenCalledWith({ signal, onNote });
20
+ (0, import_vitest.expect)(await (0, import_index.signOut)()).toBe("Logged out.");
37
21
  });
38
- (0, import_vitest.it)("fails fast when API-key device login persistence is not provided by the host", async () => {
22
+ (0, import_vitest.it)("fails fast when the host provides no sign-in", async () => {
23
+ await (0, import_vitest.expect)((0, import_index.currentSignIn)()).rejects.toThrow(
24
+ "TUI runtime services missing required method: currentSignIn"
25
+ );
39
26
  await (0, import_vitest.expect)(
40
- (0, import_index.persistDeviceApiKeyLoginResult)({
41
- dextoApiKey: "dxt_full_key",
42
- dextoKeyDisplay: "dxt_abc...",
43
- dextoKeyId: "key-id"
44
- })
45
- ).rejects.toThrow("TUI runtime services missing required method");
27
+ (0, import_index.signIn)({ signal: new AbortController().signal, onNote: () => void 0 })
28
+ ).rejects.toThrow("TUI runtime services missing required method: signIn");
29
+ await (0, import_vitest.expect)((0, import_index.signOut)()).rejects.toThrow(
30
+ "TUI runtime services missing required method: signOut"
31
+ );
46
32
  });
47
33
  });
@@ -1,50 +1,32 @@
1
1
  import { afterEach, describe, expect, it, vi } from "vitest";
2
- import {
3
- performDeviceCodeLogin,
4
- persistDeviceApiKeyLoginResult,
5
- setTuiRuntimeServices
6
- } from "./index.js";
7
- describe("TUI auth runtime services", () => {
2
+ import { currentSignIn, setTuiRuntimeServices, signIn, signOut } from "./index.js";
3
+ describe("TUI sign-in runtime services", () => {
8
4
  afterEach(() => {
9
5
  setTuiRuntimeServices({});
10
6
  });
11
- it("uses host-provided API-key device login and persistence services", async () => {
12
- const prompt = vi.fn();
13
- const perform = vi.fn().mockResolvedValue({
14
- dextoApiKey: "dxt_full_key",
15
- dextoKeyDisplay: "dxt_abc...",
16
- dextoKeyId: "key-id"
17
- });
18
- const persist = vi.fn().mockResolvedValue({
19
- keyId: "key-id",
20
- hasDextoApiKey: true
21
- });
7
+ it("signs in, says who, and signs out through the host", async () => {
8
+ const signal = new AbortController().signal;
9
+ const onNote = vi.fn();
10
+ const hostSignIn = vi.fn().mockResolvedValue("Signed in as ada@example.com in Acme.");
22
11
  setTuiRuntimeServices({
23
- performDeviceCodeLogin: perform,
24
- persistDeviceApiKeyLoginResult: persist
25
- });
26
- const loginResult = await performDeviceCodeLogin({
27
- onPrompt: prompt
28
- });
29
- const persisted = await persistDeviceApiKeyLoginResult(loginResult);
30
- expect(perform).toHaveBeenCalledWith({ onPrompt: prompt });
31
- expect(persist).toHaveBeenCalledWith({
32
- dextoApiKey: "dxt_full_key",
33
- dextoKeyDisplay: "dxt_abc...",
34
- dextoKeyId: "key-id"
35
- });
36
- expect(persisted).toEqual({
37
- keyId: "key-id",
38
- hasDextoApiKey: true
12
+ currentSignIn: async () => "ada@example.com in Acme",
13
+ signIn: hostSignIn,
14
+ signOut: async () => "Logged out."
39
15
  });
16
+ expect(await currentSignIn()).toBe("ada@example.com in Acme");
17
+ expect(await signIn({ signal, onNote })).toBe("Signed in as ada@example.com in Acme.");
18
+ expect(hostSignIn).toHaveBeenCalledWith({ signal, onNote });
19
+ expect(await signOut()).toBe("Logged out.");
40
20
  });
41
- it("fails fast when API-key device login persistence is not provided by the host", async () => {
21
+ it("fails fast when the host provides no sign-in", async () => {
22
+ await expect(currentSignIn()).rejects.toThrow(
23
+ "TUI runtime services missing required method: currentSignIn"
24
+ );
42
25
  await expect(
43
- persistDeviceApiKeyLoginResult({
44
- dextoApiKey: "dxt_full_key",
45
- dextoKeyDisplay: "dxt_abc...",
46
- dextoKeyId: "key-id"
47
- })
48
- ).rejects.toThrow("TUI runtime services missing required method");
26
+ signIn({ signal: new AbortController().signal, onNote: () => void 0 })
27
+ ).rejects.toThrow("TUI runtime services missing required method: signIn");
28
+ await expect(signOut()).rejects.toThrow(
29
+ "TUI runtime services missing required method: signOut"
30
+ );
49
31
  });
50
32
  });
package/dist/index.d.cts CHANGED
@@ -362,38 +362,11 @@ declare function startInkCliRefactored(agent: TuiAgentBackend, initialSessionId:
362
362
  interface TuiShutdownHandle {
363
363
  stop?: (() => Promise<void>) | undefined;
364
364
  }
365
- interface TuiAuthConfig {
366
- token?: string | undefined;
367
- refreshToken?: string | undefined;
368
- userId?: string | undefined;
369
- email?: string | undefined;
370
- expiresAt?: number | undefined;
371
- createdAt: number;
372
- dextoApiKey?: string | undefined;
373
- dextoKeyId?: string | undefined;
374
- dextoApiKeySource?: 'provisioned' | 'user-supplied' | undefined;
375
- }
376
- interface TuiDeviceApiKeyLoginResult {
377
- dextoApiKey: string;
378
- dextoKeyId: string;
379
- dextoKeyDisplay: string;
380
- }
381
- interface TuiDeviceLoginPrompt {
382
- userCode: string;
383
- verificationUrl: string;
384
- verificationUrlComplete: string | null;
385
- expiresIn: number;
386
- }
387
- type TuiDextoApiKeyProvisionStatusLevel = 'info' | 'success' | 'warning' | 'error';
388
- interface TuiDextoApiKeyProvisionStatus {
389
- level: TuiDextoApiKeyProvisionStatusLevel;
390
- message: string;
391
- }
392
- interface TuiPersistedLoginResult {
393
- email?: string | undefined;
394
- userId?: string | undefined;
395
- keyId?: string | undefined;
396
- hasDextoApiKey: boolean;
365
+ interface TuiSignInOptions {
366
+ /** Aborts the sign-in, such as when the person presses Esc. */
367
+ signal: AbortSignal;
368
+ /** What to show while signing in: the link, or the code to check. */
369
+ onNote: (text: string) => void;
397
370
  }
398
371
  interface TuiRuntimeServices {
399
372
  registerGracefulShutdown?: (getAgent: () => TuiShutdownHandle, options: {
@@ -408,26 +381,14 @@ interface TuiRuntimeServices {
408
381
  content: string;
409
382
  url?: string | undefined;
410
383
  } | null;
411
- performDeviceCodeLogin?: (options?: {
412
- signal?: AbortSignal | undefined;
413
- onPrompt?: ((prompt: TuiDeviceLoginPrompt) => void) | undefined;
414
- }) => Promise<TuiDeviceApiKeyLoginResult>;
415
- persistDeviceApiKeyLoginResult?: (result: TuiDeviceApiKeyLoginResult) => Promise<TuiPersistedLoginResult>;
416
- ensureDextoApiKeyForAuthToken?: (authToken: string, options?: {
417
- onStatus?: ((status: TuiDextoApiKeyProvisionStatus) => void) | undefined;
418
- }) => Promise<{
419
- dextoApiKey: string;
420
- keyId: string | null;
421
- } | null>;
422
- loadAuth?: () => Promise<TuiAuthConfig | null>;
423
- storeAuth?: (config: TuiAuthConfig) => Promise<void>;
424
- removeAuth?: () => Promise<void>;
425
- removeDextoApiKeyFromEnv?: (options?: {
426
- expectedValue?: string;
427
- }) => Promise<{
428
- removed: boolean;
429
- targetEnvPath: string;
430
- }>;
384
+ /** Who the current profile acts as, in a few words, or null when signed out. */
385
+ currentSignIn?: () => Promise<string | null>;
386
+ /** Signs the current profile in to Dexto, resolving with what to say once signed in. */
387
+ signIn?: (options: TuiSignInOptions) => Promise<string>;
388
+ /** Ends the current profile's sign-in, resolving with what to say. */
389
+ signOut?: () => Promise<string>;
390
+ /** The organization's Dexto credit balance in USD; null when signed out. */
391
+ dextoCreditBalance?: () => Promise<number | null>;
431
392
  isUsingDextoCredits?: () => Promise<boolean>;
432
393
  canUseDextoProvider?: () => Promise<boolean>;
433
394
  buildDextoBillingUrl?: (options: {
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
@@ -17,14 +15,6 @@ var __copyProps = (to, from, except, desc) => {
17
15
  }
18
16
  return to;
19
17
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
19
  var command_parser_exports = {};
30
20
  __export(command_parser_exports, {
@@ -35,7 +25,7 @@ __export(command_parser_exports, {
35
25
  parseInput: () => parseInput
36
26
  });
37
27
  module.exports = __toCommonJS(command_parser_exports);
38
- var import_chalk = __toESM(require("chalk"), 1);
28
+ var import_signal = require("../signal/index.js");
39
29
  const overlayOnlyHandler = async () => true;
40
30
  function parseQuotedArguments(input) {
41
31
  const args = [];
@@ -114,23 +104,23 @@ function getCommandSuggestions(partial, commands) {
114
104
  return suggestions.sort();
115
105
  }
116
106
  function formatCommandHelp(cmd, detailed = false) {
117
- let help = import_chalk.default.cyan(`/${cmd.name}`) + " - " + cmd.description;
107
+ let help = (0, import_signal.paint)("teal")(`/${cmd.name}`) + " - " + cmd.description;
118
108
  if (detailed) {
119
- help += "\n" + import_chalk.default.gray(`Usage: ${cmd.usage}`);
109
+ help += "\n" + (0, import_signal.paint)("dim")(`Usage: ${cmd.usage}`);
120
110
  if (cmd.aliases && cmd.aliases.length > 0) {
121
- help += "\n" + import_chalk.default.gray(`Aliases: ${cmd.aliases.map((a) => `/${a}`).join(", ")}`);
111
+ help += "\n" + (0, import_signal.paint)("dim")(`Aliases: ${cmd.aliases.map((a) => `/${a}`).join(", ")}`);
122
112
  }
123
113
  if (cmd.subcommands && cmd.subcommands.length > 0) {
124
- help += "\n" + import_chalk.default.gray("Subcommands:");
114
+ help += "\n" + (0, import_signal.paint)("dim")("Subcommands:");
125
115
  for (const sub of cmd.subcommands) {
126
- help += "\n " + import_chalk.default.cyan(`/${cmd.name} ${sub.name}`) + " - " + sub.description;
116
+ help += "\n " + (0, import_signal.paint)("teal")(`/${cmd.name} ${sub.name}`) + " - " + sub.description;
127
117
  }
128
118
  }
129
119
  }
130
120
  return help;
131
121
  }
132
122
  function displayAllCommands(commands) {
133
- console.log(import_chalk.default.bold.green("\n\u{1F4CB} Available Commands:\n"));
123
+ console.log((0, import_signal.paint)("add").bold("\n\u{1F4CB} Available Commands:\n"));
134
124
  const categoryOrder = [
135
125
  "General",
136
126
  "Session Management",
@@ -156,7 +146,7 @@ function displayAllCommands(commands) {
156
146
  for (const category of categoryOrder) {
157
147
  const cmds = categories[category];
158
148
  if (cmds && cmds.length > 0) {
159
- console.log(import_chalk.default.bold.rgb(255, 165, 0)(`${category}:`));
149
+ console.log((0, import_signal.paint)("amber").bold(`${category}:`));
160
150
  for (const cmd of cmds) {
161
151
  console.log(" " + formatCommandHelp(cmd));
162
152
  }
@@ -165,15 +155,17 @@ function displayAllCommands(commands) {
165
155
  }
166
156
  for (const [category, cmds] of Object.entries(categories)) {
167
157
  if (!categoryOrder.includes(category) && cmds.length > 0) {
168
- console.log(import_chalk.default.bold.rgb(255, 165, 0)(`${category}:`));
158
+ console.log((0, import_signal.paint)("amber").bold(`${category}:`));
169
159
  for (const cmd of cmds) {
170
160
  console.log(" " + formatCommandHelp(cmd));
171
161
  }
172
162
  console.log();
173
163
  }
174
164
  }
175
- console.log(import_chalk.default.gray("\u{1F4A1} Tip: Use /help <command> for detailed help on any command"));
176
- console.log(import_chalk.default.gray("\u{1F4A1} Tip: Type your message normally (without /) to chat with the AI\n"));
165
+ console.log((0, import_signal.paint)("dim")("\u{1F4A1} Tip: Use /help <command> for detailed help on any command"));
166
+ console.log(
167
+ (0, import_signal.paint)("dim")("\u{1F4A1} Tip: Type your message normally (without /) to chat with the AI\n")
168
+ );
177
169
  }
178
170
  // Annotate the CommonJS export names for ESM import in node:
179
171
  0 && (module.exports = {
@@ -1 +1 @@
1
- {"version":3,"file":"command-parser.d.ts","sourceRoot":"","sources":["../../src/interactive-commands/command-parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACrF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,MAAM,GAAG,YAAY,GAAG,iBAAiB,CAAC;AAEvF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,uDAAuD;IACvD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,yEAAyE;IACzE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAClC,OAAO,EAAE,CACL,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,cAAc,KAClB,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACtC;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,oBAAoB,CAAS,CAAC;AA4ClF;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAiCvD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,MAAM,EAAE,CAoB9F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,EAAE,QAAQ,GAAE,OAAe,GAAG,MAAM,CAmB3F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAyDtE"}
1
+ {"version":3,"file":"command-parser.d.ts","sourceRoot":"","sources":["../../src/interactive-commands/command-parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACrF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,MAAM,GAAG,YAAY,GAAG,iBAAiB,CAAC;AAEvF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,uDAAuD;IACvD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,yEAAyE;IACzE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAClC,OAAO,EAAE,CACL,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,cAAc,KAClB,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACtC;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,oBAAoB,CAAS,CAAC;AA4ClF;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAiCvD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,MAAM,EAAE,CAoB9F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,EAAE,QAAQ,GAAE,OAAe,GAAG,MAAM,CAoB3F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,IAAI,CA2DtE"}
@@ -1,4 +1,4 @@
1
- import chalk from "chalk";
1
+ import { paint } from "../signal/index.js";
2
2
  const overlayOnlyHandler = async () => true;
3
3
  function parseQuotedArguments(input) {
4
4
  const args = [];
@@ -77,23 +77,23 @@ function getCommandSuggestions(partial, commands) {
77
77
  return suggestions.sort();
78
78
  }
79
79
  function formatCommandHelp(cmd, detailed = false) {
80
- let help = chalk.cyan(`/${cmd.name}`) + " - " + cmd.description;
80
+ let help = paint("teal")(`/${cmd.name}`) + " - " + cmd.description;
81
81
  if (detailed) {
82
- help += "\n" + chalk.gray(`Usage: ${cmd.usage}`);
82
+ help += "\n" + paint("dim")(`Usage: ${cmd.usage}`);
83
83
  if (cmd.aliases && cmd.aliases.length > 0) {
84
- help += "\n" + chalk.gray(`Aliases: ${cmd.aliases.map((a) => `/${a}`).join(", ")}`);
84
+ help += "\n" + paint("dim")(`Aliases: ${cmd.aliases.map((a) => `/${a}`).join(", ")}`);
85
85
  }
86
86
  if (cmd.subcommands && cmd.subcommands.length > 0) {
87
- help += "\n" + chalk.gray("Subcommands:");
87
+ help += "\n" + paint("dim")("Subcommands:");
88
88
  for (const sub of cmd.subcommands) {
89
- help += "\n " + chalk.cyan(`/${cmd.name} ${sub.name}`) + " - " + sub.description;
89
+ help += "\n " + paint("teal")(`/${cmd.name} ${sub.name}`) + " - " + sub.description;
90
90
  }
91
91
  }
92
92
  }
93
93
  return help;
94
94
  }
95
95
  function displayAllCommands(commands) {
96
- console.log(chalk.bold.green("\n\u{1F4CB} Available Commands:\n"));
96
+ console.log(paint("add").bold("\n\u{1F4CB} Available Commands:\n"));
97
97
  const categoryOrder = [
98
98
  "General",
99
99
  "Session Management",
@@ -119,7 +119,7 @@ function displayAllCommands(commands) {
119
119
  for (const category of categoryOrder) {
120
120
  const cmds = categories[category];
121
121
  if (cmds && cmds.length > 0) {
122
- console.log(chalk.bold.rgb(255, 165, 0)(`${category}:`));
122
+ console.log(paint("amber").bold(`${category}:`));
123
123
  for (const cmd of cmds) {
124
124
  console.log(" " + formatCommandHelp(cmd));
125
125
  }
@@ -128,15 +128,17 @@ function displayAllCommands(commands) {
128
128
  }
129
129
  for (const [category, cmds] of Object.entries(categories)) {
130
130
  if (!categoryOrder.includes(category) && cmds.length > 0) {
131
- console.log(chalk.bold.rgb(255, 165, 0)(`${category}:`));
131
+ console.log(paint("amber").bold(`${category}:`));
132
132
  for (const cmd of cmds) {
133
133
  console.log(" " + formatCommandHelp(cmd));
134
134
  }
135
135
  console.log();
136
136
  }
137
137
  }
138
- console.log(chalk.gray("\u{1F4A1} Tip: Use /help <command> for detailed help on any command"));
139
- console.log(chalk.gray("\u{1F4A1} Tip: Type your message normally (without /) to chat with the AI\n"));
138
+ console.log(paint("dim")("\u{1F4A1} Tip: Use /help <command> for detailed help on any command"));
139
+ console.log(
140
+ paint("dim")("\u{1F4A1} Tip: Type your message normally (without /) to chat with the AI\n")
141
+ );
140
142
  }
141
143
  export {
142
144
  displayAllCommands,
@@ -40,6 +40,7 @@ var import_command_output = require("./utils/command-output.js");
40
40
  var import_clipboardUtils = require("../utils/clipboardUtils.js");
41
41
  var import_exit_stats = require("./exit-stats.js");
42
42
  var import_exit_handler = require("./exit-handler.js");
43
+ var import_signal = require("../signal/index.js");
43
44
  function getShellRcFile(shell) {
44
45
  const home = process.env.HOME;
45
46
  if (!home) return null;
@@ -140,13 +141,13 @@ const generalCommands = [
140
141
  lines.push(stdout.trim());
141
142
  }
142
143
  if (stderr.trim()) {
143
- lines.push(import_chalk.default.yellow(stderr.trim()));
144
+ lines.push((0, import_signal.paint)("amberDim")(stderr.trim()));
144
145
  }
145
146
  if (exitCode !== 0) {
146
- lines.push(import_chalk.default.red(`Exit code: ${exitCode}`));
147
+ lines.push((0, import_signal.paint)("red")(`Exit code: ${exitCode}`));
147
148
  }
148
149
  if (lines.length === 0) {
149
- return (0, import_format_output.formatForInkCli)(import_chalk.default.gray("(no output)"));
150
+ return (0, import_format_output.formatForInkCli)((0, import_signal.paint)("dim")("(no output)"));
150
151
  }
151
152
  return (0, import_format_output.formatForInkCli)(lines.join("\n"));
152
153
  }
@@ -299,9 +300,9 @@ const generalCommands = [
299
300
  const filledWidth = Math.round(displayPercent / 100 * barWidth);
300
301
  const emptyWidth = barWidth - filledWidth;
301
302
  const progressBar = "\u2588".repeat(filledWidth) + "\u2591".repeat(emptyWidth);
302
- let usageColor = import_chalk.default.green;
303
- if (stats.usagePercent > 80) usageColor = import_chalk.default.red;
304
- else if (stats.usagePercent > 60) usageColor = import_chalk.default.yellow;
303
+ let usageColor = (0, import_signal.paint)("add");
304
+ if (stats.usagePercent > 80) usageColor = (0, import_signal.paint)("red");
305
+ else if (stats.usagePercent > 60) usageColor = (0, import_signal.paint)("amberDim");
305
306
  const formatTokens = (tokens) => {
306
307
  if (tokens >= 1e3) {
307
308
  return `${(tokens / 1e3).toFixed(1)}k`;
@@ -328,7 +329,7 @@ const generalCommands = [
328
329
  ` ${usageColor(progressBar)} ${stats.usagePercent}%${overflowWarning}`,
329
330
  ` ${import_chalk.default.dim(stats.modelDisplayName)} \xB7 ${tokenDisplay} / ${formatTokens(totalTokenSpace)} tokens`,
330
331
  ``,
331
- ` ${import_chalk.default.cyan("Breakdown:")} ${breakdownLabel}`,
332
+ ` ${(0, import_signal.paint)("teal")("Breakdown:")} ${breakdownLabel}`,
332
333
  ` \u251C\u2500 System prompt: ${formatTokens(breakdown.systemPrompt)} (${pct(breakdown.systemPrompt)})`,
333
334
  ` \u251C\u2500 Tools: ${formatTokens(breakdown.tools.total)} (${pct(breakdown.tools.total)})`,
334
335
  ` \u251C\u2500 Messages: ${formatTokens(breakdown.messages)} (${pct(breakdown.messages)})`,
@@ -1 +1 @@
1
- {"version":3,"file":"general-commands.d.ts","sourceRoot":"","sources":["../../src/interactive-commands/general-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAwC,MAAM,qBAAqB,CAAC;AAOnG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAoG3D;;GAEG;AACH,wBAAgB,iBAAiB,CAC7B,4BAA4B,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,iBAAiB,EAAE,GAC9E,iBAAiB,CAgCnB;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,iBAAiB,EAwe9C,CAAC"}
1
+ {"version":3,"file":"general-commands.d.ts","sourceRoot":"","sources":["../../src/interactive-commands/general-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAwC,MAAM,qBAAqB,CAAC;AAQnG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAoG3D;;GAEG;AACH,wBAAgB,iBAAiB,CAC7B,4BAA4B,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,iBAAiB,EAAE,GAC9E,iBAAiB,CAgCnB;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,iBAAiB,EAwe9C,CAAC"}
@@ -6,6 +6,7 @@ import { CommandOutputHelper } from "./utils/command-output.js";
6
6
  import { writeToClipboard } from "../utils/clipboardUtils.js";
7
7
  import { hasMeaningfulTokenUsage, setExitStats } from "./exit-stats.js";
8
8
  import { triggerExit } from "./exit-handler.js";
9
+ import { paint } from "../signal/index.js";
9
10
  function getShellRcFile(shell) {
10
11
  const home = process.env.HOME;
11
12
  if (!home) return null;
@@ -106,13 +107,13 @@ const generalCommands = [
106
107
  lines.push(stdout.trim());
107
108
  }
108
109
  if (stderr.trim()) {
109
- lines.push(chalk.yellow(stderr.trim()));
110
+ lines.push(paint("amberDim")(stderr.trim()));
110
111
  }
111
112
  if (exitCode !== 0) {
112
- lines.push(chalk.red(`Exit code: ${exitCode}`));
113
+ lines.push(paint("red")(`Exit code: ${exitCode}`));
113
114
  }
114
115
  if (lines.length === 0) {
115
- return formatForInkCli(chalk.gray("(no output)"));
116
+ return formatForInkCli(paint("dim")("(no output)"));
116
117
  }
117
118
  return formatForInkCli(lines.join("\n"));
118
119
  }
@@ -265,9 +266,9 @@ const generalCommands = [
265
266
  const filledWidth = Math.round(displayPercent / 100 * barWidth);
266
267
  const emptyWidth = barWidth - filledWidth;
267
268
  const progressBar = "\u2588".repeat(filledWidth) + "\u2591".repeat(emptyWidth);
268
- let usageColor = chalk.green;
269
- if (stats.usagePercent > 80) usageColor = chalk.red;
270
- else if (stats.usagePercent > 60) usageColor = chalk.yellow;
269
+ let usageColor = paint("add");
270
+ if (stats.usagePercent > 80) usageColor = paint("red");
271
+ else if (stats.usagePercent > 60) usageColor = paint("amberDim");
271
272
  const formatTokens = (tokens) => {
272
273
  if (tokens >= 1e3) {
273
274
  return `${(tokens / 1e3).toFixed(1)}k`;
@@ -294,7 +295,7 @@ const generalCommands = [
294
295
  ` ${usageColor(progressBar)} ${stats.usagePercent}%${overflowWarning}`,
295
296
  ` ${chalk.dim(stats.modelDisplayName)} \xB7 ${tokenDisplay} / ${formatTokens(totalTokenSpace)} tokens`,
296
297
  ``,
297
- ` ${chalk.cyan("Breakdown:")} ${breakdownLabel}`,
298
+ ` ${paint("teal")("Breakdown:")} ${breakdownLabel}`,
298
299
  ` \u251C\u2500 System prompt: ${formatTokens(breakdown.systemPrompt)} (${pct(breakdown.systemPrompt)})`,
299
300
  ` \u251C\u2500 Tools: ${formatTokens(breakdown.tools.total)} (${pct(breakdown.tools.total)})`,
300
301
  ` \u251C\u2500 Messages: ${formatTokens(breakdown.messages)} (${pct(breakdown.messages)})`,
@@ -35,6 +35,7 @@ var import_debugLog = require("../utils/debugLog.js");
35
35
  var import_core = require("@dexto/core");
36
36
  var import_idGenerator = require("../utils/idGenerator.js");
37
37
  var import_streamSplitter = require("../utils/streamSplitter.js");
38
+ var import_tool_step = require("../utils/tool-step.js");
38
39
  var import_messageFormatting = require("../utils/messageFormatting.js");
39
40
  var import_toolUtils = require("../utils/toolUtils.js");
40
41
  var import_host = require("../host/index.js");
@@ -48,6 +49,11 @@ function buildErrorContent(error, prefix) {
48
49
  }
49
50
  return errorContent;
50
51
  }
52
+ function isReportedError(error, reported) {
53
+ if (reported.has(error)) return true;
54
+ if (!(error instanceof Error)) return false;
55
+ return [...reported].some((each) => each instanceof Error && each.message === error.message);
56
+ }
51
57
  function getErrorCode(error) {
52
58
  if (typeof error !== "object" || error === null) {
53
59
  return null;
@@ -81,9 +87,9 @@ function extractInsufficientCreditsBalance(error) {
81
87
  }
82
88
  function buildInsufficientCreditsContent(balance) {
83
89
  if (balance === null) {
84
- return "Out of Dexto Nova credits.\nUse the billing prompt to top up and retry your request.";
90
+ return "Out of Dexto credits.\nUse the billing prompt to top up and retry your request.";
85
91
  }
86
- return `Out of Dexto Nova credits. Current balance: $${balance.toFixed(2)}.
92
+ return `Out of Dexto credits. Current balance: $${balance.toFixed(2)}.
87
93
  Use the billing prompt to top up and retry your request.`;
88
94
  }
89
95
  function hasMeaningfulTokenUsageForAnalytics(tokenUsage, estimatedCost) {
@@ -106,6 +112,7 @@ async function processStream(iterator, setters, options) {
106
112
  } = setters;
107
113
  const useStreaming = options?.useStreaming ?? true;
108
114
  const approvalIdToToolCallId = /* @__PURE__ */ new Map();
115
+ const reportedErrors = /* @__PURE__ */ new Set();
109
116
  const state = {
110
117
  messageId: null,
111
118
  content: "",
@@ -477,9 +484,6 @@ async function processStream(iterator, setters, options) {
477
484
  break;
478
485
  }
479
486
  case "llm:tool-call": {
480
- if ((0, import_messageFormatting.shouldHideTool)(event.toolName)) {
481
- break;
482
- }
483
487
  debug.log("TOOL-CALL: state check", {
484
488
  toolName: event.toolName,
485
489
  hasMessageId: !!state.messageId,
@@ -559,7 +563,7 @@ async function processStream(iterator, setters, options) {
559
563
  }
560
564
  }
561
565
  const toolMessageId = event.callId ? `tool-${event.callId}` : (0, import_idGenerator.generateMessageId)("tool");
562
- const { header: toolContent } = (0, import_messageFormatting.formatToolHeader)({
566
+ const { header: toolContent, argsFormatted: toolArgs } = (0, import_messageFormatting.formatToolHeader)({
563
567
  toolName: event.toolName,
564
568
  args: event.args || {},
565
569
  ...event.presentationSnapshot !== void 0 && {
@@ -577,6 +581,8 @@ ${import_chalk.default.dim(runningDescription)}`;
577
581
  role: "tool",
578
582
  content: finalToolContent,
579
583
  timestamp: /* @__PURE__ */ new Date(),
584
+ toolName: event.toolName,
585
+ toolArgs,
580
586
  toolStatus: "pending"
581
587
  });
582
588
  (0, import_host.captureAnalytics)("dexto_tool_called", {
@@ -587,9 +593,6 @@ ${import_chalk.default.dim(runningDescription)}`;
587
593
  break;
588
594
  }
589
595
  case "llm:tool-result": {
590
- if ((0, import_messageFormatting.shouldHideTool)(event.toolName)) {
591
- break;
592
- }
593
596
  const sanitized = event.sanitized;
594
597
  const toolDisplayData = sanitized?.meta?.display;
595
598
  const toolContent = sanitized?.content;
@@ -628,6 +631,8 @@ ${import_chalk.default.dim(runningDescription)}`;
628
631
  toolResult: resultPreview,
629
632
  toolStatus: "finished",
630
633
  isError: !event.success,
634
+ ...(0, import_tool_step.backgroundFailure)(event.toolName, event.rawResult),
635
+ ...!event.success && event.error !== void 0 && { toolFailureText: event.error },
631
636
  ...toolDisplayData && { toolDisplayData },
632
637
  ...toolContent && { toolContent }
633
638
  });
@@ -654,6 +659,7 @@ ${import_chalk.default.dim(runningDescription)}`;
654
659
  break;
655
660
  }
656
661
  case "llm:error": {
662
+ reportedErrors.add(event.error);
657
663
  const insufficientCredits = getErrorCode(event.error) === import_core.LLMErrorCode.INSUFFICIENT_CREDITS;
658
664
  const insufficientCreditsBalance = insufficientCredits ? extractInsufficientCreditsBalance(event.error) : null;
659
665
  const errorContent = insufficientCredits ? buildInsufficientCreditsContent(insufficientCreditsBalance) : buildErrorContent(event.error, "Error: ");
@@ -663,7 +669,8 @@ ${import_chalk.default.dim(runningDescription)}`;
663
669
  id: (0, import_idGenerator.generateMessageId)("error"),
664
670
  role: "system",
665
671
  content: errorContent,
666
- timestamp: /* @__PURE__ */ new Date()
672
+ timestamp: /* @__PURE__ */ new Date(),
673
+ systemKind: "fault"
667
674
  }
668
675
  ]);
669
676
  if (event.recoverable !== true) {
@@ -853,7 +860,8 @@ ${import_chalk.default.dim(runningDescription)}`;
853
860
  finalizeMessage(`tool-${toolCallId}`, {
854
861
  toolStatus: "finished",
855
862
  toolResult: "Cancelled",
856
- isError: true
863
+ isError: true,
864
+ toolOutcome: event.status === import_core.ApprovalStatus.DENIED ? "denied" : "cancelled"
857
865
  });
858
866
  }
859
867
  }
@@ -945,6 +953,7 @@ ${import_chalk.default.dim(runningDescription)}`;
945
953
  break;
946
954
  }
947
955
  }
956
+ setUi((prev) => prev.isCancelling ? { ...prev, isCancelling: false } : prev);
948
957
  } catch (error) {
949
958
  if (error instanceof Error && error.name === "AbortError") {
950
959
  clearPending();
@@ -956,16 +965,19 @@ ${import_chalk.default.dim(runningDescription)}`;
956
965
  }));
957
966
  } else {
958
967
  clearPending();
959
- const errorContent = buildErrorContent(error, "Stream error: ");
960
- setMessages((prev) => [
961
- ...prev,
962
- {
963
- id: (0, import_idGenerator.generateMessageId)("error"),
964
- role: "system",
965
- content: errorContent,
966
- timestamp: /* @__PURE__ */ new Date()
967
- }
968
- ]);
968
+ if (!isReportedError(error, reportedErrors)) {
969
+ const errorContent = buildErrorContent(error, "Stream error: ");
970
+ setMessages((prev) => [
971
+ ...prev,
972
+ {
973
+ id: (0, import_idGenerator.generateMessageId)("error"),
974
+ role: "system",
975
+ content: errorContent,
976
+ timestamp: /* @__PURE__ */ new Date(),
977
+ systemKind: "fault"
978
+ }
979
+ ]);
980
+ }
969
981
  setUi((prev) => ({
970
982
  ...prev,
971
983
  isProcessing: false,