@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,205 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ import { GLYPH_WARNING, useTheme } from '../../components/theme.js';
4
+ import { contextTone, gaugeBar } from '../shared/gauge.js';
5
+ import { useMeasuredWidth } from './measure.js';
6
+ import { cells, clip } from './width.js';
7
+ /** Cells of a gauge bar in the context pill and in each quota pill. */
8
+ const CONTEXT_GAUGE_CELLS = 6;
9
+ const QUOTA_GAUGE_CELLS = 4;
10
+ /** Columns a pill spends on its own padding, and between neighbouring pills. */
11
+ const PILL_PADDING = 2;
12
+ const PILL_GAP = 1;
13
+ /** A pill's text is never clipped below this, however tight the row. */
14
+ const MIN_CLIPPED_TEXT = 6;
15
+ /** Roles that would be too faint on the pill surface are lifted one step, so text stays readable. */
16
+ const onSurface = (tone) => tone === undefined || tone === 'textSubtle' ? 'textMuted' : tone;
17
+ const segmentPiece = (segment, pill, overrides = {}) => ({
18
+ id: segment.id,
19
+ pill,
20
+ text: segment.text.trim().replace(/^·\s*/, ''),
21
+ tone: segment.tone,
22
+ bold: segment.bold,
23
+ tier: segment.tier,
24
+ ...overrides,
25
+ });
26
+ const findSegment = (list, id) => list.find((segment) => segment.id === id && segment.text);
27
+ function configPieces(view) {
28
+ const pieces = [];
29
+ const push = (id, pill, overrides = {}) => {
30
+ const segment = findSegment(view.config, id);
31
+ if (segment)
32
+ pieces.push(segmentPiece(segment, pill, overrides));
33
+ };
34
+ const safety = findSegment(view.config, 'safety');
35
+ if (safety) {
36
+ pieces.push(segmentPiece(safety, 'safety', {
37
+ // The marker is a shape as well as a colour: a diamond for "contained", a triangle for "not".
38
+ text: `${safety.tone === 'danger' ? GLYPH_WARNING : '◆'} ${safety.text.trim()}`,
39
+ }));
40
+ }
41
+ push('ssh-marker', 'ssh');
42
+ push('ssh-detail', 'ssh');
43
+ push('mode', 'mode');
44
+ push('queue', 'queue');
45
+ push('provider-model', 'model');
46
+ push('reasoning', 'model', { glue: ' · ' });
47
+ push('mentor', 'mentor');
48
+ const mentor = pieces.find((piece) => piece.id === 'mentor');
49
+ if (mentor)
50
+ mentor.text = `mentor ${mentor.text}`;
51
+ return pieces;
52
+ }
53
+ function metricPieces(view) {
54
+ const pieces = [];
55
+ const context = findSegment(view.metrics, 'context');
56
+ if (context) {
57
+ const percent = view.gauges.contextPercent;
58
+ if (percent === undefined) {
59
+ pieces.push(segmentPiece(context, 'context'));
60
+ }
61
+ else {
62
+ const clamped = Math.min(100, Math.max(0, percent));
63
+ pieces.push({
64
+ id: 'context',
65
+ pill: 'context',
66
+ text: `ctx ${gaugeBar(clamped, CONTEXT_GAUGE_CELLS)} ${percent}%`,
67
+ tone: contextTone(percent),
68
+ tier: context.tier,
69
+ });
70
+ // The used/window figure the bar summarises; first to go when the row is tight.
71
+ const detail = context.text.replace(/^ctx\s+/i, '').trim();
72
+ if (detail.includes('/')) {
73
+ pieces.push({ id: 'context-detail', pill: 'context', text: detail, tone: 'textMuted', tier: -1 });
74
+ }
75
+ }
76
+ }
77
+ const tokens = findSegment(view.metrics, 'tokens');
78
+ if (tokens)
79
+ pieces.push(segmentPiece(tokens, 'tokens'));
80
+ const speed = findSegment(view.metrics, 'speed');
81
+ if (speed)
82
+ pieces.push(segmentPiece(speed, 'tokens', { tone: 'textMuted' }));
83
+ const cache = findSegment(view.metrics, 'cache');
84
+ if (cache)
85
+ pieces.push(segmentPiece(cache, 'cache'));
86
+ const cost = findSegment(view.metrics, 'cost');
87
+ if (cost)
88
+ pieces.push(segmentPiece(cost, 'cost'));
89
+ return pieces;
90
+ }
91
+ function toPills(pieces, dropped) {
92
+ const pills = [];
93
+ for (const piece of pieces) {
94
+ if (dropped.has(piece.id))
95
+ continue;
96
+ const existing = pills.find((pill) => pill.id === piece.pill);
97
+ if (existing)
98
+ existing.pieces.push(piece);
99
+ else
100
+ pills.push({ id: piece.pill, pieces: [piece] });
101
+ }
102
+ return pills;
103
+ }
104
+ const pillText = (pill) => pill.pieces.reduce((out, piece, index) => (index === 0 ? piece.text : `${out}${piece.glue ?? ' '}${piece.text}`), '');
105
+ const rowWidth = (pills, framing) => pills.reduce((total, pill) => total + cells(pillText(pill)) + framing, 0) + Math.max(0, pills.length - 1) * PILL_GAP;
106
+ /**
107
+ * Fits a row to `budget` columns: drops pieces lowest tier first, exactly as the classic
108
+ * bar would, and only when that is not enough clips the longest remaining piece.
109
+ */
110
+ function fitRow(pieces, budget, framing) {
111
+ const dropped = new Set();
112
+ const order = pieces
113
+ .filter((piece) => piece.tier !== undefined)
114
+ .sort((a, b) => a.tier - b.tier)
115
+ .map((piece) => piece.id);
116
+ let pills = toPills(pieces, dropped);
117
+ for (const id of order) {
118
+ if (rowWidth(pills, framing) <= budget)
119
+ break;
120
+ dropped.add(id);
121
+ pills = toPills(pieces, dropped);
122
+ }
123
+ const working = pieces.filter((piece) => !dropped.has(piece.id)).map((piece) => ({ ...piece }));
124
+ for (let attempt = 0; attempt < 6; attempt += 1) {
125
+ pills = toPills(working, new Set());
126
+ const overflow = rowWidth(pills, framing) - budget;
127
+ if (overflow <= 0)
128
+ break;
129
+ const longest = working.reduce((best, piece) => (cells(piece.text) > cells(best.text) ? piece : best), working[0]);
130
+ if (!longest || cells(longest.text) <= MIN_CLIPPED_TEXT)
131
+ break;
132
+ longest.text = clip(longest.text, Math.max(MIN_CLIPPED_TEXT, cells(longest.text) - overflow));
133
+ }
134
+ return pills;
135
+ }
136
+ /** One pill: a quiet surface behind the text. With no colours at all, `‹ ›` stand in for the surface. */
137
+ const PillView = ({ pill }) => {
138
+ const theme = useTheme();
139
+ const surface = theme.codeBackground;
140
+ const frame = surface === undefined;
141
+ return (React.createElement(Text, { backgroundColor: surface, wrap: "truncate-end" },
142
+ frame ? '‹ ' : ' ',
143
+ pill.pieces.map((piece, index) => (React.createElement(React.Fragment, { key: piece.id },
144
+ index > 0 ? piece.glue ?? ' ' : '',
145
+ React.createElement(Text, { color: theme[onSurface(piece.tone)], bold: piece.bold }, piece.text)))),
146
+ frame ? ' ›' : ' '));
147
+ };
148
+ const Row = ({ pills }) => (React.createElement(Box, { flexWrap: "wrap", columnGap: PILL_GAP }, pills.map((pill) => (React.createElement(PillView, { key: pill.id, pill: pill })))));
149
+ const Alerts = ({ alerts }) => {
150
+ const theme = useTheme();
151
+ return (React.createElement(Box, { flexWrap: "wrap", columnGap: 2 }, alerts.map((alert) => (React.createElement(Text, { key: alert.id }, alert.parts.map((part, index) => (React.createElement(Text, { key: index, color: theme[part.tone], bold: part.bold }, part.text))))))));
152
+ };
153
+ const quotaPill = (window) => ({
154
+ id: `quota-${window.label}`,
155
+ pieces: [
156
+ {
157
+ id: `quota-${window.label}`,
158
+ pill: `quota-${window.label}`,
159
+ text: `${window.label} ${gaugeBar(window.percent, QUOTA_GAUGE_CELLS)} ${window.percent}%${window.resetText ? `→${window.resetText}` : ''}`,
160
+ tone: contextTone(window.percent),
161
+ },
162
+ ],
163
+ });
164
+ /**
165
+ * A row of pills: safety, who is answering, then this turn's numbers (the context
166
+ * gauge, tokens, cache, cost). Everything that is not steady state, the alerts and the
167
+ * provider quota, sits on a second row that exists only while there is something to say.
168
+ */
169
+ export const CardsStatusBar = ({ columns, config, metrics, alerts, quotaText, gauges }) => {
170
+ const framing = useTheme().codeBackground === undefined ? PILL_PADDING + 2 : PILL_PADDING;
171
+ // The row's real width is measured, since `columns` is the terminal's and not always known.
172
+ const [measureRef, measured] = useMeasuredWidth(columns, columns);
173
+ const budget = Math.max(1, measured);
174
+ const segments = { config, metrics, gauges };
175
+ const configPiecesAll = configPieces(segments);
176
+ const metricPiecesAll = metricPieces(segments);
177
+ const configFit = fitRow(configPiecesAll, budget, framing);
178
+ const metricsFit = fitRow(metricPiecesAll, budget, framing);
179
+ const fitsOnOneRow = configFit.length === 0 ||
180
+ metricsFit.length === 0 ||
181
+ rowWidth(configFit, framing) + PILL_GAP + rowWidth(metricsFit, framing) <= budget;
182
+ // Before giving the numbers a row of their own, see whether everything but the
183
+ // garnish (the used/window figure and the live rate) fits on one: a single row is
184
+ // the quieter bar, and those two are the least that is lost.
185
+ const essential = toPills([...configPiecesAll, ...metricPiecesAll].filter((piece) => piece.tier === undefined || piece.tier > 0), new Set());
186
+ const essentialFitsOnOneRow = rowWidth(essential, framing) <= budget;
187
+ const pillRows = fitsOnOneRow
188
+ ? [[...configFit, ...metricsFit]]
189
+ : essentialFitsOnOneRow
190
+ ? [essential]
191
+ : [configFit, metricsFit];
192
+ const quotaPills = gauges.quotaWindows.length > 0 ? gauges.quotaWindows.map(quotaPill) : [];
193
+ const hasSecondRow = alerts.length > 0 || quotaPills.length > 0 || quotaText !== '';
194
+ return (React.createElement(Box, { marginTop: 1, flexDirection: "column", width: "100%", ref: measureRef },
195
+ pillRows.map((pills) => (React.createElement(Row, { key: pills.map((pill) => pill.id).join(), pills: pills }))),
196
+ hasSecondRow && (React.createElement(Box, { flexDirection: "column" },
197
+ alerts.length > 0 && React.createElement(Alerts, { alerts: alerts }),
198
+ quotaPills.length > 0 ? React.createElement(Row, { pills: quotaPills }) : quotaText !== '' && React.createElement(QuotaText, { text: quotaText })))));
199
+ };
200
+ /** The container's own quota text, for providers whose windows arrive without structure. */
201
+ const QuotaText = ({ text }) => {
202
+ const theme = useTheme();
203
+ return React.createElement(Text, { color: theme.textMuted }, text);
204
+ };
205
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../source/skins/cards/status.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type FC } from 'react';
2
+ import type { ToolFrameProps, ToolGroupSummaryView, ToolHeaderProps } from '../types.js';
3
+ /**
4
+ * Standard display only: the header and the full output share one rounded card whose
5
+ * border is the status colour. Concise calls stay single bare lines, so a long run of
6
+ * calls reads as a list rather than a wall of boxes.
7
+ */
8
+ export declare const CardsToolFrame: FC<ToolFrameProps>;
9
+ /**
10
+ * The first row of a card: status glyph, then the tool name and action, with the
11
+ * glyph in its own column so a long command wraps underneath the action rather than
12
+ * under the glyph. Settled concise calls colour only the glyph and keep the text quiet.
13
+ */
14
+ export declare const CardsToolHeader: FC<ToolHeaderProps>;
15
+ /**
16
+ * One line for a run of calls. A partly-failed run keeps the neutral summary and the
17
+ * green marker, because most of what it did succeeded; the failure line beneath, with
18
+ * its own red marker, is what carries the bad news. Both lines wrap rather than clip.
19
+ */
20
+ export declare const CardsToolGroupSummary: FC<ToolGroupSummaryView>;
21
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/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;AA6BzF;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,cAAc,CAQ7C,CAAC;AAOF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,eAAe,CA2D/C,CAAC;AAQF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,oBAAoB,CAe1D,CAAC"}
@@ -0,0 +1,101 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ import { TOOL_STATUS_GLYPH, useTheme } from '../../components/theme.js';
4
+ import { BRAILLE_SPINNER, useSpinnerFrame } from '../shared/spinner.js';
5
+ import { Card } from './card.js';
6
+ /** Only a running call animates, and only this component ticks, so settled output costs no timers. */
7
+ const RunningGlyph = ({ color }) => {
8
+ const frame = useSpinnerFrame(BRAILLE_SPINNER, true);
9
+ return (React.createElement(Text, { color: color, bold: true }, frame));
10
+ };
11
+ /** The status marker: a spinner while running, otherwise the shared glyph for the status. */
12
+ const StatusGlyph = ({ status }) => {
13
+ const theme = useTheme();
14
+ const color = theme.toolStatus[status];
15
+ if (status === 'running')
16
+ return React.createElement(RunningGlyph, { color: color });
17
+ return (React.createElement(Text, { color: color, bold: true }, TOOL_STATUS_GLYPH[status]));
18
+ };
19
+ /** A failed or refused call gets a heavier border, so it stands out without relying on red. */
20
+ const shapeFor = (status) => status === 'failed' || status === 'rejected' ? 'bold' : 'round';
21
+ /**
22
+ * Standard display only: the header and the full output share one rounded card whose
23
+ * border is the status colour. Concise calls stay single bare lines, so a long run of
24
+ * calls reads as a list rather than a wall of boxes.
25
+ */
26
+ export const CardsToolFrame = ({ status, display, children }) => {
27
+ const theme = useTheme();
28
+ if (display !== 'standard')
29
+ return React.createElement(React.Fragment, null, children);
30
+ return (React.createElement(Card, { color: theme.toolStatus[status], shape: shapeFor(status) }, children));
31
+ };
32
+ const IN_FLIGHT = new Set(['pending', 'running']);
33
+ /** The tool's own name labels a call unless the action already is the command. */
34
+ const isShellLike = (toolName) => toolName === undefined || toolName === 'shell';
35
+ /**
36
+ * The first row of a card: status glyph, then the tool name and action, with the
37
+ * glyph in its own column so a long command wraps underneath the action rather than
38
+ * under the glyph. Settled concise calls colour only the glyph and keep the text quiet.
39
+ */
40
+ export const CardsToolHeader = ({ status, display, toolName, nested, action, meta, trailing, textColor, }) => {
41
+ const theme = useTheme();
42
+ if (display === 'standard') {
43
+ return (React.createElement(Box, null,
44
+ React.createElement(Box, { flexShrink: 0, marginRight: 1 },
45
+ React.createElement(StatusGlyph, { status: status })),
46
+ React.createElement(Box, { flexShrink: 1, flexGrow: 1 },
47
+ React.createElement(Text, null,
48
+ !isShellLike(toolName) && React.createElement(Text, { color: theme.textSubtle },
49
+ toolName,
50
+ " "),
51
+ action,
52
+ meta,
53
+ trailing))));
54
+ }
55
+ if (nested) {
56
+ return (React.createElement(Box, null,
57
+ React.createElement(Text, { wrap: "truncate", color: theme.textSubtle },
58
+ React.createElement(StatusGlyph, { status: status }),
59
+ " ",
60
+ action,
61
+ meta)));
62
+ }
63
+ if (IN_FLIGHT.has(status)) {
64
+ return (React.createElement(Box, null,
65
+ React.createElement(Text, null,
66
+ React.createElement(StatusGlyph, { status: status }),
67
+ " ",
68
+ action,
69
+ meta,
70
+ trailing)));
71
+ }
72
+ return (React.createElement(Text, { color: textColor || theme.textMuted },
73
+ React.createElement(StatusGlyph, { status: status }),
74
+ " ",
75
+ action,
76
+ trailing));
77
+ };
78
+ const GROUP_MARKER_KIND = {
79
+ completed: 'completed',
80
+ partial: 'completed',
81
+ failed: 'failed',
82
+ };
83
+ /**
84
+ * One line for a run of calls. A partly-failed run keeps the neutral summary and the
85
+ * green marker, because most of what it did succeeded; the failure line beneath, with
86
+ * its own red marker, is what carries the bad news. Both lines wrap rather than clip.
87
+ */
88
+ export const CardsToolGroupSummary = ({ status, summary, failures }) => {
89
+ const theme = useTheme();
90
+ const kind = GROUP_MARKER_KIND[status];
91
+ return (React.createElement(Box, { flexDirection: "column" },
92
+ React.createElement(Text, { color: theme.textMuted },
93
+ React.createElement(StatusGlyph, { status: kind }),
94
+ " ",
95
+ summary),
96
+ failures !== '' && status !== 'failed' && (React.createElement(Text, { color: theme.textMuted },
97
+ React.createElement(StatusGlyph, { status: "failed" }),
98
+ " ",
99
+ failures))));
100
+ };
101
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../source/skins/cards/tools.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare const cells: (value: string) => number;
2
+ /** Clips to `maxCells`, ending in an ellipsis when it had to cut. */
3
+ export declare const clip: (value: string, maxCells: number) => string;
4
+ //# sourceMappingURL=width.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"width.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/width.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,KAAK,UAAW,MAAM,KAAG,MAC4D,CAAC;AAEnG,qEAAqE;AACrE,eAAO,MAAM,IAAI,UAAW,MAAM,YAAY,MAAM,KAAG,MAStD,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Terminal cells a string occupies, for laying out chips and pills before Ink measures them.
3
+ *
4
+ * `terminalTextWidth` counts every non-ASCII code point as two cells, which is the safe
5
+ * default for arbitrary text but doubles the box-drawing and gauge glyphs these layouts
6
+ * are made of. This counts those as one and only the genuinely wide ranges (CJK,
7
+ * fullwidth forms, emoji) as two.
8
+ */
9
+ const isWide = (code) => (code >= 0x1100 && code <= 0x115f) ||
10
+ (code >= 0x2e80 && code <= 0xa4cf) ||
11
+ (code >= 0xac00 && code <= 0xd7a3) ||
12
+ (code >= 0xf900 && code <= 0xfaff) ||
13
+ (code >= 0xfe30 && code <= 0xfe6f) ||
14
+ (code >= 0xff00 && code <= 0xff60) ||
15
+ (code >= 0xffe0 && code <= 0xffe6) ||
16
+ (code >= 0x1f300 && code <= 0x1faff);
17
+ export const cells = (value) => Array.from(value).reduce((columns, char) => columns + (isWide(char.codePointAt(0)) ? 2 : 1), 0);
18
+ /** Clips to `maxCells`, ending in an ellipsis when it had to cut. */
19
+ export const clip = (value, maxCells) => {
20
+ if (cells(value) <= maxCells)
21
+ return value;
22
+ if (maxCells <= 1)
23
+ return '…';
24
+ let out = '';
25
+ for (const char of value) {
26
+ if (cells(out) + cells(char) + 1 > maxCells)
27
+ break;
28
+ out += char;
29
+ }
30
+ return `${out}…`;
31
+ };
32
+ //# sourceMappingURL=width.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"width.js","sourceRoot":"","sources":["../../../source/skins/cards/width.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,GAAG,CAAC,IAAY,EAAW,EAAE,CACvC,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC;IAClC,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC;IAClC,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC;IAClC,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC;IAClC,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC;IAClC,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC;IAClC,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC;IAClC,CAAC,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC;AAEvC,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAa,EAAU,EAAE,CAC7C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEnG,qEAAqE;AACrE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAU,EAAE;IAC9D,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IAC9B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ;YAAE,MAAM;QACnD,GAAG,IAAI,IAAI,CAAC;IACd,CAAC;IACD,OAAO,GAAG,GAAG,GAAG,CAAC;AACnB,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { type FC, type ReactNode } from 'react';
2
+ import type { ApprovalChoicesProps, ApprovalFrameProps } from '../types.js';
3
+ /**
4
+ * Left: the options. Right: what the selected one does. Below 90 columns the
5
+ * description drops underneath instead of beside the list. Exported because the
6
+ * ask-user prompt, which skins do not yet restyle, shares it.
7
+ */
8
+ export declare const TwoPaneApprovalLayout: FC<{
9
+ left: ReactNode;
10
+ rightTitle: ReactNode;
11
+ rightDescription: ReactNode;
12
+ }>;
13
+ /**
14
+ * A title line, then the request. The riskiest class gets a red left border, not
15
+ * just red text, so it is recognisable by shape before the words are read.
16
+ */
17
+ export declare const ClassicApprovalFrame: FC<ApprovalFrameProps>;
18
+ export declare const ClassicApprovalChoices: FC<ApprovalChoicesProps>;
19
+ //# sourceMappingURL=approval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../../../source/skins/classic/approval.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE5E;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC;IACrC,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,SAAS,CAAC;IACtB,gBAAgB,EAAE,SAAS,CAAC;CAC7B,CAuCA,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,kBAAkB,CAyBvD,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,oBAAoB,CAkC3D,CAAC"}
@@ -0,0 +1,50 @@
1
+ import React from 'react';
2
+ import { Box, Text, useStdout } from 'ink';
3
+ import { SelectionMarker } from '../../components/common/SelectionMarker.js';
4
+ import { useTheme } from '../../components/theme.js';
5
+ /**
6
+ * Left: the options. Right: what the selected one does. Below 90 columns the
7
+ * description drops underneath instead of beside the list. Exported because the
8
+ * ask-user prompt, which skins do not yet restyle, shares it.
9
+ */
10
+ export const TwoPaneApprovalLayout = ({ left, rightTitle, rightDescription }) => {
11
+ const theme = useTheme();
12
+ const { stdout } = useStdout();
13
+ const isNarrow = (stdout.columns ?? 100) < 90;
14
+ const description = (React.createElement(Box, { flexDirection: "column", width: isNarrow ? '100%' : '50%', paddingLeft: isNarrow ? 0 : 2, marginTop: isNarrow ? 1 : 0, borderStyle: isNarrow ? undefined : 'single', borderTop: false, borderBottom: false, borderRight: false, borderLeft: !isNarrow, borderColor: theme.border },
15
+ React.createElement(Text, { bold: true, color: theme.warning }, rightTitle),
16
+ React.createElement(Box, { marginTop: 1 }, rightDescription ? (React.createElement(Text, { color: theme.text }, rightDescription)) : (React.createElement(Text, { color: theme.textSubtle, italic: true }, "No description available.")))));
17
+ return (React.createElement(Box, { flexDirection: isNarrow ? 'column' : 'row', width: "100%", marginTop: 1 },
18
+ React.createElement(Box, { flexDirection: "column", width: isNarrow ? '100%' : '50%', flexShrink: 0, flexGrow: 0 }, left),
19
+ description));
20
+ };
21
+ /**
22
+ * A title line, then the request. The riskiest class gets a red left border, not
23
+ * just red text, so it is recognisable by shape before the words are read.
24
+ */
25
+ export const ClassicApprovalFrame = ({ tone, header, subheader, children }) => {
26
+ const theme = useTheme();
27
+ return (React.createElement(Box, { flexDirection: "column" },
28
+ React.createElement(Text, { color: theme.warning }, header),
29
+ subheader,
30
+ tone === 'danger' ? (React.createElement(Box, { flexDirection: "column", borderStyle: "single", borderTop: false, borderBottom: false, borderRight: false, borderLeft: true, borderColor: theme.danger, paddingLeft: 1, marginTop: 1 }, children)) : (children)));
31
+ };
32
+ export const ClassicApprovalChoices = ({ question, options, selectedIndex, layout, description, }) => {
33
+ const theme = useTheme();
34
+ const rows = options.map((option, index) => {
35
+ const isSelected = selectedIndex === index;
36
+ return (React.createElement(Box, { key: option.label },
37
+ React.createElement(SelectionMarker, { selected: isSelected }),
38
+ React.createElement(Text, { color: isSelected ? theme[option.tone] : undefined },
39
+ index + 1,
40
+ ". ",
41
+ option.label)));
42
+ });
43
+ if (layout === 'list') {
44
+ return React.createElement(React.Fragment, null, rows);
45
+ }
46
+ return (React.createElement(React.Fragment, null,
47
+ question !== undefined && React.createElement(Text, null, question),
48
+ React.createElement(TwoPaneApprovalLayout, { left: rows, rightTitle: description?.title ?? 'Option', rightDescription: description?.text })));
49
+ };
50
+ //# sourceMappingURL=approval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../source/skins/classic/approval.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Skin } from '../types.js';
2
+ /**
3
+ * The original look. It is also the base every other skin spreads from, so a skin
4
+ * only has to override the slots it actually draws differently.
5
+ */
6
+ export declare const classicSkin: Skin;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../source/skins/classic/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAmBxC;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,IAwBzB,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { ClassicApprovalChoices, ClassicApprovalFrame } from './approval.js';
2
+ import { ClassicHints, ClassicInputFrame, ClassicLiveDivider, ClassicPromptMarker, ClassicShellActivity, ClassicTaskPanel, ClassicWorkingIndicator, } from './live-region.js';
3
+ import { ClassicAssistantFrame, ClassicBanner, ClassicUserMessage } from './messages.js';
4
+ import { ClassicMenuFrame } from './menu.js';
5
+ import { ClassicQuestionPrompt } from './question.js';
6
+ import { ClassicStatusBar } from './status.js';
7
+ import { ClassicSubagentFeed } from './subagent.js';
8
+ import { ClassicToolSection } from './tool-section.js';
9
+ import { ClassicToolFrame, ClassicToolGroupSummary, ClassicToolHeader } from './tools.js';
10
+ /**
11
+ * The original look. It is also the base every other skin spreads from, so a skin
12
+ * only has to override the slots it actually draws differently.
13
+ */
14
+ export const classicSkin = {
15
+ name: 'classic',
16
+ assistantGutter: 0,
17
+ taskPanelGutter: 0,
18
+ Banner: ClassicBanner,
19
+ UserMessage: ClassicUserMessage,
20
+ AssistantFrame: ClassicAssistantFrame,
21
+ ToolFrame: ClassicToolFrame,
22
+ ToolHeader: ClassicToolHeader,
23
+ ToolGroupSummary: ClassicToolGroupSummary,
24
+ WorkingIndicator: ClassicWorkingIndicator,
25
+ LiveDivider: ClassicLiveDivider,
26
+ PromptMarker: ClassicPromptMarker,
27
+ InputFrame: ClassicInputFrame,
28
+ Hints: ClassicHints,
29
+ ShellActivity: ClassicShellActivity,
30
+ TaskPanel: ClassicTaskPanel,
31
+ ApprovalFrame: ClassicApprovalFrame,
32
+ ApprovalChoices: ClassicApprovalChoices,
33
+ QuestionPrompt: ClassicQuestionPrompt,
34
+ SubagentFeed: ClassicSubagentFeed,
35
+ ToolSection: ClassicToolSection,
36
+ MenuFrame: ClassicMenuFrame,
37
+ StatusBar: ClassicStatusBar,
38
+ };
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/skins/classic/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE1F;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAS;IAC/B,IAAI,EAAE,SAAS;IACf,eAAe,EAAE,CAAC;IAClB,eAAe,EAAE,CAAC;IAClB,MAAM,EAAE,aAAa;IACrB,WAAW,EAAE,kBAAkB;IAC/B,cAAc,EAAE,qBAAqB;IACrC,SAAS,EAAE,gBAAgB;IAC3B,UAAU,EAAE,iBAAiB;IAC7B,gBAAgB,EAAE,uBAAuB;IACzC,gBAAgB,EAAE,uBAAuB;IACzC,WAAW,EAAE,kBAAkB;IAC/B,YAAY,EAAE,mBAAmB;IACjC,UAAU,EAAE,iBAAiB;IAC7B,KAAK,EAAE,YAAY;IACnB,aAAa,EAAE,oBAAoB;IACnC,SAAS,EAAE,gBAAgB;IAC3B,aAAa,EAAE,oBAAoB;IACnC,eAAe,EAAE,sBAAsB;IACvC,cAAc,EAAE,qBAAqB;IACrC,YAAY,EAAE,mBAAmB;IACjC,WAAW,EAAE,kBAAkB;IAC/B,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,gBAAgB;CAC5B,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { type FC } from 'react';
2
+ import type { HintsProps, ShellActivityProps, TaskPanelProps, InputFrameProps, PromptMarkerProps, WorkingIndicatorView } from '../types.js';
3
+ /** What the agent is doing right now, as a single muted line. */
4
+ export declare const ClassicWorkingIndicator: FC<WorkingIndicatorView>;
5
+ /** The one structural split on screen: printed history above, live controls below. */
6
+ export declare const ClassicLiveDivider: FC;
7
+ export declare const ClassicPromptMarker: FC<PromptMarkerProps>;
8
+ /** The input row is printed bare; the frame is the seam other skins draw a box or rule around. */
9
+ export declare const ClassicInputFrame: FC<InputFrameProps>;
10
+ /**
11
+ * One footer format for every menu and for the input, so the reader learns the
12
+ * shape once: `key action │ key action`. Menus used to each invent their own
13
+ * wording, separator, and arrow glyph.
14
+ */
15
+ export declare const ClassicHints: FC<HintsProps>;
16
+ export declare const ClassicShellActivity: FC<ShellActivityProps>;
17
+ /** A muted header over the rows, unframed. */
18
+ export declare const ClassicTaskPanel: FC<TaskPanelProps>;
19
+ //# sourceMappingURL=live-region.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-region.d.ts","sourceRoot":"","sources":["../../../source/skins/classic/live-region.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAErB,iEAAiE;AACjE,eAAO,MAAM,uBAAuB,EAAE,EAAE,CAAC,oBAAoB,CAuC5D,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,kBAAkB,EAAE,EAAsB,CAAC;AAExD,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,iBAAiB,CAKrD,CAAC;AAEF,kGAAkG;AAClG,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,eAAe,CAA2C,CAAC;AAE9F;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,UAAU,CAYvC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,kBAAkB,CAOvD,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,cAAc,CAQ/C,CAAC"}