@parallelworks/ui 0.43.0 → 0.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +348 -25
- package/dist/ai/agent/diff.d.ts +2 -1
- package/dist/ai/agent/diff.js +4 -12
- package/dist/ai/agent/diffHighlight.d.ts +1 -1
- package/dist/ai/agent/diffHighlight.js +4 -3
- package/dist/ai/agent/index.d.ts +2 -1
- package/dist/ai/agent/toolStrings.d.ts +37 -0
- package/dist/ai/agent/toolStrings.js +35 -0
- package/dist/ai/agent/toolfmt.d.ts +8 -3
- package/dist/ai/agent/toolfmt.js +50 -65
- package/dist/ai/ai.css +18 -31
- package/dist/ai/components/AllocationSelector.js +2 -2
- package/dist/ai/components/AttachmentManager.js +28 -29
- package/dist/ai/components/AttachmentUpload.js +25 -30
- package/dist/ai/components/BlockedGroupBanner.js +2 -2
- package/dist/ai/components/BranchNavigator.js +3 -4
- package/dist/ai/components/ChatEmptyState.js +8 -7
- package/dist/ai/components/ChatInput.js +10 -12
- package/dist/ai/components/ChatLayout.js +3 -3
- package/dist/ai/components/ChatMessage.js +49 -61
- package/dist/ai/components/ChatMessageList.js +46 -42
- package/dist/ai/components/ChatSidebar.js +26 -34
- package/dist/ai/components/ChatStage.js +1 -1
- package/dist/ai/components/ComposerChrome.js +3 -4
- package/dist/ai/components/DragOverlay.js +6 -4
- package/dist/ai/components/ModelSelector.js +14 -15
- package/dist/ai/components/PastedText.js +18 -14
- package/dist/ai/components/ProviderIssueBanner.js +3 -4
- package/dist/ai/components/Reasoning.d.ts +12 -6
- package/dist/ai/components/Reasoning.js +31 -18
- package/dist/ai/components/ShareDialog.js +25 -28
- package/dist/ai/components/SlashMenu.js +3 -3
- package/dist/ai/components/agent/ActivityLine.d.ts +0 -5
- package/dist/ai/components/agent/ActivityLine.js +17 -54
- package/dist/ai/components/agent/AgentMessageParts.js +139 -149
- package/dist/ai/components/conversationActions.js +16 -16
- package/dist/ai/core/ChatProvider.d.ts +2 -4
- package/dist/ai/core/ChatProvider.js +25 -38
- package/dist/ai/core/exportConversation.js +4 -4
- package/dist/ai/core/sidebarState.d.ts +8 -6
- package/dist/ai/core/sidebarState.js +21 -28
- package/dist/ai/core/useKeyboardShortcuts.js +14 -5
- package/dist/ai/index.d.ts +4 -5
- package/dist/ai/index.js +7 -7
- package/dist/ai/strings.d.ts +14 -31
- package/dist/ai/strings.js +19 -39
- package/dist/ai/types.d.ts +0 -5
- package/dist/ai/ui/ConversationSidebar.d.ts +12 -9
- package/dist/ai/ui/ConversationSidebar.js +43 -87
- package/dist/ai/ui/Markdown.d.ts +3 -6
- package/dist/ai/ui/Markdown.js +6 -73
- package/dist/ai/ui/Notice.js +10 -12
- package/dist/ai/ui/chip.d.ts +2 -2
- package/dist/ai/ui/chip.js +1 -1
- package/dist/ai/ui/sidebar.d.ts +4 -20
- package/dist/ai/ui/sidebar.js +30 -67
- package/dist/ai/utils.d.ts +0 -1
- package/dist/ai/utils.js +1 -14
- package/dist/brandIcons.d.ts +51 -0
- package/dist/brandIcons.js +75 -0
- package/dist/components/Avatar.d.ts +3 -1
- package/dist/components/Avatar.js +34 -28
- package/dist/components/Button.d.ts +12 -7
- package/dist/components/Button.js +39 -44
- package/dist/components/Callout.js +18 -12
- package/dist/components/Card.d.ts +18 -8
- package/dist/components/Card.js +17 -6
- package/dist/components/Checkbox.d.ts +9 -0
- package/dist/components/Checkbox.js +30 -0
- package/dist/components/Combobox.d.ts +9 -1
- package/dist/components/Combobox.js +71 -44
- package/dist/components/ConfirmModal.js +11 -11
- package/dist/components/ContextMenu.d.ts +2 -8
- package/dist/components/ContextMenu.js +2 -29
- package/dist/components/CopyToClipboard.js +17 -36
- package/dist/components/CreateModal.d.ts +3 -24
- package/dist/components/CreateModal.js +46 -113
- package/dist/components/DatePicker.d.ts +31 -0
- package/dist/components/DatePicker.js +191 -0
- package/dist/components/DescriptionList.js +4 -4
- package/dist/components/Disclosure.d.ts +34 -0
- package/dist/components/Disclosure.js +46 -0
- package/dist/components/Drawer.d.ts +47 -0
- package/dist/components/Drawer.js +120 -0
- package/dist/components/EmptyState.d.ts +15 -10
- package/dist/components/EmptyState.js +13 -8
- package/dist/components/ExternalLink.d.ts +8 -0
- package/dist/components/ExternalLink.js +29 -0
- package/dist/components/Field.d.ts +70 -0
- package/dist/components/Field.js +159 -0
- package/dist/components/HoverCard.js +11 -14
- package/dist/components/IconButton.d.ts +16 -13
- package/dist/components/IconButton.js +27 -18
- package/dist/components/InfoTip.js +16 -23
- package/dist/components/Input.d.ts +10 -9
- package/dist/components/Input.js +54 -96
- package/dist/components/LetterBadge.js +2 -2
- package/dist/components/Loader.d.ts +15 -8
- package/dist/components/Loader.js +29 -19
- package/dist/components/Markdown.d.ts +7 -1
- package/dist/components/Markdown.js +2 -0
- package/dist/components/MarkdownImpl.d.ts +1 -1
- package/dist/components/MarkdownImpl.js +55 -14
- package/dist/components/Menu.js +13 -15
- package/dist/components/MenuEntries.js +11 -16
- package/dist/components/Meter.d.ts +48 -0
- package/dist/components/Meter.js +94 -0
- package/dist/components/Modal.js +11 -14
- package/dist/components/NumberInput.d.ts +25 -0
- package/dist/components/NumberInput.js +55 -0
- package/dist/components/Overview.js +12 -10
- package/dist/components/PageHeader.d.ts +2 -3
- package/dist/components/PageHeader.js +30 -21
- package/dist/components/Pagination.d.ts +27 -14
- package/dist/components/Pagination.js +86 -25
- package/dist/components/Popover.d.ts +47 -0
- package/dist/components/Popover.js +63 -0
- package/dist/components/Provider.d.ts +197 -80
- package/dist/components/Provider.js +200 -118
- package/dist/components/Radio.d.ts +1 -1
- package/dist/components/Radio.js +4 -4
- package/dist/components/RefreshButton.d.ts +15 -0
- package/dist/components/RefreshButton.js +53 -0
- package/dist/components/RunStatusIcon.d.ts +12 -0
- package/dist/components/RunStatusIcon.js +84 -0
- package/dist/components/SearchInput.d.ts +16 -0
- package/dist/components/SearchInput.js +52 -0
- package/dist/components/Section.d.ts +28 -0
- package/dist/components/Section.js +76 -0
- package/dist/components/SegmentedControl.d.ts +7 -11
- package/dist/components/SegmentedControl.js +25 -56
- package/dist/components/Select.d.ts +8 -1
- package/dist/components/Select.js +47 -43
- package/dist/components/SettingModeOption.d.ts +3 -5
- package/dist/components/SettingModeOption.js +5 -6
- package/dist/components/SettingsCard.d.ts +32 -19
- package/dist/components/SettingsCard.js +40 -13
- package/dist/components/Skeleton.d.ts +22 -0
- package/dist/components/Skeleton.js +34 -0
- package/dist/components/Slider.d.ts +16 -0
- package/dist/components/Slider.js +30 -0
- package/dist/components/Sort.js +4 -6
- package/dist/components/StatusBadge.d.ts +3 -1
- package/dist/components/StatusBadge.js +9 -32
- package/dist/components/StatusIcons.d.ts +0 -4
- package/dist/components/StatusIcons.js +5 -13
- package/dist/components/Switch.d.ts +5 -1
- package/dist/components/Switch.js +23 -6
- package/dist/components/Table.js +13 -20
- package/dist/components/Tabs.d.ts +52 -0
- package/dist/components/Tabs.js +75 -0
- package/dist/components/ThemeEditor.d.ts +29 -0
- package/dist/components/ThemeEditor.js +397 -0
- package/dist/components/Toast.d.ts +57 -0
- package/dist/components/Toast.js +203 -0
- package/dist/components/Tooltip.js +12 -15
- package/dist/components/buttonClasses.d.ts +18 -0
- package/dist/components/buttonClasses.js +31 -0
- package/dist/components/codeTheme.d.ts +5 -0
- package/dist/components/codeTheme.js +93 -0
- package/dist/components/fieldBox.d.ts +14 -0
- package/dist/components/fieldBox.js +29 -0
- package/dist/components/floating.d.ts +26 -5
- package/dist/components/floating.js +31 -9
- package/dist/{ai/ui/codeBreaks.js → components/markdownCodeBreaks.js} +1 -1
- package/dist/components/persistedState.d.ts +2 -0
- package/dist/components/persistedState.js +63 -0
- package/dist/components/relativeTime.d.ts +36 -8
- package/dist/components/relativeTime.js +106 -23
- package/dist/components/segmented.d.ts +17 -0
- package/dist/components/segmented.js +27 -0
- package/dist/components/shortcutKey.d.ts +4 -0
- package/dist/components/shortcutKey.js +27 -0
- package/dist/components/splitter.d.ts +26 -0
- package/dist/components/splitter.js +69 -0
- package/dist/components/tone.d.ts +9 -0
- package/dist/components/tone.js +30 -0
- package/dist/components/useCopy.d.ts +14 -0
- package/dist/components/useCopy.js +31 -0
- package/dist/components/useCssIsDark.d.ts +2 -0
- package/dist/components/useCssIsDark.js +2 -1
- package/dist/components/useTheme.d.ts +10 -0
- package/dist/components/useTheme.js +40 -0
- package/dist/cx.d.ts +5 -0
- package/dist/cx.js +11 -0
- package/dist/editor/Editor.js +2 -2
- package/dist/editor/EditorField.js +7 -10
- package/dist/editor/FormCodePanel.js +10 -23
- package/dist/editor/Monaco.js +7 -4
- package/dist/editor/index.d.ts +1 -1
- package/dist/editor/index.js +2 -2
- package/dist/editor/themes.d.ts +4 -0
- package/dist/editor/themes.js +75 -76
- package/dist/file-explorer/FileExplorer.js +180 -187
- package/dist/file-explorer/FileExplorerContext.js +36 -58
- package/dist/file-explorer/FilePreview/CodePreviewEditor.js +2 -1
- package/dist/file-explorer/FilePreview/Inline.js +9 -7
- package/dist/file-explorer/FilePreview/StreamedBadge.js +2 -2
- package/dist/file-explorer/FilePreview/Viewer.js +32 -34
- package/dist/file-explorer/FilePreview/index.js +60 -92
- package/dist/file-explorer/FileRow.js +10 -15
- package/dist/file-explorer/FileRowsWindow.js +2 -6
- package/dist/file-explorer/FileTable.js +2 -2
- package/dist/file-explorer/FileTableHeaders.js +8 -11
- package/dist/file-explorer/LoadMoreRow.js +8 -9
- package/dist/file-explorer/TreeView.js +16 -16
- package/dist/file-explorer/helpers.d.ts +1 -4
- package/dist/file-explorer/helpers.js +101 -114
- package/dist/file-explorer/lib/utils.d.ts +0 -2
- package/dist/file-explorer/lib/utils.js +1 -25
- package/dist/file-explorer/toasts.js +104 -185
- package/dist/form/Fields/BooleanField.js +12 -14
- package/dist/form/Fields/CheckboxGroupField.d.ts +1 -1
- package/dist/form/Fields/CheckboxGroupField.js +16 -18
- package/dist/form/Fields/ColorField.js +11 -11
- package/dist/form/Fields/DropdownField.d.ts +1 -1
- package/dist/form/Fields/DropdownField.js +20 -36
- package/dist/form/Fields/DurationField.d.ts +1 -1
- package/dist/form/Fields/DurationField.js +36 -50
- package/dist/form/Fields/LabelField.js +2 -2
- package/dist/form/Fields/MultiDropdownField.d.ts +1 -1
- package/dist/form/Fields/MultiDropdownField.js +9 -14
- package/dist/form/Fields/NumberField.d.ts +1 -1
- package/dist/form/Fields/NumberField.js +13 -48
- package/dist/form/Fields/ObjectField.js +3 -3
- package/dist/form/Fields/RadioField.d.ts +1 -1
- package/dist/form/Fields/RadioField.js +15 -18
- package/dist/form/Fields/RangeField.js +34 -35
- package/dist/form/Fields/StringField.d.ts +1 -1
- package/dist/form/Fields/StringField.js +15 -25
- package/dist/form/Fields/TextAreaField.js +10 -15
- package/dist/form/Form.d.ts +7 -2
- package/dist/form/Form.js +144 -49
- package/dist/form/FormLayout.js +18 -12
- package/dist/form/Wizard/WizardContainer.js +44 -18
- package/dist/form/Wizard/WizardNavigation.d.ts +1 -1
- package/dist/form/Wizard/WizardNavigation.js +31 -56
- package/dist/form/Wizard/WizardStepIndicator.d.ts +3 -0
- package/dist/form/Wizard/WizardStepIndicator.js +98 -114
- package/dist/form/Wizard/types.d.ts +2 -2
- package/dist/form/fieldFrame.d.ts +7 -0
- package/dist/form/fieldFrame.js +19 -0
- package/dist/form/index.d.ts +5 -5
- package/dist/form/index.js +4 -6
- package/dist/form/layoutCSS.js +5 -4
- package/dist/form/types/fieldComponentTypes.d.ts +5 -3
- package/dist/form/useChoiceField.js +2 -3
- package/dist/form/useFieldValue.d.ts +3 -0
- package/dist/form/useFieldValue.js +24 -7
- package/dist/form/utils/duration.d.ts +2 -2
- package/dist/form/utils/duration.js +3 -3
- package/dist/form/utils/fieldPath.d.ts +5 -3
- package/dist/form/utils/fieldPath.js +18 -3
- package/dist/form/utils/secondaryField.d.ts +0 -7
- package/dist/form/utils/secondaryField.js +1 -12
- package/dist/form/validation.d.ts +29 -0
- package/dist/form/validation.js +14 -0
- package/dist/format.d.ts +28 -0
- package/dist/format.js +64 -0
- package/dist/graph/AnnotationBanner.js +20 -31
- package/dist/graph/Connectors.js +1 -1
- package/dist/graph/DependencyGraph.js +51 -65
- package/dist/graph/GraphEditor.js +24 -28
- package/dist/graph/GraphEditorDialogs.js +239 -245
- package/dist/graph/InputDialog.js +93 -112
- package/dist/graph/InputsEditor.js +83 -84
- package/dist/graph/JobSummary.js +10 -11
- package/dist/graph/MatrixGroup.js +3 -3
- package/dist/graph/ProblemsButton.js +9 -10
- package/dist/graph/ShortcutsButton.js +12 -17
- package/dist/graph/SuggestionInput.d.ts +1 -2
- package/dist/graph/SuggestionInput.js +1 -3
- package/dist/graph/TreeView.js +47 -45
- package/dist/graph/WorkflowSettingsDialog.js +97 -102
- package/dist/graph/editorChrome.js +10 -12
- package/dist/graph/editorFields.d.ts +19 -16
- package/dist/graph/editorFields.js +97 -135
- package/dist/graph/editorPrimitives.js +2 -2
- package/dist/graph/editorRows.js +22 -25
- package/dist/graph/editorStrings.d.ts +16 -19
- package/dist/graph/editorStrings.js +11 -23
- package/dist/graph/fieldProblems.js +2 -2
- package/dist/graph/graphEditorState.d.ts +4 -4
- package/dist/graph/inputRefs.d.ts +0 -13
- package/dist/graph/inputRefs.js +121 -159
- package/dist/graph/settingsViews.js +5 -3
- package/dist/graph/stepWith.js +100 -100
- package/dist/graph/toolbarPanel.d.ts +8 -0
- package/dist/graph/toolbarPanel.js +11 -0
- package/dist/icons.d.ts +234 -23
- package/dist/icons.js +249 -264
- package/dist/index.d.ts +38 -21
- package/dist/index.js +42 -21
- package/dist/list/ActionToolbar.d.ts +1 -5
- package/dist/list/ActionToolbar.js +21 -20
- package/dist/list/ListPage.js +7 -7
- package/dist/list/ListTable.d.ts +3 -2
- package/dist/list/ListTable.js +33 -29
- package/dist/list/ListViewControls.d.ts +0 -17
- package/dist/list/ListViewControls.js +50 -118
- package/dist/list/UserHoverCard.js +24 -32
- package/dist/list/index.d.ts +2 -4
- package/dist/list/index.js +3 -5
- package/dist/list/listSearch.d.ts +1 -1
- package/dist/list/listSearch.js +19 -14
- package/dist/list/rowMenu.js +20 -26
- package/dist/logviewer/LogViewer.js +268 -382
- package/dist/logviewer/logviewer.css +53 -41
- package/dist/styles/base.css +16 -40
- package/dist/styles/theme.css +75 -106
- package/dist/styles.css +1 -1
- package/dist/theme/color.d.ts +40 -0
- package/dist/theme/color.js +228 -0
- package/dist/theme/contrast.d.ts +42 -0
- package/dist/theme/contrast.js +145 -0
- package/dist/theme/derive.d.ts +25 -0
- package/dist/theme/derive.js +475 -0
- package/dist/theme/fit.d.ts +35 -0
- package/dist/theme/fit.js +185 -0
- package/dist/theme/index.d.ts +14 -29
- package/dist/theme/index.js +20 -279
- package/dist/theme/model.d.ts +64 -0
- package/dist/theme/model.js +219 -0
- package/package.json +9 -5
- package/dist/ai/ui/Avatar.d.ts +0 -7
- package/dist/ai/ui/Avatar.js +0 -24
- package/dist/components/Filter.d.ts +0 -15
- package/dist/components/Filter.js +0 -32
- package/dist/components/FilterPill.d.ts +0 -7
- package/dist/components/FilterPill.js +0 -14
- package/dist/components/Indicator.d.ts +0 -4
- package/dist/components/Indicator.js +0 -44
- package/dist/components/SectionHeader.d.ts +0 -8
- package/dist/components/SectionHeader.js +0 -11
- package/dist/components/SettingRow.d.ts +0 -18
- package/dist/components/SettingRow.js +0 -35
- package/dist/components/SettingsGroup.d.ts +0 -8
- package/dist/components/SettingsGroup.js +0 -17
- package/dist/components/ghostButton.d.ts +0 -4
- package/dist/components/ghostButton.js +0 -7
- package/dist/components/inputClasses.d.ts +0 -1
- package/dist/components/inputClasses.js +0 -4
- package/dist/duration.d.ts +0 -3
- package/dist/duration.js +0 -17
- package/dist/form/FieldGroup.d.ts +0 -11
- package/dist/form/FieldGroup.js +0 -36
- package/dist/form/FieldWrapper.d.ts +0 -16
- package/dist/form/FieldWrapper.js +0 -55
- package/dist/form/fieldContext.d.ts +0 -19
- package/dist/form/fieldContext.js +0 -26
- package/dist/graph/Collapse.d.ts +0 -7
- package/dist/graph/Collapse.js +0 -15
- package/dist/graph/ToolbarPopover.d.ts +0 -13
- package/dist/graph/ToolbarPopover.js +0 -39
- package/dist/icons/ai/AiOutlineRollback.js +0 -16
- package/dist/icons/bi/BiBell.js +0 -16
- package/dist/icons/bi/BiBellOff.js +0 -16
- package/dist/icons/bi/BiBuildings.js +0 -20
- package/dist/icons/bi/BiError.js +0 -20
- package/dist/icons/bi/BiExpandVertical.js +0 -16
- package/dist/icons/bi/BiPause.js +0 -16
- package/dist/icons/bi/BiPlay.js +0 -16
- package/dist/icons/bi/BiRedo.js +0 -16
- package/dist/icons/bi/BiSolidCheckShield.js +0 -16
- package/dist/icons/bi/BiSolidTrashAlt.js +0 -16
- package/dist/icons/bi/BiStop.js +0 -16
- package/dist/icons/bi/BiUndo.js +0 -16
- package/dist/icons/bs/BsArrowsCollapse.js +0 -22
- package/dist/icons/bs/BsBank2.js +0 -19
- package/dist/icons/bs/BsBriefcase.js +0 -19
- package/dist/icons/bs/BsBucket.js +0 -19
- package/dist/icons/bs/BsCalendarX.js +0 -23
- package/dist/icons/bs/BsChatLeft.js +0 -19
- package/dist/icons/bs/BsChevronDoubleDown.js +0 -29
- package/dist/icons/bs/BsChevronDoubleUp.js +0 -29
- package/dist/icons/bs/BsClipboardCheck.js +0 -34
- package/dist/icons/bs/BsCurrencyDollar.js +0 -19
- package/dist/icons/bs/BsDash.js +0 -19
- package/dist/icons/bs/BsFileEarmarkZip.js +0 -23
- package/dist/icons/bs/BsFiles.js +0 -19
- package/dist/icons/bs/BsGeoAlt.js +0 -23
- package/dist/icons/bs/BsGrid.js +0 -19
- package/dist/icons/bs/BsLayers.js +0 -19
- package/dist/icons/bs/BsLayoutThreeColumns.js +0 -19
- package/dist/icons/bs/BsListUl.js +0 -22
- package/dist/icons/bs/BsMortarboard.js +0 -23
- package/dist/icons/bs/BsMusicNoteBeamed.js +0 -34
- package/dist/icons/bs/BsOpenai.js +0 -19
- package/dist/icons/bs/BsPersonPlus.js +0 -26
- package/dist/icons/bs/BsSearch.js +0 -19
- package/dist/icons/bs/BsSend.js +0 -19
- package/dist/icons/bs/BsShieldSlash.js +0 -22
- package/dist/icons/bs/BsStar.js +0 -19
- package/dist/icons/bs/BsStarFill.js +0 -19
- package/dist/icons/bs/BsStopCircle.js +0 -23
- package/dist/icons/bs/BsTag.js +0 -23
- package/dist/icons/bs/BsTelephone.js +0 -19
- package/dist/icons/bs/BsTerminal.js +0 -23
- package/dist/icons/bs/BsTerminalFill.js +0 -19
- package/dist/icons/bs/BsThreeDots.js +0 -19
- package/dist/icons/bs/BsThreeDotsVertical.js +0 -19
- package/dist/icons/bs/BsZoomIn.js +0 -37
- package/dist/icons/fa/FaAmazon.js +0 -16
- package/dist/icons/fa/FaAngleDown.js +0 -16
- package/dist/icons/fa/FaAngleLeft.js +0 -16
- package/dist/icons/fa/FaAngleRight.js +0 -16
- package/dist/icons/fa/FaAngleUp.js +0 -16
- package/dist/icons/fa/FaArrowDown.js +0 -16
- package/dist/icons/fa/FaArrowLeft.js +0 -16
- package/dist/icons/fa/FaArrowRight.js +0 -16
- package/dist/icons/fa/FaArrowUp.js +0 -16
- package/dist/icons/fa/FaBalanceScale.js +0 -16
- package/dist/icons/fa/FaCaretDown.js +0 -16
- package/dist/icons/fa/FaCentos.js +0 -16
- package/dist/icons/fa/FaChartLine.js +0 -16
- package/dist/icons/fa/FaChartPie.js +0 -16
- package/dist/icons/fa/FaCheck.js +0 -16
- package/dist/icons/fa/FaChevronDown.js +0 -16
- package/dist/icons/fa/FaChevronUp.js +0 -16
- package/dist/icons/fa/FaChrome.js +0 -16
- package/dist/icons/fa/FaCircleNotch.js +0 -16
- package/dist/icons/fa/FaCloud.js +0 -16
- package/dist/icons/fa/FaCloudDownloadAlt.js +0 -16
- package/dist/icons/fa/FaCog.js +0 -16
- package/dist/icons/fa/FaCogs.js +0 -16
- package/dist/icons/fa/FaComments.js +0 -16
- package/dist/icons/fa/FaCompress.js +0 -16
- package/dist/icons/fa/FaDesktop.js +0 -16
- package/dist/icons/fa/FaDocker.js +0 -16
- package/dist/icons/fa/FaDollarSign.js +0 -16
- package/dist/icons/fa/FaEdge.js +0 -16
- package/dist/icons/fa/FaEdit.js +0 -16
- package/dist/icons/fa/FaExclamationTriangle.js +0 -16
- package/dist/icons/fa/FaExpand.js +0 -16
- package/dist/icons/fa/FaEye.js +0 -16
- package/dist/icons/fa/FaEyeSlash.js +0 -16
- package/dist/icons/fa/FaFile.js +0 -16
- package/dist/icons/fa/FaFilePdf.js +0 -16
- package/dist/icons/fa/FaFilter.js +0 -16
- package/dist/icons/fa/FaFirefoxBrowser.js +0 -16
- package/dist/icons/fa/FaFlask.js +0 -16
- package/dist/icons/fa/FaFolder.js +0 -16
- package/dist/icons/fa/FaGithub.js +0 -16
- package/dist/icons/fa/FaGitlab.js +0 -16
- package/dist/icons/fa/FaGlobe.js +0 -16
- package/dist/icons/fa/FaGlobeAmericas.js +0 -16
- package/dist/icons/fa/FaImage.js +0 -16
- package/dist/icons/fa/FaInfoCircle.js +0 -16
- package/dist/icons/fa/FaKey.js +0 -16
- package/dist/icons/fa/FaLayerGroup.js +0 -16
- package/dist/icons/fa/FaLink.js +0 -16
- package/dist/icons/fa/FaLinkedin.js +0 -16
- package/dist/icons/fa/FaLinux.js +0 -16
- package/dist/icons/fa/FaList.js +0 -16
- package/dist/icons/fa/FaLock.js +0 -16
- package/dist/icons/fa/FaOpenid.js +0 -16
- package/dist/icons/fa/FaOpera.js +0 -16
- package/dist/icons/fa/FaPaperclip.js +0 -16
- package/dist/icons/fa/FaPlus.js +0 -16
- package/dist/icons/fa/FaPowerOff.js +0 -16
- package/dist/icons/fa/FaPrint.js +0 -16
- package/dist/icons/fa/FaQrcode.js +0 -16
- package/dist/icons/fa/FaQuestionCircle.js +0 -16
- package/dist/icons/fa/FaRedhat.js +0 -16
- package/dist/icons/fa/FaRegCircle.js +0 -16
- package/dist/icons/fa/FaRegFileImage.js +0 -16
- package/dist/icons/fa/FaRegFolder.js +0 -16
- package/dist/icons/fa/FaRobot.js +0 -16
- package/dist/icons/fa/FaRocket.js +0 -16
- package/dist/icons/fa/FaRunning.js +0 -16
- package/dist/icons/fa/FaSafari.js +0 -16
- package/dist/icons/fa/FaSave.js +0 -16
- package/dist/icons/fa/FaSearch.js +0 -16
- package/dist/icons/fa/FaShieldAlt.js +0 -16
- package/dist/icons/fa/FaSlack.js +0 -16
- package/dist/icons/fa/FaStar.js +0 -16
- package/dist/icons/fa/FaStop.js +0 -16
- package/dist/icons/fa/FaSuse.js +0 -16
- package/dist/icons/fa/FaTerminal.js +0 -16
- package/dist/icons/fa/FaTimes.js +0 -16
- package/dist/icons/fa/FaUbuntu.js +0 -16
- package/dist/icons/fa/FaUndoAlt.js +0 -16
- package/dist/icons/fa/FaUnlink.js +0 -16
- package/dist/icons/fa/FaUser.js +0 -16
- package/dist/icons/fa/FaUsers.js +0 -16
- package/dist/icons/fa/FaWindows.js +0 -16
- package/dist/icons/fa6/FaApple.js +0 -16
- package/dist/icons/fa6/FaArrowsRotate.js +0 -16
- package/dist/icons/fa6/FaDebian.js +0 -16
- package/dist/icons/fa6/FaFilterCircleXmark.js +0 -16
- package/dist/icons/fa6/FaInbox.js +0 -16
- package/dist/icons/fa6/FaLocationDot.js +0 -16
- package/dist/icons/fa6/FaRegFilePdf.js +0 -16
- package/dist/icons/fa6/FaRegFolderOpen.js +0 -16
- package/dist/icons/fa6/FaUpRightFromSquare.js +0 -16
- package/dist/icons/fa6/FaWandMagicSparkles.js +0 -16
- package/dist/icons/fa6/FaXTwitter.js +0 -16
- package/dist/icons/fi/FiActivity.js +0 -23
- package/dist/icons/fi/FiAlertCircle.js +0 -49
- package/dist/icons/fi/FiChevronDown.js +0 -23
- package/dist/icons/fi/FiClock.js +0 -31
- package/dist/icons/fi/FiCopy.js +0 -34
- package/dist/icons/fi/FiDownload.js +0 -40
- package/dist/icons/fi/FiFile.js +0 -27
- package/dist/icons/fi/FiFileText.js +0 -55
- package/dist/icons/fi/FiHardDrive.js +0 -55
- package/dist/icons/fi/FiRotateCcw.js +0 -27
- package/dist/icons/fi/FiUpload.js +0 -40
- package/dist/icons/fi/FiX.js +0 -37
- package/dist/icons/fi/FiZap.js +0 -23
- package/dist/icons/gi/GiSpy.js +0 -16
- package/dist/icons/go/GoGitCommit.js +0 -16
- package/dist/icons/go/GoGitPullRequest.js +0 -20
- package/dist/icons/go/GoIssueOpened.js +0 -16
- package/dist/icons/go/GoPlus.js +0 -16
- package/dist/icons/go/GoRepoForked.js +0 -28
- package/dist/icons/go/GoSignOut.js +0 -16
- package/dist/icons/go/GoSkip.js +0 -20
- package/dist/icons/go/GoVideo.js +0 -20
- package/dist/icons/gr/GrCloudComputer.js +0 -20
- package/dist/icons/gr/GrInbox.js +0 -20
- package/dist/icons/gr/GrServerCluster.js +0 -20
- package/dist/icons/gr/GrStorage.js +0 -20
- package/dist/icons/gr/GrTasks.js +0 -20
- package/dist/icons/hi/HiCog.js +0 -24
- package/dist/icons/hi/HiDuplicate.js +0 -24
- package/dist/icons/hi/HiOutlineArchive.js +0 -26
- package/dist/icons/hi/HiOutlineClipboardCopy.js +0 -26
- package/dist/icons/hi/HiOutlineHome.js +0 -26
- package/dist/icons/hi/HiQuestionMarkCircle.js +0 -24
- package/dist/icons/hi/HiServer.js +0 -24
- package/dist/icons/hi2/HiMiniCheckCircle.js +0 -24
- package/dist/icons/hi2/HiMiniLanguage.js +0 -28
- package/dist/icons/hi2/HiMiniMinusCircle.js +0 -24
- package/dist/icons/hi2/HiMiniXCircle.js +0 -24
- package/dist/icons/hi2/HiSparkles.js +0 -24
- package/dist/icons/im/ImSpinner5.js +0 -19
- package/dist/icons/io/IoIosNotifications.js +0 -16
- package/dist/icons/io/IoMdBuild.js +0 -16
- package/dist/icons/io/IoMdClose.js +0 -16
- package/dist/icons/io5/IoCloudUploadOutline.js +0 -32
- package/dist/icons/io5/IoDocumentTextOutline.js +0 -31
- package/dist/icons/io5/IoFileTrayFullOutline.js +0 -31
- package/dist/icons/io5/IoHeart.js +0 -16
- package/dist/icons/io5/IoHeartDislike.js +0 -16
- package/dist/icons/io5/IoHeartOutline.js +0 -22
- package/dist/icons/io5/IoInformationCircleOutline.js +0 -50
- package/dist/icons/io5/IoSettingsOutline.js +0 -22
- package/dist/icons/io5/IoWarningOutline.js +0 -40
- package/dist/icons/lu/LuArrowRight.js +0 -27
- package/dist/icons/lu/LuBadgeCheck.js +0 -27
- package/dist/icons/lu/LuBraces.js +0 -27
- package/dist/icons/lu/LuBrainCircuit.js +0 -101
- package/dist/icons/lu/LuCalendar.js +0 -46
- package/dist/icons/lu/LuCheck.js +0 -23
- package/dist/icons/lu/LuChevronLeft.js +0 -23
- package/dist/icons/lu/LuChevronRight.js +0 -23
- package/dist/icons/lu/LuCode.js +0 -27
- package/dist/icons/lu/LuExternalLink.js +0 -35
- package/dist/icons/lu/LuEye.js +0 -31
- package/dist/icons/lu/LuEyeOff.js +0 -40
- package/dist/icons/lu/LuFolderTree.js +0 -40
- package/dist/icons/lu/LuIdCard.js +0 -55
- package/dist/icons/lu/LuKeyboard.js +0 -71
- package/dist/icons/lu/LuLogs.js +0 -65
- package/dist/icons/lu/LuMail.js +0 -33
- package/dist/icons/lu/LuMegaphone.js +0 -27
- package/dist/icons/lu/LuMoon.js +0 -23
- package/dist/icons/lu/LuNetwork.js +0 -63
- package/dist/icons/lu/LuPartyPopper.js +0 -65
- package/dist/icons/lu/LuSettings2.js +0 -48
- package/dist/icons/lu/LuSheet.js +0 -72
- package/dist/icons/lu/LuShield.js +0 -23
- package/dist/icons/lu/LuSun.js +0 -69
- package/dist/icons/lu/LuTextCursorInput.js +0 -45
- package/dist/icons/lu/LuX.js +0 -27
- package/dist/icons/lu/LuZoomIn.js +0 -59
- package/dist/icons/lu/LuZoomOut.js +0 -49
- package/dist/icons/md/MdClear.js +0 -23
- package/dist/icons/md/MdDragHandle.js +0 -23
- package/dist/icons/md/MdInstallDesktop.js +0 -31
- package/dist/icons/md/MdOutlineAttachMoney.js +0 -23
- package/dist/icons/md/MdOutlineMoneyOff.js +0 -23
- package/dist/icons/md/MdPieChart.js +0 -23
- package/dist/icons/md/MdRefresh.js +0 -23
- package/dist/icons/md/MdReplay.js +0 -23
- package/dist/icons/md/MdSmartphone.js +0 -23
- package/dist/icons/pi/PiArrowBendUpRightBold.js +0 -19
- package/dist/icons/pi/PiPlugsConnectedFill.js +0 -19
- package/dist/icons/pi/PiRectangleDashed.js +0 -19
- package/dist/icons/pi/PiShareBold.js +0 -19
- package/dist/icons/si/SiAnthropic.js +0 -19
- package/dist/icons/si/SiHelm.js +0 -19
- package/dist/icons/si/SiKubernetes.js +0 -19
- package/dist/icons/tb/TbAlertTriangle.js +0 -35
- package/dist/icons/tb/TbAlertTriangleFilled.js +0 -19
- package/dist/icons/tb/TbApi.js +0 -40
- package/dist/icons/tb/TbBrain.js +0 -50
- package/dist/icons/tb/TbBuildingTunnel.js +0 -65
- package/dist/icons/tb/TbEdit.js +0 -35
- package/dist/icons/tb/TbLayoutSidebar.js +0 -27
- package/dist/icons/tb/TbLayoutSidebarLeftCollapse.js +0 -35
- package/dist/icons/tb/TbLayoutSidebarRightCollapse.js +0 -35
- package/dist/icons/tb/TbUser.js +0 -27
- package/dist/icons/tb/TbUserOff.js +0 -35
- package/dist/icons/tb/TbWorldShare.js +0 -55
- package/dist/icons/tb/TbWorldWww.js +0 -65
- package/dist/icons/ti/TiArrowSortedDown.js +0 -20
- package/dist/icons/ti/TiArrowSortedUp.js +0 -20
- package/dist/icons/ti/TiArrowUnsorted.js +0 -20
- package/dist/icons/ti/TiCancel.js +0 -20
- package/dist/icons/vsc/VscChromeMinimize.js +0 -19
- package/dist/icons/vsc/VscJson.js +0 -19
- package/dist/icons/vsc/VscLayoutSidebarLeft.js +0 -19
- package/dist/icons/vsc/VscPass.js +0 -27
- package/dist/icons/vsc/VscSplitHorizontal.js +0 -19
- package/dist/icons/vsc/VscTerminalPowershell.js +0 -19
- package/dist/list/ListPager.d.ts +0 -14
- package/dist/list/ListPager.js +0 -62
- package/dist/list/textEntry.d.ts +0 -2
- package/dist/list/textEntry.js +0 -10
- /package/dist/{ai/ui/codeBreaks.d.ts → components/markdownCodeBreaks.d.ts} +0 -0
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { PiShareBold } from "../../icons/pi/PiShareBold.js";
|
|
1
|
+
import { DownloadIcon, RenameIcon, ShareIcon, TrashIcon } from "../../icons.js";
|
|
2
|
+
import { toast } from "../../components/Toast.js";
|
|
3
|
+
import { useStrings } from "../../components/Provider.js";
|
|
5
4
|
import { useContextMenu } from "../../components/ContextMenu.js";
|
|
6
5
|
import { useChatConfig } from "../core/config.js";
|
|
7
6
|
import { useChat } from "../core/ChatProvider.js";
|
|
@@ -37,19 +36,20 @@ function groupConversationsByDate(conversations) {
|
|
|
37
36
|
* conversations. Render `overlays` once beside the list. */
|
|
38
37
|
function useConversationActions() {
|
|
39
38
|
const { strings } = useChatConfig();
|
|
39
|
+
const { common } = useStrings();
|
|
40
40
|
const t = strings.sidebar;
|
|
41
|
-
const { adapter,
|
|
41
|
+
const { adapter, deleteConversation, updateConversationTitle } = useChat();
|
|
42
42
|
const { openMenu, contextMenu } = useContextMenu();
|
|
43
43
|
const [sharing, setSharing] = useState(null);
|
|
44
44
|
const { requestDelete, requestRename, dialogs } = useRowDialogs({
|
|
45
45
|
strings: {
|
|
46
46
|
deleteTitle: t.deleteTitle,
|
|
47
47
|
deleteBody: () => t.deleteBody,
|
|
48
|
-
deleteAction:
|
|
48
|
+
deleteAction: common.delete,
|
|
49
49
|
renameTitle: t.renameTitle,
|
|
50
50
|
renameLabel: t.renameLabel,
|
|
51
51
|
renamePlaceholder: t.renamePlaceholder,
|
|
52
|
-
renameAction:
|
|
52
|
+
renameAction: common.rename
|
|
53
53
|
},
|
|
54
54
|
nameOf: (conv) => conv.title || t.untitled,
|
|
55
55
|
onDelete: (conv) => deleteConversation(conv.id),
|
|
@@ -60,28 +60,28 @@ function useConversationActions() {
|
|
|
60
60
|
const conversation = await adapter.conversations.get(id);
|
|
61
61
|
downloadText(exportFilename(conversation.title), conversationToMarkdown(conversation));
|
|
62
62
|
} catch {
|
|
63
|
-
|
|
63
|
+
toast.error(strings.chrome.exportError);
|
|
64
64
|
}
|
|
65
65
|
};
|
|
66
66
|
const menuItems = (conv) => [
|
|
67
67
|
{
|
|
68
|
-
label:
|
|
69
|
-
icon: /* @__PURE__ */ jsx(
|
|
68
|
+
label: common.rename,
|
|
69
|
+
icon: /* @__PURE__ */ jsx(RenameIcon, {}),
|
|
70
70
|
onClick: () => requestRename(conv)
|
|
71
71
|
},
|
|
72
72
|
...adapter.sharing && conv.isOwner !== false ? [{
|
|
73
|
-
label:
|
|
74
|
-
icon: /* @__PURE__ */ jsx(
|
|
73
|
+
label: common.share,
|
|
74
|
+
icon: /* @__PURE__ */ jsx(ShareIcon, {}),
|
|
75
75
|
onClick: () => setSharing(conv.id)
|
|
76
76
|
}] : [],
|
|
77
77
|
{
|
|
78
|
-
label:
|
|
79
|
-
icon: /* @__PURE__ */ jsx(
|
|
78
|
+
label: common.download,
|
|
79
|
+
icon: /* @__PURE__ */ jsx(DownloadIcon, {}),
|
|
80
80
|
onClick: () => void download(conv.id)
|
|
81
81
|
},
|
|
82
82
|
{
|
|
83
|
-
label:
|
|
84
|
-
icon: /* @__PURE__ */ jsx(
|
|
83
|
+
label: common.delete,
|
|
84
|
+
icon: /* @__PURE__ */ jsx(TrashIcon, {}),
|
|
85
85
|
destructive: true,
|
|
86
86
|
onClick: () => requestDelete(conv)
|
|
87
87
|
}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
2
|
import type { ChatAdapter } from '../adapter/types.js';
|
|
3
|
-
import type { AttachmentMeta, ChatModel, ChatNavigation,
|
|
3
|
+
import type { AttachmentMeta, ChatModel, ChatNavigation, ChatUser, Conversation, ConversationSummary, ChatMessage as Message, MessagePart, ProviderInfo, ProviderIssue, UnreachableSession } from '../types.js';
|
|
4
4
|
import { type ChatUIConfig } from './config.js';
|
|
5
5
|
import { type SidebarPresentation, type SidebarState } from './sidebarState.js';
|
|
6
6
|
interface ChatContextValue {
|
|
7
7
|
adapter: ChatAdapter;
|
|
8
8
|
currentUser: ChatUser;
|
|
9
9
|
navigation: ChatNavigation;
|
|
10
|
-
notify: ChatNotify;
|
|
11
10
|
activeConversationId: string | null;
|
|
12
11
|
conversations: ConversationSummary[];
|
|
13
12
|
currentConversation: Conversation | null;
|
|
@@ -63,7 +62,6 @@ export interface ChatProviderProps {
|
|
|
63
62
|
adapter: ChatAdapter;
|
|
64
63
|
currentUser: ChatUser;
|
|
65
64
|
navigation: ChatNavigation;
|
|
66
|
-
notify: ChatNotify;
|
|
67
65
|
activeConversationId?: string | null;
|
|
68
66
|
config?: ChatUIConfig;
|
|
69
67
|
/** Owns the sidebar's state. Omit to leave it to the reader, remembered
|
|
@@ -76,5 +74,5 @@ export interface ChatProviderProps {
|
|
|
76
74
|
onDrawerOpenChange?: (open: boolean) => void;
|
|
77
75
|
children: ReactNode;
|
|
78
76
|
}
|
|
79
|
-
export declare function ChatProvider({ adapter, currentUser, navigation,
|
|
77
|
+
export declare function ChatProvider({ adapter, currentUser, navigation, activeConversationId, config, sidebar: sidebarProp, onSidebarChange, drawerOpen: drawerOpenProp, onDrawerOpenChange, children, }: ChatProviderProps): import("react").JSX.Element;
|
|
80
78
|
export {};
|
|
@@ -1,26 +1,15 @@
|
|
|
1
|
+
import { toast } from "../../components/Toast.js";
|
|
2
|
+
import { usePersistedState } from "../../components/Provider.js";
|
|
1
3
|
import { applyPartDelta, finalizeParts, toolTurnMessages } from "./parts.js";
|
|
2
4
|
import { chatReducer, initialState } from "./chatReducer.js";
|
|
3
5
|
import { ChatConfigProvider, resolveChatConfig } from "./config.js";
|
|
4
6
|
import { providerIssueFor } from "./providerIssues.js";
|
|
5
|
-
import { ReportSidebarPresentationContext,
|
|
7
|
+
import { ReportSidebarPresentationContext, useControllable, useOwnSidebar } from "./sidebarState.js";
|
|
6
8
|
import { useSSEStream } from "./useSSEStream.js";
|
|
7
9
|
import { jsx } from "react/jsx-runtime";
|
|
8
10
|
import { createContext, useCallback, useContext, useEffect, useMemo, useReducer, useRef, useState } from "react";
|
|
9
11
|
import { DateTime } from "luxon";
|
|
10
12
|
//#region src/ai/core/ChatProvider.tsx
|
|
11
|
-
var SELECTED_MODEL_STORAGE_KEY = "aiChatSelectedModel";
|
|
12
|
-
function readStoredModel() {
|
|
13
|
-
try {
|
|
14
|
-
return globalThis.localStorage?.getItem(SELECTED_MODEL_STORAGE_KEY) ?? null;
|
|
15
|
-
} catch {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
function storeSelectedModel(modelId) {
|
|
20
|
-
try {
|
|
21
|
-
globalThis.localStorage?.setItem(SELECTED_MODEL_STORAGE_KEY, modelId);
|
|
22
|
-
} catch {}
|
|
23
|
-
}
|
|
24
13
|
function generateTitleFromMessage(content) {
|
|
25
14
|
const cleaned = content.replace(/```[\s\S]*?```/g, "").replace(/`[^`]+`/g, "").replace(/[#*_~[\]()]/g, "").replace(/\s+/g, " ").trim();
|
|
26
15
|
if (cleaned.length <= 50) return cleaned;
|
|
@@ -61,11 +50,14 @@ function useChat() {
|
|
|
61
50
|
if (!context) throw new Error("useChat must be used within a ChatProvider");
|
|
62
51
|
return context;
|
|
63
52
|
}
|
|
64
|
-
function ChatProvider({ adapter, currentUser, navigation,
|
|
53
|
+
function ChatProvider({ adapter, currentUser, navigation, activeConversationId = null, config, sidebar: sidebarProp, onSidebarChange, drawerOpen: drawerOpenProp, onDrawerOpenChange, children }) {
|
|
65
54
|
const [state, dispatch] = useReducer(chatReducer, initialState);
|
|
66
55
|
const hasLoadedConversationsRef = useRef(false);
|
|
67
56
|
const { onStreamingChunk, startStreaming, stopAnimationLoop, resetAnimationRefs, targetStreamContentRef, streamActiveRef, streamingConversationIdRef, backgroundStreamsRef, abortControllerRef } = useSSEStream(dispatch);
|
|
68
57
|
const currentConversationIdRef = useRef(null);
|
|
58
|
+
const [storedModel, storeModel] = usePersistedState("aiChat.model", null);
|
|
59
|
+
const storedModelRef = useRef(storedModel);
|
|
60
|
+
storedModelRef.current = storedModel;
|
|
69
61
|
const selectedProviderRef = useRef(state.selectedProvider);
|
|
70
62
|
useEffect(() => {
|
|
71
63
|
selectedProviderRef.current = state.selectedProvider;
|
|
@@ -87,14 +79,14 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
|
|
|
87
79
|
});
|
|
88
80
|
hasLoadedConversationsRef.current = true;
|
|
89
81
|
} catch (error) {
|
|
90
|
-
|
|
82
|
+
toast.error(errorText(error));
|
|
91
83
|
} finally {
|
|
92
84
|
dispatch({
|
|
93
85
|
type: "SET_LOADING",
|
|
94
86
|
isLoading: false
|
|
95
87
|
});
|
|
96
88
|
}
|
|
97
|
-
}, [adapter
|
|
89
|
+
}, [adapter]);
|
|
98
90
|
const streamingToConversationRef = useRef(null);
|
|
99
91
|
const loadSequenceRef = useRef(0);
|
|
100
92
|
const loadConversation = useCallback(async (id) => {
|
|
@@ -115,7 +107,7 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
|
|
|
115
107
|
type: "SET_LOADING_CONVERSATION",
|
|
116
108
|
isLoadingConversation: false
|
|
117
109
|
});
|
|
118
|
-
|
|
110
|
+
toast.error(errorText(error));
|
|
119
111
|
currentConversationIdRef.current = null;
|
|
120
112
|
dispatch({
|
|
121
113
|
type: "SET_CURRENT_CONVERSATION",
|
|
@@ -147,7 +139,6 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
|
|
|
147
139
|
}
|
|
148
140
|
}, [
|
|
149
141
|
adapter,
|
|
150
|
-
notify,
|
|
151
142
|
resetAnimationRefs,
|
|
152
143
|
streamingConversationIdRef,
|
|
153
144
|
backgroundStreamsRef,
|
|
@@ -166,9 +157,9 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
|
|
|
166
157
|
});
|
|
167
158
|
hasLoadedProvidersRef.current = true;
|
|
168
159
|
} catch (error) {
|
|
169
|
-
|
|
160
|
+
toast.error(errorText(error));
|
|
170
161
|
}
|
|
171
|
-
}, [adapter
|
|
162
|
+
}, [adapter]);
|
|
172
163
|
const refreshProviders = useCallback(async () => {
|
|
173
164
|
hasLoadedProvidersRef.current = false;
|
|
174
165
|
await loadProviders();
|
|
@@ -190,7 +181,7 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
|
|
|
190
181
|
});
|
|
191
182
|
hasLoadedModelsRef.current = true;
|
|
192
183
|
const current = selectedProviderRef.current;
|
|
193
|
-
const stored =
|
|
184
|
+
const stored = storedModelRef.current;
|
|
194
185
|
const offers = (id) => !!id && models.some((m) => m.id === id);
|
|
195
186
|
const firstUsable = models.find((model) => !providerIssueFor(providerIssues, model)) ?? models[0];
|
|
196
187
|
const resolved = offers(current) ? current : offers(stored) ? stored : firstUsable?.id ?? null;
|
|
@@ -224,6 +215,7 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
|
|
|
224
215
|
loadProviders();
|
|
225
216
|
loadModels();
|
|
226
217
|
}, [loadProviders, loadModels]);
|
|
218
|
+
const resolvedConfig = useMemo(() => resolveChatConfig(config), [config]);
|
|
227
219
|
const createConversation = useCallback(async (title) => {
|
|
228
220
|
try {
|
|
229
221
|
const conversation = await adapter.conversations.create(title);
|
|
@@ -233,15 +225,15 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
|
|
|
233
225
|
});
|
|
234
226
|
return conversation.id;
|
|
235
227
|
} catch (error) {
|
|
236
|
-
|
|
228
|
+
toast.error(errorText(error));
|
|
237
229
|
return null;
|
|
238
230
|
}
|
|
239
|
-
}, [adapter
|
|
231
|
+
}, [adapter]);
|
|
240
232
|
const deleteConversation = useCallback(async (id) => {
|
|
241
233
|
try {
|
|
242
234
|
await adapter.conversations.remove(id);
|
|
243
235
|
} catch (error) {
|
|
244
|
-
|
|
236
|
+
toast.error(errorText(error));
|
|
245
237
|
return false;
|
|
246
238
|
}
|
|
247
239
|
dispatch({
|
|
@@ -258,7 +250,6 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
|
|
|
258
250
|
return true;
|
|
259
251
|
}, [
|
|
260
252
|
adapter,
|
|
261
|
-
notify,
|
|
262
253
|
state.currentConversation,
|
|
263
254
|
navigation
|
|
264
255
|
]);
|
|
@@ -268,7 +259,7 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
|
|
|
268
259
|
if (!convId) return false;
|
|
269
260
|
const MAX_QUEUED_MESSAGES = 10;
|
|
270
261
|
if (pendingQueueRef.current.length >= MAX_QUEUED_MESSAGES) {
|
|
271
|
-
|
|
262
|
+
toast.error(`You can queue up to ${MAX_QUEUED_MESSAGES} messages while waiting for a response`);
|
|
272
263
|
return false;
|
|
273
264
|
}
|
|
274
265
|
const queuedId = crypto.randomUUID();
|
|
@@ -294,7 +285,7 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
|
|
|
294
285
|
}
|
|
295
286
|
const modelString = state.selectedProvider;
|
|
296
287
|
if (!isSelectedModelAvailable || !modelString) {
|
|
297
|
-
|
|
288
|
+
toast.error(resolvedConfig.strings.modelPicker.selectFirst);
|
|
298
289
|
return false;
|
|
299
290
|
}
|
|
300
291
|
isSendingRef.current = true;
|
|
@@ -539,7 +530,7 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
|
|
|
539
530
|
}
|
|
540
531
|
}, [
|
|
541
532
|
adapter,
|
|
542
|
-
|
|
533
|
+
resolvedConfig,
|
|
543
534
|
isSelectedModelAvailable,
|
|
544
535
|
state.selectedProvider,
|
|
545
536
|
state.selectedAllocation,
|
|
@@ -563,7 +554,7 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
|
|
|
563
554
|
try {
|
|
564
555
|
await adapter.conversations.rename(id, title);
|
|
565
556
|
} catch (error) {
|
|
566
|
-
|
|
557
|
+
toast.error(errorText(error));
|
|
567
558
|
return false;
|
|
568
559
|
}
|
|
569
560
|
dispatch({
|
|
@@ -583,17 +574,16 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
|
|
|
583
574
|
return true;
|
|
584
575
|
}, [
|
|
585
576
|
adapter,
|
|
586
|
-
notify,
|
|
587
577
|
state.conversations,
|
|
588
578
|
state.currentConversation
|
|
589
579
|
]);
|
|
590
580
|
const setSelectedProvider = useCallback((providerId) => {
|
|
591
|
-
if (providerId && state.models.some((m) => m.id === providerId))
|
|
581
|
+
if (providerId && state.models.some((m) => m.id === providerId)) storeModel(providerId);
|
|
592
582
|
dispatch({
|
|
593
583
|
type: "SET_SELECTED_PROVIDER",
|
|
594
584
|
providerId
|
|
595
585
|
});
|
|
596
|
-
}, [state.models]);
|
|
586
|
+
}, [state.models, storeModel]);
|
|
597
587
|
const setSelectedAllocation = useCallback((allocation) => {
|
|
598
588
|
dispatch({
|
|
599
589
|
type: "SET_SELECTED_ALLOCATION",
|
|
@@ -685,8 +675,8 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
|
|
|
685
675
|
state.currentConversation?.messages,
|
|
686
676
|
state.thinkingStartTime
|
|
687
677
|
]);
|
|
688
|
-
const [sidebar, setSidebar, sidebarRef] = useControllable(sidebarProp,
|
|
689
|
-
const [drawerOpen, setDrawerOpen, drawerOpenRef] = useControllable(drawerOpenProp, ()
|
|
678
|
+
const [sidebar, setSidebar, sidebarRef] = useControllable(sidebarProp, useOwnSidebar(), onSidebarChange);
|
|
679
|
+
const [drawerOpen, setDrawerOpen, drawerOpenRef] = useControllable(drawerOpenProp, useState(false), onDrawerOpenChange);
|
|
690
680
|
const [sidebarPresentation, setSidebarPresentation] = useState("inline");
|
|
691
681
|
const presentationRef = useRef(sidebarPresentation);
|
|
692
682
|
presentationRef.current = sidebarPresentation;
|
|
@@ -740,12 +730,10 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
|
|
|
740
730
|
conversation: null
|
|
741
731
|
});
|
|
742
732
|
}, [resetAnimationRefs, streamingConversationIdRef]);
|
|
743
|
-
const resolvedConfig = useMemo(() => resolveChatConfig(config), [config]);
|
|
744
733
|
const value = useMemo(() => ({
|
|
745
734
|
adapter,
|
|
746
735
|
currentUser,
|
|
747
736
|
navigation,
|
|
748
|
-
notify,
|
|
749
737
|
activeConversationId,
|
|
750
738
|
conversations: state.conversations,
|
|
751
739
|
currentConversation: state.currentConversation,
|
|
@@ -796,7 +784,6 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
|
|
|
796
784
|
adapter,
|
|
797
785
|
currentUser,
|
|
798
786
|
navigation,
|
|
799
|
-
notify,
|
|
800
787
|
activeConversationId,
|
|
801
788
|
state,
|
|
802
789
|
sidebar,
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { formatDateTime } from "../../format.js";
|
|
2
2
|
//#region src/ai/core/exportConversation.ts
|
|
3
3
|
function conversationToMarkdown(conversation) {
|
|
4
4
|
const lines = [];
|
|
5
5
|
lines.push(`# ${conversation.title?.trim() || "Conversation"}`);
|
|
6
6
|
if (conversation.createdAt) {
|
|
7
|
-
const
|
|
8
|
-
if (
|
|
7
|
+
const started = formatDateTime(conversation.createdAt);
|
|
8
|
+
if (started) {
|
|
9
9
|
lines.push("");
|
|
10
|
-
lines.push(`> Started ${
|
|
10
|
+
lines.push(`> Started ${started}`);
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
for (const message of conversation.messages) {
|
|
@@ -4,16 +4,18 @@ export type SidebarState = 'expanded' | 'collapsed' | 'hidden';
|
|
|
4
4
|
/** How the layout shows the list right now: as a column beside the thread,
|
|
5
5
|
* or as a drawer over it. */
|
|
6
6
|
export type SidebarPresentation = 'inline' | 'drawer';
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
/** The reader's own choice between the column and the rail, remembered through
|
|
8
|
+
* the host's persisted state. Hiding the list is the host's call, so it lasts
|
|
9
|
+
* only for the page that made it. */
|
|
10
|
+
export declare function useOwnSidebar(): readonly [SidebarState, (state: SidebarState) => void];
|
|
9
11
|
/** A value the host may own through a prop. Without the prop the provider
|
|
10
|
-
* keeps it
|
|
11
|
-
* reads the latest value from callbacks that should not re-create. */
|
|
12
|
-
export declare function useControllable<T>(controlled: T | undefined,
|
|
12
|
+
* keeps it in `own`; either way the change callback hears every change. The
|
|
13
|
+
* ref reads the latest value from callbacks that should not re-create. */
|
|
14
|
+
export declare function useControllable<T>(controlled: T | undefined, own: readonly [T, (value: T) => void], onChange: ((value: T) => void) | undefined): readonly [T, (next: T) => void, import("react").RefObject<{
|
|
13
15
|
value: T;
|
|
14
16
|
controlled: boolean;
|
|
15
17
|
onChange: ((value: T) => void) | undefined;
|
|
16
|
-
|
|
18
|
+
setOwn: (value: T) => void;
|
|
17
19
|
}>];
|
|
18
20
|
export declare const ReportSidebarPresentationContext: import("react").Context<(presentation: SidebarPresentation) => void>;
|
|
19
21
|
export declare function useReportSidebarPresentation(): (presentation: SidebarPresentation) => void;
|
|
@@ -1,49 +1,42 @@
|
|
|
1
|
+
import { usePersistedState } from "../../components/Provider.js";
|
|
1
2
|
import { createContext, useCallback, useContext, useRef, useState } from "react";
|
|
2
3
|
//#region src/ai/core/sidebarState.ts
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
function storeSidebar(state) {
|
|
15
|
-
if (state === "hidden") return;
|
|
16
|
-
try {
|
|
17
|
-
globalThis.localStorage?.setItem(SIDEBAR_STORAGE_KEY, state);
|
|
18
|
-
} catch {}
|
|
4
|
+
/** The reader's own choice between the column and the rail, remembered through
|
|
5
|
+
* the host's persisted state. Hiding the list is the host's call, so it lasts
|
|
6
|
+
* only for the page that made it. */
|
|
7
|
+
function useOwnSidebar() {
|
|
8
|
+
const [remembered, remember] = usePersistedState("aiChat.sidebar", "expanded");
|
|
9
|
+
const [hidden, setHidden] = useState(false);
|
|
10
|
+
const set = useCallback((state) => {
|
|
11
|
+
setHidden(state === "hidden");
|
|
12
|
+
if (state !== "hidden") remember(state);
|
|
13
|
+
}, [remember]);
|
|
14
|
+
return [hidden ? "hidden" : remembered === "collapsed" ? "collapsed" : "expanded", set];
|
|
19
15
|
}
|
|
20
16
|
/** A value the host may own through a prop. Without the prop the provider
|
|
21
|
-
* keeps it
|
|
22
|
-
* reads the latest value from callbacks that should not re-create. */
|
|
23
|
-
function useControllable(controlled,
|
|
24
|
-
const [
|
|
25
|
-
const value = controlled === void 0 ?
|
|
17
|
+
* keeps it in `own`; either way the change callback hears every change. The
|
|
18
|
+
* ref reads the latest value from callbacks that should not re-create. */
|
|
19
|
+
function useControllable(controlled, own, onChange) {
|
|
20
|
+
const [ownValue, setOwn] = own;
|
|
21
|
+
const value = controlled === void 0 ? ownValue : controlled;
|
|
26
22
|
const latest = useRef({
|
|
27
23
|
value,
|
|
28
24
|
controlled: controlled !== void 0,
|
|
29
25
|
onChange,
|
|
30
|
-
|
|
26
|
+
setOwn
|
|
31
27
|
});
|
|
32
28
|
latest.current = {
|
|
33
29
|
value,
|
|
34
30
|
controlled: controlled !== void 0,
|
|
35
31
|
onChange,
|
|
36
|
-
|
|
32
|
+
setOwn
|
|
37
33
|
};
|
|
38
34
|
return [
|
|
39
35
|
value,
|
|
40
36
|
useCallback((next) => {
|
|
41
37
|
const l = latest.current;
|
|
42
38
|
if (Object.is(next, l.value)) return;
|
|
43
|
-
if (!l.controlled)
|
|
44
|
-
setOwn(next);
|
|
45
|
-
l.remember?.(next);
|
|
46
|
-
}
|
|
39
|
+
if (!l.controlled) l.setOwn(next);
|
|
47
40
|
l.onChange?.(next);
|
|
48
41
|
}, []),
|
|
49
42
|
latest
|
|
@@ -54,4 +47,4 @@ function useReportSidebarPresentation() {
|
|
|
54
47
|
return useContext(ReportSidebarPresentationContext);
|
|
55
48
|
}
|
|
56
49
|
//#endregion
|
|
57
|
-
export { ReportSidebarPresentationContext,
|
|
50
|
+
export { ReportSidebarPresentationContext, useControllable, useOwnSidebar, useReportSidebarPresentation };
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { toast } from "../../components/Toast.js";
|
|
2
|
+
import { useStrings } from "../../components/Provider.js";
|
|
3
|
+
import { useChatConfig } from "./config.js";
|
|
1
4
|
import { useChat } from "./ChatProvider.js";
|
|
2
5
|
import { isMac } from "../utils.js";
|
|
3
6
|
import { FOCUS_SIDEBAR_SEARCH_EVENT } from "./events.js";
|
|
@@ -11,7 +14,9 @@ function lastUserMessage(messages) {
|
|
|
11
14
|
}
|
|
12
15
|
function useKeyboardShortcuts(options = {}) {
|
|
13
16
|
const { enabled = true } = options;
|
|
14
|
-
const { currentConversation, isStreaming, stopStreaming, clearCurrentConversation, navigation
|
|
17
|
+
const { currentConversation, isStreaming, stopStreaming, clearCurrentConversation, navigation } = useChat();
|
|
18
|
+
const { common } = useStrings();
|
|
19
|
+
const { chrome: t } = useChatConfig().strings;
|
|
15
20
|
const getLastAssistantMessage = useCallback(() => lastAssistantContent(currentConversation?.messages ?? []), [currentConversation?.messages]);
|
|
16
21
|
const getLastUserMessage = useCallback(() => lastUserMessage(currentConversation?.messages ?? []), [currentConversation?.messages]);
|
|
17
22
|
const handleNewConversation = useCallback(() => {
|
|
@@ -22,12 +27,16 @@ function useKeyboardShortcuts(options = {}) {
|
|
|
22
27
|
const content = getLastAssistantMessage();
|
|
23
28
|
if (content) try {
|
|
24
29
|
await navigator.clipboard.writeText(content);
|
|
25
|
-
|
|
30
|
+
toast.success(common.copiedToClipboard);
|
|
26
31
|
} catch {
|
|
27
|
-
|
|
32
|
+
toast.error(common.copyFailed);
|
|
28
33
|
}
|
|
29
|
-
else
|
|
30
|
-
}, [
|
|
34
|
+
else toast.info(t.noResponseToCopy);
|
|
35
|
+
}, [
|
|
36
|
+
getLastAssistantMessage,
|
|
37
|
+
common,
|
|
38
|
+
t
|
|
39
|
+
]);
|
|
31
40
|
const handleStopGeneration = useCallback(() => {
|
|
32
41
|
if (isStreaming) stopStreaming();
|
|
33
42
|
}, [isStreaming, stopStreaming]);
|
package/dist/ai/index.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
export { durationToAbsHumanDuration } from '../duration.js';
|
|
2
1
|
export * from './adapter/types.js';
|
|
3
2
|
export * from './agent/index.js';
|
|
4
3
|
export { default as AllocationSelector } from './components/AllocationSelector.js';
|
|
5
4
|
export { default as AttachmentManager } from './components/AttachmentManager.js';
|
|
6
5
|
export { type Attachment, type AttachmentUploadHandle, default as AttachmentUpload, } from './components/AttachmentUpload.js';
|
|
7
|
-
export {
|
|
6
|
+
export { default as ActivityLine } from './components/agent/ActivityLine.js';
|
|
8
7
|
export { ApprovalBlock, default as AgentMessageParts, } from './components/agent/AgentMessageParts.js';
|
|
9
8
|
export { default as PermissionPicker } from './components/agent/PermissionPicker.js';
|
|
10
9
|
export { default as BlockedGroupBanner } from './components/BlockedGroupBanner.js';
|
|
@@ -40,7 +39,7 @@ export { default as useDragDrop } from './core/useDragDrop.js';
|
|
|
40
39
|
export { useKeyboardShortcuts } from './core/useKeyboardShortcuts.js';
|
|
41
40
|
export { type ChatStrings, defaultChatStrings } from './strings.js';
|
|
42
41
|
export * from './types.js';
|
|
43
|
-
export { ConversationSidebar, type ConversationSidebarGroup,
|
|
42
|
+
export { ConversationSidebar, type ConversationSidebarGroup, sidebarDrawerProps, } from './ui/ConversationSidebar.js';
|
|
44
43
|
export { NoticeBar, NoticeCard, type NoticeTone, OutputCard } from './ui/Notice.js';
|
|
45
|
-
export { RenameDialog, type RowDialogStrings,
|
|
46
|
-
export {
|
|
44
|
+
export { RenameDialog, type RowDialogStrings, SidebarGroupHeading, SidebarPanel, SidebarRailItem, SidebarRow, SidebarRowTitle, SidebarToggle, useRowDialogs, } from './ui/sidebar.js';
|
|
45
|
+
export { isMac, isOrgModel } from './utils.js';
|
package/dist/ai/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { durationToAbsHumanDuration } from "../duration.js";
|
|
2
1
|
import { ChatAdapterError } from "./adapter/types.js";
|
|
3
2
|
import { classifyPseudoUserMessage } from "./agent/classifier.js";
|
|
4
|
-
import {
|
|
3
|
+
import { defaultToolStrings } from "./agent/toolStrings.js";
|
|
4
|
+
import { AGENT_COLOR_NAMES, agentColorHex, bashExitCode, clip, fullToolArgs, isGroupableTool, resultFailed, rollupSentence, sanitizeLabel, sanitizePanelText, summarizeToolArgs, toolHeaderFor, toolSummary } from "./agent/toolfmt.js";
|
|
5
5
|
import { MAX_EDIT_DIFF_LINES, MAX_WRITE_DIFF_LINES, computeEditDiff, computeWriteRows, editSummary, isEditDiffTool, lineDelta, parseEditArgs, wordEmphasisRanges } from "./agent/diff.js";
|
|
6
6
|
import { languageForPath, tokenizeDiffLines } from "./agent/diffHighlight.js";
|
|
7
7
|
import { DEFAULT_PERMISSION_MODE, NAMED_PERMISSION_MODES, clampPermissionMode, isNamedPermissionMode, permissionModesUpTo } from "./agent/permissions.js";
|
|
@@ -12,11 +12,11 @@ import { defaultChatStrings } from "./strings.js";
|
|
|
12
12
|
import { resolveChatConfig, useChatConfig } from "./core/config.js";
|
|
13
13
|
import { providerIssueFor } from "./core/providerIssues.js";
|
|
14
14
|
import { ChatProvider, useChat } from "./core/ChatProvider.js";
|
|
15
|
-
import {
|
|
15
|
+
import { isMac, isOrgModel } from "./utils.js";
|
|
16
16
|
import AllocationSelector from "./components/AllocationSelector.js";
|
|
17
17
|
import AttachmentManager from "./components/AttachmentManager.js";
|
|
18
18
|
import AttachmentUpload from "./components/AttachmentUpload.js";
|
|
19
|
-
import ActivityLine
|
|
19
|
+
import ActivityLine from "./components/agent/ActivityLine.js";
|
|
20
20
|
import AgentMessageParts, { ApprovalBlock } from "./components/agent/AgentMessageParts.js";
|
|
21
21
|
import PermissionPicker from "./components/agent/PermissionPicker.js";
|
|
22
22
|
import ModelSelector, { getProviderKeyFromModelId } from "./components/ModelSelector.js";
|
|
@@ -36,8 +36,8 @@ import ChatEmptyState from "./components/ChatEmptyState.js";
|
|
|
36
36
|
import { FOCUS_SIDEBAR_SEARCH_EVENT } from "./core/events.js";
|
|
37
37
|
import { useKeyboardShortcuts } from "./core/useKeyboardShortcuts.js";
|
|
38
38
|
import { KeyboardShortcutsProvider } from "./core/KeyboardShortcutsProvider.js";
|
|
39
|
-
import { RenameDialog,
|
|
40
|
-
import { ConversationSidebar,
|
|
39
|
+
import { RenameDialog, SidebarGroupHeading, SidebarPanel, SidebarRailItem, SidebarRow, SidebarRowTitle, SidebarToggle, useRowDialogs } from "./ui/sidebar.js";
|
|
40
|
+
import { ConversationSidebar, sidebarDrawerProps } from "./ui/ConversationSidebar.js";
|
|
41
41
|
import ShareDialog, { ShareButton } from "./components/ShareDialog.js";
|
|
42
42
|
import { groupConversationsByDate, useConversationActions } from "./components/conversationActions.js";
|
|
43
43
|
import ChatSidebar from "./components/ChatSidebar.js";
|
|
@@ -45,4 +45,4 @@ import ChatLayout, { CHAT_COLUMN_SCOPE, ConversationLayout, DRAWER_BELOW_PX } fr
|
|
|
45
45
|
import ChatMessage_default from "./components/ChatMessage.js";
|
|
46
46
|
import ChatMessageList from "./components/ChatMessageList.js";
|
|
47
47
|
import ChatThread from "./components/ChatThread.js";
|
|
48
|
-
export { AGENT_COLOR_NAMES, ActivityLine, AgentMessageParts, AllocationSelector, ApprovalBlock, AttachmentManager, AttachmentUpload, BlockedGroupBanner, BranchNavigator, CHAT_COLUMN_SCOPE, ChatAdapterError, ChatEmptyState, ChatInput, ChatLayout, ChatMessageList, ChatMessage_default as ChatMessageView, ChatProvider, ChatSidebar, ChatStage, ChatThread, ComposerContext, ComposerControls, ComposerSettings, ComposerUsage, ConnectToolsLink, ConversationLayout, ConversationSidebar, DEFAULT_PERMISSION_MODE, DRAWER_BELOW_PX, DragOverlay, FOCUS_SIDEBAR_SEARCH_EVENT, INTERRUPTED_NOTICE, KeyboardShortcutsProvider, MAX_EDIT_DIFF_LINES, MAX_WRITE_DIFF_LINES, ManageProvidersLink, ModelSelector, NAMED_PERMISSION_MODES, NoticeBar, NoticeCard, OutputCard, PermissionPicker, ProviderIssueBanner, RenameDialog, ShareButton, ShareDialog,
|
|
48
|
+
export { AGENT_COLOR_NAMES, ActivityLine, AgentMessageParts, AllocationSelector, ApprovalBlock, AttachmentManager, AttachmentUpload, BlockedGroupBanner, BranchNavigator, CHAT_COLUMN_SCOPE, ChatAdapterError, ChatEmptyState, ChatInput, ChatLayout, ChatMessageList, ChatMessage_default as ChatMessageView, ChatProvider, ChatSidebar, ChatStage, ChatThread, ComposerContext, ComposerControls, ComposerSettings, ComposerUsage, ConnectToolsLink, ConversationLayout, ConversationSidebar, DEFAULT_PERMISSION_MODE, DRAWER_BELOW_PX, DragOverlay, FOCUS_SIDEBAR_SEARCH_EVENT, INTERRUPTED_NOTICE, KeyboardShortcutsProvider, MAX_EDIT_DIFF_LINES, MAX_WRITE_DIFF_LINES, ManageProvidersLink, ModelSelector, NAMED_PERMISSION_MODES, NoticeBar, NoticeCard, OutputCard, PermissionPicker, ProviderIssueBanner, RenameDialog, ShareButton, ShareDialog, SidebarGroupHeading, SidebarPanel, SidebarRailItem, SidebarRow, SidebarRowTitle, SidebarToggle, agentColorHex, agentTypeLabel, applyPartDelta, askQuestionFromArgs, bashExitCode, chatReducer, clampPermissionMode, classifyPseudoUserMessage, clip, computeEditDiff, computeWriteRows, defaultChatStrings, defaultToolStrings, editSummary, finalizeParts, firstNonEmptyLine, fullToolArgs, getGreeting, getProviderKeyFromModelId, groupConversationsByDate, hiddenTranscriptTool, initialState, interruptionNotice, isEditDiffTool, isGroupableTool, isMac, isNamedPermissionMode, isOrgModel, languageForPath, lineDelta, parseEditArgs, parseSubagentNotice, pasteInlineMaxBytes, permissionModesUpTo, planFromArgs, providerIssueFor, resolveChatConfig, resultFailed, rollupSentence, sanitizeLabel, sanitizePanelText, sidebarDrawerProps, slashMatches, subagentDeliveryLine, summarizeToolArgs, taskCallFromArgs, thinkingHeading, tokenizeDiffLines, toolHeaderFor, toolSummary, useChat, useChatConfig, useConversationActions, useDragDrop, useKeyboardShortcuts, useRowDialogs, wordEmphasisRanges };
|