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

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 (664) hide show
  1. package/README.md +146 -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 +227 -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/GoalTodoPanel.d.ts +2 -1
  254. package/lib/types/components/GoalTodoPanel.d.ts.map +1 -1
  255. package/lib/types/components/HistorySearchDialog.d.ts.map +1 -1
  256. package/lib/types/components/HistorySearchDialog.js +7 -5
  257. package/lib/types/components/MessageList.d.ts.map +1 -1
  258. package/lib/types/components/MessageList.js +36 -8
  259. package/lib/types/components/ModelPicker.d.ts +1 -1
  260. package/lib/types/components/ModelPicker.d.ts.map +1 -1
  261. package/lib/types/components/ModelPicker.js +8 -4
  262. package/lib/types/components/OverlayAbove.d.ts +22 -1
  263. package/lib/types/components/OverlayAbove.d.ts.map +1 -1
  264. package/lib/types/components/OverlayAbove.js +74 -5
  265. package/lib/types/components/PromptInput.d.ts +2 -1
  266. package/lib/types/components/PromptInput.d.ts.map +1 -1
  267. package/lib/types/components/RewindPicker.d.ts.map +1 -1
  268. package/lib/types/components/RewindPicker.js +14 -6
  269. package/lib/types/components/SkillsPicker.d.ts.map +1 -1
  270. package/lib/types/components/SkillsPicker.js +6 -4
  271. package/lib/types/components/Spinner/spinnerMode.d.ts +1 -5
  272. package/lib/types/components/Spinner/spinnerMode.d.ts.map +1 -1
  273. package/lib/types/components/design-system/ThemedBox.d.ts +4 -2
  274. package/lib/types/components/design-system/ThemedBox.d.ts.map +1 -1
  275. package/lib/types/components/design-system/ThemedBox.js +2 -2
  276. package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -1
  277. package/lib/types/components/messages/AssistantToolUseMessage.js +69 -25
  278. package/lib/types/components/overlayBudget.d.ts +39 -0
  279. package/lib/types/components/overlayBudget.d.ts.map +1 -0
  280. package/lib/types/components/overlayBudget.js +43 -0
  281. package/lib/types/deepseekBalance.d.ts +2 -36
  282. package/lib/types/deepseekBalance.d.ts.map +1 -1
  283. package/lib/types/deepseekBalance.js +0 -14
  284. package/lib/types/deepseekPricing.d.ts +2 -1
  285. package/lib/types/deepseekPricing.d.ts.map +1 -1
  286. package/lib/types/deepseekPricing.js +8 -1
  287. package/lib/types/dsh-adapter/approvals.d.ts +11 -1
  288. package/lib/types/dsh-adapter/approvals.d.ts.map +1 -1
  289. package/lib/types/dsh-adapter/approvals.js +32 -12
  290. package/lib/types/dsh-adapter/channel/action-readiness.d.ts +20 -0
  291. package/lib/types/dsh-adapter/channel/action-readiness.d.ts.map +1 -0
  292. package/lib/types/dsh-adapter/channel/action-readiness.js +83 -0
  293. package/lib/types/dsh-adapter/channel/activity.d.ts +20 -0
  294. package/lib/types/dsh-adapter/channel/activity.d.ts.map +1 -0
  295. package/lib/types/dsh-adapter/channel/activity.js +113 -0
  296. package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts +64 -0
  297. package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts.map +1 -0
  298. package/lib/types/dsh-adapter/channel/agent-view-projection.js +295 -0
  299. package/lib/types/dsh-adapter/channel/background-action.d.ts +41 -0
  300. package/lib/types/dsh-adapter/channel/background-action.d.ts.map +1 -0
  301. package/lib/types/dsh-adapter/channel/background-action.js +86 -0
  302. package/lib/types/dsh-adapter/channel/binding-events.d.ts +60 -0
  303. package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -0
  304. package/lib/types/dsh-adapter/channel/binding-events.js +159 -0
  305. package/lib/types/dsh-adapter/channel/binding.d.ts +41 -0
  306. package/lib/types/dsh-adapter/channel/binding.d.ts.map +1 -0
  307. package/lib/types/dsh-adapter/channel/binding.js +227 -0
  308. package/lib/types/dsh-adapter/channel/command-completions.d.ts +29 -0
  309. package/lib/types/dsh-adapter/channel/command-completions.d.ts.map +1 -0
  310. package/lib/types/dsh-adapter/channel/command-completions.js +94 -0
  311. package/lib/types/dsh-adapter/channel/commands.d.ts +8 -0
  312. package/lib/types/dsh-adapter/channel/commands.d.ts.map +1 -0
  313. package/lib/types/dsh-adapter/channel/commands.js +9 -0
  314. package/lib/types/dsh-adapter/channel/compaction.d.ts +19 -0
  315. package/lib/types/dsh-adapter/channel/compaction.d.ts.map +1 -0
  316. package/lib/types/dsh-adapter/channel/compaction.js +116 -0
  317. package/lib/types/dsh-adapter/channel/composer-images.d.ts +57 -0
  318. package/lib/types/dsh-adapter/channel/composer-images.d.ts.map +1 -0
  319. package/lib/types/dsh-adapter/channel/composer-images.js +217 -0
  320. package/lib/types/dsh-adapter/channel/composer-mentions.d.ts +15 -0
  321. package/lib/types/dsh-adapter/channel/composer-mentions.d.ts.map +1 -0
  322. package/lib/types/dsh-adapter/channel/composer-mentions.js +200 -0
  323. package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts +26 -0
  324. package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts.map +1 -0
  325. package/lib/types/dsh-adapter/channel/context-bookkeeping.js +30 -0
  326. package/lib/types/dsh-adapter/channel/decisions.d.ts +19 -0
  327. package/lib/types/dsh-adapter/channel/decisions.d.ts.map +1 -0
  328. package/lib/types/dsh-adapter/channel/decisions.js +90 -0
  329. package/lib/types/dsh-adapter/channel/emitter.d.ts +10 -0
  330. package/lib/types/dsh-adapter/channel/emitter.d.ts.map +1 -0
  331. package/lib/types/dsh-adapter/channel/emitter.js +71 -0
  332. package/lib/types/dsh-adapter/channel/external-commands.d.ts +31 -0
  333. package/lib/types/dsh-adapter/channel/external-commands.d.ts.map +1 -0
  334. package/lib/types/dsh-adapter/channel/external-commands.js +187 -0
  335. package/lib/types/dsh-adapter/channel/file-actions.d.ts +20 -0
  336. package/lib/types/dsh-adapter/channel/file-actions.d.ts.map +1 -0
  337. package/lib/types/dsh-adapter/channel/file-actions.js +45 -0
  338. package/lib/types/dsh-adapter/channel/input-actions.d.ts +13 -0
  339. package/lib/types/dsh-adapter/channel/input-actions.d.ts.map +1 -0
  340. package/lib/types/dsh-adapter/channel/input-actions.js +135 -0
  341. package/lib/types/dsh-adapter/channel/input-delivery.d.ts +34 -0
  342. package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -0
  343. package/lib/types/dsh-adapter/channel/input-delivery.js +241 -0
  344. package/lib/types/dsh-adapter/channel/job-projection.d.ts +28 -0
  345. package/lib/types/dsh-adapter/channel/job-projection.d.ts.map +1 -0
  346. package/lib/types/dsh-adapter/channel/job-projection.js +150 -0
  347. package/lib/types/dsh-adapter/channel/lifetime-resources.d.ts +9 -0
  348. package/lib/types/dsh-adapter/channel/lifetime-resources.d.ts.map +1 -0
  349. package/lib/types/dsh-adapter/channel/lifetime-resources.js +33 -0
  350. package/lib/types/dsh-adapter/channel/loaded-context.d.ts +40 -0
  351. package/lib/types/dsh-adapter/channel/loaded-context.d.ts.map +1 -0
  352. package/lib/types/dsh-adapter/channel/loaded-context.js +62 -0
  353. package/lib/types/dsh-adapter/channel/local-actions.d.ts +70 -0
  354. package/lib/types/dsh-adapter/channel/local-actions.d.ts.map +1 -0
  355. package/lib/types/dsh-adapter/channel/local-actions.js +108 -0
  356. package/lib/types/dsh-adapter/channel/mentions.d.ts +29 -0
  357. package/lib/types/dsh-adapter/channel/mentions.d.ts.map +1 -0
  358. package/lib/types/dsh-adapter/channel/mentions.js +235 -0
  359. package/lib/types/dsh-adapter/channel/mode-actions.d.ts +30 -0
  360. package/lib/types/dsh-adapter/channel/mode-actions.d.ts.map +1 -0
  361. package/lib/types/dsh-adapter/channel/mode-actions.js +247 -0
  362. package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts +35 -0
  363. package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -0
  364. package/lib/types/dsh-adapter/channel/mode-permission-actions.js +199 -0
  365. package/lib/types/dsh-adapter/channel/mode-permission.d.ts +58 -0
  366. package/lib/types/dsh-adapter/channel/mode-permission.d.ts.map +1 -0
  367. package/lib/types/dsh-adapter/channel/mode-permission.js +240 -0
  368. package/lib/types/dsh-adapter/channel/mode-roster.d.ts +51 -0
  369. package/lib/types/dsh-adapter/channel/mode-roster.d.ts.map +1 -0
  370. package/lib/types/dsh-adapter/channel/mode-roster.js +119 -0
  371. package/lib/types/dsh-adapter/channel/model-actions.d.ts +46 -0
  372. package/lib/types/dsh-adapter/channel/model-actions.d.ts.map +1 -0
  373. package/lib/types/dsh-adapter/channel/model-actions.js +275 -0
  374. package/lib/types/dsh-adapter/channel/model-switch.d.ts +32 -0
  375. package/lib/types/dsh-adapter/channel/model-switch.d.ts.map +1 -0
  376. package/lib/types/dsh-adapter/channel/model-switch.js +98 -0
  377. package/lib/types/dsh-adapter/channel/notifications.d.ts +9 -0
  378. package/lib/types/dsh-adapter/channel/notifications.d.ts.map +1 -0
  379. package/lib/types/dsh-adapter/channel/notifications.js +24 -0
  380. package/lib/types/dsh-adapter/channel/owner.d.ts +18 -0
  381. package/lib/types/dsh-adapter/channel/owner.d.ts.map +1 -0
  382. package/lib/types/dsh-adapter/channel/owner.js +73 -0
  383. package/lib/types/dsh-adapter/channel/paths.d.ts +31 -0
  384. package/lib/types/dsh-adapter/channel/paths.d.ts.map +1 -0
  385. package/lib/types/dsh-adapter/channel/paths.js +147 -0
  386. package/lib/types/dsh-adapter/channel/permissions.d.ts +40 -0
  387. package/lib/types/dsh-adapter/channel/permissions.d.ts.map +1 -0
  388. package/lib/types/dsh-adapter/channel/permissions.js +184 -0
  389. package/lib/types/dsh-adapter/channel/preferences.d.ts +3 -0
  390. package/lib/types/dsh-adapter/channel/preferences.d.ts.map +1 -0
  391. package/lib/types/dsh-adapter/channel/preferences.js +103 -0
  392. package/lib/types/dsh-adapter/channel/projection-helpers.d.ts +13 -0
  393. package/lib/types/dsh-adapter/channel/projection-helpers.d.ts.map +1 -0
  394. package/lib/types/dsh-adapter/channel/projection-helpers.js +63 -0
  395. package/lib/types/dsh-adapter/channel/projection.d.ts +40 -0
  396. package/lib/types/dsh-adapter/channel/projection.d.ts.map +1 -0
  397. package/lib/types/dsh-adapter/channel/projection.js +1021 -0
  398. package/lib/types/dsh-adapter/channel/reports.d.ts +32 -0
  399. package/lib/types/dsh-adapter/channel/reports.d.ts.map +1 -0
  400. package/lib/types/dsh-adapter/channel/reports.js +171 -0
  401. package/lib/types/dsh-adapter/channel/session-actions.d.ts +13 -0
  402. package/lib/types/dsh-adapter/channel/session-actions.d.ts.map +1 -0
  403. package/lib/types/dsh-adapter/channel/session-actions.js +29 -0
  404. package/lib/types/dsh-adapter/channel/session-adoption.d.ts +32 -0
  405. package/lib/types/dsh-adapter/channel/session-adoption.d.ts.map +1 -0
  406. package/lib/types/dsh-adapter/channel/session-adoption.js +35 -0
  407. package/lib/types/dsh-adapter/channel/session-fork.d.ts +19 -0
  408. package/lib/types/dsh-adapter/channel/session-fork.d.ts.map +1 -0
  409. package/lib/types/dsh-adapter/channel/session-fork.js +85 -0
  410. package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts +32 -0
  411. package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts.map +1 -0
  412. package/lib/types/dsh-adapter/channel/session-live-adoption.js +62 -0
  413. package/lib/types/dsh-adapter/channel/session-metadata.d.ts +81 -0
  414. package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -0
  415. package/lib/types/dsh-adapter/channel/session-metadata.js +209 -0
  416. package/lib/types/dsh-adapter/channel/session-reset.d.ts +11 -0
  417. package/lib/types/dsh-adapter/channel/session-reset.d.ts.map +1 -0
  418. package/lib/types/dsh-adapter/channel/session-reset.js +44 -0
  419. package/lib/types/dsh-adapter/channel/session-resume.d.ts +56 -0
  420. package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -0
  421. package/lib/types/dsh-adapter/channel/session-resume.js +240 -0
  422. package/lib/types/dsh-adapter/channel/session-rewind.d.ts +19 -0
  423. package/lib/types/dsh-adapter/channel/session-rewind.d.ts.map +1 -0
  424. package/lib/types/dsh-adapter/channel/session-rewind.js +121 -0
  425. package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts +19 -0
  426. package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts.map +1 -0
  427. package/lib/types/dsh-adapter/channel/session-tree-actions.js +132 -0
  428. package/lib/types/dsh-adapter/channel/session-tree.d.ts +10 -0
  429. package/lib/types/dsh-adapter/channel/session-tree.d.ts.map +1 -0
  430. package/lib/types/dsh-adapter/channel/session-tree.js +503 -0
  431. package/lib/types/dsh-adapter/channel/settings-host.d.ts +4 -0
  432. package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -0
  433. package/lib/types/dsh-adapter/channel/settings-host.js +256 -0
  434. package/lib/types/dsh-adapter/channel/skill-catalog.d.ts +27 -0
  435. package/lib/types/dsh-adapter/channel/skill-catalog.d.ts.map +1 -0
  436. package/lib/types/dsh-adapter/channel/skill-catalog.js +183 -0
  437. package/lib/types/dsh-adapter/channel/state.d.ts +46 -0
  438. package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -0
  439. package/lib/types/dsh-adapter/channel/state.js +31 -0
  440. package/lib/types/dsh-adapter/channel/subagent-projection.d.ts +47 -0
  441. package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -0
  442. package/lib/types/dsh-adapter/channel/subagent-projection.js +140 -0
  443. package/lib/types/dsh-adapter/channel/transcript.d.ts +73 -0
  444. package/lib/types/dsh-adapter/channel/transcript.d.ts.map +1 -0
  445. package/lib/types/dsh-adapter/channel/transcript.js +312 -0
  446. package/lib/types/dsh-adapter/channel/types.d.ts +162 -0
  447. package/lib/types/dsh-adapter/channel/types.d.ts.map +1 -0
  448. package/lib/types/dsh-adapter/channel/types.js +1 -0
  449. package/lib/types/dsh-adapter/channel/usage.d.ts +13 -0
  450. package/lib/types/dsh-adapter/channel/usage.d.ts.map +1 -0
  451. package/lib/types/dsh-adapter/channel/usage.js +48 -0
  452. package/lib/types/dsh-adapter/channel/workspace-actions.d.ts +20 -0
  453. package/lib/types/dsh-adapter/channel/workspace-actions.d.ts.map +1 -0
  454. package/lib/types/dsh-adapter/channel/workspace-actions.js +56 -0
  455. package/lib/types/dsh-adapter/channel-facade-actions.d.ts +25 -0
  456. package/lib/types/dsh-adapter/channel-facade-actions.d.ts.map +1 -0
  457. package/lib/types/dsh-adapter/channel-facade-actions.js +55 -0
  458. package/lib/types/dsh-adapter/channel-scene-outlet.d.ts +6 -0
  459. package/lib/types/dsh-adapter/channel-scene-outlet.d.ts.map +1 -0
  460. package/lib/types/dsh-adapter/channel-scene-outlet.js +13 -0
  461. package/lib/types/dsh-adapter/channel-ui.d.ts +9 -0
  462. package/lib/types/dsh-adapter/channel-ui.d.ts.map +1 -0
  463. package/lib/types/dsh-adapter/channel-ui.js +128 -0
  464. package/lib/types/dsh-adapter/channel.d.ts +9 -1525
  465. package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
  466. package/lib/types/dsh-adapter/channel.js +750 -8145
  467. package/lib/types/dsh-adapter/command-trees.d.ts +1 -0
  468. package/lib/types/dsh-adapter/command-trees.d.ts.map +1 -1
  469. package/lib/types/dsh-adapter/command-trees.js +20 -1
  470. package/lib/types/dsh-adapter/compat/liveSession.d.ts +3 -1
  471. package/lib/types/dsh-adapter/compat/liveSession.d.ts.map +1 -1
  472. package/lib/types/dsh-adapter/compat/liveSession.js +23 -0
  473. package/lib/types/dsh-adapter/compat/persistence.d.ts +21 -0
  474. package/lib/types/dsh-adapter/compat/persistence.d.ts.map +1 -0
  475. package/lib/types/dsh-adapter/compat/persistence.js +17 -0
  476. package/lib/types/dsh-adapter/compat/sessionLog.d.ts +50 -11
  477. package/lib/types/dsh-adapter/compat/sessionLog.d.ts.map +1 -1
  478. package/lib/types/dsh-adapter/compat/sessionLog.js +325 -36
  479. package/lib/types/dsh-adapter/component-identity.d.ts +1 -1
  480. package/lib/types/dsh-adapter/component-identity.d.ts.map +1 -1
  481. package/lib/types/dsh-adapter/component-identity.js +1 -1
  482. package/lib/types/dsh-adapter/contract.d.ts +11 -9
  483. package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
  484. package/lib/types/dsh-adapter/contract.js +19 -12
  485. package/lib/types/dsh-adapter/decision-guard.d.ts +56 -12
  486. package/lib/types/dsh-adapter/decision-guard.d.ts.map +1 -1
  487. package/lib/types/dsh-adapter/decision-guard.js +134 -22
  488. package/lib/types/dsh-adapter/dialogs.d.ts.map +1 -1
  489. package/lib/types/dsh-adapter/dialogs.js +13 -0
  490. package/lib/types/dsh-adapter/effect-ledger.d.ts +5 -0
  491. package/lib/types/dsh-adapter/effect-ledger.d.ts.map +1 -1
  492. package/lib/types/dsh-adapter/effect-ledger.js +53 -15
  493. package/lib/types/dsh-adapter/extension-events.d.ts +2 -9
  494. package/lib/types/dsh-adapter/extension-events.d.ts.map +1 -1
  495. package/lib/types/dsh-adapter/extension-events.js +0 -20
  496. package/lib/types/dsh-adapter/extensions.d.ts.map +1 -1
  497. package/lib/types/dsh-adapter/extensions.js +3 -2
  498. package/lib/types/dsh-adapter/host-grants.d.ts +23 -0
  499. package/lib/types/dsh-adapter/host-grants.d.ts.map +1 -0
  500. package/lib/types/dsh-adapter/host-grants.js +45 -0
  501. package/lib/types/dsh-adapter/jobs.d.ts +2 -46
  502. package/lib/types/dsh-adapter/jobs.d.ts.map +1 -1
  503. package/lib/types/dsh-adapter/jobs.js +0 -25
  504. package/lib/types/dsh-adapter/message-observer.d.ts +15 -2
  505. package/lib/types/dsh-adapter/message-observer.d.ts.map +1 -1
  506. package/lib/types/dsh-adapter/message-observer.js +157 -28
  507. package/lib/types/dsh-adapter/plugin-host.d.ts +80 -11
  508. package/lib/types/dsh-adapter/plugin-host.d.ts.map +1 -1
  509. package/lib/types/dsh-adapter/plugin-host.js +438 -41
  510. package/lib/types/dsh-adapter/plugin-storage.d.ts +11 -1
  511. package/lib/types/dsh-adapter/plugin-storage.d.ts.map +1 -1
  512. package/lib/types/dsh-adapter/plugin-storage.js +150 -11
  513. package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
  514. package/lib/types/dsh-adapter/plugin.js +75 -34
  515. package/lib/types/dsh-adapter/plugins-info.d.ts +2 -2
  516. package/lib/types/dsh-adapter/plugins-info.d.ts.map +1 -1
  517. package/lib/types/dsh-adapter/plugins-info.js +11 -6
  518. package/lib/types/dsh-adapter/presets.d.ts.map +1 -1
  519. package/lib/types/dsh-adapter/presets.js +3 -2
  520. package/lib/types/dsh-adapter/providerWizard.d.ts +2 -159
  521. package/lib/types/dsh-adapter/providerWizard.d.ts.map +1 -1
  522. package/lib/types/dsh-adapter/questions.d.ts +8 -0
  523. package/lib/types/dsh-adapter/questions.d.ts.map +1 -1
  524. package/lib/types/dsh-adapter/questions.js +18 -0
  525. package/lib/types/dsh-adapter/recap.d.ts +1 -9
  526. package/lib/types/dsh-adapter/recap.d.ts.map +1 -1
  527. package/lib/types/dsh-adapter/recap.js +0 -14
  528. package/lib/types/dsh-adapter/renderers.d.ts +1 -0
  529. package/lib/types/dsh-adapter/renderers.d.ts.map +1 -1
  530. package/lib/types/dsh-adapter/renderers.js +26 -1
  531. package/lib/types/dsh-adapter/scenes.d.ts +3 -1
  532. package/lib/types/dsh-adapter/scenes.d.ts.map +1 -1
  533. package/lib/types/dsh-adapter/scenes.js +31 -0
  534. package/lib/types/dsh-adapter/sessionTree.d.ts +14 -95
  535. package/lib/types/dsh-adapter/sessionTree.d.ts.map +1 -1
  536. package/lib/types/dsh-adapter/sessionTree.js +51 -36
  537. package/lib/types/dsh-adapter/sessions/index.d.ts +1 -1
  538. package/lib/types/dsh-adapter/sessions/index.d.ts.map +1 -1
  539. package/lib/types/dsh-adapter/sessions/index.js +1 -1
  540. package/lib/types/dsh-adapter/sessions/list.d.ts +23 -0
  541. package/lib/types/dsh-adapter/sessions/list.d.ts.map +1 -1
  542. package/lib/types/dsh-adapter/sessions/list.js +25 -14
  543. package/lib/types/dsh-adapter/sessions/types.d.ts +2 -128
  544. package/lib/types/dsh-adapter/sessions/types.d.ts.map +1 -1
  545. package/lib/types/dsh-adapter/sessions/types.js +0 -13
  546. package/lib/types/dsh-adapter/settings-sections.d.ts +4 -95
  547. package/lib/types/dsh-adapter/settings-sections.d.ts.map +1 -1
  548. package/lib/types/dsh-adapter/settings-sections.js +50 -13
  549. package/lib/types/dsh-adapter/settingsEditor.d.ts +2 -36
  550. package/lib/types/dsh-adapter/settingsEditor.d.ts.map +1 -1
  551. package/lib/types/dsh-adapter/settingsEditor.js +0 -18
  552. package/lib/types/dsh-adapter/shortcuts.d.ts +5 -0
  553. package/lib/types/dsh-adapter/shortcuts.d.ts.map +1 -1
  554. package/lib/types/dsh-adapter/shortcuts.js +49 -0
  555. package/lib/types/dsh-adapter/status.d.ts +5 -0
  556. package/lib/types/dsh-adapter/status.d.ts.map +1 -1
  557. package/lib/types/dsh-adapter/status.js +29 -0
  558. package/lib/types/dsh-adapter/subagents.d.ts +9 -49
  559. package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
  560. package/lib/types/dsh-adapter/subagents.js +92 -1
  561. package/lib/types/dsh-adapter/themes.d.ts +1 -0
  562. package/lib/types/dsh-adapter/themes.d.ts.map +1 -1
  563. package/lib/types/dsh-adapter/themes.js +29 -0
  564. package/lib/types/dsh-adapter/toast.d.ts +13 -0
  565. package/lib/types/dsh-adapter/toast.d.ts.map +1 -1
  566. package/lib/types/dsh-adapter/toast.js +31 -1
  567. package/lib/types/dsh-adapter/trajectory/aggregate.d.ts +2 -1
  568. package/lib/types/dsh-adapter/trajectory/aggregate.d.ts.map +1 -1
  569. package/lib/types/dsh-adapter/trajectory/aggregate.js +2 -1
  570. package/lib/types/dsh-adapter/trajectory/guards.d.ts +37 -18
  571. package/lib/types/dsh-adapter/trajectory/guards.d.ts.map +1 -1
  572. package/lib/types/dsh-adapter/trajectory/guards.js +43 -5
  573. package/lib/types/dsh-adapter/trajectory/inspect.d.ts +2 -2
  574. package/lib/types/dsh-adapter/trajectory/inspect.d.ts.map +1 -1
  575. package/lib/types/dsh-adapter/trajectory/projection.d.ts +31 -13
  576. package/lib/types/dsh-adapter/trajectory/projection.d.ts.map +1 -1
  577. package/lib/types/dsh-adapter/trajectory/projection.js +71 -14
  578. package/lib/types/dsh-adapter/trajectory/types.d.ts +1 -1
  579. package/lib/types/dsh-adapter/trajectory/types.d.ts.map +1 -1
  580. package/lib/types/dsh-adapter/transcript-images.d.ts +2 -19
  581. package/lib/types/dsh-adapter/transcript-images.d.ts.map +1 -1
  582. package/lib/types/dsh-adapter/workspaces.d.ts +2 -49
  583. package/lib/types/dsh-adapter/workspaces.d.ts.map +1 -1
  584. package/lib/types/dsh-adapter/workspaces.js +23 -3
  585. package/lib/types/i18n.d.ts +19 -7
  586. package/lib/types/i18n.d.ts.map +1 -1
  587. package/lib/types/i18n.js +8 -3
  588. package/lib/types/ink/render-node-to-output.d.ts +24 -1
  589. package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
  590. package/lib/types/ink/render-node-to-output.js +103 -4
  591. package/lib/types/ink/renderer.d.ts.map +1 -1
  592. package/lib/types/ink/renderer.js +14 -2
  593. package/lib/types/ink/styles.d.ts +12 -0
  594. package/lib/types/ink/styles.d.ts.map +1 -1
  595. package/lib/types/modelGroups.d.ts +1 -1
  596. package/lib/types/modelGroups.d.ts.map +1 -1
  597. package/lib/types/modelRoute.js +1 -1
  598. package/lib/types/plugin-host.d.ts +3 -4
  599. package/lib/types/plugin-host.d.ts.map +1 -1
  600. package/lib/types/plugin-host.js +8 -6
  601. package/lib/types/screens/AgentView.d.ts +1 -1
  602. package/lib/types/screens/AgentView.d.ts.map +1 -1
  603. package/lib/types/screens/Chat.d.ts +3 -2
  604. package/lib/types/screens/Chat.d.ts.map +1 -1
  605. package/lib/types/screens/Chat.js +71 -9
  606. package/lib/types/screens/SessionBrowser.d.ts +1 -1
  607. package/lib/types/screens/SessionBrowser.d.ts.map +1 -1
  608. package/lib/types/screens/SessionTree.d.ts +1 -1
  609. package/lib/types/screens/SessionTree.d.ts.map +1 -1
  610. package/lib/types/screens/Settings.d.ts +1 -1
  611. package/lib/types/screens/Settings.d.ts.map +1 -1
  612. package/lib/types/screens/StatusLine.d.ts +1 -1
  613. package/lib/types/screens/StatusLine.d.ts.map +1 -1
  614. package/lib/types/screens/StatusLine.js +40 -1
  615. package/lib/types/screens/TrajectoryScene.d.ts +1 -1
  616. package/lib/types/screens/TrajectoryScene.d.ts.map +1 -1
  617. package/lib/types/sessionModes.d.ts +11 -15
  618. package/lib/types/sessionModes.d.ts.map +1 -1
  619. package/lib/types/sessionModes.js +11 -0
  620. package/lib/types/tuiDisplayPrefs.d.ts +2 -68
  621. package/lib/types/tuiDisplayPrefs.d.ts.map +1 -1
  622. package/lib/types/tuiDisplayPrefs.js +5 -1
  623. package/lib/types/utils/credentials.d.ts +13 -0
  624. package/lib/types/utils/credentials.d.ts.map +1 -0
  625. package/lib/types/utils/credentials.js +41 -0
  626. package/lib/types/utils/fileSuggestions.d.ts +2 -9
  627. package/lib/types/utils/fileSuggestions.d.ts.map +1 -1
  628. package/lib/types/utils/fold-long-lines.d.ts +38 -0
  629. package/lib/types/utils/fold-long-lines.d.ts.map +1 -0
  630. package/lib/types/utils/fold-long-lines.js +91 -0
  631. package/node_modules/@deepseek-harness-tui/dsh-auth/lib/pi-ai.d.ts +1 -1
  632. package/node_modules/@deepseek-harness-tui/dsh-auth/lib/profiles.js +4 -0
  633. package/node_modules/@deepseek-harness-tui/dsh-auth/lib/service.js +15 -2
  634. package/node_modules/@deepseek-harness-tui/dsh-auth/package.json +10 -10
  635. package/package.json +124 -81
  636. package/presets/liangshen/.dsh-tui-managed.json +1 -1
  637. package/presets/liangshen/agent.cordis.yml +20 -4
  638. package/presets/liangshen/compaction-epoch.mjs +3 -1
  639. package/presets/liangshen/instruction-hint.mjs +2 -1
  640. package/presets/liangshen/session-events.mjs +8 -0
  641. package/lib/types/dsh-adapter/grants.d.ts.map +0 -1
  642. package/lib/types/dsh-adapter/host-descriptor.d.ts +0 -24
  643. package/lib/types/dsh-adapter/host-descriptor.d.ts.map +0 -1
  644. package/lib/types/dsh-adapter/host-descriptor.js +0 -169
  645. package/lib/types/dsh-adapter/plugin-test-utils.d.ts +0 -62
  646. package/lib/types/dsh-adapter/plugin-test-utils.d.ts.map +0 -1
  647. package/lib/types/dsh-adapter/plugin-test-utils.js +0 -61
  648. package/lib/types/plugin-spec/negotiate.d.ts.map +0 -1
  649. package/lib/types/plugin-spec/permission-scope.d.ts.map +0 -1
  650. package/lib/types/plugin-spec/registry.d.ts.map +0 -1
  651. package/lib/types/plugin-spec/schema-check.d.ts.map +0 -1
  652. package/lib/types/plugin-spec/tui-extension.d.ts +0 -16
  653. package/lib/types/plugin-spec/tui-extension.d.ts.map +0 -1
  654. package/lib/types/plugin-spec/tui-extension.js +0 -79
  655. package/lib/types/plugin-spec/types.d.ts.map +0 -1
  656. package/lib/types/plugin-spec/validate.d.ts.map +0 -1
  657. package/lib/types/test-utils.d.ts +0 -2
  658. package/lib/types/test-utils.d.ts.map +0 -1
  659. package/lib/types/test-utils.js +0 -8
  660. /package/lib/types/{plugin-spec → adapter/standard}/negotiate.d.ts +0 -0
  661. /package/lib/types/{plugin-spec → adapter/standard}/negotiate.js +0 -0
  662. /package/lib/types/{plugin-spec → adapter/standard}/registry.d.ts +0 -0
  663. /package/lib/types/{plugin-spec → adapter/standard}/schema-check.d.ts +0 -0
  664. /package/lib/types/{plugin-spec → adapter/standard}/types.js +0 -0
