@deepseek-harness-tui/dsh-tui 0.14.1 → 0.16.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 (886) hide show
  1. package/README.md +163 -17
  2. package/bin/dsh-tui.js +200 -34
  3. package/cordis.patch.yml +16 -52
  4. package/cordis.yml +6 -2
  5. package/guide/dsh-tui-guide/claude-backend.en.md +44 -7
  6. package/guide/dsh-tui-guide/claude-backend.md +28 -6
  7. package/guide/dsh-tui-guide/codex-backend.en.md +47 -10
  8. package/guide/dsh-tui-guide/codex-backend.md +26 -4
  9. package/guide/dsh-tui-guide/configuration.en.md +168 -18
  10. package/guide/dsh-tui-guide/configuration.md +144 -16
  11. package/guide/dsh-tui-guide/getting-started.en.md +15 -0
  12. package/guide/dsh-tui-guide/getting-started.md +15 -0
  13. package/guide/dsh-tui-guide/interaction.en.md +64 -24
  14. package/guide/dsh-tui-guide/interaction.md +49 -19
  15. package/guide/dsh-tui-guide/plugins.en.md +97 -3
  16. package/guide/dsh-tui-guide/plugins.md +55 -2
  17. package/guide/dsh-tui-guide/themes.en.md +23 -14
  18. package/guide/dsh-tui-guide/themes.md +19 -12
  19. package/guide/dsh-tui-guide/user-guide.en.md +53 -21
  20. package/guide/dsh-tui-guide/user-guide.md +43 -22
  21. package/lib/settings.json +103 -9
  22. package/lib/types/adapter/channel/projection.d.ts.map +1 -1
  23. package/lib/types/adapter/channel/projection.js +1 -0
  24. package/lib/types/adapter/channel/ui-policy.d.ts +1 -1
  25. package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
  26. package/lib/types/adapter/channel/ui-policy.js +4 -0
  27. package/lib/types/adapter/channel/ui.d.ts +2 -0
  28. package/lib/types/adapter/channel/ui.d.ts.map +1 -1
  29. package/lib/types/adapter/channel/ui.js +6 -2
  30. package/lib/types/adapter/kernel/runtime.d.ts.map +1 -1
  31. package/lib/types/adapter/kernel/runtime.js +2 -0
  32. package/lib/types/adapter/ports/channel-catalog.d.ts +5 -1
  33. package/lib/types/adapter/ports/channel-catalog.d.ts.map +1 -1
  34. package/lib/types/adapter/ports/channel-settings.d.ts +14 -3
  35. package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -1
  36. package/lib/types/adapter/ports/channel-ui.d.ts +56 -12
  37. package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
  38. package/lib/types/adapter/ports/channel-view.d.ts +68 -0
  39. package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
  40. package/lib/types/adapter/ports/channel.d.ts +2 -0
  41. package/lib/types/adapter/ports/channel.d.ts.map +1 -1
  42. package/lib/types/adapter/spec/backend-capabilities.d.ts +22 -0
  43. package/lib/types/adapter/spec/backend-capabilities.d.ts.map +1 -0
  44. package/lib/types/adapter/spec/backend-capabilities.js +49 -0
  45. package/lib/types/adapter/spec/protocol-constants.d.ts.map +1 -1
  46. package/lib/types/adapter/spec/protocol-constants.js +10 -3
  47. package/lib/types/adapter/spec/tui-contributions.d.ts +3 -0
  48. package/lib/types/adapter/spec/tui-contributions.d.ts.map +1 -1
  49. package/lib/types/adapter/spec/tui-contributions.js +7 -0
  50. package/lib/types/adapter/standard/registry.d.ts +6 -0
  51. package/lib/types/adapter/standard/registry.d.ts.map +1 -1
  52. package/lib/types/adapter/standard/registry.js +65 -15
  53. package/lib/types/adapter/standard/tui-extension.d.ts.map +1 -1
  54. package/lib/types/adapter/standard/tui-extension.js +7 -1
  55. package/lib/types/adapter/standard/types.d.ts +10 -1
  56. package/lib/types/adapter/standard/types.d.ts.map +1 -1
  57. package/lib/types/adapter/upstream/host-descriptor-driver.d.ts.map +1 -1
  58. package/lib/types/adapter/upstream/host-descriptor-driver.js +52 -0
  59. package/lib/types/agent/backend-manifest.d.ts +152 -0
  60. package/lib/types/agent/backend-manifest.d.ts.map +1 -0
  61. package/lib/types/agent/backend-manifest.js +14 -0
  62. package/lib/types/agent/backend.d.ts +71 -5
  63. package/lib/types/agent/backend.d.ts.map +1 -1
  64. package/lib/types/agent/capabilities.d.ts +6 -0
  65. package/lib/types/agent/capabilities.d.ts.map +1 -1
  66. package/lib/types/agent/events.d.ts +3 -2
  67. package/lib/types/agent/events.d.ts.map +1 -1
  68. package/lib/types/agent/index.d.ts +2 -0
  69. package/lib/types/agent/index.d.ts.map +1 -1
  70. package/lib/types/agent/refs.d.ts +11 -1
  71. package/lib/types/agent/refs.d.ts.map +1 -1
  72. package/lib/types/agent/starting-session.d.ts +4 -0
  73. package/lib/types/agent/starting-session.d.ts.map +1 -0
  74. package/lib/types/agent/starting-session.js +19 -0
  75. package/lib/types/backends/claude/activity.d.ts +1 -1
  76. package/lib/types/backends/claude/activity.d.ts.map +1 -1
  77. package/lib/types/backends/claude/activity.js +5 -5
  78. package/lib/types/backends/claude/auth.d.ts.map +1 -1
  79. package/lib/types/backends/claude/auth.js +10 -3
  80. package/lib/types/backends/claude/backend.d.ts.map +1 -1
  81. package/lib/types/backends/claude/backend.js +103 -29
  82. package/lib/types/backends/claude/catalog.d.ts +2 -1
  83. package/lib/types/backends/claude/catalog.d.ts.map +1 -1
  84. package/lib/types/backends/claude/catalog.js +15 -5
  85. package/lib/types/backends/claude/channels.d.ts +5 -3
  86. package/lib/types/backends/claude/channels.d.ts.map +1 -1
  87. package/lib/types/backends/claude/channels.js +5 -4
  88. package/lib/types/backends/claude/contract.d.ts +4 -0
  89. package/lib/types/backends/claude/contract.d.ts.map +1 -1
  90. package/lib/types/backends/claude/contract.js +4 -0
  91. package/lib/types/backends/claude/controls.d.ts +4 -0
  92. package/lib/types/backends/claude/controls.d.ts.map +1 -1
  93. package/lib/types/backends/claude/controls.js +34 -42
  94. package/lib/types/backends/claude/dialogs.d.ts +8 -2
  95. package/lib/types/backends/claude/dialogs.d.ts.map +1 -1
  96. package/lib/types/backends/claude/dialogs.js +24 -16
  97. package/lib/types/backends/claude/images.d.ts +1 -1
  98. package/lib/types/backends/claude/images.d.ts.map +1 -1
  99. package/lib/types/backends/claude/images.js +7 -7
  100. package/lib/types/backends/claude/manifest.d.ts +21 -0
  101. package/lib/types/backends/claude/manifest.d.ts.map +1 -0
  102. package/lib/types/backends/claude/manifest.js +29 -0
  103. package/lib/types/backends/claude/older-history.js +2 -2
  104. package/lib/types/backends/claude/permissions.js +11 -11
  105. package/lib/types/backends/claude/prefs.d.ts +4 -2
  106. package/lib/types/backends/claude/prefs.d.ts.map +1 -1
  107. package/lib/types/backends/claude/prefs.js +4 -3
  108. package/lib/types/backends/claude/process.d.ts +16 -4
  109. package/lib/types/backends/claude/process.d.ts.map +1 -1
  110. package/lib/types/backends/claude/process.js +100 -37
  111. package/lib/types/backends/claude/send-message.d.ts +1 -1
  112. package/lib/types/backends/claude/send-message.d.ts.map +1 -1
  113. package/lib/types/backends/claude/session/auth.js +22 -22
  114. package/lib/types/backends/claude/session/channels.d.ts +4 -0
  115. package/lib/types/backends/claude/session/channels.d.ts.map +1 -1
  116. package/lib/types/backends/claude/session/channels.js +5 -3
  117. package/lib/types/backends/claude/session/lifecycle.d.ts.map +1 -1
  118. package/lib/types/backends/claude/session/lifecycle.js +31 -23
  119. package/lib/types/backends/claude/session/store.js +8 -8
  120. package/lib/types/backends/claude/session/subagents.js +2 -2
  121. package/lib/types/backends/claude/session/types.d.ts +7 -0
  122. package/lib/types/backends/claude/session/types.d.ts.map +1 -1
  123. package/lib/types/backends/claude/side-query.js +3 -3
  124. package/lib/types/backends/claude/task-output.js +5 -5
  125. package/lib/types/backends/claude/text.d.ts +778 -0
  126. package/lib/types/backends/claude/text.d.ts.map +1 -0
  127. package/lib/types/backends/claude/text.js +298 -0
  128. package/lib/types/backends/claude/transcript-file.d.ts +1 -1
  129. package/lib/types/backends/claude/transcript-file.d.ts.map +1 -1
  130. package/lib/types/backends/claude/transcript-file.js +4 -4
  131. package/lib/types/backends/claude/translate/attempts.js +2 -2
  132. package/lib/types/backends/claude/translate/core.js +3 -3
  133. package/lib/types/backends/claude/translate/messages.js +4 -4
  134. package/lib/types/backends/claude/translate/system.js +14 -14
  135. package/lib/types/backends/claude/translate/tasks.js +2 -2
  136. package/lib/types/backends/claude/translate/types.d.ts +1 -1
  137. package/lib/types/backends/claude/translate/types.d.ts.map +1 -1
  138. package/lib/types/backends/codex/auth/external-tokens.js +16 -16
  139. package/lib/types/backends/codex/auth/status.js +14 -14
  140. package/lib/types/backends/codex/backend.d.ts +4 -19
  141. package/lib/types/backends/codex/backend.d.ts.map +1 -1
  142. package/lib/types/backends/codex/backend.js +118 -25
  143. package/lib/types/backends/codex/catalog.d.ts +2 -1
  144. package/lib/types/backends/codex/catalog.d.ts.map +1 -1
  145. package/lib/types/backends/codex/catalog.js +63 -18
  146. package/lib/types/backends/codex/channels.d.ts +6 -3
  147. package/lib/types/backends/codex/channels.d.ts.map +1 -1
  148. package/lib/types/backends/codex/channels.js +15 -13
  149. package/lib/types/backends/codex/contract.d.ts +3 -0
  150. package/lib/types/backends/codex/contract.d.ts.map +1 -1
  151. package/lib/types/backends/codex/contract.js +3 -0
  152. package/lib/types/backends/codex/detect.d.ts.map +1 -1
  153. package/lib/types/backends/codex/detect.js +9 -6
  154. package/lib/types/backends/codex/manifest.d.ts +30 -0
  155. package/lib/types/backends/codex/manifest.d.ts.map +1 -0
  156. package/lib/types/backends/codex/manifest.js +23 -0
  157. package/lib/types/backends/codex/prefs.d.ts +4 -2
  158. package/lib/types/backends/codex/prefs.d.ts.map +1 -1
  159. package/lib/types/backends/codex/prefs.js +4 -3
  160. package/lib/types/backends/codex/rpc/hub.js +2 -2
  161. package/lib/types/backends/codex/session/activity.d.ts +1 -1
  162. package/lib/types/backends/codex/session/activity.d.ts.map +1 -1
  163. package/lib/types/backends/codex/session/activity.js +13 -13
  164. package/lib/types/backends/codex/session/approvals.js +30 -30
  165. package/lib/types/backends/codex/session/async-questions.d.ts +17 -0
  166. package/lib/types/backends/codex/session/async-questions.d.ts.map +1 -0
  167. package/lib/types/backends/codex/session/async-questions.js +89 -0
  168. package/lib/types/backends/codex/session/commands.d.ts +8 -2
  169. package/lib/types/backends/codex/session/commands.d.ts.map +1 -1
  170. package/lib/types/backends/codex/session/commands.js +71 -23
  171. package/lib/types/backends/codex/session/controls.d.ts +1 -1
  172. package/lib/types/backends/codex/session/controls.d.ts.map +1 -1
  173. package/lib/types/backends/codex/session/controls.js +21 -16
  174. package/lib/types/backends/codex/session/goals.d.ts.map +1 -1
  175. package/lib/types/backends/codex/session/goals.js +3 -3
  176. package/lib/types/backends/codex/session/history.js +2 -2
  177. package/lib/types/backends/codex/session/images.js +8 -8
  178. package/lib/types/backends/codex/session/input.d.ts +6 -2
  179. package/lib/types/backends/codex/session/input.d.ts.map +1 -1
  180. package/lib/types/backends/codex/session/input.js +55 -13
  181. package/lib/types/backends/codex/session/plan-review.js +6 -6
  182. package/lib/types/backends/codex/session/session.d.ts.map +1 -1
  183. package/lib/types/backends/codex/session/session.js +100 -42
  184. package/lib/types/backends/codex/session/side-query.d.ts.map +1 -1
  185. package/lib/types/backends/codex/session/side-query.js +27 -9
  186. package/lib/types/backends/codex/session/state.d.ts +6 -1
  187. package/lib/types/backends/codex/session/state.d.ts.map +1 -1
  188. package/lib/types/backends/codex/session/subagents.js +5 -5
  189. package/lib/types/backends/codex/session/tasks.js +4 -4
  190. package/lib/types/backends/codex/text.d.ts +933 -0
  191. package/lib/types/backends/codex/text.d.ts.map +1 -0
  192. package/lib/types/backends/codex/text.js +313 -0
  193. package/lib/types/backends/codex/translate/items.d.ts.map +1 -1
  194. package/lib/types/backends/codex/translate/items.js +7 -5
  195. package/lib/types/backends/codex/translate/live.d.ts.map +1 -1
  196. package/lib/types/backends/codex/translate/live.js +11 -8
  197. package/lib/types/backends/codex/translate/notices.js +10 -10
  198. package/lib/types/backends/codex/translate/question-reply.d.ts +11 -0
  199. package/lib/types/backends/codex/translate/question-reply.d.ts.map +1 -0
  200. package/lib/types/backends/codex/translate/question-reply.js +53 -0
  201. package/lib/types/backends/shared/channel-slug.d.ts +4 -0
  202. package/lib/types/backends/shared/channel-slug.d.ts.map +1 -0
  203. package/lib/types/backends/shared/channel-slug.js +25 -0
  204. package/lib/types/backends/shared/channel-tokens.d.ts.map +1 -1
  205. package/lib/types/backends/shared/channel-tokens.js +30 -23
  206. package/lib/types/{channel → backends/shared}/elicitation.d.ts +78 -21
  207. package/lib/types/backends/shared/elicitation.d.ts.map +1 -0
  208. package/lib/types/{channel → backends/shared}/elicitation.js +64 -66
  209. package/lib/types/backends/shared/image-size.d.ts +33 -0
  210. package/lib/types/backends/shared/image-size.d.ts.map +1 -0
  211. package/lib/types/backends/shared/image-size.js +134 -0
  212. package/lib/types/{utils → backends/shared}/jsonl.d.ts +5 -1
  213. package/lib/types/backends/shared/jsonl.d.ts.map +1 -0
  214. package/lib/types/{utils → backends/shared}/jsonl.js +5 -1
  215. package/lib/types/backends/shared/localized-text.d.ts +30 -0
  216. package/lib/types/backends/shared/localized-text.d.ts.map +1 -0
  217. package/lib/types/backends/shared/localized-text.js +24 -0
  218. package/lib/types/backends/shared/platform-text.d.ts +88 -0
  219. package/lib/types/backends/shared/platform-text.d.ts.map +1 -0
  220. package/lib/types/backends/shared/platform-text.js +33 -0
  221. package/lib/types/branding.d.ts +13 -0
  222. package/lib/types/branding.d.ts.map +1 -1
  223. package/lib/types/branding.js +18 -0
  224. package/lib/types/channel/channel-slug.d.ts +3 -1
  225. package/lib/types/channel/channel-slug.d.ts.map +1 -1
  226. package/lib/types/channel/channel-slug.js +3 -1
  227. package/lib/types/channel/projection.d.ts.map +1 -1
  228. package/lib/types/channel/projection.js +10 -0
  229. package/lib/types/channel/sanitize.d.ts +7 -0
  230. package/lib/types/channel/sanitize.d.ts.map +1 -1
  231. package/lib/types/channel/sanitize.js +9 -0
  232. package/lib/types/channel/usage.d.ts.map +1 -1
  233. package/lib/types/channel/usage.js +5 -0
  234. package/lib/types/commands.d.ts +15 -0
  235. package/lib/types/commands.d.ts.map +1 -1
  236. package/lib/types/commands.js +58 -10
  237. package/lib/types/components/AgentMessageComposer.d.ts.map +1 -1
  238. package/lib/types/components/AgentMessageComposer.js +3 -2
  239. package/lib/types/components/BtwPanel.d.ts.map +1 -1
  240. package/lib/types/components/BtwPanel.js +4 -2
  241. package/lib/types/components/Chat/JobCard.js +3 -3
  242. package/lib/types/components/CommandSuggestions.d.ts.map +1 -1
  243. package/lib/types/components/CommandSuggestions.js +24 -7
  244. package/lib/types/components/ContextBarView.d.ts +5 -1
  245. package/lib/types/components/ContextBarView.d.ts.map +1 -1
  246. package/lib/types/components/ContextBarView.js +6 -3
  247. package/lib/types/components/ExtensionDialog.d.ts.map +1 -1
  248. package/lib/types/components/ExtensionDialog.js +2 -3
  249. package/lib/types/components/GoalTodoPanel.d.ts.map +1 -1
  250. package/lib/types/components/GoalTodoPanel.js +14 -3
  251. package/lib/types/components/InlineMathParagraph.js +1 -1
  252. package/lib/types/components/KernelPicker.d.ts.map +1 -1
  253. package/lib/types/components/KernelPicker.js +1 -1
  254. package/lib/types/components/LogoV2.d.ts +4 -1
  255. package/lib/types/components/LogoV2.d.ts.map +1 -1
  256. package/lib/types/components/LogoV2.js +14 -9
  257. package/lib/types/components/MarkdownTable.d.ts.map +1 -1
  258. package/lib/types/components/MarkdownTable.js +4 -3
  259. package/lib/types/components/MessageList.d.ts.map +1 -1
  260. package/lib/types/components/MessageList.js +109 -15
  261. package/lib/types/components/ModelPicker.d.ts +24 -31
  262. package/lib/types/components/ModelPicker.d.ts.map +1 -1
  263. package/lib/types/components/ModelPicker.js +115 -40
  264. package/lib/types/components/PermissionsPicker.d.ts +10 -1
  265. package/lib/types/components/PermissionsPicker.d.ts.map +1 -1
  266. package/lib/types/components/PermissionsPicker.js +24 -16
  267. package/lib/types/components/PluginInstallPane.d.ts +21 -0
  268. package/lib/types/components/PluginInstallPane.d.ts.map +1 -0
  269. package/lib/types/components/PluginInstallPane.js +84 -0
  270. package/lib/types/components/PluginManagePane.d.ts +21 -0
  271. package/lib/types/components/PluginManagePane.d.ts.map +1 -0
  272. package/lib/types/components/PluginManagePane.js +69 -0
  273. package/lib/types/components/PromptEditor.d.ts +3 -3
  274. package/lib/types/components/PromptInput.d.ts +21 -3
  275. package/lib/types/components/PromptInput.d.ts.map +1 -1
  276. package/lib/types/components/PromptInput.js +65 -121
  277. package/lib/types/components/SdkInstallWizard.d.ts +3 -1
  278. package/lib/types/components/SdkInstallWizard.d.ts.map +1 -1
  279. package/lib/types/components/SdkInstallWizard.js +8 -1
  280. package/lib/types/components/SearchBox.d.ts +13 -15
  281. package/lib/types/components/SearchBox.d.ts.map +1 -1
  282. package/lib/types/components/SearchBox.js +58 -27
  283. package/lib/types/components/SubagentCard.d.ts +13 -1
  284. package/lib/types/components/SubagentCard.d.ts.map +1 -1
  285. package/lib/types/components/SubagentCard.js +27 -12
  286. package/lib/types/components/SubagentDashboard.d.ts +8 -1
  287. package/lib/types/components/SubagentDashboard.d.ts.map +1 -1
  288. package/lib/types/components/SubagentDashboard.js +58 -16
  289. package/lib/types/components/ThemePicker.d.ts +1 -1
  290. package/lib/types/components/ThemePicker.d.ts.map +1 -1
  291. package/lib/types/components/ThemePicker.js +14 -11
  292. package/lib/types/components/Tooltip.js +1 -1
  293. package/lib/types/components/WorkingSpinner.js +1 -1
  294. package/lib/types/components/WorkspaceFlowPicker.d.ts.map +1 -1
  295. package/lib/types/components/WorkspaceFlowPicker.js +4 -3
  296. package/lib/types/components/composerImageTokens.d.ts +24 -0
  297. package/lib/types/components/composerImageTokens.d.ts.map +1 -0
  298. package/lib/types/components/composerImageTokens.js +37 -0
  299. package/lib/types/components/design-system/InputCaret.d.ts +7 -0
  300. package/lib/types/components/design-system/InputCaret.d.ts.map +1 -0
  301. package/lib/types/components/design-system/InputCaret.js +9 -0
  302. package/lib/types/components/design-system/ListItem.d.ts +13 -2
  303. package/lib/types/components/design-system/ListItem.d.ts.map +1 -1
  304. package/lib/types/components/design-system/ListItem.js +11 -5
  305. package/lib/types/components/design-system/ThemeProvider.d.ts.map +1 -1
  306. package/lib/types/components/design-system/ThemeProvider.js +6 -8
  307. package/lib/types/components/kernelCatalog.d.ts +55 -11
  308. package/lib/types/components/kernelCatalog.d.ts.map +1 -1
  309. package/lib/types/components/kernelCatalog.js +42 -23
  310. package/lib/types/components/launchpadActions.d.ts +4 -0
  311. package/lib/types/components/launchpadActions.d.ts.map +1 -1
  312. package/lib/types/components/launchpadActions.js +5 -4
  313. package/lib/types/components/launchpadLayout.d.ts +14 -1
  314. package/lib/types/components/launchpadLayout.d.ts.map +1 -1
  315. package/lib/types/components/launchpadLayout.js +38 -19
  316. package/lib/types/components/messages/TeamMessageBubble.d.ts +20 -0
  317. package/lib/types/components/messages/TeamMessageBubble.d.ts.map +1 -0
  318. package/lib/types/components/messages/TeamMessageBubble.js +15 -0
  319. package/lib/types/components/messages/UserPromptMessage.d.ts +4 -3
  320. package/lib/types/components/messages/UserPromptMessage.d.ts.map +1 -1
  321. package/lib/types/components/messages/UserPromptMessage.js +4 -3
  322. package/lib/types/components/questions/AskUserQuestionPanel.d.ts.map +1 -1
  323. package/lib/types/components/questions/AskUserQuestionPanel.js +8 -3
  324. package/lib/types/components/questions/PlanReviewPanel.d.ts.map +1 -1
  325. package/lib/types/components/questions/PlanReviewPanel.js +4 -3
  326. package/lib/types/components/questions/ProviderModelEditor.d.ts.map +1 -1
  327. package/lib/types/components/questions/ProviderModelEditor.js +3 -13
  328. package/lib/types/components/sessions/ForeignSessionRow.d.ts +3 -1
  329. package/lib/types/components/sessions/ForeignSessionRow.d.ts.map +1 -1
  330. package/lib/types/components/sessions/ForeignSessionRow.js +5 -2
  331. package/lib/types/components/sessions/SessionListRow.d.ts +3 -1
  332. package/lib/types/components/sessions/SessionListRow.d.ts.map +1 -1
  333. package/lib/types/components/sessions/SessionListRow.js +5 -2
  334. package/lib/types/components/sidePanel/PanelBar.d.ts +1 -0
  335. package/lib/types/components/sidePanel/PanelBar.d.ts.map +1 -1
  336. package/lib/types/components/sidePanel/PanelBar.js +21 -17
  337. package/lib/types/components/sidePanel/PanelHost.d.ts.map +1 -1
  338. package/lib/types/components/sidePanel/PanelHost.js +5 -1
  339. package/lib/types/components/sidePanel/PanelStore.d.ts +8 -0
  340. package/lib/types/components/sidePanel/PanelStore.d.ts.map +1 -1
  341. package/lib/types/components/sidePanel/PanelStore.js +11 -0
  342. package/lib/types/components/sidePanel/SidePanelColumn.d.ts +1 -1
  343. package/lib/types/components/sidePanel/SidePanelColumn.d.ts.map +1 -1
  344. package/lib/types/components/sidePanel/SidePanelColumn.js +15 -2
  345. package/lib/types/components/sidePanel/SidePanelLayout.d.ts +6 -4
  346. package/lib/types/components/sidePanel/SidePanelLayout.d.ts.map +1 -1
  347. package/lib/types/components/sidePanel/SidePanelLayout.js +33 -7
  348. package/lib/types/components/sidePanel/SidePanelRuntimeContext.d.ts +7 -0
  349. package/lib/types/components/sidePanel/SidePanelRuntimeContext.d.ts.map +1 -1
  350. package/lib/types/components/sidePanel/SidePanelRuntimeContext.js +4 -0
  351. package/lib/types/components/sidePanel/btw/BtwComposer.d.ts +7 -2
  352. package/lib/types/components/sidePanel/btw/BtwComposer.d.ts.map +1 -1
  353. package/lib/types/components/sidePanel/btw/BtwComposer.js +28 -8
  354. package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts +2 -1
  355. package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts.map +1 -1
  356. package/lib/types/components/sidePanel/btw/BtwPanelAdapter.js +156 -21
  357. package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts +6 -2
  358. package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts.map +1 -1
  359. package/lib/types/components/sidePanel/btw/BtwThreadScene.js +64 -16
  360. package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts +15 -5
  361. package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts.map +1 -1
  362. package/lib/types/components/sidePanel/btw/BtwThreadView.js +101 -10
  363. package/lib/types/components/sidePanel/btw/threads.d.ts +18 -0
  364. package/lib/types/components/sidePanel/btw/threads.d.ts.map +1 -1
  365. package/lib/types/components/sidePanel/btw/threads.js +51 -0
  366. package/lib/types/components/sidePanel/builtinPanels.d.ts.map +1 -1
  367. package/lib/types/components/sidePanel/builtinPanels.js +5 -1
  368. package/lib/types/components/sidePanel/companion/CompanionPanel.js +2 -2
  369. package/lib/types/components/sidePanel/companion/SplashMascot.d.ts +5 -1
  370. package/lib/types/components/sidePanel/companion/SplashMascot.d.ts.map +1 -1
  371. package/lib/types/components/sidePanel/companion/SplashMascot.js +19 -4
  372. package/lib/types/components/sidePanel/companion/skins.d.ts +8 -0
  373. package/lib/types/components/sidePanel/companion/skins.d.ts.map +1 -1
  374. package/lib/types/components/sidePanel/companion/skins.js +57 -12
  375. package/lib/types/components/sidePanel/types.d.ts +7 -1
  376. package/lib/types/components/sidePanel/types.d.ts.map +1 -1
  377. package/lib/types/components/sidePanel/useSidePanel.d.ts +2 -0
  378. package/lib/types/components/sidePanel/useSidePanel.d.ts.map +1 -1
  379. package/lib/types/components/sidePanel/useSidePanel.js +11 -1
  380. package/lib/types/components/splashArtRows.d.ts +29 -0
  381. package/lib/types/components/splashArtRows.d.ts.map +1 -0
  382. package/lib/types/components/splashArtRows.js +31 -0
  383. package/lib/types/components/splashFonts.d.ts +24 -1
  384. package/lib/types/components/splashFonts.d.ts.map +1 -1
  385. package/lib/types/components/splashFonts.js +40 -5
  386. package/lib/types/components/teamRoster.d.ts +70 -0
  387. package/lib/types/components/teamRoster.d.ts.map +1 -0
  388. package/lib/types/components/teamRoster.js +78 -0
  389. package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts +3 -1
  390. package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts.map +1 -1
  391. package/lib/types/components/workspaces/HomeWorkspaceRow.js +5 -2
  392. package/lib/types/dsh-adapter/admission-loader.d.ts +102 -0
  393. package/lib/types/dsh-adapter/admission-loader.d.ts.map +1 -0
  394. package/lib/types/dsh-adapter/admission-loader.js +301 -0
  395. package/lib/types/dsh-adapter/agent-view.d.ts.map +1 -1
  396. package/lib/types/dsh-adapter/agent-view.js +3 -1
  397. package/lib/types/dsh-adapter/approvals.d.ts +7 -0
  398. package/lib/types/dsh-adapter/approvals.d.ts.map +1 -1
  399. package/lib/types/dsh-adapter/approvals.js +45 -1
  400. package/lib/types/dsh-adapter/backend/translate.d.ts.map +1 -1
  401. package/lib/types/dsh-adapter/backend/translate.js +71 -8
  402. package/lib/types/dsh-adapter/backend-admission.d.ts +64 -0
  403. package/lib/types/dsh-adapter/backend-admission.d.ts.map +1 -0
  404. package/lib/types/dsh-adapter/backend-admission.js +34 -0
  405. package/lib/types/dsh-adapter/backend-assembly.d.ts +31 -0
  406. package/lib/types/dsh-adapter/backend-assembly.d.ts.map +1 -0
  407. package/lib/types/dsh-adapter/backend-assembly.js +225 -0
  408. package/lib/types/dsh-adapter/backend-contribution.d.ts +62 -0
  409. package/lib/types/dsh-adapter/backend-contribution.d.ts.map +1 -0
  410. package/lib/types/dsh-adapter/backend-contribution.js +78 -0
  411. package/lib/types/dsh-adapter/backend-registry.d.ts +136 -0
  412. package/lib/types/dsh-adapter/backend-registry.d.ts.map +1 -0
  413. package/lib/types/dsh-adapter/backend-registry.js +304 -0
  414. package/lib/types/dsh-adapter/backends.d.ts +67 -24
  415. package/lib/types/dsh-adapter/backends.d.ts.map +1 -1
  416. package/lib/types/dsh-adapter/backends.generated.d.ts +12 -0
  417. package/lib/types/dsh-adapter/backends.generated.d.ts.map +1 -0
  418. package/lib/types/dsh-adapter/backends.generated.js +6 -0
  419. package/lib/types/dsh-adapter/backends.js +91 -46
  420. package/lib/types/dsh-adapter/bundled-presets.d.ts.map +1 -1
  421. package/lib/types/dsh-adapter/bundled-presets.js +60 -3
  422. package/lib/types/dsh-adapter/channel/action-readiness.d.ts +2 -0
  423. package/lib/types/dsh-adapter/channel/action-readiness.d.ts.map +1 -1
  424. package/lib/types/dsh-adapter/channel/action-readiness.js +9 -3
  425. package/lib/types/dsh-adapter/channel/agent-view-projection.js +2 -2
  426. package/lib/types/dsh-adapter/channel/background-action.d.ts.map +1 -1
  427. package/lib/types/dsh-adapter/channel/background-action.js +8 -3
  428. package/lib/types/dsh-adapter/channel/binding-events.d.ts +17 -3
  429. package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
  430. package/lib/types/dsh-adapter/channel/binding-events.js +19 -46
  431. package/lib/types/dsh-adapter/channel/channel-host.d.ts +45 -0
  432. package/lib/types/dsh-adapter/channel/channel-host.d.ts.map +1 -0
  433. package/lib/types/dsh-adapter/channel/channel-host.js +1 -0
  434. package/lib/types/dsh-adapter/channel/command-completions.d.ts +5 -0
  435. package/lib/types/dsh-adapter/channel/command-completions.d.ts.map +1 -1
  436. package/lib/types/dsh-adapter/channel/command-completions.js +79 -6
  437. package/lib/types/dsh-adapter/channel/compaction.d.ts +7 -2
  438. package/lib/types/dsh-adapter/channel/compaction.d.ts.map +1 -1
  439. package/lib/types/dsh-adapter/channel/compaction.js +100 -26
  440. package/lib/types/dsh-adapter/channel/composer-images.d.ts +4 -2
  441. package/lib/types/dsh-adapter/channel/composer-images.d.ts.map +1 -1
  442. package/lib/types/dsh-adapter/channel/composer-images.js +36 -5
  443. package/lib/types/dsh-adapter/channel/cordis-host.d.ts +14 -0
  444. package/lib/types/dsh-adapter/channel/cordis-host.d.ts.map +1 -0
  445. package/lib/types/dsh-adapter/channel/cordis-host.js +35 -0
  446. package/lib/types/dsh-adapter/channel/core/actions.d.ts +3 -3
  447. package/lib/types/dsh-adapter/channel/core/actions.d.ts.map +1 -1
  448. package/lib/types/dsh-adapter/channel/core/actions.js +15 -6
  449. package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts +10 -3
  450. package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts.map +1 -1
  451. package/lib/types/dsh-adapter/channel/core/binding-feed.js +5 -1
  452. package/lib/types/dsh-adapter/channel/core/compose.d.ts +12 -28
  453. package/lib/types/dsh-adapter/channel/core/compose.d.ts.map +1 -1
  454. package/lib/types/dsh-adapter/channel/core/compose.js +330 -117
  455. package/lib/types/dsh-adapter/channel/core/files.d.ts +7 -2
  456. package/lib/types/dsh-adapter/channel/core/files.d.ts.map +1 -1
  457. package/lib/types/dsh-adapter/channel/core/files.js +1 -0
  458. package/lib/types/dsh-adapter/channel/core/host.d.ts +12 -6
  459. package/lib/types/dsh-adapter/channel/core/host.d.ts.map +1 -1
  460. package/lib/types/dsh-adapter/channel/core/host.js +69 -35
  461. package/lib/types/dsh-adapter/channel/core/local-actions.d.ts +5 -3
  462. package/lib/types/dsh-adapter/channel/core/local-actions.d.ts.map +1 -1
  463. package/lib/types/dsh-adapter/channel/core/local-actions.js +5 -2
  464. package/lib/types/dsh-adapter/channel/core/session-controls.js +2 -2
  465. package/lib/types/dsh-adapter/channel/core/session-switch.d.ts +7 -4
  466. package/lib/types/dsh-adapter/channel/core/session-switch.d.ts.map +1 -1
  467. package/lib/types/dsh-adapter/channel/core/session-switch.js +8 -4
  468. package/lib/types/dsh-adapter/channel/core/sessions.d.ts +1 -1
  469. package/lib/types/dsh-adapter/channel/core/sessions.d.ts.map +1 -1
  470. package/lib/types/dsh-adapter/channel/core/sessions.js +75 -16
  471. package/lib/types/dsh-adapter/channel/extensions.d.ts +4 -3
  472. package/lib/types/dsh-adapter/channel/extensions.d.ts.map +1 -1
  473. package/lib/types/dsh-adapter/channel/extensions.js +109 -30
  474. package/lib/types/dsh-adapter/channel/input-delivery.d.ts +2 -2
  475. package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -1
  476. package/lib/types/dsh-adapter/channel/input-delivery.js +14 -5
  477. package/lib/types/dsh-adapter/channel/job-projection.d.ts +4 -0
  478. package/lib/types/dsh-adapter/channel/job-projection.d.ts.map +1 -1
  479. package/lib/types/dsh-adapter/channel/job-projection.js +205 -24
  480. package/lib/types/dsh-adapter/channel/mentions.d.ts +3 -3
  481. package/lib/types/dsh-adapter/channel/mentions.d.ts.map +1 -1
  482. package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts +7 -0
  483. package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -1
  484. package/lib/types/dsh-adapter/channel/mode-permission-actions.js +235 -13
  485. package/lib/types/dsh-adapter/channel/model-actions.d.ts +5 -1
  486. package/lib/types/dsh-adapter/channel/model-actions.d.ts.map +1 -1
  487. package/lib/types/dsh-adapter/channel/model-actions.js +48 -29
  488. package/lib/types/dsh-adapter/channel/model-selection.d.ts +17 -0
  489. package/lib/types/dsh-adapter/channel/model-selection.d.ts.map +1 -0
  490. package/lib/types/dsh-adapter/channel/model-selection.js +109 -0
  491. package/lib/types/dsh-adapter/channel/model-switch.d.ts +12 -21
  492. package/lib/types/dsh-adapter/channel/model-switch.d.ts.map +1 -1
  493. package/lib/types/dsh-adapter/channel/model-switch.js +39 -102
  494. package/lib/types/dsh-adapter/channel/permissions.d.ts.map +1 -1
  495. package/lib/types/dsh-adapter/channel/permissions.js +4 -1
  496. package/lib/types/dsh-adapter/channel/projection-helpers.d.ts.map +1 -1
  497. package/lib/types/dsh-adapter/channel/projection-helpers.js +2 -0
  498. package/lib/types/dsh-adapter/channel/projection.js +1 -1
  499. package/lib/types/dsh-adapter/channel/reports.d.ts +1 -1
  500. package/lib/types/dsh-adapter/channel/reports.d.ts.map +1 -1
  501. package/lib/types/dsh-adapter/channel/reports.js +11 -3
  502. package/lib/types/dsh-adapter/channel/session-fork.d.ts.map +1 -1
  503. package/lib/types/dsh-adapter/channel/session-fork.js +33 -20
  504. package/lib/types/dsh-adapter/channel/session-listing.d.ts +20 -0
  505. package/lib/types/dsh-adapter/channel/session-listing.d.ts.map +1 -0
  506. package/lib/types/dsh-adapter/channel/session-listing.js +51 -0
  507. package/lib/types/dsh-adapter/channel/session-metadata.d.ts +3 -1
  508. package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -1
  509. package/lib/types/dsh-adapter/channel/session-metadata.js +60 -30
  510. package/lib/types/dsh-adapter/channel/session-reset.js +2 -2
  511. package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -1
  512. package/lib/types/dsh-adapter/channel/session-resume.js +22 -8
  513. package/lib/types/dsh-adapter/channel/session-rewind.d.ts.map +1 -1
  514. package/lib/types/dsh-adapter/channel/session-rewind.js +38 -24
  515. package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts.map +1 -1
  516. package/lib/types/dsh-adapter/channel/session-tree-actions.js +38 -24
  517. package/lib/types/dsh-adapter/channel/settings-host.d.ts +5 -2
  518. package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -1
  519. package/lib/types/dsh-adapter/channel/settings-host.js +136 -5
  520. package/lib/types/dsh-adapter/channel/state.d.ts +43 -1
  521. package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
  522. package/lib/types/dsh-adapter/channel/state.js +14 -1
  523. package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -1
  524. package/lib/types/dsh-adapter/channel/subagent-projection.js +84 -12
  525. package/lib/types/dsh-adapter/channel/task-completion.d.ts +6 -0
  526. package/lib/types/dsh-adapter/channel/task-completion.d.ts.map +1 -0
  527. package/lib/types/dsh-adapter/channel/task-completion.js +114 -0
  528. package/lib/types/dsh-adapter/channel/transcript.d.ts +8 -1
  529. package/lib/types/dsh-adapter/channel/transcript.d.ts.map +1 -1
  530. package/lib/types/dsh-adapter/channel/transcript.js +20 -3
  531. package/lib/types/dsh-adapter/channel/upstream-retry.d.ts +81 -0
  532. package/lib/types/dsh-adapter/channel/upstream-retry.d.ts.map +1 -0
  533. package/lib/types/dsh-adapter/channel/upstream-retry.js +138 -0
  534. package/lib/types/dsh-adapter/channel/workspace-actions.d.ts.map +1 -1
  535. package/lib/types/dsh-adapter/channel/workspace-actions.js +9 -8
  536. package/lib/types/dsh-adapter/channel-ui.d.ts +3 -1
  537. package/lib/types/dsh-adapter/channel-ui.d.ts.map +1 -1
  538. package/lib/types/dsh-adapter/channel-ui.js +4 -2
  539. package/lib/types/dsh-adapter/channel.d.ts +2 -2
  540. package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
  541. package/lib/types/dsh-adapter/channel.js +19 -5
  542. package/lib/types/dsh-adapter/compat/agent-team-0.2.0.d.ts +55 -0
  543. package/lib/types/dsh-adapter/compat/agent-team-0.2.0.d.ts.map +1 -0
  544. package/lib/types/dsh-adapter/compat/agent-team-0.2.0.js +96 -0
  545. package/lib/types/dsh-adapter/context-occupancy.d.ts +81 -4
  546. package/lib/types/dsh-adapter/context-occupancy.d.ts.map +1 -1
  547. package/lib/types/dsh-adapter/context-occupancy.js +108 -17
  548. package/lib/types/dsh-adapter/contract.d.ts +4 -4
  549. package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
  550. package/lib/types/dsh-adapter/contract.js +20 -5
  551. package/lib/types/dsh-adapter/effect-ledger.d.ts +7 -0
  552. package/lib/types/dsh-adapter/effect-ledger.d.ts.map +1 -1
  553. package/lib/types/dsh-adapter/effect-ledger.js +8 -1
  554. package/lib/types/dsh-adapter/entry-slot.d.ts +38 -0
  555. package/lib/types/dsh-adapter/entry-slot.d.ts.map +1 -0
  556. package/lib/types/dsh-adapter/entry-slot.js +28 -0
  557. package/lib/types/dsh-adapter/fresh-agent.d.ts +22 -0
  558. package/lib/types/dsh-adapter/fresh-agent.d.ts.map +1 -0
  559. package/lib/types/dsh-adapter/fresh-agent.js +226 -0
  560. package/lib/types/dsh-adapter/host-access.d.ts +16 -1
  561. package/lib/types/dsh-adapter/host-access.d.ts.map +1 -1
  562. package/lib/types/dsh-adapter/host-access.js +148 -2
  563. package/lib/types/dsh-adapter/host-contract.d.ts +103 -0
  564. package/lib/types/dsh-adapter/host-contract.d.ts.map +1 -0
  565. package/lib/types/dsh-adapter/host-contract.js +77 -0
  566. package/lib/types/dsh-adapter/host-dsh.d.ts +112 -0
  567. package/lib/types/dsh-adapter/host-dsh.d.ts.map +1 -0
  568. package/lib/types/dsh-adapter/host-dsh.js +481 -0
  569. package/lib/types/dsh-adapter/host-entry.d.ts +9 -0
  570. package/lib/types/dsh-adapter/host-entry.d.ts.map +1 -0
  571. package/lib/types/dsh-adapter/host-entry.js +253 -0
  572. package/lib/types/dsh-adapter/index.d.ts +53 -17
  573. package/lib/types/dsh-adapter/index.d.ts.map +1 -1
  574. package/lib/types/dsh-adapter/index.js +63 -9
  575. package/lib/types/dsh-adapter/install/executors.d.ts +44 -0
  576. package/lib/types/dsh-adapter/install/executors.d.ts.map +1 -0
  577. package/lib/types/dsh-adapter/install/executors.js +15 -0
  578. package/lib/types/dsh-adapter/install/pnpm-profile-add.d.ts +3 -0
  579. package/lib/types/dsh-adapter/install/pnpm-profile-add.d.ts.map +1 -0
  580. package/lib/types/dsh-adapter/install/pnpm-profile-add.js +150 -0
  581. package/lib/types/dsh-adapter/invariant.d.ts +7 -2
  582. package/lib/types/dsh-adapter/invariant.d.ts.map +1 -1
  583. package/lib/types/dsh-adapter/invariant.js +6 -3
  584. package/lib/types/dsh-adapter/jobs.d.ts +7 -0
  585. package/lib/types/dsh-adapter/jobs.d.ts.map +1 -1
  586. package/lib/types/dsh-adapter/jobs.js +13 -0
  587. package/lib/types/dsh-adapter/lite-profile.d.ts +50 -0
  588. package/lib/types/dsh-adapter/lite-profile.d.ts.map +1 -0
  589. package/lib/types/dsh-adapter/lite-profile.js +49 -0
  590. package/lib/types/dsh-adapter/migrate/index.js +2 -2
  591. package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts +1 -1
  592. package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts.map +1 -1
  593. package/lib/types/dsh-adapter/migrate/parse/jsonl.js +4 -3
  594. package/lib/types/dsh-adapter/oauth/profiles.d.ts.map +1 -1
  595. package/lib/types/dsh-adapter/oauth/profiles.js +5 -1
  596. package/lib/types/dsh-adapter/panels.d.ts +7 -0
  597. package/lib/types/dsh-adapter/panels.d.ts.map +1 -1
  598. package/lib/types/dsh-adapter/panels.js +41 -2
  599. package/lib/types/dsh-adapter/plugin-completions.d.ts +32 -0
  600. package/lib/types/dsh-adapter/plugin-completions.d.ts.map +1 -0
  601. package/lib/types/dsh-adapter/plugin-completions.js +80 -0
  602. package/lib/types/dsh-adapter/plugin-declaration.d.ts +119 -0
  603. package/lib/types/dsh-adapter/plugin-declaration.d.ts.map +1 -0
  604. package/lib/types/dsh-adapter/plugin-declaration.js +183 -0
  605. package/lib/types/dsh-adapter/plugin-feed.d.ts +94 -0
  606. package/lib/types/dsh-adapter/plugin-feed.d.ts.map +1 -0
  607. package/lib/types/dsh-adapter/plugin-feed.js +135 -0
  608. package/lib/types/dsh-adapter/plugin-guard.d.ts +115 -0
  609. package/lib/types/dsh-adapter/plugin-guard.d.ts.map +1 -0
  610. package/lib/types/dsh-adapter/plugin-guard.js +108 -0
  611. package/lib/types/dsh-adapter/plugin-host.d.ts +13 -2
  612. package/lib/types/dsh-adapter/plugin-host.d.ts.map +1 -1
  613. package/lib/types/dsh-adapter/plugin-host.js +34 -8
  614. package/lib/types/dsh-adapter/plugin-install.d.ts +160 -0
  615. package/lib/types/dsh-adapter/plugin-install.d.ts.map +1 -0
  616. package/lib/types/dsh-adapter/plugin-install.js +545 -0
  617. package/lib/types/dsh-adapter/plugin-manage.d.ts +178 -0
  618. package/lib/types/dsh-adapter/plugin-manage.d.ts.map +1 -0
  619. package/lib/types/dsh-adapter/plugin-manage.js +468 -0
  620. package/lib/types/dsh-adapter/plugin-manager.d.ts +144 -0
  621. package/lib/types/dsh-adapter/plugin-manager.d.ts.map +1 -0
  622. package/lib/types/dsh-adapter/plugin-manager.js +83 -0
  623. package/lib/types/dsh-adapter/plugin.d.ts +50 -1
  624. package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
  625. package/lib/types/dsh-adapter/plugin.js +918 -234
  626. package/lib/types/dsh-adapter/plugins-info.d.ts +130 -8
  627. package/lib/types/dsh-adapter/plugins-info.d.ts.map +1 -1
  628. package/lib/types/dsh-adapter/plugins-info.js +469 -44
  629. package/lib/types/dsh-adapter/process-exit.d.ts +43 -0
  630. package/lib/types/dsh-adapter/process-exit.d.ts.map +1 -0
  631. package/lib/types/dsh-adapter/process-exit.js +60 -0
  632. package/lib/types/dsh-adapter/root-dispose.d.ts +18 -0
  633. package/lib/types/dsh-adapter/root-dispose.d.ts.map +1 -0
  634. package/lib/types/dsh-adapter/root-dispose.js +28 -0
  635. package/lib/types/dsh-adapter/session-list-metadata.d.ts +20 -0
  636. package/lib/types/dsh-adapter/session-list-metadata.d.ts.map +1 -0
  637. package/lib/types/dsh-adapter/session-list-metadata.js +56 -0
  638. package/lib/types/dsh-adapter/session-projection-store.d.ts +66 -0
  639. package/lib/types/dsh-adapter/session-projection-store.d.ts.map +1 -0
  640. package/lib/types/dsh-adapter/session-projection-store.js +149 -0
  641. package/lib/types/dsh-adapter/session-seed.d.ts +11 -0
  642. package/lib/types/dsh-adapter/session-seed.d.ts.map +1 -0
  643. package/lib/types/dsh-adapter/session-seed.js +47 -0
  644. package/lib/types/dsh-adapter/sessions/list.d.ts +3 -1
  645. package/lib/types/dsh-adapter/sessions/list.d.ts.map +1 -1
  646. package/lib/types/dsh-adapter/sessions/list.js +11 -5
  647. package/lib/types/dsh-adapter/sessions/snapshot.d.ts +0 -2
  648. package/lib/types/dsh-adapter/sessions/snapshot.d.ts.map +1 -1
  649. package/lib/types/dsh-adapter/sessions/snapshot.js +7 -70
  650. package/lib/types/dsh-adapter/settingsEditor.js +2 -2
  651. package/lib/types/dsh-adapter/sideQuestion.d.ts +21 -0
  652. package/lib/types/dsh-adapter/sideQuestion.d.ts.map +1 -1
  653. package/lib/types/dsh-adapter/sideQuestion.js +53 -0
  654. package/lib/types/dsh-adapter/startup-args.d.ts +2 -0
  655. package/lib/types/dsh-adapter/startup-args.d.ts.map +1 -1
  656. package/lib/types/dsh-adapter/startup-args.js +5 -0
  657. package/lib/types/dsh-adapter/subagents.d.ts +33 -1
  658. package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
  659. package/lib/types/dsh-adapter/subagents.js +112 -9
  660. package/lib/types/dsh-adapter/team-mode.d.ts +74 -0
  661. package/lib/types/dsh-adapter/team-mode.d.ts.map +1 -0
  662. package/lib/types/dsh-adapter/team-mode.js +188 -0
  663. package/lib/types/dsh-adapter/team-roster.d.ts +67 -0
  664. package/lib/types/dsh-adapter/team-roster.d.ts.map +1 -0
  665. package/lib/types/dsh-adapter/team-roster.js +136 -0
  666. package/lib/types/dsh-adapter/team-tools.d.ts +58 -0
  667. package/lib/types/dsh-adapter/team-tools.d.ts.map +1 -0
  668. package/lib/types/dsh-adapter/team-tools.js +208 -0
  669. package/lib/types/dsh-adapter/tui-settings.d.ts +57 -0
  670. package/lib/types/dsh-adapter/tui-settings.d.ts.map +1 -0
  671. package/lib/types/dsh-adapter/tui-settings.js +199 -0
  672. package/lib/types/dsh-adapter/types.d.ts +1 -1
  673. package/lib/types/dsh-adapter/types.d.ts.map +1 -1
  674. package/lib/types/effortPrefs.d.ts +6 -3
  675. package/lib/types/effortPrefs.d.ts.map +1 -1
  676. package/lib/types/effortPrefs.js +7 -4
  677. package/lib/types/hostEntryRoute.d.ts +18 -0
  678. package/lib/types/hostEntryRoute.d.ts.map +1 -0
  679. package/lib/types/hostEntryRoute.js +57 -0
  680. package/lib/types/i18n.d.ts +961 -1439
  681. package/lib/types/i18n.d.ts.map +1 -1
  682. package/lib/types/i18n.js +443 -387
  683. package/lib/types/ink/components/AlternateScreen.js +2 -2
  684. package/lib/types/ink/components/App.d.ts +1 -0
  685. package/lib/types/ink/components/App.d.ts.map +1 -1
  686. package/lib/types/ink/components/App.js +16 -4
  687. package/lib/types/ink/components/CursorDeclarationContext.d.ts +9 -0
  688. package/lib/types/ink/components/CursorDeclarationContext.d.ts.map +1 -1
  689. package/lib/types/ink/components/CursorDeclarationContext.js +2 -0
  690. package/lib/types/ink/components/ScrollBox.d.ts +9 -0
  691. package/lib/types/ink/components/ScrollBox.d.ts.map +1 -1
  692. package/lib/types/ink/components/ScrollBox.js +23 -0
  693. package/lib/types/ink/dom.d.ts.map +1 -1
  694. package/lib/types/ink/hooks/use-copy-on-select.d.ts +2 -2
  695. package/lib/types/ink/hooks/use-copy-on-select.d.ts.map +1 -1
  696. package/lib/types/ink/hooks/use-copy-on-select.js +13 -7
  697. package/lib/types/ink/hooks/use-declared-cursor.d.ts +11 -3
  698. package/lib/types/ink/hooks/use-declared-cursor.d.ts.map +1 -1
  699. package/lib/types/ink/hooks/use-declared-cursor.js +30 -10
  700. package/lib/types/ink/ink.d.ts +22 -17
  701. package/lib/types/ink/ink.d.ts.map +1 -1
  702. package/lib/types/ink/ink.js +151 -40
  703. package/lib/types/ink/kitty-graphics.d.ts +2 -0
  704. package/lib/types/ink/kitty-graphics.d.ts.map +1 -1
  705. package/lib/types/ink/kitty-graphics.js +6 -1
  706. package/lib/types/ink/node-cache.d.ts +2 -1
  707. package/lib/types/ink/node-cache.d.ts.map +1 -1
  708. package/lib/types/ink/output.d.ts +10 -4
  709. package/lib/types/ink/output.d.ts.map +1 -1
  710. package/lib/types/ink/output.js +14 -10
  711. package/lib/types/ink/render-node-to-output.d.ts +5 -2
  712. package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
  713. package/lib/types/ink/render-node-to-output.js +27 -9
  714. package/lib/types/ink/renderer.d.ts +1 -0
  715. package/lib/types/ink/renderer.d.ts.map +1 -1
  716. package/lib/types/ink/renderer.js +4 -3
  717. package/lib/types/ink/root.d.ts +4 -1
  718. package/lib/types/ink/root.d.ts.map +1 -1
  719. package/lib/types/ink/screen.d.ts +4 -2
  720. package/lib/types/ink/screen.d.ts.map +1 -1
  721. package/lib/types/ink/selection.d.ts +10 -1
  722. package/lib/types/ink/selection.d.ts.map +1 -1
  723. package/lib/types/ink/selection.js +94 -25
  724. package/lib/types/ink/stdin-handoff.d.ts +11 -0
  725. package/lib/types/ink/stdin-handoff.d.ts.map +1 -0
  726. package/lib/types/ink/stdin-handoff.js +20 -0
  727. package/lib/types/ink/styles.d.ts +2 -1
  728. package/lib/types/ink/styles.d.ts.map +1 -1
  729. package/lib/types/ink/terminal-image.d.ts +6 -4
  730. package/lib/types/ink/terminal-image.d.ts.map +1 -1
  731. package/lib/types/ink/terminal-image.js +16 -39
  732. package/lib/types/ink/terminal-notification.d.ts +8 -0
  733. package/lib/types/ink/terminal-notification.d.ts.map +1 -0
  734. package/lib/types/ink/terminal-notification.js +83 -0
  735. package/lib/types/ink/terminal.d.ts +9 -0
  736. package/lib/types/ink/terminal.d.ts.map +1 -1
  737. package/lib/types/ink/terminal.js +34 -1
  738. package/lib/types/ink/termio/csi.d.ts +11 -0
  739. package/lib/types/ink/termio/csi.d.ts.map +1 -1
  740. package/lib/types/ink/termio/csi.js +13 -0
  741. package/lib/types/ink/update-overflow-guard.d.ts +6 -0
  742. package/lib/types/ink/update-overflow-guard.d.ts.map +1 -1
  743. package/lib/types/ink/update-overflow-guard.js +17 -0
  744. package/lib/types/ink/wrap-text.d.ts +6 -0
  745. package/lib/types/ink/wrap-text.d.ts.map +1 -1
  746. package/lib/types/ink/wrap-text.js +17 -0
  747. package/lib/types/kernelPrefs.d.ts +130 -17
  748. package/lib/types/kernelPrefs.d.ts.map +1 -1
  749. package/lib/types/kernelPrefs.js +98 -35
  750. package/lib/types/math/inline-layout.d.ts +2 -0
  751. package/lib/types/math/inline-layout.d.ts.map +1 -1
  752. package/lib/types/math/inline-layout.js +5 -27
  753. package/lib/types/modelGroups.d.ts +15 -27
  754. package/lib/types/modelGroups.d.ts.map +1 -1
  755. package/lib/types/modelGroups.js +17 -31
  756. package/lib/types/modelPrefs.d.ts +5 -4
  757. package/lib/types/modelPrefs.d.ts.map +1 -1
  758. package/lib/types/modelPrefs.js +5 -4
  759. package/lib/types/modelRoute.d.ts +23 -9
  760. package/lib/types/modelRoute.d.ts.map +1 -1
  761. package/lib/types/modelRoute.js +25 -11
  762. package/lib/types/native-ts/yoga-layout/index.d.ts.map +1 -1
  763. package/lib/types/native-ts/yoga-layout/index.js +8 -1
  764. package/lib/types/permissionPrefs.d.ts +34 -0
  765. package/lib/types/permissionPrefs.d.ts.map +1 -0
  766. package/lib/types/permissionPrefs.js +61 -0
  767. package/lib/types/permissionPresetLabels.d.ts +25 -0
  768. package/lib/types/permissionPresetLabels.d.ts.map +1 -0
  769. package/lib/types/permissionPresetLabels.js +33 -0
  770. package/lib/types/plugin-host.d.ts +1 -0
  771. package/lib/types/plugin-host.d.ts.map +1 -1
  772. package/lib/types/preset-patch.d.ts +22 -0
  773. package/lib/types/preset-patch.d.ts.map +1 -0
  774. package/lib/types/preset-patch.js +14 -0
  775. package/lib/types/presetPrefs.d.ts +17 -3
  776. package/lib/types/presetPrefs.d.ts.map +1 -1
  777. package/lib/types/presetPrefs.js +20 -3
  778. package/lib/types/reload.d.ts +6 -10
  779. package/lib/types/reload.d.ts.map +1 -1
  780. package/lib/types/reload.js +14 -14
  781. package/lib/types/screens/Chat.d.ts +55 -16
  782. package/lib/types/screens/Chat.d.ts.map +1 -1
  783. package/lib/types/screens/Chat.js +742 -280
  784. package/lib/types/screens/Launchpad.d.ts +33 -17
  785. package/lib/types/screens/Launchpad.d.ts.map +1 -1
  786. package/lib/types/screens/Launchpad.js +256 -78
  787. package/lib/types/screens/SessionSupervisor.d.ts.map +1 -1
  788. package/lib/types/screens/SessionSupervisor.js +53 -12
  789. package/lib/types/screens/Settings.d.ts.map +1 -1
  790. package/lib/types/screens/Settings.js +7 -0
  791. package/lib/types/screens/StatusLine.d.ts.map +1 -1
  792. package/lib/types/screens/StatusLine.js +24 -7
  793. package/lib/types/screens/StatusMetrics.d.ts +46 -1
  794. package/lib/types/screens/StatusMetrics.d.ts.map +1 -1
  795. package/lib/types/screens/StatusMetrics.js +72 -0
  796. package/lib/types/screens/chat/useKernelPicker.d.ts +8 -4
  797. package/lib/types/screens/chat/useKernelPicker.d.ts.map +1 -1
  798. package/lib/types/screens/chat/useKernelPicker.js +61 -21
  799. package/lib/types/screens/chat/useModelPicker.d.ts +42 -0
  800. package/lib/types/screens/chat/useModelPicker.d.ts.map +1 -0
  801. package/lib/types/screens/chat/useModelPicker.js +182 -0
  802. package/lib/types/screens/chat/usePluginWriteFlow.d.ts +68 -0
  803. package/lib/types/screens/chat/usePluginWriteFlow.d.ts.map +1 -0
  804. package/lib/types/screens/chat/usePluginWriteFlow.js +92 -0
  805. package/lib/types/screens/chatOverlay.d.ts +30 -5
  806. package/lib/types/screens/chatOverlay.d.ts.map +1 -1
  807. package/lib/types/screens/chatOverlay.js +0 -1
  808. package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.d.ts +4 -1
  809. package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.d.ts.map +1 -1
  810. package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.js +26 -5
  811. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts +1 -1
  812. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts.map +1 -1
  813. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.js +51 -29
  814. package/lib/types/sessionHistory.d.ts +5 -0
  815. package/lib/types/sessionHistory.d.ts.map +1 -1
  816. package/lib/types/sessionHistory.js +5 -0
  817. package/lib/types/sessionModes.d.ts +5 -3
  818. package/lib/types/sessionModes.d.ts.map +1 -1
  819. package/lib/types/sessionModes.js +9 -3
  820. package/lib/types/sessions/listSnapshot.d.ts +6 -0
  821. package/lib/types/sessions/listSnapshot.d.ts.map +1 -0
  822. package/lib/types/sessions/listSnapshot.js +67 -0
  823. package/lib/types/settings/definitions.d.ts +50 -0
  824. package/lib/types/settings/definitions.d.ts.map +1 -1
  825. package/lib/types/settings/definitions.js +42 -8
  826. package/lib/types/terminal-utils/cjk-emphasis.d.ts +28 -0
  827. package/lib/types/terminal-utils/cjk-emphasis.d.ts.map +1 -0
  828. package/lib/types/terminal-utils/cjk-emphasis.js +31 -0
  829. package/lib/types/terminal-utils/markdown.d.ts +3 -1
  830. package/lib/types/terminal-utils/markdown.d.ts.map +1 -1
  831. package/lib/types/terminal-utils/markdown.js +7 -2
  832. package/lib/types/theme.d.ts +29 -12
  833. package/lib/types/theme.d.ts.map +1 -1
  834. package/lib/types/theme.js +310 -23
  835. package/lib/types/themeCatalog.d.ts.map +1 -1
  836. package/lib/types/themeCatalog.js +21 -2
  837. package/lib/types/tips.js +4 -4
  838. package/lib/types/tuiSettingsFile.d.ts +56 -0
  839. package/lib/types/tuiSettingsFile.d.ts.map +1 -0
  840. package/lib/types/tuiSettingsFile.js +206 -0
  841. package/lib/types/ui.d.ts +2 -0
  842. package/lib/types/ui.d.ts.map +1 -1
  843. package/lib/types/ui.js +2 -0
  844. package/lib/types/update.d.ts +72 -26
  845. package/lib/types/update.d.ts.map +1 -1
  846. package/lib/types/update.js +131 -43
  847. package/lib/types/utils/bmp.d.ts +7 -0
  848. package/lib/types/utils/bmp.d.ts.map +1 -1
  849. package/lib/types/utils/bmp.js +27 -0
  850. package/lib/types/utils/bootTrace.d.ts +2 -0
  851. package/lib/types/utils/bootTrace.d.ts.map +1 -0
  852. package/lib/types/utils/bootTrace.js +20 -0
  853. package/lib/types/utils/clipboard.d.ts.map +1 -1
  854. package/lib/types/utils/clipboard.js +11 -3
  855. package/lib/types/utils/credentials.d.ts +14 -2
  856. package/lib/types/utils/credentials.d.ts.map +1 -1
  857. package/lib/types/utils/credentials.js +34 -11
  858. package/lib/types/utils/imageResize.d.ts +10 -20
  859. package/lib/types/utils/imageResize.d.ts.map +1 -1
  860. package/lib/types/utils/imageResize.js +61 -134
  861. package/lib/types/utils/inputPaste.d.ts +2 -2
  862. package/lib/types/utils/inputPaste.js +2 -2
  863. package/lib/types/utils/pastedImagePath.d.ts +5 -0
  864. package/lib/types/utils/pastedImagePath.d.ts.map +1 -1
  865. package/lib/types/utils/pastedImagePath.js +33 -0
  866. package/lib/types/utils/paths.d.ts +11 -0
  867. package/lib/types/utils/paths.d.ts.map +1 -1
  868. package/lib/types/utils/paths.js +13 -0
  869. package/package.json +150 -114
  870. package/presets/winbash.mjs +716 -0
  871. package/tui-profile/feed/README.md +63 -0
  872. package/tui-profile/feed/first-party.json +10 -0
  873. package/tui-profile/protocols/profile-definitions.d.ts +1 -0
  874. package/tui-profile/protocols/profile-definitions.js +14 -0
  875. package/tui-profile/protocols/tui-contributions.d.ts +55 -0
  876. package/tui-profile/protocols/tui-contributions.js +141 -0
  877. package/tui-profile/registry/contracts/backend-v1alpha1.json +13 -0
  878. package/tui-profile/registry/registry-0.15.json +12 -0
  879. package/lib/types/backends/claude/install.d.ts +0 -15
  880. package/lib/types/backends/claude/install.d.ts.map +0 -1
  881. package/lib/types/backends/claude/install.js +0 -91
  882. package/lib/types/channel/elicitation.d.ts.map +0 -1
  883. package/lib/types/dsh-adapter/channel/session-lineage.d.ts +0 -42
  884. package/lib/types/dsh-adapter/channel/session-lineage.d.ts.map +0 -1
  885. package/lib/types/dsh-adapter/channel/session-lineage.js +0 -51
  886. package/lib/types/utils/jsonl.d.ts.map +0 -1
