dsh-plugin-core 0.2.13 → 0.3.0

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 (431) hide show
  1. package/README.md +52 -83
  2. package/dist/design/tokens-css.d.ts +1 -1
  3. package/dist/design/tokens-css.d.ts.map +1 -1
  4. package/dist/design/tokens-css.generated.d.ts +2 -0
  5. package/dist/design/tokens-css.generated.d.ts.map +1 -0
  6. package/dist/design/tokens-css.generated.js +4 -0
  7. package/dist/design/tokens-css.generated.js.map +1 -0
  8. package/dist/design/tokens-css.js +1 -252
  9. package/dist/design/tokens-css.js.map +1 -1
  10. package/dist/explorer/FileBrowser.d.ts +41 -0
  11. package/dist/explorer/FileBrowser.d.ts.map +1 -0
  12. package/dist/explorer/FileBrowser.js +659 -0
  13. package/dist/explorer/FileBrowser.js.map +1 -0
  14. package/dist/explorer/explorer-css.d.ts +1 -1
  15. package/dist/explorer/explorer-css.d.ts.map +1 -1
  16. package/dist/explorer/explorer-css.generated.d.ts +2 -0
  17. package/dist/explorer/explorer-css.generated.d.ts.map +1 -0
  18. package/dist/explorer/explorer-css.generated.js +4 -0
  19. package/dist/explorer/explorer-css.generated.js.map +1 -0
  20. package/dist/explorer/explorer-css.js +1 -31
  21. package/dist/explorer/explorer-css.js.map +1 -1
  22. package/dist/explorer/index.d.ts +4 -2
  23. package/dist/explorer/index.d.ts.map +1 -1
  24. package/dist/explorer/index.js +4 -2
  25. package/dist/explorer/index.js.map +1 -1
  26. package/dist/explorer/open.d.ts +103 -0
  27. package/dist/explorer/open.d.ts.map +1 -0
  28. package/dist/explorer/open.js +282 -0
  29. package/dist/explorer/open.js.map +1 -0
  30. package/dist/explorer/preview/BytesPreview.d.ts +13 -0
  31. package/dist/explorer/preview/BytesPreview.d.ts.map +1 -0
  32. package/dist/explorer/preview/BytesPreview.js +56 -0
  33. package/dist/explorer/preview/BytesPreview.js.map +1 -0
  34. package/dist/explorer/preview/HtmlPreview.d.ts +18 -0
  35. package/dist/explorer/preview/HtmlPreview.d.ts.map +1 -0
  36. package/dist/explorer/preview/HtmlPreview.js +112 -0
  37. package/dist/explorer/preview/HtmlPreview.js.map +1 -0
  38. package/dist/explorer/preview/OfficePreview.d.ts +11 -0
  39. package/dist/explorer/preview/OfficePreview.d.ts.map +1 -0
  40. package/dist/explorer/preview/OfficePreview.js +53 -0
  41. package/dist/explorer/preview/OfficePreview.js.map +1 -0
  42. package/dist/explorer/preview/TextPreview.d.ts +17 -0
  43. package/dist/explorer/preview/TextPreview.d.ts.map +1 -0
  44. package/dist/explorer/preview/TextPreview.js +95 -0
  45. package/dist/explorer/preview/TextPreview.js.map +1 -0
  46. package/dist/explorer/preview/index.d.ts +10 -3
  47. package/dist/explorer/preview/index.d.ts.map +1 -1
  48. package/dist/explorer/preview/index.js +52 -55
  49. package/dist/explorer/preview/index.js.map +1 -1
  50. package/dist/explorer/preview/md-labels.d.ts +3 -0
  51. package/dist/explorer/preview/md-labels.d.ts.map +1 -0
  52. package/dist/explorer/preview/md-labels.js +12 -0
  53. package/dist/explorer/preview/md-labels.js.map +1 -0
  54. package/dist/explorer/types.d.ts +186 -4
  55. package/dist/explorer/types.d.ts.map +1 -1
  56. package/dist/explorer/types.js +401 -14
  57. package/dist/explorer/types.js.map +1 -1
  58. package/dist/host/index.d.ts +66 -0
  59. package/dist/host/index.d.ts.map +1 -0
  60. package/dist/host/index.js +60 -0
  61. package/dist/host/index.js.map +1 -0
  62. package/dist/session/SessionViewModal.d.ts +42 -0
  63. package/dist/session/SessionViewModal.d.ts.map +1 -0
  64. package/dist/session/SessionViewModal.js +997 -0
  65. package/dist/session/SessionViewModal.js.map +1 -0
  66. package/dist/session/changes.d.ts +73 -0
  67. package/dist/session/changes.d.ts.map +1 -0
  68. package/dist/session/changes.js +134 -0
  69. package/dist/session/changes.js.map +1 -0
  70. package/dist/session/faces.d.ts +198 -0
  71. package/dist/session/faces.d.ts.map +1 -0
  72. package/dist/session/faces.js +17 -0
  73. package/dist/session/faces.js.map +1 -0
  74. package/dist/session/index.d.ts +5 -23
  75. package/dist/session/index.d.ts.map +1 -1
  76. package/dist/session/index.js +25 -70
  77. package/dist/session/index.js.map +1 -1
  78. package/dist/session/mirror/ChangedFileDiff.d.ts +22 -0
  79. package/dist/session/mirror/ChangedFileDiff.d.ts.map +1 -0
  80. package/dist/session/mirror/ChangedFileDiff.js +157 -0
  81. package/dist/session/mirror/ChangedFileDiff.js.map +1 -0
  82. package/dist/session/mirror/ChangedFilesCard.d.ts +18 -0
  83. package/dist/session/mirror/ChangedFilesCard.d.ts.map +1 -0
  84. package/dist/session/mirror/ChangedFilesCard.js +158 -0
  85. package/dist/session/mirror/ChangedFilesCard.js.map +1 -0
  86. package/dist/session/mirror/ChatGroupSeat.d.ts +24 -0
  87. package/dist/session/mirror/ChatGroupSeat.d.ts.map +1 -0
  88. package/dist/session/mirror/ChatGroupSeat.js +134 -0
  89. package/dist/session/mirror/ChatGroupSeat.js.map +1 -0
  90. package/dist/session/mirror/ChatNodeSeat.d.ts +43 -0
  91. package/dist/session/mirror/ChatNodeSeat.d.ts.map +1 -0
  92. package/dist/session/mirror/ChatNodeSeat.js +133 -0
  93. package/dist/session/mirror/ChatNodeSeat.js.map +1 -0
  94. package/dist/session/mirror/ChatView.d.ts +47 -0
  95. package/dist/session/mirror/ChatView.d.ts.map +1 -0
  96. package/dist/session/mirror/ChatView.js +127 -0
  97. package/dist/session/mirror/ChatView.js.map +1 -0
  98. package/dist/session/mirror/CommandCard.d.ts +20 -0
  99. package/dist/session/mirror/CommandCard.d.ts.map +1 -0
  100. package/dist/session/mirror/CommandCard.js +69 -0
  101. package/dist/session/mirror/CommandCard.js.map +1 -0
  102. package/dist/session/mirror/Deliverables.d.ts +24 -0
  103. package/dist/session/mirror/Deliverables.d.ts.map +1 -0
  104. package/dist/session/mirror/Deliverables.js +134 -0
  105. package/dist/session/mirror/Deliverables.js.map +1 -0
  106. package/dist/session/mirror/GenericCommandCard.d.ts +25 -0
  107. package/dist/session/mirror/GenericCommandCard.d.ts.map +1 -0
  108. package/dist/session/mirror/GenericCommandCard.js +567 -0
  109. package/dist/session/mirror/GenericCommandCard.js.map +1 -0
  110. package/dist/session/mirror/MessageIconActions.d.ts +16 -0
  111. package/dist/session/mirror/MessageIconActions.d.ts.map +1 -0
  112. package/dist/session/mirror/MessageIconActions.js +71 -0
  113. package/dist/session/mirror/MessageIconActions.js.map +1 -0
  114. package/dist/session/mirror/MessageItem.d.ts +66 -0
  115. package/dist/session/mirror/MessageItem.d.ts.map +1 -0
  116. package/dist/session/mirror/MessageItem.js +135 -0
  117. package/dist/session/mirror/MessageItem.js.map +1 -0
  118. package/dist/session/mirror/ReasoningRow.d.ts +11 -0
  119. package/dist/session/mirror/ReasoningRow.d.ts.map +1 -0
  120. package/dist/session/mirror/ReasoningRow.js +49 -0
  121. package/dist/session/mirror/ReasoningRow.js.map +1 -0
  122. package/dist/session/mirror/StatDialog.d.ts +20 -0
  123. package/dist/session/mirror/StatDialog.d.ts.map +1 -0
  124. package/dist/session/mirror/StatDialog.js +36 -0
  125. package/dist/session/mirror/StatDialog.js.map +1 -0
  126. package/dist/session/mirror/TurnProcessNodeView.d.ts +10 -0
  127. package/dist/session/mirror/TurnProcessNodeView.d.ts.map +1 -0
  128. package/dist/session/mirror/TurnProcessNodeView.js +68 -0
  129. package/dist/session/mirror/TurnProcessNodeView.js.map +1 -0
  130. package/dist/session/mirror/TurnTailNodeView.d.ts +32 -0
  131. package/dist/session/mirror/TurnTailNodeView.d.ts.map +1 -0
  132. package/dist/session/mirror/TurnTailNodeView.js +48 -0
  133. package/dist/session/mirror/TurnTailNodeView.js.map +1 -0
  134. package/dist/session/mirror/TurnTriggerNodeView.d.ts +14 -0
  135. package/dist/session/mirror/TurnTriggerNodeView.d.ts.map +1 -0
  136. package/dist/session/mirror/TurnTriggerNodeView.js +87 -0
  137. package/dist/session/mirror/TurnTriggerNodeView.js.map +1 -0
  138. package/dist/session/mirror/TurnUsagePanel.d.ts +21 -0
  139. package/dist/session/mirror/TurnUsagePanel.d.ts.map +1 -0
  140. package/dist/session/mirror/TurnUsagePanel.js +41 -0
  141. package/dist/session/mirror/TurnUsagePanel.js.map +1 -0
  142. package/dist/session/mirror/message-chrome.d.ts +33 -0
  143. package/dist/session/mirror/message-chrome.d.ts.map +1 -0
  144. package/dist/session/mirror/message-chrome.js +158 -0
  145. package/dist/session/mirror/message-chrome.js.map +1 -0
  146. package/dist/session/mirror/process-groups.d.ts +56 -0
  147. package/dist/session/mirror/process-groups.d.ts.map +1 -0
  148. package/dist/session/mirror/process-groups.js +202 -0
  149. package/dist/session/mirror/process-groups.js.map +1 -0
  150. package/dist/session/official-classes.d.ts +28 -0
  151. package/dist/session/official-classes.d.ts.map +1 -0
  152. package/dist/session/official-classes.js +146 -0
  153. package/dist/session/official-classes.js.map +1 -0
  154. package/dist/session/open-session-view.d.ts +17 -0
  155. package/dist/session/open-session-view.d.ts.map +1 -0
  156. package/dist/session/open-session-view.js +136 -0
  157. package/dist/session/open-session-view.js.map +1 -0
  158. package/dist/session/session-css.d.ts +1 -1
  159. package/dist/session/session-css.d.ts.map +1 -1
  160. package/dist/session/session-css.generated.d.ts +2 -0
  161. package/dist/session/session-css.generated.d.ts.map +1 -0
  162. package/dist/session/session-css.generated.js +4 -0
  163. package/dist/session/session-css.generated.js.map +1 -0
  164. package/dist/session/session-css.js +1 -17
  165. package/dist/session/session-css.js.map +1 -1
  166. package/dist/ui/AlertModal.d.ts +28 -0
  167. package/dist/ui/AlertModal.d.ts.map +1 -0
  168. package/dist/ui/AlertModal.js +29 -0
  169. package/dist/ui/AlertModal.js.map +1 -0
  170. package/dist/ui/Button.d.ts.map +1 -1
  171. package/dist/ui/Button.js +14 -1
  172. package/dist/ui/Button.js.map +1 -1
  173. package/dist/ui/Card.d.ts +4 -2
  174. package/dist/ui/Card.d.ts.map +1 -1
  175. package/dist/ui/Card.js +12 -6
  176. package/dist/ui/Card.js.map +1 -1
  177. package/dist/ui/Chip.d.ts +9 -1
  178. package/dist/ui/Chip.d.ts.map +1 -1
  179. package/dist/ui/Chip.js +8 -2
  180. package/dist/ui/Chip.js.map +1 -1
  181. package/dist/ui/CodeViewer.d.ts +36 -0
  182. package/dist/ui/CodeViewer.d.ts.map +1 -0
  183. package/dist/ui/CodeViewer.js +90 -0
  184. package/dist/ui/CodeViewer.js.map +1 -0
  185. package/dist/ui/ConfirmModal.d.ts +30 -0
  186. package/dist/ui/ConfirmModal.d.ts.map +1 -0
  187. package/dist/ui/ConfirmModal.js +23 -0
  188. package/dist/ui/ConfirmModal.js.map +1 -0
  189. package/dist/ui/DateTimePicker.d.ts +45 -0
  190. package/dist/ui/DateTimePicker.d.ts.map +1 -0
  191. package/dist/ui/DateTimePicker.js +447 -0
  192. package/dist/ui/DateTimePicker.js.map +1 -0
  193. package/dist/ui/Field.d.ts +11 -2
  194. package/dist/ui/Field.d.ts.map +1 -1
  195. package/dist/ui/Field.js +15 -5
  196. package/dist/ui/Field.js.map +1 -1
  197. package/dist/ui/MarqueeText.d.ts.map +1 -1
  198. package/dist/ui/MarqueeText.js +3 -1
  199. package/dist/ui/MarqueeText.js.map +1 -1
  200. package/dist/ui/Modal.d.ts +25 -3
  201. package/dist/ui/Modal.d.ts.map +1 -1
  202. package/dist/ui/Modal.js +41 -7
  203. package/dist/ui/Modal.js.map +1 -1
  204. package/dist/ui/ModelPicker.d.ts +25 -12
  205. package/dist/ui/ModelPicker.d.ts.map +1 -1
  206. package/dist/ui/ModelPicker.js +67 -19
  207. package/dist/ui/ModelPicker.js.map +1 -1
  208. package/dist/ui/PanelDock.d.ts +127 -0
  209. package/dist/ui/PanelDock.d.ts.map +1 -0
  210. package/dist/ui/PanelDock.js +297 -0
  211. package/dist/ui/PanelDock.js.map +1 -0
  212. package/dist/ui/Picker.d.ts +8 -2
  213. package/dist/ui/Picker.d.ts.map +1 -1
  214. package/dist/ui/Picker.js +86 -18
  215. package/dist/ui/Picker.js.map +1 -1
  216. package/dist/ui/SectionHead.d.ts +3 -3
  217. package/dist/ui/SectionHead.d.ts.map +1 -1
  218. package/dist/ui/SectionHead.js +4 -4
  219. package/dist/ui/SectionHead.js.map +1 -1
  220. package/dist/ui/Segmented.d.ts +2 -0
  221. package/dist/ui/Segmented.d.ts.map +1 -1
  222. package/dist/ui/Segmented.js +3 -1
  223. package/dist/ui/Segmented.js.map +1 -1
  224. package/dist/ui/Textarea.d.ts +2 -0
  225. package/dist/ui/Textarea.d.ts.map +1 -1
  226. package/dist/ui/Textarea.js +6 -1
  227. package/dist/ui/Textarea.js.map +1 -1
  228. package/dist/ui/Toast.d.ts +41 -8
  229. package/dist/ui/Toast.d.ts.map +1 -1
  230. package/dist/ui/Toast.js +216 -28
  231. package/dist/ui/Toast.js.map +1 -1
  232. package/dist/ui/WorkspacePicker.d.ts +15 -28
  233. package/dist/ui/WorkspacePicker.d.ts.map +1 -1
  234. package/dist/ui/WorkspacePicker.js +18 -27
  235. package/dist/ui/WorkspacePicker.js.map +1 -1
  236. package/dist/ui/card-css.d.ts +1 -1
  237. package/dist/ui/card-css.d.ts.map +1 -1
  238. package/dist/ui/card-css.generated.d.ts +2 -0
  239. package/dist/ui/card-css.generated.d.ts.map +1 -0
  240. package/dist/ui/card-css.generated.js +4 -0
  241. package/dist/ui/card-css.generated.js.map +1 -0
  242. package/dist/ui/card-css.js +1 -35
  243. package/dist/ui/card-css.js.map +1 -1
  244. package/dist/ui/chip-css.d.ts +1 -1
  245. package/dist/ui/chip-css.d.ts.map +1 -1
  246. package/dist/ui/chip-css.generated.d.ts +2 -0
  247. package/dist/ui/chip-css.generated.d.ts.map +1 -0
  248. package/dist/ui/chip-css.generated.js +4 -0
  249. package/dist/ui/chip-css.generated.js.map +1 -0
  250. package/dist/ui/chip-css.js +1 -17
  251. package/dist/ui/chip-css.js.map +1 -1
  252. package/dist/ui/code-viewer-css.d.ts +2 -0
  253. package/dist/ui/code-viewer-css.d.ts.map +1 -0
  254. package/dist/ui/code-viewer-css.generated.d.ts +2 -0
  255. package/dist/ui/code-viewer-css.generated.d.ts.map +1 -0
  256. package/dist/ui/code-viewer-css.generated.js +4 -0
  257. package/dist/ui/code-viewer-css.generated.js.map +1 -0
  258. package/dist/ui/code-viewer-css.js +3 -0
  259. package/dist/ui/code-viewer-css.js.map +1 -0
  260. package/dist/ui/code-viewer-lang.d.ts +15 -0
  261. package/dist/ui/code-viewer-lang.d.ts.map +1 -0
  262. package/dist/ui/code-viewer-lang.js +190 -0
  263. package/dist/ui/code-viewer-lang.js.map +1 -0
  264. package/dist/ui/code-viewer-theme.d.ts +5 -0
  265. package/dist/ui/code-viewer-theme.d.ts.map +1 -0
  266. package/dist/ui/code-viewer-theme.js +138 -0
  267. package/dist/ui/code-viewer-theme.js.map +1 -0
  268. package/dist/ui/controls/back-to-top-css.generated.d.ts +2 -0
  269. package/dist/ui/controls/back-to-top-css.generated.d.ts.map +1 -0
  270. package/dist/ui/controls/back-to-top-css.generated.js +4 -0
  271. package/dist/ui/controls/back-to-top-css.generated.js.map +1 -0
  272. package/dist/ui/controls/button-css.generated.d.ts +2 -0
  273. package/dist/ui/controls/button-css.generated.d.ts.map +1 -0
  274. package/dist/ui/controls/button-css.generated.js +4 -0
  275. package/dist/ui/controls/button-css.generated.js.map +1 -0
  276. package/dist/ui/controls/datetime-css.generated.d.ts +2 -0
  277. package/dist/ui/controls/datetime-css.generated.d.ts.map +1 -0
  278. package/dist/ui/controls/datetime-css.generated.js +4 -0
  279. package/dist/ui/controls/datetime-css.generated.js.map +1 -0
  280. package/dist/ui/controls/field-css.generated.d.ts +2 -0
  281. package/dist/ui/controls/field-css.generated.d.ts.map +1 -0
  282. package/dist/ui/controls/field-css.generated.js +4 -0
  283. package/dist/ui/controls/field-css.generated.js.map +1 -0
  284. package/dist/ui/controls/hint-css.generated.d.ts +2 -0
  285. package/dist/ui/controls/hint-css.generated.d.ts.map +1 -0
  286. package/dist/ui/controls/hint-css.generated.js +4 -0
  287. package/dist/ui/controls/hint-css.generated.js.map +1 -0
  288. package/dist/ui/controls/loading-css.generated.d.ts +2 -0
  289. package/dist/ui/controls/loading-css.generated.d.ts.map +1 -0
  290. package/dist/ui/controls/loading-css.generated.js +4 -0
  291. package/dist/ui/controls/loading-css.generated.js.map +1 -0
  292. package/dist/ui/controls/segmented-css.generated.d.ts +2 -0
  293. package/dist/ui/controls/segmented-css.generated.d.ts.map +1 -0
  294. package/dist/ui/controls/segmented-css.generated.js +4 -0
  295. package/dist/ui/controls/segmented-css.generated.js.map +1 -0
  296. package/dist/ui/controls-css.d.ts +7 -8
  297. package/dist/ui/controls-css.d.ts.map +1 -1
  298. package/dist/ui/controls-css.js +13 -8
  299. package/dist/ui/controls-css.js.map +1 -1
  300. package/dist/ui/css.d.ts +5 -0
  301. package/dist/ui/css.d.ts.map +1 -1
  302. package/dist/ui/css.js +13 -4
  303. package/dist/ui/css.js.map +1 -1
  304. package/dist/ui/datetime-logic.d.ts +100 -0
  305. package/dist/ui/datetime-logic.d.ts.map +1 -0
  306. package/dist/ui/datetime-logic.js +193 -0
  307. package/dist/ui/datetime-logic.js.map +1 -0
  308. package/dist/ui/feedback-css.d.ts +1 -1
  309. package/dist/ui/feedback-css.d.ts.map +1 -1
  310. package/dist/ui/feedback-css.generated.d.ts +2 -0
  311. package/dist/ui/feedback-css.generated.d.ts.map +1 -0
  312. package/dist/ui/feedback-css.generated.js +4 -0
  313. package/dist/ui/feedback-css.generated.js.map +1 -0
  314. package/dist/ui/feedback-css.js +1 -53
  315. package/dist/ui/feedback-css.js.map +1 -1
  316. package/dist/ui/host-data.d.ts +103 -0
  317. package/dist/ui/host-data.d.ts.map +1 -0
  318. package/dist/ui/host-data.js +106 -0
  319. package/dist/ui/host-data.js.map +1 -0
  320. package/dist/ui/host-toast.d.ts +23 -0
  321. package/dist/ui/host-toast.d.ts.map +1 -0
  322. package/dist/ui/host-toast.js +34 -0
  323. package/dist/ui/host-toast.js.map +1 -0
  324. package/dist/ui/index.d.ts +12 -6
  325. package/dist/ui/index.d.ts.map +1 -1
  326. package/dist/ui/index.js +10 -4
  327. package/dist/ui/index.js.map +1 -1
  328. package/dist/ui/marquee-css.d.ts +2 -0
  329. package/dist/ui/marquee-css.d.ts.map +1 -0
  330. package/dist/ui/marquee-css.generated.d.ts +2 -0
  331. package/dist/ui/marquee-css.generated.d.ts.map +1 -0
  332. package/dist/ui/marquee-css.generated.js +4 -0
  333. package/dist/ui/marquee-css.generated.js.map +1 -0
  334. package/dist/ui/marquee-css.js +4 -0
  335. package/dist/ui/marquee-css.js.map +1 -0
  336. package/dist/ui/modal-host.d.ts +30 -0
  337. package/dist/ui/modal-host.d.ts.map +1 -0
  338. package/dist/ui/modal-host.js +101 -0
  339. package/dist/ui/modal-host.js.map +1 -0
  340. package/dist/ui/official.d.ts.map +1 -1
  341. package/dist/ui/official.js +45 -1
  342. package/dist/ui/official.js.map +1 -1
  343. package/dist/ui/panel-dock-css.d.ts +2 -0
  344. package/dist/ui/panel-dock-css.d.ts.map +1 -0
  345. package/dist/ui/panel-dock-css.generated.d.ts +2 -0
  346. package/dist/ui/panel-dock-css.generated.d.ts.map +1 -0
  347. package/dist/ui/panel-dock-css.generated.js +4 -0
  348. package/dist/ui/panel-dock-css.generated.js.map +1 -0
  349. package/dist/ui/panel-dock-css.js +4 -0
  350. package/dist/ui/panel-dock-css.js.map +1 -0
  351. package/dist/ui/panel-dock-logic.d.ts +50 -0
  352. package/dist/ui/panel-dock-logic.d.ts.map +1 -0
  353. package/dist/ui/panel-dock-logic.js +64 -0
  354. package/dist/ui/panel-dock-logic.js.map +1 -0
  355. package/dist/ui/picker-css.d.ts +1 -1
  356. package/dist/ui/picker-css.d.ts.map +1 -1
  357. package/dist/ui/picker-css.generated.d.ts +2 -0
  358. package/dist/ui/picker-css.generated.d.ts.map +1 -0
  359. package/dist/ui/picker-css.generated.js +4 -0
  360. package/dist/ui/picker-css.generated.js.map +1 -0
  361. package/dist/ui/picker-css.js +1 -48
  362. package/dist/ui/picker-css.js.map +1 -1
  363. package/dist/ui/picker-icons.d.ts +12 -0
  364. package/dist/ui/picker-icons.d.ts.map +1 -0
  365. package/dist/ui/picker-icons.js +29 -0
  366. package/dist/ui/picker-icons.js.map +1 -0
  367. package/dist/ui/picker-logic.d.ts +4 -1
  368. package/dist/ui/picker-logic.d.ts.map +1 -1
  369. package/dist/ui/picker-logic.js +1 -2
  370. package/dist/ui/picker-logic.js.map +1 -1
  371. package/dist/ui/resizer.d.ts +3 -1
  372. package/dist/ui/resizer.d.ts.map +1 -1
  373. package/dist/ui/resizer.js +1 -1
  374. package/dist/ui/resizer.js.map +1 -1
  375. package/dist/ui/toast-host.d.ts +24 -0
  376. package/dist/ui/toast-host.d.ts.map +1 -0
  377. package/dist/ui/toast-host.js +20 -0
  378. package/dist/ui/toast-host.js.map +1 -0
  379. package/dist/utils/date.d.ts +8 -0
  380. package/dist/utils/date.d.ts.map +1 -1
  381. package/dist/utils/date.js +16 -0
  382. package/dist/utils/date.js.map +1 -1
  383. package/dist/utils/i18n.d.ts +1 -1
  384. package/dist/utils/i18n.d.ts.map +1 -1
  385. package/dist/utils/i18n.js +437 -18
  386. package/dist/utils/i18n.js.map +1 -1
  387. package/dist/utils/index.d.ts +1 -1
  388. package/dist/utils/index.d.ts.map +1 -1
  389. package/dist/utils/index.js +1 -1
  390. package/dist/utils/index.js.map +1 -1
  391. package/dist/utils/path.d.ts.map +1 -1
  392. package/dist/utils/path.js +1 -0
  393. package/dist/utils/path.js.map +1 -1
  394. package/docs/README.md +12 -5
  395. package/docs/design/architecture.md +38 -8
  396. package/docs/design/copywriting.md +95 -0
  397. package/docs/design/doc-format.md +80 -0
  398. package/docs/design/doc-format.ts +39 -0
  399. package/docs/design/external/dsh-host.md +150 -1
  400. package/docs/design/features.md +4 -17
  401. package/docs/design/methods.md +13 -34
  402. package/docs/design/structure.md +25 -22
  403. package/docs/design/style.md +24 -50
  404. package/docs/help/design.doc.ts +112 -0
  405. package/docs/help/design.md +88 -0
  406. package/docs/help/explorer.doc.ts +136 -0
  407. package/docs/help/explorer.md +68 -0
  408. package/docs/help/index.doc.ts +79 -0
  409. package/docs/help/index.md +28 -0
  410. package/docs/help/integration.doc.ts +114 -0
  411. package/docs/help/integration.md +127 -0
  412. package/docs/help/methods.md +58 -0
  413. package/docs/help/session.doc.ts +154 -0
  414. package/docs/help/session.md +91 -0
  415. package/docs/help/style.md +80 -0
  416. package/docs/help/ui.doc.ts +404 -0
  417. package/docs/help/ui.md +342 -0
  418. package/docs/help/utils.doc.ts +133 -0
  419. package/docs/help/utils.md +96 -0
  420. package/docs/requirements.md +33 -12
  421. package/package.json +44 -3
  422. package/dist/ui/ErrorBoundary.d.ts +0 -22
  423. package/dist/ui/ErrorBoundary.d.ts.map +0 -1
  424. package/dist/ui/ErrorBoundary.js +0 -30
  425. package/dist/ui/ErrorBoundary.js.map +0 -1
  426. package/docs/design/features/design.md +0 -55
  427. package/docs/design/features/explorer.md +0 -73
  428. package/docs/design/features/session.md +0 -70
  429. package/docs/design/features/ui.md +0 -225
  430. package/docs/design/features/utils.md +0 -64
  431. package/docs/examples/integration.md +0 -103
