@deepseek-harness-tui/dsh-tui 0.10.0 → 0.10.2

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 (705) hide show
  1. package/README.md +5 -2
  2. package/bin/dsh-tui.js +99 -33
  3. package/cordis.patch.yml +25 -5
  4. package/lib/types/adapter/channel/actions.d.ts +17 -0
  5. package/lib/types/adapter/channel/actions.d.ts.map +1 -0
  6. package/lib/types/adapter/channel/actions.js +28 -0
  7. package/lib/types/adapter/channel/consumer.d.ts +34 -0
  8. package/lib/types/adapter/channel/consumer.d.ts.map +1 -0
  9. package/lib/types/adapter/channel/consumer.js +87 -0
  10. package/lib/types/adapter/channel/features.d.ts +12 -0
  11. package/lib/types/adapter/channel/features.d.ts.map +1 -0
  12. package/lib/types/adapter/channel/features.js +41 -0
  13. package/lib/types/adapter/channel/host-registry.d.ts +40 -0
  14. package/lib/types/adapter/channel/host-registry.d.ts.map +1 -0
  15. package/lib/types/adapter/channel/host-registry.js +120 -0
  16. package/lib/types/adapter/channel/index.d.ts +22 -0
  17. package/lib/types/adapter/channel/index.d.ts.map +1 -0
  18. package/lib/types/adapter/channel/index.js +21 -0
  19. package/lib/types/adapter/channel/internal-token.d.ts +12 -0
  20. package/lib/types/adapter/channel/internal-token.d.ts.map +1 -0
  21. package/lib/types/adapter/channel/internal-token.js +11 -0
  22. package/lib/types/adapter/channel/plugins.d.ts +17 -0
  23. package/lib/types/adapter/channel/plugins.d.ts.map +1 -0
  24. package/lib/types/adapter/channel/plugins.js +47 -0
  25. package/lib/types/adapter/channel/projection.d.ts +15 -0
  26. package/lib/types/adapter/channel/projection.d.ts.map +1 -0
  27. package/lib/types/adapter/channel/projection.js +59 -0
  28. package/lib/types/adapter/channel/provider.d.ts +52 -0
  29. package/lib/types/adapter/channel/provider.d.ts.map +1 -0
  30. package/lib/types/adapter/channel/provider.js +231 -0
  31. package/lib/types/adapter/channel/read-view.d.ts +4 -0
  32. package/lib/types/adapter/channel/read-view.d.ts.map +1 -0
  33. package/lib/types/adapter/channel/read-view.js +132 -0
  34. package/lib/types/adapter/channel/session-projection.d.ts +56 -0
  35. package/lib/types/adapter/channel/session-projection.d.ts.map +1 -0
  36. package/lib/types/adapter/channel/session-projection.js +247 -0
  37. package/lib/types/adapter/channel/state.d.ts +11 -0
  38. package/lib/types/adapter/channel/state.d.ts.map +1 -0
  39. package/lib/types/adapter/channel/state.js +55 -0
  40. package/lib/types/adapter/channel/transcript.d.ts +15 -0
  41. package/lib/types/adapter/channel/transcript.d.ts.map +1 -0
  42. package/lib/types/adapter/channel/transcript.js +22 -0
  43. package/lib/types/adapter/channel/ui-policy.d.ts +106 -0
  44. package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -0
  45. package/lib/types/adapter/channel/ui-policy.js +166 -0
  46. package/lib/types/adapter/channel/ui.d.ts +16 -0
  47. package/lib/types/adapter/channel/ui.d.ts.map +1 -0
  48. package/lib/types/adapter/channel/ui.js +168 -0
  49. package/lib/types/adapter/index.d.ts +20 -0
  50. package/lib/types/adapter/index.d.ts.map +1 -0
  51. package/lib/types/adapter/index.js +19 -0
  52. package/lib/types/adapter/kernel/contract-catalog.d.ts +12 -0
  53. package/lib/types/adapter/kernel/contract-catalog.d.ts.map +1 -0
  54. package/lib/types/adapter/kernel/contract-catalog.js +11 -0
  55. package/lib/types/adapter/kernel/diagnostics.d.ts +18 -0
  56. package/lib/types/adapter/kernel/diagnostics.d.ts.map +1 -0
  57. package/lib/types/adapter/kernel/diagnostics.js +16 -0
  58. package/lib/types/adapter/kernel/driver-types.d.ts +16 -0
  59. package/lib/types/adapter/kernel/driver-types.d.ts.map +1 -0
  60. package/lib/types/adapter/kernel/driver-types.js +8 -0
  61. package/lib/types/adapter/kernel/host-facade.d.ts +65 -0
  62. package/lib/types/adapter/kernel/host-facade.d.ts.map +1 -0
  63. package/lib/types/adapter/kernel/host-facade.js +215 -0
  64. package/lib/types/adapter/kernel/host-probe-access.d.ts +71 -0
  65. package/lib/types/adapter/kernel/host-probe-access.d.ts.map +1 -0
  66. package/lib/types/adapter/kernel/host-probe-access.js +121 -0
  67. package/lib/types/adapter/kernel/index.d.ts +20 -0
  68. package/lib/types/adapter/kernel/index.d.ts.map +1 -0
  69. package/lib/types/adapter/kernel/index.js +19 -0
  70. package/lib/types/adapter/kernel/kernel-runtime.d.ts +138 -0
  71. package/lib/types/adapter/kernel/kernel-runtime.d.ts.map +1 -0
  72. package/lib/types/adapter/kernel/kernel-runtime.js +572 -0
  73. package/lib/types/adapter/kernel/ledger.d.ts +55 -0
  74. package/lib/types/adapter/kernel/ledger.d.ts.map +1 -0
  75. package/lib/types/adapter/kernel/ledger.js +33 -0
  76. package/lib/types/adapter/kernel/legacy-facade.d.ts +22 -0
  77. package/lib/types/adapter/kernel/legacy-facade.d.ts.map +1 -0
  78. package/lib/types/adapter/kernel/legacy-facade.js +34 -0
  79. package/lib/types/adapter/kernel/lifecycle.d.ts +38 -0
  80. package/lib/types/adapter/kernel/lifecycle.d.ts.map +1 -0
  81. package/lib/types/adapter/kernel/lifecycle.js +53 -0
  82. package/lib/types/adapter/kernel/replay-isolation.d.ts +27 -0
  83. package/lib/types/adapter/kernel/replay-isolation.d.ts.map +1 -0
  84. package/lib/types/adapter/kernel/replay-isolation.js +45 -0
  85. package/lib/types/adapter/kernel/replay.d.ts +132 -0
  86. package/lib/types/adapter/kernel/replay.d.ts.map +1 -0
  87. package/lib/types/adapter/kernel/replay.js +425 -0
  88. package/lib/types/adapter/kernel/runtime-context.d.ts +15 -0
  89. package/lib/types/adapter/kernel/runtime-context.d.ts.map +1 -0
  90. package/lib/types/adapter/kernel/runtime-context.js +24 -0
  91. package/lib/types/adapter/kernel/runtime.d.ts +70 -0
  92. package/lib/types/adapter/kernel/runtime.d.ts.map +1 -0
  93. package/lib/types/adapter/kernel/runtime.js +325 -0
  94. package/lib/types/adapter/kernel/slices/channel.d.ts +3 -0
  95. package/lib/types/adapter/kernel/slices/channel.d.ts.map +1 -0
  96. package/lib/types/adapter/kernel/slices/channel.js +8 -0
  97. package/lib/types/adapter/kernel/slices/decisions.d.ts +3 -0
  98. package/lib/types/adapter/kernel/slices/decisions.d.ts.map +1 -0
  99. package/lib/types/adapter/kernel/slices/decisions.js +10 -0
  100. package/lib/types/adapter/kernel/slices/extensions.d.ts +8 -0
  101. package/lib/types/adapter/kernel/slices/extensions.d.ts.map +1 -0
  102. package/lib/types/adapter/kernel/slices/extensions.js +43 -0
  103. package/lib/types/adapter/kernel/slices/index.d.ts +19 -0
  104. package/lib/types/adapter/kernel/slices/index.d.ts.map +1 -0
  105. package/lib/types/adapter/kernel/slices/index.js +36 -0
  106. package/lib/types/adapter/kernel/slices/presentation.d.ts +3 -0
  107. package/lib/types/adapter/kernel/slices/presentation.d.ts.map +1 -0
  108. package/lib/types/adapter/kernel/slices/presentation.js +14 -0
  109. package/lib/types/adapter/kernel/slices/scenes.d.ts +3 -0
  110. package/lib/types/adapter/kernel/slices/scenes.d.ts.map +1 -0
  111. package/lib/types/adapter/kernel/slices/scenes.js +14 -0
  112. package/lib/types/adapter/kernel/slices/settings.d.ts +3 -0
  113. package/lib/types/adapter/kernel/slices/settings.d.ts.map +1 -0
  114. package/lib/types/adapter/kernel/slices/settings.js +12 -0
  115. package/lib/types/adapter/kernel/slices/types.d.ts +20 -0
  116. package/lib/types/adapter/kernel/slices/types.d.ts.map +1 -0
  117. package/lib/types/adapter/kernel/slices/types.js +12 -0
  118. package/lib/types/adapter/kernel/slices/workspace.d.ts +3 -0
  119. package/lib/types/adapter/kernel/slices/workspace.d.ts.map +1 -0
  120. package/lib/types/adapter/kernel/slices/workspace.js +15 -0
  121. package/lib/types/adapter/ports/channel-catalog.d.ts +90 -0
  122. package/lib/types/adapter/ports/channel-catalog.d.ts.map +1 -0
  123. package/lib/types/adapter/ports/channel-catalog.js +2 -0
  124. package/lib/types/adapter/ports/channel-display.d.ts +90 -0
  125. package/lib/types/adapter/ports/channel-display.d.ts.map +1 -0
  126. package/lib/types/adapter/ports/channel-display.js +2 -0
  127. package/lib/types/adapter/ports/channel-session.d.ts +229 -0
  128. package/lib/types/adapter/ports/channel-session.d.ts.map +1 -0
  129. package/lib/types/adapter/ports/channel-session.js +2 -0
  130. package/lib/types/adapter/ports/channel-settings.d.ts +273 -0
  131. package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -0
  132. package/lib/types/adapter/ports/channel-settings.js +1 -0
  133. package/lib/types/adapter/ports/channel-ui.d.ts +569 -0
  134. package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -0
  135. package/lib/types/adapter/ports/channel-ui.js +1 -0
  136. package/lib/types/adapter/ports/channel-view.d.ts +609 -0
  137. package/lib/types/adapter/ports/channel-view.d.ts.map +1 -0
  138. package/lib/types/adapter/ports/channel-view.js +2 -0
  139. package/lib/types/adapter/ports/channel-workspace.d.ts +45 -0
  140. package/lib/types/adapter/ports/channel-workspace.d.ts.map +1 -0
  141. package/lib/types/adapter/ports/channel-workspace.js +2 -0
  142. package/lib/types/adapter/ports/channel.d.ts +145 -0
  143. package/lib/types/adapter/ports/channel.d.ts.map +1 -0
  144. package/lib/types/adapter/ports/channel.js +22 -0
  145. package/lib/types/adapter/ports/decisions.d.ts +18 -0
  146. package/lib/types/adapter/ports/decisions.d.ts.map +1 -0
  147. package/lib/types/adapter/ports/decisions.js +9 -0
  148. package/lib/types/adapter/ports/descriptor.d.ts +25 -0
  149. package/lib/types/adapter/ports/descriptor.d.ts.map +1 -0
  150. package/lib/types/adapter/ports/descriptor.js +11 -0
  151. package/lib/types/adapter/ports/extensions.d.ts +86 -0
  152. package/lib/types/adapter/ports/extensions.d.ts.map +1 -0
  153. package/lib/types/adapter/ports/extensions.js +9 -0
  154. package/lib/types/adapter/ports/index.d.ts +23 -0
  155. package/lib/types/adapter/ports/index.d.ts.map +1 -0
  156. package/lib/types/adapter/ports/index.js +14 -0
  157. package/lib/types/adapter/ports/owner.d.ts +19 -0
  158. package/lib/types/adapter/ports/owner.d.ts.map +1 -0
  159. package/lib/types/adapter/ports/owner.js +9 -0
  160. package/lib/types/adapter/ports/presentation.d.ts +81 -0
  161. package/lib/types/adapter/ports/presentation.d.ts.map +1 -0
  162. package/lib/types/adapter/ports/presentation.js +10 -0
  163. package/lib/types/adapter/ports/scenes.d.ts +24 -0
  164. package/lib/types/adapter/ports/scenes.d.ts.map +1 -0
  165. package/lib/types/adapter/ports/scenes.js +8 -0
  166. package/lib/types/adapter/ports/settings.d.ts +44 -0
  167. package/lib/types/adapter/ports/settings.d.ts.map +1 -0
  168. package/lib/types/adapter/ports/settings.js +9 -0
  169. package/lib/types/adapter/ports/workspace.d.ts +60 -0
  170. package/lib/types/adapter/ports/workspace.d.ts.map +1 -0
  171. package/lib/types/adapter/ports/workspace.js +8 -0
  172. package/lib/types/adapter/spec/index.d.ts +11 -0
  173. package/lib/types/adapter/spec/index.d.ts.map +1 -0
  174. package/lib/types/adapter/spec/index.js +10 -0
  175. package/lib/types/adapter/spec/profile.d.ts +10 -0
  176. package/lib/types/adapter/spec/profile.d.ts.map +1 -0
  177. package/lib/types/adapter/spec/profile.js +9 -0
  178. package/lib/types/adapter/spec/protocol-constants.d.ts +60 -0
  179. package/lib/types/adapter/spec/protocol-constants.d.ts.map +1 -0
  180. package/lib/types/adapter/spec/protocol-constants.js +129 -0
  181. package/lib/types/adapter/spec/tui-contributions.d.ts +18 -0
  182. package/lib/types/adapter/spec/tui-contributions.d.ts.map +1 -0
  183. package/lib/types/adapter/spec/tui-contributions.js +19 -0
  184. package/lib/types/adapter/standard/admission.d.ts +11 -0
  185. package/lib/types/adapter/standard/admission.d.ts.map +1 -0
  186. package/lib/types/adapter/standard/admission.js +10 -0
  187. package/lib/types/adapter/standard/descriptor.d.ts +74 -0
  188. package/lib/types/adapter/standard/descriptor.d.ts.map +1 -0
  189. package/lib/types/adapter/standard/descriptor.js +356 -0
  190. package/lib/types/{dsh-adapter → adapter/standard}/grants.d.ts +8 -3
  191. package/lib/types/adapter/standard/grants.d.ts.map +1 -0
  192. package/lib/types/{dsh-adapter → adapter/standard}/grants.js +14 -8
  193. package/lib/types/adapter/standard/index.d.ts +25 -0
  194. package/lib/types/adapter/standard/index.d.ts.map +1 -0
  195. package/lib/types/adapter/standard/index.js +24 -0
  196. package/lib/types/adapter/standard/negotiate.d.ts.map +1 -0
  197. package/lib/types/{plugin-spec → adapter/standard}/permission-scope.d.ts +3 -8
  198. package/lib/types/adapter/standard/permission-scope.d.ts.map +1 -0
  199. package/lib/types/{plugin-spec → adapter/standard}/permission-scope.js +4 -26
  200. package/lib/types/adapter/standard/protocols.d.ts +12 -0
  201. package/lib/types/adapter/standard/protocols.d.ts.map +1 -0
  202. package/lib/types/adapter/standard/protocols.js +11 -0
  203. package/lib/types/adapter/standard/registry.d.ts.map +1 -0
  204. package/lib/types/{plugin-spec → adapter/standard}/registry.js +3 -15
  205. package/lib/types/adapter/standard/schema-check.d.ts.map +1 -0
  206. package/lib/types/{plugin-spec → adapter/standard}/schema-check.js +4 -2
  207. package/lib/types/adapter/standard/tui-extension.d.ts +25 -0
  208. package/lib/types/adapter/standard/tui-extension.d.ts.map +1 -0
  209. package/lib/types/adapter/standard/tui-extension.js +45 -0
  210. package/lib/types/{plugin-spec → adapter/standard}/types.d.ts +3 -9
  211. package/lib/types/adapter/standard/types.d.ts.map +1 -0
  212. package/lib/types/{plugin-spec → adapter/standard}/validate.d.ts +3 -3
  213. package/lib/types/adapter/standard/validate.d.ts.map +1 -0
  214. package/lib/types/{plugin-spec → adapter/standard}/validate.js +14 -13
  215. package/lib/types/adapter/upstream/channel-driver.d.ts +22 -0
  216. package/lib/types/adapter/upstream/channel-driver.d.ts.map +1 -0
  217. package/lib/types/adapter/upstream/channel-driver.js +424 -0
  218. package/lib/types/adapter/upstream/decisions-driver.d.ts +15 -0
  219. package/lib/types/adapter/upstream/decisions-driver.d.ts.map +1 -0
  220. package/lib/types/adapter/upstream/decisions-driver.js +141 -0
  221. package/lib/types/adapter/upstream/detection.d.ts +26 -0
  222. package/lib/types/adapter/upstream/detection.d.ts.map +1 -0
  223. package/lib/types/adapter/upstream/detection.js +9 -0
  224. package/lib/types/adapter/upstream/driver.d.ts +50 -0
  225. package/lib/types/adapter/upstream/driver.d.ts.map +1 -0
  226. package/lib/types/adapter/upstream/driver.js +8 -0
  227. package/lib/types/adapter/upstream/extensions-driver.d.ts +24 -0
  228. package/lib/types/adapter/upstream/extensions-driver.d.ts.map +1 -0
  229. package/lib/types/adapter/upstream/extensions-driver.js +697 -0
  230. package/lib/types/adapter/upstream/host-descriptor-driver.d.ts +45 -0
  231. package/lib/types/adapter/upstream/host-descriptor-driver.d.ts.map +1 -0
  232. package/lib/types/adapter/upstream/host-descriptor-driver.js +606 -0
  233. package/lib/types/adapter/upstream/index.d.ts +18 -0
  234. package/lib/types/adapter/upstream/index.d.ts.map +1 -0
  235. package/lib/types/adapter/upstream/index.js +15 -0
  236. package/lib/types/adapter/upstream/presentation-driver.d.ts +17 -0
  237. package/lib/types/adapter/upstream/presentation-driver.d.ts.map +1 -0
  238. package/lib/types/adapter/upstream/presentation-driver.js +129 -0
  239. package/lib/types/adapter/upstream/scenes-driver.d.ts +18 -0
  240. package/lib/types/adapter/upstream/scenes-driver.d.ts.map +1 -0
  241. package/lib/types/adapter/upstream/scenes-driver.js +170 -0
  242. package/lib/types/adapter/upstream/settings-driver.d.ts +20 -0
  243. package/lib/types/adapter/upstream/settings-driver.d.ts.map +1 -0
  244. package/lib/types/adapter/upstream/settings-driver.js +173 -0
  245. package/lib/types/adapter/upstream/workspace-driver.d.ts +19 -0
  246. package/lib/types/adapter/upstream/workspace-driver.d.ts.map +1 -0
  247. package/lib/types/adapter/upstream/workspace-driver.js +190 -0
  248. package/lib/types/api.d.ts +1 -1
  249. package/lib/types/api.d.ts.map +1 -1
  250. package/lib/types/commands.d.ts +2 -41
  251. package/lib/types/commands.d.ts.map +1 -1
  252. package/lib/types/commands.js +1 -1
  253. package/lib/types/components/Chat/JobCard.d.ts.map +1 -1
  254. package/lib/types/components/Chat/JobCard.js +8 -1
  255. package/lib/types/components/GoalTodoPanel.d.ts +2 -1
  256. package/lib/types/components/GoalTodoPanel.d.ts.map +1 -1
  257. package/lib/types/components/HistorySearchDialog.d.ts.map +1 -1
  258. package/lib/types/components/HistorySearchDialog.js +7 -5
  259. package/lib/types/components/Markdown.d.ts +2 -2
  260. package/lib/types/components/Markdown.d.ts.map +1 -1
  261. package/lib/types/components/Markdown.js +28 -3
  262. package/lib/types/components/MessageList.d.ts.map +1 -1
  263. package/lib/types/components/MessageList.js +46 -17
  264. package/lib/types/components/ModelPicker.d.ts +1 -1
  265. package/lib/types/components/ModelPicker.d.ts.map +1 -1
  266. package/lib/types/components/ModelPicker.js +8 -4
  267. package/lib/types/components/OverlayAbove.d.ts +22 -1
  268. package/lib/types/components/OverlayAbove.d.ts.map +1 -1
  269. package/lib/types/components/OverlayAbove.js +74 -5
  270. package/lib/types/components/PromptInput.d.ts +2 -1
  271. package/lib/types/components/PromptInput.d.ts.map +1 -1
  272. package/lib/types/components/RewindPicker.d.ts.map +1 -1
  273. package/lib/types/components/RewindPicker.js +14 -6
  274. package/lib/types/components/SkillsPicker.d.ts.map +1 -1
  275. package/lib/types/components/SkillsPicker.js +6 -4
  276. package/lib/types/components/Spinner/spinnerMode.d.ts +1 -5
  277. package/lib/types/components/Spinner/spinnerMode.d.ts.map +1 -1
  278. package/lib/types/components/StreamingMarkdown.d.ts.map +1 -1
  279. package/lib/types/components/StreamingMarkdown.js +61 -9
  280. package/lib/types/components/design-system/ThemedBox.d.ts +4 -2
  281. package/lib/types/components/design-system/ThemedBox.d.ts.map +1 -1
  282. package/lib/types/components/design-system/ThemedBox.js +2 -2
  283. package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -1
  284. package/lib/types/components/messages/AssistantToolUseMessage.js +69 -25
  285. package/lib/types/components/overlayBudget.d.ts +39 -0
  286. package/lib/types/components/overlayBudget.d.ts.map +1 -0
  287. package/lib/types/components/overlayBudget.js +43 -0
  288. package/lib/types/deepseekBalance.d.ts +2 -36
  289. package/lib/types/deepseekBalance.d.ts.map +1 -1
  290. package/lib/types/deepseekBalance.js +0 -14
  291. package/lib/types/deepseekPricing.d.ts +2 -1
  292. package/lib/types/deepseekPricing.d.ts.map +1 -1
  293. package/lib/types/deepseekPricing.js +8 -1
  294. package/lib/types/dsh-adapter/approvals.d.ts +11 -1
  295. package/lib/types/dsh-adapter/approvals.d.ts.map +1 -1
  296. package/lib/types/dsh-adapter/approvals.js +32 -12
  297. package/lib/types/dsh-adapter/channel/action-readiness.d.ts +20 -0
  298. package/lib/types/dsh-adapter/channel/action-readiness.d.ts.map +1 -0
  299. package/lib/types/dsh-adapter/channel/action-readiness.js +83 -0
  300. package/lib/types/dsh-adapter/channel/activity.d.ts +20 -0
  301. package/lib/types/dsh-adapter/channel/activity.d.ts.map +1 -0
  302. package/lib/types/dsh-adapter/channel/activity.js +113 -0
  303. package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts +64 -0
  304. package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts.map +1 -0
  305. package/lib/types/dsh-adapter/channel/agent-view-projection.js +295 -0
  306. package/lib/types/dsh-adapter/channel/background-action.d.ts +41 -0
  307. package/lib/types/dsh-adapter/channel/background-action.d.ts.map +1 -0
  308. package/lib/types/dsh-adapter/channel/background-action.js +86 -0
  309. package/lib/types/dsh-adapter/channel/binding-events.d.ts +65 -0
  310. package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -0
  311. package/lib/types/dsh-adapter/channel/binding-events.js +169 -0
  312. package/lib/types/dsh-adapter/channel/binding.d.ts +41 -0
  313. package/lib/types/dsh-adapter/channel/binding.d.ts.map +1 -0
  314. package/lib/types/dsh-adapter/channel/binding.js +227 -0
  315. package/lib/types/dsh-adapter/channel/command-completions.d.ts +29 -0
  316. package/lib/types/dsh-adapter/channel/command-completions.d.ts.map +1 -0
  317. package/lib/types/dsh-adapter/channel/command-completions.js +94 -0
  318. package/lib/types/dsh-adapter/channel/commands.d.ts +8 -0
  319. package/lib/types/dsh-adapter/channel/commands.d.ts.map +1 -0
  320. package/lib/types/dsh-adapter/channel/commands.js +9 -0
  321. package/lib/types/dsh-adapter/channel/compaction.d.ts +19 -0
  322. package/lib/types/dsh-adapter/channel/compaction.d.ts.map +1 -0
  323. package/lib/types/dsh-adapter/channel/compaction.js +116 -0
  324. package/lib/types/dsh-adapter/channel/composer-images.d.ts +57 -0
  325. package/lib/types/dsh-adapter/channel/composer-images.d.ts.map +1 -0
  326. package/lib/types/dsh-adapter/channel/composer-images.js +217 -0
  327. package/lib/types/dsh-adapter/channel/composer-mentions.d.ts +15 -0
  328. package/lib/types/dsh-adapter/channel/composer-mentions.d.ts.map +1 -0
  329. package/lib/types/dsh-adapter/channel/composer-mentions.js +200 -0
  330. package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts +26 -0
  331. package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts.map +1 -0
  332. package/lib/types/dsh-adapter/channel/context-bookkeeping.js +30 -0
  333. package/lib/types/dsh-adapter/channel/decisions.d.ts +19 -0
  334. package/lib/types/dsh-adapter/channel/decisions.d.ts.map +1 -0
  335. package/lib/types/dsh-adapter/channel/decisions.js +90 -0
  336. package/lib/types/dsh-adapter/channel/emitter.d.ts +10 -0
  337. package/lib/types/dsh-adapter/channel/emitter.d.ts.map +1 -0
  338. package/lib/types/dsh-adapter/channel/emitter.js +71 -0
  339. package/lib/types/dsh-adapter/channel/external-commands.d.ts +31 -0
  340. package/lib/types/dsh-adapter/channel/external-commands.d.ts.map +1 -0
  341. package/lib/types/dsh-adapter/channel/external-commands.js +187 -0
  342. package/lib/types/dsh-adapter/channel/file-actions.d.ts +20 -0
  343. package/lib/types/dsh-adapter/channel/file-actions.d.ts.map +1 -0
  344. package/lib/types/dsh-adapter/channel/file-actions.js +45 -0
  345. package/lib/types/dsh-adapter/channel/input-actions.d.ts +13 -0
  346. package/lib/types/dsh-adapter/channel/input-actions.d.ts.map +1 -0
  347. package/lib/types/dsh-adapter/channel/input-actions.js +135 -0
  348. package/lib/types/dsh-adapter/channel/input-delivery.d.ts +37 -0
  349. package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -0
  350. package/lib/types/dsh-adapter/channel/input-delivery.js +305 -0
  351. package/lib/types/dsh-adapter/channel/job-projection.d.ts +28 -0
  352. package/lib/types/dsh-adapter/channel/job-projection.d.ts.map +1 -0
  353. package/lib/types/dsh-adapter/channel/job-projection.js +150 -0
  354. package/lib/types/dsh-adapter/channel/lifetime-resources.d.ts +9 -0
  355. package/lib/types/dsh-adapter/channel/lifetime-resources.d.ts.map +1 -0
  356. package/lib/types/dsh-adapter/channel/lifetime-resources.js +33 -0
  357. package/lib/types/dsh-adapter/channel/loaded-context.d.ts +40 -0
  358. package/lib/types/dsh-adapter/channel/loaded-context.d.ts.map +1 -0
  359. package/lib/types/dsh-adapter/channel/loaded-context.js +62 -0
  360. package/lib/types/dsh-adapter/channel/local-actions.d.ts +70 -0
  361. package/lib/types/dsh-adapter/channel/local-actions.d.ts.map +1 -0
  362. package/lib/types/dsh-adapter/channel/local-actions.js +108 -0
  363. package/lib/types/dsh-adapter/channel/mentions.d.ts +29 -0
  364. package/lib/types/dsh-adapter/channel/mentions.d.ts.map +1 -0
  365. package/lib/types/dsh-adapter/channel/mentions.js +235 -0
  366. package/lib/types/dsh-adapter/channel/mode-actions.d.ts +30 -0
  367. package/lib/types/dsh-adapter/channel/mode-actions.d.ts.map +1 -0
  368. package/lib/types/dsh-adapter/channel/mode-actions.js +247 -0
  369. package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts +35 -0
  370. package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -0
  371. package/lib/types/dsh-adapter/channel/mode-permission-actions.js +199 -0
  372. package/lib/types/dsh-adapter/channel/mode-permission.d.ts +58 -0
  373. package/lib/types/dsh-adapter/channel/mode-permission.d.ts.map +1 -0
  374. package/lib/types/dsh-adapter/channel/mode-permission.js +240 -0
  375. package/lib/types/dsh-adapter/channel/mode-roster.d.ts +51 -0
  376. package/lib/types/dsh-adapter/channel/mode-roster.d.ts.map +1 -0
  377. package/lib/types/dsh-adapter/channel/mode-roster.js +119 -0
  378. package/lib/types/dsh-adapter/channel/model-actions.d.ts +46 -0
  379. package/lib/types/dsh-adapter/channel/model-actions.d.ts.map +1 -0
  380. package/lib/types/dsh-adapter/channel/model-actions.js +275 -0
  381. package/lib/types/dsh-adapter/channel/model-switch.d.ts +32 -0
  382. package/lib/types/dsh-adapter/channel/model-switch.d.ts.map +1 -0
  383. package/lib/types/dsh-adapter/channel/model-switch.js +98 -0
  384. package/lib/types/dsh-adapter/channel/notifications.d.ts +9 -0
  385. package/lib/types/dsh-adapter/channel/notifications.d.ts.map +1 -0
  386. package/lib/types/dsh-adapter/channel/notifications.js +24 -0
  387. package/lib/types/dsh-adapter/channel/owner.d.ts +18 -0
  388. package/lib/types/dsh-adapter/channel/owner.d.ts.map +1 -0
  389. package/lib/types/dsh-adapter/channel/owner.js +73 -0
  390. package/lib/types/dsh-adapter/channel/paths.d.ts +31 -0
  391. package/lib/types/dsh-adapter/channel/paths.d.ts.map +1 -0
  392. package/lib/types/dsh-adapter/channel/paths.js +147 -0
  393. package/lib/types/dsh-adapter/channel/permissions.d.ts +40 -0
  394. package/lib/types/dsh-adapter/channel/permissions.d.ts.map +1 -0
  395. package/lib/types/dsh-adapter/channel/permissions.js +187 -0
  396. package/lib/types/dsh-adapter/channel/preferences.d.ts +3 -0
  397. package/lib/types/dsh-adapter/channel/preferences.d.ts.map +1 -0
  398. package/lib/types/dsh-adapter/channel/preferences.js +103 -0
  399. package/lib/types/dsh-adapter/channel/projection-helpers.d.ts +13 -0
  400. package/lib/types/dsh-adapter/channel/projection-helpers.d.ts.map +1 -0
  401. package/lib/types/dsh-adapter/channel/projection-helpers.js +63 -0
  402. package/lib/types/dsh-adapter/channel/projection.d.ts +40 -0
  403. package/lib/types/dsh-adapter/channel/projection.d.ts.map +1 -0
  404. package/lib/types/dsh-adapter/channel/projection.js +1021 -0
  405. package/lib/types/dsh-adapter/channel/reports.d.ts +32 -0
  406. package/lib/types/dsh-adapter/channel/reports.d.ts.map +1 -0
  407. package/lib/types/dsh-adapter/channel/reports.js +171 -0
  408. package/lib/types/dsh-adapter/channel/session-actions.d.ts +13 -0
  409. package/lib/types/dsh-adapter/channel/session-actions.d.ts.map +1 -0
  410. package/lib/types/dsh-adapter/channel/session-actions.js +29 -0
  411. package/lib/types/dsh-adapter/channel/session-adoption.d.ts +32 -0
  412. package/lib/types/dsh-adapter/channel/session-adoption.d.ts.map +1 -0
  413. package/lib/types/dsh-adapter/channel/session-adoption.js +35 -0
  414. package/lib/types/dsh-adapter/channel/session-fork.d.ts +19 -0
  415. package/lib/types/dsh-adapter/channel/session-fork.d.ts.map +1 -0
  416. package/lib/types/dsh-adapter/channel/session-fork.js +85 -0
  417. package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts +32 -0
  418. package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts.map +1 -0
  419. package/lib/types/dsh-adapter/channel/session-live-adoption.js +62 -0
  420. package/lib/types/dsh-adapter/channel/session-metadata.d.ts +81 -0
  421. package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -0
  422. package/lib/types/dsh-adapter/channel/session-metadata.js +209 -0
  423. package/lib/types/dsh-adapter/channel/session-reset.d.ts +11 -0
  424. package/lib/types/dsh-adapter/channel/session-reset.d.ts.map +1 -0
  425. package/lib/types/dsh-adapter/channel/session-reset.js +44 -0
  426. package/lib/types/dsh-adapter/channel/session-resume.d.ts +56 -0
  427. package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -0
  428. package/lib/types/dsh-adapter/channel/session-resume.js +240 -0
  429. package/lib/types/dsh-adapter/channel/session-rewind.d.ts +19 -0
  430. package/lib/types/dsh-adapter/channel/session-rewind.d.ts.map +1 -0
  431. package/lib/types/dsh-adapter/channel/session-rewind.js +128 -0
  432. package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts +19 -0
  433. package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts.map +1 -0
  434. package/lib/types/dsh-adapter/channel/session-tree-actions.js +138 -0
  435. package/lib/types/dsh-adapter/channel/session-tree.d.ts +10 -0
  436. package/lib/types/dsh-adapter/channel/session-tree.d.ts.map +1 -0
  437. package/lib/types/dsh-adapter/channel/session-tree.js +503 -0
  438. package/lib/types/dsh-adapter/channel/settings-host.d.ts +4 -0
  439. package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -0
  440. package/lib/types/dsh-adapter/channel/settings-host.js +256 -0
  441. package/lib/types/dsh-adapter/channel/skill-catalog.d.ts +33 -0
  442. package/lib/types/dsh-adapter/channel/skill-catalog.d.ts.map +1 -0
  443. package/lib/types/dsh-adapter/channel/skill-catalog.js +215 -0
  444. package/lib/types/dsh-adapter/channel/state.d.ts +46 -0
  445. package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -0
  446. package/lib/types/dsh-adapter/channel/state.js +31 -0
  447. package/lib/types/dsh-adapter/channel/subagent-projection.d.ts +47 -0
  448. package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -0
  449. package/lib/types/dsh-adapter/channel/subagent-projection.js +140 -0
  450. package/lib/types/dsh-adapter/channel/transcript.d.ts +73 -0
  451. package/lib/types/dsh-adapter/channel/transcript.d.ts.map +1 -0
  452. package/lib/types/dsh-adapter/channel/transcript.js +312 -0
  453. package/lib/types/dsh-adapter/channel/types.d.ts +162 -0
  454. package/lib/types/dsh-adapter/channel/types.d.ts.map +1 -0
  455. package/lib/types/dsh-adapter/channel/types.js +1 -0
  456. package/lib/types/dsh-adapter/channel/usage.d.ts +13 -0
  457. package/lib/types/dsh-adapter/channel/usage.d.ts.map +1 -0
  458. package/lib/types/dsh-adapter/channel/usage.js +48 -0
  459. package/lib/types/dsh-adapter/channel/workspace-actions.d.ts +20 -0
  460. package/lib/types/dsh-adapter/channel/workspace-actions.d.ts.map +1 -0
  461. package/lib/types/dsh-adapter/channel/workspace-actions.js +56 -0
  462. package/lib/types/dsh-adapter/channel-facade-actions.d.ts +25 -0
  463. package/lib/types/dsh-adapter/channel-facade-actions.d.ts.map +1 -0
  464. package/lib/types/dsh-adapter/channel-facade-actions.js +55 -0
  465. package/lib/types/dsh-adapter/channel-scene-outlet.d.ts +6 -0
  466. package/lib/types/dsh-adapter/channel-scene-outlet.d.ts.map +1 -0
  467. package/lib/types/dsh-adapter/channel-scene-outlet.js +13 -0
  468. package/lib/types/dsh-adapter/channel-ui.d.ts +9 -0
  469. package/lib/types/dsh-adapter/channel-ui.d.ts.map +1 -0
  470. package/lib/types/dsh-adapter/channel-ui.js +128 -0
  471. package/lib/types/dsh-adapter/channel.d.ts +9 -1525
  472. package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
  473. package/lib/types/dsh-adapter/channel.js +753 -8145
  474. package/lib/types/dsh-adapter/command-trees.d.ts +1 -0
  475. package/lib/types/dsh-adapter/command-trees.d.ts.map +1 -1
  476. package/lib/types/dsh-adapter/command-trees.js +20 -1
  477. package/lib/types/dsh-adapter/compat/liveSession.d.ts +8 -4
  478. package/lib/types/dsh-adapter/compat/liveSession.d.ts.map +1 -1
  479. package/lib/types/dsh-adapter/compat/liveSession.js +28 -3
  480. package/lib/types/dsh-adapter/compat/persistence.d.ts +21 -0
  481. package/lib/types/dsh-adapter/compat/persistence.d.ts.map +1 -0
  482. package/lib/types/dsh-adapter/compat/persistence.js +17 -0
  483. package/lib/types/dsh-adapter/compat/sessionLog.d.ts +50 -11
  484. package/lib/types/dsh-adapter/compat/sessionLog.d.ts.map +1 -1
  485. package/lib/types/dsh-adapter/compat/sessionLog.js +325 -36
  486. package/lib/types/dsh-adapter/component-identity.d.ts +1 -1
  487. package/lib/types/dsh-adapter/component-identity.d.ts.map +1 -1
  488. package/lib/types/dsh-adapter/component-identity.js +1 -1
  489. package/lib/types/dsh-adapter/contract.d.ts +11 -9
  490. package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
  491. package/lib/types/dsh-adapter/contract.js +19 -12
  492. package/lib/types/dsh-adapter/decision-guard.d.ts +56 -12
  493. package/lib/types/dsh-adapter/decision-guard.d.ts.map +1 -1
  494. package/lib/types/dsh-adapter/decision-guard.js +134 -22
  495. package/lib/types/dsh-adapter/dialogs.d.ts.map +1 -1
  496. package/lib/types/dsh-adapter/dialogs.js +13 -0
  497. package/lib/types/dsh-adapter/effect-ledger.d.ts +5 -0
  498. package/lib/types/dsh-adapter/effect-ledger.d.ts.map +1 -1
  499. package/lib/types/dsh-adapter/effect-ledger.js +53 -15
  500. package/lib/types/dsh-adapter/extension-events.d.ts +2 -9
  501. package/lib/types/dsh-adapter/extension-events.d.ts.map +1 -1
  502. package/lib/types/dsh-adapter/extension-events.js +0 -20
  503. package/lib/types/dsh-adapter/extensions.d.ts.map +1 -1
  504. package/lib/types/dsh-adapter/extensions.js +3 -2
  505. package/lib/types/dsh-adapter/host-grants.d.ts +23 -0
  506. package/lib/types/dsh-adapter/host-grants.d.ts.map +1 -0
  507. package/lib/types/dsh-adapter/host-grants.js +45 -0
  508. package/lib/types/dsh-adapter/jobs.d.ts +2 -46
  509. package/lib/types/dsh-adapter/jobs.d.ts.map +1 -1
  510. package/lib/types/dsh-adapter/jobs.js +0 -25
  511. package/lib/types/dsh-adapter/message-observer.d.ts +15 -2
  512. package/lib/types/dsh-adapter/message-observer.d.ts.map +1 -1
  513. package/lib/types/dsh-adapter/message-observer.js +157 -28
  514. package/lib/types/dsh-adapter/plugin-host.d.ts +80 -11
  515. package/lib/types/dsh-adapter/plugin-host.d.ts.map +1 -1
  516. package/lib/types/dsh-adapter/plugin-host.js +438 -41
  517. package/lib/types/dsh-adapter/plugin-storage.d.ts +11 -1
  518. package/lib/types/dsh-adapter/plugin-storage.d.ts.map +1 -1
  519. package/lib/types/dsh-adapter/plugin-storage.js +150 -11
  520. package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
  521. package/lib/types/dsh-adapter/plugin.js +75 -34
  522. package/lib/types/dsh-adapter/plugins-info.d.ts +2 -2
  523. package/lib/types/dsh-adapter/plugins-info.d.ts.map +1 -1
  524. package/lib/types/dsh-adapter/plugins-info.js +11 -6
  525. package/lib/types/dsh-adapter/presets.d.ts.map +1 -1
  526. package/lib/types/dsh-adapter/presets.js +3 -2
  527. package/lib/types/dsh-adapter/providerWizard.d.ts +2 -159
  528. package/lib/types/dsh-adapter/providerWizard.d.ts.map +1 -1
  529. package/lib/types/dsh-adapter/questions.d.ts +8 -0
  530. package/lib/types/dsh-adapter/questions.d.ts.map +1 -1
  531. package/lib/types/dsh-adapter/questions.js +18 -0
  532. package/lib/types/dsh-adapter/recap.d.ts +1 -9
  533. package/lib/types/dsh-adapter/recap.d.ts.map +1 -1
  534. package/lib/types/dsh-adapter/recap.js +0 -14
  535. package/lib/types/dsh-adapter/renderers.d.ts +1 -0
  536. package/lib/types/dsh-adapter/renderers.d.ts.map +1 -1
  537. package/lib/types/dsh-adapter/renderers.js +26 -1
  538. package/lib/types/dsh-adapter/scenes.d.ts +3 -1
  539. package/lib/types/dsh-adapter/scenes.d.ts.map +1 -1
  540. package/lib/types/dsh-adapter/scenes.js +31 -0
  541. package/lib/types/dsh-adapter/sessionTree.d.ts +14 -95
  542. package/lib/types/dsh-adapter/sessionTree.d.ts.map +1 -1
  543. package/lib/types/dsh-adapter/sessionTree.js +51 -36
  544. package/lib/types/dsh-adapter/sessions/digest.d.ts.map +1 -1
  545. package/lib/types/dsh-adapter/sessions/digest.js +40 -19
  546. package/lib/types/dsh-adapter/sessions/frames.js +2 -0
  547. package/lib/types/dsh-adapter/sessions/index.d.ts +1 -1
  548. package/lib/types/dsh-adapter/sessions/index.d.ts.map +1 -1
  549. package/lib/types/dsh-adapter/sessions/index.js +1 -1
  550. package/lib/types/dsh-adapter/sessions/list.d.ts +23 -0
  551. package/lib/types/dsh-adapter/sessions/list.d.ts.map +1 -1
  552. package/lib/types/dsh-adapter/sessions/list.js +28 -17
  553. package/lib/types/dsh-adapter/sessions/store.d.ts +2 -2
  554. package/lib/types/dsh-adapter/sessions/store.d.ts.map +1 -1
  555. package/lib/types/dsh-adapter/sessions/store.js +12 -11
  556. package/lib/types/dsh-adapter/sessions/types.d.ts +4 -128
  557. package/lib/types/dsh-adapter/sessions/types.d.ts.map +1 -1
  558. package/lib/types/dsh-adapter/sessions/types.js +0 -13
  559. package/lib/types/dsh-adapter/settings-sections.d.ts +4 -95
  560. package/lib/types/dsh-adapter/settings-sections.d.ts.map +1 -1
  561. package/lib/types/dsh-adapter/settings-sections.js +50 -13
  562. package/lib/types/dsh-adapter/settingsEditor.d.ts +2 -36
  563. package/lib/types/dsh-adapter/settingsEditor.d.ts.map +1 -1
  564. package/lib/types/dsh-adapter/settingsEditor.js +0 -18
  565. package/lib/types/dsh-adapter/shortcuts.d.ts +5 -0
  566. package/lib/types/dsh-adapter/shortcuts.d.ts.map +1 -1
  567. package/lib/types/dsh-adapter/shortcuts.js +49 -0
  568. package/lib/types/dsh-adapter/status.d.ts +5 -0
  569. package/lib/types/dsh-adapter/status.d.ts.map +1 -1
  570. package/lib/types/dsh-adapter/status.js +29 -0
  571. package/lib/types/dsh-adapter/subagents.d.ts +9 -49
  572. package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
  573. package/lib/types/dsh-adapter/subagents.js +92 -1
  574. package/lib/types/dsh-adapter/themes.d.ts +1 -0
  575. package/lib/types/dsh-adapter/themes.d.ts.map +1 -1
  576. package/lib/types/dsh-adapter/themes.js +29 -0
  577. package/lib/types/dsh-adapter/toast.d.ts +13 -0
  578. package/lib/types/dsh-adapter/toast.d.ts.map +1 -1
  579. package/lib/types/dsh-adapter/toast.js +31 -1
  580. package/lib/types/dsh-adapter/trajectory/aggregate.d.ts +2 -1
  581. package/lib/types/dsh-adapter/trajectory/aggregate.d.ts.map +1 -1
  582. package/lib/types/dsh-adapter/trajectory/aggregate.js +2 -1
  583. package/lib/types/dsh-adapter/trajectory/guards.d.ts +37 -18
  584. package/lib/types/dsh-adapter/trajectory/guards.d.ts.map +1 -1
  585. package/lib/types/dsh-adapter/trajectory/guards.js +43 -5
  586. package/lib/types/dsh-adapter/trajectory/inspect.d.ts +2 -2
  587. package/lib/types/dsh-adapter/trajectory/inspect.d.ts.map +1 -1
  588. package/lib/types/dsh-adapter/trajectory/projection.d.ts +31 -13
  589. package/lib/types/dsh-adapter/trajectory/projection.d.ts.map +1 -1
  590. package/lib/types/dsh-adapter/trajectory/projection.js +71 -14
  591. package/lib/types/dsh-adapter/trajectory/types.d.ts +1 -1
  592. package/lib/types/dsh-adapter/trajectory/types.d.ts.map +1 -1
  593. package/lib/types/dsh-adapter/transcript-images.d.ts +2 -19
  594. package/lib/types/dsh-adapter/transcript-images.d.ts.map +1 -1
  595. package/lib/types/dsh-adapter/workspaces.d.ts +2 -49
  596. package/lib/types/dsh-adapter/workspaces.d.ts.map +1 -1
  597. package/lib/types/dsh-adapter/workspaces.js +23 -3
  598. package/lib/types/i18n.d.ts +19 -7
  599. package/lib/types/i18n.d.ts.map +1 -1
  600. package/lib/types/i18n.js +8 -3
  601. package/lib/types/ink/components/ScrollBox.d.ts.map +1 -1
  602. package/lib/types/ink/components/ScrollBox.js +30 -33
  603. package/lib/types/ink/dom.d.ts.map +1 -1
  604. package/lib/types/ink/dom.js +32 -64
  605. package/lib/types/ink/get-max-width.d.ts +7 -15
  606. package/lib/types/ink/get-max-width.d.ts.map +1 -1
  607. package/lib/types/ink/get-max-width.js +7 -20
  608. package/lib/types/ink/ink.d.ts +1 -0
  609. package/lib/types/ink/ink.d.ts.map +1 -1
  610. package/lib/types/ink/ink.js +22 -3
  611. package/lib/types/ink/layout/node.d.ts +2 -0
  612. package/lib/types/ink/layout/node.d.ts.map +1 -1
  613. package/lib/types/ink/layout/yoga.d.ts +1 -0
  614. package/lib/types/ink/layout/yoga.d.ts.map +1 -1
  615. package/lib/types/ink/layout/yoga.js +3 -0
  616. package/lib/types/ink/node-cache.d.ts +11 -0
  617. package/lib/types/ink/node-cache.d.ts.map +1 -1
  618. package/lib/types/ink/node-cache.js +3 -0
  619. package/lib/types/ink/output.d.ts +6 -1
  620. package/lib/types/ink/output.d.ts.map +1 -1
  621. package/lib/types/ink/output.js +55 -65
  622. package/lib/types/ink/render-node-to-output.d.ts +24 -1
  623. package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
  624. package/lib/types/ink/render-node-to-output.js +195 -71
  625. package/lib/types/ink/renderer.d.ts.map +1 -1
  626. package/lib/types/ink/renderer.js +14 -2
  627. package/lib/types/ink/styles.d.ts +12 -0
  628. package/lib/types/ink/styles.d.ts.map +1 -1
  629. package/lib/types/ink/tabstops.d.ts +3 -2
  630. package/lib/types/ink/tabstops.d.ts.map +1 -1
  631. package/lib/types/ink/tabstops.js +5 -4
  632. package/lib/types/ink/wrap-text.js +2 -2
  633. package/lib/types/modelGroups.d.ts +1 -1
  634. package/lib/types/modelGroups.d.ts.map +1 -1
  635. package/lib/types/modelRoute.js +1 -1
  636. package/lib/types/native-ts/yoga-layout/index.d.ts +8 -3
  637. package/lib/types/native-ts/yoga-layout/index.d.ts.map +1 -1
  638. package/lib/types/native-ts/yoga-layout/index.js +23 -8
  639. package/lib/types/plugin-host.d.ts +3 -4
  640. package/lib/types/plugin-host.d.ts.map +1 -1
  641. package/lib/types/plugin-host.js +8 -6
  642. package/lib/types/screens/AgentView.d.ts +1 -1
  643. package/lib/types/screens/AgentView.d.ts.map +1 -1
  644. package/lib/types/screens/Chat.d.ts +3 -2
  645. package/lib/types/screens/Chat.d.ts.map +1 -1
  646. package/lib/types/screens/Chat.js +91 -17
  647. package/lib/types/screens/SessionBrowser.d.ts +1 -1
  648. package/lib/types/screens/SessionBrowser.d.ts.map +1 -1
  649. package/lib/types/screens/SessionTree.d.ts +1 -1
  650. package/lib/types/screens/SessionTree.d.ts.map +1 -1
  651. package/lib/types/screens/Settings.d.ts +1 -1
  652. package/lib/types/screens/Settings.d.ts.map +1 -1
  653. package/lib/types/screens/StatusLine.d.ts +1 -1
  654. package/lib/types/screens/StatusLine.d.ts.map +1 -1
  655. package/lib/types/screens/StatusLine.js +40 -1
  656. package/lib/types/screens/TrajectoryScene.d.ts +1 -1
  657. package/lib/types/screens/TrajectoryScene.d.ts.map +1 -1
  658. package/lib/types/sessionModes.d.ts +11 -15
  659. package/lib/types/sessionModes.d.ts.map +1 -1
  660. package/lib/types/sessionModes.js +11 -0
  661. package/lib/types/tuiDisplayPrefs.d.ts +2 -68
  662. package/lib/types/tuiDisplayPrefs.d.ts.map +1 -1
  663. package/lib/types/tuiDisplayPrefs.js +5 -1
  664. package/lib/types/utils/credentials.d.ts +13 -0
  665. package/lib/types/utils/credentials.d.ts.map +1 -0
  666. package/lib/types/utils/credentials.js +41 -0
  667. package/lib/types/utils/fileSuggestions.d.ts +2 -9
  668. package/lib/types/utils/fileSuggestions.d.ts.map +1 -1
  669. package/lib/types/utils/fold-long-lines.d.ts +38 -0
  670. package/lib/types/utils/fold-long-lines.d.ts.map +1 -0
  671. package/lib/types/utils/fold-long-lines.js +91 -0
  672. package/node_modules/@deepseek-harness-tui/dsh-auth/lib/pi-ai.d.ts +1 -1
  673. package/node_modules/@deepseek-harness-tui/dsh-auth/lib/profiles.js +4 -0
  674. package/node_modules/@deepseek-harness-tui/dsh-auth/lib/service.js +15 -2
  675. package/node_modules/@deepseek-harness-tui/dsh-auth/package.json +10 -10
  676. package/package.json +125 -81
  677. package/presets/liangshen/.dsh-tui-managed.json +1 -1
  678. package/presets/liangshen/agent.cordis.yml +20 -4
  679. package/presets/liangshen/compaction-epoch.mjs +3 -1
  680. package/presets/liangshen/instruction-hint.mjs +2 -1
  681. package/presets/liangshen/session-events.mjs +8 -0
  682. package/lib/types/dsh-adapter/grants.d.ts.map +0 -1
  683. package/lib/types/dsh-adapter/host-descriptor.d.ts +0 -24
  684. package/lib/types/dsh-adapter/host-descriptor.d.ts.map +0 -1
  685. package/lib/types/dsh-adapter/host-descriptor.js +0 -169
  686. package/lib/types/dsh-adapter/plugin-test-utils.d.ts +0 -62
  687. package/lib/types/dsh-adapter/plugin-test-utils.d.ts.map +0 -1
  688. package/lib/types/dsh-adapter/plugin-test-utils.js +0 -61
  689. package/lib/types/plugin-spec/negotiate.d.ts.map +0 -1
  690. package/lib/types/plugin-spec/permission-scope.d.ts.map +0 -1
  691. package/lib/types/plugin-spec/registry.d.ts.map +0 -1
  692. package/lib/types/plugin-spec/schema-check.d.ts.map +0 -1
  693. package/lib/types/plugin-spec/tui-extension.d.ts +0 -16
  694. package/lib/types/plugin-spec/tui-extension.d.ts.map +0 -1
  695. package/lib/types/plugin-spec/tui-extension.js +0 -79
  696. package/lib/types/plugin-spec/types.d.ts.map +0 -1
  697. package/lib/types/plugin-spec/validate.d.ts.map +0 -1
  698. package/lib/types/test-utils.d.ts +0 -2
  699. package/lib/types/test-utils.d.ts.map +0 -1
  700. package/lib/types/test-utils.js +0 -8
  701. /package/lib/types/{plugin-spec → adapter/standard}/negotiate.d.ts +0 -0
  702. /package/lib/types/{plugin-spec → adapter/standard}/negotiate.js +0 -0
  703. /package/lib/types/{plugin-spec → adapter/standard}/registry.d.ts +0 -0
  704. /package/lib/types/{plugin-spec → adapter/standard}/schema-check.d.ts +0 -0
  705. /package/lib/types/{plugin-spec → adapter/standard}/types.js +0 -0
