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.
- package/README.md +52 -83
- package/dist/design/tokens-css.d.ts +1 -1
- package/dist/design/tokens-css.d.ts.map +1 -1
- package/dist/design/tokens-css.generated.d.ts +2 -0
- package/dist/design/tokens-css.generated.d.ts.map +1 -0
- package/dist/design/tokens-css.generated.js +4 -0
- package/dist/design/tokens-css.generated.js.map +1 -0
- package/dist/design/tokens-css.js +1 -252
- package/dist/design/tokens-css.js.map +1 -1
- package/dist/explorer/FileBrowser.d.ts +41 -0
- package/dist/explorer/FileBrowser.d.ts.map +1 -0
- package/dist/explorer/FileBrowser.js +659 -0
- package/dist/explorer/FileBrowser.js.map +1 -0
- package/dist/explorer/explorer-css.d.ts +1 -1
- package/dist/explorer/explorer-css.d.ts.map +1 -1
- package/dist/explorer/explorer-css.generated.d.ts +2 -0
- package/dist/explorer/explorer-css.generated.d.ts.map +1 -0
- package/dist/explorer/explorer-css.generated.js +4 -0
- package/dist/explorer/explorer-css.generated.js.map +1 -0
- package/dist/explorer/explorer-css.js +1 -31
- package/dist/explorer/explorer-css.js.map +1 -1
- package/dist/explorer/index.d.ts +4 -2
- package/dist/explorer/index.d.ts.map +1 -1
- package/dist/explorer/index.js +4 -2
- package/dist/explorer/index.js.map +1 -1
- package/dist/explorer/open.d.ts +103 -0
- package/dist/explorer/open.d.ts.map +1 -0
- package/dist/explorer/open.js +282 -0
- package/dist/explorer/open.js.map +1 -0
- package/dist/explorer/preview/BytesPreview.d.ts +13 -0
- package/dist/explorer/preview/BytesPreview.d.ts.map +1 -0
- package/dist/explorer/preview/BytesPreview.js +56 -0
- package/dist/explorer/preview/BytesPreview.js.map +1 -0
- package/dist/explorer/preview/HtmlPreview.d.ts +18 -0
- package/dist/explorer/preview/HtmlPreview.d.ts.map +1 -0
- package/dist/explorer/preview/HtmlPreview.js +112 -0
- package/dist/explorer/preview/HtmlPreview.js.map +1 -0
- package/dist/explorer/preview/OfficePreview.d.ts +11 -0
- package/dist/explorer/preview/OfficePreview.d.ts.map +1 -0
- package/dist/explorer/preview/OfficePreview.js +53 -0
- package/dist/explorer/preview/OfficePreview.js.map +1 -0
- package/dist/explorer/preview/TextPreview.d.ts +17 -0
- package/dist/explorer/preview/TextPreview.d.ts.map +1 -0
- package/dist/explorer/preview/TextPreview.js +95 -0
- package/dist/explorer/preview/TextPreview.js.map +1 -0
- package/dist/explorer/preview/index.d.ts +10 -3
- package/dist/explorer/preview/index.d.ts.map +1 -1
- package/dist/explorer/preview/index.js +52 -55
- package/dist/explorer/preview/index.js.map +1 -1
- package/dist/explorer/preview/md-labels.d.ts +3 -0
- package/dist/explorer/preview/md-labels.d.ts.map +1 -0
- package/dist/explorer/preview/md-labels.js +12 -0
- package/dist/explorer/preview/md-labels.js.map +1 -0
- package/dist/explorer/types.d.ts +186 -4
- package/dist/explorer/types.d.ts.map +1 -1
- package/dist/explorer/types.js +401 -14
- package/dist/explorer/types.js.map +1 -1
- package/dist/host/index.d.ts +66 -0
- package/dist/host/index.d.ts.map +1 -0
- package/dist/host/index.js +60 -0
- package/dist/host/index.js.map +1 -0
- package/dist/session/SessionViewModal.d.ts +42 -0
- package/dist/session/SessionViewModal.d.ts.map +1 -0
- package/dist/session/SessionViewModal.js +997 -0
- package/dist/session/SessionViewModal.js.map +1 -0
- package/dist/session/changes.d.ts +73 -0
- package/dist/session/changes.d.ts.map +1 -0
- package/dist/session/changes.js +134 -0
- package/dist/session/changes.js.map +1 -0
- package/dist/session/faces.d.ts +198 -0
- package/dist/session/faces.d.ts.map +1 -0
- package/dist/session/faces.js +17 -0
- package/dist/session/faces.js.map +1 -0
- package/dist/session/index.d.ts +5 -23
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +25 -70
- package/dist/session/index.js.map +1 -1
- package/dist/session/mirror/ChangedFileDiff.d.ts +22 -0
- package/dist/session/mirror/ChangedFileDiff.d.ts.map +1 -0
- package/dist/session/mirror/ChangedFileDiff.js +157 -0
- package/dist/session/mirror/ChangedFileDiff.js.map +1 -0
- package/dist/session/mirror/ChangedFilesCard.d.ts +18 -0
- package/dist/session/mirror/ChangedFilesCard.d.ts.map +1 -0
- package/dist/session/mirror/ChangedFilesCard.js +158 -0
- package/dist/session/mirror/ChangedFilesCard.js.map +1 -0
- package/dist/session/mirror/ChatGroupSeat.d.ts +24 -0
- package/dist/session/mirror/ChatGroupSeat.d.ts.map +1 -0
- package/dist/session/mirror/ChatGroupSeat.js +134 -0
- package/dist/session/mirror/ChatGroupSeat.js.map +1 -0
- package/dist/session/mirror/ChatNodeSeat.d.ts +43 -0
- package/dist/session/mirror/ChatNodeSeat.d.ts.map +1 -0
- package/dist/session/mirror/ChatNodeSeat.js +133 -0
- package/dist/session/mirror/ChatNodeSeat.js.map +1 -0
- package/dist/session/mirror/ChatView.d.ts +47 -0
- package/dist/session/mirror/ChatView.d.ts.map +1 -0
- package/dist/session/mirror/ChatView.js +127 -0
- package/dist/session/mirror/ChatView.js.map +1 -0
- package/dist/session/mirror/CommandCard.d.ts +20 -0
- package/dist/session/mirror/CommandCard.d.ts.map +1 -0
- package/dist/session/mirror/CommandCard.js +69 -0
- package/dist/session/mirror/CommandCard.js.map +1 -0
- package/dist/session/mirror/Deliverables.d.ts +24 -0
- package/dist/session/mirror/Deliverables.d.ts.map +1 -0
- package/dist/session/mirror/Deliverables.js +134 -0
- package/dist/session/mirror/Deliverables.js.map +1 -0
- package/dist/session/mirror/GenericCommandCard.d.ts +25 -0
- package/dist/session/mirror/GenericCommandCard.d.ts.map +1 -0
- package/dist/session/mirror/GenericCommandCard.js +567 -0
- package/dist/session/mirror/GenericCommandCard.js.map +1 -0
- package/dist/session/mirror/MessageIconActions.d.ts +16 -0
- package/dist/session/mirror/MessageIconActions.d.ts.map +1 -0
- package/dist/session/mirror/MessageIconActions.js +71 -0
- package/dist/session/mirror/MessageIconActions.js.map +1 -0
- package/dist/session/mirror/MessageItem.d.ts +66 -0
- package/dist/session/mirror/MessageItem.d.ts.map +1 -0
- package/dist/session/mirror/MessageItem.js +135 -0
- package/dist/session/mirror/MessageItem.js.map +1 -0
- package/dist/session/mirror/ReasoningRow.d.ts +11 -0
- package/dist/session/mirror/ReasoningRow.d.ts.map +1 -0
- package/dist/session/mirror/ReasoningRow.js +49 -0
- package/dist/session/mirror/ReasoningRow.js.map +1 -0
- package/dist/session/mirror/StatDialog.d.ts +20 -0
- package/dist/session/mirror/StatDialog.d.ts.map +1 -0
- package/dist/session/mirror/StatDialog.js +36 -0
- package/dist/session/mirror/StatDialog.js.map +1 -0
- package/dist/session/mirror/TurnProcessNodeView.d.ts +10 -0
- package/dist/session/mirror/TurnProcessNodeView.d.ts.map +1 -0
- package/dist/session/mirror/TurnProcessNodeView.js +68 -0
- package/dist/session/mirror/TurnProcessNodeView.js.map +1 -0
- package/dist/session/mirror/TurnTailNodeView.d.ts +32 -0
- package/dist/session/mirror/TurnTailNodeView.d.ts.map +1 -0
- package/dist/session/mirror/TurnTailNodeView.js +48 -0
- package/dist/session/mirror/TurnTailNodeView.js.map +1 -0
- package/dist/session/mirror/TurnTriggerNodeView.d.ts +14 -0
- package/dist/session/mirror/TurnTriggerNodeView.d.ts.map +1 -0
- package/dist/session/mirror/TurnTriggerNodeView.js +87 -0
- package/dist/session/mirror/TurnTriggerNodeView.js.map +1 -0
- package/dist/session/mirror/TurnUsagePanel.d.ts +21 -0
- package/dist/session/mirror/TurnUsagePanel.d.ts.map +1 -0
- package/dist/session/mirror/TurnUsagePanel.js +41 -0
- package/dist/session/mirror/TurnUsagePanel.js.map +1 -0
- package/dist/session/mirror/message-chrome.d.ts +33 -0
- package/dist/session/mirror/message-chrome.d.ts.map +1 -0
- package/dist/session/mirror/message-chrome.js +158 -0
- package/dist/session/mirror/message-chrome.js.map +1 -0
- package/dist/session/mirror/process-groups.d.ts +56 -0
- package/dist/session/mirror/process-groups.d.ts.map +1 -0
- package/dist/session/mirror/process-groups.js +202 -0
- package/dist/session/mirror/process-groups.js.map +1 -0
- package/dist/session/official-classes.d.ts +28 -0
- package/dist/session/official-classes.d.ts.map +1 -0
- package/dist/session/official-classes.js +146 -0
- package/dist/session/official-classes.js.map +1 -0
- package/dist/session/open-session-view.d.ts +17 -0
- package/dist/session/open-session-view.d.ts.map +1 -0
- package/dist/session/open-session-view.js +136 -0
- package/dist/session/open-session-view.js.map +1 -0
- package/dist/session/session-css.d.ts +1 -1
- package/dist/session/session-css.d.ts.map +1 -1
- package/dist/session/session-css.generated.d.ts +2 -0
- package/dist/session/session-css.generated.d.ts.map +1 -0
- package/dist/session/session-css.generated.js +4 -0
- package/dist/session/session-css.generated.js.map +1 -0
- package/dist/session/session-css.js +1 -17
- package/dist/session/session-css.js.map +1 -1
- package/dist/ui/AlertModal.d.ts +28 -0
- package/dist/ui/AlertModal.d.ts.map +1 -0
- package/dist/ui/AlertModal.js +29 -0
- package/dist/ui/AlertModal.js.map +1 -0
- package/dist/ui/Button.d.ts.map +1 -1
- package/dist/ui/Button.js +14 -1
- package/dist/ui/Button.js.map +1 -1
- package/dist/ui/Card.d.ts +4 -2
- package/dist/ui/Card.d.ts.map +1 -1
- package/dist/ui/Card.js +12 -6
- package/dist/ui/Card.js.map +1 -1
- package/dist/ui/Chip.d.ts +9 -1
- package/dist/ui/Chip.d.ts.map +1 -1
- package/dist/ui/Chip.js +8 -2
- package/dist/ui/Chip.js.map +1 -1
- package/dist/ui/CodeViewer.d.ts +36 -0
- package/dist/ui/CodeViewer.d.ts.map +1 -0
- package/dist/ui/CodeViewer.js +90 -0
- package/dist/ui/CodeViewer.js.map +1 -0
- package/dist/ui/ConfirmModal.d.ts +30 -0
- package/dist/ui/ConfirmModal.d.ts.map +1 -0
- package/dist/ui/ConfirmModal.js +23 -0
- package/dist/ui/ConfirmModal.js.map +1 -0
- package/dist/ui/DateTimePicker.d.ts +45 -0
- package/dist/ui/DateTimePicker.d.ts.map +1 -0
- package/dist/ui/DateTimePicker.js +447 -0
- package/dist/ui/DateTimePicker.js.map +1 -0
- package/dist/ui/Field.d.ts +11 -2
- package/dist/ui/Field.d.ts.map +1 -1
- package/dist/ui/Field.js +15 -5
- package/dist/ui/Field.js.map +1 -1
- package/dist/ui/MarqueeText.d.ts.map +1 -1
- package/dist/ui/MarqueeText.js +3 -1
- package/dist/ui/MarqueeText.js.map +1 -1
- package/dist/ui/Modal.d.ts +25 -3
- package/dist/ui/Modal.d.ts.map +1 -1
- package/dist/ui/Modal.js +41 -7
- package/dist/ui/Modal.js.map +1 -1
- package/dist/ui/ModelPicker.d.ts +25 -12
- package/dist/ui/ModelPicker.d.ts.map +1 -1
- package/dist/ui/ModelPicker.js +67 -19
- package/dist/ui/ModelPicker.js.map +1 -1
- package/dist/ui/PanelDock.d.ts +127 -0
- package/dist/ui/PanelDock.d.ts.map +1 -0
- package/dist/ui/PanelDock.js +297 -0
- package/dist/ui/PanelDock.js.map +1 -0
- package/dist/ui/Picker.d.ts +8 -2
- package/dist/ui/Picker.d.ts.map +1 -1
- package/dist/ui/Picker.js +86 -18
- package/dist/ui/Picker.js.map +1 -1
- package/dist/ui/SectionHead.d.ts +3 -3
- package/dist/ui/SectionHead.d.ts.map +1 -1
- package/dist/ui/SectionHead.js +4 -4
- package/dist/ui/SectionHead.js.map +1 -1
- package/dist/ui/Segmented.d.ts +2 -0
- package/dist/ui/Segmented.d.ts.map +1 -1
- package/dist/ui/Segmented.js +3 -1
- package/dist/ui/Segmented.js.map +1 -1
- package/dist/ui/Textarea.d.ts +2 -0
- package/dist/ui/Textarea.d.ts.map +1 -1
- package/dist/ui/Textarea.js +6 -1
- package/dist/ui/Textarea.js.map +1 -1
- package/dist/ui/Toast.d.ts +41 -8
- package/dist/ui/Toast.d.ts.map +1 -1
- package/dist/ui/Toast.js +216 -28
- package/dist/ui/Toast.js.map +1 -1
- package/dist/ui/WorkspacePicker.d.ts +15 -28
- package/dist/ui/WorkspacePicker.d.ts.map +1 -1
- package/dist/ui/WorkspacePicker.js +18 -27
- package/dist/ui/WorkspacePicker.js.map +1 -1
- package/dist/ui/card-css.d.ts +1 -1
- package/dist/ui/card-css.d.ts.map +1 -1
- package/dist/ui/card-css.generated.d.ts +2 -0
- package/dist/ui/card-css.generated.d.ts.map +1 -0
- package/dist/ui/card-css.generated.js +4 -0
- package/dist/ui/card-css.generated.js.map +1 -0
- package/dist/ui/card-css.js +1 -35
- package/dist/ui/card-css.js.map +1 -1
- package/dist/ui/chip-css.d.ts +1 -1
- package/dist/ui/chip-css.d.ts.map +1 -1
- package/dist/ui/chip-css.generated.d.ts +2 -0
- package/dist/ui/chip-css.generated.d.ts.map +1 -0
- package/dist/ui/chip-css.generated.js +4 -0
- package/dist/ui/chip-css.generated.js.map +1 -0
- package/dist/ui/chip-css.js +1 -17
- package/dist/ui/chip-css.js.map +1 -1
- package/dist/ui/code-viewer-css.d.ts +2 -0
- package/dist/ui/code-viewer-css.d.ts.map +1 -0
- package/dist/ui/code-viewer-css.generated.d.ts +2 -0
- package/dist/ui/code-viewer-css.generated.d.ts.map +1 -0
- package/dist/ui/code-viewer-css.generated.js +4 -0
- package/dist/ui/code-viewer-css.generated.js.map +1 -0
- package/dist/ui/code-viewer-css.js +3 -0
- package/dist/ui/code-viewer-css.js.map +1 -0
- package/dist/ui/code-viewer-lang.d.ts +15 -0
- package/dist/ui/code-viewer-lang.d.ts.map +1 -0
- package/dist/ui/code-viewer-lang.js +190 -0
- package/dist/ui/code-viewer-lang.js.map +1 -0
- package/dist/ui/code-viewer-theme.d.ts +5 -0
- package/dist/ui/code-viewer-theme.d.ts.map +1 -0
- package/dist/ui/code-viewer-theme.js +138 -0
- package/dist/ui/code-viewer-theme.js.map +1 -0
- package/dist/ui/controls/back-to-top-css.generated.d.ts +2 -0
- package/dist/ui/controls/back-to-top-css.generated.d.ts.map +1 -0
- package/dist/ui/controls/back-to-top-css.generated.js +4 -0
- package/dist/ui/controls/back-to-top-css.generated.js.map +1 -0
- package/dist/ui/controls/button-css.generated.d.ts +2 -0
- package/dist/ui/controls/button-css.generated.d.ts.map +1 -0
- package/dist/ui/controls/button-css.generated.js +4 -0
- package/dist/ui/controls/button-css.generated.js.map +1 -0
- package/dist/ui/controls/datetime-css.generated.d.ts +2 -0
- package/dist/ui/controls/datetime-css.generated.d.ts.map +1 -0
- package/dist/ui/controls/datetime-css.generated.js +4 -0
- package/dist/ui/controls/datetime-css.generated.js.map +1 -0
- package/dist/ui/controls/field-css.generated.d.ts +2 -0
- package/dist/ui/controls/field-css.generated.d.ts.map +1 -0
- package/dist/ui/controls/field-css.generated.js +4 -0
- package/dist/ui/controls/field-css.generated.js.map +1 -0
- package/dist/ui/controls/hint-css.generated.d.ts +2 -0
- package/dist/ui/controls/hint-css.generated.d.ts.map +1 -0
- package/dist/ui/controls/hint-css.generated.js +4 -0
- package/dist/ui/controls/hint-css.generated.js.map +1 -0
- package/dist/ui/controls/loading-css.generated.d.ts +2 -0
- package/dist/ui/controls/loading-css.generated.d.ts.map +1 -0
- package/dist/ui/controls/loading-css.generated.js +4 -0
- package/dist/ui/controls/loading-css.generated.js.map +1 -0
- package/dist/ui/controls/segmented-css.generated.d.ts +2 -0
- package/dist/ui/controls/segmented-css.generated.d.ts.map +1 -0
- package/dist/ui/controls/segmented-css.generated.js +4 -0
- package/dist/ui/controls/segmented-css.generated.js.map +1 -0
- package/dist/ui/controls-css.d.ts +7 -8
- package/dist/ui/controls-css.d.ts.map +1 -1
- package/dist/ui/controls-css.js +13 -11
- package/dist/ui/controls-css.js.map +1 -1
- package/dist/ui/css.d.ts +5 -0
- package/dist/ui/css.d.ts.map +1 -1
- package/dist/ui/css.js +13 -4
- package/dist/ui/css.js.map +1 -1
- package/dist/ui/datetime-logic.d.ts +100 -0
- package/dist/ui/datetime-logic.d.ts.map +1 -0
- package/dist/ui/datetime-logic.js +193 -0
- package/dist/ui/datetime-logic.js.map +1 -0
- package/dist/ui/feedback-css.d.ts +1 -1
- package/dist/ui/feedback-css.d.ts.map +1 -1
- package/dist/ui/feedback-css.generated.d.ts +2 -0
- package/dist/ui/feedback-css.generated.d.ts.map +1 -0
- package/dist/ui/feedback-css.generated.js +4 -0
- package/dist/ui/feedback-css.generated.js.map +1 -0
- package/dist/ui/feedback-css.js +1 -53
- package/dist/ui/feedback-css.js.map +1 -1
- package/dist/ui/host-data.d.ts +103 -0
- package/dist/ui/host-data.d.ts.map +1 -0
- package/dist/ui/host-data.js +106 -0
- package/dist/ui/host-data.js.map +1 -0
- package/dist/ui/host-toast.d.ts +23 -0
- package/dist/ui/host-toast.d.ts.map +1 -0
- package/dist/ui/host-toast.js +34 -0
- package/dist/ui/host-toast.js.map +1 -0
- package/dist/ui/index.d.ts +12 -6
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +10 -4
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/marquee-css.d.ts +2 -0
- package/dist/ui/marquee-css.d.ts.map +1 -0
- package/dist/ui/marquee-css.generated.d.ts +2 -0
- package/dist/ui/marquee-css.generated.d.ts.map +1 -0
- package/dist/ui/marquee-css.generated.js +4 -0
- package/dist/ui/marquee-css.generated.js.map +1 -0
- package/dist/ui/marquee-css.js +4 -0
- package/dist/ui/marquee-css.js.map +1 -0
- package/dist/ui/modal-host.d.ts +30 -0
- package/dist/ui/modal-host.d.ts.map +1 -0
- package/dist/ui/modal-host.js +101 -0
- package/dist/ui/modal-host.js.map +1 -0
- package/dist/ui/official.d.ts.map +1 -1
- package/dist/ui/official.js +45 -1
- package/dist/ui/official.js.map +1 -1
- package/dist/ui/panel-dock-css.d.ts +2 -0
- package/dist/ui/panel-dock-css.d.ts.map +1 -0
- package/dist/ui/panel-dock-css.generated.d.ts +2 -0
- package/dist/ui/panel-dock-css.generated.d.ts.map +1 -0
- package/dist/ui/panel-dock-css.generated.js +4 -0
- package/dist/ui/panel-dock-css.generated.js.map +1 -0
- package/dist/ui/panel-dock-css.js +4 -0
- package/dist/ui/panel-dock-css.js.map +1 -0
- package/dist/ui/panel-dock-logic.d.ts +50 -0
- package/dist/ui/panel-dock-logic.d.ts.map +1 -0
- package/dist/ui/panel-dock-logic.js +64 -0
- package/dist/ui/panel-dock-logic.js.map +1 -0
- package/dist/ui/picker-css.d.ts +1 -1
- package/dist/ui/picker-css.d.ts.map +1 -1
- package/dist/ui/picker-css.generated.d.ts +2 -0
- package/dist/ui/picker-css.generated.d.ts.map +1 -0
- package/dist/ui/picker-css.generated.js +4 -0
- package/dist/ui/picker-css.generated.js.map +1 -0
- package/dist/ui/picker-css.js +1 -48
- package/dist/ui/picker-css.js.map +1 -1
- package/dist/ui/picker-icons.d.ts +12 -0
- package/dist/ui/picker-icons.d.ts.map +1 -0
- package/dist/ui/picker-icons.js +29 -0
- package/dist/ui/picker-icons.js.map +1 -0
- package/dist/ui/picker-logic.d.ts +4 -1
- package/dist/ui/picker-logic.d.ts.map +1 -1
- package/dist/ui/picker-logic.js +1 -2
- package/dist/ui/picker-logic.js.map +1 -1
- package/dist/ui/resizer.d.ts +3 -1
- package/dist/ui/resizer.d.ts.map +1 -1
- package/dist/ui/resizer.js +1 -1
- package/dist/ui/resizer.js.map +1 -1
- package/dist/ui/toast-host.d.ts +24 -0
- package/dist/ui/toast-host.d.ts.map +1 -0
- package/dist/ui/toast-host.js +20 -0
- package/dist/ui/toast-host.js.map +1 -0
- package/dist/utils/date.d.ts +8 -0
- package/dist/utils/date.d.ts.map +1 -1
- package/dist/utils/date.js +16 -0
- package/dist/utils/date.js.map +1 -1
- package/dist/utils/i18n.d.ts +1 -1
- package/dist/utils/i18n.d.ts.map +1 -1
- package/dist/utils/i18n.js +437 -18
- package/dist/utils/i18n.js.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/path.d.ts.map +1 -1
- package/dist/utils/path.js +1 -0
- package/dist/utils/path.js.map +1 -1
- package/docs/README.md +12 -5
- package/docs/design/architecture.md +38 -8
- package/docs/design/copywriting.md +95 -0
- package/docs/design/doc-format.md +80 -0
- package/docs/design/doc-format.ts +39 -0
- package/docs/design/external/dsh-host.md +150 -1
- package/docs/design/features.md +4 -17
- package/docs/design/methods.md +13 -34
- package/docs/design/structure.md +25 -22
- package/docs/design/style.md +24 -50
- package/docs/help/design.doc.ts +112 -0
- package/docs/help/design.md +88 -0
- package/docs/help/explorer.doc.ts +136 -0
- package/docs/help/explorer.md +68 -0
- package/docs/help/index.doc.ts +79 -0
- package/docs/help/index.md +28 -0
- package/docs/help/integration.doc.ts +114 -0
- package/docs/help/integration.md +127 -0
- package/docs/help/methods.md +58 -0
- package/docs/help/session.doc.ts +154 -0
- package/docs/help/session.md +91 -0
- package/docs/help/style.md +80 -0
- package/docs/help/ui.doc.ts +404 -0
- package/docs/help/ui.md +342 -0
- package/docs/help/utils.doc.ts +133 -0
- package/docs/help/utils.md +96 -0
- package/docs/requirements.md +33 -12
- package/package.json +44 -3
- package/dist/ui/ErrorBoundary.d.ts +0 -22
- package/dist/ui/ErrorBoundary.d.ts.map +0 -1
- package/dist/ui/ErrorBoundary.js +0 -30
- package/dist/ui/ErrorBoundary.js.map +0 -1
- package/docs/design/features/design.md +0 -55
- package/docs/design/features/explorer.md +0 -73
- package/docs/design/features/session.md +0 -70
- package/docs/design/features/ui.md +0 -225
- package/docs/design/features/utils.md +0 -64
- package/docs/examples/integration.md +0 -103
package/docs/requirements.md
CHANGED
|
@@ -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
|
|
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
|
|
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
|
-
- `
|
|
66
|
-
-
|
|
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: '
|
|
138
|
-
| ui / Picker | `mode: 'single' \| 'multiple'`、`max
|
|
139
|
-
|
|
|
140
|
-
| explorer
|
|
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
|
-
|
|
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.
|
|
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
|
-
"
|
|
54
|
-
"
|
|
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"}
|
package/dist/ui/ErrorBoundary.js
DELETED
|
@@ -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` 的方法签名若与宿主对不上,在插件侧做适配层——**不要改本包接口去贴某个宿主导出版本**。
|