@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 @@
1
+ {"version":3,"file":"body.js","sourceRoot":"","sources":["../../../source/skins/cards/body.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,6GAA6G;AAC7G,MAAM,CAAC,MAAM,mBAAmB,GAA4B,CAAC,EAC3D,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,EACP,WAAW,EACX,MAAM,GACP,EAAE,EAAE;IACH,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO,CACL,oBAAC,IAAI,IACH,KAAK,EAAE,KAAK,CAAC,OAAO,EACpB,KAAK,EACH,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,QAAC,IAAI,EAAC,cAAc,IACjD,QAAQ,IAAI,UAAU,CAClB;QAGT,oBAAC,IAAI,IAAC,IAAI,UAAE,QAAQ,CAAQ;QAC3B,MAAM,KAAK,SAAS,IAAI,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM;;YAAK,MAAM,CAAQ;QACrE,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,IACrC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YACtF,OAAO,CACL,oBAAC,GAAG,IAAC,GAAG,EAAE,MAAM,CAAC,KAAK;gBACpB,oBAAC,GAAG,IAAC,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;oBAC1B,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,UAC5B,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAClC,CACH;gBACN,oBAAC,GAAG,IAAC,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;oBAC1B,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU,IAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAQ,CAC7E;gBACN,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC;oBAChB,oBAAC,IAAI,IACH,KAAK,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EACtE,IAAI,EAAE,MAAM,CAAC,QAAQ,EACrB,OAAO,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;wBAEpD,KAAK,GAAG,CAAC;;wBAAI,QAAQ;wBACrB,MAAM,CAAC,KAAK,CACR,CACH,CACF,CACP,CAAC;QACJ,CAAC,CAAC,CACE;QACL,WAAW,CAAC,IAAI,IAAI,CACnB,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC;YACf,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU,IAAG,WAAW,CAAC,IAAI,CAAQ,CACpD,CACP;QACD,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC,IAAG,MAAM,CAAO,CAC5B,CACR,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA0B,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC3G,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO,CACL,oBAAC,IAAI,IACH,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAC3C,KAAK,EACH,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,qBAEvB;QAGT,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC;YACrB,KAAK;YACL,YAAY,CACR;QACN,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU,IAAG,OAAO,CAAQ,CAAC,CAAC,CAAC,QAAQ,CAC9E,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,2HAA2H;AAC3H,MAAM,CAAC,MAAM,gBAAgB,GAAyB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;IACvG,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC,IACvC,QAAQ,CACL,CACP,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU,IAAG,QAAQ,CAAQ,CAAC;IAC1D,CAAC;IACD,OAAO,CACL,oBAAC,IAAI,IACH,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,KAAK,EACH,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAChC,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,QAAC,IAAI,EAAC,cAAc,IAC/C,KAAK,CACD,CACR,IAGF,QAAQ,CACJ,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,yFAAyF;AACzF,MAAM,CAAC,MAAM,cAAc,GAAuB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC9G,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,WAAW,IAAI,KAAK,CAAC,YAAY,CAAC;IAChD,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAC1B,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC3B,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU,IAAG,MAAM,CAAQ,CAC/C,CAAC,CAAC,CAAC,CACF,MAAM,CACP,CACF,CAAC,CAAC,CAAC,IAAI,CAAC;IACT,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,KAAK,EAAC,MAAM;QACtC,oBAAC,IAAI,IACH,KAAK,EAAE,KAAK,EACZ,KAAK,EACH,KAAK,CAAC,CAAC,CAAC,CACN,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,QAAC,IAAI,EAAC,cAAc,IACnD,KAAK,CACD,CACR,CAAC,CAAC,CAAC,SAAS;YAGd,QAAQ;YACR,eAAe,KAAK,QAAQ,IAAI,UAAU,IAAI,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC,IAAG,UAAU,CAAO,CAC/E;QACN,eAAe,KAAK,SAAS,IAAI,UAAU,CACxC,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { type FC, type ReactNode } from 'react';
2
+ import type { Color } from '../../theme/palettes.js';
3
+ /**
4
+ * Border shapes a card can take. Shape is meaning, not decoration: `double` marks
5
+ * the riskiest approvals and `bold` marks a failed call, so both stay recognisable
6
+ * in a terminal with no colour at all.
7
+ */
8
+ export type CardShape = 'round' | 'double' | 'bold';
9
+ export interface CardProps {
10
+ color: Color;
11
+ shape?: CardShape;
12
+ /**
13
+ * Inline content set into the top border (`╭─ title ─────╮`). Ink has no border
14
+ * titles, so the top edge is drawn by hand while the other three sides stay Ink's
15
+ * own border, which sizes itself. Omit it for a plain bordered box.
16
+ */
17
+ title?: ReactNode;
18
+ /** Shrink to the content instead of spanning the row. */
19
+ fit?: boolean;
20
+ children: ReactNode;
21
+ }
22
+ /**
23
+ * A bordered box with one column of padding either side, so text inside starts
24
+ * three columns in. The top rule is a flexible box rather than a fixed string,
25
+ * which is what keeps the right corner on the right edge at every width.
26
+ */
27
+ export declare const Card: FC<CardProps>;
28
+ //# sourceMappingURL=card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/card.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAWpD,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,yDAAyD;IACzD,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;GAIG;AACH,eAAO,MAAM,IAAI,EAAE,EAAE,CAAC,SAAS,CAgD9B,CAAC"}
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ const TOP_CORNERS = {
4
+ round: { left: '╭', right: '╮', rule: '─' },
5
+ double: { left: '╔', right: '╗', rule: '═' },
6
+ bold: { left: '┏', right: '┓', rule: '━' },
7
+ };
8
+ /** More rule glyphs than any terminal is wide; the rule box clips them to the room actually left. */
9
+ const RULE_OVERSHOOT = 400;
10
+ /**
11
+ * A bordered box with one column of padding either side, so text inside starts
12
+ * three columns in. The top rule is a flexible box rather than a fixed string,
13
+ * which is what keeps the right corner on the right edge at every width.
14
+ */
15
+ export const Card = ({ color, shape = 'round', title, fit = false, children }) => {
16
+ const body = (React.createElement(Box, { flexDirection: "column", borderStyle: shape, borderColor: color, borderTop: title === undefined, paddingX: 1, flexGrow: fit ? 0 : 1 }, children));
17
+ if (title === undefined) {
18
+ return (React.createElement(Box, { flexDirection: "column", alignSelf: fit ? 'flex-start' : undefined }, body));
19
+ }
20
+ const corners = TOP_CORNERS[shape];
21
+ return (React.createElement(Box, { flexDirection: "column", alignSelf: fit ? 'flex-start' : undefined },
22
+ React.createElement(Box, null,
23
+ React.createElement(Box, { flexShrink: 0 },
24
+ React.createElement(Text, { color: color },
25
+ corners.left,
26
+ corners.rule,
27
+ ' ')),
28
+ React.createElement(Box, { flexShrink: 1 }, title),
29
+ React.createElement(Box, { flexShrink: 0 },
30
+ React.createElement(Text, { color: color }, " ")),
31
+ React.createElement(Box, { flexGrow: 1, flexBasis: 0, minWidth: 1, height: 1, overflow: "hidden" },
32
+ React.createElement(Text, { color: color, wrap: "wrap" }, corners.rule.repeat(RULE_OVERSHOOT))),
33
+ React.createElement(Box, { flexShrink: 0 },
34
+ React.createElement(Text, { color: color }, corners.right))),
35
+ body));
36
+ };
37
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.js","sourceRoot":"","sources":["../../../source/skins/cards/card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkC,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAUhC,MAAM,WAAW,GAAqE;IACpF,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;IAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;IAC5C,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;CAC3C,CAAC;AAEF,qGAAqG;AACrG,MAAM,cAAc,GAAG,GAAG,CAAC;AAgB3B;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAkB,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC9F,MAAM,IAAI,GAAG,CACX,oBAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAE,KAAK,EAClB,WAAW,EAAE,KAAK,EAClB,SAAS,EAAE,KAAK,KAAK,SAAS,EAC9B,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAEpB,QAAQ,CACL,CACP,CAAC;IAEF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,IAClE,IAAI,CACD,CACP,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;QACnE,oBAAC,GAAG;YACF,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC;gBAChB,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK;oBACf,OAAO,CAAC,IAAI;oBACZ,OAAO,CAAC,IAAI;oBAAE,GAAG,CACb,CACH;YACN,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC,IAAG,KAAK,CAAO;YACjC,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC;gBAChB,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,QAAU,CACxB;YACN,oBAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAC,QAAQ;gBACvE,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAC,MAAM,IAC5B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAC/B,CACH;YACN,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC;gBAChB,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,IAAG,OAAO,CAAC,KAAK,CAAQ,CACtC,CACF;QACL,IAAI,CACD,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Skin } from '../types.js';
2
+ /**
3
+ * "Cards": the banner, each user turn, each standard-display tool call, the input and
4
+ * the approval are rounded boxes; answers stay bare text; status is a row of pills;
5
+ * approval options are button chips. Concise tool calls are deliberately not carded,
6
+ * so a long run of them stays a list.
7
+ */
8
+ export declare const cardsSkin: Skin;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAaxC;;;;;GAKG;AACH,eAAO,MAAM,SAAS,EAAE,IAyBvB,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { CardsShellActivity, CardsTaskPanel, CARDS_TASK_PANEL_GUTTER } from './activity.js';
2
+ import { CardsMenuFrame, CardsQuestionPrompt, CardsSubagentFeed, CardsToolSection } from './body.js';
3
+ import { classicSkin } from '../classic/index.js';
4
+ import { CardsApprovalChoices, CardsApprovalFrame } from './approval.js';
5
+ import { CardsHints, CardsInputFrame, CardsLiveDivider, CardsPromptMarker, CardsWorkingIndicator, } from './live-region.js';
6
+ import { ASSISTANT_GUTTER, CardsAssistantFrame, CardsBanner, CardsUserMessage } from './messages.js';
7
+ import { CardsStatusBar } from './status.js';
8
+ import { CardsToolFrame, CardsToolGroupSummary, CardsToolHeader } from './tools.js';
9
+ /**
10
+ * "Cards": the banner, each user turn, each standard-display tool call, the input and
11
+ * the approval are rounded boxes; answers stay bare text; status is a row of pills;
12
+ * approval options are button chips. Concise tool calls are deliberately not carded,
13
+ * so a long run of them stays a list.
14
+ */
15
+ export const cardsSkin = {
16
+ ...classicSkin,
17
+ name: 'cards',
18
+ taskPanelGutter: CARDS_TASK_PANEL_GUTTER,
19
+ assistantGutter: ASSISTANT_GUTTER,
20
+ Banner: CardsBanner,
21
+ UserMessage: CardsUserMessage,
22
+ AssistantFrame: CardsAssistantFrame,
23
+ ToolFrame: CardsToolFrame,
24
+ ToolHeader: CardsToolHeader,
25
+ ToolGroupSummary: CardsToolGroupSummary,
26
+ WorkingIndicator: CardsWorkingIndicator,
27
+ LiveDivider: CardsLiveDivider,
28
+ PromptMarker: CardsPromptMarker,
29
+ InputFrame: CardsInputFrame,
30
+ Hints: CardsHints,
31
+ ShellActivity: CardsShellActivity,
32
+ TaskPanel: CardsTaskPanel,
33
+ ApprovalFrame: CardsApprovalFrame,
34
+ ApprovalChoices: CardsApprovalChoices,
35
+ QuestionPrompt: CardsQuestionPrompt,
36
+ SubagentFeed: CardsSubagentFeed,
37
+ ToolSection: CardsToolSection,
38
+ MenuFrame: CardsMenuFrame,
39
+ StatusBar: CardsStatusBar,
40
+ };
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/skins/cards/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACrG,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EACL,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACrG,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEpF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAS;IAC7B,GAAG,WAAW;IACd,IAAI,EAAE,OAAO;IACb,eAAe,EAAE,uBAAuB;IACxC,eAAe,EAAE,gBAAgB;IACjC,MAAM,EAAE,WAAW;IACnB,WAAW,EAAE,gBAAgB;IAC7B,cAAc,EAAE,mBAAmB;IACnC,SAAS,EAAE,cAAc;IACzB,UAAU,EAAE,eAAe;IAC3B,gBAAgB,EAAE,qBAAqB;IACvC,gBAAgB,EAAE,qBAAqB;IACvC,WAAW,EAAE,gBAAgB;IAC7B,YAAY,EAAE,iBAAiB;IAC/B,UAAU,EAAE,eAAe;IAC3B,KAAK,EAAE,UAAU;IACjB,aAAa,EAAE,kBAAkB;IACjC,SAAS,EAAE,cAAc;IACzB,aAAa,EAAE,kBAAkB;IACjC,eAAe,EAAE,oBAAoB;IACrC,cAAc,EAAE,mBAAmB;IACnC,YAAY,EAAE,iBAAiB;IAC/B,WAAW,EAAE,gBAAgB;IAC7B,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,cAAc;CAC1B,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type FC } from 'react';
2
+ import type { HintsProps, InputFrameProps, PromptMarkerProps, WorkingIndicatorView } from '../types.js';
3
+ /** Spinner, then what the agent is doing and for how long. The same facts the classic line gives. */
4
+ export declare const CardsWorkingIndicator: FC<WorkingIndicatorView>;
5
+ /** The input card is the structure, so there is no rule between history and the live controls. */
6
+ export declare const CardsLiveDivider: FC;
7
+ export declare const CardsPromptMarker: FC<PromptMarkerProps>;
8
+ /**
9
+ * A rounded card around the marker and the editable input, drawn in the active-border
10
+ * colour. The input sizes itself to the terminal width less four columns, which is
11
+ * exactly what a border and a column of padding on each side take.
12
+ */
13
+ export declare const CardsInputFrame: FC<InputFrameProps>;
14
+ /** Quiet key hints, `·`-separated, with the key itself carrying the weight. */
15
+ export declare const CardsHints: FC<HintsProps>;
16
+ //# sourceMappingURL=live-region.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-region.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/live-region.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAcxG,qGAAqG;AACrG,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,oBAAoB,CA0C1D,CAAC;AAEF,kGAAkG;AAClG,eAAO,MAAM,gBAAgB,EAAE,EAAe,CAAC;AAE/C,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,iBAAiB,CAqBnD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,eAAe,CAO/C,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,UAAU,CAerC,CAAC"}
@@ -0,0 +1,83 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ import { useTheme } from '../../components/theme.js';
4
+ import { formatTokensPerSecond } from '../../utils/streaming/streaming-speed-tracker.js';
5
+ import { BRAILLE_SPINNER, useSpinnerFrame } from '../shared/spinner.js';
6
+ import { Card } from './card.js';
7
+ /** The only animated piece of the live region; it exists to keep the ticking out of its parent. */
8
+ const Spinner = () => {
9
+ const theme = useTheme();
10
+ const frame = useSpinnerFrame(BRAILLE_SPINNER, true);
11
+ return (React.createElement(Text, { color: theme.accent, bold: true }, frame));
12
+ };
13
+ /** Spinner, then what the agent is doing and for how long. The same facts the classic line gives. */
14
+ export const CardsWorkingIndicator = ({ phase, elapsedSeconds, tokensPerSecond, toolName, argumentChars, }) => {
15
+ const theme = useTheme();
16
+ const hasRate = tokensPerSecond != null && tokensPerSecond > 0;
17
+ const rate = hasRate ? formatTokensPerSecond(tokensPerSecond) : '';
18
+ let label;
19
+ if (phase === 'tool_call') {
20
+ label = (React.createElement(React.Fragment, null,
21
+ "Calling tool ",
22
+ toolName ? React.createElement(Text, { bold: true }, toolName) : '',
23
+ ' · ',
24
+ elapsedSeconds,
25
+ "s",
26
+ argumentChars != null ? ` (${argumentChars} chars` : '',
27
+ hasRate ? ` · ${rate}` : '',
28
+ argumentChars != null ? ')' : ''));
29
+ }
30
+ else if (phase === 'thinking') {
31
+ label = (React.createElement(React.Fragment, null,
32
+ "Thinking \u00B7 ",
33
+ elapsedSeconds,
34
+ "s",
35
+ hasRate ? ` (${rate})` : ''));
36
+ }
37
+ else {
38
+ label = hasRate ? `Generating · ${elapsedSeconds}s (${rate})` : `Processing · ${elapsedSeconds}s`;
39
+ }
40
+ return (React.createElement(Box, null,
41
+ React.createElement(Box, { flexShrink: 0, marginRight: 1 },
42
+ React.createElement(Spinner, null)),
43
+ React.createElement(Box, { flexShrink: 1 },
44
+ React.createElement(Text, { color: theme.textSubtle }, label))));
45
+ };
46
+ /** The input card is the structure, so there is no rule between history and the live controls. */
47
+ export const CardsLiveDivider = () => null;
48
+ export const CardsPromptMarker = ({ mode }) => {
49
+ const theme = useTheme();
50
+ if (mode === 'rejection') {
51
+ return (React.createElement(Text, { color: theme.warning, bold: true },
52
+ "Why?",
53
+ ' '));
54
+ }
55
+ if (mode === 'shell') {
56
+ return (React.createElement(Text, { color: theme.danger, bold: true },
57
+ "!",
58
+ ' '));
59
+ }
60
+ return (React.createElement(Text, { color: theme.accent, bold: true },
61
+ "\u276F",
62
+ ' '));
63
+ };
64
+ /**
65
+ * A rounded card around the marker and the editable input, drawn in the active-border
66
+ * colour. The input sizes itself to the terminal width less four columns, which is
67
+ * exactly what a border and a column of padding on each side take.
68
+ */
69
+ export const CardsInputFrame = ({ children }) => {
70
+ const theme = useTheme();
71
+ return (React.createElement(Card, { color: theme.borderActive },
72
+ React.createElement(Box, null, children)));
73
+ };
74
+ /** Quiet key hints, `·`-separated, with the key itself carrying the weight. */
75
+ export const CardsHints = ({ hints }) => {
76
+ const theme = useTheme();
77
+ return (React.createElement(Text, { color: theme.textSubtle }, hints.map(([key, action, keyColor], index) => (React.createElement(React.Fragment, { key: key },
78
+ index > 0 ? ' · ' : '',
79
+ React.createElement(Text, { color: keyColor ? theme[keyColor] : theme.textMuted, bold: true }, key),
80
+ ' ',
81
+ action)))));
82
+ };
83
+ //# sourceMappingURL=live-region.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-region.js","sourceRoot":"","sources":["../../../source/skins/cards/live-region.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type RefObject } from 'react';
2
+ import { type DOMElement } from 'ink';
3
+ /**
4
+ * The width, in columns, that the element this ref is attached to was actually given.
5
+ *
6
+ * Layouts that choose between forms (chips in a row or stacked, how many status pills fit)
7
+ * need the room they really have: the card's inner width, not the terminal's, and a
8
+ * terminal width is not always available to read (a one-shot render has no stdout). The
9
+ * width is measured in a layout effect, whose state update is applied before anything is
10
+ * painted, and `initial` is what is assumed for that first pass.
11
+ *
12
+ * `terminalColumns` is the caller's own reading of the terminal width. Its only job here is
13
+ * to re-run the measurement when the terminal is resized, since the element's width can
14
+ * change then and at no other time.
15
+ */
16
+ export declare function useMeasuredWidth(initial: number, terminalColumns: number): [RefObject<DOMElement | null>, number];
17
+ //# sourceMappingURL=measure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measure.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/measure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AAEtD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,CAYjH"}
@@ -0,0 +1,29 @@
1
+ import { useLayoutEffect, useRef, useState } from 'react';
2
+ import { measureElement } from 'ink';
3
+ /**
4
+ * The width, in columns, that the element this ref is attached to was actually given.
5
+ *
6
+ * Layouts that choose between forms (chips in a row or stacked, how many status pills fit)
7
+ * need the room they really have: the card's inner width, not the terminal's, and a
8
+ * terminal width is not always available to read (a one-shot render has no stdout). The
9
+ * width is measured in a layout effect, whose state update is applied before anything is
10
+ * painted, and `initial` is what is assumed for that first pass.
11
+ *
12
+ * `terminalColumns` is the caller's own reading of the terminal width. Its only job here is
13
+ * to re-run the measurement when the terminal is resized, since the element's width can
14
+ * change then and at no other time.
15
+ */
16
+ export function useMeasuredWidth(initial, terminalColumns) {
17
+ const ref = useRef(null);
18
+ const [width, setWidth] = useState(initial);
19
+ useLayoutEffect(() => {
20
+ if (!ref.current)
21
+ return;
22
+ const measured = measureElement(ref.current).width;
23
+ // The updater form lets React drop an unchanged width without scheduling another render.
24
+ if (measured > 0)
25
+ setWidth((current) => (current === measured ? current : measured));
26
+ }, [terminalColumns]);
27
+ return [ref, width];
28
+ }
29
+ //# sourceMappingURL=measure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measure.js","sourceRoot":"","sources":["../../../source/skins/cards/measure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAmB,MAAM,KAAK,CAAC;AAEtD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,eAAuB;IACvE,MAAM,GAAG,GAAG,MAAM,CAAa,IAAI,CAAC,CAAC;IACrC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAE5C,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO;QACzB,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;QACnD,yFAAyF;QACzF,IAAI,QAAQ,GAAG,CAAC;YAAE,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvF,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACtB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { type FC } from 'react';
2
+ import type { AssistantFrameProps, BannerView, UserMessageView } from '../types.js';
3
+ /**
4
+ * Columns the assistant frame may take on the left: the reasoning rail and its space.
5
+ * Declared for both kinds, so an answer wraps two columns narrower than it strictly needs
6
+ * to; that is the price of one honest number, and it keeps reasoning's code blocks inside
7
+ * the terminal.
8
+ */
9
+ export declare const ASSISTANT_GUTTER = 2;
10
+ /**
11
+ * A small card that shrinks to its content: name and version on the border, the
12
+ * model on the first row, the mode (and mentor) badges beneath.
13
+ */
14
+ export declare const CardsBanner: FC<BannerView>;
15
+ /** The user's turn in a card of its own, in the accent colour, titled `you`. */
16
+ export declare const CardsUserMessage: FC<UserMessageView>;
17
+ /**
18
+ * Answers stay completely bare, flush left, so long markdown and code blocks read
19
+ * without a frame. Reasoning is subordinate: it sits behind a quiet dotted rail, which is
20
+ * also what marks it apart from an answer when there is no colour.
21
+ */
22
+ export declare const CardsAssistantFrame: FC<AssistantFrameProps>;
23
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/messages.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGpF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAelC;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,UAAU,CA+CtC,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,eAAe,CAchD,CAAC;AAaF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,mBAAmB,CAkBvD,CAAC"}
@@ -0,0 +1,80 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ import { useTheme } from '../../components/theme.js';
4
+ import { MODEL_LABEL_MAX } from '../shared/limits.js';
5
+ import { Card } from './card.js';
6
+ /**
7
+ * Columns the assistant frame may take on the left: the reasoning rail and its space.
8
+ * Declared for both kinds, so an answer wraps two columns narrower than it strictly needs
9
+ * to; that is the price of one honest number, and it keeps reasoning's code blocks inside
10
+ * the terminal.
11
+ */
12
+ export const ASSISTANT_GUTTER = 2;
13
+ const truncateModel = (name) => name.length > MODEL_LABEL_MAX ? `${name.slice(0, MODEL_LABEL_MAX - 1)}…` : name;
14
+ const Badge = ({ mode }) => {
15
+ const theme = useTheme();
16
+ return (React.createElement(Text, { backgroundColor: theme.modeBadge[mode], color: theme.modeBadgeForeground, bold: true },
17
+ ' ',
18
+ mode,
19
+ ' '));
20
+ };
21
+ /**
22
+ * A small card that shrinks to its content: name and version on the border, the
23
+ * model on the first row, the mode (and mentor) badges beneath.
24
+ */
25
+ export const CardsBanner = ({ version, mode, mentor, providerLabel, model, reasoningEffort, mentorModel, mentorReasoningEffort, }) => {
26
+ const theme = useTheme();
27
+ return (React.createElement(Box, { flexDirection: "column", paddingTop: 1, marginBottom: 1 },
28
+ React.createElement(Card, { fit: true, color: theme.border, title: React.createElement(Text, { wrap: "truncate-end" },
29
+ React.createElement(Text, { color: theme.accent, bold: true }, "term\u00B2"),
30
+ React.createElement(Text, { color: theme.textMuted },
31
+ " v",
32
+ version)) },
33
+ React.createElement(Text, null,
34
+ React.createElement(Text, { color: theme.textMuted }, providerLabel),
35
+ React.createElement(Text, { color: theme.textSubtle }, "/"),
36
+ React.createElement(Text, { color: theme.accent, bold: true }, model ? truncateModel(model) : '—'),
37
+ reasoningEffort !== 'none' && React.createElement(Text, { color: theme.textSubtle },
38
+ " (",
39
+ reasoningEffort,
40
+ ")")),
41
+ React.createElement(Box, { flexWrap: "wrap", columnGap: 1 },
42
+ React.createElement(Badge, { mode: mode }),
43
+ mentor && React.createElement(Badge, { mode: "MENTOR" }),
44
+ mentor && mentorModel && (React.createElement(Text, null,
45
+ React.createElement(Text, { color: theme.textSubtle }, "mentor "),
46
+ React.createElement(Text, { color: theme.accentAlt }, truncateModel(mentorModel)),
47
+ mentorReasoningEffort !== 'none' && React.createElement(Text, { color: theme.textSubtle },
48
+ " (",
49
+ mentorReasoningEffort,
50
+ ")")))))));
51
+ };
52
+ /** The user's turn in a card of its own, in the accent colour, titled `you`. */
53
+ export const CardsUserMessage = ({ text }) => {
54
+ const theme = useTheme();
55
+ return (React.createElement(Card, { color: theme.accent, title: React.createElement(Text, { color: theme.accent, bold: true, wrap: "truncate-end" }, "you") },
56
+ React.createElement(Text, { color: theme.userText }, text)));
57
+ };
58
+ const REASONING_RAIL = {
59
+ topLeft: '',
60
+ top: '',
61
+ topRight: '',
62
+ left: '┆',
63
+ bottomLeft: '',
64
+ bottom: '',
65
+ bottomRight: '',
66
+ right: '',
67
+ };
68
+ /**
69
+ * Answers stay completely bare, flush left, so long markdown and code blocks read
70
+ * without a frame. Reasoning is subordinate: it sits behind a quiet dotted rail, which is
71
+ * also what marks it apart from an answer when there is no colour.
72
+ */
73
+ export const CardsAssistantFrame = ({ kind, children }) => {
74
+ const theme = useTheme();
75
+ if (kind === 'reasoning') {
76
+ return (React.createElement(Box, { flexDirection: "column", borderStyle: REASONING_RAIL, borderTop: false, borderBottom: false, borderRight: false, borderColor: theme.textSubtle, paddingLeft: 1 }, children));
77
+ }
78
+ return React.createElement(React.Fragment, null, children);
79
+ };
80
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../source/skins/cards/messages.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type FC } from 'react';
2
+ import type { StatusView } from '../types.js';
3
+ /**
4
+ * A row of pills: safety, who is answering, then this turn's numbers (the context
5
+ * gauge, tokens, cache, cost). Everything that is not steady state, the alerts and the
6
+ * provider quota, sits on a second row that exists only while there is something to say.
7
+ */
8
+ export declare const CardsStatusBar: FC<StatusView>;
9
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/status.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EAAyD,UAAU,EAAE,MAAM,aAAa,CAAC;AA6NrG;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,UAAU,CA8CzC,CAAC"}