@flanksource/clicky-ui 0.3.46 → 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/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/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/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/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/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/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/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/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/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 +44 -3
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +2 -0
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +45 -4
- package/dist/data.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 +44 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +45 -4
- 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/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
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const utils = require("../../lib/utils.cjs");
|
|
5
|
+
const button = require("../../components/button.cjs");
|
|
6
|
+
const Icon = require("../Icon.cjs");
|
|
7
|
+
const ThreadPicker = require("./ThreadPicker.cjs");
|
|
8
|
+
const ToolPreferences = require("./ToolPreferences.cjs");
|
|
9
|
+
const UiArrowLeft = require("../../icons/components/UiArrowLeft.cjs");
|
|
10
|
+
const UiGitBranch = require("../../icons/components/UiGitBranch.cjs");
|
|
11
|
+
const UiAdd = require("../../icons/components/UiAdd.cjs");
|
|
12
|
+
const UiFullscreen = require("../../icons/components/UiFullscreen.cjs");
|
|
13
|
+
const UiClose = require("../../icons/components/UiClose.cjs");
|
|
14
|
+
function ChatWindowHeader({
|
|
15
|
+
mobile,
|
|
16
|
+
title,
|
|
17
|
+
threadId,
|
|
18
|
+
maximized,
|
|
19
|
+
threadsSource,
|
|
20
|
+
sessionsApi,
|
|
21
|
+
titleRefresh,
|
|
22
|
+
headerExtras,
|
|
23
|
+
toolPreferences,
|
|
24
|
+
hasMessages,
|
|
25
|
+
forkDisabled,
|
|
26
|
+
onSelectThread,
|
|
27
|
+
onNewThread,
|
|
28
|
+
onFork,
|
|
29
|
+
onNewWindow,
|
|
30
|
+
onMaximize,
|
|
31
|
+
onClose
|
|
32
|
+
}) {
|
|
33
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
34
|
+
"div",
|
|
35
|
+
{
|
|
36
|
+
className: utils.cn(
|
|
37
|
+
"flex items-center gap-1 border-b border-border bg-muted/40 px-2 py-1.5",
|
|
38
|
+
!mobile && "chat-drag-handle cursor-move"
|
|
39
|
+
),
|
|
40
|
+
children: [
|
|
41
|
+
mobile && /* @__PURE__ */ jsxRuntime.jsx(
|
|
42
|
+
button.Button,
|
|
43
|
+
{
|
|
44
|
+
variant: "ghost",
|
|
45
|
+
size: "icon",
|
|
46
|
+
title: "Back",
|
|
47
|
+
"aria-label": "Back",
|
|
48
|
+
onClick: onClose,
|
|
49
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiArrowLeft.UiArrowLeft, className: "size-4" })
|
|
50
|
+
}
|
|
51
|
+
),
|
|
52
|
+
threadsSource != null || sessionsApi !== null ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
53
|
+
ThreadPicker.ThreadPicker,
|
|
54
|
+
{
|
|
55
|
+
threadId,
|
|
56
|
+
onSelect: onSelectThread,
|
|
57
|
+
onNew: onNewThread,
|
|
58
|
+
refreshToken: titleRefresh,
|
|
59
|
+
...threadsSource ? { source: threadsSource } : sessionsApi !== null ? { api: sessionsApi } : {}
|
|
60
|
+
}
|
|
61
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 text-sm font-medium", children: title }),
|
|
62
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1" }),
|
|
63
|
+
headerExtras,
|
|
64
|
+
/* @__PURE__ */ jsxRuntime.jsx(ToolPreferences.ToolPreferences, { ...toolPreferences }),
|
|
65
|
+
sessionsApi && /* @__PURE__ */ jsxRuntime.jsx(
|
|
66
|
+
button.Button,
|
|
67
|
+
{
|
|
68
|
+
variant: "ghost",
|
|
69
|
+
size: "icon",
|
|
70
|
+
title: hasMessages ? "Fork conversation into a new window" : "Send a message before forking this conversation",
|
|
71
|
+
disabled: forkDisabled,
|
|
72
|
+
onClick: onFork,
|
|
73
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiGitBranch.UiGitBranch, className: "size-4" })
|
|
74
|
+
}
|
|
75
|
+
),
|
|
76
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
77
|
+
button.Button,
|
|
78
|
+
{
|
|
79
|
+
variant: "ghost",
|
|
80
|
+
size: "icon",
|
|
81
|
+
title: "New window",
|
|
82
|
+
onClick: onNewWindow,
|
|
83
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiAdd.UiAdd, className: "size-4" })
|
|
84
|
+
}
|
|
85
|
+
),
|
|
86
|
+
!mobile && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
87
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
88
|
+
button.Button,
|
|
89
|
+
{
|
|
90
|
+
variant: "ghost",
|
|
91
|
+
size: "icon",
|
|
92
|
+
title: maximized ? "Restore" : "Maximize",
|
|
93
|
+
onClick: onMaximize,
|
|
94
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiFullscreen.UiFullscreen, className: "size-4" })
|
|
95
|
+
}
|
|
96
|
+
),
|
|
97
|
+
/* @__PURE__ */ jsxRuntime.jsx(button.Button, { variant: "ghost", size: "icon", title: "Close", onClick: onClose, children: /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiClose.UiClose, className: "size-4" }) })
|
|
98
|
+
] })
|
|
99
|
+
]
|
|
100
|
+
}
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
exports.ChatWindowHeader = ChatWindowHeader;
|
|
104
|
+
//# sourceMappingURL=ChatWindow.header.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatWindow.header.cjs","sources":["../../../src/data/ai/ChatWindow.header.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../../components/button\";\nimport { Icon } from \"../Icon\";\nimport {\n UiAdd,\n UiArrowLeft,\n UiClose,\n UiFullscreen,\n UiGitBranch,\n} from \"../../icons\";\nimport { ThreadPicker, type ThreadSource } from \"./ThreadPicker\";\nimport { ToolPreferences } from \"./ToolPreferences\";\n\nexport type ChatWindowHeaderProps = {\n /** Below the mobile breakpoint: a back button replaces drag, maximize and close. */\n mobile: boolean;\n title: ReactNode;\n threadId: string | null;\n maximized: boolean;\n threadsSource: ThreadSource | undefined;\n sessionsApi: string | null;\n /** Bumped when a turn settles so the picker re-reads the conversation name. */\n titleRefresh: number;\n headerExtras: ReactNode;\n toolPreferences: ComponentProps<typeof ToolPreferences>;\n hasMessages: boolean;\n forkDisabled: boolean;\n onSelectThread: (threadId: string) => void;\n onNewThread: () => void;\n onFork: () => void;\n onNewWindow: () => void;\n onMaximize: () => void;\n onClose: () => void;\n};\n\n/** The chat window's drag-handle header: thread switcher (or title), host\n * extras, tool/runtime preferences, fork, new window, and — off mobile —\n * maximize and close. */\nexport function ChatWindowHeader({\n mobile,\n title,\n threadId,\n maximized,\n threadsSource,\n sessionsApi,\n titleRefresh,\n headerExtras,\n toolPreferences,\n hasMessages,\n forkDisabled,\n onSelectThread,\n onNewThread,\n onFork,\n onNewWindow,\n onMaximize,\n onClose,\n}: ChatWindowHeaderProps) {\n return (\n <div\n className={cn(\n \"flex items-center gap-1 border-b border-border bg-muted/40 px-2 py-1.5\",\n !mobile && \"chat-drag-handle cursor-move\",\n )}\n >\n {mobile && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n title=\"Back\"\n aria-label=\"Back\"\n onClick={onClose}\n >\n <Icon icon={UiArrowLeft} className=\"size-4\" />\n </Button>\n )}\n {threadsSource != null || sessionsApi !== null ? (\n <ThreadPicker\n threadId={threadId}\n onSelect={onSelectThread}\n onNew={onNewThread}\n refreshToken={titleRefresh}\n {...(threadsSource\n ? { source: threadsSource }\n : sessionsApi !== null\n ? { api: sessionsApi }\n : {})}\n />\n ) : (\n <span className=\"px-1 text-sm font-medium\">{title}</span>\n )}\n <div className=\"flex-1\" />\n {headerExtras}\n <ToolPreferences {...toolPreferences} />\n {sessionsApi && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n title={\n hasMessages\n ? \"Fork conversation into a new window\"\n : \"Send a message before forking this conversation\"\n }\n disabled={forkDisabled}\n onClick={onFork}\n >\n <Icon icon={UiGitBranch} className=\"size-4\" />\n </Button>\n )}\n <Button\n variant=\"ghost\"\n size=\"icon\"\n title=\"New window\"\n onClick={onNewWindow}\n >\n <Icon icon={UiAdd} className=\"size-4\" />\n </Button>\n {!mobile && (\n <>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n title={maximized ? \"Restore\" : \"Maximize\"}\n onClick={onMaximize}\n >\n <Icon icon={UiFullscreen} className=\"size-4\" />\n </Button>\n <Button variant=\"ghost\" size=\"icon\" title=\"Close\" onClick={onClose}>\n <Icon icon={UiClose} className=\"size-4\" />\n </Button>\n </>\n )}\n </div>\n );\n}\n"],"names":["jsxs","cn","jsx","Button","Icon","UiArrowLeft","ThreadPicker","ToolPreferences","UiGitBranch","UiAdd","Fragment","UiFullscreen","UiClose"],"mappings":";;;;;;;;;;;;;AAuCO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA0B;AACxB,SACEA,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,MAAAA;AAAAA,QACT;AAAA,QACA,CAAC,UAAU;AAAA,MAAA;AAAA,MAGZ,UAAA;AAAA,QAAA,UACCC,2BAAAA;AAAAA,UAACC,OAAAA;AAAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,OAAM;AAAA,YACN,cAAW;AAAA,YACX,SAAS;AAAA,YAET,UAAAD,2BAAAA,IAACE,WAAA,EAAK,MAAMC,YAAAA,aAAa,WAAU,SAAA,CAAS;AAAA,UAAA;AAAA,QAAA;AAAA,QAG/C,iBAAiB,QAAQ,gBAAgB,OACxCH,2BAAAA;AAAAA,UAACI,aAAAA;AAAAA,UAAA;AAAA,YACC;AAAA,YACA,UAAU;AAAA,YACV,OAAO;AAAA,YACP,cAAc;AAAA,YACb,GAAI,gBACD,EAAE,QAAQ,cAAA,IACV,gBAAgB,OACd,EAAE,KAAK,gBACP,CAAA;AAAA,UAAC;AAAA,QAAA,IAGTJ,2BAAAA,IAAC,QAAA,EAAK,WAAU,4BAA4B,UAAA,OAAM;AAAA,QAEpDA,2BAAAA,IAAC,OAAA,EAAI,WAAU,SAAA,CAAS;AAAA,QACvB;AAAA,QACDA,2BAAAA,IAACK,gBAAAA,iBAAA,EAAiB,GAAG,iBAAiB;AAAA,QACrC,eACCL,2BAAAA;AAAAA,UAACC,OAAAA;AAAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,OACE,cACI,wCACA;AAAA,YAEN,UAAU;AAAA,YACV,SAAS;AAAA,YAET,UAAAD,2BAAAA,IAACE,WAAA,EAAK,MAAMI,YAAAA,aAAa,WAAU,SAAA,CAAS;AAAA,UAAA;AAAA,QAAA;AAAA,QAGhDN,2BAAAA;AAAAA,UAACC,OAAAA;AAAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,OAAM;AAAA,YACN,SAAS;AAAA,YAET,UAAAD,2BAAAA,IAACE,WAAA,EAAK,MAAMK,MAAAA,OAAO,WAAU,SAAA,CAAS;AAAA,UAAA;AAAA,QAAA;AAAA,QAEvC,CAAC,UACAT,2BAAAA,KAAAU,WAAAA,UAAA,EACE,UAAA;AAAA,UAAAR,2BAAAA;AAAAA,YAACC,OAAAA;AAAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,OAAO,YAAY,YAAY;AAAA,cAC/B,SAAS;AAAA,cAET,UAAAD,2BAAAA,IAACE,WAAA,EAAK,MAAMO,aAAAA,cAAc,WAAU,SAAA,CAAS;AAAA,YAAA;AAAA,UAAA;AAAA,yCAE9CR,OAAAA,QAAA,EAAO,SAAQ,SAAQ,MAAK,QAAO,OAAM,SAAQ,SAAS,SACzD,yCAACC,WAAA,EAAK,MAAMQ,iBAAS,WAAU,UAAS,EAAA,CAC1C;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;;"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ComponentProps, ReactNode } from 'react';
|
|
2
|
+
import { ThreadSource } from './ThreadPicker.js';
|
|
3
|
+
import { ToolPreferences } from './ToolPreferences.js';
|
|
4
|
+
export type ChatWindowHeaderProps = {
|
|
5
|
+
/** Below the mobile breakpoint: a back button replaces drag, maximize and close. */
|
|
6
|
+
mobile: boolean;
|
|
7
|
+
title: ReactNode;
|
|
8
|
+
threadId: string | null;
|
|
9
|
+
maximized: boolean;
|
|
10
|
+
threadsSource: ThreadSource | undefined;
|
|
11
|
+
sessionsApi: string | null;
|
|
12
|
+
/** Bumped when a turn settles so the picker re-reads the conversation name. */
|
|
13
|
+
titleRefresh: number;
|
|
14
|
+
headerExtras: ReactNode;
|
|
15
|
+
toolPreferences: ComponentProps<typeof ToolPreferences>;
|
|
16
|
+
hasMessages: boolean;
|
|
17
|
+
forkDisabled: boolean;
|
|
18
|
+
onSelectThread: (threadId: string) => void;
|
|
19
|
+
onNewThread: () => void;
|
|
20
|
+
onFork: () => void;
|
|
21
|
+
onNewWindow: () => void;
|
|
22
|
+
onMaximize: () => void;
|
|
23
|
+
onClose: () => void;
|
|
24
|
+
};
|
|
25
|
+
/** The chat window's drag-handle header: thread switcher (or title), host
|
|
26
|
+
* extras, tool/runtime preferences, fork, new window, and — off mobile —
|
|
27
|
+
* maximize and close. */
|
|
28
|
+
export declare function ChatWindowHeader({ mobile, title, threadId, maximized, threadsSource, sessionsApi, titleRefresh, headerExtras, toolPreferences, hasMessages, forkDisabled, onSelectThread, onNewThread, onFork, onNewWindow, onMaximize, onClose, }: ChatWindowHeaderProps): import("react").JSX.Element;
|
|
29
|
+
//# sourceMappingURL=ChatWindow.header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatWindow.header.d.ts","sourceRoot":"","sources":["../../../src/data/ai/ChatWindow.header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAWvD,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,MAAM,qBAAqB,GAAG;IAClC,oFAAoF;IACpF,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,YAAY,GAAG,SAAS,CAAC;IACxC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,+EAA+E;IAC/E,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,SAAS,CAAC;IACxB,eAAe,EAAE,cAAc,CAAC,OAAO,eAAe,CAAC,CAAC;IACxD,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF;;0BAE0B;AAC1B,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,KAAK,EACL,QAAQ,EACR,SAAS,EACT,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,EACX,MAAM,EACN,WAAW,EACX,UAAU,EACV,OAAO,GACR,EAAE,qBAAqB,+BA6EvB"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../../lib/utils.js";
|
|
3
|
+
import { Button } from "../../components/button.js";
|
|
4
|
+
import { Icon } from "../Icon.js";
|
|
5
|
+
import { ThreadPicker } from "./ThreadPicker.js";
|
|
6
|
+
import { ToolPreferences } from "./ToolPreferences.js";
|
|
7
|
+
import { UiArrowLeft } from "../../icons/components/UiArrowLeft.js";
|
|
8
|
+
import { UiGitBranch } from "../../icons/components/UiGitBranch.js";
|
|
9
|
+
import { UiAdd } from "../../icons/components/UiAdd.js";
|
|
10
|
+
import { UiFullscreen } from "../../icons/components/UiFullscreen.js";
|
|
11
|
+
import { UiClose } from "../../icons/components/UiClose.js";
|
|
12
|
+
function ChatWindowHeader({
|
|
13
|
+
mobile,
|
|
14
|
+
title,
|
|
15
|
+
threadId,
|
|
16
|
+
maximized,
|
|
17
|
+
threadsSource,
|
|
18
|
+
sessionsApi,
|
|
19
|
+
titleRefresh,
|
|
20
|
+
headerExtras,
|
|
21
|
+
toolPreferences,
|
|
22
|
+
hasMessages,
|
|
23
|
+
forkDisabled,
|
|
24
|
+
onSelectThread,
|
|
25
|
+
onNewThread,
|
|
26
|
+
onFork,
|
|
27
|
+
onNewWindow,
|
|
28
|
+
onMaximize,
|
|
29
|
+
onClose
|
|
30
|
+
}) {
|
|
31
|
+
return /* @__PURE__ */ jsxs(
|
|
32
|
+
"div",
|
|
33
|
+
{
|
|
34
|
+
className: cn(
|
|
35
|
+
"flex items-center gap-1 border-b border-border bg-muted/40 px-2 py-1.5",
|
|
36
|
+
!mobile && "chat-drag-handle cursor-move"
|
|
37
|
+
),
|
|
38
|
+
children: [
|
|
39
|
+
mobile && /* @__PURE__ */ jsx(
|
|
40
|
+
Button,
|
|
41
|
+
{
|
|
42
|
+
variant: "ghost",
|
|
43
|
+
size: "icon",
|
|
44
|
+
title: "Back",
|
|
45
|
+
"aria-label": "Back",
|
|
46
|
+
onClick: onClose,
|
|
47
|
+
children: /* @__PURE__ */ jsx(Icon, { icon: UiArrowLeft, className: "size-4" })
|
|
48
|
+
}
|
|
49
|
+
),
|
|
50
|
+
threadsSource != null || sessionsApi !== null ? /* @__PURE__ */ jsx(
|
|
51
|
+
ThreadPicker,
|
|
52
|
+
{
|
|
53
|
+
threadId,
|
|
54
|
+
onSelect: onSelectThread,
|
|
55
|
+
onNew: onNewThread,
|
|
56
|
+
refreshToken: titleRefresh,
|
|
57
|
+
...threadsSource ? { source: threadsSource } : sessionsApi !== null ? { api: sessionsApi } : {}
|
|
58
|
+
}
|
|
59
|
+
) : /* @__PURE__ */ jsx("span", { className: "px-1 text-sm font-medium", children: title }),
|
|
60
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1" }),
|
|
61
|
+
headerExtras,
|
|
62
|
+
/* @__PURE__ */ jsx(ToolPreferences, { ...toolPreferences }),
|
|
63
|
+
sessionsApi && /* @__PURE__ */ jsx(
|
|
64
|
+
Button,
|
|
65
|
+
{
|
|
66
|
+
variant: "ghost",
|
|
67
|
+
size: "icon",
|
|
68
|
+
title: hasMessages ? "Fork conversation into a new window" : "Send a message before forking this conversation",
|
|
69
|
+
disabled: forkDisabled,
|
|
70
|
+
onClick: onFork,
|
|
71
|
+
children: /* @__PURE__ */ jsx(Icon, { icon: UiGitBranch, className: "size-4" })
|
|
72
|
+
}
|
|
73
|
+
),
|
|
74
|
+
/* @__PURE__ */ jsx(
|
|
75
|
+
Button,
|
|
76
|
+
{
|
|
77
|
+
variant: "ghost",
|
|
78
|
+
size: "icon",
|
|
79
|
+
title: "New window",
|
|
80
|
+
onClick: onNewWindow,
|
|
81
|
+
children: /* @__PURE__ */ jsx(Icon, { icon: UiAdd, className: "size-4" })
|
|
82
|
+
}
|
|
83
|
+
),
|
|
84
|
+
!mobile && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
85
|
+
/* @__PURE__ */ jsx(
|
|
86
|
+
Button,
|
|
87
|
+
{
|
|
88
|
+
variant: "ghost",
|
|
89
|
+
size: "icon",
|
|
90
|
+
title: maximized ? "Restore" : "Maximize",
|
|
91
|
+
onClick: onMaximize,
|
|
92
|
+
children: /* @__PURE__ */ jsx(Icon, { icon: UiFullscreen, className: "size-4" })
|
|
93
|
+
}
|
|
94
|
+
),
|
|
95
|
+
/* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon", title: "Close", onClick: onClose, children: /* @__PURE__ */ jsx(Icon, { icon: UiClose, className: "size-4" }) })
|
|
96
|
+
] })
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
export {
|
|
102
|
+
ChatWindowHeader
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=ChatWindow.header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatWindow.header.js","sources":["../../../src/data/ai/ChatWindow.header.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../../components/button\";\nimport { Icon } from \"../Icon\";\nimport {\n UiAdd,\n UiArrowLeft,\n UiClose,\n UiFullscreen,\n UiGitBranch,\n} from \"../../icons\";\nimport { ThreadPicker, type ThreadSource } from \"./ThreadPicker\";\nimport { ToolPreferences } from \"./ToolPreferences\";\n\nexport type ChatWindowHeaderProps = {\n /** Below the mobile breakpoint: a back button replaces drag, maximize and close. */\n mobile: boolean;\n title: ReactNode;\n threadId: string | null;\n maximized: boolean;\n threadsSource: ThreadSource | undefined;\n sessionsApi: string | null;\n /** Bumped when a turn settles so the picker re-reads the conversation name. */\n titleRefresh: number;\n headerExtras: ReactNode;\n toolPreferences: ComponentProps<typeof ToolPreferences>;\n hasMessages: boolean;\n forkDisabled: boolean;\n onSelectThread: (threadId: string) => void;\n onNewThread: () => void;\n onFork: () => void;\n onNewWindow: () => void;\n onMaximize: () => void;\n onClose: () => void;\n};\n\n/** The chat window's drag-handle header: thread switcher (or title), host\n * extras, tool/runtime preferences, fork, new window, and — off mobile —\n * maximize and close. */\nexport function ChatWindowHeader({\n mobile,\n title,\n threadId,\n maximized,\n threadsSource,\n sessionsApi,\n titleRefresh,\n headerExtras,\n toolPreferences,\n hasMessages,\n forkDisabled,\n onSelectThread,\n onNewThread,\n onFork,\n onNewWindow,\n onMaximize,\n onClose,\n}: ChatWindowHeaderProps) {\n return (\n <div\n className={cn(\n \"flex items-center gap-1 border-b border-border bg-muted/40 px-2 py-1.5\",\n !mobile && \"chat-drag-handle cursor-move\",\n )}\n >\n {mobile && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n title=\"Back\"\n aria-label=\"Back\"\n onClick={onClose}\n >\n <Icon icon={UiArrowLeft} className=\"size-4\" />\n </Button>\n )}\n {threadsSource != null || sessionsApi !== null ? (\n <ThreadPicker\n threadId={threadId}\n onSelect={onSelectThread}\n onNew={onNewThread}\n refreshToken={titleRefresh}\n {...(threadsSource\n ? { source: threadsSource }\n : sessionsApi !== null\n ? { api: sessionsApi }\n : {})}\n />\n ) : (\n <span className=\"px-1 text-sm font-medium\">{title}</span>\n )}\n <div className=\"flex-1\" />\n {headerExtras}\n <ToolPreferences {...toolPreferences} />\n {sessionsApi && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n title={\n hasMessages\n ? \"Fork conversation into a new window\"\n : \"Send a message before forking this conversation\"\n }\n disabled={forkDisabled}\n onClick={onFork}\n >\n <Icon icon={UiGitBranch} className=\"size-4\" />\n </Button>\n )}\n <Button\n variant=\"ghost\"\n size=\"icon\"\n title=\"New window\"\n onClick={onNewWindow}\n >\n <Icon icon={UiAdd} className=\"size-4\" />\n </Button>\n {!mobile && (\n <>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n title={maximized ? \"Restore\" : \"Maximize\"}\n onClick={onMaximize}\n >\n <Icon icon={UiFullscreen} className=\"size-4\" />\n </Button>\n <Button variant=\"ghost\" size=\"icon\" title=\"Close\" onClick={onClose}>\n <Icon icon={UiClose} className=\"size-4\" />\n </Button>\n </>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAuCO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA0B;AACxB,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,CAAC,UAAU;AAAA,MAAA;AAAA,MAGZ,UAAA;AAAA,QAAA,UACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,OAAM;AAAA,YACN,cAAW;AAAA,YACX,SAAS;AAAA,YAET,UAAA,oBAAC,MAAA,EAAK,MAAM,aAAa,WAAU,SAAA,CAAS;AAAA,UAAA;AAAA,QAAA;AAAA,QAG/C,iBAAiB,QAAQ,gBAAgB,OACxC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA,UAAU;AAAA,YACV,OAAO;AAAA,YACP,cAAc;AAAA,YACb,GAAI,gBACD,EAAE,QAAQ,cAAA,IACV,gBAAgB,OACd,EAAE,KAAK,gBACP,CAAA;AAAA,UAAC;AAAA,QAAA,IAGT,oBAAC,QAAA,EAAK,WAAU,4BAA4B,UAAA,OAAM;AAAA,QAEpD,oBAAC,OAAA,EAAI,WAAU,SAAA,CAAS;AAAA,QACvB;AAAA,QACD,oBAAC,iBAAA,EAAiB,GAAG,iBAAiB;AAAA,QACrC,eACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,OACE,cACI,wCACA;AAAA,YAEN,UAAU;AAAA,YACV,SAAS;AAAA,YAET,UAAA,oBAAC,MAAA,EAAK,MAAM,aAAa,WAAU,SAAA,CAAS;AAAA,UAAA;AAAA,QAAA;AAAA,QAGhD;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,OAAM;AAAA,YACN,SAAS;AAAA,YAET,UAAA,oBAAC,MAAA,EAAK,MAAM,OAAO,WAAU,SAAA,CAAS;AAAA,UAAA;AAAA,QAAA;AAAA,QAEvC,CAAC,UACA,qBAAA,UAAA,EACE,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,OAAO,YAAY,YAAY;AAAA,cAC/B,SAAS;AAAA,cAET,UAAA,oBAAC,MAAA,EAAK,MAAM,cAAc,WAAU,SAAA,CAAS;AAAA,YAAA;AAAA,UAAA;AAAA,8BAE9C,QAAA,EAAO,SAAQ,SAAQ,MAAK,QAAO,OAAM,SAAQ,SAAS,SACzD,8BAAC,MAAA,EAAK,MAAM,SAAS,WAAU,UAAS,EAAA,CAC1C;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useState, useRef, useEffect, useMemo, useCallback } from "react";
|
|
3
3
|
import { cn } from "../../lib/utils.js";
|
|
4
|
-
import {
|
|
5
|
-
import { Icon } from "../Icon.js";
|
|
4
|
+
import { useMediaQuery } from "../../hooks/use-media-query.js";
|
|
6
5
|
import { Chat } from "../chat/Chat.js";
|
|
7
6
|
import { forkChatSession } from "../chat/approval.js";
|
|
8
7
|
import { useChatWindowManager } from "./chat-window-context.js";
|
|
9
|
-
import {
|
|
8
|
+
import { ChatWindowHeader } from "./ChatWindow.header.js";
|
|
10
9
|
import { ContextBadges } from "./ContextBadges.js";
|
|
11
|
-
import { ToolPreferences } from "./ToolPreferences.js";
|
|
12
10
|
import { chatWindowRequestBody } from "./ChatWindowRequestBody.js";
|
|
13
11
|
import { loadChatPreferences, saveChatPreferences } from "./ChatWindow.preferences.js";
|
|
14
12
|
import { useChatWindowRuntime } from "./ChatWindow.runtime.js";
|
|
@@ -17,19 +15,8 @@ import { normalizeToolCatalog } from "./ChatWindow.tool-catalog.js";
|
|
|
17
15
|
import { effectiveToolPolicies, withUserRule } from "./ToolPreferences.model.js";
|
|
18
16
|
import { useChatThreadSetup } from "./ChatWindow.thread.js";
|
|
19
17
|
import { ChatThreadSetupStatus } from "./ChatWindow.thread-status.js";
|
|
20
|
-
import {
|
|
21
|
-
import { UiAdd } from "../../icons/components/UiAdd.js";
|
|
22
|
-
import { UiFullscreen } from "../../icons/components/UiFullscreen.js";
|
|
23
|
-
import { UiClose } from "../../icons/components/UiClose.js";
|
|
18
|
+
import { CHAT_WINDOW_MOBILE_QUERY, ChatWindowSheet, ChatWindowFloating } from "./ChatWindow.placement.js";
|
|
24
19
|
const EMPTY_TOOLS = [];
|
|
25
|
-
const MAXIMIZE_CSS = `
|
|
26
|
-
.chat-maximized .react-draggable {
|
|
27
|
-
transform: none !important;
|
|
28
|
-
width: auto !important;
|
|
29
|
-
height: auto !important;
|
|
30
|
-
inset: 0 !important;
|
|
31
|
-
position: absolute !important;
|
|
32
|
-
}`;
|
|
33
20
|
function ChatWindow({
|
|
34
21
|
panel,
|
|
35
22
|
chat,
|
|
@@ -46,7 +33,15 @@ function ChatWindow({
|
|
|
46
33
|
renderContextPicker
|
|
47
34
|
}) {
|
|
48
35
|
var _a;
|
|
49
|
-
const {
|
|
36
|
+
const {
|
|
37
|
+
panels,
|
|
38
|
+
updatePanel,
|
|
39
|
+
closePanel,
|
|
40
|
+
bringToFront,
|
|
41
|
+
maximizePanel,
|
|
42
|
+
openPanel
|
|
43
|
+
} = useChatWindowManager();
|
|
44
|
+
const mobile = useMediaQuery(CHAT_WINDOW_MOBILE_QUERY);
|
|
50
45
|
const threadSetup = useChatThreadSetup({
|
|
51
46
|
threadId: panel.threadId,
|
|
52
47
|
api: sessionsApi,
|
|
@@ -163,6 +158,7 @@ function ChatWindow({
|
|
|
163
158
|
setUserToolRules((prev) => withUserRule(prev, rule));
|
|
164
159
|
}, []);
|
|
165
160
|
useEffect(() => {
|
|
161
|
+
if (mobile) return;
|
|
166
162
|
let active = true;
|
|
167
163
|
import("react-rnd").then((m) => {
|
|
168
164
|
if (active) setRnd(() => m.Rnd);
|
|
@@ -170,7 +166,7 @@ function ChatWindow({
|
|
|
170
166
|
return () => {
|
|
171
167
|
active = false;
|
|
172
168
|
};
|
|
173
|
-
}, []);
|
|
169
|
+
}, [mobile]);
|
|
174
170
|
const removeContext = useCallback(
|
|
175
171
|
(id) => updatePanel(panel.id, {
|
|
176
172
|
contextItems: panel.contextItems.filter((c) => c.id !== id)
|
|
@@ -263,22 +259,18 @@ function ChatWindow({
|
|
|
263
259
|
setForking(false);
|
|
264
260
|
}
|
|
265
261
|
}, [forking, messageCount, openPanel, panel.threadId, sessionsApi]);
|
|
266
|
-
const header = /* @__PURE__ */
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
headerExtras,
|
|
279
|
-
/* @__PURE__ */ jsx(
|
|
280
|
-
ToolPreferences,
|
|
281
|
-
{
|
|
262
|
+
const header = /* @__PURE__ */ jsx(
|
|
263
|
+
ChatWindowHeader,
|
|
264
|
+
{
|
|
265
|
+
mobile,
|
|
266
|
+
title,
|
|
267
|
+
threadId: panel.threadId,
|
|
268
|
+
maximized: panel.maximized,
|
|
269
|
+
threadsSource,
|
|
270
|
+
sessionsApi,
|
|
271
|
+
titleRefresh,
|
|
272
|
+
headerExtras,
|
|
273
|
+
toolPreferences: {
|
|
282
274
|
tools: resolvedTools,
|
|
283
275
|
value: toolPrefs,
|
|
284
276
|
onRule: handleToolRule,
|
|
@@ -301,153 +293,96 @@ function ChatWindow({
|
|
|
301
293
|
catalogLoading,
|
|
302
294
|
catalogError,
|
|
303
295
|
onCatalogRetry: retryCatalogs
|
|
304
|
-
}
|
|
305
|
-
),
|
|
306
|
-
sessionsApi && /* @__PURE__ */ jsx(
|
|
307
|
-
Button,
|
|
308
|
-
{
|
|
309
|
-
variant: "ghost",
|
|
310
|
-
size: "icon",
|
|
311
|
-
title: messageCount === 0 ? "Send a message before forking this conversation" : "Fork conversation into a new window",
|
|
312
|
-
disabled: !panel.threadId || messageCount === 0 || forking,
|
|
313
|
-
onClick: () => void handleFork(),
|
|
314
|
-
children: /* @__PURE__ */ jsx(Icon, { icon: UiGitBranch, className: "size-4" })
|
|
315
|
-
}
|
|
316
|
-
),
|
|
317
|
-
/* @__PURE__ */ jsx(
|
|
318
|
-
Button,
|
|
319
|
-
{
|
|
320
|
-
variant: "ghost",
|
|
321
|
-
size: "icon",
|
|
322
|
-
title: "New window",
|
|
323
|
-
onClick: () => openPanel(),
|
|
324
|
-
children: /* @__PURE__ */ jsx(Icon, { icon: UiAdd, className: "size-4" })
|
|
325
|
-
}
|
|
326
|
-
),
|
|
327
|
-
/* @__PURE__ */ jsx(
|
|
328
|
-
Button,
|
|
329
|
-
{
|
|
330
|
-
variant: "ghost",
|
|
331
|
-
size: "icon",
|
|
332
|
-
title: panel.maximized ? "Restore" : "Maximize",
|
|
333
|
-
onClick: () => maximizePanel(panel.id),
|
|
334
|
-
children: /* @__PURE__ */ jsx(Icon, { icon: UiFullscreen, className: "size-4" })
|
|
335
|
-
}
|
|
336
|
-
),
|
|
337
|
-
/* @__PURE__ */ jsx(
|
|
338
|
-
Button,
|
|
339
|
-
{
|
|
340
|
-
variant: "ghost",
|
|
341
|
-
size: "icon",
|
|
342
|
-
title: "Close",
|
|
343
|
-
onClick: () => closePanel(panel.id),
|
|
344
|
-
children: /* @__PURE__ */ jsx(Icon, { icon: UiClose, className: "size-4" })
|
|
345
|
-
}
|
|
346
|
-
)
|
|
347
|
-
] });
|
|
348
|
-
const frame = /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col overflow-hidden rounded-lg border border-border bg-background shadow-xl", children: [
|
|
349
|
-
header,
|
|
350
|
-
(renderContextPicker || panel.contextItems.length > 0) && /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-1.5 border-b border-border px-2 py-1.5", children: [
|
|
351
|
-
renderContextPicker == null ? void 0 : renderContextPicker({
|
|
352
|
-
items: panel.contextItems,
|
|
353
|
-
onAdd: addContext,
|
|
354
|
-
onAddMany: addContextItems
|
|
355
|
-
}),
|
|
356
|
-
/* @__PURE__ */ jsx(
|
|
357
|
-
ContextBadges,
|
|
358
|
-
{
|
|
359
|
-
items: panel.contextItems,
|
|
360
|
-
onRemove: removeContext,
|
|
361
|
-
className: "px-0 py-0",
|
|
362
|
-
...contextTypeConfig ? { typeConfig: contextTypeConfig } : {}
|
|
363
|
-
}
|
|
364
|
-
)
|
|
365
|
-
] }),
|
|
366
|
-
/* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1", children: threadSetup.blocked ? /* @__PURE__ */ jsx(ChatThreadSetupStatus, { setup: threadSetup }) : /* @__PURE__ */ jsx(
|
|
367
|
-
Chat,
|
|
368
|
-
{
|
|
369
|
-
...chat,
|
|
370
|
-
...resolvedModels.length ? { models: resolvedModels, modelsApi: null } : {},
|
|
371
|
-
runtime,
|
|
372
|
-
...runtimeFamilies ? { runtimeFamilies } : {},
|
|
373
|
-
permissionMode,
|
|
374
|
-
onRuntimeChange: handleRuntimeChange,
|
|
375
|
-
onModelChange: handleModelChange,
|
|
376
|
-
onReasoningEffortChange: handleReasoningEffortChange,
|
|
377
|
-
budget,
|
|
378
|
-
onUsage: handleUsage,
|
|
379
|
-
runtimeLocked,
|
|
380
|
-
onMessageCountChange: handleMessageCountChange,
|
|
381
|
-
onSessionHydrated: handleSessionHydrated,
|
|
382
|
-
...panel.threadId ? { threadId: panel.threadId } : {},
|
|
383
|
-
sessionsApi,
|
|
384
|
-
tools: resolvedTools,
|
|
385
|
-
...toolRenderers ? { toolRenderers } : {},
|
|
386
|
-
body: mergedBody,
|
|
387
|
-
initialPrompt,
|
|
388
|
-
onInitialPromptConsumed: handleInitialPromptConsumed,
|
|
389
|
-
proposedPrompts,
|
|
390
|
-
onProposedPromptsConsumed: handleProposedPromptsConsumed
|
|
391
296
|
},
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
297
|
+
hasMessages: messageCount > 0,
|
|
298
|
+
forkDisabled: !panel.threadId || messageCount === 0 || forking,
|
|
299
|
+
onSelectThread: (threadId) => updatePanel(panel.id, { threadId }),
|
|
300
|
+
onNewThread: () => updatePanel(panel.id, { threadId: null }),
|
|
301
|
+
onFork: () => void handleFork(),
|
|
302
|
+
onNewWindow: () => openPanel(),
|
|
303
|
+
onMaximize: () => maximizePanel(panel.id),
|
|
304
|
+
onClose: () => closePanel(panel.id)
|
|
305
|
+
}
|
|
398
306
|
);
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
307
|
+
const frame = /* @__PURE__ */ jsxs(
|
|
308
|
+
"div",
|
|
309
|
+
{
|
|
310
|
+
className: cn(
|
|
311
|
+
"flex h-full flex-col overflow-hidden bg-background",
|
|
312
|
+
!mobile && "rounded-lg border border-border shadow-xl"
|
|
313
|
+
),
|
|
314
|
+
children: [
|
|
315
|
+
header,
|
|
316
|
+
(renderContextPicker || panel.contextItems.length > 0) && /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-1.5 border-b border-border px-2 py-1.5", children: [
|
|
317
|
+
renderContextPicker == null ? void 0 : renderContextPicker({
|
|
318
|
+
items: panel.contextItems,
|
|
319
|
+
onAdd: addContext,
|
|
320
|
+
onAddMany: addContextItems
|
|
321
|
+
}),
|
|
322
|
+
/* @__PURE__ */ jsx(
|
|
323
|
+
ContextBadges,
|
|
324
|
+
{
|
|
325
|
+
items: panel.contextItems,
|
|
326
|
+
onRemove: removeContext,
|
|
327
|
+
className: "px-0 py-0",
|
|
328
|
+
...contextTypeConfig ? { typeConfig: contextTypeConfig } : {}
|
|
329
|
+
}
|
|
330
|
+
)
|
|
331
|
+
] }),
|
|
332
|
+
/* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1", children: threadSetup.blocked ? /* @__PURE__ */ jsx(ChatThreadSetupStatus, { setup: threadSetup }) : /* @__PURE__ */ jsx(
|
|
333
|
+
Chat,
|
|
334
|
+
{
|
|
335
|
+
...chat,
|
|
336
|
+
...resolvedModels.length ? { models: resolvedModels, modelsApi: null } : {},
|
|
337
|
+
runtime,
|
|
338
|
+
...runtimeFamilies ? { runtimeFamilies } : {},
|
|
339
|
+
permissionMode,
|
|
340
|
+
onRuntimeChange: handleRuntimeChange,
|
|
341
|
+
onModelChange: handleModelChange,
|
|
342
|
+
onReasoningEffortChange: handleReasoningEffortChange,
|
|
343
|
+
budget,
|
|
344
|
+
onUsage: handleUsage,
|
|
345
|
+
runtimeLocked,
|
|
346
|
+
onMessageCountChange: handleMessageCountChange,
|
|
347
|
+
onSessionHydrated: handleSessionHydrated,
|
|
348
|
+
...panel.threadId ? { threadId: panel.threadId } : {},
|
|
349
|
+
sessionsApi,
|
|
350
|
+
tools: resolvedTools,
|
|
351
|
+
...toolRenderers ? { toolRenderers } : {},
|
|
352
|
+
body: mergedBody,
|
|
353
|
+
initialPrompt,
|
|
354
|
+
onInitialPromptConsumed: handleInitialPromptConsumed,
|
|
355
|
+
proposedPrompts,
|
|
356
|
+
onProposedPromptsConsumed: handleProposedPromptsConsumed
|
|
357
|
+
},
|
|
358
|
+
panel.threadId ?? `new-${panel.id}`
|
|
359
|
+
) })
|
|
360
|
+
]
|
|
361
|
+
}
|
|
362
|
+
);
|
|
363
|
+
const layerStyle = { zIndex: panel.zIndex };
|
|
364
|
+
if (mobile) {
|
|
365
|
+
const front = panels.reduce((top, p) => p.zIndex >= top.zIndex ? p : top);
|
|
366
|
+
return /* @__PURE__ */ jsx(ChatWindowSheet, { layerStyle, hidden: front.id !== panel.id, children: frame });
|
|
414
367
|
}
|
|
415
|
-
return /* @__PURE__ */
|
|
416
|
-
|
|
417
|
-
|
|
368
|
+
return /* @__PURE__ */ jsx(
|
|
369
|
+
ChatWindowFloating,
|
|
370
|
+
{
|
|
371
|
+
panel,
|
|
372
|
+
layerStyle,
|
|
418
373
|
Rnd,
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
height: panel.height
|
|
425
|
-
},
|
|
426
|
-
style: { pointerEvents: "auto" },
|
|
427
|
-
minWidth: Math.min(360, Math.max(1, window.innerWidth - 32)),
|
|
428
|
-
minHeight: Math.min(400, Math.max(1, window.innerHeight - 32)),
|
|
429
|
-
bounds: "parent",
|
|
430
|
-
dragHandleClassName: "chat-drag-handle",
|
|
431
|
-
disableDragging: panel.maximized,
|
|
432
|
-
enableResizing: !panel.maximized,
|
|
433
|
-
onDragStart: () => bringToFront(panel.id),
|
|
434
|
-
onDragStop: (_e, d) => updatePanel(panel.id, { x: d.x, y: d.y }),
|
|
435
|
-
onResizeStop: (_e, _dir, ref, _delta, pos) => updatePanel(panel.id, {
|
|
436
|
-
width: ref.offsetWidth,
|
|
437
|
-
height: ref.offsetHeight,
|
|
438
|
-
x: pos.x,
|
|
439
|
-
y: pos.y
|
|
440
|
-
}),
|
|
441
|
-
children: frame
|
|
442
|
-
}
|
|
443
|
-
)
|
|
444
|
-
] });
|
|
374
|
+
onDragStart: () => bringToFront(panel.id),
|
|
375
|
+
onGeometryChange: (partial) => updatePanel(panel.id, partial),
|
|
376
|
+
children: frame
|
|
377
|
+
}
|
|
378
|
+
);
|
|
445
379
|
}
|
|
446
380
|
function ChatWindowLayer(props) {
|
|
447
381
|
const { panels } = useChatWindowManager();
|
|
448
382
|
return /* @__PURE__ */ jsx(Fragment, { children: panels.map((panel) => /* @__PURE__ */ jsx(ChatWindow, { panel, ...props }, panel.id)) });
|
|
449
383
|
}
|
|
450
384
|
export {
|
|
385
|
+
CHAT_WINDOW_MOBILE_QUERY,
|
|
451
386
|
ChatWindow,
|
|
452
387
|
ChatWindowLayer
|
|
453
388
|
};
|