@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
@@ -32,15 +32,20 @@
32
32
  * cleanup rule); later calls on a closed handle fail STORAGE_UNAVAILABLE.
33
33
  * - privacyClass: sensitive — keys AND values are never logged.
34
34
  */
35
- import { mkdirSync, readFileSync } from 'node:fs';
35
+ import { randomUUID } from 'node:crypto';
36
+ import { existsSync, mkdirSync, readFileSync, rmdirSync, unlinkSync } from 'node:fs';
36
37
  import { join } from 'node:path';
37
38
  import { writeFileAtomic, withFileLock } from '@deepseek-ai/dsh-atomic-write';
38
39
  import { Service } from '@deepseek-ai/cordis';
39
- import { validateDeleteInput, validateGetInput, validateSetInput, validateGetOutput, validateSetOutput, validateDeleteOutput, } from '@dsh-std/storage';
40
+ import { validateDeleteInput, validateGetInput, validateSetInput, validateGetOutput, validateSetOutput, validateDeleteOutput, } from '../adapter/standard/protocols.js';
40
41
  import { DATA_DIR } from '../utils/paths.js';
42
+ import { assertCapabilityShadowPolicy, } from '../adapter/kernel/runtime.js';
43
+ import { adapterRuntimeFor } from '../adapter/kernel/runtime-context.js';
41
44
  import { activationContext, assertCallerContext, bindCallerEffect, compositionRoot, concreteService } from './host-access.js';
45
+ import { registerStorageLiveProbe } from '../adapter/kernel/host-probe-access.js';
42
46
  import { declaresPermission, requireComponentIdentity, requiresContract } from './component-identity.js';
43
- import { readGrantStore } from './grants.js';
47
+ import { readGrantStore } from '../adapter/standard/grants.js';
48
+ import { getHostGrantStore } from './host-grants.js';
44
49
  /** Quota: max distinct keys per namespace. */
45
50
  export const STORAGE_MAX_KEYS = 256;
46
51
  /** Quota: max serialized file size per namespace (bytes). */
