@dexto/tui 1.15.0-beta.0 → 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 (554) 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 +37 -113
  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 +40 -119
  28. package/dist/components/HistorySearchBar.cjs +6 -5
  29. package/dist/components/HistorySearchBar.d.ts.map +1 -1
  30. package/dist/components/HistorySearchBar.js +6 -5
  31. package/dist/components/MultiLineInput.cjs +6 -5
  32. package/dist/components/MultiLineInput.d.ts.map +1 -1
  33. package/dist/components/MultiLineInput.js +6 -5
  34. package/dist/components/ResourceAutocomplete.cjs +5 -4
  35. package/dist/components/ResourceAutocomplete.d.ts.map +1 -1
  36. package/dist/components/ResourceAutocomplete.js +5 -4
  37. package/dist/components/SignalGates.test.cjs +215 -0
  38. package/dist/components/SignalGates.test.d.ts +2 -0
  39. package/dist/components/SignalGates.test.d.ts.map +1 -0
  40. package/dist/components/SignalGates.test.js +217 -0
  41. package/dist/components/SlashCommandAutocomplete.cjs +4 -3
  42. package/dist/components/SlashCommandAutocomplete.d.ts.map +1 -1
  43. package/dist/components/SlashCommandAutocomplete.js +4 -3
  44. package/dist/components/StatusBar.cjs +13 -30
  45. package/dist/components/StatusBar.d.ts +1 -3
  46. package/dist/components/StatusBar.d.ts.map +1 -1
  47. package/dist/components/StatusBar.js +13 -30
  48. package/dist/components/TextBufferInput.cjs +13 -12
  49. package/dist/components/TextBufferInput.d.ts.map +1 -1
  50. package/dist/components/TextBufferInput.js +13 -12
  51. package/dist/components/TodoPanel.cjs +23 -16
  52. package/dist/components/TodoPanel.d.ts.map +1 -1
  53. package/dist/components/TodoPanel.js +23 -16
  54. package/dist/components/base/BaseAutocomplete.cjs +7 -6
  55. package/dist/components/base/BaseAutocomplete.d.ts.map +1 -1
  56. package/dist/components/base/BaseAutocomplete.js +7 -6
  57. package/dist/components/base/BaseSelector.cjs +5 -4
  58. package/dist/components/base/BaseSelector.d.ts.map +1 -1
  59. package/dist/components/base/BaseSelector.js +5 -4
  60. package/dist/components/chat/Footer.cjs +2 -1
  61. package/dist/components/chat/Footer.d.ts.map +1 -1
  62. package/dist/components/chat/Footer.js +2 -1
  63. package/dist/components/chat/Header.cjs +20 -16
  64. package/dist/components/chat/Header.d.ts.map +1 -1
  65. package/dist/components/chat/Header.js +20 -16
  66. package/dist/components/chat/MessageItem.cjs +47 -30
  67. package/dist/components/chat/MessageItem.d.ts.map +1 -1
  68. package/dist/components/chat/MessageItem.js +52 -29
  69. package/dist/components/chat/MessageList.cjs +3 -2
  70. package/dist/components/chat/MessageList.d.ts.map +1 -1
  71. package/dist/components/chat/MessageList.js +3 -2
  72. package/dist/components/chat/QueuedMessagesDisplay.cjs +17 -5
  73. package/dist/components/chat/QueuedMessagesDisplay.d.ts.map +1 -1
  74. package/dist/components/chat/QueuedMessagesDisplay.js +18 -6
  75. package/dist/components/chat/SignalMessage.cjs +116 -0
  76. package/dist/components/chat/SignalMessage.d.ts +18 -0
  77. package/dist/components/chat/SignalMessage.d.ts.map +1 -0
  78. package/dist/components/chat/SignalMessage.js +96 -0
  79. package/dist/components/chat/SignalMessage.test.cjs +112 -0
  80. package/dist/components/chat/SignalMessage.test.d.ts +2 -0
  81. package/dist/components/chat/SignalMessage.test.d.ts.map +1 -0
  82. package/dist/components/chat/SignalMessage.test.js +116 -0
  83. package/dist/components/chat/ToolIcon.cjs +6 -5
  84. package/dist/components/chat/ToolIcon.d.ts.map +1 -1
  85. package/dist/components/chat/ToolIcon.js +6 -5
  86. package/dist/components/chat/styled-boxes/ConfigBox.cjs +8 -7
  87. package/dist/components/chat/styled-boxes/ConfigBox.d.ts.map +1 -1
  88. package/dist/components/chat/styled-boxes/ConfigBox.js +8 -7
  89. package/dist/components/chat/styled-boxes/HelpBox.cjs +4 -3
  90. package/dist/components/chat/styled-boxes/HelpBox.d.ts.map +1 -1
  91. package/dist/components/chat/styled-boxes/HelpBox.js +4 -3
  92. package/dist/components/chat/styled-boxes/LogConfigBox.cjs +11 -3
  93. package/dist/components/chat/styled-boxes/LogConfigBox.d.ts.map +1 -1
  94. package/dist/components/chat/styled-boxes/LogConfigBox.js +11 -3
  95. package/dist/components/chat/styled-boxes/SessionHistoryBox.cjs +8 -7
  96. package/dist/components/chat/styled-boxes/SessionHistoryBox.d.ts.map +1 -1
  97. package/dist/components/chat/styled-boxes/SessionHistoryBox.js +8 -7
  98. package/dist/components/chat/styled-boxes/SessionListBox.cjs +19 -11
  99. package/dist/components/chat/styled-boxes/SessionListBox.d.ts.map +1 -1
  100. package/dist/components/chat/styled-boxes/SessionListBox.js +19 -11
  101. package/dist/components/chat/styled-boxes/ShortcutsBox.cjs +4 -3
  102. package/dist/components/chat/styled-boxes/ShortcutsBox.d.ts.map +1 -1
  103. package/dist/components/chat/styled-boxes/ShortcutsBox.js +4 -3
  104. package/dist/components/chat/styled-boxes/StatsBox.cjs +13 -5
  105. package/dist/components/chat/styled-boxes/StatsBox.d.ts.map +1 -1
  106. package/dist/components/chat/styled-boxes/StatsBox.js +13 -5
  107. package/dist/components/chat/styled-boxes/StyledBox.cjs +7 -6
  108. package/dist/components/chat/styled-boxes/StyledBox.d.ts.map +1 -1
  109. package/dist/components/chat/styled-boxes/StyledBox.js +7 -6
  110. package/dist/components/chat/styled-boxes/SyspromptBox.cjs +2 -1
  111. package/dist/components/chat/styled-boxes/SyspromptBox.d.ts.map +1 -1
  112. package/dist/components/chat/styled-boxes/SyspromptBox.js +2 -1
  113. package/dist/components/modes/AlternateBufferCLI.cjs +53 -43
  114. package/dist/components/modes/AlternateBufferCLI.d.ts.map +1 -1
  115. package/dist/components/modes/AlternateBufferCLI.js +53 -43
  116. package/dist/components/modes/StaticCLI.cjs +53 -42
  117. package/dist/components/modes/StaticCLI.d.ts.map +1 -1
  118. package/dist/components/modes/StaticCLI.js +53 -42
  119. package/dist/components/overlays/ApiKeyInput.cjs +12 -11
  120. package/dist/components/overlays/ApiKeyInput.d.ts.map +1 -1
  121. package/dist/components/overlays/ApiKeyInput.js +12 -11
  122. package/dist/components/overlays/ChatGPTUsageCapOverlay.cjs +7 -6
  123. package/dist/components/overlays/ChatGPTUsageCapOverlay.d.ts.map +1 -1
  124. package/dist/components/overlays/ChatGPTUsageCapOverlay.js +7 -6
  125. package/dist/components/overlays/CommandOutputOverlay.cjs +2 -1
  126. package/dist/components/overlays/CommandOutputOverlay.d.ts.map +1 -1
  127. package/dist/components/overlays/CommandOutputOverlay.js +2 -1
  128. package/dist/components/overlays/ConnectOverlay.cjs +10 -9
  129. package/dist/components/overlays/ConnectOverlay.d.ts.map +1 -1
  130. package/dist/components/overlays/ConnectOverlay.js +10 -9
  131. package/dist/components/overlays/ContextStatsOverlay.cjs +48 -37
  132. package/dist/components/overlays/ContextStatsOverlay.d.ts.map +1 -1
  133. package/dist/components/overlays/ContextStatsOverlay.js +48 -37
  134. package/dist/components/overlays/CustomModelWizard.cjs +5 -4
  135. package/dist/components/overlays/CustomModelWizard.d.ts.map +1 -1
  136. package/dist/components/overlays/CustomModelWizard.js +5 -4
  137. package/dist/components/overlays/ExportWizard.cjs +28 -27
  138. package/dist/components/overlays/ExportWizard.d.ts.map +1 -1
  139. package/dist/components/overlays/ExportWizard.js +28 -27
  140. package/dist/components/overlays/InsufficientCreditsOverlay.cjs +8 -7
  141. package/dist/components/overlays/InsufficientCreditsOverlay.d.ts.map +1 -1
  142. package/dist/components/overlays/InsufficientCreditsOverlay.js +8 -7
  143. package/dist/components/overlays/LogLevelSelector.cjs +6 -5
  144. package/dist/components/overlays/LogLevelSelector.d.ts.map +1 -1
  145. package/dist/components/overlays/LogLevelSelector.js +6 -5
  146. package/dist/components/overlays/LoginOverlay.cjs +7 -6
  147. package/dist/components/overlays/LoginOverlay.d.ts.map +1 -1
  148. package/dist/components/overlays/LoginOverlay.js +7 -6
  149. package/dist/components/overlays/LogoutOverlay.cjs +10 -9
  150. package/dist/components/overlays/LogoutOverlay.d.ts.map +1 -1
  151. package/dist/components/overlays/LogoutOverlay.js +10 -9
  152. package/dist/components/overlays/MarketplaceAddPrompt.cjs +12 -11
  153. package/dist/components/overlays/MarketplaceAddPrompt.d.ts.map +1 -1
  154. package/dist/components/overlays/MarketplaceAddPrompt.js +12 -11
  155. package/dist/components/overlays/MarketplaceBrowser.cjs +27 -26
  156. package/dist/components/overlays/MarketplaceBrowser.d.ts.map +1 -1
  157. package/dist/components/overlays/MarketplaceBrowser.js +27 -26
  158. package/dist/components/overlays/McpAddChoice.cjs +4 -3
  159. package/dist/components/overlays/McpAddChoice.d.ts.map +1 -1
  160. package/dist/components/overlays/McpAddChoice.js +4 -3
  161. package/dist/components/overlays/McpAddSelector.cjs +4 -3
  162. package/dist/components/overlays/McpAddSelector.d.ts.map +1 -1
  163. package/dist/components/overlays/McpAddSelector.js +4 -3
  164. package/dist/components/overlays/McpCustomTypeSelector.cjs +4 -3
  165. package/dist/components/overlays/McpCustomTypeSelector.d.ts.map +1 -1
  166. package/dist/components/overlays/McpCustomTypeSelector.js +4 -3
  167. package/dist/components/overlays/McpCustomWizard.cjs +9 -8
  168. package/dist/components/overlays/McpCustomWizard.d.ts.map +1 -1
  169. package/dist/components/overlays/McpCustomWizard.js +9 -8
  170. package/dist/components/overlays/McpRemoveSelector.cjs +5 -4
  171. package/dist/components/overlays/McpRemoveSelector.d.ts.map +1 -1
  172. package/dist/components/overlays/McpRemoveSelector.js +5 -4
  173. package/dist/components/overlays/McpSelector.cjs +4 -3
  174. package/dist/components/overlays/McpSelector.d.ts.map +1 -1
  175. package/dist/components/overlays/McpSelector.js +4 -3
  176. package/dist/components/overlays/McpServerActions.cjs +7 -6
  177. package/dist/components/overlays/McpServerActions.d.ts.map +1 -1
  178. package/dist/components/overlays/McpServerActions.js +7 -6
  179. package/dist/components/overlays/McpServerList.cjs +6 -5
  180. package/dist/components/overlays/McpServerList.d.ts.map +1 -1
  181. package/dist/components/overlays/McpServerList.js +6 -5
  182. package/dist/components/overlays/ModelSelectorRefactored.cjs +32 -17
  183. package/dist/components/overlays/ModelSelectorRefactored.d.ts.map +1 -1
  184. package/dist/components/overlays/ModelSelectorRefactored.js +32 -17
  185. package/dist/components/overlays/PermissionsSelector.cjs +6 -5
  186. package/dist/components/overlays/PermissionsSelector.d.ts.map +1 -1
  187. package/dist/components/overlays/PermissionsSelector.js +6 -5
  188. package/dist/components/overlays/PluginActions.cjs +7 -6
  189. package/dist/components/overlays/PluginActions.d.ts.map +1 -1
  190. package/dist/components/overlays/PluginActions.js +7 -6
  191. package/dist/components/overlays/PluginList.cjs +12 -11
  192. package/dist/components/overlays/PluginList.d.ts.map +1 -1
  193. package/dist/components/overlays/PluginList.js +12 -11
  194. package/dist/components/overlays/PluginManager.cjs +13 -5
  195. package/dist/components/overlays/PluginManager.d.ts.map +1 -1
  196. package/dist/components/overlays/PluginManager.js +13 -5
  197. package/dist/components/overlays/PromptAddChoice.cjs +5 -4
  198. package/dist/components/overlays/PromptAddChoice.d.ts.map +1 -1
  199. package/dist/components/overlays/PromptAddChoice.js +5 -4
  200. package/dist/components/overlays/PromptAddWizard.cjs +10 -9
  201. package/dist/components/overlays/PromptAddWizard.d.ts.map +1 -1
  202. package/dist/components/overlays/PromptAddWizard.js +10 -9
  203. package/dist/components/overlays/PromptDeleteSelector.cjs +6 -5
  204. package/dist/components/overlays/PromptDeleteSelector.d.ts.map +1 -1
  205. package/dist/components/overlays/PromptDeleteSelector.js +6 -5
  206. package/dist/components/overlays/PromptList.cjs +10 -9
  207. package/dist/components/overlays/PromptList.d.ts.map +1 -1
  208. package/dist/components/overlays/PromptList.js +10 -9
  209. package/dist/components/overlays/ReasoningOverlay.cjs +30 -23
  210. package/dist/components/overlays/ReasoningOverlay.d.ts.map +1 -1
  211. package/dist/components/overlays/ReasoningOverlay.js +30 -23
  212. package/dist/components/overlays/SearchOverlay.cjs +15 -14
  213. package/dist/components/overlays/SearchOverlay.d.ts.map +1 -1
  214. package/dist/components/overlays/SearchOverlay.js +15 -14
  215. package/dist/components/overlays/SessionRenameOverlay.cjs +9 -8
  216. package/dist/components/overlays/SessionRenameOverlay.d.ts.map +1 -1
  217. package/dist/components/overlays/SessionRenameOverlay.js +9 -8
  218. package/dist/components/overlays/SessionSelectorRefactored.cjs +4 -3
  219. package/dist/components/overlays/SessionSelectorRefactored.d.ts.map +1 -1
  220. package/dist/components/overlays/SessionSelectorRefactored.js +4 -3
  221. package/dist/components/overlays/SessionSubcommandSelector.cjs +4 -3
  222. package/dist/components/overlays/SessionSubcommandSelector.d.ts.map +1 -1
  223. package/dist/components/overlays/SessionSubcommandSelector.js +4 -3
  224. package/dist/components/overlays/SoundsSelector.cjs +15 -7
  225. package/dist/components/overlays/SoundsSelector.d.ts.map +1 -1
  226. package/dist/components/overlays/SoundsSelector.js +15 -7
  227. package/dist/components/overlays/StreamSelector.cjs +5 -4
  228. package/dist/components/overlays/StreamSelector.d.ts.map +1 -1
  229. package/dist/components/overlays/StreamSelector.js +5 -4
  230. package/dist/components/overlays/ToolBrowser.cjs +73 -56
  231. package/dist/components/overlays/ToolBrowser.d.ts.map +1 -1
  232. package/dist/components/overlays/ToolBrowser.js +73 -56
  233. package/dist/components/overlays/custom-model-wizard/LocalModelWizard.cjs +103 -69
  234. package/dist/components/overlays/custom-model-wizard/LocalModelWizard.d.ts.map +1 -1
  235. package/dist/components/overlays/custom-model-wizard/LocalModelWizard.js +103 -69
  236. package/dist/components/overlays/custom-model-wizard/shared/ApiKeyStep.cjs +3 -2
  237. package/dist/components/overlays/custom-model-wizard/shared/ApiKeyStep.d.ts.map +1 -1
  238. package/dist/components/overlays/custom-model-wizard/shared/ApiKeyStep.js +3 -2
  239. package/dist/components/overlays/custom-model-wizard/shared/ProviderSelector.cjs +5 -4
  240. package/dist/components/overlays/custom-model-wizard/shared/ProviderSelector.d.ts.map +1 -1
  241. package/dist/components/overlays/custom-model-wizard/shared/ProviderSelector.js +5 -4
  242. package/dist/components/overlays/custom-model-wizard/shared/SetupInfoBanner.cjs +4 -3
  243. package/dist/components/overlays/custom-model-wizard/shared/SetupInfoBanner.d.ts.map +1 -1
  244. package/dist/components/overlays/custom-model-wizard/shared/SetupInfoBanner.js +4 -3
  245. package/dist/components/overlays/custom-model-wizard/shared/WizardStepInput.cjs +7 -6
  246. package/dist/components/overlays/custom-model-wizard/shared/WizardStepInput.d.ts.map +1 -1
  247. package/dist/components/overlays/custom-model-wizard/shared/WizardStepInput.js +7 -6
  248. package/dist/components/renderers/DiffRenderer.cjs +5 -4
  249. package/dist/components/renderers/DiffRenderer.d.ts.map +1 -1
  250. package/dist/components/renderers/DiffRenderer.js +5 -4
  251. package/dist/components/renderers/FilePreviewRenderer.cjs +23 -13
  252. package/dist/components/renderers/FilePreviewRenderer.d.ts.map +1 -1
  253. package/dist/components/renderers/FilePreviewRenderer.js +23 -13
  254. package/dist/components/renderers/FileRenderer.cjs +9 -8
  255. package/dist/components/renderers/FileRenderer.d.ts.map +1 -1
  256. package/dist/components/renderers/FileRenderer.js +9 -8
  257. package/dist/components/renderers/GenericRenderer.cjs +5 -4
  258. package/dist/components/renderers/GenericRenderer.d.ts.map +1 -1
  259. package/dist/components/renderers/GenericRenderer.js +5 -4
  260. package/dist/components/renderers/SearchRenderer.cjs +4 -3
  261. package/dist/components/renderers/SearchRenderer.d.ts.map +1 -1
  262. package/dist/components/renderers/SearchRenderer.js +4 -3
  263. package/dist/components/renderers/ShellRenderer.cjs +6 -5
  264. package/dist/components/renderers/ShellRenderer.d.ts.map +1 -1
  265. package/dist/components/renderers/ShellRenderer.js +6 -5
  266. package/dist/components/renderers/SignalDiff.cjs +139 -0
  267. package/dist/components/renderers/SignalDiff.d.ts +21 -0
  268. package/dist/components/renderers/SignalDiff.d.ts.map +1 -0
  269. package/dist/components/renderers/SignalDiff.js +106 -0
  270. package/dist/components/renderers/SignalDiff.test.cjs +78 -0
  271. package/dist/components/renderers/SignalDiff.test.d.ts +2 -0
  272. package/dist/components/renderers/SignalDiff.test.d.ts.map +1 -0
  273. package/dist/components/renderers/SignalDiff.test.js +77 -0
  274. package/dist/components/renderers/diff-shared.cjs +13 -7
  275. package/dist/components/renderers/diff-shared.d.ts +5 -0
  276. package/dist/components/renderers/diff-shared.d.ts.map +1 -1
  277. package/dist/components/renderers/diff-shared.js +12 -7
  278. package/dist/components/shared/FocusOverlayFrame.cjs +3 -2
  279. package/dist/components/shared/FocusOverlayFrame.d.ts.map +1 -1
  280. package/dist/components/shared/FocusOverlayFrame.js +3 -2
  281. package/dist/components/shared/HintBar.cjs +2 -1
  282. package/dist/components/shared/HintBar.d.ts.map +1 -1
  283. package/dist/components/shared/HintBar.js +2 -1
  284. package/dist/components/shared/MarkdownText.cjs +36 -53
  285. package/dist/components/shared/MarkdownText.d.ts +2 -0
  286. package/dist/components/shared/MarkdownText.d.ts.map +1 -1
  287. package/dist/components/shared/MarkdownText.js +36 -54
  288. package/dist/components/shared/VirtualizedList.cjs +2 -1
  289. package/dist/components/shared/VirtualizedList.d.ts.map +1 -1
  290. package/dist/components/shared/VirtualizedList.js +2 -1
  291. package/dist/containers/OverlayContainer.cjs +2 -4
  292. package/dist/containers/OverlayContainer.d.ts.map +1 -1
  293. package/dist/containers/OverlayContainer.js +2 -4
  294. package/dist/contexts/KeypressContext.cjs +7 -1
  295. package/dist/contexts/KeypressContext.d.ts.map +1 -1
  296. package/dist/contexts/KeypressContext.js +7 -1
  297. package/dist/contexts/KeypressContext.test.cjs +82 -0
  298. package/dist/contexts/KeypressContext.test.d.ts +2 -0
  299. package/dist/contexts/KeypressContext.test.d.ts.map +1 -0
  300. package/dist/contexts/KeypressContext.test.js +81 -0
  301. package/dist/hooks/useAgentEvents.cjs +1 -74
  302. package/dist/hooks/useAgentEvents.d.ts.map +1 -1
  303. package/dist/hooks/useAgentEvents.js +1 -74
  304. package/dist/hooks/useCLIState.cjs +0 -3
  305. package/dist/hooks/useCLIState.d.ts.map +1 -1
  306. package/dist/hooks/useCLIState.js +0 -3
  307. package/dist/hooks/useContextStats.cjs +91 -0
  308. package/dist/hooks/useContextStats.d.ts +13 -0
  309. package/dist/hooks/useContextStats.d.ts.map +1 -0
  310. package/dist/hooks/useContextStats.js +67 -0
  311. package/dist/hooks/useDeckState.cjs +140 -0
  312. package/dist/hooks/useDeckState.d.ts +20 -0
  313. package/dist/hooks/useDeckState.d.ts.map +1 -0
  314. package/dist/hooks/useDeckState.js +123 -0
  315. package/dist/hooks/useDextoCredits.cjs +81 -0
  316. package/dist/hooks/useDextoCredits.d.ts +14 -0
  317. package/dist/hooks/useDextoCredits.d.ts.map +1 -0
  318. package/dist/hooks/useDextoCredits.js +56 -0
  319. package/dist/hooks/useDextoCredits.test.cjs +73 -0
  320. package/dist/hooks/useDextoCredits.test.d.ts +2 -0
  321. package/dist/hooks/useDextoCredits.test.d.ts.map +1 -0
  322. package/dist/hooks/useDextoCredits.test.js +72 -0
  323. package/dist/hooks/useElapsedTime.cjs +13 -24
  324. package/dist/hooks/useElapsedTime.d.ts +3 -1
  325. package/dist/hooks/useElapsedTime.d.ts.map +1 -1
  326. package/dist/hooks/useElapsedTime.js +13 -24
  327. package/dist/hooks/useElapsedTime.test.cjs +35 -0
  328. package/dist/hooks/useElapsedTime.test.d.ts +2 -0
  329. package/dist/hooks/useElapsedTime.test.d.ts.map +1 -0
  330. package/dist/hooks/useElapsedTime.test.js +34 -0
  331. package/dist/hooks/useGitDirtyFiles.cjs +59 -0
  332. package/dist/hooks/useGitDirtyFiles.d.ts +5 -0
  333. package/dist/hooks/useGitDirtyFiles.d.ts.map +1 -0
  334. package/dist/hooks/useGitDirtyFiles.js +34 -0
  335. package/dist/hooks/useGitDirtyFiles.test.cjs +9 -0
  336. package/dist/hooks/useGitDirtyFiles.test.d.ts +2 -0
  337. package/dist/hooks/useGitDirtyFiles.test.d.ts.map +1 -0
  338. package/dist/hooks/useGitDirtyFiles.test.js +8 -0
  339. package/dist/hooks/useHeldValue.cjs +33 -0
  340. package/dist/hooks/useHeldValue.d.ts +3 -0
  341. package/dist/hooks/useHeldValue.d.ts.map +1 -0
  342. package/dist/hooks/useHeldValue.js +9 -0
  343. package/dist/hooks/useHeldValue.test.cjs +31 -0
  344. package/dist/hooks/useHeldValue.test.d.ts +2 -0
  345. package/dist/hooks/useHeldValue.test.d.ts.map +1 -0
  346. package/dist/hooks/useHeldValue.test.js +30 -0
  347. package/dist/hooks/useInputOrchestrator.cjs +22 -30
  348. package/dist/hooks/useInputOrchestrator.d.ts +2 -0
  349. package/dist/hooks/useInputOrchestrator.d.ts.map +1 -1
  350. package/dist/hooks/useInputOrchestrator.js +21 -30
  351. package/dist/hooks/useInputOrchestrator.test.cjs +24 -0
  352. package/dist/hooks/useInputOrchestrator.test.d.ts +2 -0
  353. package/dist/hooks/useInputOrchestrator.test.d.ts.map +1 -0
  354. package/dist/hooks/useInputOrchestrator.test.js +23 -0
  355. package/dist/interactive-commands/command-parser.cjs +13 -21
  356. package/dist/interactive-commands/command-parser.d.ts.map +1 -1
  357. package/dist/interactive-commands/command-parser.js +13 -11
  358. package/dist/interactive-commands/general-commands.cjs +8 -7
  359. package/dist/interactive-commands/general-commands.d.ts.map +1 -1
  360. package/dist/interactive-commands/general-commands.js +8 -7
  361. package/dist/services/processStream.cjs +31 -19
  362. package/dist/services/processStream.d.ts.map +1 -1
  363. package/dist/services/processStream.js +32 -20
  364. package/dist/services/processStream.test.cjs +51 -3
  365. package/dist/services/processStream.test.js +51 -3
  366. package/dist/signal/background.cjs +154 -0
  367. package/dist/signal/background.d.ts +43 -0
  368. package/dist/signal/background.d.ts.map +1 -0
  369. package/dist/signal/background.js +124 -0
  370. package/dist/signal/background.test.cjs +186 -0
  371. package/dist/signal/background.test.d.ts +2 -0
  372. package/dist/signal/background.test.d.ts.map +1 -0
  373. package/dist/signal/background.test.js +192 -0
  374. package/dist/signal/caps.cjs +100 -0
  375. package/dist/signal/caps.d.ts +23 -0
  376. package/dist/signal/caps.d.ts.map +1 -0
  377. package/dist/signal/caps.js +73 -0
  378. package/dist/signal/caps.test.cjs +56 -0
  379. package/dist/signal/caps.test.d.ts +2 -0
  380. package/dist/signal/caps.test.d.ts.map +1 -0
  381. package/dist/signal/caps.test.js +55 -0
  382. package/dist/signal/components.cjs +257 -0
  383. package/dist/signal/components.d.ts +120 -0
  384. package/dist/signal/components.d.ts.map +1 -0
  385. package/dist/signal/components.js +226 -0
  386. package/dist/signal/components.test.cjs +156 -0
  387. package/dist/signal/components.test.d.ts +2 -0
  388. package/dist/signal/components.test.d.ts.map +1 -0
  389. package/dist/signal/components.test.js +133 -0
  390. package/dist/signal/cut.cjs +103 -0
  391. package/dist/signal/cut.d.ts +11 -0
  392. package/dist/signal/cut.d.ts.map +1 -0
  393. package/dist/signal/cut.js +77 -0
  394. package/dist/signal/cut.test.cjs +20 -0
  395. package/dist/signal/cut.test.d.ts +2 -0
  396. package/dist/signal/cut.test.d.ts.map +1 -0
  397. package/dist/signal/cut.test.js +19 -0
  398. package/dist/signal/deck-layout.cjs +57 -0
  399. package/dist/signal/deck-layout.d.ts +29 -0
  400. package/dist/signal/deck-layout.d.ts.map +1 -0
  401. package/dist/signal/deck-layout.js +30 -0
  402. package/dist/signal/deck-parts.cjs +243 -0
  403. package/dist/signal/deck-parts.d.ts +55 -0
  404. package/dist/signal/deck-parts.d.ts.map +1 -0
  405. package/dist/signal/deck-parts.js +205 -0
  406. package/dist/signal/deck.test.cjs +311 -0
  407. package/dist/signal/deck.test.d.ts +2 -0
  408. package/dist/signal/deck.test.d.ts.map +1 -0
  409. package/dist/signal/deck.test.js +288 -0
  410. package/dist/signal/glyphs.cjs +195 -0
  411. package/dist/signal/glyphs.d.ts +8 -0
  412. package/dist/signal/glyphs.d.ts.map +1 -0
  413. package/dist/signal/glyphs.js +171 -0
  414. package/dist/signal/glyphs.test.cjs +17 -0
  415. package/dist/signal/glyphs.test.d.ts +2 -0
  416. package/dist/signal/glyphs.test.d.ts.map +1 -0
  417. package/dist/signal/glyphs.test.js +16 -0
  418. package/dist/signal/harness.cjs +103 -0
  419. package/dist/signal/harness.d.ts +70 -0
  420. package/dist/signal/harness.d.ts.map +1 -0
  421. package/dist/signal/harness.js +67 -0
  422. package/dist/signal/harness.test.cjs +84 -0
  423. package/dist/signal/harness.test.d.ts +2 -0
  424. package/dist/signal/harness.test.d.ts.map +1 -0
  425. package/dist/signal/harness.test.js +61 -0
  426. package/dist/signal/index.cjs +76 -0
  427. package/dist/signal/index.d.ts +8 -0
  428. package/dist/signal/index.d.ts.map +1 -0
  429. package/dist/signal/index.js +45 -0
  430. package/dist/signal/kit.snapshot.test.cjs +56 -0
  431. package/dist/signal/kit.snapshot.test.d.ts +2 -0
  432. package/dist/signal/kit.snapshot.test.d.ts.map +1 -0
  433. package/dist/signal/kit.snapshot.test.js +55 -0
  434. package/dist/signal/no-raw-colours.test.cjs +32 -0
  435. package/dist/signal/no-raw-colours.test.d.ts +2 -0
  436. package/dist/signal/no-raw-colours.test.d.ts.map +1 -0
  437. package/dist/signal/no-raw-colours.test.js +30 -0
  438. package/dist/signal/paint.cjs +76 -0
  439. package/dist/signal/paint.d.ts +15 -0
  440. package/dist/signal/paint.d.ts.map +1 -0
  441. package/dist/signal/paint.js +41 -0
  442. package/dist/signal/paint.test.cjs +98 -0
  443. package/dist/signal/paint.test.d.ts +2 -0
  444. package/dist/signal/paint.test.d.ts.map +1 -0
  445. package/dist/signal/paint.test.js +75 -0
  446. package/dist/signal/tone.cjs +109 -0
  447. package/dist/signal/tone.d.ts +17 -0
  448. package/dist/signal/tone.d.ts.map +1 -0
  449. package/dist/signal/tone.js +83 -0
  450. package/dist/signal/tone.test.cjs +70 -0
  451. package/dist/signal/tone.test.d.ts +2 -0
  452. package/dist/signal/tone.test.d.ts.map +1 -0
  453. package/dist/signal/tone.test.js +69 -0
  454. package/dist/signal/trace.cjs +142 -0
  455. package/dist/signal/trace.d.ts +41 -0
  456. package/dist/signal/trace.d.ts.map +1 -0
  457. package/dist/signal/trace.js +113 -0
  458. package/dist/signal/trace.test.cjs +50 -0
  459. package/dist/signal/trace.test.d.ts +2 -0
  460. package/dist/signal/trace.test.d.ts.map +1 -0
  461. package/dist/signal/trace.test.js +49 -0
  462. package/dist/signal/use-trace.cjs +73 -0
  463. package/dist/signal/use-trace.d.ts +5 -0
  464. package/dist/signal/use-trace.d.ts.map +1 -0
  465. package/dist/signal/use-trace.js +48 -0
  466. package/dist/signal/wordmark-art.generated.cjs +375 -0
  467. package/dist/signal/wordmark-art.generated.d.ts +3 -0
  468. package/dist/signal/wordmark-art.generated.d.ts.map +1 -0
  469. package/dist/signal/wordmark-art.generated.js +351 -0
  470. package/dist/signal/wordmark.cjs +60 -0
  471. package/dist/signal/wordmark.d.ts +23 -0
  472. package/dist/signal/wordmark.d.ts.map +1 -0
  473. package/dist/signal/wordmark.js +34 -0
  474. package/dist/signal/wordmark.test.cjs +71 -0
  475. package/dist/signal/wordmark.test.d.ts +2 -0
  476. package/dist/signal/wordmark.test.d.ts.map +1 -0
  477. package/dist/signal/wordmark.test.js +70 -0
  478. package/dist/state/initialState.cjs +0 -3
  479. package/dist/state/initialState.d.ts.map +1 -1
  480. package/dist/state/initialState.js +0 -3
  481. package/dist/state/types.d.ts +13 -7
  482. package/dist/state/types.d.ts.map +1 -1
  483. package/dist/utils/approval-response.cjs +45 -0
  484. package/dist/utils/approval-response.d.ts +14 -0
  485. package/dist/utils/approval-response.d.ts.map +1 -0
  486. package/dist/utils/approval-response.js +21 -0
  487. package/dist/utils/approval-response.test.cjs +49 -0
  488. package/dist/utils/approval-response.test.d.ts +2 -0
  489. package/dist/utils/approval-response.test.d.ts.map +1 -0
  490. package/dist/utils/approval-response.test.js +55 -0
  491. package/dist/utils/approvalScope.cjs +12 -0
  492. package/dist/utils/approvalScope.d.ts.map +1 -1
  493. package/dist/utils/approvalScope.js +12 -0
  494. package/dist/utils/approvalScope.test.cjs +23 -0
  495. package/dist/utils/approvalScope.test.d.ts +2 -0
  496. package/dist/utils/approvalScope.test.d.ts.map +1 -0
  497. package/dist/utils/approvalScope.test.js +22 -0
  498. package/dist/utils/background-failure.cjs +51 -0
  499. package/dist/utils/background-failure.d.ts +12 -0
  500. package/dist/utils/background-failure.d.ts.map +1 -0
  501. package/dist/utils/background-failure.js +26 -0
  502. package/dist/utils/chatgpt-rate-limit.cjs +10 -0
  503. package/dist/utils/chatgpt-rate-limit.d.ts +9 -0
  504. package/dist/utils/chatgpt-rate-limit.d.ts.map +1 -1
  505. package/dist/utils/chatgpt-rate-limit.js +9 -0
  506. package/dist/utils/chatgpt-rate-limit.test.cjs +10 -0
  507. package/dist/utils/chatgpt-rate-limit.test.js +11 -0
  508. package/dist/utils/deck-state.cjs +107 -0
  509. package/dist/utils/deck-state.d.ts +79 -0
  510. package/dist/utils/deck-state.d.ts.map +1 -0
  511. package/dist/utils/deck-state.js +76 -0
  512. package/dist/utils/deck-state.test.cjs +208 -0
  513. package/dist/utils/deck-state.test.d.ts +2 -0
  514. package/dist/utils/deck-state.test.d.ts.map +1 -0
  515. package/dist/utils/deck-state.test.js +216 -0
  516. package/dist/utils/fault-block.cjs +37 -0
  517. package/dist/utils/fault-block.d.ts +13 -0
  518. package/dist/utils/fault-block.d.ts.map +1 -0
  519. package/dist/utils/fault-block.js +13 -0
  520. package/dist/utils/fault-block.test.cjs +23 -0
  521. package/dist/utils/fault-block.test.d.ts +2 -0
  522. package/dist/utils/fault-block.test.d.ts.map +1 -0
  523. package/dist/utils/fault-block.test.js +22 -0
  524. package/dist/utils/messageFormatting.cjs +26 -23
  525. package/dist/utils/messageFormatting.d.ts +5 -2
  526. package/dist/utils/messageFormatting.d.ts.map +1 -1
  527. package/dist/utils/messageFormatting.js +25 -21
  528. package/dist/utils/messageFormatting.test.cjs +34 -0
  529. package/dist/utils/messageFormatting.test.js +35 -1
  530. package/dist/utils/reasoning-variant.cjs +35 -0
  531. package/dist/utils/reasoning-variant.d.ts +13 -0
  532. package/dist/utils/reasoning-variant.d.ts.map +1 -0
  533. package/dist/utils/reasoning-variant.js +11 -0
  534. package/dist/utils/resize-reflow.cjs +119 -0
  535. package/dist/utils/resize-reflow.d.ts +18 -0
  536. package/dist/utils/resize-reflow.d.ts.map +1 -0
  537. package/dist/utils/resize-reflow.js +83 -0
  538. package/dist/utils/resize-reflow.test.cjs +100 -0
  539. package/dist/utils/resize-reflow.test.d.ts +2 -0
  540. package/dist/utils/resize-reflow.test.d.ts.map +1 -0
  541. package/dist/utils/resize-reflow.test.js +99 -0
  542. package/dist/utils/tool-step.cjs +183 -0
  543. package/dist/utils/tool-step.d.ts +28 -0
  544. package/dist/utils/tool-step.d.ts.map +1 -0
  545. package/dist/utils/tool-step.js +156 -0
  546. package/dist/utils/tool-step.test.cjs +263 -0
  547. package/dist/utils/tool-step.test.d.ts +2 -0
  548. package/dist/utils/tool-step.test.d.ts.map +1 -0
  549. package/dist/utils/tool-step.test.js +262 -0
  550. package/package.json +7 -3
  551. package/dist/components/BackgroundTasksPanel.cjs +0 -117
  552. package/dist/components/BackgroundTasksPanel.d.ts +0 -18
  553. package/dist/components/BackgroundTasksPanel.d.ts.map +0 -1
  554. package/dist/components/BackgroundTasksPanel.js +0 -93
