@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
@@ -0,0 +1,95 @@
1
+ import type { ILoggingService, ISettingsService } from '../service-interfaces.js';
2
+ import type { ResolvedAgentDefinition } from './resolved-agent.js';
3
+ import type { ResolvedFilesystemScope, ResolvedNetworkScope } from './scope-resolver.js';
4
+ import type { AgentConfig, AgentLimits, AgentSpec, ResolvedAgentPermissions, RunErrorCode } from './types.js';
5
+ /**
6
+ * The host-owned authority snapshot needed to attenuate a script request.
7
+ * `tools` is the already-effective allowlist, not the parent's requested set.
8
+ * An omitted scope means unrestricted authority on that axis; an empty scope
9
+ * is an explicit denial.
10
+ */
11
+ export interface AgentPermissionBoundaryParent {
12
+ readonly tools: ReadonlyArray<string>;
13
+ readonly permissions: ResolvedAgentPermissions;
14
+ readonly filesystemScope?: ResolvedFilesystemScope;
15
+ readonly networkScope?: ResolvedNetworkScope;
16
+ readonly limits: AgentLimits;
17
+ readonly worktreeScope?: ReadonlyArray<string>;
18
+ readonly worktreePaths?: Readonly<Record<string, string>>;
19
+ }
20
+ /** Host-owned snapshot bound to a script-capable root. */
21
+ export interface AgentSpecAuthoritySnapshot {
22
+ readonly parent: AgentPermissionBoundaryParent;
23
+ readonly readOnly: boolean;
24
+ readonly planMode: boolean;
25
+ }
26
+ export interface RootAgentAuthoritySnapshotOptions {
27
+ /** Effective host tool names after profile and capability-toggle resolution. */
28
+ readonly effectiveTools: ReadonlyArray<string>;
29
+ readonly limits: AgentLimits;
30
+ /** A finite scope is host-owned; callers must not derive it from AgentSpec. */
31
+ readonly filesystemScope?: ResolvedFilesystemScope;
32
+ readonly networkScope?: ResolvedNetworkScope;
33
+ readonly worktreeScope?: ReadonlyArray<string>;
34
+ readonly worktreePaths?: Readonly<Record<string, string>>;
35
+ readonly readOnly?: boolean;
36
+ readonly planMode?: boolean;
37
+ }
38
+ /** Options which are host state, rather than data supplied by the script. */
39
+ export interface ResolveAgentSpecForChildOptions {
40
+ readonly settings: ISettingsService;
41
+ readonly logger: ILoggingService;
42
+ readonly parent: AgentPermissionBoundaryParent;
43
+ readonly readOnly?: boolean;
44
+ readonly planMode?: boolean;
45
+ /** Opaque worktree names the parent has explicitly authorized. */
46
+ readonly worktree?: unknown;
47
+ }
48
+ export type AgentSpecBoundaryErrorCode = RunErrorCode | 'invalid_agent_spec' | 'missing_parent_authority' | 'unsupported_worktree_scope';
49
+ export interface AgentSpecBoundaryError {
50
+ readonly code: AgentSpecBoundaryErrorCode;
51
+ readonly message: string;
52
+ readonly field?: string;
53
+ }
54
+ export type AgentSpecBoundaryResult = {
55
+ readonly ok: true;
56
+ readonly spec: AgentSpec;
57
+ readonly config: AgentConfig;
58
+ readonly definition: ResolvedAgentDefinition;
59
+ readonly worktree?: string;
60
+ readonly authorizedWorktreePath?: string;
61
+ } | {
62
+ readonly ok: false;
63
+ readonly errors: ReadonlyArray<AgentSpecBoundaryError>;
64
+ };
65
+ /**
66
+ * Adapt the existing resolved runtime definition into the authority snapshot
67
+ * consumed by the script boundary. This is deliberately an adapter: the
68
+ * interactive root currently does not expose a public effective-permissions
69
+ * object of its own.
70
+ */
71
+ export declare function parentAuthorityFromDefinition(definition: ResolvedAgentDefinition, options?: {
72
+ worktreeScope?: ReadonlyArray<string>;
73
+ worktreePaths?: Readonly<Record<string, string>>;
74
+ }): AgentPermissionBoundaryParent;
75
+ /**
76
+ * Build the only authority object a future script-launched AgentSpec may use.
77
+ *
78
+ * This adapter intentionally starts from the already-effective root tool
79
+ * surface. It ignores tools which AgentSpec cannot provision, never enables
80
+ * nested agents, and removes writes in read-only/plan mode before the snapshot
81
+ * is bound. A finite filesystem scope also removes shell: the existing child
82
+ * tool policy cannot safely combine arbitrary shell execution with path scopes.
83
+ */
84
+ export declare function createRootAgentAuthoritySnapshot(options: RootAgentAuthoritySnapshotOptions): AgentSpecAuthoritySnapshot;
85
+ /**
86
+ * Resolve and attenuate one untrusted, script-requested AgentSpec.
87
+ *
88
+ * The returned definition is safe to pass to the existing execution runner:
89
+ * all requested tools, scopes, coarse capabilities, and nested-agent depth
90
+ * are resolved through the existing AgentRuntime resolver against the host's
91
+ * effective parent authority. Any resolution error is a rejection, rather
92
+ * than a partially-authorized execution.
93
+ */
94
+ export declare function resolveAgentSpecForChild(rawSpec: unknown, options: ResolveAgentSpecForChildOptions): AgentSpecBoundaryResult;
95
+ //# sourceMappingURL=permission-boundary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-boundary.d.ts","sourceRoot":"","sources":["../../../source/services/agent-runtime/permission-boundary.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGlF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACzF,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EAEX,SAAS,EAET,wBAAwB,EACxB,YAAY,EACb,MAAM,YAAY,CAAC;AAiBpB;;;;;GAKG;AACH,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAC/C,QAAQ,CAAC,eAAe,CAAC,EAAE,uBAAuB,CAAC;IACnD,QAAQ,CAAC,YAAY,CAAC,EAAE,oBAAoB,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC3D;AAED,0DAA0D;AAC1D,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,6BAA6B,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,iCAAiC;IAChD,gFAAgF;IAChF,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,eAAe,CAAC,EAAE,uBAAuB,CAAC;IACnD,QAAQ,CAAC,YAAY,CAAC,EAAE,oBAAoB,CAAC;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1D,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,6EAA6E;AAC7E,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,6BAA6B,CAAC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,MAAM,0BAA0B,GAClC,YAAY,GACZ,oBAAoB,GACpB,0BAA0B,GAC1B,4BAA4B,CAAC;AAEjC,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,uBAAuB,GAC/B;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,uBAAuB,CAAC;IAC7C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CAC1C,GACD;IACE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;CACxD,CAAC;AAEN;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,uBAAuB,EACnC,OAAO,GAAE;IACP,aAAa,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,aAAa,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC7C,GACL,6BAA6B,CAgB/B;AAED;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,iCAAiC,GACzC,0BAA0B,CAuD5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,+BAA+B,GACvC,uBAAuB,CA2EzB"}
@@ -0,0 +1,538 @@
1
+ import path from 'node:path';
2
+ import { AGENT_SPEC_TOOL_NAMES, agentSpecToConfig } from './agent-spec.js';
3
+ import { resolveAgent } from './agent-resolver.js';
4
+ const AGENT_SPEC_FIELDS = new Set([
5
+ 'goal',
6
+ 'context',
7
+ 'tools',
8
+ 'permissions',
9
+ 'constraints',
10
+ 'doneWhen',
11
+ 'model',
12
+ 'budget',
13
+ ]);
14
+ const AGENT_SPEC_TOOL_SET = new Set(AGENT_SPEC_TOOL_NAMES);
15
+ const READ_TOOLS = new Set(['read_file', 'grep', 'glob', 'read_code_outline', 'code_context_search']);
16
+ const WRITE_TOOLS = new Set(['apply_patch', 'search_replace', 'create_file']);
17
+ const WEB_TOOLS = new Set(['web_search', 'web_fetch']);
18
+ /**
19
+ * Adapt the existing resolved runtime definition into the authority snapshot
20
+ * consumed by the script boundary. This is deliberately an adapter: the
21
+ * interactive root currently does not expose a public effective-permissions
22
+ * object of its own.
23
+ */
24
+ export function parentAuthorityFromDefinition(definition, options = {}) {
25
+ const worktreePaths = options.worktreePaths ?? options.worktreeScope?.authorizedPaths;
26
+ return {
27
+ tools: [...definition.tools],
28
+ permissions: { ...definition.permissions },
29
+ ...(definition.filesystemScope
30
+ ? {
31
+ filesystemScope: { read: [...definition.filesystemScope.read], write: [...definition.filesystemScope.write] },
32
+ }
33
+ : {}),
34
+ ...(definition.networkScope ? { networkScope: [...definition.networkScope] } : {}),
35
+ limits: { ...definition.limits },
36
+ ...(options.worktreeScope ? { worktreeScope: [...options.worktreeScope] } : {}),
37
+ ...(worktreePaths ? { worktreePaths: { ...worktreePaths } } : {}),
38
+ };
39
+ }
40
+ /**
41
+ * Build the only authority object a future script-launched AgentSpec may use.
42
+ *
43
+ * This adapter intentionally starts from the already-effective root tool
44
+ * surface. It ignores tools which AgentSpec cannot provision, never enables
45
+ * nested agents, and removes writes in read-only/plan mode before the snapshot
46
+ * is bound. A finite filesystem scope also removes shell: the existing child
47
+ * tool policy cannot safely combine arbitrary shell execution with path scopes.
48
+ */
49
+ export function createRootAgentAuthoritySnapshot(options) {
50
+ const readOnly = options.readOnly === true;
51
+ const planMode = options.planMode === true;
52
+ const finiteFilesystemScope = options.filesystemScope !== undefined;
53
+ const finiteNetworkScope = options.networkScope !== undefined;
54
+ let tools = options.effectiveTools.filter((tool) => AGENT_SPEC_TOOL_SET.has(tool));
55
+ if (readOnly || planMode)
56
+ tools = tools.filter((tool) => !WRITE_TOOLS.has(tool));
57
+ if (finiteFilesystemScope)
58
+ tools = tools.filter((tool) => tool !== 'shell');
59
+ if (finiteNetworkScope && !options.networkScope.includes('*')) {
60
+ // web_search has no target URL and web_fetch cannot prove redirect
61
+ // containment. The resolver will reject these promises; do not advertise
62
+ // them as effective child authority in the first place.
63
+ tools = tools.filter((tool) => !WEB_TOOLS.has(tool));
64
+ }
65
+ const canRead = tools.some((tool) => READ_TOOLS.has(tool)) && (!options.filesystemScope || options.filesystemScope.read.length > 0);
66
+ const canWrite = tools.some((tool) => WRITE_TOOLS.has(tool)) &&
67
+ (!options.filesystemScope || options.filesystemScope.write.length > 0);
68
+ const canRunShell = tools.includes('shell') && !finiteFilesystemScope;
69
+ const canSearchWeb = tools.some((tool) => WEB_TOOLS.has(tool)) && (!options.networkScope || options.networkScope.length > 0);
70
+ const worktreePaths = options.worktreePaths ?? options.worktreeScope?.authorizedPaths;
71
+ return {
72
+ parent: {
73
+ tools,
74
+ permissions: {
75
+ canRead,
76
+ canWrite,
77
+ canRunShell,
78
+ canSearchWeb,
79
+ // AgentSpec execution has no nested-agent provisioning adapter yet.
80
+ canUseNestedAgents: false,
81
+ },
82
+ ...(options.filesystemScope
83
+ ? {
84
+ filesystemScope: {
85
+ read: [...options.filesystemScope.read],
86
+ write: [...options.filesystemScope.write],
87
+ },
88
+ }
89
+ : {}),
90
+ ...(options.networkScope ? { networkScope: [...options.networkScope] } : {}),
91
+ limits: { ...options.limits },
92
+ ...(options.worktreeScope ? { worktreeScope: [...options.worktreeScope] } : {}),
93
+ ...(worktreePaths ? { worktreePaths: { ...worktreePaths } } : {}),
94
+ },
95
+ readOnly,
96
+ planMode,
97
+ };
98
+ }
99
+ /**
100
+ * Resolve and attenuate one untrusted, script-requested AgentSpec.
101
+ *
102
+ * The returned definition is safe to pass to the existing execution runner:
103
+ * all requested tools, scopes, coarse capabilities, and nested-agent depth
104
+ * are resolved through the existing AgentRuntime resolver against the host's
105
+ * effective parent authority. Any resolution error is a rejection, rather
106
+ * than a partially-authorized execution.
107
+ */
108
+ export function resolveAgentSpecForChild(rawSpec, options) {
109
+ const inputErrors = validateAgentSpec(rawSpec);
110
+ const parent = options?.parent;
111
+ const parentErrors = validateParentAuthority(parent);
112
+ const worktreeResult = resolveWorktree(options?.worktree, parent?.worktreeScope, parent?.worktreePaths);
113
+ const errors = [...inputErrors, ...parentErrors, ...worktreeResult.errors];
114
+ if (errors.length > 0)
115
+ return { ok: false, errors };
116
+ const spec = rawSpec;
117
+ const authority = parent;
118
+ const parentPermissions = toPublicParentPermissions(authority, {
119
+ readOnly: options.readOnly === true,
120
+ planMode: options.planMode === true,
121
+ });
122
+ const config = agentSpecToConfig(spec);
123
+ const definition = resolveAgent(config, {
124
+ settings: options.settings,
125
+ logger: options.logger,
126
+ parentPermissions,
127
+ parentLimits: authority.limits,
128
+ });
129
+ const resolutionErrors = definition.resolutionErrors.map((error) => {
130
+ const fieldMatch = /\(field: ([^)]+)\)$/.exec(error.message);
131
+ return {
132
+ code: normalizeErrorCode(error.code),
133
+ message: error.message,
134
+ ...(fieldMatch ? { field: fieldMatch[1] } : {}),
135
+ };
136
+ });
137
+ resolutionErrors.push(...validateResolvedScopeTools(definition));
138
+ if (authority.filesystemScope) {
139
+ for (const axis of ['read', 'write']) {
140
+ if (definition.filesystemScope?.[axis].some((pattern) => !authority.filesystemScope[axis].includes(pattern))) {
141
+ resolutionErrors.push({
142
+ code: 'unsupported_permission_scope',
143
+ field: `permissions.filesystem.${axis}`,
144
+ message: 'Child filesystem patterns must exactly match an authorized parent pattern.',
145
+ });
146
+ }
147
+ }
148
+ }
149
+ if (spec.permissions?.agents?.create === true) {
150
+ resolutionErrors.push({
151
+ code: 'unsupported_permission_scope',
152
+ field: 'permissions.agents.create',
153
+ message: 'Nested agent creation is not provisioned for AgentSpec executions.',
154
+ });
155
+ }
156
+ if (resolutionErrors.length > 0)
157
+ return { ok: false, errors: resolutionErrors };
158
+ // A scope can derive a coarse flag in the general resolver even when no
159
+ // matching tool was requested. At this boundary the effective tool list is
160
+ // authoritative, so an unpaired scope must not make the existing tool
161
+ // factory provision an extra capability.
162
+ const boundedDefinition = {
163
+ ...definition,
164
+ permissions: {
165
+ ...definition.permissions,
166
+ canRead: definition.tools.some((tool) => READ_TOOLS.has(tool)),
167
+ canWrite: definition.tools.some((tool) => WRITE_TOOLS.has(tool)),
168
+ canRunShell: definition.tools.includes('shell'),
169
+ canSearchWeb: definition.tools.some((tool) => WEB_TOOLS.has(tool)),
170
+ canUseNestedAgents: false,
171
+ },
172
+ };
173
+ return {
174
+ ok: true,
175
+ spec,
176
+ config,
177
+ definition: boundedDefinition,
178
+ ...(worktreeResult.worktree ? { worktree: worktreeResult.worktree } : {}),
179
+ ...(worktreeResult.authorizedPath ? { authorizedWorktreePath: worktreeResult.authorizedPath } : {}),
180
+ };
181
+ }
182
+ function normalizeErrorCode(code) {
183
+ const known = new Set([
184
+ 'unsupported_structured_output',
185
+ 'unsupported_attachments',
186
+ 'invalid_model_policy',
187
+ 'unknown_skill',
188
+ 'unknown_tool',
189
+ 'budget_exhausted',
190
+ 'permission_denied',
191
+ 'unsupported_permission_scope',
192
+ 'invalid_scope_pattern',
193
+ 'unsupported_limit',
194
+ 'limit_validation_error',
195
+ 'limit_exceeded',
196
+ 'scope_violation',
197
+ 'provider_error',
198
+ 'cancelled',
199
+ 'agent_error',
200
+ 'invalid_attachment',
201
+ 'invalid_schema',
202
+ 'invalid_output',
203
+ ]);
204
+ return known.has(code) ? code : 'invalid_agent_spec';
205
+ }
206
+ function record(value) {
207
+ return value !== null && typeof value === 'object' && !Array.isArray(value)
208
+ ? value
209
+ : undefined;
210
+ }
211
+ function unknownFields(value, allowed, field) {
212
+ return Object.keys(value)
213
+ .filter((key) => !allowed.has(key))
214
+ .map((key) => ({
215
+ code: 'invalid_agent_spec',
216
+ field: field ? `${field}.${key}` : key,
217
+ message: `Unsupported field "${field ? `${field}.` : ''}${key}" is rejected at the host boundary.`,
218
+ }));
219
+ }
220
+ function validateAgentSpec(raw) {
221
+ const spec = record(raw);
222
+ if (!spec)
223
+ return [{ code: 'invalid_agent_spec', message: 'AgentSpec must be a plain object.' }];
224
+ const errors = unknownFields(spec, AGENT_SPEC_FIELDS, '');
225
+ if (typeof spec.goal !== 'string' || spec.goal.trim().length === 0) {
226
+ errors.push({ code: 'invalid_agent_spec', field: 'goal', message: 'AgentSpec.goal must be a non-empty string.' });
227
+ }
228
+ if ('context' in spec && record(spec.context) === undefined) {
229
+ errors.push({ code: 'invalid_agent_spec', field: 'context', message: 'AgentSpec.context must be an object.' });
230
+ }
231
+ if ('tools' in spec)
232
+ errors.push(...validateToolList(spec.tools, 'tools'));
233
+ if ('constraints' in spec) {
234
+ if (!Array.isArray(spec.constraints) || spec.constraints.some((item) => typeof item !== 'string')) {
235
+ errors.push({
236
+ code: 'invalid_agent_spec',
237
+ field: 'constraints',
238
+ message: 'AgentSpec.constraints must be an array of strings.',
239
+ });
240
+ }
241
+ }
242
+ if ('doneWhen' in spec && typeof spec.doneWhen !== 'string') {
243
+ errors.push({ code: 'invalid_agent_spec', field: 'doneWhen', message: 'AgentSpec.doneWhen must be a string.' });
244
+ }
245
+ if ('model' in spec)
246
+ errors.push(...validateModel(spec.model));
247
+ if ('budget' in spec)
248
+ errors.push(...validateBudget(spec.budget));
249
+ if ('permissions' in spec)
250
+ errors.push(...validatePermissions(spec.permissions));
251
+ return errors;
252
+ }
253
+ function validateToolList(value, field) {
254
+ if (!Array.isArray(value))
255
+ return [{ code: 'invalid_agent_spec', field, message: `${field} must be an array.` }];
256
+ return value.flatMap((tool, index) => typeof tool !== 'string' || !AGENT_SPEC_TOOL_SET.has(tool)
257
+ ? [
258
+ {
259
+ code: 'unknown_tool',
260
+ field: `${field}.${index}`,
261
+ message: `Unsupported AgentSpec tool "${String(tool)}".`,
262
+ },
263
+ ]
264
+ : []);
265
+ }
266
+ function validateModel(value) {
267
+ if (value === 'efficient' || value === 'balanced' || value === 'capable')
268
+ return [];
269
+ const model = record(value);
270
+ if (model && typeof model.provider === 'string' && model.provider && typeof model.model === 'string' && model.model) {
271
+ const errors = unknownFields(model, new Set(['provider', 'model']), 'model');
272
+ return errors;
273
+ }
274
+ return [
275
+ { code: 'invalid_model_policy', field: 'model', message: 'AgentSpec.model is not a supported model policy.' },
276
+ ];
277
+ }
278
+ function validateBudget(value) {
279
+ const budget = record(value);
280
+ if (!budget)
281
+ return [{ code: 'invalid_agent_spec', field: 'budget', message: 'AgentSpec.budget must be an object.' }];
282
+ const errors = unknownFields(budget, new Set(['maxTurns', 'maxTokens']), 'budget');
283
+ for (const key of ['maxTurns', 'maxTokens']) {
284
+ if (key in budget && (!Number.isInteger(budget[key]) || budget[key] <= 0)) {
285
+ errors.push({
286
+ code: 'invalid_agent_spec',
287
+ field: `budget.${key}`,
288
+ message: `budget.${key} must be a positive integer.`,
289
+ });
290
+ }
291
+ }
292
+ return errors;
293
+ }
294
+ function validatePermissions(value) {
295
+ const permissions = record(value);
296
+ if (!permissions)
297
+ return [{ code: 'invalid_agent_spec', field: 'permissions', message: 'AgentSpec.permissions must be an object.' }];
298
+ const errors = unknownFields(permissions, new Set(['tools', 'filesystem', 'network', 'agents']), 'permissions');
299
+ if ('tools' in permissions)
300
+ errors.push(...validateToolList(permissions.tools, 'permissions.tools'));
301
+ errors.push(...validateScopeObject(permissions.filesystem, 'permissions.filesystem', ['read', 'write']));
302
+ errors.push(...validateScopeObject(permissions.network, 'permissions.network', ['hosts']));
303
+ if ('agents' in permissions) {
304
+ const agents = record(permissions.agents);
305
+ if (!agents) {
306
+ errors.push({
307
+ code: 'invalid_agent_spec',
308
+ field: 'permissions.agents',
309
+ message: 'permissions.agents must be an object.',
310
+ });
311
+ }
312
+ else {
313
+ errors.push(...unknownFields(agents, new Set(['create', 'maxDepth', 'allowedModels']), 'permissions.agents'));
314
+ if ('create' in agents && typeof agents.create !== 'boolean') {
315
+ errors.push({
316
+ code: 'invalid_agent_spec',
317
+ field: 'permissions.agents.create',
318
+ message: 'agents.create must be boolean.',
319
+ });
320
+ }
321
+ if ('maxDepth' in agents && (!Number.isInteger(agents.maxDepth) || agents.maxDepth < 0)) {
322
+ errors.push({
323
+ code: 'invalid_agent_spec',
324
+ field: 'permissions.agents.maxDepth',
325
+ message: 'agents.maxDepth must be a non-negative integer.',
326
+ });
327
+ }
328
+ // An empty list is still an unsupported promise: there is no proof that
329
+ // a future model allowlist will be enforced by the execution runner.
330
+ if ('allowedModels' in agents) {
331
+ errors.push({
332
+ code: 'unsupported_permission_scope',
333
+ field: 'permissions.agents.allowedModels',
334
+ message: 'agents.allowedModels is not enforceable by the child execution boundary.',
335
+ });
336
+ }
337
+ }
338
+ }
339
+ return errors;
340
+ }
341
+ function validateScopeObject(value, field, keys) {
342
+ if (value === undefined)
343
+ return [];
344
+ const scope = record(value);
345
+ if (!scope)
346
+ return [{ code: 'invalid_agent_spec', field, message: `${field} must be an object.` }];
347
+ const errors = unknownFields(scope, new Set(keys), field);
348
+ for (const key of keys) {
349
+ if (key in scope &&
350
+ (!Array.isArray(scope[key]) || scope[key].some((item) => typeof item !== 'string'))) {
351
+ errors.push({
352
+ code: 'invalid_agent_spec',
353
+ field: `${field}.${key}`,
354
+ message: `${field}.${key} must be an array of strings.`,
355
+ });
356
+ }
357
+ }
358
+ return errors;
359
+ }
360
+ function validateParentAuthority(parent) {
361
+ if (!parent || !Array.isArray(parent.tools) || !parent.permissions || !parent.limits || !record(parent.limits)) {
362
+ return [
363
+ { code: 'missing_parent_authority', message: 'A complete effective parent authority snapshot is required.' },
364
+ ];
365
+ }
366
+ const errors = [];
367
+ for (const key of ['canRead', 'canWrite', 'canRunShell', 'canSearchWeb', 'canUseNestedAgents']) {
368
+ if (typeof parent.permissions[key] !== 'boolean') {
369
+ errors.push({
370
+ code: 'missing_parent_authority',
371
+ field: `permissions.${key}`,
372
+ message: 'Parent coarse permissions must be boolean.',
373
+ });
374
+ }
375
+ }
376
+ if (parent.tools.some((tool) => typeof tool !== 'string')) {
377
+ errors.push({
378
+ code: 'missing_parent_authority',
379
+ field: 'tools',
380
+ message: 'Parent effective tools must be strings.',
381
+ });
382
+ }
383
+ if (parent.filesystemScope &&
384
+ (!Array.isArray(parent.filesystemScope.read) || !Array.isArray(parent.filesystemScope.write))) {
385
+ errors.push({
386
+ code: 'missing_parent_authority',
387
+ field: 'filesystemScope',
388
+ message: 'Parent filesystem scope must contain read and write arrays.',
389
+ });
390
+ }
391
+ if (parent.networkScope && !Array.isArray(parent.networkScope)) {
392
+ errors.push({
393
+ code: 'missing_parent_authority',
394
+ field: 'networkScope',
395
+ message: 'Parent network scope must be an array.',
396
+ });
397
+ }
398
+ if (parent.worktreeScope &&
399
+ (!Array.isArray(parent.worktreeScope) || parent.worktreeScope.some((name) => typeof name !== 'string'))) {
400
+ errors.push({
401
+ code: 'missing_parent_authority',
402
+ field: 'worktreeScope',
403
+ message: 'Parent worktree scope must be an array of names.',
404
+ });
405
+ }
406
+ if (parent.worktreePaths &&
407
+ (typeof parent.worktreePaths !== 'object' ||
408
+ parent.worktreePaths === null ||
409
+ Array.isArray(parent.worktreePaths) ||
410
+ Object.values(parent.worktreePaths).some((p) => typeof p !== 'string'))) {
411
+ errors.push({
412
+ code: 'missing_parent_authority',
413
+ field: 'worktreePaths',
414
+ message: 'Parent worktree paths must be a record of names to paths.',
415
+ });
416
+ }
417
+ return errors;
418
+ }
419
+ function toPublicParentPermissions(parent, mode) {
420
+ const tools = parent.tools.filter((tool) => {
421
+ if (READ_TOOLS.has(tool) && !parent.permissions.canRead)
422
+ return false;
423
+ if (WRITE_TOOLS.has(tool) && (!parent.permissions.canWrite || mode.readOnly || mode.planMode))
424
+ return false;
425
+ if (tool === 'shell' && !parent.permissions.canRunShell)
426
+ return false;
427
+ if (WEB_TOOLS.has(tool) && !parent.permissions.canSearchWeb)
428
+ return false;
429
+ if (tool === 'run_subagent' && !parent.permissions.canUseNestedAgents)
430
+ return false;
431
+ if (parent.filesystemScope) {
432
+ if (tool === 'shell')
433
+ return false;
434
+ if (READ_TOOLS.has(tool) && parent.filesystemScope.read.length === 0)
435
+ return false;
436
+ if (WRITE_TOOLS.has(tool) && parent.filesystemScope.write.length === 0)
437
+ return false;
438
+ }
439
+ if (parent.networkScope) {
440
+ if (WEB_TOOLS.has(tool) && parent.networkScope.length === 0)
441
+ return false;
442
+ if (tool === 'web_fetch' && !parent.networkScope.includes('*'))
443
+ return false;
444
+ }
445
+ return true;
446
+ });
447
+ return {
448
+ tools,
449
+ ...(parent.filesystemScope
450
+ ? { filesystem: { read: [...parent.filesystemScope.read], write: [...parent.filesystemScope.write] } }
451
+ : {}),
452
+ ...(parent.networkScope ? { network: { hosts: [...parent.networkScope] } } : {}),
453
+ agents: {
454
+ create: parent.permissions.canUseNestedAgents,
455
+ ...(parent.limits?.maxDepth !== undefined ? { maxDepth: parent.limits.maxDepth } : {}),
456
+ },
457
+ };
458
+ }
459
+ function validateResolvedScopeTools(definition) {
460
+ const errors = [];
461
+ if (definition.filesystemScope) {
462
+ if (definition.filesystemScope.read.length === 0 && definition.tools.some((tool) => READ_TOOLS.has(tool))) {
463
+ errors.push({
464
+ code: 'permission_denied',
465
+ field: 'permissions.filesystem.read',
466
+ message: 'Filesystem read scope is explicitly empty.',
467
+ });
468
+ }
469
+ if (definition.filesystemScope.write.length === 0 && definition.tools.some((tool) => WRITE_TOOLS.has(tool))) {
470
+ errors.push({
471
+ code: 'permission_denied',
472
+ field: 'permissions.filesystem.write',
473
+ message: 'Filesystem write scope is explicitly empty.',
474
+ });
475
+ }
476
+ if (definition.tools.includes('shell')) {
477
+ errors.push({
478
+ code: 'unsupported_permission_scope',
479
+ field: 'permissions.filesystem',
480
+ message: 'Shell cannot be proven safe with a finite filesystem scope.',
481
+ });
482
+ }
483
+ }
484
+ if (definition.networkScope) {
485
+ if (definition.networkScope.length === 0 && definition.tools.some((tool) => WEB_TOOLS.has(tool))) {
486
+ errors.push({
487
+ code: 'permission_denied',
488
+ field: 'permissions.network.hosts',
489
+ message: 'Network host scope is explicitly empty.',
490
+ });
491
+ }
492
+ if (definition.tools.some((tool) => WEB_TOOLS.has(tool)) && !definition.networkScope.includes('*')) {
493
+ errors.push({
494
+ code: 'unsupported_permission_scope',
495
+ field: 'permissions.network.hosts',
496
+ message: 'Web tools cannot be proven usable with a finite network scope.',
497
+ });
498
+ }
499
+ }
500
+ return errors;
501
+ }
502
+ function resolveWorktree(requested, allowed, paths) {
503
+ if (requested === undefined)
504
+ return { errors: [] };
505
+ if (typeof requested !== 'string' ||
506
+ requested.length === 0 ||
507
+ requested.includes('\0') ||
508
+ path.isAbsolute(requested) ||
509
+ requested.split(/[\\/]/).includes('..')) {
510
+ return {
511
+ errors: [
512
+ {
513
+ code: 'unsupported_worktree_scope',
514
+ field: 'worktree',
515
+ message: 'Worktree requests must be a non-empty opaque relative name.',
516
+ },
517
+ ],
518
+ };
519
+ }
520
+ if (!allowed?.includes(requested)) {
521
+ return {
522
+ errors: [
523
+ {
524
+ code: 'unsupported_worktree_scope',
525
+ field: 'worktree',
526
+ message: `Worktree "${requested}" is not in the parent authority scope.`,
527
+ },
528
+ ],
529
+ };
530
+ }
531
+ const authorizedPath = paths ? paths[requested] : undefined;
532
+ return {
533
+ worktree: requested,
534
+ ...(authorizedPath ? { authorizedPath } : {}),
535
+ errors: [],
536
+ };
537
+ }
538
+ //# sourceMappingURL=permission-boundary.js.map