@@ -216,11 +221,17 @@ export class TuiPluginStorageRuntime extends Service {
216
221
  storageStates.set(this, {
217
222
  hostContext: compositionRoot(ctx),
218
223
  grantsOption: options.grants,
219
- fallbackGrants: readGrantStore(),
224
+ fallbackGrants: readGrantStore(undefined, undefined, adapterRuntimeFor(ctx)),
220
225
  ledgerOption: options.ledger,
226
+ runtime: adapterRuntimeFor(ctx),
221
227
  namespaces: new Map(),
222
228
  dir: options.dir ?? join(DATA_DIR, PLUGIN_STORAGE_DIR),
223
229
  });
230
+ // Host-only live probe runner. The method is a private ECMAScript member;
231
+ // plugin-visible Cordis proxies and public types never see a
232
+ // `probeReversible` entry. Only the internal host-probe accessor (with the
233
+ // host token) can invoke it.
234
+ registerStorageLiveProbe(this, () => this.#runReversibleProbe());
224
235
  }
225
236
  /** Grants: the plugin-host row's store when mounted, else a private read.
226
237
  * Resolved PER CALL — sibling services mounted later by the same apply()
@@ -228,13 +239,106 @@ export class TuiPluginStorageRuntime extends Service {
228
239
  * would silently stick to the fallback. */
229
240
  grants() {
230
241
  const state = storageStateFor(this);
231
- return state.grantsOption ?? state.hostContext.get('tuiPluginHost')?.grants ?? state.fallbackGrants;
242
+ return state.grantsOption ?? getHostGrantStore(state.hostContext.get('tuiPluginHost')) ?? state.fallbackGrants;
232
243
  }
233
244
  /** Optional observability; a bare mount (tests) simply records nothing. */
234
245
  ledger() {
235
246
  const state = storageStateFor(this);
236
247
  return state.ledgerOption ?? state.hostContext.get('tuiEffectLedger');
237
248
  }
249
+ /**
250
+ * Host-internal read-only diagnostic probe. Never opens a namespace, never
251
+ * writes to disk; it only confirms the mounted storage runtime is reachable.
252
+ */
253
+ probeDiagnostic() {
254
+ assertCapabilityShadowPolicy('host.storage.probe', storageStateFor(this).runtime.mode, storageStateFor(this).runtime.slices);
255
+ const state = storageStateFor(this);
256
+ return Object.freeze({
257
+ service: 'tuiPluginStorage',
258
+ ok: true,
259
+ dir: state.dir,
260
+ });
261
+ }
262
+ /**
263
+ * Host-internal reversible live probe.
264
+ *
265
+ * This runs through the same production storage handle path as plugin
266
+ * storage (`#openInternal`), using a random temporary namespace. It writes a
267
+ * tiny JSON document, reads it back, deletes it, and guarantees the file is
268
+ * removed in a `finally`. The probe deliberately bypasses only the
269
+ * caller-facing grant/lifecycle bookkeeping; key validation, exact-JSON
270
+ * validation, quota checks and namespace I/O are the production code.
271
+ *
272
+ * Side-effect boundary: the probe file and in-process namespace entry are
273
+ * removed before this method returns; the storage directory itself is
274
+ * retained. In passive/replay shadow the capability guard denies this before
275
+ * any file operation.
276
+ *
277
+ * This is an ECMAScript private method. It is reachable only through the
278
+ * host-only probe accessor registered in the constructor.
279
+ */
280
+ async #runReversibleProbe() {
281
+ assertCapabilityShadowPolicy('host.storage.liveProbe', storageStateFor(this).runtime.mode, storageStateFor(this).runtime.slices);
282
+ const state = storageStateFor(this);
283
+ const tempNamespace = `__dsh_tui_live_probe_${randomUUID().replace(/-/g, '')}`;
284
+ const file = join(state.dir, `${storageFileName(tempNamespace)}.json`);
285
+ const operations = [];
286
+ const identity = {
287
+ componentId: tempNamespace,
288
+ activationId: tempNamespace,
289
+ version: '0.0.0',
290
+ facet: 'host',
291
+ manifest: { id: tempNamespace },
292
+ projection: { id: tempNamespace },
293
+ };
294
+ const handle = concreteService(this).#openInternal(state.hostContext, identity, tempNamespace, {
295
+ enforceGrants: false,
296
+ bindLifecycle: false,
297
+ recordLedger: false,
298
+ });
299
+ const dirExisted = existsSync(state.dir);
300
+ try {
301
+ await handle.set({ key: 'probe', value: { ok: true } });
302
+ operations.push('write');
303
+ const read = await handle.get({ key: 'probe' });
304
+ const parsed = read.value;
305
+ if (parsed?.ok !== true)
306
+ throw new Error('temporary storage probe document did not round-trip through the production handle');
307
+ operations.push('read');
308
+ const deleted = await handle.delete({ key: 'probe' });
309
+ if (!deleted.deleted)
310
+ throw new Error('temporary storage probe key was not deleted through the production handle');
311
+ operations.push('delete');
312
+ return Object.freeze({
313
+ service: 'tuiPluginStorage',
314
+ ok: true,
315
+ operations: Object.freeze(operations),
316
+ tempNamespace,
317
+ });
318
+ }
319
+ catch (error) {
320
+ throw new PluginStorageError('STORAGE_UNAVAILABLE', `storage reversible probe failed: ${error instanceof Error ? error.message : String(error)}`);
321
+ }
322
+ finally {
323
+ state.namespaces.delete(tempNamespace);
324
+ try {
325
+ unlinkSync(file);
326
+ }
327
+ catch {
328
+ // Cleanup is best-effort; the file is namespaced by a fresh UUID and
329
+ // cannot be confused with a real plugin namespace.
330
+ }
331
+ if (!dirExisted) {
332
+ try {
333
+ if (existsSync(state.dir))
334
+ rmdirSync(state.dir);
335
+ }
336
+ catch {
337
+ // The probe must not remove a non-empty pre-existing user directory.
338
+ }
339
+ }
340
+ }
341
+ }
238
342
  /**
239
343
  * Open the caller's private namespace. Identity = the PASSED context's
240
344
  * verified Component identity (no way to name another plugin). The handle
@@ -242,6 +346,7 @@ export class TuiPluginStorageRuntime extends Service {
242
346
  * disposer); data is retained (contract cleanup rule).
243
347
  */
244
348
  open(pluginCtx) {
349
+ assertCapabilityShadowPolicy('host.storage.open', storageStateFor(this).runtime.mode, storageStateFor(this).runtime.slices);
245
350
  const caller = activationContext(pluginCtx);
246
351
  if (caller === undefined)
247
352
  throw new PluginStorageError('STORAGE_UNAVAILABLE', 'storage.local.open requires a live activation context');
@@ -251,13 +356,40 @@ export class TuiPluginStorageRuntime extends Service {
251
356
  if (!requiresContract(identity, 'storage.dsh/v1alpha1', 'LocalStorage')) {
252
357
  throw new PluginStorageError('PERMISSION_NOT_GRANTED', 'storage.local requires the storage.dsh/v1alpha1#LocalStorage contract in the admitted manifest');
253
358
  }
254
- const plugin = identity.componentId;
359
+ // Cordis hands the service out through a Proxy, so `this` is not branded:
360
+ // unwrap to the concrete instance before calling the `#private` member
361
+ // (same pattern as message-observer's `#registerSubscription`).
362
+ return concreteService(this).#openInternal(caller, identity, identity.componentId, {
363
+ enforceGrants: true,
364
+ bindLifecycle: true,
365
+ recordLedger: true,
366
+ });
367
+ }
368
+ /**
369
+ * Internal production storage-path implementation shared by the public
370
+ * `open()` surface and the reversible live probe. The probe passes a
371
+ * synthetic temporary identity and disables only the caller-facing
372
+ * authorization/lifecycle bookkeeping; all key validation, exact-JSON
373
+ * validation, namespace file handling, quota checks and read/write/delete
374
+ * operations are exactly the production handle code.
375
+ *
376
+ * A true `#private` member, not TS `private`: the latter still compiles to a
377
+ * prototype method, so a plugin holding `ctx.tuiPluginStorage` could call it
378
+ * through `as any` with `enforceGrants: false` and a forged namespace and
379
+ * read another component's storage with no grant, ledger entry or unload
380
+ * cleanup. Only the two in-class call sites above may reach it.
381
+ */
382
+ #openInternal(caller, identity, plugin, options) {
383
+ const state = storageStateFor(this);
384
+ const runtime = state.runtime;
255
385
  let namespace = state.namespaces.get(plugin);
