@qduc/term2 0.29.1 → 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 (765) hide show
  1. package/dist/agent.d.ts +13 -0
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +73 -2
  4. package/dist/agent.js.map +1 -1
  5. package/dist/app.d.ts.map +1 -1
  6. package/dist/app.js +24 -5
  7. package/dist/app.js.map +1 -1
  8. package/dist/build-info.json +2 -2
  9. package/dist/cli.js +53 -25
  10. package/dist/cli.js.map +1 -1
  11. package/dist/components/ErrorBoundary.d.ts +1 -1
  12. package/dist/components/ErrorBoundary.d.ts.map +1 -1
  13. package/dist/components/ErrorBoundary.js +28 -23
  14. package/dist/components/ErrorBoundary.js.map +1 -1
  15. package/dist/components/InputBox.d.ts.map +1 -1
  16. package/dist/components/InputBox.js +124 -32
  17. package/dist/components/InputBox.js.map +1 -1
  18. package/dist/components/MarkdownRenderer.d.ts.map +1 -1
  19. package/dist/components/MarkdownRenderer.js +31 -28
  20. package/dist/components/MarkdownRenderer.js.map +1 -1
  21. package/dist/components/common/Divider.d.ts.map +1 -1
  22. package/dist/components/common/Divider.js +5 -2
  23. package/dist/components/common/Divider.js.map +1 -1
  24. package/dist/components/common/MenuContainer.d.ts +6 -20
  25. package/dist/components/common/MenuContainer.d.ts.map +1 -1
  26. package/dist/components/common/MenuContainer.js +24 -40
  27. package/dist/components/common/MenuContainer.js.map +1 -1
  28. package/dist/components/common/ScrollableTabBar.d.ts.map +1 -1
  29. package/dist/components/common/ScrollableTabBar.js +6 -5
  30. package/dist/components/common/ScrollableTabBar.js.map +1 -1
  31. package/dist/components/common/SelectionMarker.d.ts +16 -0
  32. package/dist/components/common/SelectionMarker.d.ts.map +1 -0
  33. package/dist/components/common/SelectionMarker.js +20 -0
  34. package/dist/components/common/SelectionMarker.js.map +1 -0
  35. package/dist/components/input/ApplicationInputSurface.d.ts.map +1 -1
  36. package/dist/components/input/ApplicationInputSurface.js +3 -1
  37. package/dist/components/input/ApplicationInputSurface.js.map +1 -1
  38. package/dist/components/input/FirstRunSetupPrompt.d.ts.map +1 -1
  39. package/dist/components/input/FirstRunSetupPrompt.js +8 -6
  40. package/dist/components/input/FirstRunSetupPrompt.js.map +1 -1
  41. package/dist/components/input/MenuSurface.d.ts.map +1 -1
  42. package/dist/components/input/MenuSurface.js +4 -3
  43. package/dist/components/input/MenuSurface.js.map +1 -1
  44. package/dist/components/input/ModelMenuSession.d.ts.map +1 -1
  45. package/dist/components/input/ModelMenuSession.js +3 -2
  46. package/dist/components/input/ModelMenuSession.js.map +1 -1
  47. package/dist/components/input/PendingQueueList.d.ts +3 -0
  48. package/dist/components/input/PendingQueueList.d.ts.map +1 -1
  49. package/dist/components/input/PendingQueueList.js +9 -8
  50. package/dist/components/input/PendingQueueList.js.map +1 -1
  51. package/dist/components/input/SettingsValueMenuSession.d.ts.map +1 -1
  52. package/dist/components/input/SettingsValueMenuSession.js +3 -2
  53. package/dist/components/input/SettingsValueMenuSession.js.map +1 -1
  54. package/dist/components/layout/BackgroundTaskManager.d.ts.map +1 -1
  55. package/dist/components/layout/BackgroundTaskManager.js +113 -107
  56. package/dist/components/layout/BackgroundTaskManager.js.map +1 -1
  57. package/dist/components/layout/BackgroundTasksPanel.d.ts.map +1 -1
  58. package/dist/components/layout/BackgroundTasksPanel.js +26 -28
  59. package/dist/components/layout/BackgroundTasksPanel.js.map +1 -1
  60. package/dist/components/layout/Banner.d.ts.map +1 -1
  61. package/dist/components/layout/Banner.js +3 -47
  62. package/dist/components/layout/Banner.js.map +1 -1
  63. package/dist/components/layout/BottomArea.d.ts.map +1 -1
  64. package/dist/components/layout/BottomArea.js +14 -34
  65. package/dist/components/layout/BottomArea.js.map +1 -1
  66. package/dist/components/layout/DiffView.d.ts.map +1 -1
  67. package/dist/components/layout/DiffView.js +8 -7
  68. package/dist/components/layout/DiffView.js.map +1 -1
  69. package/dist/components/layout/StatusBar.d.ts +8 -0
  70. package/dist/components/layout/StatusBar.d.ts.map +1 -1
  71. package/dist/components/layout/StatusBar.js +195 -290
  72. package/dist/components/layout/StatusBar.js.map +1 -1
  73. package/dist/components/menu/CopyMenu.d.ts.map +1 -1
  74. package/dist/components/menu/CopyMenu.js +16 -13
  75. package/dist/components/menu/CopyMenu.js.map +1 -1
  76. package/dist/components/menu/McpSelectionMenu.d.ts.map +1 -1
  77. package/dist/components/menu/McpSelectionMenu.js +8 -7
  78. package/dist/components/menu/McpSelectionMenu.js.map +1 -1
  79. package/dist/components/menu/ModelSelectionMenu.d.ts.map +1 -1
  80. package/dist/components/menu/ModelSelectionMenu.js +21 -20
  81. package/dist/components/menu/ModelSelectionMenu.js.map +1 -1
  82. package/dist/components/menu/PathSelectionMenu.d.ts.map +1 -1
  83. package/dist/components/menu/PathSelectionMenu.js +5 -4
  84. package/dist/components/menu/PathSelectionMenu.js.map +1 -1
  85. package/dist/components/menu/ProfileSelectionMenu.d.ts.map +1 -1
  86. package/dist/components/menu/ProfileSelectionMenu.js +17 -20
  87. package/dist/components/menu/ProfileSelectionMenu.js.map +1 -1
  88. package/dist/components/menu/ProviderSelectionMenu.d.ts.map +1 -1
  89. package/dist/components/menu/ProviderSelectionMenu.js +37 -36
  90. package/dist/components/menu/ProviderSelectionMenu.js.map +1 -1
  91. package/dist/components/menu/ResumeSelectionMenu.d.ts.map +1 -1
  92. package/dist/components/menu/ResumeSelectionMenu.js +21 -22
  93. package/dist/components/menu/ResumeSelectionMenu.js.map +1 -1
  94. package/dist/components/menu/RewindMenu.d.ts.map +1 -1
  95. package/dist/components/menu/RewindMenu.js +5 -4
  96. package/dist/components/menu/RewindMenu.js.map +1 -1
  97. package/dist/components/menu/SettingsSelectionMenu.d.ts.map +1 -1
  98. package/dist/components/menu/SettingsSelectionMenu.js +15 -14
  99. package/dist/components/menu/SettingsSelectionMenu.js.map +1 -1
  100. package/dist/components/menu/SettingsValueSelectionMenu.d.ts.map +1 -1
  101. package/dist/components/menu/SettingsValueSelectionMenu.js +15 -14
  102. package/dist/components/menu/SettingsValueSelectionMenu.js.map +1 -1
  103. package/dist/components/menu/SkillSelectionMenu.d.ts.map +1 -1
  104. package/dist/components/menu/SkillSelectionMenu.js +17 -18
  105. package/dist/components/menu/SkillSelectionMenu.js.map +1 -1
  106. package/dist/components/menu/SlashCommandMenu.d.ts.map +1 -1
  107. package/dist/components/menu/SlashCommandMenu.js +5 -4
  108. package/dist/components/menu/SlashCommandMenu.js.map +1 -1
  109. package/dist/components/menu/StandaloneModelPickerApp.d.ts.map +1 -1
  110. package/dist/components/menu/StandaloneModelPickerApp.js +3 -2
  111. package/dist/components/menu/StandaloneModelPickerApp.js.map +1 -1
  112. package/dist/components/menu/SubagentPoolSelectionMenu.d.ts.map +1 -1
  113. package/dist/components/menu/SubagentPoolSelectionMenu.js +26 -24
  114. package/dist/components/menu/SubagentPoolSelectionMenu.js.map +1 -1
  115. package/dist/components/menu/settings-value-formatter.d.ts +3 -1
  116. package/dist/components/menu/settings-value-formatter.d.ts.map +1 -1
  117. package/dist/components/menu/settings-value-formatter.js +24 -25
  118. package/dist/components/menu/settings-value-formatter.js.map +1 -1
  119. package/dist/components/message/ChatMessage.d.ts.map +1 -1
  120. package/dist/components/message/ChatMessage.js +11 -7
  121. package/dist/components/message/ChatMessage.js.map +1 -1
  122. package/dist/components/message/CodeContextSearchRenderer.d.ts.map +1 -1
  123. package/dist/components/message/CodeContextSearchRenderer.js +14 -11
  124. package/dist/components/message/CodeContextSearchRenderer.js.map +1 -1
  125. package/dist/components/message/CommandGroupSummary.d.ts.map +1 -1
  126. package/dist/components/message/CommandGroupSummary.js +8 -36
  127. package/dist/components/message/CommandGroupSummary.js.map +1 -1
  128. package/dist/components/message/CommandMessage.d.ts.map +1 -1
  129. package/dist/components/message/CommandMessage.js +313 -329
  130. package/dist/components/message/CommandMessage.js.map +1 -1
  131. package/dist/components/message/GrepRenderer.d.ts.map +1 -1
  132. package/dist/components/message/GrepRenderer.js +12 -9
  133. package/dist/components/message/GrepRenderer.js.map +1 -1
  134. package/dist/components/message/MemoryRenderer.d.ts.map +1 -1
  135. package/dist/components/message/MemoryRenderer.js +45 -38
  136. package/dist/components/message/MemoryRenderer.js.map +1 -1
  137. package/dist/components/message/ReadFileRenderer.d.ts.map +1 -1
  138. package/dist/components/message/ReadFileRenderer.js +20 -16
  139. package/dist/components/message/ReadFileRenderer.js.map +1 -1
  140. package/dist/components/message/RunCodeRenderer.d.ts.map +1 -1
  141. package/dist/components/message/RunCodeRenderer.js +19 -14
  142. package/dist/components/message/RunCodeRenderer.js.map +1 -1
  143. package/dist/components/message/SubagentActivityMessage.d.ts +2 -2
  144. package/dist/components/message/SubagentActivityMessage.d.ts.map +1 -1
  145. package/dist/components/message/SubagentActivityMessage.js +17 -28
  146. package/dist/components/message/SubagentActivityMessage.js.map +1 -1
  147. package/dist/components/message/WebFetchRenderer.d.ts.map +1 -1
  148. package/dist/components/message/WebFetchRenderer.js +16 -13
  149. package/dist/components/message/WebFetchRenderer.js.map +1 -1
  150. package/dist/components/message/WebSearchRenderer.d.ts.map +1 -1
  151. package/dist/components/message/WebSearchRenderer.js +20 -16
  152. package/dist/components/message/WebSearchRenderer.js.map +1 -1
  153. package/dist/components/prompt/ApprovalPrompt.d.ts +12 -1
  154. package/dist/components/prompt/ApprovalPrompt.d.ts.map +1 -1
  155. package/dist/components/prompt/ApprovalPrompt.js +100 -147
  156. package/dist/components/prompt/ApprovalPrompt.js.map +1 -1
  157. package/dist/components/prompt/ConfirmPrompt.d.ts.map +1 -1
  158. package/dist/components/prompt/ConfirmPrompt.js +7 -4
  159. package/dist/components/prompt/ConfirmPrompt.js.map +1 -1
  160. package/dist/components/prompt/QueuePausedPrompt.d.ts.map +1 -1
  161. package/dist/components/prompt/QueuePausedPrompt.js +7 -4
  162. package/dist/components/prompt/QueuePausedPrompt.js.map +1 -1
  163. package/dist/components/theme.d.ts +10 -52
  164. package/dist/components/theme.d.ts.map +1 -1
  165. package/dist/components/theme.js +11 -68
  166. package/dist/components/theme.js.map +1 -1
  167. package/dist/context/InputContext.d.ts +17 -0
  168. package/dist/context/InputContext.d.ts.map +1 -1
  169. package/dist/context/InputContext.js +12 -0
  170. package/dist/context/InputContext.js.map +1 -1
  171. package/dist/core/index.d.ts +2 -3
  172. package/dist/core/index.d.ts.map +1 -1
  173. package/dist/core/index.js +1 -7
  174. package/dist/core/index.js.map +1 -1
  175. package/dist/core/session-runtime.d.ts +72 -0
  176. package/dist/core/session-runtime.d.ts.map +1 -1
  177. package/dist/gateway/contracts.d.ts +1 -1
  178. package/dist/gateway/contracts.d.ts.map +1 -1
  179. package/dist/gateway/gateway.d.ts +32 -0
  180. package/dist/gateway/gateway.d.ts.map +1 -1
  181. package/dist/gateway/gateway.js +47 -2
  182. package/dist/gateway/gateway.js.map +1 -1
  183. package/dist/gateway/persistence/contracts.d.ts +3 -10
  184. package/dist/gateway/persistence/contracts.d.ts.map +1 -1
  185. package/dist/gateway/persistence/contracts.js +2 -31
  186. package/dist/gateway/persistence/contracts.js.map +1 -1
  187. package/dist/gateway/runtime-factory.d.ts.map +1 -1
  188. package/dist/gateway/runtime-factory.js +4 -0
  189. package/dist/gateway/runtime-factory.js.map +1 -1
  190. package/dist/gateway/server-session.d.ts +3 -0
  191. package/dist/gateway/server-session.d.ts.map +1 -1
  192. package/dist/gateway/server-session.js +17 -20
  193. package/dist/gateway/server-session.js.map +1 -1
  194. package/dist/gateway/settings-rpc.d.ts +1 -1
  195. package/dist/gateway/settings-rpc.d.ts.map +1 -1
  196. package/dist/gateway/settings-rpc.js +4 -1
  197. package/dist/gateway/settings-rpc.js.map +1 -1
  198. package/dist/hooks/conversation-ui-reducer.d.ts +5 -2
  199. package/dist/hooks/conversation-ui-reducer.d.ts.map +1 -1
  200. package/dist/hooks/conversation-ui-reducer.js +9 -2
  201. package/dist/hooks/conversation-ui-reducer.js.map +1 -1
  202. package/dist/hooks/settings-completion-config.d.ts.map +1 -1
  203. package/dist/hooks/settings-completion-config.js +2 -0
  204. package/dist/hooks/settings-completion-config.js.map +1 -1
  205. package/dist/hooks/use-app-keyboard-shortcuts.d.ts +6 -1
  206. package/dist/hooks/use-app-keyboard-shortcuts.d.ts.map +1 -1
  207. package/dist/hooks/use-app-keyboard-shortcuts.js +17 -11
  208. package/dist/hooks/use-app-keyboard-shortcuts.js.map +1 -1
  209. package/dist/hooks/use-conversation.d.ts +1 -0
  210. package/dist/hooks/use-conversation.d.ts.map +1 -1
  211. package/dist/hooks/use-conversation.js +2 -2
  212. package/dist/lib/agent-client.d.ts +8 -0
  213. package/dist/lib/agent-client.d.ts.map +1 -1
  214. package/dist/lib/agent-client.js +5 -1
  215. package/dist/lib/agent-client.js.map +1 -1
  216. package/dist/lib/agent-configuration.d.ts +9 -0
  217. package/dist/lib/agent-configuration.d.ts.map +1 -1
  218. package/dist/lib/agent-configuration.js +14 -0
  219. package/dist/lib/agent-configuration.js.map +1 -1
  220. package/dist/lib/agent-factory.d.ts +25 -4
  221. package/dist/lib/agent-factory.d.ts.map +1 -1
  222. package/dist/lib/agent-factory.js +6 -0
  223. package/dist/lib/agent-factory.js.map +1 -1
  224. package/dist/lib/subagent-bridge.d.ts +47 -5
  225. package/dist/lib/subagent-bridge.d.ts.map +1 -1
  226. package/dist/lib/subagent-bridge.js +112 -4
  227. package/dist/lib/subagent-bridge.js.map +1 -1
  228. package/dist/node_modules/@qduc/agent-wire/index.d.ts +73 -0
  229. package/dist/node_modules/@qduc/agent-wire/index.js +212 -0
  230. package/dist/node_modules/@qduc/agent-wire/package.json +1 -0
  231. package/dist/prompts/orchestrator-prompt.test.ts +9 -0
  232. package/dist/prompts/orchestrator.md +2 -0
  233. package/dist/prompts/subagent-delegation.d.ts.map +1 -1
  234. package/dist/prompts/subagent-delegation.js +3 -2
  235. package/dist/prompts/subagent-delegation.js.map +1 -1
  236. package/dist/prompts/subagent-delegation.test.ts +1 -0
  237. package/dist/prompts/subagent-delegation.ts +6 -2
  238. package/dist/providers/codex.provider.d.ts +3 -0
  239. package/dist/providers/codex.provider.d.ts.map +1 -1
  240. package/dist/providers/codex.provider.js +6 -4
  241. package/dist/providers/codex.provider.js.map +1 -1
  242. package/dist/providers/grok-auth.d.ts +3 -0
  243. package/dist/providers/grok-auth.d.ts.map +1 -1
  244. package/dist/providers/grok-auth.js +3 -1
  245. package/dist/providers/grok-auth.js.map +1 -1
  246. package/dist/providers/grok.provider.js +3 -3
  247. package/dist/providers/grok.provider.js.map +1 -1
  248. package/dist/providers/index.d.ts +1 -1
  249. package/dist/providers/index.d.ts.map +1 -1
  250. package/dist/providers/index.js +1 -1
  251. package/dist/providers/index.js.map +1 -1
  252. package/dist/providers/model-catalog/catalog.generated.d.ts +239 -171
  253. package/dist/providers/model-catalog/catalog.generated.d.ts.map +1 -1
  254. package/dist/providers/model-catalog/catalog.generated.js +238 -179
  255. package/dist/providers/model-catalog/catalog.generated.js.map +1 -1
  256. package/dist/providers/model-catalog/generate-catalog.d.ts.map +1 -1
  257. package/dist/providers/model-catalog/generate-catalog.js +13 -5
  258. package/dist/providers/model-catalog/generate-catalog.js.map +1 -1
  259. package/dist/providers/oauth-session-account.d.ts +16 -2
  260. package/dist/providers/oauth-session-account.d.ts.map +1 -1
  261. package/dist/providers/oauth-session-account.js +8 -17
  262. package/dist/providers/oauth-session-account.js.map +1 -1
  263. package/dist/providers/openai-chat-completions-model.d.ts.map +1 -1
  264. package/dist/providers/openai-chat-completions-model.js +5 -2
  265. package/dist/providers/openai-chat-completions-model.js.map +1 -1
  266. package/dist/providers/openai.provider.js +1 -1
  267. package/dist/providers/openai.provider.js.map +1 -1
  268. package/dist/providers/openrouter.provider.js +1 -1
  269. package/dist/providers/openrouter.provider.js.map +1 -1
  270. package/dist/providers/registry.d.ts +20 -1
  271. package/dist/providers/registry.d.ts.map +1 -1
  272. package/dist/providers/registry.js +33 -16
  273. package/dist/providers/registry.js.map +1 -1
  274. package/dist/providers/web-search/exa.provider.d.ts.map +1 -1
  275. package/dist/providers/web-search/exa.provider.js +6 -3
  276. package/dist/providers/web-search/exa.provider.js.map +1 -1
  277. package/dist/providers/web-search/firecrawl.provider.d.ts +8 -0
  278. package/dist/providers/web-search/firecrawl.provider.d.ts.map +1 -0
  279. package/dist/providers/web-search/firecrawl.provider.js +59 -0
  280. package/dist/providers/web-search/firecrawl.provider.js.map +1 -0
  281. package/dist/providers/web-search/index.d.ts +5 -2
  282. package/dist/providers/web-search/index.d.ts.map +1 -1
  283. package/dist/providers/web-search/index.js +3 -1
  284. package/dist/providers/web-search/index.js.map +1 -1
  285. package/dist/providers/web-search/registry.d.ts +14 -0
  286. package/dist/providers/web-search/registry.d.ts.map +1 -1
  287. package/dist/providers/web-search/registry.js +45 -15
  288. package/dist/providers/web-search/registry.js.map +1 -1
  289. package/dist/providers/web-search/searxng.provider.d.ts +8 -0
  290. package/dist/providers/web-search/searxng.provider.d.ts.map +1 -0
  291. package/dist/providers/web-search/searxng.provider.js +56 -0
  292. package/dist/providers/web-search/searxng.provider.js.map +1 -0
  293. package/dist/providers/web-search/tavily.provider.d.ts.map +1 -1
  294. package/dist/providers/web-search/tavily.provider.js +8 -3
  295. package/dist/providers/web-search/tavily.provider.js.map +1 -1
  296. package/dist/providers/web-search/types.d.ts +14 -1
  297. package/dist/providers/web-search/types.d.ts.map +1 -1
  298. package/dist/services/agent-runtime/agent-resolver.d.ts.map +1 -1
  299. package/dist/services/agent-runtime/agent-resolver.js +1 -0
  300. package/dist/services/agent-runtime/agent-resolver.js.map +1 -1
  301. package/dist/services/agent-runtime/agent-runtime.d.ts +6 -1
  302. package/dist/services/agent-runtime/agent-runtime.d.ts.map +1 -1
  303. package/dist/services/agent-runtime/agent-runtime.js +11 -2
  304. package/dist/services/agent-runtime/agent-runtime.js.map +1 -1
  305. package/dist/services/agent-runtime/agent-spec.d.ts +14 -0
  306. package/dist/services/agent-runtime/agent-spec.d.ts.map +1 -0
  307. package/dist/services/agent-runtime/agent-spec.js +49 -0
  308. package/dist/services/agent-runtime/agent-spec.js.map +1 -0
  309. package/dist/services/agent-runtime/index.d.ts +3 -1
  310. package/dist/services/agent-runtime/index.d.ts.map +1 -1
  311. package/dist/services/agent-runtime/index.js +2 -0
  312. package/dist/services/agent-runtime/index.js.map +1 -1
  313. package/dist/services/agent-runtime/legacy-adapter.d.ts.map +1 -1
  314. package/dist/services/agent-runtime/legacy-adapter.js +5 -1
  315. package/dist/services/agent-runtime/legacy-adapter.js.map +1 -1
  316. package/dist/services/agent-runtime/permission-boundary.d.ts +95 -0
  317. package/dist/services/agent-runtime/permission-boundary.d.ts.map +1 -0
  318. package/dist/services/agent-runtime/permission-boundary.js +538 -0
  319. package/dist/services/agent-runtime/permission-boundary.js.map +1 -0
  320. package/dist/services/agent-runtime/resolved-agent.d.ts +2 -0
  321. package/dist/services/agent-runtime/resolved-agent.d.ts.map +1 -1
  322. package/dist/services/agent-runtime/types.d.ts +22 -1
  323. package/dist/services/agent-runtime/types.d.ts.map +1 -1
  324. package/dist/services/approval/background-subagent-approval-controller.d.ts +1 -0
  325. package/dist/services/approval/background-subagent-approval-controller.d.ts.map +1 -1
  326. package/dist/services/approval/background-subagent-approval-controller.js +3 -0
  327. package/dist/services/approval/background-subagent-approval-controller.js.map +1 -1
  328. package/dist/services/approval/background-subagent-approval-queue.d.ts +5 -0
  329. package/dist/services/approval/background-subagent-approval-queue.d.ts.map +1 -1
  330. package/dist/services/approval/background-subagent-approval-queue.js +18 -2
  331. package/dist/services/approval/background-subagent-approval-queue.js.map +1 -1
  332. package/dist/services/approval/non-interactive-approval-policy.d.ts.map +1 -1
  333. package/dist/services/approval/non-interactive-approval-policy.js +10 -0
  334. package/dist/services/approval/non-interactive-approval-policy.js.map +1 -1
  335. package/dist/services/approval/shell-auto-approval-resolver.d.ts +2 -0
  336. package/dist/services/approval/shell-auto-approval-resolver.d.ts.map +1 -1
  337. package/dist/services/approval/shell-auto-approval-resolver.js +4 -2
  338. package/dist/services/approval/shell-auto-approval-resolver.js.map +1 -1
  339. package/dist/services/conversation/conversation-adapter-factory.d.ts +1 -1
  340. package/dist/services/conversation/conversation-adapter-factory.d.ts.map +1 -1
  341. package/dist/services/conversation/conversation-adapter.d.ts +1 -1
  342. package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
  343. package/dist/services/conversation/conversation-adapter.js +32 -6
  344. package/dist/services/conversation/conversation-adapter.js.map +1 -1
  345. package/dist/services/conversation/conversation-admission-workflow.d.ts +2 -0
  346. package/dist/services/conversation/conversation-admission-workflow.d.ts.map +1 -1
  347. package/dist/services/conversation/conversation-admission-workflow.js +1 -1
  348. package/dist/services/conversation/conversation-admission-workflow.js.map +1 -1
  349. package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
  350. package/dist/services/conversation/conversation-orchestrator.js +41 -21
  351. package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
  352. package/dist/services/conversation/conversation-orchestrator.types.d.ts +4 -3
  353. package/dist/services/conversation/conversation-orchestrator.types.d.ts.map +1 -1
  354. package/dist/services/conversation/conversation-runtime-factory.d.ts +1 -1
  355. package/dist/services/conversation/conversation-runtime-factory.d.ts.map +1 -1
  356. package/dist/services/conversation/conversation-runtime-factory.js +1 -1
  357. package/dist/services/conversation/conversation-runtime-factory.js.map +1 -1
  358. package/dist/services/conversation/conversation-service.d.ts +4 -1
  359. package/dist/services/conversation/conversation-service.d.ts.map +1 -1
  360. package/dist/services/conversation/conversation-service.js +41 -1
  361. package/dist/services/conversation/conversation-service.js.map +1 -1
  362. package/dist/services/conversation/session-index/session-index-service.d.ts +1 -1
  363. package/dist/services/conversation/session-index/session-index-service.d.ts.map +1 -1
  364. package/dist/services/conversation/session-index/session-index-service.js +1 -1
  365. package/dist/services/conversation/session-index/session-index-service.js.map +1 -1
  366. package/dist/services/cost/model-cost.d.ts +6 -0
  367. package/dist/services/cost/model-cost.d.ts.map +1 -1
  368. package/dist/services/cost/model-cost.js +12 -0
  369. package/dist/services/cost/model-cost.js.map +1 -1
  370. package/dist/services/cost/pricing.d.ts +1 -1
  371. package/dist/services/cost/pricing.d.ts.map +1 -1
  372. package/dist/services/cost/pricing.js +5 -5
  373. package/dist/services/cost/pricing.js.map +1 -1
  374. package/dist/services/models/model-picker-host.d.ts.map +1 -1
  375. package/dist/services/models/model-picker-host.js +9 -5
  376. package/dist/services/models/model-picker-host.js.map +1 -1
  377. package/dist/services/queue/queue-controller.d.ts +3 -0
  378. package/dist/services/queue/queue-controller.d.ts.map +1 -1
  379. package/dist/services/queue/queue-controller.js +53 -5
  380. package/dist/services/queue/queue-controller.js.map +1 -1
  381. package/dist/services/retry/provider-failure-classification.d.ts +2 -0
  382. package/dist/services/retry/provider-failure-classification.d.ts.map +1 -1
  383. package/dist/services/retry/provider-failure-classification.js +43 -0
  384. package/dist/services/retry/provider-failure-classification.js.map +1 -1
  385. package/dist/services/sandboxed-code-host/host-worker.d.ts.map +1 -1
  386. package/dist/services/sandboxed-code-host/host-worker.js +3 -1
  387. package/dist/services/sandboxed-code-host/host-worker.js.map +1 -1
  388. package/dist/services/session/session-composition.d.ts +7 -1
  389. package/dist/services/session/session-composition.d.ts.map +1 -1
  390. package/dist/services/session/session-composition.js +68 -14
  391. package/dist/services/session/session-composition.js.map +1 -1
  392. package/dist/services/session/session-input-planner.d.ts +2 -0
  393. package/dist/services/session/session-input-planner.d.ts.map +1 -1
  394. package/dist/services/session/session-input-planner.js +4 -6
  395. package/dist/services/session/session-input-planner.js.map +1 -1
  396. package/dist/services/settings/settings-env.d.ts.map +1 -1
  397. package/dist/services/settings/settings-env.js +9 -0
  398. package/dist/services/settings/settings-env.js.map +1 -1
  399. package/dist/services/settings/settings-schema.d.ts +58 -0
  400. package/dist/services/settings/settings-schema.d.ts.map +1 -1
  401. package/dist/services/settings/settings-schema.js +32 -0
  402. package/dist/services/settings/settings-schema.js.map +1 -1
  403. package/dist/services/settings/settings-sources.d.ts +4 -0
  404. package/dist/services/settings/settings-sources.d.ts.map +1 -1
  405. package/dist/services/settings/settings-sources.js +4 -0
  406. package/dist/services/settings/settings-sources.js.map +1 -1
  407. package/dist/services/settings/settings-ui-metadata.d.ts.map +1 -1
  408. package/dist/services/settings/settings-ui-metadata.js +6 -1
  409. package/dist/services/settings/settings-ui-metadata.js.map +1 -1
  410. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +2 -2
  411. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -1
  412. package/dist/services/settings/test-helpers/settings-consumer-inventory.js +10 -1
  413. package/dist/services/settings/test-helpers/settings-consumer-inventory.js.map +1 -1
  414. package/dist/services/shell/background-shell-output-store.d.ts +4 -2
  415. package/dist/services/shell/background-shell-output-store.d.ts.map +1 -1
  416. package/dist/services/shell/background-shell-output-store.js +9 -8
  417. package/dist/services/shell/background-shell-output-store.js.map +1 -1
  418. package/dist/services/shell/background-shell-watches.d.ts.map +1 -1
  419. package/dist/services/shell/background-shell-watches.js +20 -9
  420. package/dist/services/shell/background-shell-watches.js.map +1 -1
  421. package/dist/services/subagents/execution-runner.d.ts.map +1 -1
  422. package/dist/services/subagents/execution-runner.js +2 -1
  423. package/dist/services/subagents/execution-runner.js.map +1 -1
  424. package/dist/services/subagents/foreground-subagent-lease.d.ts +15 -0
  425. package/dist/services/subagents/foreground-subagent-lease.d.ts.map +1 -1
  426. package/dist/services/subagents/foreground-subagent-lease.js +42 -2
  427. package/dist/services/subagents/foreground-subagent-lease.js.map +1 -1
  428. package/dist/services/subagents/nested-runner.d.ts +1 -1
  429. package/dist/services/subagents/nested-runner.d.ts.map +1 -1
  430. package/dist/services/subagents/nested-runner.js +89 -22
  431. package/dist/services/subagents/nested-runner.js.map +1 -1
  432. package/dist/services/subagents/runtime.d.ts.map +1 -1
  433. package/dist/services/subagents/runtime.js +30 -4
  434. package/dist/services/subagents/runtime.js.map +1 -1
  435. package/dist/services/subagents/subagent-async-registry.d.ts +3 -0
  436. package/dist/services/subagents/subagent-async-registry.d.ts.map +1 -1
  437. package/dist/services/subagents/subagent-async-registry.js +55 -10
  438. package/dist/services/subagents/subagent-async-registry.js.map +1 -1
  439. package/dist/services/subagents/subagent-manager.d.ts.map +1 -1
  440. package/dist/services/subagents/subagent-manager.js +65 -3
  441. package/dist/services/subagents/subagent-manager.js.map +1 -1
  442. package/dist/services/subagents/subagent-role-pool-selector.d.ts +5 -1
  443. package/dist/services/subagents/subagent-role-pool-selector.d.ts.map +1 -1
  444. package/dist/services/subagents/subagent-role-pool-selector.js +24 -5
  445. package/dist/services/subagents/subagent-role-pool-selector.js.map +1 -1
  446. package/dist/services/subagents/subagent-run-control.d.ts.map +1 -1
  447. package/dist/services/subagents/subagent-run-control.js +3 -2
  448. package/dist/services/subagents/subagent-run-control.js.map +1 -1
  449. package/dist/services/subagents/tool-policy.d.ts +2 -2
  450. package/dist/services/subagents/tool-policy.d.ts.map +1 -1
  451. package/dist/services/subagents/tool-policy.js +8 -2
  452. package/dist/services/subagents/tool-policy.js.map +1 -1
  453. package/dist/services/subagents/types.d.ts +15 -2
  454. package/dist/services/subagents/types.d.ts.map +1 -1
  455. package/dist/services/subagents/types.js.map +1 -1
  456. package/dist/services/subagents/utils.d.ts +1 -1
  457. package/dist/services/subagents/utils.d.ts.map +1 -1
  458. package/dist/services/subagents/utils.js +5 -4
  459. package/dist/services/subagents/utils.js.map +1 -1
  460. package/dist/services/subagents/worker-worktree.d.ts +19 -1
  461. package/dist/services/subagents/worker-worktree.d.ts.map +1 -1
  462. package/dist/services/subagents/worker-worktree.js +128 -4
  463. package/dist/services/subagents/worker-worktree.js.map +1 -1
  464. package/dist/services/workspace/worktree-inventory.d.ts +6 -0
  465. package/dist/services/workspace/worktree-inventory.d.ts.map +1 -1
  466. package/dist/services/workspace/worktree-inventory.js +29 -1
  467. package/dist/services/workspace/worktree-inventory.js.map +1 -1
  468. package/dist/skins/SkinContext.d.ts +18 -0
  469. package/dist/skins/SkinContext.d.ts.map +1 -0
  470. package/dist/skins/SkinContext.js +23 -0
  471. package/dist/skins/SkinContext.js.map +1 -0
  472. package/dist/skins/cards/activity.d.ts +8 -0
  473. package/dist/skins/cards/activity.d.ts.map +1 -0
  474. package/dist/skins/cards/activity.js +23 -0
  475. package/dist/skins/cards/activity.js.map +1 -0
  476. package/dist/skins/cards/approval.d.ts +15 -0
  477. package/dist/skins/cards/approval.d.ts.map +1 -0
  478. package/dist/skins/cards/approval.js +64 -0
  479. package/dist/skins/cards/approval.js.map +1 -0
  480. package/dist/skins/cards/body.d.ts +14 -0
  481. package/dist/skins/cards/body.d.ts.map +1 -0
  482. package/dist/skins/cards/body.js +65 -0
  483. package/dist/skins/cards/body.js.map +1 -0
  484. package/dist/skins/cards/card.d.ts +28 -0
  485. package/dist/skins/cards/card.d.ts.map +1 -0
  486. package/dist/skins/cards/card.js +37 -0
  487. package/dist/skins/cards/card.js.map +1 -0
  488. package/dist/skins/cards/index.d.ts +9 -0
  489. package/dist/skins/cards/index.d.ts.map +1 -0
  490. package/dist/skins/cards/index.js +41 -0
  491. package/dist/skins/cards/index.js.map +1 -0
  492. package/dist/skins/cards/live-region.d.ts +16 -0
  493. package/dist/skins/cards/live-region.d.ts.map +1 -0
  494. package/dist/skins/cards/live-region.js +83 -0
  495. package/dist/skins/cards/live-region.js.map +1 -0
  496. package/dist/skins/cards/measure.d.ts +17 -0
  497. package/dist/skins/cards/measure.d.ts.map +1 -0
  498. package/dist/skins/cards/measure.js +29 -0
  499. package/dist/skins/cards/measure.js.map +1 -0
  500. package/dist/skins/cards/messages.d.ts +23 -0
  501. package/dist/skins/cards/messages.d.ts.map +1 -0
  502. package/dist/skins/cards/messages.js +80 -0
  503. package/dist/skins/cards/messages.js.map +1 -0
  504. package/dist/skins/cards/status.d.ts +9 -0
  505. package/dist/skins/cards/status.d.ts.map +1 -0
  506. package/dist/skins/cards/status.js +205 -0
  507. package/dist/skins/cards/status.js.map +1 -0
  508. package/dist/skins/cards/tools.d.ts +21 -0
  509. package/dist/skins/cards/tools.d.ts.map +1 -0
  510. package/dist/skins/cards/tools.js +101 -0
  511. package/dist/skins/cards/tools.js.map +1 -0
  512. package/dist/skins/cards/width.d.ts +4 -0
  513. package/dist/skins/cards/width.d.ts.map +1 -0
  514. package/dist/skins/cards/width.js +32 -0
  515. package/dist/skins/cards/width.js.map +1 -0
  516. package/dist/skins/classic/approval.d.ts +19 -0
  517. package/dist/skins/classic/approval.d.ts.map +1 -0
  518. package/dist/skins/classic/approval.js +50 -0
  519. package/dist/skins/classic/approval.js.map +1 -0
  520. package/dist/skins/classic/index.d.ts +7 -0
  521. package/dist/skins/classic/index.d.ts.map +1 -0
  522. package/dist/skins/classic/index.js +39 -0
  523. package/dist/skins/classic/index.js.map +1 -0
  524. package/dist/skins/classic/live-region.d.ts +19 -0
  525. package/dist/skins/classic/live-region.d.ts.map +1 -0
  526. package/dist/skins/classic/live-region.js +71 -0
  527. package/dist/skins/classic/live-region.js.map +1 -0
  528. package/dist/skins/classic/menu.d.ts +5 -0
  529. package/dist/skins/classic/menu.d.ts.map +1 -0
  530. package/dist/skins/classic/menu.js +20 -0
  531. package/dist/skins/classic/menu.js.map +1 -0
  532. package/dist/skins/classic/messages.d.ts +13 -0
  533. package/dist/skins/classic/messages.d.ts.map +1 -0
  534. package/dist/skins/classic/messages.js +65 -0
  535. package/dist/skins/classic/messages.js.map +1 -0
  536. package/dist/skins/classic/question.d.ts +5 -0
  537. package/dist/skins/classic/question.d.ts.map +1 -0
  538. package/dist/skins/classic/question.js +33 -0
  539. package/dist/skins/classic/question.js.map +1 -0
  540. package/dist/skins/classic/status.d.ts +10 -0
  541. package/dist/skins/classic/status.d.ts.map +1 -0
  542. package/dist/skins/classic/status.js +158 -0
  543. package/dist/skins/classic/status.js.map +1 -0
  544. package/dist/skins/classic/subagent.d.ts +5 -0
  545. package/dist/skins/classic/subagent.d.ts.map +1 -0
  546. package/dist/skins/classic/subagent.js +14 -0
  547. package/dist/skins/classic/subagent.js.map +1 -0
  548. package/dist/skins/classic/tool-section.d.ts +8 -0
  549. package/dist/skins/classic/tool-section.d.ts.map +1 -0
  550. package/dist/skins/classic/tool-section.js +20 -0
  551. package/dist/skins/classic/tool-section.js.map +1 -0
  552. package/dist/skins/classic/tools.d.ts +19 -0
  553. package/dist/skins/classic/tools.d.ts.map +1 -0
  554. package/dist/skins/classic/tools.js +72 -0
  555. package/dist/skins/classic/tools.js.map +1 -0
  556. package/dist/skins/ledger/activity.d.ts +6 -0
  557. package/dist/skins/ledger/activity.d.ts.map +1 -0
  558. package/dist/skins/ledger/activity.js +18 -0
  559. package/dist/skins/ledger/activity.js.map +1 -0
  560. package/dist/skins/ledger/approval.d.ts +17 -0
  561. package/dist/skins/ledger/approval.d.ts.map +1 -0
  562. package/dist/skins/ledger/approval.js +67 -0
  563. package/dist/skins/ledger/approval.js.map +1 -0
  564. package/dist/skins/ledger/body.d.ts +11 -0
  565. package/dist/skins/ledger/body.d.ts.map +1 -0
  566. package/dist/skins/ledger/body.js +77 -0
  567. package/dist/skins/ledger/body.js.map +1 -0
  568. package/dist/skins/ledger/chip.d.ts +27 -0
  569. package/dist/skins/ledger/chip.d.ts.map +1 -0
  570. package/dist/skins/ledger/chip.js +25 -0
  571. package/dist/skins/ledger/chip.js.map +1 -0
  572. package/dist/skins/ledger/index.d.ts +11 -0
  573. package/dist/skins/ledger/index.d.ts.map +1 -0
  574. package/dist/skins/ledger/index.js +44 -0
  575. package/dist/skins/ledger/index.js.map +1 -0
  576. package/dist/skins/ledger/live-region.d.ts +20 -0
  577. package/dist/skins/ledger/live-region.d.ts.map +1 -0
  578. package/dist/skins/ledger/live-region.js +89 -0
  579. package/dist/skins/ledger/live-region.js.map +1 -0
  580. package/dist/skins/ledger/messages.d.ts +17 -0
  581. package/dist/skins/ledger/messages.d.ts.map +1 -0
  582. package/dist/skins/ledger/messages.js +62 -0
  583. package/dist/skins/ledger/messages.js.map +1 -0
  584. package/dist/skins/ledger/status.d.ts +10 -0
  585. package/dist/skins/ledger/status.d.ts.map +1 -0
  586. package/dist/skins/ledger/status.js +302 -0
  587. package/dist/skins/ledger/status.js.map +1 -0
  588. package/dist/skins/ledger/tools.d.ts +20 -0
  589. package/dist/skins/ledger/tools.d.ts.map +1 -0
  590. package/dist/skins/ledger/tools.js +101 -0
  591. package/dist/skins/ledger/tools.js.map +1 -0
  592. package/dist/skins/names.d.ts +10 -0
  593. package/dist/skins/names.d.ts.map +1 -0
  594. package/dist/skins/names.js +9 -0
  595. package/dist/skins/names.js.map +1 -0
  596. package/dist/skins/rail/activity.d.ts +8 -0
  597. package/dist/skins/rail/activity.d.ts.map +1 -0
  598. package/dist/skins/rail/activity.js +23 -0
  599. package/dist/skins/rail/activity.js.map +1 -0
  600. package/dist/skins/rail/approval.d.ts +16 -0
  601. package/dist/skins/rail/approval.d.ts.map +1 -0
  602. package/dist/skins/rail/approval.js +45 -0
  603. package/dist/skins/rail/approval.js.map +1 -0
  604. package/dist/skins/rail/body.d.ts +19 -0
  605. package/dist/skins/rail/body.d.ts.map +1 -0
  606. package/dist/skins/rail/body.js +69 -0
  607. package/dist/skins/rail/body.js.map +1 -0
  608. package/dist/skins/rail/index.d.ts +12 -0
  609. package/dist/skins/rail/index.d.ts.map +1 -0
  610. package/dist/skins/rail/index.js +44 -0
  611. package/dist/skins/rail/index.js.map +1 -0
  612. package/dist/skins/rail/live-region.d.ts +19 -0
  613. package/dist/skins/rail/live-region.d.ts.map +1 -0
  614. package/dist/skins/rail/live-region.js +88 -0
  615. package/dist/skins/rail/live-region.js.map +1 -0
  616. package/dist/skins/rail/messages.d.ts +21 -0
  617. package/dist/skins/rail/messages.d.ts.map +1 -0
  618. package/dist/skins/rail/messages.js +90 -0
  619. package/dist/skins/rail/messages.js.map +1 -0
  620. package/dist/skins/rail/parts.d.ts +25 -0
  621. package/dist/skins/rail/parts.d.ts.map +1 -0
  622. package/dist/skins/rail/parts.js +37 -0
  623. package/dist/skins/rail/parts.js.map +1 -0
  624. package/dist/skins/rail/status.d.ts +10 -0
  625. package/dist/skins/rail/status.d.ts.map +1 -0
  626. package/dist/skins/rail/status.js +147 -0
  627. package/dist/skins/rail/status.js.map +1 -0
  628. package/dist/skins/rail/tools.d.ts +28 -0
  629. package/dist/skins/rail/tools.d.ts.map +1 -0
  630. package/dist/skins/rail/tools.js +85 -0
  631. package/dist/skins/rail/tools.js.map +1 -0
  632. package/dist/skins/registry.d.ts +6 -0
  633. package/dist/skins/registry.d.ts.map +1 -0
  634. package/dist/skins/registry.js +15 -0
  635. package/dist/skins/registry.js.map +1 -0
  636. package/dist/skins/shared/gauge.d.ts +17 -0
  637. package/dist/skins/shared/gauge.d.ts.map +1 -0
  638. package/dist/skins/shared/gauge.js +29 -0
  639. package/dist/skins/shared/gauge.js.map +1 -0
  640. package/dist/skins/shared/limits.d.ts +3 -0
  641. package/dist/skins/shared/limits.d.ts.map +1 -0
  642. package/dist/skins/shared/limits.js +3 -0
  643. package/dist/skins/shared/limits.js.map +1 -0
  644. package/dist/skins/shared/spinner.d.ts +14 -0
  645. package/dist/skins/shared/spinner.d.ts.map +1 -0
  646. package/dist/skins/shared/spinner.js +25 -0
  647. package/dist/skins/shared/spinner.js.map +1 -0
  648. package/dist/skins/testing/conformance.d.ts +8 -0
  649. package/dist/skins/testing/conformance.d.ts.map +1 -0
  650. package/dist/skins/testing/conformance.js +34 -0
  651. package/dist/skins/testing/conformance.js.map +1 -0
  652. package/dist/skins/testing/scenes.d.ts +45 -0
  653. package/dist/skins/testing/scenes.d.ts.map +1 -0
  654. package/dist/skins/testing/scenes.js +466 -0
  655. package/dist/skins/testing/scenes.js.map +1 -0
  656. package/dist/skins/types.d.ts +294 -0
  657. package/dist/skins/types.d.ts.map +1 -0
  658. package/dist/skins/types.js +10 -0
  659. package/dist/skins/types.js.map +1 -0
  660. package/dist/skins/zen/activity.d.ts +7 -0
  661. package/dist/skins/zen/activity.d.ts.map +1 -0
  662. package/dist/skins/zen/activity.js +22 -0
  663. package/dist/skins/zen/activity.js.map +1 -0
  664. package/dist/skins/zen/approval.d.ts +20 -0
  665. package/dist/skins/zen/approval.d.ts.map +1 -0
  666. package/dist/skins/zen/approval.js +67 -0
  667. package/dist/skins/zen/approval.js.map +1 -0
  668. package/dist/skins/zen/body.d.ts +14 -0
  669. package/dist/skins/zen/body.d.ts.map +1 -0
  670. package/dist/skins/zen/body.js +82 -0
  671. package/dist/skins/zen/body.js.map +1 -0
  672. package/dist/skins/zen/index.d.ts +12 -0
  673. package/dist/skins/zen/index.d.ts.map +1 -0
  674. package/dist/skins/zen/index.js +44 -0
  675. package/dist/skins/zen/index.js.map +1 -0
  676. package/dist/skins/zen/live-region.d.ts +21 -0
  677. package/dist/skins/zen/live-region.d.ts.map +1 -0
  678. package/dist/skins/zen/live-region.js +77 -0
  679. package/dist/skins/zen/live-region.js.map +1 -0
  680. package/dist/skins/zen/messages.d.ts +27 -0
  681. package/dist/skins/zen/messages.d.ts.map +1 -0
  682. package/dist/skins/zen/messages.js +81 -0
  683. package/dist/skins/zen/messages.js.map +1 -0
  684. package/dist/skins/zen/status.d.ts +11 -0
  685. package/dist/skins/zen/status.d.ts.map +1 -0
  686. package/dist/skins/zen/status.js +177 -0
  687. package/dist/skins/zen/status.js.map +1 -0
  688. package/dist/skins/zen/style.d.ts +26 -0
  689. package/dist/skins/zen/style.d.ts.map +1 -0
  690. package/dist/skins/zen/style.js +14 -0
  691. package/dist/skins/zen/style.js.map +1 -0
  692. package/dist/skins/zen/tools.d.ts +23 -0
  693. package/dist/skins/zen/tools.d.ts.map +1 -0
  694. package/dist/skins/zen/tools.js +81 -0
  695. package/dist/skins/zen/tools.js.map +1 -0
  696. package/dist/skins/zen/width.d.ts +12 -0
  697. package/dist/skins/zen/width.d.ts.map +1 -0
  698. package/dist/skins/zen/width.js +27 -0
  699. package/dist/skins/zen/width.js.map +1 -0
  700. package/dist/theme/ThemeContext.d.ts +26 -0
  701. package/dist/theme/ThemeContext.d.ts.map +1 -0
  702. package/dist/theme/ThemeContext.js +24 -0
  703. package/dist/theme/ThemeContext.js.map +1 -0
  704. package/dist/theme/detect-terminal-background.d.ts +29 -0
  705. package/dist/theme/detect-terminal-background.d.ts.map +1 -0
  706. package/dist/theme/detect-terminal-background.js +72 -0
  707. package/dist/theme/detect-terminal-background.js.map +1 -0
  708. package/dist/theme/palettes.d.ts +84 -0
  709. package/dist/theme/palettes.d.ts.map +1 -0
  710. package/dist/theme/palettes.js +175 -0
  711. package/dist/theme/palettes.js.map +1 -0
  712. package/dist/theme/resolve-theme.d.ts +44 -0
  713. package/dist/theme/resolve-theme.d.ts.map +1 -0
  714. package/dist/theme/resolve-theme.js +72 -0
  715. package/dist/theme/resolve-theme.js.map +1 -0
  716. package/dist/tools/agent/propose-goal.d.ts +17 -0
  717. package/dist/tools/agent/propose-goal.d.ts.map +1 -0
  718. package/dist/tools/agent/propose-goal.js +64 -0
  719. package/dist/tools/agent/propose-goal.js.map +1 -0
  720. package/dist/tools/agent/run-subagent-async.d.ts +61 -3
  721. package/dist/tools/agent/run-subagent-async.d.ts.map +1 -1
  722. package/dist/tools/agent/run-subagent-async.js +13 -4
  723. package/dist/tools/agent/run-subagent-async.js.map +1 -1
  724. package/dist/tools/agent/run-subagent.d.ts +73 -7
  725. package/dist/tools/agent/run-subagent.d.ts.map +1 -1
  726. package/dist/tools/agent/run-subagent.js +84 -22
  727. package/dist/tools/agent/run-subagent.js.map +1 -1
  728. package/dist/tools/file/create-file.js +1 -1
  729. package/dist/tools/file/create-file.js.map +1 -1
  730. package/dist/tools/system/run-code/index.d.ts +1 -1
  731. package/dist/tools/system/run-code/index.d.ts.map +1 -1
  732. package/dist/tools/system/run-code/index.js +1 -1
  733. package/dist/tools/system/run-code/index.js.map +1 -1
  734. package/dist/tools/system/run-code/run-code-agent-capability.d.ts +99 -0
  735. package/dist/tools/system/run-code/run-code-agent-capability.d.ts.map +1 -0
  736. package/dist/tools/system/run-code/run-code-agent-capability.js +384 -0
  737. package/dist/tools/system/run-code/run-code-agent-capability.js.map +1 -0
  738. package/dist/tools/system/run-code/run-code-runtime.d.ts +9 -0
  739. package/dist/tools/system/run-code/run-code-runtime.d.ts.map +1 -1
  740. package/dist/tools/system/run-code/run-code-runtime.js +141 -7
  741. package/dist/tools/system/run-code/run-code-runtime.js.map +1 -1
  742. package/dist/tools/system/run-code/run-code.d.ts +12 -1
  743. package/dist/tools/system/run-code/run-code.d.ts.map +1 -1
  744. package/dist/tools/system/run-code/run-code.js +48 -1
  745. package/dist/tools/system/run-code/run-code.js.map +1 -1
  746. package/dist/tools/tool-names.d.ts +1 -0
  747. package/dist/tools/tool-names.d.ts.map +1 -1
  748. package/dist/tools/tool-names.js +1 -0
  749. package/dist/tools/tool-names.js.map +1 -1
  750. package/dist/tools/web/web-search.d.ts +18 -0
  751. package/dist/tools/web/web-search.d.ts.map +1 -1
  752. package/dist/tools/web/web-search.js +29 -4
  753. package/dist/tools/web/web-search.js.map +1 -1
  754. package/dist/types/message.d.ts +1 -0
  755. package/dist/types/message.d.ts.map +1 -1
  756. package/dist/types/message.js +13 -0
  757. package/dist/types/message.js.map +1 -1
  758. package/dist/utils/conversation/conversation-event-handler.js +1 -1
  759. package/dist/utils/conversation/conversation-event-handler.js.map +1 -1
  760. package/dist/utils/shell/execute-shell.js +1 -1
  761. package/dist/utils/shell/execute-shell.js.map +1 -1
  762. package/dist/utils/value-suggestions.d.ts.map +1 -1
  763. package/dist/utils/value-suggestions.js +16 -0
  764. package/dist/utils/value-suggestions.js.map +1 -1
  765. package/package.json +2 -1
