@parallelworks/ui 0.44.0 → 0.46.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/permissions.d.ts +1 -1
- package/dist/ai/agent/permissions.js +1 -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 +22 -35
- 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.d.ts +1 -1
- package/dist/ai/components/ChatStage.js +2 -2
- 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/pasteLanguage.d.ts +1 -1
- package/dist/ai/core/pasteLanguage.js +1 -1
- 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 +200 -83
- package/dist/components/Provider.js +203 -121
- 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 +5 -1
- package/dist/components/Select.js +43 -44
- 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 +5 -3
- package/dist/components/StatusBadge.js +10 -33
- 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/comboboxItems.d.ts +1 -1
- 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/editing.d.ts +1 -1
- 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 +45 -67
- 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/FilePreview/useObjectBlobUrl.js +4 -4
- package/dist/file-explorer/FilePreview/useObjectText.js +4 -4
- package/dist/file-explorer/FilePreview/usePresignedUrl.js +4 -4
- 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/types.d.ts +2 -2
- 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 +109 -190
- 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/fieldItems.d.ts +1 -1
- 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 +2 -3
- package/dist/graph/SuggestionInput.js +2 -4
- 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.d.ts +2 -2
- package/dist/graph/editorPrimitives.js +3 -3
- package/dist/graph/editorRows.js +22 -25
- package/dist/graph/editorStrings.d.ts +18 -21
- package/dist/graph/editorStrings.js +15 -27
- 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 +122 -160
- 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/logviewer/segments.d.ts +1 -1
- package/dist/logviewer/segments.js +1 -1
- 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,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) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** The highlighter's name for the language a paste is written in, or ''
|
|
2
|
-
* when it is not
|
|
2
|
+
* when it is not recognizably one. */
|
|
3
3
|
export declare function guessPasteLanguage(text: string): string;
|
|
4
4
|
/** The paste as a fenced code block in its language. The fence outruns any
|
|
5
5
|
* run of backticks inside the paste, so nothing in it can close the fence. */
|
|
@@ -17,7 +17,7 @@ function isJson(trimmed) {
|
|
|
17
17
|
var YAML_LINE = /^\s*(-\s+)?["']?[\w./-]+["']?\s*:(\s|$)|^\s*-(\s|$)|^---\s*$/;
|
|
18
18
|
var TOML_LINE = /^\s*\[{1,2}[\w."-]+\]{1,2}\s*$|^\s*[\w."-]+\s*=\s*\S/;
|
|
19
19
|
/** The highlighter's name for the language a paste is written in, or ''
|
|
20
|
-
* when it is not
|
|
20
|
+
* when it is not recognizably one. */
|
|
21
21
|
function guessPasteLanguage(text) {
|
|
22
22
|
const trimmed = text.trim();
|
|
23
23
|
if (!trimmed) return "";
|
|
@@ -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 };
|
package/dist/ai/strings.d.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
|
+
import { type ToolStrings } from './agent/toolStrings.js';
|
|
2
3
|
export interface ChatStrings {
|
|
3
|
-
modal: {
|
|
4
|
-
cancel: string;
|
|
5
|
-
save: string;
|
|
6
|
-
loading: string;
|
|
7
|
-
};
|
|
8
4
|
shareConversation: {
|
|
9
5
|
title: string;
|
|
10
6
|
loadError: string;
|
|
@@ -16,7 +12,6 @@ export interface ChatStrings {
|
|
|
16
12
|
noGroups: string;
|
|
17
13
|
viewOnly: string;
|
|
18
14
|
canCollaborate: string;
|
|
19
|
-
remove: string;
|
|
20
15
|
addGroups: string;
|
|
21
16
|
info: ReactNode;
|
|
22
17
|
shareButton: string;
|
|
@@ -40,7 +35,6 @@ export interface ChatStrings {
|
|
|
40
35
|
search: string;
|
|
41
36
|
loading: string;
|
|
42
37
|
failed: string;
|
|
43
|
-
retry: string;
|
|
44
38
|
none: string;
|
|
45
39
|
/** Beside a provider another user registered and shared with the reader. */
|
|
46
40
|
sharedBy: (owner: string) => string;
|
|
@@ -50,6 +44,8 @@ export interface ChatStrings {
|
|
|
50
44
|
notResponding: string;
|
|
51
45
|
/** Links the provider's settings from its issue banner, for its owner. */
|
|
52
46
|
manageProvider: string;
|
|
47
|
+
/** Sending before a model is chosen. */
|
|
48
|
+
selectFirst: string;
|
|
53
49
|
};
|
|
54
50
|
allocationPicker: {
|
|
55
51
|
choose: string;
|
|
@@ -64,9 +60,6 @@ export interface ChatStrings {
|
|
|
64
60
|
waitingNextStep: string;
|
|
65
61
|
/** Under a message the host has already handed to the running turn. */
|
|
66
62
|
handedOver: string;
|
|
67
|
-
/** The visible label of the remove control; `remove` names it for
|
|
68
|
-
* assistive technology. */
|
|
69
|
-
removeShort: string;
|
|
70
63
|
};
|
|
71
64
|
activity: {
|
|
72
65
|
tokens: (input: string, output: string) => string;
|
|
@@ -80,7 +73,6 @@ export interface ChatStrings {
|
|
|
80
73
|
addProvider: string;
|
|
81
74
|
sessionUnreachableTitle: (session: string) => ReactNode;
|
|
82
75
|
sessionUnreachableBody: string;
|
|
83
|
-
retry: string;
|
|
84
76
|
};
|
|
85
77
|
input: {
|
|
86
78
|
placeholder: string;
|
|
@@ -101,7 +93,11 @@ export interface ChatStrings {
|
|
|
101
93
|
label: string;
|
|
102
94
|
ellipsis: string;
|
|
103
95
|
thoughtFor: (duration: string) => string;
|
|
96
|
+
/** A finished reasoning toggle's label when its duration is unknown. */
|
|
97
|
+
thoughtProcess: string;
|
|
104
98
|
activity: string;
|
|
99
|
+
/** A finished turn's label when it ran tools without reasoning. */
|
|
100
|
+
ranToolCalls: (count: number) => string;
|
|
105
101
|
};
|
|
106
102
|
thread: {
|
|
107
103
|
viewOnly: string;
|
|
@@ -113,9 +109,6 @@ export interface ChatStrings {
|
|
|
113
109
|
groupThisMonth: string;
|
|
114
110
|
groupOlder: string;
|
|
115
111
|
untitled: string;
|
|
116
|
-
rename: string;
|
|
117
|
-
share: string;
|
|
118
|
-
delete: string;
|
|
119
112
|
sharedWithYou: string;
|
|
120
113
|
openSidebar: string;
|
|
121
114
|
closeSidebar: string;
|
|
@@ -130,26 +123,22 @@ export interface ChatStrings {
|
|
|
130
123
|
noConversations: string;
|
|
131
124
|
deleteTitle: string;
|
|
132
125
|
deleteBody: string;
|
|
133
|
-
deleteAction: string;
|
|
134
126
|
renameTitle: string;
|
|
135
|
-
renameAction: string;
|
|
136
127
|
renameLabel: string;
|
|
137
128
|
renamePlaceholder: string;
|
|
138
129
|
};
|
|
139
130
|
attachmentUpload: {
|
|
140
131
|
fileTooLarge: (maxSize: string) => string;
|
|
141
132
|
maxFilesAllowed: (max: number) => string;
|
|
142
|
-
remove: string;
|
|
143
133
|
dropFilesHere: string;
|
|
134
|
+
releaseToUpload: string;
|
|
144
135
|
addFiles: string;
|
|
136
|
+
maxSizePerFile: (size: string) => string;
|
|
137
|
+
uploading: string;
|
|
145
138
|
};
|
|
146
139
|
attachmentManager: {
|
|
147
140
|
title: string;
|
|
148
141
|
empty: string;
|
|
149
|
-
download: string;
|
|
150
|
-
delete: string;
|
|
151
|
-
loadMore: string;
|
|
152
|
-
loading: string;
|
|
153
142
|
};
|
|
154
143
|
branch: {
|
|
155
144
|
previous: string;
|
|
@@ -159,24 +148,19 @@ export interface ChatStrings {
|
|
|
159
148
|
searchPlaceholder: string;
|
|
160
149
|
searchLabel: string;
|
|
161
150
|
noMatches: string;
|
|
162
|
-
download: string;
|
|
163
151
|
exportError: string;
|
|
164
152
|
jumpToLatest: string;
|
|
165
|
-
|
|
153
|
+
/** The copy shortcut's note when no reply has come yet. */
|
|
154
|
+
noResponseToCopy: string;
|
|
166
155
|
};
|
|
167
156
|
messageMeta: {
|
|
168
157
|
stopped: string;
|
|
169
|
-
showMore: string;
|
|
170
|
-
showLess: string;
|
|
171
158
|
tokens: (total: number) => string;
|
|
172
159
|
tokensBreakdown: (prompt: number, completion: number) => string;
|
|
173
160
|
copy: string;
|
|
174
161
|
edit: string;
|
|
175
162
|
regenerate: string;
|
|
176
|
-
retry: string;
|
|
177
163
|
editPlaceholder: string;
|
|
178
|
-
cancel: string;
|
|
179
|
-
send: string;
|
|
180
164
|
};
|
|
181
165
|
permissions: {
|
|
182
166
|
choose: string;
|
|
@@ -192,8 +176,6 @@ export interface ChatStrings {
|
|
|
192
176
|
planHint: string;
|
|
193
177
|
};
|
|
194
178
|
agentTranscript: {
|
|
195
|
-
showMore: string;
|
|
196
|
-
showLess: string;
|
|
197
179
|
running: string;
|
|
198
180
|
done: string;
|
|
199
181
|
failed: string;
|
|
@@ -212,7 +194,6 @@ export interface ChatStrings {
|
|
|
212
194
|
denyCall: string;
|
|
213
195
|
denyWithFeedback: string;
|
|
214
196
|
feedbackPlaceholder: string;
|
|
215
|
-
send: string;
|
|
216
197
|
answered: string;
|
|
217
198
|
writeOwnAnswer: string;
|
|
218
199
|
subagent: string;
|
|
@@ -221,5 +202,7 @@ export interface ChatStrings {
|
|
|
221
202
|
approvalPending: string;
|
|
222
203
|
approvalOptions: string;
|
|
223
204
|
};
|
|
205
|
+
/** One-line summaries of an agent's finished tool calls. */
|
|
206
|
+
tools: ToolStrings;
|
|
224
207
|
}
|
|
225
208
|
export declare const defaultChatStrings: ChatStrings;
|