@deepseek-harness-tui/dsh-tui 0.7.3 → 0.8.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 (371) hide show
  1. package/README.md +15 -7
  2. package/bin/dsh-tui.js +19 -3
  3. package/cordis.patch.yml +43 -11
  4. package/cordis.yml +20 -1
  5. package/ecosystem-spec/registry/contracts/decision-events-v1alpha1.json +13 -0
  6. package/ecosystem-spec/registry/host-descriptor.tui.example.json +56 -0
  7. package/ecosystem-spec/registry/permissions-0.1.json +13 -0
  8. package/ecosystem-spec/registry/registry-0.15.json +57 -0
  9. package/ecosystem-spec/schemas/conformance-claim.schema.json +15 -0
  10. package/ecosystem-spec/schemas/effect-ledger-record.schema.json +16 -0
  11. package/ecosystem-spec/schemas/host-descriptor.schema.json +26 -0
  12. package/lib/types/cc/figures.d.ts +4 -0
  13. package/lib/types/cc/figures.d.ts.map +1 -1
  14. package/lib/types/cc/figures.js +4 -0
  15. package/lib/types/commands.d.ts.map +1 -1
  16. package/lib/types/commands.js +4 -1
  17. package/lib/types/components/ExtensionDialog.d.ts +40 -0
  18. package/lib/types/components/ExtensionDialog.d.ts.map +1 -0
  19. package/lib/types/components/ExtensionDialog.js +210 -0
  20. package/lib/types/components/HelpMenu.js +1 -1
  21. package/lib/types/components/LoadedContextPanel.d.ts +5 -10
  22. package/lib/types/components/LoadedContextPanel.d.ts.map +1 -1
  23. package/lib/types/components/LoadedContextPanel.js +7 -18
  24. package/lib/types/components/LogoV2.d.ts.map +1 -1
  25. package/lib/types/components/LogoV2.js +1 -2
  26. package/lib/types/components/MessageList.d.ts +3 -1
  27. package/lib/types/components/MessageList.d.ts.map +1 -1
  28. package/lib/types/components/MessageList.js +29 -5
  29. package/lib/types/components/PluginSceneBoundary.d.ts +31 -0
  30. package/lib/types/components/PluginSceneBoundary.d.ts.map +1 -0
  31. package/lib/types/components/PluginSceneBoundary.js +29 -0
  32. package/lib/types/components/RewindPicker.d.ts +13 -1
  33. package/lib/types/components/RewindPicker.d.ts.map +1 -1
  34. package/lib/types/components/RewindPicker.js +26 -2
  35. package/lib/types/components/SkillsPicker.d.ts +18 -0
  36. package/lib/types/components/SkillsPicker.d.ts.map +1 -0
  37. package/lib/types/components/SkillsPicker.js +50 -0
  38. package/lib/types/components/SplitDiffView.d.ts +28 -0
  39. package/lib/types/components/SplitDiffView.d.ts.map +1 -0
  40. package/lib/types/components/SplitDiffView.js +417 -0
  41. package/lib/types/components/ToolUseLoader.d.ts +8 -3
  42. package/lib/types/components/ToolUseLoader.d.ts.map +1 -1
  43. package/lib/types/components/ToolUseLoader.js +43 -9
  44. package/lib/types/components/messages/AssistantToolUseMessage.d.ts +3 -1
  45. package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -1
  46. package/lib/types/components/messages/AssistantToolUseMessage.js +17 -7
  47. package/lib/types/dsh-adapter/channel.d.ts +98 -7
  48. package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
  49. package/lib/types/dsh-adapter/channel.js +623 -26
  50. package/lib/types/dsh-adapter/command-attribution.d.ts +51 -0
  51. package/lib/types/dsh-adapter/command-attribution.d.ts.map +1 -0
  52. package/lib/types/dsh-adapter/command-attribution.js +93 -0
  53. package/lib/types/dsh-adapter/command-errors.d.ts +42 -0
  54. package/lib/types/dsh-adapter/command-errors.d.ts.map +1 -0
  55. package/lib/types/dsh-adapter/command-errors.js +63 -0
  56. package/lib/types/dsh-adapter/component-identity.d.ts +28 -0
  57. package/lib/types/dsh-adapter/component-identity.d.ts.map +1 -0
  58. package/lib/types/dsh-adapter/component-identity.js +108 -0
  59. package/lib/types/dsh-adapter/contract.d.ts +2 -2
  60. package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
  61. package/lib/types/dsh-adapter/contract.js +3 -2
  62. package/lib/types/dsh-adapter/decision-guard.d.ts +84 -0
  63. package/lib/types/dsh-adapter/decision-guard.d.ts.map +1 -0
  64. package/lib/types/dsh-adapter/decision-guard.js +354 -0
  65. package/lib/types/dsh-adapter/dialogs.d.ts +146 -0
  66. package/lib/types/dsh-adapter/dialogs.d.ts.map +1 -0
  67. package/lib/types/dsh-adapter/dialogs.js +262 -0
  68. package/lib/types/dsh-adapter/effect-ledger.d.ts +99 -0
  69. package/lib/types/dsh-adapter/effect-ledger.d.ts.map +1 -0
  70. package/lib/types/dsh-adapter/effect-ledger.js +231 -0
  71. package/lib/types/dsh-adapter/extension-events.d.ts +193 -0
  72. package/lib/types/dsh-adapter/extension-events.d.ts.map +1 -0
  73. package/lib/types/dsh-adapter/extension-events.js +169 -0
  74. package/lib/types/dsh-adapter/extensions.d.ts +32 -0
  75. package/lib/types/dsh-adapter/extensions.d.ts.map +1 -0
  76. package/lib/types/dsh-adapter/extensions.js +42 -0
  77. package/lib/types/dsh-adapter/grants.d.ts +25 -0
  78. package/lib/types/dsh-adapter/grants.d.ts.map +1 -0
  79. package/lib/types/dsh-adapter/grants.js +184 -0
  80. package/lib/types/dsh-adapter/host-descriptor.d.ts +24 -0
  81. package/lib/types/dsh-adapter/host-descriptor.d.ts.map +1 -0
  82. package/lib/types/dsh-adapter/host-descriptor.js +146 -0
  83. package/lib/types/dsh-adapter/index.d.ts +4 -0
  84. package/lib/types/dsh-adapter/index.d.ts.map +1 -1
  85. package/lib/types/dsh-adapter/index.js +1 -0
  86. package/lib/types/dsh-adapter/message-observer.d.ts +178 -0
  87. package/lib/types/dsh-adapter/message-observer.d.ts.map +1 -0
  88. package/lib/types/dsh-adapter/message-observer.js +509 -0
  89. package/lib/types/dsh-adapter/plugin-host.d.ts +103 -0
  90. package/lib/types/dsh-adapter/plugin-host.d.ts.map +1 -0
  91. package/lib/types/dsh-adapter/plugin-host.js +270 -0
  92. package/lib/types/dsh-adapter/plugin-storage.d.ts +113 -0
  93. package/lib/types/dsh-adapter/plugin-storage.d.ts.map +1 -0
  94. package/lib/types/dsh-adapter/plugin-storage.js +385 -0
  95. package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
  96. package/lib/types/dsh-adapter/plugin.js +106 -1
  97. package/lib/types/dsh-adapter/plugins-info.d.ts +43 -0
  98. package/lib/types/dsh-adapter/plugins-info.d.ts.map +1 -0
  99. package/lib/types/dsh-adapter/plugins-info.js +276 -0
  100. package/lib/types/dsh-adapter/promptDebug.d.ts +10 -0
  101. package/lib/types/dsh-adapter/promptDebug.d.ts.map +1 -0
  102. package/lib/types/dsh-adapter/promptDebug.js +148 -0
  103. package/lib/types/dsh-adapter/renderers.d.ts +65 -0
  104. package/lib/types/dsh-adapter/renderers.d.ts.map +1 -0
  105. package/lib/types/dsh-adapter/renderers.js +138 -0
  106. package/lib/types/dsh-adapter/sanitize.d.ts +36 -0
  107. package/lib/types/dsh-adapter/sanitize.d.ts.map +1 -0
  108. package/lib/types/dsh-adapter/sanitize.js +65 -0
  109. package/lib/types/dsh-adapter/scenes.d.ts +81 -0
  110. package/lib/types/dsh-adapter/scenes.d.ts.map +1 -0
  111. package/lib/types/dsh-adapter/scenes.js +93 -0
  112. package/lib/types/dsh-adapter/settings-sections.d.ts +116 -0
  113. package/lib/types/dsh-adapter/settings-sections.d.ts.map +1 -0
  114. package/lib/types/dsh-adapter/settings-sections.js +63 -0
  115. package/lib/types/dsh-adapter/settingsEditor.d.ts +128 -0
  116. package/lib/types/dsh-adapter/settingsEditor.d.ts.map +1 -0
  117. package/lib/types/dsh-adapter/settingsEditor.js +244 -0
  118. package/lib/types/dsh-adapter/shortcuts.d.ts +109 -0
  119. package/lib/types/dsh-adapter/shortcuts.d.ts.map +1 -0
  120. package/lib/types/dsh-adapter/shortcuts.js +268 -0
  121. package/lib/types/dsh-adapter/status.d.ts +75 -0
  122. package/lib/types/dsh-adapter/status.d.ts.map +1 -0
  123. package/lib/types/dsh-adapter/status.js +168 -0
  124. package/lib/types/extensions.d.ts +8 -0
  125. package/lib/types/extensions.d.ts.map +1 -0
  126. package/lib/types/extensions.js +15 -0
  127. package/lib/types/i18n.d.ts +299 -26
  128. package/lib/types/i18n.d.ts.map +1 -1
  129. package/lib/types/i18n.js +89 -8
  130. package/lib/types/ink/ink.d.ts +11 -0
  131. package/lib/types/ink/ink.d.ts.map +1 -1
  132. package/lib/types/ink/ink.js +33 -0
  133. package/lib/types/ink/log-update.d.ts.map +1 -1
  134. package/lib/types/ink/log-update.js +101 -51
  135. package/lib/types/ink/output.d.ts +7 -0
  136. package/lib/types/ink/output.d.ts.map +1 -1
  137. package/lib/types/ink/output.js +125 -4
  138. package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
  139. package/lib/types/ink/render-node-to-output.js +14 -6
  140. package/lib/types/ink/terminal.d.ts.map +1 -1
  141. package/lib/types/ink/terminal.js +18 -6
  142. package/lib/types/jsx-runtime.d.ts +2 -0
  143. package/lib/types/jsx-runtime.d.ts.map +1 -0
  144. package/lib/types/jsx-runtime.js +13 -0
  145. package/lib/types/modelRoute.d.ts +10 -2
  146. package/lib/types/modelRoute.d.ts.map +1 -1
  147. package/lib/types/modelRoute.js +33 -4
  148. package/lib/types/plugin-host.d.ts +13 -0
  149. package/lib/types/plugin-host.d.ts.map +1 -0
  150. package/lib/types/plugin-host.js +17 -0
  151. package/lib/types/plugin-spec/negotiate.d.ts +11 -0
  152. package/lib/types/plugin-spec/negotiate.d.ts.map +1 -0
  153. package/lib/types/plugin-spec/negotiate.js +97 -0
  154. package/lib/types/plugin-spec/permission-scope.d.ts +32 -0
  155. package/lib/types/plugin-spec/permission-scope.d.ts.map +1 -0
  156. package/lib/types/plugin-spec/permission-scope.js +90 -0
  157. package/lib/types/plugin-spec/registry.d.ts +23 -0
  158. package/lib/types/plugin-spec/registry.d.ts.map +1 -0
  159. package/lib/types/plugin-spec/registry.js +157 -0
  160. package/lib/types/plugin-spec/schema-check.d.ts +17 -0
  161. package/lib/types/plugin-spec/schema-check.d.ts.map +1 -0
  162. package/lib/types/plugin-spec/schema-check.js +165 -0
  163. package/lib/types/plugin-spec/tui-extension.d.ts +16 -0
  164. package/lib/types/plugin-spec/tui-extension.d.ts.map +1 -0
  165. package/lib/types/plugin-spec/tui-extension.js +77 -0
  166. package/lib/types/plugin-spec/types.d.ts +114 -0
  167. package/lib/types/plugin-spec/types.d.ts.map +1 -0
  168. package/lib/types/plugin-spec/types.js +10 -0
  169. package/lib/types/plugin-spec/validate.d.ts +21 -0
  170. package/lib/types/plugin-spec/validate.d.ts.map +1 -0
  171. package/lib/types/plugin-spec/validate.js +119 -0
  172. package/lib/types/scenes.d.ts +3 -0
  173. package/lib/types/scenes.d.ts.map +1 -0
  174. package/lib/types/scenes.js +4 -0
  175. package/lib/types/screens/Chat.d.ts +14 -1
  176. package/lib/types/screens/Chat.d.ts.map +1 -1
  177. package/lib/types/screens/Chat.js +247 -48
  178. package/lib/types/screens/Settings.d.ts +20 -0
  179. package/lib/types/screens/Settings.d.ts.map +1 -0
  180. package/lib/types/screens/Settings.js +333 -0
  181. package/lib/types/screens/StatusLine.js +1 -1
  182. package/lib/types/settings-sections.d.ts +3 -0
  183. package/lib/types/settings-sections.d.ts.map +1 -0
  184. package/lib/types/settings-sections.js +4 -0
  185. package/lib/types/theme.d.ts +17 -0
  186. package/lib/types/theme.d.ts.map +1 -1
  187. package/lib/types/theme.js +51 -0
  188. package/lib/types/update.d.ts +20 -0
  189. package/lib/types/update.d.ts.map +1 -1
  190. package/lib/types/update.js +54 -7
  191. package/lib/types/utils/loaded-context.d.ts +8 -3
  192. package/lib/types/utils/loaded-context.d.ts.map +1 -1
  193. package/lib/types/utils/loaded-context.js +39 -3
  194. package/lib/types/utils/modifiers.d.ts.map +1 -1
  195. package/lib/types/utils/modifiers.js +3 -2
  196. package/lib/types/working-activity.d.ts +12 -0
  197. package/lib/types/working-activity.d.ts.map +1 -1
  198. package/lib/types/working-activity.js +13 -0
  199. package/node_modules/@dsh-std/command/LICENSE +21 -0
  200. package/node_modules/@dsh-std/command/README.md +26 -0
  201. package/node_modules/@dsh-std/command/README.zh.md +28 -0
  202. package/node_modules/@dsh-std/command/lib/index.d.ts +144 -0
  203. package/node_modules/@dsh-std/command/lib/index.d.ts.map +1 -0
  204. package/node_modules/@dsh-std/command/lib/index.js +252 -0
  205. package/node_modules/@dsh-std/command/lib/index.js.map +1 -0
  206. package/node_modules/@dsh-std/command/package.json +22 -0
  207. package/node_modules/@dsh-std/connection/LICENSE +21 -0
  208. package/node_modules/@dsh-std/connection/README.md +42 -0
  209. package/node_modules/@dsh-std/connection/README.zh.md +42 -0
  210. package/node_modules/@dsh-std/connection/lib/connection-CdGcSQnu.d.ts +125 -0
  211. package/node_modules/@dsh-std/connection/lib/connection-CdGcSQnu.d.ts.map +1 -0
  212. package/node_modules/@dsh-std/connection/lib/index.d.ts +89 -0
  213. package/node_modules/@dsh-std/connection/lib/index.d.ts.map +1 -0
  214. package/node_modules/@dsh-std/connection/lib/index.js +158 -0
  215. package/node_modules/@dsh-std/connection/lib/index.js.map +1 -0
  216. package/node_modules/@dsh-std/connection/lib/memory.d.ts +24 -0
  217. package/node_modules/@dsh-std/connection/lib/memory.d.ts.map +1 -0
  218. package/node_modules/@dsh-std/connection/lib/memory.js +257 -0
  219. package/node_modules/@dsh-std/connection/lib/memory.js.map +1 -0
  220. package/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js +226 -0
  221. package/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js.map +1 -0
  222. package/node_modules/@dsh-std/connection/package.json +20 -0
  223. package/node_modules/@dsh-std/core/LICENSE +21 -0
  224. package/node_modules/@dsh-std/core/README.md +13 -0
  225. package/node_modules/@dsh-std/core/README.zh.md +13 -0
  226. package/node_modules/@dsh-std/core/lib/index.d.ts +112 -0
  227. package/node_modules/@dsh-std/core/lib/index.d.ts.map +1 -0
  228. package/node_modules/@dsh-std/core/lib/index.js +424 -0
  229. package/node_modules/@dsh-std/core/lib/index.js.map +1 -0
  230. package/node_modules/@dsh-std/core/package.json +21 -0
  231. package/node_modules/@dsh-std/manifest/LICENSE +21 -0
  232. package/node_modules/@dsh-std/manifest/README.md +5 -0
  233. package/node_modules/@dsh-std/manifest/README.zh.md +5 -0
  234. package/node_modules/@dsh-std/manifest/lib/index.d.ts +182 -0
  235. package/node_modules/@dsh-std/manifest/lib/index.d.ts.map +1 -0
  236. package/node_modules/@dsh-std/manifest/lib/index.js +625 -0
  237. package/node_modules/@dsh-std/manifest/lib/index.js.map +1 -0
  238. package/node_modules/@dsh-std/manifest/package.json +20 -0
  239. package/node_modules/@dsh-std/manifest/schema/dsh-plugin-0.15.schema.json +144 -0
  240. package/node_modules/@dsh-std/messages/LICENSE +21 -0
  241. package/node_modules/@dsh-std/messages/README.md +5 -0
  242. package/node_modules/@dsh-std/messages/README.zh.md +7 -0
  243. package/node_modules/@dsh-std/messages/lib/index.d.ts +50 -0
  244. package/node_modules/@dsh-std/messages/lib/index.d.ts.map +1 -0
  245. package/node_modules/@dsh-std/messages/lib/index.js +151 -0
  246. package/node_modules/@dsh-std/messages/lib/index.js.map +1 -0
  247. package/node_modules/@dsh-std/messages/package.json +20 -0
  248. package/node_modules/@dsh-std/messages/schema/message-observer-envelope-0.15.schema.json +54 -0
  249. package/node_modules/@dsh-std/presentation/LICENSE +21 -0
  250. package/node_modules/@dsh-std/presentation/README.md +26 -0
  251. package/node_modules/@dsh-std/presentation/README.zh.md +28 -0
  252. package/node_modules/@dsh-std/presentation/lib/index.d.ts +219 -0
  253. package/node_modules/@dsh-std/presentation/lib/index.d.ts.map +1 -0
  254. package/node_modules/@dsh-std/presentation/lib/index.js +547 -0
  255. package/node_modules/@dsh-std/presentation/lib/index.js.map +1 -0
  256. package/node_modules/@dsh-std/presentation/lib/interaction.d.ts +2 -0
  257. package/node_modules/@dsh-std/presentation/lib/interaction.js +2 -0
  258. package/node_modules/@dsh-std/presentation/lib/operations.d.ts +2 -0
  259. package/node_modules/@dsh-std/presentation/lib/operations.js +2 -0
  260. package/node_modules/@dsh-std/presentation/package.json +21 -0
  261. package/node_modules/@dsh-std/storage/LICENSE +21 -0
  262. package/node_modules/@dsh-std/storage/README.md +5 -0
  263. package/node_modules/@dsh-std/storage/README.zh.md +7 -0
  264. package/node_modules/@dsh-std/storage/lib/index.d.ts +48 -0
  265. package/node_modules/@dsh-std/storage/lib/index.d.ts.map +1 -0
  266. package/node_modules/@dsh-std/storage/lib/index.js +104 -0
  267. package/node_modules/@dsh-std/storage/lib/index.js.map +1 -0
  268. package/node_modules/@dsh-std/storage/package.json +20 -0
  269. package/node_modules/@dsh-std/storage/schema/local-storage-0.15.schema.json +56 -0
  270. package/package.json +118 -67
  271. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/LICENSE +21 -0
  272. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/README.md +42 -0
  273. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/README.zh.md +42 -0
  274. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/connection-CdGcSQnu.d.ts +125 -0
  275. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/connection-CdGcSQnu.d.ts.map +1 -0
  276. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/index.d.ts +89 -0
  277. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/index.d.ts.map +1 -0
  278. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/index.js +158 -0
  279. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/index.js.map +1 -0
  280. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/memory.d.ts +24 -0
  281. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/memory.d.ts.map +1 -0
  282. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/memory.js +257 -0
  283. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/memory.js.map +1 -0
  284. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js +226 -0
  285. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js.map +1 -0
  286. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/package.json +20 -0
  287. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/LICENSE +21 -0
  288. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/README.md +13 -0
  289. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/README.zh.md +13 -0
  290. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/lib/index.d.ts +112 -0
  291. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/lib/index.d.ts.map +1 -0
  292. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/lib/index.js +424 -0
  293. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/lib/index.js.map +1 -0
  294. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/package.json +21 -0
  295. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/LICENSE +21 -0
  296. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/README.md +5 -0
  297. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/README.zh.md +5 -0
  298. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/lib/index.d.ts +182 -0
  299. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/lib/index.d.ts.map +1 -0
  300. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/lib/index.js +625 -0
  301. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/lib/index.js.map +1 -0
  302. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/package.json +20 -0
  303. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/schema/dsh-plugin-0.15.schema.json +144 -0
  304. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/LICENSE +21 -0
  305. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/README.md +26 -0
  306. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/README.zh.md +28 -0
  307. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/index.d.ts +219 -0
  308. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/index.d.ts.map +1 -0
  309. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/index.js +547 -0
  310. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/index.js.map +1 -0
  311. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/interaction.d.ts +2 -0
  312. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/interaction.js +2 -0
  313. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/operations.d.ts +2 -0
  314. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/operations.js +2 -0
  315. package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/package.json +21 -0
  316. package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/LICENSE +21 -0
  317. package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/README.md +13 -0
  318. package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/README.zh.md +13 -0
  319. package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/lib/index.d.ts +112 -0
  320. package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/lib/index.d.ts.map +1 -0
  321. package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/lib/index.js +424 -0
  322. package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/lib/index.js.map +1 -0
  323. package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/package.json +21 -0
  324. package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/LICENSE +21 -0
  325. package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/README.md +13 -0
  326. package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/README.zh.md +13 -0
  327. package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/lib/index.d.ts +112 -0
  328. package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/lib/index.d.ts.map +1 -0
  329. package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/lib/index.js +424 -0
  330. package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/lib/index.js.map +1 -0
  331. package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/package.json +21 -0
  332. package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/LICENSE +21 -0
  333. package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/README.md +13 -0
  334. package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/README.zh.md +13 -0
  335. package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/lib/index.d.ts +112 -0
  336. package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/lib/index.d.ts.map +1 -0
  337. package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/lib/index.js +424 -0
  338. package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/lib/index.js.map +1 -0
  339. package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/package.json +21 -0
  340. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/LICENSE +21 -0
  341. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/README.md +42 -0
  342. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/README.zh.md +42 -0
  343. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/connection-CdGcSQnu.d.ts +125 -0
  344. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/connection-CdGcSQnu.d.ts.map +1 -0
  345. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/index.d.ts +89 -0
  346. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/index.d.ts.map +1 -0
  347. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/index.js +158 -0
  348. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/index.js.map +1 -0
  349. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/memory.d.ts +24 -0
  350. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/memory.d.ts.map +1 -0
  351. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/memory.js +257 -0
  352. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/memory.js.map +1 -0
  353. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js +226 -0
  354. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js.map +1 -0
  355. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/package.json +20 -0
  356. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/LICENSE +21 -0
  357. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/README.md +13 -0
  358. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/README.zh.md +13 -0
  359. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/lib/index.d.ts +112 -0
  360. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/lib/index.d.ts.map +1 -0
  361. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/lib/index.js +424 -0
  362. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/lib/index.js.map +1 -0
  363. package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/package.json +21 -0
  364. package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/LICENSE +21 -0
  365. package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/README.md +13 -0
  366. package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/README.zh.md +13 -0
  367. package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/lib/index.d.ts +112 -0
  368. package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/lib/index.d.ts.map +1 -0
  369. package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/lib/index.js +424 -0
  370. package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/lib/index.js.map +1 -0
  371. package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/package.json +21 -0