@@ -16,28 +16,21 @@ import { ToolResultRenderer } from "../renderers/index.js";
16
16
  import { MarkdownText } from "../shared/MarkdownText.js";
17
17
  import { ToolIcon } from "./ToolIcon.js";
18
18
  import {
19
+ formatDuration,
19
20
  formatToolResultPreview,
20
21
  stripAutomationTriggerTags
21
22
  } from "../../utils/messageFormatting.js";
23
+ import { tone, useCaps } from "../../signal/index.js";
24
+ import {
25
+ SignalAgentMessage,
26
+ SignalNote,
27
+ SignalToolMessage,
28
+ SignalUserMessage
29
+ } from "./SignalMessage.js";
22
30
  function stripPlanModeTags(content) {
23
31
  const stripped = content.replace(/<plan-mode>[\s\S]*?<\/plan-mode>\s*/g, "");
24
32
  return stripped === content ? content : stripped.trim();
25
33
  }
26
- function formatDuration(ms) {
27
- const seconds = Math.floor(ms / 1e3);
28
- const tenths = Math.floor(ms % 1e3 / 100);
29
- if (seconds < 60) {
30
- return `${seconds}.${tenths}s`;
31
- }
32
- const minutes = Math.floor(seconds / 60);
33
- const remainingSeconds = seconds % 60;
34
- if (minutes < 60) {
35
- return `${minutes}m ${remainingSeconds}s`;
36
- }
37
- const hours = Math.floor(minutes / 60);
38
- const remainingMinutes = minutes % 60;
39
- return `${hours}h ${remainingMinutes}m`;
40
- }
41
34
  function formatTime(timestamp) {
42
35
  const value = typeof timestamp === "string" ? new Date(timestamp) : timestamp;
43
36
  if (Number.isNaN(value.getTime())) {
@@ -51,13 +44,13 @@ function formatTime(timestamp) {
51
44
  function getExternalTriggerColors(source) {
52
45
  switch (source) {
53
46
  case "scheduler":
54
- return { background: "#3A235A", foreground: "white" };
47
+ return { background: tone("cloudBg"), foreground: tone("hi") };
55
48
  case "a2a":
56
- return { background: "#0E3B2E", foreground: "white" };
49
+ return { background: tone("s1"), foreground: tone("hi") };
57
50
  case "api":
58
- return { background: "#1E3B5A", foreground: "white" };
51
+ return { background: tone("sel"), foreground: tone("hi") };
59
52
  default:
60
- return { background: "gray", foreground: "white" };
53
+ return { background: tone("s2"), foreground: tone("hi") };
61
54
  }
62
55
  }
63
56
  function getExternalTriggerSource(label) {
@@ -94,6 +87,7 @@ function renderExternalTriggerPill(label, timeLabel, source, terminalWidth) {
94
87
  }
95
88
  const MessageItem = memo(
96
89
  ({ message, terminalWidth = 80, showReasoning = true }) => {
90
+ const signal = useCaps().palette === "signal";
97
91
  if (message.styledType && message.styledData) {
98
92
  switch (message.styledType) {
99
93
  case "config":
@@ -111,8 +105,20 @@ const MessageItem = memo(
111
105
  case "run-summary": {
112
106
  const data = message.styledData;
113
107
  const durationStr = formatDuration(data.durationMs);
108
+ if (signal) {
109
+ const tokens = data.totalTokens >= 1e3 ? ` \xB7 ${(data.totalTokens / 1e3).toFixed(1)}k tokens` : "";
110
+ return /* @__PURE__ */ jsx(
111
+ SignalNote,
112
+ {
113
+ message: {
114
+ ...message,
115
+ content: `worked for ${durationStr}${tokens}`
116
+ }
117
+ }
118
+ );
119
+ }
114
120
  const tokensStr = data.totalTokens >= 1e3 ? `, Used ${(data.totalTokens / 1e3).toFixed(1)}K tokens` : "";
115
- return /* @__PURE__ */ jsx(Box, { marginTop: 1, marginBottom: 1, width: terminalWidth, children: /* @__PURE__ */ jsxs(Text, { color: "gray", children: [
121
+ return /* @__PURE__ */ jsx(Box, { marginTop: 1, marginBottom: 1, width: terminalWidth, children: /* @__PURE__ */ jsxs(Text, { color: tone("dim"), children: [
116
122
  "\u2500 Worked for ",
117
123
  durationStr,
118
124
  tokensStr,
@@ -134,6 +140,14 @@ const MessageItem = memo(
134
140
  }
135
141
  }
136
142
  }
143
+ if (signal && message.role === "user") {
144
+ return /* @__PURE__ */ jsx(
145
+ SignalUserMessage,
146
+ {
147
+ content: stripAutomationTriggerTags(stripPlanModeTags(message.content))
148
+ }
149
+ );
150
+ }
137
151
  if (message.role === "user") {
138
152
  const prefix = "> ";
139
153
  const paddingChars = 2;
@@ -145,14 +159,17 @@ const MessageItem = memo(
145
159
  trim: false
146
160
  });
147
161
  const lines = wrappedContent.split("\n");
148
- return /* @__PURE__ */ jsx(Box, { flexDirection: "column", marginTop: 1, marginBottom: 0, width: terminalWidth, children: /* @__PURE__ */ jsx(Box, { flexDirection: "column", paddingX: 1, backgroundColor: "gray", children: lines.map((line, i) => /* @__PURE__ */ jsxs(Box, { flexDirection: "row", children: [
149
- /* @__PURE__ */ jsx(Text, { color: "green", children: i === 0 ? prefix : " " }),
150
- /* @__PURE__ */ jsx(Text, { color: "white", children: line })
162
+ return /* @__PURE__ */ jsx(Box, { flexDirection: "column", marginTop: 1, marginBottom: 0, width: terminalWidth, children: /* @__PURE__ */ jsx(Box, { flexDirection: "column", paddingX: 1, backgroundColor: tone("s2"), children: lines.map((line, i) => /* @__PURE__ */ jsxs(Box, { flexDirection: "row", children: [
163
+ /* @__PURE__ */ jsx(Text, { color: tone("add"), children: i === 0 ? prefix : " " }),
164
+ /* @__PURE__ */ jsx(Text, { color: tone("hi"), children: line })
151
165
  ] }, i)) }) });
152
166
  }
167
+ if (signal && message.role === "assistant") {
168
+ return /* @__PURE__ */ jsx(SignalAgentMessage, { message, showReasoning });
169
+ }
153
170
  if (message.role === "assistant") {
154
171
  const hasContent = message.content.trim().length > 0;
155
- const reasoningBlock = showReasoning && message.reasoning ? /* @__PURE__ */ jsx(Box, { flexDirection: "column", marginBottom: 1, children: /* @__PURE__ */ jsx(MarkdownText, { color: "gray", bulletPrefix: "\u23FA ", children: message.reasoning }) }) : null;
172
+ const reasoningBlock = showReasoning && message.reasoning ? /* @__PURE__ */ jsx(Box, { flexDirection: "column", marginBottom: 1, children: /* @__PURE__ */ jsx(MarkdownText, { color: tone("dim"), bulletPrefix: "\u23FA ", children: message.reasoning }) }) : null;
156
173
  if (message.isContinuation) {
157
174
  return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", width: terminalWidth, children: [
158
175
  reasoningBlock,
@@ -164,6 +181,9 @@ const MessageItem = memo(
164
181
  hasContent ? /* @__PURE__ */ jsx(MarkdownText, { bulletPrefix: "\u23FA ", children: message.content }) : null
165
182
  ] });
166
183
  }
184
+ if (signal && message.role === "tool") {
185
+ return /* @__PURE__ */ jsx(SignalToolMessage, { message });
186
+ }
167
187
  if (message.role === "tool") {
168
188
  const hasStructuredDisplay = message.toolDisplayData && message.toolContent;
169
189
  const isRunning = message.toolStatus === "running";
@@ -199,8 +219,8 @@ const MessageItem = memo(
199
219
  /* @__PURE__ */ jsx(Text, { children: line.slice(toolName.length) })
200
220
  ] }) : line })
201
221
  ] }, i)),
202
- subHeaderLine && /* @__PURE__ */ jsx(Box, { marginLeft: 2, children: /* @__PURE__ */ jsx(Text, { color: "gray", children: subHeaderLine }) }),
203
- subAgentProgress && isRunning && /* @__PURE__ */ jsx(Box, { marginLeft: 2, children: /* @__PURE__ */ jsxs(Text, { color: "gray", children: [
222
+ subHeaderLine && /* @__PURE__ */ jsx(Box, { marginLeft: 2, children: /* @__PURE__ */ jsx(Text, { color: tone("dim"), children: subHeaderLine }) }),
223
+ subAgentProgress && isRunning && /* @__PURE__ */ jsx(Box, { marginLeft: 2, children: /* @__PURE__ */ jsxs(Text, { color: tone("dim"), children: [
204
224
  "\u2514\u2500 ",
205
225
  subAgentProgress.toolsCalled,
206
226
  " tool",
@@ -217,7 +237,7 @@ const MessageItem = memo(
217
237
  display: message.toolDisplayData,
218
238
  content: message.toolContent
219
239
  }
220
- ) : message.toolResult && /* @__PURE__ */ jsx(Box, { flexDirection: "column", children: /* @__PURE__ */ jsxs(Text, { color: "gray", children: [
240
+ ) : message.toolResult && /* @__PURE__ */ jsx(Box, { flexDirection: "column", children: /* @__PURE__ */ jsxs(Text, { color: tone("dim"), children: [
221
241
  "\u23BF ",
222
242
  formatToolResultPreview(message.toolResult)
223
243
  ] }) })
@@ -234,11 +254,14 @@ const MessageItem = memo(
234
254
  );
235
255
  }
236
256
  }
237
- return /* @__PURE__ */ jsx(Box, { flexDirection: "column", marginBottom: 1, width: terminalWidth, children: /* @__PURE__ */ jsx(Text, { color: "gray", children: message.content }) });
257
+ if (signal) {
258
+ return /* @__PURE__ */ jsx(SignalNote, { message });
259
+ }
260
+ return /* @__PURE__ */ jsx(Box, { flexDirection: "column", marginBottom: 1, width: terminalWidth, children: /* @__PURE__ */ jsx(Text, { color: tone("dim"), children: message.content }) });
238
261
  },
239
262
  // Custom comparator: only re-render if message content actually changed
240
263
  (prev, next) => {
241
- return prev.message.id === next.message.id && prev.message.content === next.message.content && prev.message.reasoning === next.message.reasoning && prev.message.role === next.message.role && prev.message.toolStatus === next.message.toolStatus && prev.message.toolResult === next.message.toolResult && prev.message.isStreaming === next.message.isStreaming && prev.message.styledType === next.message.styledType && prev.message.styledData === next.message.styledData && prev.message.isContinuation === next.message.isContinuation && prev.message.isError === next.message.isError && prev.message.toolDisplayData === next.message.toolDisplayData && prev.message.toolContent === next.message.toolContent && prev.terminalWidth === next.terminalWidth && prev.showReasoning === next.showReasoning && prev.message.subAgentProgress?.toolsCalled === next.message.subAgentProgress?.toolsCalled && prev.message.subAgentProgress?.currentTool === next.message.subAgentProgress?.currentTool && prev.message.subAgentProgress?.tokenUsage?.total === next.message.subAgentProgress?.tokenUsage?.total;
264
+ return prev.message.id === next.message.id && prev.message.content === next.message.content && prev.message.reasoning === next.message.reasoning && prev.message.role === next.message.role && prev.message.toolStatus === next.message.toolStatus && prev.message.toolOutcome === next.message.toolOutcome && prev.message.systemKind === next.message.systemKind && prev.message.toolResult === next.message.toolResult && prev.message.isStreaming === next.message.isStreaming && prev.message.styledType === next.message.styledType && prev.message.styledData === next.message.styledData && prev.message.isContinuation === next.message.isContinuation && prev.message.isError === next.message.isError && prev.message.toolDisplayData === next.message.toolDisplayData && prev.message.toolContent === next.message.toolContent && prev.terminalWidth === next.terminalWidth && prev.showReasoning === next.showReasoning && prev.message.subAgentProgress?.toolsCalled === next.message.subAgentProgress?.toolsCalled && prev.message.subAgentProgress?.currentTool === next.message.subAgentProgress?.currentTool && prev.message.subAgentProgress?.tokenUsage?.total === next.message.subAgentProgress?.tokenUsage?.total;
242
265
  }
243
266
  );
244
267
  MessageItem.displayName = "MessageItem";
@@ -25,18 +25,19 @@ var import_jsx_runtime = require("react/jsx-runtime");
25
25
  var import_react = require("react");
26
26
  var import_ink = require("ink");
27
27
  var import_MessageItem = require("./MessageItem.js");
28
+ var import_signal = require("../../signal/index.js");
28
29
  function MessageList({ messages, maxVisible = 50 }) {
29
30
  const visibleMessages = (0, import_react.useMemo)(() => {
30
31
  return messages.slice(-maxVisible);
31
32
  }, [messages, maxVisible]);
32
33
  const hasMoreMessages = messages.length > maxVisible;
33
34
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ink.Box, { flexDirection: "column", flexGrow: 1, paddingX: 1, paddingY: 1, children: [
34
- hasMoreMessages && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Box, { marginBottom: 1, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ink.Text, { color: "gray", children: [
35
+ hasMoreMessages && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Box, { marginBottom: 1, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ink.Text, { color: (0, import_signal.tone)("dim"), children: [
35
36
  "... (",
36
37
  messages.length - maxVisible,
37
38
  " earlier messages hidden)"
38
39
  ] }) }),
39
- visibleMessages.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Box, { marginY: 2, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: "greenBright", children: "Welcome to Dexto CLI! Type your message below or use /help for commands." }) }),
40
+ visibleMessages.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Box, { marginY: 2, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: (0, import_signal.tone)("tealDim"), children: "Welcome to Dexto CLI! Type your message below or use /help for commands." }) }),
40
41
  visibleMessages.map((msg) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_MessageItem.MessageItem, { message: msg }, msg.id))
41
42
  ] });
42
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/components/chat/MessageList.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,UAAU,gBAAgB;IACtB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,UAAe,EAAE,EAAE,gBAAgB,2CA6B1E"}
1
+ {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/components/chat/MessageList.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,UAAU,gBAAgB;IACtB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,UAAe,EAAE,EAAE,gBAAgB,2CA6B1E"}
@@ -2,18 +2,19 @@ import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { useMemo } from "react";
3
3
  import { Box, Text } from "ink";
4
4
  import { MessageItem } from "./MessageItem.js";
5
+ import { tone } from "../../signal/index.js";
5
6
  function MessageList({ messages, maxVisible = 50 }) {
6
7
  const visibleMessages = useMemo(() => {
7
8
  return messages.slice(-maxVisible);
8
9
  }, [messages, maxVisible]);
9
10
  const hasMoreMessages = messages.length > maxVisible;
10
11
  return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", flexGrow: 1, paddingX: 1, paddingY: 1, children: [
11
- hasMoreMessages && /* @__PURE__ */ jsx(Box, { marginBottom: 1, children: /* @__PURE__ */ jsxs(Text, { color: "gray", children: [
12
+ hasMoreMessages && /* @__PURE__ */ jsx(Box, { marginBottom: 1, children: /* @__PURE__ */ jsxs(Text, { color: tone("dim"), children: [
12
13
  "... (",
13
14
  messages.length - maxVisible,
14
15
  " earlier messages hidden)"
15
16
  ] }) }),
16
- visibleMessages.length === 0 && /* @__PURE__ */ jsx(Box, { marginY: 2, children: /* @__PURE__ */ jsx(Text, { color: "greenBright", children: "Welcome to Dexto CLI! Type your message below or use /help for commands." }) }),
17
+ visibleMessages.length === 0 && /* @__PURE__ */ jsx(Box, { marginY: 2, children: /* @__PURE__ */ jsx(Text, { color: tone("tealDim"), children: "Welcome to Dexto CLI! Type your message below or use /help for commands." }) }),
17
18
  visibleMessages.map((msg) => /* @__PURE__ */ jsx(MessageItem, { message: msg }, msg.id))
18
19
  ] });
19
20
  }
@@ -25,6 +25,7 @@ module.exports = __toCommonJS(QueuedMessagesDisplay_exports);
25
25
  var import_jsx_runtime = require("react/jsx-runtime");
26
26
  var import_ink = require("ink");
27
27
  var import_queuedComposerContent = require("../../utils/queuedComposerContent.js");
28
+ var import_signal = require("../../signal/index.js");
28
29
  const isMac = process.platform === "darwin";
29
30
  const QUEUE_EDIT_SHORTCUTS = {
30
31
  currentTurn: isMac ? "\u2325 + \u2191 edit" : "Alt + \u2191 edit",
@@ -42,22 +43,33 @@ function QueuedMessagesDisplay({
42
43
  label = "queued",
43
44
  hint = "\u2191 to edit"
44
45
  }) {
46
+ const { palette, glyphs } = (0, import_signal.useCaps)();
47
+ const { stdout } = (0, import_ink.useStdout)();
45
48
  if (messages.length === 0) return null;
49
+ if (palette === "signal") {
50
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ink.Box, { flexDirection: "column", marginLeft: (0, import_signal.actorMarginWidth)(stdout?.columns ?? 80), children: [
51
+ messages.map((message) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ink.Text, { wrap: "truncate-end", children: [
52
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: (0, import_signal.tone)("amber"), children: (0, import_signal.glyphText)("\u21B3 ", glyphs) }),
53
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: (0, import_signal.tone)("fg"), children: truncateText((0, import_queuedComposerContent.previewQueuedContent)(message.content)) })
54
+ ] }, message.id)),
55
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: (0, import_signal.tone)("amber"), wrap: "truncate-end", children: (0, import_signal.glyphText)(`${label} \xB7 ${hint}`, glyphs) })
56
+ ] });
57
+ }
46
58
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ink.Box, { flexDirection: "column", marginBottom: 1, children: [
47
59
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ink.Box, { children: [
48
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ink.Text, { color: "gray", children: [
60
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ink.Text, { color: (0, import_signal.tone)("dim"), children: [
49
61
  messages.length,
50
62
  " message",
51
63
  messages.length !== 1 ? "s" : "",
52
64
  " ",
53
65
  label
54
66
  ] }),
55
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: "gray", children: " \u2022 " }),
56
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: "gray", children: hint })
67
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: (0, import_signal.tone)("dim"), children: " \u2022 " }),
68
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: (0, import_signal.tone)("dim"), children: hint })
57
69
  ] }),
58
70
  messages.map((message, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ink.Box, { flexDirection: "row", children: [
59
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: "gray", children: index === messages.length - 1 ? "\u21B3 " : "\u2502 " }),
60
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: "gray", italic: true, children: truncateText((0, import_queuedComposerContent.previewQueuedContent)(message.content)) })
71
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: (0, import_signal.tone)("dim"), children: index === messages.length - 1 ? "\u21B3 " : "\u2502 " }),
72
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: (0, import_signal.tone)("dim"), italic: true, children: truncateText((0, import_queuedComposerContent.previewQueuedContent)(message.content)) })
61
73
  ] }, message.id))
62
74
  ] });
