@stack-spot/ai-chat-widget 0.10.0 → 1.0.0-dev.1768314799914
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/CHANGELOG.md +972 -0
- package/README.md +1 -0
- package/dist/AbortedError.d.ts +5 -0
- package/dist/AbortedError.d.ts.map +1 -0
- package/dist/AbortedError.js +7 -0
- package/dist/AbortedError.js.map +1 -0
- package/dist/StackspotAIWidget.d.ts +48 -7
- package/dist/StackspotAIWidget.d.ts.map +1 -1
- package/dist/StackspotAIWidget.js +22 -15
- package/dist/StackspotAIWidget.js.map +1 -1
- package/dist/app-metadata.json +171 -0
- package/dist/assets/placeholder.png +0 -0
- package/dist/chat-interceptors/CustomInputs.d.ts +22 -0
- package/dist/chat-interceptors/CustomInputs.d.ts.map +1 -0
- package/dist/chat-interceptors/CustomInputs.js +71 -0
- package/dist/chat-interceptors/CustomInputs.js.map +1 -0
- package/dist/chat-interceptors/quick-command-questions.d.ts +14 -0
- package/dist/chat-interceptors/quick-command-questions.d.ts.map +1 -0
- package/dist/chat-interceptors/quick-command-questions.js +28 -0
- package/dist/chat-interceptors/quick-command-questions.js.map +1 -0
- package/dist/chat-interceptors/quick-commands.d.ts +14 -1
- package/dist/chat-interceptors/quick-commands.d.ts.map +1 -1
- package/dist/chat-interceptors/quick-commands.js +442 -8
- package/dist/chat-interceptors/quick-commands.js.map +1 -1
- package/dist/chat-interceptors/send-message.d.ts +27 -2
- package/dist/chat-interceptors/send-message.d.ts.map +1 -1
- package/dist/chat-interceptors/send-message.js +230 -29
- package/dist/chat-interceptors/send-message.js.map +1 -1
- package/dist/components/AdaptiveTextArea.d.ts +15 -3
- package/dist/components/AdaptiveTextArea.d.ts.map +1 -1
- package/dist/components/AdaptiveTextArea.js +22 -10
- package/dist/components/AdaptiveTextArea.js.map +1 -1
- package/dist/components/AgentCard/AgentCardCreate.d.ts +4 -0
- package/dist/components/AgentCard/AgentCardCreate.d.ts.map +1 -0
- package/dist/components/AgentCard/AgentCardCreate.js +33 -0
- package/dist/components/AgentCard/AgentCardCreate.js.map +1 -0
- package/dist/components/AgentCard/dictionary.d.ts +23 -0
- package/dist/components/AgentCard/dictionary.d.ts.map +1 -0
- package/dist/components/AgentCard/dictionary.js +23 -0
- package/dist/components/AgentCard/dictionary.js.map +1 -0
- package/dist/components/AgentCard/index.d.ts +5 -0
- package/dist/components/AgentCard/index.d.ts.map +1 -0
- package/dist/components/AgentCard/index.js +55 -0
- package/dist/components/AgentCard/index.js.map +1 -0
- package/dist/components/AnimatedOpacity.d.ts +8 -0
- package/dist/components/AnimatedOpacity.d.ts.map +1 -0
- package/dist/components/AnimatedOpacity.js +46 -0
- package/dist/components/AnimatedOpacity.js.map +1 -0
- package/dist/components/AutoFocus.d.ts +23 -0
- package/dist/components/AutoFocus.d.ts.map +1 -0
- package/dist/components/AutoFocus.js +23 -0
- package/dist/components/AutoFocus.js.map +1 -0
- package/dist/components/ButtonFavorite.d.ts +40 -0
- package/dist/components/ButtonFavorite.d.ts.map +1 -0
- package/dist/components/ButtonFavorite.js +25 -0
- package/dist/components/ButtonFavorite.js.map +1 -0
- package/dist/components/Code.d.ts +2 -1
- package/dist/components/Code.d.ts.map +1 -1
- package/dist/components/Code.js +52 -24
- package/dist/components/Code.js.map +1 -1
- package/dist/components/ComponentNavigator.d.ts +38 -0
- package/dist/components/ComponentNavigator.d.ts.map +1 -0
- package/dist/components/ComponentNavigator.js +31 -0
- package/dist/components/ComponentNavigator.js.map +1 -0
- package/dist/components/Fading.d.ts +32 -0
- package/dist/components/Fading.d.ts.map +1 -0
- package/dist/components/Fading.js +33 -0
- package/dist/components/Fading.js.map +1 -0
- package/dist/components/FadingOverflow.d.ts +25 -0
- package/dist/components/FadingOverflow.d.ts.map +1 -1
- package/dist/components/FadingOverflow.js +16 -8
- package/dist/components/FadingOverflow.js.map +1 -1
- package/dist/components/FileDescription.d.ts +10 -0
- package/dist/components/FileDescription.d.ts.map +1 -0
- package/dist/components/FileDescription.js +84 -0
- package/dist/components/FileDescription.js.map +1 -0
- package/dist/components/HistoryList.d.ts +15 -0
- package/dist/components/HistoryList.d.ts.map +1 -1
- package/dist/components/HistoryList.js +6 -2
- package/dist/components/HistoryList.js.map +1 -1
- package/dist/components/ListResource.d.ts +29 -0
- package/dist/components/ListResource.d.ts.map +1 -0
- package/dist/components/ListResource.js +17 -0
- package/dist/components/ListResource.js.map +1 -0
- package/dist/components/Markdown.d.ts.map +1 -1
- package/dist/components/Markdown.js +2 -2
- package/dist/components/Markdown.js.map +1 -1
- package/dist/components/Modal.d.ts +9 -0
- package/dist/components/Modal.d.ts.map +1 -0
- package/dist/components/Modal.js +56 -0
- package/dist/components/Modal.js.map +1 -0
- package/dist/components/QuickStartButton.d.ts +2 -4
- package/dist/components/QuickStartButton.d.ts.map +1 -1
- package/dist/components/QuickStartButton.js +7 -39
- package/dist/components/QuickStartButton.js.map +1 -1
- package/dist/components/RightPanelContentList.d.ts +10 -0
- package/dist/components/RightPanelContentList.d.ts.map +1 -0
- package/dist/components/RightPanelContentList.js +7 -0
- package/dist/components/RightPanelContentList.js.map +1 -0
- package/dist/components/RightPanelForm.d.ts +3 -0
- package/dist/components/RightPanelForm.d.ts.map +1 -1
- package/dist/components/RightPanelForm.js +57 -17
- package/dist/components/RightPanelForm.js.map +1 -1
- package/dist/components/RightPanelTabs.d.ts +4 -4
- package/dist/components/RightPanelTabs.d.ts.map +1 -1
- package/dist/components/RightPanelTabs.js +7 -16
- package/dist/components/RightPanelTabs.js.map +1 -1
- package/dist/components/Selector/index.d.ts +54 -0
- package/dist/components/Selector/index.d.ts.map +1 -0
- package/dist/components/Selector/index.js +143 -0
- package/dist/components/Selector/index.js.map +1 -0
- package/dist/components/Selector/styled.d.ts +4 -0
- package/dist/components/Selector/styled.d.ts.map +1 -0
- package/dist/components/Selector/styled.js +157 -0
- package/dist/components/Selector/styled.js.map +1 -0
- package/dist/components/StackedBadge.d.ts +14 -0
- package/dist/components/StackedBadge.d.ts.map +1 -0
- package/dist/components/StackedBadge.js +56 -0
- package/dist/components/StackedBadge.js.map +1 -0
- package/dist/components/TabManager.d.ts +6 -0
- package/dist/components/TabManager.d.ts.map +1 -1
- package/dist/components/TabManager.js +16 -28
- package/dist/components/TabManager.js.map +1 -1
- package/dist/components/ToolBadge.d.ts +9 -0
- package/dist/components/ToolBadge.d.ts.map +1 -0
- package/dist/components/ToolBadge.js +34 -0
- package/dist/components/ToolBadge.js.map +1 -0
- package/dist/components/WorkspaceTabNavigator.d.ts +17 -0
- package/dist/components/WorkspaceTabNavigator.d.ts.map +1 -0
- package/dist/components/WorkspaceTabNavigator.js +93 -0
- package/dist/components/WorkspaceTabNavigator.js.map +1 -0
- package/dist/components/form/DescribedCheckboxGroup.d.ts +30 -2
- package/dist/components/form/DescribedCheckboxGroup.d.ts.map +1 -1
- package/dist/components/form/DescribedCheckboxGroup.js +75 -21
- package/dist/components/form/DescribedCheckboxGroup.js.map +1 -1
- package/dist/components/form/DescribedRadioGroup.d.ts +31 -2
- package/dist/components/form/DescribedRadioGroup.d.ts.map +1 -1
- package/dist/components/form/DescribedRadioGroup.js +65 -16
- package/dist/components/form/DescribedRadioGroup.js.map +1 -1
- package/dist/components/form/dictionary.d.ts +19 -0
- package/dist/components/form/dictionary.d.ts.map +1 -0
- package/dist/components/form/dictionary.js +19 -0
- package/dist/components/form/dictionary.js.map +1 -0
- package/dist/components/form/styled.d.ts.map +1 -1
- package/dist/components/form/styled.js +1 -2
- package/dist/components/form/styled.js.map +1 -1
- package/dist/components/form/types.d.ts +42 -0
- package/dist/components/form/types.d.ts.map +1 -1
- package/dist/context/AIWidgetProvider.d.ts +19 -0
- package/dist/context/AIWidgetProvider.d.ts.map +1 -1
- package/dist/context/AIWidgetProvider.js +19 -0
- package/dist/context/AIWidgetProvider.js.map +1 -1
- package/dist/context/hooks.d.ts +61 -4
- package/dist/context/hooks.d.ts.map +1 -1
- package/dist/context/hooks.js +83 -13
- package/dist/context/hooks.js.map +1 -1
- package/dist/features.d.ts +72 -10
- package/dist/features.d.ts.map +1 -1
- package/dist/features.js +23 -8
- package/dist/features.js.map +1 -1
- package/dist/hooks/midnight-update-view.d.ts +5 -0
- package/dist/hooks/midnight-update-view.d.ts.map +1 -0
- package/dist/hooks/midnight-update-view.js +30 -0
- package/dist/hooks/midnight-update-view.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/layout.css +95 -28
- package/dist/regex.d.ts +3 -0
- package/dist/regex.d.ts.map +1 -0
- package/dist/regex.js +3 -0
- package/dist/regex.js.map +1 -0
- package/dist/right-panel/DefaultPanel.d.ts +3 -0
- package/dist/right-panel/DefaultPanel.d.ts.map +1 -1
- package/dist/right-panel/DefaultPanel.js +5 -4
- package/dist/right-panel/DefaultPanel.js.map +1 -1
- package/dist/right-panel/RightPanel.d.ts +3 -0
- package/dist/right-panel/RightPanel.d.ts.map +1 -1
- package/dist/right-panel/RightPanel.js +3 -0
- package/dist/right-panel/RightPanel.js.map +1 -1
- package/dist/right-panel/RightPanelProvider.d.ts +15 -0
- package/dist/right-panel/RightPanelProvider.d.ts.map +1 -1
- package/dist/right-panel/RightPanelProvider.js.map +1 -1
- package/dist/right-panel/constants.d.ts +2 -0
- package/dist/right-panel/constants.d.ts.map +1 -0
- package/dist/right-panel/constants.js +2 -0
- package/dist/right-panel/constants.js.map +1 -0
- package/dist/right-panel/hooks.d.ts +6 -0
- package/dist/right-panel/hooks.d.ts.map +1 -1
- package/dist/right-panel/hooks.js +8 -1
- package/dist/right-panel/hooks.js.map +1 -1
- package/dist/state/ChatEntry.d.ts +189 -15
- package/dist/state/ChatEntry.d.ts.map +1 -1
- package/dist/state/ChatEntry.js +29 -18
- package/dist/state/ChatEntry.js.map +1 -1
- package/dist/state/ChatState.d.ts +129 -15
- package/dist/state/ChatState.d.ts.map +1 -1
- package/dist/state/ChatState.js +87 -11
- package/dist/state/ChatState.js.map +1 -1
- package/dist/state/ChatTabsController.d.ts +50 -1
- package/dist/state/ChatTabsController.d.ts.map +1 -1
- package/dist/state/ChatTabsController.js +77 -8
- package/dist/state/ChatTabsController.js.map +1 -1
- package/dist/state/ObservableState.d.ts +15 -1
- package/dist/state/ObservableState.d.ts.map +1 -1
- package/dist/state/ObservableState.js +14 -0
- package/dist/state/ObservableState.js.map +1 -1
- package/dist/state/WidgetState.d.ts +62 -2
- package/dist/state/WidgetState.d.ts.map +1 -1
- package/dist/state/WidgetState.js +49 -2
- package/dist/state/WidgetState.js.map +1 -1
- package/dist/state/constants.d.ts +5 -0
- package/dist/state/constants.d.ts.map +1 -0
- package/dist/state/constants.js +10 -0
- package/dist/state/constants.js.map +1 -0
- package/dist/state/types.d.ts +10 -1
- package/dist/state/types.d.ts.map +1 -1
- package/dist/types.d.ts +20 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/chat.d.ts +11 -4
- package/dist/utils/chat.d.ts.map +1 -1
- package/dist/utils/chat.js +15 -12
- package/dist/utils/chat.js.map +1 -1
- package/dist/utils/check-is-trial.d.ts +2 -0
- package/dist/utils/check-is-trial.d.ts.map +1 -0
- package/dist/utils/check-is-trial.js +6 -0
- package/dist/utils/check-is-trial.js.map +1 -0
- package/dist/utils/copy-to-clipboard.d.ts +6 -0
- package/dist/utils/copy-to-clipboard.d.ts.map +1 -0
- package/dist/utils/copy-to-clipboard.js +30 -0
- package/dist/utils/copy-to-clipboard.js.map +1 -0
- package/dist/utils/date.d.ts +26 -2
- package/dist/utils/date.d.ts.map +1 -1
- package/dist/utils/date.js +28 -3
- package/dist/utils/date.js.map +1 -1
- package/dist/utils/download.d.ts +5 -0
- package/dist/utils/download.d.ts.map +1 -1
- package/dist/utils/download.js +5 -0
- package/dist/utils/download.js.map +1 -1
- package/dist/utils/error.d.ts +2 -0
- package/dist/utils/error.d.ts.map +1 -0
- package/dist/utils/error.js +54 -0
- package/dist/utils/error.js.map +1 -0
- package/dist/utils/knowledge-source.d.ts +12 -2
- package/dist/utils/knowledge-source.d.ts.map +1 -1
- package/dist/utils/knowledge-source.js +20 -6
- package/dist/utils/knowledge-source.js.map +1 -1
- package/dist/utils/planning-tool.d.ts +17 -0
- package/dist/utils/planning-tool.d.ts.map +1 -0
- package/dist/utils/planning-tool.js +32 -0
- package/dist/utils/planning-tool.js.map +1 -0
- package/dist/utils/programming-languages.d.ts +1 -0
- package/dist/utils/programming-languages.d.ts.map +1 -1
- package/dist/utils/programming-languages.js +11 -0
- package/dist/utils/programming-languages.js.map +1 -1
- package/dist/utils/string.d.ts +7 -0
- package/dist/utils/string.d.ts.map +1 -0
- package/dist/utils/string.js +11 -0
- package/dist/utils/string.js.map +1 -0
- package/dist/utils/tools.d.ts +23 -0
- package/dist/utils/tools.d.ts.map +1 -0
- package/dist/utils/tools.js +23 -0
- package/dist/utils/tools.js.map +1 -0
- package/dist/utils/update-tool-step.d.ts +3 -0
- package/dist/utils/update-tool-step.d.ts.map +1 -0
- package/dist/utils/update-tool-step.js +23 -0
- package/dist/utils/update-tool-step.js.map +1 -0
- package/dist/utils/upload/FileUpload.d.ts +21 -0
- package/dist/utils/upload/FileUpload.d.ts.map +1 -0
- package/dist/utils/upload/FileUpload.js +54 -0
- package/dist/utils/upload/FileUpload.js.map +1 -0
- package/dist/utils/upload/UploadManager.d.ts +42 -0
- package/dist/utils/upload/UploadManager.d.ts.map +1 -0
- package/dist/utils/upload/UploadManager.js +138 -0
- package/dist/utils/upload/UploadManager.js.map +1 -0
- package/dist/utils/upload/context.d.ts +15 -0
- package/dist/utils/upload/context.d.ts.map +1 -0
- package/dist/utils/upload/context.js +37 -0
- package/dist/utils/upload/context.js.map +1 -0
- package/dist/utils/upload/errors.d.ts +17 -0
- package/dist/utils/upload/errors.d.ts.map +1 -0
- package/dist/utils/upload/errors.js +27 -0
- package/dist/utils/upload/errors.js.map +1 -0
- package/dist/utils/upload/types.d.ts +7 -0
- package/dist/utils/upload/types.d.ts.map +1 -0
- package/dist/{components/Tooltip → utils/upload}/types.js.map +1 -1
- package/dist/utils/upload/use-paste-upload.d.ts +8 -0
- package/dist/utils/upload/use-paste-upload.d.ts.map +1 -0
- package/dist/utils/upload/use-paste-upload.js +19 -0
- package/dist/utils/upload/use-paste-upload.js.map +1 -0
- package/dist/utils/upload/utils.d.ts +4 -0
- package/dist/utils/upload/utils.d.ts.map +1 -0
- package/dist/utils/upload/utils.js +10 -0
- package/dist/utils/upload/utils.js.map +1 -0
- package/dist/utils/url.d.ts +2 -0
- package/dist/utils/url.d.ts.map +1 -0
- package/dist/utils/url.js +8 -0
- package/dist/utils/url.js.map +1 -0
- package/dist/views/Agents/AgentDescription.d.ts +4 -0
- package/dist/views/Agents/AgentDescription.d.ts.map +1 -0
- package/dist/views/Agents/AgentDescription.js +38 -0
- package/dist/views/Agents/AgentDescription.js.map +1 -0
- package/dist/views/Agents/AgentsPanel.d.ts +5 -0
- package/dist/views/Agents/AgentsPanel.d.ts.map +1 -0
- package/dist/views/Agents/AgentsPanel.js +45 -0
- package/dist/views/Agents/AgentsPanel.js.map +1 -0
- package/dist/views/Agents/AgentsTab.d.ts +11 -0
- package/dist/views/Agents/AgentsTab.d.ts.map +1 -0
- package/dist/views/Agents/AgentsTab.js +82 -0
- package/dist/views/Agents/AgentsTab.js.map +1 -0
- package/dist/views/Agents/dictionary.d.ts +2 -0
- package/dist/views/Agents/dictionary.d.ts.map +1 -0
- package/dist/views/Agents/dictionary.js +43 -0
- package/dist/views/Agents/dictionary.js.map +1 -0
- package/dist/views/Agents/index.d.ts +5 -0
- package/dist/views/Agents/index.d.ts.map +1 -0
- package/dist/views/Agents/index.js +21 -0
- package/dist/views/Agents/index.js.map +1 -0
- package/dist/views/Agents/styled.d.ts +3 -0
- package/dist/views/Agents/styled.d.ts.map +1 -0
- package/dist/views/Agents/styled.js +68 -0
- package/dist/views/Agents/styled.js.map +1 -0
- package/dist/views/Agents/useAgentFavorites.d.ts +8 -0
- package/dist/views/Agents/useAgentFavorites.d.ts.map +1 -0
- package/dist/views/Agents/useAgentFavorites.js +59 -0
- package/dist/views/Agents/useAgentFavorites.js.map +1 -0
- package/dist/views/Chat/AgentInfo.d.ts +5 -1
- package/dist/views/Chat/AgentInfo.d.ts.map +1 -1
- package/dist/views/Chat/AgentInfo.js +6 -5
- package/dist/views/Chat/AgentInfo.js.map +1 -1
- package/dist/views/Chat/ButtonExecutionDetail.d.ts +5 -0
- package/dist/views/Chat/ButtonExecutionDetail.d.ts.map +1 -0
- package/dist/views/Chat/ButtonExecutionDetail.js +34 -0
- package/dist/views/Chat/ButtonExecutionDetail.js.map +1 -0
- package/dist/views/Chat/ChatMessage.d.ts +57 -4
- package/dist/views/Chat/ChatMessage.d.ts.map +1 -1
- package/dist/views/Chat/ChatMessage.js +167 -20
- package/dist/views/Chat/ChatMessage.js.map +1 -1
- package/dist/views/Chat/ChatMessages.d.ts +6 -2
- package/dist/views/Chat/ChatMessages.d.ts.map +1 -1
- package/dist/views/Chat/ChatMessages.js +5 -2
- package/dist/views/Chat/ChatMessages.js.map +1 -1
- package/dist/views/Chat/StepsList.d.ts +14 -0
- package/dist/views/Chat/StepsList.d.ts.map +1 -0
- package/dist/views/Chat/StepsList.js +192 -0
- package/dist/views/Chat/StepsList.js.map +1 -0
- package/dist/views/Chat/chat-scroll.d.ts +1 -1
- package/dist/views/Chat/chat-scroll.js +1 -1
- package/dist/views/Chat/events.d.ts +22 -0
- package/dist/views/Chat/events.d.ts.map +1 -0
- package/dist/views/Chat/events.js +67 -0
- package/dist/views/Chat/events.js.map +1 -0
- package/dist/views/Chat/index.d.ts +9 -2
- package/dist/views/Chat/index.d.ts.map +1 -1
- package/dist/views/Chat/index.js +5 -2
- package/dist/views/Chat/index.js.map +1 -1
- package/dist/views/Chat/styled.d.ts +3 -1
- package/dist/views/Chat/styled.d.ts.map +1 -1
- package/dist/views/Chat/styled.js +183 -31
- package/dist/views/Chat/styled.js.map +1 -1
- package/dist/views/ChatHistory/ChatHistoryPanel.d.ts +4 -4
- package/dist/views/ChatHistory/ChatHistoryPanel.d.ts.map +1 -1
- package/dist/views/ChatHistory/ChatHistoryPanel.js +6 -2
- package/dist/views/ChatHistory/ChatHistoryPanel.js.map +1 -1
- package/dist/views/ChatHistory/HistoryItem.d.ts +4 -3
- package/dist/views/ChatHistory/HistoryItem.d.ts.map +1 -1
- package/dist/views/ChatHistory/HistoryItem.js +16 -37
- package/dist/views/ChatHistory/HistoryItem.js.map +1 -1
- package/dist/views/ChatHistory/dictionary.d.ts +1 -1
- package/dist/views/ChatHistory/index.d.ts +4 -4
- package/dist/views/ChatHistory/index.d.ts.map +1 -1
- package/dist/views/ChatHistory/index.js +6 -3
- package/dist/views/ChatHistory/index.js.map +1 -1
- package/dist/views/ChatHistory/styled.d.ts.map +1 -1
- package/dist/views/ChatHistory/styled.js +3 -5
- package/dist/views/ChatHistory/styled.js.map +1 -1
- package/dist/views/ChatHistory/utils.d.ts +17 -2
- package/dist/views/ChatHistory/utils.d.ts.map +1 -1
- package/dist/views/ChatHistory/utils.js +140 -9
- package/dist/views/ChatHistory/utils.js.map +1 -1
- package/dist/views/ChatTabSelection.d.ts +6 -4
- package/dist/views/ChatTabSelection.d.ts.map +1 -1
- package/dist/views/ChatTabSelection.js +40 -15
- package/dist/views/ChatTabSelection.js.map +1 -1
- package/dist/views/Editor.d.ts +3 -0
- package/dist/views/Editor.d.ts.map +1 -1
- package/dist/views/Editor.js +26 -20
- package/dist/views/Editor.js.map +1 -1
- package/dist/views/Home/BuiltInAgent.d.ts +6 -0
- package/dist/views/Home/BuiltInAgent.d.ts.map +1 -0
- package/dist/views/Home/BuiltInAgent.js +37 -0
- package/dist/views/Home/BuiltInAgent.js.map +1 -0
- package/dist/views/Home/CustomAgent.d.ts +5 -0
- package/dist/views/Home/CustomAgent.d.ts.map +1 -0
- package/dist/views/Home/CustomAgent.js +23 -0
- package/dist/views/Home/CustomAgent.js.map +1 -0
- package/dist/views/Home/index.d.ts +8 -0
- package/dist/views/Home/index.d.ts.map +1 -0
- package/dist/views/Home/index.js +34 -0
- package/dist/views/Home/index.js.map +1 -0
- package/dist/views/Home/styled.d.ts +2 -0
- package/dist/views/Home/styled.d.ts.map +1 -0
- package/dist/views/Home/styled.js +74 -0
- package/dist/views/Home/styled.js.map +1 -0
- package/dist/views/Home/types.d.ts +16 -0
- package/dist/views/Home/types.d.ts.map +1 -0
- package/dist/views/Home/types.js +2 -0
- package/dist/views/Home/types.js.map +1 -0
- package/dist/views/KSDocument.d.ts +3 -0
- package/dist/views/KSDocument.d.ts.map +1 -1
- package/dist/views/KSDocument.js +7 -4
- package/dist/views/KSDocument.js.map +1 -1
- package/dist/views/KnowledgeSources.d.ts +12 -0
- package/dist/views/KnowledgeSources.d.ts.map +1 -1
- package/dist/views/KnowledgeSources.js +123 -33
- package/dist/views/KnowledgeSources.js.map +1 -1
- package/dist/views/MessageInput/AgentSelector.d.ts +5 -0
- package/dist/views/MessageInput/AgentSelector.d.ts.map +1 -0
- package/dist/views/MessageInput/AgentSelector.js +66 -0
- package/dist/views/MessageInput/AgentSelector.js.map +1 -0
- package/dist/views/MessageInput/ButtonAgent.d.ts +2 -0
- package/dist/views/MessageInput/ButtonAgent.d.ts.map +1 -0
- package/dist/views/MessageInput/ButtonAgent.js +35 -0
- package/dist/views/MessageInput/ButtonAgent.js.map +1 -0
- package/dist/views/MessageInput/ButtonBar.d.ts +13 -0
- package/dist/views/MessageInput/ButtonBar.d.ts.map +1 -0
- package/dist/views/MessageInput/ButtonBar.js +15 -0
- package/dist/views/MessageInput/ButtonBar.js.map +1 -0
- package/dist/views/MessageInput/ContextBar.d.ts +9 -0
- package/dist/views/MessageInput/ContextBar.d.ts.map +1 -0
- package/dist/views/MessageInput/ContextBar.js +51 -0
- package/dist/views/MessageInput/ContextBar.js.map +1 -0
- package/dist/views/MessageInput/ModelSwitcher/index.d.ts +2 -0
- package/dist/views/MessageInput/ModelSwitcher/index.d.ts.map +1 -0
- package/dist/views/MessageInput/ModelSwitcher/index.js +25 -0
- package/dist/views/MessageInput/ModelSwitcher/index.js.map +1 -0
- package/dist/views/MessageInput/ModelSwitcher/utils.d.ts +30 -0
- package/dist/views/MessageInput/ModelSwitcher/utils.d.ts.map +1 -0
- package/dist/views/MessageInput/ModelSwitcher/utils.js +91 -0
- package/dist/views/MessageInput/ModelSwitcher/utils.js.map +1 -0
- package/dist/views/MessageInput/QuickCommandSelector.d.ts +5 -0
- package/dist/views/MessageInput/QuickCommandSelector.d.ts.map +1 -0
- package/dist/views/MessageInput/QuickCommandSelector.js +104 -0
- package/dist/views/MessageInput/QuickCommandSelector.js.map +1 -0
- package/dist/views/MessageInput/SelectContent.d.ts +2 -0
- package/dist/views/MessageInput/SelectContent.d.ts.map +1 -0
- package/dist/views/MessageInput/SelectContent.js +84 -0
- package/dist/views/MessageInput/SelectContent.js.map +1 -0
- package/dist/views/MessageInput/UploadBar.d.ts +2 -0
- package/dist/views/MessageInput/UploadBar.d.ts.map +1 -0
- package/dist/views/MessageInput/UploadBar.js +74 -0
- package/dist/views/MessageInput/UploadBar.js.map +1 -0
- package/dist/views/MessageInput/UploadDragNDrop.d.ts +14 -0
- package/dist/views/MessageInput/UploadDragNDrop.d.ts.map +1 -0
- package/dist/views/MessageInput/UploadDragNDrop.js +51 -0
- package/dist/views/MessageInput/UploadDragNDrop.js.map +1 -0
- package/dist/views/MessageInput/chat-entry-history.d.ts +11 -0
- package/dist/views/MessageInput/chat-entry-history.d.ts.map +1 -0
- package/dist/views/MessageInput/chat-entry-history.js +78 -0
- package/dist/views/MessageInput/chat-entry-history.js.map +1 -0
- package/dist/views/MessageInput/dictionary.d.ts +1 -1
- package/dist/views/MessageInput/dictionary.d.ts.map +1 -1
- package/dist/views/MessageInput/dictionary.js +52 -10
- package/dist/views/MessageInput/dictionary.js.map +1 -1
- package/dist/views/MessageInput/index.d.ts +9 -6
- package/dist/views/MessageInput/index.d.ts.map +1 -1
- package/dist/views/MessageInput/index.js +116 -20
- package/dist/views/MessageInput/index.js.map +1 -1
- package/dist/views/MessageInput/styled.d.ts +13 -1
- package/dist/views/MessageInput/styled.d.ts.map +1 -1
- package/dist/views/MessageInput/styled.js +223 -85
- package/dist/views/MessageInput/styled.js.map +1 -1
- package/dist/views/MinimizedHeader.d.ts +4 -0
- package/dist/views/MinimizedHeader.d.ts.map +1 -1
- package/dist/views/MinimizedHeader.js +9 -7
- package/dist/views/MinimizedHeader.js.map +1 -1
- package/dist/views/Resources.d.ts +2 -0
- package/dist/views/Resources.d.ts.map +1 -0
- package/dist/views/Resources.js +69 -0
- package/dist/views/Resources.js.map +1 -0
- package/dist/views/Stacks.d.ts +12 -0
- package/dist/views/Stacks.d.ts.map +1 -1
- package/dist/views/Stacks.js +117 -21
- package/dist/views/Stacks.js.map +1 -1
- package/dist/views/Steps/FlowChart/HandleGroup.d.ts +10 -0
- package/dist/views/Steps/FlowChart/HandleGroup.d.ts.map +1 -0
- package/dist/views/Steps/FlowChart/HandleGroup.js +4 -0
- package/dist/views/Steps/FlowChart/HandleGroup.js.map +1 -0
- package/dist/views/Steps/FlowChart/NodeDynamic.d.ts +15 -0
- package/dist/views/Steps/FlowChart/NodeDynamic.d.ts.map +1 -0
- package/dist/views/Steps/FlowChart/NodeDynamic.js +41 -0
- package/dist/views/Steps/FlowChart/NodeDynamic.js.map +1 -0
- package/dist/views/Steps/FlowChart/NodeStep.d.ts +10 -0
- package/dist/views/Steps/FlowChart/NodeStep.d.ts.map +1 -0
- package/dist/views/Steps/FlowChart/NodeStep.js +13 -0
- package/dist/views/Steps/FlowChart/NodeStep.js.map +1 -0
- package/dist/views/Steps/FlowChart/hooks.d.ts +7 -0
- package/dist/views/Steps/FlowChart/hooks.d.ts.map +1 -0
- package/dist/views/Steps/FlowChart/hooks.js +31 -0
- package/dist/views/Steps/FlowChart/hooks.js.map +1 -0
- package/dist/views/Steps/FlowChart/index.d.ts +12 -0
- package/dist/views/Steps/FlowChart/index.d.ts.map +1 -0
- package/dist/views/Steps/FlowChart/index.js +78 -0
- package/dist/views/Steps/FlowChart/index.js.map +1 -0
- package/dist/views/Steps/FlowChart/layout.d.ts +8 -0
- package/dist/views/Steps/FlowChart/layout.d.ts.map +1 -0
- package/dist/views/Steps/FlowChart/layout.js +59 -0
- package/dist/views/Steps/FlowChart/layout.js.map +1 -0
- package/dist/views/Steps/FlowChart/styled.d.ts +14 -0
- package/dist/views/Steps/FlowChart/styled.d.ts.map +1 -0
- package/dist/views/Steps/FlowChart/styled.js +156 -0
- package/dist/views/Steps/FlowChart/styled.js.map +1 -0
- package/dist/views/Steps/FlowChart/types.d.ts +25 -0
- package/dist/views/Steps/FlowChart/types.d.ts.map +1 -0
- package/dist/views/Steps/FlowChart/types.js +2 -0
- package/dist/views/Steps/FlowChart/types.js.map +1 -0
- package/dist/views/Steps/StepModal.d.ts +10 -0
- package/dist/views/Steps/StepModal.d.ts.map +1 -0
- package/dist/views/Steps/StepModal.js +139 -0
- package/dist/views/Steps/StepModal.js.map +1 -0
- package/dist/views/Steps/StepsPanel.d.ts +6 -0
- package/dist/views/Steps/StepsPanel.d.ts.map +1 -0
- package/dist/views/Steps/StepsPanel.js +18 -0
- package/dist/views/Steps/StepsPanel.js.map +1 -0
- package/dist/views/Steps/dictionary.d.ts +43 -0
- package/dist/views/Steps/dictionary.d.ts.map +1 -0
- package/dist/views/Steps/dictionary.js +45 -0
- package/dist/views/Steps/dictionary.js.map +1 -0
- package/dist/views/Steps/index.d.ts +5 -0
- package/dist/views/Steps/index.d.ts.map +1 -0
- package/dist/views/Steps/index.js +30 -0
- package/dist/views/Steps/index.js.map +1 -0
- package/dist/views/Steps/utils.d.ts +7 -0
- package/dist/views/Steps/utils.d.ts.map +1 -0
- package/dist/views/Steps/utils.js +32 -0
- package/dist/views/Steps/utils.js.map +1 -0
- package/dist/views/Tools.d.ts +2 -0
- package/dist/views/Tools.d.ts.map +1 -0
- package/dist/views/Tools.js +53 -0
- package/dist/views/Tools.js.map +1 -0
- package/dist/views/Workspaces/WorkspacesTab.d.ts +20 -0
- package/dist/views/Workspaces/WorkspacesTab.d.ts.map +1 -0
- package/dist/views/Workspaces/WorkspacesTab.js +61 -0
- package/dist/views/Workspaces/WorkspacesTab.js.map +1 -0
- package/dist/views/Workspaces/index.d.ts +5 -0
- package/dist/views/Workspaces/index.d.ts.map +1 -0
- package/dist/views/Workspaces/index.js +69 -0
- package/dist/views/Workspaces/index.js.map +1 -0
- package/package.dev.json +3 -0
- package/package.json +20 -13
- package/package.stg.json +4 -0
- package/scripts/package-override.js +105 -0
- package/src/AbortedError.ts +7 -0
- package/src/StackspotAIWidget.tsx +96 -27
- package/src/app-metadata.json +171 -0
- package/src/assets/placeholder.png +0 -0
- package/src/chat-interceptors/CustomInputs.ts +83 -0
- package/src/chat-interceptors/quick-command-questions.ts +25 -0
- package/src/chat-interceptors/quick-commands.ts +503 -7
- package/src/chat-interceptors/send-message.ts +256 -28
- package/src/components/AdaptiveTextArea.tsx +36 -11
- package/src/components/AgentCard/AgentCardCreate.tsx +42 -0
- package/src/components/AgentCard/dictionary.ts +25 -0
- package/src/components/AgentCard/index.tsx +82 -0
- package/src/components/AnimatedOpacity.tsx +55 -0
- package/src/components/AutoFocus.tsx +42 -0
- package/src/components/ButtonFavorite.tsx +78 -0
- package/src/components/Code.tsx +94 -59
- package/src/components/ComponentNavigator.tsx +99 -0
- package/src/components/Fading.tsx +66 -0
- package/src/components/FadingOverflow.tsx +39 -12
- package/src/components/FileDescription.tsx +118 -0
- package/src/components/HistoryList.tsx +19 -2
- package/src/components/ListResource.tsx +60 -0
- package/src/components/Markdown.tsx +2 -1
- package/src/components/Modal.tsx +85 -0
- package/src/components/QuickStartButton.tsx +15 -47
- package/src/components/RightPanelContentList.tsx +15 -0
- package/src/components/RightPanelForm.tsx +64 -22
- package/src/components/RightPanelTabs.tsx +7 -32
- package/src/components/Selector/index.tsx +312 -0
- package/src/components/Selector/styled.ts +158 -0
- package/src/components/StackedBadge.tsx +77 -0
- package/src/components/TabManager.tsx +36 -36
- package/src/components/ToolBadge.tsx +67 -0
- package/src/components/WorkspaceTabNavigator.tsx +172 -0
- package/src/components/form/DescribedCheckboxGroup.tsx +135 -33
- package/src/components/form/DescribedRadioGroup.tsx +136 -32
- package/src/components/form/dictionary.ts +18 -0
- package/src/components/form/styled.ts +1 -2
- package/src/components/form/types.ts +45 -1
- package/src/context/AIWidgetProvider.tsx +19 -0
- package/src/context/hooks.ts +86 -16
- package/src/features.ts +90 -16
- package/src/hooks/midnight-update-view.ts +36 -0
- package/src/images.d.ts +5 -0
- package/src/index.ts +16 -0
- package/src/layout.css +95 -28
- package/src/regex.ts +2 -0
- package/src/right-panel/DefaultPanel.tsx +7 -7
- package/src/right-panel/RightPanel.tsx +3 -0
- package/src/right-panel/RightPanelProvider.tsx +15 -0
- package/src/right-panel/constants.ts +1 -0
- package/src/right-panel/hooks.tsx +8 -1
- package/src/state/ChatEntry.ts +194 -27
- package/src/state/ChatState.ts +172 -17
- package/src/state/ChatTabsController.ts +78 -8
- package/src/state/ObservableState.ts +15 -1
- package/src/state/WidgetState.ts +86 -3
- package/src/state/constants.ts +13 -0
- package/src/state/types.ts +12 -1
- package/src/types.ts +21 -4
- package/src/utils/chat.ts +17 -15
- package/src/utils/check-is-trial.ts +6 -0
- package/src/utils/copy-to-clipboard.ts +29 -0
- package/src/utils/date.ts +28 -4
- package/src/utils/download.ts +5 -0
- package/src/utils/error.ts +56 -0
- package/src/utils/knowledge-source.ts +22 -8
- package/src/utils/planning-tool.ts +41 -0
- package/src/utils/programming-languages.ts +12 -0
- package/src/utils/string.ts +10 -0
- package/src/utils/tools.ts +32 -0
- package/src/utils/update-tool-step.tsx +27 -0
- package/src/utils/upload/FileUpload.ts +63 -0
- package/src/utils/upload/UploadManager.ts +156 -0
- package/src/utils/upload/context.tsx +44 -0
- package/src/utils/upload/errors.ts +34 -0
- package/src/utils/upload/types.ts +7 -0
- package/src/utils/upload/use-paste-upload.tsx +30 -0
- package/src/utils/upload/utils.ts +12 -0
- package/src/utils/url.ts +8 -0
- package/src/views/Agents/AgentDescription.tsx +107 -0
- package/src/views/Agents/AgentsPanel.tsx +57 -0
- package/src/views/Agents/AgentsTab.tsx +126 -0
- package/src/views/Agents/dictionary.ts +45 -0
- package/src/views/Agents/index.tsx +26 -0
- package/src/views/Agents/styled.ts +69 -0
- package/src/views/Agents/useAgentFavorites.ts +63 -0
- package/src/views/Chat/AgentInfo.tsx +13 -8
- package/src/views/Chat/ButtonExecutionDetail.tsx +46 -0
- package/src/views/Chat/ChatMessage.tsx +472 -56
- package/src/views/Chat/ChatMessages.tsx +18 -4
- package/src/views/Chat/StepsList.tsx +394 -0
- package/src/views/Chat/chat-scroll.ts +1 -1
- package/src/views/Chat/events.ts +71 -0
- package/src/views/Chat/index.tsx +17 -3
- package/src/views/Chat/styled.ts +189 -32
- package/src/views/ChatHistory/ChatHistoryPanel.tsx +8 -5
- package/src/views/ChatHistory/HistoryItem.tsx +23 -44
- package/src/views/ChatHistory/index.tsx +6 -4
- package/src/views/ChatHistory/styled.ts +3 -5
- package/src/views/ChatHistory/utils.ts +144 -11
- package/src/views/ChatTabSelection.tsx +47 -20
- package/src/views/Editor.tsx +31 -22
- package/src/views/Home/BuiltInAgent.tsx +67 -0
- package/src/views/Home/CustomAgent.tsx +36 -0
- package/src/views/Home/index.tsx +48 -0
- package/src/views/Home/styled.ts +74 -0
- package/src/views/Home/types.ts +16 -0
- package/src/views/KSDocument.tsx +11 -8
- package/src/views/KnowledgeSources.tsx +169 -62
- package/src/views/MessageInput/AgentSelector.tsx +92 -0
- package/src/views/MessageInput/ButtonAgent.tsx +73 -0
- package/src/views/MessageInput/ButtonBar.tsx +57 -0
- package/src/views/MessageInput/ContextBar.tsx +117 -0
- package/src/views/MessageInput/ModelSwitcher/index.tsx +69 -0
- package/src/views/MessageInput/ModelSwitcher/utils.tsx +143 -0
- package/src/views/MessageInput/QuickCommandSelector.tsx +137 -0
- package/src/views/MessageInput/SelectContent.tsx +99 -0
- package/src/views/MessageInput/UploadBar.tsx +107 -0
- package/src/views/MessageInput/UploadDragNDrop.tsx +79 -0
- package/src/views/MessageInput/chat-entry-history.ts +97 -0
- package/src/views/MessageInput/dictionary.ts +52 -10
- package/src/views/MessageInput/index.tsx +158 -51
- package/src/views/MessageInput/styled.ts +226 -85
- package/src/views/MinimizedHeader.tsx +11 -10
- package/src/views/Resources.tsx +108 -0
- package/src/views/Stacks.tsx +152 -39
- package/src/views/Steps/FlowChart/HandleGroup.tsx +14 -0
- package/src/views/Steps/FlowChart/NodeDynamic.tsx +97 -0
- package/src/views/Steps/FlowChart/NodeStep.tsx +49 -0
- package/src/views/Steps/FlowChart/hooks.ts +41 -0
- package/src/views/Steps/FlowChart/index.tsx +111 -0
- package/src/views/Steps/FlowChart/layout.ts +73 -0
- package/src/views/Steps/FlowChart/styled.ts +157 -0
- package/src/views/Steps/FlowChart/types.ts +28 -0
- package/src/views/Steps/StepModal.tsx +233 -0
- package/src/views/Steps/StepsPanel.tsx +31 -0
- package/src/views/Steps/dictionary.ts +48 -0
- package/src/views/Steps/index.tsx +36 -0
- package/src/views/Steps/utils.tsx +34 -0
- package/src/views/Tools.tsx +77 -0
- package/src/views/Workspaces/WorkspacesTab.tsx +116 -0
- package/src/views/Workspaces/index.tsx +78 -0
- package/tsconfig.json +8 -3
- package/dist/components/Accordion.d.ts +0 -10
- package/dist/components/Accordion.d.ts.map +0 -1
- package/dist/components/Accordion.js +0 -46
- package/dist/components/Accordion.js.map +0 -1
- package/dist/components/Editor.d.ts +0 -9
- package/dist/components/Editor.d.ts.map +0 -1
- package/dist/components/Editor.js +0 -2
- package/dist/components/Editor.js.map +0 -1
- package/dist/components/FallbackBoundary/ErrorBoundary.d.ts +0 -30
- package/dist/components/FallbackBoundary/ErrorBoundary.d.ts.map +0 -1
- package/dist/components/FallbackBoundary/ErrorBoundary.js +0 -38
- package/dist/components/FallbackBoundary/ErrorBoundary.js.map +0 -1
- package/dist/components/FallbackBoundary/Loading.d.ts +0 -2
- package/dist/components/FallbackBoundary/Loading.d.ts.map +0 -1
- package/dist/components/FallbackBoundary/Loading.js +0 -12
- package/dist/components/FallbackBoundary/Loading.js.map +0 -1
- package/dist/components/FallbackBoundary/index.d.ts +0 -6
- package/dist/components/FallbackBoundary/index.d.ts.map +0 -1
- package/dist/components/FallbackBoundary/index.js +0 -9
- package/dist/components/FallbackBoundary/index.js.map +0 -1
- package/dist/components/IconInput.d.ts +0 -7
- package/dist/components/IconInput.d.ts.map +0 -1
- package/dist/components/IconInput.js +0 -58
- package/dist/components/IconInput.js.map +0 -1
- package/dist/components/OverlayMenu.d.ts +0 -10
- package/dist/components/OverlayMenu.d.ts.map +0 -1
- package/dist/components/OverlayMenu.js +0 -58
- package/dist/components/OverlayMenu.js.map +0 -1
- package/dist/components/ProgressBar.d.ts +0 -11
- package/dist/components/ProgressBar.d.ts.map +0 -1
- package/dist/components/ProgressBar.js +0 -126
- package/dist/components/ProgressBar.js.map +0 -1
- package/dist/components/Tooltip/Tooltip.d.ts +0 -12
- package/dist/components/Tooltip/Tooltip.d.ts.map +0 -1
- package/dist/components/Tooltip/Tooltip.js +0 -17
- package/dist/components/Tooltip/Tooltip.js.map +0 -1
- package/dist/components/Tooltip/TooltipAPI.d.ts +0 -13
- package/dist/components/Tooltip/TooltipAPI.d.ts.map +0 -1
- package/dist/components/Tooltip/TooltipAPI.js +0 -90
- package/dist/components/Tooltip/TooltipAPI.js.map +0 -1
- package/dist/components/Tooltip/context.d.ts +0 -5
- package/dist/components/Tooltip/context.d.ts.map +0 -1
- package/dist/components/Tooltip/context.js +0 -18
- package/dist/components/Tooltip/context.js.map +0 -1
- package/dist/components/Tooltip/index.d.ts +0 -3
- package/dist/components/Tooltip/index.d.ts.map +0 -1
- package/dist/components/Tooltip/index.js +0 -3
- package/dist/components/Tooltip/index.js.map +0 -1
- package/dist/components/Tooltip/style.d.ts +0 -4
- package/dist/components/Tooltip/style.d.ts.map +0 -1
- package/dist/components/Tooltip/style.js +0 -22
- package/dist/components/Tooltip/style.js.map +0 -1
- package/dist/components/Tooltip/types.d.ts +0 -14
- package/dist/components/Tooltip/types.d.ts.map +0 -1
- package/dist/views/Agents.d.ts +0 -2
- package/dist/views/Agents.d.ts.map +0 -1
- package/dist/views/Agents.js +0 -143
- package/dist/views/Agents.js.map +0 -1
- package/dist/views/Home.d.ts +0 -6
- package/dist/views/Home.d.ts.map +0 -1
- package/dist/views/Home.js +0 -68
- package/dist/views/Home.js.map +0 -1
- package/dist/views/MessageInput/ButtonGroup.d.ts +0 -12
- package/dist/views/MessageInput/ButtonGroup.d.ts.map +0 -1
- package/dist/views/MessageInput/ButtonGroup.js +0 -24
- package/dist/views/MessageInput/ButtonGroup.js.map +0 -1
- package/dist/views/MessageInput/InfoBar.d.ts +0 -2
- package/dist/views/MessageInput/InfoBar.d.ts.map +0 -1
- package/dist/views/MessageInput/InfoBar.js +0 -35
- package/dist/views/MessageInput/InfoBar.js.map +0 -1
- package/dist/views/Workspaces.d.ts +0 -2
- package/dist/views/Workspaces.d.ts.map +0 -1
- package/dist/views/Workspaces.js +0 -62
- package/dist/views/Workspaces.js.map +0 -1
- package/src/components/Accordion.tsx +0 -64
- package/src/components/Editor.tsx +0 -12
- package/src/components/FallbackBoundary/ErrorBoundary.tsx +0 -48
- package/src/components/FallbackBoundary/Loading.tsx +0 -14
- package/src/components/FallbackBoundary/index.tsx +0 -15
- package/src/components/IconInput.tsx +0 -70
- package/src/components/OverlayMenu.tsx +0 -77
- package/src/components/ProgressBar.tsx +0 -153
- package/src/components/Tooltip/Tooltip.tsx +0 -36
- package/src/components/Tooltip/TooltipAPI.ts +0 -84
- package/src/components/Tooltip/context.tsx +0 -24
- package/src/components/Tooltip/index.ts +0 -2
- package/src/components/Tooltip/style.tsx +0 -24
- package/src/components/Tooltip/types.ts +0 -15
- package/src/views/Agents.tsx +0 -200
- package/src/views/Home.tsx +0 -109
- package/src/views/MessageInput/ButtonGroup.tsx +0 -91
- package/src/views/MessageInput/InfoBar.tsx +0 -82
- package/src/views/Workspaces.tsx +0 -92
- /package/dist/{components/Tooltip → utils/upload}/types.js +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { useContext, useMemo } from 'react'
|
|
2
2
|
import { DefaultPanel } from './DefaultPanel'
|
|
3
3
|
import { RightPanelContext } from './RightPanelProvider'
|
|
4
|
+
import { panelAnimationTime } from './constants'
|
|
4
5
|
|
|
5
6
|
interface RightPanelOptions {
|
|
6
7
|
title: React.ReactNode,
|
|
@@ -8,11 +9,17 @@ interface RightPanelOptions {
|
|
|
8
9
|
onClose?: () => void,
|
|
9
10
|
}
|
|
10
11
|
|
|
12
|
+
/**
|
|
13
|
+
* @returns teh current content of the right panel
|
|
14
|
+
*/
|
|
11
15
|
export function useRightPanelContent() {
|
|
12
16
|
const { content } = useContext(RightPanelContext)
|
|
13
17
|
return content
|
|
14
18
|
}
|
|
15
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Opens, closes or checks the visibility of the right panel.
|
|
22
|
+
*/
|
|
16
23
|
export function useRightPanel() {
|
|
17
24
|
const ctx = useContext(RightPanelContext)
|
|
18
25
|
const { panel, chatWindow, setContent } = ctx
|
|
@@ -35,7 +42,7 @@ export function useRightPanel() {
|
|
|
35
42
|
ctx.onCloseNext.current?.()
|
|
36
43
|
setTimeout(() => {
|
|
37
44
|
setContent(null)
|
|
38
|
-
},
|
|
45
|
+
}, panelAnimationTime)
|
|
39
46
|
}
|
|
40
47
|
|
|
41
48
|
function isOpen() {
|
package/src/state/ChatEntry.ts
CHANGED
|
@@ -1,13 +1,26 @@
|
|
|
1
|
+
import { ChatStep, HypothesisPMAgent, OpportunitiesPMAgent, PrfaqPMAgent } from '@stack-spot/portal-network'
|
|
2
|
+
import { ColorPaletteName, ColorSchemeName } from '@stack-spot/portal-theme'
|
|
1
3
|
import { pull } from 'lodash'
|
|
2
|
-
import {
|
|
4
|
+
import { LabeledAgent } from './types'
|
|
5
|
+
|
|
6
|
+
export interface ActionDataClick {
|
|
7
|
+
name?: string,
|
|
8
|
+
value?: string[],
|
|
9
|
+
}
|
|
3
10
|
|
|
4
11
|
export interface SerializableAction {
|
|
12
|
+
/**
|
|
13
|
+
* The text for the button or anchor.
|
|
14
|
+
*/
|
|
5
15
|
title: string,
|
|
16
|
+
/**
|
|
17
|
+
* Links open new tabs with urls, while commands send text commands in the chat as if they were written by the user.
|
|
18
|
+
*/
|
|
6
19
|
type: 'link' | 'command',
|
|
7
20
|
/**
|
|
8
|
-
* The URL if the action is a link
|
|
21
|
+
* The URL if the action is a link. The content of the user message otherwise.
|
|
9
22
|
*/
|
|
10
|
-
exec
|
|
23
|
+
exec?: string,
|
|
11
24
|
}
|
|
12
25
|
|
|
13
26
|
export interface ChatAction extends SerializableAction {
|
|
@@ -15,6 +28,26 @@ export interface ChatAction extends SerializableAction {
|
|
|
15
28
|
* @default primary
|
|
16
29
|
*/
|
|
17
30
|
appearance?: 'primary' | 'secondary',
|
|
31
|
+
/**
|
|
32
|
+
* @default inverse
|
|
33
|
+
*/
|
|
34
|
+
colorScheme?: ColorSchemeName,
|
|
35
|
+
/**
|
|
36
|
+
* @default false
|
|
37
|
+
*/
|
|
38
|
+
hideWhenNotLast?: boolean,
|
|
39
|
+
/**
|
|
40
|
+
* @default false
|
|
41
|
+
*/
|
|
42
|
+
disabled?: boolean,
|
|
43
|
+
/**
|
|
44
|
+
* @default button
|
|
45
|
+
*/
|
|
46
|
+
buttonType?: 'submit' | 'button',
|
|
47
|
+
/**
|
|
48
|
+
* @default lg
|
|
49
|
+
*/
|
|
50
|
+
size?: 'lg' | 'md' | 'sm',
|
|
18
51
|
}
|
|
19
52
|
|
|
20
53
|
export interface KnowledgeSource {
|
|
@@ -24,55 +57,192 @@ export interface KnowledgeSource {
|
|
|
24
57
|
documentId: string,
|
|
25
58
|
}
|
|
26
59
|
|
|
60
|
+
export interface ChatTool {
|
|
61
|
+
id: string,
|
|
62
|
+
image?: string,
|
|
63
|
+
name: string,
|
|
64
|
+
description: string,
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export interface UploadedFile {
|
|
68
|
+
id: string,
|
|
69
|
+
name: string,
|
|
70
|
+
image?: string,
|
|
71
|
+
}
|
|
72
|
+
|
|
27
73
|
export interface TextChatEntry {
|
|
28
|
-
|
|
74
|
+
/**
|
|
75
|
+
* "text" for simple unformatted paragraphs. "md" for markdown.
|
|
76
|
+
* "input-text" for text inputs, 'input-radio' and "input-checkbox" for radio and checkbox inputs,
|
|
77
|
+
* "input-phone" for phone formatted inputs and "button-list" for a list of buttons in which only one is selected
|
|
78
|
+
*/
|
|
79
|
+
type: 'text' | 'md' | 'input-text' | 'input-radio' | 'button-list' | 'input-checkbox' | 'input-phone',
|
|
80
|
+
/**
|
|
81
|
+
* If the message was typed by the AI agent (bot), the user or the system (not currently in use).
|
|
82
|
+
*/
|
|
29
83
|
agentType: 'bot' | 'user' | 'system',
|
|
30
|
-
|
|
84
|
+
/**
|
|
85
|
+
* A set of buttons to go after the message.
|
|
86
|
+
*/
|
|
31
87
|
actions?: ChatAction[],
|
|
32
|
-
|
|
88
|
+
/**
|
|
89
|
+
* The content of the message.
|
|
90
|
+
*/
|
|
33
91
|
content: string,
|
|
92
|
+
/**
|
|
93
|
+
* The actual data to send as a message. This is the "content" if not provided.
|
|
94
|
+
*
|
|
95
|
+
* Useful for displaying a text in the chat, via "content", but sending something different to the backend.
|
|
96
|
+
*
|
|
97
|
+
* Serialization: if none of your interceptors return false, this will be converted to a JSON in the last interceptor (sendMessage).
|
|
98
|
+
*
|
|
99
|
+
* Attention: this is ignored by quick commands, which will always use "content".
|
|
100
|
+
*/
|
|
101
|
+
data?: any,
|
|
102
|
+
/**
|
|
103
|
+
* A content that is not shown to the user, it is used only to share data.
|
|
104
|
+
*
|
|
105
|
+
* This is used solely by the onboarding feature (checkboxes and radio button), implemented in the AI Portal. Maybe it shouldn't be
|
|
106
|
+
* implemented here. This needs a review (fixme).
|
|
107
|
+
*
|
|
108
|
+
* This has been implemented because the message rendered is different than the message we wanted to send to the backend.
|
|
109
|
+
*
|
|
110
|
+
* @deprecated prefer "data" instead.
|
|
111
|
+
*/
|
|
112
|
+
hiddenContent?: string[],
|
|
113
|
+
/**
|
|
114
|
+
* The knowledge sources used to create the message.
|
|
115
|
+
*/
|
|
34
116
|
knowledgeSources?: KnowledgeSource[],
|
|
117
|
+
/**
|
|
118
|
+
* The date and time of the message. ISO string.
|
|
119
|
+
*/
|
|
35
120
|
updated?: string,
|
|
36
|
-
|
|
121
|
+
/**
|
|
122
|
+
* The agent who wrote the message. Undefined for the agentType is "user".
|
|
123
|
+
*/
|
|
124
|
+
agent?: LabeledAgent,
|
|
125
|
+
/**
|
|
126
|
+
* The unique identifier of the message.
|
|
127
|
+
*/
|
|
37
128
|
messageId?: string,
|
|
129
|
+
/**
|
|
130
|
+
* If this is set, only an error message is rendered.
|
|
131
|
+
*/
|
|
38
132
|
error?: string,
|
|
39
|
-
|
|
133
|
+
/**
|
|
134
|
+
* A series of badges to display before the content.
|
|
135
|
+
*/
|
|
136
|
+
badges?: { color?: ColorPaletteName, label: string }[],
|
|
137
|
+
/**
|
|
138
|
+
* Whether or not to show this chat entry as a card.
|
|
139
|
+
*/
|
|
140
|
+
card?: boolean,
|
|
141
|
+
/**
|
|
142
|
+
* This entry may contain steps. If so, specify them in this array.
|
|
143
|
+
*/
|
|
144
|
+
steps?: ChatStep[],
|
|
145
|
+
/**
|
|
146
|
+
* If any tool was used to generate the response, its id is returned in this list.
|
|
147
|
+
*/
|
|
148
|
+
tools?: string[],
|
|
149
|
+
/**
|
|
150
|
+
* If opportunities exists in pm agent, its send in this list.
|
|
151
|
+
*/
|
|
152
|
+
opportunities?: OpportunitiesPMAgent[],
|
|
153
|
+
/**
|
|
154
|
+
* If hypothesis exists in pm agent, its send in this list.
|
|
155
|
+
*/
|
|
156
|
+
hypothesis?: HypothesisPMAgent[],
|
|
157
|
+
/**
|
|
158
|
+
* If prfaq exists in pm agent, its send in this object.
|
|
159
|
+
*/
|
|
160
|
+
prfaq?: PrfaqPMAgent,
|
|
161
|
+
/*
|
|
162
|
+
* Options for radio, checkbox or button type.
|
|
163
|
+
*/
|
|
164
|
+
options?: { color?: ColorSchemeName, label: string, value?: string, hasInput?: boolean }[],
|
|
165
|
+
/**
|
|
166
|
+
* Name to be used in input type fields.
|
|
167
|
+
*/
|
|
168
|
+
name?: string,
|
|
169
|
+
/**
|
|
170
|
+
* Whether or not a input field is required.
|
|
171
|
+
*/
|
|
172
|
+
required?: boolean,
|
|
173
|
+
/**
|
|
174
|
+
* The validations of input fields.
|
|
175
|
+
*/
|
|
176
|
+
validations?: {
|
|
177
|
+
minLength?: number,
|
|
178
|
+
maxLength?: number,
|
|
179
|
+
pattern?: string,
|
|
180
|
+
},
|
|
181
|
+
/**
|
|
182
|
+
* Valid for input types.
|
|
183
|
+
*/
|
|
184
|
+
initialValue?: string[],
|
|
185
|
+
/**
|
|
186
|
+
* If this chat entry contains any uploaded file, these are the files being uploaded along the message.
|
|
187
|
+
*/
|
|
188
|
+
upload?: UploadedFile[],
|
|
189
|
+
/**
|
|
190
|
+
* True if the entry is done streaming, false otherwise. Undefined may be used when streaming info is not available.
|
|
191
|
+
*/
|
|
192
|
+
done?: boolean,
|
|
193
|
+
/**
|
|
194
|
+
* True if, at some point, this entry had a planning stage (related to tools).
|
|
195
|
+
*/
|
|
196
|
+
hasPlanning?: boolean,
|
|
40
197
|
}
|
|
41
198
|
|
|
42
199
|
type ChatEntryListener = (value: TextChatEntry) => void
|
|
43
200
|
|
|
201
|
+
// this id is unique for each message and used for rendering. The `messageId`, which comes from the backend, is not always available and,
|
|
202
|
+
// therefore, can't be used for this purpose.
|
|
44
203
|
let nextId = 0
|
|
45
204
|
|
|
205
|
+
/**
|
|
206
|
+
* A message (entry) in the chat.
|
|
207
|
+
*/
|
|
46
208
|
export class ChatEntry {
|
|
47
209
|
readonly id: number
|
|
48
210
|
private value: TextChatEntry
|
|
49
|
-
private streamFinished: boolean
|
|
50
211
|
private listeners: ChatEntryListener[] = []
|
|
51
|
-
abort: () => void
|
|
52
212
|
|
|
53
213
|
/**
|
|
54
214
|
* @param value the value of the entry.
|
|
55
|
-
* @param isStreamed whether or not this entry is streamed. Defaults to false.
|
|
56
|
-
* @param abort an abort function to cancel the transmission of this chat entry. Specially useful for canceling streamings.
|
|
57
215
|
*/
|
|
58
|
-
constructor(value: TextChatEntry
|
|
216
|
+
constructor(value: TextChatEntry) {
|
|
59
217
|
this.id = nextId++
|
|
60
218
|
this.value = value
|
|
61
|
-
this.streamFinished = !isStreamed
|
|
62
|
-
this.abort = abort
|
|
63
219
|
}
|
|
64
220
|
|
|
65
|
-
|
|
221
|
+
/**
|
|
222
|
+
* Utility function to create a user entry.
|
|
223
|
+
* @param content the message's content.
|
|
224
|
+
* @param isMd whether or not this should be rendered as markdown.
|
|
225
|
+
* @param hiddenContent the message's content.
|
|
226
|
+
* @returns a new ChatEntry.
|
|
227
|
+
*/
|
|
228
|
+
static createUserEntry(content: string, isMd = false, fieldName?: string, hiddenContent?: string[], data?: any) {
|
|
66
229
|
return new ChatEntry({
|
|
67
230
|
agentType: 'user',
|
|
68
231
|
type: isMd ? 'md' : 'text',
|
|
69
232
|
content,
|
|
233
|
+
name: fieldName,
|
|
234
|
+
hiddenContent,
|
|
235
|
+
data,
|
|
70
236
|
updated: new Date().toISOString(),
|
|
71
237
|
})
|
|
72
238
|
}
|
|
73
239
|
|
|
74
|
-
|
|
75
|
-
|
|
240
|
+
/**
|
|
241
|
+
* Utility function to create a streamed entry from the AI agent.
|
|
242
|
+
* @returns a new ChatEntry.
|
|
243
|
+
*/
|
|
244
|
+
static createStreamedBotEntry() {
|
|
245
|
+
return new ChatEntry({ agentType: 'bot', type: 'md', content: '', done: false })
|
|
76
246
|
}
|
|
77
247
|
|
|
78
248
|
setValue(value: TextChatEntry) {
|
|
@@ -84,16 +254,13 @@ export class ChatEntry {
|
|
|
84
254
|
return this.value
|
|
85
255
|
}
|
|
86
256
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return this.streamFinished
|
|
93
|
-
}
|
|
94
|
-
|
|
257
|
+
/**
|
|
258
|
+
* Watches the value of this ChatEntry.
|
|
259
|
+
* @param listener a function to call whenever the value changes.
|
|
260
|
+
* @returns a function that removes the listener.
|
|
261
|
+
*/
|
|
95
262
|
onChange(listener: ChatEntryListener) {
|
|
96
|
-
|
|
263
|
+
this.listeners.push(listener)
|
|
97
264
|
return () => {
|
|
98
265
|
pull(this.listeners, listener)
|
|
99
266
|
}
|
package/src/state/ChatState.ts
CHANGED
|
@@ -1,15 +1,45 @@
|
|
|
1
1
|
import { dropRight, last, pull } from 'lodash'
|
|
2
|
+
import { ulid } from 'ulid'
|
|
3
|
+
import { AbortedError } from '../AbortedError'
|
|
4
|
+
import { ChatFeatures, getFeaturesWithDefaults } from '../features'
|
|
5
|
+
import { UploadManager } from '../utils/upload/UploadManager'
|
|
2
6
|
import { ChatEntry } from './ChatEntry'
|
|
7
|
+
import { acceptedFileTypes, maxFileSize, maxUploadItems } from './constants'
|
|
3
8
|
import { ObservableState } from './ObservableState'
|
|
4
|
-
import { Labeled,
|
|
9
|
+
import { Labeled, LabeledAgent } from './types'
|
|
5
10
|
|
|
6
|
-
export interface
|
|
11
|
+
export interface ChatPropertiesWithOptionalFeatures {
|
|
12
|
+
/**
|
|
13
|
+
* The name of the chat.
|
|
14
|
+
*/
|
|
7
15
|
label: string,
|
|
8
|
-
|
|
16
|
+
/**
|
|
17
|
+
* The current AI agent.
|
|
18
|
+
*/
|
|
19
|
+
agent?: LabeledAgent,
|
|
20
|
+
/**
|
|
21
|
+
* The current workspace.
|
|
22
|
+
*/
|
|
9
23
|
workspace?: Labeled,
|
|
24
|
+
/**
|
|
25
|
+
* The current stack.
|
|
26
|
+
*/
|
|
10
27
|
stack?: Labeled,
|
|
28
|
+
/**
|
|
29
|
+
* The current knowledge sources.
|
|
30
|
+
*/
|
|
11
31
|
knowledgeSources?: Labeled[],
|
|
32
|
+
/**
|
|
33
|
+
* Whether or not the chat is in a loading state.
|
|
34
|
+
*/
|
|
12
35
|
isLoading?: boolean,
|
|
36
|
+
/**
|
|
37
|
+
* Whether or not the chat is planning.
|
|
38
|
+
*/
|
|
39
|
+
isPlaning?: boolean,
|
|
40
|
+
/**
|
|
41
|
+
* The value of the next message. This is the value of the text typed in the textarea below the chat.
|
|
42
|
+
*/
|
|
13
43
|
nextMessage?: string,
|
|
14
44
|
/**
|
|
15
45
|
* The current code in the editor.
|
|
@@ -20,41 +50,102 @@ export interface ChatProperties {
|
|
|
20
50
|
*/
|
|
21
51
|
codeLanguage?: string,
|
|
22
52
|
/**
|
|
23
|
-
* The current selection in the editor
|
|
53
|
+
* The current selection in the editor.
|
|
24
54
|
*/
|
|
25
55
|
codeSelection?: string,
|
|
56
|
+
/**
|
|
57
|
+
* The features enabled for this chat.
|
|
58
|
+
*
|
|
59
|
+
* If a feature is marked as false, it's disabled, otherwise it's enabled.
|
|
60
|
+
*/
|
|
61
|
+
features?: Partial<ChatFeatures>,
|
|
62
|
+
/**
|
|
63
|
+
* The current LLM (Large Language Model) being used for this chat.
|
|
64
|
+
*/
|
|
65
|
+
selected_model_id?: string,
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export interface ChatProperties extends ChatPropertiesWithOptionalFeatures {
|
|
69
|
+
/**
|
|
70
|
+
* The features enabled for this chat.
|
|
71
|
+
*/
|
|
72
|
+
features: ChatFeatures,
|
|
26
73
|
}
|
|
27
74
|
|
|
28
75
|
type ChatMessagesListener = (chat: ChatEntry[]) => void
|
|
29
76
|
|
|
30
|
-
export type MessageInterceptor = (
|
|
77
|
+
export type MessageInterceptor = (
|
|
78
|
+
entry: ChatEntry, chat: ChatState, signal: AbortSignal,
|
|
79
|
+
) => boolean | undefined | void | Promise<boolean | undefined | void>
|
|
31
80
|
|
|
32
81
|
interface Options {
|
|
82
|
+
/**
|
|
83
|
+
* The unique identifier for this chat (conversationId).
|
|
84
|
+
*/
|
|
33
85
|
id: string,
|
|
34
|
-
|
|
86
|
+
/**
|
|
87
|
+
* The initial value for the state of this chat.
|
|
88
|
+
*/
|
|
89
|
+
initial: ChatPropertiesWithOptionalFeatures,
|
|
90
|
+
/**
|
|
91
|
+
* The interceptors to use for the messages pushed to this chat.
|
|
92
|
+
*
|
|
93
|
+
* The interceptors are run whenever a new message (chat entry) is added to the chat. They're always run in the order of the array and if
|
|
94
|
+
* any returns a promise, the promise is awaited before running the next.
|
|
95
|
+
*
|
|
96
|
+
* If an interceptor returns false or resolves to false (if a promise), the execution is interrupted, i.e. the next interceptors are not
|
|
97
|
+
* run.
|
|
98
|
+
*
|
|
99
|
+
* An interceptor receives three parameters:
|
|
100
|
+
* 1. the chat entry added;
|
|
101
|
+
* 2. the chat state;
|
|
102
|
+
* 3. an AbortSignal that can be aborted by calling `abort()` on the ChatState. Once the signal is aborted, the interceptor must abort all
|
|
103
|
+
* of its operations.
|
|
104
|
+
*
|
|
105
|
+
* Attention: when multiple messages are added at once, only the last goes through the interceptors. Furthermore, messages created by the
|
|
106
|
+
* constructor don't go through the interceptors, only messages added via `pushMessage` do.
|
|
107
|
+
*/
|
|
35
108
|
interceptors?: MessageInterceptor[],
|
|
109
|
+
/**
|
|
110
|
+
* The content of this chat, i.e. its messages.
|
|
111
|
+
*/
|
|
36
112
|
entries?: ChatEntry[],
|
|
113
|
+
/**
|
|
114
|
+
* Whether or not the label for this chat is real (persisted in the backend) or just a mock.
|
|
115
|
+
*
|
|
116
|
+
* This should be true if the label is just a mock.
|
|
117
|
+
*/
|
|
118
|
+
untitled?: boolean,
|
|
37
119
|
}
|
|
38
120
|
|
|
121
|
+
/**
|
|
122
|
+
* A chat. Each chat tab is a different ChatState.
|
|
123
|
+
*/
|
|
39
124
|
export class ChatState extends ObservableState<ChatProperties> {
|
|
40
125
|
readonly id: string
|
|
41
126
|
private entries: ChatEntry[]
|
|
42
127
|
private messagesListeners: ChatMessagesListener[] = []
|
|
43
128
|
private readonly interceptors: MessageInterceptor[]
|
|
44
|
-
|
|
45
129
|
/**
|
|
46
|
-
*
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
*
|
|
51
|
-
* do.
|
|
130
|
+
* A memory space (map) to be used by interceptors.
|
|
131
|
+
*/
|
|
132
|
+
interceptorMemory = new Map<string, any>()
|
|
133
|
+
/**
|
|
134
|
+
* Abort signals currently active.
|
|
52
135
|
*/
|
|
53
|
-
|
|
54
|
-
|
|
136
|
+
private abortions: AbortController[] = []
|
|
137
|
+
/**
|
|
138
|
+
* Used to manage uploads for this Chat.
|
|
139
|
+
*/
|
|
140
|
+
readonly uploadManager = new UploadManager({ maxSize: maxFileSize, accept: acceptedFileTypes, maxItems: maxUploadItems })
|
|
141
|
+
untitled: boolean
|
|
142
|
+
|
|
143
|
+
constructor({ id, initial, entries = [], interceptors = [], untitled = false }: Options) {
|
|
144
|
+
super({ ...initial, features: getFeaturesWithDefaults(initial.features) })
|
|
55
145
|
this.id = id
|
|
56
146
|
this.interceptors = interceptors
|
|
57
147
|
this.entries = entries
|
|
148
|
+
this.untitled = untitled
|
|
58
149
|
}
|
|
59
150
|
|
|
60
151
|
private runMessagesListeners() {
|
|
@@ -62,12 +153,24 @@ export class ChatState extends ObservableState<ChatProperties> {
|
|
|
62
153
|
}
|
|
63
154
|
|
|
64
155
|
private async runInterceptors(entry: ChatEntry) {
|
|
156
|
+
const abort = new AbortController()
|
|
157
|
+
this.abortions.push(abort)
|
|
65
158
|
for (const interceptor of this.interceptors) {
|
|
66
|
-
|
|
67
|
-
|
|
159
|
+
try {
|
|
160
|
+
const result = await interceptor(entry, this, abort.signal)
|
|
161
|
+
if (result === false) break
|
|
162
|
+
} catch (error) {
|
|
163
|
+
pull(this.abortions, abort)
|
|
164
|
+
throw error
|
|
165
|
+
}
|
|
68
166
|
}
|
|
167
|
+
pull(this.abortions, abort)
|
|
69
168
|
}
|
|
70
169
|
|
|
170
|
+
/**
|
|
171
|
+
* Adds one or more messages to the chat. Messages are appended to the end of the chat.
|
|
172
|
+
* @param entries the messages to add.
|
|
173
|
+
*/
|
|
71
174
|
pushMessage(...entries: ChatEntry[]) {
|
|
72
175
|
if (!entries.length) return
|
|
73
176
|
this.entries = [...this.entries, ...entries]
|
|
@@ -75,19 +178,71 @@ export class ChatState extends ObservableState<ChatProperties> {
|
|
|
75
178
|
this.runInterceptors(last(entries)!)
|
|
76
179
|
}
|
|
77
180
|
|
|
181
|
+
/**
|
|
182
|
+
* Removes one or more messages from the end of the chat.
|
|
183
|
+
* @param quantity the number of messages to remove. Defaults to 1.
|
|
184
|
+
*/
|
|
78
185
|
popMessage(quantity = 1) {
|
|
79
186
|
this.entries = dropRight(this.entries, quantity)
|
|
80
187
|
this.runMessagesListeners()
|
|
81
188
|
}
|
|
82
189
|
|
|
190
|
+
/**
|
|
191
|
+
* @returns the current list of messages.
|
|
192
|
+
*/
|
|
83
193
|
getMessages() {
|
|
84
194
|
return this.entries
|
|
85
195
|
}
|
|
86
196
|
|
|
197
|
+
/**
|
|
198
|
+
* Watches this chat for changes in the list of messages.
|
|
199
|
+
* @param listener the function to call whenever the list of messages changes.
|
|
200
|
+
* @returns a function that removes the listener.
|
|
201
|
+
*/
|
|
87
202
|
onChangeMessages(listener: ChatMessagesListener) {
|
|
88
203
|
this.messagesListeners.push(listener)
|
|
89
204
|
return () => {
|
|
90
205
|
pull(this.messagesListeners, listener)
|
|
91
206
|
}
|
|
92
207
|
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Aborts all currently running chat interceptors.
|
|
211
|
+
*/
|
|
212
|
+
abort() {
|
|
213
|
+
this.abortions.forEach(a => a.abort(new AbortedError()))
|
|
214
|
+
this.abortions = []
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Creates a chat that has the same state value and interceptors as this one.
|
|
219
|
+
*
|
|
220
|
+
* All abortions from this chat will be transferred to the new chat. The abortions of this chat will be cleared.
|
|
221
|
+
*/
|
|
222
|
+
transferToNewChat(label: string) {
|
|
223
|
+
const newChat = new ChatState({
|
|
224
|
+
id: ulid(),
|
|
225
|
+
initial: { ...this.state, label },
|
|
226
|
+
interceptors: this.interceptors,
|
|
227
|
+
})
|
|
228
|
+
newChat.abortions = this.abortions
|
|
229
|
+
this.abortions = []
|
|
230
|
+
return newChat
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Returns a promise that resolves when the chat is no longer loading (isLoading state).
|
|
235
|
+
*
|
|
236
|
+
* If this is called when the chat is not loading, a resolved promise is returned.
|
|
237
|
+
*/
|
|
238
|
+
whenLoadingEnds(): Promise<void> {
|
|
239
|
+
return this.get('isLoading') ? new Promise((resolve) => {
|
|
240
|
+
const removeListener = this.onChange('isLoading', (value) => {
|
|
241
|
+
if (!value) {
|
|
242
|
+
resolve()
|
|
243
|
+
removeListener()
|
|
244
|
+
}
|
|
245
|
+
})
|
|
246
|
+
}) : Promise.resolve()
|
|
247
|
+
}
|
|
93
248
|
}
|