@agentscope-ai/chat 1.1.20 → 1.1.22
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/bin/client.js +1 -1
- package/components/AGUI/components/HelpModal/icons.tsx +68 -0
- package/components/AGUI/components/HelpModal/index.tsx +1 -0
- package/components/AGUI/components/HelpModal/modal.tsx +101 -0
- package/components/AGUI/components/chat/Button.tsx +18 -0
- package/components/AGUI/components/chat/Chat.tsx +780 -0
- package/components/AGUI/components/chat/ChatContext.tsx +248 -0
- package/components/AGUI/components/chat/CodeBlock.tsx +406 -0
- package/components/AGUI/components/chat/Header.tsx +22 -0
- package/components/AGUI/components/chat/Icons.tsx +237 -0
- package/components/AGUI/components/chat/ImageUploadQueue.tsx +77 -0
- package/components/AGUI/components/chat/Input.tsx +24 -0
- package/components/AGUI/components/chat/Markdown.tsx +134 -0
- package/components/AGUI/components/chat/Messages.tsx +259 -0
- package/components/AGUI/components/chat/Modal.tsx +133 -0
- package/components/AGUI/components/chat/Popup.tsx +57 -0
- package/components/AGUI/components/chat/PoweredByTag.tsx +29 -0
- package/components/AGUI/components/chat/Sidebar.tsx +74 -0
- package/components/AGUI/components/chat/Suggestion.tsx +132 -0
- package/components/AGUI/components/chat/Suggestions.tsx +20 -0
- package/components/AGUI/components/chat/Textarea.tsx +61 -0
- package/components/AGUI/components/chat/Window.tsx +152 -0
- package/components/AGUI/components/chat/index.tsx +11 -0
- package/components/AGUI/components/chat/messages/AssistantMessage.tsx +69 -0
- package/components/AGUI/components/chat/messages/RenderActionExecutionMessage.tsx +129 -0
- package/components/AGUI/components/chat/messages/RenderAgentStateMessage.tsx +116 -0
- package/components/AGUI/components/chat/messages/RenderImageMessage.tsx +64 -0
- package/components/AGUI/components/chat/messages/RenderResultMessage.tsx +26 -0
- package/components/AGUI/components/chat/messages/RenderTextMessage.tsx +51 -0
- package/components/AGUI/components/chat/messages/UserMessage.tsx +10 -0
- package/components/AGUI/components/chat/props.ts +186 -0
- package/components/AGUI/components/index.ts +1 -0
- package/components/AGUI/context/index.ts +1 -0
- package/components/AGUI/hooks/index.ts +1 -0
- package/components/AGUI/hooks/use-copilot-chat-suggestions.tsx +122 -0
- package/components/AGUI/hooks/use-copy-to-clipboard.tsx +29 -0
- package/components/AGUI/hooks/use-dark-mode.ts +10 -0
- package/components/AGUI/hooks/use-push-to-talk.tsx +166 -0
- package/components/AGUI/index.tsx +4 -0
- package/components/AGUI/lib/utils.test.ts +7 -0
- package/components/AGUI/lib/utils.ts +27 -0
- package/components/AGUI/styles.css +0 -0
- package/components/AGUI/types/css.ts +0 -0
- package/components/AGUI/types/index.ts +1 -0
- package/components/AGUI/types/suggestions.ts +6 -0
- package/components/Accordion/Accordion.tsx +203 -0
- package/components/Accordion/BodyContent.tsx +28 -0
- package/components/Accordion/DeepThinking.tsx +91 -0
- package/components/Accordion/SoftLightTitle.tsx +13 -0
- package/components/Accordion/demo/search.tsx +39 -0
- package/components/Accordion/demo/steps.tsx +135 -0
- package/components/Accordion/demo/thinking.tsx +62 -0
- package/components/Accordion/index.en-US.md +34 -0
- package/components/Accordion/index.tsx +3 -0
- package/components/Accordion/index.zh-CN.md +34 -0
- package/components/Accordion/style.ts +208 -0
- package/components/AgentScopeRuntimeWebUI/demo/index.tsx +4 -0
- package/components/AgentScopeRuntimeWebUI/index.tsx +3 -0
- package/components/AgentScopeRuntimeWebUI/lib/AgentScopeRuntime/Request/Builder.tsx +82 -0
- package/components/AgentScopeRuntimeWebUI/lib/AgentScopeRuntime/Request/Card.tsx +52 -0
- package/components/AgentScopeRuntimeWebUI/lib/AgentScopeRuntime/Response/Actions.tsx +39 -0
- package/components/AgentScopeRuntimeWebUI/lib/AgentScopeRuntime/Response/Builder.tsx +205 -0
- package/components/AgentScopeRuntimeWebUI/lib/AgentScopeRuntime/Response/Card.tsx +44 -0
- package/components/AgentScopeRuntimeWebUI/lib/AgentScopeRuntime/Response/Error.tsx +7 -0
- package/components/AgentScopeRuntimeWebUI/lib/AgentScopeRuntime/Response/Message.tsx +23 -0
- package/components/AgentScopeRuntimeWebUI/lib/AgentScopeRuntime/Response/Reasoning.tsx +16 -0
- package/components/AgentScopeRuntimeWebUI/lib/AgentScopeRuntime/Response/Tool.tsx +19 -0
- package/components/AgentScopeRuntimeWebUI/lib/AgentScopeRuntime/index.tsx +0 -0
- package/components/AgentScopeRuntimeWebUI/lib/AgentScopeRuntime/types.tsx +100 -0
- package/components/AgentScopeRuntimeWebUI/lib/Chat/Input/index.tsx +77 -0
- package/components/AgentScopeRuntimeWebUI/lib/Chat/Input/useAttachments.tsx +53 -0
- package/components/AgentScopeRuntimeWebUI/lib/Chat/MessageList/index.tsx +30 -0
- package/components/AgentScopeRuntimeWebUI/lib/Chat/Welcome/index.tsx +66 -0
- package/components/AgentScopeRuntimeWebUI/lib/Chat/Welcome/styles.ts +51 -0
- package/components/AgentScopeRuntimeWebUI/lib/Chat/hooks/index.tsx +5 -0
- package/components/AgentScopeRuntimeWebUI/lib/Chat/hooks/useChatController.tsx +130 -0
- package/components/AgentScopeRuntimeWebUI/lib/Chat/hooks/useChatMessageHandler.tsx +87 -0
- package/components/AgentScopeRuntimeWebUI/lib/Chat/hooks/useChatRequest.tsx +114 -0
- package/components/AgentScopeRuntimeWebUI/lib/Chat/hooks/useChatSessionHandler.tsx +50 -0
- package/components/AgentScopeRuntimeWebUI/lib/Chat/index.tsx +18 -0
- package/components/AgentScopeRuntimeWebUI/lib/Chat/styles.tsx +59 -0
- package/components/AgentScopeRuntimeWebUI/lib/ChatAnywhere/ComposedProvider.tsx +27 -0
- package/components/AgentScopeRuntimeWebUI/lib/ChatAnywhere/index.tsx +29 -0
- package/components/AgentScopeRuntimeWebUI/lib/Context/ChatAnywhereControl.tsx +0 -0
- package/components/AgentScopeRuntimeWebUI/lib/Context/ChatAnywhereInputContext.tsx +27 -0
- package/components/AgentScopeRuntimeWebUI/lib/Context/ChatAnywhereLayoutContext.tsx +27 -0
- package/components/AgentScopeRuntimeWebUI/lib/Context/ChatAnywhereMessagesContext.tsx +82 -0
- package/components/AgentScopeRuntimeWebUI/lib/Context/ChatAnywhereOptionsContext.tsx +76 -0
- package/components/AgentScopeRuntimeWebUI/lib/Context/ChatAnywhereSessionsContext.tsx +111 -0
- package/components/AgentScopeRuntimeWebUI/lib/Context/useChatAnywhereEventEmitter.tsx +30 -0
- package/components/AgentScopeRuntimeWebUI/lib/Header/index.tsx +45 -0
- package/components/AgentScopeRuntimeWebUI/lib/Header/styles.ts +23 -0
- package/components/AgentScopeRuntimeWebUI/lib/Layout/index.tsx +45 -0
- package/components/AgentScopeRuntimeWebUI/lib/Layout/styles.tsx +104 -0
- package/components/AgentScopeRuntimeWebUI/lib/Sessions/index.tsx +114 -0
- package/components/AgentScopeRuntimeWebUI/lib/Sessions/styles.tsx +0 -0
- package/components/AgentScopeRuntimeWebUI/lib/demo/OptionsPanel/FormItem.tsx +37 -0
- package/components/AgentScopeRuntimeWebUI/lib/demo/OptionsPanel/OptionsEditor.tsx +163 -0
- package/components/AgentScopeRuntimeWebUI/lib/demo/OptionsPanel/defaultConfig.ts +43 -0
- package/components/AgentScopeRuntimeWebUI/lib/demo/OptionsPanel/index.tsx +27 -0
- package/components/AgentScopeRuntimeWebUI/lib/demo/index.tsx +57 -0
- package/components/AgentScopeRuntimeWebUI/lib/demo/sessionApi/index.ts +51 -0
- package/components/AgentScopeRuntimeWebUI/lib/types/IChatAnywhere.ts +358 -0
- package/components/AgentScopeRuntimeWebUI/lib/types/IMessages.tsx +52 -0
- package/components/AgentScopeRuntimeWebUI/lib/types/ISessions.tsx +29 -0
- package/components/AgentScopeRuntimeWebUI/lib/types/index.tsx +3 -0
- package/components/AgentScopeRuntimeWebUI/starter/OptionsPanel/FormItem.tsx +37 -0
- package/components/AgentScopeRuntimeWebUI/starter/OptionsPanel/OptionsEditor.tsx +163 -0
- package/components/AgentScopeRuntimeWebUI/starter/OptionsPanel/defaultConfig.ts +43 -0
- package/components/AgentScopeRuntimeWebUI/starter/OptionsPanel/index.tsx +27 -0
- package/components/AgentScopeRuntimeWebUI/starter/index.tsx +57 -0
- package/components/AgentScopeRuntimeWebUI/starter/sessionApi/index.ts +51 -0
- package/components/Attachments/DropArea.tsx +97 -0
- package/components/Attachments/FileList/AudioIcon.tsx +20 -0
- package/components/Attachments/FileList/FileListCard.tsx +270 -0
- package/components/Attachments/FileList/Progress.tsx +30 -0
- package/components/Attachments/FileList/VideoIcon.tsx +20 -0
- package/components/Attachments/FileList/index.tsx +201 -0
- package/components/Attachments/PlaceholderUploader.tsx +124 -0
- package/components/Attachments/SilentUploader.tsx +39 -0
- package/components/Attachments/context.tsx +11 -0
- package/components/Attachments/demo/basic.tsx +71 -0
- package/components/Attachments/index.en-US.md.bk +10 -0
- package/components/Attachments/index.tsx +274 -0
- package/components/Attachments/index.zh-CN.md.bk +10 -0
- package/components/Attachments/style/fileCard.ts +163 -0
- package/components/Attachments/style/index.ts +232 -0
- package/components/Attachments/util.ts +56 -0
- package/components/Bubble/Avatar.tsx +39 -0
- package/components/Bubble/Bubble.tsx +131 -0
- package/components/Bubble/BubbleList.tsx +105 -0
- package/components/Bubble/Cards.tsx +61 -0
- package/components/Bubble/Footer.tsx +55 -0
- package/components/Bubble/Interrupted.tsx +82 -0
- package/components/Bubble/ScrollToBottom.tsx +42 -0
- package/components/Bubble/Spin.tsx +13 -0
- package/components/Bubble/demo/assistantWithCode.tsx +60 -0
- package/components/Bubble/demo/assistantWithErrorStatus.tsx +102 -0
- package/components/Bubble/demo/assistantWithImage.tsx +46 -0
- package/components/Bubble/demo/assistantWithProcess.tsx +103 -0
- package/components/Bubble/demo/assistantWithSearch.tsx +69 -0
- package/components/Bubble/demo/assistantWithThinking.tsx +54 -0
- package/components/Bubble/demo/basic.tsx +55 -0
- package/components/Bubble/demo/userWithFile.tsx +27 -0
- package/components/Bubble/demo/userWithImage.tsx +26 -0
- package/components/Bubble/hooks/useDisplayData.ts +0 -0
- package/components/Bubble/hooks/useListData.ts +0 -0
- package/components/Bubble/index.en-US.md +33 -0
- package/components/Bubble/index.tsx +21 -0
- package/components/Bubble/index.zh-CN.md +33 -0
- package/components/Bubble/interface.ts +71 -0
- package/components/Bubble/loading.tsx +15 -0
- package/components/Bubble/style/avatar.ts +43 -0
- package/components/Bubble/style/footer.ts +45 -0
- package/components/Bubble/style/index.ts +192 -0
- package/components/Bubble/style/list.ts +51 -0
- package/components/ChatAnywhere/Chat/Ref.tsx +20 -0
- package/components/ChatAnywhere/Chat/index.tsx +56 -0
- package/components/ChatAnywhere/Chat/style.ts +59 -0
- package/components/ChatAnywhere/Header/index.tsx +37 -0
- package/components/ChatAnywhere/Header/style.ts +27 -0
- package/components/ChatAnywhere/Input/index.tsx +158 -0
- package/components/ChatAnywhere/Input/style.ts +14 -0
- package/components/ChatAnywhere/Layout/index.tsx +70 -0
- package/components/ChatAnywhere/Layout/style.ts +51 -0
- package/components/ChatAnywhere/SessionList/index.tsx +122 -0
- package/components/ChatAnywhere/SessionList/style.ts +53 -0
- package/components/ChatAnywhere/hooks/ChatAnywhereProvider.tsx +219 -0
- package/components/ChatAnywhere/hooks/types.ts +333 -0
- package/components/ChatAnywhere/hooks/useInput.tsx +22 -0
- package/components/ChatAnywhere/hooks/useMessages.tsx +63 -0
- package/components/ChatAnywhere/hooks/useSessionList.tsx +123 -0
- package/components/ChatAnywhere/index.tsx +49 -0
- package/components/Conversations/GroupTitle.tsx +28 -0
- package/components/Conversations/Item.tsx +189 -0
- package/components/Conversations/demo/basic.tsx +107 -0
- package/components/Conversations/demo/timeline.tsx +111 -0
- package/components/Conversations/demo/timestamp.tsx +110 -0
- package/components/Conversations/hooks/useGroupable.ts +81 -0
- package/components/Conversations/index.en-US.md +32 -0
- package/components/Conversations/index.tsx +176 -0
- package/components/Conversations/index.zh-CN.md +31 -0
- package/components/Conversations/interface.ts +69 -0
- package/components/Conversations/style.ts +153 -0
- package/components/DefaultCards/DeepThinking/index.tsx +33 -0
- package/components/DefaultCards/Files/index.tsx +69 -0
- package/components/DefaultCards/Footer/index.tsx +16 -0
- package/components/DefaultCards/Images/index.tsx +53 -0
- package/components/DefaultCards/Interrupted/index.tsx +13 -0
- package/components/DefaultCards/Text/index.tsx +13 -0
- package/components/DefaultCards/index.tsx +6 -0
- package/components/DeviceAction/actionMap.tsx +100 -0
- package/components/DeviceAction/demo/index.tsx +132 -0
- package/components/DeviceAction/index.en-US.md +19 -0
- package/components/DeviceAction/index.tsx +75 -0
- package/components/DeviceAction/index.zh-CN.md +19 -0
- package/components/Disclaimer/demo/index.tsx +4 -0
- package/components/Disclaimer/demo/withLink.tsx +4 -0
- package/components/Disclaimer/index.en-US.md +23 -0
- package/components/Disclaimer/index.tsx +42 -0
- package/components/Disclaimer/index.zh-CN.md +24 -0
- package/components/Disclaimer/style.ts +17 -0
- package/components/ImageGenerator/demo/basic.tsx +23 -0
- package/components/ImageGenerator/demo/custom.tsx +56 -0
- package/components/ImageGenerator/demo/size.tsx +15 -0
- package/components/ImageGenerator/index.en-US.md +23 -0
- package/components/ImageGenerator/index.tsx +124 -0
- package/components/ImageGenerator/index.zh-CN.md +23 -0
- package/components/ImageGenerator/style.ts +99 -0
- package/components/Markdown/Markdown/AnimationNode.tsx +89 -0
- package/components/Markdown/Markdown/Markdown.tsx +61 -0
- package/components/Markdown/Markdown/core/Parser.ts +52 -0
- package/components/Markdown/Markdown/core/Renderer.ts +121 -0
- package/components/Markdown/Markdown/core/index.ts +4 -0
- package/components/Markdown/Markdown/defaultComponents/CodeBlock.tsx +113 -0
- package/components/Markdown/Markdown/defaultComponents/DisabledImage.tsx +3 -0
- package/components/Markdown/Markdown/defaultComponents/Media.tsx +71 -0
- package/components/Markdown/Markdown/hooks/index.ts +4 -0
- package/components/Markdown/Markdown/hooks/useAnimation.tsx +27 -0
- package/components/Markdown/Markdown/hooks/useCitationsData.tsx +36 -0
- package/components/Markdown/Markdown/hooks/useStreaming.ts +503 -0
- package/components/Markdown/Markdown/hooks/useTyping.ts +22 -0
- package/components/Markdown/Markdown/index.tsx +198 -0
- package/components/Markdown/Markdown/interface.ts +217 -0
- package/components/Markdown/Markdown/style.ts +152 -0
- package/components/Markdown/demo/basic.tsx +107 -0
- package/components/Markdown/demo/citations.tsx +47 -0
- package/components/Markdown/demo/cursor.tsx +9 -0
- package/components/Markdown/demo/latex.tsx +77 -0
- package/components/Markdown/demo/typing.tsx +82 -0
- package/components/Markdown/index.en-US.md +27 -0
- package/components/Markdown/index.ts +1 -0
- package/components/Markdown/index.zh-CN.md +28 -0
- package/components/Markdown/plugins/citations/CitationComponent.tsx +72 -0
- package/components/Markdown/plugins/citations/index.tsx +37 -0
- package/components/Markdown/plugins/cursor/Dot.tsx +106 -0
- package/components/Markdown/plugins/cursor/Underline.tsx +38 -0
- package/components/Markdown/plugins/cursor/index.tsx +59 -0
- package/components/Markdown/plugins/latex/index.ts +109 -0
- package/components/Markdown/plugins/type.ts +71 -0
- package/components/Mermaid/demo/basic.tsx +12 -0
- package/components/Mermaid/demo/class.tsx +31 -0
- package/components/Mermaid/demo/flowchart.tsx +13 -0
- package/components/Mermaid/demo/sequence.tsx +18 -0
- package/components/Mermaid/demo/state.tsx +16 -0
- package/components/Mermaid/demo/timeline.tsx +15 -0
- package/components/Mermaid/index.en-US.md +27 -0
- package/components/Mermaid/index.tsx +118 -0
- package/components/Mermaid/index.zh-CN.md +27 -0
- package/components/OperateCard/OperateCard.tsx +93 -0
- package/components/OperateCard/demo/index.tsx +35 -0
- package/components/OperateCard/demo/rag.tsx +19 -0
- package/components/OperateCard/demo/thinking.tsx +17 -0
- package/components/OperateCard/demo/todo.tsx +28 -0
- package/components/OperateCard/demo/toolCall.tsx +14 -0
- package/components/OperateCard/demo/webSearch.tsx +12 -0
- package/components/OperateCard/index.en-US.md +51 -0
- package/components/OperateCard/index.tsx +1 -0
- package/components/OperateCard/index.zh-CN.md +51 -0
- package/components/OperateCard/preset/Rag.tsx +90 -0
- package/components/OperateCard/preset/Thinking.tsx +45 -0
- package/components/OperateCard/preset/TodoList.tsx +73 -0
- package/components/OperateCard/preset/ToolCall.tsx +67 -0
- package/components/OperateCard/preset/WebSearch.tsx +65 -0
- package/components/OperateCard/preset/index.tsx +5 -0
- package/components/OperateCard/style.ts +268 -0
- package/components/Provider/CustomCardsProvider.tsx +17 -0
- package/components/Provider/GlobalProvider.tsx +17 -0
- package/components/Provider/index.tsx +33 -0
- package/components/Provider/types.ts +23 -0
- package/components/ResponsesAPI/index.tsx +0 -0
- package/components/Sender/ModeSelect/index.tsx +160 -0
- package/components/Sender/ModeSelect/styles.ts +0 -0
- package/components/Sender/SenderHeader.tsx +164 -0
- package/components/Sender/StopLoading.tsx +48 -0
- package/components/Sender/components/ActionButton.tsx +106 -0
- package/components/Sender/components/ClearButton.tsx +10 -0
- package/components/Sender/components/LoadingButton.tsx +26 -0
- package/components/Sender/components/SendButton.tsx +22 -0
- package/components/Sender/components/SpeechButton/RecordingIcon.tsx +68 -0
- package/components/Sender/components/SpeechButton/index.tsx +30 -0
- package/components/Sender/demo/asr.tsx +7 -0
- package/components/Sender/demo/basic.tsx +7 -0
- package/components/Sender/demo/loading.tsx +5 -0
- package/components/Sender/demo/moreMode.tsx +45 -0
- package/components/Sender/demo/morePrefixAction.tsx +40 -0
- package/components/Sender/demo/withFile.tsx +54 -0
- package/components/Sender/demo/withImage.tsx +52 -0
- package/components/Sender/index.en-US.md +29 -0
- package/components/Sender/index.tsx +491 -0
- package/components/Sender/index.zh-CN.md +30 -0
- package/components/Sender/style/index.ts +150 -0
- package/components/Sender/useSpeech.ts +133 -0
- package/components/StatusCard/demo/index.tsx +32 -0
- package/components/StatusCard/index.en-US.md +30 -0
- package/components/StatusCard/index.tsx +162 -0
- package/components/StatusCard/index.zh-CN.md +27 -0
- package/components/StatusCard/style.ts +119 -0
- package/components/Stream/index.ts +203 -0
- package/components/Util/hooks/use-proxy-imperative-handle.ts +25 -0
- package/components/Util/sleep.ts +3 -0
- package/components/Util/type.ts +1 -0
- package/components/Util/warning.ts +118 -0
- package/components/Version/index.ts +3 -0
- package/components/Voice/Recorder.tsx +3 -0
- package/components/Voice/demo/index.tsx +0 -0
- package/components/Voice/index.en-US.md +8 -0
- package/components/Voice/index.tsx +0 -0
- package/components/Voice/index.zh-CN.md +9 -0
- package/components/Welcome/demo/EyeFollower.tsx +161 -0
- package/components/Welcome/demo/demo0.tsx +14 -0
- package/components/Welcome/demo/demo1.tsx +16 -0
- package/components/Welcome/demo/demo2.tsx +30 -0
- package/components/Welcome/demo/demo3.tsx +16 -0
- package/components/Welcome/index.en-US.md +28 -0
- package/components/Welcome/index.tsx +72 -0
- package/components/Welcome/index.zh-CN.md +28 -0
- package/components/index.ts +88 -0
- package/components/overview.en-US.md +10 -0
- package/components/overview.zh-CN.md +10 -0
- package/lib/AgentScopeRuntimeWebUI/index.d.ts +1 -0
- package/lib/AgentScopeRuntimeWebUI/index.js +1 -0
- package/lib/AgentScopeRuntimeWebUI/starter/OptionsPanel/FormItem.d.ts +9 -0
- package/lib/AgentScopeRuntimeWebUI/starter/OptionsPanel/FormItem.js +33 -0
- package/lib/AgentScopeRuntimeWebUI/starter/OptionsPanel/OptionsEditor.d.ts +7 -0
- package/lib/AgentScopeRuntimeWebUI/starter/OptionsPanel/OptionsEditor.js +188 -0
- package/lib/AgentScopeRuntimeWebUI/starter/OptionsPanel/defaultConfig.d.ts +29 -0
- package/lib/AgentScopeRuntimeWebUI/starter/OptionsPanel/defaultConfig.js +35 -0
- package/lib/AgentScopeRuntimeWebUI/starter/OptionsPanel/index.d.ts +6 -0
- package/lib/AgentScopeRuntimeWebUI/starter/OptionsPanel/index.js +49 -0
- package/lib/AgentScopeRuntimeWebUI/starter/index.d.ts +1 -0
- package/lib/AgentScopeRuntimeWebUI/starter/index.js +70 -0
- package/lib/AgentScopeRuntimeWebUI/starter/sessionApi/index.d.ts +14 -0
- package/lib/AgentScopeRuntimeWebUI/starter/sessionApi/index.js +143 -0
- package/package.json +3 -2
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { IAgentScopeRuntimeWebUISessionAPI } from '@agentscope-ai/chat';
|
|
2
|
+
import { IAgentScopeRuntimeWebUISession } from '../../lib/types/ISessions';
|
|
3
|
+
|
|
4
|
+
class SessionApi implements IAgentScopeRuntimeWebUISessionAPI {
|
|
5
|
+
private lsKey: string;
|
|
6
|
+
private sessionList: IAgentScopeRuntimeWebUISession[];
|
|
7
|
+
|
|
8
|
+
constructor() {
|
|
9
|
+
this.lsKey = 'agent-scope-runtime-webui-sessions';
|
|
10
|
+
this.sessionList = [];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
async getSessionList() {
|
|
14
|
+
this.sessionList = JSON.parse(localStorage.getItem(this.lsKey) || '[]');
|
|
15
|
+
return [...this.sessionList];
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async getSession(sessionId) {
|
|
19
|
+
return this.sessionList.find((session) => session.id === sessionId);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
async updateSession(session) {
|
|
23
|
+
const index = this.sessionList.findIndex((item) => item.id === session.id);
|
|
24
|
+
if (index > -1) {
|
|
25
|
+
this.sessionList[index] = {
|
|
26
|
+
...this.sessionList[index],
|
|
27
|
+
...session,
|
|
28
|
+
};
|
|
29
|
+
localStorage.setItem(this.lsKey, JSON.stringify(this.sessionList));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return [...this.sessionList];
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async createSession(session) {
|
|
36
|
+
session.id = Date.now().toString();
|
|
37
|
+
this.sessionList.unshift(session);
|
|
38
|
+
localStorage.setItem(this.lsKey, JSON.stringify(this.sessionList));
|
|
39
|
+
return [...this.sessionList];
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
async removeSession(session) {
|
|
43
|
+
this.sessionList = this.sessionList.filter(
|
|
44
|
+
(item) => item.id !== session.id,
|
|
45
|
+
);
|
|
46
|
+
localStorage.setItem(this.lsKey, JSON.stringify(this.sessionList));
|
|
47
|
+
return [...this.sessionList];
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export default new SessionApi();
|
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
import { UploadProps } from 'antd';
|
|
2
|
+
import { IAgentScopeRuntimeWebUISession } from './ISessions';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @description API 配置选项
|
|
6
|
+
* @descriptionEn API configuration options
|
|
7
|
+
*/
|
|
8
|
+
export interface IAgentScopeRuntimeWebUIAPIOptions {
|
|
9
|
+
/**
|
|
10
|
+
* @description 基础URL
|
|
11
|
+
* @descriptionEn Base URL
|
|
12
|
+
*/
|
|
13
|
+
baseURL: string;
|
|
14
|
+
/**
|
|
15
|
+
* @description 鉴权参数
|
|
16
|
+
* @descriptionEn Authorization Token
|
|
17
|
+
*/
|
|
18
|
+
token?: string;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @description 主题配置选项
|
|
23
|
+
* @descriptionEn Theme configuration options
|
|
24
|
+
*/
|
|
25
|
+
export interface IAgentScopeRuntimeWebUIThemeOptions {
|
|
26
|
+
/**
|
|
27
|
+
* @description 主题色
|
|
28
|
+
* @descriptionEn Primary color
|
|
29
|
+
*/
|
|
30
|
+
colorPrimary?: string;
|
|
31
|
+
/**
|
|
32
|
+
* @description 背景色
|
|
33
|
+
* @descriptionEn Background color
|
|
34
|
+
*/
|
|
35
|
+
colorBgBase?: string;
|
|
36
|
+
/**
|
|
37
|
+
* @description 文本颜色
|
|
38
|
+
* @descriptionEn Text color
|
|
39
|
+
*/
|
|
40
|
+
colorTextBase?: string;
|
|
41
|
+
/**
|
|
42
|
+
* @description 是否开启暗色模式
|
|
43
|
+
* @descriptionEn Enable dark mode
|
|
44
|
+
*/
|
|
45
|
+
darkMode?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* @description 是否开启窄屏模式
|
|
48
|
+
* @descriptionEn Enable narrow mode
|
|
49
|
+
*/
|
|
50
|
+
narrowMode?: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* @description CSS 类名前缀
|
|
53
|
+
* @descriptionEn CSS class name prefix
|
|
54
|
+
*/
|
|
55
|
+
prefix?: string;
|
|
56
|
+
/**
|
|
57
|
+
* @description 左侧头部配置
|
|
58
|
+
* @descriptionEn Left header configuration
|
|
59
|
+
*/
|
|
60
|
+
leftHeader?: IAgentScopeRuntimeWebUILeftHeader | React.ReactElement;
|
|
61
|
+
/**
|
|
62
|
+
* @description 右侧头部配置
|
|
63
|
+
* @descriptionEn Right header configuration
|
|
64
|
+
*/
|
|
65
|
+
rightHeader?: React.ReactElement | React.ReactElement[];
|
|
66
|
+
/**
|
|
67
|
+
* @description 排版配置
|
|
68
|
+
* @descriptionEn Typography configuration
|
|
69
|
+
*/
|
|
70
|
+
typography?: IAgentScopeRuntimeWebUITypography;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export interface IAgentScopeRuntimeWebUITypography {
|
|
74
|
+
/**
|
|
75
|
+
* @description 基础字体大小
|
|
76
|
+
* @descriptionEn Base font size
|
|
77
|
+
*/
|
|
78
|
+
baseFontSize?: number;
|
|
79
|
+
/**
|
|
80
|
+
* @description 基础行高
|
|
81
|
+
* @descriptionEn Base line height
|
|
82
|
+
*/
|
|
83
|
+
baseLineHeight?: number;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export interface IAgentScopeRuntimeWebUILeftHeader {
|
|
87
|
+
/**
|
|
88
|
+
* @description Logo 图片地址
|
|
89
|
+
* @descriptionEn Logo image URL
|
|
90
|
+
*/
|
|
91
|
+
logo?: string;
|
|
92
|
+
/**
|
|
93
|
+
* @description 标题
|
|
94
|
+
* @descriptionEn Title
|
|
95
|
+
*/
|
|
96
|
+
title?: string;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* @description 欢迎页配置选项
|
|
101
|
+
* @descriptionEn Welcome page configuration options
|
|
102
|
+
*/
|
|
103
|
+
export interface IAgentScopeRuntimeWebUIWelcomeOptions {
|
|
104
|
+
/**
|
|
105
|
+
* @description 问候语
|
|
106
|
+
* @descriptionEn Greeting message
|
|
107
|
+
*/
|
|
108
|
+
greeting?: string | React.ReactElement;
|
|
109
|
+
/**
|
|
110
|
+
* @description 描述信息
|
|
111
|
+
* @descriptionEn Description text
|
|
112
|
+
*/
|
|
113
|
+
description?: string | React.ReactElement;
|
|
114
|
+
/**
|
|
115
|
+
* @description 头像
|
|
116
|
+
* @descriptionEn Avatar
|
|
117
|
+
*/
|
|
118
|
+
avatar?: string | React.ReactElement;
|
|
119
|
+
/**
|
|
120
|
+
* @description 提示语列表
|
|
121
|
+
* @descriptionEn Prompt list
|
|
122
|
+
*/
|
|
123
|
+
prompts?: (
|
|
124
|
+
| { label?: string; value: string; icon?: React.ReactElement }
|
|
125
|
+
| string
|
|
126
|
+
)[];
|
|
127
|
+
/**
|
|
128
|
+
* @description 自定义渲染函数
|
|
129
|
+
* @descriptionEn Custom render function
|
|
130
|
+
*/
|
|
131
|
+
render?: (
|
|
132
|
+
props: Pick<
|
|
133
|
+
IAgentScopeRuntimeWebUIWelcomeOptions,
|
|
134
|
+
'greeting' | 'description' | 'avatar' | 'prompts'
|
|
135
|
+
> & { onSubmit: (data: { query: string; fileList?: any[] }) => void },
|
|
136
|
+
) => React.ReactElement;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* @description 输入框配置选项
|
|
141
|
+
* @descriptionEn Sender configuration options
|
|
142
|
+
*/
|
|
143
|
+
export interface IAgentScopeRuntimeWebUISenderOptions {
|
|
144
|
+
/**
|
|
145
|
+
* @description 输入框占位符
|
|
146
|
+
* @descriptionEn Input placeholder
|
|
147
|
+
*/
|
|
148
|
+
placeholder?: string;
|
|
149
|
+
/**
|
|
150
|
+
* @description 最大输入长度
|
|
151
|
+
* @descriptionEn Maximum input length
|
|
152
|
+
*/
|
|
153
|
+
maxLength?: number;
|
|
154
|
+
/**
|
|
155
|
+
* @description 是否可缩放
|
|
156
|
+
* @descriptionEn Whether scalable
|
|
157
|
+
*/
|
|
158
|
+
scalable?: boolean;
|
|
159
|
+
/**
|
|
160
|
+
* @description 输入框前置UI
|
|
161
|
+
* @descriptionEn UI before input
|
|
162
|
+
*/
|
|
163
|
+
beforeUI?: React.ReactElement | React.ReactElement[];
|
|
164
|
+
/**
|
|
165
|
+
* @description 输入框后置UI
|
|
166
|
+
* @descriptionEn UI after input
|
|
167
|
+
*/
|
|
168
|
+
afterUI?: React.ReactElement | React.ReactElement[];
|
|
169
|
+
/**
|
|
170
|
+
* @description 提交前的钩子函数
|
|
171
|
+
* @descriptionEn Hook function before submit
|
|
172
|
+
*/
|
|
173
|
+
beforeSubmit?: () => Promise<Boolean>;
|
|
174
|
+
/**
|
|
175
|
+
* @description 提交回调函数
|
|
176
|
+
* @descriptionEn Submit callback function
|
|
177
|
+
*/
|
|
178
|
+
onSubmit?: (data: { query: string; fileList?: any[] }) => void;
|
|
179
|
+
/**
|
|
180
|
+
* @description 取消回调函数
|
|
181
|
+
* @descriptionEn Cancel callback function
|
|
182
|
+
*/
|
|
183
|
+
onCancel?: () => void;
|
|
184
|
+
/**
|
|
185
|
+
* @description 免责声明
|
|
186
|
+
* @descriptionEn Disclaimer
|
|
187
|
+
*/
|
|
188
|
+
disclaimer?: string | React.ReactElement;
|
|
189
|
+
/**
|
|
190
|
+
* @description 附件配置
|
|
191
|
+
* @descriptionEn Attachments configuration
|
|
192
|
+
*/
|
|
193
|
+
attachments?: IAgentScopeRuntimeWebUISenderAttachmentsOptions;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* @description 附件配置选项
|
|
198
|
+
* @descriptionEn Attachments configuration options
|
|
199
|
+
*/
|
|
200
|
+
export interface IAgentScopeRuntimeWebUISenderAttachmentsOptions {
|
|
201
|
+
/**
|
|
202
|
+
* @description 自定义上传请求
|
|
203
|
+
* @descriptionEn Custom upload request
|
|
204
|
+
*/
|
|
205
|
+
customRequest?: UploadProps['customRequest'];
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* @description 会话 API 接口
|
|
210
|
+
* @descriptionEn Session API interface
|
|
211
|
+
*/
|
|
212
|
+
export interface IAgentScopeRuntimeWebUISessionAPI {
|
|
213
|
+
/**
|
|
214
|
+
* @description 获取会话列表
|
|
215
|
+
* @descriptionEn Get session list
|
|
216
|
+
*/
|
|
217
|
+
getSessionList?: () => Promise<IAgentScopeRuntimeWebUISession[]>;
|
|
218
|
+
/**
|
|
219
|
+
* @description 获取会话详情
|
|
220
|
+
* @descriptionEn Get session details
|
|
221
|
+
*/
|
|
222
|
+
getSession?: (sessionId: string) => Promise<IAgentScopeRuntimeWebUISession>;
|
|
223
|
+
/**
|
|
224
|
+
* @description 更新会话
|
|
225
|
+
* @descriptionEn Update session
|
|
226
|
+
*/
|
|
227
|
+
updateSession?: (session: Partial<IAgentScopeRuntimeWebUISession>) => Promise<IAgentScopeRuntimeWebUISession[]>;
|
|
228
|
+
/**
|
|
229
|
+
* @description 创建会话
|
|
230
|
+
* @descriptionEn Create session
|
|
231
|
+
*/
|
|
232
|
+
createSession?: (session: Partial<IAgentScopeRuntimeWebUISession>) => Promise<IAgentScopeRuntimeWebUISession[]>;
|
|
233
|
+
/**
|
|
234
|
+
* @description 删除会话
|
|
235
|
+
* @descriptionEn Remove session
|
|
236
|
+
*/
|
|
237
|
+
removeSession?: (session: Partial<IAgentScopeRuntimeWebUISession>) => Promise<IAgentScopeRuntimeWebUISession[]>;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* @description 会话配置选项
|
|
242
|
+
* @descriptionEn Session configuration options
|
|
243
|
+
*/
|
|
244
|
+
export interface IAgentScopeRuntimeWebUISessionOptions {
|
|
245
|
+
/**
|
|
246
|
+
* @description 是否支持多会话
|
|
247
|
+
* @descriptionEn Whether to support multiple sessions
|
|
248
|
+
*/
|
|
249
|
+
multiple?: boolean;
|
|
250
|
+
/**
|
|
251
|
+
* @description 会话 API 接口
|
|
252
|
+
* @descriptionEn Session API interface
|
|
253
|
+
*/
|
|
254
|
+
api: IAgentScopeRuntimeWebUISessionAPI;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* @description 自定义卡片组件配置
|
|
259
|
+
* @descriptionEn Custom cards component configuration
|
|
260
|
+
*/
|
|
261
|
+
export interface IAgentScopeRuntimeWebUICardsOptions {
|
|
262
|
+
/**
|
|
263
|
+
* @description 卡片组件映射表,key 为卡片类型,value 为对应的 React 组件
|
|
264
|
+
* @descriptionEn Card component mapping, key is card type, value is corresponding React component
|
|
265
|
+
*/
|
|
266
|
+
[key: string]: React.FC<any>;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* @description AgentScope Runtime WebUI 主配置选项
|
|
271
|
+
* @descriptionEn AgentScope Runtime WebUI main configuration options
|
|
272
|
+
*/
|
|
273
|
+
export interface IAgentScopeRuntimeWebUIOptions {
|
|
274
|
+
/**
|
|
275
|
+
* @description API 配置
|
|
276
|
+
* @descriptionEn API configuration
|
|
277
|
+
*/
|
|
278
|
+
api: IAgentScopeRuntimeWebUIAPIOptions;
|
|
279
|
+
/**
|
|
280
|
+
* @description 主题配置
|
|
281
|
+
* @descriptionEn Theme configuration
|
|
282
|
+
*/
|
|
283
|
+
theme?: IAgentScopeRuntimeWebUIThemeOptions;
|
|
284
|
+
/**
|
|
285
|
+
* @description 欢迎页配置
|
|
286
|
+
* @descriptionEn Welcome page configuration
|
|
287
|
+
*/
|
|
288
|
+
welcome?: IAgentScopeRuntimeWebUIWelcomeOptions;
|
|
289
|
+
/**
|
|
290
|
+
* @description 输入框配置
|
|
291
|
+
* @descriptionEn Sender configuration
|
|
292
|
+
*/
|
|
293
|
+
sender?: IAgentScopeRuntimeWebUISenderOptions;
|
|
294
|
+
/**
|
|
295
|
+
* @description 会话配置
|
|
296
|
+
* @descriptionEn Session configuration
|
|
297
|
+
*/
|
|
298
|
+
session: IAgentScopeRuntimeWebUISessionOptions;
|
|
299
|
+
/**
|
|
300
|
+
* @description 自定义卡片配置
|
|
301
|
+
* @descriptionEn Custom cards configuration
|
|
302
|
+
*/
|
|
303
|
+
cards?: IAgentScopeRuntimeWebUICardsOptions;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
/**
|
|
307
|
+
* @description 输入框上下文状态接口
|
|
308
|
+
* @descriptionEn Input context state interface
|
|
309
|
+
*/
|
|
310
|
+
export interface IAgentScopeRuntimeWebUIInputContext {
|
|
311
|
+
/**
|
|
312
|
+
* @description 加载状态
|
|
313
|
+
* @descriptionEn Loading state
|
|
314
|
+
*/
|
|
315
|
+
loading: boolean;
|
|
316
|
+
/**
|
|
317
|
+
* @description 设置加载状态
|
|
318
|
+
* @descriptionEn Set loading state
|
|
319
|
+
*/
|
|
320
|
+
setLoading: (loading: boolean) => void;
|
|
321
|
+
/**
|
|
322
|
+
* @description 获取加载状态
|
|
323
|
+
* @descriptionEn Get loading state
|
|
324
|
+
*/
|
|
325
|
+
getLoading: () => boolean;
|
|
326
|
+
/**
|
|
327
|
+
* @description 禁用状态
|
|
328
|
+
* @descriptionEn Disabled state
|
|
329
|
+
*/
|
|
330
|
+
disabled: boolean;
|
|
331
|
+
/**
|
|
332
|
+
* @description 设置禁用状态
|
|
333
|
+
* @descriptionEn Set disabled state
|
|
334
|
+
*/
|
|
335
|
+
setDisabled: (disabled: boolean) => void;
|
|
336
|
+
/**
|
|
337
|
+
* @description 获取禁用状态
|
|
338
|
+
* @descriptionEn Get disabled state
|
|
339
|
+
*/
|
|
340
|
+
getDisabled: () => boolean;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* @description 输入数据接口
|
|
345
|
+
* @descriptionEn Input data interface
|
|
346
|
+
*/
|
|
347
|
+
export interface IAgentScopeRuntimeWebUIInputData {
|
|
348
|
+
/**
|
|
349
|
+
* @description 查询文本
|
|
350
|
+
* @descriptionEn Query text
|
|
351
|
+
*/
|
|
352
|
+
query: string;
|
|
353
|
+
/**
|
|
354
|
+
* @description 文件列表
|
|
355
|
+
* @descriptionEn File list
|
|
356
|
+
*/
|
|
357
|
+
fileList?: UploadProps['fileList'];
|
|
358
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export interface IAgentScopeRuntimeWebUIMessageCard<T = string | any> {
|
|
2
|
+
/**
|
|
3
|
+
* @description 卡片的唯一标识符
|
|
4
|
+
* @descriptionEn Unique identifier for the card
|
|
5
|
+
*/
|
|
6
|
+
id?: string;
|
|
7
|
+
/**
|
|
8
|
+
* @description 卡片的类型代码
|
|
9
|
+
* @descriptionEn Type code for the card
|
|
10
|
+
*/
|
|
11
|
+
code: string;
|
|
12
|
+
/**
|
|
13
|
+
* @description 卡片的渲染组件
|
|
14
|
+
* @descriptionEn Rendering component for the card
|
|
15
|
+
*/
|
|
16
|
+
component?: React.FC;
|
|
17
|
+
/**
|
|
18
|
+
* @description 卡片的数据内容
|
|
19
|
+
* @descriptionEn Data content for the card
|
|
20
|
+
*/
|
|
21
|
+
data?: T;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface IAgentScopeRuntimeWebUIMessage<T = string | any> {
|
|
25
|
+
/**
|
|
26
|
+
* @description 消息的唯一标识符
|
|
27
|
+
* @descriptionEn Unique identifier for the message
|
|
28
|
+
*/
|
|
29
|
+
id: string;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @description 消息中的卡片组件配置
|
|
33
|
+
* @descriptionEn Card component configuration in the message
|
|
34
|
+
*/
|
|
35
|
+
cards?: IAgentScopeRuntimeWebUIMessageCard<T>[];
|
|
36
|
+
/**
|
|
37
|
+
* @description 消息的角色类型,区分用户、助手和系统消息
|
|
38
|
+
* @descriptionEn Role type of the message to distinguish user, assistant, and system messages
|
|
39
|
+
*/
|
|
40
|
+
role: 'user' | 'assistant' | 'system';
|
|
41
|
+
/**
|
|
42
|
+
* @description 消息的处理状态,影响显示效果
|
|
43
|
+
* @descriptionEn Processing status of the message, affects display effects
|
|
44
|
+
*/
|
|
45
|
+
msgStatus?: 'finished' | 'interrupted' | 'generating' | 'error';
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface IAgentScopeRuntimeWebUIMessagesContext {
|
|
49
|
+
messages: IAgentScopeRuntimeWebUIMessage[];
|
|
50
|
+
setMessages: (messages: IAgentScopeRuntimeWebUIMessage[]) => void;
|
|
51
|
+
getMessages: () => IAgentScopeRuntimeWebUIMessage[];
|
|
52
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { IAgentScopeRuntimeWebUIMessage } from "@agentscope-ai/chat";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
export interface IAgentScopeRuntimeWebUISession {
|
|
5
|
+
/**
|
|
6
|
+
* @description 会话的唯一标识符
|
|
7
|
+
* @descriptionEn Unique identifier for the session
|
|
8
|
+
*/
|
|
9
|
+
id: string;
|
|
10
|
+
/**
|
|
11
|
+
* @description 会话的名称
|
|
12
|
+
* @descriptionEn Name of the session
|
|
13
|
+
*/
|
|
14
|
+
name: string;
|
|
15
|
+
/**
|
|
16
|
+
* @description 会话的消息列表
|
|
17
|
+
* @descriptionEn Message list for the session
|
|
18
|
+
*/
|
|
19
|
+
messages: IAgentScopeRuntimeWebUIMessage[];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface IAgentScopeRuntimeWebUISessionsContext {
|
|
23
|
+
sessions: IAgentScopeRuntimeWebUISession[];
|
|
24
|
+
setSessions: (sessions: IAgentScopeRuntimeWebUISession[]) => void;
|
|
25
|
+
getSessions: () => IAgentScopeRuntimeWebUISession[];
|
|
26
|
+
currentSessionId: string | undefined;
|
|
27
|
+
setCurrentSessionId: (sessionId: string | undefined) => void;
|
|
28
|
+
getCurrentSessionId: () => string | undefined;
|
|
29
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Form, Input, InputNumber, Space, ColorPicker, Flex } from 'antd';
|
|
2
|
+
import { createStyles } from 'antd-style';
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
interface FormItemProps {
|
|
6
|
+
name: string | string[];
|
|
7
|
+
label: string;
|
|
8
|
+
isList?: boolean;
|
|
9
|
+
children: any;
|
|
10
|
+
normalize?: (value: any) => any;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
const useStyles = createStyles(({ token, css }) => ({
|
|
15
|
+
label: {
|
|
16
|
+
marginBottom: 6,
|
|
17
|
+
fontSize: 12,
|
|
18
|
+
color: token.colorTextSecondary,
|
|
19
|
+
},
|
|
20
|
+
|
|
21
|
+
}));
|
|
22
|
+
|
|
23
|
+
export default function FormItem(props: FormItemProps) {
|
|
24
|
+
const { styles } = useStyles();
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
const node = props.isList ?
|
|
28
|
+
<Form.List name={props.name}>{props.children}</Form.List> :
|
|
29
|
+
<Form.Item name={props.name} normalize={props.normalize}>{props.children}</Form.Item>;
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
return <div>
|
|
33
|
+
{props.label && <div className={styles.label}>{props.label}</div>}
|
|
34
|
+
{node}
|
|
35
|
+
</div>
|
|
36
|
+
|
|
37
|
+
}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import React, { useEffect } from 'react';
|
|
2
|
+
import { Form, Input, ColorPicker, Flex, Splitter, Divider, InputNumber } from 'antd';
|
|
3
|
+
import { createStyles } from 'antd-style';
|
|
4
|
+
import { Button, IconButton, Switch } from '@agentscope-ai/design'
|
|
5
|
+
import { SparkDeleteLine, SparkPlusLine } from '@agentscope-ai/icons';
|
|
6
|
+
import FormItem from './FormItem';
|
|
7
|
+
import defaultConfig from './defaultConfig';
|
|
8
|
+
|
|
9
|
+
const useStyles = createStyles(({ token, css }) => ({
|
|
10
|
+
container: {
|
|
11
|
+
height: '100%',
|
|
12
|
+
display: 'flex',
|
|
13
|
+
flexDirection: 'column',
|
|
14
|
+
},
|
|
15
|
+
|
|
16
|
+
form: {
|
|
17
|
+
height: 0,
|
|
18
|
+
flex: 1,
|
|
19
|
+
padding: '8px 16px 16px 16px',
|
|
20
|
+
overflow: 'auto',
|
|
21
|
+
},
|
|
22
|
+
actions: {
|
|
23
|
+
padding: 16,
|
|
24
|
+
display: 'flex',
|
|
25
|
+
borderTop: `1px solid ${token.colorBorderSecondary}`,
|
|
26
|
+
justifyContent: 'flex-end',
|
|
27
|
+
gap: 16,
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
}));
|
|
31
|
+
|
|
32
|
+
interface OptionsEditorProps {
|
|
33
|
+
value?: any;
|
|
34
|
+
onChange?: any;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const OptionsEditor: React.FC<OptionsEditorProps> = ({
|
|
38
|
+
value,
|
|
39
|
+
onChange,
|
|
40
|
+
}) => {
|
|
41
|
+
const { styles } = useStyles();
|
|
42
|
+
const [form] = Form.useForm();
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
const handleSave = () => {
|
|
46
|
+
form.validateFields().then((values) => {
|
|
47
|
+
onChange(values);
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const handleReset = () => {
|
|
52
|
+
form.setFieldsValue(defaultConfig);
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
return (
|
|
56
|
+
<div className={styles.container}>
|
|
57
|
+
<Form
|
|
58
|
+
className={styles.form}
|
|
59
|
+
form={form}
|
|
60
|
+
layout="vertical"
|
|
61
|
+
initialValues={value}
|
|
62
|
+
>
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
<Divider orientation="left">Theme</Divider>
|
|
66
|
+
|
|
67
|
+
<FormItem name={['theme', 'colorPrimary']} label="colorPrimary" normalize={value => value.toHexString()}>
|
|
68
|
+
<ColorPicker />
|
|
69
|
+
</FormItem>
|
|
70
|
+
|
|
71
|
+
<FormItem name={['theme', 'colorBgBase']} label="colorBgBase" normalize={value => value.toHexString()}>
|
|
72
|
+
<ColorPicker />
|
|
73
|
+
</FormItem>
|
|
74
|
+
|
|
75
|
+
<FormItem name={['theme', 'colorTextBase']} label="colorTextBase" normalize={value => value.toHexString()}>
|
|
76
|
+
<ColorPicker />
|
|
77
|
+
</FormItem>
|
|
78
|
+
|
|
79
|
+
<FormItem name={['theme', 'darkMode']} label="darkMode" >
|
|
80
|
+
<Switch />
|
|
81
|
+
</FormItem>
|
|
82
|
+
|
|
83
|
+
<FormItem name={['theme', 'leftHeader', 'logo']} label="leftHeader.logo" >
|
|
84
|
+
<Input />
|
|
85
|
+
</FormItem>
|
|
86
|
+
|
|
87
|
+
<FormItem name={['theme', 'leftHeader', 'title']} label="leftHeader.title" >
|
|
88
|
+
<Input />
|
|
89
|
+
</FormItem>
|
|
90
|
+
|
|
91
|
+
<Divider orientation="left">Sender</Divider>
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
<FormItem name={['sender', 'disclaimer']} label="disclaimer" >
|
|
95
|
+
<Input />
|
|
96
|
+
</FormItem>
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
<FormItem name={['sender', 'attachments']} label="attachments" >
|
|
100
|
+
<Switch />
|
|
101
|
+
</FormItem>
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
<FormItem name={['sender', 'maxLength']} label="maxLength" >
|
|
105
|
+
<InputNumber min={1000} />
|
|
106
|
+
</FormItem>
|
|
107
|
+
|
|
108
|
+
<Divider orientation="left">Welcome</Divider>
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
<FormItem name={['welcome', 'greeting']} label="greeting" >
|
|
112
|
+
<Input />
|
|
113
|
+
</FormItem>
|
|
114
|
+
|
|
115
|
+
<FormItem name={['welcome', 'description']} label="description" >
|
|
116
|
+
<Input />
|
|
117
|
+
</FormItem>
|
|
118
|
+
|
|
119
|
+
<FormItem name={['welcome', 'avatar']} label="avatar" >
|
|
120
|
+
<Input />
|
|
121
|
+
</FormItem>
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
<FormItem name={['welcome', 'prompts']} isList label="prompts" >
|
|
125
|
+
{(fields, { add, remove }) => {
|
|
126
|
+
return <div>
|
|
127
|
+
{fields.map(field => {
|
|
128
|
+
return <Flex key={field.key} gap={6}>
|
|
129
|
+
<Form.Item style={{ flex: 1 }} key={field.key} name={[field.name, 'value']}>
|
|
130
|
+
<Input />
|
|
131
|
+
</Form.Item>
|
|
132
|
+
<IconButton icon={<SparkPlusLine />} onClick={() => add({})}></IconButton>
|
|
133
|
+
<IconButton icon={<SparkDeleteLine />} onClick={() => remove(field.name)}></IconButton>
|
|
134
|
+
</Flex>
|
|
135
|
+
})}
|
|
136
|
+
</div>
|
|
137
|
+
}}
|
|
138
|
+
</FormItem>
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
<Divider orientation="left">API</Divider>
|
|
142
|
+
|
|
143
|
+
<FormItem name={['api', 'baseURL']} label="baseURL" >
|
|
144
|
+
<Input />
|
|
145
|
+
</FormItem>
|
|
146
|
+
|
|
147
|
+
<FormItem name={['api', 'token']} label="token" >
|
|
148
|
+
<Input />
|
|
149
|
+
</FormItem>
|
|
150
|
+
</Form>
|
|
151
|
+
|
|
152
|
+
<div className={styles.actions}>
|
|
153
|
+
<Button onClick={handleReset}>Reset</Button>
|
|
154
|
+
<Button type="primary" onClick={handleSave}>
|
|
155
|
+
Save & Copy
|
|
156
|
+
</Button>
|
|
157
|
+
</div>
|
|
158
|
+
</div>
|
|
159
|
+
);
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
export default OptionsEditor;
|
|
163
|
+
|