@@ -48,11 +48,16 @@ dsh-plugin-core/
48
48
  - 零件:Button / Input 家族 / Textarea / Checkbox / Segmented / 下拉框 / 搜索框 / 滑轨 /
49
49
  MarqueeText / LiveText / Field(含错误提示)/ resizer / DateTime / TimeRange
50
50
  - 选择器:`Picker`(通用:单选/多选/上限/搜索/分组/空态/降级)、`ModelPicker`、
51
- `WorkspacePicker`(选工作区)、`FilePicker`(选文件)
51
+ `WorkspacePicker`(选工作区);`FilePicker` 已删(2026-10-20 用户:文件选择框没有用)
52
+ - 日期时间:`DateTimePicker`(2026-10-24 新增:单值 / 时间段 × 精度 day/hour/minute/second;
53
+ 数据恒完整本地 ISO 到毫秒、**显示只到精度**;起始端 floor、结束端 ceil)
52
54
  - 「统一某类元素」的控件:`SectionHead` 等
53
- - 反馈件:`Modal` / `Loading` / `toast` / 空态 / 错误边界
54
- - 布局基础:`SidebarLayout` / `SplitPane`(侧栏 + 拖拽拉栏;现只有 `resizer` 函数,组件待补)
55
- - **纯零件,不自己取数** —— 数据由调用方传入
55
+ - 反馈件:`Modal` / `Loading` / `toast` / 空态
56
+ - 布局基础:`PanelDock` / `DockPanel` / `createPanelDock`(**可停靠分栏容器**:多面板并存、按组名寻址、拖拽拉栏、宽度记忆;2026-10-20 拍板用此名,替代早先的 `SidebarLayout` / `SplitPane`)。只做右侧;组名与窗口一对一;默认上限 3,超限拒绝新开;不做 tab 切换 / 自动淘汰 / 浮动层 / 多份同名。**结构照成熟库口径写 children,`open/close` 只传 id,不把页面树塞进调用参数**
57
+ - **通用控件是纯零件,数据由调用方传入**;**领域选择器例外**(2026-10-20 用户拍板反转):
58
+ `ModelPicker` / `WorkspacePicker` 是「现成的包」,接线后**自己取数自己显示**,消费方不再拿数组传 props。
59
+ 接线两处、共用同一 path 常量:宿主 `serveModelCatalog(ctx,{path})`(`llm.listModels` 挂只读路由,
60
+ client 侧 remote 拿不到模型列表)+ client `connectHost(ctx,{modelsPath})`(工作区走官方 `workspaces` 快照)
56
61
 