@@ -0,0 +1,165 @@
1
+ /**
2
+ * 零依赖 JSON Schema 校验器——上游 `conformance/tests/run.js` 的 check()
3
+ * 的保真 TS 移植。刻意只实现 vendored schemas 用到的子集:本地 $ref、
4
+ * oneOf(恰好一个匹配)、const/enum、object(required/additionalProperties:
5
+ * false/patternProperties)、array(min/maxItems/items/uniqueItems)、
6
+ * string(min/maxLength/pattern/format uri|date-time)、integer(minimum)、
7
+ * boolean。遇到子集之外的构件不静默放行——schema 更新引入新构件时这里
8
+ * 必须显式扩展(fixtures 矩阵会当场抓住)。
9
+ */
10
+ /** Canonical JSON encoding for `uniqueItems`. JSON object member order is not
11
+ * semantically significant, while `JSON.stringify` preserves insertion order
12
+ * and therefore lets equivalent objects evade duplicate detection. */
13
+ function canonicalJson(value) {
14
+ if (value === null)
15
+ return 'null';
16
+ if (Array.isArray(value))
17
+ return `[${value.map(canonicalJson).join(',')}]`;
18
+ switch (typeof value) {
19
+ case 'object': {
20
+ const record = value;
21
+ return `{${Object.keys(record).sort().map(key => `${JSON.stringify(key)}:${canonicalJson(record[key])}`).join(',')}}`;
22
+ }
23
+ case 'string': return JSON.stringify(value);
24
+ case 'number': return JSON.stringify(value) ?? 'null';
25
+ case 'boolean': return value ? 'true' : 'false';
26
+ case 'undefined': return 'undefined';
27
+ default: return `${typeof value}:${String(value)}`;
28
+ }
29
+ }
30
+ function resolveRef(rootSchema, ref) {
31
+ if (!ref.startsWith('#/')) {
32
+ throw new Error(`external ref is not supported by the zero-dependency checker: ${ref}`);
33
+ }
34
+ return ref
35
+ .slice(2)
36
+ .split('/')
37
+ .reduce((value, key) => {
38
+ const child = value[key.replace(/~1/g, '/').replace(/~0/g, '~')];
39
+ if (child === null || typeof child !== 'object') {
40
+ throw new Error(`unresolvable $ref segment "${key}" in ${ref}`);
41
+ }
42
+ return child;
43
+ }, rootSchema);
44
+ }
45
+ /**
46
+ * Validate `value` against `schema`; throws an Error with the failing path
47
+ * (`$.a.b[0]: reason`) on the first violation.
48
+ */
49
+ export function check(value, schema, rootSchema = schema, where = '$') {
50
+ if (typeof schema.$ref === 'string') {
51
+ return check(value, resolveRef(rootSchema, schema.$ref), rootSchema, where);
52
+ }
53
+ // oneOf: exactly one variant must match (JSON Schema semantics). Variants
54
+ // are currently mutually exclusive by design; exact-one keeps future
55
+ // overlap from being silently accepted.
56
+ if (Array.isArray(schema.oneOf)) {
57
+ let matched = 0;
58
+ const errors = [];
59
+ for (const variant of schema.oneOf) {
60
+ try {
61
+ check(value, variant, rootSchema, where);
62
+ matched += 1;
63
+ }
64
+ catch (error) {
65
+ errors.push(error instanceof Error ? error.message : String(error));
66
+ }
67
+ }
68
+ if (matched !== 1) {
69
+ throw new Error(`${where}: expected exactly one oneOf match, got ${matched}: ${errors.join(' | ')}`);
70
+ }
71
+ return;
72
+ }
73
+ if (schema.const !== undefined && value !== schema.const) {
74
+ throw new Error(`${where}: expected ${JSON.stringify(schema.const)}`);
75
+ }
76
+ if (Array.isArray(schema.enum) && !schema.enum.includes(value)) {
77
+ throw new Error(`${where}: value is not in enum`);
78
+ }
79
+ if (schema.type === 'object') {
80
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) {
81
+ throw new Error(`${where}: expected object`);
82
+ }
83
+ const record = value;
84
+ for (const key of schema.required ?? []) {
85
+ if (!(key in record))
86
+ throw new Error(`${where}.${key}: required`);
87
+ }
88
+ // draft-2020-12: additionalProperties consults properties AND
89
+ // patternProperties — a key matching a declared pattern is not
90
+ // "additional".
91
+ if (schema.additionalProperties === false) {
92
+ const patterns = Object.keys(schema.patternProperties ?? {});
93
+ for (const key of Object.keys(record)) {
94
+ const declared = schema.properties?.[key] !== undefined;
95
+ const patterned = patterns.some(pattern => new RegExp(pattern).test(key));
96
+ if (!declared && !patterned)
97
+ throw new Error(`${where}.${key}: additional property`);
98
+ }
99
+ }
100
+ for (const [key, child] of Object.entries(schema.properties ?? {})) {
101
+ if (key in record)
102
+ check(record[key], child, rootSchema, `${where}.${key}`);
103
+ }
104
+ if (schema.patternProperties !== undefined) {
105
+ for (const [pattern, child] of Object.entries(schema.patternProperties)) {
106
+ for (const name of Object.keys(record)) {
107
+ if (new RegExp(pattern).test(name))
108
+ check(record[name], child, rootSchema, `${where}.${name}`);
109
+ }
110
+ }
111
+ }
112
+ return;
113
+ }
114
+ if (schema.type === 'array') {
115
+ if (!Array.isArray(value))
116
+ throw new Error(`${where}: expected array`);
117
+ if (schema.minItems !== undefined && value.length < schema.minItems) {
118
+ throw new Error(`${where}: too few items`);
119
+ }
120
+ if (schema.maxItems !== undefined && value.length > schema.maxItems) {
121
+ throw new Error(`${where}: too many items`);
122
+ }
123
+ for (let i = 0; i < value.length; i++) {
124
+ check(value[i], schema.items, rootSchema, `${where}[${i}]`);
125
+ }
126
+ if (schema.uniqueItems === true) {
127
+ const encoded = value.map(canonicalJson);
128
+ if (new Set(encoded).size !== encoded.length)
129
+ throw new Error(`${where}: duplicate items`);
130
+ }
131
+ return;
132
+ }
133
+ if (schema.type === 'string') {
134
+ if (typeof value !== 'string')
135
+ throw new Error(`${where}: expected string`);
136
+ if (schema.minLength !== undefined && value.length < schema.minLength) {
137
+ throw new Error(`${where}: too short`);
138
+ }
139
+ if (schema.maxLength !== undefined && value.length > schema.maxLength) {
140
+ throw new Error(`${where}: too long`);
141
+ }
142
+ if (schema.pattern !== undefined && !new RegExp(schema.pattern).test(value)) {
143
+ throw new Error(`${where}: pattern mismatch`);
144
+ }
145
+ if (schema.format === 'uri' && !/^[A-Za-z][A-Za-z0-9+.-]*:\/\//.test(value)) {
146
+ throw new Error(`${where}: invalid URI`);
147
+ }
148
+ if (schema.format === 'date-time' && Number.isNaN(Date.parse(value))) {
149
+ throw new Error(`${where}: invalid date-time`);
150
+ }
151
+ return;
152
+ }
153
+ if (schema.type === 'integer') {
154
+ if (!Number.isInteger(value))
155
+ throw new Error(`${where}: expected integer`);
156
+ if (schema.minimum !== undefined && value < schema.minimum) {
157
+ throw new Error(`${where}: below minimum`);
158
+ }
159
+ return;
160
+ }
161
+ if (schema.type === 'boolean') {
162
+ if (typeof value !== 'boolean')
163
+ throw new Error(`${where}: expected boolean`);
164
+ }
165
+ }
@@ -0,0 +1,16 @@
1
+ /** dsh-TUI private protocol registration on the shared dsh-std catalog. */
2
+ import { ProtocolCatalog, type ProtocolDefinition } from '@dsh-std/core';
3
+ import { ManifestDefinitionCatalog } from '@dsh-std/manifest';
4
+ import type { ContractCoordinate } from './types.js';
5
+ export declare const TUI_EXTENSION_API_VERSION = "tui.dsh/v1alpha1";
6
+ export declare const DECISION_EVENTS_COORDINATE: Readonly<ContractCoordinate>;
7
+ export declare const TUI_DECISION_EVENT_NAMES: readonly ["tui/input", "tui/rewind-prompt", "tui/rewind-done", "tui/session-switch", "tui/session-switched", "tui/compact"];
8
+ export declare const TUI_EXTENSION_PERMISSION_NAMES: readonly ["session.input.intercept", "session.rewind.intercept", "session.switch.intercept", "session.compact.intercept"];
9
+ export declare const decisionEventsDefinition: ProtocolDefinition;
10
+ export interface AdmissionCatalog {
11
+ protocols: ProtocolCatalog;
12
+ manifests: ManifestDefinitionCatalog;
13
+ }
14
+ /** Register public and private definitions into one evaluator-owned catalog. */
15
+ export declare function createAdmissionCatalog(): AdmissionCatalog;
16
+ //# sourceMappingURL=tui-extension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui-extension.d.ts","sourceRoot":"","sources":["../../../src/plugin-spec/tui-extension.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E,OAAO,EAAE,eAAe,EAAE,KAAK,kBAAkB,EAAsB,MAAM,eAAe,CAAA;AAC5F,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAK7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEpD,eAAO,MAAM,yBAAyB,qBAAqB,CAAA;AAE3D,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,kBAAkB,CAGlE,CAAA;AAEF,eAAO,MAAM,wBAAwB,6HAO1B,CAAA;AAEX,eAAO,MAAM,8BAA8B,2HAKhC,CAAA;AAiBX,eAAO,MAAM,wBAAwB,EAAE,kBAsBrC,CAAA;AAEF,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,eAAe,CAAA;IAC1B,SAAS,EAAE,yBAAyB,CAAA;CACrC;AAED,gFAAgF;AAChF,wBAAgB,sBAAsB,IAAI,gBAAgB,CASzD"}
@@ -0,0 +1,77 @@
1
+ /** dsh-TUI private protocol registration on the shared dsh-std catalog. */
2
+ import { ProtocolCatalog } from '@dsh-std/core';
3
+ import { ManifestDefinitionCatalog } from '@dsh-std/manifest';
4
+ import { register as registerCommand } from '@dsh-std/command';
5
+ import { register as registerMessages } from '@dsh-std/messages';
6
+ import { register as registerPresentation } from '@dsh-std/presentation';
7
+ import { register as registerStorage } from '@dsh-std/storage';
8
+ export const TUI_EXTENSION_API_VERSION = 'tui.dsh/v1alpha1';
9
+ export const DECISION_EVENTS_COORDINATE = Object.freeze({
10
+ apiVersion: TUI_EXTENSION_API_VERSION,
11
+ kind: 'DecisionEvents',
12
+ });
13
+ export const TUI_DECISION_EVENT_NAMES = Object.freeze([
14
+ 'tui/input',
15
+ 'tui/rewind-prompt',
16
+ 'tui/rewind-done',
17
+ 'tui/session-switch',
18
+ 'tui/session-switched',
19
+ 'tui/compact',
20
+ ]);
21
+ export const TUI_EXTENSION_PERMISSION_NAMES = Object.freeze([
22
+ 'session.input.intercept',
23
+ 'session.rewind.intercept',
24
+ 'session.switch.intercept',
25
+ 'session.compact.intercept',
26
+ ]);
27
+ function featureSupport(value) {
28
+ if (value === undefined)
29
+ return Object.freeze({ features: Object.freeze([]) });
30
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
31
+ throw new TypeError('DecisionEvents support spec must be an object');
32
+ }
33
+ const record = value;
34
+ const unknown = Object.keys(record).filter(key => key !== 'features' && !key.startsWith('x-'));
35
+ if (unknown.length > 0)
36
+ throw new TypeError(`DecisionEvents support spec contains unknown field ${JSON.stringify(unknown[0])}`);
37
+ if (record.features !== undefined && (!Array.isArray(record.features)
38
+ || record.features.some(feature => typeof feature !== 'string' || feature.trim() === ''))) {
39
+ throw new TypeError('DecisionEvents support spec.features must be an array of non-empty strings');
40
+ }
41
+ return Object.freeze({ features: Object.freeze([...(record.features ?? [])].sort()) });
42
+ }
43
+ export const decisionEventsDefinition = Object.freeze({
44
+ ...DECISION_EVENTS_COORDINATE,
45
+ validateRequirement(value) {
46
+ if (value !== undefined)
47
+ throw new TypeError('DecisionEvents requirement does not accept spec in manifest v0.15');
48
+ return undefined;
49
+ },
50
+ validateSupport: featureSupport,
51
+ negotiate(input) {
52
+ const providers = [...new Set(input.supports.map(row => row.participant))].sort();
53
+ const issues = input.requirements.flatMap(row => providers.length === 0
54
+ ? [{
55
+ code: row.requirement.optional === true ? 'optional-support-missing' : 'required-support-missing',
56
+ severity: row.requirement.optional === true ? 'warning' : 'error',
57
+ participant: row.participant,
58
+ message: 'DecisionEvents has no provider in this negotiation scope',
59
+ }]
60
+ : []);
61
+ return {
62
+ agreement: Object.freeze({ providers: Object.freeze(providers) }),
63
+ issues: Object.freeze(issues),
64
+ };
65
+ },
66
+ });
67
+ /** Register public and private definitions into one evaluator-owned catalog. */
68
+ export function createAdmissionCatalog() {
69
+ const protocols = new ProtocolCatalog({ name: 'dsh-tui-admission', version: '0.15' });
70
+ const manifests = new ManifestDefinitionCatalog();
71
+ registerCommand(protocols, manifests);
72
+ registerStorage(protocols);
73
+ registerMessages(protocols);
74
+ registerPresentation(protocols);
75
+ protocols.register(decisionEventsDefinition);
76
+ return { protocols, manifests };
77
+ }
@@ -0,0 +1,114 @@
1
+ /** Types shared by the dsh-std admission adapter and the TUI runtime. */
2
+ import type { PluginManifest as StandardPluginManifest } from '@dsh-std/manifest';
3
+ export interface ContractCoordinate {
4
+ apiVersion: string;
5
+ kind: string;
6
+ }
7
+ export interface ContractRef extends ContractCoordinate {
8
+ optional?: boolean;
9
+ fallback?: string;
10
+ }
11
+ export interface ManifestPermission {
12
+ name: string;
13
+ scope: string;
14
+ reason?: string;
15
+ }
16
+ export type SubscriptionRef = ContractCoordinate & {
17
+ scope?: string;
18
+ } | string;
19
+ /** Community v0.15 is parsed and frozen by @dsh-std/manifest. */
20
+ export type PluginManifest = StandardPluginManifest;
21
+ export type HostContractDefinition = {
22
+ source: 'dsh-std';
23
+ package: `@dsh-std/${string}`;
24
+ } | {
25
+ source: 'tui-profile';
26
+ profileHash: `sha256:${string}`;
27
+ };
28
+ export interface HostContract extends ContractCoordinate {
29
+ spec?: unknown;
30
+ definition: HostContractDefinition;
31
+ permissions: string[];
32
+ }
33
+ export interface HostDescriptor {
34
+ $schema: 'urn:dsh-tui:host-descriptor:0.15';
35
+ hostId: string;
36
+ hostVersion: string;
37
+ facetApiVersions: string[];
38
+ contracts: HostContract[];
39
+ runtime: {
40
+ location: 'local' | 'remote' | 'container';
41
+ generationId: string;
42
+ headless: boolean;
43
+ remoteAttach?: boolean;
44
+ };
45
+ trustLevel: 'trusted-in-process';
46
+ platform: {
47
+ os: string;
48
+ arch: string;
49
+ node?: string;
50
+ };
51
+ }
52
+ export type NegotiationDecision = {
53
+ decision: 'compatible';
54
+ } | {
55
+ decision: 'compatible_degraded';
56
+ missingOptional: string[];
57
+ } | {
58
+ decision: 'waiting_authorization';
59
+ reasonCode: string;
60
+ deniedPermissions: string[];
61
+ } | {
62
+ decision: 'rejected';
63
+ reasonCode: string;
64
+ missingRequired?: string[];
65
+ facetApiVersion?: string;
66
+ hostFacetApiVersions?: string[];
67
+ issues?: readonly unknown[];
68
+ } | {
69
+ decision: 'unknown';
70
+ reasonCode: string;
71
+ unknownContracts: string[];
72
+ };
73
+ export declare const NEGOTIATION_ERROR_CODES: readonly ["REQUIRED_PROTOCOL_UNAVAILABLE", "PROTOCOL_NEGOTIATION_FAILED", "FACET_API_VERSION_UNAVAILABLE", "PERMISSION_NOT_GRANTED", "UNKNOWN_PROTOCOL_VERSION", "DUPLICATE_CONTRIBUTION_ID", "INVALID_MANIFEST"];
74
+ export type NegotiationErrorCode = (typeof NEGOTIATION_ERROR_CODES)[number];
75
+ export interface PermissionEntry {
76
+ name: string;
77
+ default: 'allow' | 'deny';
78
+ revocable: boolean;
79
+ scope: string;
80
+ rationale?: string;
81
+ }
82
+ export interface PermissionRegistry {
83
+ registryVersion: string;
84
+ permissions: PermissionEntry[];
85
+ }
86
+ interface RegistryEntryBase {
87
+ name: string;
88
+ coordinates: ContractCoordinate;
89
+ kind: 'capability' | 'event';
90
+ permissions: string[];
91
+ eventEnvelope?: string;
92
+ }
93
+ export interface ImportedRegistryEntry extends RegistryEntryBase {
94
+ package: `@dsh-std/${string}`;
95
+ }
96
+ export interface PrivateRegistryEntry extends RegistryEntryBase {
97
+ authority: 'dsh-tui';
98
+ profile: string;
99
+ profileHash: `sha256:${string}`;
100
+ }
101
+ export type RegistryEntry = ImportedRegistryEntry | PrivateRegistryEntry;
102
+ export interface ContractRegistry {
103
+ profileVersion: string;
104
+ std: {
105
+ repository: string;
106
+ submodule: string;
107
+ manifestVersion: string;
108
+ };
109
+ imports: ImportedRegistryEntry[];
110
+ definitions: PrivateRegistryEntry[];
111
+ facetApiVersions: string[];
112
+ }
113
+ export {};
114
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/plugin-spec/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /** Types shared by the dsh-std admission adapter and the TUI runtime. */
2
+ export const NEGOTIATION_ERROR_CODES = [
3
+ 'REQUIRED_PROTOCOL_UNAVAILABLE',
4
+ 'PROTOCOL_NEGOTIATION_FAILED',
5
+ 'FACET_API_VERSION_UNAVAILABLE',
6
+ 'PERMISSION_NOT_GRANTED',
7
+ 'UNKNOWN_PROTOCOL_VERSION',
8
+ 'DUPLICATE_CONTRIBUTION_ID',
9
+ 'INVALID_MANIFEST',
10
+ ];
@@ -0,0 +1,21 @@
1
+ /** Semantic validation layered on the official manifest parser/projection. */
2
+ import { createAdmissionCatalog } from './tui-extension.js';
3
+ import type { ContractCoordinate, ContractRegistry, HostDescriptor, PermissionRegistry, PluginManifest, RegistryEntry, SubscriptionRef } from './types.js';
4
+ export interface ContractIndex {
5
+ registry: ContractRegistry;
6
+ permissions: PermissionRegistry;
7
+ facetApiVersions: string[];
8
+ protocols: ReturnType<typeof createAdmissionCatalog>['protocols'];
9
+ manifests: ReturnType<typeof createAdmissionCatalog>['manifests'];
10
+ lookupContract(coordinate: ContractCoordinate): RegistryEntry | undefined;
11
+ resolveContractRef(ref: ContractCoordinate): {
12
+ entry: RegistryEntry | null;
13
+ unregisteredVersion: boolean;
14
+ };
15
+ resolveSubscription(sub: SubscriptionRef): RegistryEntry;
16
+ }
17
+ export declare const groupOf: (apiVersion: string) => string;
18
+ export declare function createContractIndex(registry: ContractRegistry, permissions: PermissionRegistry): ContractIndex;
19
+ export declare function validatePlugin(index: ContractIndex, manifest: PluginManifest): void;
20
+ export declare function validateHost(index: ContractIndex, host: HostDescriptor): void;
21
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/plugin-spec/validate.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAG9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAG3D,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,eAAe,EAChB,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,WAAW,EAAE,kBAAkB,CAAA;IAC/B,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,SAAS,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,WAAW,CAAC,CAAA;IACjE,SAAS,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,WAAW,CAAC,CAAA;IACjE,cAAc,CAAC,UAAU,EAAE,kBAAkB,GAAG,aAAa,GAAG,SAAS,CAAA;IACzE,kBAAkB,CAAC,GAAG,EAAE,kBAAkB,GAAG;QAAE,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;QAAC,mBAAmB,EAAE,OAAO,CAAA;KAAE,CAAA;IAC1G,mBAAmB,CAAC,GAAG,EAAE,eAAe,GAAG,aAAa,CAAA;CACzD;AAGD,eAAO,MAAM,OAAO,GAAI,YAAY,MAAM,KAAG,MAAwC,CAAA;AAErF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,GAAG,aAAa,CAsC9G;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAwCnF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI,CA4B7E"}
@@ -0,0 +1,119 @@
1
+ /** Semantic validation layered on the official manifest parser/projection. */
2
+ import { projectManifest } from '@dsh-std/manifest';
3
+ import { createAdmissionCatalog } from './tui-extension.js';
4
+ import { registryEntries } from './registry.js';
5
+ import { INTERCEPT_PERMISSIONS, normalizePermissionScope } from './permission-scope.js';
6
+ const coordinateKey = (coordinate) => `${coordinate.apiVersion}#${coordinate.kind}`;
7
+ export const groupOf = (apiVersion) => apiVersion.split('/')[0] ?? '';
8
+ export function createContractIndex(registry, permissions) {
9
+ const entries = registryEntries(registry);
10
+ const byCoordinate = new Map(entries.map(entry => [coordinateKey(entry.coordinates), entry]));
11
+ const byName = new Map(entries.map(entry => [entry.name, entry]));
12
+ const { protocols, manifests } = createAdmissionCatalog();
13
+ const resolveContractRef = (ref) => {
14
+ const exact = byCoordinate.get(coordinateKey(ref));
15
+ if (exact !== undefined)
16
+ return { entry: exact, unregisteredVersion: false };
17
+ const sameGroup = entries.filter(entry => groupOf(entry.coordinates.apiVersion) === groupOf(ref.apiVersion));
18
+ if (sameGroup.length === 0)
19
+ throw new Error(`unknown protocol group: ${groupOf(ref.apiVersion)}`);
20
+ if (!sameGroup.some(entry => entry.coordinates.kind === ref.kind)) {
21
+ throw new Error(`unknown protocol kind: ${coordinateKey(ref)}`);
22
+ }
23
+ return { entry: null, unregisteredVersion: true };
24
+ };
25
+ const resolveSubscription = (subscription) => {
26
+ const entry = typeof subscription === 'string'
27
+ ? byName.get(subscription)
28
+ : byCoordinate.get(coordinateKey(subscription));
29
+ if (entry === undefined) {
30
+ throw new Error(`unknown subscription: ${typeof subscription === 'string' ? subscription : coordinateKey(subscription)}`);
31
+ }
32
+ if (entry.kind !== 'event')
33
+ throw new Error(`subscription must reference an event: ${entry.name}`);
34
+ return entry;
35
+ };
36
+ return {
37
+ registry,
38
+ permissions,
39
+ facetApiVersions: [...registry.facetApiVersions],
40
+ protocols,
41
+ manifests,
42
+ lookupContract: coordinate => byCoordinate.get(coordinateKey(coordinate)),
43
+ resolveContractRef,
44
+ resolveSubscription,
45
+ };
46
+ }
47
+ export function validatePlugin(index, manifest) {
48
+ if (!index.facetApiVersions.includes(manifest.facets.host.apiVersion)) {
49
+ throw new Error(`facet apiVersion is not admitted: ${manifest.facets.host.apiVersion}`);
50
+ }
51
+ for (const requirement of manifest.requires.contracts) {
52
+ index.resolveContractRef(requirement);
53
+ if (requirement.optional === true && !requirement.fallback) {
54
+ throw new Error(`optional protocol requires a TUI fallback: ${coordinateKey(requirement)}`);
55
+ }
56
+ }
57
+ for (const subscription of manifest.subscriptions)
58
+ index.resolveSubscription(subscription);
59
+ const knownPermissions = new Set(index.permissions.permissions.map(permission => permission.name));
60
+ const commandIds = new Set(manifest.contributes.commands.map(command => command.id));
61
+ const requiresDecisionEvents = manifest.requires.contracts.some(requirement => requirement.apiVersion === 'tui.dsh/v1alpha1' && requirement.kind === 'DecisionEvents');
62
+ for (const permission of manifest.permissions) {
63
+ if (!knownPermissions.has(permission.name)) {
64
+ throw new Error(`permission is not admitted by the TUI profile: ${permission.name}`);
65
+ }
66
+ if (normalizePermissionScope(permission.name, permission.scope, manifest.id) === undefined) {
67
+ throw new Error(`permission scope cannot be enforced: ${permission.name}@${permission.scope}`);
68
+ }
69
+ if (permission.name === 'commands.invoke' && !commandIds.has(permission.scope)) {
70
+ throw new Error(`commands.invoke scope is not a declared command: ${permission.scope}`);
71
+ }
72
+ if (INTERCEPT_PERMISSIONS.has(permission.name) && !requiresDecisionEvents) {
73
+ throw new Error(`${permission.name} requires tui.dsh/v1alpha1#DecisionEvents`);
74
+ }
75
+ }
76
+ for (const commandId of commandIds) {
77
+ if (!manifest.permissions.some(permission => permission.name === 'commands.invoke' && permission.scope === commandId)) {
78
+ throw new Error(`declared command is missing commands.invoke permission scope: ${commandId}`);
79
+ }
80
+ }
81
+ const projected = projectManifest(manifest);
82
+ const report = index.manifests.validate(projected, index.protocols);
83
+ const errors = report.issues.filter(issue => issue.severity === 'error');
84
+ if (errors.length > 0)
85
+ throw new Error(errors.map(issue => issue.message).join('; '));
86
+ }
87
+ export function validateHost(index, host) {
88
+ const seen = new Set();
89
+ const knownPermissions = new Set(index.permissions.permissions.map(permission => permission.name));
90
+ for (const contract of host.contracts) {
91
+ const key = coordinateKey(contract);
92
+ if (seen.has(key))
93
+ throw new Error(`host declares duplicate protocol: ${key}`);
94
+ seen.add(key);
95
+ const entry = index.lookupContract(contract);
96
+ const definition = index.protocols.resolve(contract);
97
+ if (entry === undefined || definition === undefined)
98
+ throw new Error(`host declares an unknown protocol: ${key}`);
99
+ definition.validateSupport(Object.hasOwn(contract, 'spec') ? contract.spec : undefined);
100
+ if ('package' in entry) {
101
+ if (contract.definition.source !== 'dsh-std' || contract.definition.package !== entry.package) {
102
+ throw new Error(`host dsh-std definition source mismatch: ${key}`);
103
+ }
104
+ }
105
+ else if (contract.definition.source !== 'tui-profile' || contract.definition.profileHash !== entry.profileHash) {
106
+ throw new Error(`host TUI profile definition hash mismatch: ${key}`);
107
+ }
108
+ const expectedPermissions = [...entry.permissions].sort();
109
+ const actualPermissions = [...contract.permissions].sort();
110
+ if (expectedPermissions.length !== actualPermissions.length
111
+ || expectedPermissions.some((permission, index) => permission !== actualPermissions[index])) {
112
+ throw new Error(`host permission advertisement mismatch: ${key}`);
113
+ }
114
+ for (const permission of contract.permissions) {
115
+ if (!knownPermissions.has(permission))
116
+ throw new Error(`host declares unknown permission: ${permission}`);
117
+ }
118
+ }
119
+ }
@@ -0,0 +1,3 @@
1
+ export * from './dsh-adapter/scenes.js';
2
+ export { default } from './dsh-adapter/scenes.js';
3
+ //# sourceMappingURL=scenes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenes.d.ts","sourceRoot":"","sources":["../../src/scenes.ts"],"names":[],"mappings":"AAEA,cAAc,yBAAyB,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA"}
@@ -0,0 +1,4 @@
1
+ // Re-export shim: the Cordis-backed implementation lives behind the adapter
2
+ // boundary so UI consumers never import official @deepseek-ai/* packages.
3
+ export * from './dsh-adapter/scenes.js';
4
+ export { default } from './dsh-adapter/scenes.js';
@@ -1,8 +1,11 @@
1
1
  import React from 'react';
