@qduc/term2 0.30.0 → 0.31.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (732) hide show
  1. package/dist/acp-v2/serve.d.ts.map +1 -1
  2. package/dist/acp-v2/serve.js +6 -6
  3. package/dist/acp-v2/serve.js.map +1 -1
  4. package/dist/agent.d.ts.map +1 -1
  5. package/dist/agent.js +3 -6
  6. package/dist/agent.js.map +1 -1
  7. package/dist/app.d.ts.map +1 -1
  8. package/dist/app.js +46 -22
  9. package/dist/app.js.map +1 -1
  10. package/dist/build-info.json +2 -2
  11. package/dist/cli.js +53 -46
  12. package/dist/cli.js.map +1 -1
  13. package/dist/commands/model-command.d.ts.map +1 -1
  14. package/dist/commands/model-command.js +4 -8
  15. package/dist/commands/model-command.js.map +1 -1
  16. package/dist/components/ErrorBoundary.d.ts +1 -1
  17. package/dist/components/ErrorBoundary.d.ts.map +1 -1
  18. package/dist/components/ErrorBoundary.js +28 -23
  19. package/dist/components/ErrorBoundary.js.map +1 -1
  20. package/dist/components/InputBox.d.ts.map +1 -1
  21. package/dist/components/InputBox.js +124 -32
  22. package/dist/components/InputBox.js.map +1 -1
  23. package/dist/components/MarkdownRenderer.d.ts.map +1 -1
  24. package/dist/components/MarkdownRenderer.js +31 -28
  25. package/dist/components/MarkdownRenderer.js.map +1 -1
  26. package/dist/components/common/Divider.d.ts.map +1 -1
  27. package/dist/components/common/Divider.js +5 -2
  28. package/dist/components/common/Divider.js.map +1 -1
  29. package/dist/components/common/MenuContainer.d.ts +6 -20
  30. package/dist/components/common/MenuContainer.d.ts.map +1 -1
  31. package/dist/components/common/MenuContainer.js +24 -40
  32. package/dist/components/common/MenuContainer.js.map +1 -1
  33. package/dist/components/common/ScrollableTabBar.d.ts.map +1 -1
  34. package/dist/components/common/ScrollableTabBar.js +6 -5
  35. package/dist/components/common/ScrollableTabBar.js.map +1 -1
  36. package/dist/components/common/SelectionMarker.d.ts +16 -0
  37. package/dist/components/common/SelectionMarker.d.ts.map +1 -0
  38. package/dist/components/common/SelectionMarker.js +20 -0
  39. package/dist/components/common/SelectionMarker.js.map +1 -0
  40. package/dist/components/input/ApplicationInputSurface.d.ts.map +1 -1
  41. package/dist/components/input/ApplicationInputSurface.js +3 -1
  42. package/dist/components/input/ApplicationInputSurface.js.map +1 -1
  43. package/dist/components/input/FirstRunSetupPrompt.d.ts.map +1 -1
  44. package/dist/components/input/FirstRunSetupPrompt.js +8 -6
  45. package/dist/components/input/FirstRunSetupPrompt.js.map +1 -1
  46. package/dist/components/input/MenuSurface.d.ts.map +1 -1
  47. package/dist/components/input/MenuSurface.js +4 -3
  48. package/dist/components/input/MenuSurface.js.map +1 -1
  49. package/dist/components/input/ModelMenuSession.d.ts.map +1 -1
  50. package/dist/components/input/ModelMenuSession.js +10 -14
  51. package/dist/components/input/ModelMenuSession.js.map +1 -1
  52. package/dist/components/input/PendingQueueList.d.ts +3 -0
  53. package/dist/components/input/PendingQueueList.d.ts.map +1 -1
  54. package/dist/components/input/PendingQueueList.js +9 -8
  55. package/dist/components/input/PendingQueueList.js.map +1 -1
  56. package/dist/components/input/SettingsMenuSession.d.ts.map +1 -1
  57. package/dist/components/input/SettingsMenuSession.js +0 -2
  58. package/dist/components/input/SettingsMenuSession.js.map +1 -1
  59. package/dist/components/input/SettingsValueMenuSession.d.ts.map +1 -1
  60. package/dist/components/input/SettingsValueMenuSession.js +3 -2
  61. package/dist/components/input/SettingsValueMenuSession.js.map +1 -1
  62. package/dist/components/input/SubagentPoolMenuSession.d.ts.map +1 -1
  63. package/dist/components/input/SubagentPoolMenuSession.js +0 -2
  64. package/dist/components/input/SubagentPoolMenuSession.js.map +1 -1
  65. package/dist/components/input/menu-types.d.ts +0 -2
  66. package/dist/components/input/menu-types.d.ts.map +1 -1
  67. package/dist/components/input/triggers.d.ts.map +1 -1
  68. package/dist/components/input/triggers.js +0 -2
  69. package/dist/components/input/triggers.js.map +1 -1
  70. package/dist/components/layout/BackgroundTaskManager.d.ts.map +1 -1
  71. package/dist/components/layout/BackgroundTaskManager.js +113 -107
  72. package/dist/components/layout/BackgroundTaskManager.js.map +1 -1
  73. package/dist/components/layout/BackgroundTasksPanel.d.ts.map +1 -1
  74. package/dist/components/layout/BackgroundTasksPanel.js +26 -28
  75. package/dist/components/layout/BackgroundTasksPanel.js.map +1 -1
  76. package/dist/components/layout/Banner.d.ts.map +1 -1
  77. package/dist/components/layout/Banner.js +7 -51
  78. package/dist/components/layout/Banner.js.map +1 -1
  79. package/dist/components/layout/BottomArea.d.ts.map +1 -1
  80. package/dist/components/layout/BottomArea.js +14 -34
  81. package/dist/components/layout/BottomArea.js.map +1 -1
  82. package/dist/components/layout/DiffView.d.ts.map +1 -1
  83. package/dist/components/layout/DiffView.js +8 -7
  84. package/dist/components/layout/DiffView.js.map +1 -1
  85. package/dist/components/layout/StatusBar.d.ts +8 -0
  86. package/dist/components/layout/StatusBar.d.ts.map +1 -1
  87. package/dist/components/layout/StatusBar.js +199 -294
  88. package/dist/components/layout/StatusBar.js.map +1 -1
  89. package/dist/components/menu/CopyMenu.d.ts.map +1 -1
  90. package/dist/components/menu/CopyMenu.js +16 -13
  91. package/dist/components/menu/CopyMenu.js.map +1 -1
  92. package/dist/components/menu/McpSelectionMenu.d.ts.map +1 -1
  93. package/dist/components/menu/McpSelectionMenu.js +8 -7
  94. package/dist/components/menu/McpSelectionMenu.js.map +1 -1
  95. package/dist/components/menu/ModelSelectionMenu.d.ts.map +1 -1
  96. package/dist/components/menu/ModelSelectionMenu.js +21 -20
  97. package/dist/components/menu/ModelSelectionMenu.js.map +1 -1
  98. package/dist/components/menu/PathSelectionMenu.d.ts.map +1 -1
  99. package/dist/components/menu/PathSelectionMenu.js +5 -4
  100. package/dist/components/menu/PathSelectionMenu.js.map +1 -1
  101. package/dist/components/menu/ProfileSelectionMenu.d.ts.map +1 -1
  102. package/dist/components/menu/ProfileSelectionMenu.js +17 -20
  103. package/dist/components/menu/ProfileSelectionMenu.js.map +1 -1
  104. package/dist/components/menu/ProviderSelectionMenu.d.ts.map +1 -1
  105. package/dist/components/menu/ProviderSelectionMenu.js +37 -36
  106. package/dist/components/menu/ProviderSelectionMenu.js.map +1 -1
  107. package/dist/components/menu/ResumeSelectionMenu.d.ts.map +1 -1
  108. package/dist/components/menu/ResumeSelectionMenu.js +21 -22
  109. package/dist/components/menu/ResumeSelectionMenu.js.map +1 -1
  110. package/dist/components/menu/RewindMenu.d.ts.map +1 -1
  111. package/dist/components/menu/RewindMenu.js +5 -4
  112. package/dist/components/menu/RewindMenu.js.map +1 -1
  113. package/dist/components/menu/SettingsSelectionMenu.d.ts.map +1 -1
  114. package/dist/components/menu/SettingsSelectionMenu.js +15 -14
  115. package/dist/components/menu/SettingsSelectionMenu.js.map +1 -1
  116. package/dist/components/menu/SettingsValueSelectionMenu.d.ts.map +1 -1
  117. package/dist/components/menu/SettingsValueSelectionMenu.js +15 -14
  118. package/dist/components/menu/SettingsValueSelectionMenu.js.map +1 -1
  119. package/dist/components/menu/SkillSelectionMenu.d.ts.map +1 -1
  120. package/dist/components/menu/SkillSelectionMenu.js +17 -18
  121. package/dist/components/menu/SkillSelectionMenu.js.map +1 -1
  122. package/dist/components/menu/SlashCommandMenu.d.ts.map +1 -1
  123. package/dist/components/menu/SlashCommandMenu.js +5 -4
  124. package/dist/components/menu/SlashCommandMenu.js.map +1 -1
  125. package/dist/components/menu/StandaloneModelPickerApp.d.ts.map +1 -1
  126. package/dist/components/menu/StandaloneModelPickerApp.js +3 -2
  127. package/dist/components/menu/StandaloneModelPickerApp.js.map +1 -1
  128. package/dist/components/menu/SubagentPoolSelectionMenu.d.ts.map +1 -1
  129. package/dist/components/menu/SubagentPoolSelectionMenu.js +26 -24
  130. package/dist/components/menu/SubagentPoolSelectionMenu.js.map +1 -1
  131. package/dist/components/menu/settings-value-formatter.d.ts +3 -1
  132. package/dist/components/menu/settings-value-formatter.d.ts.map +1 -1
  133. package/dist/components/menu/settings-value-formatter.js +24 -35
  134. package/dist/components/menu/settings-value-formatter.js.map +1 -1
  135. package/dist/components/message/ChatMessage.d.ts.map +1 -1
  136. package/dist/components/message/ChatMessage.js +11 -7
  137. package/dist/components/message/ChatMessage.js.map +1 -1
  138. package/dist/components/message/CodeContextSearchRenderer.d.ts.map +1 -1
  139. package/dist/components/message/CodeContextSearchRenderer.js +14 -11
  140. package/dist/components/message/CodeContextSearchRenderer.js.map +1 -1
  141. package/dist/components/message/CommandGroupSummary.d.ts.map +1 -1
  142. package/dist/components/message/CommandGroupSummary.js +8 -36
  143. package/dist/components/message/CommandGroupSummary.js.map +1 -1
  144. package/dist/components/message/CommandMessage.d.ts.map +1 -1
  145. package/dist/components/message/CommandMessage.js +313 -329
  146. package/dist/components/message/CommandMessage.js.map +1 -1
  147. package/dist/components/message/GrepRenderer.d.ts.map +1 -1
  148. package/dist/components/message/GrepRenderer.js +12 -9
  149. package/dist/components/message/GrepRenderer.js.map +1 -1
  150. package/dist/components/message/MemoryRenderer.d.ts.map +1 -1
  151. package/dist/components/message/MemoryRenderer.js +45 -38
  152. package/dist/components/message/MemoryRenderer.js.map +1 -1
  153. package/dist/components/message/ReadFileRenderer.d.ts.map +1 -1
  154. package/dist/components/message/ReadFileRenderer.js +20 -16
  155. package/dist/components/message/ReadFileRenderer.js.map +1 -1
  156. package/dist/components/message/RunCodeRenderer.d.ts.map +1 -1
  157. package/dist/components/message/RunCodeRenderer.js +19 -14
  158. package/dist/components/message/RunCodeRenderer.js.map +1 -1
  159. package/dist/components/message/SubagentActivityMessage.d.ts.map +1 -1
  160. package/dist/components/message/SubagentActivityMessage.js +15 -15
  161. package/dist/components/message/SubagentActivityMessage.js.map +1 -1
  162. package/dist/components/message/WebFetchRenderer.d.ts.map +1 -1
  163. package/dist/components/message/WebFetchRenderer.js +16 -13
  164. package/dist/components/message/WebFetchRenderer.js.map +1 -1
  165. package/dist/components/message/WebSearchRenderer.d.ts.map +1 -1
  166. package/dist/components/message/WebSearchRenderer.js +20 -16
  167. package/dist/components/message/WebSearchRenderer.js.map +1 -1
  168. package/dist/components/message/command-message-helpers.d.ts +2 -2
  169. package/dist/components/message/command-message-helpers.d.ts.map +1 -1
  170. package/dist/components/prompt/ApprovalPrompt.d.ts +12 -1
  171. package/dist/components/prompt/ApprovalPrompt.d.ts.map +1 -1
  172. package/dist/components/prompt/ApprovalPrompt.js +100 -147
  173. package/dist/components/prompt/ApprovalPrompt.js.map +1 -1
  174. package/dist/components/prompt/ConfirmPrompt.d.ts.map +1 -1
  175. package/dist/components/prompt/ConfirmPrompt.js +7 -4
  176. package/dist/components/prompt/ConfirmPrompt.js.map +1 -1
  177. package/dist/components/prompt/QueuePausedPrompt.d.ts.map +1 -1
  178. package/dist/components/prompt/QueuePausedPrompt.js +7 -4
  179. package/dist/components/prompt/QueuePausedPrompt.js.map +1 -1
  180. package/dist/components/theme.d.ts +10 -52
  181. package/dist/components/theme.d.ts.map +1 -1
  182. package/dist/components/theme.js +11 -68
  183. package/dist/components/theme.js.map +1 -1
  184. package/dist/context/InputContext.d.ts +17 -0
  185. package/dist/context/InputContext.d.ts.map +1 -1
  186. package/dist/context/InputContext.js +12 -0
  187. package/dist/context/InputContext.js.map +1 -1
  188. package/dist/gateway/gateway.d.ts.map +1 -1
  189. package/dist/gateway/gateway.js +31 -11
  190. package/dist/gateway/gateway.js.map +1 -1
  191. package/dist/gateway/launcher-seam.js +2 -2
  192. package/dist/gateway/launcher-seam.js.map +1 -1
  193. package/dist/gateway/runtime-factory.d.ts.map +1 -1
  194. package/dist/gateway/runtime-factory.js +2 -3
  195. package/dist/gateway/runtime-factory.js.map +1 -1
  196. package/dist/gateway/settings-rpc.d.ts +5 -2
  197. package/dist/gateway/settings-rpc.d.ts.map +1 -1
  198. package/dist/gateway/settings-rpc.js +6 -4
  199. package/dist/gateway/settings-rpc.js.map +1 -1
  200. package/dist/hooks/conversation-ui-reducer.d.ts +5 -2
  201. package/dist/hooks/conversation-ui-reducer.d.ts.map +1 -1
  202. package/dist/hooks/conversation-ui-reducer.js +9 -2
  203. package/dist/hooks/conversation-ui-reducer.js.map +1 -1
  204. package/dist/hooks/settings-completion-config.d.ts +0 -2
  205. package/dist/hooks/settings-completion-config.d.ts.map +1 -1
  206. package/dist/hooks/settings-completion-config.js +4 -23
  207. package/dist/hooks/settings-completion-config.js.map +1 -1
  208. package/dist/hooks/use-app-commands.d.ts +1 -1
  209. package/dist/hooks/use-app-commands.d.ts.map +1 -1
  210. package/dist/hooks/use-app-keyboard-shortcuts.d.ts +6 -1
  211. package/dist/hooks/use-app-keyboard-shortcuts.d.ts.map +1 -1
  212. package/dist/hooks/use-app-keyboard-shortcuts.js +17 -11
  213. package/dist/hooks/use-app-keyboard-shortcuts.js.map +1 -1
  214. package/dist/hooks/use-conversation-settings.d.ts +3 -2
  215. package/dist/hooks/use-conversation-settings.d.ts.map +1 -1
  216. package/dist/hooks/use-conversation-settings.js +4 -4
  217. package/dist/hooks/use-conversation-settings.js.map +1 -1
  218. package/dist/hooks/use-conversation.d.ts +2 -1
  219. package/dist/hooks/use-conversation.d.ts.map +1 -1
  220. package/dist/hooks/use-conversation.js +5 -5
  221. package/dist/hooks/use-conversation.js.map +1 -1
  222. package/dist/hooks/use-first-run-setup.d.ts +1 -2
  223. package/dist/hooks/use-first-run-setup.d.ts.map +1 -1
  224. package/dist/hooks/use-first-run-setup.js +7 -17
  225. package/dist/hooks/use-first-run-setup.js.map +1 -1
  226. package/dist/hooks/use-grok-credit-usage.js +1 -1
  227. package/dist/hooks/use-grok-credit-usage.js.map +1 -1
  228. package/dist/hooks/use-handoff-flow.d.ts +1 -1
  229. package/dist/hooks/use-handoff-flow.d.ts.map +1 -1
  230. package/dist/hooks/use-handoff-flow.js +3 -3
  231. package/dist/hooks/use-handoff-flow.js.map +1 -1
  232. package/dist/hooks/use-model-selection.d.ts.map +1 -1
  233. package/dist/hooks/use-model-selection.js +6 -8
  234. package/dist/hooks/use-model-selection.js.map +1 -1
  235. package/dist/hooks/use-opencode-go-usage.js +1 -1
  236. package/dist/hooks/use-opencode-go-usage.js.map +1 -1
  237. package/dist/hooks/use-runtime-settings.d.ts +2 -2
  238. package/dist/hooks/use-runtime-settings.d.ts.map +1 -1
  239. package/dist/hooks/use-runtime-settings.js +3 -3
  240. package/dist/hooks/use-runtime-settings.js.map +1 -1
  241. package/dist/hooks/use-standalone-model-picker.d.ts.map +1 -1
  242. package/dist/hooks/use-standalone-model-picker.js +7 -6
  243. package/dist/hooks/use-standalone-model-picker.js.map +1 -1
  244. package/dist/hooks/use-subagent-pool-selection.d.ts +9 -16
  245. package/dist/hooks/use-subagent-pool-selection.d.ts.map +1 -1
  246. package/dist/hooks/use-subagent-pool-selection.js +15 -33
  247. package/dist/hooks/use-subagent-pool-selection.js.map +1 -1
  248. package/dist/lib/agent-client.d.ts +4 -5
  249. package/dist/lib/agent-client.d.ts.map +1 -1
  250. package/dist/lib/agent-client.js +6 -12
  251. package/dist/lib/agent-client.js.map +1 -1
  252. package/dist/lib/agent-configuration.d.ts +3 -4
  253. package/dist/lib/agent-configuration.d.ts.map +1 -1
  254. package/dist/lib/agent-configuration.js +19 -33
  255. package/dist/lib/agent-configuration.js.map +1 -1
  256. package/dist/lib/agent-factory.d.ts +4 -3
  257. package/dist/lib/agent-factory.d.ts.map +1 -1
  258. package/dist/lib/agent-factory.js +6 -3
  259. package/dist/lib/agent-factory.js.map +1 -1
  260. package/dist/non-interactive.d.ts.map +1 -1
  261. package/dist/non-interactive.js +4 -4
  262. package/dist/non-interactive.js.map +1 -1
  263. package/dist/providers/codex.provider.js +1 -1
  264. package/dist/providers/codex.provider.js.map +1 -1
  265. package/dist/providers/grok.provider.js +1 -1
  266. package/dist/providers/grok.provider.js.map +1 -1
  267. package/dist/providers/model-catalog/catalog.generated.d.ts +239 -171
  268. package/dist/providers/model-catalog/catalog.generated.d.ts.map +1 -1
  269. package/dist/providers/model-catalog/catalog.generated.js +238 -179
  270. package/dist/providers/model-catalog/catalog.generated.js.map +1 -1
  271. package/dist/providers/model-catalog/generate-catalog.d.ts.map +1 -1
  272. package/dist/providers/model-catalog/generate-catalog.js +13 -5
  273. package/dist/providers/model-catalog/generate-catalog.js.map +1 -1
  274. package/dist/providers/openai-chat-completions-model.d.ts.map +1 -1
  275. package/dist/providers/openai-chat-completions-model.js +5 -2
  276. package/dist/providers/openai-chat-completions-model.js.map +1 -1
  277. package/dist/providers/openai-compatible-lazy.js +1 -1
  278. package/dist/providers/openai-compatible-lazy.js.map +1 -1
  279. package/dist/providers/openai.provider.js +1 -1
  280. package/dist/providers/openai.provider.js.map +1 -1
  281. package/dist/providers/openrouter.provider.js +1 -1
  282. package/dist/providers/openrouter.provider.js.map +1 -1
  283. package/dist/providers/provider-service.d.ts.map +1 -1
  284. package/dist/providers/provider-service.js +6 -7
  285. package/dist/providers/provider-service.js.map +1 -1
  286. package/dist/scripts/eval-auto-approval/runner.js +2 -3
  287. package/dist/scripts/eval-auto-approval/runner.js.map +1 -1
  288. package/dist/scripts/eval-context-compaction/runner.js +1 -2
  289. package/dist/scripts/eval-context-compaction/runner.js.map +1 -1
  290. package/dist/services/agent-runtime/model-resolver.d.ts +4 -13
  291. package/dist/services/agent-runtime/model-resolver.d.ts.map +1 -1
  292. package/dist/services/agent-runtime/model-resolver.js +9 -39
  293. package/dist/services/agent-runtime/model-resolver.js.map +1 -1
  294. package/dist/services/approval/background-subagent-approval-controller.d.ts +1 -0
  295. package/dist/services/approval/background-subagent-approval-controller.d.ts.map +1 -1
  296. package/dist/services/approval/background-subagent-approval-controller.js +3 -0
  297. package/dist/services/approval/background-subagent-approval-controller.js.map +1 -1
  298. package/dist/services/approval/background-subagent-approval-queue.d.ts +5 -0
  299. package/dist/services/approval/background-subagent-approval-queue.d.ts.map +1 -1
  300. package/dist/services/approval/background-subagent-approval-queue.js +18 -2
  301. package/dist/services/approval/background-subagent-approval-queue.js.map +1 -1
  302. package/dist/services/control-socket/control-session-port.js +6 -6
  303. package/dist/services/control-socket/control-session-port.js.map +1 -1
  304. package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
  305. package/dist/services/conversation/conversation-adapter.js +32 -6
  306. package/dist/services/conversation/conversation-adapter.js.map +1 -1
  307. package/dist/services/conversation/conversation-admission-workflow.d.ts +2 -0
  308. package/dist/services/conversation/conversation-admission-workflow.d.ts.map +1 -1
  309. package/dist/services/conversation/conversation-admission-workflow.js +1 -1
  310. package/dist/services/conversation/conversation-admission-workflow.js.map +1 -1
  311. package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
  312. package/dist/services/conversation/conversation-orchestrator.js +41 -21
  313. package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
  314. package/dist/services/conversation/conversation-orchestrator.types.d.ts +4 -3
  315. package/dist/services/conversation/conversation-orchestrator.types.d.ts.map +1 -1
  316. package/dist/services/conversation/conversation-replay.d.ts.map +1 -1
  317. package/dist/services/conversation/conversation-replay.js +9 -0
  318. package/dist/services/conversation/conversation-replay.js.map +1 -1
  319. package/dist/services/conversation/conversation-service.d.ts +2 -3
  320. package/dist/services/conversation/conversation-service.d.ts.map +1 -1
  321. package/dist/services/conversation/conversation-service.js +20 -11
  322. package/dist/services/conversation/conversation-service.js.map +1 -1
  323. package/dist/services/conversation-agent-client.d.ts +2 -1
  324. package/dist/services/conversation-agent-client.d.ts.map +1 -1
  325. package/dist/services/cost/model-cost.d.ts +6 -0
  326. package/dist/services/cost/model-cost.d.ts.map +1 -1
  327. package/dist/services/cost/model-cost.js +12 -0
  328. package/dist/services/cost/model-cost.js.map +1 -1
  329. package/dist/services/cost/pricing.d.ts +1 -1
  330. package/dist/services/cost/pricing.d.ts.map +1 -1
  331. package/dist/services/cost/pricing.js +5 -5
  332. package/dist/services/cost/pricing.js.map +1 -1
  333. package/dist/services/handoff/handoff-session.d.ts +1 -1
  334. package/dist/services/handoff/handoff-session.d.ts.map +1 -1
  335. package/dist/services/handoff/handoff-session.js +10 -12
  336. package/dist/services/handoff/handoff-session.js.map +1 -1
  337. package/dist/services/logging/conversation-log-events.d.ts.map +1 -1
  338. package/dist/services/logging/conversation-log-events.js +1 -2
  339. package/dist/services/logging/conversation-log-events.js.map +1 -1
  340. package/dist/services/model-service.js +1 -1
  341. package/dist/services/model-service.js.map +1 -1
  342. package/dist/services/models/model-picker-host.d.ts.map +1 -1
  343. package/dist/services/models/model-picker-host.js +9 -5
  344. package/dist/services/models/model-picker-host.js.map +1 -1
  345. package/dist/services/models/model-resolution.d.ts +2 -2
  346. package/dist/services/models/model-resolution.d.ts.map +1 -1
  347. package/dist/services/models/model-resolution.js +8 -2
  348. package/dist/services/models/model-resolution.js.map +1 -1
  349. package/dist/services/queue/queue-controller.d.ts +3 -0
  350. package/dist/services/queue/queue-controller.d.ts.map +1 -1
  351. package/dist/services/queue/queue-controller.js +53 -5
  352. package/dist/services/queue/queue-controller.js.map +1 -1
  353. package/dist/services/runtime-setting-router.d.ts +2 -2
  354. package/dist/services/runtime-setting-router.d.ts.map +1 -1
  355. package/dist/services/runtime-setting-router.js +8 -17
  356. package/dist/services/runtime-setting-router.js.map +1 -1
  357. package/dist/services/session/session-client-factory.js +1 -1
  358. package/dist/services/session/session-client-factory.js.map +1 -1
  359. package/dist/services/session/session-composition.d.ts +4 -1
  360. package/dist/services/session/session-composition.d.ts.map +1 -1
  361. package/dist/services/session/session-composition.js +70 -17
  362. package/dist/services/session/session-composition.js.map +1 -1
  363. package/dist/services/session/session-input-planner.js +2 -2
  364. package/dist/services/session/session-input-planner.js.map +1 -1
  365. package/dist/services/session/session-manager.d.ts.map +1 -1
  366. package/dist/services/session/session-manager.js +4 -2
  367. package/dist/services/session/session-manager.js.map +1 -1
  368. package/dist/services/session/session-runtime-controller.d.ts +2 -4
  369. package/dist/services/session/session-runtime-controller.d.ts.map +1 -1
  370. package/dist/services/session/session-runtime-controller.js +2 -14
  371. package/dist/services/session/session-runtime-controller.js.map +1 -1
  372. package/dist/services/session/test-helpers/conversation-session-fixtures.d.ts.map +1 -1
  373. package/dist/services/session/test-helpers/conversation-session-fixtures.js +5 -2
  374. package/dist/services/session/test-helpers/conversation-session-fixtures.js.map +1 -1
  375. package/dist/services/settings/ancillary-settings-migration.d.ts +1 -1
  376. package/dist/services/settings/ancillary-settings-migration.d.ts.map +1 -1
  377. package/dist/services/settings/ancillary-settings-migration.js +4 -37
  378. package/dist/services/settings/ancillary-settings-migration.js.map +1 -1
  379. package/dist/services/settings/model-selection.d.ts +7 -0
  380. package/dist/services/settings/model-selection.d.ts.map +1 -0
  381. package/dist/services/settings/model-selection.js +6 -0
  382. package/dist/services/settings/model-selection.js.map +1 -0
  383. package/dist/services/settings/persisted-selection-migration.d.ts +9 -0
  384. package/dist/services/settings/persisted-selection-migration.d.ts.map +1 -0
  385. package/dist/services/settings/persisted-selection-migration.js +109 -0
  386. package/dist/services/settings/persisted-selection-migration.js.map +1 -0
  387. package/dist/services/settings/setting-schema-utils.d.ts.map +1 -1
  388. package/dist/services/settings/setting-schema-utils.js +5 -2
  389. package/dist/services/settings/setting-schema-utils.js.map +1 -1
  390. package/dist/services/settings/settings-env.d.ts.map +1 -1
  391. package/dist/services/settings/settings-env.js +0 -2
  392. package/dist/services/settings/settings-env.js.map +1 -1
  393. package/dist/services/settings/settings-merger.d.ts.map +1 -1
  394. package/dist/services/settings/settings-merger.js +12 -5
  395. package/dist/services/settings/settings-merger.js.map +1 -1
  396. package/dist/services/settings/settings-persistence.d.ts +1 -0
  397. package/dist/services/settings/settings-persistence.d.ts.map +1 -1
  398. package/dist/services/settings/settings-persistence.js +23 -5
  399. package/dist/services/settings/settings-persistence.js.map +1 -1
  400. package/dist/services/settings/settings-schema.d.ts +96 -118
  401. package/dist/services/settings/settings-schema.d.ts.map +1 -1
  402. package/dist/services/settings/settings-schema.js +70 -177
  403. package/dist/services/settings/settings-schema.js.map +1 -1
  404. package/dist/services/settings/settings-service.d.ts +2 -1
  405. package/dist/services/settings/settings-service.d.ts.map +1 -1
  406. package/dist/services/settings/settings-service.js +31 -10
  407. package/dist/services/settings/settings-service.js.map +1 -1
  408. package/dist/services/settings/settings-service.mock.js +2 -2
  409. package/dist/services/settings/settings-service.mock.js.map +1 -1
  410. package/dist/services/settings/settings-sources.d.ts +3 -20
  411. package/dist/services/settings/settings-sources.d.ts.map +1 -1
  412. package/dist/services/settings/settings-sources.js +3 -20
  413. package/dist/services/settings/settings-sources.js.map +1 -1
  414. package/dist/services/settings/settings-ui-metadata.d.ts.map +1 -1
  415. package/dist/services/settings/settings-ui-metadata.js +6 -24
  416. package/dist/services/settings/settings-ui-metadata.js.map +1 -1
  417. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +6 -6
  418. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -1
  419. package/dist/services/settings/test-helpers/settings-consumer-inventory.js +10 -29
  420. package/dist/services/settings/test-helpers/settings-consumer-inventory.js.map +1 -1
  421. package/dist/services/shell/background-shell-output-store.d.ts +4 -2
  422. package/dist/services/shell/background-shell-output-store.d.ts.map +1 -1
  423. package/dist/services/shell/background-shell-output-store.js +9 -8
  424. package/dist/services/shell/background-shell-output-store.js.map +1 -1
  425. package/dist/services/shell/background-shell-watches.d.ts.map +1 -1
  426. package/dist/services/shell/background-shell-watches.js +20 -9
  427. package/dist/services/shell/background-shell-watches.js.map +1 -1
  428. package/dist/services/subagents/mentor-runner.d.ts.map +1 -1
  429. package/dist/services/subagents/mentor-runner.js +10 -6
  430. package/dist/services/subagents/mentor-runner.js.map +1 -1
  431. package/dist/services/subagents/role-loader.d.ts.map +1 -1
  432. package/dist/services/subagents/role-loader.js +9 -17
  433. package/dist/services/subagents/role-loader.js.map +1 -1
  434. package/dist/services/subagents/subagent-async-registry.js +2 -2
  435. package/dist/services/subagents/subagent-async-registry.js.map +1 -1
  436. package/dist/services/subagents/subagent-pool-config.d.ts +0 -6
  437. package/dist/services/subagents/subagent-pool-config.d.ts.map +1 -1
  438. package/dist/services/subagents/subagent-pool-config.js +1 -22
  439. package/dist/services/subagents/subagent-pool-config.js.map +1 -1
  440. package/dist/services/subagents/subagent-role-pool-selector.d.ts +1 -2
  441. package/dist/services/subagents/subagent-role-pool-selector.d.ts.map +1 -1
  442. package/dist/services/subagents/subagent-role-pool-selector.js +4 -10
  443. package/dist/services/subagents/subagent-role-pool-selector.js.map +1 -1
  444. package/dist/services/subagents/subagent-run-control.d.ts.map +1 -1
  445. package/dist/services/subagents/subagent-run-control.js +3 -2
  446. package/dist/services/subagents/subagent-run-control.js.map +1 -1
  447. package/dist/services/subagents/test-helpers/subagent-manager-fixtures.d.ts.map +1 -1
  448. package/dist/services/subagents/test-helpers/subagent-manager-fixtures.js +8 -2
  449. package/dist/services/subagents/test-helpers/subagent-manager-fixtures.js.map +1 -1
  450. package/dist/services/subagents/utils.d.ts +1 -1
  451. package/dist/services/subagents/utils.d.ts.map +1 -1
  452. package/dist/services/subagents/utils.js +5 -4
  453. package/dist/services/subagents/utils.js.map +1 -1
  454. package/dist/skins/SkinContext.d.ts +18 -0
  455. package/dist/skins/SkinContext.d.ts.map +1 -0
  456. package/dist/skins/SkinContext.js +23 -0
  457. package/dist/skins/SkinContext.js.map +1 -0
  458. package/dist/skins/cards/activity.d.ts +8 -0
  459. package/dist/skins/cards/activity.d.ts.map +1 -0
  460. package/dist/skins/cards/activity.js +23 -0
  461. package/dist/skins/cards/activity.js.map +1 -0
  462. package/dist/skins/cards/approval.d.ts +15 -0
  463. package/dist/skins/cards/approval.d.ts.map +1 -0
  464. package/dist/skins/cards/approval.js +64 -0
  465. package/dist/skins/cards/approval.js.map +1 -0
  466. package/dist/skins/cards/body.d.ts +14 -0
  467. package/dist/skins/cards/body.d.ts.map +1 -0
  468. package/dist/skins/cards/body.js +65 -0
  469. package/dist/skins/cards/body.js.map +1 -0
  470. package/dist/skins/cards/card.d.ts +28 -0
  471. package/dist/skins/cards/card.d.ts.map +1 -0
  472. package/dist/skins/cards/card.js +37 -0
  473. package/dist/skins/cards/card.js.map +1 -0
  474. package/dist/skins/cards/index.d.ts +9 -0
  475. package/dist/skins/cards/index.d.ts.map +1 -0
  476. package/dist/skins/cards/index.js +41 -0
  477. package/dist/skins/cards/index.js.map +1 -0
  478. package/dist/skins/cards/live-region.d.ts +16 -0
  479. package/dist/skins/cards/live-region.d.ts.map +1 -0
  480. package/dist/skins/cards/live-region.js +83 -0
  481. package/dist/skins/cards/live-region.js.map +1 -0
  482. package/dist/skins/cards/measure.d.ts +17 -0
  483. package/dist/skins/cards/measure.d.ts.map +1 -0
  484. package/dist/skins/cards/measure.js +29 -0
  485. package/dist/skins/cards/measure.js.map +1 -0
  486. package/dist/skins/cards/messages.d.ts +23 -0
  487. package/dist/skins/cards/messages.d.ts.map +1 -0
  488. package/dist/skins/cards/messages.js +80 -0
  489. package/dist/skins/cards/messages.js.map +1 -0
  490. package/dist/skins/cards/status.d.ts +9 -0
  491. package/dist/skins/cards/status.d.ts.map +1 -0
  492. package/dist/skins/cards/status.js +205 -0
  493. package/dist/skins/cards/status.js.map +1 -0
  494. package/dist/skins/cards/tools.d.ts +21 -0
  495. package/dist/skins/cards/tools.d.ts.map +1 -0
  496. package/dist/skins/cards/tools.js +101 -0
  497. package/dist/skins/cards/tools.js.map +1 -0
  498. package/dist/skins/cards/width.d.ts +4 -0
  499. package/dist/skins/cards/width.d.ts.map +1 -0
  500. package/dist/skins/cards/width.js +32 -0
  501. package/dist/skins/cards/width.js.map +1 -0
  502. package/dist/skins/classic/approval.d.ts +19 -0
  503. package/dist/skins/classic/approval.d.ts.map +1 -0
  504. package/dist/skins/classic/approval.js +50 -0
  505. package/dist/skins/classic/approval.js.map +1 -0
  506. package/dist/skins/classic/index.d.ts +7 -0
  507. package/dist/skins/classic/index.d.ts.map +1 -0
  508. package/dist/skins/classic/index.js +39 -0
  509. package/dist/skins/classic/index.js.map +1 -0
  510. package/dist/skins/classic/live-region.d.ts +19 -0
  511. package/dist/skins/classic/live-region.d.ts.map +1 -0
  512. package/dist/skins/classic/live-region.js +71 -0
  513. package/dist/skins/classic/live-region.js.map +1 -0
  514. package/dist/skins/classic/menu.d.ts +5 -0
  515. package/dist/skins/classic/menu.d.ts.map +1 -0
  516. package/dist/skins/classic/menu.js +20 -0
  517. package/dist/skins/classic/menu.js.map +1 -0
  518. package/dist/skins/classic/messages.d.ts +13 -0
  519. package/dist/skins/classic/messages.d.ts.map +1 -0
  520. package/dist/skins/classic/messages.js +65 -0
  521. package/dist/skins/classic/messages.js.map +1 -0
  522. package/dist/skins/classic/question.d.ts +5 -0
  523. package/dist/skins/classic/question.d.ts.map +1 -0
  524. package/dist/skins/classic/question.js +33 -0
  525. package/dist/skins/classic/question.js.map +1 -0
  526. package/dist/skins/classic/status.d.ts +10 -0
  527. package/dist/skins/classic/status.d.ts.map +1 -0
  528. package/dist/skins/classic/status.js +158 -0
  529. package/dist/skins/classic/status.js.map +1 -0
  530. package/dist/skins/classic/subagent.d.ts +5 -0
  531. package/dist/skins/classic/subagent.d.ts.map +1 -0
  532. package/dist/skins/classic/subagent.js +14 -0
  533. package/dist/skins/classic/subagent.js.map +1 -0
  534. package/dist/skins/classic/tool-section.d.ts +8 -0
  535. package/dist/skins/classic/tool-section.d.ts.map +1 -0
  536. package/dist/skins/classic/tool-section.js +20 -0
  537. package/dist/skins/classic/tool-section.js.map +1 -0
  538. package/dist/skins/classic/tools.d.ts +19 -0
  539. package/dist/skins/classic/tools.d.ts.map +1 -0
  540. package/dist/skins/classic/tools.js +72 -0
  541. package/dist/skins/classic/tools.js.map +1 -0
  542. package/dist/skins/ledger/activity.d.ts +6 -0
  543. package/dist/skins/ledger/activity.d.ts.map +1 -0
  544. package/dist/skins/ledger/activity.js +18 -0
  545. package/dist/skins/ledger/activity.js.map +1 -0
  546. package/dist/skins/ledger/approval.d.ts +17 -0
  547. package/dist/skins/ledger/approval.d.ts.map +1 -0
  548. package/dist/skins/ledger/approval.js +67 -0
  549. package/dist/skins/ledger/approval.js.map +1 -0
  550. package/dist/skins/ledger/body.d.ts +11 -0
  551. package/dist/skins/ledger/body.d.ts.map +1 -0
  552. package/dist/skins/ledger/body.js +77 -0
  553. package/dist/skins/ledger/body.js.map +1 -0
  554. package/dist/skins/ledger/chip.d.ts +27 -0
  555. package/dist/skins/ledger/chip.d.ts.map +1 -0
  556. package/dist/skins/ledger/chip.js +25 -0
  557. package/dist/skins/ledger/chip.js.map +1 -0
  558. package/dist/skins/ledger/index.d.ts +11 -0
  559. package/dist/skins/ledger/index.d.ts.map +1 -0
  560. package/dist/skins/ledger/index.js +44 -0
  561. package/dist/skins/ledger/index.js.map +1 -0
  562. package/dist/skins/ledger/live-region.d.ts +20 -0
  563. package/dist/skins/ledger/live-region.d.ts.map +1 -0
  564. package/dist/skins/ledger/live-region.js +89 -0
  565. package/dist/skins/ledger/live-region.js.map +1 -0
  566. package/dist/skins/ledger/messages.d.ts +17 -0
  567. package/dist/skins/ledger/messages.d.ts.map +1 -0
  568. package/dist/skins/ledger/messages.js +62 -0
  569. package/dist/skins/ledger/messages.js.map +1 -0
  570. package/dist/skins/ledger/status.d.ts +10 -0
  571. package/dist/skins/ledger/status.d.ts.map +1 -0
  572. package/dist/skins/ledger/status.js +302 -0
  573. package/dist/skins/ledger/status.js.map +1 -0
  574. package/dist/skins/ledger/tools.d.ts +20 -0
  575. package/dist/skins/ledger/tools.d.ts.map +1 -0
  576. package/dist/skins/ledger/tools.js +101 -0
  577. package/dist/skins/ledger/tools.js.map +1 -0
  578. package/dist/skins/names.d.ts +10 -0
  579. package/dist/skins/names.d.ts.map +1 -0
  580. package/dist/skins/names.js +9 -0
  581. package/dist/skins/names.js.map +1 -0
  582. package/dist/skins/rail/activity.d.ts +8 -0
  583. package/dist/skins/rail/activity.d.ts.map +1 -0
  584. package/dist/skins/rail/activity.js +23 -0
  585. package/dist/skins/rail/activity.js.map +1 -0
  586. package/dist/skins/rail/approval.d.ts +16 -0
  587. package/dist/skins/rail/approval.d.ts.map +1 -0
  588. package/dist/skins/rail/approval.js +45 -0
  589. package/dist/skins/rail/approval.js.map +1 -0
  590. package/dist/skins/rail/body.d.ts +19 -0
  591. package/dist/skins/rail/body.d.ts.map +1 -0
  592. package/dist/skins/rail/body.js +69 -0
  593. package/dist/skins/rail/body.js.map +1 -0
  594. package/dist/skins/rail/index.d.ts +12 -0
  595. package/dist/skins/rail/index.d.ts.map +1 -0
  596. package/dist/skins/rail/index.js +44 -0
  597. package/dist/skins/rail/index.js.map +1 -0
  598. package/dist/skins/rail/live-region.d.ts +19 -0
  599. package/dist/skins/rail/live-region.d.ts.map +1 -0
  600. package/dist/skins/rail/live-region.js +88 -0
  601. package/dist/skins/rail/live-region.js.map +1 -0
  602. package/dist/skins/rail/messages.d.ts +21 -0
  603. package/dist/skins/rail/messages.d.ts.map +1 -0
  604. package/dist/skins/rail/messages.js +90 -0
  605. package/dist/skins/rail/messages.js.map +1 -0
  606. package/dist/skins/rail/parts.d.ts +25 -0
  607. package/dist/skins/rail/parts.d.ts.map +1 -0
  608. package/dist/skins/rail/parts.js +37 -0
  609. package/dist/skins/rail/parts.js.map +1 -0
  610. package/dist/skins/rail/status.d.ts +10 -0
  611. package/dist/skins/rail/status.d.ts.map +1 -0
  612. package/dist/skins/rail/status.js +147 -0
  613. package/dist/skins/rail/status.js.map +1 -0
  614. package/dist/skins/rail/tools.d.ts +28 -0
  615. package/dist/skins/rail/tools.d.ts.map +1 -0
  616. package/dist/skins/rail/tools.js +85 -0
  617. package/dist/skins/rail/tools.js.map +1 -0
  618. package/dist/skins/registry.d.ts +6 -0
  619. package/dist/skins/registry.d.ts.map +1 -0
  620. package/dist/skins/registry.js +15 -0
  621. package/dist/skins/registry.js.map +1 -0
  622. package/dist/skins/shared/gauge.d.ts +17 -0
  623. package/dist/skins/shared/gauge.d.ts.map +1 -0
  624. package/dist/skins/shared/gauge.js +29 -0
  625. package/dist/skins/shared/gauge.js.map +1 -0
  626. package/dist/skins/shared/limits.d.ts +3 -0
  627. package/dist/skins/shared/limits.d.ts.map +1 -0
  628. package/dist/skins/shared/limits.js +3 -0
  629. package/dist/skins/shared/limits.js.map +1 -0
  630. package/dist/skins/shared/spinner.d.ts +14 -0
  631. package/dist/skins/shared/spinner.d.ts.map +1 -0
  632. package/dist/skins/shared/spinner.js +25 -0
  633. package/dist/skins/shared/spinner.js.map +1 -0
  634. package/dist/skins/testing/conformance.d.ts +8 -0
  635. package/dist/skins/testing/conformance.d.ts.map +1 -0
  636. package/dist/skins/testing/conformance.js +34 -0
  637. package/dist/skins/testing/conformance.js.map +1 -0
  638. package/dist/skins/testing/scenes.d.ts +45 -0
  639. package/dist/skins/testing/scenes.d.ts.map +1 -0
  640. package/dist/skins/testing/scenes.js +465 -0
  641. package/dist/skins/testing/scenes.js.map +1 -0
  642. package/dist/skins/types.d.ts +294 -0
  643. package/dist/skins/types.d.ts.map +1 -0
  644. package/dist/skins/types.js +10 -0
  645. package/dist/skins/types.js.map +1 -0
  646. package/dist/skins/zen/activity.d.ts +7 -0
  647. package/dist/skins/zen/activity.d.ts.map +1 -0
  648. package/dist/skins/zen/activity.js +22 -0
  649. package/dist/skins/zen/activity.js.map +1 -0
  650. package/dist/skins/zen/approval.d.ts +20 -0
  651. package/dist/skins/zen/approval.d.ts.map +1 -0
  652. package/dist/skins/zen/approval.js +67 -0
  653. package/dist/skins/zen/approval.js.map +1 -0
  654. package/dist/skins/zen/body.d.ts +14 -0
  655. package/dist/skins/zen/body.d.ts.map +1 -0
  656. package/dist/skins/zen/body.js +82 -0
  657. package/dist/skins/zen/body.js.map +1 -0
  658. package/dist/skins/zen/index.d.ts +12 -0
  659. package/dist/skins/zen/index.d.ts.map +1 -0
  660. package/dist/skins/zen/index.js +44 -0
  661. package/dist/skins/zen/index.js.map +1 -0
  662. package/dist/skins/zen/live-region.d.ts +21 -0
  663. package/dist/skins/zen/live-region.d.ts.map +1 -0
  664. package/dist/skins/zen/live-region.js +77 -0
  665. package/dist/skins/zen/live-region.js.map +1 -0
  666. package/dist/skins/zen/messages.d.ts +27 -0
  667. package/dist/skins/zen/messages.d.ts.map +1 -0
  668. package/dist/skins/zen/messages.js +81 -0
  669. package/dist/skins/zen/messages.js.map +1 -0
  670. package/dist/skins/zen/status.d.ts +11 -0
  671. package/dist/skins/zen/status.d.ts.map +1 -0
  672. package/dist/skins/zen/status.js +177 -0
  673. package/dist/skins/zen/status.js.map +1 -0
  674. package/dist/skins/zen/style.d.ts +26 -0
  675. package/dist/skins/zen/style.d.ts.map +1 -0
  676. package/dist/skins/zen/style.js +14 -0
  677. package/dist/skins/zen/style.js.map +1 -0
  678. package/dist/skins/zen/tools.d.ts +23 -0
  679. package/dist/skins/zen/tools.d.ts.map +1 -0
  680. package/dist/skins/zen/tools.js +81 -0
  681. package/dist/skins/zen/tools.js.map +1 -0
  682. package/dist/skins/zen/width.d.ts +12 -0
  683. package/dist/skins/zen/width.d.ts.map +1 -0
  684. package/dist/skins/zen/width.js +27 -0
  685. package/dist/skins/zen/width.js.map +1 -0
  686. package/dist/theme/ThemeContext.d.ts +26 -0
  687. package/dist/theme/ThemeContext.d.ts.map +1 -0
  688. package/dist/theme/ThemeContext.js +24 -0
  689. package/dist/theme/ThemeContext.js.map +1 -0
  690. package/dist/theme/detect-terminal-background.d.ts +29 -0
  691. package/dist/theme/detect-terminal-background.d.ts.map +1 -0
  692. package/dist/theme/detect-terminal-background.js +72 -0
  693. package/dist/theme/detect-terminal-background.js.map +1 -0
  694. package/dist/theme/palettes.d.ts +84 -0
  695. package/dist/theme/palettes.d.ts.map +1 -0
  696. package/dist/theme/palettes.js +175 -0
  697. package/dist/theme/palettes.js.map +1 -0
  698. package/dist/theme/resolve-theme.d.ts +44 -0
  699. package/dist/theme/resolve-theme.d.ts.map +1 -0
  700. package/dist/theme/resolve-theme.js +72 -0
  701. package/dist/theme/resolve-theme.js.map +1 -0
  702. package/dist/tools/file/create-file.js +1 -1
  703. package/dist/tools/file/create-file.js.map +1 -1
  704. package/dist/tools/file/edit-healing.js +1 -1
  705. package/dist/tools/file/edit-healing.js.map +1 -1
  706. package/dist/tools/file/patch-healing.js +1 -1
  707. package/dist/tools/file/patch-healing.js.map +1 -1
  708. package/dist/tools/system/run-code/run-code-execution.d.ts +7 -0
  709. package/dist/tools/system/run-code/run-code-execution.d.ts.map +1 -1
  710. package/dist/tools/system/run-code/run-code-execution.js.map +1 -1
  711. package/dist/tools/system/run-code/run-code-runtime-contract.d.ts +2 -0
  712. package/dist/tools/system/run-code/run-code-runtime-contract.d.ts.map +1 -1
  713. package/dist/tools/system/run-code/run-code-runtime.d.ts +2 -1
  714. package/dist/tools/system/run-code/run-code-runtime.d.ts.map +1 -1
  715. package/dist/tools/system/run-code/run-code-runtime.js +110 -12
  716. package/dist/tools/system/run-code/run-code-runtime.js.map +1 -1
  717. package/dist/tools/system/run-code/run-code.js +15 -8
  718. package/dist/tools/system/run-code/run-code.js.map +1 -1
  719. package/dist/utils/ai/model-settings.d.ts +0 -2
  720. package/dist/utils/ai/model-settings.d.ts.map +1 -1
  721. package/dist/utils/ai/model-settings.js +2 -11
  722. package/dist/utils/ai/model-settings.js.map +1 -1
  723. package/dist/utils/settings-command.d.ts.map +1 -1
  724. package/dist/utils/settings-command.js +25 -24
  725. package/dist/utils/settings-command.js.map +1 -1
  726. package/dist/utils/shell/execute-shell.js +1 -1
  727. package/dist/utils/shell/execute-shell.js.map +1 -1
  728. package/dist/utils/value-suggestions.d.ts +0 -2
  729. package/dist/utils/value-suggestions.d.ts.map +1 -1
  730. package/dist/utils/value-suggestions.js +15 -63
  731. package/dist/utils/value-suggestions.js.map +1 -1
  732. package/package.json +3 -4