57
62
  ### 2.3 utils
58
63
 
@@ -62,8 +67,9 @@ dsh-plugin-core/
62
67
 
63
68
  ### 2.4 adv.explorer
64
69
 
65
- - `ExplorerPanel`:文件浏览成品(目录树 + 面包屑 + 文件预览),内部组合 `ui` 的侧栏/拉栏与 Picker
66
- - 选工作区 / 选文件(`WorkspacePicker` / `FilePicker`)在 `ui`,不在这里
70
+ - `FileBrowser` 面板 + 两命令式能力:`openFilePreview`(侧边栏预览,外壳 = 核心 `PanelDock`,2026-10-21 拍板不许自绘外壳 / 拖拽条)/ `pickWorkspaceFile`(锚定弹窗选文件,Promise 返回工作区相对路径),2026-10-20 移植自重做
71
+ - 控件纪律(2026-10-21):核心有的控件一律核心(`Button` ghost 面包屑 / `IconButton` / `Segmented` / `MarqueeText` / `PanelDock`);核心没有的那一项(▾ 选层浮层)严格按兄弟项目度量照抄
72
+ - 选工作区(`WorkspacePicker`)在 `ui`,不在这里;`FilePicker` 已删(2026-10-20)
67
73
 
68
74
  ### 2.5 adv.session