@@ -0,0 +1,256 @@
1
+ import { t } from '../../i18n.js';
2
+ import { isReservedCredentialRef } from '../credentialRefGuard.js';
3
+ export function createSettingsHosts(ctx, assertActive = () => undefined) {
4
+ let settingsHostResolved = false;
5
+ let settingsHostCache;
6
+ return {
7
+ settingsHost() {
8
+ if (settingsHostResolved)
9
+ return settingsHostCache;
10
+ settingsHostResolved = true;
11
+ // The `/settings` screen's runtime surface, over the same dsh-base
12
+ // seams the `/provider` wizard uses: settings (namespace descriptors +
13
+ // revision-fenced mutate) and credentials (secret writes). Structurally
14
+ // typed like the other optional seams in this file.
15
+ const settings = ctx.get('settings');
16
+ const credentials = ctx.get('credentials');
17
+ if (!settings)
18
+ return undefined;
19
+ settingsHostCache = {
20
+ listNamespaces() {
21
+ // redactSecrets: the screen never renders a secret literal — secret
22
+ // fields are write-only controls over the credentials seam.
23
+ return settings.describe({ redactSecrets: true }).map(descriptor => ({
24
+ ns: descriptor.ns,
25
+ revision: descriptor.revision,
26
+ applies: descriptor.applies,
27
+ value: descriptor.value,
28
+ user: descriptor.user,
29
+ }));
30
+ },
31
+ write(ns, ops, expectedRevision) {
32
+ return settings.mutate(ns, ops, expectedRevision);
33
+ },
34
+ async credentialConfigured(ref) {
35
+ // The environment shadows the store (providerSetup.envShadows), so
36
+ // an env-provided key counts as configured.
37
+ if (process.env[ref] !== undefined)
38
+ return true;
39
+ return credentials !== undefined && (await credentials.resolve(ref)) !== undefined;
40
+ },
41
+ async writeCredential(ref, value) {
42
+ if (!credentials)
43
+ throw new Error('credentials service unavailable');
44
+ // Second layer of the secret-ref reservation guard: the
45
+ // registration layer already rejects plugin sections with
46
+ // host-owned refs, but this seam must not trust it — a stale
47
+ // section (registered before the guard) or a direct call must not
48
+ // reach the shared credentials. The host's own main-credential
49
+ // writes go through providerSetup().writeCredential instead.
50
+ if (isReservedCredentialRef(ref))
51
+ throw new Error(t('settings-secret-ref-reserved', { ref }));
52
+ await credentials.set(ref, value);
53
+ },
54
+ };
55
+ return settingsHostCache;
56
+ },
57
+ providerSetup() {
58
+ // The `/provider` wizard's runtime surface, over the dsh-base seams:
59
+ // settings (profile persistence), credentials (key storage) and the
60
+ // llm runtime's configurable-provider directory + model discovery.
61
+ // Structurally typed like the other optional seams in this file.
62
+ const llm = ctx.get('llm');
63
+ const settings = ctx.get('settings');
64
+ const credentials = ctx.get('credentials');
65
+ // Without dsh-llm-pi-ai there is no adapter watching the settings
66
+ // section, so a written profile would never activate a route. The
67
+ // adapter registers its `llm-pi-ai` settings namespace at mount, which
68
+ // is the rc.6-observable mount signal (the newer
69
+ // `listModelDiscoveryNamespaces()` does not exist in rc.6).
70
+ if (!llm || !settings || !credentials
71
+ || !settings.describe().some(descriptor => descriptor.ns === 'llm-pi-ai')) {
72
+ return undefined;
73
+ }
74
+ const revision = () => settings.describe().find(descriptor => descriptor.ns === 'llm-pi-ai')?.revision;
75
+ // The OAuth sign-in surface (dsh-auth-style plugin), structural and
76
+ // optional: mounting the plugin lights up the wizard's OAuth branch,
77
+ // and without it the wizard is exactly what it was before.
78
+ const oauthApi = ctx.get('dshAuth')?.api;
79
+ // Real catalog membership on this mount: routes the adapter knows from
80
+ // its installed catalog (`declared !== true`). A stored profile naming
81
+ // such a route is an activation/override of the catalog route — even
82
+ // when it carries an explicit `api` field — while routes the adapter
83
+ // only knows because a profile names them are custom. Classifying by
84
+ // anything less (a profile-shape guess) misroutes the edit semantics.
85
+ const catalogMembers = () => new Set(llm.listConfigurableProviders()
86
+ .filter(entry => entry.settingsNs === 'llm-pi-ai' && entry.declared !== true)
87
+ .map(entry => entry.provider));
88
+ return {
89
+ ...(oauthApi === undefined ? {} : { oauth: oauthApi }),
90
+ listCatalogProviders() {
91
+ // declared === true marks routes the adapter knows only because a
92
+ // stored profile names them (user-added); the rest are activatable
93
+ // catalog routes.
94
+ return llm.listConfigurableProviders()
95
+ .filter(entry => entry.settingsNs === 'llm-pi-ai' && entry.declared !== true)
96
+ .map(entry => ({ provider: entry.provider, displayName: entry.displayName }));
97
+ },
98
+ routeExists(route) {
99
+ const section = settings.get('llm-pi-ai');
100
+ return section?.providers !== undefined && route in section.providers;
101
+ },
102
+ listRefUsers(ref, exceptRoute) {
103
+ // The RESOLVED merge (settings.get), not the user layer: a base
104
+ // provider or composition-base route naming this ref is invisible
105
+ // to listConfiguredProviders() but still consumes the credential.
106
+ const section = settings.get('llm-pi-ai');
107
+ const providers = section?.providers;
108
+ if (providers === undefined || typeof providers !== 'object' || providers === null)
109
+ return [];
110
+ return Object.entries(providers).flatMap(([route, profile]) => {
111
+ if (route === exceptRoute)
112
+ return [];
113
+ if (typeof profile !== 'object' || profile === null)
114
+ return [];
115
+ const stored = profile;
116
+ return stored.apiKeyEnv === ref ? [route] : [];
117
+ });
118
+ },
119
+ listConfiguredProviders() {
120
+ // The editable/deletable set is the USER layer only: `describe()`'s
121
+ // `user` is the raw user section — the same source the /settings
122
+ // screen treats as overrides. `settings.get()` is the resolved
123
+ // merge; listing a route inherited from a composition base would
124
+ // promise a delete that cannot land (the unset only clears the
125
+ // user layer, so the base value re-inherits) while the credential
126
+ // is really gone. When the running base exposes no `user` layer,
127
+ // fall back to the resolved section: such builds (the official
128
+ // dsh-base) carry zero base routes anyway, so the layers coincide.
129
+ const descriptor = settings.describe().find(row => row.ns === 'llm-pi-ai');
130
+ // Only an absent `user` (older base) falls back; a present-but-empty
131
+ // user layer legitimately exposes nothing to edit.
132
+ const section = (descriptor?.user !== undefined
133
+ ? descriptor.user
134
+ : settings.get('llm-pi-ai'));
135
+ const providers = section?.providers;
136
+ if (providers === undefined || typeof providers !== 'object' || providers === null)
137
+ return [];
138
+ const catalog = catalogMembers();
139
+ return Object.entries(providers).flatMap(([route, profile]) => {
140
+ // The settings section is user-editable, so a `providers.<route>`
141
+ // entry may be null or a scalar; skip anything that is not a plain
142
+ // object instead of dereferencing it and throwing (which would
143
+ // block the edit/delete menu for every route).
144
+ if (typeof profile !== 'object' || profile === null)
145
+ return [];
146
+ const stored = profile;
147
+ const ref = typeof stored.apiKeyEnv === 'string' ? stored.apiKeyEnv : '';
148
+ const baseURL = typeof stored.baseURL === 'string' && stored.baseURL !== ''
149
+ ? stored.baseURL
150
+ : undefined;
151
+ const api = typeof stored.api === 'string' && stored.api !== ''
152
+ ? stored.api
153
+ : undefined;
154
+ // Keep the raw model entries: a model-list re-selection must
155
+ // rewrite kept ids with their stored objects, so per-model fields
156
+ // this wizard never learned about survive the edit.
157
+ const modelEntries = Array.isArray(stored.models)
158
+ ? stored.models.filter((model) => typeof model === 'object' && model !== null)
159
+ : undefined;
160
+ const models = modelEntries?.flatMap(entry => typeof entry.id === 'string' ? [entry.id] : []);
161
+ return [{
162
+ route,
163
+ ref,
164
+ isCatalog: catalog.has(route),
165
+ shadowed: ref !== '' && process.env[ref] !== undefined,
166
+ ...(baseURL !== undefined ? { baseURL } : {}),
167
+ ...(api !== undefined ? { api } : {}),
168
+ ...(models !== undefined ? { models } : {}),
169
+ ...(modelEntries !== undefined && modelEntries.length > 0
170
+ ? { modelEntries }
171
+ : {}),
172
+ }];
173
+ });
174
+ },
175
+ discoverModels(request) {
176
+ return llm.discoverModels('llm-pi-ai', request);
177
+ },
178
+ envShadows(ref) {
179
+ return process.env[ref] !== undefined;
180
+ },
181
+ envValue(ref) {
182
+ return process.env[ref];
183
+ },
184
+ async readCredential(ref) {
185
+ const resolved = await credentials.resolve(ref);
186
+ return resolved?.value;
187
+ },
188
+ writeCredential(ref, value) {
189
+ return credentials.set(ref, value);
190
+ },
191
+ removeCredential(ref) {
192
+ return credentials.unset(ref);
193
+ },
194
+ async writeProfile(route, profile) {
195
+ const ops = [{ op: 'set', path: ['providers', route], value: profile }];
196
+ try {
197
+ assertActive();
198
+ await settings.mutate('llm-pi-ai', ops, revision());
199
+ }
200
+ catch (error) {
201
+ // One retry on a stale-revision conflict (a concurrent write
202
+ // landed between describe and mutate); anything else propagates
203
+ // so the wizard can report and roll back the credential.
204
+ const code = error?.code;
205
+ if (code !== 'SETTINGS_CONFLICT')
206
+ throw error;
207
+ assertActive();
208
+ await settings.mutate('llm-pi-ai', ops, revision());
209
+ }
210
+ },
211
+ async mutateProfile(route, ops) {
212
+ // Route-relative path patch: only the addressed fields inside
213
+ // `providers.<route>` enter the write, so stored fields the TUI
214
+ // does not model never pass through here and cannot be dropped.
215
+ const full = ops.map(op => op.op === 'set'
216
+ ? { op: 'set', path: ['providers', route, ...op.path], value: op.value }
217
+ : { op: 'unset', path: ['providers', route, ...op.path] });
218
+ try {
219
+ assertActive();
220
+ await settings.mutate('llm-pi-ai', full, revision());
221
+ }
222
+ catch (error) {
223
+ // Same stale-revision retry as writeProfile.
224
+ const code = error?.code;
225
+ if (code !== 'SETTINGS_CONFLICT')
226
+ throw error;
227
+ assertActive();
228
+ await settings.mutate('llm-pi-ai', full, revision());
229
+ }
230
+ },
231
+ async removeProfile(route) {
232
+ const ops = [{ op: 'unset', path: ['providers', route] }];
233
+ try {
234
+ assertActive();
235
+ await settings.mutate('llm-pi-ai', ops, revision());
236
+ }
237
+ catch (error) {
238
+ // Same stale-revision retry as writeProfile: the wizard reports
239
+ // any real failure so the credential deletion can be skipped.
240
+ const code = error?.code;
241
+ if (code !== 'SETTINGS_CONFLICT')
242
+ throw error;
243
+ assertActive();
244
+ await settings.mutate('llm-pi-ai', ops, revision());
245
+ }
246
+ },
247
+ };
248
+ },
249
+ async oauthProviderStatuses() {
250
+ // Same optional seam the wizard's OAuth branch reads: absent plugin →
251
+ // undefined, and `/login` renders exactly its pre-plugin lines.
252
+ const api = ctx.get('dshAuth')?.api;
253
+ return api === undefined ? undefined : api.providers();
254
+ }
255
+ };
256
+ }
@@ -0,0 +1,33 @@
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ import type { Agent } from '@deepseek-ai/dsh-agent';
3
+ import { type UserMessage } from '@deepseek-ai/dsh-llm';
4
+ import type { CommandRuntime } from '@deepseek-ai/dsh-commands';
5
+ import { type LocalCommand, type LocalizedDescriptions } from '../../commands.js';
6
+ import type { ChannelOwner } from './owner.js';
7
+ import type { SkillRegistry } from './loaded-context.js';
8
+ /** Owns the merged catalog, host registrations, retry timer and all skill reads. */
9
+ export declare function createSkillCatalog(ctx: Context, deps: {
10
+ owner: Pick<ChannelOwner, 'current' | 'own'>;
11
+ commandService: CommandRuntime | undefined;
12
+ agent(): Agent;
13
+ cwd(): string;
14
+ setCommands(commands: LocalCommand[]): void;
15
+ commandDescriptions(name: string): LocalizedDescriptions | undefined;
16
+ /** Submit a user line through the channel's delivery pipeline. The
17
+ * fallback skill path rides this same entry point and attaches the
18
+ * rendered body, so the line stays a plain user message (fence, pending
19
+ * preview and `@` expansion included) and the body is appended to that
20
+ * message's step batch — never a turn of its own. */
21
+ deliverUserText(text: string, placement: 'followup', attach?: UserMessage): void;
22
+ }): {
23
+ start: () => void;
24
+ release: () => void;
25
+ refreshCommands: () => void;
26
+ refreshSkillCommands: (fromRetry?: boolean) => Promise<void>;
27
+ registryFor: (agent: Agent) => SkillRegistry | undefined;
28
+ viewOptions: (agent: Agent) => {
29
+ scope: Agent;
30
+ cwd: string;
31
+ };
32
+ };
33
+ //# sourceMappingURL=skill-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-catalog.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/skill-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE/D,OAAO,EAA8E,KAAK,YAAY,EAAE,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAI7J,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAKxD,oFAAoF;AACpF,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE;IACJ,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,KAAK,CAAC,CAAA;IAC5C,cAAc,EAAE,cAAc,GAAG,SAAS,CAAA;IAC1C,KAAK,IAAI,KAAK,CAAA;IACd,GAAG,IAAI,MAAM,CAAA;IACb,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;IAC3C,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAAA;IACpE;;;;0DAIsD;IACtD,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CACjF;iBA4JiB,IAAI;mBARF,IAAI;2BAhII,IAAI;mDAoDwB,OAAO,CAAC,IAAI,CAAC;yBAtDzC,KAAK,KAAG,aAAa,GAAG,SAAS;yBADjC,KAAK,KAAG;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;EA+JlE"}
@@ -0,0 +1,215 @@
1
+ import { createUserMessage } from '@deepseek-ai/dsh-llm';
2
+ import { isUserInvocable, renderSkillContent } from '@deepseek-ai/dsh-skill';
3
+ import { HIDDEN_COMMAND_NAMES, isLocalCommandName, parseCommandName, LOCAL_COMMANDS } from '../../commands.js';
4
+ import { t } from '../../i18n.js';
5
+ import { serviceForAgent } from '../presets.js';
6
+ import { hasCommandErrorCode, mapCommandError } from '../command-errors.js';
7
+ const SKILL_COMMAND_RETRY_MS = 800;
8
+ const MAX_SKILL_RETRY_ATTEMPTS = 3;
9
+ /** Owns the merged catalog, host registrations, retry timer and all skill reads. */
10
+ export function createSkillCatalog(ctx, deps) {
11
+ let commandListSeq = 0;
12
+ let skillCommandSeq = 0;
13
+ let lastGoodSkills;
14
+ const registrations = new Map();
15
+ const refused = new Set();
16
+ let retry;
17
+ let retryAttempts = 0;
18
+ let released = false;
19
+ const resetRetry = () => {
20
+ if (retry !== undefined)
21
+ clearTimeout(retry);
22
+ retry = undefined;
23
+ retryAttempts = 0;
24
+ };
25
+ const viewOptions = (agent) => ({ scope: agent, cwd: deps.cwd() });
26
+ const registryFor = (agent) => serviceForAgent(ctx, agent, 'skills');
27
+ const refreshCommands = () => {
28
+ if (!deps.owner.current())
29
+ return;
30
+ const target = deps.agent();
31
+ const token = ++commandListSeq;
32
+ const merged = [...LOCAL_COMMANDS];
33
+ if (deps.commandService !== undefined) {
34
+ for (const descriptor of deps.commandService.list(target)) {
35
+ if (!deps.owner.current())
36
+ return;
37
+ if (HIDDEN_COMMAND_NAMES.has(descriptor.name) || merged.some(command => command.name === descriptor.name))
38
+ continue;
39
+ const descriptions = deps.commandDescriptions(descriptor.name);
40
+ // `images` became `attachments` upstream (composer attachment
41
+ // admission); read both so older cohorts keep their image commands.
42
+ const input = descriptor.input;
43
+ merged.push({ name: descriptor.name, description: descriptor.description, ...(descriptions === undefined ? {} : { descriptions }), tag: input?.hint, external: true, acceptsImages: input?.attachments ?? input?.images === true, ...(registrations.has(descriptor.name) ? { skill: true } : {}) });
44
+ }
45
+ }
46
+ if (!deps.owner.current() || target !== deps.agent())
47
+ return;
48
+ deps.setCommands(merged);
49
+ if (!deps.owner.current() || target !== deps.agent())
50
+ return;
51
+ const registry = registryFor(target);
52
+ if (registry === undefined)
53
+ return;
54
+ const restore = () => {
55
+ if (!deps.owner.current() || target !== deps.agent())
56
+ return;
57
+ const fallback = lastGoodSkills?.agent === target ? lastGoodSkills.commands : [];
58
+ const entries = fallback.filter(entry => !merged.some(command => command.name === entry.name));
59
+ if (entries.length > 0)
60
+ deps.setCommands([...merged, ...entries]);
61
+ };
62
+ void registry.snapshot(viewOptions(target)).then(observation => {
63
+ if (!deps.owner.current() || token !== commandListSeq || target !== deps.agent())
64
+ return;
65
+ if (!observation.complete) {
66
+ ctx.logger.warn('skill command merge: incomplete catalog observation, keeping last-good skills');
67
+ restore();
68
+ return;
69
+ }
70
+ // Cache the observation, not the delta: registered skills are already
71
+ // in merged on later reads. Local/host collisions still win on restore.
72
+ const skills = [];
73
+ for (const skill of observation.skills) {
74
+ if (isUserInvocable(skill) && !skills.some(command => command.name === skill.name)) {
75
+ skills.push({ name: skill.name, description: skill.description, skill: true });
76
+ }
77
+ }
78
+ lastGoodSkills = { agent: target, commands: skills };
79
+ const added = skills.filter(entry => !merged.some(command => command.name === entry.name));
80
+ if (added.length > 0 && deps.owner.current() && target === deps.agent())
81
+ deps.setCommands([...merged, ...added]);
82
+ }).catch((error) => {
83
+ if (!deps.owner.current() || token !== commandListSeq || target !== deps.agent())
84
+ return;
85
+ ctx.logger.warn('skill command merge failed: %o', error);
86
+ restore();
87
+ });
88
+ };
89
+ const refreshSkillCommands = async (fromRetry = false) => {
90
+ if (released || !deps.owner.current() || deps.commandService === undefined)
91
+ return;
92
+ // Explicit refreshes (including skills/change and agent swaps) supersede
93
+ // the old ladder. Only the timer continuation consumes the same budget.
94
+ if (!fromRetry)
95
+ resetRetry();
96
+ const token = ++skillCommandSeq;
97
+ const target = deps.agent();
98
+ const registry = registryFor(target);
99
+ if (registry === undefined)
100
+ return;
101
+ let observation;
102
+ try {
103
+ observation = await registry.snapshot(viewOptions(target));
104
+ }
105
+ catch (error) {
106
+ if (deps.owner.current() && token === skillCommandSeq && target === deps.agent())
107
+ ctx.logger.warn('skill commands: catalog read failed: %o', error);
108
+ return;
109
+ }
110
+ if (!deps.owner.current() || token !== skillCommandSeq || target !== deps.agent())
111
+ return;
112
+ if (!observation.complete) {
113
+ if (retry === undefined && retryAttempts < MAX_SKILL_RETRY_ATTEMPTS) {
114
+ const delay = SKILL_COMMAND_RETRY_MS * 2 ** retryAttempts++;
115
+ retry = setTimeout(() => {
116
+ retry = undefined;
117
+ if (token === skillCommandSeq && target === deps.agent())
118
+ void refreshSkillCommands(true);
119
+ }, delay);
120
+ retry.unref?.();
121
+ }
122
+ // Partial reads cannot revoke callable handlers or replace descriptions.
123
+ // Keep the last-good registrations until an authoritative observation.
124
+ return;
125
+ }
126
+ resetRetry();
127
+ const wanted = new Map(observation.skills
128
+ .filter(isUserInvocable)
129
+ .filter(skill => parseCommandName(`/${skill.name}`)?.name === skill.name)
130
+ .filter(skill => !isLocalCommandName(skill.name))
131
+ .map(skill => [skill.name, skill.description]));
132
+ for (const [name, entry] of registrations) {
133
+ if (wanted.get(name) === entry.description)
134
+ continue;
135
+ entry.dispose();
136
+ registrations.delete(name);
137
+ }
138
+ for (const [name, description] of wanted) {
139
+ if (registrations.has(name) || refused.has(name) || deps.commandService.find(target, name) !== undefined)
140
+ continue;
141
+ try {
142
+ const dispose = deps.commandService.register({
143
+ name, description, recordInput: false,
144
+ handler: async ({ agent: invoker, rawInput, signal }) => {
145
+ // This registration is bound to this Channel; retained handlers
146
+ // must never redirect another agent into its current session.
147
+ if (!deps.owner.current() || invoker !== deps.agent())
148
+ return { kind: 'error', text: t('skill-unavailable', { name }) };
149
+ const tools = ctx.get('tools');
150
+ if (tools?.get('skill', invoker) !== undefined) {
151
+ if (!deps.owner.current() || invoker !== deps.agent())
152
+ return { kind: 'error', text: t('skill-unavailable', { name }) };
153
+ deps.deliverUserText(`/${name}${rawInput}`, 'followup');
154
+ return { kind: 'success' };
155
+ }
156
+ const skill = await registryFor(invoker)?.get(name, { ...viewOptions(invoker), signal });
157
+ if (skill === undefined || !isUserInvocable(skill))
158
+ return { kind: 'error', text: t('skill-unavailable', { name }) };
159
+ if (!deps.owner.current() || invoker !== deps.agent())
160
+ return { kind: 'error', text: t('skill-unavailable', { name }) };
161
+ // No `skill` tool: deliver the gesture as the user's own line and
162
+ // attach the rendered body. The channel's resident pre-step
163
+ // listener appends the body AFTER the admitted batch — the same
164
+ // shape/order as dsh-tool-skill's gesture boundary (#842).
165
+ const bodyMessage = createUserMessage({ content: [{ type: 'text', text: renderSkillContent(skill) }], source: { kind: 'skill-invocation', name, form: 'instructions' } });
166
+ deps.deliverUserText(`/${name}${rawInput}`, 'followup', bodyMessage);
167
+ return { kind: 'success' };
168
+ },
169
+ });
170
+ registrations.set(name, { dispose, description });
171
+ ctx.get('tuiEffectLedger')?.record({ operation: 'create', resource: { kind: 'command', id: name }, result: 'applied' }, ctx);
172
+ }
173
+ catch (error) {
174
+ const mapped = mapCommandError(error);
175
+ refused.add(name);
176
+ ctx.logger.warn(`skill commands: "${name}" not registrable%s: %o`, hasCommandErrorCode(mapped, 'DUPLICATE_CONTRIBUTION_ID') ? ' (DUPLICATE_CONTRIBUTION_ID)' : '', mapped);
177
+ ctx.get('tuiEffectLedger')?.record({ operation: 'create', resource: { kind: 'command', id: name }, result: 'failed', errorCode: hasCommandErrorCode(mapped, 'DUPLICATE_CONTRIBUTION_ID') ? 'DUPLICATE_CONTRIBUTION_ID' : 'COMMAND_FAILED' }, ctx);
178
+ }
179
+ }
180
+ };
181
+ const release = () => {
182
+ if (released)
183
+ return;
184
+ released = true;
185
+ skillCommandSeq += 1;
186
+ resetRetry();
187
+ for (const entry of registrations.values())
188
+ entry.dispose();
189
+ registrations.clear();
190
+ };
191
+ const start = () => {
192
+ if (!deps.owner.current())
193
+ return;
194
+ // Establish a single idempotent teardown before the first registration;
195
+ // a later ctx.on() throw then rolls back every earlier listener.
196
+ const owned = [deps.owner.own(release)];
197
+ try {
198
+ owned.push(deps.owner.own(ctx.on('commands/change', refreshCommands)));
199
+ owned.push(deps.owner.own(ctx.on('skills/change', () => { refreshCommands(); void refreshSkillCommands(); })));
200
+ if (!deps.owner.current()) {
201
+ for (const dispose of owned.reverse())
202
+ dispose();
203
+ return;
204
+ }
205
+ refreshCommands();
206
+ void refreshSkillCommands();
207
+ }
208
+ catch (error) {
209
+ for (const dispose of owned.reverse())
210
+ dispose();
211
+ throw error;
212
+ }
213
+ };
214
+ return { start, release, refreshCommands, refreshSkillCommands, registryFor, viewOptions };
215
+ }
@@ -0,0 +1,46 @@
1
+ import type { AgentHandle } from '@deepseek-ai/dsh-agent';
2
+ import type { SessionModeSpec } from '../../sessionModes.js';
3
+ import { type PageMarginSetting, type ScrollGutterMode, type StatusBarConfig, type ToolBackground } from '../../tuiDisplayPrefs.js';
4
+ import type { ChannelState } from './types.js';
5
+ /** Launch configuration belongs to channel construction, not the composition root. */
6
+ export interface ChannelLaunchOptions {
7
+ model: string;
8
+ cwd: string;
9
+ provider: string;
10
+ effort?: string;
11
+ activity?: boolean;
12
+ activityFrames?: string;
13
+ diffLayout?: 'auto' | 'split' | 'unified';
14
+ thinkingFold?: 'preview' | 'full';
15
+ toolBackground?: ToolBackground;
16
+ scrollGutter?: ScrollGutterMode;
17
+ pageMargin?: PageMarginSetting;
18
+ foldTerminalCommand?: boolean;
19
+ promptSessionLabel?: boolean;
20
+ expandEditor?: boolean;
21
+ smoothStreaming?: boolean;
22
+ statusBar?: Partial<StatusBarConfig>;
23
+ whale?: boolean;
24
+ whaleIdle?: boolean;
25
+ minimal?: boolean;
26
+ contextBar?: boolean;
27
+ configuredPreset?: string;
28
+ configuredProvider?: string;
29
+ configuredModel?: string;
30
+ configuredLang?: string;
31
+ configuredActivityFrames?: string;
32
+ agentPreset?: string;
33
+ modes?: readonly SessionModeSpec[];
34
+ handle?: AgentHandle;
35
+ }
36
+ /**
37
+ * Neutral observable fields only. Behaviour is assembled explicitly by the
38
+ * composition root after each specialist owner exists, so this factory cannot
39
+ * acquire services, subscribe, or create a second authority bag.
40
+ */
41
+ export declare function createInitialChannelView(options: ChannelLaunchOptions, input: {
42
+ agentId: string;
43
+ mode: ChannelState['mode'];
44
+ cwdDescription: string;
45
+ }): Pick<ChannelState, 'effortLevels' | 'version' | 'rows' | 'status' | 'sessionTitle' | 'sessionColor' | 'agentId' | 'agentBindingGeneration' | 'model' | 'provider' | 'tokens' | 'cwd' | 'displayCwd' | 'gitBranch' | 'working' | 'cancelPending' | 'spinnerMode' | 'responseChars' | 'activeToolCount' | 'turnStart' | 'lastUserText' | 'notifications' | 'contextWindow' | 'reasoningEffort' | 'mode' | 'modeIndex' | 'workingActivity' | 'activityFrames' | 'configuredProvider' | 'configuredModel' | 'configuredPreset' | 'configuredActivityFrames' | 'configuredLang' | 'diffLayout' | 'thinkingFold' | 'toolBackground' | 'scrollGutter' | 'pageMargin' | 'foldTerminalCommand' | 'promptSessionLabel' | 'expandEditor' | 'smoothStreaming' | 'statusBar' | 'whale' | 'whaleIdle' | 'minimal' | 'activityEnabled' | 'contextBarEnabled' | 'agentPreset' | 'goal' | 'todos' | 'loadedContext' | 'pending' | 'commandList' | 'lastUsage' | 'tps' | 'tpsSamples' | 'contextSegments' | 'subagents' | 'backgroundJobs'>;
46
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAA2F,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAE5N,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,sFAAsF;AACtF,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;IACzC,YAAY,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;IACjC,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,YAAY,CAAC,EAAE,gBAAgB,CAAA;IAC/B,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IACpC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,SAAS,eAAe,EAAE,CAAA;IAClC,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAC7E,IAAI,CAAC,YAAY,EAClB,cAAc,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,cAAc,GAAG,cAAc,GAChF,SAAS,GAAG,wBAAwB,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,KAAK,GAC9E,YAAY,GAAG,WAAW,GAAG,SAAS,GAAG,eAAe,GAAG,aAAa,GACxE,eAAe,GAAG,iBAAiB,GAAG,WAAW,GAAG,cAAc,GAClE,eAAe,GAAG,eAAe,GAAG,iBAAiB,GAAG,MAAM,GAAG,WAAW,GAC5E,iBAAiB,GAAG,gBAAgB,GAAG,oBAAoB,GAAG,iBAAiB,GAC/E,kBAAkB,GAAG,0BAA0B,GAAG,gBAAgB,GAAG,YAAY,GACjF,cAAc,GAAG,gBAAgB,GAAG,cAAc,GAAG,YAAY,GACjE,qBAAqB,GAAG,oBAAoB,GAAG,cAAc,GAAG,iBAAiB,GACjF,WAAW,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,iBAAiB,GAAG,mBAAmB,GACzF,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,eAAe,GAAG,SAAS,GAAG,aAAa,GAC9E,WAAW,GAAG,KAAK,GAAG,YAAY,GAAG,iBAAiB,GAAG,WAAW,GAAG,gBAAgB,CACxF,CAuBA"}
@@ -0,0 +1,31 @@
1
+ import { normalizePageMargin, normalizeScrollGutter, normalizeStatusBar, normalizeToolBackground } from '../../tuiDisplayPrefs.js';
2
+ import { normalizeActivityPreset } from '../../components/activityFrames.js';
3
+ /**
4
+ * Neutral observable fields only. Behaviour is assembled explicitly by the
5
+ * composition root after each specialist owner exists, so this factory cannot
6
+ * acquire services, subscribe, or create a second authority bag.
7
+ */
8
+ export function createInitialChannelView(options, input) {
9
+ return {
10
+ effortLevels: undefined, version: 0, rows: [], status: 'starting', sessionTitle: '', sessionColor: '',
11
+ agentId: input.agentId, agentBindingGeneration: 0, model: options.model, provider: options.provider,
12
+ tokens: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, peak: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, idle: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 } },
13
+ cwd: options.cwd, displayCwd: input.cwdDescription, gitBranch: undefined, working: false,
14
+ cancelPending: false, spinnerMode: 'requesting', responseChars: 0, activeToolCount: 0,
15
+ turnStart: 0, lastUserText: '', notifications: [], contextWindow: undefined,
16
+ reasoningEffort: options.effort, mode: input.mode, modeIndex: 0, workingActivity: undefined,
17
+ activityFrames: normalizeActivityPreset(options.activityFrames), configuredProvider: options.configuredProvider,
18
+ configuredModel: options.configuredModel, configuredPreset: options.configuredPreset,
19
+ configuredActivityFrames: options.configuredActivityFrames, configuredLang: options.configuredLang,
20
+ diffLayout: options.diffLayout ?? 'auto', thinkingFold: options.thinkingFold ?? 'preview',
21
+ toolBackground: normalizeToolBackground(options.toolBackground), scrollGutter: normalizeScrollGutter(options.scrollGutter),
22
+ pageMargin: normalizePageMargin(options.pageMargin), foldTerminalCommand: options.foldTerminalCommand === true,
23
+ promptSessionLabel: options.promptSessionLabel === true, expandEditor: options.expandEditor !== false,
24
+ smoothStreaming: options.smoothStreaming !== false, statusBar: normalizeStatusBar(options.statusBar),
25
+ whale: options.whale !== false, whaleIdle: options.whaleIdle !== false, minimal: options.minimal === true, activityEnabled: options.activity !== false,
26
+ contextBarEnabled: options.contextBar !== false, agentPreset: options.agentPreset, goal: undefined,
27
+ todos: [], loadedContext: undefined, pending: [], commandList: [], lastUsage: undefined,
28
+ tps: undefined, tpsSamples: [], contextSegments: { system: 0, prompt: 0, assistant: 0, thinking: 0, tools: 0 },
29
+ subagents: [], backgroundJobs: [],
30
+ };
31
+ }
@@ -0,0 +1,47 @@
1
+ import type { Agent, AssistantStreamFrame } from '@deepseek-ai/dsh-agent';
2
+ import { SubagentActivityStore } from '../subagents.js';
3
+ import type { ChannelState, SubagentControl } from './types.js';
4
+ /** Current-session subagent store, row projection and frame-batched stream
5
+ * bridge. The owning channel installs transport subscriptions; this module
6
+ * only accepts scoped events and never captures a replaceable agent itself. */
7
+ export declare function createSubagentProjection(getState: () => Pick<ChannelState, 'rows' | 'subagents' | 'emit' | 'emitStream'>, deps: {
8
+ rowIds: {
9
+ value: number;
10
+ };
11
+ agent(): Agent;
12
+ subagents(): {
13
+ interrupt?(target: string, reason: unknown): void;
14
+ } | undefined;
15
+ /** Optional child metadata lookup; failures must not suppress spawning. */
16
+ lookupChild(id: string): {
17
+ session?: unknown;
18
+ options?: {
19
+ provider?: string;
20
+ model?: string;
21
+ };
22
+ } | undefined;
23
+ }): {
24
+ store: SubagentActivityStore;
25
+ control: SubagentControl;
26
+ pendingTaskDescriptions: string[];
27
+ onSessionEvent: (session: unknown, event: {
28
+ type?: string;
29
+ }) => boolean;
30
+ onStreamFrame: (agent: unknown, frame: AssistantStreamFrame) => boolean;
31
+ onStart: (info: {
32
+ id: string;
33
+ runId?: string;
34
+ provider: string;
35
+ local?: boolean;
36
+ }) => void;
37
+ onEnd: (info: {
38
+ id: string;
39
+ stopReason: string;
40
+ lastAssistantMessage?: unknown[];
41
+ }) => void;
42
+ syncNow: () => void;
43
+ flush: () => boolean;
44
+ dropRows: () => void;
45
+ reset: () => void;
46
+ };
47
+ //# sourceMappingURL=subagent-projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-projection.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/subagent-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAEzE,OAAO,EAAE,qBAAqB,EAAsB,MAAM,iBAAiB,CAAA;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAW,eAAe,EAAe,MAAM,YAAY,CAAA;AAErF;;+EAE+E;AAC/E,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,YAAY,CAAC,EAChF,IAAI,EAAE;IACJ,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACzB,KAAK,IAAI,KAAK,CAAA;IACd,SAAS,IAAI;QAAE,SAAS,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,GAAG,SAAS,CAAA;IAC9E,2EAA2E;IAC3E,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE;YAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,GAAG,SAAS,CAAA;CAC5G;;;;8BAyCgC,OAAO,SAAS;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO;2BAe9C,OAAO,SAAS,oBAAoB,KAAG,OAAO;oBAcrD;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,KAAG,IAAI;kBAoB1E;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,KAAG,IAAI;mBA5D5E,IAAI;iBAMN,OAAO;oBAiFJ,IAAI;iBACP,IAAI;EAEvB"}