@@ -4,7 +4,8 @@ import { generateDiff } from '../../utils/output/diff.js';
4
4
  import { asDisplayArray, asDisplayString } from '../../utils/tool-args-display.js';
5
5
  import { TOOL_NAME_APPLY_PATCH, TOOL_NAME_CREATE_FILE, TOOL_NAME_SEARCH_REPLACE } from '../../tools/tool-names.js';
6
6
  import { countDiffStats, extractErrorMessage, formatToolArgs, getFirstParagraph, getMatchCount, isStructuredToolError, isSearchLikeTool, parseCodeOutlineOutput, parseRunCodeTrace, truncateOutputLines, parseFindFilesOutput, parseSubagentOutput, stripRgErrorLines, } from './command-message-helpers.js';
7
- import { COLOR_ACCENT, COLOR_ACCENT_ALT, COLOR_DANGER, COLOR_TEXT, COLOR_TEXT_MUTED, COLOR_TEXT_SUBTLE, COLOR_TOOL_OUTPUT, COLOR_WARNING, TOOL_STATUS_COLOR, TOOL_STATUS_GLYPH, } from '../theme.js';
7
+ import { useTheme } from '../theme.js';
8
+ import { useSkin } from '../../skins/SkinContext.js';
8
9
  import DiffView from '../layout/DiffView.js';