69
75
 
@@ -129,15 +135,25 @@ dsh-plugin-core/
129
135
  (`WorkspaceFilesFace` / `source` 这类最小接口)
130
136
  - 好处:宿主 breaking 时改的是插件「取出那一小块」的一行,包不用动;包也能用假实现做单测
131
137
 
138
+ ### 5.6 第三方依赖(**非**绝对禁止)
139
+
140
+ > **不是「绝对不允许引第三方包」。默认优先用官方件(`@deepseek-ai/dsh-client-ui-primitives`);当某个外部包明显比我们自己手搓的实现更好(更成熟 / 更稳 / 更省事 / 观感更好)时,可以引入——但必须先向用户提建议并说明理由,用户明确拍板后才可引入。**
141
+
142
+ - **引入前提**:该能力确实值得(如 toast 这类成熟库、文件预览要的解释器),自研没有性价比。
143
+ - **引入方式**:作为 core 的**内部依赖封装**,对外只暴露 core 自己的 API(如 `showToast`),**不 re-export 第三方包**,使消费者无法直接引用第三方、保持单点管控。
144
+ - **引入后必须真机验证**:在真实 DSH profile 加载,确认渲染 / 暗色跟随 `body[data-ds-dark-theme]` / 回调 / 与宿主层级无冲突。
145
+ - **仍硬禁止**(与「能否引第三方」是两条独立规则,本条不动):把 `react` / `react-dom` / 官方 `@deepseek-ai/*` 打进包(见 §5.1,会产生第二份 React 实例、Node 下 import 崩)。这条 `external + optional peer` 是宿主运行时决定的。
146
+
132
147
  ## 6. 关键接口约定
