dsh-plugin-core 0.2.14 → 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 -11
  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
@@ -1,225 +0,0 @@
1
- # ui —— 基础控件
2
-
3
- 依赖 `design`。装的是「用 token 搭出来的零件」——直接用,不再自己写原生控件。
4
-
5
- **纯零件,不自己取数**:选项、当前值都经 props 给(数据要跨 host↔client 边界,通道是插件私有的)。
6
-
7
- ## 使用前必做(一次)
8
-
9
- ```ts
10
- import { createStyleKit } from 'dsh-plugin-core/design'
11
- import { ensureControls, setStyleKit } from 'dsh-plugin-core/ui'
12
-
13
- setStyleKit(createStyleKit({ id: 'dsh-task-reminder-ui' }))
14
- ensureControls()
15
- ```
16
-
17
- 漏了也不白屏(控件内部会补调),但样式可能晚一帧。
18
-
19
- ## 控件清单与 props
20
-
21
- > 完整签名以 TypeScript 声明为准(`src/ui/*.ts`),下表是导读。
22
- > 「追加 class/style」类参数一律**只允许补布局,不许覆盖皮肤**。
23
-
24
- ### Button / IconButton
25
-
26
- 10 档外观(2026-10-19 扩充,对齐主流 UI 框架的分类口径):
27
-
28
- | 类别 | `variant` 档 |
29
- |---|---|
30
- | 实心(语义色底) | `primary`(黑)/ `secondary`(灰)/ `danger`(红)/ `success`(绿)/ `warning`(黄)/ `info`(蓝) |
31
- | 线框 | `outline`(中性描边)/ `danger-outline`(红字描边,旧别名 `danger-ink` 仍可用) |
32
- | 无底 | `ghost`(灰字,hover 起底)/ `link`(行内链接) |
33
-
34
- | 参数 | 类型 | 默认 | 说明 |
35
- |---|---|---|---|
36
- | `variant` | 上表 10 档 | `outline` | 外观档 |
37
- | `size` | `'sm' \| 'md' \| 'lg'` | `lg` | 高度档(24 / 28 / 32,有边无边同高) |
38
- | `icon` | `ReactNode` | — | 前置图标(官方图标组件 / 字符串均可) |
39
- | `iconRight` | `ReactNode` | — | 后置图标(展开箭头、外链) |
40
- | `color` | `string` | — | 自定义主色(任意 CSS 色值):实心档作底色,线框 / 无底档作主色 |
41
- | `loading` | `boolean` | `false` | 文案前显示同色小圈,并自动 `disabled` |
42
- | `block` | `boolean` | `false` | 撑满父宽 |
43
- | `children` | `ReactNode` | — | 文案(由调用方按语言给:中文出中文、英文出英文,中英混排也支持) |
44
- | `…rest` | 原生 button 属性 | — | `type` / `disabled` / `title` / `aria-*` / `onClick` 原样透传 |
45
-
46
- hover / active 走 token 派生色(**不用 opacity**),幅度见 `docs/design/style.md` §交互态颜色。
47
-
48
- `IconButton`:`variant: 'plain' | 'outline' | 'danger'`(默认 `plain`)、`size`(默认 `lg`)、`icon`(必填)、
49
- `label`(必填,无障碍名兼 title)。
50
-
51
- ### Segmented
52
-
53
- `items: readonly { value: T; label: ReactNode }[]`(必填)+ 单选(`value: T` / `onChange: (v: T) => void`)
54
- 或多选(`multiple: true` + `value: T[]`)。另有 `size`(默认 `lg`)、`variant: 'default' | 'inset'`、
55
- `block`(撑满等分)、`label`(无障碍组名)、`id`、`disabled`。
56
-
57
- 选中片 = `--dshpc-surface-raised`(与兄弟项目同取法)+ 1px 描边 + 浮起阴影:两种主题下都比轨道亮一档,
58
- 在卡片面上靠描边与阴影分界。未选中项 hover 起浅底(inset 用深一档,避免与轨道同色)。
59
-
60
- ### Input 家族(`Field.ts`)
61
-
62
- | 组件 | 关键参数 | 说明 |
63
- |---|---|---|
64
- | `Input` | `value` `onChange(v)` `size`(默认 `sm`)`error` `disabled` `type` `placeholder` `inputRef` `onKeyDown` `onBlur` `aria-label` `title` | 基础输入框;`error` 描红 |
65
- | `PrefixedInput` | 同 `Input` + `prefix: string` | 前置文案(`https://` / `C:\`) |
66
- | `NumberInput` | `value: number` `onChange(v)` `min` `max` `step`(默认 1)`inputWidth` `suffix` `label` `decreaseLabel` `increaseLabel` | 已 clamp;失焦回弹草稿 |
67
- | `Textarea` | `value` `onChange(v)` `placeholder` `error` `disabled` `rows` `spellCheck`(默认关)`aria-label` | — |
68
- | `Checkbox` | `checked` `onChange(next)` `label` `accentColor` `disabled` | — |
69
- | `fieldMetricsOf(size)` | `→ { height, font, line, icon, gap }` | 自己搭同款输入框时对齐尺寸 |
70
-
71
- ### Picker(通用选择器)
72
-
73
- 单选 / 多选 / 上限 / 搜索 / 分组 / 空态 / 降级,**自绘**(不依赖官方 Menu)。
74
-
75
- | 参数 | 类型 | 默认 | 说明 |
76
- |---|---|---|---|
77
- | `groups` / `options` | `PickerGroup[]` / `PickerOption[]` | — | 二选一;`options` 会被当成一个无标题组 |
78
- | `value` / `defaultValue` | `string \| string[]` | — | 给了 `value` 即受控;否则内部管 |
79
- | `onChange` | `(v: string \| string[]) => void` | — | 单选回 `string`,多选回 `string[]` |
80
- | `mode` | `'single' \| 'multiple'` | `single` | — |
81
- | `max` | `number` | — | 多选上限;到上限其余项置灰 + 提示(不静默截断) |
82
- | `searchable` | `boolean` | `false` | 显示搜索框 |
83
- | `clearable` | `boolean` | `false` | 单选时列表顶部多一项「不选」 |
84
- | `placeholder` | `string` | 内置「请选择」 | — |
85
- | `degraded` | `boolean` | `false` | 候选可能不完整 ⇒ 顶部如实提示,不编造 |
86
- | `disabled` | `boolean` | `false` | — |
87
- | `size` | `'sm' \| 'md' \| 'lg'` | `md` | — |
88
- | `placement` | `'down' \| 'up'` | `down` | 触发器靠近视口底部时用 `up` |
89
- | `closeOnSelect` | `boolean` | 多选 `false` / 单选恒关 | 选中后是否收起 |
90
- | `showLabels` | `boolean` | `true` | 多选时触发器列出已选项,而非只显示「已选 N 项」 |
91
- | `className` | `string` | — | 定制宽度 / 外边距 |
92
- | `ariaLabel` | `string` | — | 无障碍名 |
93
- | `translate` | `Translate` | 内置 | 覆盖文案 |
94
-
95
- 键盘:`Esc` 关、`↑↓` 移游标、`Enter` 选。
96
-
97
- 纯逻辑也可单用:`toGroups` / `flattenOptions` / `filterGroups` / `toggleValue` / `labelsOf` / `groupOf`。
98
-
99
- ### WorkspacePicker / FilePicker
100
-
101
- 领域选择器——`Picker` 的薄封装(**领域数据 + 通用选择器交互**,与 explorer 的浏览/预览无关)。
102
-
103
- | 组件 | 数据参数 | 其余 |
104
- |---|---|---|
105
- | `WorkspacePicker` | `workspaces: readonly string[]` | `value` `defaultValue` `mode` `max` `onChange` `clearable` `searchable` `disabled` `size` `placement` `className` `placeholder` `translate` |
106
- | `FilePicker` | `files: readonly string[]` | 同上 |
107
-
108
- **为什么在 ui 而不在 explorer**:它俩只是 select,不碰目录树 / 预览 / `WorkspaceFilesFace`。
109
- 放在 ui 里,需要「选工作区」的地方不必引入整个 explorer;explorer 内部要用也一样从 ui 引。
110
-
111
- **数据由调用方给**:工作区列表是 host 侧 `ctx.workspaceRegistry.list()` 取的,要经插件自己的 HTTP 通道
112
- 送到 client,那条通道是插件私有的,组件取不到。
113
-
114
- ```tsx
115
- import { WorkspacePicker } from 'dsh-plugin-core/ui'
116
-
117
- h(WorkspacePicker, { workspaces: wsList, value: cur, onChange: setCur })
118
- ```
119
-
120
- ### ModelPicker
121
-
122
- `groups: PickerGroup[]`(一组 = 一个供应商)+ `variant: 'cascade' | 'flat'`(默认 `flat`)。
123
-
124
- - `flat`:一个下拉列全部
125
- - `cascade`:一行两个下拉,先选供应商再选模型;换供应商会自动清空已选模型
126
-
127
- 其余参数透传给 `Picker`:`value` / `defaultValue` / `onChange` / `clearable` / `searchable` /
128
- `size` / `placement` / `className` / `disabled` / `degraded` / `translate`。
129
-
130
- 「跟随宿主」这类默认项由调用方自己往 `groups` 里塞一项——编码口径(如 `provider/id`)也归调用方。
131
-
132
- ### Card / StripCard / Chip
133
-
134
- **两种卡片外观,拆成两个独立组件**(消费方要用哪个拖哪个,不搞 variant 二合一):
135
-
136
- | 组件 | 外观 | 色条 |
137
- |---|---|---|
138
- | `Card` | 圆角 + 1px 边框 | 短条,上下留距 8px |
139
- | `StripCard` | 无圆角、无边框(贴边) | **通高**(贴顶到底) |
140
-
141
- 两者共享同一套 props:
142
-
143
- | 参数 | 类型 | 默认 | 说明 |
144
- |---|---|---|---|
145
- | `accent` | 5 档 or 任意 CSS 色值 | `'business'` | 档位:`business`(蓝) / `success`(绿) / `warning`(黄) / `danger`(红) / `neutral`(灰),映射到 design 的 token;也可传 `'#f59e0b'` 这类自定义值 |
146
- | `expanded` | `boolean` | `false` | 展开态(箭头朝向 + `panel` 显隐) |
147
- | `onToggle` | `() => void` | — | 传了才显示右侧折叠箭头;**展开状态由调用方管** |
148
- | `action` | `ReactNode` | — | 右上角操作区(「跳过」「查看会话」) |
149
- | `children` | `ReactNode` | — | 主内容,排版随你 |
150
- | `panel` | `ReactNode` | — | 展开后才显示的额外内容 |
151
- | `className` / `style` | — | — | 追加类 / 样式 |
152
-
153
- 色条是绝对定位 + `top/bottom`,**跟着内容高度自适应**;上下是否留距由外观决定(`Card` 留 8px、`StripCard` 通高)。
154
- 颜色全走 token ⇒ **亮暗自动跟随宿主**(`body[data-ds-dark-theme]`),不需要调用方处理。
155
-
156
- ```tsx
157
- import { Card, Chip, StripCard } from 'dsh-plugin-core/ui'
158
-
159
- h(Card, {
160
- accent: 'warning',
161
- action: h(Button, { size: 'sm', variant: 'ghost' }, '跳过'),
162
- },
163
- h('div', null, '标题'),
164
- h(Chip, null, '#npm'),
165
- )
166
-
167
- h(StripCard, {
168
- accent: 'success',
169
- expanded: open, onToggle: () => setOpen(!open),
170
- panel: h('div', null, '展开详情'),
171
- }, h('div', null, '标题 + 元信息'))
172
- ```
173
-
174
- `Chip`:小标签,token 用现成的 `--dshpc-chip-bg`;传 `onClick` 才是可点的。
175
-
176
- **语义边界**:`Chip` 只管「胶囊标签」这一件事。**只给图标的小按钮请用 `IconButton`**(`.dshpc-iconbtn`),
177
- 不要拿 `Chip` 当图标底板——同一个类名两套皮肤(28px 定宽 vs 胶囊形)会互相覆盖、把文字挤成一列。
178
- 现在一套皮肤只允许出现一次,由 `test/css-contract.test.mjs` 盯着。
179
-
180
- ### Modal
181
-
182
- | 参数 | 类型 | 默认 | 说明 |
183
- |---|---|---|---|
184
- | `title` | `ReactNode` | — | 标题 |
185
- | `onClose` | `() => void` | — | 不传则不显示关闭钮 |
186
- | `closeOnMask` | `boolean` | `true` | 点遮罩关闭;误触代价大的场景设 `false` |
187
- | `escClose` | `boolean` | `true` | Esc 关闭 |
188
- | `maxWidth` | `string` | `min(960px, 92vw)` | — |
189
- | `hideHeader` | `boolean` | `false` | 不渲染头部(沉浸式) |
190
- | `footer` | `ReactNode` | — | 底栏(按钮区) |
191
- | `children` | `ReactNode` | — | 主体 |
192
-
193
- 自绘 overlay,**不用 react-dom 的 portal**(避免多一个必需依赖)。
194
-
195
- ### 反馈件
196
-
197
- **FieldHint(问号提示)**:独立组件,不属于 Input 家族——标题后、按钮后、文字后、输入框后随处可挂。
198
- 气泡 = **官方 Tooltip 本体**(2026-10-19 拍板「必须与悬停提示用同一个」):插件启动时
199
- `setTooltipRenderer((props) => h(OfficialTooltip, props))` 把官方组件交给 core,`side` / `align` / `maxWidth` 可透传。
200
- **不做降级兜底**(用户同日明确:宿主内官方包恒在;官方改版 = 重新适配,不另造一套)——
201
- 未注入 renderer 的非宿主环境(node 自检)只出问号图标、没有气泡。
202
-
203
- core 保持零官方依赖:官方 Tooltip 只能由插件侧注入(`src/ui/tooltip.ts`),不许静态 import。
204
-
205
- ### 反馈件
206
-
207
- | 组件 / 函数 | 说明 |
208
- |---|---|
209
- | `showToast(message, opts?)` | **命令式**,不要求挂组件。`opts: { variant?: 'info' \| 'success' \| 'error', durationMs? }`(默认 2600ms)。无 `document` 静默跳过 |
210
- | `Loading({ anchorId? })` | 贴到主内容容器右下角的加载指示;`anchorId` 默认 `dshpc-main` |
211
- | `RunningBlocks()` | 运行中的占位块 |
212
- | `EmptyState({ text?, icon?, action?, translate? })` | 统一空态 |
213
- | `ErrorBoundary({ fallback?, onError?, translate? })` | class 组件;子组件抛错不让整个插件白屏,默认给「出错了 + 重试」 |
214
- | `SectionHead({ icon, title, right? })` | 分区标题 |
215
- | `MarqueeText({ text, style?, title?, className? })` | 超长省略、hover 滚动 |
216
- | `LiveText({ render, style? })` | 定时重渲染(相对时间这类) |
217
- | `BackToTop({ anchorId? })` | 回到顶部,贴主容器右缘外侧 |
218
- | `startResizeLayoutWidth(opts)` | 拖拽调整布局宽度 |
219
-
220
- ## 定制边界
221
-
222
- - props 就是定制面:要改行为请**组合 props**,不要 fork 源码(fork 会跟不上后续修复)。
223
- - 「追加 class/style」只允许补布局,皮肤一律走 token 覆盖。
224
- - 缺控件时先提需求;实在要自己写,请按 `docs/design/style.md` 的口径用同一套 token,
225
- 并考虑提到本包(一个控件的复用价值高于一次性的私有实现)。
@@ -1,64 +0,0 @@
1
- # utils —— 通用方法
2
-
3
- 零 React、零 DOM、零 `design` 依赖。装的是「和界面无关的纯方法」。
4
-
5
- ## 日期(`date.ts`)
6
-
7
- 全部走**本机时区**;解析失败一律不抛错、按兜底返回,不编造时间。
8
-
9
- | 函数 | 签名 | 边界行为 |
10
- |---|---|---|
11
- | `pad2` | `(value: number \| string) => string` | `9` ⇒ `'09'` |
12
- | `formatDateTime` | `(iso, opts?: { seconds?, fallback? }) => string` | 解析失败 ⇒ `opts.fallback`,缺省**原串**;`seconds: true` 补 `:ss` |
13
- | `formatYmd` | `(iso, opts?: { fallback? }) => string` | 解析失败 ⇒ `opts.fallback`,缺省 `—` |
14
- | `formatClock` | `(iso: string \| null \| undefined, opts?: { fallback? }) => string` | 空值/解析失败 ⇒ `opts.fallback`,缺省 `-` |
15
- | `formatDurationHms` | `(ms: number) => string` | 有小时 ⇒ `H:MM:SS`,否则 `MM:SS`;负数/NaN ⇒ `-` |
16
- | `sameCalendarDay` | `(a: Date, b: Date) => boolean` | 本机时区比年月日 |
17
- | `relativePast` | `(iso, nowMs, translate?) => string` | 过去时间 ⇒ 「3 分钟前」;未来/解析失败 ⇒ 「刚刚」 |
18
- | `relativeFuture` | `(iso, nowMs, translate?) => string` | 未来时间 ⇒ 「3 分钟后」;解析失败回退 `formatYmd` |
19
- | `formatRange` | `(fromIso, toIso, opts?: { seconds? }) => string` | 同天 ⇒ `09:00 – 10:30`;跨天两端带日期 |
20
- | `overlaps` | `(aFrom, aTo, bFrom, bTo) => boolean` | 半开区间 `[from, to)`;NaN ⇒ 不重叠 |
21
-
22
- > `relativePast` 与 `relativeFuture` 是**对偶**的:调度表这类展示未来时间的场景必须用
23
- > `relativeFuture`——用 `relativePast` 会把「3 分钟后」显示成「刚刚」,直接丢语义。
24
-
25
- ## 字符串 / 数字
26
-
27
- | 函数 | 签名 | 边界行为 |
28
- |---|---|---|
29
- | `baseNameOf` | `(path: string) => string` | 取末段;目录尾斜杠不会取成空串 |
30
- | `safeTrim` | `(s: string) => string` | 去首尾空白 |
31
- | `truncateBytes` | `(s: string, maxBytes: number) => string` | 按 **UTF-8 字节**截断,不切半个字 |
32
- | `formatBytes` | `(bytes: number) => string` | `12 KB` / `3.4 MB`;0 与负数 ⇒ `—` |
33
- | `formatCount` | `(n: number) => string` | 千分位 |
34
-
35
- ## HTTP
36
-
37
- | 函数 | 签名 | 说明 |
38
- |---|---|---|
39
- | `request` | `(url, opts?: RequestOptions) => Promise<Response>` | 带超时(默认 10s)与 `AbortSignal` |
40
- | `requestJson` | `<T>(url, opts?) => Promise<T>` | 自动解析 JSON |
41
- | `HttpError` | `class extends Error` | 带 `status`;超时抛 `AbortError` |
42
-
43
- `RequestOptions`:`{ timeoutMs?, signal?, method?, body?, headers? }`。
44
-
45
- ## 多语言(`i18n.ts`)
46
-
47
- 核心提供的固定提示语(控件错误、加载中、空态…)由本包内置中英字典管。
48
-
49
- | 函数 | 说明 |
50
- |---|---|
51
- | `setLocale(locale)` | `'zh'`(默认)/ `'en'` |
52
- | `getLocale()` | 当前语言 |
53
- | `t(key, vars?)` | 取文案;`{n}` 占位由 `vars` 填 |
54
- | `type Translate` | `(key, vars?) => string`,组件都收这个参数供覆盖 |
55
-
56
- **边界**:插件自己界面的文案由插件自己管,本包不提供插件级 i18n 框架。
57
- 想覆盖某条文案:给组件传 `translate` prop,或给自己的场景直接用 `t` + 自定义字典。
58
-
59
- 可用 key 全集见 `src/utils/i18n.ts` 的 `UtilMessageKey`。
60
-
61
- ## 定制边界
62
-
63
- - 这些是纯函数,**直接调用即可**,没有需要 fork 的场景。
64
- - 时区口径固定本机时区(沿用三家现有口径)—— 要显式时区请在调用方转换后再传进来。
@@ -1,103 +0,0 @@
1
- # 样例:从零接入一个插件
2
-
3
- 一个插件从装包到用上各子包的完整路径。复制粘贴级别的最小可用示例。
4
-
5
- ## 0. 装包
6
-
7
- ```bash
8
- pnpm add dsh-plugin-core
9
- ```
10
-
11
- (npm 也能用;推荐 pnpm。)
12
- `react` 是 optional peer——只用 `utils` / `design` 的插件不必装。
13
- 包里带预编译 `dist`(宿主以 git/npm 装插件**不跑构建脚本**,产物必须随包发布)。
14
-
15
- ## 1. 初始化样式(一次)
16
-
17
- ```ts
18
- // 插件 client 入口
19
- import { createStyleKit } from 'dsh-plugin-core/design'
20
- import { ensureControls, setStyleKit } from 'dsh-plugin-core/ui'
21
-
22
- const kit = createStyleKit({ id: 'dsh-task-reminder-ui' })
23
- setStyleKit(kit)
24
- ensureControls()
25
- ```
26
-
27
- `id` 必须插件内唯一(多插件同页靠它互不覆盖);变量与类名统一使用 `dshpc` 前缀,不需要传参。
28
-
29
- ## 2. 用一个控件
30
-
31
- ```tsx
32
- import { Button, Input, Picker, showToast } from 'dsh-plugin-core/ui'
33
-
34
- h(Input, { value: name, onChange: setName, placeholder: '任务名', error: nameError })
35
- h(Button, { variant: 'primary', onClick: save }, '保存')
36
- h(Picker, {
37
- options: models, // [{ value, label }]
38
- value: current,
39
- onChange: (v) => setCurrent(v as string),
40
- searchable: true,
41
- clearable: true,
42
- })
43
- showToast('已保存', { variant: 'success' })
44
- ```
45
-
46
- ## 3. 用通用方法
47
-
48
- ```ts
49
- import { formatDateTime, relativeFuture, formatBytes } from 'dsh-plugin-core/utils'
50
-
51
- formatDateTime(task.runAt, { seconds: true }) // 2026-10-18 09:30:05
52
- relativeFuture(task.runAt, Date.now()) // 3 分钟后(未来时间用这个)
53
- formatBytes(file.size) // 12 KB
54
- ```
55
-
56
- ## 4. 接工作区浏览(要宿主能力)
57
-
58
- ```tsx
59
- import { ExplorerPanel } from 'dsh-plugin-core/explorer'
60
-
61
- // 从 ctx 取出这一小块(不要传整个 ctx)
62
- const workspaceFiles = ctx.remote.workspaceFiles
63
-
64
- h(ExplorerPanel, { workspaceFiles, sessionId, path: '', onSelect: (p) => setFile(p) })
65
- ```
66
-
67
- 选工作区的下拉(数据由你给——它要经插件私有通道送到 client):
68
-
69
- ```tsx
70
- import { WorkspacePicker } from 'dsh-plugin-core/ui'
71
-
72
- h(WorkspacePicker, { workspaces: wsList, value: cur, onChange: setCur })
73
- ```
74
-
75
- ## 5. 接会话预览
76
-
77
- ```tsx
78
- import { SessionPreview } from 'dsh-plugin-core/session'
79
-
80
- const source = {
81
- listMessages: async (id) => (await api.get(`/sessions/${id}/messages`)).data,
82
- download: async (id, path) => api.getBytes(`/sessions/${id}/file?path=${path}`),
83
- }
84
-
85
- h(SessionPreview, { sessionId, source, variant: 'modal', onClose: close })
86
- ```
87
-
88
- ## 6. 卸载清理(可选)
89
-
90
- ```ts
91
- kit.dispose() // 撤掉 <style> 标签并清空登记域(插件卸载 / HMR)
92
- ```
93
-
94
- ## 接入坑(按踩频排序)
95
-
96
- | 坑 | 现象 | 解法 |
97
- |---|---|---|
98
- | 忘了 `setStyleKit` 就渲染控件 | 样式晚一帧或落到默认 style id | 入口处先调,再渲染 |
99
- | 直接 `import` 官方 `@deepseek-ai/*` 并指望本包帮你引 | Node 下 `ERR_MODULE_NOT_FOUND` | 本包 `ui` 已零官方依赖;你要用官方件就在插件侧自己处理平台模块 |
100
- | 给 `read` 少传第三参 `range` | 远端拒:`expected 3 business argument(s) … got 2` | 一律显式传 `{}` |
101
- | 用 `relativePast` 显示未来时间 | 「3 分钟后」显示成「刚刚」 | 用 `relativeFuture` |
102
- | 想让组件自己取工作区 / 模型列表 | 取不到(通道是插件私有的) | 数据经 props 给,宿主能力经接口注入 |
103
- | 暗色不跟随宿主 | 插件固守一种明暗 | 判据是 `body[data-ds-dark-theme]`,别用 `prefers-color-scheme` |