@assistant-ui/react-devtools 1.2.6 → 1.2.7
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 +26 -8
- package/dist/DevToolsModal.d.ts +18 -2
- package/dist/DevToolsModal.d.ts.map +1 -1
- package/dist/DevToolsModal.js +25 -232
- package/dist/DevToolsModal.js.map +1 -1
- package/dist/DevToolsModalImpl.d.ts +11 -0
- package/dist/DevToolsModalImpl.d.ts.map +1 -0
- package/dist/DevToolsModalImpl.js +62 -0
- package/dist/DevToolsModalImpl.js.map +1 -0
- package/dist/data/createInProcessClient.d.ts +17 -0
- package/dist/data/createInProcessClient.d.ts.map +1 -0
- package/dist/data/createInProcessClient.js +54 -0
- package/dist/data/createInProcessClient.js.map +1 -0
- package/dist/data/projectApi.d.ts +22 -0
- package/dist/data/projectApi.d.ts.map +1 -0
- package/dist/data/projectApi.js +103 -0
- package/dist/data/projectApi.js.map +1 -0
- package/dist/data/types.d.ts +52 -0
- package/dist/data/types.d.ts.map +1 -0
- package/dist/data/types.js +10 -0
- package/dist/data/types.js.map +1 -0
- package/dist/data/useDevToolsClient.d.ts +19 -0
- package/dist/data/useDevToolsClient.d.ts.map +1 -0
- package/dist/data/useDevToolsClient.js +70 -0
- package/dist/data/useDevToolsClient.js.map +1 -0
- package/dist/index.d.ts +9 -10
- package/dist/index.js +7 -9
- package/dist/shell/DevToolsOverlay.d.ts +23 -0
- package/dist/shell/DevToolsOverlay.d.ts.map +1 -0
- package/dist/shell/DevToolsOverlay.js +106 -0
- package/dist/shell/DevToolsOverlay.js.map +1 -0
- package/dist/shell/DevToolsPanel.d.ts +23 -0
- package/dist/shell/DevToolsPanel.d.ts.map +1 -0
- package/dist/shell/DevToolsPanel.js +256 -0
- package/dist/shell/DevToolsPanel.js.map +1 -0
- package/dist/shell/ShadowRoot.d.ts +24 -0
- package/dist/shell/ShadowRoot.d.ts.map +1 -0
- package/dist/shell/ShadowRoot.js +107 -0
- package/dist/shell/ShadowRoot.js.map +1 -0
- package/dist/shell/SplitLayout.d.ts +28 -0
- package/dist/shell/SplitLayout.d.ts.map +1 -0
- package/dist/shell/SplitLayout.js +67 -0
- package/dist/shell/SplitLayout.js.map +1 -0
- package/dist/shell/registry.d.ts +41 -0
- package/dist/shell/registry.d.ts.map +1 -0
- package/dist/shell/registry.js +36 -0
- package/dist/shell/registry.js.map +1 -0
- package/dist/shell/tabs/ActivityTab.d.ts +13 -0
- package/dist/shell/tabs/ActivityTab.d.ts.map +1 -0
- package/dist/shell/tabs/ActivityTab.js +259 -0
- package/dist/shell/tabs/ActivityTab.js.map +1 -0
- package/dist/shell/tabs/ContextTab.d.ts +11 -0
- package/dist/shell/tabs/ContextTab.d.ts.map +1 -0
- package/dist/shell/tabs/ContextTab.js +210 -0
- package/dist/shell/tabs/ContextTab.js.map +1 -0
- package/dist/shell/tabs/RawTab.d.ts +11 -0
- package/dist/shell/tabs/RawTab.d.ts.map +1 -0
- package/dist/shell/tabs/RawTab.js +238 -0
- package/dist/shell/tabs/RawTab.js.map +1 -0
- package/dist/shell/tabs/ThreadTab.d.ts +12 -0
- package/dist/shell/tabs/ThreadTab.d.ts.map +1 -0
- package/dist/shell/tabs/ThreadTab.js +426 -0
- package/dist/shell/tabs/ThreadTab.js.map +1 -0
- package/dist/shell/tabs/navSelection.d.ts +10 -0
- package/dist/shell/tabs/navSelection.d.ts.map +1 -0
- package/dist/shell/tabs/navSelection.js +37 -0
- package/dist/shell/tabs/navSelection.js.map +1 -0
- package/dist/styles/panel.generated.d.ts +5 -0
- package/dist/styles/panel.generated.d.ts.map +1 -0
- package/dist/styles/panel.generated.js +6 -0
- package/dist/styles/panel.generated.js.map +1 -0
- package/dist/types.d.ts +1 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/common.d.ts +24 -0
- package/dist/utils/common.d.ts.map +1 -0
- package/dist/utils/common.js +64 -0
- package/dist/utils/common.js.map +1 -0
- package/dist/utils/diff.d.ts +16 -0
- package/dist/utils/diff.d.ts.map +1 -0
- package/dist/utils/diff.js +41 -0
- package/dist/utils/diff.js.map +1 -0
- package/dist/utils/serialization.d.ts.map +1 -1
- package/dist/utils/serialization.js +4 -1
- package/dist/utils/serialization.js.map +1 -1
- package/dist/views/activity/EventLogRow.d.ts +28 -0
- package/dist/views/activity/EventLogRow.d.ts.map +1 -0
- package/dist/views/activity/EventLogRow.js +185 -0
- package/dist/views/activity/EventLogRow.js.map +1 -0
- package/dist/views/activity/EventStreamPane.d.ts +11 -0
- package/dist/views/activity/EventStreamPane.d.ts.map +1 -0
- package/dist/views/activity/EventStreamPane.js +98 -0
- package/dist/views/activity/EventStreamPane.js.map +1 -0
- package/dist/views/activity/OrphansPane.d.ts +11 -0
- package/dist/views/activity/OrphansPane.d.ts.map +1 -0
- package/dist/views/activity/OrphansPane.js +39 -0
- package/dist/views/activity/OrphansPane.js.map +1 -0
- package/dist/views/activity/RunDetailPane.d.ts +11 -0
- package/dist/views/activity/RunDetailPane.d.ts.map +1 -0
- package/dist/views/activity/RunDetailPane.js +344 -0
- package/dist/views/activity/RunDetailPane.js.map +1 -0
- package/dist/views/activity/activityNodes.d.ts +39 -0
- package/dist/views/activity/activityNodes.d.ts.map +1 -0
- package/dist/views/activity/activityNodes.js +199 -0
- package/dist/views/activity/activityNodes.js.map +1 -0
- package/dist/views/activity/index.d.ts +6 -0
- package/dist/views/activity/index.js +6 -0
- package/dist/views/attachments/AttachmentList.d.ts +15 -0
- package/dist/views/attachments/AttachmentList.d.ts.map +1 -0
- package/dist/views/attachments/AttachmentList.js +279 -0
- package/dist/views/attachments/AttachmentList.js.map +1 -0
- package/dist/views/attachments/MediaPartView.d.ts +27 -0
- package/dist/views/attachments/MediaPartView.d.ts.map +1 -0
- package/dist/views/attachments/MediaPartView.js +180 -0
- package/dist/views/attachments/MediaPartView.js.map +1 -0
- package/dist/views/attachments/formatBytes.d.ts +8 -0
- package/dist/views/attachments/formatBytes.d.ts.map +1 -0
- package/dist/views/attachments/formatBytes.js +14 -0
- package/dist/views/attachments/formatBytes.js.map +1 -0
- package/dist/views/attachments/index.d.ts +5 -0
- package/dist/views/attachments/index.js +4 -0
- package/dist/views/attachments/parseAttachment.d.ts +8 -0
- package/dist/views/attachments/parseAttachment.d.ts.map +1 -0
- package/dist/views/attachments/parseAttachment.js +58 -0
- package/dist/views/attachments/parseAttachment.js.map +1 -0
- package/dist/views/attachments/types.d.ts +18 -0
- package/dist/views/attachments/types.d.ts.map +1 -0
- package/dist/views/attachments/types.js +0 -0
- package/dist/views/context/ContextDetail.d.ts +14 -0
- package/dist/views/context/ContextDetail.d.ts.map +1 -0
- package/dist/views/context/ContextDetail.js +87 -0
- package/dist/views/context/ContextDetail.js.map +1 -0
- package/dist/views/context/ToolUIsView.d.ts +9 -0
- package/dist/views/context/ToolUIsView.d.ts.map +1 -0
- package/dist/views/context/ToolUIsView.js +80 -0
- package/dist/views/context/ToolUIsView.js.map +1 -0
- package/dist/views/context/contextNodes.d.ts +32 -0
- package/dist/views/context/contextNodes.d.ts.map +1 -0
- package/dist/views/context/contextNodes.js +49 -0
- package/dist/views/context/contextNodes.js.map +1 -0
- package/dist/views/context/index.d.ts +4 -0
- package/dist/views/context/index.js +4 -0
- package/dist/views/mcp/McpView.d.ts +11 -0
- package/dist/views/mcp/McpView.d.ts.map +1 -0
- package/dist/views/mcp/McpView.js +239 -0
- package/dist/views/mcp/McpView.js.map +1 -0
- package/dist/views/mcp/index.d.ts +2 -0
- package/dist/views/mcp/index.js +2 -0
- package/dist/views/mcp/parse.d.ts +7 -0
- package/dist/views/mcp/parse.d.ts.map +1 -0
- package/dist/views/mcp/parse.js +43 -0
- package/dist/views/mcp/parse.js.map +1 -0
- package/dist/views/mcp/types.d.ts +22 -0
- package/dist/views/mcp/types.d.ts.map +1 -0
- package/dist/views/mcp/types.js +0 -0
- package/dist/views/message/ChainOfThought.d.ts +11 -0
- package/dist/views/message/ChainOfThought.d.ts.map +1 -0
- package/dist/views/message/ChainOfThought.js +132 -0
- package/dist/views/message/ChainOfThought.js.map +1 -0
- package/dist/views/message/MessageDetailPane.d.ts +12 -0
- package/dist/views/message/MessageDetailPane.d.ts.map +1 -0
- package/dist/views/message/MessageDetailPane.js +38 -0
- package/dist/views/message/MessageDetailPane.js.map +1 -0
- package/dist/views/message/MessageItem.d.ts +13 -0
- package/dist/views/message/MessageItem.d.ts.map +1 -0
- package/dist/views/message/MessageItem.js +136 -0
- package/dist/views/message/MessageItem.js.map +1 -0
- package/dist/views/message/MessageList.d.ts +13 -0
- package/dist/views/message/MessageList.d.ts.map +1 -0
- package/dist/views/message/MessageList.js +95 -0
- package/dist/views/message/MessageList.js.map +1 -0
- package/dist/views/message/MessageMetrics.d.ts +11 -0
- package/dist/views/message/MessageMetrics.d.ts.map +1 -0
- package/dist/views/message/MessageMetrics.js +93 -0
- package/dist/views/message/MessageMetrics.js.map +1 -0
- package/dist/views/message/MessageTimeline.d.ts +16 -0
- package/dist/views/message/MessageTimeline.d.ts.map +1 -0
- package/dist/views/message/MessageTimeline.js +100 -0
- package/dist/views/message/MessageTimeline.js.map +1 -0
- package/dist/views/message/PartDisclosure.d.ts +18 -0
- package/dist/views/message/PartDisclosure.d.ts.map +1 -0
- package/dist/views/message/PartDisclosure.js +79 -0
- package/dist/views/message/PartDisclosure.js.map +1 -0
- package/dist/views/message/PartView.d.ts +13 -0
- package/dist/views/message/PartView.d.ts.map +1 -0
- package/dist/views/message/PartView.js +416 -0
- package/dist/views/message/PartView.js.map +1 -0
- package/dist/views/message/RoleLabel.d.ts +11 -0
- package/dist/views/message/RoleLabel.d.ts.map +1 -0
- package/dist/views/message/RoleLabel.js +30 -0
- package/dist/views/message/RoleLabel.js.map +1 -0
- package/dist/views/message/StatusBadge.d.ts +17 -0
- package/dist/views/message/StatusBadge.d.ts.map +1 -0
- package/dist/views/message/StatusBadge.js +58 -0
- package/dist/views/message/StatusBadge.js.map +1 -0
- package/dist/views/message/ToolCallView.d.ts +13 -0
- package/dist/views/message/ToolCallView.d.ts.map +1 -0
- package/dist/views/message/ToolCallView.js +289 -0
- package/dist/views/message/ToolCallView.js.map +1 -0
- package/dist/views/message/TtftBar.d.ts +16 -0
- package/dist/views/message/TtftBar.d.ts.map +1 -0
- package/dist/views/message/TtftBar.js +128 -0
- package/dist/views/message/TtftBar.js.map +1 -0
- package/dist/views/message/index.d.ts +6 -0
- package/dist/views/message/index.js +5 -0
- package/dist/views/message/messagePlainText.d.ts +8 -0
- package/dist/views/message/messagePlainText.d.ts.map +1 -0
- package/dist/views/message/messagePlainText.js +39 -0
- package/dist/views/message/messagePlainText.js.map +1 -0
- package/dist/views/message/parse.d.ts +10 -0
- package/dist/views/message/parse.d.ts.map +1 -0
- package/dist/views/message/parse.js +235 -0
- package/dist/views/message/parse.js.map +1 -0
- package/dist/views/message/types.d.ts +114 -0
- package/dist/views/message/types.d.ts.map +1 -0
- package/dist/views/message/types.js +0 -0
- package/dist/views/model-context/ModelContextView.d.ts +26 -0
- package/dist/views/model-context/ModelContextView.d.ts.map +1 -0
- package/dist/views/model-context/ModelContextView.js +214 -0
- package/dist/views/model-context/ModelContextView.js.map +1 -0
- package/dist/views/nav.d.ts +19 -0
- package/dist/views/nav.d.ts.map +1 -0
- package/dist/views/nav.js +8 -0
- package/dist/views/nav.js.map +1 -0
- package/dist/views/raw/RawDetail.d.ts +15 -0
- package/dist/views/raw/RawDetail.d.ts.map +1 -0
- package/dist/views/raw/RawDetail.js +79 -0
- package/dist/views/raw/RawDetail.js.map +1 -0
- package/dist/views/raw/index.d.ts +3 -0
- package/dist/views/raw/index.js +3 -0
- package/dist/views/raw/rawNodes.d.ts +20 -0
- package/dist/views/raw/rawNodes.d.ts.map +1 -0
- package/dist/views/raw/rawNodes.js +78 -0
- package/dist/views/raw/rawNodes.js.map +1 -0
- package/dist/views/raw/statePreview.d.ts +5 -0
- package/dist/views/raw/statePreview.d.ts.map +1 -0
- package/dist/views/raw/statePreview.js +213 -0
- package/dist/views/raw/statePreview.js.map +1 -0
- package/dist/views/runs/PayloadDiff.d.ts +11 -0
- package/dist/views/runs/PayloadDiff.d.ts.map +1 -0
- package/dist/views/runs/PayloadDiff.js +92 -0
- package/dist/views/runs/PayloadDiff.js.map +1 -0
- package/dist/views/runs/parse.d.ts +8 -0
- package/dist/views/runs/parse.d.ts.map +1 -0
- package/dist/views/runs/parse.js +78 -0
- package/dist/views/runs/parse.js.map +1 -0
- package/dist/views/runs/types.d.ts +25 -0
- package/dist/views/runs/types.d.ts.map +1 -0
- package/dist/views/runs/types.js +0 -0
- package/dist/views/scopes/ScopesView.d.ts +9 -0
- package/dist/views/scopes/ScopesView.d.ts.map +1 -0
- package/dist/views/scopes/ScopesView.js +235 -0
- package/dist/views/scopes/ScopesView.js.map +1 -0
- package/dist/views/scopes/index.d.ts +2 -0
- package/dist/views/scopes/index.js +2 -0
- package/dist/views/scopes/parse.d.ts +7 -0
- package/dist/views/scopes/parse.d.ts.map +1 -0
- package/dist/views/scopes/parse.js +23 -0
- package/dist/views/scopes/parse.js.map +1 -0
- package/dist/views/scopes/types.d.ts +10 -0
- package/dist/views/scopes/types.d.ts.map +1 -0
- package/dist/views/scopes/types.js +0 -0
- package/dist/views/thread/ComposerAttachments.d.ts +11 -0
- package/dist/views/thread/ComposerAttachments.d.ts.map +1 -0
- package/dist/views/thread/ComposerAttachments.js +22 -0
- package/dist/views/thread/ComposerAttachments.js.map +1 -0
- package/dist/views/thread/ComposerFlags.d.ts +11 -0
- package/dist/views/thread/ComposerFlags.d.ts.map +1 -0
- package/dist/views/thread/ComposerFlags.js +54 -0
- package/dist/views/thread/ComposerFlags.js.map +1 -0
- package/dist/views/thread/ComposerQueue.d.ts +11 -0
- package/dist/views/thread/ComposerQueue.d.ts.map +1 -0
- package/dist/views/thread/ComposerQueue.js +55 -0
- package/dist/views/thread/ComposerQueue.js.map +1 -0
- package/dist/views/thread/ConversationList.d.ts +18 -0
- package/dist/views/thread/ConversationList.d.ts.map +1 -0
- package/dist/views/thread/ConversationList.js +228 -0
- package/dist/views/thread/ConversationList.js.map +1 -0
- package/dist/views/thread/ConversationStatusDot.d.ts +29 -0
- package/dist/views/thread/ConversationStatusDot.d.ts.map +1 -0
- package/dist/views/thread/ConversationStatusDot.js +91 -0
- package/dist/views/thread/ConversationStatusDot.js.map +1 -0
- package/dist/views/thread/ThreadDetails.d.ts +13 -0
- package/dist/views/thread/ThreadDetails.d.ts.map +1 -0
- package/dist/views/thread/ThreadDetails.js +170 -0
- package/dist/views/thread/ThreadDetails.js.map +1 -0
- package/dist/views/thread/Transcript.d.ts +21 -0
- package/dist/views/thread/Transcript.d.ts.map +1 -0
- package/dist/views/thread/Transcript.js +520 -0
- package/dist/views/thread/Transcript.js.map +1 -0
- package/dist/views/thread/index.d.ts +10 -0
- package/dist/views/thread/index.js +9 -0
- package/dist/views/thread/resolve.d.ts +13 -0
- package/dist/views/thread/resolve.d.ts.map +1 -0
- package/dist/views/thread/resolve.js +29 -0
- package/dist/views/thread/resolve.js.map +1 -0
- package/dist/views/thread/types.d.ts +50 -0
- package/dist/views/thread/types.d.ts.map +1 -0
- package/dist/views/thread/types.js +0 -0
- package/dist/views/thread/utils.d.ts +10 -0
- package/dist/views/thread/utils.d.ts.map +1 -0
- package/dist/views/thread/utils.js +77 -0
- package/dist/views/thread/utils.js.map +1 -0
- package/dist/views/ui/CenteredMessage.d.ts +11 -0
- package/dist/views/ui/CenteredMessage.d.ts.map +1 -0
- package/dist/views/ui/CenteredMessage.js +21 -0
- package/dist/views/ui/CenteredMessage.js.map +1 -0
- package/dist/views/ui/Chip.d.ts +13 -0
- package/dist/views/ui/Chip.d.ts.map +1 -0
- package/dist/views/ui/Chip.js +30 -0
- package/dist/views/ui/Chip.js.map +1 -0
- package/dist/views/ui/ControlButton.d.ts +10 -0
- package/dist/views/ui/ControlButton.d.ts.map +1 -0
- package/dist/views/ui/ControlButton.js +39 -0
- package/dist/views/ui/ControlButton.js.map +1 -0
- package/dist/views/ui/CopyButton.d.ts +19 -0
- package/dist/views/ui/CopyButton.d.ts.map +1 -0
- package/dist/views/ui/CopyButton.js +125 -0
- package/dist/views/ui/CopyButton.js.map +1 -0
- package/dist/views/ui/EmptyState.d.ts +11 -0
- package/dist/views/ui/EmptyState.d.ts.map +1 -0
- package/dist/views/ui/EmptyState.js +21 -0
- package/dist/views/ui/EmptyState.js.map +1 -0
- package/dist/views/ui/InfoCard.d.ts +22 -0
- package/dist/views/ui/InfoCard.d.ts.map +1 -0
- package/dist/views/ui/InfoCard.js +44 -0
- package/dist/views/ui/InfoCard.js.map +1 -0
- package/dist/views/ui/JSONTree.d.ts +16 -0
- package/dist/views/ui/JSONTree.d.ts.map +1 -0
- package/dist/views/ui/JSONTree.js +394 -0
- package/dist/views/ui/JSONTree.js.map +1 -0
- package/dist/views/ui/PaneHeader.d.ts +27 -0
- package/dist/views/ui/PaneHeader.d.ts.map +1 -0
- package/dist/views/ui/PaneHeader.js +71 -0
- package/dist/views/ui/PaneHeader.js.map +1 -0
- package/dist/views/ui/RailTime.d.ts +12 -0
- package/dist/views/ui/RailTime.d.ts.map +1 -0
- package/dist/views/ui/RailTime.js +49 -0
- package/dist/views/ui/RailTime.js.map +1 -0
- package/dist/views/ui/SectionLabel.d.ts +11 -0
- package/dist/views/ui/SectionLabel.d.ts.map +1 -0
- package/dist/views/ui/SectionLabel.js +21 -0
- package/dist/views/ui/SectionLabel.js.map +1 -0
- package/dist/views/ui/SelectableRow.d.ts +18 -0
- package/dist/views/ui/SelectableRow.d.ts.map +1 -0
- package/dist/views/ui/SelectableRow.js +49 -0
- package/dist/views/ui/SelectableRow.js.map +1 -0
- package/dist/views/ui/Sparkline.d.ts +17 -0
- package/dist/views/ui/Sparkline.d.ts.map +1 -0
- package/dist/views/ui/Sparkline.js +96 -0
- package/dist/views/ui/Sparkline.js.map +1 -0
- package/dist/views/ui/SummaryItem.d.ts +23 -0
- package/dist/views/ui/SummaryItem.d.ts.map +1 -0
- package/dist/views/ui/SummaryItem.js +59 -0
- package/dist/views/ui/SummaryItem.js.map +1 -0
- package/dist/views/ui/ToneBadge.d.ts +18 -0
- package/dist/views/ui/ToneBadge.d.ts.map +1 -0
- package/dist/views/ui/ToneBadge.js +34 -0
- package/dist/views/ui/ToneBadge.js.map +1 -0
- package/dist/views/ui/badgeTone.d.ts +21 -0
- package/dist/views/ui/badgeTone.d.ts.map +1 -0
- package/dist/views/ui/badgeTone.js +33 -0
- package/dist/views/ui/badgeTone.js.map +1 -0
- package/dist/views/ui/index.d.ts +16 -0
- package/dist/views/ui/index.js +16 -0
- package/dist/views/ui/useCopyToClipboard.d.ts +12 -0
- package/dist/views/ui/useCopyToClipboard.d.ts.map +1 -0
- package/dist/views/ui/useCopyToClipboard.js +44 -0
- package/dist/views/ui/useCopyToClipboard.js.map +1 -0
- package/package.json +9 -5
- package/src/DevToolsModal.tsx +26 -179
- package/src/DevToolsModalImpl.tsx +60 -0
- package/src/data/createInProcessClient.ts +66 -0
- package/src/data/projectApi.test.ts +100 -0
- package/src/data/projectApi.ts +169 -0
- package/src/data/types.ts +54 -0
- package/src/data/useDevToolsClient.ts +59 -0
- package/src/index.ts +16 -13
- package/src/shell/DevToolsOverlay.tsx +84 -0
- package/src/shell/DevToolsPanel.tsx +192 -0
- package/src/shell/ShadowRoot.tsx +85 -0
- package/src/shell/SplitLayout.tsx +46 -0
- package/src/shell/registry.ts +51 -0
- package/src/shell/tabs/ActivityTab.test.tsx +34 -0
- package/src/shell/tabs/ActivityTab.tsx +161 -0
- package/src/shell/tabs/ContextTab.test.tsx +37 -0
- package/src/shell/tabs/ContextTab.tsx +157 -0
- package/src/shell/tabs/RawTab.test.tsx +43 -0
- package/src/shell/tabs/RawTab.tsx +123 -0
- package/src/shell/tabs/ThreadTab.tsx +220 -0
- package/src/shell/tabs/navSelection.ts +17 -0
- package/src/styles/panel.css +153 -0
- package/src/styles/panel.generated.ts +2 -0
- package/src/types.ts +0 -5
- package/src/utils/common.test.ts +30 -0
- package/src/utils/common.ts +101 -0
- package/src/utils/diff.test.ts +37 -0
- package/src/utils/diff.ts +41 -0
- package/src/utils/serialization.test.ts +31 -0
- package/src/utils/serialization.ts +4 -1
- package/src/views/activity/EventLogRow.tsx +108 -0
- package/src/views/activity/EventStreamPane.tsx +86 -0
- package/src/views/activity/OrphansPane.tsx +23 -0
- package/src/views/activity/RunDetailPane.tsx +128 -0
- package/src/views/activity/activityNodes.test.ts +24 -0
- package/src/views/activity/activityNodes.ts +179 -0
- package/src/views/activity/index.ts +10 -0
- package/src/views/attachments/AttachmentList.tsx +122 -0
- package/src/views/attachments/MediaPartView.tsx +77 -0
- package/src/views/attachments/formatBytes.ts +15 -0
- package/src/views/attachments/index.ts +4 -0
- package/src/views/attachments/parseAttachment.test.ts +37 -0
- package/src/views/attachments/parseAttachment.ts +85 -0
- package/src/views/attachments/types.ts +15 -0
- package/src/views/context/ContextDetail.tsx +37 -0
- package/src/views/context/ToolUIsView.tsx +44 -0
- package/src/views/context/contextNodes.test.ts +31 -0
- package/src/views/context/contextNodes.ts +66 -0
- package/src/views/context/index.ts +4 -0
- package/src/views/mcp/McpView.tsx +125 -0
- package/src/views/mcp/index.ts +1 -0
- package/src/views/mcp/parse.test.ts +63 -0
- package/src/views/mcp/parse.ts +65 -0
- package/src/views/mcp/render.test.tsx +34 -0
- package/src/views/mcp/types.ts +20 -0
- package/src/views/message/ChainOfThought.tsx +74 -0
- package/src/views/message/MessageDetailPane.tsx +26 -0
- package/src/views/message/MessageItem.tsx +94 -0
- package/src/views/message/MessageList.tsx +48 -0
- package/src/views/message/MessageMetrics.tsx +68 -0
- package/src/views/message/MessageTimeline.test.tsx +78 -0
- package/src/views/message/MessageTimeline.tsx +51 -0
- package/src/views/message/PartDisclosure.tsx +32 -0
- package/src/views/message/PartView.tsx +197 -0
- package/src/views/message/RoleLabel.tsx +22 -0
- package/src/views/message/StatusBadge.tsx +28 -0
- package/src/views/message/ToolCallView.tsx +151 -0
- package/src/views/message/TtftBar.tsx +44 -0
- package/src/views/message/index.ts +5 -0
- package/src/views/message/messagePlainText.test.ts +48 -0
- package/src/views/message/messagePlainText.ts +65 -0
- package/src/views/message/parse.test.ts +269 -0
- package/src/views/message/parse.ts +282 -0
- package/src/views/message/render.test.tsx +128 -0
- package/src/views/message/types.ts +137 -0
- package/src/views/model-context/ModelContextView.tsx +71 -0
- package/src/views/model-context/render.test.tsx +24 -0
- package/src/views/nav.ts +18 -0
- package/src/views/raw/RawDetail.tsx +39 -0
- package/src/views/raw/index.ts +3 -0
- package/src/views/raw/rawNodes.test.ts +38 -0
- package/src/views/raw/rawNodes.ts +107 -0
- package/src/views/raw/statePreview.tsx +188 -0
- package/src/views/runs/PayloadDiff.tsx +49 -0
- package/src/views/runs/parse.test.ts +152 -0
- package/src/views/runs/parse.ts +110 -0
- package/src/views/runs/types.ts +23 -0
- package/src/views/scopes/ScopesView.tsx +105 -0
- package/src/views/scopes/index.ts +1 -0
- package/src/views/scopes/parse.test.ts +35 -0
- package/src/views/scopes/parse.ts +30 -0
- package/src/views/scopes/render.test.tsx +35 -0
- package/src/views/scopes/types.ts +6 -0
- package/src/views/thread/ComposerAttachments.test.tsx +36 -0
- package/src/views/thread/ComposerAttachments.tsx +8 -0
- package/src/views/thread/ComposerFlags.test.tsx +23 -0
- package/src/views/thread/ComposerFlags.tsx +19 -0
- package/src/views/thread/ComposerQueue.test.tsx +20 -0
- package/src/views/thread/ComposerQueue.tsx +26 -0
- package/src/views/thread/ConversationList.tsx +127 -0
- package/src/views/thread/ConversationStatusDot.test.ts +86 -0
- package/src/views/thread/ConversationStatusDot.tsx +126 -0
- package/src/views/thread/ThreadDetails.tsx +85 -0
- package/src/views/thread/Transcript.test.tsx +56 -0
- package/src/views/thread/Transcript.tsx +332 -0
- package/src/views/thread/index.ts +19 -0
- package/src/views/thread/render.test.tsx +41 -0
- package/src/views/thread/resolve.ts +36 -0
- package/src/views/thread/types.ts +53 -0
- package/src/views/thread/utils.test.ts +72 -0
- package/src/views/thread/utils.ts +149 -0
- package/src/views/ui/CenteredMessage.tsx +7 -0
- package/src/views/ui/Chip.tsx +17 -0
- package/src/views/ui/ControlButton.tsx +15 -0
- package/src/views/ui/CopyButton.tsx +73 -0
- package/src/views/ui/EmptyState.tsx +7 -0
- package/src/views/ui/InfoCard.tsx +35 -0
- package/src/views/ui/JSONTree.test.tsx +29 -0
- package/src/views/ui/JSONTree.tsx +240 -0
- package/src/views/ui/PaneHeader.tsx +46 -0
- package/src/views/ui/RailTime.tsx +27 -0
- package/src/views/ui/SectionLabel.tsx +7 -0
- package/src/views/ui/SelectableRow.tsx +41 -0
- package/src/views/ui/Sparkline.tsx +49 -0
- package/src/views/ui/SummaryItem.tsx +25 -0
- package/src/views/ui/ToneBadge.tsx +26 -0
- package/src/views/ui/badgeTone.ts +40 -0
- package/src/views/ui/index.ts +20 -0
- package/src/views/ui/useCopyToClipboard.ts +27 -0
- package/dist/DevToolsFrame.d.ts +0 -11
- package/dist/DevToolsFrame.d.ts.map +0 -1
- package/dist/DevToolsFrame.js +0 -66
- package/dist/DevToolsFrame.js.map +0 -1
- package/dist/DevToolsHost.d.ts +0 -38
- package/dist/DevToolsHost.d.ts.map +0 -1
- package/dist/DevToolsHost.js +0 -93
- package/dist/DevToolsHost.js.map +0 -1
- package/dist/ExtensionHost.d.ts +0 -10
- package/dist/ExtensionHost.d.ts.map +0 -1
- package/dist/ExtensionHost.js +0 -42
- package/dist/ExtensionHost.js.map +0 -1
- package/dist/FrameClient.d.ts +0 -38
- package/dist/FrameClient.d.ts.map +0 -1
- package/dist/FrameClient.js +0 -53
- package/dist/FrameClient.js.map +0 -1
- package/dist/FrameHost.d.ts +0 -11
- package/dist/FrameHost.d.ts.map +0 -1
- package/dist/FrameHost.js +0 -26
- package/dist/FrameHost.js.map +0 -1
- package/dist/constants.d.ts +0 -6
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -7
- package/dist/constants.js.map +0 -1
- package/dist/styles/DevToolsModal.styles.d.ts +0 -18
- package/dist/styles/DevToolsModal.styles.d.ts.map +0 -1
- package/dist/styles/DevToolsModal.styles.js +0 -120
- package/dist/styles/DevToolsModal.styles.js.map +0 -1
- package/src/DevToolsFrame.tsx +0 -55
- package/src/DevToolsHost.ts +0 -178
- package/src/ExtensionHost.ts +0 -57
- package/src/FrameClient.ts +0 -99
- package/src/FrameHost.ts +0 -31
- package/src/constants.ts +0 -2
- package/src/styles/DevToolsModal.styles.ts +0 -137
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import { JSONTree } from "../ui/JSONTree.js";
|
|
2
|
+
import { ToneBadge } from "../ui/ToneBadge.js";
|
|
3
|
+
import { PartDisclosure } from "./PartDisclosure.js";
|
|
4
|
+
import { StatusBadge } from "./StatusBadge.js";
|
|
5
|
+
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
import clsx from "clsx";
|
|
8
|
+
//#region src/views/message/ToolCallView.tsx
|
|
9
|
+
const isAwaiting = (part) => part.status?.type === "requires-action" || part.interrupt !== void 0 || part.approval !== void 0 && part.approval.approved === void 0;
|
|
10
|
+
const sameAsArgsJson = (part) => {
|
|
11
|
+
if (part.argsText === void 0) return false;
|
|
12
|
+
try {
|
|
13
|
+
return part.argsText.trim() === JSON.stringify(part.args);
|
|
14
|
+
} catch {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
const ToolCallView = (t0) => {
|
|
19
|
+
const $ = c(54);
|
|
20
|
+
const { part, nested: t1 } = t0;
|
|
21
|
+
const nested = t1 === void 0 ? false : t1;
|
|
22
|
+
let t2;
|
|
23
|
+
if ($[0] !== part) {
|
|
24
|
+
t2 = isAwaiting(part);
|
|
25
|
+
$[0] = part;
|
|
26
|
+
$[1] = t2;
|
|
27
|
+
} else t2 = $[1];
|
|
28
|
+
const awaiting = t2;
|
|
29
|
+
const t3 = !nested && "border-border overflow-hidden rounded-md border";
|
|
30
|
+
let t4;
|
|
31
|
+
if ($[2] !== t3) {
|
|
32
|
+
t4 = clsx("group", t3);
|
|
33
|
+
$[2] = t3;
|
|
34
|
+
$[3] = t4;
|
|
35
|
+
} else t4 = $[3];
|
|
36
|
+
let t5;
|
|
37
|
+
if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
|
|
38
|
+
t5 = /* @__PURE__ */ jsx("span", {
|
|
39
|
+
className: "text-muted-foreground inline-block shrink-0 transition-transform group-open:rotate-90",
|
|
40
|
+
children: "›"
|
|
41
|
+
});
|
|
42
|
+
$[4] = t5;
|
|
43
|
+
} else t5 = $[4];
|
|
44
|
+
let t6;
|
|
45
|
+
if ($[5] !== part.toolName) {
|
|
46
|
+
t6 = /* @__PURE__ */ jsx("span", {
|
|
47
|
+
className: "text-foreground min-w-0 flex-1 truncate font-medium",
|
|
48
|
+
children: part.toolName
|
|
49
|
+
});
|
|
50
|
+
$[5] = part.toolName;
|
|
51
|
+
$[6] = t6;
|
|
52
|
+
} else t6 = $[6];
|
|
53
|
+
let t7;
|
|
54
|
+
if ($[7] !== part.status) {
|
|
55
|
+
t7 = part.status ? /* @__PURE__ */ jsx(StatusBadge, {
|
|
56
|
+
type: part.status.type,
|
|
57
|
+
reason: part.status.reason,
|
|
58
|
+
compact: true,
|
|
59
|
+
size: "sm"
|
|
60
|
+
}) : null;
|
|
61
|
+
$[7] = part.status;
|
|
62
|
+
$[8] = t7;
|
|
63
|
+
} else t7 = $[8];
|
|
64
|
+
let t8;
|
|
65
|
+
if ($[9] !== part.isError) {
|
|
66
|
+
t8 = part.isError ? /* @__PURE__ */ jsx(StatusBadge, {
|
|
67
|
+
type: "incomplete",
|
|
68
|
+
reason: "error",
|
|
69
|
+
compact: true,
|
|
70
|
+
size: "sm"
|
|
71
|
+
}) : null;
|
|
72
|
+
$[9] = part.isError;
|
|
73
|
+
$[10] = t8;
|
|
74
|
+
} else t8 = $[10];
|
|
75
|
+
let t9;
|
|
76
|
+
if ($[11] !== part.mcp) {
|
|
77
|
+
t9 = part.mcp !== void 0 ? /* @__PURE__ */ jsx(ToneBadge, {
|
|
78
|
+
tone: "violet",
|
|
79
|
+
size: "sm",
|
|
80
|
+
children: "mcp"
|
|
81
|
+
}) : null;
|
|
82
|
+
$[11] = part.mcp;
|
|
83
|
+
$[12] = t9;
|
|
84
|
+
} else t9 = $[12];
|
|
85
|
+
let t10;
|
|
86
|
+
if ($[13] !== t6 || $[14] !== t7 || $[15] !== t8 || $[16] !== t9) {
|
|
87
|
+
t10 = /* @__PURE__ */ jsxs("summary", {
|
|
88
|
+
className: "hover:bg-accent/40 flex cursor-pointer list-none items-center gap-1.5 px-2 py-1.5 text-[11px] select-none",
|
|
89
|
+
children: [
|
|
90
|
+
t5,
|
|
91
|
+
t6,
|
|
92
|
+
t7,
|
|
93
|
+
t8,
|
|
94
|
+
t9
|
|
95
|
+
]
|
|
96
|
+
});
|
|
97
|
+
$[13] = t6;
|
|
98
|
+
$[14] = t7;
|
|
99
|
+
$[15] = t8;
|
|
100
|
+
$[16] = t9;
|
|
101
|
+
$[17] = t10;
|
|
102
|
+
} else t10 = $[17];
|
|
103
|
+
let t11;
|
|
104
|
+
if ($[18] !== awaiting || $[19] !== part.approval || $[20] !== part.interrupt) {
|
|
105
|
+
t11 = awaiting ? /* @__PURE__ */ jsxs("div", {
|
|
106
|
+
className: "bg-muted/50 rounded border px-2 py-1.5 text-[10px]",
|
|
107
|
+
children: [
|
|
108
|
+
/* @__PURE__ */ jsx(ToneBadge, {
|
|
109
|
+
tone: "amber",
|
|
110
|
+
size: "sm",
|
|
111
|
+
children: part.approval ? "Awaiting approval" : "Awaiting human input"
|
|
112
|
+
}),
|
|
113
|
+
part.approval ? /* @__PURE__ */ jsxs("div", {
|
|
114
|
+
className: "text-muted-foreground mt-1 flex flex-wrap gap-x-2 gap-y-0.5",
|
|
115
|
+
children: [
|
|
116
|
+
part.approval.id ? /* @__PURE__ */ jsxs("span", { children: ["id: ", part.approval.id] }) : null,
|
|
117
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
118
|
+
"approved:",
|
|
119
|
+
" ",
|
|
120
|
+
part.approval.approved === void 0 ? "pending" : String(part.approval.approved)
|
|
121
|
+
] }),
|
|
122
|
+
part.approval.isAutomatic !== void 0 ? /* @__PURE__ */ jsxs("span", { children: ["auto: ", String(part.approval.isAutomatic)] }) : null,
|
|
123
|
+
part.approval.reason ? /* @__PURE__ */ jsx("span", { children: part.approval.reason }) : null
|
|
124
|
+
]
|
|
125
|
+
}) : null,
|
|
126
|
+
part.interrupt?.payload !== void 0 ? /* @__PURE__ */ jsx("div", {
|
|
127
|
+
className: "mt-1",
|
|
128
|
+
children: /* @__PURE__ */ jsx(JSONTree, {
|
|
129
|
+
value: part.interrupt.payload,
|
|
130
|
+
openDepth: 0,
|
|
131
|
+
compact: true
|
|
132
|
+
})
|
|
133
|
+
}) : null
|
|
134
|
+
]
|
|
135
|
+
}) : null;
|
|
136
|
+
$[18] = awaiting;
|
|
137
|
+
$[19] = part.approval;
|
|
138
|
+
$[20] = part.interrupt;
|
|
139
|
+
$[21] = t11;
|
|
140
|
+
} else t11 = $[21];
|
|
141
|
+
let t12;
|
|
142
|
+
if ($[22] !== part.toolCallId) {
|
|
143
|
+
t12 = part.toolCallId ? /* @__PURE__ */ jsx(PartDisclosure, {
|
|
144
|
+
label: "Call id",
|
|
145
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
146
|
+
className: "text-muted-foreground font-mono text-[10px] break-all",
|
|
147
|
+
children: part.toolCallId
|
|
148
|
+
})
|
|
149
|
+
}) : null;
|
|
150
|
+
$[22] = part.toolCallId;
|
|
151
|
+
$[23] = t12;
|
|
152
|
+
} else t12 = $[23];
|
|
153
|
+
let t13;
|
|
154
|
+
if ($[24] !== part.args) {
|
|
155
|
+
t13 = /* @__PURE__ */ jsx(PartDisclosure, {
|
|
156
|
+
label: "Arguments",
|
|
157
|
+
children: /* @__PURE__ */ jsx(JSONTree, {
|
|
158
|
+
value: part.args,
|
|
159
|
+
openDepth: 0,
|
|
160
|
+
compact: true
|
|
161
|
+
})
|
|
162
|
+
});
|
|
163
|
+
$[24] = part.args;
|
|
164
|
+
$[25] = t13;
|
|
165
|
+
} else t13 = $[25];
|
|
166
|
+
let t14;
|
|
167
|
+
if ($[26] !== part) {
|
|
168
|
+
t14 = part.argsText !== void 0 && !sameAsArgsJson(part) ? /* @__PURE__ */ jsx(PartDisclosure, {
|
|
169
|
+
label: "Raw args",
|
|
170
|
+
children: /* @__PURE__ */ jsx("pre", {
|
|
171
|
+
className: "text-foreground font-mono text-[10px] leading-snug break-words whitespace-pre-wrap",
|
|
172
|
+
children: part.argsText
|
|
173
|
+
})
|
|
174
|
+
}) : null;
|
|
175
|
+
$[26] = part;
|
|
176
|
+
$[27] = t14;
|
|
177
|
+
} else t14 = $[27];
|
|
178
|
+
let t15;
|
|
179
|
+
if ($[28] !== part.isError || $[29] !== part.result) {
|
|
180
|
+
t15 = part.result !== void 0 ? /* @__PURE__ */ jsx(PartDisclosure, {
|
|
181
|
+
label: part.isError ? "Result (error)" : "Result",
|
|
182
|
+
children: /* @__PURE__ */ jsx(JSONTree, {
|
|
183
|
+
value: part.result,
|
|
184
|
+
openDepth: 0,
|
|
185
|
+
compact: true
|
|
186
|
+
})
|
|
187
|
+
}) : null;
|
|
188
|
+
$[28] = part.isError;
|
|
189
|
+
$[29] = part.result;
|
|
190
|
+
$[30] = t15;
|
|
191
|
+
} else t15 = $[30];
|
|
192
|
+
let t16;
|
|
193
|
+
if ($[31] !== part.artifact) {
|
|
194
|
+
t16 = part.artifact !== void 0 ? /* @__PURE__ */ jsx(PartDisclosure, {
|
|
195
|
+
label: "Artifact",
|
|
196
|
+
children: /* @__PURE__ */ jsx(JSONTree, {
|
|
197
|
+
value: part.artifact,
|
|
198
|
+
openDepth: 0,
|
|
199
|
+
compact: true
|
|
200
|
+
})
|
|
201
|
+
}) : null;
|
|
202
|
+
$[31] = part.artifact;
|
|
203
|
+
$[32] = t16;
|
|
204
|
+
} else t16 = $[32];
|
|
205
|
+
let t17;
|
|
206
|
+
if ($[33] !== part.modelContent) {
|
|
207
|
+
t17 = part.modelContent !== void 0 ? /* @__PURE__ */ jsx(PartDisclosure, {
|
|
208
|
+
label: "Model content",
|
|
209
|
+
children: /* @__PURE__ */ jsx(JSONTree, {
|
|
210
|
+
value: part.modelContent,
|
|
211
|
+
openDepth: 0,
|
|
212
|
+
compact: true
|
|
213
|
+
})
|
|
214
|
+
}) : null;
|
|
215
|
+
$[33] = part.modelContent;
|
|
216
|
+
$[34] = t17;
|
|
217
|
+
} else t17 = $[34];
|
|
218
|
+
let t18;
|
|
219
|
+
if ($[35] !== part.mcp) {
|
|
220
|
+
t18 = part.mcp !== void 0 ? /* @__PURE__ */ jsx(PartDisclosure, {
|
|
221
|
+
label: "MCP",
|
|
222
|
+
children: /* @__PURE__ */ jsx(JSONTree, {
|
|
223
|
+
value: part.mcp,
|
|
224
|
+
openDepth: 0,
|
|
225
|
+
compact: true
|
|
226
|
+
})
|
|
227
|
+
}) : null;
|
|
228
|
+
$[35] = part.mcp;
|
|
229
|
+
$[36] = t18;
|
|
230
|
+
} else t18 = $[36];
|
|
231
|
+
let t19;
|
|
232
|
+
if ($[37] !== part.subMessageCount) {
|
|
233
|
+
t19 = part.subMessageCount > 0 ? /* @__PURE__ */ jsxs("span", {
|
|
234
|
+
className: "text-muted-foreground text-[10px]",
|
|
235
|
+
children: [
|
|
236
|
+
part.subMessageCount,
|
|
237
|
+
" nested sub-agent message",
|
|
238
|
+
part.subMessageCount === 1 ? "" : "s"
|
|
239
|
+
]
|
|
240
|
+
}) : null;
|
|
241
|
+
$[37] = part.subMessageCount;
|
|
242
|
+
$[38] = t19;
|
|
243
|
+
} else t19 = $[38];
|
|
244
|
+
let t20;
|
|
245
|
+
if ($[39] !== t11 || $[40] !== t12 || $[41] !== t13 || $[42] !== t14 || $[43] !== t15 || $[44] !== t16 || $[45] !== t17 || $[46] !== t18 || $[47] !== t19) {
|
|
246
|
+
t20 = /* @__PURE__ */ jsxs("div", {
|
|
247
|
+
className: "border-border flex flex-col gap-0.5 border-t px-2 py-1",
|
|
248
|
+
children: [
|
|
249
|
+
t11,
|
|
250
|
+
t12,
|
|
251
|
+
t13,
|
|
252
|
+
t14,
|
|
253
|
+
t15,
|
|
254
|
+
t16,
|
|
255
|
+
t17,
|
|
256
|
+
t18,
|
|
257
|
+
t19
|
|
258
|
+
]
|
|
259
|
+
});
|
|
260
|
+
$[39] = t11;
|
|
261
|
+
$[40] = t12;
|
|
262
|
+
$[41] = t13;
|
|
263
|
+
$[42] = t14;
|
|
264
|
+
$[43] = t15;
|
|
265
|
+
$[44] = t16;
|
|
266
|
+
$[45] = t17;
|
|
267
|
+
$[46] = t18;
|
|
268
|
+
$[47] = t19;
|
|
269
|
+
$[48] = t20;
|
|
270
|
+
} else t20 = $[48];
|
|
271
|
+
let t21;
|
|
272
|
+
if ($[49] !== awaiting || $[50] !== t10 || $[51] !== t20 || $[52] !== t4) {
|
|
273
|
+
t21 = /* @__PURE__ */ jsxs("details", {
|
|
274
|
+
open: awaiting,
|
|
275
|
+
className: t4,
|
|
276
|
+
children: [t10, t20]
|
|
277
|
+
});
|
|
278
|
+
$[49] = awaiting;
|
|
279
|
+
$[50] = t10;
|
|
280
|
+
$[51] = t20;
|
|
281
|
+
$[52] = t4;
|
|
282
|
+
$[53] = t21;
|
|
283
|
+
} else t21 = $[53];
|
|
284
|
+
return t21;
|
|
285
|
+
};
|
|
286
|
+
//#endregion
|
|
287
|
+
export { ToolCallView };
|
|
288
|
+
|
|
289
|
+
//# sourceMappingURL=ToolCallView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolCallView.js","names":["clsx","JSONTree","ToneBadge","PartDisclosure","StatusBadge","ToolCallPartPreview","isAwaiting","part","status","type","interrupt","undefined","approval","approved","sameAsArgsJson","argsText","trim","JSON","stringify","args","ToolCallView","t0","$","_c","nested","t1","t2","awaiting","t3","t4","t5","Symbol","for","t6","toolName","t7","reason","t8","isError","t9","mcp","t10","t11","id","String","isAutomatic","payload","t12","toolCallId","t13","t14","t15","result","t16","artifact","t17","modelContent","t18","t19","subMessageCount","t20","t21"],"sources":["../../../src/views/message/ToolCallView.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { JSONTree, ToneBadge } from \"../ui\";\nimport { PartDisclosure } from \"./PartDisclosure\";\nimport { StatusBadge } from \"./StatusBadge\";\nimport type { ToolCallPartPreview } from \"./types\";\n\nconst isAwaiting = (part: ToolCallPartPreview) =>\n part.status?.type === \"requires-action\" ||\n part.interrupt !== undefined ||\n (part.approval !== undefined && part.approval.approved === undefined);\n\nconst sameAsArgsJson = (part: ToolCallPartPreview) => {\n if (part.argsText === undefined) return false;\n try {\n return part.argsText.trim() === JSON.stringify(part.args);\n } catch {\n return false;\n }\n};\n\nexport const ToolCallView = ({\n part,\n nested = false,\n}: {\n part: ToolCallPartPreview;\n nested?: boolean;\n}) => {\n const awaiting = isAwaiting(part);\n\n return (\n <details\n open={awaiting}\n className={clsx(\n \"group\",\n !nested && \"border-border overflow-hidden rounded-md border\",\n )}\n >\n <summary className=\"hover:bg-accent/40 flex cursor-pointer list-none items-center gap-1.5 px-2 py-1.5 text-[11px] select-none\">\n <span className=\"text-muted-foreground inline-block shrink-0 transition-transform group-open:rotate-90\">\n ›\n </span>\n <span className=\"text-foreground min-w-0 flex-1 truncate font-medium\">\n {part.toolName}\n </span>\n {part.status ? (\n <StatusBadge\n type={part.status.type}\n reason={part.status.reason}\n compact\n size=\"sm\"\n />\n ) : null}\n {part.isError ? (\n <StatusBadge type=\"incomplete\" reason=\"error\" compact size=\"sm\" />\n ) : null}\n {part.mcp !== undefined ? (\n <ToneBadge tone=\"violet\" size=\"sm\">\n mcp\n </ToneBadge>\n ) : null}\n </summary>\n\n <div className=\"border-border flex flex-col gap-0.5 border-t px-2 py-1\">\n {awaiting ? (\n <div className=\"bg-muted/50 rounded border px-2 py-1.5 text-[10px]\">\n <ToneBadge tone=\"amber\" size=\"sm\">\n {part.approval ? \"Awaiting approval\" : \"Awaiting human input\"}\n </ToneBadge>\n {part.approval ? (\n <div className=\"text-muted-foreground mt-1 flex flex-wrap gap-x-2 gap-y-0.5\">\n {part.approval.id ? <span>id: {part.approval.id}</span> : null}\n <span>\n approved:{\" \"}\n {part.approval.approved === undefined\n ? \"pending\"\n : String(part.approval.approved)}\n </span>\n {part.approval.isAutomatic !== undefined ? (\n <span>auto: {String(part.approval.isAutomatic)}</span>\n ) : null}\n {part.approval.reason ? (\n <span>{part.approval.reason}</span>\n ) : null}\n </div>\n ) : null}\n {part.interrupt?.payload !== undefined ? (\n <div className=\"mt-1\">\n <JSONTree\n value={part.interrupt.payload}\n openDepth={0}\n compact\n />\n </div>\n ) : null}\n </div>\n ) : null}\n\n {part.toolCallId ? (\n <PartDisclosure label=\"Call id\">\n <span className=\"text-muted-foreground font-mono text-[10px] break-all\">\n {part.toolCallId}\n </span>\n </PartDisclosure>\n ) : null}\n\n <PartDisclosure label=\"Arguments\">\n <JSONTree value={part.args} openDepth={0} compact />\n </PartDisclosure>\n\n {part.argsText !== undefined && !sameAsArgsJson(part) ? (\n <PartDisclosure label=\"Raw args\">\n <pre className=\"text-foreground font-mono text-[10px] leading-snug break-words whitespace-pre-wrap\">\n {part.argsText}\n </pre>\n </PartDisclosure>\n ) : null}\n\n {part.result !== undefined ? (\n <PartDisclosure label={part.isError ? \"Result (error)\" : \"Result\"}>\n <JSONTree value={part.result} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n\n {part.artifact !== undefined ? (\n <PartDisclosure label=\"Artifact\">\n <JSONTree value={part.artifact} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n\n {part.modelContent !== undefined ? (\n <PartDisclosure label=\"Model content\">\n <JSONTree value={part.modelContent} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n\n {part.mcp !== undefined ? (\n <PartDisclosure label=\"MCP\">\n <JSONTree value={part.mcp} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n\n {part.subMessageCount > 0 ? (\n <span className=\"text-muted-foreground text-[10px]\">\n {part.subMessageCount} nested sub-agent message\n {part.subMessageCount === 1 ? \"\" : \"s\"}\n </span>\n ) : null}\n </div>\n </details>\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { MessageTimingPreview } from "./types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/views/message/TtftBar.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Splits a model turn into the time-to-first-token segment (dim) and the
|
|
6
|
+
* streaming segment (solid). The only width-bearing timing form: both numbers
|
|
7
|
+
* are measured, not derived. Renders nothing unless all three timestamps exist.
|
|
8
|
+
*/
|
|
9
|
+
declare const TtftBar: ({
|
|
10
|
+
timing
|
|
11
|
+
}: {
|
|
12
|
+
timing: MessageTimingPreview;
|
|
13
|
+
}) => import("react").JSX.Element | null;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { TtftBar };
|
|
16
|
+
//# sourceMappingURL=TtftBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TtftBar.d.ts","names":[],"sources":["../../../src/views/message/TtftBar.tsx"],"mappings":";;;;;AAQA;;;cAAa,OAAA;EAAW;AAAA;EAAc,MAAA,EAAQ,oBAAoB;AAAA,sBAAE,GAAA,CAAA,OAAA"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { formatMs } from "../../utils/common.js";
|
|
2
|
+
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
//#region src/views/message/TtftBar.tsx
|
|
5
|
+
/**
|
|
6
|
+
* Splits a model turn into the time-to-first-token segment (dim) and the
|
|
7
|
+
* streaming segment (solid). The only width-bearing timing form: both numbers
|
|
8
|
+
* are measured, not derived. Renders nothing unless all three timestamps exist.
|
|
9
|
+
*/
|
|
10
|
+
const TtftBar = (t0) => {
|
|
11
|
+
const $ = c(31);
|
|
12
|
+
const { timing } = t0;
|
|
13
|
+
const { streamStartTime, firstTokenTime, totalStreamTime } = timing;
|
|
14
|
+
if (streamStartTime === void 0 || firstTokenTime === void 0 || totalStreamTime === void 0) return null;
|
|
15
|
+
const ttft = Math.max(0, firstTokenTime - streamStartTime);
|
|
16
|
+
const total = Math.max(totalStreamTime, ttft);
|
|
17
|
+
const stream = Math.max(0, total - ttft);
|
|
18
|
+
const ttftPercent = total > 0 ? ttft / total * 100 : 0;
|
|
19
|
+
let t1;
|
|
20
|
+
if ($[0] !== ttft) {
|
|
21
|
+
t1 = formatMs(ttft);
|
|
22
|
+
$[0] = ttft;
|
|
23
|
+
$[1] = t1;
|
|
24
|
+
} else t1 = $[1];
|
|
25
|
+
let t2;
|
|
26
|
+
if ($[2] !== t1) {
|
|
27
|
+
t2 = /* @__PURE__ */ jsxs("span", { children: ["TTFT ", t1] });
|
|
28
|
+
$[2] = t1;
|
|
29
|
+
$[3] = t2;
|
|
30
|
+
} else t2 = $[3];
|
|
31
|
+
let t3;
|
|
32
|
+
if ($[4] !== stream) {
|
|
33
|
+
t3 = formatMs(stream);
|
|
34
|
+
$[4] = stream;
|
|
35
|
+
$[5] = t3;
|
|
36
|
+
} else t3 = $[5];
|
|
37
|
+
let t4;
|
|
38
|
+
if ($[6] !== t3) {
|
|
39
|
+
t4 = /* @__PURE__ */ jsxs("span", { children: [t3, " stream"] });
|
|
40
|
+
$[6] = t3;
|
|
41
|
+
$[7] = t4;
|
|
42
|
+
} else t4 = $[7];
|
|
43
|
+
let t5;
|
|
44
|
+
if ($[8] !== t2 || $[9] !== t4) {
|
|
45
|
+
t5 = /* @__PURE__ */ jsxs("div", {
|
|
46
|
+
className: "text-muted-foreground flex justify-between text-[9px] leading-none tabular-nums",
|
|
47
|
+
children: [t2, t4]
|
|
48
|
+
});
|
|
49
|
+
$[8] = t2;
|
|
50
|
+
$[9] = t4;
|
|
51
|
+
$[10] = t5;
|
|
52
|
+
} else t5 = $[10];
|
|
53
|
+
const t6 = `${ttftPercent}%`;
|
|
54
|
+
let t7;
|
|
55
|
+
if ($[11] !== t6) {
|
|
56
|
+
t7 = { width: t6 };
|
|
57
|
+
$[11] = t6;
|
|
58
|
+
$[12] = t7;
|
|
59
|
+
} else t7 = $[12];
|
|
60
|
+
let t8;
|
|
61
|
+
if ($[13] !== ttft) {
|
|
62
|
+
t8 = formatMs(ttft);
|
|
63
|
+
$[13] = ttft;
|
|
64
|
+
$[14] = t8;
|
|
65
|
+
} else t8 = $[14];
|
|
66
|
+
const t9 = `TTFT ${t8}`;
|
|
67
|
+
let t10;
|
|
68
|
+
if ($[15] !== t7 || $[16] !== t9) {
|
|
69
|
+
t10 = /* @__PURE__ */ jsx("div", {
|
|
70
|
+
className: "bg-muted-foreground/40 h-full",
|
|
71
|
+
style: t7,
|
|
72
|
+
title: t9
|
|
73
|
+
});
|
|
74
|
+
$[15] = t7;
|
|
75
|
+
$[16] = t9;
|
|
76
|
+
$[17] = t10;
|
|
77
|
+
} else t10 = $[17];
|
|
78
|
+
const t11 = `${100 - ttftPercent}%`;
|
|
79
|
+
let t12;
|
|
80
|
+
if ($[18] !== t11) {
|
|
81
|
+
t12 = { width: t11 };
|
|
82
|
+
$[18] = t11;
|
|
83
|
+
$[19] = t12;
|
|
84
|
+
} else t12 = $[19];
|
|
85
|
+
let t13;
|
|
86
|
+
if ($[20] !== stream) {
|
|
87
|
+
t13 = formatMs(stream);
|
|
88
|
+
$[20] = stream;
|
|
89
|
+
$[21] = t13;
|
|
90
|
+
} else t13 = $[21];
|
|
91
|
+
const t14 = `stream ${t13}`;
|
|
92
|
+
let t15;
|
|
93
|
+
if ($[22] !== t12 || $[23] !== t14) {
|
|
94
|
+
t15 = /* @__PURE__ */ jsx("div", {
|
|
95
|
+
className: "bg-primary h-full",
|
|
96
|
+
style: t12,
|
|
97
|
+
title: t14
|
|
98
|
+
});
|
|
99
|
+
$[22] = t12;
|
|
100
|
+
$[23] = t14;
|
|
101
|
+
$[24] = t15;
|
|
102
|
+
} else t15 = $[24];
|
|
103
|
+
let t16;
|
|
104
|
+
if ($[25] !== t10 || $[26] !== t15) {
|
|
105
|
+
t16 = /* @__PURE__ */ jsxs("div", {
|
|
106
|
+
className: "bg-muted flex h-1 overflow-hidden rounded-full",
|
|
107
|
+
children: [t10, t15]
|
|
108
|
+
});
|
|
109
|
+
$[25] = t10;
|
|
110
|
+
$[26] = t15;
|
|
111
|
+
$[27] = t16;
|
|
112
|
+
} else t16 = $[27];
|
|
113
|
+
let t17;
|
|
114
|
+
if ($[28] !== t16 || $[29] !== t5) {
|
|
115
|
+
t17 = /* @__PURE__ */ jsxs("div", {
|
|
116
|
+
className: "flex flex-col gap-0.5",
|
|
117
|
+
children: [t5, t16]
|
|
118
|
+
});
|
|
119
|
+
$[28] = t16;
|
|
120
|
+
$[29] = t5;
|
|
121
|
+
$[30] = t17;
|
|
122
|
+
} else t17 = $[30];
|
|
123
|
+
return t17;
|
|
124
|
+
};
|
|
125
|
+
//#endregion
|
|
126
|
+
export { TtftBar };
|
|
127
|
+
|
|
128
|
+
//# sourceMappingURL=TtftBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TtftBar.js","names":["formatMs","MessageTimingPreview","TtftBar","t0","$","_c","timing","streamStartTime","firstTokenTime","totalStreamTime","undefined","ttft","Math","max","total","stream","ttftPercent","t1","t2","t3","t4","t5","t6","t7","width","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17"],"sources":["../../../src/views/message/TtftBar.tsx"],"sourcesContent":["import { formatMs } from \"../../utils/common\";\nimport type { MessageTimingPreview } from \"./types\";\n\n/**\n * Splits a model turn into the time-to-first-token segment (dim) and the\n * streaming segment (solid). The only width-bearing timing form: both numbers\n * are measured, not derived. Renders nothing unless all three timestamps exist.\n */\nexport const TtftBar = ({ timing }: { timing: MessageTimingPreview }) => {\n const { streamStartTime, firstTokenTime, totalStreamTime } = timing;\n if (\n streamStartTime === undefined ||\n firstTokenTime === undefined ||\n totalStreamTime === undefined\n ) {\n return null;\n }\n\n const ttft = Math.max(0, firstTokenTime - streamStartTime);\n const total = Math.max(totalStreamTime, ttft);\n const stream = Math.max(0, total - ttft);\n const ttftPercent = total > 0 ? (ttft / total) * 100 : 0;\n\n return (\n <div className=\"flex flex-col gap-0.5\">\n <div className=\"text-muted-foreground flex justify-between text-[9px] leading-none tabular-nums\">\n <span>TTFT {formatMs(ttft)}</span>\n <span>{formatMs(stream)} stream</span>\n </div>\n <div className=\"bg-muted flex h-1 overflow-hidden rounded-full\">\n <div\n className=\"bg-muted-foreground/40 h-full\"\n style={{ width: `${ttftPercent}%` }}\n title={`TTFT ${formatMs(ttft)}`}\n />\n <div\n className=\"bg-primary h-full\"\n style={{ width: `${100 - ttftPercent}%` }}\n title={`stream ${formatMs(stream)}`}\n />\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { MessagePreview, PartPreview } from "./types.js";
|
|
2
|
+
import { MessageDetailBody, messageDetailHeader } from "./MessageDetailPane.js";
|
|
3
|
+
import { MessageList } from "./MessageList.js";
|
|
4
|
+
import { StatusBadge } from "./StatusBadge.js";
|
|
5
|
+
import { parseMessage } from "./parse.js";
|
|
6
|
+
export { MessageDetailBody, MessageList, type MessagePreview, type PartPreview, StatusBadge, messageDetailHeader, parseMessage };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { parseMessage } from "./parse.js";
|
|
2
|
+
import { StatusBadge } from "./StatusBadge.js";
|
|
3
|
+
import { MessageList } from "./MessageList.js";
|
|
4
|
+
import { MessageDetailBody, messageDetailHeader } from "./MessageDetailPane.js";
|
|
5
|
+
export { MessageDetailBody, MessageList, StatusBadge, messageDetailHeader, parseMessage };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { MessagePreview } from "./types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/views/message/messagePlainText.d.ts
|
|
4
|
+
/** Plain-text export of a message for clipboard copy. */
|
|
5
|
+
declare const messagePlainText: (message: MessagePreview) => string;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { messagePlainText };
|
|
8
|
+
//# sourceMappingURL=messagePlainText.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messagePlainText.d.ts","names":[],"sources":["../../../src/views/message/messagePlainText.ts"],"mappings":";;;;cA8Ca,gBAAA,GAAoB,OAAuB,EAAd,cAAc"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
//#region src/views/message/messagePlainText.ts
|
|
2
|
+
const stringify = (value) => {
|
|
3
|
+
if (typeof value === "string") return value;
|
|
4
|
+
try {
|
|
5
|
+
return JSON.stringify(value, null, 2);
|
|
6
|
+
} catch {
|
|
7
|
+
return String(value);
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
const partPlainText = (part) => {
|
|
11
|
+
switch (part.type) {
|
|
12
|
+
case "text":
|
|
13
|
+
case "reasoning": return part.text.trim() || null;
|
|
14
|
+
case "tool-call": {
|
|
15
|
+
const lines = [`[tool] ${part.toolName}`];
|
|
16
|
+
if (part.args !== void 0 && part.args !== null) lines.push(`args: ${stringify(part.args)}`);
|
|
17
|
+
if (part.result !== void 0) lines.push(`result: ${stringify(part.result)}`);
|
|
18
|
+
return lines.join("\n");
|
|
19
|
+
}
|
|
20
|
+
case "source": return part.title ?? part.url ?? part.sourceType ?? null;
|
|
21
|
+
case "image": return part.filename ? `[image] ${part.filename}` : "[image]";
|
|
22
|
+
case "file": return part.filename ? `[file] ${part.filename}` : "[file]";
|
|
23
|
+
case "audio": return part.format ? `[audio] ${part.format}` : "[audio]";
|
|
24
|
+
case "data": return `[data${part.name ? `: ${part.name}` : ""}]\n${stringify(part.data)}`;
|
|
25
|
+
case "generative-ui": return `[generative-ui]\n${stringify(part.spec)}`;
|
|
26
|
+
default: return `[${part.rawType || "unknown"}]\n${stringify(part.raw)}`;
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
/** Plain-text export of a message for clipboard copy. */
|
|
30
|
+
const messagePlainText = (message) => {
|
|
31
|
+
const blocks = [];
|
|
32
|
+
if (message.attachments.length) blocks.push(message.attachments.map((attachment) => `[attachment] ${attachment.name}`).join("\n"));
|
|
33
|
+
blocks.push(...message.parts.map(partPlainText).filter((block) => Boolean(block)));
|
|
34
|
+
return blocks.join("\n\n");
|
|
35
|
+
};
|
|
36
|
+
//#endregion
|
|
37
|
+
export { messagePlainText };
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=messagePlainText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messagePlainText.js","names":["MessagePreview","PartPreview","stringify","value","JSON","String","partPlainText","part","type","text","trim","lines","toolName","args","undefined","push","result","join","title","url","sourceType","filename","format","name","data","spec","rawType","raw","messagePlainText","message","blocks","attachments","length","map","attachment","parts","filter","block","Boolean"],"sources":["../../../src/views/message/messagePlainText.ts"],"sourcesContent":["import type { MessagePreview, PartPreview } from \"./types\";\n\nconst stringify = (value: unknown): string => {\n if (typeof value === \"string\") return value;\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return String(value);\n }\n};\n\nconst partPlainText = (part: PartPreview): string | null => {\n switch (part.type) {\n case \"text\":\n case \"reasoning\": {\n const text = part.text.trim();\n return text || null;\n }\n case \"tool-call\": {\n const lines = [`[tool] ${part.toolName}`];\n if (part.args !== undefined && part.args !== null) {\n lines.push(`args: ${stringify(part.args)}`);\n }\n if (part.result !== undefined) {\n lines.push(`result: ${stringify(part.result)}`);\n }\n return lines.join(\"\\n\");\n }\n case \"source\":\n return part.title ?? part.url ?? part.sourceType ?? null;\n case \"image\":\n return part.filename ? `[image] ${part.filename}` : \"[image]\";\n case \"file\":\n return part.filename ? `[file] ${part.filename}` : \"[file]\";\n case \"audio\":\n return part.format ? `[audio] ${part.format}` : \"[audio]\";\n case \"data\":\n return `[data${part.name ? `: ${part.name}` : \"\"}]\\n${stringify(part.data)}`;\n case \"generative-ui\":\n return `[generative-ui]\\n${stringify(part.spec)}`;\n default:\n return `[${part.rawType || \"unknown\"}]\\n${stringify(part.raw)}`;\n }\n};\n\n/** Plain-text export of a message for clipboard copy. */\nexport const messagePlainText = (message: MessagePreview): string => {\n const blocks: string[] = [];\n\n if (message.attachments.length) {\n blocks.push(\n message.attachments\n .map((attachment) => `[attachment] ${attachment.name}`)\n .join(\"\\n\"),\n );\n }\n\n blocks.push(\n ...message.parts\n .map(partPlainText)\n .filter((block): block is string => Boolean(block)),\n );\n\n return blocks.join(\"\\n\\n\");\n};\n"],"mappings":";AAEA,MAAME,aAAaC,UAA2B;CAC5C,IAAI,OAAOA,UAAU,UAAU,OAAOA;CACtC,IAAI;EACF,OAAOC,KAAKF,UAAUC,OAAO,MAAM,CAAC;CACtC,QAAQ;EACN,OAAOE,OAAOF,KAAK;CACrB;AACF;AAEA,MAAMG,iBAAiBC,SAAqC;CAC1D,QAAQA,KAAKC,MAAb;EACE,KAAK;EACL,KAAK,aAEH,OADaD,KAAKE,KAAKC,KAChBD,KAAQ;EAEjB,KAAK,aAAa;GAChB,MAAME,QAAQ,CAAC,UAAUJ,KAAKK,UAAU;GACxC,IAAIL,KAAKM,SAASC,KAAAA,KAAaP,KAAKM,SAAS,MAC3CF,MAAMI,KAAK,SAASb,UAAUK,KAAKM,IAAI,GAAG;GAE5C,IAAIN,KAAKS,WAAWF,KAAAA,GAClBH,MAAMI,KAAK,WAAWb,UAAUK,KAAKS,MAAM,GAAG;GAEhD,OAAOL,MAAMM,KAAK,IAAI;EACxB;EACA,KAAK,UACH,OAAOV,KAAKW,SAASX,KAAKY,OAAOZ,KAAKa,cAAc;EACtD,KAAK,SACH,OAAOb,KAAKc,WAAW,WAAWd,KAAKc,aAAa;EACtD,KAAK,QACH,OAAOd,KAAKc,WAAW,UAAUd,KAAKc,aAAa;EACrD,KAAK,SACH,OAAOd,KAAKe,SAAS,WAAWf,KAAKe,WAAW;EAClD,KAAK,QACH,OAAO,QAAQf,KAAKgB,OAAO,KAAKhB,KAAKgB,SAAS,GAAE,KAAMrB,UAAUK,KAAKiB,IAAI;EAC3E,KAAK,iBACH,OAAO,oBAAoBtB,UAAUK,KAAKkB,IAAI;EAChD,SACE,OAAO,IAAIlB,KAAKmB,WAAW,UAAS,KAAMxB,UAAUK,KAAKoB,GAAG;CAChE;AACF;;AAGA,MAAaC,oBAAoBC,YAAoC;CACnE,MAAMC,SAAmB,CAAA;CAEzB,IAAID,QAAQE,YAAYC,QACtBF,OAAOf,KACLc,QAAQE,YACLE,KAAKC,eAAe,gBAAgBA,WAAWX,MAAM,CAAC,CACtDN,KAAK,IAAI,CACd;CAGFa,OAAOf,KACL,GAAGc,QAAQM,MACRF,IAAI3B,aAAa,CAAC,CAClB8B,QAAQC,UAA2BC,QAAQD,KAAK,CAAC,CACtD;CAEA,OAAOP,OAAOb,KAAK,MAAM;AAC3B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { MessagePreview, PartPreview, PartStatusPreview } from "./types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/views/message/parse.d.ts
|
|
4
|
+
declare const partKey: (part: PartPreview, index: number) => string;
|
|
5
|
+
declare const parsePartStatus: (value: unknown) => PartStatusPreview | undefined;
|
|
6
|
+
declare const parsePart: (value: unknown) => PartPreview;
|
|
7
|
+
declare const parseMessage: (value: unknown, index: number) => MessagePreview | null;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { parseMessage, parsePart, parsePartStatus, partKey };
|
|
10
|
+
//# sourceMappingURL=parse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.d.ts","names":[],"sources":["../../../src/views/message/parse.ts"],"mappings":";;;cAiBa,OAAA,GAAW,IAAA,EAAM,WAAW,EAAE,KAAA;AAAA,cAK9B,eAAA,GACX,KAAA,cACC,iBAAiB;AAAA,cA2EP,SAAA,GAAa,KAAA,cAAiB,WAwF1C;AAAA,cAkDY,YAAA,GACX,KAAA,WACA,KAAA,aACC,cAAc"}
|