133
148
 
134
149
  | 位置 | 约定 |
135
150
  |---|---|
136
151
  | design | `createStyleKit({ id })` → `{ registerStyle, ensureStyles, applyStyle }` |
137
- | ui / ModelPicker | `variant: 'cascade' \| 'flat'`(级联:先厂商后模型 / 平铺:一个下拉列全部);数据统一为 `groups: [{ value, label, options }]`,一份数据两种渲染。**禁止用数字或无意义名** |
138
- | ui / Picker | `mode: 'single' \| 'multiple'`、`max`、分组、搜索、空态、降级 |
139
- | explorer | `WorkspaceFilesFace` 由插件注入(`list` / `stat` / `read` 最小面),组件不抓宿主全局 |
140
- | explorer / WorkspacePicker | `WorkspacePicker({ workspaces, mode, max, onChange })` —— 数据调用方给(工作区列表是 host 侧 `ctx.workspaceRegistry.list()` 取的,要经插件私有通道送到 client,**组件自己取不到**) |
152
+ | ui / ModelPicker | `variant: 'grouped' \| 'cascade'`(分组:一个下拉、完全独立 / 联动:供应商与模型两个下拉联动;2026-10-20 用户拍板两形态都要);**两种形态 onChange 都发最终模型 value**;「默认模型」选项默认提供(`allowDefault:false` 关),选中发 `''`。默认读 connectHost 喂入的真实目录,`groups` 仅作覆盖。**禁止用数字或无意义名** |
153
+ | ui / Picker | `mode: 'single' \| 'multiple'`、`max`(到上限已选项仍可反选)、`searchable`(搜索框开关)、`icon`(触发器前置 icon)、选项级 `icon`、`hint`(问号提示内置)、分组、空态、降级 |
154
+ | ui / DateTimePicker | `mode: 'single' \| 'range'`、`precision: 'day' \| 'hour' \| 'minute' \| 'second'`(同时管弹层步进、显示截断与默认宽度);single 传 `string \| null`、range 传 `[start, end] \| null`(本地 ISO 到毫秒);草稿态「确定」才 onChange,没选日期不传数据;起端补零 / 止端补满(day ⇒ 止 `23:59:59.999`) |
155
+ | explorer | `WorkspaceFilesFace` 由插件注入(`list` / `stat` / `read` 最小面),组件不抓宿主全局;对外 = 两命令式能力 `openFilePreview`(侧边栏预览)+ `pickWorkspaceFile`(Promise 选文件,回传工作区相对路径),共用同一 `FileBrowser` 面板(2026-10-20 拍板) |
156
+ | explorer / WorkspacePicker | `WorkspacePicker({ mode, max, onChange, allowDefault, defaultLabel, … })` —— **无数据参数**:connectHost 接线后自动订官方 `workspaces` 服务快照,选中值为 `workspaceId`;「所有工作区」默认项默认提供、选中发 `''`(2026-10-20) |
141
157
  | session | `SessionPreview({ sessionId, source, variant })` —— `source` = 取数能力接口(会话预览内部有交互:传输文件等,光有静态消息流不够) |
