@qduc/term2 0.30.0 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (526) hide show
  1. package/dist/app.d.ts.map +1 -1
  2. package/dist/app.js +24 -5
  3. package/dist/app.js.map +1 -1
  4. package/dist/build-info.json +2 -2
  5. package/dist/cli.js +36 -25
  6. package/dist/cli.js.map +1 -1
  7. package/dist/components/ErrorBoundary.d.ts +1 -1
  8. package/dist/components/ErrorBoundary.d.ts.map +1 -1
  9. package/dist/components/ErrorBoundary.js +28 -23
  10. package/dist/components/ErrorBoundary.js.map +1 -1
  11. package/dist/components/InputBox.d.ts.map +1 -1
  12. package/dist/components/InputBox.js +124 -32
  13. package/dist/components/InputBox.js.map +1 -1
  14. package/dist/components/MarkdownRenderer.d.ts.map +1 -1
  15. package/dist/components/MarkdownRenderer.js +31 -28
  16. package/dist/components/MarkdownRenderer.js.map +1 -1
  17. package/dist/components/common/Divider.d.ts.map +1 -1
  18. package/dist/components/common/Divider.js +5 -2
  19. package/dist/components/common/Divider.js.map +1 -1
  20. package/dist/components/common/MenuContainer.d.ts +6 -20
  21. package/dist/components/common/MenuContainer.d.ts.map +1 -1
  22. package/dist/components/common/MenuContainer.js +24 -40
  23. package/dist/components/common/MenuContainer.js.map +1 -1
  24. package/dist/components/common/ScrollableTabBar.d.ts.map +1 -1
  25. package/dist/components/common/ScrollableTabBar.js +6 -5
  26. package/dist/components/common/ScrollableTabBar.js.map +1 -1
  27. package/dist/components/common/SelectionMarker.d.ts +16 -0
  28. package/dist/components/common/SelectionMarker.d.ts.map +1 -0
  29. package/dist/components/common/SelectionMarker.js +20 -0
  30. package/dist/components/common/SelectionMarker.js.map +1 -0
  31. package/dist/components/input/ApplicationInputSurface.d.ts.map +1 -1
  32. package/dist/components/input/ApplicationInputSurface.js +3 -1
  33. package/dist/components/input/ApplicationInputSurface.js.map +1 -1
  34. package/dist/components/input/FirstRunSetupPrompt.d.ts.map +1 -1
  35. package/dist/components/input/FirstRunSetupPrompt.js +8 -6
  36. package/dist/components/input/FirstRunSetupPrompt.js.map +1 -1
  37. package/dist/components/input/MenuSurface.d.ts.map +1 -1
  38. package/dist/components/input/MenuSurface.js +4 -3
  39. package/dist/components/input/MenuSurface.js.map +1 -1
  40. package/dist/components/input/ModelMenuSession.d.ts.map +1 -1
  41. package/dist/components/input/ModelMenuSession.js +3 -2
  42. package/dist/components/input/ModelMenuSession.js.map +1 -1
  43. package/dist/components/input/PendingQueueList.d.ts +3 -0
  44. package/dist/components/input/PendingQueueList.d.ts.map +1 -1
  45. package/dist/components/input/PendingQueueList.js +9 -8
  46. package/dist/components/input/PendingQueueList.js.map +1 -1
  47. package/dist/components/input/SettingsValueMenuSession.d.ts.map +1 -1
  48. package/dist/components/input/SettingsValueMenuSession.js +3 -2
  49. package/dist/components/input/SettingsValueMenuSession.js.map +1 -1
  50. package/dist/components/layout/BackgroundTaskManager.d.ts.map +1 -1
  51. package/dist/components/layout/BackgroundTaskManager.js +113 -107
  52. package/dist/components/layout/BackgroundTaskManager.js.map +1 -1
  53. package/dist/components/layout/BackgroundTasksPanel.d.ts.map +1 -1
  54. package/dist/components/layout/BackgroundTasksPanel.js +26 -28
  55. package/dist/components/layout/BackgroundTasksPanel.js.map +1 -1
  56. package/dist/components/layout/Banner.d.ts.map +1 -1
  57. package/dist/components/layout/Banner.js +3 -47
  58. package/dist/components/layout/Banner.js.map +1 -1
  59. package/dist/components/layout/BottomArea.d.ts.map +1 -1
  60. package/dist/components/layout/BottomArea.js +14 -34
  61. package/dist/components/layout/BottomArea.js.map +1 -1
  62. package/dist/components/layout/DiffView.d.ts.map +1 -1
  63. package/dist/components/layout/DiffView.js +8 -7
  64. package/dist/components/layout/DiffView.js.map +1 -1
  65. package/dist/components/layout/StatusBar.d.ts +8 -0
  66. package/dist/components/layout/StatusBar.d.ts.map +1 -1
  67. package/dist/components/layout/StatusBar.js +195 -290
  68. package/dist/components/layout/StatusBar.js.map +1 -1
  69. package/dist/components/menu/CopyMenu.d.ts.map +1 -1
  70. package/dist/components/menu/CopyMenu.js +16 -13
  71. package/dist/components/menu/CopyMenu.js.map +1 -1
  72. package/dist/components/menu/McpSelectionMenu.d.ts.map +1 -1
  73. package/dist/components/menu/McpSelectionMenu.js +8 -7
  74. package/dist/components/menu/McpSelectionMenu.js.map +1 -1
  75. package/dist/components/menu/ModelSelectionMenu.d.ts.map +1 -1
  76. package/dist/components/menu/ModelSelectionMenu.js +21 -20
  77. package/dist/components/menu/ModelSelectionMenu.js.map +1 -1
  78. package/dist/components/menu/PathSelectionMenu.d.ts.map +1 -1
  79. package/dist/components/menu/PathSelectionMenu.js +5 -4
  80. package/dist/components/menu/PathSelectionMenu.js.map +1 -1
  81. package/dist/components/menu/ProfileSelectionMenu.d.ts.map +1 -1
  82. package/dist/components/menu/ProfileSelectionMenu.js +17 -20
  83. package/dist/components/menu/ProfileSelectionMenu.js.map +1 -1
  84. package/dist/components/menu/ProviderSelectionMenu.d.ts.map +1 -1
  85. package/dist/components/menu/ProviderSelectionMenu.js +37 -36
  86. package/dist/components/menu/ProviderSelectionMenu.js.map +1 -1
  87. package/dist/components/menu/ResumeSelectionMenu.d.ts.map +1 -1
  88. package/dist/components/menu/ResumeSelectionMenu.js +21 -22
  89. package/dist/components/menu/ResumeSelectionMenu.js.map +1 -1
  90. package/dist/components/menu/RewindMenu.d.ts.map +1 -1
  91. package/dist/components/menu/RewindMenu.js +5 -4
  92. package/dist/components/menu/RewindMenu.js.map +1 -1
  93. package/dist/components/menu/SettingsSelectionMenu.d.ts.map +1 -1
  94. package/dist/components/menu/SettingsSelectionMenu.js +15 -14
  95. package/dist/components/menu/SettingsSelectionMenu.js.map +1 -1
  96. package/dist/components/menu/SettingsValueSelectionMenu.d.ts.map +1 -1
  97. package/dist/components/menu/SettingsValueSelectionMenu.js +15 -14
  98. package/dist/components/menu/SettingsValueSelectionMenu.js.map +1 -1
  99. package/dist/components/menu/SkillSelectionMenu.d.ts.map +1 -1
  100. package/dist/components/menu/SkillSelectionMenu.js +17 -18
  101. package/dist/components/menu/SkillSelectionMenu.js.map +1 -1
  102. package/dist/components/menu/SlashCommandMenu.d.ts.map +1 -1
  103. package/dist/components/menu/SlashCommandMenu.js +5 -4
  104. package/dist/components/menu/SlashCommandMenu.js.map +1 -1
  105. package/dist/components/menu/StandaloneModelPickerApp.d.ts.map +1 -1
  106. package/dist/components/menu/StandaloneModelPickerApp.js +3 -2
  107. package/dist/components/menu/StandaloneModelPickerApp.js.map +1 -1
  108. package/dist/components/menu/SubagentPoolSelectionMenu.d.ts.map +1 -1
  109. package/dist/components/menu/SubagentPoolSelectionMenu.js +26 -24
  110. package/dist/components/menu/SubagentPoolSelectionMenu.js.map +1 -1
  111. package/dist/components/menu/settings-value-formatter.d.ts +3 -1
  112. package/dist/components/menu/settings-value-formatter.d.ts.map +1 -1
  113. package/dist/components/menu/settings-value-formatter.js +24 -25
  114. package/dist/components/menu/settings-value-formatter.js.map +1 -1
  115. package/dist/components/message/ChatMessage.d.ts.map +1 -1
  116. package/dist/components/message/ChatMessage.js +11 -7
  117. package/dist/components/message/ChatMessage.js.map +1 -1
  118. package/dist/components/message/CodeContextSearchRenderer.d.ts.map +1 -1
  119. package/dist/components/message/CodeContextSearchRenderer.js +14 -11
  120. package/dist/components/message/CodeContextSearchRenderer.js.map +1 -1
  121. package/dist/components/message/CommandGroupSummary.d.ts.map +1 -1
  122. package/dist/components/message/CommandGroupSummary.js +8 -36
  123. package/dist/components/message/CommandGroupSummary.js.map +1 -1
  124. package/dist/components/message/CommandMessage.d.ts.map +1 -1
  125. package/dist/components/message/CommandMessage.js +313 -329
  126. package/dist/components/message/CommandMessage.js.map +1 -1
  127. package/dist/components/message/GrepRenderer.d.ts.map +1 -1
  128. package/dist/components/message/GrepRenderer.js +12 -9
  129. package/dist/components/message/GrepRenderer.js.map +1 -1
  130. package/dist/components/message/MemoryRenderer.d.ts.map +1 -1
  131. package/dist/components/message/MemoryRenderer.js +45 -38
  132. package/dist/components/message/MemoryRenderer.js.map +1 -1
  133. package/dist/components/message/ReadFileRenderer.d.ts.map +1 -1
  134. package/dist/components/message/ReadFileRenderer.js +20 -16
  135. package/dist/components/message/ReadFileRenderer.js.map +1 -1
  136. package/dist/components/message/RunCodeRenderer.d.ts.map +1 -1
  137. package/dist/components/message/RunCodeRenderer.js +19 -14
  138. package/dist/components/message/RunCodeRenderer.js.map +1 -1
  139. package/dist/components/message/SubagentActivityMessage.d.ts.map +1 -1
  140. package/dist/components/message/SubagentActivityMessage.js +15 -15
  141. package/dist/components/message/SubagentActivityMessage.js.map +1 -1
  142. package/dist/components/message/WebFetchRenderer.d.ts.map +1 -1
  143. package/dist/components/message/WebFetchRenderer.js +16 -13
  144. package/dist/components/message/WebFetchRenderer.js.map +1 -1
  145. package/dist/components/message/WebSearchRenderer.d.ts.map +1 -1
  146. package/dist/components/message/WebSearchRenderer.js +20 -16
  147. package/dist/components/message/WebSearchRenderer.js.map +1 -1
  148. package/dist/components/message/command-message-helpers.d.ts +2 -2
  149. package/dist/components/message/command-message-helpers.d.ts.map +1 -1
  150. package/dist/components/prompt/ApprovalPrompt.d.ts +12 -1
  151. package/dist/components/prompt/ApprovalPrompt.d.ts.map +1 -1
  152. package/dist/components/prompt/ApprovalPrompt.js +100 -147
  153. package/dist/components/prompt/ApprovalPrompt.js.map +1 -1
  154. package/dist/components/prompt/ConfirmPrompt.d.ts.map +1 -1
  155. package/dist/components/prompt/ConfirmPrompt.js +7 -4
  156. package/dist/components/prompt/ConfirmPrompt.js.map +1 -1
  157. package/dist/components/prompt/QueuePausedPrompt.d.ts.map +1 -1
  158. package/dist/components/prompt/QueuePausedPrompt.js +7 -4
  159. package/dist/components/prompt/QueuePausedPrompt.js.map +1 -1
  160. package/dist/components/theme.d.ts +10 -52
  161. package/dist/components/theme.d.ts.map +1 -1
  162. package/dist/components/theme.js +11 -68
  163. package/dist/components/theme.js.map +1 -1
  164. package/dist/context/InputContext.d.ts +17 -0
  165. package/dist/context/InputContext.d.ts.map +1 -1
  166. package/dist/context/InputContext.js +12 -0
  167. package/dist/context/InputContext.js.map +1 -1
  168. package/dist/gateway/gateway.d.ts.map +1 -1
  169. package/dist/gateway/gateway.js +11 -1
  170. package/dist/gateway/gateway.js.map +1 -1
  171. package/dist/hooks/conversation-ui-reducer.d.ts +5 -2
  172. package/dist/hooks/conversation-ui-reducer.d.ts.map +1 -1
  173. package/dist/hooks/conversation-ui-reducer.js +9 -2
  174. package/dist/hooks/conversation-ui-reducer.js.map +1 -1
  175. package/dist/hooks/settings-completion-config.d.ts.map +1 -1
  176. package/dist/hooks/settings-completion-config.js +2 -0
  177. package/dist/hooks/settings-completion-config.js.map +1 -1
  178. package/dist/hooks/use-app-keyboard-shortcuts.d.ts +6 -1
  179. package/dist/hooks/use-app-keyboard-shortcuts.d.ts.map +1 -1
  180. package/dist/hooks/use-app-keyboard-shortcuts.js +17 -11
  181. package/dist/hooks/use-app-keyboard-shortcuts.js.map +1 -1
  182. package/dist/hooks/use-conversation.d.ts +1 -0
  183. package/dist/hooks/use-conversation.d.ts.map +1 -1
  184. package/dist/hooks/use-conversation.js +2 -2
  185. package/dist/providers/model-catalog/catalog.generated.d.ts +239 -171
  186. package/dist/providers/model-catalog/catalog.generated.d.ts.map +1 -1
  187. package/dist/providers/model-catalog/catalog.generated.js +238 -179
  188. package/dist/providers/model-catalog/catalog.generated.js.map +1 -1
  189. package/dist/providers/model-catalog/generate-catalog.d.ts.map +1 -1
  190. package/dist/providers/model-catalog/generate-catalog.js +13 -5
  191. package/dist/providers/model-catalog/generate-catalog.js.map +1 -1
  192. package/dist/providers/openai-chat-completions-model.d.ts.map +1 -1
  193. package/dist/providers/openai-chat-completions-model.js +5 -2
  194. package/dist/providers/openai-chat-completions-model.js.map +1 -1
  195. package/dist/services/approval/background-subagent-approval-controller.d.ts +1 -0
  196. package/dist/services/approval/background-subagent-approval-controller.d.ts.map +1 -1
  197. package/dist/services/approval/background-subagent-approval-controller.js +3 -0
  198. package/dist/services/approval/background-subagent-approval-controller.js.map +1 -1
  199. package/dist/services/approval/background-subagent-approval-queue.d.ts +5 -0
  200. package/dist/services/approval/background-subagent-approval-queue.d.ts.map +1 -1
  201. package/dist/services/approval/background-subagent-approval-queue.js +18 -2
  202. package/dist/services/approval/background-subagent-approval-queue.js.map +1 -1
  203. package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
  204. package/dist/services/conversation/conversation-adapter.js +32 -6
  205. package/dist/services/conversation/conversation-adapter.js.map +1 -1
  206. package/dist/services/conversation/conversation-admission-workflow.d.ts +2 -0
  207. package/dist/services/conversation/conversation-admission-workflow.d.ts.map +1 -1
  208. package/dist/services/conversation/conversation-admission-workflow.js +1 -1
  209. package/dist/services/conversation/conversation-admission-workflow.js.map +1 -1
  210. package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
  211. package/dist/services/conversation/conversation-orchestrator.js +41 -21
  212. package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
  213. package/dist/services/conversation/conversation-orchestrator.types.d.ts +4 -3
  214. package/dist/services/conversation/conversation-orchestrator.types.d.ts.map +1 -1
  215. package/dist/services/conversation/conversation-service.d.ts.map +1 -1
  216. package/dist/services/conversation/conversation-service.js +16 -1
  217. package/dist/services/conversation/conversation-service.js.map +1 -1
  218. package/dist/services/cost/model-cost.d.ts +6 -0
  219. package/dist/services/cost/model-cost.d.ts.map +1 -1
  220. package/dist/services/cost/model-cost.js +12 -0
  221. package/dist/services/cost/model-cost.js.map +1 -1
  222. package/dist/services/cost/pricing.d.ts +1 -1
  223. package/dist/services/cost/pricing.d.ts.map +1 -1
  224. package/dist/services/cost/pricing.js +5 -5
  225. package/dist/services/cost/pricing.js.map +1 -1
  226. package/dist/services/models/model-picker-host.d.ts.map +1 -1
  227. package/dist/services/models/model-picker-host.js +9 -5
  228. package/dist/services/models/model-picker-host.js.map +1 -1
  229. package/dist/services/queue/queue-controller.d.ts +3 -0
  230. package/dist/services/queue/queue-controller.d.ts.map +1 -1
  231. package/dist/services/queue/queue-controller.js +53 -5
  232. package/dist/services/queue/queue-controller.js.map +1 -1
  233. package/dist/services/session/session-composition.d.ts +4 -1
  234. package/dist/services/session/session-composition.d.ts.map +1 -1
  235. package/dist/services/session/session-composition.js +66 -13
  236. package/dist/services/session/session-composition.js.map +1 -1
  237. package/dist/services/settings/settings-schema.d.ts +34 -0
  238. package/dist/services/settings/settings-schema.d.ts.map +1 -1
  239. package/dist/services/settings/settings-schema.js +16 -0
  240. package/dist/services/settings/settings-schema.js.map +1 -1
  241. package/dist/services/settings/settings-sources.d.ts +2 -0
  242. package/dist/services/settings/settings-sources.d.ts.map +1 -1
  243. package/dist/services/settings/settings-sources.js +2 -0
  244. package/dist/services/settings/settings-sources.js.map +1 -1
  245. package/dist/services/settings/settings-ui-metadata.d.ts.map +1 -1
  246. package/dist/services/settings/settings-ui-metadata.js +2 -0
  247. package/dist/services/settings/settings-ui-metadata.js.map +1 -1
  248. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +1 -1
  249. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -1
  250. package/dist/services/settings/test-helpers/settings-consumer-inventory.js +7 -1
  251. package/dist/services/settings/test-helpers/settings-consumer-inventory.js.map +1 -1
  252. package/dist/services/shell/background-shell-output-store.d.ts +4 -2
  253. package/dist/services/shell/background-shell-output-store.d.ts.map +1 -1
  254. package/dist/services/shell/background-shell-output-store.js +9 -8
  255. package/dist/services/shell/background-shell-output-store.js.map +1 -1
  256. package/dist/services/shell/background-shell-watches.d.ts.map +1 -1
  257. package/dist/services/shell/background-shell-watches.js +20 -9
  258. package/dist/services/shell/background-shell-watches.js.map +1 -1
  259. package/dist/services/subagents/subagent-async-registry.js +2 -2
  260. package/dist/services/subagents/subagent-async-registry.js.map +1 -1
  261. package/dist/services/subagents/subagent-run-control.d.ts.map +1 -1
  262. package/dist/services/subagents/subagent-run-control.js +3 -2
  263. package/dist/services/subagents/subagent-run-control.js.map +1 -1
  264. package/dist/services/subagents/utils.d.ts +1 -1
  265. package/dist/services/subagents/utils.d.ts.map +1 -1
  266. package/dist/services/subagents/utils.js +5 -4
  267. package/dist/services/subagents/utils.js.map +1 -1
  268. package/dist/skins/SkinContext.d.ts +18 -0
  269. package/dist/skins/SkinContext.d.ts.map +1 -0
  270. package/dist/skins/SkinContext.js +23 -0
  271. package/dist/skins/SkinContext.js.map +1 -0
  272. package/dist/skins/cards/activity.d.ts +8 -0
  273. package/dist/skins/cards/activity.d.ts.map +1 -0
  274. package/dist/skins/cards/activity.js +23 -0
  275. package/dist/skins/cards/activity.js.map +1 -0
  276. package/dist/skins/cards/approval.d.ts +15 -0
  277. package/dist/skins/cards/approval.d.ts.map +1 -0
  278. package/dist/skins/cards/approval.js +64 -0
  279. package/dist/skins/cards/approval.js.map +1 -0
  280. package/dist/skins/cards/body.d.ts +14 -0
  281. package/dist/skins/cards/body.d.ts.map +1 -0
  282. package/dist/skins/cards/body.js +65 -0
  283. package/dist/skins/cards/body.js.map +1 -0
  284. package/dist/skins/cards/card.d.ts +28 -0
  285. package/dist/skins/cards/card.d.ts.map +1 -0
  286. package/dist/skins/cards/card.js +37 -0
  287. package/dist/skins/cards/card.js.map +1 -0
  288. package/dist/skins/cards/index.d.ts +9 -0
  289. package/dist/skins/cards/index.d.ts.map +1 -0
  290. package/dist/skins/cards/index.js +41 -0
  291. package/dist/skins/cards/index.js.map +1 -0
  292. package/dist/skins/cards/live-region.d.ts +16 -0
  293. package/dist/skins/cards/live-region.d.ts.map +1 -0
  294. package/dist/skins/cards/live-region.js +83 -0
  295. package/dist/skins/cards/live-region.js.map +1 -0
  296. package/dist/skins/cards/measure.d.ts +17 -0
  297. package/dist/skins/cards/measure.d.ts.map +1 -0
  298. package/dist/skins/cards/measure.js +29 -0
  299. package/dist/skins/cards/measure.js.map +1 -0
  300. package/dist/skins/cards/messages.d.ts +23 -0
  301. package/dist/skins/cards/messages.d.ts.map +1 -0
  302. package/dist/skins/cards/messages.js +80 -0
  303. package/dist/skins/cards/messages.js.map +1 -0
  304. package/dist/skins/cards/status.d.ts +9 -0
  305. package/dist/skins/cards/status.d.ts.map +1 -0
  306. package/dist/skins/cards/status.js +205 -0
  307. package/dist/skins/cards/status.js.map +1 -0
  308. package/dist/skins/cards/tools.d.ts +21 -0
  309. package/dist/skins/cards/tools.d.ts.map +1 -0
  310. package/dist/skins/cards/tools.js +101 -0
  311. package/dist/skins/cards/tools.js.map +1 -0
  312. package/dist/skins/cards/width.d.ts +4 -0
  313. package/dist/skins/cards/width.d.ts.map +1 -0
  314. package/dist/skins/cards/width.js +32 -0
  315. package/dist/skins/cards/width.js.map +1 -0
  316. package/dist/skins/classic/approval.d.ts +19 -0
  317. package/dist/skins/classic/approval.d.ts.map +1 -0
  318. package/dist/skins/classic/approval.js +50 -0
  319. package/dist/skins/classic/approval.js.map +1 -0
  320. package/dist/skins/classic/index.d.ts +7 -0
  321. package/dist/skins/classic/index.d.ts.map +1 -0
  322. package/dist/skins/classic/index.js +39 -0
  323. package/dist/skins/classic/index.js.map +1 -0
  324. package/dist/skins/classic/live-region.d.ts +19 -0
  325. package/dist/skins/classic/live-region.d.ts.map +1 -0
  326. package/dist/skins/classic/live-region.js +71 -0
  327. package/dist/skins/classic/live-region.js.map +1 -0
  328. package/dist/skins/classic/menu.d.ts +5 -0
  329. package/dist/skins/classic/menu.d.ts.map +1 -0
  330. package/dist/skins/classic/menu.js +20 -0
  331. package/dist/skins/classic/menu.js.map +1 -0
  332. package/dist/skins/classic/messages.d.ts +13 -0
  333. package/dist/skins/classic/messages.d.ts.map +1 -0
  334. package/dist/skins/classic/messages.js +65 -0
  335. package/dist/skins/classic/messages.js.map +1 -0
  336. package/dist/skins/classic/question.d.ts +5 -0
  337. package/dist/skins/classic/question.d.ts.map +1 -0
  338. package/dist/skins/classic/question.js +33 -0
  339. package/dist/skins/classic/question.js.map +1 -0
  340. package/dist/skins/classic/status.d.ts +10 -0
  341. package/dist/skins/classic/status.d.ts.map +1 -0
  342. package/dist/skins/classic/status.js +158 -0
  343. package/dist/skins/classic/status.js.map +1 -0
  344. package/dist/skins/classic/subagent.d.ts +5 -0
  345. package/dist/skins/classic/subagent.d.ts.map +1 -0
  346. package/dist/skins/classic/subagent.js +14 -0
  347. package/dist/skins/classic/subagent.js.map +1 -0
  348. package/dist/skins/classic/tool-section.d.ts +8 -0
  349. package/dist/skins/classic/tool-section.d.ts.map +1 -0
  350. package/dist/skins/classic/tool-section.js +20 -0
  351. package/dist/skins/classic/tool-section.js.map +1 -0
  352. package/dist/skins/classic/tools.d.ts +19 -0
  353. package/dist/skins/classic/tools.d.ts.map +1 -0
  354. package/dist/skins/classic/tools.js +72 -0
  355. package/dist/skins/classic/tools.js.map +1 -0
  356. package/dist/skins/ledger/activity.d.ts +6 -0
  357. package/dist/skins/ledger/activity.d.ts.map +1 -0
  358. package/dist/skins/ledger/activity.js +18 -0
  359. package/dist/skins/ledger/activity.js.map +1 -0
  360. package/dist/skins/ledger/approval.d.ts +17 -0
  361. package/dist/skins/ledger/approval.d.ts.map +1 -0
  362. package/dist/skins/ledger/approval.js +67 -0
  363. package/dist/skins/ledger/approval.js.map +1 -0
  364. package/dist/skins/ledger/body.d.ts +11 -0
  365. package/dist/skins/ledger/body.d.ts.map +1 -0
  366. package/dist/skins/ledger/body.js +77 -0
  367. package/dist/skins/ledger/body.js.map +1 -0
  368. package/dist/skins/ledger/chip.d.ts +27 -0
  369. package/dist/skins/ledger/chip.d.ts.map +1 -0
  370. package/dist/skins/ledger/chip.js +25 -0
  371. package/dist/skins/ledger/chip.js.map +1 -0
  372. package/dist/skins/ledger/index.d.ts +11 -0
  373. package/dist/skins/ledger/index.d.ts.map +1 -0
  374. package/dist/skins/ledger/index.js +44 -0
  375. package/dist/skins/ledger/index.js.map +1 -0
  376. package/dist/skins/ledger/live-region.d.ts +20 -0
  377. package/dist/skins/ledger/live-region.d.ts.map +1 -0
  378. package/dist/skins/ledger/live-region.js +89 -0
  379. package/dist/skins/ledger/live-region.js.map +1 -0
  380. package/dist/skins/ledger/messages.d.ts +17 -0
  381. package/dist/skins/ledger/messages.d.ts.map +1 -0
  382. package/dist/skins/ledger/messages.js +62 -0
  383. package/dist/skins/ledger/messages.js.map +1 -0
  384. package/dist/skins/ledger/status.d.ts +10 -0
  385. package/dist/skins/ledger/status.d.ts.map +1 -0
  386. package/dist/skins/ledger/status.js +302 -0
  387. package/dist/skins/ledger/status.js.map +1 -0
  388. package/dist/skins/ledger/tools.d.ts +20 -0
  389. package/dist/skins/ledger/tools.d.ts.map +1 -0
  390. package/dist/skins/ledger/tools.js +101 -0
  391. package/dist/skins/ledger/tools.js.map +1 -0
  392. package/dist/skins/names.d.ts +10 -0
  393. package/dist/skins/names.d.ts.map +1 -0
  394. package/dist/skins/names.js +9 -0
  395. package/dist/skins/names.js.map +1 -0
  396. package/dist/skins/rail/activity.d.ts +8 -0
  397. package/dist/skins/rail/activity.d.ts.map +1 -0
  398. package/dist/skins/rail/activity.js +23 -0
  399. package/dist/skins/rail/activity.js.map +1 -0
  400. package/dist/skins/rail/approval.d.ts +16 -0
  401. package/dist/skins/rail/approval.d.ts.map +1 -0
  402. package/dist/skins/rail/approval.js +45 -0
  403. package/dist/skins/rail/approval.js.map +1 -0
  404. package/dist/skins/rail/body.d.ts +19 -0
  405. package/dist/skins/rail/body.d.ts.map +1 -0
  406. package/dist/skins/rail/body.js +69 -0
  407. package/dist/skins/rail/body.js.map +1 -0
  408. package/dist/skins/rail/index.d.ts +12 -0
  409. package/dist/skins/rail/index.d.ts.map +1 -0
  410. package/dist/skins/rail/index.js +44 -0
  411. package/dist/skins/rail/index.js.map +1 -0
  412. package/dist/skins/rail/live-region.d.ts +19 -0
  413. package/dist/skins/rail/live-region.d.ts.map +1 -0
  414. package/dist/skins/rail/live-region.js +88 -0
  415. package/dist/skins/rail/live-region.js.map +1 -0
  416. package/dist/skins/rail/messages.d.ts +21 -0
  417. package/dist/skins/rail/messages.d.ts.map +1 -0
  418. package/dist/skins/rail/messages.js +90 -0
  419. package/dist/skins/rail/messages.js.map +1 -0
  420. package/dist/skins/rail/parts.d.ts +25 -0
  421. package/dist/skins/rail/parts.d.ts.map +1 -0
  422. package/dist/skins/rail/parts.js +37 -0
  423. package/dist/skins/rail/parts.js.map +1 -0
  424. package/dist/skins/rail/status.d.ts +10 -0
  425. package/dist/skins/rail/status.d.ts.map +1 -0
  426. package/dist/skins/rail/status.js +147 -0
  427. package/dist/skins/rail/status.js.map +1 -0
  428. package/dist/skins/rail/tools.d.ts +28 -0
  429. package/dist/skins/rail/tools.d.ts.map +1 -0
  430. package/dist/skins/rail/tools.js +85 -0
  431. package/dist/skins/rail/tools.js.map +1 -0
  432. package/dist/skins/registry.d.ts +6 -0
  433. package/dist/skins/registry.d.ts.map +1 -0
  434. package/dist/skins/registry.js +15 -0
  435. package/dist/skins/registry.js.map +1 -0
  436. package/dist/skins/shared/gauge.d.ts +17 -0
  437. package/dist/skins/shared/gauge.d.ts.map +1 -0
  438. package/dist/skins/shared/gauge.js +29 -0
  439. package/dist/skins/shared/gauge.js.map +1 -0
  440. package/dist/skins/shared/limits.d.ts +3 -0
  441. package/dist/skins/shared/limits.d.ts.map +1 -0
  442. package/dist/skins/shared/limits.js +3 -0
  443. package/dist/skins/shared/limits.js.map +1 -0
  444. package/dist/skins/shared/spinner.d.ts +14 -0
  445. package/dist/skins/shared/spinner.d.ts.map +1 -0
  446. package/dist/skins/shared/spinner.js +25 -0
  447. package/dist/skins/shared/spinner.js.map +1 -0
  448. package/dist/skins/testing/conformance.d.ts +8 -0
  449. package/dist/skins/testing/conformance.d.ts.map +1 -0
  450. package/dist/skins/testing/conformance.js +34 -0
  451. package/dist/skins/testing/conformance.js.map +1 -0
  452. package/dist/skins/testing/scenes.d.ts +45 -0
  453. package/dist/skins/testing/scenes.d.ts.map +1 -0
  454. package/dist/skins/testing/scenes.js +466 -0
  455. package/dist/skins/testing/scenes.js.map +1 -0
  456. package/dist/skins/types.d.ts +294 -0
  457. package/dist/skins/types.d.ts.map +1 -0
  458. package/dist/skins/types.js +10 -0
  459. package/dist/skins/types.js.map +1 -0
  460. package/dist/skins/zen/activity.d.ts +7 -0
  461. package/dist/skins/zen/activity.d.ts.map +1 -0
  462. package/dist/skins/zen/activity.js +22 -0
  463. package/dist/skins/zen/activity.js.map +1 -0
  464. package/dist/skins/zen/approval.d.ts +20 -0
  465. package/dist/skins/zen/approval.d.ts.map +1 -0
  466. package/dist/skins/zen/approval.js +67 -0
  467. package/dist/skins/zen/approval.js.map +1 -0
  468. package/dist/skins/zen/body.d.ts +14 -0
  469. package/dist/skins/zen/body.d.ts.map +1 -0
  470. package/dist/skins/zen/body.js +82 -0
  471. package/dist/skins/zen/body.js.map +1 -0
  472. package/dist/skins/zen/index.d.ts +12 -0
  473. package/dist/skins/zen/index.d.ts.map +1 -0
  474. package/dist/skins/zen/index.js +44 -0
  475. package/dist/skins/zen/index.js.map +1 -0
  476. package/dist/skins/zen/live-region.d.ts +21 -0
  477. package/dist/skins/zen/live-region.d.ts.map +1 -0
  478. package/dist/skins/zen/live-region.js +77 -0
  479. package/dist/skins/zen/live-region.js.map +1 -0
  480. package/dist/skins/zen/messages.d.ts +27 -0
  481. package/dist/skins/zen/messages.d.ts.map +1 -0
  482. package/dist/skins/zen/messages.js +81 -0
  483. package/dist/skins/zen/messages.js.map +1 -0
  484. package/dist/skins/zen/status.d.ts +11 -0
  485. package/dist/skins/zen/status.d.ts.map +1 -0
  486. package/dist/skins/zen/status.js +177 -0
  487. package/dist/skins/zen/status.js.map +1 -0
  488. package/dist/skins/zen/style.d.ts +26 -0
  489. package/dist/skins/zen/style.d.ts.map +1 -0
  490. package/dist/skins/zen/style.js +14 -0
  491. package/dist/skins/zen/style.js.map +1 -0
  492. package/dist/skins/zen/tools.d.ts +23 -0
  493. package/dist/skins/zen/tools.d.ts.map +1 -0
  494. package/dist/skins/zen/tools.js +81 -0
  495. package/dist/skins/zen/tools.js.map +1 -0
  496. package/dist/skins/zen/width.d.ts +12 -0
  497. package/dist/skins/zen/width.d.ts.map +1 -0
  498. package/dist/skins/zen/width.js +27 -0
  499. package/dist/skins/zen/width.js.map +1 -0
  500. package/dist/theme/ThemeContext.d.ts +26 -0
  501. package/dist/theme/ThemeContext.d.ts.map +1 -0
  502. package/dist/theme/ThemeContext.js +24 -0
  503. package/dist/theme/ThemeContext.js.map +1 -0
  504. package/dist/theme/detect-terminal-background.d.ts +29 -0
  505. package/dist/theme/detect-terminal-background.d.ts.map +1 -0
  506. package/dist/theme/detect-terminal-background.js +72 -0
  507. package/dist/theme/detect-terminal-background.js.map +1 -0
  508. package/dist/theme/palettes.d.ts +84 -0
  509. package/dist/theme/palettes.d.ts.map +1 -0
  510. package/dist/theme/palettes.js +175 -0
  511. package/dist/theme/palettes.js.map +1 -0
  512. package/dist/theme/resolve-theme.d.ts +44 -0
  513. package/dist/theme/resolve-theme.d.ts.map +1 -0
  514. package/dist/theme/resolve-theme.js +72 -0
  515. package/dist/theme/resolve-theme.js.map +1 -0
  516. package/dist/tools/file/create-file.js +1 -1
  517. package/dist/tools/file/create-file.js.map +1 -1
  518. package/dist/tools/system/run-code/run-code-runtime.d.ts.map +1 -1
  519. package/dist/tools/system/run-code/run-code-runtime.js +87 -6
  520. package/dist/tools/system/run-code/run-code-runtime.js.map +1 -1
  521. package/dist/utils/shell/execute-shell.js +1 -1
  522. package/dist/utils/shell/execute-shell.js.map +1 -1
  523. package/dist/utils/value-suggestions.d.ts.map +1 -1
  524. package/dist/utils/value-suggestions.js +14 -0
  525. package/dist/utils/value-suggestions.js.map +1 -1
  526. package/package.json +3 -4
