@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
@@ -1,6 +1,7 @@
1
1
  import path from 'node:path';
2
+ import fs from 'node:fs';
2
3
  import { ExecutionContext } from '../execution-context.js';
3
- import { listGitWorktrees } from '../workspace/worktree-inventory.js';
4
+ import { listGitWorktrees, listGitWorktreesSync, } from '../workspace/worktree-inventory.js';
4
5
  import { resolveWorkerWorktree } from '../workspace/worktree-transition.js';
5
6
  function describeAvailable(worktrees) {
6
7
  if (worktrees.length === 0) {
@@ -37,11 +38,11 @@ function formatResolveFailure(name, outcome) {
37
38
  * parent session or publishes the process-wide active workspace.
38
39
  */
39
40
  export async function pinWorkerWorktree(params) {
40
- const { name, role, homeRoot, isRemote, listWorktrees = listGitWorktrees } = params;
41
- if (role !== 'worker') {
41
+ const { name, role, homeRoot, isRemote, listWorktrees = listGitWorktrees, authorizedPath } = params;
42
+ if (role !== 'worker' && role !== 'agent') {
42
43
  return {
43
44
  ok: false,
44
- error: `worktree is only supported for role "worker" (received "${role}"). Omit worktree or use role "worker".`,
45
+ error: `worktree is only supported for role "worker" or a generic agent invocation (received "${role}"). Omit worktree or use a writable agent.`,
45
46
  };
46
47
  }
47
48
  if (isRemote) {
@@ -64,6 +65,23 @@ export async function pinWorkerWorktree(params) {
64
65
  if (outcome.kind !== 'resolved') {
65
66
  return { ok: false, error: formatResolveFailure(name, outcome) };
66
67
  }
68
+ let resolvedRealPath;
69
+ try {
70
+ resolvedRealPath = fs.realpathSync(outcome.worktree.path);
71
+ }
72
+ catch {
73
+ resolvedRealPath = path.resolve(outcome.worktree.path);
74
+ }
75
+ if (authorizedPath !== undefined) {
76
+ // The snapshot already recorded the physical path. Re-resolving it here
77
+ // would bless a symlink swapped into that same name after authorization.
78
+ if (resolvedRealPath !== authorizedPath) {
79
+ return {
80
+ ok: false,
81
+ error: `Worktree "${name}" resolved to ${outcome.worktree.path}, which does not match authorized path ${authorizedPath}.`,
82
+ };
83
+ }
84
+ }
67
85
  return {
68
86
  ok: true,
69
87
  executionContext: ExecutionContext.pin(outcome.worktree.path),
@@ -71,4 +89,110 @@ export async function pinWorkerWorktree(params) {
71
89
  worktree: outcome.worktree,
72
90
  };
73
91
  }
92
+ function createAuthorizedWorktreeScope(names, paths) {
93
+ const scope = [...names];
94
+ Object.defineProperty(scope, 'authorizedPaths', {
95
+ value: Object.freeze({ ...paths }),
96
+ enumerable: false,
97
+ configurable: true,
98
+ });
99
+ return scope;
100
+ }
101
+ /**
102
+ * Derives a finite host-owned allowlist of authorized worktree names for registered
103
+ * in-repo worktrees. Fails closed (empty list) when remote, read-only, plan mode,
104
+ * outside a git repo, or when worktree listing fails.
105
+ */
106
+ export function deriveAuthorizedWorktreeScope(options) {
107
+ const { homeRoot, isRemote = false, readOnly = false, planMode = false } = options;
108
+ // Fail-closed for remote, read-only, or plan mode
109
+ if (isRemote || readOnly || planMode) {
110
+ return createAuthorizedWorktreeScope([], {});
111
+ }
112
+ let worktrees;
113
+ if (options.worktrees) {
114
+ worktrees = options.worktrees;
115
+ }
116
+ else {
117
+ try {
118
+ const listSync = options.listWorktreesSync ?? listGitWorktreesSync;
119
+ worktrees = listSync(homeRoot);
120
+ }
121
+ catch {
122
+ return createAuthorizedWorktreeScope([], {});
123
+ }
124
+ }
125
+ if (!worktrees || worktrees.length === 0) {
126
+ return createAuthorizedWorktreeScope([], {});
127
+ }
128
+ let physicalHomeRoot;
129
+ try {
130
+ physicalHomeRoot = fs.realpathSync(homeRoot);
131
+ }
132
+ catch {
133
+ physicalHomeRoot = path.resolve(homeRoot);
134
+ }
135
+ const mainWorktree = worktrees.find((w) => !w.bare) ?? worktrees[0];
136
+ let physicalRepoRoot;
137
+ if (mainWorktree?.path) {
138
+ try {
139
+ physicalRepoRoot = fs.realpathSync(mainWorktree.path);
140
+ }
141
+ catch {
142
+ physicalRepoRoot = path.resolve(mainWorktree.path);
143
+ }
144
+ }
145
+ else {
146
+ physicalRepoRoot = physicalHomeRoot;
147
+ }
148
+ const repoPrefix = physicalRepoRoot.endsWith(path.sep) ? physicalRepoRoot : `${physicalRepoRoot}${path.sep}`;
149
+ const allowedNames = new Set();
150
+ const authorizedPaths = {};
151
+ for (const worktree of worktrees) {
152
+ if (worktree.bare || worktree.prunable)
153
+ continue;
154
+ let candidatePath;
155
+ try {
156
+ candidatePath = fs.realpathSync(worktree.path);
157
+ }
158
+ catch {
159
+ candidatePath = path.resolve(worktree.path);
160
+ }
161
+ // Must be physically inside the repository root and not the parent session homeRoot
162
+ if (candidatePath === physicalHomeRoot || !candidatePath.startsWith(repoPrefix)) {
163
+ continue;
164
+ }
165
+ const namesToTest = [];
166
+ const base = path.basename(candidatePath);
167
+ if (base)
168
+ namesToTest.push(base);
169
+ if (worktree.branch)
170
+ namesToTest.push(worktree.branch);
171
+ for (const name of namesToTest) {
172
+ if (typeof name !== 'string' ||
173
+ name.length === 0 ||
174
+ name.includes('\0') ||
175
+ path.isAbsolute(name) ||
176
+ name.split(/[\\/]/).includes('..')) {
177
+ continue;
178
+ }
179
+ const outcome = resolveWorkerWorktree(name, physicalHomeRoot, worktrees);
180
+ if (outcome.kind !== 'resolved') {
181
+ continue;
182
+ }
183
+ let resolvedPath;
184
+ try {
185
+ resolvedPath = fs.realpathSync(outcome.worktree.path);
186
+ }
187
+ catch {
188
+ resolvedPath = path.resolve(outcome.worktree.path);
189
+ }
190
+ if (resolvedPath !== physicalHomeRoot && resolvedPath.startsWith(repoPrefix)) {
191
+ allowedNames.add(name);
192
+ authorizedPaths[name] = resolvedPath;
193
+ }
194
+ }
195
+ }
196
+ return createAuthorizedWorktreeScope([...allowedNames].sort(), authorizedPaths);
197
+ }
74
198
  //# sourceMappingURL=worker-worktree.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker-worktree.js","sourceRoot":"","sources":["../../../source/services/subagents/worker-worktree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker-worktree.js","sourceRoot":"","sources":["../../../source/services/subagents/worker-worktree.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,11 @@
1
1
  import { type GitWorktree } from './parse-worktree-list.js';
2
2
  export type ListWorktrees = (repoRoot: string) => Promise<GitWorktree[]>;
3
+ export type ListWorktreesSync = (repoRoot: string) => GitWorktree[];
4
+ /**
5
+ * Lists the repository's working trees synchronously with each path
6
+ * realpath-resolved. Fails closed (returns empty array) on error or non-git root.
7
+ */
8
+ export declare const listGitWorktreesSync: ListWorktreesSync;
3
9
  /**
4
10
  * Lists the repository's working trees with each path realpath-resolved, so
5
11
  * comparisons against the execution root are not defeated by symlinked
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-inventory.d.ts","sourceRoot":"","sources":["../../../source/services/workspace/worktree-inventory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAI/E,MAAM,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;AAEzE;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAkB9B,CAAC;AAEF,YAAY,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"worktree-inventory.d.ts","sourceRoot":"","sources":["../../../source/services/workspace/worktree-inventory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAI/E,MAAM,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;AACzE,MAAM,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,WAAW,EAAE,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,iBAqBlC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAkB9B,CAAC;AAEF,YAAY,EAAE,WAAW,EAAE,CAAC"}
@@ -1,8 +1,36 @@
1
- import { execFile } from 'child_process';
1
+ import { execFile, execFileSync } from 'child_process';
2
2
  import { promisify } from 'util';
3
3
  import fs from 'fs/promises';
4
+ import fsSync from 'fs';
4
5
  import { parseWorktreeList } from './parse-worktree-list.js';
5
6
  const execFileAsync = promisify(execFile);
7
+ /**
8
+ * Lists the repository's working trees synchronously with each path
9
+ * realpath-resolved. Fails closed (returns empty array) on error or non-git root.
10
+ */
11
+ export const listGitWorktreesSync = (repoRoot) => {
12
+ let stdout;
13
+ try {
14
+ stdout = execFileSync('git', ['worktree', 'list', '--porcelain'], {
15
+ cwd: repoRoot,
16
+ maxBuffer: 1024 * 1024,
17
+ encoding: 'utf8',
18
+ stdio: ['ignore', 'pipe', 'ignore'],
19
+ });
20
+ }
21
+ catch {
22
+ return [];
23
+ }
24
+ const worktrees = parseWorktreeList(stdout);
25
+ return worktrees.map((worktree) => {
26
+ try {
27
+ return { ...worktree, path: fsSync.realpathSync(worktree.path) };
28
+ }
29
+ catch {
30
+ return worktree;
31
+ }
32
+ });
33
+ };
6
34
  /**
7
35
  * Lists the repository's working trees with each path realpath-resolved, so
8
36
  * comparisons against the execution root are not defeated by symlinked
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-inventory.js","sourceRoot":"","sources":["../../../source/services/workspace/worktree-inventory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAoB,MAAM,0BAA0B,CAAC;AAE/E,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAI1C;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAkB,KAAK,EAAE,QAAQ,EAAE,EAAE;IAChE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE;QACjF,GAAG,EAAE,QAAQ;QACb,SAAS,EAAE,IAAI,GAAG,IAAI;KACvB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,OAAO,CAAC,GAAG,CAChB,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QAC/B,IAAI,CAAC;YACH,OAAO,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;YACtE,kDAAkD;YAClD,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"worktree-inventory.js","sourceRoot":"","sources":["../../../source/services/workspace/worktree-inventory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,MAAM,MAAM,IAAI,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAoB,MAAM,0BAA0B,CAAC;AAE/E,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAK1C;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAsB,CAAC,QAAQ,EAAE,EAAE;IAClE,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE;YAChE,GAAG,EAAE,QAAQ;YACb,SAAS,EAAE,IAAI,GAAG,IAAI;YACtB,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAChC,IAAI,CAAC;YACH,OAAO,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAkB,KAAK,EAAE,QAAQ,EAAE,EAAE;IAChE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE;QACjF,GAAG,EAAE,QAAQ;QACb,SAAS,EAAE,IAAI,GAAG,IAAI;KACvB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,OAAO,CAAC,GAAG,CAChB,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QAC/B,IAAI,CAAC;YACH,OAAO,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;YACtE,kDAAkD;YAClD,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { type FC, type ReactNode } from 'react';
2
+ import type { ISettingsService } from '../services/service-interfaces.js';
3
+ import type { Skin } from './types.js';
4
+ export declare const useSkin: () => Skin;
5
+ export declare const SkinProvider: FC<{
6
+ skin: Skin;
7
+ children?: ReactNode;
8
+ }>;
9
+ /**
10
+ * Provides the skin named by `ui.skin`, and re-renders when it changes.
11
+ * Lines already committed to the terminal's scrollback keep the layout they were
12
+ * printed with, exactly as they keep their colours.
13
+ */
14
+ export declare const SettingsSkinProvider: FC<{
15
+ settingsService: ISettingsService;
16
+ children?: ReactNode;
17
+ }>;
18
+ //# sourceMappingURL=SkinContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkinContext.d.ts","sourceRoot":"","sources":["../../source/skins/SkinContext.tsx"],"names":[],"mappings":"AAAA,OAAc,EAA6B,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAClF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAK1E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AASvC,eAAO,MAAM,OAAO,QAAO,IAA+B,CAAC;AAE3D,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,CAEjE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC;IAAE,eAAe,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,CAMhG,CAAC"}
@@ -0,0 +1,23 @@
1
+ import React, { createContext, useContext } from 'react';
2
+ import { useSetting } from '../hooks/use-setting.js';
3
+ import { classicSkin } from './classic/index.js';
4
+ import { DEFAULT_SKIN_NAME } from './names.js';
5
+ import { getSkin } from './registry.js';
6
+ /**
7
+ * The default is the classic skin, not `undefined`: components rendered with no
8
+ * provider (the existing unit tests, one-off Ink roots) look exactly as they
9
+ * always have, and `useSkin()` can never return nothing.
10
+ */
11
+ const SkinContext = createContext(classicSkin);
12
+ export const useSkin = () => useContext(SkinContext);
13
+ export const SkinProvider = ({ skin, children }) => (React.createElement(SkinContext.Provider, { value: skin }, children));
14
+ /**
15
+ * Provides the skin named by `ui.skin`, and re-renders when it changes.
16
+ * Lines already committed to the terminal's scrollback keep the layout they were
17
+ * printed with, exactly as they keep their colours.
18
+ */
19
+ export const SettingsSkinProvider = ({ settingsService, children, }) => {
20
+ const name = useSetting(settingsService, 'ui.skin') ?? DEFAULT_SKIN_NAME;
21
+ return React.createElement(SkinProvider, { skin: getSkin(name) }, children);
22
+ };
23
+ //# sourceMappingURL=SkinContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkinContext.js","sourceRoot":"","sources":["../../source/skins/SkinContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAA2B,MAAM,OAAO,CAAC;AAElF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC;;;;GAIG;AACH,MAAM,WAAW,GAAG,aAAa,CAAO,WAAW,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,OAAO,GAAG,GAAS,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAE3D,MAAM,CAAC,MAAM,YAAY,GAA6C,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAC5F,oBAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,IAAG,QAAQ,CAAwB,CACrE,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAoE,CAAC,EACpG,eAAe,EACf,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,IAAI,GAAG,UAAU,CAAC,eAAe,EAAE,SAAS,CAAC,IAAI,iBAAiB,CAAC;IACzE,OAAO,oBAAC,YAAY,IAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAG,QAAQ,CAAgB,CAAC;AACtE,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type FC } from 'react';
2
+ import type { ShellActivityProps, TaskPanelProps } from '../types.js';
3
+ /** `❯ command` on a quiet surface, like the input it echoes. */
4
+ export declare const CardsShellActivity: FC<ShellActivityProps>;
5
+ /** Border and padding either side of a card. */
6
+ export declare const CARDS_TASK_PANEL_GUTTER = 4;
7
+ export declare const CardsTaskPanel: FC<TaskPanelProps>;
8
+ //# sourceMappingURL=activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/activity.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGtE,gEAAgE;AAChE,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,kBAAkB,CAgBrD,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,cAAc,CAgB7C,CAAC"}
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ import { useTheme } from '../../components/theme.js';
4
+ import { Card } from './card.js';
5
+ /** `❯ command` on a quiet surface, like the input it echoes. */
6
+ export const CardsShellActivity = ({ command }) => {
7
+ const theme = useTheme();
8
+ return (React.createElement(Box, null,
9
+ React.createElement(Box, { flexShrink: 0, marginRight: 1 },
10
+ React.createElement(Text, { color: theme.danger, bold: true }, "!")),
11
+ React.createElement(Box, { flexShrink: 1 },
12
+ React.createElement(Text, { color: theme.textSubtle },
13
+ "running ",
14
+ React.createElement(Text, { bold: true }, command)))));
15
+ };
16
+ /** Border and padding either side of a card. */
17
+ export const CARDS_TASK_PANEL_GUTTER = 4;
18
+ export const CardsTaskPanel = ({ header, children }) => {
19
+ const theme = useTheme();
20
+ return (React.createElement(Box, { marginBottom: 1, flexDirection: "column" },
21
+ React.createElement(Card, { color: theme.accentAlt, title: React.createElement(Text, { color: theme.accentAlt, bold: true }, header) }, children)));
22
+ };
23
+ //# sourceMappingURL=activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.js","sourceRoot":"","sources":["../../../source/skins/cards/activity.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,gEAAgE;AAChE,MAAM,CAAC,MAAM,kBAAkB,GAA2B,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IACxE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO,CACL,oBAAC,GAAG;QACF,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC;YAChC,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,cAExB,CACH;QACN,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC;YAChB,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU;;gBACnB,oBAAC,IAAI,IAAC,IAAI,UAAE,OAAO,CAAQ,CAC9B,CACH,CACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,gDAAgD;AAChD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,cAAc,GAAuB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;IACzE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO,CACL,oBAAC,GAAG,IAAC,YAAY,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ;QAC1C,oBAAC,IAAI,IACH,KAAK,EAAE,KAAK,CAAC,SAAS,EACtB,KAAK,EACH,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,UAC/B,MAAM,CACF,IAGR,QAAQ,CACJ,CACH,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { type FC } from 'react';
2
+ import type { ApprovalChoicesProps, ApprovalFrameProps } from '../types.js';
3
+ /**
4
+ * A titled box in the warning colour. The riskiest class changes shape (a double
5
+ * border) and gains a `▲`, so it is recognisable before any word is read and with no
6
+ * colour at all; the ordinary class keeps the rounded shape of every other card.
7
+ */
8
+ export declare const CardsApprovalFrame: FC<ApprovalFrameProps>;
9
+ /**
10
+ * The question, then the options as a row of chips with the selected option's
11
+ * description under them. When the row would not fit, or the terminal is narrow, the
12
+ * same chips stack one per line instead of overflowing.
13
+ */
14
+ export declare const CardsApprovalChoices: FC<ApprovalChoicesProps>;
15
+ //# sourceMappingURL=approval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/approval.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAsB,MAAM,aAAa,CAAC;AAYhG;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,kBAAkB,CAmBrD,CAAC;AA4BF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,oBAAoB,CAwCzD,CAAC"}
@@ -0,0 +1,64 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ import { GLYPH_SELECTED, GLYPH_WARNING, useTheme } from '../../components/theme.js';
4
+ import { useTerminalColumns } from '../../hooks/use-terminal-columns.js';
5
+ import { Card } from './card.js';
6
+ import { useMeasuredWidth } from './measure.js';
7
+ import { cells } from './width.js';
8
+ /** Border and padding on both sides of the approval card. */
9
+ const CARD_CHROME = 4;
10
+ /** Below this terminal width the options always stack, whatever their length. */
11
+ const STACK_BELOW_COLUMNS = 60;
12
+ /** Columns a chip spends outside its label: a space either side, the marker slot, and `N `. */
13
+ const CHIP_CHROME = 2 + 2 + 2;
14
+ /**
15
+ * A titled box in the warning colour. The riskiest class changes shape (a double
16
+ * border) and gains a `▲`, so it is recognisable before any word is read and with no
17
+ * colour at all; the ordinary class keeps the rounded shape of every other card.
18
+ */
19
+ export const CardsApprovalFrame = ({ tone, header, subheader, children }) => {
20
+ const theme = useTheme();
21
+ const danger = tone === 'danger';
22
+ const color = danger ? theme.danger : theme.warning;
23
+ return (React.createElement(Card, { color: color, shape: danger ? 'double' : 'round', title: React.createElement(Text, { color: color, bold: true, wrap: "truncate-end" },
24
+ danger ? `${GLYPH_WARNING} ` : '',
25
+ "Approval needed") },
26
+ React.createElement(Text, { bold: true }, header),
27
+ subheader,
28
+ children));
29
+ };
30
+ /**
31
+ * One option as a button. The selected one is filled (reverse video in the option's
32
+ * own tone, so its text is always the terminal's background colour on that tone, which
33
+ * is readable on any palette) and carries a `❯`; the others sit on a quiet surface. The
34
+ * marker slot is reserved on every chip so selecting never shifts the row.
35
+ */
36
+ const Chip = ({ index, option, selected }) => {
37
+ const theme = useTheme();
38
+ if (selected) {
39
+ return (React.createElement(Text, { inverse: true, bold: true, color: theme[option.tone] }, ` ${GLYPH_SELECTED} ${index + 1} ${option.label} `));
40
+ }
41
+ return (React.createElement(Text, { backgroundColor: theme.codeBackground, color: theme.text },
42
+ ' ',
43
+ React.createElement(Text, { color: theme[option.tone], bold: true }, index + 1),
44
+ ` ${option.label} `));
45
+ };
46
+ /**
47
+ * The question, then the options as a row of chips with the selected option's
48
+ * description under them. When the row would not fit, or the terminal is narrow, the
49
+ * same chips stack one per line instead of overflowing.
50
+ */
51
+ export const CardsApprovalChoices = ({ question, options, selectedIndex, layout, description, }) => {
52
+ const theme = useTheme();
53
+ const terminalColumns = useTerminalColumns();
54
+ // The room the chips actually have is the card's inner width, which is measured.
55
+ const [measureRef, innerWidth] = useMeasuredWidth(terminalColumns - CARD_CHROME, terminalColumns);
56
+ const rowWidth = options.reduce((total, option, index) => total + CHIP_CHROME + String(index + 1).length - 1 + cells(option.label), 0) + Math.max(0, options.length - 1);
57
+ const horizontal = innerWidth + CARD_CHROME >= STACK_BELOW_COLUMNS && rowWidth <= innerWidth;
58
+ const chips = options.map((option, index) => (React.createElement(Chip, { key: option.label, index: index, option: option, selected: index === selectedIndex })));
59
+ return (React.createElement(Box, { flexDirection: "column", ref: measureRef },
60
+ question !== undefined && React.createElement(Text, { bold: true }, question),
61
+ horizontal ? (React.createElement(Box, { columnGap: 1, flexWrap: "wrap", marginTop: question === undefined ? 0 : 1 }, chips)) : (React.createElement(Box, { flexDirection: "column", marginTop: question === undefined ? 0 : 1 }, chips.map((chip, index) => (React.createElement(Box, { key: options[index].label }, chip))))),
62
+ layout === 'two-pane' && description?.text && React.createElement(Text, { color: theme.textSubtle }, description.text)));
63
+ };
64
+ //# sourceMappingURL=approval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../source/skins/cards/approval.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type FC } from 'react';
2
+ import type { MenuFrameProps, QuestionPromptProps, SubagentFeedProps, ToolSectionProps } from '../types.js';
3
+ /** The question is the card's content; options are rows inside it, the selected one in its tone and bold. */
4
+ export declare const CardsQuestionPrompt: FC<QuestionPromptProps>;
5
+ /**
6
+ * One card per run. The task and outcome are content that must not be clipped, so
7
+ * they are the first line of the body; the border title only names the kind of card.
8
+ */
9
+ export declare const CardsSubagentFeed: FC<SubagentFeedProps>;
10
+ /** Content panels and callouts are cards; row runs are indented, so a list of matches does not become a stack of boxes. */
11
+ export declare const CardsToolSection: FC<ToolSectionProps>;
12
+ /** The same card as everything else, titled with the menu's name; hints sit under it. */
13
+ export declare const CardsMenuFrame: FC<MenuFrameProps>;
14
+ //# sourceMappingURL=body.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"body.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/body.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG5G,6GAA6G;AAC7G,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,mBAAmB,CAuDvD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,iBAAiB,CAmBnD,CAAC;AAEF,2HAA2H;AAC3H,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,gBAAgB,CA0BjD,CAAC;AAEF,yFAAyF;AACzF,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,cAAc,CA4B7C,CAAC"}
@@ -0,0 +1,65 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ import { GLYPH_FAVORITE, GLYPH_SELECTED, useTheme } from '../../components/theme.js';
4
+ import { Card } from './card.js';
5
+ /** The question is the card's content; options are rows inside it, the selected one in its tone and bold. */
6
+ export const CardsQuestionPrompt = ({ progress, question, notice, options, description, footer, }) => {
7
+ const theme = useTheme();
8
+ return (React.createElement(Card, { color: theme.warning, title: React.createElement(Text, { color: theme.warning, bold: true, wrap: "truncate-end" }, progress ?? 'Question') },
9
+ React.createElement(Text, { bold: true }, question),
10
+ notice !== undefined && React.createElement(Text, { color: theme.accent },
11
+ "\u276F ",
12
+ notice),
13
+ React.createElement(Box, { flexDirection: "column", marginTop: 1 }, options.map((option, index) => {
14
+ const checkbox = option.checked === undefined ? '' : option.checked ? '[x] ' : '[ ] ';
15
+ return (React.createElement(Box, { key: option.label },
16
+ React.createElement(Box, { width: 2, flexShrink: 0 },
17
+ React.createElement(Text, { color: theme.accent, bold: true }, option.selected ? GLYPH_SELECTED : ' ')),
18
+ React.createElement(Box, { width: 2, flexShrink: 0 },
19
+ React.createElement(Text, { color: theme.textSubtle }, option.recommended ? GLYPH_FAVORITE : ' ')),
20
+ React.createElement(Box, { flexShrink: 1 },
21
+ React.createElement(Text, { color: option.selected && option.tone ? theme[option.tone] : undefined, bold: option.selected, inverse: option.selected && option.tone === undefined },
22
+ index + 1,
23
+ ". ",
24
+ checkbox,
25
+ option.label))));
26
+ })),
27
+ description.text && (React.createElement(Box, { marginTop: 1 },
28
+ React.createElement(Text, { color: theme.textSubtle }, description.text))),
29
+ React.createElement(Box, { marginTop: 1 }, footer)));
30
+ };
31
+ /**
32
+ * One card per run. The task and outcome are content that must not be clipped, so
33
+ * they are the first line of the body; the border title only names the kind of card.
34
+ */
35
+ export const CardsSubagentFeed = ({ title, statusSuffix, tone, summary, children }) => {
36
+ const theme = useTheme();
37
+ return (React.createElement(Card, { color: theme[tone], shape: tone === 'danger' ? 'bold' : 'round', title: React.createElement(Text, { color: theme[tone], bold: true }, "subagent") },
38
+ React.createElement(Text, { color: theme[tone] },
39
+ title,
40
+ statusSuffix),
41
+ summary !== undefined ? React.createElement(Text, { color: theme.textSubtle }, summary) : children));
42
+ };
43
+ /** Content panels and callouts are cards; row runs are indented, so a list of matches does not become a stack of boxes. */
44
+ export const CardsToolSection = ({ variant, title, tone = 'warning', children }) => {
45
+ const theme = useTheme();
46
+ if (variant === 'indent') {
47
+ return (React.createElement(Box, { flexDirection: "column", paddingLeft: 2 }, children));
48
+ }
49
+ if (variant === 'panel') {
50
+ return React.createElement(Card, { color: theme.textSubtle }, children);
51
+ }
52
+ return (React.createElement(Card, { color: theme[tone], title: title === undefined ? undefined : (React.createElement(Text, { color: theme[tone], bold: true, wrap: "truncate-end" }, title)) }, children));
53
+ };
54
+ /** The same card as everything else, titled with the menu's name; hints sit under it. */
55
+ export const CardsMenuFrame = ({ title, borderColor, footer, footerPlacement, children }) => {
56
+ const theme = useTheme();
57
+ const color = borderColor ?? theme.borderActive;
58
+ const footerNode = footer ? (typeof footer === 'string' ? (React.createElement(Text, { color: theme.textSubtle }, footer)) : (footer)) : null;
59
+ return (React.createElement(Box, { flexDirection: "column", width: "100%" },
60
+ React.createElement(Card, { color: color, title: title ? (React.createElement(Text, { color: theme.textMuted, bold: true, wrap: "truncate-end" }, title)) : undefined },
61
+ children,
62
+ footerPlacement === 'inside' && footerNode && React.createElement(Box, { marginTop: 1 }, footerNode)),
63
+ footerPlacement === 'outside' && footerNode));
64
+ };
65
+ //# sourceMappingURL=body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"body.js","sourceRoot":"","sources":["../../../source/skins/cards/body.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { type FC, type ReactNode } from 'react';
2
+ import type { Color } from '../../theme/palettes.js';
3
+ /**
4
+ * Border shapes a card can take. Shape is meaning, not decoration: `double` marks
5
+ * the riskiest approvals and `bold` marks a failed call, so both stay recognisable
6
+ * in a terminal with no colour at all.
7
+ */
8
+ export type CardShape = 'round' | 'double' | 'bold';
9
+ export interface CardProps {
10
+ color: Color;
11
+ shape?: CardShape;
12
+ /**
13
+ * Inline content set into the top border (`╭─ title ─────╮`). Ink has no border
14
+ * titles, so the top edge is drawn by hand while the other three sides stay Ink's
15
+ * own border, which sizes itself. Omit it for a plain bordered box.
16
+ */
17
+ title?: ReactNode;
18
+ /** Shrink to the content instead of spanning the row. */
19
+ fit?: boolean;
20
+ children: ReactNode;
21
+ }
22
+ /**
23
+ * A bordered box with one column of padding either side, so text inside starts
24
+ * three columns in. The top rule is a flexible box rather than a fixed string,
25
+ * which is what keeps the right corner on the right edge at every width.
26
+ */
27
+ export declare const Card: FC<CardProps>;
28
+ //# sourceMappingURL=card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/card.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAWpD,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,yDAAyD;IACzD,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;GAIG;AACH,eAAO,MAAM,IAAI,EAAE,EAAE,CAAC,SAAS,CAgD9B,CAAC"}
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ const TOP_CORNERS = {
4
+ round: { left: '╭', right: '╮', rule: '─' },
5
+ double: { left: '╔', right: '╗', rule: '═' },
6
+ bold: { left: '┏', right: '┓', rule: '━' },
7
+ };
8
+ /** More rule glyphs than any terminal is wide; the rule box clips them to the room actually left. */
9
+ const RULE_OVERSHOOT = 400;
10
+ /**
11
+ * A bordered box with one column of padding either side, so text inside starts
12
+ * three columns in. The top rule is a flexible box rather than a fixed string,
13
+ * which is what keeps the right corner on the right edge at every width.
14
+ */
15
+ export const Card = ({ color, shape = 'round', title, fit = false, children }) => {
16
+ const body = (React.createElement(Box, { flexDirection: "column", borderStyle: shape, borderColor: color, borderTop: title === undefined, paddingX: 1, flexGrow: fit ? 0 : 1 }, children));
17
+ if (title === undefined) {
18
+ return (React.createElement(Box, { flexDirection: "column", alignSelf: fit ? 'flex-start' : undefined }, body));
19
+ }
20
+ const corners = TOP_CORNERS[shape];
21
+ return (React.createElement(Box, { flexDirection: "column", alignSelf: fit ? 'flex-start' : undefined },
22
+ React.createElement(Box, null,
23
+ React.createElement(Box, { flexShrink: 0 },
24
+ React.createElement(Text, { color: color },
25
+ corners.left,
26
+ corners.rule,
27
+ ' ')),
28
+ React.createElement(Box, { flexShrink: 1 }, title),
29
+ React.createElement(Box, { flexShrink: 0 },
30
+ React.createElement(Text, { color: color }, " ")),
31
+ React.createElement(Box, { flexGrow: 1, flexBasis: 0, minWidth: 1, height: 1, overflow: "hidden" },
32
+ React.createElement(Text, { color: color, wrap: "wrap" }, corners.rule.repeat(RULE_OVERSHOOT))),
33
+ React.createElement(Box, { flexShrink: 0 },
34
+ React.createElement(Text, { color: color }, corners.right))),
35
+ body));
36
+ };
37
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.js","sourceRoot":"","sources":["../../../source/skins/cards/card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkC,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAUhC,MAAM,WAAW,GAAqE;IACpF,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;IAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;IAC5C,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;CAC3C,CAAC;AAEF,qGAAqG;AACrG,MAAM,cAAc,GAAG,GAAG,CAAC;AAgB3B;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAkB,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC9F,MAAM,IAAI,GAAG,CACX,oBAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAE,KAAK,EAClB,WAAW,EAAE,KAAK,EAClB,SAAS,EAAE,KAAK,KAAK,SAAS,EAC9B,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAEpB,QAAQ,CACL,CACP,CAAC;IAEF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,IAClE,IAAI,CACD,CACP,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;QACnE,oBAAC,GAAG;YACF,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC;gBAChB,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK;oBACf,OAAO,CAAC,IAAI;oBACZ,OAAO,CAAC,IAAI;oBAAE,GAAG,CACb,CACH;YACN,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC,IAAG,KAAK,CAAO;YACjC,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC;gBAChB,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,QAAU,CACxB;YACN,oBAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAC,QAAQ;gBACvE,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAC,MAAM,IAC5B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAC/B,CACH;YACN,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC;gBAChB,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,IAAG,OAAO,CAAC,KAAK,CAAQ,CACtC,CACF;QACL,IAAI,CACD,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Skin } from '../types.js';
2
+ /**
3
+ * "Cards": the banner, each user turn, each standard-display tool call, the input and
4
+ * the approval are rounded boxes; answers stay bare text; status is a row of pills;
5
+ * approval options are button chips. Concise tool calls are deliberately not carded,
6
+ * so a long run of them stays a list.
7
+ */
8
+ export declare const cardsSkin: Skin;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAaxC;;;;;GAKG;AACH,eAAO,MAAM,SAAS,EAAE,IAyBvB,CAAC"}