142
158
 
143
159
  ## 7. 分期与任务切分
@@ -147,14 +163,19 @@ dsh-plugin-core/
147
163
  | 期 | 内容 | 状态 |
148
164
  |---|---|---|
149
165
  | 骨架 | package.json exports / tsconfig / 构建出 dist | ✅ 已完成(`tsc` 出 ESM + d.ts,不走 tsdown) |
150
- | v1 | `design` + `utils` + `ui` | ✅ 已完成(零件 + Picker / ModelPicker + Modal / toast / 空态 / 错误边界) |
166
+ | v1 | `design` + `utils` + `ui` | ✅ 已完成(零件 + Picker / ModelPicker + Modal / toast / 空态) |
151
167
  | v2 | `explorer`(用户拍板要抽) | ✅ 已完成(浏览面板 + 预览;**选择器后移至 ui**,见 §2.4) |
168
+ | v2+ | `explorer` 重做(2026-10-20) | ✅ 已完成(FileBrowser 面板 + `openFilePreview` / `pickWorkspaceFile` 两能力 + 全量预览:md / 代码高亮 / HTML / PDF / Office;官方件经 `./ui/official` 子路径) |
152
169
  | v3 | `session` | ⚠️ **半完成**:契约与三种承载已好,**官方会话 UI 镜像未搬**(只做最简渲染) |
153
170
  | 文档 | README 接入指南 | ✅ 已完成 |
154
171
 
155
- **未做**(按重要性):真实插件接入验证 / 会话 UI 镜像 / 代码高亮与 PDF 预览 / 类名隔离 /
172
+ **未做**(按重要性):消费者插件接入 / 会话 UI 镜像 / 类名隔离 /
156
173
  设置页骨架(等第二个消费者)/ npm 发布流程。详见 README「还没做的事」。
157
174
 
175
+ > 说明:`dsh-plugin-core-demo` 作为真实插件已在宿主内跑通配置面板、侧栏入口、整页预览,
176
+ > 已证明 core 在宿主里可用;上面「消费者插件接入」专指把 `dsh-task-dispatch-table` 等迁到 core、
177
+ > 删掉它们各自维护的副本——那是另一桩事,不在本轮范围。
178
+
158
179
  ## 8. 验收口径
159
180
 
160
181
  - 每个子包:构建通过 + 类型检查通过 + 一个 smoke 自检(新逻辑必留)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-plugin-core",
3
- "version": "0.2.13",
3
+ "version": "0.3.0",
4
4
  "packageManager": "pnpm@12.3.4",
5
5
  "description": "Shared base for DSH plugins: design tokens, UI controls, utils, workspace explorer, session preview",
6
6
  "keywords": [
@@ -28,6 +28,18 @@
28
28
  "types": "./dist/ui/index.d.ts",
29
29
  "default": "./dist/ui/index.js"
30
30
  },
31
+ "./ui/official": {
32
+ "types": "./dist/ui/official.d.ts",
33
+ "default": "./dist/ui/official.js"
34
+ },
35
+ "./ui/code-viewer": {
36
+ "types": "./dist/ui/CodeViewer.d.ts",
37
+ "default": "./dist/ui/CodeViewer.js"
38
+ },
39
+ "./ui/host": {
40
+ "types": "./dist/ui/host-toast.d.ts",
41
+ "default": "./dist/ui/host-toast.js"
42
+ },
31
43
  "./utils": {
32
44
  "types": "./dist/utils/index.d.ts",
33
45
  "default": "./dist/utils/index.js"
@@ -43,6 +55,10 @@
43
55
  "./session": {
44
56
  "types": "./dist/session/index.d.ts",
45
57
  "default": "./dist/session/index.js"
58
+ },
59
+ "./host": {
60
+ "types": "./dist/host/index.d.ts",
61
+ "default": "./dist/host/index.js"
46
62
  }
47
63
  },
48
64
  "files": [
@@ -50,9 +66,15 @@
50
66
  "docs"
51
67
  ],
52
68
  "scripts": {
53
- "build": "tsc -p tsconfig.json",
54
- "typecheck": "tsc -p tsconfig.json --noEmit",
69
+ "gen:css": "node scripts/gen-css.mjs",
70
+ "build": "node scripts/gen-css.mjs && node scripts/gen-docs.mjs && tsc -p tsconfig.json",
71
+ "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.demo.json --noEmit",
72
+ "typecheck:demo": "tsc -p tsconfig.demo.json --noEmit",
73
+ "pretest": "node scripts/gen-css.mjs --check && node scripts/gen-docs.mjs --check && tsc -p tsconfig.json && tsc -p tsconfig.demo.json --noEmit",
55
74
  "test": "node --test test/*.test.mjs",
75
+ "prepublishOnly": "pnpm run build && pnpm test",
76
+ "typecheck:docs": "tsc -p tsconfig.docs.json",
77
+ "gen:docs": "node scripts/gen-docs.mjs",
56
78
  "build:demo": "node packages/demo/build.mjs"
57
79
  },
58
80
  "peerDependencies": {
@@ -67,9 +89,28 @@
67
89
  "optional": true
68
90
  }
69
91
  },
