dsh-plugin-core 0.33.1 → 0.33.3
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 +9 -9
- package/dist/adv/explorer/open.js +4 -4
- package/dist/adv/explorer/open.js.map +1 -1
- package/dist/adv/session/SessionViewModal.d.ts.map +1 -1
- package/dist/adv/session/SessionViewModal.js +6 -3
- package/dist/adv/session/SessionViewModal.js.map +1 -1
- package/dist/adv/session/mirror/ChatView.d.ts +1 -3
- package/dist/adv/session/mirror/ChatView.d.ts.map +1 -1
- package/dist/adv/session/mirror/ChatView.js +10 -36
- package/dist/adv/session/mirror/ChatView.js.map +1 -1
- package/dist/adv/session/mirror/GenericCommandCard.d.ts +6 -1
- package/dist/adv/session/mirror/GenericCommandCard.d.ts.map +1 -1
- package/dist/adv/session/mirror/GenericCommandCard.js +8 -3
- package/dist/adv/session/mirror/GenericCommandCard.js.map +1 -1
- package/dist/adv/session/mirror/MessageItem.d.ts +4 -3
- package/dist/adv/session/mirror/MessageItem.d.ts.map +1 -1
- package/dist/adv/session/mirror/MessageItem.js +19 -9
- package/dist/adv/session/mirror/MessageItem.js.map +1 -1
- package/dist/{session/mirror/BashRow.d.ts → adv/session/mirror/SkillRow.d.ts} +4 -5
- package/dist/adv/session/mirror/SkillRow.d.ts.map +1 -0
- package/dist/adv/session/mirror/SkillRow.js +86 -0
- package/dist/adv/session/mirror/SkillRow.js.map +1 -0
- package/dist/adv/session/official-classes.d.ts +3 -1
- package/dist/adv/session/official-classes.d.ts.map +1 -1
- package/dist/adv/session/official-classes.js +33 -32
- package/dist/adv/session/official-classes.js.map +1 -1
- package/dist/ui/feedback/host-toast.d.ts +1 -1
- package/dist/ui/feedback/host-toast.js +1 -1
- package/dist/utils/i18n.d.ts +1 -1
- package/dist/utils/i18n.d.ts.map +1 -1
- package/dist/utils/i18n.js +12 -0
- package/dist/utils/i18n.js.map +1 -1
- package/docs/design/external/dsh-host.md +33 -0
- package/docs/help/explorer.doc.ts +1 -1
- package/docs/help/explorer.md +1 -1
- package/docs/help/integration.doc.ts +2 -2
- package/docs/help/integration.md +2 -2
- package/docs/help/session.doc.ts +1 -1
- package/docs/help/session.md +1 -1
- package/docs/help/ui.doc.ts +1 -1
- package/docs/help/ui.md +1 -1
- package/package.json +16 -16
- package/dist/explorer/ExplorerPanel.d.ts +0 -25
- package/dist/explorer/ExplorerPanel.d.ts.map +0 -1
- package/dist/explorer/ExplorerPanel.js +0 -111
- package/dist/explorer/ExplorerPanel.js.map +0 -1
- package/dist/explorer/FileBrowser.d.ts +0 -58
- package/dist/explorer/FileBrowser.d.ts.map +0 -1
- package/dist/explorer/FileBrowser.js +0 -632
- package/dist/explorer/FileBrowser.js.map +0 -1
- package/dist/explorer/crumb-nav.d.ts +0 -45
- package/dist/explorer/crumb-nav.d.ts.map +0 -1
- package/dist/explorer/crumb-nav.js +0 -78
- package/dist/explorer/crumb-nav.js.map +0 -1
- package/dist/explorer/crumbs-menu.d.ts +0 -37
- package/dist/explorer/crumbs-menu.d.ts.map +0 -1
- package/dist/explorer/crumbs-menu.js +0 -102
- package/dist/explorer/crumbs-menu.js.map +0 -1
- package/dist/explorer/explorer-css.d.ts +0 -2
- package/dist/explorer/explorer-css.d.ts.map +0 -1
- package/dist/explorer/explorer-css.generated.d.ts +0 -2
- package/dist/explorer/explorer-css.generated.d.ts.map +0 -1
- package/dist/explorer/explorer-css.generated.js +0 -4
- package/dist/explorer/explorer-css.generated.js.map +0 -1
- package/dist/explorer/explorer-css.js +0 -3
- package/dist/explorer/explorer-css.js.map +0 -1
- package/dist/explorer/fs-face.d.ts +0 -36
- package/dist/explorer/fs-face.d.ts.map +0 -1
- package/dist/explorer/fs-face.js +0 -74
- package/dist/explorer/fs-face.js.map +0 -1
- package/dist/explorer/index.d.ts +0 -6
- package/dist/explorer/index.d.ts.map +0 -1
- package/dist/explorer/index.js +0 -6
- package/dist/explorer/index.js.map +0 -1
- package/dist/explorer/landing.d.ts +0 -26
- package/dist/explorer/landing.d.ts.map +0 -1
- package/dist/explorer/landing.js +0 -43
- package/dist/explorer/landing.js.map +0 -1
- package/dist/explorer/open.d.ts +0 -137
- package/dist/explorer/open.d.ts.map +0 -1
- package/dist/explorer/open.js +0 -350
- package/dist/explorer/open.js.map +0 -1
- package/dist/explorer/picker-placement.d.ts +0 -69
- package/dist/explorer/picker-placement.d.ts.map +0 -1
- package/dist/explorer/picker-placement.js +0 -122
- package/dist/explorer/picker-placement.js.map +0 -1
- package/dist/explorer/preview/BytesPreview.d.ts +0 -12
- package/dist/explorer/preview/BytesPreview.d.ts.map +0 -1
- package/dist/explorer/preview/BytesPreview.js +0 -60
- package/dist/explorer/preview/BytesPreview.js.map +0 -1
- package/dist/explorer/preview/HtmlPreview.d.ts +0 -17
- package/dist/explorer/preview/HtmlPreview.d.ts.map +0 -1
- package/dist/explorer/preview/HtmlPreview.js +0 -113
- package/dist/explorer/preview/HtmlPreview.js.map +0 -1
- package/dist/explorer/preview/OfficePreview.d.ts +0 -12
- package/dist/explorer/preview/OfficePreview.d.ts.map +0 -1
- package/dist/explorer/preview/OfficePreview.js +0 -63
- package/dist/explorer/preview/OfficePreview.js.map +0 -1
- package/dist/explorer/preview/TextPreview.d.ts +0 -18
- package/dist/explorer/preview/TextPreview.d.ts.map +0 -1
- package/dist/explorer/preview/TextPreview.js +0 -122
- package/dist/explorer/preview/TextPreview.js.map +0 -1
- package/dist/explorer/preview/index.d.ts +0 -24
- package/dist/explorer/preview/index.d.ts.map +0 -1
- package/dist/explorer/preview/index.js +0 -58
- package/dist/explorer/preview/index.js.map +0 -1
- package/dist/explorer/preview/md-labels.d.ts +0 -3
- package/dist/explorer/preview/md-labels.d.ts.map +0 -1
- package/dist/explorer/preview/md-labels.js +0 -12
- package/dist/explorer/preview/md-labels.js.map +0 -1
- package/dist/explorer/preview-title-bar.d.ts +0 -26
- package/dist/explorer/preview-title-bar.d.ts.map +0 -1
- package/dist/explorer/preview-title-bar.js +0 -48
- package/dist/explorer/preview-title-bar.js.map +0 -1
- package/dist/explorer/types.d.ts +0 -259
- package/dist/explorer/types.d.ts.map +0 -1
- package/dist/explorer/types.js +0 -379
- package/dist/explorer/types.js.map +0 -1
- package/dist/session/SessionViewModal.d.ts +0 -37
- package/dist/session/SessionViewModal.d.ts.map +0 -1
- package/dist/session/SessionViewModal.js +0 -1133
- package/dist/session/SessionViewModal.js.map +0 -1
- package/dist/session/changes.d.ts +0 -73
- package/dist/session/changes.d.ts.map +0 -1
- package/dist/session/changes.js +0 -134
- package/dist/session/changes.js.map +0 -1
- package/dist/session/faces.d.ts +0 -244
- package/dist/session/faces.d.ts.map +0 -1
- package/dist/session/faces.js +0 -17
- package/dist/session/faces.js.map +0 -1
- package/dist/session/index.d.ts +0 -7
- package/dist/session/index.d.ts.map +0 -1
- package/dist/session/index.js +0 -27
- package/dist/session/index.js.map +0 -1
- package/dist/session/mirror/AskCard.d.ts +0 -35
- package/dist/session/mirror/AskCard.d.ts.map +0 -1
- package/dist/session/mirror/AskCard.js +0 -131
- package/dist/session/mirror/AskCard.js.map +0 -1
- package/dist/session/mirror/BashRow.d.ts.map +0 -1
- package/dist/session/mirror/BashRow.js +0 -143
- package/dist/session/mirror/BashRow.js.map +0 -1
- package/dist/session/mirror/ChangedFileDiff.d.ts +0 -25
- package/dist/session/mirror/ChangedFileDiff.d.ts.map +0 -1
- package/dist/session/mirror/ChangedFileDiff.js +0 -178
- package/dist/session/mirror/ChangedFileDiff.js.map +0 -1
- package/dist/session/mirror/ChangedFilesCard.d.ts +0 -18
- package/dist/session/mirror/ChangedFilesCard.d.ts.map +0 -1
- package/dist/session/mirror/ChangedFilesCard.js +0 -165
- package/dist/session/mirror/ChangedFilesCard.js.map +0 -1
- package/dist/session/mirror/ChatGroupSeat.d.ts +0 -24
- package/dist/session/mirror/ChatGroupSeat.d.ts.map +0 -1
- package/dist/session/mirror/ChatGroupSeat.js +0 -135
- package/dist/session/mirror/ChatGroupSeat.js.map +0 -1
- package/dist/session/mirror/ChatNodeSeat.d.ts +0 -43
- package/dist/session/mirror/ChatNodeSeat.d.ts.map +0 -1
- package/dist/session/mirror/ChatNodeSeat.js +0 -133
- package/dist/session/mirror/ChatNodeSeat.js.map +0 -1
- package/dist/session/mirror/ChatView.d.ts +0 -47
- package/dist/session/mirror/ChatView.d.ts.map +0 -1
- package/dist/session/mirror/ChatView.js +0 -138
- package/dist/session/mirror/ChatView.js.map +0 -1
- package/dist/session/mirror/CommandCard.d.ts +0 -20
- package/dist/session/mirror/CommandCard.d.ts.map +0 -1
- package/dist/session/mirror/CommandCard.js +0 -69
- package/dist/session/mirror/CommandCard.js.map +0 -1
- package/dist/session/mirror/ContextInjectionRow.d.ts +0 -18
- package/dist/session/mirror/ContextInjectionRow.d.ts.map +0 -1
- package/dist/session/mirror/ContextInjectionRow.js +0 -50
- package/dist/session/mirror/ContextInjectionRow.js.map +0 -1
- package/dist/session/mirror/Deliverables.d.ts +0 -24
- package/dist/session/mirror/Deliverables.d.ts.map +0 -1
- package/dist/session/mirror/Deliverables.js +0 -175
- package/dist/session/mirror/Deliverables.js.map +0 -1
- package/dist/session/mirror/GenericCommandCard.d.ts +0 -136
- package/dist/session/mirror/GenericCommandCard.d.ts.map +0 -1
- package/dist/session/mirror/GenericCommandCard.js +0 -948
- package/dist/session/mirror/GenericCommandCard.js.map +0 -1
- package/dist/session/mirror/MessageIconActions.d.ts +0 -16
- package/dist/session/mirror/MessageIconActions.d.ts.map +0 -1
- package/dist/session/mirror/MessageIconActions.js +0 -69
- package/dist/session/mirror/MessageIconActions.js.map +0 -1
- package/dist/session/mirror/MessageItem.d.ts +0 -93
- package/dist/session/mirror/MessageItem.d.ts.map +0 -1
- package/dist/session/mirror/MessageItem.js +0 -194
- package/dist/session/mirror/MessageItem.js.map +0 -1
- package/dist/session/mirror/ReasoningRow.d.ts +0 -11
- package/dist/session/mirror/ReasoningRow.d.ts.map +0 -1
- package/dist/session/mirror/ReasoningRow.js +0 -111
- package/dist/session/mirror/ReasoningRow.js.map +0 -1
- package/dist/session/mirror/RunningStatus.d.ts +0 -12
- package/dist/session/mirror/RunningStatus.d.ts.map +0 -1
- package/dist/session/mirror/RunningStatus.js +0 -57
- package/dist/session/mirror/RunningStatus.js.map +0 -1
- package/dist/session/mirror/StatDialog.d.ts +0 -20
- package/dist/session/mirror/StatDialog.d.ts.map +0 -1
- package/dist/session/mirror/StatDialog.js +0 -49
- package/dist/session/mirror/StatDialog.js.map +0 -1
- package/dist/session/mirror/ToolDetails.d.ts +0 -65
- package/dist/session/mirror/ToolDetails.d.ts.map +0 -1
- package/dist/session/mirror/ToolDetails.js +0 -268
- package/dist/session/mirror/ToolDetails.js.map +0 -1
- package/dist/session/mirror/TurnProcessNodeView.d.ts +0 -10
- package/dist/session/mirror/TurnProcessNodeView.d.ts.map +0 -1
- package/dist/session/mirror/TurnProcessNodeView.js +0 -57
- package/dist/session/mirror/TurnProcessNodeView.js.map +0 -1
- package/dist/session/mirror/TurnTailNodeView.d.ts +0 -57
- package/dist/session/mirror/TurnTailNodeView.d.ts.map +0 -1
- package/dist/session/mirror/TurnTailNodeView.js +0 -106
- package/dist/session/mirror/TurnTailNodeView.js.map +0 -1
- package/dist/session/mirror/TurnTriggerNodeView.d.ts +0 -16
- package/dist/session/mirror/TurnTriggerNodeView.d.ts.map +0 -1
- package/dist/session/mirror/TurnTriggerNodeView.js +0 -103
- package/dist/session/mirror/TurnTriggerNodeView.js.map +0 -1
- package/dist/session/mirror/TurnUsagePanel.d.ts +0 -21
- package/dist/session/mirror/TurnUsagePanel.d.ts.map +0 -1
- package/dist/session/mirror/TurnUsagePanel.js +0 -41
- package/dist/session/mirror/TurnUsagePanel.js.map +0 -1
- package/dist/session/mirror/control-details.d.ts +0 -9
- package/dist/session/mirror/control-details.d.ts.map +0 -1
- package/dist/session/mirror/control-details.js +0 -549
- package/dist/session/mirror/control-details.js.map +0 -1
- package/dist/session/mirror/detail-i18n.d.ts +0 -4
- package/dist/session/mirror/detail-i18n.d.ts.map +0 -1
- package/dist/session/mirror/detail-i18n.js +0 -153
- package/dist/session/mirror/detail-i18n.js.map +0 -1
- package/dist/session/mirror/message-chrome.d.ts +0 -39
- package/dist/session/mirror/message-chrome.d.ts.map +0 -1
- package/dist/session/mirror/message-chrome.js +0 -153
- package/dist/session/mirror/message-chrome.js.map +0 -1
- package/dist/session/mirror/process-groups.d.ts +0 -56
- package/dist/session/mirror/process-groups.d.ts.map +0 -1
- package/dist/session/mirror/process-groups.js +0 -202
- package/dist/session/mirror/process-groups.js.map +0 -1
- package/dist/session/official-classes.d.ts +0 -28
- package/dist/session/official-classes.d.ts.map +0 -1
- package/dist/session/official-classes.js +0 -152
- package/dist/session/official-classes.js.map +0 -1
- package/dist/session/open-review.d.ts +0 -13
- package/dist/session/open-review.d.ts.map +0 -1
- package/dist/session/open-review.js +0 -32
- package/dist/session/open-review.js.map +0 -1
- package/dist/session/open-session-view.d.ts +0 -19
- package/dist/session/open-session-view.d.ts.map +0 -1
- package/dist/session/open-session-view.js +0 -147
- package/dist/session/open-session-view.js.map +0 -1
- package/dist/session/pending-inputs.d.ts +0 -33
- package/dist/session/pending-inputs.d.ts.map +0 -1
- package/dist/session/pending-inputs.js +0 -130
- package/dist/session/pending-inputs.js.map +0 -1
- package/dist/session/session-css.d.ts +0 -2
- package/dist/session/session-css.d.ts.map +0 -1
- package/dist/session/session-css.generated.d.ts +0 -2
- package/dist/session/session-css.generated.d.ts.map +0 -1
- package/dist/session/session-css.generated.js +0 -4
- package/dist/session/session-css.generated.js.map +0 -1
- package/dist/session/session-css.js +0 -3
- package/dist/session/session-css.js.map +0 -1
- package/dist/session/tail-follow.d.ts +0 -29
- package/dist/session/tail-follow.d.ts.map +0 -1
- package/dist/session/tail-follow.js +0 -106
- package/dist/session/tail-follow.js.map +0 -1
- package/dist/session/types.d.ts +0 -28
- package/dist/session/types.d.ts.map +0 -1
- package/dist/session/types.js +0 -12
- package/dist/session/types.js.map +0 -1
- package/dist/ui/AlertModal.d.ts +0 -41
- package/dist/ui/AlertModal.d.ts.map +0 -1
- package/dist/ui/AlertModal.js +0 -45
- package/dist/ui/AlertModal.js.map +0 -1
- package/dist/ui/Button.d.ts +0 -102
- package/dist/ui/Button.d.ts.map +0 -1
- package/dist/ui/Button.js +0 -233
- package/dist/ui/Button.js.map +0 -1
- package/dist/ui/Card.d.ts +0 -65
- package/dist/ui/Card.d.ts.map +0 -1
- package/dist/ui/Card.js +0 -109
- package/dist/ui/Card.js.map +0 -1
- package/dist/ui/Checkbox.d.ts +0 -24
- package/dist/ui/Checkbox.d.ts.map +0 -1
- package/dist/ui/Checkbox.js +0 -35
- package/dist/ui/Checkbox.js.map +0 -1
- package/dist/ui/Chip.d.ts +0 -28
- package/dist/ui/Chip.d.ts.map +0 -1
- package/dist/ui/Chip.js +0 -36
- package/dist/ui/Chip.js.map +0 -1
- package/dist/ui/CodeViewer.d.ts +0 -38
- package/dist/ui/CodeViewer.d.ts.map +0 -1
- package/dist/ui/CodeViewer.js +0 -107
- package/dist/ui/CodeViewer.js.map +0 -1
- package/dist/ui/ConfirmModal.d.ts +0 -50
- package/dist/ui/ConfirmModal.d.ts.map +0 -1
- package/dist/ui/ConfirmModal.js +0 -47
- package/dist/ui/ConfirmModal.js.map +0 -1
- package/dist/ui/DateTimePicker.d.ts +0 -45
- package/dist/ui/DateTimePicker.d.ts.map +0 -1
- package/dist/ui/DateTimePicker.js +0 -462
- package/dist/ui/DateTimePicker.js.map +0 -1
- package/dist/ui/EmptyState.d.ts +0 -12
- package/dist/ui/EmptyState.d.ts.map +0 -1
- package/dist/ui/EmptyState.js +0 -10
- package/dist/ui/EmptyState.js.map +0 -1
- package/dist/ui/Field.d.ts +0 -125
- package/dist/ui/Field.d.ts.map +0 -1
- package/dist/ui/Field.js +0 -175
- package/dist/ui/Field.js.map +0 -1
- package/dist/ui/FieldHint.d.ts +0 -18
- package/dist/ui/FieldHint.d.ts.map +0 -1
- package/dist/ui/FieldHint.js +0 -40
- package/dist/ui/FieldHint.js.map +0 -1
- package/dist/ui/FlipText.d.ts +0 -43
- package/dist/ui/FlipText.d.ts.map +0 -1
- package/dist/ui/FlipText.js +0 -59
- package/dist/ui/FlipText.js.map +0 -1
- package/dist/ui/InputGroup.d.ts +0 -91
- package/dist/ui/InputGroup.d.ts.map +0 -1
- package/dist/ui/InputGroup.js +0 -125
- package/dist/ui/InputGroup.js.map +0 -1
- package/dist/ui/LiveText.d.ts +0 -13
- package/dist/ui/LiveText.d.ts.map +0 -1
- package/dist/ui/LiveText.js +0 -19
- package/dist/ui/LiveText.js.map +0 -1
- package/dist/ui/Loader.d.ts +0 -49
- package/dist/ui/Loader.d.ts.map +0 -1
- package/dist/ui/Loader.js +0 -79
- package/dist/ui/Loader.js.map +0 -1
- package/dist/ui/LoaderBar.d.ts +0 -38
- package/dist/ui/LoaderBar.d.ts.map +0 -1
- package/dist/ui/LoaderBar.js +0 -79
- package/dist/ui/LoaderBar.js.map +0 -1
- package/dist/ui/Loading.d.ts +0 -69
- package/dist/ui/Loading.d.ts.map +0 -1
- package/dist/ui/Loading.js +0 -164
- package/dist/ui/Loading.js.map +0 -1
- package/dist/ui/MarqueeText.d.ts +0 -22
- package/dist/ui/MarqueeText.d.ts.map +0 -1
- package/dist/ui/MarqueeText.js +0 -52
- package/dist/ui/MarqueeText.js.map +0 -1
- package/dist/ui/Modal.d.ts +0 -73
- package/dist/ui/Modal.d.ts.map +0 -1
- package/dist/ui/Modal.js +0 -83
- package/dist/ui/Modal.js.map +0 -1
- package/dist/ui/ModelPicker.d.ts +0 -48
- package/dist/ui/ModelPicker.d.ts.map +0 -1
- package/dist/ui/ModelPicker.js +0 -101
- package/dist/ui/ModelPicker.js.map +0 -1
- package/dist/ui/Pagination.d.ts +0 -59
- package/dist/ui/Pagination.d.ts.map +0 -1
- package/dist/ui/Pagination.js +0 -112
- package/dist/ui/Pagination.js.map +0 -1
- package/dist/ui/PanelDock.d.ts +0 -132
- package/dist/ui/PanelDock.d.ts.map +0 -1
- package/dist/ui/PanelDock.js +0 -390
- package/dist/ui/PanelDock.js.map +0 -1
- package/dist/ui/Picker.d.ts +0 -56
- package/dist/ui/Picker.d.ts.map +0 -1
- package/dist/ui/Picker.js +0 -244
- package/dist/ui/Picker.js.map +0 -1
- package/dist/ui/QuickToolbar.d.ts +0 -54
- package/dist/ui/QuickToolbar.d.ts.map +0 -1
- package/dist/ui/QuickToolbar.js +0 -254
- package/dist/ui/QuickToolbar.js.map +0 -1
- package/dist/ui/SectionHead.d.ts +0 -35
- package/dist/ui/SectionHead.d.ts.map +0 -1
- package/dist/ui/SectionHead.js +0 -45
- package/dist/ui/SectionHead.js.map +0 -1
- package/dist/ui/Segmented.d.ts +0 -99
- package/dist/ui/Segmented.d.ts.map +0 -1
- package/dist/ui/Segmented.js +0 -135
- package/dist/ui/Segmented.js.map +0 -1
- package/dist/ui/SideSheet.d.ts +0 -70
- package/dist/ui/SideSheet.d.ts.map +0 -1
- package/dist/ui/SideSheet.js +0 -130
- package/dist/ui/SideSheet.js.map +0 -1
- package/dist/ui/SplitGroup.d.ts +0 -37
- package/dist/ui/SplitGroup.d.ts.map +0 -1
- package/dist/ui/SplitGroup.js +0 -36
- package/dist/ui/SplitGroup.js.map +0 -1
- package/dist/ui/Surface.d.ts +0 -43
- package/dist/ui/Surface.d.ts.map +0 -1
- package/dist/ui/Surface.js +0 -39
- package/dist/ui/Surface.js.map +0 -1
- package/dist/ui/Table.d.ts +0 -30
- package/dist/ui/Table.d.ts.map +0 -1
- package/dist/ui/Table.js +0 -96
- package/dist/ui/Table.js.map +0 -1
- package/dist/ui/Textarea.d.ts +0 -36
- package/dist/ui/Textarea.d.ts.map +0 -1
- package/dist/ui/Textarea.js +0 -35
- package/dist/ui/Textarea.js.map +0 -1
- package/dist/ui/Toast.d.ts +0 -45
- package/dist/ui/Toast.d.ts.map +0 -1
- package/dist/ui/Toast.js +0 -225
- package/dist/ui/Toast.js.map +0 -1
- package/dist/ui/WorkspacePicker.d.ts +0 -35
- package/dist/ui/WorkspacePicker.d.ts.map +0 -1
- package/dist/ui/WorkspacePicker.js +0 -39
- package/dist/ui/WorkspacePicker.js.map +0 -1
- package/dist/ui/card-css.d.ts +0 -2
- package/dist/ui/card-css.d.ts.map +0 -1
- package/dist/ui/card-css.generated.d.ts +0 -2
- package/dist/ui/card-css.generated.d.ts.map +0 -1
- package/dist/ui/card-css.generated.js +0 -4
- package/dist/ui/card-css.generated.js.map +0 -1
- package/dist/ui/card-css.js +0 -5
- package/dist/ui/card-css.js.map +0 -1
- package/dist/ui/chevron.d.ts +0 -22
- package/dist/ui/chevron.d.ts.map +0 -1
- package/dist/ui/chevron.js +0 -33
- package/dist/ui/chevron.js.map +0 -1
- package/dist/ui/chip-css.d.ts +0 -2
- package/dist/ui/chip-css.d.ts.map +0 -1
- package/dist/ui/chip-css.generated.d.ts +0 -2
- package/dist/ui/chip-css.generated.d.ts.map +0 -1
- package/dist/ui/chip-css.generated.js +0 -4
- package/dist/ui/chip-css.generated.js.map +0 -1
- package/dist/ui/chip-css.js +0 -12
- package/dist/ui/chip-css.js.map +0 -1
- package/dist/ui/code-viewer-css.d.ts +0 -2
- package/dist/ui/code-viewer-css.d.ts.map +0 -1
- package/dist/ui/code-viewer-css.generated.d.ts +0 -2
- package/dist/ui/code-viewer-css.generated.d.ts.map +0 -1
- package/dist/ui/code-viewer-css.generated.js +0 -4
- package/dist/ui/code-viewer-css.generated.js.map +0 -1
- package/dist/ui/code-viewer-css.js +0 -3
- package/dist/ui/code-viewer-css.js.map +0 -1
- package/dist/ui/code-viewer-lang.d.ts +0 -15
- package/dist/ui/code-viewer-lang.d.ts.map +0 -1
- package/dist/ui/code-viewer-lang.js +0 -190
- package/dist/ui/code-viewer-lang.js.map +0 -1
- package/dist/ui/code-viewer-theme.d.ts +0 -5
- package/dist/ui/code-viewer-theme.d.ts.map +0 -1
- package/dist/ui/code-viewer-theme.js +0 -138
- package/dist/ui/code-viewer-theme.js.map +0 -1
- package/dist/ui/controls/button-css.generated.d.ts +0 -2
- package/dist/ui/controls/button-css.generated.d.ts.map +0 -1
- package/dist/ui/controls/button-css.generated.js +0 -4
- package/dist/ui/controls/button-css.generated.js.map +0 -1
- package/dist/ui/controls/datetime-css.generated.d.ts +0 -2
- package/dist/ui/controls/datetime-css.generated.d.ts.map +0 -1
- package/dist/ui/controls/datetime-css.generated.js +0 -4
- package/dist/ui/controls/datetime-css.generated.js.map +0 -1
- package/dist/ui/controls/field-css.generated.d.ts +0 -2
- package/dist/ui/controls/field-css.generated.d.ts.map +0 -1
- package/dist/ui/controls/field-css.generated.js +0 -4
- package/dist/ui/controls/field-css.generated.js.map +0 -1
- package/dist/ui/controls/hint-css.generated.d.ts +0 -2
- package/dist/ui/controls/hint-css.generated.d.ts.map +0 -1
- package/dist/ui/controls/hint-css.generated.js +0 -4
- package/dist/ui/controls/hint-css.generated.js.map +0 -1
- package/dist/ui/controls/input-group-css.generated.d.ts +0 -2
- package/dist/ui/controls/input-group-css.generated.d.ts.map +0 -1
- package/dist/ui/controls/input-group-css.generated.js +0 -4
- package/dist/ui/controls/input-group-css.generated.js.map +0 -1
- package/dist/ui/controls/loader-bar-css.generated.d.ts +0 -2
- package/dist/ui/controls/loader-bar-css.generated.d.ts.map +0 -1
- package/dist/ui/controls/loader-bar-css.generated.js +0 -4
- package/dist/ui/controls/loader-bar-css.generated.js.map +0 -1
- package/dist/ui/controls/loader-css.generated.d.ts +0 -2
- package/dist/ui/controls/loader-css.generated.d.ts.map +0 -1
- package/dist/ui/controls/loader-css.generated.js +0 -4
- package/dist/ui/controls/loader-css.generated.js.map +0 -1
- package/dist/ui/controls/loading-css.generated.d.ts +0 -2
- package/dist/ui/controls/loading-css.generated.d.ts.map +0 -1
- package/dist/ui/controls/loading-css.generated.js +0 -4
- package/dist/ui/controls/loading-css.generated.js.map +0 -1
- package/dist/ui/controls/pagination-css.generated.d.ts +0 -2
- package/dist/ui/controls/pagination-css.generated.d.ts.map +0 -1
- package/dist/ui/controls/pagination-css.generated.js +0 -4
- package/dist/ui/controls/pagination-css.generated.js.map +0 -1
- package/dist/ui/controls/quick-toolbar-css.generated.d.ts +0 -2
- package/dist/ui/controls/quick-toolbar-css.generated.d.ts.map +0 -1
- package/dist/ui/controls/quick-toolbar-css.generated.js +0 -4
- package/dist/ui/controls/quick-toolbar-css.generated.js.map +0 -1
- package/dist/ui/controls/section-head-css.generated.d.ts +0 -2
- package/dist/ui/controls/section-head-css.generated.d.ts.map +0 -1
- package/dist/ui/controls/section-head-css.generated.js +0 -4
- package/dist/ui/controls/section-head-css.generated.js.map +0 -1
- package/dist/ui/controls/segmented-css.generated.d.ts +0 -2
- package/dist/ui/controls/segmented-css.generated.d.ts.map +0 -1
- package/dist/ui/controls/segmented-css.generated.js +0 -4
- package/dist/ui/controls/segmented-css.generated.js.map +0 -1
- package/dist/ui/controls/split-group-css.generated.d.ts +0 -2
- package/dist/ui/controls/split-group-css.generated.d.ts.map +0 -1
- package/dist/ui/controls/split-group-css.generated.js +0 -4
- package/dist/ui/controls/split-group-css.generated.js.map +0 -1
- package/dist/ui/controls/table-css.generated.d.ts +0 -2
- package/dist/ui/controls/table-css.generated.d.ts.map +0 -1
- package/dist/ui/controls/table-css.generated.js +0 -4
- package/dist/ui/controls/table-css.generated.js.map +0 -1
- package/dist/ui/controls/table-plain-css.generated.d.ts +0 -2
- package/dist/ui/controls/table-plain-css.generated.d.ts.map +0 -1
- package/dist/ui/controls/table-plain-css.generated.js +0 -4
- package/dist/ui/controls/table-plain-css.generated.js.map +0 -1
- package/dist/ui/controls-css.d.ts +0 -16
- package/dist/ui/controls-css.d.ts.map +0 -1
- package/dist/ui/controls-css.js +0 -26
- package/dist/ui/controls-css.js.map +0 -1
- package/dist/ui/css.d.ts +0 -35
- package/dist/ui/css.d.ts.map +0 -1
- package/dist/ui/css.js +0 -52
- package/dist/ui/css.js.map +0 -1
- package/dist/ui/datetime-logic.d.ts +0 -102
- package/dist/ui/datetime-logic.d.ts.map +0 -1
- package/dist/ui/datetime-logic.js +0 -200
- package/dist/ui/datetime-logic.js.map +0 -1
- package/dist/ui/feedback-css.d.ts +0 -2
- package/dist/ui/feedback-css.d.ts.map +0 -1
- package/dist/ui/feedback-css.generated.d.ts +0 -2
- package/dist/ui/feedback-css.generated.d.ts.map +0 -1
- package/dist/ui/feedback-css.generated.js +0 -4
- package/dist/ui/feedback-css.generated.js.map +0 -1
- package/dist/ui/feedback-css.js +0 -4
- package/dist/ui/feedback-css.js.map +0 -1
- package/dist/ui/flip-css.d.ts +0 -2
- package/dist/ui/flip-css.d.ts.map +0 -1
- package/dist/ui/flip-css.generated.d.ts +0 -2
- package/dist/ui/flip-css.generated.d.ts.map +0 -1
- package/dist/ui/flip-css.generated.js +0 -4
- package/dist/ui/flip-css.generated.js.map +0 -1
- package/dist/ui/flip-css.js +0 -4
- package/dist/ui/flip-css.js.map +0 -1
- package/dist/ui/host-data.d.ts +0 -119
- package/dist/ui/host-data.d.ts.map +0 -1
- package/dist/ui/host-data.js +0 -122
- package/dist/ui/host-data.js.map +0 -1
- package/dist/ui/host-toast.d.ts +0 -23
- package/dist/ui/host-toast.d.ts.map +0 -1
- package/dist/ui/host-toast.js +0 -34
- package/dist/ui/host-toast.js.map +0 -1
- package/dist/ui/loader-bar-art.d.ts +0 -6
- package/dist/ui/loader-bar-art.d.ts.map +0 -1
- package/dist/ui/loader-bar-art.js +0 -6
- package/dist/ui/loader-bar-art.js.map +0 -1
- package/dist/ui/loading-host.d.ts +0 -49
- package/dist/ui/loading-host.d.ts.map +0 -1
- package/dist/ui/loading-host.js +0 -57
- package/dist/ui/loading-host.js.map +0 -1
- package/dist/ui/locale.d.ts +0 -4
- package/dist/ui/locale.d.ts.map +0 -1
- package/dist/ui/locale.js +0 -17
- package/dist/ui/locale.js.map +0 -1
- package/dist/ui/marquee-css.d.ts +0 -2
- package/dist/ui/marquee-css.d.ts.map +0 -1
- package/dist/ui/marquee-css.generated.d.ts +0 -2
- package/dist/ui/marquee-css.generated.d.ts.map +0 -1
- package/dist/ui/marquee-css.generated.js +0 -4
- package/dist/ui/marquee-css.generated.js.map +0 -1
- package/dist/ui/marquee-css.js +0 -4
- package/dist/ui/marquee-css.js.map +0 -1
- package/dist/ui/modal-host.d.ts +0 -51
- package/dist/ui/modal-host.d.ts.map +0 -1
- package/dist/ui/modal-host.js +0 -170
- package/dist/ui/modal-host.js.map +0 -1
- package/dist/ui/overlay-css.d.ts +0 -2
- package/dist/ui/overlay-css.d.ts.map +0 -1
- package/dist/ui/overlay-css.generated.d.ts +0 -2
- package/dist/ui/overlay-css.generated.d.ts.map +0 -1
- package/dist/ui/overlay-css.generated.js +0 -4
- package/dist/ui/overlay-css.generated.js.map +0 -1
- package/dist/ui/overlay-css.js +0 -2
- package/dist/ui/overlay-css.js.map +0 -1
- package/dist/ui/overlay.d.ts +0 -62
- package/dist/ui/overlay.d.ts.map +0 -1
- package/dist/ui/overlay.js +0 -94
- package/dist/ui/overlay.js.map +0 -1
- package/dist/ui/pagination-logic.d.ts +0 -36
- package/dist/ui/pagination-logic.d.ts.map +0 -1
- package/dist/ui/pagination-logic.js +0 -73
- package/dist/ui/pagination-logic.js.map +0 -1
- package/dist/ui/panel-css.d.ts +0 -2
- package/dist/ui/panel-css.d.ts.map +0 -1
- package/dist/ui/panel-css.generated.d.ts +0 -2
- package/dist/ui/panel-css.generated.d.ts.map +0 -1
- package/dist/ui/panel-css.generated.js +0 -4
- package/dist/ui/panel-css.generated.js.map +0 -1
- package/dist/ui/panel-css.js +0 -2
- package/dist/ui/panel-css.js.map +0 -1
- package/dist/ui/panel-dock-css.d.ts +0 -2
- package/dist/ui/panel-dock-css.d.ts.map +0 -1
- package/dist/ui/panel-dock-css.generated.d.ts +0 -2
- package/dist/ui/panel-dock-css.generated.d.ts.map +0 -1
- package/dist/ui/panel-dock-css.generated.js +0 -4
- package/dist/ui/panel-dock-css.generated.js.map +0 -1
- package/dist/ui/panel-dock-css.js +0 -4
- package/dist/ui/panel-dock-css.js.map +0 -1
- package/dist/ui/panel-dock-logic.d.ts +0 -67
- package/dist/ui/panel-dock-logic.d.ts.map +0 -1
- package/dist/ui/panel-dock-logic.js +0 -110
- package/dist/ui/panel-dock-logic.js.map +0 -1
- package/dist/ui/panel.d.ts +0 -41
- package/dist/ui/panel.d.ts.map +0 -1
- package/dist/ui/panel.js +0 -37
- package/dist/ui/panel.js.map +0 -1
- package/dist/ui/picker-css.d.ts +0 -2
- package/dist/ui/picker-css.d.ts.map +0 -1
- package/dist/ui/picker-css.generated.d.ts +0 -2
- package/dist/ui/picker-css.generated.d.ts.map +0 -1
- package/dist/ui/picker-css.generated.js +0 -4
- package/dist/ui/picker-css.generated.js.map +0 -1
- package/dist/ui/picker-css.js +0 -4
- package/dist/ui/picker-css.js.map +0 -1
- package/dist/ui/picker-icons.d.ts +0 -12
- package/dist/ui/picker-icons.d.ts.map +0 -1
- package/dist/ui/picker-icons.js +0 -29
- package/dist/ui/picker-icons.js.map +0 -1
- package/dist/ui/picker-logic.d.ts +0 -33
- package/dist/ui/picker-logic.d.ts.map +0 -1
- package/dist/ui/picker-logic.js +0 -68
- package/dist/ui/picker-logic.js.map +0 -1
- package/dist/ui/quick-toolbar-logic.d.ts +0 -76
- package/dist/ui/quick-toolbar-logic.d.ts.map +0 -1
- package/dist/ui/quick-toolbar-logic.js +0 -40
- package/dist/ui/quick-toolbar-logic.js.map +0 -1
- package/dist/ui/resizer.d.ts +0 -29
- package/dist/ui/resizer.d.ts.map +0 -1
- package/dist/ui/resizer.js +0 -42
- package/dist/ui/resizer.js.map +0 -1
- package/dist/ui/side-panel-css.d.ts +0 -2
- package/dist/ui/side-panel-css.d.ts.map +0 -1
- package/dist/ui/side-panel-css.generated.d.ts +0 -2
- package/dist/ui/side-panel-css.generated.d.ts.map +0 -1
- package/dist/ui/side-panel-css.generated.js +0 -4
- package/dist/ui/side-panel-css.generated.js.map +0 -1
- package/dist/ui/side-panel-css.js +0 -2
- package/dist/ui/side-panel-css.js.map +0 -1
- package/dist/ui/side-sheet-css.d.ts +0 -2
- package/dist/ui/side-sheet-css.d.ts.map +0 -1
- package/dist/ui/side-sheet-css.generated.d.ts +0 -2
- package/dist/ui/side-sheet-css.generated.d.ts.map +0 -1
- package/dist/ui/side-sheet-css.generated.js +0 -4
- package/dist/ui/side-sheet-css.generated.js.map +0 -1
- package/dist/ui/side-sheet-css.js +0 -2
- package/dist/ui/side-sheet-css.js.map +0 -1
- package/dist/ui/surface-css.d.ts +0 -2
- package/dist/ui/surface-css.d.ts.map +0 -1
- package/dist/ui/surface-css.generated.d.ts +0 -2
- package/dist/ui/surface-css.generated.d.ts.map +0 -1
- package/dist/ui/surface-css.generated.js +0 -4
- package/dist/ui/surface-css.generated.js.map +0 -1
- package/dist/ui/surface-css.js +0 -7
- package/dist/ui/surface-css.js.map +0 -1
- package/dist/ui/table-logic.d.ts +0 -110
- package/dist/ui/table-logic.d.ts.map +0 -1
- package/dist/ui/table-logic.js +0 -81
- package/dist/ui/table-logic.js.map +0 -1
- package/dist/ui/table-shared.d.ts +0 -101
- package/dist/ui/table-shared.d.ts.map +0 -1
- package/dist/ui/table-shared.js +0 -229
- package/dist/ui/table-shared.js.map +0 -1
- package/dist/ui/thenable.d.ts +0 -9
- package/dist/ui/thenable.d.ts.map +0 -1
- package/dist/ui/thenable.js +0 -15
- package/dist/ui/thenable.js.map +0 -1
- package/dist/ui/ticker.d.ts +0 -8
- package/dist/ui/ticker.d.ts.map +0 -1
- package/dist/ui/ticker.js +0 -49
- package/dist/ui/ticker.js.map +0 -1
- package/dist/ui/toast-host.d.ts +0 -24
- package/dist/ui/toast-host.d.ts.map +0 -1
- package/dist/ui/toast-host.js +0 -20
- package/dist/ui/toast-host.js.map +0 -1
- package/dist/ui/tooltip.d.ts +0 -29
- package/dist/ui/tooltip.d.ts.map +0 -1
- package/dist/ui/tooltip.js +0 -10
- package/dist/ui/tooltip.js.map +0 -1
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
// 官方对照:ui-chat@0.2.1-rc.5 lib/client.js:6107-6260(reasoningText / latestCompletedParagraphFirstLine /
|
|
2
|
-
// ReasoningRow)+ ReasoningContent(lib/client.js:6568-6576)。
|
|
3
|
-
// root[data-variant=think][data-state=running|ok][data-expanded][data-preview]
|
|
4
|
-
// > [running] visuallyHidden「正在思考」
|
|
5
|
-
// > DisclosureRow(icon=IconThinkOutlineRegular 14px,title=t("message.think")=「思考」,running ⇒ 整行 shimmer)
|
|
6
|
-
// collapsedContent = separator(data-shimmer-decoration, 2×2px) + summary[data-streaming]
|
|
7
|
-
// > summaryText > TextShimmer(summary)
|
|
8
|
-
// content = thinkBody > MarkdownText(compact, streaming=running)
|
|
9
|
-
// 折叠态 root 固定一行高(contain:size layout + height 24px+delta);[data-preview] 缺失 ⇒ separator/summary 隐藏。
|
|
10
|
-
import { Fragment, createElement as h, useMemo, useState } from 'react';
|
|
11
|
-
import { DisclosureRow, IconThinkOutlineRegular, MarkdownText, TextShimmer } from '../../ui/official.js';
|
|
12
|
-
import { officialClass } from '../official-classes.js';
|
|
13
|
-
import { markdownLabels } from '../../explorer/preview/md-labels.js';
|
|
14
|
-
/** 官方 firstLine(lib/client.js:6140 区):首行。 */
|
|
15
|
-
function firstLine(text) {
|
|
16
|
-
const newline = text.indexOf('\n');
|
|
17
|
-
return newline === -1 ? text : text.slice(0, newline);
|
|
18
|
-
}
|
|
19
|
-
/** 官方 reasoningText:剥掉模型签名包裹(`<signature>…</signature>`),无可见内容返回空串。 */
|
|
20
|
-
function reasoningText(text) {
|
|
21
|
-
if (text[0] !== '<')
|
|
22
|
-
return text;
|
|
23
|
-
const opening = '<signature>';
|
|
24
|
-
if (opening.startsWith(text))
|
|
25
|
-
return '';
|
|
26
|
-
if (!text.startsWith(opening))
|
|
27
|
-
return text;
|
|
28
|
-
const end = text.indexOf('</signature>', 11);
|
|
29
|
-
if (end === -1)
|
|
30
|
-
return '';
|
|
31
|
-
let start = end + 12;
|
|
32
|
-
while (start < text.length) {
|
|
33
|
-
if (text[start] === '\n')
|
|
34
|
-
start += 1;
|
|
35
|
-
else if (text[start] === '\r' && text[start + 1] === '\n')
|
|
36
|
-
start += 2;
|
|
37
|
-
else
|
|
38
|
-
break;
|
|
39
|
-
}
|
|
40
|
-
return text.slice(start);
|
|
41
|
-
}
|
|
42
|
-
/** 官方 latestCompletedParagraphFirstLine:最后一段已结束段落的首行(流式预览用)。 */
|
|
43
|
-
function latestCompletedParagraphFirstLine(text) {
|
|
44
|
-
let summary = '';
|
|
45
|
-
let paragraphStart = 0;
|
|
46
|
-
const separator = /\r?\n(?:[\t ]*\r?\n)+/g;
|
|
47
|
-
for (;;) {
|
|
48
|
-
const nextParagraph = separator.exec(text);
|
|
49
|
-
const paragraphEnd = nextParagraph === null ? text.length : nextParagraph.index + nextParagraph[0].indexOf('\n');
|
|
50
|
-
const newline = text.indexOf('\n', paragraphStart);
|
|
51
|
-
if (newline !== -1 && newline <= paragraphEnd) {
|
|
52
|
-
const candidate = text.slice(paragraphStart, newline).trim();
|
|
53
|
-
if (candidate !== '')
|
|
54
|
-
summary = candidate;
|
|
55
|
-
}
|
|
56
|
-
if (nextParagraph === null)
|
|
57
|
-
return summary;
|
|
58
|
-
paragraphStart = nextParagraph.index + nextParagraph[0].length;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
/** 思考行:折叠 = 「思考 · 首行预览 ⌄」;展开 = thinkBody 全文(MarkdownText compact)。 */
|
|
62
|
-
export function ReasoningRowMirror(props) {
|
|
63
|
-
const { text: rawText, running = false, preview: settledPreview = true, t } = props;
|
|
64
|
-
const [open, setOpen] = useState(false);
|
|
65
|
-
const text = useMemo(() => reasoningText(rawText), [rawText]);
|
|
66
|
-
if (text !== rawText && text.trim() === '')
|
|
67
|
-
return null;
|
|
68
|
-
const summaryText = running ? latestCompletedParagraphFirstLine(text) : firstLine(text);
|
|
69
|
-
// lib 目标是 ES2020(无 String.replaceAll)⇒ split/join 等价去 `**`。
|
|
70
|
-
const summary = summaryText.split('**').join('');
|
|
71
|
-
const preview = !open && summary !== '' && (running || settledPreview);
|
|
72
|
-
return h('div', {
|
|
73
|
-
className: officialClass('ReasoningRow', 'root') ?? '',
|
|
74
|
-
'data-variant': 'think',
|
|
75
|
-
'data-state': running ? 'running' : 'ok',
|
|
76
|
-
'data-expanded': open || undefined,
|
|
77
|
-
'data-preview': preview || undefined,
|
|
78
|
-
}, running
|
|
79
|
-
? h('span', { className: officialClass('accessibility', 'visuallyHidden') ?? '' }, t('reasoningRunning'))
|
|
80
|
-
: null, h(DisclosureRow, {
|
|
81
|
-
icon: h(IconThinkOutlineRegular, { size: 14 }),
|
|
82
|
-
title: t('thinkLabel'),
|
|
83
|
-
running,
|
|
84
|
-
open,
|
|
85
|
-
expandable: true,
|
|
86
|
-
expandOnRowClick: true,
|
|
87
|
-
onToggle: () => { setOpen(value => !value); },
|
|
88
|
-
rowClassName: officialClass('ReasoningRow', 'row') ?? '',
|
|
89
|
-
leadingClassName: officialClass('ReasoningRow', 'leading') ?? '',
|
|
90
|
-
titleClassName: officialClass('ReasoningRow', 'title') ?? '',
|
|
91
|
-
collapsedContent: h(Fragment, null, h('span', {
|
|
92
|
-
className: officialClass('ReasoningRow', 'separator') ?? '',
|
|
93
|
-
'data-shimmer-decoration': true,
|
|
94
|
-
'aria-hidden': true,
|
|
95
|
-
}),
|
|
96
|
-
// 官方是 summary > summaryText 两层:外层 nowrap 截断、内层 text-overflow:ellipsis(省略号)。
|
|
97
|
-
h('span', {
|
|
98
|
-
className: officialClass('ReasoningRow', 'summary') ?? '',
|
|
99
|
-
'data-streaming': running || undefined,
|
|
100
|
-
}, h('span', { className: officialClass('ReasoningRow', 'summaryText') ?? '' }, h(TextShimmer, null, summary)))),
|
|
101
|
-
children: open
|
|
102
|
-
? h('div', { className: officialClass('ReasoningRow', 'thinkBody') ?? '' }, h(MarkdownText, {
|
|
103
|
-
text,
|
|
104
|
-
streaming: running,
|
|
105
|
-
labels: markdownLabels(),
|
|
106
|
-
variant: 'compact',
|
|
107
|
-
}))
|
|
108
|
-
: undefined,
|
|
109
|
-
}));
|
|
110
|
-
}
|
|
111
|
-
//# sourceMappingURL=ReasoningRow.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReasoningRow.js","sourceRoot":"","sources":["../../../src/session/mirror/ReasoningRow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { createElement as h } from 'react';
|
|
2
|
-
import type { Translate } from '../../utils/i18n.js';
|
|
3
|
-
/**
|
|
4
|
-
* 运行中状态行:会话流末尾一行「深度求索中,用时 N 秒 ···」(蓝色 shimmer)。
|
|
5
|
-
* @param startTime - 当前 turn 开始时间;undefined = 尚未起轮(只显示「深度求索中」)。
|
|
6
|
-
* @param t - 翻译席位。
|
|
7
|
-
*/
|
|
8
|
-
export declare function RunningStatusMirror(props: {
|
|
9
|
-
startTime: number | undefined;
|
|
10
|
-
t: Translate;
|
|
11
|
-
}): ReturnType<typeof h>;
|
|
12
|
-
//# sourceMappingURL=RunningStatus.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RunningStatus.d.ts","sourceRoot":"","sources":["../../../src/session/mirror/RunningStatus.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAuB,MAAM,OAAO,CAAA;AAG/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAuBpD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,CAAC,EAAE,SAAS,CAAA;CACb,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CA+BvB"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
// 官方对照:ui-chat@0.2.1-rc.5 lib/client.js:5580-5638(RunningWhaleTail + RunningStatus;
|
|
2
|
-
// 0.2.2-alpha.3 仅多 paused/holding 两个占位参数,默认渲染同构)
|
|
3
|
-
// root div.running[data-chat-running]
|
|
4
|
-
// > visuallyHidden(role=status) > runningDivider(.5px 顶部横线,官方 CSS 按「前一项是否 tail」显隐)
|
|
5
|
-
// > runningContent > runningIcon(鲸尾:animated APNG mask + still SVG 兜底)+ TextShimmer(label)
|
|
6
|
-
// label:startTime 缺失 =「深度求索中」;否则「深度求索中,用时 {duration} ···」(duration = formatRunDuration)。
|
|
7
|
-
// ⚠ 0.2.x 起运行态只由这一行代表:turn 未关闭时官方 TurnProcessNodeView 整块不渲染(见 TurnProcessNodeView.ts)。
|
|
8
|
-
import { createElement as h, useEffect, useState } from 'react';
|
|
9
|
-
import { TextShimmer } from '../../ui/official.js';
|
|
10
|
-
import { officialClass } from '../official-classes.js';
|
|
11
|
-
import { durationText, formatRunDuration } from './message-chrome.js';
|
|
12
|
-
/** 官方 LIVE_RUN_CLOCK_INTERVAL_MS(lib/client.js:979)。 */
|
|
13
|
-
const LIVE_RUN_CLOCK_INTERVAL_MS = 1000;
|
|
14
|
-
/** 官方静态兜底 SVG 的鲸尾路径(lib/client.js:6340 REST_PATH,16×16)。 */
|
|
15
|
-
const REST_PATH = 'M8.844 13.742C8.967 12.328 8.45 10.4 8.45 9.65C8.45 8.94 8.88 8.43 9.6 8.43C11.285 8.43 12.106 8.281 12.685 8.104C13.71 7.791 14.585 6.768 15.055 5.945C15.137 5.803 14.99 5.641 14.829 5.671C13.829 5.86 12.828 5.376 11.827 4.978C10.659 4.514 9.491 4.707 8.935 4.876C8.805 4.915 8.658 4.819 8.636 4.686C8.468 3.643 7.405 2.615 5.498 2.238C4.54 2.048 3.748 1.574 3.347 1.202C3.252 1.113 3.088 1.125 3.03 1.242C2.628 2.059 2.168 3.82 5.248 6.115C5.82 6.494 6.31 6.785 6.574 7.637C6.72 8.104 6.157 9.168 6.061 9.368C5.157 11.27 5.089 12.19 4.926 13.742';
|
|
16
|
-
/** 官方 RunningWhaleTail:APNG mask 动画(官方 CSS 提供资源)+ 静态 SVG 兜底。 */
|
|
17
|
-
function RunningWhaleTail() {
|
|
18
|
-
return h('span', { className: officialClass('ChatView', 'runningIcon') ?? '', 'aria-hidden': 'true' }, h('span', { className: officialClass('ChatView', 'runningWhaleAnimated') ?? '' }), h('svg', {
|
|
19
|
-
className: officialClass('ChatView', 'runningWhaleStill') ?? '',
|
|
20
|
-
width: '100%',
|
|
21
|
-
height: '100%',
|
|
22
|
-
viewBox: '0 0 16 16',
|
|
23
|
-
fill: 'none',
|
|
24
|
-
}, h('path', { d: REST_PATH, stroke: 'currentColor', strokeWidth: 1 })));
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* 运行中状态行:会话流末尾一行「深度求索中,用时 N 秒 ···」(蓝色 shimmer)。
|
|
28
|
-
* @param startTime - 当前 turn 开始时间;undefined = 尚未起轮(只显示「深度求索中」)。
|
|
29
|
-
* @param t - 翻译席位。
|
|
30
|
-
*/
|
|
31
|
-
export function RunningStatusMirror(props) {
|
|
32
|
-
const { startTime, t } = props;
|
|
33
|
-
const [now, setNow] = useState(() => Date.now());
|
|
34
|
-
useEffect(() => {
|
|
35
|
-
if (startTime === undefined)
|
|
36
|
-
return;
|
|
37
|
-
setNow(Date.now());
|
|
38
|
-
const timer = setInterval(() => { setNow(Date.now()); }, LIVE_RUN_CLOCK_INTERVAL_MS);
|
|
39
|
-
return () => { clearInterval(timer); };
|
|
40
|
-
}, [startTime]);
|
|
41
|
-
const label = startTime === undefined
|
|
42
|
-
? t('chatDeepDiving')
|
|
43
|
-
: t('chatDeepDivingFor', { duration: durationText(formatRunDuration(Math.max(1000, now - startTime), t)) });
|
|
44
|
-
return h('div', {
|
|
45
|
-
className: officialClass('ChatView', 'running') ?? '',
|
|
46
|
-
'data-chat-running': true,
|
|
47
|
-
}, h('span', {
|
|
48
|
-
className: officialClass('accessibility', 'visuallyHidden') ?? '',
|
|
49
|
-
role: 'status',
|
|
50
|
-
'aria-live': 'polite',
|
|
51
|
-
'aria-atomic': 'true',
|
|
52
|
-
}, t('chatDeepDiving')), h('span', { className: officialClass('ChatView', 'runningDivider') ?? '', 'aria-hidden': 'true' }), h('span', { className: officialClass('ChatView', 'runningContent') ?? '' }, h(RunningWhaleTail, null), h(TextShimmer, {
|
|
53
|
-
active: true,
|
|
54
|
-
className: officialClass('ChatView', 'runningText') ?? '',
|
|
55
|
-
}, label)));
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=RunningStatus.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RunningStatus.js","sourceRoot":"","sources":["../../../src/session/mirror/RunningStatus.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { CSSProperties, RefObject } from 'react';
|
|
2
|
-
/**
|
|
3
|
-
* 官方 stat-dialog.ts 的 MEASURE_STYLE:首趟(pos 未定)时面板「隐藏但仍布局」,
|
|
4
|
-
* 好让 useAnchoredPosition 量到真实尺寸。官方要求面板铺 `pos ?? MEASURE_STYLE`;
|
|
5
|
-
* 漏了它 ⇒ 首趟完全无定位、面板落进文档流撑长页面(真机 2026-10-23:点用量无反应 + 滚动条变长)。
|
|
6
|
-
*/
|
|
7
|
-
export declare const STAT_MEASURE_STYLE: CSSProperties;
|
|
8
|
-
export interface StatDialogSeat {
|
|
9
|
-
open: boolean;
|
|
10
|
-
setOpen(open: boolean): void;
|
|
11
|
-
rootRef: RefObject<HTMLSpanElement | null>;
|
|
12
|
-
panelRef: RefObject<HTMLDivElement | null>;
|
|
13
|
-
pos: CSSProperties | undefined;
|
|
14
|
-
}
|
|
15
|
-
/** 官方 useStatDialog:把弹层挂在触发器上方(side: 'top'),点外 / Esc 关闭。 */
|
|
16
|
-
export declare function useStatDialog(controlled?: {
|
|
17
|
-
open?: boolean;
|
|
18
|
-
setOpen?(open: boolean): void;
|
|
19
|
-
}): StatDialogSeat;
|
|
20
|
-
//# sourceMappingURL=StatDialog.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StatDialog.d.ts","sourceRoot":"","sources":["../../../src/session/mirror/StatDialog.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAMrD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAAyD,CAAA;AAE1F,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,OAAO,EAAE,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC,CAAA;IAC1C,QAAQ,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IAC1C,GAAG,EAAE,aAAa,GAAG,SAAS,CAAA;CAC/B;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,UAAU,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE,GAAG,cAAc,CA4B5G"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
// 官方对照:packages/client/ui-chat/src/client/chat/stat-dialog.js(0.1.7-rc.2 lib/client.js:6278-6350)
|
|
2
|
-
// PANEL_MARGIN = 12 / PANEL_GAP = 8(lib/client.js:6281-6283)
|
|
3
|
-
// useStatDialog = 受控开关 + useAnchoredPosition(side:'top') + useDismissOnOutsidePointer + Escape 关闭。
|
|
4
|
-
// 官方用的是 primitives 的同名 hook,这里直接复用同一份实现(不是自绘定位)。
|
|
5
|
-
import { useEffect, useRef, useState } from 'react';
|
|
6
|
-
import { useAnchoredPosition, useDismissOnOutsidePointer } from '../../ui/official.js';
|
|
7
|
-
const PANEL_MARGIN = 12;
|
|
8
|
-
const PANEL_GAP = 8;
|
|
9
|
-
/**
|
|
10
|
-
* 官方 stat-dialog.ts 的 MEASURE_STYLE:首趟(pos 未定)时面板「隐藏但仍布局」,
|
|
11
|
-
* 好让 useAnchoredPosition 量到真实尺寸。官方要求面板铺 `pos ?? MEASURE_STYLE`;
|
|
12
|
-
* 漏了它 ⇒ 首趟完全无定位、面板落进文档流撑长页面(真机 2026-10-23:点用量无反应 + 滚动条变长)。
|
|
13
|
-
*/
|
|
14
|
-
export const STAT_MEASURE_STYLE = { visibility: 'hidden', left: 0, top: 0 };
|
|
15
|
-
/** 官方 useStatDialog:把弹层挂在触发器上方(side: 'top'),点外 / Esc 关闭。 */
|
|
16
|
-
export function useStatDialog(controlled) {
|
|
17
|
-
const [ownOpen, setOwnOpen] = useState(false);
|
|
18
|
-
const open = controlled?.open ?? ownOpen;
|
|
19
|
-
const setOpen = controlled?.setOpen ?? setOwnOpen;
|
|
20
|
-
const rootRef = useRef(null);
|
|
21
|
-
const panelRef = useRef(null);
|
|
22
|
-
const pos = useAnchoredPosition({ open, anchorRef: rootRef, panelRef, side: 'top', gap: PANEL_GAP, margin: PANEL_MARGIN });
|
|
23
|
-
useDismissOnOutsidePointer(rootRef, open, setOpen, panelRef);
|
|
24
|
-
useEffect(() => {
|
|
25
|
-
if (!open)
|
|
26
|
-
return;
|
|
27
|
-
const onKeyDown = (event) => {
|
|
28
|
-
if (event.key === 'Escape')
|
|
29
|
-
setOpen(false);
|
|
30
|
-
};
|
|
31
|
-
// 官方 chat:6806-6820:pointerdown 之外还要捕获阶段 click(只发 click 的交互也得关)。
|
|
32
|
-
const onClick = (event) => {
|
|
33
|
-
const target = event.target;
|
|
34
|
-
if (!(target instanceof Node))
|
|
35
|
-
return;
|
|
36
|
-
if (rootRef.current?.contains(target) === true || panelRef.current?.contains(target) === true)
|
|
37
|
-
return;
|
|
38
|
-
setOpen(false);
|
|
39
|
-
};
|
|
40
|
-
document.addEventListener('keydown', onKeyDown);
|
|
41
|
-
document.addEventListener('click', onClick, true);
|
|
42
|
-
return () => {
|
|
43
|
-
document.removeEventListener('keydown', onKeyDown);
|
|
44
|
-
document.removeEventListener('click', onClick, true);
|
|
45
|
-
};
|
|
46
|
-
}, [open, setOpen]);
|
|
47
|
-
return { open, setOpen, rootRef, panelRef, pos };
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=StatDialog.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StatDialog.js","sourceRoot":"","sources":["../../../src/session/mirror/StatDialog.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,+DAA+D;AAC/D,qGAAqG;AACrG,iDAAiD;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEnD,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAA;AAEtF,MAAM,YAAY,GAAG,EAAE,CAAA;AACvB,MAAM,SAAS,GAAG,CAAC,CAAA;AAEnB;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAkB,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;AAU1F,4DAA4D;AAC5D,MAAM,UAAU,aAAa,CAAC,UAA8D;IAC1F,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAA;IACtD,MAAM,IAAI,GAAG,UAAU,EAAE,IAAI,IAAI,OAAO,CAAA;IACxC,MAAM,OAAO,GAAG,UAAU,EAAE,OAAO,IAAI,UAAU,CAAA;IACjD,MAAM,OAAO,GAAG,MAAM,CAAyB,IAAI,CAAC,CAAA;IACpD,MAAM,QAAQ,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAA;IACpD,MAAM,GAAG,GAAG,mBAAmB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAA;IAC1H,0BAA0B,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;IAC5D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI;YAAE,OAAM;QACjB,MAAM,SAAS,GAAG,CAAC,KAAoB,EAAQ,EAAE;YAC/C,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ;gBAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QAC5C,CAAC,CAAA;QACD,iEAAiE;QACjE,MAAM,OAAO,GAAG,CAAC,KAAiB,EAAQ,EAAE;YAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;YAC3B,IAAI,CAAC,CAAC,MAAM,YAAY,IAAI,CAAC;gBAAE,OAAM;YACrC,IAAI,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI;gBAAE,OAAM;YACrG,OAAO,CAAC,KAAK,CAAC,CAAA;QAChB,CAAC,CAAA;QACD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAC/C,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QACjD,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;YAClD,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QACtD,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;IACnB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAA;AAClD,CAAC"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { type ReactElement } from 'react';
|
|
2
|
-
import { type Translate } from '../../utils/i18n.js';
|
|
3
|
-
export interface DetailField {
|
|
4
|
-
label: string;
|
|
5
|
-
value: string;
|
|
6
|
-
}
|
|
7
|
-
export interface DetailItemModel {
|
|
8
|
-
title?: string;
|
|
9
|
-
subtitle?: string;
|
|
10
|
-
description?: string;
|
|
11
|
-
fields: DetailField[];
|
|
12
|
-
lines?: readonly string[];
|
|
13
|
-
status?: {
|
|
14
|
-
value: 'completed' | 'in_progress' | 'pending';
|
|
15
|
-
label: string;
|
|
16
|
-
};
|
|
17
|
-
badge?: {
|
|
18
|
-
tone?: string;
|
|
19
|
-
label: string;
|
|
20
|
-
};
|
|
21
|
-
location?: {
|
|
22
|
-
path: string;
|
|
23
|
-
line?: number;
|
|
24
|
-
};
|
|
25
|
-
change?: {
|
|
26
|
-
value?: 'added' | 'removed' | 'updated';
|
|
27
|
-
label: string;
|
|
28
|
-
};
|
|
29
|
-
previousStatus?: string;
|
|
30
|
-
markdown?: string;
|
|
31
|
-
code?: {
|
|
32
|
-
text: string;
|
|
33
|
-
language?: string;
|
|
34
|
-
};
|
|
35
|
-
groups?: {
|
|
36
|
-
label: string;
|
|
37
|
-
items: DetailItemModel[];
|
|
38
|
-
}[];
|
|
39
|
-
}
|
|
40
|
-
export interface ToolDetailsModel {
|
|
41
|
-
items: DetailItemModel[];
|
|
42
|
-
summary?: string;
|
|
43
|
-
empty?: string;
|
|
44
|
-
caption?: string;
|
|
45
|
-
unchanged?: {
|
|
46
|
-
label: string;
|
|
47
|
-
items: DetailItemModel[];
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* 官方 detailsCardModel(3985-4029)的「目标 / 定时任务」子集。
|
|
52
|
-
* 结算成功且结果为合法 JSON 才出详情卡;其余一律 null ⇒ 调用方走 ioCard 兜底。
|
|
53
|
-
*/
|
|
54
|
-
export declare function detailsCardModel(name: string, argsRaw: string, output: string, settled: boolean, isError: boolean, t: Translate): ToolDetailsModel | null;
|
|
55
|
-
/** 官方 DetailsRow 的摘要优先级(4080):summary → 第一项 title → empty → 原摘要。 */
|
|
56
|
-
export declare function detailsSummary(model: ToolDetailsModel): string | undefined;
|
|
57
|
-
/** 官方 ToolDetails(1458-1492):caption + 空态 / 列表 + 可折叠的「未变更」组。 */
|
|
58
|
-
export declare function ToolDetailsView({ model, t, onOpenFile }: {
|
|
59
|
-
model: ToolDetailsModel;
|
|
60
|
-
t: Translate;
|
|
61
|
-
onOpenFile?: (path: string, options?: {
|
|
62
|
-
line?: number;
|
|
63
|
-
}) => void;
|
|
64
|
-
}): ReactElement;
|
|
65
|
-
//# sourceMappingURL=ToolDetails.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ToolDetails.d.ts","sourceRoot":"","sources":["../../../src/session/mirror/ToolDetails.ts"],"names":[],"mappings":"AAMA,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AAU7D,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAG/D,MAAM,WAAW,WAAW;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAC7D,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzB,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1E,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACxC,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1C,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACnE,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1C,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,eAAe,EAAE,CAAA;KAAE,EAAE,CAAA;CACvD;AACD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,eAAe,EAAE,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,eAAe,EAAE,CAAA;KAAE,CAAA;CACxD;AAqID;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,GAAG,gBAAgB,GAAG,IAAI,CAmCzJ;AAED,oEAAoE;AACpE,wBAAgB,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAE1E;AA4ED,gEAAgE;AAChE,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE;IACxD,KAAK,EAAE,gBAAgB,CAAA;IACvB,CAAC,EAAE,SAAS,CAAA;IACZ,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;CACjE,GAAG,YAAY,CAcf"}
|
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
// 官方对照:ui-tool `components/ToolDetails`(lib/client.js:1357-1492)
|
|
2
|
-
// + `models/details-card-model`(:2988-3010、:3805-3821、:3854-3977、:3985-4029)。
|
|
3
|
-
//
|
|
4
|
-
// 本轮只移植「目标 / 定时任务」两族的模型(官方 `controlDetails` / `inspectionDetails`
|
|
5
|
-
// 那 400+ 行仍落回 ioCard);视图保留这两族真正会用到的字段。
|
|
6
|
-
// shortcut: control/inspection 系工具无专属详情,等宿主真机有样本再按同一模型接口补。
|
|
7
|
-
import { createElement as h } from 'react';
|
|
8
|
-
import { CodeBlock, IconCheckOutlineRegular, IconChevronRightOutlineRegular, IconPlayOutlineRegular, MarkdownText, } from '../../ui/official.js';
|
|
9
|
-
import { officialClass } from '../official-classes.js';
|
|
10
|
-
import { markdownLabels } from '../../explorer/preview/md-labels.js';
|
|
11
|
-
import { getLocale } from '../../utils/i18n.js';
|
|
12
|
-
import { controlDetails, inspectionDetails } from './control-details.js';
|
|
13
|
-
const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
14
|
-
const nonempty = (value) => typeof value === 'string' && value.trim() !== '';
|
|
15
|
-
const count = (value) => typeof value === 'number' && Number.isSafeInteger(value) && value >= 0;
|
|
16
|
-
function detailJson(text) {
|
|
17
|
-
try {
|
|
18
|
-
return JSON.parse(text);
|
|
19
|
-
}
|
|
20
|
-
catch {
|
|
21
|
-
return undefined;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
/** 官方 formatDate(3808-3821):本地化绝对时间,格式化失败退回原始 ISO 串。 */
|
|
25
|
-
function formatDate(date, fallback) {
|
|
26
|
-
try {
|
|
27
|
-
return new Intl.DateTimeFormat(getLocale(), {
|
|
28
|
-
year: 'numeric', month: 'short', day: 'numeric',
|
|
29
|
-
hour: '2-digit', minute: '2-digit', second: '2-digit', timeZoneName: 'short',
|
|
30
|
-
}).format(date);
|
|
31
|
-
}
|
|
32
|
-
catch {
|
|
33
|
-
return fallback;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
/** 官方 goalDetail(3854-3883):形状不全一律返回 null ⇒ 落回 ioCard,不半渲染。 */
|
|
37
|
-
function goalDetail(value, t) {
|
|
38
|
-
if (!isRecord(value))
|
|
39
|
-
return null;
|
|
40
|
-
if (value.goal === null)
|
|
41
|
-
return { items: [], empty: t('detailGoalEmpty') };
|
|
42
|
-
const goal = value.goal;
|
|
43
|
-
if (!isRecord(goal) || !nonempty(goal.id) || !nonempty(goal.objective))
|
|
44
|
-
return null;
|
|
45
|
-
if (!count(goal.revision) || !count(goal.roundsStarted) || !count(goal.maxGoalRounds))
|
|
46
|
-
return null;
|
|
47
|
-
const phase = goal.phase;
|
|
48
|
-
if (phase !== 'active' && phase !== 'paused' && phase !== 'blocked' && phase !== 'complete')
|
|
49
|
-
return null;
|
|
50
|
-
if (value.activation !== 'armed' && value.activation !== 'disarmed')
|
|
51
|
-
return null;
|
|
52
|
-
const phases = {
|
|
53
|
-
active: () => t('detailGoalActive'),
|
|
54
|
-
paused: () => t('detailGoalPaused'),
|
|
55
|
-
blocked: () => t('detailGoalBlocked'),
|
|
56
|
-
complete: () => t('detailGoalComplete'),
|
|
57
|
-
};
|
|
58
|
-
const fields = [
|
|
59
|
-
{
|
|
60
|
-
label: t('detailState'),
|
|
61
|
-
value: phase === 'active' && value.activation === 'disarmed' ? t('detailGoalDisarmed') : phases[phase](),
|
|
62
|
-
},
|
|
63
|
-
{ label: t('detailGoalRounds'), value: `${goal.roundsStarted} / ${goal.maxGoalRounds}` },
|
|
64
|
-
];
|
|
65
|
-
if (goal.blockedReason !== undefined) {
|
|
66
|
-
const reason = goal.blockedReason;
|
|
67
|
-
if (!isRecord(reason) || !nonempty(reason.code) || !nonempty(reason.message))
|
|
68
|
-
return null;
|
|
69
|
-
fields.push({ label: t('detailGoalReason'), value: reason.message });
|
|
70
|
-
}
|
|
71
|
-
return { items: [{ title: goal.objective, fields }] };
|
|
72
|
-
}
|
|
73
|
-
const WEEKDAY_KEYS = [
|
|
74
|
-
'detailWeekday1', 'detailWeekday2', 'detailWeekday3', 'detailWeekday4',
|
|
75
|
-
'detailWeekday5', 'detailWeekday6', 'detailWeekday7',
|
|
76
|
-
];
|
|
77
|
-
/** 官方 interval(3894-3899)。 */
|
|
78
|
-
function interval(seconds, t) {
|
|
79
|
-
if (seconds % 86400 === 0)
|
|
80
|
-
return t('detailDays', { count: seconds / 86400 });
|
|
81
|
-
if (seconds % 3600 === 0)
|
|
82
|
-
return t('detailHours', { count: seconds / 3600 });
|
|
83
|
-
if (seconds % 60 === 0)
|
|
84
|
-
return t('detailMinutes', { count: seconds / 60 });
|
|
85
|
-
return t('detailSeconds', { count: seconds });
|
|
86
|
-
}
|
|
87
|
-
const shortTime = (time) => time.replace(/:00\.000$/, '').replace(/\.000$/, '');
|
|
88
|
-
function weekdayText(days, t) {
|
|
89
|
-
if (!Array.isArray(days) || days.length === 0)
|
|
90
|
-
return undefined;
|
|
91
|
-
const labels = [];
|
|
92
|
-
for (const day of days) {
|
|
93
|
-
if (typeof day !== 'number' || !Number.isInteger(day))
|
|
94
|
-
return undefined;
|
|
95
|
-
const key = WEEKDAY_KEYS[day - 1];
|
|
96
|
-
if (key === undefined)
|
|
97
|
-
return undefined;
|
|
98
|
-
labels.push(t(key));
|
|
99
|
-
}
|
|
100
|
-
return labels.join(t('detailWeekdayJoin'));
|
|
101
|
-
}
|
|
102
|
-
/** 官方 scheduleItem(3916-3977):只认形状齐全、时间可解析的记录。 */
|
|
103
|
-
function scheduleItem(value, t) {
|
|
104
|
-
if (!isRecord(value) || !nonempty(value.id) || !nonempty(value.prompt))
|
|
105
|
-
return null;
|
|
106
|
-
if (typeof value.scheduledAt !== 'string')
|
|
107
|
-
return null;
|
|
108
|
-
if (value.deliveryMode !== 'host' && value.deliveryMode !== 'session-local')
|
|
109
|
-
return null;
|
|
110
|
-
if (value.state !== 'scheduled' && value.state !== 'overdue')
|
|
111
|
-
return null;
|
|
112
|
-
const date = new Date(value.scheduledAt);
|
|
113
|
-
if (!Number.isFinite(date.getTime()) || date.toISOString() !== value.scheduledAt)
|
|
114
|
-
return null;
|
|
115
|
-
let frequency;
|
|
116
|
-
switch (value.kind) {
|
|
117
|
-
case 'at':
|
|
118
|
-
frequency = t('detailScheduleOnce');
|
|
119
|
-
break;
|
|
120
|
-
case 'after':
|
|
121
|
-
if (!count(value.afterSeconds) || value.afterSeconds === 0)
|
|
122
|
-
return null;
|
|
123
|
-
frequency = t('detailScheduleOnce');
|
|
124
|
-
break;
|
|
125
|
-
case 'every':
|
|
126
|
-
if (!count(value.everySeconds) || value.everySeconds === 0)
|
|
127
|
-
return null;
|
|
128
|
-
frequency = t('detailScheduleEvery', { interval: interval(value.everySeconds, t) });
|
|
129
|
-
break;
|
|
130
|
-
case 'daily':
|
|
131
|
-
if (!nonempty(value.time) || !nonempty(value.timeZone))
|
|
132
|
-
return null;
|
|
133
|
-
frequency = t('detailScheduleDaily', { time: shortTime(value.time), zone: value.timeZone });
|
|
134
|
-
break;
|
|
135
|
-
case 'weekly': {
|
|
136
|
-
const days = weekdayText(value.weekdays, t);
|
|
137
|
-
if (!nonempty(value.time) || !nonempty(value.timeZone) || days === undefined)
|
|
138
|
-
return null;
|
|
139
|
-
frequency = t('detailScheduleWeekly', { days, time: shortTime(value.time), zone: value.timeZone });
|
|
140
|
-
break;
|
|
141
|
-
}
|
|
142
|
-
case 'cron':
|
|
143
|
-
if (!nonempty(value.expression) || !nonempty(value.timeZone))
|
|
144
|
-
return null;
|
|
145
|
-
frequency = t('detailScheduleCron', { expression: value.expression, zone: value.timeZone });
|
|
146
|
-
break;
|
|
147
|
-
default:
|
|
148
|
-
return null;
|
|
149
|
-
}
|
|
150
|
-
return {
|
|
151
|
-
title: nonempty(value.title) ? value.title : value.prompt,
|
|
152
|
-
fields: [
|
|
153
|
-
{ label: t('detailScheduleWhen'), value: formatDate(date, value.scheduledAt) },
|
|
154
|
-
{ label: t('detailScheduleFrequency'), value: frequency },
|
|
155
|
-
{ label: t('detailState'), value: value.state === 'scheduled' ? t('detailScheduleScheduled') : t('detailScheduleOverdue') },
|
|
156
|
-
],
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* 官方 detailsCardModel(3985-4029)的「目标 / 定时任务」子集。
|
|
161
|
-
* 结算成功且结果为合法 JSON 才出详情卡;其余一律 null ⇒ 调用方走 ioCard 兜底。
|
|
162
|
-
*/
|
|
163
|
-
export function detailsCardModel(name, argsRaw, output, settled, isError, t) {
|
|
164
|
-
if (!settled || isError || output === '')
|
|
165
|
-
return null;
|
|
166
|
-
const args = detailJson(argsRaw);
|
|
167
|
-
if (!isRecord(args))
|
|
168
|
-
return null;
|
|
169
|
-
const value = detailJson(output);
|
|
170
|
-
// 官方顺序(3992):control → inspection → goal/schedule;前两者吃文本格式,JSON 解析失败也可能出卡。
|
|
171
|
-
const recorded = controlDetails(name, args, output, value, t) ?? inspectionDetails(name, args, output, value, t);
|
|
172
|
-
if (recorded !== null)
|
|
173
|
-
return recorded;
|
|
174
|
-
if (value === undefined)
|
|
175
|
-
return null;
|
|
176
|
-
switch (name) {
|
|
177
|
-
case 'create_goal':
|
|
178
|
-
case 'get_goal':
|
|
179
|
-
case 'update_goal':
|
|
180
|
-
return goalDetail(value, t);
|
|
181
|
-
case 'schedule_create':
|
|
182
|
-
case 'schedule_update': {
|
|
183
|
-
const item = scheduleItem(value, t);
|
|
184
|
-
return item === null ? null : { items: [item] };
|
|
185
|
-
}
|
|
186
|
-
case 'schedule_list': {
|
|
187
|
-
if (!Array.isArray(value))
|
|
188
|
-
return null;
|
|
189
|
-
const items = [];
|
|
190
|
-
for (const entry of value) {
|
|
191
|
-
const item = scheduleItem(entry, t);
|
|
192
|
-
if (item === null)
|
|
193
|
-
return null;
|
|
194
|
-
items.push(item);
|
|
195
|
-
}
|
|
196
|
-
return { items, summary: t('detailScheduleCount', { count: items.length }), empty: t('detailScheduleEmpty') };
|
|
197
|
-
}
|
|
198
|
-
case 'schedule_delete':
|
|
199
|
-
if (!isRecord(value) || !nonempty(value.id) || value.deleted !== true)
|
|
200
|
-
return null;
|
|
201
|
-
return { items: [{ title: value.id, fields: [{ label: t('detailState'), value: t('detailScheduleDeleted') }] }] };
|
|
202
|
-
default:
|
|
203
|
-
return null;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
/** 官方 DetailsRow 的摘要优先级(4080):summary → 第一项 title → empty → 原摘要。 */
|
|
207
|
-
export function detailsSummary(model) {
|
|
208
|
-
return model.summary ?? model.items[0]?.title ?? model.empty;
|
|
209
|
-
}
|
|
210
|
-
/** 官方 DetailItem(1357-1449)本轮用到的字段;markdown/code/groups 由后续模型补齐。 */
|
|
211
|
-
function DetailItem({ item, t, onOpenFile }) {
|
|
212
|
-
const cls = (semantic) => officialClass('ToolDetails', semantic) ?? '';
|
|
213
|
-
const status = item.status;
|
|
214
|
-
return h('li', { className: cls('item'), 'data-change': item.change?.value }, item.title !== undefined
|
|
215
|
-
? h('div', { className: cls('heading') }, status !== undefined
|
|
216
|
-
? h('span', { className: cls('status'), role: 'img', 'aria-label': item.change?.label ?? status.label }, item.change?.value === 'added' ? '+' : item.change?.value === 'removed' ? '−'
|
|
217
|
-
: status.value === 'completed' ? h(IconCheckOutlineRegular, { size: 14 })
|
|
218
|
-
: status.value === 'in_progress' ? h(IconPlayOutlineRegular, { size: 14 })
|
|
219
|
-
: h('span', { className: cls('pending') }))
|
|
220
|
-
: null, item.location !== undefined && onOpenFile !== undefined
|
|
221
|
-
? h('button', {
|
|
222
|
-
className: cls('path'), type: 'button',
|
|
223
|
-
onClick: () => {
|
|
224
|
-
const location = item.location;
|
|
225
|
-
if (location !== undefined) {
|
|
226
|
-
if (location.line === undefined)
|
|
227
|
-
onOpenFile(location.path);
|
|
228
|
-
else
|
|
229
|
-
onOpenFile(location.path, { line: location.line });
|
|
230
|
-
}
|
|
231
|
-
},
|
|
232
|
-
}, item.title)
|
|
233
|
-
: h('span', { className: cls('text') }, item.title), item.badge !== undefined
|
|
234
|
-
? h('span', { className: cls('badge'), 'data-tone': item.badge.tone }, item.badge.label)
|
|
235
|
-
: null, status !== undefined
|
|
236
|
-
? h('span', { className: cls('statusText') }, item.previousStatus !== undefined
|
|
237
|
-
? h('span', null, h('span', { className: cls('previous') }, item.previousStatus), h('span', null, ' → '))
|
|
238
|
-
: null, h('span', null, status.label), item.change?.value === 'updated' && item.previousStatus === undefined
|
|
239
|
-
? h('span', null, ' · ', item.change.label)
|
|
240
|
-
: null)
|
|
241
|
-
: null)
|
|
242
|
-
: null, item.subtitle !== undefined ? h('div', { className: cls('subtitle') }, item.subtitle) : null, item.description !== undefined ? h('p', { className: cls('description') }, item.description) : null, item.fields.length > 0
|
|
243
|
-
? h('dl', { className: cls('fields') }, item.fields.map(field => h('div', { key: field.label, className: cls('field') }, h('dt', null, field.label), h('dd', null, field.value))))
|
|
244
|
-
: null, item.lines !== undefined
|
|
245
|
-
? h('ul', { className: cls('lines') }, item.lines.map((line, index) => h('li', { key: index }, line)))
|
|
246
|
-
: null, item.markdown !== undefined
|
|
247
|
-
? h('div', { className: cls('prose') }, h(MarkdownText, { text: item.markdown, labels: markdownLabels() }))
|
|
248
|
-
: null, item.code !== undefined
|
|
249
|
-
? h(CodeBlock, {
|
|
250
|
-
code: item.code.text,
|
|
251
|
-
lang: item.code.language,
|
|
252
|
-
toolbarLabels: { codeLabel: t('codeBlockLabel'), wrapLabel: t('diffWrapLabel'), unwrapLabel: t('diffUnwrapLabel') },
|
|
253
|
-
copyLabel: t('copyLabel'),
|
|
254
|
-
copiedLabel: t('copiedLabel'),
|
|
255
|
-
className: cls('code'),
|
|
256
|
-
})
|
|
257
|
-
: null, ...(item.groups ?? []).map((group, index) => h('details', { key: index, className: cls('group') }, h('summary', null, h(IconChevronRightOutlineRegular), h('span', null, group.label)), h('ul', { className: cls('list') }, group.items.map((child, childIndex) => h(DetailItem, { key: childIndex, item: child, t, onOpenFile }))))));
|
|
258
|
-
}
|
|
259
|
-
/** 官方 ToolDetails(1458-1492):caption + 空态 / 列表 + 可折叠的「未变更」组。 */
|
|
260
|
-
export function ToolDetailsView({ model, t, onOpenFile }) {
|
|
261
|
-
const cls = (semantic) => officialClass('ToolDetails', semantic) ?? '';
|
|
262
|
-
return h('div', { className: cls('root'), 'data-caption': model.caption !== undefined || undefined }, model.caption !== undefined ? h('div', { className: cls('caption') }, model.caption) : null, model.items.length === 0
|
|
263
|
-
? h('p', { className: cls('empty') }, model.empty)
|
|
264
|
-
: h('ul', { className: cls('list') }, model.items.map((item, index) => h(DetailItem, { key: index, item, t, onOpenFile }))), model.unchanged !== undefined
|
|
265
|
-
? h('details', { className: cls('unchanged') }, h('summary', null, h(IconChevronRightOutlineRegular), model.unchanged.label), h('ul', { className: cls('list') }, model.unchanged.items.map((item, index) => h(DetailItem, { key: index, item, t, onOpenFile }))))
|
|
266
|
-
: null);
|
|
267
|
-
}
|
|
268
|
-
//# sourceMappingURL=ToolDetails.js.map
|