@stack-spot/ai-chat-widget 0.1.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/dist/StackspotAIWidget.d.ts +13 -0
- package/dist/StackspotAIWidget.d.ts.map +1 -0
- package/dist/StackspotAIWidget.js +32 -0
- package/dist/StackspotAIWidget.js.map +1 -0
- package/dist/chat-interceptors/quick-commands.d.ts +4 -0
- package/dist/chat-interceptors/quick-commands.d.ts.map +1 -0
- package/dist/chat-interceptors/quick-commands.js +11 -0
- package/dist/chat-interceptors/quick-commands.js.map +1 -0
- package/dist/chat-interceptors/send-message.d.ts +4 -0
- package/dist/chat-interceptors/send-message.d.ts.map +1 -0
- package/dist/chat-interceptors/send-message.js +36 -0
- package/dist/chat-interceptors/send-message.js.map +1 -0
- package/dist/components/Accordion.d.ts +10 -0
- package/dist/components/Accordion.d.ts.map +1 -0
- package/dist/components/Accordion.js +46 -0
- package/dist/components/Accordion.js.map +1 -0
- package/dist/components/AdaptiveTextArea.d.ts +10 -0
- package/dist/components/AdaptiveTextArea.d.ts.map +1 -0
- package/dist/components/AdaptiveTextArea.js +28 -0
- package/dist/components/AdaptiveTextArea.js.map +1 -0
- package/dist/components/Code.d.ts +19 -0
- package/dist/components/Code.d.ts.map +1 -0
- package/dist/components/Code.js +112 -0
- package/dist/components/Code.js.map +1 -0
- package/dist/components/Editor.d.ts +9 -0
- package/dist/components/Editor.d.ts.map +1 -0
- package/dist/components/Editor.js +2 -0
- package/dist/components/Editor.js.map +1 -0
- package/dist/components/FadingOverflow.d.ts +12 -0
- package/dist/components/FadingOverflow.d.ts.map +1 -0
- package/dist/components/FadingOverflow.js +216 -0
- package/dist/components/FadingOverflow.js.map +1 -0
- package/dist/components/FallbackBoundary/ErrorBoundary.d.ts +30 -0
- package/dist/components/FallbackBoundary/ErrorBoundary.d.ts.map +1 -0
- package/dist/components/FallbackBoundary/ErrorBoundary.js +38 -0
- package/dist/components/FallbackBoundary/ErrorBoundary.js.map +1 -0
- package/dist/components/FallbackBoundary/Loading.d.ts +2 -0
- package/dist/components/FallbackBoundary/Loading.d.ts.map +1 -0
- package/dist/components/FallbackBoundary/Loading.js +12 -0
- package/dist/components/FallbackBoundary/Loading.js.map +1 -0
- package/dist/components/FallbackBoundary/index.d.ts +6 -0
- package/dist/components/FallbackBoundary/index.d.ts.map +1 -0
- package/dist/components/FallbackBoundary/index.js +9 -0
- package/dist/components/FallbackBoundary/index.js.map +1 -0
- package/dist/components/HistoryList.d.ts +13 -0
- package/dist/components/HistoryList.d.ts.map +1 -0
- package/dist/components/HistoryList.js +4 -0
- package/dist/components/HistoryList.js.map +1 -0
- package/dist/components/IconInput.d.ts +7 -0
- package/dist/components/IconInput.d.ts.map +1 -0
- package/dist/components/IconInput.js +58 -0
- package/dist/components/IconInput.js.map +1 -0
- package/dist/components/Markdown.d.ts +9 -0
- package/dist/components/Markdown.d.ts.map +1 -0
- package/dist/components/Markdown.js +17 -0
- package/dist/components/Markdown.js.map +1 -0
- package/dist/components/OverlayMenu.d.ts +9 -0
- package/dist/components/OverlayMenu.d.ts.map +1 -0
- package/dist/components/OverlayMenu.js +2 -0
- package/dist/components/OverlayMenu.js.map +1 -0
- package/dist/components/ProgressBar.d.ts +11 -0
- package/dist/components/ProgressBar.d.ts.map +1 -0
- package/dist/components/ProgressBar.js +126 -0
- package/dist/components/ProgressBar.js.map +1 -0
- package/dist/components/QuickStartButton.d.ts +8 -0
- package/dist/components/QuickStartButton.d.ts.map +1 -0
- package/dist/components/QuickStartButton.js +40 -0
- package/dist/components/QuickStartButton.js.map +1 -0
- package/dist/components/RightPanelForm.d.ts +5 -0
- package/dist/components/RightPanelForm.d.ts.map +1 -0
- package/dist/components/RightPanelForm.js +45 -0
- package/dist/components/RightPanelForm.js.map +1 -0
- package/dist/components/RightPanelTabs.d.ts +10 -0
- package/dist/components/RightPanelTabs.d.ts.map +1 -0
- package/dist/components/RightPanelTabs.js +20 -0
- package/dist/components/RightPanelTabs.js.map +1 -0
- package/dist/components/TabManager.d.ts +34 -0
- package/dist/components/TabManager.d.ts.map +1 -0
- package/dist/components/TabManager.js +158 -0
- package/dist/components/TabManager.js.map +1 -0
- package/dist/components/Tooltip/Tooltip.d.ts +11 -0
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -0
- package/dist/components/Tooltip/Tooltip.js +9 -0
- package/dist/components/Tooltip/Tooltip.js.map +1 -0
- package/dist/components/Tooltip/TooltipAPI.d.ts +10 -0
- package/dist/components/Tooltip/TooltipAPI.d.ts.map +1 -0
- package/dist/components/Tooltip/TooltipAPI.js +48 -0
- package/dist/components/Tooltip/TooltipAPI.js.map +1 -0
- package/dist/components/Tooltip/context.d.ts +5 -0
- package/dist/components/Tooltip/context.d.ts.map +1 -0
- package/dist/components/Tooltip/context.js +18 -0
- package/dist/components/Tooltip/context.js.map +1 -0
- package/dist/components/Tooltip/index.d.ts +3 -0
- package/dist/components/Tooltip/index.d.ts.map +1 -0
- package/dist/components/Tooltip/index.js +3 -0
- package/dist/components/Tooltip/index.js.map +1 -0
- package/dist/components/Tooltip/style.d.ts +4 -0
- package/dist/components/Tooltip/style.d.ts.map +1 -0
- package/dist/components/Tooltip/style.js +23 -0
- package/dist/components/Tooltip/style.js.map +1 -0
- package/dist/components/Tooltip/types.d.ts +8 -0
- package/dist/components/Tooltip/types.d.ts.map +1 -0
- package/dist/components/Tooltip/types.js +2 -0
- package/dist/components/Tooltip/types.js.map +1 -0
- package/dist/components/form/DescribedCheckboxGroup.d.ts +3 -0
- package/dist/components/form/DescribedCheckboxGroup.d.ts.map +1 -0
- package/dist/components/form/DescribedCheckboxGroup.js +23 -0
- package/dist/components/form/DescribedCheckboxGroup.js.map +1 -0
- package/dist/components/form/DescribedRadioGroup.d.ts +3 -0
- package/dist/components/form/DescribedRadioGroup.d.ts.map +1 -0
- package/dist/components/form/DescribedRadioGroup.js +18 -0
- package/dist/components/form/DescribedRadioGroup.js.map +1 -0
- package/dist/components/form/styled.d.ts +2 -0
- package/dist/components/form/styled.d.ts.map +1 -0
- package/dist/components/form/styled.js +41 -0
- package/dist/components/form/styled.js.map +1 -0
- package/dist/components/form/types.d.ts +19 -0
- package/dist/components/form/types.d.ts.map +1 -0
- package/dist/components/form/types.js +2 -0
- package/dist/components/form/types.js.map +1 -0
- package/dist/context/AIWidgetProvider.d.ts +4 -0
- package/dist/context/AIWidgetProvider.d.ts.map +1 -0
- package/dist/context/AIWidgetProvider.js +4 -0
- package/dist/context/AIWidgetProvider.js.map +1 -0
- package/dist/context/hooks.d.ts +18 -0
- package/dist/context/hooks.d.ts.map +1 -0
- package/dist/context/hooks.js +82 -0
- package/dist/context/hooks.js.map +1 -0
- package/dist/features.d.ts +13 -0
- package/dist/features.d.ts.map +1 -0
- package/dist/features.js +6 -0
- package/dist/features.js.map +1 -0
- package/dist/hooks/chat-scroll.d.ts +7 -0
- package/dist/hooks/chat-scroll.d.ts.map +1 -0
- package/dist/hooks/chat-scroll.js +15 -0
- package/dist/hooks/chat-scroll.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/layout.css +119 -0
- package/dist/right-panel/DefaultPanel.d.ts +9 -0
- package/dist/right-panel/DefaultPanel.d.ts.map +1 -0
- package/dist/right-panel/DefaultPanel.js +46 -0
- package/dist/right-panel/DefaultPanel.js.map +1 -0
- package/dist/right-panel/RightPanel.d.ts +2 -0
- package/dist/right-panel/RightPanel.d.ts.map +1 -0
- package/dist/right-panel/RightPanel.js +6 -0
- package/dist/right-panel/RightPanel.js.map +1 -0
- package/dist/right-panel/RightPanelProvider.d.ts +13 -0
- package/dist/right-panel/RightPanelProvider.d.ts.map +1 -0
- package/dist/right-panel/RightPanelProvider.js +10 -0
- package/dist/right-panel/RightPanelProvider.js.map +1 -0
- package/dist/right-panel/hooks.d.ts +13 -0
- package/dist/right-panel/hooks.d.ts.map +1 -0
- package/dist/right-panel/hooks.js +39 -0
- package/dist/right-panel/hooks.js.map +1 -0
- package/dist/state/ChatEntry.d.ts +48 -0
- package/dist/state/ChatEntry.d.ts.map +1 -0
- package/dist/state/ChatEntry.js +55 -0
- package/dist/state/ChatEntry.js.map +1 -0
- package/dist/state/ChatState.d.ts +46 -0
- package/dist/state/ChatState.d.ts.map +1 -0
- package/dist/state/ChatState.js +53 -0
- package/dist/state/ChatState.js.map +1 -0
- package/dist/state/ChatTabsController.d.ts +17 -0
- package/dist/state/ChatTabsController.d.ts.map +1 -0
- package/dist/state/ChatTabsController.js +47 -0
- package/dist/state/ChatTabsController.js.map +1 -0
- package/dist/state/ObservableState.d.ts +10 -0
- package/dist/state/ObservableState.d.ts.map +1 -0
- package/dist/state/ObservableState.js +25 -0
- package/dist/state/ObservableState.js.map +1 -0
- package/dist/state/WidgetState.d.ts +19 -0
- package/dist/state/WidgetState.d.ts.map +1 -0
- package/dist/state/WidgetState.js +29 -0
- package/dist/state/WidgetState.js.map +1 -0
- package/dist/types.d.ts +17 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/chat.d.ts +6 -0
- package/dist/utils/chat.d.ts.map +1 -0
- package/dist/utils/chat.js +26 -0
- package/dist/utils/chat.js.map +1 -0
- package/dist/utils/date.d.ts +6 -0
- package/dist/utils/date.d.ts.map +1 -0
- package/dist/utils/date.js +38 -0
- package/dist/utils/date.js.map +1 -0
- package/dist/views/Agents.d.ts +2 -0
- package/dist/views/Agents.d.ts.map +1 -0
- package/dist/views/Agents.js +2 -0
- package/dist/views/Agents.js.map +1 -0
- package/dist/views/Chat/AgentInfo.d.ts +6 -0
- package/dist/views/Chat/AgentInfo.d.ts.map +1 -0
- package/dist/views/Chat/AgentInfo.js +7 -0
- package/dist/views/Chat/AgentInfo.js.map +1 -0
- package/dist/views/Chat/ChatMessage.d.ts +6 -0
- package/dist/views/Chat/ChatMessage.d.ts.map +1 -0
- package/dist/views/Chat/ChatMessage.js +61 -0
- package/dist/views/Chat/ChatMessage.js.map +1 -0
- package/dist/views/Chat/ChatMessages.d.ts +7 -0
- package/dist/views/Chat/ChatMessages.d.ts.map +1 -0
- package/dist/views/Chat/ChatMessages.js +12 -0
- package/dist/views/Chat/ChatMessages.js.map +1 -0
- package/dist/views/Chat/index.d.ts +6 -0
- package/dist/views/Chat/index.d.ts.map +1 -0
- package/dist/views/Chat/index.js +8 -0
- package/dist/views/Chat/index.js.map +1 -0
- package/dist/views/Chat/styled.d.ts +2 -0
- package/dist/views/Chat/styled.d.ts.map +1 -0
- package/dist/views/Chat/styled.js +116 -0
- package/dist/views/Chat/styled.js.map +1 -0
- package/dist/views/ChatTabSelection.d.ts +8 -0
- package/dist/views/ChatTabSelection.d.ts.map +1 -0
- package/dist/views/ChatTabSelection.js +45 -0
- package/dist/views/ChatTabSelection.js.map +1 -0
- package/dist/views/Editor.d.ts +2 -0
- package/dist/views/Editor.d.ts.map +1 -0
- package/dist/views/Editor.js +2 -0
- package/dist/views/Editor.js.map +1 -0
- package/dist/views/Home.d.ts +6 -0
- package/dist/views/Home.d.ts.map +1 -0
- package/dist/views/Home.js +68 -0
- package/dist/views/Home.js.map +1 -0
- package/dist/views/KnowledgeSources.d.ts +2 -0
- package/dist/views/KnowledgeSources.d.ts.map +1 -0
- package/dist/views/KnowledgeSources.js +82 -0
- package/dist/views/KnowledgeSources.js.map +1 -0
- package/dist/views/MessageInput/ButtonGroup.d.ts +12 -0
- package/dist/views/MessageInput/ButtonGroup.d.ts.map +1 -0
- package/dist/views/MessageInput/ButtonGroup.js +22 -0
- package/dist/views/MessageInput/ButtonGroup.js.map +1 -0
- package/dist/views/MessageInput/InfoBar.d.ts +2 -0
- package/dist/views/MessageInput/InfoBar.d.ts.map +1 -0
- package/dist/views/MessageInput/InfoBar.js +28 -0
- package/dist/views/MessageInput/InfoBar.js.map +1 -0
- package/dist/views/MessageInput/dictionary.d.ts +2 -0
- package/dist/views/MessageInput/dictionary.d.ts.map +1 -0
- package/dist/views/MessageInput/dictionary.js +35 -0
- package/dist/views/MessageInput/dictionary.js.map +1 -0
- package/dist/views/MessageInput/index.d.ts +7 -0
- package/dist/views/MessageInput/index.d.ts.map +1 -0
- package/dist/views/MessageInput/index.js +43 -0
- package/dist/views/MessageInput/index.js.map +1 -0
- package/dist/views/MessageInput/styled.d.ts +2 -0
- package/dist/views/MessageInput/styled.d.ts.map +1 -0
- package/dist/views/MessageInput/styled.js +195 -0
- package/dist/views/MessageInput/styled.js.map +1 -0
- package/dist/views/MinimizedHeader.d.ts +3 -0
- package/dist/views/MinimizedHeader.d.ts.map +1 -0
- package/dist/views/MinimizedHeader.js +76 -0
- package/dist/views/MinimizedHeader.js.map +1 -0
- package/dist/views/Stacks.d.ts +2 -0
- package/dist/views/Stacks.d.ts.map +1 -0
- package/dist/views/Stacks.js +73 -0
- package/dist/views/Stacks.js.map +1 -0
- package/dist/views/Workspaces.d.ts +2 -0
- package/dist/views/Workspaces.d.ts.map +1 -0
- package/dist/views/Workspaces.js +59 -0
- package/dist/views/Workspaces.js.map +1 -0
- package/package.json +52 -0
- package/src/StackspotAIWidget.tsx +65 -0
- package/src/chat-interceptors/quick-commands.ts +12 -0
- package/src/chat-interceptors/send-message.ts +35 -0
- package/src/components/Accordion.tsx +64 -0
- package/src/components/AdaptiveTextArea.tsx +34 -0
- package/src/components/Code.tsx +201 -0
- package/src/components/Editor.tsx +12 -0
- package/src/components/FadingOverflow.tsx +234 -0
- package/src/components/FallbackBoundary/ErrorBoundary.tsx +48 -0
- package/src/components/FallbackBoundary/Loading.tsx +14 -0
- package/src/components/FallbackBoundary/index.tsx +15 -0
- package/src/components/HistoryList.tsx +16 -0
- package/src/components/IconInput.tsx +70 -0
- package/src/components/Markdown.tsx +53 -0
- package/src/components/OverlayMenu.tsx +10 -0
- package/src/components/ProgressBar.tsx +153 -0
- package/src/components/QuickStartButton.tsx +51 -0
- package/src/components/RightPanelForm.tsx +55 -0
- package/src/components/RightPanelTabs.tsx +39 -0
- package/src/components/TabManager.tsx +223 -0
- package/src/components/Tooltip/Tooltip.tsx +30 -0
- package/src/components/Tooltip/TooltipAPI.ts +46 -0
- package/src/components/Tooltip/context.tsx +24 -0
- package/src/components/Tooltip/index.ts +2 -0
- package/src/components/Tooltip/style.tsx +25 -0
- package/src/components/Tooltip/types.ts +8 -0
- package/src/components/form/DescribedCheckboxGroup.tsx +39 -0
- package/src/components/form/DescribedRadioGroup.tsx +33 -0
- package/src/components/form/styled.ts +41 -0
- package/src/components/form/types.ts +21 -0
- package/src/context/AIWidgetProvider.tsx +6 -0
- package/src/context/hooks.ts +93 -0
- package/src/features.ts +18 -0
- package/src/hooks/chat-scroll.ts +14 -0
- package/src/index.ts +8 -0
- package/src/layout.css +119 -0
- package/src/right-panel/DefaultPanel.tsx +67 -0
- package/src/right-panel/RightPanel.tsx +6 -0
- package/src/right-panel/RightPanelProvider.tsx +20 -0
- package/src/right-panel/hooks.tsx +47 -0
- package/src/state/ChatEntry.ts +95 -0
- package/src/state/ChatState.ts +85 -0
- package/src/state/ChatTabsController.ts +55 -0
- package/src/state/ObservableState.ts +35 -0
- package/src/state/WidgetState.ts +42 -0
- package/src/types.ts +20 -0
- package/src/utils/chat.ts +30 -0
- package/src/utils/date.ts +40 -0
- package/src/views/Agents.tsx +1 -0
- package/src/views/Chat/AgentInfo.tsx +17 -0
- package/src/views/Chat/ChatMessage.tsx +89 -0
- package/src/views/Chat/ChatMessages.tsx +16 -0
- package/src/views/Chat/index.tsx +11 -0
- package/src/views/Chat/styled.ts +116 -0
- package/src/views/ChatTabSelection.tsx +65 -0
- package/src/views/Editor.tsx +1 -0
- package/src/views/Home.tsx +109 -0
- package/src/views/KnowledgeSources.tsx +115 -0
- package/src/views/MessageInput/ButtonGroup.tsx +84 -0
- package/src/views/MessageInput/InfoBar.tsx +69 -0
- package/src/views/MessageInput/dictionary.ts +36 -0
- package/src/views/MessageInput/index.tsx +79 -0
- package/src/views/MessageInput/styled.ts +196 -0
- package/src/views/MinimizedHeader.tsx +94 -0
- package/src/views/Stacks.tsx +104 -0
- package/src/views/Workspaces.tsx +88 -0
- package/tsconfig.json +22 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultPanel.js","sourceRoot":"","sources":["../../src/right-panel/DefaultPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAc,YAAY,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAS1C,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B1B,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAS,EAAE,EAAE;IAC/E,MAAM,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAA;IAClC,OAAO,CACL,MAAC,QAAQ,eACP,6BACE,eAAK,SAAS,EAAC,OAAO,aACpB,KAAC,IAAI,IAAC,UAAU,EAAC,IAAI,YAAE,KAAK,GAAQ,EACpC,KAAC,IAAI,IAAC,WAAW,EAAC,WAAW,YAAE,WAAW,GAAQ,IAC9C,EACN,KAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,KAAK,gBAAc,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,YAC/D,KAAC,KAAK,KAAG,GACE,IACN,EACT,4BAAU,QAAQ,GAAW,IACpB,CACZ,CAAA;AACH,CAAC,CAAA;AAED,MAAM,UAAU,GAAG;IACjB,EAAE,EAAE;QACF,KAAK,EAAE,OAAO;KACf;IACD,EAAE,EAAE;QACF,KAAK,EAAE,QAAQ;KAChB;CACmB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RightPanel.d.ts","sourceRoot":"","sources":["../../src/right-panel/RightPanel.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,iCAGtB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RightPanel.js","sourceRoot":"","sources":["../../src/right-panel/RightPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAE9C,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAA;IACtC,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface ContextValue {
|
|
2
|
+
content?: React.ReactNode;
|
|
3
|
+
setContent?: (content: React.ReactNode) => void;
|
|
4
|
+
panel?: React.RefObject<HTMLDivElement>;
|
|
5
|
+
chatWindow?: React.RefObject<HTMLDivElement>;
|
|
6
|
+
onCloseNext: React.MutableRefObject<(() => void) | undefined>;
|
|
7
|
+
}
|
|
8
|
+
export declare const RightPanelContext: import("react").Context<ContextValue>;
|
|
9
|
+
export declare const RightPanelProvider: ({ panel, chatWindow, children }: Pick<ContextValue, "panel" | "chatWindow"> & {
|
|
10
|
+
children: React.ReactNode;
|
|
11
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=RightPanelProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RightPanelProvider.d.ts","sourceRoot":"","sources":["../../src/right-panel/RightPanelProvider.tsx"],"names":[],"mappings":"AAEA,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IAChD,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC7C,WAAW,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;CAC/D;AAED,eAAO,MAAM,iBAAiB,uCAAuE,CAAA;AAErG,eAAO,MAAM,kBAAkB,oCACI,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,YAAY,CAAC,GAAG;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,4CAM5G,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useMemo, useRef, useState } from 'react';
|
|
3
|
+
export const RightPanelContext = createContext({ onCloseNext: { current: undefined } });
|
|
4
|
+
export const RightPanelProvider = ({ panel, chatWindow, children }) => {
|
|
5
|
+
const [content, setContent] = useState();
|
|
6
|
+
const onCloseNext = useRef();
|
|
7
|
+
const value = useMemo(() => ({ content, setContent, panel, chatWindow, onCloseNext }), [content, panel, chatWindow]);
|
|
8
|
+
return _jsx(RightPanelContext.Provider, { value: value, children: children });
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=RightPanelProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RightPanelProvider.js","sourceRoot":"","sources":["../../src/right-panel/RightPanelProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAUhE,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAe,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;AAErG,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAA8E,EAC3G,EAAE;IACF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAAmB,CAAA;IACzD,MAAM,WAAW,GAAG,MAAM,EAA4B,CAAA;IACtD,MAAM,KAAK,GAAG,OAAO,CAAe,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAA;IAClI,OAAO,KAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAA8B,CAAA;AAC1F,CAAC,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface RightPanelOptions {
|
|
2
|
+
title: string;
|
|
3
|
+
description: string;
|
|
4
|
+
onClose?: () => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function useRightPanelContent(): import("react").ReactNode;
|
|
7
|
+
export declare function useRightPanel(): {
|
|
8
|
+
open: (content: React.ReactNode, options?: RightPanelOptions) => void;
|
|
9
|
+
close: () => void;
|
|
10
|
+
isOpen: () => boolean;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/right-panel/hooks.tsx"],"names":[],"mappings":"AAIA,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,oBAAoB,8BAGnC;AAED,wBAAgB,aAAa;oBAOF,KAAK,CAAC,SAAS,YAAY,iBAAiB;;;EAwBtE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useContext, useMemo } from 'react';
|
|
3
|
+
import { DefaultPanel } from './DefaultPanel.js';
|
|
4
|
+
import { RightPanelContext } from './RightPanelProvider.js';
|
|
5
|
+
export function useRightPanelContent() {
|
|
6
|
+
const { content } = useContext(RightPanelContext);
|
|
7
|
+
return content;
|
|
8
|
+
}
|
|
9
|
+
export function useRightPanel() {
|
|
10
|
+
const ctx = useContext(RightPanelContext);
|
|
11
|
+
const { panel, chatWindow, setContent } = ctx;
|
|
12
|
+
return useMemo(() => {
|
|
13
|
+
if (!setContent)
|
|
14
|
+
throw new Error('No RightPanelProvider found.');
|
|
15
|
+
function open(content, options) {
|
|
16
|
+
if (!panel?.current || !chatWindow?.current || !setContent)
|
|
17
|
+
return;
|
|
18
|
+
setContent(options ? _jsx(DefaultPanel, { ...options, onClose: close, children: content }) : content);
|
|
19
|
+
panel.current.classList.add('visible');
|
|
20
|
+
chatWindow.current.classList.add('narrow');
|
|
21
|
+
ctx.onCloseNext.current = options?.onClose;
|
|
22
|
+
}
|
|
23
|
+
function close() {
|
|
24
|
+
if (!panel?.current || !chatWindow?.current || !setContent)
|
|
25
|
+
return;
|
|
26
|
+
panel.current.classList.remove('visible');
|
|
27
|
+
chatWindow.current.classList.remove('narrow');
|
|
28
|
+
ctx.onCloseNext.current?.();
|
|
29
|
+
setTimeout(() => {
|
|
30
|
+
setContent(null);
|
|
31
|
+
}, 300);
|
|
32
|
+
}
|
|
33
|
+
function isOpen() {
|
|
34
|
+
return !!panel?.current?.classList.contains('visible');
|
|
35
|
+
}
|
|
36
|
+
return { open, close, isOpen };
|
|
37
|
+
}, []);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/right-panel/hooks.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAQxD,MAAM,UAAU,oBAAoB;IAClC,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAA;IACjD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAA;IACzC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,GAAG,CAAA;IAE7C,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QAEhE,SAAS,IAAI,CAAC,OAAwB,EAAE,OAA2B;YACjE,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC,UAAU;gBAAE,OAAM;YAClE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAC,YAAY,OAAK,OAAO,EAAE,OAAO,EAAE,KAAK,YAAG,OAAO,GAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;YACnG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YACtC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAC1C,GAAG,CAAC,WAAW,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,CAAA;QAC5C,CAAC;QAED,SAAS,KAAK;YACZ,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC,UAAU;gBAAE,OAAM;YAClE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YACzC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YAC7C,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAA;YAC3B,UAAU,CAAC,GAAG,EAAE;gBACd,UAAU,CAAC,IAAI,CAAC,CAAA;YAClB,CAAC,EAAE,GAAG,CAAC,CAAA;QACT,CAAC;QAED,SAAS,MAAM;YACb,OAAO,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QACxD,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;IAChC,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export interface SerializableAction {
|
|
2
|
+
title: string;
|
|
3
|
+
type: 'link' | 'command';
|
|
4
|
+
/**
|
|
5
|
+
* The URL if the action is a link or a chat command otherwise (/command).
|
|
6
|
+
*/
|
|
7
|
+
exec: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ChatAction extends SerializableAction {
|
|
10
|
+
/**
|
|
11
|
+
* @default primary
|
|
12
|
+
*/
|
|
13
|
+
appearance?: 'primary' | 'secondary';
|
|
14
|
+
}
|
|
15
|
+
export interface TextChatEntry {
|
|
16
|
+
type: 'text' | 'md';
|
|
17
|
+
agent: 'bot' | 'user' | 'system';
|
|
18
|
+
actions?: ChatAction[];
|
|
19
|
+
subtitle?: string;
|
|
20
|
+
content: string;
|
|
21
|
+
updated?: string;
|
|
22
|
+
agentId?: string;
|
|
23
|
+
messageId?: string;
|
|
24
|
+
error?: string;
|
|
25
|
+
}
|
|
26
|
+
type ChatEntryListener = (value: TextChatEntry) => void;
|
|
27
|
+
export declare class ChatEntry {
|
|
28
|
+
readonly id: number;
|
|
29
|
+
private value;
|
|
30
|
+
private streamFinished;
|
|
31
|
+
private listeners;
|
|
32
|
+
abort: () => void;
|
|
33
|
+
/**
|
|
34
|
+
* @param value the value of the entry.
|
|
35
|
+
* @param isStreamed whether or not this entry is streamed. Defaults to false.
|
|
36
|
+
* @param abort an abort function to cancel the transmission of this chat entry. Specially useful for canceling streamings.
|
|
37
|
+
*/
|
|
38
|
+
constructor(value: TextChatEntry, isStreamed?: boolean, abort?: () => void);
|
|
39
|
+
static createUserEntry(content: string): ChatEntry;
|
|
40
|
+
static createStreamedBotEntry(abort: () => void): ChatEntry;
|
|
41
|
+
setValue(value: TextChatEntry): void;
|
|
42
|
+
getValue(): TextChatEntry;
|
|
43
|
+
finish(): void;
|
|
44
|
+
hasFinished(): boolean;
|
|
45
|
+
onChange(listener: ChatEntryListener): () => void;
|
|
46
|
+
}
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=ChatEntry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatEntry.d.ts","sourceRoot":"","sources":["../../src/state/ChatEntry.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACpD;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;IAEjC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAEhB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAEhB;AAED,KAAK,iBAAiB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;AAIvD,qBAAa,SAAS;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAA0B;IAC3C,KAAK,EAAE,MAAM,IAAI,CAAA;IAEjB;;;;OAIG;gBACS,KAAK,EAAE,aAAa,EAAE,UAAU,UAAQ,EAAE,KAAK,aAAW;IAOtE,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM;IAStC,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,IAAI;IAI/C,QAAQ,CAAC,KAAK,EAAE,aAAa;IAM7B,QAAQ;IAIR,MAAM;IAKN,WAAW;IAIX,QAAQ,CAAC,QAAQ,EAAE,iBAAiB;CAMrC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { pull } from 'lodash';
|
|
2
|
+
let nextId = 0;
|
|
3
|
+
export class ChatEntry {
|
|
4
|
+
id;
|
|
5
|
+
value;
|
|
6
|
+
streamFinished;
|
|
7
|
+
listeners = [];
|
|
8
|
+
abort;
|
|
9
|
+
/**
|
|
10
|
+
* @param value the value of the entry.
|
|
11
|
+
* @param isStreamed whether or not this entry is streamed. Defaults to false.
|
|
12
|
+
* @param abort an abort function to cancel the transmission of this chat entry. Specially useful for canceling streamings.
|
|
13
|
+
*/
|
|
14
|
+
constructor(value, isStreamed = false, abort = () => { }) {
|
|
15
|
+
this.id = nextId++;
|
|
16
|
+
this.value = value;
|
|
17
|
+
this.streamFinished = !isStreamed;
|
|
18
|
+
this.abort = abort;
|
|
19
|
+
}
|
|
20
|
+
static createUserEntry(content) {
|
|
21
|
+
return new ChatEntry({
|
|
22
|
+
agent: 'user',
|
|
23
|
+
type: 'text',
|
|
24
|
+
content,
|
|
25
|
+
updated: new Date().toISOString(),
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
static createStreamedBotEntry(abort) {
|
|
29
|
+
return new ChatEntry({ agent: 'bot', type: 'md', content: '' }, true, abort);
|
|
30
|
+
}
|
|
31
|
+
setValue(value) {
|
|
32
|
+
if (this.streamFinished)
|
|
33
|
+
return;
|
|
34
|
+
this.value = value;
|
|
35
|
+
this.listeners.forEach(l => l(this.value));
|
|
36
|
+
}
|
|
37
|
+
getValue() {
|
|
38
|
+
return this.value;
|
|
39
|
+
}
|
|
40
|
+
finish() {
|
|
41
|
+
this.streamFinished = true;
|
|
42
|
+
this.listeners = [];
|
|
43
|
+
}
|
|
44
|
+
hasFinished() {
|
|
45
|
+
return this.streamFinished;
|
|
46
|
+
}
|
|
47
|
+
onChange(listener) {
|
|
48
|
+
if (!this.streamFinished)
|
|
49
|
+
this.listeners.push(listener);
|
|
50
|
+
return () => {
|
|
51
|
+
pull(this.listeners, listener);
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=ChatEntry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatEntry.js","sourceRoot":"","sources":["../../src/state/ChatEntry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAmC7B,IAAI,MAAM,GAAG,CAAC,CAAA;AAEd,MAAM,OAAO,SAAS;IACX,EAAE,CAAQ;IACX,KAAK,CAAe;IACpB,cAAc,CAAS;IACvB,SAAS,GAAwB,EAAE,CAAA;IAC3C,KAAK,CAAY;IAEjB;;;;OAIG;IACH,YAAY,KAAoB,EAAE,UAAU,GAAG,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,GAAE,CAAC;QACpE,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,CAAA;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,cAAc,GAAG,CAAC,UAAU,CAAA;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,OAAe;QACpC,OAAO,IAAI,SAAS,CAAC;YACnB,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,MAAM;YACZ,OAAO;YACP,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SAClC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAC,sBAAsB,CAAC,KAAiB;QAC7C,OAAO,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IAC9E,CAAC;IAED,QAAQ,CAAC,KAAoB;QAC3B,IAAI,IAAI,CAAC,cAAc;YAAE,OAAM;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAC5C,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAC1B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;IACrB,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAED,QAAQ,CAAC,QAA2B;QAClC,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACvD,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QAChC,CAAC,CAAA;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ChatEntry } from './ChatEntry.js';
|
|
2
|
+
import { ObservableState } from './ObservableState.js';
|
|
3
|
+
interface Labeled {
|
|
4
|
+
id: string;
|
|
5
|
+
label: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ChatProperties {
|
|
8
|
+
label: string;
|
|
9
|
+
agent?: Labeled;
|
|
10
|
+
workspace?: Labeled;
|
|
11
|
+
stack?: Labeled;
|
|
12
|
+
knowledgeSources?: Labeled[];
|
|
13
|
+
isLoading?: boolean;
|
|
14
|
+
nextMessage?: string;
|
|
15
|
+
}
|
|
16
|
+
type ChatMessagesListener = (chat: ChatEntry[]) => void;
|
|
17
|
+
export type MessageInterceptor = (entry: ChatEntry, chat: ChatState) => boolean | undefined | void | Promise<boolean | undefined | void>;
|
|
18
|
+
interface Options {
|
|
19
|
+
id: string;
|
|
20
|
+
initial: ChatProperties;
|
|
21
|
+
interceptors?: MessageInterceptor[];
|
|
22
|
+
entries?: ChatEntry[];
|
|
23
|
+
}
|
|
24
|
+
export declare class ChatState extends ObservableState<ChatProperties> {
|
|
25
|
+
readonly id: string;
|
|
26
|
+
private entries;
|
|
27
|
+
private messagesListeners;
|
|
28
|
+
private readonly interceptors;
|
|
29
|
+
/**
|
|
30
|
+
* @param id the id of the chat.
|
|
31
|
+
* @param initial the initial state.
|
|
32
|
+
* @param interceptors a list of interceptors to run whenever a new message (entry) is added to the chat. If an interception function
|
|
33
|
+
* returns false, the next interceptors are not run. Attention: when multiple messages are added at once, only the last goes through the
|
|
34
|
+
* interceptors. Furthermore, messages created by the constructor don't go through the interceptors, only messages added via `pushMessage`
|
|
35
|
+
* do.
|
|
36
|
+
*/
|
|
37
|
+
constructor({ id, initial, entries, interceptors }: Options);
|
|
38
|
+
private runMessagesListeners;
|
|
39
|
+
private runInterceptors;
|
|
40
|
+
pushMessage(...entries: ChatEntry[]): void;
|
|
41
|
+
popMessage(quantity?: number): void;
|
|
42
|
+
getMessages(): ChatEntry[];
|
|
43
|
+
onChangeMessages(listener: ChatMessagesListener): () => void;
|
|
44
|
+
}
|
|
45
|
+
export {};
|
|
46
|
+
//# sourceMappingURL=ChatState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatState.d.ts","sourceRoot":"","sources":["../../src/state/ChatState.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,UAAU,OAAO;IACf,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,KAAK,oBAAoB,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,IAAI,CAAA;AAEvD,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,KAAK,OAAO,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,CAAA;AAExI,UAAU,OAAO;IACf,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACpC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;CACvB;AAED,qBAAa,SAAU,SAAQ,eAAe,CAAC,cAAc,CAAC;IAC5D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IAEnD;;;;;;;OAOG;gBACS,EAAE,EAAE,EAAE,OAAO,EAAE,OAAY,EAAE,YAAiB,EAAE,EAAE,OAAO;IAOrE,OAAO,CAAC,oBAAoB;YAId,eAAe;IAO7B,WAAW,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE;IAOnC,UAAU,CAAC,QAAQ,SAAI;IAKvB,WAAW;IAIX,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB;CAMhD"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { dropRight, last, pull } from 'lodash';
|
|
2
|
+
import { ObservableState } from './ObservableState.js';
|
|
3
|
+
export class ChatState extends ObservableState {
|
|
4
|
+
id;
|
|
5
|
+
entries;
|
|
6
|
+
messagesListeners = [];
|
|
7
|
+
interceptors;
|
|
8
|
+
/**
|
|
9
|
+
* @param id the id of the chat.
|
|
10
|
+
* @param initial the initial state.
|
|
11
|
+
* @param interceptors a list of interceptors to run whenever a new message (entry) is added to the chat. If an interception function
|
|
12
|
+
* returns false, the next interceptors are not run. Attention: when multiple messages are added at once, only the last goes through the
|
|
13
|
+
* interceptors. Furthermore, messages created by the constructor don't go through the interceptors, only messages added via `pushMessage`
|
|
14
|
+
* do.
|
|
15
|
+
*/
|
|
16
|
+
constructor({ id, initial, entries = [], interceptors = [] }) {
|
|
17
|
+
super(initial);
|
|
18
|
+
this.id = id;
|
|
19
|
+
this.interceptors = interceptors;
|
|
20
|
+
this.entries = entries;
|
|
21
|
+
}
|
|
22
|
+
runMessagesListeners() {
|
|
23
|
+
this.messagesListeners.forEach(l => l(this.entries));
|
|
24
|
+
}
|
|
25
|
+
async runInterceptors(entry) {
|
|
26
|
+
for (const interceptor of this.interceptors) {
|
|
27
|
+
const result = await interceptor(entry, this);
|
|
28
|
+
if (result === false)
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
pushMessage(...entries) {
|
|
33
|
+
if (!entries.length)
|
|
34
|
+
return;
|
|
35
|
+
this.entries = [...this.entries, ...entries];
|
|
36
|
+
this.runMessagesListeners();
|
|
37
|
+
this.runInterceptors(last(entries));
|
|
38
|
+
}
|
|
39
|
+
popMessage(quantity = 1) {
|
|
40
|
+
this.entries = dropRight(this.entries, quantity);
|
|
41
|
+
this.runMessagesListeners();
|
|
42
|
+
}
|
|
43
|
+
getMessages() {
|
|
44
|
+
return this.entries;
|
|
45
|
+
}
|
|
46
|
+
onChangeMessages(listener) {
|
|
47
|
+
this.messagesListeners.push(listener);
|
|
48
|
+
return () => {
|
|
49
|
+
pull(this.messagesListeners, listener);
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=ChatState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatState.js","sourceRoot":"","sources":["../../src/state/ChatState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AA4BnD,MAAM,OAAO,SAAU,SAAQ,eAA+B;IACnD,EAAE,CAAQ;IACX,OAAO,CAAa;IACpB,iBAAiB,GAA2B,EAAE,CAAA;IACrC,YAAY,CAAsB;IAEnD;;;;;;;OAOG;IACH,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,EAAE,YAAY,GAAG,EAAE,EAAW;QACnE,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QACZ,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAEO,oBAAoB;QAC1B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IACtD,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,KAAgB;QAC5C,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YAC7C,IAAI,MAAM,KAAK,KAAK;gBAAE,MAAK;QAC7B,CAAC;IACH,CAAC;IAED,WAAW,CAAC,GAAG,OAAoB;QACjC,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAM;QAC3B,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,CAAA;QAC5C,IAAI,CAAC,oBAAoB,EAAE,CAAA;QAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAE,CAAC,CAAA;IACtC,CAAC;IAED,UAAU,CAAC,QAAQ,GAAG,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QAChD,IAAI,CAAC,oBAAoB,EAAE,CAAA;IAC7B,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,gBAAgB,CAAC,QAA8B;QAC7C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACrC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAA;QACxC,CAAC,CAAA;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ChatState } from './ChatState.js';
|
|
2
|
+
type TabChangeListener = (chats: ChatState[], activeId: string) => void;
|
|
3
|
+
export declare class ChatTabsController {
|
|
4
|
+
private chats;
|
|
5
|
+
private activeChatId;
|
|
6
|
+
private listeners;
|
|
7
|
+
private runListeners;
|
|
8
|
+
add(...chats: ChatState[]): void;
|
|
9
|
+
remove(...ids: string[]): void;
|
|
10
|
+
get(id: string): ChatState | undefined;
|
|
11
|
+
getActiveChatId(): string;
|
|
12
|
+
getAll(): ChatState[];
|
|
13
|
+
onChange(listener: TabChangeListener): () => void;
|
|
14
|
+
select(id: string): void;
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=ChatTabsController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatTabsController.d.ts","sourceRoot":"","sources":["../../src/state/ChatTabsController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,KAAK,iBAAiB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;AAEvE,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,SAAS,CAA0B;IAE3C,OAAO,CAAC,YAAY;IAIpB,GAAG,CAAC,GAAG,KAAK,EAAE,SAAS,EAAE;IAMzB,MAAM,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE;IAWvB,GAAG,CAAC,EAAE,EAAE,MAAM;IAId,eAAe;IAIf,MAAM;IAIN,QAAQ,CAAC,QAAQ,EAAE,iBAAiB;IAOpC,MAAM,CAAC,EAAE,EAAE,MAAM;CAIlB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { last, pull } from 'lodash';
|
|
2
|
+
export class ChatTabsController {
|
|
3
|
+
chats = [];
|
|
4
|
+
activeChatId = '';
|
|
5
|
+
listeners = [];
|
|
6
|
+
runListeners() {
|
|
7
|
+
this.listeners.forEach(l => l(this.chats, this.activeChatId));
|
|
8
|
+
}
|
|
9
|
+
add(...chats) {
|
|
10
|
+
if (!chats.length)
|
|
11
|
+
return;
|
|
12
|
+
this.chats = [...this.chats, ...chats];
|
|
13
|
+
this.runListeners();
|
|
14
|
+
}
|
|
15
|
+
remove(...ids) {
|
|
16
|
+
if (this.chats.length <= 1 || !ids.length)
|
|
17
|
+
return;
|
|
18
|
+
const currentActiveIndex = this.chats.findIndex(c => c.id === this.activeChatId);
|
|
19
|
+
this.chats = this.chats.filter(c => !ids.includes(c.id));
|
|
20
|
+
if (ids.includes(this.activeChatId)) {
|
|
21
|
+
if (currentActiveIndex === -1)
|
|
22
|
+
this.activeChatId = this.chats[0]?.id;
|
|
23
|
+
this.activeChatId = currentActiveIndex < this.chats.length ? this.chats[currentActiveIndex].id : last(this.chats)?.id ?? '';
|
|
24
|
+
}
|
|
25
|
+
this.runListeners();
|
|
26
|
+
}
|
|
27
|
+
get(id) {
|
|
28
|
+
return this.chats.find(c => c.id === id);
|
|
29
|
+
}
|
|
30
|
+
getActiveChatId() {
|
|
31
|
+
return this.activeChatId;
|
|
32
|
+
}
|
|
33
|
+
getAll() {
|
|
34
|
+
return this.chats;
|
|
35
|
+
}
|
|
36
|
+
onChange(listener) {
|
|
37
|
+
this.listeners.push(listener);
|
|
38
|
+
return () => {
|
|
39
|
+
pull(this.listeners, listener);
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
select(id) {
|
|
43
|
+
this.activeChatId = id;
|
|
44
|
+
this.runListeners();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=ChatTabsController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatTabsController.js","sourceRoot":"","sources":["../../src/state/ChatTabsController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAKnC,MAAM,OAAO,kBAAkB;IACrB,KAAK,GAAgB,EAAE,CAAA;IACvB,YAAY,GAAG,EAAE,CAAA;IACjB,SAAS,GAAwB,EAAE,CAAA;IAEnC,YAAY;QAClB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAA;IAC/D,CAAC;IAED,GAAG,CAAC,GAAG,KAAkB;QACvB,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAM;QACzB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,CAAA;QACtC,IAAI,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC;IAED,MAAM,CAAC,GAAG,GAAa;QACrB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,OAAM;QACjD,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,CAAA;QAChF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACxD,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACpC,IAAI,kBAAkB,KAAK,CAAC,CAAC;gBAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;YACpE,IAAI,CAAC,YAAY,GAAG,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,CAAA;QAC7H,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IAC1C,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,QAAQ,CAAC,QAA2B;QAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC7B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QAChC,CAAC,CAAA;IACH,CAAC;IAED,MAAM,CAAC,EAAU;QACf,IAAI,CAAC,YAAY,GAAG,EAAE,CAAA;QACtB,IAAI,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type ObservableStateListener<T, K extends keyof T> = (value: T[K]) => void;
|
|
2
|
+
export declare class ObservableState<T> {
|
|
3
|
+
private state;
|
|
4
|
+
private listeners;
|
|
5
|
+
constructor(initial: T);
|
|
6
|
+
set<K extends keyof T>(key: K, value: T[K]): void;
|
|
7
|
+
get<K extends keyof T>(key: K): T[K];
|
|
8
|
+
onChange<K extends keyof T>(key: K, listener: (value: T[K]) => void): () => void;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=ObservableState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObservableState.d.ts","sourceRoot":"","sources":["../../src/state/ObservableState.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,uBAAuB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;AAMjF,qBAAa,eAAe,CAAC,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAG;IAChB,OAAO,CAAC,SAAS,CAAmB;gBAExB,OAAO,EAAE,CAAC;IAItB,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAO1C,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAIpC,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;CAOpE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { pull } from 'lodash';
|
|
2
|
+
export class ObservableState {
|
|
3
|
+
state;
|
|
4
|
+
listeners = {};
|
|
5
|
+
constructor(initial) {
|
|
6
|
+
this.state = { ...initial };
|
|
7
|
+
}
|
|
8
|
+
set(key, value) {
|
|
9
|
+
if (this.state[key] !== value) {
|
|
10
|
+
this.state[key] = value;
|
|
11
|
+
this.listeners[key]?.forEach(l => l(value));
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
get(key) {
|
|
15
|
+
return this.state[key];
|
|
16
|
+
}
|
|
17
|
+
onChange(key, listener) {
|
|
18
|
+
this.listeners[key] ??= [];
|
|
19
|
+
this.listeners[key].push(listener);
|
|
20
|
+
return () => {
|
|
21
|
+
pull(this.listeners[key], listener);
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=ObservableState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObservableState.js","sourceRoot":"","sources":["../../src/state/ObservableState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAQ7B,MAAM,OAAO,eAAe;IAClB,KAAK,CAAG;IACR,SAAS,GAAiB,EAAE,CAAA;IAEpC,YAAY,OAAU;QACpB,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,OAAO,EAAE,CAAA;IAC7B,CAAC;IAED,GAAG,CAAoB,GAAM,EAAE,KAAW;QACxC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;YACvB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC;IAED,GAAG,CAAoB,GAAM;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;IAED,QAAQ,CAAoB,GAAM,EAAE,QAA+B;QACjE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;QAC1B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACnC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAE,EAAE,QAAQ,CAAC,CAAA;QACtC,CAAC,CAAA;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ChatTabsController } from './ChatTabsController.js';
|
|
2
|
+
import { ObservableState } from './ObservableState.js';
|
|
3
|
+
export interface WidgetProperties {
|
|
4
|
+
isStackSelectionOpen?: boolean;
|
|
5
|
+
isWorkspaceSelectionOpen?: boolean;
|
|
6
|
+
isAgentSelectionOpen?: boolean;
|
|
7
|
+
isKnowledgeSourceSelectionOpen?: boolean;
|
|
8
|
+
isCodeEditorOpen?: boolean;
|
|
9
|
+
isChatHistoryOpen?: boolean;
|
|
10
|
+
isMinimized?: boolean;
|
|
11
|
+
code?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare class WidgetState extends ObservableState<WidgetProperties> {
|
|
14
|
+
readonly chatTabs: ChatTabsController;
|
|
15
|
+
constructor(initial?: WidgetProperties, chatTabs?: ChatTabsController);
|
|
16
|
+
private createCloseOthersBehavior;
|
|
17
|
+
private closeOtherPanels;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=WidgetState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WidgetState.d.ts","sourceRoot":"","sources":["../../src/state/WidgetState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAOD,qBAAa,WAAY,SAAQ,eAAe,CAAC,gBAAgB,CAAC;IAChE,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAA;gBAEzB,OAAO,GAAE,gBAAqB,EAAE,QAAQ,CAAC,EAAE,kBAAkB;IAMzE,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,gBAAgB;CAKzB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ChatTabsController } from './ChatTabsController.js';
|
|
2
|
+
import { ObservableState } from './ObservableState.js';
|
|
3
|
+
const panelKeys = [
|
|
4
|
+
'isAgentSelectionOpen', 'isChatHistoryOpen', 'isCodeEditorOpen', 'isKnowledgeSourceSelectionOpen', 'isStackSelectionOpen',
|
|
5
|
+
'isWorkspaceSelectionOpen',
|
|
6
|
+
];
|
|
7
|
+
export class WidgetState extends ObservableState {
|
|
8
|
+
chatTabs;
|
|
9
|
+
constructor(initial = {}, chatTabs) {
|
|
10
|
+
super(initial);
|
|
11
|
+
this.chatTabs = chatTabs ?? new ChatTabsController();
|
|
12
|
+
this.createCloseOthersBehavior();
|
|
13
|
+
}
|
|
14
|
+
createCloseOthersBehavior() {
|
|
15
|
+
panelKeys.forEach((key) => {
|
|
16
|
+
this.onChange(key, (value) => {
|
|
17
|
+
if (value)
|
|
18
|
+
this.closeOtherPanels(key);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
closeOtherPanels(leaveOpen) {
|
|
23
|
+
panelKeys.forEach((key) => {
|
|
24
|
+
if (key !== leaveOpen)
|
|
25
|
+
this.set(key, false);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=WidgetState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WidgetState.js","sourceRoot":"","sources":["../../src/state/WidgetState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAanD,MAAM,SAAS,GAA+B;IAC5C,sBAAsB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,gCAAgC,EAAE,sBAAsB;IACzH,0BAA0B;CAC3B,CAAA;AAED,MAAM,OAAO,WAAY,SAAQ,eAAiC;IACvD,QAAQ,CAAoB;IAErC,YAAY,UAA4B,EAAE,EAAE,QAA6B;QACvE,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,kBAAkB,EAAE,CAAA;QACpD,IAAI,CAAC,yBAAyB,EAAE,CAAA;IAClC,CAAC;IAEO,yBAAyB;QAC/B,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC3B,IAAI,KAAK;oBAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;YACvC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,gBAAgB,CAAC,SAAiC;QACxD,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACxB,IAAI,GAAG,KAAK,SAAS;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC7C,CAAC,CAAC,CAAA;IACJ,CAAC;CACF"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { WithStyle } from '@stack-spot/portal-theme';
|
|
2
|
+
export interface WithChildren<T = React.ReactNode> {
|
|
3
|
+
children?: T;
|
|
4
|
+
}
|
|
5
|
+
export type PropsOf<T extends React.FunctionComponent> = T extends React.FunctionComponent<infer P> ? P : never;
|
|
6
|
+
export interface ButtonAction extends WithStyle {
|
|
7
|
+
icon?: React.ReactElement;
|
|
8
|
+
color?: string;
|
|
9
|
+
label: string;
|
|
10
|
+
onClick: () => void;
|
|
11
|
+
}
|
|
12
|
+
export interface MinimizedActions {
|
|
13
|
+
onCollapse?: () => void;
|
|
14
|
+
onExpand?: () => void;
|
|
15
|
+
onClose?: () => void;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEpD,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS;IAC/C,QAAQ,CAAC,EAAE,CAAC,CAAC;CACd;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,KAAK,CAAC,iBAAiB,IAAI,CAAC,SAAS,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE/G,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,IAAI,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { FixedChatRequest } from '@stack-spot/portal-network';
|
|
2
|
+
import { ChatState, MessageInterceptor } from '../state/ChatState.js';
|
|
3
|
+
import { WidgetState } from '../state/WidgetState.js';
|
|
4
|
+
export declare function createNewChat(widget: WidgetState, interceptors: MessageInterceptor[]): void;
|
|
5
|
+
export declare function buildConversationContext(state: ChatState): FixedChatRequest['context'];
|
|
6
|
+
//# sourceMappingURL=chat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/utils/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAG7D,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAIlD,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,QAKpF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,CActF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { getLanguage } from '@stack-spot/portal-translate';
|
|
2
|
+
import { ulid } from 'ulid';
|
|
3
|
+
import { ChatState } from '../state/ChatState.js';
|
|
4
|
+
let next = 1;
|
|
5
|
+
export function createNewChat(widget, interceptors) {
|
|
6
|
+
const id = ulid();
|
|
7
|
+
widget.chatTabs.add(new ChatState({ id, initial: { label: `Chat ${next}` }, interceptors }));
|
|
8
|
+
widget.chatTabs.select(id);
|
|
9
|
+
next++;
|
|
10
|
+
}
|
|
11
|
+
export function buildConversationContext(state) {
|
|
12
|
+
return {
|
|
13
|
+
workspace: state.get('workspace')?.id,
|
|
14
|
+
conversation_id: state.id,
|
|
15
|
+
stack_id: state.get('stack')?.id,
|
|
16
|
+
language: getLanguage(),
|
|
17
|
+
knowledge_sources: state.get('knowledgeSources')?.map(ks => ks.id),
|
|
18
|
+
agent_id: state.get('agent')?.id,
|
|
19
|
+
agent_built_in: !!state.get('agent'),
|
|
20
|
+
os: navigator.userAgent,
|
|
21
|
+
platform: 'web-widget',
|
|
22
|
+
platform_version: navigator.userAgent,
|
|
23
|
+
stackspot_ai_version: 'alpha',
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/utils/chat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAsB,MAAM,oBAAoB,CAAA;AAGlE,IAAI,IAAI,GAAG,CAAC,CAAA;AAEZ,MAAM,UAAU,aAAa,CAAC,MAAmB,EAAE,YAAkC;IACnF,MAAM,EAAE,GAAG,IAAI,EAAE,CAAA;IACjB,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,CAAA;IAC5F,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC1B,IAAI,EAAE,CAAA;AACR,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAgB;IACvD,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE;QACrC,eAAe,EAAE,KAAK,CAAC,EAAE;QACzB,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE;QAChC,QAAQ,EAAE,WAAW,EAAE;QACvB,iBAAiB,EAAE,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAClE,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE;QAChC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;QACpC,EAAE,EAAE,SAAS,CAAC,SAAS;QACvB,QAAQ,EAAE,YAAY;QACtB,gBAAgB,EAAE,SAAS,CAAC,SAAS;QACrC,oBAAoB,EAAE,OAAO;KAC9B,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Language } from '@stack-spot/portal-translate';
|
|
2
|
+
export declare function formatDateForChatMessage(date: Date, language?: Language): string;
|
|
3
|
+
export declare function useDateFormatter(): {
|
|
4
|
+
formatForChatMessage: (date: Date) => string;
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=date.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,QAAQ,EAA4B,MAAM,8BAA8B,CAAA;AAW7F,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,GAAE,QAAwB,UAUtF;AAED,wBAAgB,gBAAgB;iCAGC,IAAI;EAEpC"}
|