@@ -0,0 +1,188 @@
1
+ import { t } from '../i18n.js';
2
+ import { resolveDshProfileName } from '../update.js';
3
+ import { installedKernelVersion, UPSTREAM_VALIDATED_VERSION } from './contract.js';
4
+ import { createPluginManageFlow } from './plugin-manage.js';
5
+ import { pluginManagerOf } from './plugin-manager.js';
6
+ import { cell } from './plugins-info.js';
7
+ import { TEAM_BUNDLE } from './team-roster.js';
8
+ import { TEAM_SPAWN_TOOL } from './team-tools.js';
9
+ /**
10
+ * The DSH lines whose team bundle this adapter reads: the validated line,
11
+ * 0.2.1-alpha.5 (its team packages differ from rc.2 only in version) and the
12
+ * 0.2.0 compat line (compat/agent-team-0.2.0.ts; rc.1 ships the same team
13
+ * code as rc.2). Other lines' team projection may lack the `wire` view
14
+ * `channel.team` needs.
15
+ */
16
+ const TEAM_LINES = new Set([UPSTREAM_VALIDATED_VERSION, '0.2.1-alpha.5', '0.2.0-rc.1', '0.2.0-rc.2']);
17
+ /**
18
+ * The install spec the hints name. The team packages ship in lockstep with
19
+ * DSH and pin their DSH peers exactly, so only the bundle of the running
20
+ * kernel's own version installs into this host (npm `latest` and `next`
21
+ * both name other lines).
22
+ * @param kernel - The running DSH version; unknown falls back to the validated line.
23
+ * @returns `<bundle>@<version>`, or undefined on a known kernel that is not a
24
+ * team line: no bundle installs there, DSH has to move to a team line first.
25
+ */
26
+ export function teamBundleSpec(kernel) {
27
+ if (kernel === undefined)
28
+ return `${TEAM_BUNDLE}@${UPSTREAM_VALIDATED_VERSION}`;
29
+ return TEAM_LINES.has(kernel) ? `${TEAM_BUNDLE}@${kernel}` : undefined;
30
+ }
31
+ /**
32
+ * Legacy delegation tools that `spawn_teammate` replaces. The four control
33
+ * tools the team shares names with (`send_message`, `list_agents`,
34
+ * `interrupt_agent`, `wait_agent`) need no entry: the team copies live in the
35
+ * Agent's own scope and shadow the preset's, in the assembly and at execution.
36
+ */
37
+ const TEAM_REPLACED_TOOLS = new Set(['subagent', 'subagent_fork']);
38
+ /**
39
+ * Keep one delegation tool set per request. Presets keep their legacy rows,
40
+ * so whether the team replaces them is decided where the tools are known: an
41
+ * assembly carrying `spawn_teammate` drops `subagent` / `subagent_fork`. This
42
+ * follows a bundle toggled at run time into the sessions already joined (a
43
+ * preset revision cannot), and a team service that never activated leaves the
44
+ * legacy tools in place. The agent loop diffs these final tools against the
45
+ * logged request header, so the model is told about each swap.
46
+ * @param assembly - Fully assembled prompt inputs for one model request.
47
+ * @returns The original assembly, or a copy without the replaced tools.
48
+ */
49
+ export function filterTeamReplacedTools(assembly) {
50
+ if (!assembly.tools.some(tool => tool.name === TEAM_SPAWN_TOOL))
51
+ return assembly;
52
+ if (!assembly.tools.some(tool => TEAM_REPLACED_TOOLS.has(tool.name)))
53
+ return assembly;
54
+ return { ...assembly, tools: assembly.tools.filter(tool => !TEAM_REPLACED_TOOLS.has(tool.name)) };
55
+ }
56
+ export function parseTeamArgs(args) {
57
+ const sub = args.trim().split(/\s+/)[0] ?? '';
58
+ if (sub === '' || sub === 'status')
59
+ return { kind: 'status' };
60
+ if (sub === 'on' || sub === 'off')
61
+ return { kind: sub };
62
+ return { kind: 'unknown', sub };
63
+ }
64
+ /**
65
+ * Wire `/team` to the running composition.
66
+ * @param ctx - Host context of the composition root.
67
+ * @param options - The profile a manual route names, and the running host's
68
+ * DSH version (this package's entry; otherwise the installed one is read).
69
+ * @returns the command entry the screen calls.
70
+ */
71
+ export function createTeamCommandEntry(ctx, options = {}) {
72
+ const profile = () => options.profileName ?? resolveDshProfileName() ?? 'dsh-tui';
73
+ // The version does not change in a process: read it once, on the first hint.
74
+ let kernel;
75
+ const hint = (key) => {
76
+ kernel ??= { version: options.kernelVersion ?? installedKernelVersion() };
77
+ const spec = teamBundleSpec(kernel.version);
78
+ return spec === undefined
79
+ ? t('team-cmd-kernel-unsupported', { version: cell(kernel.version ?? ''), lines: [...TEAM_LINES].join(' / ') })
80
+ : t(key, { profile: cell(profile()), bundle: spec });
81
+ };
82
+ return (args, sink) => {
83
+ const parsed = parseTeamArgs(args);
84
+ if (parsed.kind === 'unknown') {
85
+ return { kind: 'lines', lines: Promise.resolve([t('team-cmd-usage', { sub: cell(parsed.sub) })]) };
86
+ }
87
+ const manager = pluginManagerOf(ctx);
88
+ if (parsed.kind === 'status')
89
+ return { kind: 'lines', lines: teamStatusLines(ctx, sink, hint) };
90
+ if (manager === undefined) {
91
+ return { kind: 'lines', lines: Promise.resolve([hint('team-cmd-no-manager')]) };
92
+ }
93
+ const flow = createPluginManageFlow({
94
+ manager,
95
+ action: parsed.kind === 'on' ? 'enable' : 'disable',
96
+ target: TEAM_BUNDLE,
97
+ binding: sink.binding,
98
+ busy: sink.busy,
99
+ onLines: sink.onLines,
100
+ profileName: profile(),
101
+ teamActiveMembers: sink.members,
102
+ });
103
+ // Without the package the lifecycle flow would answer with its generic
104
+ // "no such target" and every addressable name. Say what is missing
105
+ // instead: `on` with how to install it (installing stays an explicit
106
+ // `/plugin install`, it runs third-party code behind its own trust step),
107
+ // `off` that there is nothing to switch off.
108
+ const bindingAtStart = sink.binding();
109
+ return {
110
+ kind: 'flow',
111
+ flow: {
112
+ ...flow,
113
+ async begin() {
114
+ let installed = true;
115
+ let enabled = false;
116
+ try {
117
+ const entry = (await manager.listBundles()).find(candidate => candidate.name === TEAM_BUNDLE);
118
+ installed = entry !== undefined;
119
+ enabled = entry?.enabled === true;
120
+ }
121
+ catch {
122
+ // A failing read is the flow's to report: it reads the same list.
123
+ }
124
+ if (parsed.kind === 'off') {
125
+ if (installed)
126
+ return flow.begin();
127
+ if (sink.binding() === bindingAtStart)
128
+ sink.onLines([t('team-cmd-off-not-installed')]);
129
+ return { kind: 'done' };
130
+ }
131
+ // Already selected: no trust question about code already running,
132
+ // no no-op write. Say whether it is actually running.
133
+ if (installed && !enabled)
134
+ return flow.begin();
135
+ if (sink.binding() === bindingAtStart) {
136
+ sink.onLines(!installed
137
+ ? [hint('team-cmd-not-installed')]
138
+ : [t('team-cmd-already-on'), ...ctx.get('agentTeams', false) === undefined ? [t('team-cmd-pending-on')] : []]);
139
+ }
140
+ return { kind: 'done' };
141
+ },
142
+ },
143
+ };
144
+ };
145
+ }
146
+ /**
147
+ * `/team` and `/team status`: whether the profile selects the bundle, whether
148
+ * the team service is running in this process, and the bound session's team.
149
+ */
150
+ async function teamStatusLines(ctx, sink, hint) {
151
+ const manager = pluginManagerOf(ctx);
152
+ const service = ctx.get('agentTeams', false) !== undefined;
153
+ const lines = [];
154
+ if (manager === undefined) {
155
+ lines.push(t('team-cmd-service', { state: t(service ? 'team-cmd-running' : 'team-cmd-stopped') }));
156
+ lines.push(hint('team-cmd-no-manager'));
157
+ }
158
+ else {
159
+ let selected;
160
+ let installed = false;
161
+ try {
162
+ const bundle = (await manager.listBundles()).find(candidate => candidate.name === TEAM_BUNDLE);
163
+ installed = bundle !== undefined;
164
+ selected = bundle?.enabled;
165
+ }
166
+ catch (error) {
167
+ lines.push(t('plugins-service-error', { err: cell(error instanceof Error ? error.message : String(error)) }));
168
+ }
169
+ if (selected !== undefined || installed) {
170
+ lines.push(t('team-cmd-bundle', { state: t(selected === true ? 'team-cmd-on' : 'team-cmd-off') }));
171
+ }
172
+ else if (lines.length === 0) {
173
+ lines.push(hint('team-cmd-not-installed'));
174
+ }
175
+ lines.push(t('team-cmd-service', { state: t(service ? 'team-cmd-running' : 'team-cmd-stopped') }));
176
+ // The profile says on but nothing runs (a startup-only profile, or the
177
+ // service failed to activate), or the reverse: say which one wins now.
178
+ if (selected === true && !service)
179
+ lines.push(t('team-cmd-pending-on'));
180
+ if (selected === false && service)
181
+ lines.push(t('team-cmd-pending-off'));
182
+ }
183
+ const { total, active, unseen } = sink.members();
184
+ lines.push(total === 0
185
+ ? t('team-cmd-no-members')
186
+ : t(unseen === 0 ? 'team-cmd-members' : 'team-cmd-members-unseen', { total: String(total), active: String(active), unseen: String(unseen) }));
187
+ return lines;
188
+ }
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Read side of DSH's experimental Agent Teams: the Lead session's `agentTeam`
3
+ * projection (roster + non-deleted task board), folded for the session on
4
+ * screen. Inside a teammate it reads the Lead's value, found through the
5
+ * teammate header's `parentSession` (another child of the Lead reads none).
6
+ *
7
+ * The wire value is narrowed locally (`@deepseek-ai/dsh-experimental-agent-team`
8
+ * is never imported); a composition without the team service never publishes
9
+ * the key and the store stays empty.
10
+ *
11
+ * @module
12
+ */
13
+ import type { Context } from '@deepseek-ai/cordis';
14
+ import type { TeamView } from '../adapter/ports/channel-view.js';
15
+ import { type SessionProjectionStore, type WatchedSession } from './session-projection-store.js';
16
+ export declare const TEAM_PROJECTION_KEY = "agentTeam";
17
+ /** The upstream bundle that mounts the team service and tools: the team-mode switch. */
18
+ export declare const TEAM_BUNDLE = "@deepseek-ai/dsh-experimental-agent-team-profile";
19
+ /** What the channel reads: the team of one session, if any. */
20
+ export interface TeamSource {
21
+ /** The team of `sessionId` — `undefined` unless it is the session last
22
+ * seeded (a non-DSH session never seeds, so it never reads a stale team). */
23
+ teamOf(sessionId: string): TeamView | undefined;
24
+ subscribe(listener: () => void): () => void;
25
+ }
26
+ export type TeamRosterStore = SessionProjectionStore<TeamView> & TeamSource;
27
+ /**
28
+ * Narrow one `agentTeam` value into the view the UI renders. A session's
29
+ * implicit team (the Lead alone, no task, no failure) is no team: every root
30
+ * session publishes that baseline once the service is mounted.
31
+ * @param value - Raw projection value.
32
+ * @param leadSessionId - The session the value was published for.
33
+ * @returns the team view, or `undefined` when there is nothing to show.
34
+ */
35
+ export declare function asTeamView(value: unknown, leadSessionId: string): TeamView | undefined;
36
+ interface AgentsLike {
37
+ list(): Iterable<{
38
+ readonly session: {
39
+ readonly id: unknown;
40
+ };
41
+ }>;
42
+ }
43
+ /**
44
+ * The team a bound session belongs to is rooted at itself, or — for a
45
+ * delegated child — at its parent: teammates are direct children of the Lead.
46
+ * @param session - The bound session.
47
+ * @param agents - Live agents, to find the Lead's session object for a baseline.
48
+ * @returns the session whose `agentTeam` value to read.
49
+ */
50
+ export declare function teamRootOf(session: unknown, agents: AgentsLike | undefined): WatchedSession;
51
+ /**
52
+ * The watched team as seen from `sessionId`: the Lead's own, or a listed
53
+ * teammate's. Any other child of the Lead (a plain subagent, a workflow
54
+ * spawn) is watched at the same parent but belongs to no team.
55
+ * @param team - The watched session's team.
56
+ * @param sessionId - The bound session.
57
+ * @returns the team, or `undefined` when the session is not on it.
58
+ */
59
+ export declare function teamFor(team: TeamView | undefined, sessionId: string): TeamView | undefined;
60
+ /**
61
+ * Create the composition root's team store and wire it to the host.
62
+ * @param ctx - Host context of the composition root.
63
+ * @returns the store the channel reads from.
64
+ */
65
+ export declare function createTeamRosterStore(ctx: Context): TeamRosterStore;
66
+ export {};
67
+ //# sourceMappingURL=team-roster.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-roster.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/team-roster.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAwB,QAAQ,EAAE,MAAM,kCAAkC,CAAA;AACtF,OAAO,EAAyD,KAAK,sBAAsB,EAAE,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAEvJ,eAAO,MAAM,mBAAmB,cAAc,CAAA;AAE9C,wFAAwF;AACxF,eAAO,MAAM,WAAW,qDAAqD,CAAA;AAE7E,+DAA+D;AAC/D,MAAM,WAAW,UAAU;IACzB;kFAC8E;IAC9E,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAA;IAC/C,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;CAC5C;AAED,MAAM,MAAM,eAAe,GAAG,sBAAsB,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAA;AAkC3E;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAUtF;AAOD,UAAU,UAAU;IAClB,IAAI,IAAI,QAAQ,CAAC;QAAE,QAAQ,CAAC,OAAO,EAAE;YAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;SAAE,CAAA;KAAE,CAAC,CAAA;CACjE;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,cAAc,CAQ3F;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAG3F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAyBnE"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Read side of DSH's experimental Agent Teams: the Lead session's `agentTeam`
3
+ * projection (roster + non-deleted task board), folded for the session on
4
+ * screen. Inside a teammate it reads the Lead's value, found through the
5
+ * teammate header's `parentSession` (another child of the Lead reads none).
6
+ *
7
+ * The wire value is narrowed locally (`@deepseek-ai/dsh-experimental-agent-team`
8
+ * is never imported); a composition without the team service never publishes
9
+ * the key and the store stays empty.
10
+ *
11
+ * @module
12
+ */
13
+ import { attachSessionProjection, createSessionProjectionStore } from './session-projection-store.js';
14
+ export const TEAM_PROJECTION_KEY = 'agentTeam';
15
+ /** The upstream bundle that mounts the team service and tools: the team-mode switch. */
16
+ export const TEAM_BUNDLE = '@deepseek-ai/dsh-experimental-agent-team-profile';
17
+ const PHASES = new Set(['provisioning', 'active', 'failed']);
18
+ const TASK_STATUSES = new Set(['pending', 'in_progress', 'completed']);
19
+ function isRecord(value) {
20
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
21
+ }
22
+ function isStringArray(value) {
23
+ return Array.isArray(value) && value.every(item => typeof item === 'string');
24
+ }
25
+ function asMember(value) {
26
+ if (!isRecord(value))
27
+ return undefined;
28
+ const { id, name, role, phase, error } = value;
29
+ if (typeof id !== 'string' || typeof name !== 'string')
30
+ return undefined;
31
+ if (role !== 'lead' && role !== 'teammate')
32
+ return undefined;
33
+ if (typeof phase !== 'string' || !PHASES.has(phase))
34
+ return undefined;
35
+ return { id, name, role, phase: phase, ...typeof error === 'string' ? { error } : {} };
36
+ }
37
+ function asTask(value) {
38
+ if (!isRecord(value))
39
+ return undefined;
40
+ const { id, revision, subject, description, status, blockedBy, writeScopes, ownerName, ready, writeScopeWarnings } = value;
41
+ if (typeof id !== 'string' || typeof revision !== 'number' || typeof subject !== 'string' || typeof description !== 'string')
42
+ return undefined;
43
+ if (typeof status !== 'string' || !TASK_STATUSES.has(status))
44
+ return undefined;
45
+ if (!isStringArray(blockedBy) || !isStringArray(writeScopes) || !isStringArray(writeScopeWarnings) || typeof ready !== 'boolean')
46
+ return undefined;
47
+ return {
48
+ id, revision, subject, description, status: status, blockedBy, writeScopes, ready, writeScopeWarnings,
49
+ ...typeof ownerName === 'string' ? { ownerName } : {},
50
+ };
51
+ }
52
+ /**
53
+ * Narrow one `agentTeam` value into the view the UI renders. A session's
54
+ * implicit team (the Lead alone, no task, no failure) is no team: every root
55
+ * session publishes that baseline once the service is mounted.
56
+ * @param value - Raw projection value.
57
+ * @param leadSessionId - The session the value was published for.
58
+ * @returns the team view, or `undefined` when there is nothing to show.
59
+ */
60
+ export function asTeamView(value, leadSessionId) {
61
+ if (!isRecord(value) || !Array.isArray(value.members) || !Array.isArray(value.tasks))
62
+ return undefined;
63
+ const members = value.members.map(asMember);
64
+ const tasks = value.tasks.map(asTask);
65
+ if (members.includes(undefined) || tasks.includes(undefined))
66
+ return undefined;
67
+ const failure = typeof value.failure === 'string' ? value.failure : undefined;
68
+ const roster = members;
69
+ const board = tasks;
70
+ if (!roster.some(member => member.role === 'teammate') && board.length === 0 && failure === undefined)
71
+ return undefined;
72
+ return { leadSessionId, members: roster, tasks: board, ...failure === undefined ? {} : { failure } };
73
+ }
74
+ /**
75
+ * The team a bound session belongs to is rooted at itself, or — for a
76
+ * delegated child — at its parent: teammates are direct children of the Lead.
77
+ * @param session - The bound session.
78
+ * @param agents - Live agents, to find the Lead's session object for a baseline.
79
+ * @returns the session whose `agentTeam` value to read.
80
+ */
81
+ export function teamRootOf(session, agents) {
82
+ const own = session;
83
+ const parent = own.header?.origin === 'subagent' ? own.header.parentSession : undefined;
84
+ if (typeof parent !== 'string')
85
+ return { id: String(own.id), session };
86
+ for (const agent of agents?.list() ?? []) {
87
+ if (String(agent.session.id) === parent)
88
+ return { id: parent, session: agent.session };
89
+ }
90
+ return { id: parent };
91
+ }
92
+ /**
93
+ * The watched team as seen from `sessionId`: the Lead's own, or a listed
94
+ * teammate's. Any other child of the Lead (a plain subagent, a workflow
95
+ * spawn) is watched at the same parent but belongs to no team.
96
+ * @param team - The watched session's team.
97
+ * @param sessionId - The bound session.
98
+ * @returns the team, or `undefined` when the session is not on it.
99
+ */
100
+ export function teamFor(team, sessionId) {
101
+ if (team === undefined || team.leadSessionId === sessionId)
102
+ return team;
103
+ return team.members.some(member => member.role === 'teammate' && member.id === sessionId) ? team : undefined;
104
+ }
105
+ /**
106
+ * Create the composition root's team store and wire it to the host.
107
+ * @param ctx - Host context of the composition root.
108
+ * @returns the store the channel reads from.
109
+ */
110
+ export function createTeamRosterStore(ctx) {
111
+ const store = createSessionProjectionStore({
112
+ key: TEAM_PROJECTION_KEY,
113
+ // A team bundle switched off at run time takes the service down before
114
+ // (or while) its projection definition leaves: no service, no team.
115
+ narrow: (value, leadSessionId) => (ctx.get('agentTeams', false) === undefined ? undefined : asTeamView(value, leadSessionId)),
116
+ watch: session => teamRootOf(session, ctx.get('agents')),
117
+ warn: message => { ctx.logger.warn(message); },
118
+ });
119
+ attachSessionProjection(ctx, TEAM_PROJECTION_KEY, store);
120
+ // The plugin manager announces every profile write it applied (`/team`,
121
+ // `/plugin`, the Web UI). Unregistering a projection emits nothing on the
122
+ // change feed, so the bound session is read again: an unmounted team clears
123
+ // the view, a remounted one comes back from the Lead's log.
124
+ ctx.on('plugin-manager/changed', () => { store.reseed(); });
125
+ // Not every service change is announced there (an HMR-applied CLI or hand
126
+ // edit, a late or recovered activation), and the narrow reads the service:
127
+ // follow it directly. A service that comes back before its projection
128
+ // definition reads absent here; the manager event above reads it again.
129
+ ctx.on('internal/service', ((name) => {
130
+ if (name === 'agentTeams')
131
+ store.reseed();
132
+ }));
133
+ return Object.assign(store, {
134
+ teamOf: (sessionId) => (store.boundId === sessionId ? teamFor(store.read(), sessionId) : undefined),
135
+ });
136
+ }
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Compact cards for DSH's experimental Agent Teams tools. Their results are
3
+ * compact JSON records and the tools ship no presenters, so the plain card
4
+ * would show a capitalised tool id and a raw `⎿ {"messageId":…}` line. These
5
+ * views fold known shapes into one line; anything else (an error text, a
6
+ * changed upstream shape) falls back to the plain card. A presenter the tool
7
+ * itself registers always wins: these run only when it has none.
8
+ * `spawn_teammate` is not here — it renders as the subagent row, and as a
9
+ * plain card only when it fails before the teammate exists (translate.ts).
10
+ *
11
+ * Three names are shared with the legacy subagent controls, which also ship
12
+ * no presenters: a team call is told apart by its `target` argument (the
13
+ * legacy ones take `agent_id`), a team result by its record shape.
14
+ *
15
+ * {@link teamMessageOf} reads a delivered team message for the transcript
16
+ * translator.
17
+ *
18
+ * @module
19
+ */
20
+ import type { ToolCallView, ToolResultView } from './channel/types.js';
21
+ /** The team's own delegation tool; its presence is what "team on" means to a request. */
22
+ export declare const TEAM_SPAWN_TOOL = "spawn_teammate";
23
+ /** Whether `name` is a team tool with a compact card here (not `spawn_teammate`). */
24
+ export declare function isTeamToolName(name: string): boolean;
25
+ /**
26
+ * Call card for a team tool without its own presenter.
27
+ * @param name - Tool name.
28
+ * @param rawArgs - The call's JSON arguments.
29
+ * @returns the card, or `undefined` when this is not a team tool call it knows.
30
+ */
31
+ export declare function teamToolCallView(name: string, rawArgs: string): ToolCallView | undefined;
32
+ /**
33
+ * Result card for a team tool without its own presenter. It replaces the
34
+ * call card, so it carries the call's title too.
35
+ * @param name - Tool name.
36
+ * @param rawArgs - The call's JSON arguments.
37
+ * @param text - The result's text content.
38
+ * @returns the card, or `undefined` for anything but a known result record.
39
+ */
40
+ export declare function teamToolResultView(name: string, rawArgs: string, text: string): ToolResultView | undefined;
41
+ /**
42
+ * An Agent Teams message delivered to a session (`user/message`): the
43
+ * generic relay (`agent-message` / `relay`) whose first block is exactly
44
+ * `Team message from <name>:`. A relay is any agent's message (the legacy
45
+ * `send_message` writes one too), so only the team's framing block marks it
46
+ * as a team message; the sender label replaces that block. The relay also
47
+ * reaches the agent-message feed, which owns it on a teammate's own pages;
48
+ * this reading is for the receiving transcript. A 0.2.0 log is read through
49
+ * `compat/agent-team-0.2.0.ts` first.
50
+ */
51
+ export declare function teamMessageOf<B extends {
52
+ readonly type: string;
53
+ }>(source: unknown, content: readonly B[]): {
54
+ sender: string;
55
+ blocks: readonly B[];
56
+ text: string;
57
+ } | undefined;
58
+ //# sourceMappingURL=team-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-tools.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/team-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAgBtE,yFAAyF;AACzF,eAAO,MAAM,eAAe,mBAAmB,CAAA;AAE/C,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AA4CD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAKxF;AAmDD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAa1G;AAKD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAgB7K"}
@@ -0,0 +1,208 @@
1
+ /**
2
+ * Compact cards for DSH's experimental Agent Teams tools. Their results are
3
+ * compact JSON records and the tools ship no presenters, so the plain card
4
+ * would show a capitalised tool id and a raw `⎿ {"messageId":…}` line. These
5
+ * views fold known shapes into one line; anything else (an error text, a
6
+ * changed upstream shape) falls back to the plain card. A presenter the tool
7
+ * itself registers always wins: these run only when it has none.
8
+ * `spawn_teammate` is not here — it renders as the subagent row, and as a
9
+ * plain card only when it fails before the teammate exists (translate.ts).
10
+ *
11
+ * Three names are shared with the legacy subagent controls, which also ship
12
+ * no presenters: a team call is told apart by its `target` argument (the
13
+ * legacy ones take `agent_id`), a team result by its record shape.
14
+ *
15
+ * {@link teamMessageOf} reads a delivered team message for the transcript
16
+ * translator.
17
+ *
18
+ * @module
19
+ */
20
+ import { agentRelaySourceOf } from '../agent/messages.js';
21
+ import { legacySendMessageStatus } from './compat/agent-team-0.2.0.js';
22
+ const DISPLAY_KEYS = {
23
+ send_message: 'tool-name-team-message',
24
+ list_agents: 'tool-name-team-roster',
25
+ wait_agent: 'tool-name-team-wait',
26
+ interrupt_agent: 'tool-name-team-interrupt',
27
+ team_task_create: 'tool-name-team-task',
28
+ team_task_list: 'tool-name-team-task',
29
+ team_task_get: 'tool-name-team-task',
30
+ team_task_update: 'tool-name-team-task',
31
+ };
32
+ /** The team's own delegation tool; its presence is what "team on" means to a request. */
33
+ export const TEAM_SPAWN_TOOL = 'spawn_teammate';
34
+ /** Whether `name` is a team tool with a compact card here (not `spawn_teammate`). */
35
+ export function isTeamToolName(name) {
36
+ return DISPLAY_KEYS[name] !== undefined;
37
+ }
38
+ function isRecord(value) {
39
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
40
+ }
41
+ function str(value) {
42
+ return typeof value === 'string' && value !== '' ? value : undefined;
43
+ }
44
+ function firstLine(text) {
45
+ return text.split('\n', 1)[0].trim();
46
+ }
47
+ function callTitle(name, args) {
48
+ switch (name) {
49
+ case 'send_message': {
50
+ const target = str(args.target);
51
+ if (target === undefined)
52
+ return undefined;
53
+ const message = str(args.message);
54
+ return message === undefined ? `→ ${target}` : `→ ${target} · ${firstLine(message)}`;
55
+ }
56
+ // `list_agents` / `wait_agent` calls carry nothing that tells them from the
57
+ // legacy subagent controls of the same names; only their results do.
58
+ case 'interrupt_agent':
59
+ return str(args.target);
60
+ case 'team_task_create':
61
+ return str(args.subject);
62
+ case 'team_task_list':
63
+ return ['status', 'owner', 'ready'].flatMap(key => (args[key] === undefined ? [] : [`${key}=${String(args[key])}`])).join(' ') || undefined;
64
+ case 'team_task_get':
65
+ return str(args.task_id);
66
+ case 'team_task_update': {
67
+ const id = str(args.task_id);
68
+ const action = str(args.action);
69
+ if (id === undefined || action === undefined)
70
+ return undefined;
71
+ const owner = str(args.owner);
72
+ return owner === undefined ? `${id} ${action}` : `${id} ${action} → ${owner}`;
73
+ }
74
+ default:
75
+ return undefined;
76
+ }
77
+ }
78
+ /**
79
+ * Call card for a team tool without its own presenter.
80
+ * @param name - Tool name.
81
+ * @param rawArgs - The call's JSON arguments.
82
+ * @returns the card, or `undefined` when this is not a team tool call it knows.
83
+ */
84
+ export function teamToolCallView(name, rawArgs) {
85
+ const displayKey = DISPLAY_KEYS[name];
86
+ if (displayKey === undefined)
87
+ return undefined;
88
+ const title = titleOf(name, rawArgs);
89
+ return title === undefined ? undefined : { card: 'generic', title, displayKey, category: 'other' };
90
+ }
91
+ function titleOf(name, rawArgs) {
92
+ let args;
93
+ try {
94
+ args = JSON.parse(rawArgs);
95
+ }
96
+ catch {
97
+ return undefined;
98
+ }
99
+ return isRecord(args) ? callTitle(name, args) : undefined;
100
+ }
101
+ function taskLine(task) {
102
+ const id = str(task.id);
103
+ const status = str(task.status);
104
+ if (id === undefined || status === undefined || typeof task.revision !== 'number')
105
+ return undefined;
106
+ const owner = str(task.ownerName);
107
+ return `${id} r${task.revision} · ${status}${owner === undefined ? '' : ` · ${owner}`}`;
108
+ }
109
+ function resultLine(name, value) {
110
+ switch (name) {
111
+ case 'send_message':
112
+ if (!isRecord(value))
113
+ return undefined;
114
+ if (value.sent === true)
115
+ return 'sent';
116
+ // compat(dsh 0.2.0, log): the mailbox status a 0.2.0 send answered.
117
+ return legacySendMessageStatus(value);
118
+ case 'list_agents': {
119
+ if (!Array.isArray(value))
120
+ return undefined;
121
+ const members = value.flatMap(member => (isRecord(member) && str(member.target) !== undefined && str(member.status) !== undefined
122
+ ? [`${String(member.target)} ${String(member.status)}`]
123
+ : []));
124
+ return members.length === value.length ? members.join(' · ') : undefined;
125
+ }
126
+ case 'wait_agent':
127
+ if (!isRecord(value) || typeof value.timedOut !== 'boolean')
128
+ return undefined;
129
+ if (value.noProgress)
130
+ return 'noProgress';
131
+ return value.timedOut ? 'timedOut' : 'changed';
132
+ case 'interrupt_agent':
133
+ return isRecord(value) ? str(value.previousStatus) : undefined;
134
+ case 'team_task_list': {
135
+ if (!isRecord(value) || !Array.isArray(value.tasks))
136
+ return undefined;
137
+ const tasks = value.tasks.map(task => (isRecord(task) ? taskLine(task) : undefined));
138
+ if (tasks.includes(undefined))
139
+ return undefined;
140
+ return tasks.join('\n');
141
+ }
142
+ case 'team_task_create':
143
+ case 'team_task_get':
144
+ case 'team_task_update':
145
+ return isRecord(value) ? taskLine(value) : undefined;
146
+ default:
147
+ return undefined;
148
+ }
149
+ }
150
+ /**
151
+ * Result card for a team tool without its own presenter. It replaces the
152
+ * call card, so it carries the call's title too.
153
+ * @param name - Tool name.
154
+ * @param rawArgs - The call's JSON arguments.
155
+ * @param text - The result's text content.
156
+ * @returns the card, or `undefined` for anything but a known result record.
157
+ */
158
+ export function teamToolResultView(name, rawArgs, text) {
159
+ const displayKey = DISPLAY_KEYS[name];
160
+ if (displayKey === undefined || !text.startsWith('{') && !text.startsWith('['))
161
+ return undefined;
162
+ let value;
163
+ try {
164
+ value = JSON.parse(text);
165
+ }
166
+ catch {
167
+ return undefined;
168
+ }
169
+ const line = resultLine(name, value);
170
+ if (line === undefined)
171
+ return undefined;
172
+ const title = titleOf(name, rawArgs);
173
+ return {
174
+ card: 'generic', displayKey, category: 'other',
175
+ ...title === undefined || title === '' ? {} : { title },
176
+ content: line === '' ? [] : line.split('\n').map(text => ({ type: 'text', text })),
177
+ };
178
+ }
179
+ /** Relay framing: one whole leading block, `Team message from <name>:`. */
180
+ const RELAY_FRAMING = /^Team message from ([^\n]+):$/;
181
+ /**
182
+ * An Agent Teams message delivered to a session (`user/message`): the
183
+ * generic relay (`agent-message` / `relay`) whose first block is exactly
184
+ * `Team message from <name>:`. A relay is any agent's message (the legacy
185
+ * `send_message` writes one too), so only the team's framing block marks it
186
+ * as a team message; the sender label replaces that block. The relay also
187
+ * reaches the agent-message feed, which owns it on a teammate's own pages;
188
+ * this reading is for the receiving transcript. A 0.2.0 log is read through
189
+ * `compat/agent-team-0.2.0.ts` first.
190
+ */
191
+ export function teamMessageOf(source, content) {
192
+ const first = content[0];
193
+ const framing = agentRelaySourceOf(source) !== undefined && first?.type === 'text' && typeof first.text === 'string'
194
+ ? RELAY_FRAMING.exec(first.text)
195
+ : null;
196
+ if (framing === null)
197
+ return undefined;
198
+ const sender = framing[1];
199
+ const blocks = content.slice(1);
200
+ const text = blocks
201
+ .flatMap(block => {
202
+ const value = block.text;
203
+ return block.type === 'text' && typeof value === 'string' ? [value] : [];
204
+ })
205
+ .join('\n')
206
+ .trim();
207
+ return { sender, blocks, text };
208
+ }