@@ -1,6 +1,5 @@
1
1
  import { toTierModelPoolEntries } from '../../services/agent-runtime/model-resolver.js';
2
2
  import React from 'react';
3
- import { Box, Text } from 'ink';
4
3
  import { useSetting } from '../../hooks/use-setting.js';
5
4
  import { useTerminalColumns } from '../../hooks/use-terminal-columns.js';
6
5
  import { hasDockerHostControlProject } from '../../utils/shell/sandbox/docker-host-control-grants.js';
@@ -10,36 +9,11 @@ import { formatContextUsage } from '../../utils/ai/token-usage.js';
10
9
  import { formatTokensPerSecond } from '../../utils/streaming/streaming-speed-tracker.js';
11
10
  import { formatUsdMicros } from '../../services/cost/model-cost.js';
12
11
  import { getActiveWorkspaceRoot } from '../../services/workspace/active-workspace-root.js';
13
- import { terminalTextWidth, truncateTerminalText } from './terminal-text-budget.js';
14
- import { COLOR_ACCENT, COLOR_ACCENT_ALT, COLOR_DANGER, COLOR_SUCCESS, COLOR_TEXT_SUBTLE, COLOR_WARNING, GLYPH_SELECTED, GLYPH_SEPARATOR, GLYPH_WARNING, } from '../theme.js';
15
- /**
16
- * The one separator used between top-level config segments. Spacing lives
17
- * here so every gap is identical; previously the same `│` was written three
18
- * different ways (bare, inside `marginX`, and padded) and the bar looked
19
- * ragged.
20
- */
21
- const Divider = () => React.createElement(Text, { color: COLOR_TEXT_SUBTLE },
22
- " ",
23
- GLYPH_SEPARATOR,
24
- " ");
25
- /** The separator used between metrics segments — a lighter join than the `│`
26
- * used elsewhere, since the metrics group is already one visual cluster. */
27
- const MetricDivider = () => React.createElement(Text, { color: COLOR_TEXT_SUBTLE }, " \u00B7 ");
12
+ import { GLYPH_WARNING } from '../theme.js';
13
+ import { useSkin } from '../../skins/SkinContext.js';
28
14
  function formatStatusBarTokens(tokens) {
29
15
  return tokens > 1_000 ? `${(tokens / 1_000).toFixed(1)}k` : tokens.toLocaleString();
30
16
  }