9
10
  import { useCommandVisibility } from './useCommandVisibility.js';
10
11
  import ReadFileRenderer from './ReadFileRenderer.js';
@@ -49,12 +50,14 @@ const getConciseAskUserResponse = (output) => {
49
50
  return output;
50
51
  };
51
52
  const CommandMessage = ({ command, output: rawOutput, status, success, failureReason, toolName, toolArgs, isApprovalRejection, autoApprovedByLlm, hadApproval, displayMode = 'standard', textColor, isSubagent = false, awaitingDecision = false, }) => {
53
+ const theme = useTheme();
54
+ const { ToolFrame, ToolHeader, ToolSection } = useSkin();
52
55
  const { isVisible, isRunning } = useCommandVisibility(status);
53
56
  const isWaiting = awaitingDecision;
54
57
  const isQueued = status === 'pending' && !awaitingDecision;
55
58
  const isExecuting = isRunning && !awaitingDecision;
56
59
  const runningElapsedSeconds = useRunningElapsedSeconds(isExecuting);
57
- const runningElapsedLabel = isWaiting ? (React.createElement(Text, { color: COLOR_TEXT_SUBTLE }, " (waiting)")) : isQueued ? (React.createElement(Text, { color: COLOR_TEXT_SUBTLE }, " (queued)")) : isExecuting ? (React.createElement(Text, { color: COLOR_WARNING },
60
+ const runningElapsedLabel = isWaiting ? (React.createElement(Text, { color: theme.textSubtle }, " (waiting)")) : isQueued ? (React.createElement(Text, { color: theme.textSubtle }, " (queued)")) : isExecuting ? (React.createElement(Text, { color: theme.warning },
58
61
  " (",
59
62
  runningElapsedSeconds,
60
63
  "s)")) : null;
@@ -105,7 +108,7 @@ const CommandMessage = ({ command, output: rawOutput, status, success, failureRe
105
108
  if (isShell) {
106
109
  return (React.createElement(React.Fragment, null,
107
110
  React.createElement(Text, { bold: true }, command),
108
- runtime && React.createElement(Text, { color: COLOR_TEXT_SUBTLE },
111
+ runtime && React.createElement(Text, { color: theme.textSubtle },
109
112
  " (",
110
113
  runtime,
111
114
  ")")));
@@ -308,26 +311,18 @@ const CommandMessage = ({ command, output: rawOutput, status, success, failureRe
308
311
  }
309
312
  // Depend on the whole `toolArgs`, not `toolArgs?.runs`: the React Compiler infers the
310
313
  // former and refuses to preserve the memo when the declared deps are narrower.
311
- }, [toolName, command, runtime, formattedArgs, toolArgs, isBackgroundSubagentLaunch, success]);
312
- const renderStandardHeader = () => {
313
- // isApprovalRejection carries no `success` value of its own — it is a distinct
314
- // outcome from a normal failed run — so it is checked first and maps to the
315
- // same 'failed' glyph/color as success === false.
316
- const statusKind = isApprovalRejection || success === false || status === 'unknown'
317
- ? 'failed'
318
- : isWaiting || isQueued
319
- ? 'pending'
320
- : isRunning
321
- ? 'running'
322
- : 'completed';
323
- const headerColor = TOOL_STATUS_COLOR[statusKind];
324
- return (React.createElement(Box, null,
325
- React.createElement(Text, { color: headerColor },
326
- TOOL_STATUS_GLYPH[statusKind],
327
- " ",
328
- displayAction,
329
- runningElapsedLabel)));
330
- };
314
+ }, [toolName, command, runtime, formattedArgs, toolArgs, isBackgroundSubagentLaunch, success, theme.textSubtle]);
315
+ // isApprovalRejection carries no `success` value of its own — it is a distinct
316
+ // outcome from a normal failed run — so it is checked first and maps to the
317
+ // same 'failed' glyph/color as success === false.
318
+ const statusKind = isApprovalRejection || success === false || status === 'unknown'
319
+ ? 'failed'
320
+ : isWaiting || isQueued
321
+ ? 'pending'
322
+ : isRunning
323
+ ? 'running'
324
+ : 'completed';
325
+ const renderStandardHeader = () => (React.createElement(ToolHeader, { toolName: toolName, status: statusKind, display: "standard", action: displayAction, meta: runningElapsedLabel }));
331
326
  const changeStats = useMemo(() => {
332
327
  const diffText = toolName === TOOL_NAME_APPLY_PATCH
333
328
  ? toolArgs?.diff
@@ -345,11 +340,11 @@ const CommandMessage = ({ command, output: rawOutput, status, success, failureRe
345
340
  const changeStatsElement = changeStats ? (React.createElement(React.Fragment, null,
346
341
  ' ',
347
342
  "(",
348
- React.createElement(Text, { color: COLOR_TEXT_MUTED },
343
+ React.createElement(Text, { color: theme.textMuted },
349
344
  "+",
350
345
  changeStats.added),
351
346
  ' ',
352
- React.createElement(Text, { color: COLOR_DANGER },
347
+ React.createElement(Text, { color: theme.danger },
353
348
  "-",
354
349
  changeStats.removed),
355
350
  ")")) : null;
@@ -362,8 +357,8 @@ const CommandMessage = ({ command, output: rawOutput, status, success, failureRe
362
357
  return 0;
363
358
  return getMatchCount(toolName, command, output);
364
359
  }, [displayMode, toolName, command, isRunning, isQueued, isApprovalRejection, output]);
365
- const matchCountElement = matchCount > 0 ? (React.createElement(Box, { paddingLeft: 2 },
366
- React.createElement(Text, { color: COLOR_TEXT_SUBTLE },
360
+ const matchCountElement = matchCount > 0 ? (React.createElement(ToolSection, { variant: "indent" },
361
+ React.createElement(Text, { color: theme.textSubtle },
367
362
  "(",
368
363
  matchCount,
369
364
  " match",
@@ -371,340 +366,329 @@ const CommandMessage = ({ command, output: rawOutput, status, success, failureRe
371
366
  ")"))) : null;
372
367
  // Concise mode draws the header alone, so a refused nested call would otherwise
373
368
  // vanish. Counts on a clean run would be noise, so only trouble is announced.
374
- const runCodeTroubleElement = displayMode === 'concise' && runCodeTrace && runCodeTrace.troubledCount > 0 ? (React.createElement(Text, { color: COLOR_DANGER },
369
+ const runCodeTroubleElement = displayMode === 'concise' && runCodeTrace && runCodeTrace.troubledCount > 0 ? (React.createElement(Text, { color: theme.danger },
375
370
  " (",
376
371
  runCodeTrace.troubledCount,
377
372
  " refused)")) : null;
378
- const autoApprovalLabel = autoApprovedByLlm ? React.createElement(Text, { color: COLOR_TEXT_SUBTLE }, "(Auto approved by LLM)") : null;
373
+ const autoApprovalLabel = autoApprovedByLlm ? React.createElement(Text, { color: theme.textSubtle }, "(Auto approved by LLM)") : null;
379
374
  if (!isVisible && !isSubagent) {
380
375
  return null;
381
376
  }
382
- if (displayMode === 'concise') {
383
- if (isSubagent) {
384
- const isFailed = status === 'failed' ||
385
- status === 'aborted' ||
386
- status === 'unknown' ||
387
- isApprovalRejection ||
388
- success === false ||
389
- Boolean(failureReason);
390
- const subagentStatusKind = isFailed
391
- ? 'failed'
392
- : isWaiting || isQueued
393
- ? 'pending'
394
- : isRunning
395
- ? 'running'
396
- : 'completed';
397
- const actionText = isFailed ? command : displayAction;
398
- return (React.createElement(Box, null,
399
- React.createElement(Text, { wrap: "truncate", color: COLOR_TEXT_SUBTLE },
400
- React.createElement(Text, { color: TOOL_STATUS_COLOR[subagentStatusKind] }, TOOL_STATUS_GLYPH[subagentStatusKind]),
401
- ' ',
402
- actionText,
403
- runningElapsedLabel)));
404
- }
405
- if (isApprovalRejection) {
406
- return (React.createElement(Box, { flexDirection: "column" },
407
- React.createElement(Text, { color: textColor || COLOR_TEXT_MUTED },
408
- React.createElement(Text, { color: TOOL_STATUS_COLOR.rejected, bold: true }, TOOL_STATUS_GLYPH.rejected),
409
- ' ',
410
- displayAction,
411
- changeStatsElement),
412
- React.createElement(Text, { color: textColor || COLOR_TEXT_MUTED },
413
- " \u2192 DENIED: ",
414
- denialReason)));
415
- }
416
- if (isRunning || isQueued || isWaiting) {
417
- const inFlightStatusKind = isWaiting || isQueued ? 'pending' : 'running';
418
- return (React.createElement(Box, null,
419
- React.createElement(Text, { color: TOOL_STATUS_COLOR[inFlightStatusKind] },
420
- React.createElement(Text, { bold: true }, TOOL_STATUS_GLYPH[inFlightStatusKind]),
421
- " ",
422
- displayAction,
423
- runningElapsedLabel,
424
- changeStatsElement)));
425
- }
426
- if (success === false || failureReason) {
427
- const parsedOutputError = extractErrorMessage(output);
428
- const errorMsg = failureReason || parsedOutputError || 'failed';
429
- const summarizeRawError = !failureReason && !isApprovalRejection && isStructuredToolError(output);
430
- const displayErrorMsg = isSearchLikeTool(toolName, command)
431
- ? stripRgErrorLines(errorMsg).trim() || 'failed'
432
- : errorMsg;
433
- // Truncate error message like standard mode truncates output
434
- const truncatedError = (() => {
435
- const lines = displayErrorMsg.trimEnd().split('\n');
436
- const maxLines = 3;
437
- if (lines.length > maxLines + 1) {
438
- const firstPart = lines.slice(0, maxLines).join('\n');
439
- const lastLine = lines[lines.length - 1];
440
- return `${firstPart}\n... (${lines.length - maxLines - 1} more lines)\n${lastLine}`;
441
- }
442
- return displayErrorMsg;
443
- })();
377
+ // The special renderers are FCs invoked as plain functions, so this can type as ReactNode | Promise<ReactNode>.
378
+ const renderContent = () => {
379
+ if (displayMode === 'concise') {
380
+ if (isSubagent) {
381
+ const isFailed = status === 'failed' ||
382
+ status === 'aborted' ||
383
+ status === 'unknown' ||
384
+ isApprovalRejection ||
385
+ success === false ||
386
+ Boolean(failureReason);
387
+ const subagentStatusKind = isFailed
388
+ ? 'failed'
389
+ : isWaiting || isQueued
390
+ ? 'pending'
391
+ : isRunning
392
+ ? 'running'
393
+ : 'completed';
394
+ const actionText = isFailed ? command : displayAction;
395
+ return (React.createElement(ToolHeader, { toolName: toolName, status: subagentStatusKind, display: "concise", nested: true, action: actionText, meta: runningElapsedLabel }));
396
+ }
397
+ if (isApprovalRejection) {
398
+ return (React.createElement(Box, { flexDirection: "column" },
399
+ React.createElement(ToolHeader, { toolName: toolName, status: "rejected", display: "concise", action: displayAction, trailing: changeStatsElement, textColor: textColor }),
400
+ React.createElement(Text, { color: textColor || theme.textMuted },
401
+ " \u2192 DENIED: ",
402
+ denialReason)));
403
+ }
404
+ if (isRunning || isQueued || isWaiting) {
405
+ const inFlightStatusKind = isWaiting || isQueued ? 'pending' : 'running';
406
+ return (React.createElement(ToolHeader, { toolName: toolName, status: inFlightStatusKind, display: "concise", action: displayAction, meta: runningElapsedLabel, trailing: changeStatsElement }));
407
+ }
408
+ if (success === false || failureReason) {
409
+ const parsedOutputError = extractErrorMessage(output);
410
+ const errorMsg = failureReason || parsedOutputError || 'failed';
411
+ const summarizeRawError = !failureReason && !isApprovalRejection && isStructuredToolError(output);
412
+ const displayErrorMsg = isSearchLikeTool(toolName, command)
413
+ ? stripRgErrorLines(errorMsg).trim() || 'failed'
414
+ : errorMsg;
415
+ // Truncate error message like standard mode truncates output
416
+ const truncatedError = (() => {
417
+ const lines = displayErrorMsg.trimEnd().split('\n');
418
+ const maxLines = 3;
419
+ if (lines.length > maxLines + 1) {
420
+ const firstPart = lines.slice(0, maxLines).join('\n');
421
+ const lastLine = lines[lines.length - 1];
422
+ return `${firstPart}\n... (${lines.length - maxLines - 1} more lines)\n${lastLine}`;
423
+ }
424
+ return displayErrorMsg;
425
+ })();
426
+ return (React.createElement(Box, { flexDirection: "column" },
427
+ React.createElement(ToolHeader, { toolName: toolName, status: "failed", display: "concise", action: displayAction, trailing: changeStatsElement, textColor: textColor }),
428
+ matchCountElement,
429
+ summarizeRawError && (React.createElement(React.Fragment, null,
430
+ React.createElement(Text, { color: textColor || theme.textMuted }, "Tool failed."),
431
+ React.createElement(Text, { color: textColor || theme.textMuted }, "Review the error details and retry after correcting the issue."))),
432
+ matchCount === 0 && React.createElement(Text, { color: textColor || theme.textMuted }, truncatedError)));
433
+ }
434
+ // Success (one line)
435
+ if (toolName === 'automatic_memory') {
436
+ return (React.createElement(Box, { flexDirection: "column" },
437
+ renderStandardHeader(),
438
+ React.createElement(Text, { color: textColor || theme.textMuted }, output)));
439
+ }
440
+ if (toolName === 'ask_user') {
441
+ const responseText = getConciseAskUserResponse(output);
442
+ return (React.createElement(Box, { flexDirection: "column" },
443
+ React.createElement(ToolHeader, { toolName: toolName, status: "completed", display: "concise", action: displayAction, textColor: textColor }),
444
+ React.createElement(Text, { color: textColor || theme.textMuted },
445
+ " Response: ",
446
+ responseText)));
447
+ }
448
+ if (toolName === 'ask_mentor') {
449
+ const firstParagraph = getFirstParagraph(output, 200);
450
+ return (React.createElement(Box, { flexDirection: "column" },
451
+ React.createElement(ToolHeader, { toolName: toolName, status: "completed", display: "concise", action: displayAction, textColor: textColor }),
452
+ React.createElement(Text, { color: textColor || theme.textMuted },
453
+ " Response: ",
454
+ firstParagraph)));
455
+ }
444
456
  return (React.createElement(Box, { flexDirection: "column" },
445
- React.createElement(Text, { color: textColor || COLOR_TEXT_MUTED },
446
- React.createElement(Text, { color: TOOL_STATUS_COLOR.failed, bold: true }, TOOL_STATUS_GLYPH.failed),
447
- ' ',
448
- displayAction,
449
- changeStatsElement),
457
+ React.createElement(ToolHeader, { toolName: toolName, status: "completed", display: "concise", action: displayAction, trailing: React.createElement(React.Fragment, null,
458
+ runCodeTroubleElement,
459
+ changeStatsElement), textColor: textColor }),
450
460
  matchCountElement,
451
- summarizeRawError && (React.createElement(React.Fragment, null,
452
- React.createElement(Text, { color: textColor || COLOR_TEXT_MUTED }, "Tool failed."),
453
- React.createElement(Text, { color: textColor || COLOR_TEXT_MUTED }, "Review the error details and retry after correcting the issue."))),
454
- matchCount === 0 && React.createElement(Text, { color: textColor || COLOR_TEXT_MUTED }, truncatedError)));
461
+ autoApprovalLabel));
455
462
  }
456
- // Success (one line)
457
- if (toolName === 'automatic_memory') {
463
+ const outputText = output?.trim() ? output : isRunning ? '(running...)' : isQueued ? '(queued)' : '(no output)';
464
+ const displayed = outputText && outputText !== '(no output)' ? truncateOutputLines(output || '') : outputText;
465
+ const actionableErrorSummary = success === false && !failureReason && !isApprovalRejection && isStructuredToolError(output) ? (React.createElement(React.Fragment, null,
466
+ React.createElement(Text, { color: textColor || theme.textMuted }, "Tool failed."),
467
+ React.createElement(Text, { color: textColor || theme.textMuted }, "Review the error details and retry after correcting the issue."))) : null;
468
+ // Special handling for apply_patch
469
+ if (toolName === TOOL_NAME_APPLY_PATCH && toolArgs) {
470
+ if (hadApproval) {
471
+ return (React.createElement(Box, { flexDirection: "column" },
472
+ React.createElement(Text, { color: success === false ? theme.danger : theme.toolOutput }, displayed)));
473
+ }
458
474
  return (React.createElement(Box, { flexDirection: "column" },
459
475
  renderStandardHeader(),
460
- React.createElement(Text, { color: textColor || COLOR_TEXT_MUTED }, output)));
476
+ actionableErrorSummary,
477
+ toolArgs.diff && success !== false && React.createElement(DiffView, { diff: toolArgs.diff }),
478
+ failureReason && React.createElement(Text, { color: theme.danger },
479
+ "Error: ",
480
+ failureReason),
481
+ React.createElement(Text, { color: success === false ? theme.danger : theme.toolOutput }, displayed)));
461
482
  }
462
- if (toolName === 'ask_user') {
463
- const responseText = getConciseAskUserResponse(output);
464
- return (React.createElement(Box, { flexDirection: "column" },
465
- React.createElement(Text, { color: textColor || COLOR_TEXT_MUTED },
466
- React.createElement(Text, { color: TOOL_STATUS_COLOR.completed, bold: true }, TOOL_STATUS_GLYPH.completed),
467
- ' ',
468
- displayAction),
469
- React.createElement(Text, { color: textColor || COLOR_TEXT_MUTED },
470
- " Response: ",
471
- responseText)));
472
- }
473
- if (toolName === 'ask_mentor') {
474
- const firstParagraph = getFirstParagraph(output, 200);
483
+ // Special handling for search_replace
484
+ if (toolName === TOOL_NAME_SEARCH_REPLACE && toolArgs) {
485
+ // For search_replace that had an approval prompt (user said 'y'), only show output
486
+ if (hadApproval) {
487
+ return (React.createElement(Box, { flexDirection: "column" },
488
+ React.createElement(Text, { color: success === false ? theme.danger : theme.toolOutput }, displayed)));
489
+ }
490
+ // For auto-approved search_replace (no approval prompt), show diff + output
475
491
  return (React.createElement(Box, { flexDirection: "column" },
476
- React.createElement(Text, { color: textColor || COLOR_TEXT_MUTED },
477
- React.createElement(Text, { color: TOOL_STATUS_COLOR.completed, bold: true }, TOOL_STATUS_GLYPH.completed),
478
- ' ',
479
- displayAction),
480
- React.createElement(Text, { color: textColor || COLOR_TEXT_MUTED },
481
- " Response: ",
482
- firstParagraph)));
492
+ renderStandardHeader(),
493
+ actionableErrorSummary,
494
+ React.createElement(DiffView, { diff: diff }),
495
+ failureReason && React.createElement(Text, { color: theme.danger },
496
+ "Error: ",
497
+ failureReason),
498
+ React.createElement(Text, { color: success === false ? theme.danger : theme.toolOutput }, displayed)));
483
499
  }
484
- return (React.createElement(Box, { flexDirection: "column" },
485
- React.createElement(Text, { color: textColor || COLOR_TEXT_MUTED },
486
- React.createElement(Text, { color: TOOL_STATUS_COLOR.completed, bold: true }, TOOL_STATUS_GLYPH.completed),
487
- ' ',
488
- displayAction,
489
- runCodeTroubleElement,
490
- changeStatsElement),
491
- matchCountElement,
492
- autoApprovalLabel));
493
- }
494
- const outputText = output?.trim() ? output : isRunning ? '(running...)' : isQueued ? '(queued)' : '(no output)';
495
- const displayed = outputText && outputText !== '(no output)' ? truncateOutputLines(output || '') : outputText;
496
- const actionableErrorSummary = success === false && !failureReason && !isApprovalRejection && isStructuredToolError(output) ? (React.createElement(React.Fragment, null,
497
- React.createElement(Text, { color: textColor || COLOR_TEXT_MUTED }, "Tool failed."),
498
- React.createElement(Text, { color: textColor || COLOR_TEXT_MUTED }, "Review the error details and retry after correcting the issue."))) : null;
499
- // Special handling for apply_patch
500
- if (toolName === TOOL_NAME_APPLY_PATCH && toolArgs) {
501
- if (hadApproval) {
500
+ // Special handling for create_file
501
+ if (toolName === TOOL_NAME_CREATE_FILE && toolArgs) {
502
502
  return (React.createElement(Box, { flexDirection: "column" },
503
- React.createElement(Text, { color: success === false ? COLOR_DANGER : COLOR_TOOL_OUTPUT }, displayed)));
503
+ renderStandardHeader(),
504
+ actionableErrorSummary,
505
+ success !== false && React.createElement(DiffView, { diff: createFileDiffLines }),
506
+ failureReason && React.createElement(Text, { color: theme.danger },
507
+ "Error: ",
508
+ failureReason),
509
+ React.createElement(Text, { color: success === false ? theme.danger : theme.toolOutput }, displayed)));
504
510
  }
505
- return (React.createElement(Box, { flexDirection: "column" },
506
- renderStandardHeader(),
507
- actionableErrorSummary,
508
- toolArgs.diff && success !== false && React.createElement(DiffView, { diff: toolArgs.diff }),
509
- failureReason && React.createElement(Text, { color: COLOR_DANGER },
510
- "Error: ",
511
- failureReason),
512
- React.createElement(Text, { color: success === false ? COLOR_DANGER : COLOR_TOOL_OUTPUT }, displayed)));
513
- }
514
- // Special handling for search_replace
515
- if (toolName === TOOL_NAME_SEARCH_REPLACE && toolArgs) {
516
- // For search_replace that had an approval prompt (user said 'y'), only show output
517
- if (hadApproval) {
511
+ if ((toolName === 'run_subagent_async' || isBackgroundSubagentLaunch) && success === false) {
512
+ let launchError = output;
513
+ try {
514
+ const parsed = JSON.parse(output);
515
+ launchError = parsed?.error?.message ?? parsed?.error ?? output;
516
+ }
517
+ catch {
518
+ // The formatter may already have reduced the structured failure to text.
519
+ }
518
520
  return (React.createElement(Box, { flexDirection: "column" },
519
- React.createElement(Text, { color: success === false ? COLOR_DANGER : COLOR_TOOL_OUTPUT }, displayed)));
520
- }
521
- // For auto-approved search_replace (no approval prompt), show diff + output
522
- return (React.createElement(Box, { flexDirection: "column" },
523
- renderStandardHeader(),
524
- actionableErrorSummary,
525
- React.createElement(DiffView, { diff: diff }),
526
- failureReason && React.createElement(Text, { color: COLOR_DANGER },
527
- "Error: ",
528
- failureReason),
529
- React.createElement(Text, { color: success === false ? COLOR_DANGER : COLOR_TOOL_OUTPUT }, displayed)));
530
- }
531
- // Special handling for create_file
532
- if (toolName === TOOL_NAME_CREATE_FILE && toolArgs) {
533
- return (React.createElement(Box, { flexDirection: "column" },
534
- renderStandardHeader(),
535
- actionableErrorSummary,
536
- success !== false && React.createElement(DiffView, { diff: createFileDiffLines }),
537
- failureReason && React.createElement(Text, { color: COLOR_DANGER },
538
- "Error: ",
539
- failureReason),
540
- React.createElement(Text, { color: success === false ? COLOR_DANGER : COLOR_TOOL_OUTPUT }, displayed)));
541
- }
542
- if ((toolName === 'run_subagent_async' || isBackgroundSubagentLaunch) && success === false) {
543
- let launchError = output;
544
- try {
545
- const parsed = JSON.parse(output);
546
- launchError = parsed?.error?.message ?? parsed?.error ?? output;
547
- }
548
- catch {
549
- // The formatter may already have reduced the structured failure to text.
550
- }
551
- return (React.createElement(Box, { flexDirection: "column" },
552
- renderStandardHeader(),
553
- React.createElement(Box, { paddingLeft: 2, marginTop: 0.5 },
554
- React.createElement(Text, { color: COLOR_DANGER }, launchError))));
555
- }
556
- if (displayMode === 'standard' && toolName === 'run_code' && runCodeTrace && !isApprovalRejection) {
557
- return React.createElement(RunCodeRenderer, { trace: runCodeTrace, success: success, renderStandardHeader: renderStandardHeader });
558
- }
559
- // Standard mode custom tool renderers
560
- if (displayMode === 'standard' && success !== false && !failureReason && !isRunning && !isQueued && !isWaiting) {
561
- if (toolName === 'read_file' || toolName === 'view_file') {
562
- const result = ReadFileRenderer({ output, renderStandardHeader });
563
- if (result)
564
- return result;
521
+ renderStandardHeader(),
522
+ React.createElement(Box, { flexDirection: "column", marginTop: 0.5 },
523
+ React.createElement(ToolSection, { variant: "indent" },
524
+ React.createElement(Text, { color: theme.danger }, launchError)))));
565
525
  }
566
- if (toolName === 'grep') {
567
- const result = GrepRenderer({ output, renderStandardHeader });
568
- if (result)
569
- return result;
526
+ if (displayMode === 'standard' && toolName === 'run_code' && runCodeTrace && !isApprovalRejection) {
527
+ return React.createElement(RunCodeRenderer, { trace: runCodeTrace, success: success, renderStandardHeader: renderStandardHeader });
570
528
  }
571
- if (toolName === 'glob') {
572
- const parsed = parseFindFilesOutput(output);
573
- if (parsed) {
574
- const { files, note } = parsed;
529
+ // Standard mode custom tool renderers
530
+ if (displayMode === 'standard' && success !== false && !failureReason && !isRunning && !isQueued && !isWaiting) {
531
+ if (toolName === 'read_file' || toolName === 'view_file') {
532
+ const result = ReadFileRenderer({ output, renderStandardHeader });
533
+ if (result)
534
+ return result;
535
+ }
536
+ if (toolName === 'grep') {
537
+ const result = GrepRenderer({ output, renderStandardHeader });
538
+ if (result)
539
+ return result;
540
+ }
541
+ if (toolName === 'glob') {
542
+ const parsed = parseFindFilesOutput(output);
543
+ if (parsed) {
544
+ const { files, note } = parsed;
545
+ return (React.createElement(Box, { flexDirection: "column" },
546
+ React.createElement(Box, { marginBottom: 1 }, renderStandardHeader()),
547
+ React.createElement(ToolSection, { variant: "indent" }, files.map((file, idx) => (React.createElement(Text, { key: idx, color: theme.toolOutput }, file)))),
548
+ note && (React.createElement(Box, { marginTop: 1 },
549
+ React.createElement(Text, { color: theme.warning }, note)))));
550
+ }
551
+ }
552
+ if ((toolName === 'run_subagent' && !isBackgroundSubagentLaunch) || toolName === 'get_subagent_result') {
553
+ const parsed = parseSubagentOutput(output, toolArgs);
554
+ if (parsed) {
555
+ const { role: _role, status, toolsUsed, filesChanged, mainText } = parsed;
556
+ const _statusColor = status === 'completed' ? theme.textMuted : status === 'failed' ? theme.danger : theme.warning;
557
+ return (React.createElement(Box, { flexDirection: "column" },
558
+ renderStandardHeader(),
559
+ (toolsUsed || filesChanged) && (React.createElement(Box, { flexDirection: "column", marginY: 0.5 },
560
+ React.createElement(ToolSection, { variant: "indent" },
561
+ toolsUsed && (React.createElement(Text, { color: theme.textSubtle },
562
+ "Tools: ",
563
+ React.createElement(Text, { color: theme.text }, toolsUsed))),
564
+ filesChanged && (React.createElement(Text, { color: theme.textSubtle },
565
+ "Changed: ",
566
+ React.createElement(Text, { color: theme.text }, filesChanged)))))),
567
+ mainText && (React.createElement(Box, { flexDirection: "column", marginTop: 1 },
568
+ React.createElement(ToolSection, { variant: "panel" },
569
+ React.createElement(Text, { color: theme.toolOutput }, mainText))))));
570
+ }
571
+ }
572
+ if (toolName === 'run_subagent_async' || isBackgroundSubagentLaunch) {
573
+ let runId;
574
+ try {
575
+ const parsed = JSON.parse(output);
576
+ runId = parsed?.runId;
577
+ }
578
+ catch {
579
+ // Fall back to treating the whole output as the runId.
580
+ runId = output;
581
+ }
575
582
  return (React.createElement(Box, { flexDirection: "column" },
576
- React.createElement(Box, { marginBottom: 1 }, renderStandardHeader()),
577
- React.createElement(Box, { flexDirection: "column", paddingLeft: 2 }, files.map((file, idx) => (React.createElement(Text, { key: idx, color: COLOR_TOOL_OUTPUT }, file)))),
578
- note && (React.createElement(Box, { marginTop: 1 },
579
- React.createElement(Text, { color: COLOR_WARNING }, note)))));
583
+ renderStandardHeader(),
584
+ React.createElement(Box, { flexDirection: "column", marginTop: 0.5 },
585
+ React.createElement(ToolSection, { variant: "indent" },
586
+ React.createElement(Box, null,
587
+ React.createElement(Text, { color: theme.textSubtle }, "Run ID: "),
588
+ React.createElement(Text, { color: theme.textMuted }, runId || output))))));
580
589
  }
581
- }
582
- if ((toolName === 'run_subagent' && !isBackgroundSubagentLaunch) || toolName === 'get_subagent_result') {
583
- const parsed = parseSubagentOutput(output, toolArgs);
584
- if (parsed) {
585
- const { role: _role, status, toolsUsed, filesChanged, mainText } = parsed;
586
- const _statusColor = status === 'completed' ? COLOR_TEXT_MUTED : status === 'failed' ? COLOR_DANGER : COLOR_WARNING;
590
+ if (toolName === 'web_search') {
591
+ const result = WebSearchRenderer({ output, renderStandardHeader });
592
+ if (result)
593
+ return result;
594
+ }
595
+ if (toolName === 'web_fetch') {
596
+ const result = WebFetchRenderer({ output, renderStandardHeader });
597
+ if (result)
598
+ return result;
599
+ }
600
+ if (toolName === 'ask_mentor') {
587
601
  return (React.createElement(Box, { flexDirection: "column" },
588
602
  renderStandardHeader(),
589
- (toolsUsed || filesChanged) && (React.createElement(Box, { flexDirection: "column", paddingLeft: 2, marginY: 0.5 },
590
- toolsUsed && (React.createElement(Text, { color: COLOR_TEXT_SUBTLE },
591
- "Tools: ",
592
- React.createElement(Text, { color: COLOR_TEXT }, toolsUsed))),
593
- filesChanged && (React.createElement(Text, { color: COLOR_TEXT_SUBTLE },
594
- "Changed: ",
595
- React.createElement(Text, { color: COLOR_TEXT }, filesChanged))))),
596
- mainText && (React.createElement(Box, { flexDirection: "column", borderStyle: "single", borderColor: COLOR_ACCENT, paddingX: 1, marginTop: 1 },
597
- React.createElement(Text, { color: COLOR_TOOL_OUTPUT }, mainText)))));
603
+ React.createElement(Box, { flexDirection: "column", marginTop: 1 },
604
+ React.createElement(ToolSection, { variant: "callout", title: "Mentor Response", tone: "accentAlt" },
605
+ React.createElement(Text, { color: theme.toolOutput }, output)))));
598
606
  }
599
- }
600
- if (toolName === 'run_subagent_async' || isBackgroundSubagentLaunch) {
601
- let runId;
602
- try {
603
- const parsed = JSON.parse(output);
604
- runId = parsed?.runId;
607
+ if (toolName === 'ask_user') {
608
+ const options = toolArgs?.options;
609
+ return (React.createElement(Box, { flexDirection: "column" },
610
+ renderStandardHeader(),
611
+ options && Array.isArray(options) && options.length > 0 && (React.createElement(Box, { flexDirection: "column", marginY: 0.5 },
612
+ React.createElement(ToolSection, { variant: "indent" },
613
+ React.createElement(Box, null,
614
+ React.createElement(Text, { color: theme.textSubtle }, "Options: "),
615
+ options.map((opt, idx) => (React.createElement(Text, { key: idx, color: idx === 0 ? theme.textMuted : theme.text },
616
+ idx > 0 ? ', ' : '',
617
+ "[",
618
+ opt,
619
+ "]",
620
+ idx === 0 ? ' (Recommended)' : ''))))))),
621
+ React.createElement(Box, { flexDirection: "column", marginTop: 0.5 },
622
+ React.createElement(ToolSection, { variant: "indent" },
623
+ React.createElement(Box, null,
624
+ React.createElement(Text, { color: theme.textSubtle }, "Response: "),
625
+ React.createElement(Text, { color: theme.textMuted, bold: true }, output || 'No response yet'))))));
605
626
  }
606
- catch {
607
- // Fall back to treating the whole output as the runId.
608
- runId = output;
627
+ if (toolName === 'read_code_outline') {
628
+ const parsed = parseCodeOutlineOutput(output);
629
+ if (parsed) {
630
+ const { filePath: _filePath, lang: _lang, imports, exports, decls } = parsed;
631
+ return (React.createElement(Box, { flexDirection: "column" },
632
+ React.createElement(Box, { marginBottom: 1 }, renderStandardHeader()),
633
+ imports && imports.length > 0 && (React.createElement(Box, { flexDirection: "column", marginBottom: 1 },
634
+ React.createElement(ToolSection, { variant: "indent" },
635
+ React.createElement(Text, { color: theme.warning, bold: true }, "Imports:"),
636
+ imports.map((imp, idx) => (React.createElement(Text, { key: idx, color: theme.toolOutput },
637
+ ' ',
638
+ "\u2022 ",
639
+ imp)))))),
640
+ exports && exports.length > 0 && (React.createElement(Box, { flexDirection: "column", marginBottom: 1 },
641
+ React.createElement(ToolSection, { variant: "indent" },
642
+ React.createElement(Text, { color: theme.textMuted, bold: true }, "Exports:"),
643
+ exports.map((exp, idx) => (React.createElement(Text, { key: idx, color: theme.toolOutput },
644
+ ' ',
645
+ "\u2022 ",
646
+ exp)))))),
647
+ decls && decls.length > 0 && (React.createElement(ToolSection, { variant: "indent" },
648
+ React.createElement(Text, { color: theme.accent, bold: true }, "Declarations:"),
649
+ decls.map((decl, idx) => (React.createElement(Text, { key: idx, color: theme.toolOutput },
650
+ ' ',
651
+ "\u2022 ",
652
+ decl)))))));
653
+ }
654
+ }
655
+ if (toolName === 'code_context_search') {
656
+ const result = CodeContextSearchRenderer({ output, renderStandardHeader });
657
+ if (result)
658
+ return result;
659
+ }
660
+ if (toolName && toolName.startsWith('memory_')) {
661
+ const result = MemoryRenderer({
662
+ output,
663
+ toolName,
664
+ query: typeof toolArgs?.query === 'string' ? toolArgs.query : undefined,
665
+ renderStandardHeader,
666
+ });
667
+ if (result)
668
+ return result;
609
669
  }
610
- return (React.createElement(Box, { flexDirection: "column" },
611
- renderStandardHeader(),
612
- React.createElement(Box, { paddingLeft: 2, marginTop: 0.5 },
613
- React.createElement(Text, { color: COLOR_TEXT_SUBTLE }, "Run ID: "),
614
- React.createElement(Text, { color: COLOR_TEXT_MUTED }, runId || output))));
615
- }
616
- if (toolName === 'web_search') {
617
- const result = WebSearchRenderer({ output, renderStandardHeader });
618
- if (result)
619
- return result;
620
- }
621
- if (toolName === 'web_fetch') {
622
- const result = WebFetchRenderer({ output, renderStandardHeader });
623
- if (result)
624
- return result;
625
- }
626
- if (toolName === 'ask_mentor') {
627
- return (React.createElement(Box, { flexDirection: "column" },
628
- renderStandardHeader(),
629
- React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: COLOR_ACCENT_ALT, paddingX: 1, marginTop: 1 },
630
- React.createElement(Text, { color: COLOR_ACCENT_ALT, bold: true }, "Mentor Response"),
631
- React.createElement(Text, { color: COLOR_TOOL_OUTPUT }, output))));
632
670
  }
633
- if (toolName === 'ask_user') {
634
- const options = toolArgs?.options;
671
+ // Special handling for approval-rejected shell commands: show the denial message
672
+ // with a clear [DENIED] label so the user knows what was attempted and why.
673
+ if (isApprovalRejection) {
635
674
  return (React.createElement(Box, { flexDirection: "column" },
636
675
  renderStandardHeader(),
637
- options && Array.isArray(options) && options.length > 0 && (React.createElement(Box, { paddingLeft: 2, marginY: 0.5 },
638
- React.createElement(Text, { color: COLOR_TEXT_SUBTLE }, "Options: "),
639
- options.map((opt, idx) => (React.createElement(Text, { key: idx, color: idx === 0 ? COLOR_TEXT_MUTED : COLOR_TEXT },
640
- idx > 0 ? ', ' : '',
641
- "[",
642
- opt,
643
- "]",
644
- idx === 0 ? ' (Recommended)' : ''))))),
645
- React.createElement(Box, { paddingLeft: 2, marginTop: 0.5 },
646
- React.createElement(Text, { color: COLOR_TEXT_SUBTLE }, "Response: "),
647
- React.createElement(Text, { color: COLOR_TEXT_MUTED, bold: true }, output || 'No response yet'))));
648
- }
649
- if (toolName === 'read_code_outline') {
650
- const parsed = parseCodeOutlineOutput(output);
651
- if (parsed) {
652
- const { filePath: _filePath, lang: _lang, imports, exports, decls } = parsed;
653
- return (React.createElement(Box, { flexDirection: "column" },
654
- React.createElement(Box, { marginBottom: 1 }, renderStandardHeader()),
655
- imports && imports.length > 0 && (React.createElement(Box, { flexDirection: "column", marginBottom: 1, paddingLeft: 2 },
656
- React.createElement(Text, { color: COLOR_WARNING, bold: true }, "Imports:"),
657
- imports.map((imp, idx) => (React.createElement(Text, { key: idx, color: COLOR_TOOL_OUTPUT },
658
- ' ',
659
- "\u2022 ",
660
- imp))))),
661
- exports && exports.length > 0 && (React.createElement(Box, { flexDirection: "column", marginBottom: 1, paddingLeft: 2 },
662
- React.createElement(Text, { color: COLOR_TEXT_MUTED, bold: true }, "Exports:"),
663
- exports.map((exp, idx) => (React.createElement(Text, { key: idx, color: COLOR_TOOL_OUTPUT },
664
- ' ',
665
- "\u2022 ",
666
- exp))))),
667
- decls && decls.length > 0 && (React.createElement(Box, { flexDirection: "column", paddingLeft: 2 },
668
- React.createElement(Text, { color: COLOR_ACCENT, bold: true }, "Declarations:"),
669
- decls.map((decl, idx) => (React.createElement(Text, { key: idx, color: COLOR_TOOL_OUTPUT },
670
- ' ',
671
- "\u2022 ",
672
- decl)))))));
673
- }
674
- }
675
- if (toolName === 'code_context_search') {
676
- const result = CodeContextSearchRenderer({ output, renderStandardHeader });
677
- if (result)
678
- return result;
679
- }
680
- if (toolName && toolName.startsWith('memory_')) {
681
- const result = MemoryRenderer({
682
- output,
683
- toolName,
684
- query: typeof toolArgs?.query === 'string' ? toolArgs.query : undefined,
685
- renderStandardHeader,
686
- });
687
- if (result)
688
- return result;
676
+ React.createElement(Text, { color: theme.danger },
677
+ "\u2192 DENIED: ",
678
+ denialReason)));
689
679
  }
690
- }
691
- // Special handling for approval-rejected shell commands: show the denial message
692
- // with a clear [DENIED] label so the user knows what was attempted and why.
693
- if (isApprovalRejection) {
694
680
  return (React.createElement(Box, { flexDirection: "column" },
695
681
  renderStandardHeader(),
696
- React.createElement(Text, { color: COLOR_DANGER },
697
- "\u2192 DENIED: ",
698
- denialReason)));
699
- }
700
- return (React.createElement(Box, { flexDirection: "column" },
701
- renderStandardHeader(),
702
- actionableErrorSummary,
703
- failureReason && React.createElement(Text, { color: COLOR_DANGER },
704
- "Error: ",
705
- failureReason),
706
- React.createElement(Text, { color: success === false ? COLOR_DANGER : COLOR_TOOL_OUTPUT }, displayed),
707
- autoApprovalLabel));
682
+ actionableErrorSummary,
683
+ failureReason && React.createElement(Text, { color: theme.danger },
684
+ "Error: ",
685
+ failureReason),
686
+ React.createElement(Text, { color: success === false ? theme.danger : theme.toolOutput }, displayed),
687
+ autoApprovalLabel));
688
+ };
689
+ const content = renderContent();
690
+ // A call inside a subagent's own feed is dense by design and is never framed.
691
+ return isSubagent ? (content) : (React.createElement(ToolFrame, { status: statusKind, display: displayMode, toolName: toolName }, content));
708
692
  };
709
693
  export default React.memo(CommandMessage);
710
694
  //# sourceMappingURL=CommandMessage.js.map