256
386
  if (namespace === undefined) {
257
387
  namespace = { chain: Promise.resolve() };
258
388
  state.namespaces.set(plugin, namespace);
259
389
  }
260
- this.ledger()?.record({ operation: 'create', resource: { kind: 'storage-namespace', id: plugin }, result: 'applied' }, caller);
390
+ if (options.recordLedger) {
391
+ this.ledger()?.record({ operation: 'create', resource: { kind: 'storage-namespace', id: plugin }, result: 'applied' }, caller);
392
+ }
261
393
  // `closed` is PER HANDLE, not per namespace: unloading one fiber must not
262
394
  // kill another handle opened on the same namespace. Close on unload;
263
395
  // idempotent (a double-close stays harmless by design).
@@ -266,9 +398,12 @@ export class TuiPluginStorageRuntime extends Service {
266
398
  if (closed)
267
399
  return;
268
400
  closed = true;
269
- this.ledger()?.record({ operation: 'release', resource: { kind: 'storage-namespace', id: plugin }, result: 'applied' }, caller);
401
+ if (options.recordLedger) {
402
+ this.ledger()?.record({ operation: 'release', resource: { kind: 'storage-namespace', id: plugin }, result: 'applied' }, caller);
403
+ }
270
404
  };
271
- bindCallerEffect(caller, close);
405
+ if (options.bindLifecycle)
406
+ bindCallerEffect(caller, close);
272
407
  const file = join(state.dir, `${storageFileName(plugin)}.json`);
273
408
  const grants = () => this.grants();
274
409
  const ledger = () => this.ledger();
@@ -311,8 +446,9 @@ export class TuiPluginStorageRuntime extends Service {
311
446
  return table;
312
447
  };