63
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"QueuedMessagesDisplay.d.ts","sourceRoot":"","sources":["../../../src/components/chat/QueuedMessagesDisplay.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAKjD,eAAO,MAAM,oBAAoB;;;CAGhC,CAAC;AAEF,UAAU,0BAA0B;IAChC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAcD,wBAAgB,qBAAqB,CAAC,EAClC,QAAQ,EACR,KAAgB,EAChB,IAAkB,GACrB,EAAE,0BAA0B,kDA2B5B"}
1
+ {"version":3,"file":"QueuedMessagesDisplay.d.ts","sourceRoot":"","sources":["../../../src/components/chat/QueuedMessagesDisplay.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMjD,eAAO,MAAM,oBAAoB;;;CAGhC,CAAC;AAEF,UAAU,0BAA0B;IAChC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAcD,wBAAgB,qBAAqB,CAAC,EAClC,QAAQ,EACR,KAAgB,EAChB,IAAkB,GACrB,EAAE,0BAA0B,kDA+C5B"}
@@ -1,6 +1,7 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from "ink";
2
+ import { Box, Text, useStdout } from "ink";
3
3
  import { previewQueuedContent } from "../../utils/queuedComposerContent.js";
4
+ import { actorMarginWidth, glyphText, tone, useCaps } from "../../signal/index.js";
4
5
  const isMac = process.platform === "darwin";
5
6
  const QUEUE_EDIT_SHORTCUTS = {
6
7
  currentTurn: isMac ? "\u2325 + \u2191 edit" : "Alt + \u2191 edit",
@@ -18,22 +19,33 @@ function QueuedMessagesDisplay({
18
19
  label = "queued",
19
20
  hint = "\u2191 to edit"
20
21
  }) {
22
+ const { palette, glyphs } = useCaps();
23
+ const { stdout } = useStdout();
21
24
  if (messages.length === 0) return null;
25
+ if (palette === "signal") {
26
+ return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginLeft: actorMarginWidth(stdout?.columns ?? 80), children: [
27
+ messages.map((message) => /* @__PURE__ */ jsxs(Text, { wrap: "truncate-end", children: [
28
+ /* @__PURE__ */ jsx(Text, { color: tone("amber"), children: glyphText("\u21B3 ", glyphs) }),
29
+ /* @__PURE__ */ jsx(Text, { color: tone("fg"), children: truncateText(previewQueuedContent(message.content)) })
30
+ ] }, message.id)),
31
+ /* @__PURE__ */ jsx(Text, { color: tone("amber"), wrap: "truncate-end", children: glyphText(`${label} \xB7 ${hint}`, glyphs) })
32
+ ] });
33
+ }
22
34
  return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [
23
35
  /* @__PURE__ */ jsxs(Box, { children: [
24
- /* @__PURE__ */ jsxs(Text, { color: "gray", children: [
36
+ /* @__PURE__ */ jsxs(Text, { color: tone("dim"), children: [
25
37
  messages.length,
26
38
  " message",
27
39
  messages.length !== 1 ? "s" : "",
28
40
  " ",
29
41
  label
30
42
  ] }),
31
- /* @__PURE__ */ jsx(Text, { color: "gray", children: " \u2022 " }),
32
- /* @__PURE__ */ jsx(Text, { color: "gray", children: hint })
43
+ /* @__PURE__ */ jsx(Text, { color: tone("dim"), children: " \u2022 " }),
44
+ /* @__PURE__ */ jsx(Text, { color: tone("dim"), children: hint })
33
45
  ] }),
34
46
  messages.map((message, index) => /* @__PURE__ */ jsxs(Box, { flexDirection: "row", children: [
35
- /* @__PURE__ */ jsx(Text, { color: "gray", children: index === messages.length - 1 ? "\u21B3 " : "\u2502 " }),
36
- /* @__PURE__ */ jsx(Text, { color: "gray", italic: true, children: truncateText(previewQueuedContent(message.content)) })
47
+ /* @__PURE__ */ jsx(Text, { color: tone("dim"), children: index === messages.length - 1 ? "\u21B3 " : "\u2502 " }),
48
+ /* @__PURE__ */ jsx(Text, { color: tone("dim"), italic: true, children: truncateText(previewQueuedContent(message.content)) })
37
49
  ] }, message.id))
38
50
  ] });
39
51
  }
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var SignalMessage_exports = {};
20
+ __export(SignalMessage_exports, {
21
+ SignalAgentMessage: () => SignalAgentMessage,
22
+ SignalNote: () => SignalNote,
23
+ SignalToolMessage: () => SignalToolMessage,
24
+ SignalUserMessage: () => SignalUserMessage
25
+ });
26
+ module.exports = __toCommonJS(SignalMessage_exports);
27
+ var import_jsx_runtime = require("react/jsx-runtime");
28
+ var import_ink = require("ink");
29
+ var import_signal = require("../../signal/index.js");
30
+ var import_fault_block = require("../../utils/fault-block.js");
31
+ var import_tool_step = require("../../utils/tool-step.js");
32
+ var import_MarkdownText = require("../shared/MarkdownText.js");
33
+ var import_SignalDiff = require("../renderers/SignalDiff.js");
34
+ function useMargin() {
35
+ const { stdout } = (0, import_ink.useStdout)();
36
+ return (0, import_signal.actorMarginWidth)(stdout?.columns ?? 80);
37
+ }
38
+ function SignalUserMessage({ content }) {
39
+ const tone = (0, import_signal.useTone)();
40
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Box, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_signal.ActorRow, { actor: "you", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: tone("hi"), children: content }) }) });
41
+ }
42
+ function SignalAgentMessage({ message, showReasoning }) {
43
+ const tone = (0, import_signal.useTone)();
44
+ const margin = useMargin();
45
+ const hasContent = message.content.trim().length > 0;
46
+ const body = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_MarkdownText.MarkdownInsetContext.Provider, { value: margin, children: [
47
+ showReasoning && message.reasoning ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Box, { flexDirection: "column", marginBottom: hasContent ? 1 : 0, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_MarkdownText.MarkdownText, { color: tone("dim"), children: message.reasoning }) }) : null,
48
+ hasContent ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_MarkdownText.MarkdownText, { color: tone("fg"), children: message.content }) : null
49
+ ] });
50
+ if (message.isContinuation) {
51
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Box, { flexDirection: "column", marginLeft: margin, children: body });
52
+ }
53
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Box, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_signal.ActorRow, { actor: "agent", children: body }) });
54
+ }
55
+ function SignalToolMessage({ message }) {
56
+ const tone = (0, import_signal.useTone)();
57
+ const { glyphs } = (0, import_signal.useCaps)();
58
+ const margin = useMargin();
59
+ const { stdout } = (0, import_ink.useStdout)();
60
+ const step = (0, import_tool_step.toolStep)(message);
61
+ const display = message.toolDisplayData;
62
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ink.Box, { flexDirection: "column", marginLeft: margin, children: [
63
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_signal.StepRow, { step }),
64
+ (0, import_tool_step.toolOutput)(message).map((line, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ink.Text, { wrap: "truncate-end", children: [
65
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: tone("ghost"), children: (0, import_signal.glyphText)("\u250A ", glyphs) }),
66
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: tone("red"), children: line })
67
+ ] }, i)),
68
+ display?.type === "diff" && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_SignalDiff.SignalDiff, { data: display, width: (stdout?.columns ?? 80) - margin })
69
+ ] });
70
+ }
71
+ function SignalNote({ message }) {
72
+ const tone = (0, import_signal.useTone)();
73
+ const { glyphs } = (0, import_signal.useCaps)();
74
+ const margin = useMargin();
75
+ if (message.systemKind === "fault") {
76
+ const fault = (0, import_fault_block.faultBlock)(message.content);
77
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ink.Box, { flexDirection: "column", marginTop: 1, marginLeft: Math.max(0, margin - 2), children: [
78
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ink.Text, { children: [
79
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: tone("red"), children: (0, import_signal.glyphText)("\u258C ", glyphs) }),
80
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ink.Text, { bold: true, color: tone("red"), children: [
81
+ "FAULT",
82
+ " "
83
+ ] }),
84
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { bold: true, color: tone("hi"), children: fault.title })
85
+ ] }),
86
+ fault.body.map((line, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ink.Text, { children: [
87
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: tone("redDim"), children: (0, import_signal.glyphText)("\u258C ", glyphs) }),
88
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: tone("fg"), children: line })
89
+ ] }, `body-${i}`)),
90
+ fault.next.map((line, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ink.Text, { children: [
91
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: tone("redDim"), children: (0, import_signal.glyphText)("\u258C ", glyphs) }),
92
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: tone("dim"), children: "next " }),
93
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: tone("amber"), children: line })
94
+ ] }, `next-${i}`))
95
+ ] });
96
+ }
97
+ if (message.systemKind === "stopped") {
98
+ const at = message.timestamp.toLocaleTimeString([], { hour12: false });
99
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Box, { marginTop: 1, marginLeft: Math.max(0, margin - 2), children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ink.Text, { children: [
100
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: tone("hi"), children: (0, import_signal.glyphText)("\u25A0 ", glyphs) }),
101
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ink.Text, { bold: true, color: tone("hi"), children: [
102
+ "STOPPED",
103
+ " "
104
+ ] }),
105
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: tone("dim"), children: (0, import_signal.glyphText)(`by you at ${at} \xB7 type what to do next`, glyphs) })
106
+ ] }) });
107
+ }
108
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Box, { marginLeft: margin, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ink.Text, { color: tone("dim"), children: (0, import_signal.glyphText)(`\xB7 ${message.content}`, glyphs) }) });
109
+ }
110
+ // Annotate the CommonJS export names for ESM import in node:
111
+ 0 && (module.exports = {
112
+ SignalAgentMessage,
113
+ SignalNote,
114
+ SignalToolMessage,
115
+ SignalUserMessage
116
+ });
@@ -0,0 +1,18 @@
1
+ import type { Message } from '../../state/types.js';
2
+ export declare function SignalUserMessage({ content }: {
3
+ content: string;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ interface SignalAgentMessageProps {
6
+ message: Message;
7
+ showReasoning: boolean;
8
+ }
9
+ export declare function SignalAgentMessage({ message, showReasoning }: SignalAgentMessageProps): import("react/jsx-runtime").JSX.Element;
10
+ export declare function SignalToolMessage({ message }: {
11
+ message: Message;
12
+ }): import("react/jsx-runtime").JSX.Element;
13
+ /** A system message: a fault, the point where the user stopped the run, or a quiet note. */
14
+ export declare function SignalNote({ message }: {
15
+ message: Message;
16
+ }): import("react/jsx-runtime").JSX.Element;
17
+ export {};
18
+ //# sourceMappingURL=SignalMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignalMessage.d.ts","sourceRoot":"","sources":["../../../src/components/chat/SignalMessage.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAWpD,wBAAgB,iBAAiB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,2CASjE;AAED,UAAU,uBAAuB;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,uBAAuB,2CA2BrF;AAED,wBAAgB,iBAAiB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,2CAqBlE;AAED,4FAA4F;AAC5F,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,2CAsD3D"}
@@ -0,0 +1,96 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Box, Text, useStdout } from "ink";
3
+ import {
4
+ ActorRow,
5
+ StepRow,
6
+ actorMarginWidth,
7
+ glyphText,
8
+ useCaps,
9
+ useTone
10
+ } from "../../signal/index.js";
11
+ import { faultBlock } from "../../utils/fault-block.js";
12
+ import { toolOutput, toolStep } from "../../utils/tool-step.js";
13
+ import { MarkdownInsetContext, MarkdownText } from "../shared/MarkdownText.js";
14
+ import { SignalDiff } from "../renderers/SignalDiff.js";
15
+ function useMargin() {
16
+ const { stdout } = useStdout();
17
+ return actorMarginWidth(stdout?.columns ?? 80);
18
+ }
19
+ function SignalUserMessage({ content }) {
20
+ const tone = useTone();
21
+ return /* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsx(ActorRow, { actor: "you", children: /* @__PURE__ */ jsx(Text, { color: tone("hi"), children: content }) }) });
22
+ }
23
+ function SignalAgentMessage({ message, showReasoning }) {
24
+ const tone = useTone();
25
+ const margin = useMargin();
26
+ const hasContent = message.content.trim().length > 0;
27
+ const body = /* @__PURE__ */ jsxs(MarkdownInsetContext.Provider, { value: margin, children: [
28
+ showReasoning && message.reasoning ? /* @__PURE__ */ jsx(Box, { flexDirection: "column", marginBottom: hasContent ? 1 : 0, children: /* @__PURE__ */ jsx(MarkdownText, { color: tone("dim"), children: message.reasoning }) }) : null,
29
+ hasContent ? /* @__PURE__ */ jsx(MarkdownText, { color: tone("fg"), children: message.content }) : null
30
+ ] });
31
+ if (message.isContinuation) {
32
+ return /* @__PURE__ */ jsx(Box, { flexDirection: "column", marginLeft: margin, children: body });
33
+ }
34
+ return /* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsx(ActorRow, { actor: "agent", children: body }) });
35
+ }
36
+ function SignalToolMessage({ message }) {
37
+ const tone = useTone();
38
+ const { glyphs } = useCaps();
39
+ const margin = useMargin();
40
+ const { stdout } = useStdout();
41
+ const step = toolStep(message);
42
+ const display = message.toolDisplayData;
43
+ return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginLeft: margin, children: [
44
+ /* @__PURE__ */ jsx(StepRow, { step }),
45
+ toolOutput(message).map((line, i) => /* @__PURE__ */ jsxs(Text, { wrap: "truncate-end", children: [
46
+ /* @__PURE__ */ jsx(Text, { color: tone("ghost"), children: glyphText("\u250A ", glyphs) }),
47
+ /* @__PURE__ */ jsx(Text, { color: tone("red"), children: line })
48
+ ] }, i)),
49
+ display?.type === "diff" && /* @__PURE__ */ jsx(SignalDiff, { data: display, width: (stdout?.columns ?? 80) - margin })
50
+ ] });
51
+ }
52
+ function SignalNote({ message }) {
53
+ const tone = useTone();
54
+ const { glyphs } = useCaps();
55
+ const margin = useMargin();
56
+ if (message.systemKind === "fault") {
57
+ const fault = faultBlock(message.content);
58
+ return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginTop: 1, marginLeft: Math.max(0, margin - 2), children: [
59
+ /* @__PURE__ */ jsxs(Text, { children: [
60
+ /* @__PURE__ */ jsx(Text, { color: tone("red"), children: glyphText("\u258C ", glyphs) }),
61
+ /* @__PURE__ */ jsxs(Text, { bold: true, color: tone("red"), children: [
62
+ "FAULT",
63
+ " "
64
+ ] }),
65
+ /* @__PURE__ */ jsx(Text, { bold: true, color: tone("hi"), children: fault.title })
66
+ ] }),
67
+ fault.body.map((line, i) => /* @__PURE__ */ jsxs(Text, { children: [
68
+ /* @__PURE__ */ jsx(Text, { color: tone("redDim"), children: glyphText("\u258C ", glyphs) }),
69
+ /* @__PURE__ */ jsx(Text, { color: tone("fg"), children: line })
70
+ ] }, `body-${i}`)),
71
+ fault.next.map((line, i) => /* @__PURE__ */ jsxs(Text, { children: [
72
+ /* @__PURE__ */ jsx(Text, { color: tone("redDim"), children: glyphText("\u258C ", glyphs) }),
73
+ /* @__PURE__ */ jsx(Text, { color: tone("dim"), children: "next " }),
74
+ /* @__PURE__ */ jsx(Text, { color: tone("amber"), children: line })
75
+ ] }, `next-${i}`))
76
+ ] });
77
+ }
78
+ if (message.systemKind === "stopped") {
79
+ const at = message.timestamp.toLocaleTimeString([], { hour12: false });
80
+ return /* @__PURE__ */ jsx(Box, { marginTop: 1, marginLeft: Math.max(0, margin - 2), children: /* @__PURE__ */ jsxs(Text, { children: [
81
+ /* @__PURE__ */ jsx(Text, { color: tone("hi"), children: glyphText("\u25A0 ", glyphs) }),
82
+ /* @__PURE__ */ jsxs(Text, { bold: true, color: tone("hi"), children: [
83
+ "STOPPED",
84
+ " "
85
+ ] }),
86
+ /* @__PURE__ */ jsx(Text, { color: tone("dim"), children: glyphText(`by you at ${at} \xB7 type what to do next`, glyphs) })
87
+ ] }) });
88
+ }
89
+ return /* @__PURE__ */ jsx(Box, { marginLeft: margin, children: /* @__PURE__ */ jsx(Text, { color: tone("dim"), children: glyphText(`\xB7 ${message.content}`, glyphs) }) });
90
+ }
91
+ export {
92
+ SignalAgentMessage,
93
+ SignalNote,
94
+ SignalToolMessage,
95
+ SignalUserMessage
96
+ };