2
2
  import { type Channel } from '../dsh-adapter/channel.js';
3
3
  import type { QuestionStore } from '../dsh-adapter/questions.js';
4
+ import { TuiDialogStore } from '../dsh-adapter/dialogs.js';
5
+ import { TuiStatusStore } from '../dsh-adapter/status.js';
6
+ import type { TuiShortcutRuntime } from '../dsh-adapter/shortcuts.js';
4
7
  import { ApprovalStore } from '../dsh-adapter/approvals.js';
5
- export declare function Chat({ channel, questionStore, approvalStore, onExit, onUpdate, fullscreen, trajectorySeen: trajectorySeenProp, }: {
8
+ export declare function Chat({ channel, questionStore, approvalStore, extensionDialogs, extensionStatus, extensionShortcuts, onExit, onUpdate, fullscreen, trajectorySeen: trajectorySeenProp, }: {
6
9
  channel: Channel;
7
10
  questionStore: QuestionStore;
8
11
  /**
@@ -11,6 +14,16 @@ export declare function Chat({ channel, questionStore, approvalStore, onExit, on
11
14
  * simply never see an approval panel — the question panel keeps its seat.
12
15
  */
13
16
  approvalStore?: ApprovalStore;
17
+ /**
18
+ * The managed plugin dialog queue (tuiDialogs service's store). Optional
19
+ * for the same hosts as approvalStore; absent, plugin dialog requests
20
+ * park unanswered (their `timeoutMs` is the plugin's guard).
21
+ */
22
+ extensionDialogs?: TuiDialogStore;
23
+ /** Plugin status-line contributions (tuiStatus service's store). */
24
+ extensionStatus?: TuiStatusStore;
25
+ /** Plugin keyboard shortcut registry (tuiShortcuts service). */
26
+ extensionShortcuts?: TuiShortcutRuntime;
14
27
  onExit: () => void;
15
28
  /** Update the installed package and restart the current TUI process. */
16
29
  onUpdate?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../../src/screens/Chat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,OAAO,EAAqB,KAAK,OAAO,EAAsD,MAAM,2BAA2B,CAAA;AAC/H,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AA0H3D,wBAAgB,IAAI,CAAC,EACnB,OAAO,EACP,aAAa,EACb,aAAa,EACb,MAAM,EACN,QAAQ,EACR,UAAkB,EAClB,cAAc,EAAE,kBAAkB,GACnC,EAAE;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,aAAa,CAAA;IAC5B;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,qBA02DA"}
1
+ {"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../../src/screens/Chat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AASzB,OAAO,EAAqB,KAAK,OAAO,EAAsE,MAAM,2BAA2B,CAAA;AAC/I,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAGrE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAwI3D,wBAAgB,IAAI,CAAC,EACnB,OAAO,EACP,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,MAAM,EACN,QAAQ,EACR,UAAkB,EAClB,cAAc,EAAE,kBAAkB,GACnC,EAAE;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,aAAa,CAAA;IAC5B;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,cAAc,CAAA;IACjC,oEAAoE;IACpE,eAAe,CAAC,EAAE,cAAc,CAAA;IAChC,gEAAgE;IAChE,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,qBA6jEA"}