313
448
  const requireGrant = (permission) => {
314
- if (!declaresPermission(identity, permission, plugin)
315
- || !grants().allows({ componentId: identity.componentId, activationId: identity.activationId }, permission, plugin)) {
449
+ if (options.enforceGrants
450
+ && (!declaresPermission(identity, permission, plugin)
451
+ || !grants().allows({ componentId: identity.componentId, activationId: identity.activationId }, permission, plugin))) {
316
452
  ledger()?.record({
317
453
  operation: 'bind',
318
454
  resource: { kind: 'permission', id: permission },
@@ -332,6 +468,7 @@ export class TuiPluginStorageRuntime extends Service {
332
468
  };
333
469
  return {
334
470
  get: (input) => enqueue(async () => {
471
+ assertCapabilityShadowPolicy('host.storage.read', runtime.mode, runtime.slices);
335
472
  validateStorageInput('get', input);
336
473
  const key = input.key;
337
474
  assertKey(key);
@@ -347,6 +484,7 @@ export class TuiPluginStorageRuntime extends Service {
347
484
  return output;
348
485
  }),
349
486
  set: (input) => enqueue(async () => {
487
+ assertCapabilityShadowPolicy('host.storage.write', runtime.mode, runtime.slices);
350
488
  validateStorageInput('set', input);
351
489
  const key = input.key;
352
490
  const value = input.value;
@@ -373,6 +511,7 @@ export class TuiPluginStorageRuntime extends Service {
373
511
  });
374
512
  }),
375
513
  delete: (input) => enqueue(async () => {
514
+ assertCapabilityShadowPolicy('host.storage.write', runtime.mode, runtime.slices);
376
515
  validateStorageInput('delete', input);
377
516
  const key = input.key;
378
517
  assertKey(key);
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/plugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,wBAAwB,CAAA;AAGhE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AA8CnC,OAAO,EAAE,MAAM,EAAkC,MAAM,UAAU,CAAA;AAgCjE;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,CAcxF;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,yBAAyB,GAAG,eAAe,CAAA;AAErF,wBAAgB,kBAAkB,CAChC,WAAW,UAAgC,EAC3C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,WAAW,CASb;AAED,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkgDvE;AAkID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;CAAE,GAAG;IACjF,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,YAAY,EAAE,MAAM,IAAI,CAAA;CACzB,CAcA;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,KAAK,GAAG,SAAS,CAAA;IAC5B,YAAY,EAAE,KAAK,CAAA;CACpB,GAAG,OAAO,CAQV;AAgBD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,GAAG,SAAS,EACxD,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,IAAI,EAAE,MAAM,IAAI,GACf,OAAO,CAAC,IAAI,CAAC,CAmFf"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/plugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,wBAAwB,CAAA;AAGhE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAmDnC,OAAO,EAAE,MAAM,EAAkC,MAAM,UAAU,CAAA;AAgCjE;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,CAcxF;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,yBAAyB,GAAG,eAAe,CAAA;AAErF,wBAAgB,kBAAkB,CAChC,WAAW,UAAgC,EAC3C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,WAAW,CASb;AAED,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgiDvE;AAoID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;CAAE,GAAG;IACjF,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,YAAY,EAAE,MAAM,IAAI,CAAA;CACzB,CAcA;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,KAAK,GAAG,SAAS,CAAA;IAC5B,YAAY,EAAE,KAAK,CAAA;CACpB,GAAG,OAAO,CAQV;AAgBD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,GAAG,SAAS,EACxD,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,IAAI,EAAE,MAAM,IAAI,GACf,OAAO,CAAC,IAAI,CAAC,CAmFf"}
@@ -5,13 +5,18 @@ import UserQuestionService from '@deepseek-ai/dsh-user-questions';
5
5
  import * as toolAskUser from '@deepseek-ai/dsh-tool-ask-user';
6
6
  import Schema from '@deepseek-ai/schemastery';
7
7
  import { createChannel } from './channel.js';
8
+ import { createChannelSceneOutlet } from './channel-scene-outlet.js';
9
+ import { mountChannelUi } from './channel-ui.js';
10
+ import { bindChannelCommands } from './channel/commands.js';
11
+ import { registerTuiChannel } from '../adapter/channel/host-registry.js';
8
12
  import { createChildStderrReporter, installChildStderrGuard } from './childStderr.js';
9
13
  import { removeClipboardImageDir } from '../utils/clipboard.js';
10
14
  import { logForDebugging } from '../utils/debug.js';
11
15
  import { isEnvTruthy } from '../utils/envUtils.js';
12
- import { QuestionStore } from './questions.js';
16
+ import { QuestionStore, bindQuestionStore } from './questions.js';
13
17
  import { prepareQuestionAnswerer } from './questions-answerer.js';
14
- import { ApprovalStore } from './approvals.js';
18
+ import { adapterRuntimeFor } from '../adapter/kernel/runtime-context.js';
19
+ import { ApprovalStore, bindApprovalStore } from './approvals.js';
15
20
  import { registerPromptDebug } from './promptDebug.js';
16
21
  import { readActivityFrames } from '../activityPrefs.js';
17
22
  import { commitFullscreenFactoryMigration, planFullscreenFactoryMigration, readAppliedMigrations } from '../migrationPrefs.js';
@@ -40,7 +45,7 @@ import { getHostThemes } from './themes.js';
40
45
  import { attachSessionToWorkspace } from './workspace.js';
41
46
  import { createLocalWorkspaceRuntime, getHostWorkspaceRuntime } from './workspaces.js';
42
47
  import { getHostSettingsSections, getLocalSettingsSectionsHost } from './settings-sections.js';
43
- import { withHostRootCapability } from './host-access.js';
48
+ import { compositionRoot, withHostRootCapability } from './host-access.js';
44
49
  import { render, ThemeProvider, AlternateScreen } from '../ui.js';
45
50
  import { PageMargin } from '../components/PageMargin.js';
46
51
  import instances from '../ink/instances.js';
@@ -256,7 +261,8 @@ export async function apply(ctx, config) {
256
261
  const presetId = context.agent === undefined ? undefined : runningPresetOf(context.agent.session);
257
262
  return filterMinimalPresetTools(assembled, presetId);
258
263
  });
259
- const questionStore = new QuestionStore();
264
+ const questionStore = new QuestionStore(adapterRuntimeFor(ctx));
265
+ bindQuestionStore(ctx, questionStore);
260
266
  // One store, one teardown effect on both API lines. The compatibility
261
267
  // adapter binds either registration to this Cordis fiber; this separate
262
268
  // effect rejects asks still parked in the UI during teardown.
@@ -407,7 +413,7 @@ export async function apply(ctx, config) {
407
413
  // validated startup resolution, on resume the route the target session's
408
414
  // own records carry (a complete cordis.yml pin wins over them).
409
415
  const displayRoute = createdRoute ?? startupRoute;
410
- const channel = createChannel(ctx, agent, {
416
+ const rawChannel = createChannel(ctx, agent, {
411
417
  model: displayRoute.model,
412
418
  // A RESUMED session keeps its persisted header cwd (issue #96 review):
413
419
  // pre-upgrade sessions recorded the launch directory, and re-resolving
@@ -453,6 +459,32 @@ export async function apply(ctx, config) {
453
459
  statusBar: config.statusBar,
454
460
  handle,
455
461
  });
462
+ // Register the live Channel for the adapter Kernel. The Channel driver
463
+ // resolves it lazily from the composition root, so this can be called after
464
+ // the plugin-host Kernel started without requiring a re-mount.
465
+ // Normalize to the composition root: the Kernel and its Channel driver
466
+ // query the registry through the root context, never through this plugin's
467
+ // child activation context.
468
+ const unregisterTuiChannel = registerTuiChannel(compositionRoot(ctx), rawChannel);
469
+ ctx.effect(() => () => { unregisterTuiChannel(); });
470
+ const pluginHost = ctx.get('tuiPluginHost');
471
+ const adapterRuntime = adapterRuntimeFor(ctx);
472
+ const uiMount = mountChannelUi(ctx, rawChannel, pluginHost, adapterRuntime.mode);
473
+ const channel = uiMount.channel;
474
+ bindChannelCommands(rawChannel, channel);
475
+ const shadow = adapterRuntime.mode === 'passive-shadow' || adapterRuntime.mode === 'replay-shadow';
476
+ // Bootstrap notices/prompts are deliberately dropped in observational mode;
477
+ // interactive commands retain rejection semantics through the UI capability.
478
+ const notifyChannel = (text, options) => {
479
+ if (shadow)
480
+ return () => undefined;
481
+ return channel.notify(text, options);
482
+ };
483
+ const submitChannel = text => {
484
+ if (!shadow)
485
+ channel.submit(text);
486
+ };
487
+ ctx.effect(() => () => { uiMount.dispose(); });
456
488
  // Root page-margin store: the PageMargin inset box sits ABOVE Chat, so
457
489
  // the channel version bump (which re-renders everything below Chat)
458
490
  // cannot drive it. Seed the store from config before the tree mounts;
@@ -462,9 +494,10 @@ export async function apply(ctx, config) {
462
494
  // already sanitized/rate-limited the delivery, the sink only forwards.
463
495
  // Without the extensions row (tuiToast absent) plugin toasts are dropped
464
496
  // by the runtime itself — same soft-degrade contract as the other seams.
497
+ // Delivery uses the same owner-bound UI capability as all renderer actions.
465
498
  const toastStore = getHostToastStore(ctx.get('tuiToast'));
466
499
  toastStore?.setSink(delivery => {
467
- channel.notify(delivery.text, { color: delivery.color, timeoutMs: delivery.timeoutMs });
500
+ notifyChannel(delivery.text, { color: delivery.color, timeoutMs: delivery.timeoutMs });
468
501
  });
469
502
  if (questionAnswererRegistration.kind === 'waterfall') {
470
503
  // Ownership follows the mutable channel; registration cleanup belongs to
@@ -575,9 +608,12 @@ export async function apply(ctx, config) {
575
608
  shortcuts: Schema.object(Object.fromEntries(SHORTCUT_ACTIONS.map(action => [action.id, Schema.string().required(false)]))).required(false),
576
609
  }));
577
610
  const applyLayout = (value) => {
578
- channel.setDiffLayout(value.diffLayout ?? config.diffLayout ?? 'auto');
611
+ if (!shadow)
612
+ channel.setDiffLayout(value.diffLayout ?? config.diffLayout ?? 'auto');
579
613
  };
580
614
  const applyWhale = (value) => {
615
+ if (shadow)
616
+ return;
581
617
  channel.setWhale(value.whale ?? true);
582
618
  };
583
619
  /** Apply the idle-whale-behavior setting: live-toggle the channel flag. */
@@ -585,6 +621,8 @@ export async function apply(ctx, config) {
585
621
  channel.setWhaleIdle(value.whaleIdle ?? true);
586
622
  };
587
623
  const applyMinimal = (value) => {
624
+ if (shadow)
625
+ return;
588
626
  channel.setMinimal(value.minimal ?? false);
589
627
  };
590
628
  // Renderer settings are resolved before mount; later edits wait for restart.
@@ -610,6 +648,8 @@ export async function apply(ctx, config) {
610
648
  // Display preferences ride the same namespace: /settings writes them
611
649
  // live and future render consumers observe the channel version bump.
612
650
  const applyDisplay = (value) => {
651
+ if (shadow)
652
+ return;
613
653
  channel.setThinkingFold(value.thinkingFold ?? config.thinkingFold ?? 'preview');
614
654
  channel.setToolBackground(normalizeToolBackground(value.toolBackground ?? config.toolBackground));
615
655
  channel.setScrollGutter(normalizeScrollGutter(value.scrollGutter ?? config.scrollGutter));
@@ -685,7 +725,7 @@ export async function apply(ctx, config) {
685
725
  unset: () => settingsCtx.settings.mutate(tuiSettingsNs, [{ op: 'unset', path: ['fullscreen'] }]),
686
726
  });
687
727
  if (fullscreenMigration === 'unset') {
688
- channel.notify(t('settings-fullscreen-migrated'), { color: 'warning' });
728
+ notifyChannel(t('settings-fullscreen-migrated'), { color: 'warning' });
689
729
  }
690
730
  const { fullscreen: staleFullscreen, ...migratedSettings } = bootSettings;
691
731
  apply(fullscreenMigration === 'unset' ? migratedSettings : bootSettings);
@@ -693,7 +733,7 @@ export async function apply(ctx, config) {
693
733
  scope.watch(next => {
694
734
  apply(next);
695
735
  if (typeof next.fullscreen === 'boolean' && next.fullscreen !== bootedFullscreen) {
696
- channel.notify(t('settings-fullscreen-restart'), { color: 'warning' });
736
+ notifyChannel(t('settings-fullscreen-restart'), { color: 'warning' });
697
737
  }
698
738
  const terminalImages = next.terminalImages ?? config.terminalImages ?? true;
699
739
  if (terminalImages !== lastTerminalImages && terminalImages !== bootedTerminalImages) {
@@ -813,7 +853,7 @@ export async function apply(ctx, config) {
813
853
  // channel.ts reads through the same fallback, so both sides meet in the
814
854
  // same registry either way.
815
855
  {
816
- const settingsSections = getHostSettingsSections(ctx.get('tuiSettingsSections')) ?? getLocalSettingsSectionsHost();
856
+ const settingsSections = getHostSettingsSections(ctx.get('tuiSettingsSections')) ?? getLocalSettingsSectionsHost(ctx);
817
857
  const unregister = settingsSections.register({
818
858
  ns: 'dsh-tui',
819
859
  title: 'dsh-tui',
@@ -1228,13 +1268,13 @@ export async function apply(ctx, config) {
1228
1268
  // DSH approval seam: the permission layer asks ApprovalService.request(),
1229
1269
  // which dispatches an `approval/request` waterfall. With no answerer the
1230
1270
  // chain falls through to the fail-closed 'unavailable', so register this
1231
- // TUI as the interactive answerer for EVERY agent in this process — the
1232
- // attached session's asks and any background (agent view) session's asks
1233
- // alike, so an unattended session surfaces as "needs input" instead of
1234
- // failing closed. One ask is shown at a time, whichever agent asked.
1235
- // Guarded on the service being mounted — a bare composition without the
1236
- // dsh-base approval row has nothing to answer into.
1237
- const approvalStore = new ApprovalStore();
1271
+ // TUI as the interactive answerer for the agent it owns; requests for
1272
+ // other agents delegate down the chain (next()). Guarded on the service
1273
+ // being mounted — a bare composition without the dsh-base approval row
1274
+ // has nothing to answer into. channel.agentId tracks agent swaps
1275
+ // (/new, /resume, rewind), so ownership is re-evaluated per request.
1276
+ const approvalStore = new ApprovalStore(adapterRuntimeFor(ctx));
1277
+ bindApprovalStore(ctx, approvalStore);
1238
1278
  if (ctx.get('approval') !== undefined) {
1239
1279
  ctx.on('approval/request', (req, next) => approvalStore.park(req).catch(() => next()));
1240
1280
  // Badge-flip push (P-4): React does not know the session log appended —
@@ -1244,12 +1284,12 @@ export async function apply(ctx, config) {
1244
1284
  // event type), and its internal log-length memo skips appends from any
1245
1285
  // session other than the active ask's, so no agent filtering is needed
1246
1286
  // here. The firehose fires post-commit, after the event entered
1247
- // the live session log, so the recheck sees the settled result.
1248
- ctx.on('session/event', (_session, event) => approvalStore.noteSessionEvent(event));
1287
+ // session.events, so the recheck sees the settled result.
1288
+ ctx.on('session/event', (session, event) => approvalStore.noteSessionEvent(session.id, event));
1249
1289
  ctx.effect(() => () => approvalStore.settleAll('cancelled'));
1250
1290
  }
1251
1291
  // The agent view reads parked ask ids for its "needs input" state.
1252
- channel.bindApprovalStore(approvalStore);
1292
+ rawChannel.bindApprovalStore(approvalStore);
1253
1293
  const herdr = attachHerdrIntegration({
1254
1294
  channel,
1255
1295
  questions: questionStore,
@@ -1269,14 +1309,14 @@ export async function apply(ctx, config) {
1269
1309
  const cmdlineArgs = cmdline?.get?.() ?? cmdline?.args;
1270
1310
  const initialPrompt = initialPromptFromCmdlineArgs(cmdlineArgs);
1271
1311
  if (initialPrompt)
1272
- channel.submit(initialPrompt);
1312
+ submitChannel(initialPrompt);
1273
1313
  // Attach the stderr reporter to the live channel and flush anything a
1274
1314
  // startup-spawned server produced while the channel didn't exist yet.
1275
- notifyStderr = (text, options) => channel.notify(text, options);
1315
+ notifyStderr = (text, options) => notifyChannel(text, options);
1276
1316
  // The question-seat alert was raised before the channel existed; flush it
1277
1317
  // now so it lands as an in-UI notice, not only in the log file.
1278
1318
  if (questionSeatNotice !== undefined) {
1279
- channel.notify(questionSeatNotice, { color: 'error' });
1319
+ notifyChannel(questionSeatNotice, { color: 'error' });
1280
1320
  questionSeatNotice = undefined;
1281
1321
  }
1282
1322
  for (const [text, options] of stderrBacklog.splice(0)) {
@@ -1391,6 +1431,7 @@ export async function apply(ctx, config) {
1391
1431
  await settingsReady;
1392
1432
  const chat = React.createElement(Chat, {
1393
1433
  channel,
1434
+ renderScene: createChannelSceneOutlet(() => rawChannel.pluginScene),
1394
1435
  questionStore,
1395
1436
  approvalStore,
1396
1437
  injectControllerRef,
@@ -1412,7 +1453,7 @@ export async function apply(ctx, config) {
1412
1453
  return;
1413
1454
  restartRequested = true;
1414
1455
  logRestartEvent('command: /restart accepted');
1415
- channel.notify(t('restart-starting'));
1456
+ notifyChannel(t('restart-starting'));
1416
1457
  handleExit();
1417
1458
  },
1418
1459
  // Only a `dsh --profile <name>` launch has a profile installation for
@@ -1428,11 +1469,11 @@ export async function apply(ctx, config) {
1428
1469
  if (exited || updateRequested)
1429
1470
  return;
1430
1471
  if (target.kind === 'latest') {
1431
- channel.notify(t('update-already-latest', { current: target.current }), { color: 'warning' });
1472
+ notifyChannel(t('update-already-latest', { current: target.current }), { color: 'warning' });
1432
1473
  return;
1433
1474
  }
1434
1475
  if (target.kind === 'unknown') {
1435
- channel.notify(t('update-check-failed'));
1476
+ notifyChannel(t('update-check-failed'));
1436
1477
  }
1437
1478
  else {
1438
1479
  // 0.7.0/0.7.1 hard-inject tuiWorkspaces at the code level; under
@@ -1441,22 +1482,22 @@ export async function apply(ctx, config) {
1441
1482
  // "pending (waiting for service: tuiWorkspaces)"). A stale mirror
1442
1483
  // pinning /update onto that range must be refused, not installed.
1443
1484
  if (isBootDeadlockTarget(target.latest)) {
1444
- channel.notify(t('update-refused-deadlock', {
1485
+ notifyChannel(t('update-refused-deadlock', {
1445
1486
  latest: target.latest,
1446
1487
  authoritative: target.authoritative ?? target.latest,
1447
1488
  }), { color: 'warning' });
1448
1489
  return;
1449
1490
  }
1450
1491
  if (target.authoritative !== undefined) {
1451
- channel.notify(t('update-mirror-lag', { latest: target.latest, authoritative: target.authoritative }));
1492
+ notifyChannel(t('update-mirror-lag', { latest: target.latest, authoritative: target.authoritative }));
1452
1493
  }
1453
1494
  updateTargetVersion = target.latest;
1454
1495
  }
1455
1496
  if (isStandaloneRuntime()) {
1456
- channel.notify(t('update-standalone-starting'));
1497
+ notifyChannel(t('update-standalone-starting'));
1457
1498
  }
1458
1499
  else {
1459
- channel.notify(t('update-starting'));
1500
+ notifyChannel(t('update-starting'));
1460
1501
  }
1461
1502
  updateRequested = true;
1462
1503
  handleExit();
@@ -1528,7 +1569,7 @@ export async function apply(ctx, config) {
1528
1569
  const suffix = update.isStandalone && update.checksumUrl === undefined
1529
1570
  ? ` ${t('update-standalone-no-checksum')}`
1530
1571
  : '';
1531
- channel.notify(`${t(key, { current: update.current, latest: update.latest })}${suffix}`, { color: 'warning', timeoutMs: 12000 });
1572
+ notifyChannel(`${t(key, { current: update.current, latest: update.latest })}${suffix}`, { color: 'warning', timeoutMs: 12000 });
1532
1573
  });
1533
1574
  // If the surrounding tree goes down (reload, teardown), unmount the UI —
1534
1575
  // but flag it as teardown first so the settling waitUntilExit does not
@@ -1541,7 +1582,7 @@ export async function apply(ctx, config) {
1541
1582
  ctx.effect(() => () => {
1542
1583
  logMouseDebug('apply teardown');
1543
1584
  funnel.markTeardown();
1544
- channel.releaseContributions();
1585
+ rawChannel.releaseContributions();
1545
1586
  instance?.unmount();
1546
1587
  });
1547
1588
  // The TUI is the front door: when the user unmounts it (Ctrl+C), dispose
@@ -1626,7 +1667,7 @@ async function resolveAgent(ctx, requestedSessionId, configuredRoute, startupRou
1626
1667
  const reason = error instanceof Error ? error.message : String(error);
1627
1668
  throw new Error(`dsh-tui: cannot resume session "${requestedSessionId}": ${reason} — ` +
1628
1669
  'the stored log is unreadable or corrupt; no fresh session was started instead. ' +
1629
- 'Drop --resume to start fresh, or repair the session log first.');
1670
+ 'Drop --resume to start fresh, or repair the session log first.', { cause: error });
1630
1671
  }
1631
1672
  }
1632
1673
  const sessionId = SessionId(randomUUID());
@@ -1658,7 +1699,7 @@ async function resolveAgent(ctx, requestedSessionId, configuredRoute, startupRou
1658
1699
  // Fail loud with the reason on stderr — a dead TUI with no message is
1659
1700
  // the worst outcome for a misconfigured leaf (unknown provider/model).
1660
1701
  const message = error instanceof Error ? error.message : String(error);
1661
- throw new Error(`dsh-tui: failed to create agent (provider=${route.provider}, model=${route.model}): ${message}`);
1702
+ throw new Error(`dsh-tui: failed to create agent (provider=${route.provider}, model=${route.model}): ${message}`, { cause: error });
1662
1703
  });
1663
1704
  return { agent: created.agent, handle: created, agentPreset: composed.agentPreset, route };
1664
1705
  }
@@ -22,8 +22,8 @@
22
22
  * every derived line passes cleanScalarText before it reaches the
23
23
  * transcript.
24
24
  */
25
- import type { GrantStore } from './grants.js';
26
- import type { HostDescriptorBuild } from './host-descriptor.js';
25
+ import type { GrantStore } from '../adapter/standard/grants.js';
26
+ import type { HostDescriptorBuild } from '../adapter/standard/descriptor.js';
27
27
  /** How many plugins the matrix shows before an overflow note. */
28
28
  export declare const PLUGINS_MATRIX_MAX_ROWS = 20;
29
29
  /** How many ledger records the tail section shows. */
@@ -1 +1 @@
1
- {"version":3,"file":"plugins-info.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/plugins-info.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAYH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAK/D,iEAAiE;AACjE,eAAO,MAAM,uBAAuB,KAAK,CAAA;AACzC,sDAAsD;AACtD,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAIpC,MAAM,WAAW,eAAe;IAC9B,0EAA0E;IAC1E,MAAM,EAAE,UAAU,CAAA;IAClB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,mBAAmB,CAAA;IAC1B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAoKD,2DAA2D;AAC3D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,MAAM,EAAE,CAsF9E"}
1
+ {"version":3,"file":"plugins-info.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/plugins-info.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAWH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAI5E,iEAAiE;AACjE,eAAO,MAAM,uBAAuB,KAAK,CAAA;AACzC,sDAAsD;AACtD,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAIpC,MAAM,WAAW,eAAe;IAC9B,0EAA0E;IAC1E,MAAM,EAAE,UAAU,CAAA;IAClB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,mBAAmB,CAAA;IAC1B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AA2KD,2DAA2D;AAC3D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,MAAM,EAAE,CAsF9E"}
@@ -24,14 +24,12 @@
24
24
  */
25
25
  import { existsSync, readdirSync, readFileSync } from 'node:fs';
26
26
  import { join, resolve } from 'node:path';
27
- import { parseManifest, projectManifest } from '@dsh-std/manifest';
27
+ import { parseManifest, projectManifest } from '../adapter/standard/protocols.js';
28
28
  import { DATA_DIR } from '../utils/paths.js';
29
29
  import { t } from '../i18n.js';
30
- import { loadSpecData } from '../plugin-spec/registry.js';
31
- import { createContractIndex, validatePlugin } from '../plugin-spec/validate.js';
32
- import { negotiate } from '../plugin-spec/negotiate.js';
30
+ import { loadSpecData } from '../adapter/standard/registry.js';
31
+ import { createContractIndex, validatePlugin, negotiate } from '../adapter/standard/admission.js';
33
32
  import { cleanScalarText } from './sanitize.js';
34
- import { buildHostDescriptor } from './host-descriptor.js';
35
33
  import { PLUGIN_STORAGE_DIR } from './plugin-storage.js';
36
34
  import { EFFECT_LEDGER_FILE } from './effect-ledger.js';
37
35
  /** How many plugins the matrix shows before an overflow note. */
@@ -150,7 +148,14 @@ function checkManifestLines(pathArg, deps) {
150
148
  lines.push(t('plugins-check-invalid', { err: cell(error instanceof Error ? error.message : String(error)) }));
151
149
  return lines;
152
150
  }
153
- const host = deps.host ?? buildHostDescriptor({ generationId: 'plugins-check' });
151
+ // No live host: do NOT fall back to a full advertised surface. The check
152
+ // stays static (validation only) and explicitly reports host-unavailable /
153
+ // non-live instead of participating in protocol support negotiation.
154
+ const host = deps.host;
155
+ if (host === undefined) {
156
+ lines.push(t('plugins-check-host-unavailable'));
157
+ return lines;
158
+ }
154
159
  const granted = manifest.permissions
155
160
  .map(request => ({
156
161
  name: request.name,
@@ -1 +1 @@
1
- {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAUtE,kEAAkE;AAClE,MAAM,WAAW,iBAAiB;IAChC,kFAAkF;IAClF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAA;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmBhG;AAED;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAkB5G;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAGpE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAkB/G;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CAM/G;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAKpG"}
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAWtE,kEAAkE;AAClE,MAAM,WAAW,iBAAiB;IAChC,kFAAkF;IAClF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAA;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmBhG;AAED;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAW5G;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAGpE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAW/G;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CAM/G;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAKpG"}
@@ -17,6 +17,7 @@
17
17
  */
18
18
  import { recordedModelRoute } from '../modelRoute.js';
19
19
  import { snapshotLiveSessionEvents } from './compat/liveSession.js';
20
+ import { readPersistedSession } from './compat/persistence.js';
20
21
  import { resolveCompatiblePreset, resolveRecordedPreset, rosterOf, } from './preset-resolution.js';
21
22
  const ASK_USER_TOOL = 'ask_user_question';
22
23
  /**
@@ -67,7 +68,7 @@ export async function resolvePersistedPreset(ctx, sessionId) {
67
68
  if (persistence === undefined)
68
69
  return undefined;
69
70
  try {
70
- const { meta, events } = await persistence.load(sessionId);
71
+ const { meta, events } = await readPersistedSession(persistence, sessionId);
71
72
  return resolveRecordedPreset({ header: meta, events });
72
73
  }
73
74
  catch {
@@ -109,7 +110,7 @@ export async function resolvePersistedRoute(ctx, sessionId) {
109
110
  if (persistence === undefined)
110
111
  return undefined;
111
112
  try {
112
- const { events } = await persistence.load(sessionId);
113
+ const { events } = await readPersistedSession(persistence, sessionId);
113
114
  return recordedModelRoute(events);
114
115
  }
115
116
  catch {