@@ -0,0 +1,302 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ import { GLYPH_WARNING, useTheme } from '../../components/theme.js';
4
+ import { truncateTerminalText } from '../../components/layout/terminal-text-budget.js';
5
+ import { formatContextUsage } from '../../utils/ai/token-usage.js';
6
+ import { CONTEXT_WARN_PERCENT, contextTone, gaugeBar } from '../shared/gauge.js';
7
+ import { Chip } from './chip.js';
8
+ /**
9
+ * The footer is a bar of chips. Every glyph used here is a single cell, so a text's
10
+ * width is its length in code points and a row can be budgeted exactly; the
11
+ * conservative double-width estimate would collapse the bar far too eagerly.
12
+ */
13
+ const cells = (text) => Array.from(text).length;
14
+ const CHIP_PADDING = 2;
15
+ const CHIP_GAP = 1;
16
+ /** Text that sits on a chip surface needs more contrast than `textSubtle` has; promote it. */
17
+ const onSurface = (tone) => tone === undefined || tone === 'textSubtle' ? 'textMuted' : tone;
18
+ const chipWidth = (chip) => chip.pieces.reduce((sum, piece, index) => sum + cells(piece.text) + (index > 0 ? 1 : 0), CHIP_PADDING);
19
+ const groupWidth = (chips) => chips.reduce((sum, chip, index) => sum + chipWidth(chip) + (index > 0 ? CHIP_GAP : 0), 0);
20
+ /**
21
+ * Drops pieces in ascending tier order until the group fits `budget` columns, then,
22
+ * only if that is not enough, clips the truncatable piece. A chip left with no pieces
23
+ * disappears. If it still does not fit the row wraps (see `ChipRow`); nothing is lost.
24
+ */
25
+ function fitChips(chips, budget) {
26
+ let current = chips.map((chip) => ({ ...chip, pieces: [...chip.pieces] }));
27
+ const prune = () => {
28
+ current = current.filter((chip) => chip.pieces.length > 0);
29
+ };
30
+ while (groupWidth(current) > budget) {
31
+ let victim;
32
+ for (const chip of current) {
33
+ for (const piece of chip.pieces) {
34
+ if (piece.tier !== undefined && (victim === undefined || piece.tier < victim.piece.tier)) {
35
+ victim = { chip, piece };
36
+ }
37
+ }
38
+ }
39
+ if (!victim)
40
+ break;
41
+ victim.chip.pieces = victim.chip.pieces.filter((piece) => piece !== victim.piece);
42
+ prune();
43
+ }
44
+ const overflow = groupWidth(current) - budget;
45
+ if (overflow > 0) {
46
+ for (const chip of current) {
47
+ chip.pieces = chip.pieces.map((piece) => piece.truncatable
48
+ ? { ...piece, text: truncateTerminalText(piece.text, Math.max(1, cells(piece.text) - overflow)) }
49
+ : piece);
50
+ }
51
+ }
52
+ return current;
53
+ }
54
+ const ChipView = ({ chip }) => {
55
+ const theme = useTheme();
56
+ if (chip.solid) {
57
+ return (React.createElement(Chip, { solid: true, tone: chip.pieces[0].tone }, chip.pieces.map((piece) => piece.text).join(' ')));
58
+ }
59
+ return (React.createElement(Chip, { tone: "textMuted" }, chip.pieces.map((piece, index) => (React.createElement(React.Fragment, { key: index },
60
+ index > 0 ? ' ' : '',
61
+ React.createElement(Text, { color: theme[piece.tone], bold: piece.bold }, piece.text))))));
62
+ };
63
+ /** Wrapping is the safety net, not the plan: a budget that is off by a cell costs a row, never a broken line. */
64
+ const ChipRow = ({ chips }) => (React.createElement(Box, { flexWrap: "wrap", columnGap: CHIP_GAP }, chips.map((chip) => (React.createElement(Box, { key: chip.id },
65
+ React.createElement(ChipView, { chip: chip }))))));
66
+ // --- Building the chips from the container's segments --------------------------------
67
+ const segmentMap = (segments) => new Map(segments.filter((segment) => segment.text.trim() !== '').map((segment) => [segment.id, segment]));
68
+ const KNOWN_CONFIG = new Set([
69
+ 'ssh-marker',
70
+ 'ssh-detail',
71
+ 'mode',
72
+ 'queue',
73
+ 'provider-model',
74
+ 'reasoning',
75
+ 'mentor',
76
+ 'safety',
77
+ ]);
78
+ const KNOWN_METRICS = new Set(['tokens', 'speed', 'cache', 'context', 'cost']);
79
+ /** A segment the skin does not know is still shown, as its own chip, never dropped. */
80
+ const unknownChips = (segments, known) => segments
81
+ .filter((segment) => segment.text.trim() !== '' && !known.has(segment.id))
82
+ .map((segment) => ({
83
+ id: segment.id,
84
+ pieces: [{ text: segment.text.trim(), tone: onSurface(segment.tone), bold: segment.bold, tier: segment.tier }],
85
+ }));
86
+ function configChips(config) {
87
+ const by = segmentMap(config);
88
+ const chips = [];
89
+ const safety = by.get('safety');
90
+ if (safety) {
91
+ const danger = safety.tone === 'danger';
92
+ chips.push({
93
+ id: 'safety',
94
+ solid: true,
95
+ pieces: [
96
+ {
97
+ text: `${danger ? `${GLYPH_WARNING} ` : ''}${safety.text.trim()}`,
98
+ tone: safety.tone ?? 'success',
99
+ bold: true,
100
+ },
101
+ ],
102
+ });
103
+ }
104
+ const sshMarker = by.get('ssh-marker');
105
+ const sshDetail = by.get('ssh-detail');
106
+ if (sshMarker || sshDetail) {
107
+ chips.push({
108
+ id: 'ssh',
109
+ pieces: [
110
+ ...(sshMarker
111
+ ? [{ text: sshMarker.text.trim(), tone: onSurface(sshMarker.tone), bold: true, tier: sshMarker.tier }]
112
+ : []),
113
+ ...(sshDetail ? [{ text: sshDetail.text.trim(), tone: onSurface(sshDetail.tone), tier: sshDetail.tier }] : []),
114
+ ],
115
+ });
116
+ }
117
+ const mode = by.get('mode');
118
+ if (mode) {
119
+ chips.push({ id: 'mode', pieces: [{ text: mode.text.trim(), tone: onSurface(mode.tone), bold: true }] });
120
+ }
121
+ const queue = by.get('queue');
122
+ if (queue) {
123
+ chips.push({
124
+ id: 'queue',
125
+ pieces: [
126
+ { text: queue.text.trim().replace(/^\[|\]$/g, ''), tone: onSurface(queue.tone), bold: true, tier: queue.tier },
127
+ ],
128
+ });
129
+ }
130
+ const model = by.get('provider-model');
131
+ const reasoning = by.get('reasoning');
132
+ if (model || reasoning) {
133
+ chips.push({
134
+ id: 'model',
135
+ pieces: [
136
+ ...(model ? [{ text: model.text.trim(), tone: onSurface(model.tone), bold: true, truncatable: true }] : []),
137
+ ...(reasoning
138
+ ? [
139
+ {
140
+ text: reasoning.text.trim().replace(/^·\s*/, ''),
141
+ tone: onSurface(reasoning.tone),
142
+ tier: reasoning.tier,
143
+ },
144
+ ]
145
+ : []),
146
+ ],
147
+ });
148
+ }
149
+ const mentor = by.get('mentor');
150
+ if (mentor) {
151
+ chips.push({
152
+ id: 'mentor',
153
+ pieces: [
154
+ { text: 'mentor', tone: 'textMuted', tier: mentor.tier },
155
+ { text: mentor.text.trim(), tone: onSurface(mentor.tone), bold: true, tier: mentor.tier },
156
+ ],
157
+ });
158
+ }
159
+ return [...chips, ...unknownChips(config, KNOWN_CONFIG)];
160
+ }
161
+ const CONTEXT_BAR_CELLS = 6;
162
+ /** A usage tone, kept quiet until it matters; a warning also gains a glyph so it survives `mono`. */
163
+ const usageTone = (percent) => {
164
+ const tone = contextTone(percent);
165
+ return { tone: onSurface(tone), warn: percent !== undefined && percent >= CONTEXT_WARN_PERCENT };
166
+ };
167
+ function metricChips(view) {
168
+ const by = segmentMap(view.metrics);
169
+ const { gauges } = view;
170
+ const chips = [];
171
+ const context = by.get('context');
172
+ if (gauges.contextPercent !== undefined) {
173
+ const { tone, warn } = usageTone(gauges.contextPercent);
174
+ const percent = Math.round(gauges.contextPercent);
175
+ const detail = gauges.contextUsedTokens !== undefined
176
+ ? formatContextUsage(gauges.contextUsedTokens, gauges.contextWindowTokens)
177
+ : undefined;
178
+ chips.push({
179
+ id: 'context',
180
+ pieces: [
181
+ { text: 'ctx', tone: 'textMuted', tier: 3 },
182
+ { text: gaugeBar(percent, CONTEXT_BAR_CELLS), tone, tier: 2.5 },
183
+ { text: `${warn ? `${GLYPH_WARNING} ` : ''}${percent}%`, tone, bold: warn, tier: 3.1 },
184
+ ...(detail ? [{ text: detail, tone: 'textMuted', tier: 1.5 }] : []),
185
+ ],
186
+ });
187
+ }
188
+ else if (context) {
189
+ chips.push({ id: 'context', pieces: [{ text: context.text.trim(), tone: 'textMuted', tier: context.tier }] });
190
+ }
191
+ const cache = by.get('cache');
192
+ if (cache) {
193
+ chips.push({
194
+ id: 'cache',
195
+ pieces: [{ text: cache.text.trim(), tone: onSurface(cache.tone), bold: cache.bold, tier: cache.tier }],
196
+ });
197
+ }
198
+ const tokens = by.get('tokens');
199
+ const speed = by.get('speed');
200
+ if (tokens || speed) {
201
+ chips.push({
202
+ id: 'tokens',
203
+ pieces: [
204
+ ...(tokens
205
+ ? [{ text: tokens.text.trim(), tone: onSurface(tokens.tone), bold: tokens.bold, tier: tokens.tier }]
206
+ : []),
207
+ ...(speed
208
+ ? [{ text: speed.text.trim().replace(/^\(|\)$/g, ''), tone: onSurface(speed.tone), tier: speed.tier }]
209
+ : []),
210
+ ],
211
+ });
212
+ }
213
+ const cost = by.get('cost');
214
+ if (cost) {
215
+ chips.push({ id: 'cost', pieces: [{ text: cost.text.trim(), tone: onSurface(cost.tone), tier: cost.tier }] });
216
+ }
217
+ return [...chips, ...unknownChips(view.metrics, KNOWN_METRICS)];
218
+ }
219
+ /** Richest first; the row takes the first one that fits on a single line. */
220
+ const QUOTA_LEVELS = [
221
+ { cells: 8, reset: true, label: true },
222
+ { cells: 6, reset: true, label: true },
223
+ { cells: 6, reset: true, label: false },
224
+ { cells: 4, reset: true, label: false },
225
+ { cells: 4, reset: false, label: false },
226
+ ];
227
+ const QUOTA_LABEL = 'quota ';
228
+ const QUOTA_SEPARATOR = ' · ';
229
+ const quotaPercent = (window) => Math.round(window.percent);
230
+ const quotaWindowText = (window, level) => {
231
+ const percent = quotaPercent(window);
232
+ const warn = percent >= CONTEXT_WARN_PERCENT;
233
+ return [
234
+ window.label,
235
+ gaugeBar(percent, level.cells),
236
+ `${warn ? `${GLYPH_WARNING} ` : ''}${percent}%`,
237
+ ...(level.reset && window.resetText ? [`→ ${window.resetText}`] : []),
238
+ ].join(' ');
239
+ };
240
+ const quotaRowWidth = (windows, level) => (level.label ? QUOTA_LABEL.length : 0) +
241
+ windows.reduce((sum, window, index) => sum + cells(quotaWindowText(window, level)) + (index > 0 ? QUOTA_SEPARATOR.length : 0), 0);
242
+ const QuotaWindowView = ({ window, level }) => {
243
+ const theme = useTheme();
244
+ const percent = quotaPercent(window);
245
+ const { tone, warn } = usageTone(percent);
246
+ return (React.createElement(Text, null,
247
+ React.createElement(Text, { color: theme.textMuted, bold: true }, window.label),
248
+ ' ',
249
+ React.createElement(Text, { color: theme[tone] }, gaugeBar(percent, level.cells)),
250
+ ' ',
251
+ React.createElement(Text, { color: theme[tone], bold: warn },
252
+ warn ? `${GLYPH_WARNING} ` : '',
253
+ percent,
254
+ "%"),
255
+ level.reset && window.resetText ? React.createElement(Text, { color: theme.textSubtle },
256
+ " \u2192 ",
257
+ window.resetText) : null));
258
+ };
259
+ const QuotaRow = ({ windows, budget }) => {
260
+ const theme = useTheme();
261
+ const level = QUOTA_LEVELS.find((candidate) => quotaRowWidth(windows, candidate) <= budget);
262
+ // Nothing fits on one line: stack the windows, one per row, rather than clip any.
263
+ if (!level) {
264
+ const stacked = { cells: 6, reset: true, label: false };
265
+ return (React.createElement(Box, { flexDirection: "column" }, windows.map((window) => (React.createElement(QuotaWindowView, { key: window.label, window: window, level: stacked })))));
266
+ }
267
+ return (React.createElement(Text, { wrap: "truncate" },
268
+ level.label ? React.createElement(Text, { color: theme.textSubtle }, QUOTA_LABEL) : null,
269
+ windows.map((window, index) => (React.createElement(React.Fragment, { key: window.label },
270
+ index > 0 ? React.createElement(Text, { color: theme.textSubtle }, QUOTA_SEPARATOR) : null,
271
+ React.createElement(QuotaWindowView, { window: window, level: level }))))));
272
+ };
273
+ const AlertRow = ({ alerts }) => {
274
+ const theme = useTheme();
275
+ return (React.createElement(Text, { wrap: "wrap" }, alerts.map((alert, index) => (React.createElement(React.Fragment, { key: alert.id },
276
+ index > 0 ? ' ' : '',
277
+ alert.parts.map((part, partIndex) => (React.createElement(Text, { key: partIndex, color: theme[part.tone], bold: part.bold }, part.text))))))));
278
+ };
279
+ /**
280
+ * A footer made of chips. Configuration on the left, this turn's numbers on the right
281
+ * when both fit on a row, otherwise stacked; then a quota row of mini gauges when the
282
+ * provider reports windows, then alerts on a row of their own. Each group is fitted to
283
+ * the row by dropping its lowest-tier pieces first, the same order the container ranks them.
284
+ */
285
+ export const LedgerStatusBar = (view) => {
286
+ const theme = useTheme();
287
+ const budget = Math.max(1, view.columns - 2);
288
+ const config = fitChips(configChips(view.config), budget);
289
+ const metrics = fitChips(metricChips(view), budget);
290
+ const sideBySide = groupWidth(config) + CHIP_GAP + groupWidth(metrics) <= budget;
291
+ const { quotaWindows } = view.gauges;
292
+ return (React.createElement(Box, { marginTop: 1, flexDirection: "column", width: "100%", paddingX: 1 },
293
+ sideBySide ? (React.createElement(Box, { width: "100%" },
294
+ React.createElement(ChipRow, { chips: config }),
295
+ React.createElement(Box, { flexGrow: 1 }),
296
+ React.createElement(ChipRow, { chips: metrics }))) : (React.createElement(React.Fragment, null,
297
+ config.length > 0 && React.createElement(ChipRow, { chips: config }),
298
+ metrics.length > 0 && React.createElement(ChipRow, { chips: metrics }))),
299
+ quotaWindows.length > 0 ? (React.createElement(QuotaRow, { windows: quotaWindows, budget: budget })) : view.quotaText ? (React.createElement(Text, { color: theme.textSubtle, wrap: "wrap" }, view.quotaText)) : null,
300
+ view.alerts.length > 0 && React.createElement(AlertRow, { alerts: view.alerts })));
301
+ };
302
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../source/skins/ledger/status.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { type FC } from 'react';
2
+ import type { ToolFrameProps, ToolGroupSummaryView, ToolHeaderProps } from '../types.js';
3
+ export declare function nameColumnWidth(columns: number): number;
4
+ /**
5
+ * Concise calls are bare rows: a run of them is a table. Standard calls get a left
6
+ * gutter so a header and the output beneath it read as one unit; the gutter turns
7
+ * danger-coloured (and stays a rule, not only a colour) when the call did not succeed.
8
+ */
9
+ export declare const LedgerToolFrame: FC<ToolFrameProps>;
10
+ /**
11
+ * `glyph tool-name action meta trailing`. The glyph and the name are fixed
12
+ * columns; the action takes the rest and wraps under itself, never under the glyph.
13
+ */
14
+ export declare const LedgerToolHeader: FC<ToolHeaderProps>;
15
+ /**
16
+ * One compact row for a run of calls; failures sit beneath it, indented under the
17
+ * summary text, in the danger tone with the failure glyph so they read without colour.
18
+ */
19
+ export declare const LedgerToolGroupSummary: FC<ToolGroupSummaryView>;
20
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../source/skins/ledger/tools.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAUzF,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAIvD;AAuBD;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,cAAc,CAiB9C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,eAAe,CAsDhD,CAAC;AAQF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,oBAAoB,CA6B3D,CAAC"}
@@ -0,0 +1,101 @@
1
+ import React from 'react';
2
+ import { Box, Text, useStdout } from 'ink';
3
+ import { TOOL_STATUS_GLYPH, useTheme } from '../../components/theme.js';
4
+ import { truncateTerminalText } from '../../components/layout/terminal-text-budget.js';
5
+ import { BRAILLE_SPINNER, useSpinnerFrame } from '../shared/spinner.js';
6
+ /**
7
+ * Width of the tool-name column for a terminal of this width. It depends only on
8
+ * the terminal, never on the call, which is what makes the action column start in
9
+ * the same place on every row of a run. Below `NAME_COLUMN_MIN_COLUMNS` the column
10
+ * goes: the action already names its verb, and the columns are worth more to it.
11
+ */
12
+ const NAME_COLUMN_MIN_COLUMNS = 50;
13
+ export function nameColumnWidth(columns) {
14
+ if (columns < NAME_COLUMN_MIN_COLUMNS)
15
+ return 0;
16
+ if (columns < 80)
17
+ return 10;
18
+ return 12;
19
+ }
20
+ /** The only animated piece: a spinner while the call runs. Everything settled is static text. */
21
+ const RunningGlyph = () => {
22
+ const theme = useTheme();
23
+ const frame = useSpinnerFrame(BRAILLE_SPINNER, true);
24
+ return (React.createElement(Text, { color: theme.toolStatus.running, bold: true }, frame));
25
+ };
26
+ const StatusGlyph = ({ status }) => {
27
+ const theme = useTheme();
28
+ if (status === 'running')
29
+ return React.createElement(RunningGlyph, null);
30
+ return (React.createElement(Text, { color: theme.toolStatus[status], bold: true }, TOOL_STATUS_GLYPH[status]));
31
+ };
32
+ /**
33
+ * Concise calls are bare rows: a run of them is a table. Standard calls get a left
34
+ * gutter so a header and the output beneath it read as one unit; the gutter turns
35
+ * danger-coloured (and stays a rule, not only a colour) when the call did not succeed.
36
+ */
37
+ export const LedgerToolFrame = ({ status, display, children }) => {
38
+ const theme = useTheme();
39
+ if (display === 'concise')
40
+ return React.createElement(React.Fragment, null, children);
41
+ const failed = status === 'failed' || status === 'rejected';
42
+ return (React.createElement(Box, { flexDirection: "column", borderStyle: failed ? 'bold' : 'single', borderTop: false, borderBottom: false, borderRight: false, borderColor: failed ? theme.danger : theme.border, paddingLeft: 1 }, children));
43
+ };
44
+ /**
45
+ * `glyph tool-name action meta trailing`. The glyph and the name are fixed
46
+ * columns; the action takes the rest and wraps under itself, never under the glyph.
47
+ */
48
+ export const LedgerToolHeader = ({ status, display, toolName, nested, action, meta, trailing, textColor, }) => {
49
+ const theme = useTheme();
50
+ const { stdout } = useStdout();
51
+ const columns = stdout.columns ?? 100;
52
+ if (nested) {
53
+ return (React.createElement(Box, null,
54
+ React.createElement(Text, { wrap: "truncate", color: theme.textSubtle },
55
+ React.createElement(StatusGlyph, { status: status }),
56
+ " ",
57
+ action,
58
+ meta)));
59
+ }
60
+ const nameWidth = nameColumnWidth(columns);
61
+ const settled = status !== 'pending' && status !== 'running';
62
+ const name = truncateTerminalText(toolName ?? 'shell', nameWidth);
63
+ // Settled rows stay quiet and a concise failure is already loud in its glyph; only a
64
+ // call still in flight, or a failure whose full output follows, colours its text.
65
+ const actionColor = settled && (status === 'completed' || display === 'concise') ? textColor || theme.text : theme.toolStatus[status];
66
+ return (React.createElement(Box, null,
67
+ React.createElement(Box, { flexShrink: 0, marginRight: 1 },
68
+ React.createElement(StatusGlyph, { status: status })),
69
+ nameWidth > 0 && (React.createElement(Box, { width: nameWidth, flexShrink: 0, marginRight: 1 },
70
+ React.createElement(Text, { color: theme.textMuted, wrap: "truncate" }, name))),
71
+ React.createElement(Box, { flexShrink: 1, flexGrow: 1 },
72
+ React.createElement(Text, { color: actionColor },
73
+ action,
74
+ meta,
75
+ trailing))));
76
+ };
77
+ const GROUP_MARKER_KIND = {
78
+ completed: 'completed',
79
+ partial: 'completed',
80
+ failed: 'failed',
81
+ };
82
+ /**
83
+ * One compact row for a run of calls; failures sit beneath it, indented under the
84
+ * summary text, in the danger tone with the failure glyph so they read without colour.
85
+ */
86
+ export const LedgerToolGroupSummary = ({ status, summary, failures }) => {
87
+ const theme = useTheme();
88
+ const kind = GROUP_MARKER_KIND[status];
89
+ return (React.createElement(Box, { flexDirection: "column" },
90
+ React.createElement(Box, null,
91
+ React.createElement(Box, { flexShrink: 0, marginRight: 1 },
92
+ React.createElement(Text, { color: theme.toolStatus[kind], bold: true }, TOOL_STATUS_GLYPH[kind])),
93
+ React.createElement(Box, { flexShrink: 1 },
94
+ React.createElement(Text, { color: status === 'failed' ? theme.danger : theme.textMuted }, summary))),
95
+ failures !== '' && status !== 'failed' && (React.createElement(Box, null,
96
+ React.createElement(Box, { flexShrink: 0, marginRight: 1 },
97
+ React.createElement(Text, { color: theme.toolStatus.failed, bold: true }, TOOL_STATUS_GLYPH.failed)),
98
+ React.createElement(Box, { flexShrink: 1 },
99
+ React.createElement(Text, { color: theme.danger }, failures))))));
100
+ };
101
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../source/skins/ledger/tools.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The names a `ui.skin` setting may hold. Kept free of React so the settings
3
+ * schema can import it without pulling the UI into the service layer; the
4
+ * skins themselves are registered in `registry.ts`, and a test pins the two lists
5
+ * together.
6
+ */
7
+ export declare const SKIN_NAMES: readonly ['classic', 'rail', 'cards', 'ledger', 'zen'];
8
+ export type SkinName = (typeof SKIN_NAMES)[number];
9
+ export declare const DEFAULT_SKIN_NAME: SkinName;
10
+ //# sourceMappingURL=names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../source/skins/names.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,UAAU,YAAI,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAU,CAAC;AACjF,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,eAAO,MAAM,iBAAiB,EAAE,QAAoB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * The names a `ui.skin` setting may hold. Kept free of React so the settings
3
+ * schema can import it without pulling the UI into the service layer; the
4
+ * skins themselves are registered in `registry.ts`, and a test pins the two lists
5
+ * together.
6
+ */
7
+ export const SKIN_NAMES = ['classic', 'rail', 'cards', 'ledger', 'zen'];
8
+ export const DEFAULT_SKIN_NAME = 'classic';
9
+ //# sourceMappingURL=names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.js","sourceRoot":"","sources":["../../source/skins/names.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAU,CAAC;AAGjF,MAAM,CAAC,MAAM,iBAAiB,GAAa,SAAS,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type FC } from 'react';
2
+ import type { ShellActivityProps, TaskPanelProps } from '../types.js';
3
+ /** `$ command`: the shell marker the prompt uses, then the command, quiet. */
4
+ export declare const RailShellActivity: FC<ShellActivityProps>;
5
+ /** The tasks sit behind a thin rail, which costs two columns. */
6
+ export declare const RAIL_TASK_PANEL_GUTTER = 2;
7
+ export declare const RailTaskPanel: FC<TaskPanelProps>;
8
+ //# sourceMappingURL=activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../../source/skins/rail/activity.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGtE,8EAA8E;AAC9E,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,kBAAkB,CAcpD,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,cAAc,CAY5C,CAAC"}
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ import { useTheme } from '../../components/theme.js';
4
+ import { RAIL_THIN, Rail } from './parts.js';
5
+ /** `$ command`: the shell marker the prompt uses, then the command, quiet. */
6
+ export const RailShellActivity = ({ command }) => {
7
+ const theme = useTheme();
8
+ return (React.createElement(Box, null,
9
+ React.createElement(Box, { width: 2, flexShrink: 0 },
10
+ React.createElement(Text, { color: theme.danger, bold: true }, "$")),
11
+ React.createElement(Box, { flexShrink: 1 },
12
+ React.createElement(Text, { color: theme.textMuted }, command))));
13
+ };
14
+ /** The tasks sit behind a thin rail, which costs two columns. */
15
+ export const RAIL_TASK_PANEL_GUTTER = 2;
16
+ export const RailTaskPanel = ({ header, children }) => {
17
+ const theme = useTheme();
18
+ return (React.createElement(Box, { marginBottom: 1 },
19
+ React.createElement(Rail, { glyph: RAIL_THIN, color: theme.accentAlt },
20
+ React.createElement(Text, { color: theme.textMuted, bold: true }, header),
21
+ children)));
22
+ };
23
+ //# sourceMappingURL=activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.js","sourceRoot":"","sources":["../../../source/skins/rail/activity.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAE7C,8EAA8E;AAC9E,MAAM,CAAC,MAAM,iBAAiB,GAA2B,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IACvE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO,CACL,oBAAC,GAAG;QACF,oBAAC,GAAG,IAAC,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;YAC1B,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,cAExB,CACH;QACN,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC;YAChB,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,SAAS,IAAG,OAAO,CAAQ,CAC1C,CACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,iEAAiE;AACjE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAExC,MAAM,CAAC,MAAM,aAAa,GAAuB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;IACxE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO,CACL,oBAAC,GAAG,IAAC,YAAY,EAAE,CAAC;QAClB,oBAAC,IAAI,IAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS;YAC5C,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,UAC/B,MAAM,CACF;YACN,QAAQ,CACJ,CACH,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type FC } from 'react';
2
+ import type { ApprovalChoicesProps, ApprovalFrameProps } from '../types.js';
3
+ /**
4
+ * A rail down the whole height of the request, in place of a box. The two classes
5
+ * differ in shape as well as colour, so they are told apart in `mono` and by a
6
+ * glance: caution is a half-block rail under a plain title; danger is a solid
7
+ * block rail under a title that begins with `▲`.
8
+ */
9
+ export declare const RailApprovalFrame: FC<ApprovalFrameProps>;
10
+ /**
11
+ * The question, then a numbered list with the selected row in its tone, then the
12
+ * selected option's description as one dim line, in place of a side pane. The
13
+ * list-only layout (no description to show) is the same list without the line.
14
+ */
15
+ export declare const RailApprovalChoices: FC<ApprovalChoicesProps>;
16
+ //# sourceMappingURL=approval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../../../source/skins/rail/approval.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAG5E;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,kBAAkB,CAapD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,oBAAoB,CA4CxD,CAAC"}
@@ -0,0 +1,45 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ import { GLYPH_SELECTED, GLYPH_WARNING, useTheme } from '../../components/theme.js';
4
+ import { RAIL_HEAVY, RAIL_SOLID, Rail } from './parts.js';
5
+ /**
6
+ * A rail down the whole height of the request, in place of a box. The two classes
7
+ * differ in shape as well as colour, so they are told apart in `mono` and by a
8
+ * glance: caution is a half-block rail under a plain title; danger is a solid
9
+ * block rail under a title that begins with `▲`.
10
+ */
11
+ export const RailApprovalFrame = ({ tone, header, subheader, children }) => {
12
+ const theme = useTheme();
13
+ const danger = tone === 'danger';
14
+ return (React.createElement(Rail, { glyph: danger ? RAIL_SOLID : RAIL_HEAVY, color: danger ? theme.danger : theme.warning },
15
+ React.createElement(Text, { bold: true, color: danger ? theme.danger : undefined },
16
+ danger ? `${GLYPH_WARNING} ` : '',
17
+ header),
18
+ subheader,
19
+ children));
20
+ };
21
+ /**
22
+ * The question, then a numbered list with the selected row in its tone, then the
23
+ * selected option's description as one dim line, in place of a side pane. The
24
+ * list-only layout (no description to show) is the same list without the line.
25
+ */
26
+ export const RailApprovalChoices = ({ question, options, selectedIndex, layout, description, }) => {
27
+ const theme = useTheme();
28
+ const note = layout === 'two-pane' ? description?.text : undefined;
29
+ return (React.createElement(Box, { flexDirection: "column" },
30
+ layout === 'two-pane' && question !== undefined && React.createElement(Text, { bold: true }, question),
31
+ options.map((option, index) => {
32
+ const selected = index === selectedIndex;
33
+ const tone = theme[option.tone];
34
+ return (React.createElement(Box, { key: option.label },
35
+ React.createElement(Box, { width: 2, flexShrink: 0 },
36
+ React.createElement(Text, { color: theme.accent, bold: true }, selected ? GLYPH_SELECTED : ' ')),
37
+ React.createElement(Box, { width: 2, flexShrink: 0 },
38
+ React.createElement(Text, { color: selected ? tone : theme.textSubtle, bold: selected }, index + 1)),
39
+ React.createElement(Box, { flexShrink: 1 },
40
+ React.createElement(Text, { color: selected ? tone : theme.textMuted, bold: selected }, option.label))));
41
+ }),
42
+ note && (React.createElement(Box, { marginLeft: 4 },
43
+ React.createElement(Text, { color: theme.textSubtle, italic: true }, note)))));
44
+ };
45
+ //# sourceMappingURL=approval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../source/skins/rail/approval.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { type FC } from 'react';
2
+ import type { MenuFrameProps, QuestionPromptProps, SubagentFeedProps, ToolSectionProps } from '../types.js';
3
+ /**
4
+ * The question sits behind a heavy warning rail, like an approval; its options are
5
+ * the same numbered list the approval uses, the selected one explained in one dim
6
+ * line under the list rather than in a side pane.
7
+ */
8
+ export declare const RailQuestionPrompt: FC<QuestionPromptProps>;
9
+ /** A thin rail in the status colour down the whole feed, so it reads as one unit apart from the answer. */
10
+ export declare const RailSubagentFeed: FC<SubagentFeedProps>;
11
+ /**
12
+ * Renderer bodies always sit inside the tool call's own rail, so a second rail here
13
+ * would double it. Rows and content blocks indent; a callout opens with a bold
14
+ * heading in its tone.
15
+ */
16
+ export declare const RailToolSection: FC<ToolSectionProps>;
17
+ /** Hairlines above and below, no box; a state colour (error) tints the title instead of a border. */
18
+ export declare const RailMenuFrame: FC<MenuFrameProps>;
19
+ //# sourceMappingURL=body.d.ts.map