92
+ "dependencies": {
93
+ "@codemirror/lang-css": "^6.3.1",
94
+ "@codemirror/lang-html": "^6.4.12",
95
+ "@codemirror/lang-javascript": "^6.2.5",
96
+ "@codemirror/lang-json": "^6.0.2",
97
+ "@codemirror/lang-markdown": "^6.5.2",
98
+ "@codemirror/lang-python": "^6.2.1",
99
+ "@codemirror/lang-yaml": "^6.1.3",
100
+ "@codemirror/language": "^6.13.1",
101
+ "@codemirror/legacy-modes": "^6.5.5",
102
+ "@codemirror/state": "^6.7.6",
103
+ "@codemirror/view": "^6.43.15",
104
+ "@floating-ui/react": "^0.27.20",
105
+ "@lezer/highlight": "^1.2.5",
106
+ "@uiw/react-codemirror": "^4.25.12",
107
+ "sonner": "^2.0.8"
108
+ },
70
109
  "devDependencies": {
71
110
  "@types/react": "^18.3.0",
111
+ "@types/react-dom": "^18.3.7",
72
112
  "esbuild": "^0.28.2",
113
+ "lightningcss": "^1.33.0",
73
114
  "react": "^18.3.1",
74
115
  "react-dom": "^18.3.1",
75
116
  "typescript": "5.9.3"
@@ -1,22 +0,0 @@
1
- import { Component, type ErrorInfo, type ReactNode } from 'react';
2
- import { type Translate } from '../utils/i18n.js';
3
- export interface ErrorBoundaryProps {
4
- children?: ReactNode;
5
- /** 兜底渲染;不传就用内置错误块(带「重试」)。 */
6
- fallback?: (error: Error, retry: () => void) => ReactNode;
7
- onError?: (error: Error, info: ErrorInfo) => void;
8
- translate?: Translate;
9
- }
10
- interface State {
11
- error: Error | null;
12
- }
13
- /** 错误边界:子组件渲染抛错时不让整个插件白屏。 */
14
- export declare class ErrorBoundary extends Component<ErrorBoundaryProps, State> {
15
- state: State;
16
- static getDerivedStateFromError(error: Error): State;
17
- componentDidCatch(error: Error, info: ErrorInfo): void;
18
- private readonly retry;
19
- render(): ReactNode;
20
- }
21
- export {};
22
- //# sourceMappingURL=ErrorBoundary.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ErrorBoundary.d.ts","sourceRoot":"","sources":["../../src/ui/ErrorBoundary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAsB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAErF,OAAO,EAAK,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEpD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK,SAAS,CAAA;IACzD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACjD,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED,UAAU,KAAK;IACb,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CACpB;AAED,6BAA6B;AAC7B,qBAAa,aAAc,SAAQ,SAAS,CAAC,kBAAkB,EAAE,KAAK,CAAC;IAC5D,KAAK,EAAE,KAAK,CAAkB;IAEvC,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAI3C,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI;IAI/D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAErB;IAEQ,MAAM,IAAI,SAAS;CAiB7B"}
@@ -1,30 +0,0 @@
1
- import { Component, createElement as h } from 'react';
2
- import { ensureControls } from './css.js';
3
- import { t } from '../utils/i18n.js';
4
- /** 错误边界:子组件渲染抛错时不让整个插件白屏。 */
5
- export class ErrorBoundary extends Component {
6
- constructor() {
7
- super(...arguments);
8
- this.state = { error: null };
9
- this.retry = () => {
10
- this.setState({ error: null });
11
- };
12
- }
13
- static getDerivedStateFromError(error) {
14
- return { error };
15
- }
16
- componentDidCatch(error, info) {
17
- this.props.onError?.(error, info);
18
- }
19
- render() {
20
- const err = this.state.error;
21
- if (err === null)
22
- return this.props.children ?? null;
23
- ensureControls();
24
- if (this.props.fallback !== undefined)
25
- return this.props.fallback(err, this.retry);
26
- const tt = this.props.translate ?? t;
27
- return h('div', { className: 'dshpc-error' }, h('div', null, `${tt('errorTitle')}:${err.message}`), h('button', { type: 'button', className: 'dshpc-error__retry', onClick: this.retry }, tt('errorRetry')));
28
- }
29
- }
30
- //# sourceMappingURL=ErrorBoundary.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ErrorBoundary.js","sourceRoot":"","sources":["../../src/ui/ErrorBoundary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,IAAI,CAAC,EAAkC,MAAM,OAAO,CAAA;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,EAAE,CAAC,EAAkB,MAAM,kBAAkB,CAAA;AAcpD,6BAA6B;AAC7B,MAAM,OAAO,aAAc,SAAQ,SAAoC;IAAvE;;QACW,UAAK,GAAU,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;QAUtB,UAAK,GAAG,GAAS,EAAE;YAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAChC,CAAC,CAAA;IAmBH,CAAC;IA7BC,MAAM,CAAC,wBAAwB,CAAC,KAAY;QAC1C,OAAO,EAAE,KAAK,EAAE,CAAA;IAClB,CAAC;IAEQ,iBAAiB,CAAC,KAAY,EAAE,IAAe;QACtD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC;IAMQ,MAAM;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;QAC5B,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAA;QACpD,cAAc,EAAE,CAAA;QAChB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QAClF,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAA;QACpC,OAAO,CAAC,CACN,KAAK,EACL,EAAE,SAAS,EAAE,aAAa,EAAE,EAC5B,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,EACpD,CAAC,CACC,QAAQ,EACR,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,EACxE,EAAE,CAAC,YAAY,CAAC,CACjB,CACF,CAAA;IACH,CAAC;CACF"}
@@ -1,55 +0,0 @@
1
- # design —— 样式层
2
-
3
- 零 React、无组件。装的是「值 + 注入机制」:token 变量表、注入器工厂、主题判据。
4
-
5
- 只想统一配色/尺寸但自己写组件的插件,只引这一个就够。
6
-
7
- ## 导出
8
-
9
- | 符号 | 说明 |
10
- |---|---|
11
- | `createStyleKit(options)` | 领一套本插件专属的样式设施(**必调**) |
12
- | `DARK_THEME_SELECTOR` | 明暗判据选择器常量 `body[data-ds-dark-theme]` |
13
- | `type StyleKit` / `StyleKitOptions` | 类型 |
14
-
15
- ## `createStyleKit(options)`
16
-
17
- | 参数 | 类型 | 必填 | 默认 | 说明 |
18
- |---|---|---|---|---|
19
- | `id` | `string` | 是 | — | `<style>` 标签 id,**多插件同页靠它互不覆盖**,必须插件内唯一。空串抛错 |
20
-
21
- 返回的 `StyleKit`:
22
-
23
- | 成员 | 说明 |
24
- |---|---|
25
- | `id` | 回显 |
26
- | `tokensCss` | 已替换前缀的 token CSS 文本 |
27
- | `cssVar(name)` | 拼变量名:`cssVar('fg')` ⇒ `--acme-fg` |
28
- | `registerStyle(domain, css)` | 登记一个域的 CSS;同名重复登记 = 覆盖 |
29
- | `ensureStyles()` | 确保标签已挂载且内容最新(幂等;无 document 静默跳过) |
30
- | `applyStyle(domain, css)` | 登记 + 立刻挂载 |
31
- | `dispose()` | 撤掉标签并清空登记域(插件卸载 / HMR 时用) |
32
-
33
- ## 最小可用
34
-
35
- ```ts
36
- import { createStyleKit } from 'dsh-plugin-core/design'
37
-
38
- const kit = createStyleKit({ id: 'dsh-task-reminder-ui' })
39
- kit.applyStyle('tokens', kit.tokensCss)
40
- // 之后自己的样式域:
41
- kit.applyStyle('widget', '.widget{color:var(--dshpc-fg)}')
42
- ```
43
-
44
- ## token 口径
45
-
46
- token 来自 `dsh-task-dispatch-table/src/client/ui/tokens.ts` 的整段提取(颜色 / 尺寸 / 字号 /
47
- 层级),**含深色覆盖段**。取值一律走 `var(--<prefix>-*)`,不在规则里写死颜色值。
48
-
49
- 完整清单与命名口径见 [`../style.md`](../style.md)。
50
-
51
- ## 定制边界
52
-
53
- - token 的**前缀固定 `dshpc`**(不参数化、不按插件改名);token 的**内容**(有哪些变量、值是什么)
54
- 是本包定的审美标准,消费方通过覆盖变量值来适配,不要改本包源码。
55
- - 要整套换肤:给同一批变量名赋新值即可,不需要 fork。
@@ -1,73 +0,0 @@
1
- # explorer —— 工作区浏览
2
-
3
- 依赖 `ui` + `design`。装的是「文件浏览」这个成品:目录树 + 面包屑 + 文件预览。
4
- 选工作区 / 选文件在 `ui`(`WorkspacePicker` / `FilePicker`),不在这里。
5
-
6
- ## 宿主契约:`WorkspaceFilesFace`
7
-
8
- **由插件从 `ctx` 取出这一小块传进来**(不要传整个 `ctx`——那会把本包和宿主版本焊死)。
9
- 宿主 breaking 时改的是插件「取出」的一行。
10
-
11
- | 方法 | 签名要点 |
12
- |---|---|
13
- | `read` | `(sessionId, path, range, signal?)` —— ⚠️ `range` **必传**(官方按位置参数个数校验,省了会被远端拒),读全量传 `{}` |
14
- | `readBytes` | `(sessionId, path, options, signal?)` —— `options` 同样必传;不传 range 读全量 |
15
- | `list` | `(sessionId, path, signal?)` ⇒ `{ path, entries: [{ name, type, size? }], truncated }`;list 一个文件会报 not-directory |
16
- | `stat?` | 可选;宿主过旧没有此方法时降级。只认普通文件,目录会抛 |
17
-
18
- 类型与工具(`types.ts`):`WorkspaceFilesFace` / `DirEntry` / `Listing` / `PreviewKind`。
19
-
20
- 路径方法 `crumbsOf` / `parentOf` / `joinPath` / `extOf` / `mimeOf` 是纯方法(无 UI),
21
- 建议迁入 `utils/`(`path` 域,待定);`previewKindOf`(决定用哪种预览器)是文件浏览的业务判断,留在内部。
22
-
23
- ## `ExplorerPanel`
24
-
25
- | 参数 | 类型 | 默认 | 说明 |
26
- |---|---|---|---|
27
- | `workspaceFiles` | `WorkspaceFilesFace` | — | 必填,注入的宿主能力 |
28
- | `sessionId` | `string` | — | 必填 |
29
- | `path` | `string` | `''` | 起始路径,`''` = 工作区根 |
30
- | `onSelect` | `(path: string \| null) => void` | — | 选中文件 / 清空选中时回调 |
31
- | `onOpenFile` | `(path: string) => void` | — | 点文件时回调(与 `onSelect` 同时触发) |
32
- | `emptyText` | `string` | 内置「空目录」 | — |
33
- | `translate` | `Translate` | 内置 | — |
34
-
35
- 提供:面包屑(可点回跳,含上一级 / 刷新)、目录树(目录优先排序 + 显示体积)、
36
- 预览区(文本 / 图片 / 不支持兜底)。
37
-
38
- ```tsx
39
- import { ExplorerPanel } from 'dsh-plugin-core/explorer'
40
-
41
- h(ExplorerPanel, {
42
- workspaceFiles, // 从 ctx 取出
43
- sessionId,
44
- path: '',
45
- onSelect: (p) => setCurrent(p),
46
- })
47
- ```
48
-
49
- ## 选工作区 / 选文件 —— 在 `ui`,不在这里
50
-
51
- `WorkspacePicker` / `FilePicker` 已移到 `dsh-plugin-core/ui`(见 [`ui.md`](ui.md#workspacepicker--filepicker))。
52
-
53
- 理由:它们只是 `Picker` 的薄封装(select),不碰目录树 / 预览 / `WorkspaceFilesFace`——
54
- 放在 ui 里,需要「选工作区」的地方不必引入整个 explorer。explorer 内部要用,一样从 ui 引。
55
-
56
- ## 单文件预览(`dsh-plugin-core/explorer/preview`)
57
-
58
- `FilePreview({ workspaceFiles, sessionId, path, translate? })` —— 按扩展名分派:
59
- 图片 ⇒ `readBytes` 转 Blob(卸载时 `revokeObjectURL`);文本类 ⇒ `read` 取正文;
60
- 认不出的二进制 ⇒ 明确「暂不支持预览」,不硬撑。
61
-
62
- ## 已知限制(选型前必读)
63
-
64
- - **无代码语法高亮**(不引 `@codemirror/*`),代码文件按纯文本渲染。
65
- - **不支持 PDF / Office 预览**(那要依赖宿主 `officeToPdf`)。
66
- - 目录树**无懒加载 / 虚拟滚动**,超大目录(官方上限 2000 条)会一次渲染完。
67
- - 面包屑超宽时**简单换行**,没有「折叠为当前层名 + 下拉选层」。
68
-
69
- ## 定制边界
70
-
71
- - 宿主能力接口稳定 ⇒ 换宿主版本通常只改插件侧「取出」那一行。
72
- - 要加预览类型:在调用方自己渲染(用 `previewKindOf` 判断),或提需求进本包。
73
- - 不要 fork 面板:内部与 `ui` 的样式域耦合,fork 后跟不上 token 调整。
@@ -1,70 +0,0 @@
1
- # session —— 会话预览
2
-
3
- 依赖 `ui`。把「看一眼某个会话、看完即关」这件事封装起来:自动执行的任务想回看这次会话,
4
- 不想开新窗口(回来还得找)。
5
-
6
- ## 定位
7
-
8
- **弹窗只是当前的呈现方式**,不是这个包的定义。将来也可能是侧边栏或整页 ⇒ 用 `variant` 切换。
9
- 「纯 Modal 控件」在 `ui` 里,这里装的是「会话预览」这个功能。
10
-
11
- ## 宿主契约:`SessionSource`
12
-
13
- | 方法 | 签名 | 必填 |
14
- |---|---|---|
15
- | `listMessages` | `(sessionId, signal?) => Promise<SessionMessage[]>` | 是 |
16
- | `download?` | `(sessionId, path, signal?) => Promise<Uint8Array>` | 否(宿主没这能力就不显示下载钮) |
17
-
18
- 数据形状:
19
-
20
- ```ts
21
- interface SessionMessage {
22
- id: string
23
- role: 'user' | 'assistant' | 'tool' | 'system'
24
- text: string // 纯文本正文
25
- createdAt?: string
26
- attachments?: { name: string; path: string; bytes?: number }[]
27
- }
28
- ```
29
-
30
- **为什么注入能力而不是传静态数据**:会话预览内部有交互(附件下载 / 打开文件),
31
- 光有消息流不够用,它必须能回调宿主。
32
-
33
- ## `SessionPreview`
34
-
35
- | 参数 | 类型 | 默认 | 说明 |
36
- |---|---|---|---|
37
- | `sessionId` | `string` | — | 必填 |
38
- | `source` | `SessionSource` | — | 必填,注入的取数能力 |
39
- | `variant` | `'modal' \| 'sidebar' \| 'page'` | `modal` | 承载方式 |
40
- | `title` | `ReactNode` | `sessionId` | modal 形态的标题 |
41
- | `onClose` | `() => void` | — | 关闭回调 |
42
- | `renderMessage` | `(m: SessionMessage) => ReactNode` | 内置最简渲染 | ★ **定制扩展点**:富内容(工具卡 / 代码块 / 推理行)走这里 |
43
- | `onOpenFile` | `(path: string) => void` | — | 点附件「打开」(通常交给 explorer) |
44
- | `translate` | `Translate` | 内置 | — |
45
-
46
- 三态齐备:加载中 / 失败(带重试)/ 空。
47
-
48
- ```tsx
49
- import { SessionPreview } from 'dsh-plugin-core/session'
50
-
51
- h(SessionPreview, {
52
- sessionId,
53
- source, // 从 ctx 取出后注入
54
- variant: 'modal',
55
- onClose: () => setOpen(false),
56
- renderMessage: (m) => h(RichMessage, { message: m }), // 可选
57
- })
58
- ```
59
-
60
- ## 已知限制(重要)
61
-
62
- - **默认渲染只有「角色 + 纯文本 + 附件」**——官方会话 UI 的完整镜像(工具卡 / 代码块 / 推理行等)
63
- **还没搬进本包**。要长得像官方会话,请用 `renderMessage` 自己渲染,或等后续版本。
64
- - 无消息分页 / 增量加载,长会话一次全渲染。
65
-
66
- ## 定制边界
67
-
68
- - `renderMessage` 就是为「特殊定制」留的口子:换渲染器不用 fork 面板。
69
- - 换承载方式用 `variant`,不用改调用方结构。
70
- - `SessionSource` 的方法签名若与宿主对不上,在插件侧做适配层——**不要改本包接口去贴某个宿主导出版本**。