@@ -0,0 +1,231 @@
1
+ /**
2
+ * TUI Channel Provider (P5).
3
+ *
4
+ * A Channel Provider owns the Agent/Session/Workspace side of
5
+ * `tui.dsh/v1alpha1#Channel`. This module implements an in-memory replay
6
+ * provider used by the replay harness: it does not attach to a real DSH
7
+ * service, but it follows the protocol envelope (open/subscribe/invoke/
8
+ * close), validates inputs/outputs, preserves monotonic channel versions,
9
+ * and can be driven from a real recorded DSH session snapshot/transcript.
10
+ *
11
+ * The replay provider is intentionally protocol-envelope focused:
12
+ * - unknown methods are rejected (never treated as a successful no-op);
13
+ * - feature/support validation happens in the replay harness, not here;
14
+ * - values are bounded in size/depth and deep-frozen before being handed out;
15
+ * - method handlers only run inside the harness-provided replay isolation.
16
+ */
17
+ import { TUI_CHANNEL_WIRE_REVISION, validateTuiChannelInput, validateTuiChannelOutput, validateTuiChannelSnapshot, } from '../spec/index.js';
18
+ import { isReplayIsolationActive } from '../kernel/replay-isolation.js';
19
+ /** Safety bound for replay JSON payloads. */
20
+ export const REPLAY_JSON_MAX_BYTES = 512 * 1024;
21
+ /** Safety bound for replay JSON nesting depth. */
22
+ export const REPLAY_JSON_MAX_DEPTH = 64;
23
+ function deepFreezeCopy(value, seen = new WeakMap()) {
24
+ if (value === null || typeof value !== 'object')
25
+ return value;
26
+ const existing = seen.get(value);
27
+ if (existing !== undefined)
28
+ return existing;
29
+ if (Array.isArray(value)) {
30
+ const copy = [];
31
+ seen.set(value, copy);
32
+ for (const item of value)
33
+ copy.push(deepFreezeCopy(item, seen));
34
+ return Object.freeze(copy);
35
+ }
36
+ const copy = {};
37
+ seen.set(value, copy);
38
+ for (const [key, item] of Object.entries(value)) {
39
+ copy[key] = deepFreezeCopy(item, seen);
40
+ }
41
+ return Object.freeze(copy);
42
+ }
43
+ function assertBoundedJson(value, label, depth = 0, ancestors = new Set()) {
44
+ if (depth > REPLAY_JSON_MAX_DEPTH) {
45
+ throw new TypeError(`${label}: JSON nesting exceeds ${REPLAY_JSON_MAX_DEPTH} levels`);
46
+ }
47
+ if (value === null || typeof value === 'boolean' || typeof value === 'string')
48
+ return;
49
+ if (typeof value === 'number') {
50
+ if (!Number.isFinite(value))
51
+ throw new TypeError(`${label}: JSON numbers must be finite`);
52
+ return;
53
+ }
54
+ if (typeof value !== 'object') {
55
+ throw new TypeError(`${label}: must be a JSON value`);
56
+ }
57
+ if (ancestors.has(value))
58
+ throw new TypeError(`${label}: must not contain cycles`);
59
+ ancestors.add(value);
60
+ if (Array.isArray(value)) {
61
+ for (const [index, item] of value.entries())
62
+ assertBoundedJson(item, `${label}[${index}]`, depth + 1, ancestors);
63
+ }
64
+ else {
65
+ const prototype = Object.getPrototypeOf(value);
66
+ if (prototype !== Object.prototype && prototype !== null) {
67
+ throw new TypeError(`${label}: must contain only plain objects`);
68
+ }
69
+ for (const [key, item] of Object.entries(value)) {
70
+ assertBoundedJson(item, `${label}.${key}`, depth + 1, ancestors);
71
+ }
72
+ }
73
+ ancestors.delete(value);
74
+ }
75
+ function assertJsonSize(value, label) {
76
+ let json;
77
+ try {
78
+ json = JSON.stringify(value);
79
+ }
80
+ catch {
81
+ throw new TypeError(`${label}: value is not JSON-serializable`);
82
+ }
83
+ if (json === undefined)
84
+ throw new TypeError(`${label}: value is not JSON-serializable`);
85
+ if (Buffer.byteLength(json, 'utf8') > REPLAY_JSON_MAX_BYTES) {
86
+ throw new TypeError(`${label}: JSON payload exceeds ${REPLAY_JSON_MAX_BYTES} bytes`);
87
+ }
88
+ }
89
+ function channelSnapshot(value) {
90
+ const validated = validateTuiChannelSnapshot(value);
91
+ assertBoundedJson(validated, 'Channel snapshot');
92
+ assertJsonSize(validated, 'Channel snapshot');
93
+ return deepFreezeCopy(validated);
94
+ }
95
+ function invokeOutput(value) {
96
+ const validated = validateTuiChannelOutput('invoke', value);
97
+ assertBoundedJson(validated, 'Channel invoke output');
98
+ assertJsonSize(validated, 'Channel invoke output');
99
+ return deepFreezeCopy(validated);
100
+ }
101
+ /** Create an isolated replay Channel Provider over recorded snapshots. */
102
+ export function createReplayChannelProvider(source) {
103
+ if (!Array.isArray(source.snapshots) || source.snapshots.length === 0) {
104
+ throw new TypeError('replay Channel provider requires at least one snapshot');
105
+ }
106
+ if (source.methods !== undefined && (source.methods === null
107
+ || typeof source.methods !== 'object'
108
+ || (Object.getPrototypeOf(source.methods) !== Object.prototype && Object.getPrototypeOf(source.methods) !== null))) {
109
+ throw new TypeError('replay Channel methods must be a plain object map');
110
+ }
111
+ for (const [name, handler] of Object.entries(source.methods ?? {})) {
112
+ if (typeof handler !== 'function') {
113
+ throw new TypeError(`replay Channel method "${name}" must be a function`);
114
+ }
115
+ }
116
+ const snapshots = Object.freeze([...source.snapshots].map(channelSnapshot));
117
+ for (let index = 1; index < snapshots.length; index += 1) {
118
+ const previous = snapshots[index - 1];
119
+ const current = snapshots[index];
120
+ if (current.channelId !== previous.channelId) {
121
+ throw new TypeError('replay Channel snapshots must share one channelId');
122
+ }
123
+ if (!(current.version > previous.version)) {
124
+ throw new TypeError('replay Channel snapshots must have strictly increasing versions');
125
+ }
126
+ }
127
+ let currentIndex = snapshots.length - 1;
128
+ let closed = false;
129
+ function latest() {
130
+ return snapshots[currentIndex];
131
+ }
132
+ function assertOpen() {
133
+ if (closed)
134
+ throw new Error('CHANNEL_CLOSED');
135
+ }
136
+ return Object.freeze({
137
+ async open(input) {
138
+ validateTuiChannelInput('open', {
139
+ ...input,
140
+ ...(input.options === undefined ? {} : { options: input.options }),
141
+ });
142
+ // The replay provider is a deterministic fixture harness, not a DSH
143
+ // endpoint that resolves workspace/session authorities. Selector
144
+ // resolution is explicitly unsupported: silently returning the latest
145
+ // snapshot for a wrong selector would be a false conformance claim.
146
+ if ((input.workspace !== undefined && input.workspace !== '')
147
+ || (input.sessionId !== undefined && input.sessionId !== '')) {
148
+ throw new Error('REPLAY_PROVIDER_UNSUPPORTED_SELECTOR: replay provider does not resolve workspace/sessionId selectors');
149
+ }
150
+ closed = false;
151
+ return latest();
152
+ },
153
+ async subscribe(channelId, afterVersion, listener) {
154
+ validateTuiChannelInput('subscribe', { channelId, afterVersion });
155
+ assertOpen();
156
+ const channel = latest();
157
+ if (channel.channelId !== channelId) {
158
+ throw new Error('CHANNEL_NOT_FOUND');
159
+ }
160
+ let stopped = false;
161
+ // RFC: subscribe is "not earlier than afterVersion", so equal/version 0
162
+ // snapshots must also be delivered.
163
+ for (const snapshot of snapshots) {
164
+ if (stopped)
165
+ break;
166
+ if (snapshot.version >= afterVersion) {
167
+ listener(snapshot);
168
+ }
169
+ }
170
+ return () => {
171
+ stopped = true;
172
+ };
173
+ },
174
+ async invoke(channelId, method, args) {
175
+ validateTuiChannelInput('invoke', { channelId, method, arguments: args });
176
+ assertBoundedJson(args, 'Channel.invoke arguments');
177
+ assertJsonSize(args, 'Channel.invoke arguments');
178
+ assertOpen();
179
+ const channel = latest();
180
+ if (channel.channelId !== channelId) {
181
+ throw new Error('CHANNEL_NOT_FOUND');
182
+ }
183
+ const handler = source.methods !== undefined && Object.hasOwn(source.methods, method)
184
+ ? source.methods[method]
185
+ : undefined;
186
+ if (typeof handler !== 'function') {
187
+ // Unknown methods are protocol errors, never a successful no-op.
188
+ throw new Error(`FEATURE_UNAVAILABLE: unknown Channel method "${method}"`);
189
+ }
190
+ if (!isReplayIsolationActive()) {
191
+ throw new Error('replay Channel method handlers may only run inside replay isolation');
192
+ }
193
+ const value = await handler(args);
194
+ assertJsonValue(value);
195
+ const output = invokeOutput({
196
+ value: value ?? null,
197
+ valueDefined: value !== undefined,
198
+ ...({ snapshot: latest() }),
199
+ });
200
+ // The protocol's `invoke` output is validated above; if a provider
201
+ // advances state in the future, the snapshot returned must remain
202
+ // monotonic. The replay provider is intentionally read-only, so the
203
+ // snapshot never regresses.
204
+ return output;
205
+ },
206
+ async close(channelId) {
207
+ validateTuiChannelInput('close', { channelId });
208
+ const channel = latest();
209
+ if (channel.channelId !== channelId) {
210
+ throw new Error('CHANNEL_NOT_FOUND');
211
+ }
212
+ closed = true;
213
+ return { closed: true };
214
+ },
215
+ });
216
+ }
217
+ /** Convenience provider over one snapshot (common replay fixture). */
218
+ export function createReplayChannelProviderFromSnapshot(snapshot, transcript = []) {
219
+ return createReplayChannelProvider({
220
+ snapshots: [snapshot],
221
+ transcript,
222
+ });
223
+ }
224
+ function assertJsonValue(value) {
225
+ if (typeof value === 'function' || typeof value === 'symbol') {
226
+ throw new TypeError('replay Channel values must be JSON-serializable');
227
+ }
228
+ assertBoundedJson(value, 'Channel.invoke result');
229
+ assertJsonSize(value, 'Channel.invoke result');
230
+ }
231
+ export const REPLAY_CHANNEL_WIRE_REVISION = TUI_CHANNEL_WIRE_REVISION;
@@ -0,0 +1,4 @@
1
+ /** Detached in-process read projections. Executable leaves are guarded, not serialized. */
2
+ export declare function markChannelReadDirty(value: object): void;
3
+ export declare function createChannelReadView(check: (mutation: boolean) => void): <T>(value: T, nextVersion: number) => T;
4
+ //# sourceMappingURL=read-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-view.d.ts","sourceRoot":"","sources":["../../../../src/adapter/channel/read-view.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAgB3F,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAExD;AAQD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,IAgG9D,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,MAAM,KAAG,CAAC,CAI7C"}
@@ -0,0 +1,132 @@
1
+ /** Detached in-process read projections. Executable leaves are guarded, not serialized. */
2
+ /**
3
+ * Rows are mutable while the channel reduces live events, but renderer-facing
4
+ * snapshots are not. The reducer marks a row when it changes so a later read
5
+ * can retain every untouched immutable row from the preceding revision.
6
+ */
7
+ const dirtyRevisions = new WeakMap();
8
+ /**
9
+ * Projection brands distinguish inert immutable data from a graph containing
10
+ * an executable leaf. An outer capability may reuse the former, but MUST walk
11
+ * the latter so its own lifetime fence wraps every retained callback.
12
+ */
13
+ const projectedValues = new WeakMap();
14
+ let nextDirtyRevision = 1;
15
+ export function markChannelReadDirty(value) {
16
+ dirtyRevisions.set(value, nextDirtyRevision++);
17
+ }
18
+ function isTranscriptRow(value) {
19
+ return 'id' in value && 'kind' in value && 'text' in value;
20
+ }
21
+ export function createChannelReadView(check) {
22
+ let version = -1;
23
+ let copies = new WeakMap();
24
+ function copy(value, key = '', receiver) {
25
+ if (typeof value === 'function') {
26
+ const prior = copies.get(value);
27
+ if (prior?.version === version)
28
+ return prior.value;
29
+ // Settings conversions are local presentation callbacks. Every other
30
+ // executable leaf (workspace continuations/run, etc.) is a mutation.
31
+ const result = ((...args) => {
32
+ check(key !== 'format' && key !== 'parse');
33
+ const output = Reflect.apply(value, receiver, args);
34
+ if (output instanceof Promise)
35
+ return output.then(v => { check(false); return copy(v); });
36
+ return copy(output);
37
+ });
38
+ projectedValues.set(result, true);
39
+ copies.set(value, { value: result, version, dirtyRevision: 0 });
40
+ return result;
41
+ }
42
+ if (value === null || typeof value !== 'object')
43
+ return value;
44
+ // Structural containers are detached below. Every other object is a leaf
45
+ // with its own identity and semantics — binary buffers, Date, Error, class
46
+ // instances, promises — and copying one key by key silently hollows it
47
+ // out: a projected transcript image reached sharp as a plain object and
48
+ // decoded as "Input file is missing" (rendered 无法预览). Date and RegExp
49
+ // get a faithful detached copy; everything else is shared as-is, because
50
+ // no copy preserves an opaque value and a hollow one is strictly worse.
51
+ if (!Array.isArray(value) && !(value instanceof Map) && !(value instanceof Set)) {
52
+ if (value instanceof Date)
53
+ return new Date(value.getTime());
54
+ if (value instanceof RegExp)
55
+ return new RegExp(value.source, value.flags);
56
+ const proto = Object.getPrototypeOf(value);
57
+ if (proto !== Object.prototype && proto !== null)
58
+ return value;
59
+ }
60
+ // An inner ChannelUi projection is safe immutable data, but an outer
61
+ // production mount must still capture its own lifetime around nested
62
+ // callbacks. Reuse purely structural data; walk callable graphs again.
63
+ if (projectedValues.get(value) === false)
64
+ return value;
65
+ const prior = copies.get(value);
66
+ const dirtyRevision = dirtyRevisions.get(value) ?? 0;
67
+ // Transcript row identity is deliberately stable across unrelated channel
68
+ // revisions. A dirty row gets a new detached copy; old snapshots remain
69
+ // frozen and therefore cannot observe the backend mutation.
70
+ if (prior !== undefined && isTranscriptRow(value) && prior.dirtyRevision === dirtyRevision)
71
+ return prior.value;
72
+ // The transcript container is marked on membership or row changes. When
73
+ // no such mark occurred, activity/status versions retain the exact frozen
74
+ // array rather than visiting historical rows again.
75
+ if (prior !== undefined &&
76
+ Array.isArray(value) &&
77
+ (value.length === 0 || (value[0] !== null && typeof value[0] === 'object' && isTranscriptRow(value[0]))) &&
78
+ prior.value.length === value.length &&
79
+ prior.dirtyRevision === dirtyRevision)
80
+ return prior.value;
81
+ if (prior !== undefined && !isTranscriptRow(value) && prior.version === version)
82
+ return prior.value;
83
+ if (value instanceof Map) {
84
+ const entries = new Map([...value].map(([k, v]) => [copy(k), copy(v)]));
85
+ const view = Object.freeze({
86
+ get size() { return entries.size; }, has: entries.has.bind(entries), get: entries.get.bind(entries),
87
+ entries: entries.entries.bind(entries), keys: entries.keys.bind(entries), values: entries.values.bind(entries),
88
+ [Symbol.iterator]: entries[Symbol.iterator].bind(entries),
89
+ forEach(callback, thisArg) { entries.forEach((v, k) => callback.call(thisArg, v, k, view)); },
90
+ });
91
+ const executable = [...entries].some(([key, entry]) => projectedValues.get(key) === true || projectedValues.get(entry) === true);
92
+ projectedValues.set(view, executable);
93
+ copies.set(value, { value: view, version, dirtyRevision });
94
+ return view;
95
+ }
96
+ if (value instanceof Set) {
97
+ const entries = new Set([...value].map(v => copy(v)));
98
+ const view = Object.freeze({
99
+ get size() { return entries.size; }, has: entries.has.bind(entries),
100
+ entries: entries.entries.bind(entries), keys: entries.keys.bind(entries), values: entries.values.bind(entries),
101
+ [Symbol.iterator]: entries[Symbol.iterator].bind(entries),
102
+ forEach(callback, thisArg) { entries.forEach(v => callback.call(thisArg, v, v, view)); },
103
+ });
104
+ const executable = [...entries].some(entry => projectedValues.get(entry) === true);
105
+ projectedValues.set(view, executable);
106
+ copies.set(value, { value: view, version, dirtyRevision });
107
+ return view;
108
+ }
109
+ const result = Array.isArray(value) ? [] : Object.create(null);
110
+ copies.set(value, { value: result, version, dirtyRevision });
111
+ if (Array.isArray(value)) {
112
+ // Avoid Object.entries' whole-history tuple allocation. The new frozen
113
+ // container is required to preserve old array snapshots, while each
114
+ // unchanged row itself is structurally shared above.
115
+ for (let index = 0; index < value.length; index++)
116
+ result.push(copy(value[index], String(index), value));
117
+ }
118
+ else {
119
+ for (const [name, child] of Object.entries(value))
120
+ result[name] = copy(child, name, value);
121
+ }
122
+ const frozen = Object.freeze(result);
123
+ const executable = Object.values(result).some(child => child !== null && (typeof child === 'object' || typeof child === 'function') && projectedValues.get(child) === true);
124
+ projectedValues.set(frozen, executable);
125
+ copies.set(value, { value: frozen, version, dirtyRevision });
126
+ return frozen;
127
+ }
128
+ return (value, nextVersion) => {
129
+ version = nextVersion;
130
+ return copy(value);
131
+ };
132
+ }
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Minimal real DSH session-event → TuiChannelSnapshot projection.
3
+ *
4
+ * This is the P5 "real DSH replay" bridge: instead of only counting a
5
+ * transcript, it reads `agent.session.events`-shaped records and projects the
6
+ * visible rows/status into protocol-envelope `TuiChannelSnapshot` objects.
7
+ *
8
+ * It intentionally stays small and does not copy the full production
9
+ * `src/dsh-adapter/channel.ts` projection (which is still the live Channel
10
+ * implementation source). It is a durable-session *minimal transcript
11
+ * replay* projection used by the harness and documentation, not a complete
12
+ * RFC 0007 TUI Channel state projection.
13
+ *
14
+ * Unknown event types are fail-closed unless the event marks itself
15
+ * top-level `ignorable: true`, so a newer required DSH event cannot be
16
+ * silently skipped. Prefix-based recognition is deliberately not used.
17
+ */
18
+ import type { TuiChannelSnapshot } from '../spec/index.js';
19
+ export interface DshSessionProjectionMeta {
20
+ readonly channelId: string;
21
+ readonly sessionTitle?: string;
22
+ readonly homeDir?: string;
23
+ readonly pathCaseInsensitive?: boolean;
24
+ /** Optional RFC-adjacent Channel state fields carried through when known. */
25
+ readonly model?: string;
26
+ readonly mode?: string;
27
+ readonly agentPreset?: string;
28
+ readonly settingsSections?: readonly unknown[];
29
+ readonly scene?: unknown;
30
+ readonly diagnostic?: unknown;
31
+ readonly trace?: readonly unknown[];
32
+ readonly context?: unknown;
33
+ readonly pending?: readonly unknown[];
34
+ }
35
+ export declare class DshSessionProjectionError extends Error {
36
+ constructor(message: string);
37
+ }
38
+ /**
39
+ * Explicit DSH session event types this minimal projection recognizes.
40
+ *
41
+ * This is NOT a prefix list: `user/unknown-required` is not recognized unless
42
+ * the exact type is present. Unknown types must be marked top-level
43
+ * `ignorable: true` to be skipped.
44
+ */
45
+ export declare const KNOWN_DSH_EVENT_TYPES: Set<string>;
46
+ /**
47
+ * Project DSH session events to strictly-increasing channel snapshots.
48
+ *
49
+ * The returned snapshots are plain JSON-safe objects suitable for
50
+ * `createReplayChannelProvider`. If `events` is empty, one initial snapshot
51
+ * is returned so a replay can still open/subscribe cleanly.
52
+ *
53
+ * Unknown non-ignorable event types cause a `DshSessionProjectionError`.
54
+ */
55
+ export declare function projectDshSessionEventsToSnapshots(events: readonly unknown[], meta: DshSessionProjectionMeta): readonly TuiChannelSnapshot[];
56
+ //# sourceMappingURL=session-projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-projection.d.ts","sourceRoot":"","sources":["../../../../src/adapter/channel/session-projection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE1D,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,OAAO,EAAE,CAAA;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,CAAA;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,OAAO,EAAE,CAAA;CACtC;AAED,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,EAAE,MAAM;CAI5B;AAaD;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,aA6FhC,CAAA;AAsCF;;;;;;;;GAQG;AACH,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,SAAS,OAAO,EAAE,EAC1B,IAAI,EAAE,wBAAwB,GAC7B,SAAS,kBAAkB,EAAE,CAqE/B"}
@@ -0,0 +1,247 @@
1
+ /**
2
+ * Minimal real DSH session-event → TuiChannelSnapshot projection.
3
+ *
4
+ * This is the P5 "real DSH replay" bridge: instead of only counting a
5
+ * transcript, it reads `agent.session.events`-shaped records and projects the
6
+ * visible rows/status into protocol-envelope `TuiChannelSnapshot` objects.
7
+ *
8
+ * It intentionally stays small and does not copy the full production
9
+ * `src/dsh-adapter/channel.ts` projection (which is still the live Channel
10
+ * implementation source). It is a durable-session *minimal transcript
11
+ * replay* projection used by the harness and documentation, not a complete
12
+ * RFC 0007 TUI Channel state projection.
13
+ *
14
+ * Unknown event types are fail-closed unless the event marks itself
15
+ * top-level `ignorable: true`, so a newer required DSH event cannot be
16
+ * silently skipped. Prefix-based recognition is deliberately not used.
17
+ */
18
+ import { TUI_CHANNEL_WIRE_REVISION } from '../spec/index.js';
19
+ export class DshSessionProjectionError extends Error {
20
+ constructor(message) {
21
+ super(message);
22
+ this.name = 'DshSessionProjectionError';
23
+ }
24
+ }
25
+ /**
26
+ * Explicit DSH session event types this minimal projection recognizes.
27
+ *
28
+ * This is NOT a prefix list: `user/unknown-required` is not recognized unless
29
+ * the exact type is present. Unknown types must be marked top-level
30
+ * `ignorable: true` to be skipped.
31
+ */
32
+ export const KNOWN_DSH_EVENT_TYPES = new Set([
33
+ // dsh-session core event map
34
+ 'turn/start',
35
+ 'turn/end',
36
+ 'step/start',
37
+ 'step/end',
38
+ 'user/message',
39
+ // Retired by 0.1.5 (stream timing moved into the settlement events) but
40
+ // still present in pre-V3 logs this projection must keep replaying.
41
+ 'assistant/chunk',
42
+ 'assistant/message',
43
+ // 0.1.5: abandoned attempt (failed/retried/cancelled, no surface message).
44
+ 'assistant/attempt',
45
+ // 0.1.5: the system prompt became a surface node.
46
+ 'system/message',
47
+ 'tool/call',
48
+ 'tool/result',
49
+ 'command/run',
50
+ 'command/done',
51
+ 'hook/invoked',
52
+ 'hook/result',
53
+ 'agent/inbox/spliced',
54
+ 'todo/write',
55
+ 'request/header',
56
+ 'request/context',
57
+ 'session/end-seed',
58
+ // Not an appendable session event: 0.1.5 declares it in the same types file
59
+ // as a RemoteErrorDetailsMap key (SessionId resolution failure). Recognized
60
+ // here so the conformance sweep over that file stays total; it folds to no
61
+ // row like every other non-transcript type.
62
+ 'session/not-found',
63
+ // Known dsh-tui / ecosystem plugin event types (exact, not prefix-based)
64
+ 'session/created',
65
+ 'session/disposed',
66
+ 'session/flush',
67
+ 'session/title',
68
+ 'session/color',
69
+ 'session/title-llm-request',
70
+ 'session/event',
71
+ 'agent/status',
72
+ 'agent/disposed',
73
+ 'agent/request',
74
+ 'agent/inbox/claimed',
75
+ 'agent/inbox/discarded',
76
+ 'agent-preset/selected',
77
+ 'approval/asked',
78
+ 'approval/decided',
79
+ 'approval/policy',
80
+ 'commands/change',
81
+ 'skills/change',
82
+ 'goal/change',
83
+ 'plan/mode',
84
+ 'sandbox/mode',
85
+ 'permission/preset',
86
+ 'llm/retry',
87
+ 'llm/retry-started',
88
+ 'model/selection',
89
+ 'compaction/start',
90
+ 'compaction/end',
91
+ 'compaction/prune',
92
+ 'compaction/summary',
93
+ 'deliverables/presented',
94
+ 'feedback/record',
95
+ 'feedback/message-put',
96
+ 'feedback/message-delete',
97
+ 'schedule/change',
98
+ 'session-invariant',
99
+ 'session-log-deepseek/delivery-accepted',
100
+ 'subagent/start',
101
+ 'subagent/end',
102
+ 'subagent/descriptor',
103
+ 'subagent/catalog',
104
+ 'subagent/model-selection-policy',
105
+ 'team/member',
106
+ 'team/message/delivered',
107
+ 'team/message/queued',
108
+ 'team/task',
109
+ 'tool-workflow/agent-start',
110
+ 'tool-workflow/agent-end',
111
+ 'tool-workflow/run-start',
112
+ 'tool-workflow/run-end',
113
+ // The code runner's dispatch bracket was renamed in 0.1.5; old logs still
114
+ // carry the `code-` spellings, so both generations stay recognized.
115
+ 'tool/code-dispatch',
116
+ 'tool/code-dispatch-start',
117
+ 'tool/ptc-dispatch',
118
+ 'tool/ptc-dispatch-start',
119
+ 'web/deepseek-search-llm-request',
120
+ 'dsh-tui/btw',
121
+ 'dsh-tui/recap',
122
+ 'dsh-working-activity/config',
123
+ 'dsh-working-activity/status',
124
+ 'activity/status',
125
+ ]);
126
+ function isKnownEventType(type) {
127
+ return KNOWN_DSH_EVENT_TYPES.has(type);
128
+ }
129
+ function firstText(value) {
130
+ if (typeof value === 'string')
131
+ return value;
132
+ if (value === null || typeof value !== 'object')
133
+ return '';
134
+ const record = value;
135
+ if (typeof record.text === 'string')
136
+ return record.text;
137
+ const content = record.content;
138
+ if (!Array.isArray(content))
139
+ return '';
140
+ const parts = [];
141
+ for (const block of content) {
142
+ if (block === null || typeof block !== 'object')
143
+ continue;
144
+ const item = block;
145
+ if (typeof item.text === 'string')
146
+ parts.push(item.text);
147
+ }
148
+ return parts.join('');
149
+ }
150
+ function projectEvent(event) {
151
+ const type = typeof event.type === 'string' ? event.type : '';
152
+ const data = (event.data ?? {});
153
+ const text = firstText(data.message ?? data);
154
+ if (text === '')
155
+ return undefined;
156
+ if (type === 'user/message')
157
+ return { kind: 'user', text };
158
+ if (type === 'assistant/message')
159
+ return { kind: 'assistant', text };
160
+ return undefined;
161
+ }
162
+ function isIgnorable(event) {
163
+ // DSH `SessionEvent` places `ignorable` at the top level of the event,
164
+ // never inside `data`.
165
+ return event.ignorable === true;
166
+ }
167
+ /**
168
+ * Project DSH session events to strictly-increasing channel snapshots.
169
+ *
170
+ * The returned snapshots are plain JSON-safe objects suitable for
171
+ * `createReplayChannelProvider`. If `events` is empty, one initial snapshot
172
+ * is returned so a replay can still open/subscribe cleanly.
173
+ *
174
+ * Unknown non-ignorable event types cause a `DshSessionProjectionError`.
175
+ */
176
+ export function projectDshSessionEventsToSnapshots(events, meta) {
177
+ const rows = [];
178
+ const snapshots = [];
179
+ let version = 0;
180
+ let status = 'idle';
181
+ let usage = Object.freeze({});
182
+ let context = meta.context;
183
+ let pending = meta.pending;
184
+ let diagnostic = meta.diagnostic;
185
+ let trace = meta.trace ?? Object.freeze([]);
186
+ const push = () => {
187
+ const state = {
188
+ status,
189
+ sessionTitle: meta.sessionTitle ?? 'dsh session',
190
+ homeDir: meta.homeDir ?? '/',
191
+ pathCaseInsensitive: meta.pathCaseInsensitive ?? false,
192
+ transcript: Object.freeze(rows.map(row => Object.freeze({ ...row }))),
193
+ commandCatalog: Object.freeze([]),
194
+ ...(Object.keys(usage).length === 0 ? {} : { usage }),
195
+ ...(meta.model === undefined ? {} : { model: meta.model }),
196
+ ...(meta.mode === undefined ? {} : { mode: meta.mode }),
197
+ ...(meta.agentPreset === undefined ? {} : { agentPreset: meta.agentPreset }),
198
+ ...(meta.settingsSections === undefined ? {} : { settingsSections: Object.freeze([...meta.settingsSections]) }),
199
+ ...(meta.scene === undefined ? {} : { scene: meta.scene }),
200
+ ...(context === undefined ? {} : { context }),
201
+ ...(pending === undefined ? {} : { pending: Object.freeze([...pending]) }),
202
+ ...(diagnostic === undefined ? {} : { diagnostic }),
203
+ ...(trace === undefined ? {} : { trace }),
204
+ };
205
+ version += 1;
206
+ snapshots.push({
207
+ wireRevision: TUI_CHANNEL_WIRE_REVISION,
208
+ channelId: meta.channelId,
209
+ version,
210
+ state: Object.freeze(state),
211
+ });
212
+ };
213
+ push();
214
+ for (const raw of events) {
215
+ if (raw === null || typeof raw !== 'object') {
216
+ throw new DshSessionProjectionError('DSH session event must be an object');
217
+ }
218
+ const event = raw;
219
+ const type = typeof event.type === 'string' ? event.type : '';
220
+ if (type === '') {
221
+ // Missing type is always rejectable: even an `ignorable` marker cannot
222
+ // describe which event is being skipped.
223
+ throw new DshSessionProjectionError('DSH session event is missing a type');
224
+ }
225
+ if (!isKnownEventType(type)) {
226
+ if (isIgnorable(event))
227
+ continue;
228
+ throw new DshSessionProjectionError(`unknown non-ignorable DSH session event: ${type}`);
229
+ }
230
+ const data = (event.data ?? {});
231
+ if (type === 'turn/start')
232
+ status = 'working';
233
+ if (type === 'turn/end' || type === 'session/end-seed')
234
+ status = 'idle';
235
+ if (type === 'assistant/message' && data.usage !== null && typeof data.usage === 'object') {
236
+ usage = Object.freeze({ ...data.usage });
237
+ }
238
+ if (type === 'request/context') {
239
+ context = data;
240
+ }
241
+ const row = projectEvent(event);
242
+ if (row !== undefined)
243
+ rows.push(row);
244
+ push();
245
+ }
246
+ return Object.freeze(snapshots);
247
+ }