@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,35 @@
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ import { type SessionModeSpec } from '../../sessionModes.js';
3
+ import type { createChannelBinding } from './binding.js';
4
+ import { createModeActions } from './mode-actions.js';
5
+ import { type PermissionIdentity } from './mode-permission.js';
6
+ import type { PermissionModeRoster } from './mode-roster.js';
7
+ import type { ChannelState } from './types.js';
8
+ type Binding = ReturnType<typeof createChannelBinding>;
9
+ type ModeState = Pick<ChannelState, 'mode' | 'modeIndex' | 'emit'>;
10
+ type ModeCapture = ReturnType<Binding['capture']>;
11
+ /** The composition seam `createModeActions` owns; this factory forwards every
12
+ * member verbatim so both stay in lockstep. */
13
+ type BaseModeActionDeps = Parameters<typeof createModeActions>[2];
14
+ /**
15
+ * Permission-aware session-mode actions: main's mode transition (plan
16
+ * exclusivity, atom application, plan-exit restore) composed with the durable
17
+ * permission identity, on top of the refactored `createModeActions`.
18
+ *
19
+ * Construction is inert. The returned shape is a superset of
20
+ * `ReturnType<typeof createModeActions>`, so the composition root and
21
+ * `createBindingEvents` can consume it unchanged, plus
22
+ * `runPermissionPreset` for the public `ChannelUi` surface.
23
+ */
24
+ export declare function createPermissionModeActions(ctx: Context, state: ModeState, deps: Pick<BaseModeActionDeps, 'owner' | 'runtime' | 'binding' | 'sessionModes' | 'commandService' | 'executeRegistryCommand' | 'notify'> & {
25
+ roster: PermissionModeRoster;
26
+ }): {
27
+ refreshMode(): void;
28
+ cycleMode(): Promise<void>;
29
+ applyMode(spec: SessionModeSpec, capture?: ModeCapture): Promise<void>;
30
+ onSessionEvent(session: unknown, event: unknown): void;
31
+ runPermissionPreset(name: string): Promise<boolean>;
32
+ permission: PermissionIdentity;
33
+ };
34
+ export {};
35
+ //# sourceMappingURL=mode-permission-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode-permission-actions.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/mode-permission-actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAKlD,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE7E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAkD,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC9G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAA;AACtD,KAAK,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC,CAAA;AAClE,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;AACjD;gDACgD;AAChD,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAA;AAmEjE;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,IAAI,CACR,kBAAkB,EAClB,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,GAAG,gBAAgB,GAAG,wBAAwB,GAAG,QAAQ,CAC1G,GAAG;IAAE,MAAM,EAAE,oBAAoB,CAAA;CAAE,GACnC;IACD,WAAW,IAAI,IAAI,CAAA;IACnB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACtE,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IACtD,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACnD,UAAU,EAAE,kBAAkB,CAAA;CAC/B,CAuHA"}
@@ -0,0 +1,199 @@
1
+ import { assertShadowPolicy } from '../../adapter/kernel/runtime.js';
2
+ import { t } from '../../i18n.js';
3
+ import { modeDisplayName } from '../../sessionModes.js';
4
+ import { snapshotLiveSessionEvents } from '../compat/liveSession.js';
5
+ import { createModeActions } from './mode-actions.js';
6
+ import { createPermissionIdentity, foldPermissionPreset } from './mode-permission.js';
7
+ // Atom folds mirrored from mode-actions.ts: `createModeActions` does not
8
+ // export them, and the permission-aware derive below must reproduce its
9
+ // atom fallback exactly to stay the single source of the indicator.
10
+ const foldPlanActive = (events) => {
11
+ let active = false;
12
+ for (const event of events) {
13
+ if (event.type === 'plan/mode') {
14
+ active = event.data.active === true;
15
+ }
16
+ }
17
+ return active;
18
+ };
19
+ const foldSandboxMode = (events) => {
20
+ let mode;
21
+ for (const event of events) {
22
+ if (event.type === 'sandbox/mode') {
23
+ const value = event.data.mode;
24
+ if (typeof value === 'string')
25
+ mode = value;
26
+ }
27
+ }
28
+ return mode;
29
+ };
30
+ const foldApprovalPolicy = (events) => {
31
+ let policy;
32
+ for (const event of events) {
33
+ if (event.type === 'approval/policy') {
34
+ const value = event.data.policy;
35
+ if (typeof value === 'string')
36
+ policy = value;
37
+ }
38
+ }
39
+ return policy;
40
+ };
41
+ /**
42
+ * Durable-identity-first mode index. A durable permission identity is
43
+ * STRONGER than the derived sandbox/approval atoms: it keeps a runtime preset
44
+ * (including one that maps to the same atoms as a static mode) selected after
45
+ * resume or manual commands instead of snapping to a look-alike static mode.
46
+ * Permission-only dynamic specs declare no atoms and would wildcard-match ANY
47
+ * session state, so they can only be selected through the identity branch —
48
+ * never through the atom fallback.
49
+ */
50
+ function derivePermissionModeIndex(modes, events) {
51
+ const identity = foldPermissionPreset(events);
52
+ if (identity !== undefined) {
53
+ const permissionIndex = modes.findIndex(spec => spec.permission === identity
54
+ && (spec.plan === undefined || foldPlanActive(events) === spec.plan));
55
+ if (permissionIndex >= 0)
56
+ return permissionIndex;
57
+ }
58
+ const index = modes.findIndex(spec => spec.permission === undefined
59
+ && (spec.plan === undefined || foldPlanActive(events) === spec.plan)
60
+ && (spec.sandbox === undefined || foldSandboxMode(events) === spec.sandbox)
61
+ && (spec.approval === undefined || foldApprovalPolicy(events) === spec.approval));
62
+ return index >= 0 ? index : 0;
63
+ }
64
+ /**
65
+ * Permission-aware session-mode actions: main's mode transition (plan
66
+ * exclusivity, atom application, plan-exit restore) composed with the durable
67
+ * permission identity, on top of the refactored `createModeActions`.
68
+ *
69
+ * Construction is inert. The returned shape is a superset of
70
+ * `ReturnType<typeof createModeActions>`, so the composition root and
71
+ * `createBindingEvents` can consume it unchanged, plus
72
+ * `runPermissionPreset` for the public `ChannelUi` surface.
73
+ */
74
+ export function createPermissionModeActions(ctx, state, deps) {
75
+ const { owner, binding, sessionModes, roster, commandService, executeRegistryCommand, notify } = deps;
76
+ const base = createModeActions(ctx, state, {
77
+ owner,
78
+ runtime: deps.runtime,
79
+ binding,
80
+ sessionModes,
81
+ commandService,
82
+ executeRegistryCommand,
83
+ notify,
84
+ });
85
+ const permission = createPermissionIdentity(ctx, {
86
+ agent: () => binding.agent,
87
+ roster,
88
+ commandService,
89
+ executeRegistryCommand,
90
+ notify,
91
+ });
92
+ // An in-turn /plan off commits at pre-step, after the command has returned.
93
+ const explicitPlanExits = new WeakSet();
94
+ /** Re-derive the roster and the current mode. The roster rebuild rides on
95
+ * every refresh: a registry mount/unmount and a re-bind both land here. */
96
+ const refreshMode = () => {
97
+ roster.rebuild(binding.agent);
98
+ const index = derivePermissionModeIndex(sessionModes, snapshotLiveSessionEvents(binding.agent.session));
99
+ state.modeIndex = index;
100
+ state.mode = sessionModes[index];
101
+ };
102
+ /** Apply the configured atoms; an explicit exit owns its target mode.
103
+ * Permission identity is applied BEFORE plan and atom changes: dynamic
104
+ * presets use the official command path (or the service write fallback)
105
+ * and are confirmed by event/registry readback; the TUI never manufactures
106
+ * permission events. */
107
+ const applyMode = async (spec, capture = binding.capture()) => {
108
+ if (!owner.current() || !binding.isCurrent(capture))
109
+ return;
110
+ // This action writes durable session policy; the permission switch writes
111
+ // the same kind of durable identity, so it is under the same guard.
112
+ assertShadowPolicy('mutate', deps.runtime.mode);
113
+ const agent = capture.agent;
114
+ const session = agent.session;
115
+ const planMode = ctx.get('planMode');
116
+ const planActive = foldPlanActive(snapshotLiveSessionEvents(session));
117
+ const planChange = spec.plan !== undefined && (planMode?.get?.(agent).pending ?? planActive) !== spec.plan;
118
+ if (planActive && planMode?.get?.(agent).pending === undefined) {
119
+ explicitPlanExits.delete(session);
120
+ }
121
+ // Capture the pre-plan preset identity BEFORE any permission
122
+ // canonicalization can append replacement events.
123
+ if (planChange && spec.plan === true && !planActive) {
124
+ permission.rememberPrePlanIdentity(session);
125
+ }
126
+ if (planChange && spec.plan === false) {
127
+ // An explicit switch away from plan owns its target mode; the
128
+ // remembered pre-plan identity no longer applies.
129
+ explicitPlanExits.add(session);
130
+ permission.forgetPrePlanIdentity(session);
131
+ }
132
+ if (spec.permission !== undefined) {
133
+ if (!(await permission.applyPermissionIdentity(spec.permission)))
134
+ return;
135
+ }
136
+ else if (!(await permission.canonicalizeForMode(spec, session))) {
137
+ return;
138
+ }
139
+ if (!owner.current() || !binding.isCurrent(capture) || session !== agent.session)
140
+ return;
141
+ await base.applyMode(spec, capture);
142
+ if (!owner.current() || !binding.isCurrent(capture))
143
+ return;
144
+ const before = state.modeIndex;
145
+ refreshMode();
146
+ if (state.modeIndex !== before)
147
+ state.emit();
148
+ };
149
+ /** Shift+Tab: advance from the mode DERIVED from the session log (never a
150
+ * stored index), so manual `/plan` use can never desync the cycle. */
151
+ const cycleMode = async () => {
152
+ const capture = binding.capture();
153
+ if (!owner.current() || !binding.isCurrent(capture))
154
+ return;
155
+ const index = derivePermissionModeIndex(sessionModes, snapshotLiveSessionEvents(capture.agent.session));
156
+ await applyMode(sessionModes[(index + 1) % sessionModes.length], capture);
157
+ };
158
+ const onSessionEvent = (session, event) => {
159
+ const subject = session;
160
+ const sessionEvent = event;
161
+ base.onSessionEvent(subject, sessionEvent);
162
+ const type = sessionEvent.type;
163
+ if (type === 'permission/preset')
164
+ refreshMode();
165
+ if (type !== 'plan/mode' || sessionEvent.data.active !== false)
166
+ return;
167
+ const remembered = permission.prePlanPermissionIdentity(subject);
168
+ const explicit = explicitPlanExits.delete(subject);
169
+ permission.forgetPrePlanIdentity(subject);
170
+ if (explicit || remembered === undefined)
171
+ return;
172
+ if (subject !== binding.agent.session)
173
+ return;
174
+ // The atom restore is queued by the base actions in this same turn; the
175
+ // identity restore runs after it and re-seats the user on their own
176
+ // preset. Both write the same atom values, so the order cannot diverge.
177
+ queueMicrotask(() => {
178
+ if (subject !== binding.agent.session || foldPlanActive(snapshotLiveSessionEvents(subject)))
179
+ return;
180
+ void permission.applyPermissionIdentity(remembered).then((ok) => {
181
+ if (!ok || subject !== binding.agent.session)
182
+ return;
183
+ refreshMode();
184
+ notify(t('mode-switched', { name: modeDisplayName(state.mode) }));
185
+ state.emit();
186
+ }).catch(() => {
187
+ // Best-effort; failures already surfaced through applyPermissionIdentity.
188
+ });
189
+ });
190
+ };
191
+ return {
192
+ refreshMode,
193
+ cycleMode,
194
+ applyMode,
195
+ onSessionEvent,
196
+ runPermissionPreset: name => permission.runPermissionPreset(name),
197
+ permission,
198
+ };
199
+ }
@@ -0,0 +1,58 @@
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ import type { Agent } from '@deepseek-ai/dsh-agent';
3
+ import type { SessionEvent } from '@deepseek-ai/dsh-session';
4
+ import { type SessionModeSpec } from '../../sessionModes.js';
5
+ import type { PermissionModeRoster } from './mode-roster.js';
6
+ import type { ChannelState } from './types.js';
7
+ /** Last durable permission preset identity (`permission/preset`), if any.
8
+ * Registered by the harness permission preset service, never manufactured
9
+ * by the TUI. */
10
+ export declare function foldPermissionPreset(events: readonly SessionEvent[]): string | undefined;
11
+ /** Effective sandbox of a mode target: its explicit atom, else the folded
12
+ * session value, else the sandbox-policy service default. Unknown means the
13
+ * bundle is not safely mappable. */
14
+ export declare function effectiveSandboxForMode(ctx: Context, spec: SessionModeSpec, events: readonly SessionEvent[]): SessionModeSpec['sandbox'] | undefined;
15
+ /** Effective approval policy of a mode target: its explicit atom, else the
16
+ * folded session value, else the approval service configuration. */
17
+ export declare function effectiveApprovalForMode(ctx: Context, spec: SessionModeSpec, session: Agent['session']): SessionModeSpec['approval'] | undefined;
18
+ /** Durable permission identity operations for one channel. */
19
+ export interface PermissionIdentity {
20
+ /** Folded durable identity of one session log. */
21
+ foldPermissionPreset(session: Agent['session']): string | undefined;
22
+ /** Canonical preset for a mode's effective sandbox/approval bundle, when
23
+ * the deployment's runtime table (or the stock built-ins) has one. */
24
+ canonicalPermissionForMode(spec: SessionModeSpec, session: Agent['session']): string | undefined;
25
+ /** True when the durable identity OR a runtime registry readback reports
26
+ * the target. */
27
+ permissionTargetConfirmed(target: string, session: Agent['session']): boolean;
28
+ /** Poll fold/registry readback for the target within a grace window. */
29
+ confirmPermissionTarget(target: string, session: Agent['session'], timeoutMs: number): Promise<boolean>;
30
+ /** Official `/permission <preset>` switch (or the service write fallback),
31
+ * then confirmation. The TUI never fabricates permission events. */
32
+ applyPermissionIdentity(target: string): Promise<boolean>;
33
+ /** Static-mode guard: canonicalize a durable identity BEFORE atoms, and
34
+ * fail closed when no canonical preset exists for the target bundle. */
35
+ canonicalizeForMode(spec: SessionModeSpec, session: Agent['session']): Promise<boolean>;
36
+ /** Capture the preset the user is on before plan mode runs. */
37
+ rememberPrePlanIdentity(session: Agent['session']): void;
38
+ /** The captured pre-plan identity, if one is still pending. */
39
+ prePlanPermissionIdentity(session: Agent['session']): string | undefined;
40
+ forgetPrePlanIdentity(session: Agent['session']): void;
41
+ /** `ChannelUi.runPermissionPreset` (see the public Channel type). */
42
+ runPermissionPreset(name: string): Promise<boolean>;
43
+ }
44
+ /**
45
+ * Durable `permission/preset` identity: readback, canonical mapping, the
46
+ * official switch path, and the pre-plan identity memory. Construction is
47
+ * inert — it acquires nothing and subscribes to nothing.
48
+ */
49
+ export declare function createPermissionIdentity(ctx: Context, deps: {
50
+ agent: () => Agent;
51
+ roster: PermissionModeRoster;
52
+ commandService?: {
53
+ find(agent: Agent, name: string): unknown;
54
+ };
55
+ executeRegistryCommand(name: string, input: string): Promise<string | undefined>;
56
+ notify: ChannelState['notify'];
57
+ }): PermissionIdentity;
58
+ //# sourceMappingURL=mode-permission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode-permission.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/mode-permission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAI5D,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE7E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C;;kBAEkB;AAClB,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,GAAG,SAAS,CASxF;AAED;;qCAEqC;AACrC,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,SAAS,YAAY,EAAE,GAC9B,eAAe,CAAC,SAAS,CAAC,GAAG,SAAS,CAkBxC;AAED;qEACqE;AACrE,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,GACxB,eAAe,CAAC,UAAU,CAAC,GAAG,SAAS,CAoBzC;AAED,8DAA8D;AAC9D,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAAA;IACnE;2EACuE;IACvE,0BAA0B,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAAA;IAChG;sBACkB;IAClB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,OAAO,CAAA;IAC7E,wEAAwE;IACxE,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACvG;yEACqE;IACrE,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACzD;6EACyE;IACzE,mBAAmB,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACvF,+DAA+D;IAC/D,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAA;IACxD,+DAA+D;IAC/D,yBAAyB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAAA;IACxE,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAA;IACtD,qEAAqE;IACrE,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACpD;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,KAAK,CAAA;IAClB,MAAM,EAAE,oBAAoB,CAAA;IAC5B,cAAc,CAAC,EAAE;QAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;IAC9D,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAChF,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAA;CAC/B,GACA,kBAAkB,CAgLpB"}
@@ -0,0 +1,240 @@
1
+ import { isCommandCompletionToken } from '../../commands.js';
2
+ import { snapshotLiveSessionEvents } from '../compat/liveSession.js';
3
+ import { t } from '../../i18n.js';
4
+ import { modeDisplayName } from '../../sessionModes.js';
5
+ import { PERMISSION_PRESET_CUSTOM, permissionPresetRuntime } from './permissions.js';
6
+ /** Last durable permission preset identity (`permission/preset`), if any.
7
+ * Registered by the harness permission preset service, never manufactured
8
+ * by the TUI. */
9
+ export function foldPermissionPreset(events) {
10
+ let preset;
11
+ for (const event of events) {
12
+ if (event.type === 'permission/preset') {
13
+ const value = event.data.preset;
14
+ if (typeof value === 'string')
15
+ preset = value;
16
+ }
17
+ }
18
+ return preset;
19
+ }
20
+ /** Effective sandbox of a mode target: its explicit atom, else the folded
21
+ * session value, else the sandbox-policy service default. Unknown means the
22
+ * bundle is not safely mappable. */
23
+ export function effectiveSandboxForMode(ctx, spec, events) {
24
+ if (spec.sandbox !== undefined)
25
+ return spec.sandbox;
26
+ let folded;
27
+ for (const event of events) {
28
+ if (event.type === 'sandbox/mode') {
29
+ folded = event.data.mode;
30
+ }
31
+ }
32
+ if (folded === 'read-only' || folded === 'workspace-write' || folded === 'danger-full-access')
33
+ return folded;
34
+ try {
35
+ const sandbox = ctx.get('sandboxPolicy');
36
+ const value = sandbox?.defaultMode;
37
+ if (value === 'read-only' || value === 'workspace-write' || value === 'danger-full-access')
38
+ return value;
39
+ }
40
+ catch {
41
+ // Optional service; an unknown default means the target is not safely
42
+ // mappable.
43
+ }
44
+ return undefined;
45
+ }
46
+ /** Effective approval policy of a mode target: its explicit atom, else the
47
+ * folded session value, else the approval service configuration. */
48
+ export function effectiveApprovalForMode(ctx, spec, session) {
49
+ if (spec.approval !== undefined)
50
+ return spec.approval;
51
+ let folded;
52
+ for (const event of snapshotLiveSessionEvents(session)) {
53
+ if (event.type === 'approval/policy') {
54
+ folded = event.data.policy;
55
+ }
56
+ }
57
+ if (folded === 'ask' || folded === 'never')
58
+ return folded;
59
+ try {
60
+ const approval = ctx.get('approval');
61
+ const value = approval?.effectivePolicy?.(session) ?? approval?.config?.policy;
62
+ if (value === 'ask' || value === 'never')
63
+ return value;
64
+ }
65
+ catch {
66
+ // Optional service; an unknown default means the target is not safely
67
+ // mappable.
68
+ }
69
+ return undefined;
70
+ }
71
+ /**
72
+ * Durable `permission/preset` identity: readback, canonical mapping, the
73
+ * official switch path, and the pre-plan identity memory. Construction is
74
+ * inert — it acquires nothing and subscribes to nothing.
75
+ */
76
+ export function createPermissionIdentity(ctx, deps) {
77
+ /** Durable preset identity captured when plan mode starts; an implicit plan
78
+ * exit prefers returning to it over the canonical bundle of the restored
79
+ * atoms, so the user lands back on their own preset (e.g. a third-party
80
+ * `auto`), not on a look-alike static mode. */
81
+ const prePlanIdentity = new WeakMap();
82
+ const fold = (session) => foldPermissionPreset(snapshotLiveSessionEvents(session));
83
+ const canonicalForMode = (spec, session) => {
84
+ const sandbox = effectiveSandboxForMode(ctx, spec, snapshotLiveSessionEvents(session));
85
+ const approval = effectiveApprovalForMode(ctx, spec, session);
86
+ if (sandbox === undefined || approval === undefined)
87
+ return undefined;
88
+ return deps.roster.canonicalFor(sandbox, approval);
89
+ };
90
+ const targetConfirmed = (target, session) => {
91
+ if (fold(session) === target)
92
+ return true;
93
+ try {
94
+ const snapshot = deps.roster.readSnapshot(deps.agent());
95
+ if (snapshot !== undefined
96
+ && snapshot.current?.kind === 'preset'
97
+ && snapshot.current.value === target) {
98
+ return true;
99
+ }
100
+ }
101
+ catch {
102
+ // The registry may be unmounted mid-switch; the fold check above
103
+ // remains authoritative for the durable identity.
104
+ }
105
+ return false;
106
+ };
107
+ const confirmTarget = async (target, session, timeoutMs) => {
108
+ const deadline = Date.now() + timeoutMs;
109
+ while (Date.now() < deadline) {
110
+ if (session !== deps.agent().session)
111
+ return false;
112
+ if (targetConfirmed(target, session))
113
+ return true;
114
+ await new Promise(resolve => setTimeout(resolve, 50));
115
+ }
116
+ ctx.logger.warn(`dsh-tui: permission mode "${target}" was not confirmed by permissionPresets.current()/permission/preset`);
117
+ deps.notify(t('mode-permission-unconfirmed'), { color: 'warning' });
118
+ return false;
119
+ };
120
+ const apply = async (target) => {
121
+ if (!isCommandCompletionToken(target)) {
122
+ ctx.logger.warn(`dsh-tui: permission mode "${target}" skipped because its identity is not a safe command token`);
123
+ return false;
124
+ }
125
+ const agent = deps.agent();
126
+ const session = agent.session;
127
+ if (targetConfirmed(target, session))
128
+ return true;
129
+ let registered = false;
130
+ try {
131
+ registered = deps.commandService?.find(agent, 'permission') !== undefined;
132
+ }
133
+ catch {
134
+ registered = false;
135
+ }
136
+ if (!registered) {
137
+ // The same handler the official command drives; the TUI never appends
138
+ // a permission event itself.
139
+ let service;
140
+ try {
141
+ service = ctx.get('permissionPresets');
142
+ }
143
+ catch {
144
+ service = undefined;
145
+ }
146
+ const runtime = permissionPresetRuntime(service);
147
+ if (runtime !== undefined && typeof runtime.set === 'function') {
148
+ try {
149
+ runtime.set(session, target);
150
+ }
151
+ catch (error) {
152
+ ctx.logger.warn(`dsh-tui: permission mode "${target}" could not be applied by the permissionPresets service: ${error instanceof Error ? error.message : String(error)}`);
153
+ deps.notify(t('mode-permission-invoke-failed'), { color: 'warning' });
154
+ return false;
155
+ }
156
+ return await confirmTarget(target, session, 2000);
157
+ }
158
+ ctx.logger.warn(`dsh-tui: permission mode "${target}" skipped because /permission is not registered`);
159
+ deps.notify(t('mode-permission-unregistered'), { color: 'warning' });
160
+ return false;
161
+ }
162
+ const result = await deps.executeRegistryCommand('permission', ` ${target}`);
163
+ if (session !== deps.agent().session)
164
+ return false;
165
+ if (result === undefined) {
166
+ ctx.logger.warn(`dsh-tui: permission mode "${target}" could not invoke /permission`);
167
+ deps.notify(t('mode-permission-invoke-failed'), { color: 'warning' });
168
+ return false;
169
+ }
170
+ let availability = 'unavailable';
171
+ try {
172
+ availability = deps.roster.readSnapshot(deps.agent()) === undefined ? 'unavailable' : 'runtime';
173
+ }
174
+ catch {
175
+ // keep the default (fail-closed short grace)
176
+ }
177
+ return await confirmTarget(target, session, availability === 'runtime' ? 2000 : 300);
178
+ };
179
+ const canonicalizeForMode = async (spec, session) => {
180
+ // Static modes own a canonical permission identity. Leaving any OTHER
181
+ // durable identity behind (third-party preset OR a stale canonical, e.g.
182
+ // plan left `read-only` while atoms were restored to workspace-write)
183
+ // would make a static mode appear selected only because its
184
+ // sandbox/approval bundle happens to match, and would let the durable
185
+ // identity lie about the real policy.
186
+ const current = fold(session);
187
+ if (current === undefined || current === PERMISSION_PRESET_CUSTOM)
188
+ return true;
189
+ const canonical = canonicalForMode(spec, session);
190
+ if (canonical === undefined) {
191
+ ctx.logger.warn(`dsh-tui: static mode "${spec.id}" cannot safely clear permission identity "${current}"`);
192
+ deps.notify(t('mode-permission-no-canonical', { name: modeDisplayName(spec) }), { color: 'warning' });
193
+ return false;
194
+ }
195
+ if (canonical === current)
196
+ return true;
197
+ return apply(canonical);
198
+ };
199
+ const rememberPrePlanIdentity = (session) => {
200
+ // The runtime registry must still recognize the identity as current: a
201
+ // drifted knob combination reads back as custom and must fall back to the
202
+ // canonical bundle of the restored atoms.
203
+ const identity = fold(session);
204
+ if (identity === undefined || identity === PERMISSION_PRESET_CUSTOM) {
205
+ prePlanIdentity.delete(session);
206
+ return;
207
+ }
208
+ try {
209
+ const snapshot = deps.roster.readSnapshot(deps.agent());
210
+ if (snapshot === undefined) {
211
+ prePlanIdentity.delete(session);
212
+ return;
213
+ }
214
+ if (snapshot.current?.kind !== 'preset' || snapshot.current.value !== identity) {
215
+ prePlanIdentity.delete(session);
216
+ return;
217
+ }
218
+ if (!snapshot.options.some(option => option.value === identity)) {
219
+ prePlanIdentity.delete(session);
220
+ return;
221
+ }
222
+ prePlanIdentity.set(session, identity);
223
+ }
224
+ catch {
225
+ prePlanIdentity.delete(session);
226
+ }
227
+ };
228
+ return {
229
+ foldPermissionPreset: fold,
230
+ canonicalPermissionForMode: canonicalForMode,
231
+ permissionTargetConfirmed: (target, session) => targetConfirmed(target, session),
232
+ confirmPermissionTarget: (target, session, timeoutMs) => confirmTarget(target, session, timeoutMs),
233
+ applyPermissionIdentity: apply,
234
+ canonicalizeForMode,
235
+ rememberPrePlanIdentity,
236
+ prePlanPermissionIdentity: session => prePlanIdentity.get(session),
237
+ forgetPrePlanIdentity: session => { prePlanIdentity.delete(session); },
238
+ runPermissionPreset: name => apply(name.trim()),
239
+ };
240
+ }
@@ -0,0 +1,51 @@
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ import type { Agent } from '@deepseek-ai/dsh-agent';
3
+ import { type SessionModeSpec } from '../../sessionModes.js';
4
+ import { type PermissionPresetBundle } from './permissions.js';
5
+ import type { PermissionPresetSnapshot } from './types.js';
6
+ /** Durable identities the configured modes already own; a runtime preset with
7
+ * one of them is the same switch by another route and never duplicated. */
8
+ export declare function configuredPermissionIds(modes: readonly SessionModeSpec[]): ReadonlySet<string>;
9
+ /** Canonical targets of the STATIC modes. On a stock table that is the three
10
+ * built-in names; on renamed tables the deployment's own names for the same
11
+ * bundles. They are never dynamic entries: the indicator would otherwise
12
+ * snap to a dynamic look-alike instead of the static mode. */
13
+ export declare function staticCanonicalTargets(modes: readonly SessionModeSpec[], bundles: readonly PermissionPresetBundle[]): ReadonlySet<string>;
14
+ /** The mounted `permissionPresets` registry as a runtime snapshot, or
15
+ * undefined when no runtime table is mounted (legacy/unavailable tables are
16
+ * not a roster). Reads are fail-closed: a throwing registry is no roster. */
17
+ export declare function readRuntimePermissionSnapshot(ctx: Context, target: Agent): PermissionPresetSnapshot | undefined;
18
+ /** Warn at most once per (agent, identity, reason) — a registry that keeps
19
+ * re-listing an unusable preset must not flood the log on every rebuild. */
20
+ export declare function warnOnceForPermissionEntry(warned: Set<string>, warn: (message: string) => void, target: Agent, value: string, reason: string): void;
21
+ /** The Shift+Tab roster: configured modes first, runtime presets appended. */
22
+ export interface PermissionModeRoster {
23
+ /** LIVE roster. The array identity is stable and mutated in place, so a
24
+ * consumer that captured it at construction always sees the latest
25
+ * roster after {@link PermissionModeRoster.rebuild}. */
26
+ readonly modes: readonly SessionModeSpec[];
27
+ /** Re-read the runtime preset registry for `target` and re-derive. */
28
+ rebuild(target: Agent): void;
29
+ /** Runtime snapshot for `target`, undefined when no runtime table is mounted. */
30
+ readSnapshot(target: Agent): PermissionPresetSnapshot | undefined;
31
+ /** Canonical preset name for one effective sandbox/approval bundle. */
32
+ canonicalFor(sandbox: NonNullable<SessionModeSpec['sandbox']>, approval: NonNullable<SessionModeSpec['approval']>): string | undefined;
33
+ }
34
+ /**
35
+ * Dynamic session-mode roster (main's `sessionModes` / `rebuildSessionModes`).
36
+ *
37
+ * Runtime permission presets are appended AFTER the configured/default modes
38
+ * whenever the SERVICE snapshot is usable — no dependency on the external
39
+ * `/permission` command reaching this agent's registry, because switching
40
+ * falls back to the service's own write path when the command row is absent.
41
+ * Registry order is authoritative on first observation; later rebuilds
42
+ * preserve the relative order of identities already seen so unrelated
43
+ * command-registry churn cannot reshuffle Shift+Tab. Removed identities drop
44
+ * out and a later re-add is treated as new.
45
+ */
46
+ export declare function createPermissionModeRoster(ctx: Context, deps: {
47
+ configuredModes: readonly SessionModeSpec[];
48
+ agent: () => Agent;
49
+ warn?: (message: string) => void;
50
+ }): PermissionModeRoster;
51
+ //# sourceMappingURL=mode-roster.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode-roster.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/mode-roster.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAEnD,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAA0B,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAElF;4EAC4E;AAC5E,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,CAE9F;AAED;;;+DAG+D;AAC/D,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,eAAe,EAAE,EACjC,OAAO,EAAE,SAAS,sBAAsB,EAAE,GACzC,WAAW,CAAC,MAAM,CAAC,CAQrB;AAED;;8EAE8E;AAC9E,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,KAAK,GACZ,wBAAwB,GAAG,SAAS,CAUtC;AAED;6EAC6E;AAC7E,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EACnB,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAC/B,MAAM,EAAE,KAAK,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,IAAI,CAMN;AAED,8EAA8E;AAC9E,MAAM,WAAW,oBAAoB;IACnC;;6DAEyD;IACzD,QAAQ,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,CAAA;IAC1C,sEAAsE;IACtE,OAAO,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,CAAA;IAC5B,iFAAiF;IACjF,YAAY,CAAC,MAAM,EAAE,KAAK,GAAG,wBAAwB,GAAG,SAAS,CAAA;IACjE,uEAAuE;IACvE,YAAY,CACV,OAAO,EAAE,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,EAChD,QAAQ,EAAE,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,GACjD,MAAM,GAAG,SAAS,CAAA;CACtB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE;IACJ,eAAe,EAAE,SAAS,eAAe,EAAE,CAAA;IAC3C,KAAK,EAAE,MAAM,KAAK,CAAA;IAClB,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACjC,GACA,oBAAoB,CAgEtB"}