31
- // terminalTextWidth counts every codepoint above U+007F as 2 columns, which is
32
- // the right conservative default for CJK/emoji text but wildly overcounts the
33
- // narrow box-drawing and arrow glyphs this bar is built from (│ ↑ ↓ · ▲ ❯ …).
34
- // Measuring those as 2 nearly doubles the bar's apparent width and makes the
35
- // budget collapse into the narrow layout far too eagerly. These specific
36
- // glyphs render as exactly one cell in every terminal this app targets (they
37
- // are chosen from theme.ts's "single-width on purpose" set plus the ellipsis
38
- // truncateTerminalText appends), so measure them at 1 and defer to
39
- // terminalTextWidth for everything else. Fix it here, not in
40
- // terminalTextWidth itself — other callers of that function rely on its
41
- // conservative doubling for content that really can be double-width.
42
- const STATUS_BAR_NARROW_GLYPHS = new Set([GLYPH_SEPARATOR, '↑', '↓', '→', '·', GLYPH_WARNING, GLYPH_SELECTED, '…']);
43
17
  const PROFILE_MODE_LABELS = {
44
18
  'builtin:standard': 'Standard',
45
19
  'builtin:lite': 'Lite',
@@ -51,86 +25,6 @@ const PROFILE_MODE_LABELS = {
51
25
  function formatStatusBarRate(tps, approximate) {
52
26
  return formatTokensPerSecond(tps, approximate).replace(' tok/s', 't/s');
53
27
  }
54
- function statusBarTextWidth(value) {
55
- return Array.from(value).reduce((columns, char) => columns + (STATUS_BAR_NARROW_GLYPHS.has(char) ? 1 : terminalTextWidth(char)), 0);
56
- }
57
- const GROUP_SEPARATOR_TEXT = ` ${GLYPH_SEPARATOR} `;
58
- const METRIC_SEPARATOR_TEXT = ' · ';
59
- const GROUP_SEPARATOR_WIDTH = statusBarTextWidth(GROUP_SEPARATOR_TEXT);
60
- const METRIC_SEPARATOR_WIDTH = statusBarTextWidth(METRIC_SEPARATOR_TEXT);
61
- function separatorWidth(kind) {
62
- if (kind === 'group')
63
- return GROUP_SEPARATOR_WIDTH;
64
- if (kind === 'metric')
65
- return METRIC_SEPARATOR_WIDTH;
66
- return 0;
67
- }
68
- function computeVisible(segments, dropped) {
69
- const visible = [];
70
- let anyBefore = false;
71
- for (const segment of segments) {
72
- if (!segment.text || dropped.has(segment.id))
73
- continue;
74
- visible.push({
75
- id: segment.id,
76
- text: segment.text,
77
- color: segment.color,
78
- bold: segment.bold,
79
- showSeparator: Boolean(segment.separator) && anyBefore,
80
- separator: segment.separator,
81
- });
82
- anyBefore = true;
83
- }
84
- return visible;
85
- }
86
- function measureVisible(visible) {
87
- return visible.reduce((total, segment) => total + (segment.showSeparator ? separatorWidth(segment.separator) : 0) + statusBarTextWidth(segment.text), 0);
88
- }
89
- /**
90
- * Fits one segment group to `budget` physical columns by dropping whole
91
- * segments in ascending `tier` order (lowest tier first) until it fits, then —
92
- * only as a last resort, and only for `truncatableId` — shrinking that one
93
- * segment's text with an ellipsis. This is the explicit-budget approach
94
- * BackgroundTasksPanel already uses: compute a hard column budget and shed
95
- * content deliberately, rather than let Ink's flexbox reflow text mid-word
96
- * when nothing fits.
97
- */
98
- function fitGroup(defs, budget, truncatableId) {
99
- const present = defs.filter((segment) => segment.text);
100
- const dropped = new Set();
101
- const dropOrder = present
102
- .filter((segment) => segment.tier != null)
103
- .sort((a, b) => a.tier - b.tier)
104
- .map((segment) => segment.id);
105
- let visible = computeVisible(present, dropped);
106
- let width = measureVisible(visible);
107
- for (const id of dropOrder) {
108
- if (width <= budget)
109
- break;
110
- dropped.add(id);
111
- visible = computeVisible(present, dropped);
112
- width = measureVisible(visible);
113
- }
114
- if (width > budget && truncatableId) {
115
- const index = visible.findIndex((segment) => segment.id === truncatableId);
116
- if (index !== -1) {
117
- const segment = visible[index];
118
- const ownWidth = (segment.showSeparator ? separatorWidth(segment.separator) : 0) + statusBarTextWidth(segment.text);
119
- const otherWidth = width - ownWidth;
120
- const separatorPortion = segment.showSeparator ? separatorWidth(segment.separator) : 0;
121
- const textAllowance = Math.max(1, budget - otherWidth - separatorPortion);
122
- const truncated = truncateTerminalText(segment.text, textAllowance);
123
- visible = visible.map((entry, entryIndex) => (entryIndex === index ? { ...entry, text: truncated } : entry));
124
- width = measureVisible(visible);
125
- }
126
- }
127
- return { visible, width };
128
- }
129
- function renderSegments(visible) {
130
- return visible.map((segment) => (React.createElement(React.Fragment, { key: segment.id },
131
- segment.showSeparator && (segment.separator === 'metric' ? React.createElement(MetricDivider, null) : React.createElement(Divider, null)),
132
- React.createElement(Text, { color: segment.color, bold: segment.bold, wrap: "truncate-end" }, segment.text))));
133
- }
134
28
  /**
135
29
  * formatUsdMicros renders every digit below one cent (e.g. $0.008205), which
136
30
  * is fine standing alone but too long once it has to share a line with a
@@ -161,22 +55,141 @@ const AUTO_APPROVE_LABELS = {
161
55
  auto: 'Auto',
162
56
  always: 'YOLO',
163
57
  };
58
+ /** One quota window as the classic bar prints it: `5H 42%→09:11`, or `Credits 40%` with no reset. */
59
+ export function formatQuotaWindow(window) {
60
+ return `${window.label} ${window.percent}%${window.resetText ? `→${window.resetText}` : ''}`;
61
+ }
62
+ const formatDateMonthDay = (date) => `${String(date.getMonth() + 1).padStart(2, '0')}/${String(date.getDate()).padStart(2, '0')}`;
63
+ function openCodeGoQuotaWindows(usage) {
64
+ if (!usage)
65
+ return [];
66
+ const formatReset = (seconds) => {
67
+ if (seconds < 60)
68
+ return `${Math.round(seconds)}s`;
69
+ const minutes = Math.floor(seconds / 60);
70
+ if (minutes < 60)
71
+ return `${minutes}m`;
72
+ const hours = Math.floor(minutes / 60);
73
+ return hours < 24 ? `${hours}h` : `${Math.floor(hours / 24)}d`;
74
+ };
75
+ const toWindow = (label, limit) => ({
76
+ label,
77
+ percent: Math.round(limit.usagePercent),
78
+ resetText: formatReset(limit.resetInSec),
79
+ });
80
+ return [
81
+ toWindow('Roll', usage.rollingUsage),
82
+ toWindow('Week', usage.weeklyUsage),
83
+ toWindow('Month', usage.monthlyUsage),
84
+ ];
85
+ }
86
+ function codexQuotaWindows(info) {
87
+ if (!info)
88
+ return [];
89
+ const isNumber = (value) => typeof value === 'number' && !isNaN(value);
90
+ // Codex decides which slot carries which window, so derive the unit from the
91
+ // window length instead of assuming primary is short and secondary is weekly.
92
+ const formatWindow = (minutes) => {
93
+ if (minutes >= 24 * 60)
94
+ return `${Math.round(minutes / (24 * 60))}D`;
95
+ if (minutes >= 60)
96
+ return `${Math.round(minutes / 60)}H`;
97
+ return `${Math.round(minutes)}M`;
98
+ };
99
+ const formatTime = (date) => date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });
100
+ // A reset further out than a day only needs a date. A reset landing within
101
+ // 24h needs the clock time, plus the date when the window itself spans days
102
+ // so it stays clear the reset can be tomorrow rather than later today.
103
+ const formatReset = (resetAt, windowMinutes) => {
104
+ const resetDate = new Date(resetAt * 1000);
105
+ const diffMs = resetDate.getTime() - Date.now();
106
+ const within24Hours = diffMs >= 0 && diffMs < 24 * 60 * 60 * 1000;
107
+ if (!within24Hours) {
108
+ return formatDateMonthDay(resetDate);
109
+ }
110
+ return windowMinutes >= 24 * 60
111
+ ? `${formatDateMonthDay(resetDate)} ${formatTime(resetDate)}`
112
+ : formatTime(resetDate);
113
+ };
114
+ const toWindow = (window) => {
115
+ if (!window || !isNumber(window.window_minutes) || !isNumber(window.used_percent) || !isNumber(window.reset_at)) {
116
+ return undefined;
117
+ }
118
+ return {
119
+ label: formatWindow(window.window_minutes),
120
+ percent: window.used_percent,
121
+ resetText: formatReset(window.reset_at, window.window_minutes),
122
+ };
123
+ };
124
+ return [info.primary, info.secondary]
125
+ .map(toWindow)
126
+ .filter((window) => window !== undefined);
127
+ }
128
+ // Grok reports one weekly credit percentage, not the rolling used/reset
129
+ // windows Codex reports, so it gets its own shape in the same slot — only one
130
+ // provider is active at a time.
131
+ function grokQuotaWindows(usage) {
132
+ if (!usage || typeof usage.creditUsagePercent !== 'number')
133
+ return [];
134
+ return [
135
+ {
136
+ label: 'Credits',
137
+ percent: Math.round(usage.creditUsagePercent),
138
+ resetText: usage.periodEndMs === undefined ? undefined : formatDateMonthDay(new Date(usage.periodEndMs)),
139
+ },
140
+ ];
141
+ }
142
+ function formatActiveTime(ms) {
143
+ const totalSeconds = Math.round(ms / 1000);
144
+ if (totalSeconds < 60)
145
+ return `${totalSeconds}s`;
146
+ const minutes = Math.floor(totalSeconds / 60);
147
+ const seconds = totalSeconds % 60;
148
+ return seconds > 0 ? `${minutes}m${seconds}s` : `${minutes}m`;
149
+ }
150
+ // In warn mode the run keeps going past its envelope, so this line is the
151
+ // only signal the human gets. It states the dimension, used vs limit, and
152
+ // percentage consumed, not an instruction — the decision stays with the human.
153
+ function runBudgetNoticeText(notice) {
154
+ if (!notice)
155
+ return '';
156
+ if (notice.type === 'tool_stall') {
157
+ return `${GLYPH_WARNING} Possible stall: ${notice.toolName} ×${notice.count}`;
158
+ }
159
+ const { dimension, used, limit } = notice.evidence;
160
+ const percent = limit > 0 ? Math.round((used / limit) * 100) : 100;
161
+ switch (dimension) {
162
+ case 'usd':
163
+ return `${GLYPH_WARNING} Run ${formatUsdMicros(used)}/${formatUsdMicros(limit)} (${percent}%)`;
164
+ case 'unpriced_tokens':
165
+ return `${GLYPH_WARNING} Run tokens ${formatStatusBarTokens(used)}/${formatStatusBarTokens(limit)} (${percent}%)`;
166
+ case 'active_time':
167
+ return `${GLYPH_WARNING} Run time ${formatActiveTime(used)}/${formatActiveTime(limit)} (${percent}%)`;
168
+ case 'turns':
169
+ return `${GLYPH_WARNING} Run turns ${used}/${limit} (${percent}%)`;
170
+ default:
171
+ return `${GLYPH_WARNING} Run budget: ${percent}%`;
172
+ }
173
+ }
174
+ /**
175
+ * Builds the status view — every number, label and alert, already formatted —
176
+ * and hands it to the active skin to lay out. The formatting and the decisions
177
+ * about what is worth showing live here, so every skin shows the same facts.
178
+ */
164
179
  const StatusBar = ({ settingsService, sshInfo, lastUsage, liveStreamingSpeed, lastCodexRateLimit, grokCreditUsage, openCodeGoUsage, openRouterUpstream, upstreamProvider: upstreamProviderProp, largeUncachedWarning, hasPendingConfirmation = false, pendingLargeUncachedTokens, staticCommitBlocker = null, queueLength, costSummary, runBudgetNotice = null, columns: testColumns, }) => {
180
+ const { StatusBar: SkinStatusBar } = useSkin();
165
181
  const liveColumns = useTerminalColumns();
166
182
  const columns = testColumns ?? liveColumns;
167
- // The bar applies paddingX={1} on both sides, so the budget available to
168
- // segments is narrower than the terminal itself.
169
- const budget = Math.max(1, columns - 2);
170
183
  const activeProfileId = useSetting(settingsService, 'app.activeProfileId') ?? 'builtin:standard';
171
184
  const mentorMode = activeProfileId === 'builtin:mentor';
172
- const model = useSetting(settingsService, 'agent.model');
185
+ const selection = useSetting(settingsService, 'agent.modelSelection');
186
+ const model = selection.model;
173
187
  const smartPool = useSetting(settingsService, 'agent.smartModel');
174
188
  // Display uses the pool's first entry; the pool cursor only advances per
175
189
  // subagent spawn.
176
190
  const smartModel = toTierModelPoolEntries(smartPool)[0]?.model;
177
- const legacyMentorModel = useSetting(settingsService, 'agent.mentorModel');
178
- const mentorModel = smartModel ?? legacyMentorModel;
179
- const providerKey = useSetting(settingsService, 'agent.provider') ?? 'openai';
191
+ const mentorModel = smartModel;
192
+ const providerKey = selection.provider;
180
193
  const reasoningEffort = useSetting(settingsService, 'agent.reasoningEffort') ?? 'default';
181
194
  const debugMode = useSetting(settingsService, 'logging.logLevel') === 'debug';
182
195
  const autoApproveMode = useSetting(settingsService, 'shell.autoApproveMode') ?? 'off';
@@ -195,14 +208,11 @@ const StatusBar = ({ settingsService, sshInfo, lastUsage, liveStreamingSpeed, la
195
208
  const contextWindow = model ? getModelContextWindow(providerKey, model) : undefined;
196
209
  const contextTokens = lastUsage?.prompt_tokens;
197
210
  const contextUsageText = contextTokens != null ? formatContextUsage(contextTokens, contextWindow) : '';
198
- const slate = COLOR_TEXT_SUBTLE;
199
- const glow = COLOR_WARNING;
200
- const accent = COLOR_ACCENT;
201
- const warnRed = COLOR_DANGER;
211
+ const contextPercent = contextTokens != null && contextWindow ? Math.round((contextTokens / contextWindow) * 100) : undefined;
202
212
  const cacheReadTokens = lastUsage?.cache_read_tokens;
203
213
  const usageHasCacheRead = cacheReadTokens != null && cacheReadTokens > 0;
204
214
  const usageHasIntegratedWarning = Boolean(largeUncachedWarning && usageHasCacheRead);
205
- const usageColor = largeUncachedWarning ? (hasPendingConfirmation ? warnRed : glow) : slate;
215
+ const usageTone = largeUncachedWarning ? (hasPendingConfirmation ? 'danger' : 'warning') : 'textSubtle';
206
216
  const tokenPieces = [];
207
217
  if (lastUsage?.prompt_tokens != null)
208
218
  tokenPieces.push(`↑${formatStatusBarTokens(lastUsage.prompt_tokens)}`);
@@ -247,111 +257,15 @@ const StatusBar = ({ settingsService, sshInfo, lastUsage, liveStreamingSpeed, la
247
257
  }
248
258
  return `${GLYPH_WARNING} cache miss risk ~${Math.round(largeUncachedWarning.estimatedTokens / 1000)}k`;
249
259
  })();
250
- const openCodeGoUsageText = (() => {
251
- if (!openCodeGoUsage)
252
- return '';
253
- const formatReset = (seconds) => {
254
- if (seconds < 60)
255
- return `${Math.round(seconds)}s`;
256
- const minutes = Math.floor(seconds / 60);
257
- if (minutes < 60)
258
- return `${minutes}m`;
259
- const hours = Math.floor(minutes / 60);
260
- return hours < 24 ? `${hours}h` : `${Math.floor(hours / 24)}d`;
261
- };
262
- const formatLimit = (label, limit) => `${label} ${Math.round(limit.usagePercent)}%→${formatReset(limit.resetInSec)}`;
263
- return [
264
- formatLimit('Roll', openCodeGoUsage.rollingUsage),
265
- formatLimit('Week', openCodeGoUsage.weeklyUsage),
266
- formatLimit('Month', openCodeGoUsage.monthlyUsage),
267
- ].join(' / ');
268
- })();
269
- const codexRateLimitText = (() => {
270
- if (!lastCodexRateLimit)
271
- return '';
272
- const isNumber = (value) => typeof value === 'number' && !isNaN(value);
273
- // Codex decides which slot carries which window, so derive the unit from the
274
- // window length instead of assuming primary is short and secondary is weekly.
275
- const formatWindow = (minutes) => {
276
- if (minutes >= 24 * 60)
277
- return `${Math.round(minutes / (24 * 60))}D`;
278
- if (minutes >= 60)
279
- return `${Math.round(minutes / 60)}H`;
280
- return `${Math.round(minutes)}M`;
281
- };
282
- const formatDate = (date) => `${String(date.getMonth() + 1).padStart(2, '0')}/${String(date.getDate()).padStart(2, '0')}`;
283
- const formatTime = (date) => date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });
284
- // A reset further out than a day only needs a date. A reset landing within
285
- // 24h needs the clock time, plus the date when the window itself spans days
286
- // so it stays clear the reset can be tomorrow rather than later today.
287
- const formatReset = (resetAt, windowMinutes) => {
288
- const resetDate = new Date(resetAt * 1000);
289
- const diffMs = resetDate.getTime() - Date.now();
290
- const within24Hours = diffMs >= 0 && diffMs < 24 * 60 * 60 * 1000;
291
- if (!within24Hours) {
292
- return formatDate(resetDate);
293
- }
294
- return windowMinutes >= 24 * 60 ? `${formatDate(resetDate)} ${formatTime(resetDate)}` : formatTime(resetDate);
295
- };
296
- const formatWindowUsage = (window) => {
297
- if (!window || !isNumber(window.window_minutes) || !isNumber(window.used_percent) || !isNumber(window.reset_at)) {
298
- return undefined;
299
- }
300
- const reset = formatReset(window.reset_at, window.window_minutes);
301
- return `${formatWindow(window.window_minutes)} ${window.used_percent}%→${reset}`;
302
- };
303
- return [lastCodexRateLimit.primary, lastCodexRateLimit.secondary]
304
- .map(formatWindowUsage)
305
- .filter((part) => part !== undefined)
306
- .join(' / ');
307
- })();
308
- // Grok reports one weekly credit percentage, not the rolling used/reset
309
- // windows Codex reports, so it gets its own formatting in the same slot —
310
- // only one provider is active at a time. `formatDate` and `formatTime` above
311
- // belong to the Codex block; this one needs only the period end.
312
- const grokCreditUsageText = (() => {
313
- if (!grokCreditUsage || typeof grokCreditUsage.creditUsagePercent !== 'number')
314
- return '';
315
- const percent = Math.round(grokCreditUsage.creditUsagePercent);
316
- const periodEndMs = grokCreditUsage.periodEndMs;
317
- if (periodEndMs === undefined)
318
- return `Credits ${percent}%`;
319
- const resetDate = new Date(periodEndMs);
320
- const reset = `${String(resetDate.getMonth() + 1).padStart(2, '0')}/${String(resetDate.getDate()).padStart(2, '0')}`;
321
- return `Credits ${percent}%→${reset}`;
322
- })();
323
- function formatActiveTime(ms) {
324
- const totalSeconds = Math.round(ms / 1000);
325
- if (totalSeconds < 60)
326
- return `${totalSeconds}s`;
327
- const minutes = Math.floor(totalSeconds / 60);
328
- const seconds = totalSeconds % 60;
329
- return seconds > 0 ? `${minutes}m${seconds}s` : `${minutes}m`;
330
- }
331
- // In warn mode the run keeps going past its envelope, so this line is the
332
- // only signal the human gets. It states the dimension, used vs limit, and
333
- // percentage consumed, not an instruction — the decision stays with the human.
334
- const runBudgetNoticeText = (() => {
335
- if (!runBudgetNotice)
336
- return '';
337
- if (runBudgetNotice.type === 'tool_stall') {
338
- return `${GLYPH_WARNING} Possible stall: ${runBudgetNotice.toolName} ×${runBudgetNotice.count}`;
339
- }
340
- const { dimension, used, limit } = runBudgetNotice.evidence;
341
- const percent = limit > 0 ? Math.round((used / limit) * 100) : 100;
342
- switch (dimension) {
343
- case 'usd':
344
- return `${GLYPH_WARNING} Run ${formatUsdMicros(used)}/${formatUsdMicros(limit)} (${percent}%)`;
345
- case 'unpriced_tokens':
346
- return `${GLYPH_WARNING} Run tokens ${formatStatusBarTokens(used)}/${formatStatusBarTokens(limit)} (${percent}%)`;
347
- case 'active_time':
348
- return `${GLYPH_WARNING} Run time ${formatActiveTime(used)}/${formatActiveTime(limit)} (${percent}%)`;
349
- case 'turns':
350
- return `${GLYPH_WARNING} Run turns ${used}/${limit} (${percent}%)`;
351
- default:
352
- return `${GLYPH_WARNING} Run budget: ${percent}%`;
353
- }
354
- })();
260
+ // Only one provider is active at a time, so at most one of these is non-empty.
261
+ const codexWindows = codexQuotaWindows(lastCodexRateLimit);
262
+ const grokWindows = grokQuotaWindows(grokCreditUsage);
263
+ const quotaWindows = codexWindows.length > 0
264
+ ? codexWindows
265
+ : grokWindows.length > 0
266
+ ? grokWindows
267
+ : openCodeGoQuotaWindows(openCodeGoUsage);
268
+ const quotaText = quotaWindows.map(formatQuotaWindow).join(' / ');
355
269
  const staticCommitBlockerText = (() => {
356
270
  if (!staticCommitBlocker) {
357
271
  return '';
@@ -375,75 +289,80 @@ const StatusBar = ({ settingsService, sshInfo, lastUsage, liveStreamingSpeed, la
375
289
  ? AUTO_APPROVE_LABELS.always
376
290
  : 'Sandboxed'
377
291
  : AUTO_APPROVE_LABELS[autoApproveMode];
378
- const safetyColor = autoApproveAlways ? warnRed : sandboxEnabled || autoApproveMode === 'auto' ? COLOR_SUCCESS : glow;
292
+ const safetyTone = autoApproveAlways
293
+ ? 'danger'
294
+ : sandboxEnabled || autoApproveMode === 'auto'
295
+ ? 'success'
296
+ : 'warning';
379
297
  // The alert row is where every non-steady-state message lands. Keeping them
380
298
  // in one row (rather than stacked beside the identity segments, as before)
381
299
  // means the bar is a single line whenever nothing is wrong — which is most
382
300
  // of the time — and grows only to say something.
383
- const visibleStaticCommitBlockerText = debugMode ? staticCommitBlockerText : '';
384
- const hasAlerts = Boolean(warningText || dockerHostAccess || runBudgetNoticeText || visibleStaticCommitBlockerText);
385
- const quotaText = codexRateLimitText || grokCreditUsageText || openCodeGoUsageText;
301
+ const alerts = [];
302
+ if (warningText) {
303
+ alerts.push({
304
+ id: 'cache-warning',
305
+ parts: [{ text: warningText, tone: hasPendingConfirmation ? 'danger' : 'warning', bold: true }],
306
+ });
307
+ }
308
+ if (dockerHostAccess) {
309
+ alerts.push({
310
+ id: 'docker-host',
311
+ parts: [
312
+ { text: 'Docker host: ', tone: 'textSubtle' },
313
+ { text: dockerHostAccess, tone: 'warning', bold: true },
314
+ ],
315
+ });
316
+ }
317
+ const budgetText = runBudgetNoticeText(runBudgetNotice);
318
+ if (budgetText) {
319
+ alerts.push({ id: 'run-budget', parts: [{ text: budgetText, tone: 'warning', bold: true }] });
320
+ }
321
+ if (debugMode && staticCommitBlockerText) {
322
+ alerts.push({ id: 'static-blocker', parts: [{ text: staticCommitBlockerText, tone: 'danger', bold: true }] });
323
+ }
386
324
  // Segments as data: each group is fit to the *full* row budget on its own
387
- // (drop order below), and only afterward do the two fitted groups get
388
- // compared to see whether they still coexist on one line. That keeps the
389
- // drop decision for each group independent of whatever the other group is
390
- // doing, per the drop-order contract each priority list documents.
391
- const configSegments = [
392
- { id: 'ssh-marker', text: sshInfo ? 'SSH' : '', color: glow, bold: true, tier: 0 },
325
+ // (drop order below) by the skin, and only afterward are the two fitted groups
326
+ // compared to see whether they still coexist on one line.
327
+ const config = [
328
+ { id: 'ssh-marker', text: sshInfo ? 'SSH' : '', tone: 'warning', bold: true, tier: 0 },
393
329
  {
394
330
  id: 'ssh-detail',
395
331
  text: sshInfo ? ` ${sshInfo.user}@${sshInfo.host}:${sshInfo.remoteDir}` : '',
396
- color: slate,
332
+ tone: 'textSubtle',
397
333
  tier: 5,
398
334
  },
399
- {
400
- id: 'mode',
401
- text: modeLabel,
402
- color: accent,
403
- bold: true,
404
- separator: 'group',
405
- },
335
+ { id: 'mode', text: modeLabel, tone: 'accent', bold: true, separator: 'group' },
406
336
  {
407
337
  id: 'queue',
408
338
  text: queueLength != null && queueLength > 0 ? `[Q:${queueLength}]` : '',
409
- color: accent,
339
+ tone: 'accent',
410
340
  separator: 'group',
411
341
  tier: 3,
412
342
  },
413
- {
414
- id: 'provider-model',
415
- text: model ? `${displayProviderLabel}/${model}` : '',
416
- color: accent,
417
- separator: 'group',
418
- },
343
+ { id: 'provider-model', text: model ? `${displayProviderLabel}/${model}` : '', tone: 'accent', separator: 'group' },
419
344
  {
420
345
  id: 'reasoning',
421
346
  text: model && reasoningEffort && reasoningEffort !== 'default' ? ` · ${reasoningEffort}` : '',
422
- color: glow,
347
+ tone: 'warning',
423
348
  tier: 2,
424
349
  },
425
350
  {
426
351
  id: 'mentor',
427
352
  text: mentorMode && mentorModel ? mentorModel : '',
428
- color: COLOR_ACCENT_ALT,
353
+ tone: 'accentAlt',
429
354
  separator: 'group',
430
355
  tier: 1,
431
356
  },
432
- {
433
- id: 'safety',
434
- text: safetyLabel,
435
- color: safetyColor,
436
- bold: true,
437
- separator: 'group',
438
- },
357
+ { id: 'safety', text: safetyLabel, tone: safetyTone, bold: true, separator: 'group' },
439
358
  ];
440
- const metricsSegments = [
441
- { id: 'tokens', text: tokensText, color: usageColor, bold: Boolean(largeUncachedWarning), tier: 4 },
442
- { id: 'speed', text: speedText, color: slate, separator: 'metric', tier: 0 },
359
+ const metrics = [
360
+ { id: 'tokens', text: tokensText, tone: usageTone, bold: Boolean(largeUncachedWarning), tier: 4 },
361
+ { id: 'speed', text: speedText, tone: 'textSubtle', separator: 'metric', tier: 0 },
443
362
  {
444
363
  id: 'cache',
445
364
  text: cacheText,
446
- color: usageHasIntegratedWarning ? usageColor : slate,
365
+ tone: usageHasIntegratedWarning ? usageTone : 'textSubtle',
447
366
  bold: usageHasIntegratedWarning ? Boolean(largeUncachedWarning) : false,
448
367
  separator: 'metric',
449
368
  // The alert variant of this segment is the warning itself, so it must
@@ -451,38 +370,24 @@ const StatusBar = ({ settingsService, sshInfo, lastUsage, liveStreamingSpeed, la
451
370
  // the one thing it exists to say.
452
371
  tier: usageHasIntegratedWarning ? undefined : 1,
453
372
  },
454
- { id: 'context', text: contextText, color: slate, separator: 'metric', tier: 3 },
455
- { id: 'cost', text: costText, color: slate, separator: 'metric', tier: 2 },
373
+ { id: 'context', text: contextText, tone: 'textSubtle', separator: 'metric', tier: 3 },
374
+ { id: 'cost', text: costText, tone: 'textSubtle', separator: 'metric', tier: 2 },
456
375
  ];
457
- const configFit = fitGroup(configSegments, budget);
458
- const metricsFit = fitGroup(metricsSegments, budget);
459
- const bothVisible = configFit.visible.length > 0 && metricsFit.visible.length > 0;
460
- const combinedWidth = configFit.width + (bothVisible ? GROUP_SEPARATOR_WIDTH : 0) + metricsFit.width;
461
- const metricsOnOwnRow = metricsFit.visible.length > 0 && combinedWidth > budget;
462
- return (React.createElement(Box, { marginTop: 1, flexDirection: "column", width: "100%", paddingX: 1 },
463
- React.createElement(Box, { width: "100%" },
464
- renderSegments(configFit.visible),
465
- !metricsOnOwnRow && metricsFit.visible.length > 0 && (React.createElement(React.Fragment, null,
466
- React.createElement(Divider, null),
467
- renderSegments(metricsFit.visible)))),
468
- metricsOnOwnRow && (React.createElement(Box, { width: "100%", justifyContent: "flex-end" }, renderSegments(metricsFit.visible))),
469
- (hasAlerts || quotaText) && (React.createElement(Box, { width: "100%" },
470
- React.createElement(Box, { flexGrow: 1 },
471
- warningText && (React.createElement(Text, { color: hasPendingConfirmation ? warnRed : glow, bold: true, wrap: "truncate-end" }, warningText)),
472
- dockerHostAccess && (React.createElement(React.Fragment, null,
473
- warningText && React.createElement(Divider, null),
474
- React.createElement(Text, { color: slate, wrap: "truncate-end" },
475
- "Docker host:",
476
- ' '),
477
- React.createElement(Text, { color: glow, bold: true, wrap: "truncate-end" }, dockerHostAccess))),
478
- runBudgetNoticeText && (React.createElement(React.Fragment, null,
479
- (warningText || dockerHostAccess) && React.createElement(Divider, null),
480
- React.createElement(Text, { color: glow, bold: true, wrap: "truncate-end" }, runBudgetNoticeText))),
481
- visibleStaticCommitBlockerText && (React.createElement(React.Fragment, null,
482
- (warningText || dockerHostAccess || runBudgetNoticeText) && React.createElement(Divider, null),
483
- React.createElement(Text, { color: warnRed, bold: true, wrap: "truncate-end" }, visibleStaticCommitBlockerText)))),
484
- quotaText && (React.createElement(Box, { flexShrink: 0 },
485
- React.createElement(Text, { color: slate, wrap: "truncate-end" }, quotaText)))))));
376
+ const view = {
377
+ columns,
378
+ config,
379
+ metrics,
380
+ alerts,
381
+ quotaText,
382
+ gauges: {
383
+ contextPercent,
384
+ contextUsedTokens: contextTokens ?? undefined,
385
+ contextWindowTokens: contextWindow ?? undefined,
386
+ cachePercent,
387
+ quotaWindows,
388
+ },
389
+ };
390
+ return React.createElement(SkinStatusBar, { ...view });
486
391
  };
487
392
  export default StatusBar;
488
393
  //# sourceMappingURL=StatusBar.js.map