@flanksource/clicky-ui 0.3.45 → 0.3.47
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/NOTICE.md +11 -0
- package/README.md +22 -0
- package/dist/ai.cjs +13 -8
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.js +7 -2
- package/dist/ai.js.map +1 -1
- package/dist/components/ErrorWrapper.cjs +2 -3
- package/dist/components/ErrorWrapper.cjs.map +1 -1
- package/dist/components/ErrorWrapper.d.ts.map +1 -1
- package/dist/components/ErrorWrapper.js +3 -4
- package/dist/components/ErrorWrapper.js.map +1 -1
- package/dist/data/AccessMark.cjs +23 -0
- package/dist/data/AccessMark.cjs.map +1 -0
- package/dist/data/AccessMark.d.ts +11 -0
- package/dist/data/AccessMark.d.ts.map +1 -0
- package/dist/data/AccessMark.js +23 -0
- package/dist/data/AccessMark.js.map +1 -0
- package/dist/data/Clicky.cjs +3 -0
- package/dist/data/Clicky.cjs.map +1 -1
- package/dist/data/Clicky.js +3 -0
- package/dist/data/Clicky.js.map +1 -1
- package/dist/data/CodeDiff.cjs +116 -23
- package/dist/data/CodeDiff.cjs.map +1 -1
- package/dist/data/CodeDiff.d.ts +26 -0
- package/dist/data/CodeDiff.d.ts.map +1 -1
- package/dist/data/CodeDiff.js +116 -23
- package/dist/data/CodeDiff.js.map +1 -1
- package/dist/data/FilterPill.cjs +15 -2
- package/dist/data/FilterPill.cjs.map +1 -1
- package/dist/data/FilterPill.d.ts +1 -1
- package/dist/data/FilterPill.d.ts.map +1 -1
- package/dist/data/FilterPill.js +15 -2
- package/dist/data/FilterPill.js.map +1 -1
- package/dist/data/GraphDiagram.cjs +65 -13
- package/dist/data/GraphDiagram.cjs.map +1 -1
- package/dist/data/GraphDiagram.d.ts +9 -2
- package/dist/data/GraphDiagram.d.ts.map +1 -1
- package/dist/data/GraphDiagram.js +66 -14
- package/dist/data/GraphDiagram.js.map +1 -1
- package/dist/data/GraphDiagramGroups.cjs +100 -0
- package/dist/data/GraphDiagramGroups.cjs.map +1 -0
- package/dist/data/GraphDiagramGroups.d.ts +24 -0
- package/dist/data/GraphDiagramGroups.d.ts.map +1 -0
- package/dist/data/GraphDiagramGroups.js +100 -0
- package/dist/data/GraphDiagramGroups.js.map +1 -0
- package/dist/data/GraphDiagramNodes.cjs +17 -31
- package/dist/data/GraphDiagramNodes.cjs.map +1 -1
- package/dist/data/GraphDiagramNodes.d.ts +6 -13
- package/dist/data/GraphDiagramNodes.d.ts.map +1 -1
- package/dist/data/GraphDiagramNodes.js +17 -31
- package/dist/data/GraphDiagramNodes.js.map +1 -1
- package/dist/data/LogViewer.cjs +27 -8
- package/dist/data/LogViewer.cjs.map +1 -1
- package/dist/data/LogViewer.d.ts +11 -3
- package/dist/data/LogViewer.d.ts.map +1 -1
- package/dist/data/LogViewer.js +27 -8
- package/dist/data/LogViewer.js.map +1 -1
- package/dist/data/Properties.cjs +2 -15
- package/dist/data/Properties.cjs.map +1 -1
- package/dist/data/Properties.d.ts +4 -0
- package/dist/data/Properties.d.ts.map +1 -1
- package/dist/data/Properties.js +2 -15
- package/dist/data/Properties.js.map +1 -1
- package/dist/data/PropertyValue.cjs +37 -0
- package/dist/data/PropertyValue.cjs.map +1 -0
- package/dist/data/PropertyValue.d.ts +6 -0
- package/dist/data/PropertyValue.d.ts.map +1 -0
- package/dist/data/PropertyValue.js +37 -0
- package/dist/data/PropertyValue.js.map +1 -0
- package/dist/data/Tree.cjs +4 -3
- package/dist/data/Tree.cjs.map +1 -1
- package/dist/data/Tree.d.ts +3 -1
- package/dist/data/Tree.d.ts.map +1 -1
- package/dist/data/Tree.js +4 -3
- package/dist/data/Tree.js.map +1 -1
- package/dist/data/TreeNode.cjs +1 -1
- package/dist/data/TreeNode.cjs.map +1 -1
- package/dist/data/TreeNode.d.ts.map +1 -1
- package/dist/data/TreeNode.js +1 -1
- package/dist/data/TreeNode.js.map +1 -1
- package/dist/data/ai/ChatFab.cjs +1 -1
- package/dist/data/ai/ChatFab.cjs.map +1 -1
- package/dist/data/ai/ChatFab.js +1 -1
- package/dist/data/ai/ChatFab.js.map +1 -1
- package/dist/data/ai/ChatWindow.cjs +106 -171
- package/dist/data/ai/ChatWindow.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.d.ts +6 -2
- package/dist/data/ai/ChatWindow.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.header.cjs +104 -0
- package/dist/data/ai/ChatWindow.header.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.header.d.ts +29 -0
- package/dist/data/ai/ChatWindow.header.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.header.js +104 -0
- package/dist/data/ai/ChatWindow.header.js.map +1 -0
- package/dist/data/ai/ChatWindow.js +107 -172
- package/dist/data/ai/ChatWindow.js.map +1 -1
- package/dist/data/ai/ChatWindow.placement.cjs +95 -0
- package/dist/data/ai/ChatWindow.placement.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.placement.d.ts +32 -0
- package/dist/data/ai/ChatWindow.placement.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.placement.js +95 -0
- package/dist/data/ai/ChatWindow.placement.js.map +1 -0
- package/dist/data/ai/SessionChatComposer.cjs +3 -1
- package/dist/data/ai/SessionChatComposer.cjs.map +1 -1
- package/dist/data/ai/SessionChatComposer.d.ts +4 -1
- package/dist/data/ai/SessionChatComposer.d.ts.map +1 -1
- package/dist/data/ai/SessionChatComposer.js +3 -1
- package/dist/data/ai/SessionChatComposer.js.map +1 -1
- package/dist/data/ai/SessionInspector.cjs +68 -72
- package/dist/data/ai/SessionInspector.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.composer-slot.cjs +8 -0
- package/dist/data/ai/SessionInspector.composer-slot.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.composer-slot.d.ts +9 -0
- package/dist/data/ai/SessionInspector.composer-slot.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.composer-slot.js +8 -0
- package/dist/data/ai/SessionInspector.composer-slot.js.map +1 -0
- package/dist/data/ai/SessionInspector.d.ts +6 -1
- package/dist/data/ai/SessionInspector.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.js +69 -73
- package/dist/data/ai/SessionInspector.js.map +1 -1
- package/dist/data/ai/SessionInspector.legacy.cjs +41 -42
- package/dist/data/ai/SessionInspector.legacy.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.legacy.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.legacy.js +41 -42
- package/dist/data/ai/SessionInspector.legacy.js.map +1 -1
- package/dist/data/ai/SessionInspector.remote-view.cjs +14 -9
- package/dist/data/ai/SessionInspector.remote-view.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.remote-view.d.ts +6 -2
- package/dist/data/ai/SessionInspector.remote-view.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.remote-view.js +14 -9
- package/dist/data/ai/SessionInspector.remote-view.js.map +1 -1
- package/dist/data/ai/SessionInspector.remote.cjs +84 -16
- package/dist/data/ai/SessionInspector.remote.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.remote.d.ts +42 -7
- package/dist/data/ai/SessionInspector.remote.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.remote.js +86 -18
- package/dist/data/ai/SessionInspector.remote.js.map +1 -1
- package/dist/data/ai/SessionInspector.transcript.cjs +5 -0
- package/dist/data/ai/SessionInspector.transcript.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.transcript.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.transcript.js +5 -0
- package/dist/data/ai/SessionInspector.transcript.js.map +1 -1
- package/dist/data/ai/SessionTail.cjs +63 -0
- package/dist/data/ai/SessionTail.cjs.map +1 -0
- package/dist/data/ai/SessionTail.d.ts +14 -0
- package/dist/data/ai/SessionTail.d.ts.map +1 -0
- package/dist/data/ai/SessionTail.js +63 -0
- package/dist/data/ai/SessionTail.js.map +1 -0
- package/dist/data/ai/SessionViewer.cjs +10 -3
- package/dist/data/ai/SessionViewer.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.d.ts +7 -1
- package/dist/data/ai/SessionViewer.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.js +10 -3
- package/dist/data/ai/SessionViewer.js.map +1 -1
- package/dist/data/ai/SessionViewer.unified.d.ts +14 -0
- package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
- package/dist/data/ai/index.d.ts +4 -3
- package/dist/data/ai/index.d.ts.map +1 -1
- package/dist/data/ai/use-session-scroll.cjs +30 -6
- package/dist/data/ai/use-session-scroll.cjs.map +1 -1
- package/dist/data/ai/use-session-scroll.d.ts +7 -0
- package/dist/data/ai/use-session-scroll.d.ts.map +1 -1
- package/dist/data/ai/use-session-scroll.js +30 -6
- package/dist/data/ai/use-session-scroll.js.map +1 -1
- package/dist/data/call-graph/CallGraph.cjs +50 -31
- package/dist/data/call-graph/CallGraph.cjs.map +1 -1
- package/dist/data/call-graph/CallGraph.d.ts +10 -1
- package/dist/data/call-graph/CallGraph.d.ts.map +1 -1
- package/dist/data/call-graph/CallGraph.js +52 -33
- package/dist/data/call-graph/CallGraph.js.map +1 -1
- package/dist/data/call-graph/CallGraphMembers.cjs +5 -4
- package/dist/data/call-graph/CallGraphMembers.cjs.map +1 -1
- package/dist/data/call-graph/CallGraphMembers.d.ts +1 -1
- package/dist/data/call-graph/CallGraphMembers.d.ts.map +1 -1
- package/dist/data/call-graph/CallGraphMembers.js +5 -4
- package/dist/data/call-graph/CallGraphMembers.js.map +1 -1
- package/dist/data/call-graph/CallGraphToolbar.cjs +17 -5
- package/dist/data/call-graph/CallGraphToolbar.cjs.map +1 -1
- package/dist/data/call-graph/CallGraphToolbar.d.ts +10 -0
- package/dist/data/call-graph/CallGraphToolbar.d.ts.map +1 -1
- package/dist/data/call-graph/CallGraphToolbar.js +18 -6
- package/dist/data/call-graph/CallGraphToolbar.js.map +1 -1
- package/dist/data/call-graph/call-graph-model.cjs +169 -18
- package/dist/data/call-graph/call-graph-model.cjs.map +1 -1
- package/dist/data/call-graph/call-graph-model.d.ts +40 -4
- package/dist/data/call-graph/call-graph-model.d.ts.map +1 -1
- package/dist/data/call-graph/call-graph-model.js +170 -19
- package/dist/data/call-graph/call-graph-model.js.map +1 -1
- package/dist/data/call-graph/call-graph-vocabulary.cjs +19 -1
- package/dist/data/call-graph/call-graph-vocabulary.cjs.map +1 -1
- package/dist/data/call-graph/call-graph-vocabulary.d.ts +4 -0
- package/dist/data/call-graph/call-graph-vocabulary.d.ts.map +1 -1
- package/dist/data/call-graph/call-graph-vocabulary.js +19 -1
- package/dist/data/call-graph/call-graph-vocabulary.js.map +1 -1
- package/dist/data/call-graph/call-graph.fixtures.d.ts.map +1 -1
- package/dist/data/call-graph/index.d.ts +2 -2
- package/dist/data/call-graph/index.d.ts.map +1 -1
- package/dist/data/call-graph/types.cjs.map +1 -1
- package/dist/data/call-graph/types.d.ts +7 -2
- package/dist/data/call-graph/types.d.ts.map +1 -1
- package/dist/data/call-graph/types.js.map +1 -1
- package/dist/data/chat/Chat.cjs +1 -1
- package/dist/data/chat/Chat.cjs.map +1 -1
- package/dist/data/chat/Chat.js +1 -1
- package/dist/data/chat/Chat.js.map +1 -1
- package/dist/data/chat/ChatRuntimeToolbar.cjs +4 -4
- package/dist/data/chat/ChatRuntimeToolbar.cjs.map +1 -1
- package/dist/data/chat/ChatRuntimeToolbar.d.ts.map +1 -1
- package/dist/data/chat/ChatRuntimeToolbar.js +4 -4
- package/dist/data/chat/ChatRuntimeToolbar.js.map +1 -1
- package/dist/data/chat/PromptInput.cjs +4 -2
- package/dist/data/chat/PromptInput.cjs.map +1 -1
- package/dist/data/chat/PromptInput.d.ts +5 -1
- package/dist/data/chat/PromptInput.d.ts.map +1 -1
- package/dist/data/chat/PromptInput.js +4 -2
- package/dist/data/chat/PromptInput.js.map +1 -1
- package/dist/data/data-access.cjs +8 -0
- package/dist/data/data-access.cjs.map +1 -0
- package/dist/data/data-access.d.ts +5 -0
- package/dist/data/data-access.d.ts.map +1 -0
- package/dist/data/data-access.js +8 -0
- package/dist/data/data-access.js.map +1 -0
- package/dist/data/diagnostics/ErrorDetails.cjs +13 -2
- package/dist/data/diagnostics/ErrorDetails.cjs.map +1 -1
- package/dist/data/diagnostics/ErrorDetails.d.ts +3 -1
- package/dist/data/diagnostics/ErrorDetails.d.ts.map +1 -1
- package/dist/data/diagnostics/ErrorDetails.js +14 -3
- package/dist/data/diagnostics/ErrorDetails.js.map +1 -1
- package/dist/data/diagnostics/FrameSourceWindow.cjs +3 -2
- package/dist/data/diagnostics/FrameSourceWindow.cjs.map +1 -1
- package/dist/data/diagnostics/FrameSourceWindow.d.ts.map +1 -1
- package/dist/data/diagnostics/FrameSourceWindow.js +3 -2
- package/dist/data/diagnostics/FrameSourceWindow.js.map +1 -1
- package/dist/data/diagnostics/error-diagnostics.cjs +5 -0
- package/dist/data/diagnostics/error-diagnostics.cjs.map +1 -1
- package/dist/data/diagnostics/error-diagnostics.d.ts +1 -0
- package/dist/data/diagnostics/error-diagnostics.d.ts.map +1 -1
- package/dist/data/diagnostics/error-diagnostics.js +6 -1
- package/dist/data/diagnostics/error-diagnostics.js.map +1 -1
- package/dist/data/git/GitChangeList.cjs +6 -2
- package/dist/data/git/GitChangeList.cjs.map +1 -1
- package/dist/data/git/GitChangeList.d.ts +6 -1
- package/dist/data/git/GitChangeList.d.ts.map +1 -1
- package/dist/data/git/GitChangeList.js +6 -2
- package/dist/data/git/GitChangeList.js.map +1 -1
- package/dist/data/graph-columns-layout.cjs +47 -16
- package/dist/data/graph-columns-layout.cjs.map +1 -1
- package/dist/data/graph-columns-layout.d.ts +34 -0
- package/dist/data/graph-columns-layout.d.ts.map +1 -1
- package/dist/data/graph-columns-layout.js +47 -16
- package/dist/data/graph-columns-layout.js.map +1 -1
- package/dist/data/graph-diagram-model.cjs +5 -0
- package/dist/data/graph-diagram-model.cjs.map +1 -1
- package/dist/data/graph-diagram-model.d.ts +19 -0
- package/dist/data/graph-diagram-model.d.ts.map +1 -1
- package/dist/data/graph-diagram-model.js +5 -0
- package/dist/data/graph-diagram-model.js.map +1 -1
- package/dist/data/graph-group-window.cjs +60 -0
- package/dist/data/graph-group-window.cjs.map +1 -0
- package/dist/data/graph-group-window.d.ts +33 -0
- package/dist/data/graph-group-window.d.ts.map +1 -0
- package/dist/data/graph-group-window.js +60 -0
- package/dist/data/graph-group-window.js.map +1 -0
- package/dist/data/har/HarPanel.cjs +3 -1
- package/dist/data/har/HarPanel.cjs.map +1 -1
- package/dist/data/har/HarPanel.d.ts +4 -1
- package/dist/data/har/HarPanel.d.ts.map +1 -1
- package/dist/data/har/HarPanel.js +3 -1
- package/dist/data/har/HarPanel.js.map +1 -1
- package/dist/data/test-runner/Expectation.cjs +57 -0
- package/dist/data/test-runner/Expectation.cjs.map +1 -0
- package/dist/data/test-runner/Expectation.d.ts +19 -0
- package/dist/data/test-runner/Expectation.d.ts.map +1 -0
- package/dist/data/test-runner/Expectation.js +57 -0
- package/dist/data/test-runner/Expectation.js.map +1 -0
- package/dist/data/test-runner/MarkIcons.cjs +38 -0
- package/dist/data/test-runner/MarkIcons.cjs.map +1 -0
- package/dist/data/test-runner/MarkIcons.d.ts +15 -0
- package/dist/data/test-runner/MarkIcons.d.ts.map +1 -0
- package/dist/data/test-runner/MarkIcons.js +38 -0
- package/dist/data/test-runner/MarkIcons.js.map +1 -0
- package/dist/data/test-runner/TestDetailPanel.cjs +74 -42
- package/dist/data/test-runner/TestDetailPanel.cjs.map +1 -1
- package/dist/data/test-runner/TestDetailPanel.d.ts.map +1 -1
- package/dist/data/test-runner/TestDetailPanel.js +76 -44
- package/dist/data/test-runner/TestDetailPanel.js.map +1 -1
- package/dist/data/test-runner/TestFailureDetail.cjs +23 -27
- package/dist/data/test-runner/TestFailureDetail.cjs.map +1 -1
- package/dist/data/test-runner/TestFailureDetail.d.ts +2 -2
- package/dist/data/test-runner/TestFailureDetail.d.ts.map +1 -1
- package/dist/data/test-runner/TestFailureDetail.js +23 -27
- package/dist/data/test-runner/TestFailureDetail.js.map +1 -1
- package/dist/data/test-runner/TestFilterBar.cjs +87 -93
- package/dist/data/test-runner/TestFilterBar.cjs.map +1 -1
- package/dist/data/test-runner/TestFilterBar.d.ts +3 -2
- package/dist/data/test-runner/TestFilterBar.d.ts.map +1 -1
- package/dist/data/test-runner/TestFilterBar.js +89 -95
- package/dist/data/test-runner/TestFilterBar.js.map +1 -1
- package/dist/data/test-runner/TestRunSummary.cjs +35 -21
- package/dist/data/test-runner/TestRunSummary.cjs.map +1 -1
- package/dist/data/test-runner/TestRunSummary.d.ts.map +1 -1
- package/dist/data/test-runner/TestRunSummary.js +35 -21
- package/dist/data/test-runner/TestRunSummary.js.map +1 -1
- package/dist/data/test-runner/TestRunner.cjs +52 -30
- package/dist/data/test-runner/TestRunner.cjs.map +1 -1
- package/dist/data/test-runner/TestRunner.d.ts +3 -2
- package/dist/data/test-runner/TestRunner.d.ts.map +1 -1
- package/dist/data/test-runner/TestRunner.js +52 -30
- package/dist/data/test-runner/TestRunner.js.map +1 -1
- package/dist/data/test-runner/TestTree.cjs +5 -2
- package/dist/data/test-runner/TestTree.cjs.map +1 -1
- package/dist/data/test-runner/TestTree.d.ts +5 -2
- package/dist/data/test-runner/TestTree.d.ts.map +1 -1
- package/dist/data/test-runner/TestTree.js +5 -2
- package/dist/data/test-runner/TestTree.js.map +1 -1
- package/dist/data/test-runner/TestTreeNode.cjs +27 -19
- package/dist/data/test-runner/TestTreeNode.cjs.map +1 -1
- package/dist/data/test-runner/TestTreeNode.d.ts.map +1 -1
- package/dist/data/test-runner/TestTreeNode.js +28 -20
- package/dist/data/test-runner/TestTreeNode.js.map +1 -1
- package/dist/data/test-runner/adapter.cjs +11 -0
- package/dist/data/test-runner/adapter.cjs.map +1 -1
- package/dist/data/test-runner/adapter.d.ts +18 -7
- package/dist/data/test-runner/adapter.d.ts.map +1 -1
- package/dist/data/test-runner/adapter.js +11 -0
- package/dist/data/test-runner/adapter.js.map +1 -1
- package/dist/data/test-runner/copy.cjs +114 -0
- package/dist/data/test-runner/copy.cjs.map +1 -0
- package/dist/data/test-runner/copy.d.ts +47 -0
- package/dist/data/test-runner/copy.d.ts.map +1 -0
- package/dist/data/test-runner/copy.js +114 -0
- package/dist/data/test-runner/copy.js.map +1 -0
- package/dist/data/test-runner/index.d.ts +5 -2
- package/dist/data/test-runner/index.d.ts.map +1 -1
- package/dist/data/test-runner/marks.cjs +143 -0
- package/dist/data/test-runner/marks.cjs.map +1 -0
- package/dist/data/test-runner/marks.d.ts +30 -0
- package/dist/data/test-runner/marks.d.ts.map +1 -0
- package/dist/data/test-runner/marks.js +143 -0
- package/dist/data/test-runner/marks.js.map +1 -0
- package/dist/data/test-runner/status.cjs +27 -44
- package/dist/data/test-runner/status.cjs.map +1 -1
- package/dist/data/test-runner/status.d.ts +12 -3
- package/dist/data/test-runner/status.d.ts.map +1 -1
- package/dist/data/test-runner/status.js +27 -44
- package/dist/data/test-runner/status.js.map +1 -1
- package/dist/data/use-group-windows.cjs +50 -0
- package/dist/data/use-group-windows.cjs.map +1 -0
- package/dist/data/use-group-windows.d.ts +27 -0
- package/dist/data/use-group-windows.d.ts.map +1 -0
- package/dist/data/use-group-windows.js +50 -0
- package/dist/data/use-group-windows.js.map +1 -0
- package/dist/data/verification/adapterViews.cjs +16 -41
- package/dist/data/verification/adapterViews.cjs.map +1 -1
- package/dist/data/verification/adapterViews.d.ts.map +1 -1
- package/dist/data/verification/adapterViews.js +16 -41
- package/dist/data/verification/adapterViews.js.map +1 -1
- package/dist/data/verification/adapters.cjs +115 -3
- package/dist/data/verification/adapters.cjs.map +1 -1
- package/dist/data/verification/adapters.d.ts.map +1 -1
- package/dist/data/verification/adapters.js +115 -3
- package/dist/data/verification/adapters.js.map +1 -1
- package/dist/data/verification/verifyReportTests.cjs.map +1 -1
- package/dist/data/verification/verifyReportTests.js.map +1 -1
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +54 -3
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +6 -2
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +58 -7
- package/dist/data.js.map +1 -1
- package/dist/hooks/event-hub.cjs +229 -0
- package/dist/hooks/event-hub.cjs.map +1 -0
- package/dist/hooks/event-hub.d.ts +26 -0
- package/dist/hooks/event-hub.d.ts.map +1 -0
- package/dist/hooks/event-hub.js +229 -0
- package/dist/hooks/event-hub.js.map +1 -0
- package/dist/hooks.cjs +2 -0
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.d.ts +1 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +2 -0
- package/dist/hooks.js.map +1 -1
- package/dist/icons/components/UiLogoEslint.cjs +10 -0
- package/dist/icons/components/UiLogoEslint.cjs.map +1 -0
- package/dist/icons/components/UiLogoEslint.d.ts +9 -0
- package/dist/icons/components/UiLogoEslint.d.ts.map +1 -0
- package/dist/icons/components/UiLogoEslint.js +10 -0
- package/dist/icons/components/UiLogoEslint.js.map +1 -0
- package/dist/icons/components/UiLogoGo.cjs +10 -0
- package/dist/icons/components/UiLogoGo.cjs.map +1 -0
- package/dist/icons/components/UiLogoGo.d.ts +9 -0
- package/dist/icons/components/UiLogoGo.d.ts.map +1 -0
- package/dist/icons/components/UiLogoGo.js +10 -0
- package/dist/icons/components/UiLogoGo.js.map +1 -0
- package/dist/icons/components/UiLogoJest.cjs +10 -0
- package/dist/icons/components/UiLogoJest.cjs.map +1 -0
- package/dist/icons/components/UiLogoJest.d.ts +9 -0
- package/dist/icons/components/UiLogoJest.d.ts.map +1 -0
- package/dist/icons/components/UiLogoJest.js +10 -0
- package/dist/icons/components/UiLogoJest.js.map +1 -0
- package/dist/icons/components/UiLogoMarkdown.cjs +10 -0
- package/dist/icons/components/UiLogoMarkdown.cjs.map +1 -0
- package/dist/icons/components/UiLogoMarkdown.d.ts +9 -0
- package/dist/icons/components/UiLogoMarkdown.d.ts.map +1 -0
- package/dist/icons/components/UiLogoMarkdown.js +10 -0
- package/dist/icons/components/UiLogoMarkdown.js.map +1 -0
- package/dist/icons/components/UiLogoOxc.cjs +10 -0
- package/dist/icons/components/UiLogoOxc.cjs.map +1 -0
- package/dist/icons/components/UiLogoOxc.d.ts +9 -0
- package/dist/icons/components/UiLogoOxc.d.ts.map +1 -0
- package/dist/icons/components/UiLogoOxc.js +10 -0
- package/dist/icons/components/UiLogoOxc.js.map +1 -0
- package/dist/icons/components/UiLogoPlaywright.cjs +10 -0
- package/dist/icons/components/UiLogoPlaywright.cjs.map +1 -0
- package/dist/icons/components/UiLogoPlaywright.d.ts +9 -0
- package/dist/icons/components/UiLogoPlaywright.d.ts.map +1 -0
- package/dist/icons/components/UiLogoPlaywright.js +10 -0
- package/dist/icons/components/UiLogoPlaywright.js.map +1 -0
- package/dist/icons/components/UiLogoPython.cjs +10 -0
- package/dist/icons/components/UiLogoPython.cjs.map +1 -0
- package/dist/icons/components/UiLogoPython.d.ts +9 -0
- package/dist/icons/components/UiLogoPython.d.ts.map +1 -0
- package/dist/icons/components/UiLogoPython.js +10 -0
- package/dist/icons/components/UiLogoPython.js.map +1 -0
- package/dist/icons/components/UiLogoReact.cjs +10 -0
- package/dist/icons/components/UiLogoReact.cjs.map +1 -0
- package/dist/icons/components/UiLogoReact.d.ts +9 -0
- package/dist/icons/components/UiLogoReact.d.ts.map +1 -0
- package/dist/icons/components/UiLogoReact.js +10 -0
- package/dist/icons/components/UiLogoReact.js.map +1 -0
- package/dist/icons/components/UiLogoRuff.cjs +10 -0
- package/dist/icons/components/UiLogoRuff.cjs.map +1 -0
- package/dist/icons/components/UiLogoRuff.d.ts +9 -0
- package/dist/icons/components/UiLogoRuff.d.ts.map +1 -0
- package/dist/icons/components/UiLogoRuff.js +10 -0
- package/dist/icons/components/UiLogoRuff.js.map +1 -0
- package/dist/icons/components/UiLogoTypescript.cjs +10 -0
- package/dist/icons/components/UiLogoTypescript.cjs.map +1 -0
- package/dist/icons/components/UiLogoTypescript.d.ts +9 -0
- package/dist/icons/components/UiLogoTypescript.d.ts.map +1 -0
- package/dist/icons/components/UiLogoTypescript.js +10 -0
- package/dist/icons/components/UiLogoTypescript.js.map +1 -0
- package/dist/icons/components/UiLogoVitest.cjs +10 -0
- package/dist/icons/components/UiLogoVitest.cjs.map +1 -0
- package/dist/icons/components/UiLogoVitest.d.ts +9 -0
- package/dist/icons/components/UiLogoVitest.d.ts.map +1 -0
- package/dist/icons/components/UiLogoVitest.js +10 -0
- package/dist/icons/components/UiLogoVitest.js.map +1 -0
- package/dist/icons/index.d.ts +11 -0
- package/dist/icons/index.d.ts.map +1 -1
- package/dist/icons/registry.cjs +22 -0
- package/dist/icons/registry.cjs.map +1 -1
- package/dist/icons/registry.d.ts.map +1 -1
- package/dist/icons/registry.js +22 -0
- package/dist/icons/registry.js.map +1 -1
- package/dist/icons.cjs +22 -0
- package/dist/icons.cjs.map +1 -1
- package/dist/icons.js +22 -0
- package/dist/icons.js.map +1 -1
- package/dist/index.cjs +56 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +60 -7
- package/dist/index.js.map +1 -1
- package/dist/overlay/DropdownMenuSubmenu.cjs +4 -4
- package/dist/overlay/DropdownMenuSubmenu.cjs.map +1 -1
- package/dist/overlay/DropdownMenuSubmenu.js +4 -4
- package/dist/overlay/DropdownMenuSubmenu.js.map +1 -1
- package/dist/overlay/modalStack.cjs +13 -6
- package/dist/overlay/modalStack.cjs.map +1 -1
- package/dist/overlay/modalStack.d.ts.map +1 -1
- package/dist/overlay/modalStack.js +13 -6
- package/dist/overlay/modalStack.js.map +1 -1
- package/dist/rpc/InlineError.cjs +12 -43
- package/dist/rpc/InlineError.cjs.map +1 -1
- package/dist/rpc/InlineError.d.ts.map +1 -1
- package/dist/rpc/InlineError.js +13 -44
- package/dist/rpc/InlineError.js.map +1 -1
- package/dist/rpc/OperationScheduleDialog.cjs +63 -10
- package/dist/rpc/OperationScheduleDialog.cjs.map +1 -1
- package/dist/rpc/OperationScheduleDialog.d.ts +4 -0
- package/dist/rpc/OperationScheduleDialog.d.ts.map +1 -1
- package/dist/rpc/OperationScheduleDialog.js +63 -10
- package/dist/rpc/OperationScheduleDialog.js.map +1 -1
- package/dist/rpc/OperationSchedules.cjs +12 -2
- package/dist/rpc/OperationSchedules.cjs.map +1 -1
- package/dist/rpc/OperationSchedules.d.ts.map +1 -1
- package/dist/rpc/OperationSchedules.js +12 -2
- package/dist/rpc/OperationSchedules.js.map +1 -1
- package/dist/rpc/operation-schedule-model.cjs +2 -0
- package/dist/rpc/operation-schedule-model.cjs.map +1 -1
- package/dist/rpc/operation-schedule-model.d.ts.map +1 -1
- package/dist/rpc/operation-schedule-model.js +2 -0
- package/dist/rpc/operation-schedule-model.js.map +1 -1
- package/dist/rpc/operation-schedule-types.d.ts +7 -1
- package/dist/rpc/operation-schedule-types.d.ts.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/dist/data/test-runner/frameworkIcon.cjs +0 -27
- package/dist/data/test-runner/frameworkIcon.cjs.map +0 -1
- package/dist/data/test-runner/frameworkIcon.d.ts +0 -3
- package/dist/data/test-runner/frameworkIcon.d.ts.map +0 -1
- package/dist/data/test-runner/frameworkIcon.js +0 -27
- package/dist/data/test-runner/frameworkIcon.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionInspector.legacy.cjs","sources":["../../../src/data/ai/SessionInspector.legacy.tsx"],"sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { SessionInspectorPanel } from \"./SessionInspector.panels\";\nimport { CompactSessionInspectorToolbar } from \"./SessionInspector.compact\";\nimport { InspectorTabs } from \"./SessionInspector.tabs\";\nimport {\n inspectorTabs,\n type SessionInspectorTab,\n} from \"./SessionInspector.tabs.model\";\nimport { useInspectorTab } from \"./SessionInspector.tab-state\";\nimport { SessionViewer, type SessionViewerProps } from \"./SessionViewer\";\nimport {\n getSessionMetadata,\n type SessionInput,\n type SessionMetadataSummary,\n} from \"./SessionViewer.model\";\n\n/** The inspector for a non-unified session (legacy entries or raw log text):\n * only the transcript carries content, so it has no hierarchy or facets. */\nexport function LegacySessionInspector({\n session,\n className,\n defaultTab = \"transcript\",\n tab: controlledTab,\n onTabChange,\n transcriptProps,\n composer,\n layout = \"default\",\n metadata,\n toolbarActions,\n}: {\n session: SessionInput;\n className?: string;\n defaultTab?: SessionInspectorTab;\n tab?: SessionInspectorTab;\n onTabChange?: (tab: SessionInspectorTab) => void;\n transcriptProps?: Omit<SessionViewerProps, \"session\">;\n composer?: ReactNode;\n layout?: \"default\" | \"compact\";\n metadata?: SessionMetadataSummary;\n toolbarActions?: ReactNode;\n}) {\n const compact = layout === \"compact\";\n const [menuHost, setMenuHost] = useState<HTMLSpanElement | null>(null);\n const [tab, setTab] = useInspectorTab(\n defaultTab,\n false,\n controlledTab,\n onTabChange,\n );\n const transcriptClassName = cn(\"h-full\", transcriptProps?.className);\n const compactTabs = inspectorTabs(false);\n const compactMetadata = metadata ?? getSessionMetadata(session);\n const viewerProps = compact\n ? {\n ...transcriptProps,\n menuContainer: menuHost,\n showMenu: menuHost !== null && transcriptProps?.showMenu !== false,\n }\n : transcriptProps;\n return (\n <div\n className={cn(\n \"flex h-full min-h-0 w-full max-w-full flex-col overflow-hidden bg-background text-sm\",\n compact\n ? \"@container rounded-none border-0 shadow-none\"\n : \"rounded-xl border border-border shadow-sm\",\n className,\n )}\n >\n {compact ? (\n <CompactSessionInspectorToolbar\n tabs={compactTabs}\n activeTab={tab}\n onSelect={(next) => setTab(next as SessionInspectorTab)}\n onMenuHost={setMenuHost}\n {...(compactMetadata ? { metadata: compactMetadata } : {})}\n {...(toolbarActions ? { toolbarActions } : {})}\n />\n ) : (\n <InspectorTabs tab={tab} tabs={compactTabs} onSelect={setTab} />\n )}\n <
|
|
1
|
+
{"version":3,"file":"SessionInspector.legacy.cjs","sources":["../../../src/data/ai/SessionInspector.legacy.tsx"],"sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { SessionInspectorPanel } from \"./SessionInspector.panels\";\nimport { PinnedComposer } from \"./SessionInspector.composer-slot\";\nimport { CompactSessionInspectorToolbar } from \"./SessionInspector.compact\";\nimport { InspectorTabs } from \"./SessionInspector.tabs\";\nimport {\n inspectorTabs,\n type SessionInspectorTab,\n} from \"./SessionInspector.tabs.model\";\nimport { useInspectorTab } from \"./SessionInspector.tab-state\";\nimport { SessionViewer, type SessionViewerProps } from \"./SessionViewer\";\nimport {\n getSessionMetadata,\n type SessionInput,\n type SessionMetadataSummary,\n} from \"./SessionViewer.model\";\n\n/** The inspector for a non-unified session (legacy entries or raw log text):\n * only the transcript carries content, so it has no hierarchy or facets. */\nexport function LegacySessionInspector({\n session,\n className,\n defaultTab = \"transcript\",\n tab: controlledTab,\n onTabChange,\n transcriptProps,\n composer,\n layout = \"default\",\n metadata,\n toolbarActions,\n}: {\n session: SessionInput;\n className?: string;\n defaultTab?: SessionInspectorTab;\n tab?: SessionInspectorTab;\n onTabChange?: (tab: SessionInspectorTab) => void;\n transcriptProps?: Omit<SessionViewerProps, \"session\">;\n composer?: ReactNode;\n layout?: \"default\" | \"compact\";\n metadata?: SessionMetadataSummary;\n toolbarActions?: ReactNode;\n}) {\n const compact = layout === \"compact\";\n const [menuHost, setMenuHost] = useState<HTMLSpanElement | null>(null);\n const [tab, setTab] = useInspectorTab(\n defaultTab,\n false,\n controlledTab,\n onTabChange,\n );\n const transcriptClassName = cn(\"h-full\", transcriptProps?.className);\n const compactTabs = inspectorTabs(false);\n const compactMetadata = metadata ?? getSessionMetadata(session);\n const viewerProps = compact\n ? {\n ...transcriptProps,\n menuContainer: menuHost,\n showMenu: menuHost !== null && transcriptProps?.showMenu !== false,\n }\n : transcriptProps;\n return (\n <div\n className={cn(\n \"flex h-full min-h-0 w-full max-w-full flex-col overflow-hidden bg-background text-sm\",\n compact\n ? \"@container rounded-none border-0 shadow-none\"\n : \"rounded-xl border border-border shadow-sm\",\n className,\n )}\n >\n {compact ? (\n <CompactSessionInspectorToolbar\n tabs={compactTabs}\n activeTab={tab}\n onSelect={(next) => setTab(next as SessionInspectorTab)}\n onMenuHost={setMenuHost}\n {...(compactMetadata ? { metadata: compactMetadata } : {})}\n {...(toolbarActions ? { toolbarActions } : {})}\n />\n ) : (\n <InspectorTabs tab={tab} tabs={compactTabs} onSelect={setTab} />\n )}\n <main className=\"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden\">\n {compact ? (\n <>\n <div\n className={cn(\n \"min-h-0 flex-1 overflow-hidden\",\n tab !== \"transcript\" && \"hidden\",\n )}\n >\n <SessionViewer\n session={session}\n scrollable\n showRowMetadata\n {...viewerProps}\n className={transcriptClassName}\n showHeader={false}\n showContextMeter={false}\n />\n </div>\n {tab !== \"transcript\" ? (\n <div className=\"min-h-0 flex-1 overflow-auto p-density-4\">\n <SessionInspectorPanel\n tab={tab}\n detail={undefined}\n session={session}\n />\n </div>\n ) : null}\n </>\n ) : (\n <div className=\"min-h-0 flex-1 overflow-hidden\">\n {tab === \"transcript\" ? (\n <SessionViewer\n session={session}\n scrollable\n showRowMetadata\n {...transcriptProps}\n className={transcriptClassName}\n />\n ) : (\n <SessionInspectorPanel\n tab={tab}\n detail={undefined}\n session={session}\n />\n )}\n </div>\n )}\n </main>\n {composer ? <PinnedComposer>{composer}</PinnedComposer> : null}\n </div>\n );\n}\n"],"names":["useState","useInspectorTab","cn","inspectorTabs","getSessionMetadata","jsxs","jsx","CompactSessionInspectorToolbar","InspectorTabs","Fragment","SessionViewer","SessionInspectorPanel","PinnedComposer"],"mappings":";;;;;;;;;;;;;AAoBO,SAAS,uBAAuB;AAAA,EACrC;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,KAAK;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA;AACF,GAWG;AACD,QAAM,UAAU,WAAW;AAC3B,QAAM,CAAC,UAAU,WAAW,IAAIA,MAAAA,SAAiC,IAAI;AACrE,QAAM,CAAC,KAAK,MAAM,IAAIC,0BAAAA;AAAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEF,QAAM,sBAAsBC,MAAAA,GAAG,UAAU,mDAAiB,SAAS;AACnE,QAAM,cAAcC,4BAAAA,cAAc,KAAK;AACvC,QAAM,kBAAkB,YAAYC,oBAAAA,mBAAmB,OAAO;AAC9D,QAAM,cAAc,UAChB;AAAA,IACE,GAAG;AAAA,IACH,eAAe;AAAA,IACf,UAAU,aAAa,SAAQ,mDAAiB,cAAa;AAAA,EAAA,IAE/D;AACJ,SACEC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWH,MAAAA;AAAAA,QACT;AAAA,QACA,UACI,iDACA;AAAA,QACJ;AAAA,MAAA;AAAA,MAGD,UAAA;AAAA,QAAA,UACCI,2BAAAA;AAAAA,UAACC,yBAAAA;AAAAA,UAAA;AAAA,YACC,MAAM;AAAA,YACN,WAAW;AAAA,YACX,UAAU,CAAC,SAAS,OAAO,IAA2B;AAAA,YACtD,YAAY;AAAA,YACX,GAAI,kBAAkB,EAAE,UAAU,gBAAA,IAAoB,CAAA;AAAA,YACtD,GAAI,iBAAiB,EAAE,mBAAmB,CAAA;AAAA,UAAC;AAAA,QAAA,IAG9CD,2BAAAA,IAACE,sBAAAA,eAAA,EAAc,KAAU,MAAM,aAAa,UAAU,QAAQ;AAAA,QAEhEF,+BAAC,QAAA,EAAK,WAAU,wDACb,oBACCD,2BAAAA,KAAAI,qBAAA,EACE,UAAA;AAAA,UAAAH,2BAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWJ,MAAAA;AAAAA,gBACT;AAAA,gBACA,QAAQ,gBAAgB;AAAA,cAAA;AAAA,cAG1B,UAAAI,2BAAAA;AAAAA,gBAACI,cAAAA;AAAAA,gBAAA;AAAA,kBACC;AAAA,kBACA,YAAU;AAAA,kBACV,iBAAe;AAAA,kBACd,GAAG;AAAA,kBACJ,WAAW;AAAA,kBACX,YAAY;AAAA,kBACZ,kBAAkB;AAAA,gBAAA;AAAA,cAAA;AAAA,YACpB;AAAA,UAAA;AAAA,UAED,QAAQ,eACPJ,+BAAC,OAAA,EAAI,WAAU,4CACb,UAAAA,2BAAAA;AAAAA,YAACK,wBAAAA;AAAAA,YAAA;AAAA,cACC;AAAA,cACA,QAAQ;AAAA,cACR;AAAA,YAAA;AAAA,UAAA,GAEJ,IACE;AAAA,QAAA,GACN,IAEAL,+BAAC,OAAA,EAAI,WAAU,kCACZ,kBAAQ,eACPA,2BAAAA;AAAAA,UAACI,cAAAA;AAAAA,UAAA;AAAA,YACC;AAAA,YACA,YAAU;AAAA,YACV,iBAAe;AAAA,YACd,GAAG;AAAA,YACJ,WAAW;AAAA,UAAA;AAAA,QAAA,IAGbJ,2BAAAA;AAAAA,UAACK,wBAAAA;AAAAA,UAAA;AAAA,YACC;AAAA,YACA,QAAQ;AAAA,YACR;AAAA,UAAA;AAAA,QAAA,GAGN,EAAA,CAEJ;AAAA,QACC,WAAWL,2BAAAA,IAACM,8BAAAA,gBAAA,EAAgB,UAAA,SAAA,CAAS,IAAoB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGhE;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionInspector.legacy.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionInspector.legacy.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SessionInspector.legacy.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionInspector.legacy.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAMjD,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAC5B,MAAM,uBAAuB,CAAC;AAE/B;6EAC6E;AAC7E,wBAAgB,sBAAsB,CAAC,EACrC,OAAO,EACP,SAAS,EACT,UAAyB,EACzB,GAAG,EAAE,aAAa,EAClB,WAAW,EACX,eAAe,EACf,QAAQ,EACR,MAAkB,EAClB,QAAQ,EACR,cAAc,GACf,EAAE;IACD,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACjD,eAAe,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,cAAc,CAAC,EAAE,SAAS,CAAC;CAC5B,+BA6FA"}
|
|
@@ -2,6 +2,7 @@ import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
|
2
2
|
import { useState } from "react";
|
|
3
3
|
import { cn } from "../../lib/utils.js";
|
|
4
4
|
import { SessionInspectorPanel } from "./SessionInspector.panels.js";
|
|
5
|
+
import { PinnedComposer } from "./SessionInspector.composer-slot.js";
|
|
5
6
|
import { CompactSessionInspectorToolbar } from "./SessionInspector.compact.js";
|
|
6
7
|
import { InspectorTabs } from "./SessionInspector.tabs.js";
|
|
7
8
|
import { inspectorTabs } from "./SessionInspector.tabs.model.js";
|
|
@@ -56,56 +57,54 @@ function LegacySessionInspector({
|
|
|
56
57
|
...toolbarActions ? { toolbarActions } : {}
|
|
57
58
|
}
|
|
58
59
|
) : /* @__PURE__ */ jsx(InspectorTabs, { tab, tabs: compactTabs, onSelect: setTab }),
|
|
59
|
-
/* @__PURE__ */
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
"div",
|
|
63
|
-
{
|
|
64
|
-
className: cn(
|
|
65
|
-
"min-h-0 flex-1 overflow-hidden",
|
|
66
|
-
tab !== "transcript" && "hidden"
|
|
67
|
-
),
|
|
68
|
-
children: /* @__PURE__ */ jsx(
|
|
69
|
-
SessionViewer,
|
|
70
|
-
{
|
|
71
|
-
session,
|
|
72
|
-
scrollable: true,
|
|
73
|
-
showRowMetadata: true,
|
|
74
|
-
...viewerProps,
|
|
75
|
-
className: transcriptClassName,
|
|
76
|
-
showHeader: false,
|
|
77
|
-
showContextMeter: false
|
|
78
|
-
}
|
|
79
|
-
)
|
|
80
|
-
}
|
|
81
|
-
),
|
|
82
|
-
tab !== "transcript" ? /* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-auto p-density-4", children: /* @__PURE__ */ jsx(
|
|
83
|
-
SessionInspectorPanel,
|
|
84
|
-
{
|
|
85
|
-
tab,
|
|
86
|
-
detail: void 0,
|
|
87
|
-
session
|
|
88
|
-
}
|
|
89
|
-
) }) : null
|
|
90
|
-
] }) : /* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-hidden", children: tab === "transcript" ? /* @__PURE__ */ jsx(
|
|
91
|
-
SessionViewer,
|
|
60
|
+
/* @__PURE__ */ jsx("main", { className: "flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden", children: compact ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
61
|
+
/* @__PURE__ */ jsx(
|
|
62
|
+
"div",
|
|
92
63
|
{
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
64
|
+
className: cn(
|
|
65
|
+
"min-h-0 flex-1 overflow-hidden",
|
|
66
|
+
tab !== "transcript" && "hidden"
|
|
67
|
+
),
|
|
68
|
+
children: /* @__PURE__ */ jsx(
|
|
69
|
+
SessionViewer,
|
|
70
|
+
{
|
|
71
|
+
session,
|
|
72
|
+
scrollable: true,
|
|
73
|
+
showRowMetadata: true,
|
|
74
|
+
...viewerProps,
|
|
75
|
+
className: transcriptClassName,
|
|
76
|
+
showHeader: false,
|
|
77
|
+
showContextMeter: false
|
|
78
|
+
}
|
|
79
|
+
)
|
|
98
80
|
}
|
|
99
|
-
)
|
|
81
|
+
),
|
|
82
|
+
tab !== "transcript" ? /* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-auto p-density-4", children: /* @__PURE__ */ jsx(
|
|
100
83
|
SessionInspectorPanel,
|
|
101
84
|
{
|
|
102
85
|
tab,
|
|
103
86
|
detail: void 0,
|
|
104
87
|
session
|
|
105
88
|
}
|
|
106
|
-
) })
|
|
107
|
-
|
|
108
|
-
|
|
89
|
+
) }) : null
|
|
90
|
+
] }) : /* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-hidden", children: tab === "transcript" ? /* @__PURE__ */ jsx(
|
|
91
|
+
SessionViewer,
|
|
92
|
+
{
|
|
93
|
+
session,
|
|
94
|
+
scrollable: true,
|
|
95
|
+
showRowMetadata: true,
|
|
96
|
+
...transcriptProps,
|
|
97
|
+
className: transcriptClassName
|
|
98
|
+
}
|
|
99
|
+
) : /* @__PURE__ */ jsx(
|
|
100
|
+
SessionInspectorPanel,
|
|
101
|
+
{
|
|
102
|
+
tab,
|
|
103
|
+
detail: void 0,
|
|
104
|
+
session
|
|
105
|
+
}
|
|
106
|
+
) }) }),
|
|
107
|
+
composer ? /* @__PURE__ */ jsx(PinnedComposer, { children: composer }) : null
|
|
109
108
|
]
|
|
110
109
|
}
|
|
111
110
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionInspector.legacy.js","sources":["../../../src/data/ai/SessionInspector.legacy.tsx"],"sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { SessionInspectorPanel } from \"./SessionInspector.panels\";\nimport { CompactSessionInspectorToolbar } from \"./SessionInspector.compact\";\nimport { InspectorTabs } from \"./SessionInspector.tabs\";\nimport {\n inspectorTabs,\n type SessionInspectorTab,\n} from \"./SessionInspector.tabs.model\";\nimport { useInspectorTab } from \"./SessionInspector.tab-state\";\nimport { SessionViewer, type SessionViewerProps } from \"./SessionViewer\";\nimport {\n getSessionMetadata,\n type SessionInput,\n type SessionMetadataSummary,\n} from \"./SessionViewer.model\";\n\n/** The inspector for a non-unified session (legacy entries or raw log text):\n * only the transcript carries content, so it has no hierarchy or facets. */\nexport function LegacySessionInspector({\n session,\n className,\n defaultTab = \"transcript\",\n tab: controlledTab,\n onTabChange,\n transcriptProps,\n composer,\n layout = \"default\",\n metadata,\n toolbarActions,\n}: {\n session: SessionInput;\n className?: string;\n defaultTab?: SessionInspectorTab;\n tab?: SessionInspectorTab;\n onTabChange?: (tab: SessionInspectorTab) => void;\n transcriptProps?: Omit<SessionViewerProps, \"session\">;\n composer?: ReactNode;\n layout?: \"default\" | \"compact\";\n metadata?: SessionMetadataSummary;\n toolbarActions?: ReactNode;\n}) {\n const compact = layout === \"compact\";\n const [menuHost, setMenuHost] = useState<HTMLSpanElement | null>(null);\n const [tab, setTab] = useInspectorTab(\n defaultTab,\n false,\n controlledTab,\n onTabChange,\n );\n const transcriptClassName = cn(\"h-full\", transcriptProps?.className);\n const compactTabs = inspectorTabs(false);\n const compactMetadata = metadata ?? getSessionMetadata(session);\n const viewerProps = compact\n ? {\n ...transcriptProps,\n menuContainer: menuHost,\n showMenu: menuHost !== null && transcriptProps?.showMenu !== false,\n }\n : transcriptProps;\n return (\n <div\n className={cn(\n \"flex h-full min-h-0 w-full max-w-full flex-col overflow-hidden bg-background text-sm\",\n compact\n ? \"@container rounded-none border-0 shadow-none\"\n : \"rounded-xl border border-border shadow-sm\",\n className,\n )}\n >\n {compact ? (\n <CompactSessionInspectorToolbar\n tabs={compactTabs}\n activeTab={tab}\n onSelect={(next) => setTab(next as SessionInspectorTab)}\n onMenuHost={setMenuHost}\n {...(compactMetadata ? { metadata: compactMetadata } : {})}\n {...(toolbarActions ? { toolbarActions } : {})}\n />\n ) : (\n <InspectorTabs tab={tab} tabs={compactTabs} onSelect={setTab} />\n )}\n <
|
|
1
|
+
{"version":3,"file":"SessionInspector.legacy.js","sources":["../../../src/data/ai/SessionInspector.legacy.tsx"],"sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { SessionInspectorPanel } from \"./SessionInspector.panels\";\nimport { PinnedComposer } from \"./SessionInspector.composer-slot\";\nimport { CompactSessionInspectorToolbar } from \"./SessionInspector.compact\";\nimport { InspectorTabs } from \"./SessionInspector.tabs\";\nimport {\n inspectorTabs,\n type SessionInspectorTab,\n} from \"./SessionInspector.tabs.model\";\nimport { useInspectorTab } from \"./SessionInspector.tab-state\";\nimport { SessionViewer, type SessionViewerProps } from \"./SessionViewer\";\nimport {\n getSessionMetadata,\n type SessionInput,\n type SessionMetadataSummary,\n} from \"./SessionViewer.model\";\n\n/** The inspector for a non-unified session (legacy entries or raw log text):\n * only the transcript carries content, so it has no hierarchy or facets. */\nexport function LegacySessionInspector({\n session,\n className,\n defaultTab = \"transcript\",\n tab: controlledTab,\n onTabChange,\n transcriptProps,\n composer,\n layout = \"default\",\n metadata,\n toolbarActions,\n}: {\n session: SessionInput;\n className?: string;\n defaultTab?: SessionInspectorTab;\n tab?: SessionInspectorTab;\n onTabChange?: (tab: SessionInspectorTab) => void;\n transcriptProps?: Omit<SessionViewerProps, \"session\">;\n composer?: ReactNode;\n layout?: \"default\" | \"compact\";\n metadata?: SessionMetadataSummary;\n toolbarActions?: ReactNode;\n}) {\n const compact = layout === \"compact\";\n const [menuHost, setMenuHost] = useState<HTMLSpanElement | null>(null);\n const [tab, setTab] = useInspectorTab(\n defaultTab,\n false,\n controlledTab,\n onTabChange,\n );\n const transcriptClassName = cn(\"h-full\", transcriptProps?.className);\n const compactTabs = inspectorTabs(false);\n const compactMetadata = metadata ?? getSessionMetadata(session);\n const viewerProps = compact\n ? {\n ...transcriptProps,\n menuContainer: menuHost,\n showMenu: menuHost !== null && transcriptProps?.showMenu !== false,\n }\n : transcriptProps;\n return (\n <div\n className={cn(\n \"flex h-full min-h-0 w-full max-w-full flex-col overflow-hidden bg-background text-sm\",\n compact\n ? \"@container rounded-none border-0 shadow-none\"\n : \"rounded-xl border border-border shadow-sm\",\n className,\n )}\n >\n {compact ? (\n <CompactSessionInspectorToolbar\n tabs={compactTabs}\n activeTab={tab}\n onSelect={(next) => setTab(next as SessionInspectorTab)}\n onMenuHost={setMenuHost}\n {...(compactMetadata ? { metadata: compactMetadata } : {})}\n {...(toolbarActions ? { toolbarActions } : {})}\n />\n ) : (\n <InspectorTabs tab={tab} tabs={compactTabs} onSelect={setTab} />\n )}\n <main className=\"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden\">\n {compact ? (\n <>\n <div\n className={cn(\n \"min-h-0 flex-1 overflow-hidden\",\n tab !== \"transcript\" && \"hidden\",\n )}\n >\n <SessionViewer\n session={session}\n scrollable\n showRowMetadata\n {...viewerProps}\n className={transcriptClassName}\n showHeader={false}\n showContextMeter={false}\n />\n </div>\n {tab !== \"transcript\" ? (\n <div className=\"min-h-0 flex-1 overflow-auto p-density-4\">\n <SessionInspectorPanel\n tab={tab}\n detail={undefined}\n session={session}\n />\n </div>\n ) : null}\n </>\n ) : (\n <div className=\"min-h-0 flex-1 overflow-hidden\">\n {tab === \"transcript\" ? (\n <SessionViewer\n session={session}\n scrollable\n showRowMetadata\n {...transcriptProps}\n className={transcriptClassName}\n />\n ) : (\n <SessionInspectorPanel\n tab={tab}\n detail={undefined}\n session={session}\n />\n )}\n </div>\n )}\n </main>\n {composer ? <PinnedComposer>{composer}</PinnedComposer> : null}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAoBO,SAAS,uBAAuB;AAAA,EACrC;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,KAAK;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA;AACF,GAWG;AACD,QAAM,UAAU,WAAW;AAC3B,QAAM,CAAC,UAAU,WAAW,IAAI,SAAiC,IAAI;AACrE,QAAM,CAAC,KAAK,MAAM,IAAI;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEF,QAAM,sBAAsB,GAAG,UAAU,mDAAiB,SAAS;AACnE,QAAM,cAAc,cAAc,KAAK;AACvC,QAAM,kBAAkB,YAAY,mBAAmB,OAAO;AAC9D,QAAM,cAAc,UAChB;AAAA,IACE,GAAG;AAAA,IACH,eAAe;AAAA,IACf,UAAU,aAAa,SAAQ,mDAAiB,cAAa;AAAA,EAAA,IAE/D;AACJ,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,UACI,iDACA;AAAA,QACJ;AAAA,MAAA;AAAA,MAGD,UAAA;AAAA,QAAA,UACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAM;AAAA,YACN,WAAW;AAAA,YACX,UAAU,CAAC,SAAS,OAAO,IAA2B;AAAA,YACtD,YAAY;AAAA,YACX,GAAI,kBAAkB,EAAE,UAAU,gBAAA,IAAoB,CAAA;AAAA,YACtD,GAAI,iBAAiB,EAAE,mBAAmB,CAAA;AAAA,UAAC;AAAA,QAAA,IAG9C,oBAAC,eAAA,EAAc,KAAU,MAAM,aAAa,UAAU,QAAQ;AAAA,QAEhE,oBAAC,QAAA,EAAK,WAAU,wDACb,oBACC,qBAAA,UAAA,EACE,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA,QAAQ,gBAAgB;AAAA,cAAA;AAAA,cAG1B,UAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC;AAAA,kBACA,YAAU;AAAA,kBACV,iBAAe;AAAA,kBACd,GAAG;AAAA,kBACJ,WAAW;AAAA,kBACX,YAAY;AAAA,kBACZ,kBAAkB;AAAA,gBAAA;AAAA,cAAA;AAAA,YACpB;AAAA,UAAA;AAAA,UAED,QAAQ,eACP,oBAAC,OAAA,EAAI,WAAU,4CACb,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC;AAAA,cACA,QAAQ;AAAA,cACR;AAAA,YAAA;AAAA,UAAA,GAEJ,IACE;AAAA,QAAA,GACN,IAEA,oBAAC,OAAA,EAAI,WAAU,kCACZ,kBAAQ,eACP;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA,YAAU;AAAA,YACV,iBAAe;AAAA,YACd,GAAG;AAAA,YACJ,WAAW;AAAA,UAAA;AAAA,QAAA,IAGb;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA,QAAQ;AAAA,YACR;AAAA,UAAA;AAAA,QAAA,GAGN,EAAA,CAEJ;AAAA,QACC,WAAW,oBAAC,gBAAA,EAAgB,UAAA,SAAA,CAAS,IAAoB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGhE;"}
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const utils = require("../../lib/utils.cjs");
|
|
5
|
+
const SessionInspector_composerSlot = require("./SessionInspector.composer-slot.cjs");
|
|
5
6
|
function RemoteSessionStatus({
|
|
6
7
|
loading,
|
|
7
8
|
error,
|
|
8
9
|
className,
|
|
10
|
+
composer,
|
|
9
11
|
children
|
|
10
12
|
}) {
|
|
11
13
|
const alert = error ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -22,21 +24,24 @@ function RemoteSessionStatus({
|
|
|
22
24
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-0 flex-1", children })
|
|
23
25
|
] });
|
|
24
26
|
}
|
|
25
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
27
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
26
28
|
"div",
|
|
27
29
|
{
|
|
28
30
|
"aria-busy": loading,
|
|
29
31
|
className: utils.cn(
|
|
30
|
-
"flex h-full min-h-0 w-full flex-col
|
|
32
|
+
"flex h-full min-h-0 w-full flex-col overflow-hidden rounded-xl border border-border bg-background text-sm shadow-sm",
|
|
31
33
|
className
|
|
32
34
|
),
|
|
33
|
-
children:
|
|
34
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
children: [
|
|
36
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-h-0 flex-1 flex-col gap-density-3 overflow-y-auto p-density-4", children: alert ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
37
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: "Loading session…" }),
|
|
38
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-control-h w-1/3 animate-pulse rounded-md bg-muted" }),
|
|
39
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-full animate-pulse rounded bg-muted" }),
|
|
40
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-5/6 animate-pulse rounded bg-muted" }),
|
|
41
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-2/3 animate-pulse rounded bg-muted" })
|
|
42
|
+
] }) }),
|
|
43
|
+
composer ? /* @__PURE__ */ jsxRuntime.jsx(SessionInspector_composerSlot.PinnedComposer, { children: composer }) : null
|
|
44
|
+
]
|
|
40
45
|
}
|
|
41
46
|
);
|
|
42
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionInspector.remote-view.cjs","sources":["../../../src/data/ai/SessionInspector.remote-view.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../../lib/utils\";\n\n/** Loading and error chrome for a SessionInspector fed from a URL. With\n * `children` (a session already loaded) the error sits above it; without,\n * it replaces the inspector: a skeleton while loading, the alert on failure. */\nexport function RemoteSessionStatus({\n loading,\n error,\n className,\n children,\n}: {\n loading: boolean;\n error?: string;\n className?: string;\n children?: ReactNode;\n}) {\n const alert = error ? (\n <div\n role=\"alert\"\n className=\"shrink-0 whitespace-pre-wrap break-words rounded-md border border-destructive/40 bg-destructive/5 px-density-3 py-density-2 text-xs text-destructive\"\n >\n {error}\n </div>\n ) : null;\n if (children) {\n return (\n <div className={cn(\"flex h-full min-h-0 w-full flex-col gap-density-2\", className)}>\n {alert}\n <div className=\"min-h-0 flex-1\">{children}</div>\n </div>\n );\n }\n return (\n <div\n aria-busy={loading}\n className={cn(\n \"flex h-full min-h-0 w-full flex-col
|
|
1
|
+
{"version":3,"file":"SessionInspector.remote-view.cjs","sources":["../../../src/data/ai/SessionInspector.remote-view.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { PinnedComposer } from \"./SessionInspector.composer-slot\";\n\n/** Loading and error chrome for a SessionInspector fed from a URL. With\n * `children` (a session already loaded) the error sits above it; without,\n * it replaces the inspector: a skeleton while loading, the alert on failure.\n * The `composer` slot is rendered pinned below the status even before there is\n * a session, so the input never disappears while loading or after a failure\n * (with `children` the loaded inspector pins the composer itself). */\nexport function RemoteSessionStatus({\n loading,\n error,\n className,\n composer,\n children,\n}: {\n loading: boolean;\n error?: string;\n className?: string;\n composer?: ReactNode;\n children?: ReactNode;\n}) {\n const alert = error ? (\n <div\n role=\"alert\"\n className=\"shrink-0 whitespace-pre-wrap break-words rounded-md border border-destructive/40 bg-destructive/5 px-density-3 py-density-2 text-xs text-destructive\"\n >\n {error}\n </div>\n ) : null;\n if (children) {\n return (\n <div className={cn(\"flex h-full min-h-0 w-full flex-col gap-density-2\", className)}>\n {alert}\n <div className=\"min-h-0 flex-1\">{children}</div>\n </div>\n );\n }\n return (\n <div\n aria-busy={loading}\n className={cn(\n \"flex h-full min-h-0 w-full flex-col overflow-hidden rounded-xl border border-border bg-background text-sm shadow-sm\",\n className,\n )}\n >\n <div className=\"flex min-h-0 flex-1 flex-col gap-density-3 overflow-y-auto p-density-4\">\n {alert ?? (\n <>\n <p className=\"text-xs text-muted-foreground\">Loading session…</p>\n <div className=\"h-control-h w-1/3 animate-pulse rounded-md bg-muted\" />\n <div className=\"h-4 w-full animate-pulse rounded bg-muted\" />\n <div className=\"h-4 w-5/6 animate-pulse rounded bg-muted\" />\n <div className=\"h-4 w-2/3 animate-pulse rounded bg-muted\" />\n </>\n )}\n </div>\n {composer ? <PinnedComposer>{composer}</PinnedComposer> : null}\n </div>\n );\n}\n"],"names":["jsx","cn","jsxs","Fragment","PinnedComposer"],"mappings":";;;;;AAUO,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;AACD,QAAM,QAAQ,QACZA,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAU;AAAA,MAET,UAAA;AAAA,IAAA;AAAA,EAAA,IAED;AACJ,MAAI,UAAU;AACZ,2CACG,OAAA,EAAI,WAAWC,MAAAA,GAAG,qDAAqD,SAAS,GAC9E,UAAA;AAAA,MAAA;AAAA,MACDD,2BAAAA,IAAC,OAAA,EAAI,WAAU,kBAAkB,SAAA,CAAS;AAAA,IAAA,GAC5C;AAAA,EAEJ;AACA,SACEE,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAW;AAAA,MACX,WAAWD,MAAAA;AAAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAGF,UAAA;AAAA,QAAAD,+BAAC,OAAA,EAAI,WAAU,0EACZ,UAAA,SACCE,2BAAAA,KAAAC,qBAAA,EACE,UAAA;AAAA,UAAAH,2BAAAA,IAAC,KAAA,EAAE,WAAU,iCAAgC,UAAA,oBAAgB;AAAA,UAC7DA,2BAAAA,IAAC,OAAA,EAAI,WAAU,sDAAA,CAAsD;AAAA,UACrEA,2BAAAA,IAAC,OAAA,EAAI,WAAU,4CAAA,CAA4C;AAAA,UAC3DA,2BAAAA,IAAC,OAAA,EAAI,WAAU,2CAAA,CAA2C;AAAA,UAC1DA,2BAAAA,IAAC,OAAA,EAAI,WAAU,2CAAA,CAA2C;AAAA,QAAA,EAAA,CAC5D,EAAA,CAEJ;AAAA,QACC,WAAWA,2BAAAA,IAACI,8BAAAA,gBAAA,EAAgB,UAAA,SAAA,CAAS,IAAoB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGhE;;"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
2
|
/** Loading and error chrome for a SessionInspector fed from a URL. With
|
|
3
3
|
* `children` (a session already loaded) the error sits above it; without,
|
|
4
|
-
* it replaces the inspector: a skeleton while loading, the alert on failure.
|
|
5
|
-
|
|
4
|
+
* it replaces the inspector: a skeleton while loading, the alert on failure.
|
|
5
|
+
* The `composer` slot is rendered pinned below the status even before there is
|
|
6
|
+
* a session, so the input never disappears while loading or after a failure
|
|
7
|
+
* (with `children` the loaded inspector pins the composer itself). */
|
|
8
|
+
export declare function RemoteSessionStatus({ loading, error, className, composer, children, }: {
|
|
6
9
|
loading: boolean;
|
|
7
10
|
error?: string;
|
|
8
11
|
className?: string;
|
|
12
|
+
composer?: ReactNode;
|
|
9
13
|
children?: ReactNode;
|
|
10
14
|
}): import("react").JSX.Element;
|
|
11
15
|
//# sourceMappingURL=SessionInspector.remote-view.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionInspector.remote-view.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionInspector.remote-view.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SessionInspector.remote-view.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionInspector.remote-view.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC;;;;;uEAKuE;AACvE,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,KAAK,EACL,SAAS,EACT,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,+BAuCA"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { cn } from "../../lib/utils.js";
|
|
3
|
+
import { PinnedComposer } from "./SessionInspector.composer-slot.js";
|
|
3
4
|
function RemoteSessionStatus({
|
|
4
5
|
loading,
|
|
5
6
|
error,
|
|
6
7
|
className,
|
|
8
|
+
composer,
|
|
7
9
|
children
|
|
8
10
|
}) {
|
|
9
11
|
const alert = error ? /* @__PURE__ */ jsx(
|
|
@@ -20,21 +22,24 @@ function RemoteSessionStatus({
|
|
|
20
22
|
/* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1", children })
|
|
21
23
|
] });
|
|
22
24
|
}
|
|
23
|
-
return /* @__PURE__ */
|
|
25
|
+
return /* @__PURE__ */ jsxs(
|
|
24
26
|
"div",
|
|
25
27
|
{
|
|
26
28
|
"aria-busy": loading,
|
|
27
29
|
className: cn(
|
|
28
|
-
"flex h-full min-h-0 w-full flex-col
|
|
30
|
+
"flex h-full min-h-0 w-full flex-col overflow-hidden rounded-xl border border-border bg-background text-sm shadow-sm",
|
|
29
31
|
className
|
|
30
32
|
),
|
|
31
|
-
children:
|
|
32
|
-
/* @__PURE__ */ jsx("
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
children: [
|
|
34
|
+
/* @__PURE__ */ jsx("div", { className: "flex min-h-0 flex-1 flex-col gap-density-3 overflow-y-auto p-density-4", children: alert ?? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
35
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: "Loading session…" }),
|
|
36
|
+
/* @__PURE__ */ jsx("div", { className: "h-control-h w-1/3 animate-pulse rounded-md bg-muted" }),
|
|
37
|
+
/* @__PURE__ */ jsx("div", { className: "h-4 w-full animate-pulse rounded bg-muted" }),
|
|
38
|
+
/* @__PURE__ */ jsx("div", { className: "h-4 w-5/6 animate-pulse rounded bg-muted" }),
|
|
39
|
+
/* @__PURE__ */ jsx("div", { className: "h-4 w-2/3 animate-pulse rounded bg-muted" })
|
|
40
|
+
] }) }),
|
|
41
|
+
composer ? /* @__PURE__ */ jsx(PinnedComposer, { children: composer }) : null
|
|
42
|
+
]
|
|
38
43
|
}
|
|
39
44
|
);
|
|
40
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionInspector.remote-view.js","sources":["../../../src/data/ai/SessionInspector.remote-view.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../../lib/utils\";\n\n/** Loading and error chrome for a SessionInspector fed from a URL. With\n * `children` (a session already loaded) the error sits above it; without,\n * it replaces the inspector: a skeleton while loading, the alert on failure. */\nexport function RemoteSessionStatus({\n loading,\n error,\n className,\n children,\n}: {\n loading: boolean;\n error?: string;\n className?: string;\n children?: ReactNode;\n}) {\n const alert = error ? (\n <div\n role=\"alert\"\n className=\"shrink-0 whitespace-pre-wrap break-words rounded-md border border-destructive/40 bg-destructive/5 px-density-3 py-density-2 text-xs text-destructive\"\n >\n {error}\n </div>\n ) : null;\n if (children) {\n return (\n <div className={cn(\"flex h-full min-h-0 w-full flex-col gap-density-2\", className)}>\n {alert}\n <div className=\"min-h-0 flex-1\">{children}</div>\n </div>\n );\n }\n return (\n <div\n aria-busy={loading}\n className={cn(\n \"flex h-full min-h-0 w-full flex-col
|
|
1
|
+
{"version":3,"file":"SessionInspector.remote-view.js","sources":["../../../src/data/ai/SessionInspector.remote-view.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { PinnedComposer } from \"./SessionInspector.composer-slot\";\n\n/** Loading and error chrome for a SessionInspector fed from a URL. With\n * `children` (a session already loaded) the error sits above it; without,\n * it replaces the inspector: a skeleton while loading, the alert on failure.\n * The `composer` slot is rendered pinned below the status even before there is\n * a session, so the input never disappears while loading or after a failure\n * (with `children` the loaded inspector pins the composer itself). */\nexport function RemoteSessionStatus({\n loading,\n error,\n className,\n composer,\n children,\n}: {\n loading: boolean;\n error?: string;\n className?: string;\n composer?: ReactNode;\n children?: ReactNode;\n}) {\n const alert = error ? (\n <div\n role=\"alert\"\n className=\"shrink-0 whitespace-pre-wrap break-words rounded-md border border-destructive/40 bg-destructive/5 px-density-3 py-density-2 text-xs text-destructive\"\n >\n {error}\n </div>\n ) : null;\n if (children) {\n return (\n <div className={cn(\"flex h-full min-h-0 w-full flex-col gap-density-2\", className)}>\n {alert}\n <div className=\"min-h-0 flex-1\">{children}</div>\n </div>\n );\n }\n return (\n <div\n aria-busy={loading}\n className={cn(\n \"flex h-full min-h-0 w-full flex-col overflow-hidden rounded-xl border border-border bg-background text-sm shadow-sm\",\n className,\n )}\n >\n <div className=\"flex min-h-0 flex-1 flex-col gap-density-3 overflow-y-auto p-density-4\">\n {alert ?? (\n <>\n <p className=\"text-xs text-muted-foreground\">Loading session…</p>\n <div className=\"h-control-h w-1/3 animate-pulse rounded-md bg-muted\" />\n <div className=\"h-4 w-full animate-pulse rounded bg-muted\" />\n <div className=\"h-4 w-5/6 animate-pulse rounded bg-muted\" />\n <div className=\"h-4 w-2/3 animate-pulse rounded bg-muted\" />\n </>\n )}\n </div>\n {composer ? <PinnedComposer>{composer}</PinnedComposer> : null}\n </div>\n );\n}\n"],"names":[],"mappings":";;;AAUO,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;AACD,QAAM,QAAQ,QACZ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAU;AAAA,MAET,UAAA;AAAA,IAAA;AAAA,EAAA,IAED;AACJ,MAAI,UAAU;AACZ,gCACG,OAAA,EAAI,WAAW,GAAG,qDAAqD,SAAS,GAC9E,UAAA;AAAA,MAAA;AAAA,MACD,oBAAC,OAAA,EAAI,WAAU,kBAAkB,SAAA,CAAS;AAAA,IAAA,GAC5C;AAAA,EAEJ;AACA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAW;AAAA,MACX,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAGF,UAAA;AAAA,QAAA,oBAAC,OAAA,EAAI,WAAU,0EACZ,UAAA,SACC,qBAAA,UAAA,EACE,UAAA;AAAA,UAAA,oBAAC,KAAA,EAAE,WAAU,iCAAgC,UAAA,oBAAgB;AAAA,UAC7D,oBAAC,OAAA,EAAI,WAAU,sDAAA,CAAsD;AAAA,UACrE,oBAAC,OAAA,EAAI,WAAU,4CAAA,CAA4C;AAAA,UAC3D,oBAAC,OAAA,EAAI,WAAU,2CAAA,CAA2C;AAAA,UAC1D,oBAAC,OAAA,EAAI,WAAU,2CAAA,CAA2C;AAAA,QAAA,EAAA,CAC5D,EAAA,CAEJ;AAAA,QACC,WAAW,oBAAC,gBAAA,EAAgB,UAAA,SAAA,CAAS,IAAoB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGhE;"}
|
|
@@ -13,12 +13,15 @@ const TERMINAL_SESSION_LIFECYCLES = [
|
|
|
13
13
|
function isTerminalSessionLifecycle(status) {
|
|
14
14
|
return status !== void 0 && TERMINAL_SESSION_LIFECYCLES.includes(status);
|
|
15
15
|
}
|
|
16
|
-
|
|
16
|
+
const DEFAULT_SESSION_PAGE_SIZE = 100;
|
|
17
|
+
function sessionUrl(src, params) {
|
|
17
18
|
const hashAt = src.indexOf("#");
|
|
18
19
|
const base = hashAt === -1 ? src : src.slice(0, hashAt);
|
|
19
20
|
const hash = hashAt === -1 ? "" : src.slice(hashAt);
|
|
20
|
-
const
|
|
21
|
-
|
|
21
|
+
const queryAt = base.indexOf("?");
|
|
22
|
+
const query = new URLSearchParams(queryAt === -1 ? "" : base.slice(queryAt + 1));
|
|
23
|
+
for (const [name, value] of Object.entries(params)) query.set(name, String(value));
|
|
24
|
+
return `${queryAt === -1 ? base : base.slice(0, queryAt)}?${query}${hash}`;
|
|
22
25
|
}
|
|
23
26
|
async function fetchRemoteSession(src, signal) {
|
|
24
27
|
const response = await fetch(src, {
|
|
@@ -47,7 +50,8 @@ async function fetchRemoteSession(src, signal) {
|
|
|
47
50
|
return parsed;
|
|
48
51
|
}
|
|
49
52
|
function mergeSessionMessages(base, incoming) {
|
|
50
|
-
const
|
|
53
|
+
const real = incoming.some((message) => !message.placeholder);
|
|
54
|
+
const merged = (base ?? []).filter((message) => !(real && message.placeholder));
|
|
51
55
|
for (const message of incoming) {
|
|
52
56
|
const index = merged.findIndex((existing) => existing.id === message.id);
|
|
53
57
|
if (index === -1) merged.push(message);
|
|
@@ -57,10 +61,13 @@ function mergeSessionMessages(base, incoming) {
|
|
|
57
61
|
}
|
|
58
62
|
function openRemoteSession(src, {
|
|
59
63
|
follow,
|
|
64
|
+
pageSize = DEFAULT_SESSION_PAGE_SIZE,
|
|
60
65
|
eventSourceFactory,
|
|
61
66
|
onChange
|
|
62
67
|
}) {
|
|
63
|
-
|
|
68
|
+
let url = sessionUrl(src, { follow: 1 });
|
|
69
|
+
let olderPage;
|
|
70
|
+
let pageError;
|
|
64
71
|
const aborter = new AbortController();
|
|
65
72
|
const streamed = /* @__PURE__ */ new Map();
|
|
66
73
|
let closed = false;
|
|
@@ -84,23 +91,51 @@ function openRemoteSession(src, {
|
|
|
84
91
|
emit({ ...state, loading: false, error: message });
|
|
85
92
|
};
|
|
86
93
|
const refresh = async () => {
|
|
87
|
-
var _a;
|
|
94
|
+
var _a, _b, _c, _d;
|
|
88
95
|
const current = ++generation;
|
|
89
96
|
const startedAt = seq;
|
|
90
|
-
const fetched = await fetchRemoteSession(src, aborter.signal);
|
|
97
|
+
const fetched = await fetchRemoteSession(sessionUrl(src, { tail: pageSize }), aborter.signal);
|
|
91
98
|
if (closed || current !== generation) return void 0;
|
|
92
99
|
const fetchedIds = new Set((_a = fetched.messages) == null ? void 0 : _a.map((message) => message.id));
|
|
93
100
|
const keep = [...streamed.values()].filter((entry) => entry.seq > startedAt || !fetchedIds.has(entry.message.id)).map((entry) => entry.message);
|
|
101
|
+
const held = mergeSessionMessages((_b = state.session) == null ? void 0 : _b.messages, fetched.messages ?? []);
|
|
94
102
|
const session = {
|
|
95
103
|
...fetched,
|
|
96
|
-
messages: mergeSessionMessages(
|
|
104
|
+
messages: mergeSessionMessages(held, keep)
|
|
97
105
|
};
|
|
98
106
|
if (typeof fetched.revision === "number") {
|
|
99
107
|
revision = Math.max(revision ?? fetched.revision, fetched.revision);
|
|
100
108
|
}
|
|
101
|
-
|
|
109
|
+
const hasOlder = state.session === void 0 ? (((_c = fetched.window) == null ? void 0 : _c.messages) ?? 0) > (((_d = fetched.messages) == null ? void 0 : _d.length) ?? 0) : state.hasOlder;
|
|
110
|
+
emit({ ...state, session, loading: false, hasOlder: hasOlder ?? false });
|
|
102
111
|
return session;
|
|
103
112
|
};
|
|
113
|
+
const loadOlder = () => {
|
|
114
|
+
var _a, _b, _c;
|
|
115
|
+
const oldest = (_c = (_b = (_a = state.session) == null ? void 0 : _a.messages) == null ? void 0 : _b[0]) == null ? void 0 : _c.id;
|
|
116
|
+
if (closed || olderPage || !state.hasOlder || !oldest) return olderPage ?? Promise.resolve();
|
|
117
|
+
emit({ ...state, loadingOlder: true });
|
|
118
|
+
olderPage = fetchRemoteSession(sessionUrl(src, { before: oldest, limit: pageSize }), aborter.signal).then((page) => {
|
|
119
|
+
const older = page.messages ?? [];
|
|
120
|
+
const { error, ...rest } = state;
|
|
121
|
+
const session = state.session;
|
|
122
|
+
emit({
|
|
123
|
+
...rest,
|
|
124
|
+
...error !== void 0 && error !== pageError ? { error } : {},
|
|
125
|
+
loadingOlder: false,
|
|
126
|
+
hasOlder: older.length === pageSize,
|
|
127
|
+
session: { ...session, messages: mergeSessionMessages(older, session.messages ?? []) }
|
|
128
|
+
});
|
|
129
|
+
pageError = void 0;
|
|
130
|
+
}).catch((reason) => {
|
|
131
|
+
if (closed) return;
|
|
132
|
+
pageError = errorMessage(reason);
|
|
133
|
+
emit({ ...state, loadingOlder: false, error: pageError });
|
|
134
|
+
}).finally(() => {
|
|
135
|
+
olderPage = void 0;
|
|
136
|
+
});
|
|
137
|
+
return olderPage;
|
|
138
|
+
};
|
|
104
139
|
const readFrame = (event) => {
|
|
105
140
|
try {
|
|
106
141
|
return JSON.parse(event.data);
|
|
@@ -152,6 +187,9 @@ function openRemoteSession(src, {
|
|
|
152
187
|
if (isTerminalSessionLifecycle(next.lifecycleStatus)) stopFollowing();
|
|
153
188
|
};
|
|
154
189
|
const startFollowing = () => {
|
|
190
|
+
var _a, _b, _c;
|
|
191
|
+
const newest = (_c = (_b = (_a = state.session) == null ? void 0 : _a.messages) == null ? void 0 : _b.filter((message) => !message.placeholder).at(-1)) == null ? void 0 : _c.id;
|
|
192
|
+
url = sessionUrl(src, newest ? { follow: 1, after: newest } : { follow: 1 });
|
|
155
193
|
const es = eventSourceFactory(url);
|
|
156
194
|
source = es;
|
|
157
195
|
let received = false;
|
|
@@ -194,6 +232,7 @@ function openRemoteSession(src, {
|
|
|
194
232
|
);
|
|
195
233
|
return {
|
|
196
234
|
loaded,
|
|
235
|
+
loadOlder,
|
|
197
236
|
close: () => {
|
|
198
237
|
closed = true;
|
|
199
238
|
aborter.abort();
|
|
@@ -203,24 +242,51 @@ function openRemoteSession(src, {
|
|
|
203
242
|
}
|
|
204
243
|
const IDLE = { loading: false };
|
|
205
244
|
const LOADING = { loading: true };
|
|
206
|
-
function useRemoteSession(src, { follow } = {}) {
|
|
245
|
+
function useRemoteSession(src, { follow, pageSize } = {}) {
|
|
207
246
|
const eventSourceFactory = eventSource.useEventSourceFactory();
|
|
208
247
|
const factoryRef = react.useRef(eventSourceFactory);
|
|
209
248
|
factoryRef.current = eventSourceFactory;
|
|
249
|
+
const handleRef = react.useRef(void 0);
|
|
210
250
|
const [snapshot, setSnapshot] = react.useState();
|
|
211
251
|
react.useEffect(() => {
|
|
212
252
|
if (src === void 0) return void 0;
|
|
213
253
|
setSnapshot({ src, state: LOADING });
|
|
214
254
|
const handle = openRemoteSession(src, {
|
|
215
255
|
...follow === void 0 ? {} : { follow },
|
|
256
|
+
...pageSize === void 0 ? {} : { pageSize },
|
|
216
257
|
eventSourceFactory: factoryRef.current,
|
|
217
|
-
onChange: (
|
|
258
|
+
onChange: (state2) => setSnapshot({ src, state: state2 })
|
|
218
259
|
});
|
|
260
|
+
handleRef.current = handle;
|
|
219
261
|
handle.loaded.catch(() => void 0);
|
|
220
|
-
return
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
262
|
+
return () => {
|
|
263
|
+
handle.close();
|
|
264
|
+
if (handleRef.current === handle) handleRef.current = void 0;
|
|
265
|
+
};
|
|
266
|
+
}, [src, follow, pageSize]);
|
|
267
|
+
const loadOlder = react.useCallback(() => {
|
|
268
|
+
var _a;
|
|
269
|
+
return ((_a = handleRef.current) == null ? void 0 : _a.loadOlder()) ?? Promise.resolve();
|
|
270
|
+
}, []);
|
|
271
|
+
const state = src === void 0 ? IDLE : (snapshot == null ? void 0 : snapshot.src) === src ? snapshot.state : LOADING;
|
|
272
|
+
return react.useMemo(() => ({ ...state, loadOlder }), [state, loadOlder]);
|
|
273
|
+
}
|
|
274
|
+
function useReportLoadState({
|
|
275
|
+
state,
|
|
276
|
+
enabled,
|
|
277
|
+
onChange
|
|
278
|
+
}) {
|
|
279
|
+
const onChangeRef = react.useRef(onChange);
|
|
280
|
+
onChangeRef.current = onChange;
|
|
281
|
+
const { loading, error } = state;
|
|
282
|
+
react.useEffect(() => {
|
|
283
|
+
var _a;
|
|
284
|
+
if (!enabled) return;
|
|
285
|
+
(_a = onChangeRef.current) == null ? void 0 : _a.call(
|
|
286
|
+
onChangeRef,
|
|
287
|
+
error !== void 0 ? { status: "error", error: new Error(error) } : { status: loading ? "loading" : "ready" }
|
|
288
|
+
);
|
|
289
|
+
}, [enabled, loading, error]);
|
|
224
290
|
}
|
|
225
291
|
function useRemoteCollection(collection, options = {}) {
|
|
226
292
|
const current = collection == null ? void 0 : collection.sessions.find(
|
|
@@ -264,12 +330,14 @@ function errorMessage(reason) {
|
|
|
264
330
|
function isRecord(value) {
|
|
265
331
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
266
332
|
}
|
|
333
|
+
exports.DEFAULT_SESSION_PAGE_SIZE = DEFAULT_SESSION_PAGE_SIZE;
|
|
267
334
|
exports.TERMINAL_SESSION_LIFECYCLES = TERMINAL_SESSION_LIFECYCLES;
|
|
268
335
|
exports.fetchRemoteSession = fetchRemoteSession;
|
|
269
336
|
exports.isTerminalSessionLifecycle = isTerminalSessionLifecycle;
|
|
270
337
|
exports.mergeSessionMessages = mergeSessionMessages;
|
|
271
338
|
exports.openRemoteSession = openRemoteSession;
|
|
272
|
-
exports.
|
|
339
|
+
exports.sessionUrl = sessionUrl;
|
|
273
340
|
exports.useRemoteCollection = useRemoteCollection;
|
|
274
341
|
exports.useRemoteSession = useRemoteSession;
|
|
342
|
+
exports.useReportLoadState = useReportLoadState;
|
|
275
343
|
//# sourceMappingURL=SessionInspector.remote.cjs.map
|