@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
package/README.md
CHANGED
|
@@ -10,19 +10,37 @@ npm install @assistant-ui/react-devtools
|
|
|
10
10
|
|
|
11
11
|
## Usage
|
|
12
12
|
|
|
13
|
+
Drop `DevToolsModal` inside your `AssistantRuntimeProvider`. It renders a floating launcher and an inline panel (isolated in a shadow root), and is a no-op in production builds.
|
|
14
|
+
|
|
13
15
|
```tsx
|
|
14
|
-
import {
|
|
16
|
+
import { AssistantRuntimeProvider } from "@assistant-ui/react";
|
|
17
|
+
import { DevToolsModal } from "@assistant-ui/react-devtools";
|
|
18
|
+
|
|
19
|
+
export function App() {
|
|
20
|
+
return (
|
|
21
|
+
<AssistantRuntimeProvider runtime={runtime}>
|
|
22
|
+
<DevToolsModal />
|
|
23
|
+
{/* ...your assistant-ui... */}
|
|
24
|
+
</AssistantRuntimeProvider>
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
```
|
|
15
28
|
|
|
16
|
-
|
|
17
|
-
<DevToolsModal />;
|
|
29
|
+
## Custom tabs
|
|
18
30
|
|
|
19
|
-
|
|
20
|
-
<DevToolsFrame />;
|
|
21
|
-
```
|
|
31
|
+
The panel is extensible through a plugin registry. Each plugin receives the inspected instance's projected data and renders a tab body.
|
|
22
32
|
|
|
23
|
-
|
|
33
|
+
```tsx
|
|
34
|
+
import { createDevToolsPlugin, DevToolsModal } from "@assistant-ui/react-devtools";
|
|
35
|
+
|
|
36
|
+
const myTab = createDevToolsPlugin({
|
|
37
|
+
id: "my-tab",
|
|
38
|
+
label: "My tab",
|
|
39
|
+
Component: ({ data }) => <pre>{JSON.stringify(data.state, null, 2)}</pre>,
|
|
40
|
+
});
|
|
24
41
|
|
|
25
|
-
|
|
42
|
+
<DevToolsModal plugins={[myTab]} />;
|
|
43
|
+
```
|
|
26
44
|
|
|
27
45
|
## Documentation
|
|
28
46
|
|
package/dist/DevToolsModal.d.ts
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
|
+
import { DevToolsClient } from "./data/types.js";
|
|
2
|
+
import { DevToolsPanelPlugin } from "./shell/registry.js";
|
|
3
|
+
|
|
1
4
|
//#region src/DevToolsModal.d.ts
|
|
2
|
-
|
|
5
|
+
interface DevToolsModalProps {
|
|
6
|
+
/** Extra inspector tabs appended after the builtins. */
|
|
7
|
+
plugins?: DevToolsPanelPlugin[];
|
|
8
|
+
/** Force a theme. Defaults to "system", which follows the host `.dark` class. */
|
|
9
|
+
theme?: "light" | "dark" | "system";
|
|
10
|
+
/** Data source. Defaults to the in-process DevToolsHooks client. */
|
|
11
|
+
client?: DevToolsClient;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Dev-only. In production the body returns null before the lazy panel chunk is
|
|
15
|
+
* ever requested, so the panel and its compiled styles stay out of the
|
|
16
|
+
* production bundle (the dynamic import is also code-split).
|
|
17
|
+
*/
|
|
18
|
+
declare const DevToolsModal: (props?: DevToolsModalProps) => import("react").JSX.Element | null;
|
|
3
19
|
//#endregion
|
|
4
|
-
export { DevToolsModal };
|
|
20
|
+
export { DevToolsModal, DevToolsModalProps };
|
|
5
21
|
//# sourceMappingURL=DevToolsModal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevToolsModal.d.ts","names":[],"sources":["../src/DevToolsModal.tsx"],"mappings":";
|
|
1
|
+
{"version":3,"file":"DevToolsModal.d.ts","names":[],"sources":["../src/DevToolsModal.tsx"],"mappings":";;;;UAMiB,kBAAA;;EAEf,OAAA,GAAU,mBAAA;EAFuB;EAIjC,KAAA;EAEuB;EAAvB,MAAA,GAAS,cAAc;AAAA;;;;;AAAA;cAUZ,aAAA,GAAiB,KAAA,GAAO,kBAAuB,qBAAA,GAAA,CAAA,OAAA"}
|
package/dist/DevToolsModal.js
CHANGED
|
@@ -1,242 +1,35 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { DevToolsFrame } from "./DevToolsFrame.js";
|
|
3
|
-
import { ANIMATION_STYLES, getStyles } from "./styles/DevToolsModal.styles.js";
|
|
4
2
|
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
3
|
+
import { Suspense, lazy } from "@assistant-ui/tap/react-shim";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
5
|
//#region src/DevToolsModal.tsx
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
attributes: true,
|
|
17
|
-
attributeFilter: ["class"]
|
|
18
|
-
});
|
|
19
|
-
if (document.body !== document.documentElement) observer.observe(document.body, {
|
|
20
|
-
attributes: true,
|
|
21
|
-
attributeFilter: ["class"]
|
|
22
|
-
});
|
|
23
|
-
return () => observer.disconnect();
|
|
24
|
-
};
|
|
25
|
-
const DevToolsModalImpl = () => {
|
|
26
|
-
const $ = c(32);
|
|
27
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
28
|
-
const [buttonHover, setButtonHover] = useState(false);
|
|
29
|
-
const [closeHover, setCloseHover] = useState(false);
|
|
30
|
-
const darkMode = useSyncExternalStore(subscribeToThemeChanges, isDarkMode, _temp);
|
|
31
|
-
let t0;
|
|
32
|
-
if ($[0] !== darkMode) {
|
|
33
|
-
t0 = getStyles(darkMode);
|
|
34
|
-
$[0] = darkMode;
|
|
35
|
-
$[1] = t0;
|
|
36
|
-
} else t0 = $[1];
|
|
37
|
-
const styles = t0;
|
|
6
|
+
const DevToolsModalImpl = lazy(() => import("./DevToolsModalImpl.js"));
|
|
7
|
+
/**
|
|
8
|
+
* Dev-only. In production the body returns null before the lazy panel chunk is
|
|
9
|
+
* ever requested, so the panel and its compiled styles stay out of the
|
|
10
|
+
* production bundle (the dynamic import is also code-split).
|
|
11
|
+
*/
|
|
12
|
+
const DevToolsModal = (t0) => {
|
|
13
|
+
const $ = c(4);
|
|
38
14
|
let t1;
|
|
39
|
-
if ($[
|
|
40
|
-
t1 =
|
|
41
|
-
$[
|
|
42
|
-
|
|
43
|
-
|
|
15
|
+
if ($[0] !== t0) {
|
|
16
|
+
t1 = t0 === void 0 ? {} : t0;
|
|
17
|
+
$[0] = t0;
|
|
18
|
+
$[1] = t1;
|
|
19
|
+
} else t1 = $[1];
|
|
20
|
+
const props = t1;
|
|
21
|
+
if (typeof process !== "undefined" && process.env?.NODE_ENV === "production") return null;
|
|
44
22
|
let t2;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const handleEscape = (event) => {
|
|
50
|
-
if (event.key === "Escape") setIsOpen(false);
|
|
51
|
-
};
|
|
52
|
-
document.addEventListener("keydown", handleEscape);
|
|
53
|
-
return () => document.removeEventListener("keydown", handleEscape);
|
|
54
|
-
};
|
|
55
|
-
t3 = [isOpen];
|
|
56
|
-
$[3] = isOpen;
|
|
57
|
-
$[4] = t2;
|
|
58
|
-
$[5] = t3;
|
|
59
|
-
} else {
|
|
60
|
-
t2 = $[4];
|
|
61
|
-
t3 = $[5];
|
|
62
|
-
}
|
|
63
|
-
useEffect(t2, t3);
|
|
64
|
-
let t4;
|
|
65
|
-
let t5;
|
|
66
|
-
let t6;
|
|
67
|
-
if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
|
|
68
|
-
t4 = () => setIsOpen(true);
|
|
69
|
-
t5 = () => setButtonHover(true);
|
|
70
|
-
t6 = () => setButtonHover(false);
|
|
71
|
-
$[6] = t4;
|
|
72
|
-
$[7] = t5;
|
|
73
|
-
$[8] = t6;
|
|
74
|
-
} else {
|
|
75
|
-
t4 = $[6];
|
|
76
|
-
t5 = $[7];
|
|
77
|
-
t6 = $[8];
|
|
78
|
-
}
|
|
79
|
-
let t7;
|
|
80
|
-
if ($[9] !== buttonHover || $[10] !== styles.floatingButtonHover) {
|
|
81
|
-
t7 = buttonHover ? styles.floatingButtonHover : {};
|
|
82
|
-
$[9] = buttonHover;
|
|
83
|
-
$[10] = styles.floatingButtonHover;
|
|
84
|
-
$[11] = t7;
|
|
85
|
-
} else t7 = $[11];
|
|
86
|
-
let t8;
|
|
87
|
-
if ($[12] !== styles.floatingButton || $[13] !== t7) {
|
|
88
|
-
t8 = {
|
|
89
|
-
...styles.floatingButton,
|
|
90
|
-
...t7
|
|
91
|
-
};
|
|
92
|
-
$[12] = styles.floatingButton;
|
|
93
|
-
$[13] = t7;
|
|
94
|
-
$[14] = t8;
|
|
95
|
-
} else t8 = $[14];
|
|
96
|
-
let t9;
|
|
97
|
-
if ($[15] === Symbol.for("react.memo_cache_sentinel")) {
|
|
98
|
-
t9 = /* @__PURE__ */ jsx("svg", {
|
|
99
|
-
"aria-hidden": "true",
|
|
100
|
-
width: "20",
|
|
101
|
-
height: "20",
|
|
102
|
-
viewBox: "0 0 24 24",
|
|
103
|
-
fill: "none",
|
|
104
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
105
|
-
style: {
|
|
106
|
-
width: "20px",
|
|
107
|
-
height: "20px"
|
|
108
|
-
},
|
|
109
|
-
children: /* @__PURE__ */ jsx("path", {
|
|
110
|
-
d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",
|
|
111
|
-
stroke: "currentColor",
|
|
112
|
-
strokeWidth: "1.8",
|
|
113
|
-
strokeLinecap: "round",
|
|
114
|
-
strokeLinejoin: "round",
|
|
115
|
-
fill: "none"
|
|
116
|
-
})
|
|
117
|
-
});
|
|
118
|
-
$[15] = t9;
|
|
119
|
-
} else t9 = $[15];
|
|
120
|
-
let t10;
|
|
121
|
-
if ($[16] !== t8) {
|
|
122
|
-
t10 = /* @__PURE__ */ jsx("button", {
|
|
123
|
-
type: "button",
|
|
124
|
-
onClick: t4,
|
|
125
|
-
onMouseEnter: t5,
|
|
126
|
-
onMouseLeave: t6,
|
|
127
|
-
style: t8,
|
|
128
|
-
"aria-label": "Open assistant-ui DevTools",
|
|
129
|
-
title: "Open assistant-ui DevTools",
|
|
130
|
-
children: t9
|
|
23
|
+
if ($[2] !== props) {
|
|
24
|
+
t2 = /* @__PURE__ */ jsx(Suspense, {
|
|
25
|
+
fallback: null,
|
|
26
|
+
children: /* @__PURE__ */ jsx(DevToolsModalImpl, { ...props })
|
|
131
27
|
});
|
|
132
|
-
$[
|
|
133
|
-
$[
|
|
134
|
-
} else
|
|
135
|
-
|
|
136
|
-
if ($[18] !== styles.floatingContainer || $[19] !== t10) {
|
|
137
|
-
t11 = /* @__PURE__ */ jsx("div", {
|
|
138
|
-
style: styles.floatingContainer,
|
|
139
|
-
children: t10
|
|
140
|
-
});
|
|
141
|
-
$[18] = styles.floatingContainer;
|
|
142
|
-
$[19] = t10;
|
|
143
|
-
$[20] = t11;
|
|
144
|
-
} else t11 = $[20];
|
|
145
|
-
let t12;
|
|
146
|
-
if ($[21] !== closeHover || $[22] !== isOpen || $[23] !== styles.backdrop || $[24] !== styles.dismissButton || $[25] !== styles.dismissButtonHover || $[26] !== styles.modal || $[27] !== styles.modalContent) {
|
|
147
|
-
t12 = isOpen && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
|
|
148
|
-
style: styles.backdrop,
|
|
149
|
-
onClick: () => setIsOpen(false)
|
|
150
|
-
}), /* @__PURE__ */ jsxs("div", {
|
|
151
|
-
style: styles.modal,
|
|
152
|
-
"data-devtools-modal": true,
|
|
153
|
-
children: [/* @__PURE__ */ jsx("button", {
|
|
154
|
-
type: "button",
|
|
155
|
-
onClick: () => setIsOpen(false),
|
|
156
|
-
onMouseEnter: () => setCloseHover(true),
|
|
157
|
-
onMouseLeave: () => setCloseHover(false),
|
|
158
|
-
style: {
|
|
159
|
-
...styles.dismissButton,
|
|
160
|
-
...closeHover ? styles.dismissButtonHover : {}
|
|
161
|
-
},
|
|
162
|
-
"aria-label": "Close DevTools",
|
|
163
|
-
children: /* @__PURE__ */ jsxs("svg", {
|
|
164
|
-
"aria-hidden": "true",
|
|
165
|
-
width: "14",
|
|
166
|
-
height: "14",
|
|
167
|
-
viewBox: "0 0 24 24",
|
|
168
|
-
fill: "none",
|
|
169
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
170
|
-
children: [/* @__PURE__ */ jsx("path", {
|
|
171
|
-
d: "M18 6L6 18",
|
|
172
|
-
stroke: "currentColor",
|
|
173
|
-
strokeWidth: "1.6",
|
|
174
|
-
strokeLinecap: "round",
|
|
175
|
-
strokeLinejoin: "round"
|
|
176
|
-
}), /* @__PURE__ */ jsx("path", {
|
|
177
|
-
d: "M6 6L18 18",
|
|
178
|
-
stroke: "currentColor",
|
|
179
|
-
strokeWidth: "1.6",
|
|
180
|
-
strokeLinecap: "round",
|
|
181
|
-
strokeLinejoin: "round"
|
|
182
|
-
})]
|
|
183
|
-
})
|
|
184
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
185
|
-
style: styles.modalContent,
|
|
186
|
-
children: /* @__PURE__ */ jsx(DevToolsFrame, { style: {
|
|
187
|
-
width: "100%",
|
|
188
|
-
height: "100%",
|
|
189
|
-
border: "none",
|
|
190
|
-
borderRadius: "12px",
|
|
191
|
-
backgroundColor: "transparent"
|
|
192
|
-
} })
|
|
193
|
-
})]
|
|
194
|
-
})] });
|
|
195
|
-
$[21] = closeHover;
|
|
196
|
-
$[22] = isOpen;
|
|
197
|
-
$[23] = styles.backdrop;
|
|
198
|
-
$[24] = styles.dismissButton;
|
|
199
|
-
$[25] = styles.dismissButtonHover;
|
|
200
|
-
$[26] = styles.modal;
|
|
201
|
-
$[27] = styles.modalContent;
|
|
202
|
-
$[28] = t12;
|
|
203
|
-
} else t12 = $[28];
|
|
204
|
-
let t13;
|
|
205
|
-
if ($[29] !== t11 || $[30] !== t12) {
|
|
206
|
-
t13 = /* @__PURE__ */ jsxs(Fragment, { children: [t11, t12] });
|
|
207
|
-
$[29] = t11;
|
|
208
|
-
$[30] = t12;
|
|
209
|
-
$[31] = t13;
|
|
210
|
-
} else t13 = $[31];
|
|
211
|
-
return t13;
|
|
212
|
-
};
|
|
213
|
-
const DevToolsModal = () => {
|
|
214
|
-
const $ = c(1);
|
|
215
|
-
if (typeof process !== "undefined" && process.env?.NODE_ENV === "production") return null;
|
|
216
|
-
let t0;
|
|
217
|
-
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
218
|
-
t0 = /* @__PURE__ */ jsx(DevToolsModalImpl, {});
|
|
219
|
-
$[0] = t0;
|
|
220
|
-
} else t0 = $[0];
|
|
221
|
-
return t0;
|
|
28
|
+
$[2] = props;
|
|
29
|
+
$[3] = t2;
|
|
30
|
+
} else t2 = $[3];
|
|
31
|
+
return t2;
|
|
222
32
|
};
|
|
223
|
-
function _temp() {
|
|
224
|
-
return false;
|
|
225
|
-
}
|
|
226
|
-
function _temp2() {
|
|
227
|
-
const style_0 = document.getElementById("devtools-modal-animations");
|
|
228
|
-
if (style_0 && !document.querySelector("[data-devtools-modal]")) style_0.remove();
|
|
229
|
-
}
|
|
230
|
-
function _temp3() {
|
|
231
|
-
if (typeof document === "undefined") return;
|
|
232
|
-
if (!document.getElementById("devtools-modal-animations")) {
|
|
233
|
-
const style = document.createElement("style");
|
|
234
|
-
style.id = "devtools-modal-animations";
|
|
235
|
-
style.textContent = ANIMATION_STYLES;
|
|
236
|
-
document.head.appendChild(style);
|
|
237
|
-
}
|
|
238
|
-
return _temp2;
|
|
239
|
-
}
|
|
240
33
|
//#endregion
|
|
241
34
|
export { DevToolsModal };
|
|
242
35
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevToolsModal.js","names":["c","_c","useEffect","useMemo","useState","useSyncExternalStore","DevToolsFrame","getStyles","ANIMATION_STYLES","isDarkMode","document","documentElement","classList","contains","body","subscribeToThemeChanges","callback","MutationObserver","observer","observe","attributes","attributeFilter","disconnect","DevToolsModalImpl","$","isOpen","setIsOpen","buttonHover","setButtonHover","closeHover","setCloseHover","darkMode","_temp","t0","styles","t1","Symbol","for","_temp3","t2","t3","handleEscape","event","key","addEventListener","removeEventListener","t4","t5","t6","t7","floatingButtonHover","t8","floatingButton","t9","width","height","t10","t11","floatingContainer","t12","backdrop","dismissButton","dismissButtonHover","modal","modalContent","border","borderRadius","backgroundColor","t13","DevToolsModal","process","env","NODE_ENV","_temp2","style_0","getElementById","querySelector","style","remove","createElement","id","textContent","head","appendChild"],"sources":["../src/DevToolsModal.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useMemo, useState, useSyncExternalStore } from \"react\";\nimport { DevToolsFrame } from \"./DevToolsFrame\";\nimport { getStyles, ANIMATION_STYLES } from \"./styles/DevToolsModal.styles\";\n\nconst isDarkMode = (): boolean => {\n if (typeof document === \"undefined\") return false;\n return (\n document.documentElement.classList.contains(\"dark\") ||\n document.body.classList.contains(\"dark\")\n );\n};\n\nconst subscribeToThemeChanges = (callback: () => void) => {\n if (typeof MutationObserver === \"undefined\") {\n return () => {};\n }\n\n const observer = new MutationObserver(callback);\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n\n if (document.body !== document.documentElement) {\n observer.observe(document.body, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n }\n\n return () => observer.disconnect();\n};\n\nconst DevToolsModalImpl = () => {\n const [isOpen, setIsOpen] = useState(false);\n const [buttonHover, setButtonHover] = useState(false);\n const [closeHover, setCloseHover] = useState(false);\n\n const darkMode = useSyncExternalStore(\n subscribeToThemeChanges,\n isDarkMode,\n () => false, // Server-side always returns false\n );\n\n const styles = useMemo(() => getStyles(darkMode), [darkMode]);\n\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n\n const styleId = \"devtools-modal-animations\";\n if (!document.getElementById(styleId)) {\n const style = document.createElement(\"style\");\n style.id = styleId;\n style.textContent = ANIMATION_STYLES;\n document.head.appendChild(style);\n }\n\n return () => {\n const style = document.getElementById(styleId);\n if (style && !document.querySelector(\"[data-devtools-modal]\")) {\n style.remove();\n }\n };\n }, []);\n\n useEffect(() => {\n if (!isOpen) return;\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setIsOpen(false);\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }, [isOpen]);\n\n return (\n <>\n <div style={styles.floatingContainer}>\n <button\n type=\"button\"\n onClick={() => setIsOpen(true)}\n onMouseEnter={() => setButtonHover(true)}\n onMouseLeave={() => setButtonHover(false)}\n style={{\n ...styles.floatingButton,\n ...(buttonHover ? styles.floatingButtonHover : {}),\n }}\n aria-label=\"Open assistant-ui DevTools\"\n title=\"Open assistant-ui DevTools\"\n >\n <svg\n aria-hidden=\"true\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{ width: \"20px\", height: \"20px\" }}\n >\n <path\n d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n />\n </svg>\n </button>\n </div>\n\n {isOpen && (\n <>\n <div style={styles.backdrop} onClick={() => setIsOpen(false)} />\n\n <div style={styles.modal} data-devtools-modal>\n <button\n type=\"button\"\n onClick={() => setIsOpen(false)}\n onMouseEnter={() => setCloseHover(true)}\n onMouseLeave={() => setCloseHover(false)}\n style={{\n ...styles.dismissButton,\n ...(closeHover ? styles.dismissButtonHover : {}),\n }}\n aria-label=\"Close DevTools\"\n >\n <svg\n aria-hidden=\"true\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M18 6L6 18\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M6 6L18 18\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n\n <div style={styles.modalContent}>\n <DevToolsFrame\n style={{\n width: \"100%\",\n height: \"100%\",\n border: \"none\",\n borderRadius: \"12px\",\n backgroundColor: \"transparent\",\n }}\n />\n </div>\n </div>\n </>\n )}\n </>\n );\n};\n\n// Export a component that only renders in development\nexport const DevToolsModal = () => {\n // Check if we're in production - most bundlers will replace process.env.NODE_ENV\n // This allows the entire component to be eliminated via dead code elimination\n if (\n typeof process !== \"undefined\" &&\n process.env?.NODE_ENV === \"production\"\n ) {\n return null;\n }\n\n return <DevToolsModalImpl />;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DevToolsModal.js","names":["c","_c","lazy","Suspense","DevToolsPanelPlugin","DevToolsClient","DevToolsModalProps","plugins","theme","client","DevToolsModalImpl","DevToolsModal","t0","$","t1","undefined","props","process","env","NODE_ENV","t2"],"sources":["../src/DevToolsModal.tsx"],"sourcesContent":["\"use client\";\n\nimport { lazy, Suspense } from \"react\";\nimport type { DevToolsPanelPlugin } from \"./shell/registry\";\nimport type { DevToolsClient } from \"./data/types\";\n\nexport interface DevToolsModalProps {\n /** Extra inspector tabs appended after the builtins. */\n plugins?: DevToolsPanelPlugin[];\n /** Force a theme. Defaults to \"system\", which follows the host `.dark` class. */\n theme?: \"light\" | \"dark\" | \"system\";\n /** Data source. Defaults to the in-process DevToolsHooks client. */\n client?: DevToolsClient;\n}\n\nconst DevToolsModalImpl = lazy(() => import(\"./DevToolsModalImpl\"));\n\n/**\n * Dev-only. In production the body returns null before the lazy panel chunk is\n * ever requested, so the panel and its compiled styles stay out of the\n * production bundle (the dynamic import is also code-split).\n */\nexport const DevToolsModal = (props: DevToolsModalProps = {}) => {\n if (\n typeof process !== \"undefined\" &&\n process.env?.NODE_ENV === \"production\"\n ) {\n return null;\n }\n\n return (\n <Suspense fallback={null}>\n <DevToolsModalImpl {...props} />\n </Suspense>\n );\n};\n"],"mappings":";;;;;AAeA,MAAMU,oBAAoBR,WAAW,OAAO,yBAAsB;;;;;;AAOlE,MAAaS,iBAAgBC,OAAA;CAAA,MAAAC,IAAAZ,EAAA,CAAA;CAAA,IAAAa;CAAA,IAAAD,EAAA,OAAAD,IAAA;EAACE,KAAAF,OAAAG,KAAAA,IAAA,CAA6B,IAA7BH;EAA8BC,EAAA,KAAAD;EAAAC,EAAA,KAAAC;CAAA,OAAAA,KAAAD,EAAA;CAA9B,MAAAG,QAAAF;CAC5B,IACE,OAAOG,YAAY,eACnBA,QAAOC,KAAcC,aAAK,cAAY,OAE/B;CACR,IAAAC;CAAA,IAAAP,EAAA,OAAAG,OAAA;EAGCI,KAAA,oBAAC,UAAD;GAAoB,UAAA;aAClB,oBAAC,mBAAD,EAAkB,GAAKJ,MAAK,CAAA;EADrB,CAAA;EAEEH,EAAA,KAAAG;EAAAH,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,OAFXO;AAEW"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DevToolsModalProps } from "./DevToolsModal.js";
|
|
2
|
+
|
|
3
|
+
//#region src/DevToolsModalImpl.d.ts
|
|
4
|
+
declare const DevToolsModalImpl: ({
|
|
5
|
+
plugins,
|
|
6
|
+
theme,
|
|
7
|
+
client
|
|
8
|
+
}: DevToolsModalProps) => import("react").JSX.Element;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { DevToolsModalImpl as default };
|
|
11
|
+
//# sourceMappingURL=DevToolsModalImpl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevToolsModalImpl.d.ts","names":[],"sources":["../src/DevToolsModalImpl.tsx"],"mappings":";;;cAmCM,iBAAA;EAAqB,OAAA;EAAA,KAAA;EAAA;AAAA,GAIxB,kBAAA,qBAAkB,GAAA,CAAA,OAAA"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { DevToolsOverlay } from "./shell/DevToolsOverlay.js";
|
|
3
|
+
import { ShadowRoot } from "./shell/ShadowRoot.js";
|
|
4
|
+
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
5
|
+
import { useSyncExternalStore } from "@assistant-ui/tap/react-shim";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
//#region src/DevToolsModalImpl.tsx
|
|
8
|
+
const isDarkMode = () => {
|
|
9
|
+
if (typeof document === "undefined") return false;
|
|
10
|
+
return document.documentElement.classList.contains("dark") || document.body.classList.contains("dark");
|
|
11
|
+
};
|
|
12
|
+
const subscribeToThemeChanges = (callback) => {
|
|
13
|
+
if (typeof MutationObserver === "undefined") return () => {};
|
|
14
|
+
const observer = new MutationObserver(callback);
|
|
15
|
+
observer.observe(document.documentElement, {
|
|
16
|
+
attributes: true,
|
|
17
|
+
attributeFilter: ["class"]
|
|
18
|
+
});
|
|
19
|
+
if (document.body !== document.documentElement) observer.observe(document.body, {
|
|
20
|
+
attributes: true,
|
|
21
|
+
attributeFilter: ["class"]
|
|
22
|
+
});
|
|
23
|
+
return () => observer.disconnect();
|
|
24
|
+
};
|
|
25
|
+
const DevToolsModalImpl = (t0) => {
|
|
26
|
+
const $ = c(7);
|
|
27
|
+
const { plugins, theme: t1, client } = t0;
|
|
28
|
+
const theme = t1 === void 0 ? "system" : t1;
|
|
29
|
+
const darkMode = useSyncExternalStore(subscribeToThemeChanges, isDarkMode, _temp);
|
|
30
|
+
const resolved = theme === "system" ? darkMode ? "dark" : "light" : theme;
|
|
31
|
+
let t2;
|
|
32
|
+
if ($[0] !== client || $[1] !== plugins || $[2] !== resolved) {
|
|
33
|
+
t2 = /* @__PURE__ */ jsx(DevToolsOverlay, {
|
|
34
|
+
theme: resolved,
|
|
35
|
+
plugins,
|
|
36
|
+
client
|
|
37
|
+
});
|
|
38
|
+
$[0] = client;
|
|
39
|
+
$[1] = plugins;
|
|
40
|
+
$[2] = resolved;
|
|
41
|
+
$[3] = t2;
|
|
42
|
+
} else t2 = $[3];
|
|
43
|
+
const overlay = t2;
|
|
44
|
+
let t3;
|
|
45
|
+
if ($[4] !== overlay || $[5] !== resolved) {
|
|
46
|
+
t3 = /* @__PURE__ */ jsx(ShadowRoot, {
|
|
47
|
+
theme: resolved,
|
|
48
|
+
children: overlay
|
|
49
|
+
});
|
|
50
|
+
$[4] = overlay;
|
|
51
|
+
$[5] = resolved;
|
|
52
|
+
$[6] = t3;
|
|
53
|
+
} else t3 = $[6];
|
|
54
|
+
return t3;
|
|
55
|
+
};
|
|
56
|
+
function _temp() {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
//#endregion
|
|
60
|
+
export { DevToolsModalImpl as default };
|
|
61
|
+
|
|
62
|
+
//# sourceMappingURL=DevToolsModalImpl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevToolsModalImpl.js","names":["c","_c","useMemo","useSyncExternalStore","DevToolsOverlay","ShadowRoot","DevToolsModalProps","isDarkMode","document","documentElement","classList","contains","body","subscribeToThemeChanges","callback","MutationObserver","observer","observe","attributes","attributeFilter","disconnect","DevToolsModalImpl","t0","$","plugins","theme","t1","client","undefined","darkMode","_temp","resolved","t2","overlay","t3"],"sources":["../src/DevToolsModalImpl.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMemo, useSyncExternalStore } from \"react\";\nimport { DevToolsOverlay } from \"./shell/DevToolsOverlay\";\nimport { ShadowRoot } from \"./shell/ShadowRoot\";\nimport type { DevToolsModalProps } from \"./DevToolsModal\";\n\nconst isDarkMode = (): boolean => {\n if (typeof document === \"undefined\") return false;\n return (\n document.documentElement.classList.contains(\"dark\") ||\n document.body.classList.contains(\"dark\")\n );\n};\n\nconst subscribeToThemeChanges = (callback: () => void) => {\n if (typeof MutationObserver === \"undefined\") {\n return () => {};\n }\n\n const observer = new MutationObserver(callback);\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n if (document.body !== document.documentElement) {\n observer.observe(document.body, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n }\n\n return () => observer.disconnect();\n};\n\nconst DevToolsModalImpl = ({\n plugins,\n theme = \"system\",\n client,\n}: DevToolsModalProps) => {\n const darkMode = useSyncExternalStore(\n subscribeToThemeChanges,\n isDarkMode,\n () => false,\n );\n const resolved = theme === \"system\" ? (darkMode ? \"dark\" : \"light\") : theme;\n\n // Stable element identity so the shadow root only re-renders on real changes,\n // not on every render of the host tree.\n const overlay = useMemo(\n () => (\n <DevToolsOverlay theme={resolved} plugins={plugins} client={client} />\n ),\n [resolved, plugins, client],\n );\n\n return <ShadowRoot theme={resolved}>{overlay}</ShadowRoot>;\n};\n\nexport default DevToolsModalImpl;\n"],"mappings":";;;;;;;AAOA,MAAMO,mBAA4B;CAChC,IAAI,OAAOC,aAAa,aAAa,OAAO;CAC5C,OACEA,SAASC,gBAAgBC,UAAUC,SAAS,MAAM,KAClDH,SAASI,KAAKF,UAAUC,SAAS,MAAM;AAE3C;AAEA,MAAME,2BAA2BC,aAAyB;CACxD,IAAI,OAAOC,qBAAqB,aAC9B,aAAa,CAAC;CAGhB,MAAMC,WAAW,IAAID,iBAAiBD,QAAQ;CAC9CE,SAASC,QAAQT,SAASC,iBAAiB;EACzCS,YAAY;EACZC,iBAAiB,CAAC,OAAO;CAC3B,CAAC;CACD,IAAIX,SAASI,SAASJ,SAASC,iBAC7BO,SAASC,QAAQT,SAASI,MAAM;EAC9BM,YAAY;EACZC,iBAAiB,CAAC,OAAO;CAC3B,CAAC;CAGH,aAAaH,SAASI,WAAW;AACnC;AAEA,MAAMC,qBAAoBC,OAAA;CAAA,MAAAC,IAAAtB,EAAA,CAAA;CAAC,MAAA,EAAAuB,SAAAC,OAAAC,IAAAC,WAAAL;CAEzB,MAAAG,QAAAC,OAAAE,KAAAA,IAAA,WAAAF;CAGA,MAAAG,WAAiB1B,qBACfU,yBACAN,YACAuB,KACF;CACA,MAAAC,WAAiBN,UAAU,WAAYI,WAAA,SAAA,UAAtBJ;CAA2D,IAAAO;CAAA,IAAAT,EAAA,OAAAI,UAAAJ,EAAA,OAAAC,WAAAD,EAAA,OAAAQ,UAAA;EAMxEC,KAAA,oBAAC,iBAAD;GAAwBD,OAAAA;GAAmBP;GAAiBG;EAAM,CAAA;EAAIJ,EAAA,KAAAI;EAAAJ,EAAA,KAAAC;EAAAD,EAAA,KAAAQ;EAAAR,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAF1E,MAAAU,UAEID;CAGF,IAAAE;CAAA,IAAAX,EAAA,OAAAU,WAAAV,EAAA,OAAAQ,UAAA;EAEKG,KAAA,oBAAC,YAAD;GAAmBH,OAAAA;aAAWE;EAAnB,CAAA;EAAwCV,EAAA,KAAAU;EAAAV,EAAA,KAAAQ;EAAAR,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,OAAnDW;AAAmD;AArBlC,SAAAJ,QAAA;CAAA,OAQhB;AAAK"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DevToolsClient } from "./types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/data/createInProcessClient.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* The default transport: reads the in-process DevToolsHooks registry and
|
|
6
|
+
* re-projects it on every change.
|
|
7
|
+
*
|
|
8
|
+
* Projection runs inside the subscribe/change callbacks (outside React render)
|
|
9
|
+
* because the scope accessors throw when invoked during a render, and
|
|
10
|
+
* getSnapshot returns the cached result.
|
|
11
|
+
*/
|
|
12
|
+
declare const createInProcessClient: () => DevToolsClient;
|
|
13
|
+
/** Shared default client used by DevToolsModal and DevToolsPanel. */
|
|
14
|
+
declare const inProcessClient: DevToolsClient;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { createInProcessClient, inProcessClient };
|
|
17
|
+
//# sourceMappingURL=createInProcessClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createInProcessClient.d.ts","names":[],"sources":["../../src/data/createInProcessClient.ts"],"mappings":";;;;;AAiBA;;;;AA6CC;AAGD;cAhDa,qBAAA,QAA4B,cA6CxC;;cAGY,eAAA,EAAe,cAA0B"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { projectApi } from "./projectApi.js";
|
|
2
|
+
import { EMPTY_SNAPSHOT } from "./types.js";
|
|
3
|
+
import { DevToolsHooks } from "@assistant-ui/react";
|
|
4
|
+
//#region src/data/createInProcessClient.ts
|
|
5
|
+
/**
|
|
6
|
+
* The default transport: reads the in-process DevToolsHooks registry and
|
|
7
|
+
* re-projects it on every change.
|
|
8
|
+
*
|
|
9
|
+
* Projection runs inside the subscribe/change callbacks (outside React render)
|
|
10
|
+
* because the scope accessors throw when invoked during a render, and
|
|
11
|
+
* getSnapshot returns the cached result.
|
|
12
|
+
*/
|
|
13
|
+
const createInProcessClient = () => {
|
|
14
|
+
let snapshot = EMPTY_SNAPSHOT;
|
|
15
|
+
const rebuild = () => {
|
|
16
|
+
const apis = DevToolsHooks.getApis();
|
|
17
|
+
const byId = /* @__PURE__ */ new Map();
|
|
18
|
+
for (const [id, entry] of apis) try {
|
|
19
|
+
byId.set(id, projectApi(id, entry));
|
|
20
|
+
} catch {}
|
|
21
|
+
snapshot = {
|
|
22
|
+
apiIds: [...byId.keys()],
|
|
23
|
+
byId
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
return {
|
|
27
|
+
subscribe(listener) {
|
|
28
|
+
rebuild();
|
|
29
|
+
return DevToolsHooks.subscribe(() => {
|
|
30
|
+
rebuild();
|
|
31
|
+
listener();
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
getSnapshot: () => snapshot,
|
|
35
|
+
getServerSnapshot: () => EMPTY_SNAPSHOT,
|
|
36
|
+
clearEvents: (apiId) => DevToolsHooks.clearEventLogs(apiId),
|
|
37
|
+
switchToThread: (apiId, threadId) => {
|
|
38
|
+
const threads = DevToolsHooks.getApis().get(apiId)?.api.threads;
|
|
39
|
+
if (!threads || typeof threads !== "function") return;
|
|
40
|
+
try {
|
|
41
|
+
const methods = threads();
|
|
42
|
+
return Promise.resolve(methods.switchToThread?.(threadId)).catch(() => {});
|
|
43
|
+
} catch {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
/** Shared default client used by DevToolsModal and DevToolsPanel. */
|
|
50
|
+
const inProcessClient = createInProcessClient();
|
|
51
|
+
//#endregion
|
|
52
|
+
export { createInProcessClient, inProcessClient };
|
|
53
|
+
|
|
54
|
+
//# sourceMappingURL=createInProcessClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createInProcessClient.js","names":["DevToolsHooks","projectApi","EMPTY_SNAPSHOT","ApiInfo","DevToolsClient","DevToolsSnapshot","createInProcessClient","snapshot","rebuild","apis","getApis","byId","Map","id","entry","set","apiIds","keys","subscribe","listener","getSnapshot","getServerSnapshot","clearEvents","apiId","clearEventLogs","switchToThread","threadId","get","threads","api","methods","Promise","resolve","catch","inProcessClient"],"sources":["../../src/data/createInProcessClient.ts"],"sourcesContent":["import { DevToolsHooks } from \"@assistant-ui/react\";\nimport { projectApi } from \"./projectApi\";\nimport {\n EMPTY_SNAPSHOT,\n type ApiInfo,\n type DevToolsClient,\n type DevToolsSnapshot,\n} from \"./types\";\n\n/**\n * The default transport: reads the in-process DevToolsHooks registry and\n * re-projects it on every change.\n *\n * Projection runs inside the subscribe/change callbacks (outside React render)\n * because the scope accessors throw when invoked during a render, and\n * getSnapshot returns the cached result.\n */\nexport const createInProcessClient = (): DevToolsClient => {\n let snapshot: DevToolsSnapshot = EMPTY_SNAPSHOT;\n\n const rebuild = () => {\n const apis = DevToolsHooks.getApis();\n const byId = new Map<number, ApiInfo>();\n for (const [id, entry] of apis) {\n try {\n byId.set(id, projectApi(id, entry));\n } catch {\n // Skip an api that fails to project rather than breaking the panel.\n }\n }\n // apiIds tracks byId so the selector never lists an id without data.\n snapshot = { apiIds: [...byId.keys()], byId };\n };\n\n return {\n subscribe(listener) {\n rebuild();\n return DevToolsHooks.subscribe(() => {\n rebuild();\n listener();\n });\n },\n getSnapshot: () => snapshot,\n getServerSnapshot: () => EMPTY_SNAPSHOT,\n clearEvents: (apiId) => DevToolsHooks.clearEventLogs(apiId),\n switchToThread: (apiId, threadId) => {\n const entry = DevToolsHooks.getApis().get(apiId);\n const threads = entry?.api.threads;\n if (!threads || typeof threads !== \"function\") return;\n try {\n const methods = threads() as {\n switchToThread?: (id: string) => void | Promise<void>;\n };\n return Promise.resolve(methods.switchToThread?.(threadId)).catch(\n () => {},\n );\n } catch {\n // The thread scope can throw when the runtime is not ready; ignore.\n return;\n }\n },\n };\n};\n\n/** Shared default client used by DevToolsModal and DevToolsPanel. */\nexport const inProcessClient = createInProcessClient();\n"],"mappings":";;;;;;;;;;;;AAiBA,MAAaM,8BAA8C;CACzD,IAAIC,WAA6BL;CAEjC,MAAMM,gBAAgB;EACpB,MAAMC,OAAOT,cAAcU,QAAQ;EACnC,MAAMC,uBAAO,IAAIC,IAAqB;EACtC,KAAK,MAAM,CAACC,IAAIC,UAAUL,MACxB,IAAI;GACFE,KAAKI,IAAIF,IAAIZ,WAAWY,IAAIC,KAAK,CAAC;EACpC,QAAQ,CACN;EAIJP,WAAW;GAAES,QAAQ,CAAC,GAAGL,KAAKM,KAAK,CAAC;GAAGN;EAAK;CAC9C;CAEA,OAAO;EACLO,UAAUC,UAAU;GAClBX,QAAQ;GACR,OAAOR,cAAckB,gBAAgB;IACnCV,QAAQ;IACRW,SAAS;GACX,CAAC;EACH;EACAC,mBAAmBb;EACnBc,yBAAyBnB;EACzBoB,cAAcC,UAAUvB,cAAcwB,eAAeD,KAAK;EAC1DE,iBAAiBF,OAAOG,aAAa;GAEnC,MAAME,UADQ5B,cAAcU,QAAQ,CAAC,CAACiB,IAAIJ,KAC1BT,CAAK,EAAEe,IAAID;GAC3B,IAAI,CAACA,WAAW,OAAOA,YAAY,YAAY;GAC/C,IAAI;IACF,MAAME,UAAUF,QAAQ;IAGxB,OAAOG,QAAQC,QAAQF,QAAQL,iBAAiBC,QAAQ,CAAC,CAAC,CAACO,YACnD,CAAC,CACT;GACF,QAAQ;IAEN;GACF;EACF;CACF;AACF;;AAGA,MAAaC,kBAAkB5B,sBAAsB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ApiInfo, EventLogEntry } from "./types.js";
|
|
2
|
+
import { AssistantClient } from "@assistant-ui/react";
|
|
3
|
+
|
|
4
|
+
//#region src/data/projectApi.d.ts
|
|
5
|
+
interface DevToolsApiEntry {
|
|
6
|
+
api: Partial<AssistantClient>;
|
|
7
|
+
logs: ReadonlyArray<EventLogEntry>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Projects a live DevToolsHooks api entry into the plain, render-ready shape the
|
|
11
|
+
* views consume. This is the in-process equivalent of the old
|
|
12
|
+
* DevToolsHost.sendUpdate(): it walks the scope accessors for root-scope state
|
|
13
|
+
* and the scope graph, normalizes the model context, and redacts credentials.
|
|
14
|
+
*
|
|
15
|
+
* `state` and each `log.data` are passed through sanitizeForMessage so the JSON
|
|
16
|
+
* renderers cannot crash on circular references or non-serializable values;
|
|
17
|
+
* `log.time` is kept as a Date for the clock formatter.
|
|
18
|
+
*/
|
|
19
|
+
declare const projectApi: (apiId: number, entry: DevToolsApiEntry) => ApiInfo;
|
|
20
|
+
//#endregion
|
|
21
|
+
export { projectApi };
|
|
22
|
+
//# sourceMappingURL=projectApi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectApi.d.ts","names":[],"sources":["../../src/data/projectApi.ts"],"mappings":";;;;UASU,gBAAA;EACR,GAAA,EAAK,OAAA,CAAQ,eAAA;EACb,IAAA,EAAM,aAAA,CAAc,aAAA;AAAA;;;;;;;;;;;cAqGT,UAAA,GAAc,KAAA,UAAe,KAAA,EAAO,gBAAA,KAAmB,OAwDnE"}
|