@zero-library/chat-copilot 3.1.31 → 4.0.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/index.cjs.js +1924 -426
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.css +565 -117
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +441 -7
- package/dist/index.d.ts +441 -7
- package/dist/index.esm.js +1924 -430
- package/dist/index.esm.js.map +1 -1
- package/package.json +7 -5
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/stores/Context.ts","../src/components/styles.module.less","../src/components/Attachments.tsx","../src/components/ChatInput/index.module.less","../src/core/constants.ts","../src/core/session.ts","../src/core/utils.ts","../src/components/ChatInput/FilePickerMenu.tsx","../src/components/ChatInput/ResourcePickerMenu.tsx","../src/components/ChatInput/ResourceTag.tsx","../src/components/ChatInput/ResourceSelect.tsx","../src/components/ChatInput/index.tsx","../src/components/ChatSender.tsx","../src/services/index.ts","../src/stores/index.ts","../src/components/AuthImage/index.tsx","../src/assets/iconfont.js","../src/components/IconFont/index.ts","../src/ui/common/FeatureComponents/ConversationFavoritesBtn.tsx","../src/ui/common/FeatureComponents/ConversationShareBtn.tsx","../src/ui/common/FeatureComponents/CreateBtn.tsx","../src/ui/common/styles.module.less","../src/ui/common/ConversationList.tsx","../src/ui/common/FeatureComponents/style.module.less","../src/ui/common/FeatureComponents/HistoryBtn.tsx","../src/ui/common/ChatHeader.tsx","../src/ui/common/ConversationListHeader.tsx","../src/ui/common/ConversationListPanel.tsx","../src/components/CustomComponents/A2uiRuntime/x-card.ts","../src/components/CustomComponents/A2uiRuntime/components/artifacts/ArtifactCard.tsx","../src/components/CustomComponents/A2uiRuntime/components/artifacts/chart-utils.tsx","../src/components/CustomComponents/A2uiRuntime/components/artifacts/export-utils.ts","../src/components/CustomComponents/A2uiRuntime/components/artifacts/ChartViewer.tsx","../src/components/CustomComponents/XMarkdown/AgentNavigate.tsx","../src/components/CustomComponents/XMarkdown/styles.module.less","../src/components/CustomComponents/XMarkdown/AppCard.tsx","../src/components/CustomComponents/XMarkdown/Charts.tsx","../src/components/CustomComponents/XMarkdown/CodeHighlight.tsx","../src/components/CustomComponents/XMarkdown/FileEdit.tsx","../src/components/CustomComponents/XMarkdown/FileView.tsx","../src/components/CustomComponents/XMarkdown/components/DocDrawer.tsx","../src/components/CustomComponents/XMarkdown/IndexQuote.tsx","../src/components/CustomComponents/XMarkdown/MarkImg.tsx","../src/components/CustomComponents/XMarkdown/MdEdit.tsx","../src/components/CustomComponents/XMarkdown/PreviewLink.tsx","../src/components/CustomComponents/XMarkdown/Think.tsx","../src/components/XMarkdown/styles.module.less","../src/components/XMarkdown/index.tsx","../src/components/CustomComponents/A2uiRuntime/components/artifacts/ReportViewer.tsx","../src/components/CustomComponents/A2uiRuntime/components/artifacts/TableViewer.tsx","../src/components/CustomComponents/A2uiRuntime/components/A2uiComponents.tsx","../src/components/CustomComponents/A2uiRuntime/controller/extract.ts","../src/components/CustomComponents/A2uiRuntime/controller/meta.ts","../src/components/CustomComponents/A2uiRuntime/controller/action.ts","../src/components/CustomComponents/A2uiRuntime/controller/visibility.ts","../src/components/CustomComponents/A2uiRuntime/controller/wizard.ts","../src/components/CustomComponents/A2uiRuntime/controller/runtime.ts","../src/components/CustomComponents/A2uiRuntime/controller/index.ts","../src/components/CustomComponents/A2uiRuntime/renderer/context.ts","../src/components/CustomComponents/A2uiRuntime/renderer/useA2uiRuntimeView.ts","../src/components/CustomComponents/A2uiRuntime/renderer/A2uiMessageCards.tsx","../src/components/CustomComponents/A2uiRuntime/renderer/protocol.ts","../src/components/CustomComponents/A2uiRuntime/renderer/A2uiPlan.tsx","../src/components/CustomComponents/A2uiRuntime/renderer/A2uiRuntimeProvider.tsx","../src/components/CustomComponents/A2uiRuntime/renderer/A2uiRenderer.tsx","../src/components/CustomComponents/MessageNode/FilesNode.tsx","../src/components/CustomComponents/MessageNode/style.module.less","../src/components/CustomComponents/MessageNode/QuoteMsgNode.tsx","../src/components/CustomComponents/MessageNode/RunStartedNode.tsx","../src/components/CustomComponents/MessageNode/TextNode.tsx","../src/components/CustomComponents/ToolRenders/index.module.less","../src/components/CustomComponents/ToolRenders/default-render.tsx","../src/components/CustomComponents/ToolRenders/sub-agent-render.tsx","../src/components/CustomComponents/ToolRenders/todo-write-render.tsx","../src/components/CustomComponents/ToolRenders/index.tsx","../src/components/CustomComponents/ToolRenders/tool-call-item.tsx","../src/components/MessageRender.tsx","../src/ui/common/WelcomeItem.tsx","../src/ui/common/BubbleListItems.tsx","../src/ui/common/FeatureComponents/ResourceSelectorModal.tsx","../src/ui/common/FeatureComponents/KnowledgeBtn.tsx","../src/ui/common/FeatureComponents/ModelSelect.tsx","../src/ui/common/FeatureComponents/ReasonBtn.tsx","../src/ui/common/FeatureComponents/SkillBtn.tsx","../src/ui/common/ChatSender.tsx","../src/ui/common/ChatSenderHeader.tsx","../src/components/MonacoEditor/index.tsx","../src/ui/common/UserInputPanel.tsx","../src/ui/layouts/components/styles.module.less","../src/ui/layouts/components/ChatMainPanel.tsx","../src/ui/layouts/components/ChatPreviewPanel.tsx","../src/ui/layouts/index.module.less","../src/ui/layouts/index.tsx"],"names":["createContext","React","useContext","chatAttachments","chatSender","bubble","forwardRef","message","App","useSnapshot","useRef","useRefState","useEffect","useDebounce","getFileSuffixName","isNumber","isObject","isNullOrUnDef","useImperativeHandle","useMemo","jsx","Attachments","CloudUploadOutlined","jsxs","promptEditorInputContainer","promptEditorContent","promptEditorPlaceholder","resourceSelect","fileMenu","fileMenuGroup","fileMenuGroupTitle","fileMenuEmpty","fileMenuItem","fileMenuItemActive","fileIcon","fileName","resourceTag","WorkspaceTypeEnum","createTokenManager","emit","dayjs","isArray","isDef","isNull","buildUrlParams","getWebSocketUrl","FileImageOutlined","FilePdfOutlined","FileWordOutlined","FileExcelOutlined","FilePptOutlined","FileZipOutlined","FileTextOutlined","FileUnknownOutlined","useState","useLayoutEffect","Tag","useLexicalComposerContext","$getNodeByKey","DecoratorNode","MenuOption","mergeRegister","FOCUS_COMMAND","COMMAND_PRIORITY_LOW","BLUR_COMMAND","useCallback","Fragment","LexicalTypeaheadMenuPlugin","ReactDOM","value","$createTextNode","$getRoot","$createParagraphNode","React4","LexicalComposer","RichTextPlugin","ContentEditable","LexicalErrorBoundary","HistoryPlugin","OnChangePlugin","useSyncInput","Badge","Button","PaperClipOutlined","Sender","ref","Flex","proxy","createRequest","HttpStatus","baseURL","isString","shouldRender","deepMerge","transforms","antdMessage","config","transform","item","feedback","deepCopy","Avatar","a","c","createFromIconfontCN","StarFilled","StarOutlined","copyText","ShareAltOutlined","PlusOutlined","styles_module_default","chatHeader","chatHeaderContent","chatTitle","defaultLogo","chatHeaderBtnGroup","conversationListPanel","createConversationButton","conversations","conversationEmpty","chatWelcomeWrap","chatWelcome","promptItem","bubbleList","userInputCollapse","logoArea","logoContainer","staticHalo","logoHoverWrapper","logoImage","greetingTitle","gradientText","greetingSubtitle","senderReferenceHeaderTitle","senderReferenceHeaderContent","InfiniteScroll","console","Spin","RedoOutlined","Conversations","Empty","DeleteOutlined","Popconfirm","Tabs","popover","resourceBtn","divider","count","resourceBtnActive","customModal","layout","sider","categoryName","siderContent","categoryItem","categoryActive","roundCheckbox","content","searchInput","selectedCount","tagsArea","tagContainer","tag","expandBtnWrapper","expandBtn","tagsExpanded","listArea","listInner","listItem","listItemSelected","itemIconWrapper","itemInfo","itemDesc","footer","titleContainer","open","Popover","CommentOutlined","classNames","RenderWrapper","Space","CloseOutlined","Typography","rawXCard","AntCard","AntTag","rawMinY","rawMaxY","minY","maxY","spanY","plotW","plotH","scaleX","scaleY","y0","AntButton","memo","appCard","fileView","fileEdit","fileEditHeader","fileEditContent","mdEdit","chart","chartSkeleton","chartSkeletonIcon","Skeleton","DotChartOutlined","LazyComponent","Alert","Mermaid","CodeHighlighter","FileIcon","PlayCircleOutlined","CopyOutlined","Drawer","XMarkdown","isExternal","Content","Image","MarkdownEditor","Think","xMarkdownStyle","Latex","safeParseJson","AntTable","AText","Text","Input","valuePath","AntSelect","AntSwitch","AntDivider","AntProgress","extractPathFromRef","extractSurfaceId","ReportViewer","ChartViewer","TableViewer","ArtifactCard","FileCard","style_module_default","runStartedNode","dot","Bubble","Tooltip","TextNode","index_module_default","toolCollapse","toolCallItem","toolIcon","toolName","statusIcon","duration","toolNamePending","dot-blink","expandIcon","expanded","contentScrollContainer","sectionLabel","plainTextContainer","markdownContainer","summaryText","metaGrid","metaItem","metaLabel","metaValue","linkList","linkItem","linkTitle","linkIndex","linkSummary","linkUrl","statusBlock","status_info","status_success","status_warning","status_error","errorDisplay","sectionBlock","compactSectionBlock","subAgentContainer","subAgentHeader","subAgentName","subAgentMessages","todoList","todoItem","statusIconWrapper","todoContent","todoText","completed","emptyText","theme","CheckCircleOutlined","ClockCircleOutlined","List","ToolOutlined","Collapse","RightOutlined","LoadingOutlined","quoteMsg","isEmptyObj","Welcome","Prompts","isBoolean","UserAvatar","chatRecords","htmlToMarkdown","LikeOutlined","DislikeOutlined","Layout","Title","Modal","Checkbox","SearchOutlined","UpOutlined","DownOutlined","Divider","model","Select","ChatSender_default","markdownToText","isFunction","EnterOutlined","Upload","Form","InputNumber","Switch","bodyWidth","inputContainer","disclaimerNotice","previewHeader","previewHeaderTitle","actionIcon","DownloadOutlined","downloadFile","LuyaFilePreview","chatLayout","animatedSplitter","hideSplitterBar","useDeepEffect","sizes","useWebSocket","XProvider","Splitter"],"mappings":"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","file":"index.cjs.js","sourcesContent":["import React, { createContext, useContext } from 'react'\nimport type { ChatStoreType } from '../types'\n\n/**\n * 基于泛型创建专用的聊天上下文\n * 使用 Valtio 进行状态管理,提供 Provider 和 Hook\n */\nconst ChatContext = createContext<ChatStoreType | null>(null)\n\nexport function ChatProvider({ store, children }: { store: ChatStoreType; children?: React.ReactNode }) {\n return React.createElement(ChatContext.Provider, { value: store }, children)\n}\n\nexport function useChatStore() {\n const store = useContext(ChatContext)\n if (!store) {\n throw new Error('useChatStore must be used within ChatProvider')\n }\n return store\n}\n","@keyframes loading-line {\n from {\n background-position: 200% 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n.chatAttachments:global > .ant-attachment-list .ant-attachment-list-content {\n padding: 0 !important;\n}\n.chatAttachments:global > .ant-attachment-list .ant-attachment-list-card-status-uploading .ant-progress .ant-progress-text {\n display: none;\n}\n.chatAttachments:global > .ant-attachment-list .ant-attachment-list-card-status-uploading .ant-progress .ant-progress-circle {\n animation: spin 2s linear infinite;\n}\n.chatAttachments:global > .ant-attachment-list .ant-attachment-list-card-status-uploading .ant-attachment-list-card-content {\n gap: 4px;\n}\n.chatAttachments:global > .ant-attachment-list .ant-attachment-list-card-status-uploading .ant-attachment-list-card-content .ant-attachment-list-card-desc {\n width: 15px;\n height: 15px;\n border: 2px solid transparent;\n border-color: #1890ff;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n box-sizing: border-box;\n position: relative;\n clip-path: inset(0 0 30% 0);\n}\n.chatAttachments:global > .ant-attachment-list .ant-attachment-list-card-status-uploading .ant-attachment-list-card-content .ant-attachment-list-card-desc .ant-attachment-list-card-ellipsis-prefix {\n display: none;\n}\n.chatSender:global.ant-sender .ant-sender-input {\n scrollbar-width: thin;\n scrollbar-color: transparent transparent;\n}\n.chatSender:global.ant-sender .ant-sender-input::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n.chatSender:global.ant-sender .ant-sender-input::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0);\n border-radius: 4px;\n transition: background-color 0.3s ease 0.3s;\n}\n.chatSender:global.ant-sender .ant-sender-input::-webkit-scrollbar-track {\n background: transparent;\n}\n.chatSender:global.ant-sender .ant-sender-input:hover {\n scrollbar-color: rgba(0, 0, 0, 0.1) transparent;\n}\n.chatSender:global.ant-sender .ant-sender-input:hover::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0.1);\n transition-delay: 0s;\n}\n.chatSender:global.ant-sender .ant-sender-footer {\n padding: 6px;\n}\n.chatSender:global.ant-sender .ant-sender-header .ant-sender-header-content {\n padding: 0 !important;\n}\n.chatSender:global.ant-sender:focus-within {\n box-shadow: none;\n}\n@keyframes shimmer-bg {\n 0% {\n background-position: 200% 0;\n }\n 100% {\n background-position: -200% 0;\n }\n}\n.bubble:global.ant-bubble-end {\n padding-inline-start: 0% !important;\n}\n","import { CloudUploadOutlined } from '@ant-design/icons'\nimport { Attachments } from '@ant-design/x-v2'\nimport { Attachment } from '@ant-design/x-v2/es/attachments'\nimport { getFileSuffixName, isNullOrUnDef, isNumber, isObject, useDebounce, useRefState } from '@zero-library/common'\nimport { App } from 'antd'\nimport { RcFile, UploadFile } from 'antd/lib/upload'\nimport { forwardRef, useEffect, useImperativeHandle, useMemo, useRef } from 'react'\nimport { useSnapshot } from 'valtio'\nimport { useChatStore } from '../stores/Context'\nimport { FileUploadConfig, InputFile } from '../types'\nimport styles from './styles.module.less'\n/**\n * 附件组件属性接口\n */\nexport interface AttachmentsProps {\n /** 文件上传函数,接收 FormData 并返回上传结果 */\n fileUpload: (formData: FormData, signal?: AbortSignal) => Promise<R<InputFile[]>>\n /** 文件上传配置列表,定义允许的文件类型和大小限制 */\n fileUploadConfig?: FileUploadConfig\n /** 额外的上传参数,会附加到 FormData 中 */\n extraParams?: ObjectType<string | undefined>\n /** 当前文件列表 */\n fileList?: InputFile[]\n /** 文件列表变化回调函数 */\n onChange: (fileList: InputFile[]) => void\n}\n/**\n * 附件文件类型,继承自 Ant Design X 的 Attachment 类型\n */\ntype AttachedFile = Attachment & InputFile & { abortController?: AbortController }\n\n/**\n * 附件上传组件\n * 支持多文件上传、文件类型验证、文件大小限制等功能\n */\nexport default forwardRef(({ fileUpload, fileUploadConfig, fileList = [], onChange, extraParams }: AttachmentsProps, ref) => {\n const { message } = App.useApp()\n const chatStore = useChatStore()\n const configState = useSnapshot(chatStore.config)\n const fileListRef = useRef<InputFile[]>([])\n const [attachedFiles, setAttachedFiles, getAttachedFiles] = useRefState<AttachedFile[]>([])\n // 初始化 fileList 映射为 Attachments 所需格式\n useEffect(() => {\n if (JSON.stringify(fileList) !== JSON.stringify(fileListRef.current)) {\n fileListRef.current = fileList\n const mapped: AttachedFile[] = fileList.map((file) => ({\n ...file,\n uid: file.id,\n url: file.url || file.id,\n status: 'done'\n }))\n setAttachedFiles(mapped)\n }\n }, [fileList])\n useEffect(() => {\n const files = attachedFiles\n .filter((file) => file.status === 'done')\n .map((file) => {\n const f = { ...file }\n delete f.status\n delete f.size\n return f as unknown as InputFile\n })\n fileListRef.current = files\n onChange(files)\n }, [attachedFiles])\n\n const onErrorTip = useDebounce((errorMsg: string) => {\n message.error(errorMsg)\n }, 300)\n\n /** 根据文件类型找到对应的 upload config */\n const findConfig = (file: RcFile): string => {\n return fileUploadConfig?.allowedTypes?.find((type) => type === getFileSuffixName(file.name)) || ''\n }\n\n const onBeforeUpload = (files: RcFile[]) => {\n // 多规则支持:逐个文件校验\n for (const file of files) {\n const cfg = findConfig(file)\n\n if (!cfg) {\n onErrorTip(`不支持的文件类型:${file.name} (${file.type})`)\n return Promise.reject(false)\n }\n\n // 校验数量\n if (isNumber(fileUploadConfig?.maxCount)) {\n const currentCount = attachedFiles.length\n\n if (currentCount + 1 > fileUploadConfig?.maxCount) {\n onErrorTip(`【${file.name}】所属类型最多只能上传 ${fileUploadConfig?.maxCount} 个文件`)\n return Promise.reject(false)\n }\n }\n }\n }\n const onCustomRequest = async ({ file }: any) => {\n const cfg = findConfig(file)\n\n if (!cfg) {\n onErrorTip(`不支持的文件类型:${file.name}`)\n return\n }\n\n // 校验大小\n if (fileUploadConfig?.maxSize && file.size > fileUploadConfig?.maxSize * 1024 * 1024) {\n onErrorTip(`文件大小不能超过 ${fileUploadConfig?.maxSize} MB`)\n return\n }\n\n const abortController = new AbortController()\n\n setAttachedFiles([\n ...getAttachedFiles(),\n {\n uid: file.uid,\n status: 'uploading',\n percent: 70,\n size: file.size,\n type: file.type,\n name: file.name,\n url: URL.createObjectURL(file),\n abortController\n } as AttachedFile\n ])\n try {\n const formData = new FormData()\n formData.append('file', file)\n if (isObject(extraParams)) {\n Object.keys(extraParams).forEach((key) => {\n if (isNullOrUnDef(extraParams[key])) return\n formData.append(key, extraParams[key])\n })\n }\n // 发送文件到后端\n const { data } = await fileUpload(formData, abortController.signal)\n\n const uploadedFile = data![0]\n let previewUrl = uploadedFile.id\n // 使用后端返回的 workspaceId 和 path 拼接预览 URL\n if (uploadedFile.workspaceId && uploadedFile.path) {\n previewUrl = chatStore.config.services.request.getPreviewUrl({\n path: uploadedFile.path,\n workspaceId: uploadedFile.workspaceId,\n workspaceType: uploadedFile.workspaceType\n })\n }\n\n setAttachedFiles(\n getAttachedFiles().map((f) => {\n if (f.uid === file.uid) {\n return { ...uploadedFile, uid: file.uid, url: previewUrl, status: 'done', size: f.size }\n } else {\n return f\n }\n })\n )\n } catch (error) {\n if (error?.name === 'CanceledError' || error?.message === 'canceled') {\n return\n }\n setAttachedFiles(\n getAttachedFiles().map((f) => {\n if (f.uid === file.uid) {\n return { ...f, status: 'error', description: '上传失败' }\n } else {\n return f\n }\n })\n )\n }\n }\n const onRemove = (file: UploadFile<any>) => {\n // 中断上传请求\n const currentFile = getAttachedFiles().find((f) => f.uid === file.uid)\n if (currentFile?.abortController) {\n currentFile.abortController.abort()\n }\n // 删除文件\n setAttachedFiles(attachedFiles.filter((f) => f.uid !== file.uid))\n const filePath = (file as any).path\n configState.hooks?.onAfterRemoveFile?.(filePath)\n }\n\n useImperativeHandle(\n ref,\n () => ({\n validateFile: () => {\n const files = getAttachedFiles()\n const uploadingFiles = files.filter((file) => file.status === 'uploading')\n if (uploadingFiles.length > 0) {\n onErrorTip('请等待所有文件上传完成')\n return false\n }\n const errorFiles = files.filter((file) => file.status === 'error')\n if (errorFiles.length > 0) {\n onErrorTip('请检查上传失败的文件')\n return false\n }\n return true\n }\n }),\n []\n )\n\n const acceptStr = useMemo(() => {\n const allTypes = fileUploadConfig?.allowedTypes.map((type) => `.${type}`) || []\n return allTypes.length ? allTypes.join(',') : undefined\n }, [fileUploadConfig])\n\n return (\n <Attachments\n className={styles.chatAttachments}\n accept={acceptStr}\n multiple={true}\n customRequest={onCustomRequest}\n beforeUpload={(file, files) => onBeforeUpload(files)}\n items={attachedFiles}\n onRemove={onRemove}\n overflow=\"wrap\"\n placeholder={(type) =>\n type === 'drop'\n ? { title: '将文件放到这里' }\n : {\n icon: <CloudUploadOutlined />,\n title: '提交文件',\n description: (\n <div>\n <div>单击或拖动文件到此区域进行上传; </div>\n {fileUploadConfig?.allowedTypes && <div>支持扩展名:{fileUploadConfig?.allowedTypes.join(',')}; </div>}\n </div>\n )\n }\n }\n />\n )\n})\n",".promptEditorInputContainer {\n position: relative;\n flex: 1;\n min-height: 40px;\n max-height: 62px;\n width: 100%;\n box-sizing: border-box;\n overflow-y: auto;\n scrollbar-width: thin;\n scrollbar-color: transparent transparent;\n}\n.promptEditorInputContainer .promptEditorContent {\n width: 100%;\n height: 100%;\n outline: none;\n white-space: pre-wrap;\n word-break: break-word;\n text-align: justify;\n}\n.promptEditorInputContainer .promptEditorPlaceholder {\n position: absolute;\n top: 0;\n color: rgba(0, 0, 0, 0.3);\n pointer-events: none;\n user-select: none;\n}\n.promptEditorInputContainer::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n.promptEditorInputContainer::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0);\n border-radius: 4px;\n transition: background-color 0.3s ease 0.3s;\n}\n.promptEditorInputContainer::-webkit-scrollbar-track {\n background: transparent;\n}\n.promptEditorInputContainer:hover {\n scrollbar-color: rgba(0, 0, 0, 0.2) transparent;\n}\n.promptEditorInputContainer:hover::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0.2);\n transition-delay: 0s;\n}\n.resourceSelect {\n position: absolute;\n width: max-content;\n padding: 8px;\n z-index: 1000;\n background: #fff;\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);\n font-size: 14px;\n overflow-y: auto;\n max-height: 300px;\n scrollbar-width: thin;\n scrollbar-color: transparent transparent;\n}\n.resourceSelect::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n.resourceSelect::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0);\n border-radius: 4px;\n transition: background-color 0.3s ease 0.3s;\n}\n.resourceSelect::-webkit-scrollbar-track {\n background: transparent;\n}\n.resourceSelect:hover {\n scrollbar-color: rgba(0, 0, 0, 0.1) transparent;\n}\n.resourceSelect:hover::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0.1);\n transition-delay: 0s;\n}\n.resourceSelect[data-placement='top'] {\n transform: translateY(calc(-100% - 26px)) !important;\n}\n.fileMenu .fileMenuGroup + .fileMenuGroup {\n margin-top: 4px;\n}\n.fileMenu .fileMenuGroup .fileMenuGroupTitle {\n padding: 6px 10px 4px;\n color: rgba(0, 0, 0, 0.45);\n font-size: 12px;\n line-height: 20px;\n}\n.fileMenu .fileMenuGroup .fileMenuEmpty {\n padding: 8px 10px;\n color: rgba(0, 0, 0, 0.45);\n line-height: 22px;\n text-align: center;\n}\n.fileMenu .fileMenuItem {\n display: flex;\n align-items: center;\n gap: 4px;\n min-width: 0;\n padding: 8px 10px;\n cursor: pointer;\n border-radius: 6px;\n}\n.fileMenu .fileMenuItem:hover,\n.fileMenu .fileMenuItem.fileMenuItemActive {\n background: #e6f4ff;\n}\n.fileMenu .fileMenuItem .fileIcon {\n flex: 0 0 auto;\n font-size: 10px;\n text-align: center;\n border-radius: 4px;\n}\n.fileMenu .fileMenuItem .fileName {\n min-width: 0;\n overflow: hidden;\n color: rgba(0, 0, 0, 0.88);\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.resourceTag {\n display: inline-block;\n margin: 0 4px;\n}\n","export type ConversationMemberEnum = 'user' | 'agent'\n\nexport enum AgentTypeEnum {\n DEFAULT = 0,\n FLOW = 1,\n AUTONOMOUS = 2\n}\n\nexport enum WorkspaceTypeEnum {\n GLOBAL = 'global',\n SKILL = 'skill',\n CONVERSATION = 'conversation',\n KNOWLEDGE = 'knowledge',\n PROJECT = 'project',\n DEV_SKILL = 'devSkill',\n}\n\nexport enum LibraryTypeEnum {\n KNOWLEDGE = 1,\n PROJECT = 2,\n}\n\nexport const CONV_MODE = {\n PROD: 1,\n DEBUG: 2\n} as const\n\nexport enum TagTypeEnum {\n AGENT = 1,\n KNOWLEDGE = 2,\n SKILL = 3,\n PROJECT = 4,\n}\n","import { createTokenManager, emit } from '@zero-library/common'\n\nexport const TOKEN_KEY = 'NS-TOKEN'\nexport const SHARE_KEY = 'SHARE-TOKEN'\n/**\n * 令牌管理器\n * 用于管理用户认证令牌,支持从URL参数或存储中获取、设置和清除令牌\n *\n * 特点:\n * 1. 默认使用localStorage存储\n * 2. 支持从URL参数自动同步令牌\n */\nexport const tokenManager = createTokenManager({\n key: TOKEN_KEY\n})\n\n/**\n * 跳转到登录页面\n * 该函数用于在用户未授权或会话过期时重定向到登录页面\n */\nexport const redirectUrl = () => {\n const path = localStorage.getItem('SIGNPATH')\n emit('jumpLink', { url: `/uc${path || '/sign-in'}` })\n}\n","import {\n FileExcelOutlined,\n FileImageOutlined,\n FilePdfOutlined,\n FilePptOutlined,\n FileTextOutlined,\n FileUnknownOutlined,\n FileWordOutlined,\n FileZipOutlined\n} from '@ant-design/icons'\nimport { buildUrlParams, getFileSuffixName, getWebSocketUrl, isArray, isDef, isNull } from '@zero-library/common'\nimport dayjs from 'dayjs'\nimport React from 'react'\nimport { DownloadFileReq } from '../types'\nimport { WorkspaceTypeEnum } from './constants'\nimport { SHARE_KEY, TOKEN_KEY, tokenManager } from './session'\n\n/**\n * 根据时间戳分类时间,返回相对时间描述\n * @param timestamp - 时间戳(毫秒),可选,默认为当前时间\n * @returns 时间分类字符串\n */\nexport const classifyTime = (timestamp?: number | string): string => {\n const now = dayjs()\n const target = dayjs(timestamp)\n\n if (target.isSame(now, 'day')) {\n return '今天'\n }\n\n const diffInDays = now.diff(target, 'day')\n if (diffInDays < 7) {\n return '最近 7 天'\n } else if (diffInDays < 30) {\n return '最近 30 天'\n } else if (diffInDays < 180) {\n return '最近半年'\n } else {\n return '更早'\n }\n}\n\n/**\n * 将变量数组转换为对象格式\n *\n * @param variables - 变量数组,包含 name, value, type\n * @returns 转换后的对象\n *\n * @remarks\n * - Boolean 类型:只要 value 不为 undefined 或 null 即保留\n * - String/Number 类型:value 不为 undefined, null, '' 时保留\n */\nexport const variablesToObject = (variables: Array<{ name: string; value?: any; type: string }>) => {\n if (!isArray(variables)) return {}\n\n const jsonTypes = ['OBJECT', 'ARRAY', 'ARRAY_STRING', 'ARRAY_NUMBER', 'ARRAY_DECIMAL', 'ARRAY_BOOLEAN', 'ARRAY_OBJECT']\n\n return variables.reduce(\n (acc, cur) => {\n if (cur.type === 'BOOLEAN') {\n if (isDef(cur.value) && !isNull(cur.value)) {\n acc[cur.name] = cur.value\n }\n } else if (jsonTypes.includes(cur.type)) {\n if (isDef(cur.value) && !isNull(cur.value)) {\n if (typeof cur.value === 'string') {\n if (cur.value === '') {\n acc[cur.name] = cur.type === 'OBJECT' ? {} : []\n } else {\n try {\n acc[cur.name] = JSON.parse(cur.value)\n } catch (e) {\n acc[cur.name] = cur.type === 'OBJECT' ? {} : []\n }\n }\n } else {\n acc[cur.name] = cur.value\n }\n }\n } else {\n if (isDef(cur.value) && !isNull(cur.value) && cur.value !== '') {\n acc[cur.name] = cur.value\n }\n }\n return acc\n },\n {} as Record<string, any>\n )\n}\n\n/**\n * 构建Chat WebSocket URL\n * 将 baseURL和参数组合成完整的WebSocket连接URL\n *\n * @param baseURL - WebSocket baseURL\n * @param params - 要附加到URL上的参数\n * @returns 完整的WebSocket URL\n */\nexport const getChatSocketUrl = (baseURL: string, params: Record<string, any>) => {\n return buildUrlParams(params, getWebSocketUrl(`${baseURL}/ws`), 'comma')\n}\n\n/**\n * 判断文件名是否为文档\n * @param fileName 文件名\n * @returns boolean\n */\nexport const isDocument = (fileName: string): boolean => {\n if (!fileName) return false\n const ext = getFileSuffixName(fileName)\n return ['pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'csv'].includes(ext)\n}\n\n// 根据扩展名返回图标\nexport const getFileIcon = (extension: string, fontSize = 24) => {\n const baseStyle = { fontSize }\n const createIcon = (Icon: React.ComponentType<{ style?: React.CSSProperties }>, color: string) =>\n React.createElement(Icon, { style: { ...baseStyle, color } })\n if (['png', 'jpg', 'jpeg', 'gif', 'bmp', 'webp', 'svg'].includes(extension)) {\n return createIcon(FileImageOutlined, '#22c55e')\n }\n if (['pdf'].includes(extension)) {\n return createIcon(FilePdfOutlined, '#ef4444')\n }\n if (['doc', 'docx'].includes(extension)) {\n return createIcon(FileWordOutlined, '#2563eb')\n }\n if (['xls', 'xlsx', 'csv'].includes(extension)) {\n return createIcon(FileExcelOutlined, '#16a34a')\n }\n if (['ppt', 'pptx'].includes(extension)) {\n return createIcon(FilePptOutlined, '#f59e0b')\n }\n if (['zip', 'rar', '7z', 'tar', 'gz'].includes(extension)) {\n return createIcon(FileZipOutlined, '#8b5cf6')\n }\n if (['txt', 'md', 'log', 'json', 'yaml', 'yml', 'xml', 'ini', 'conf'].includes(extension)) {\n return createIcon(FileTextOutlined, '#64748b')\n }\n return createIcon(FileUnknownOutlined, '#94a3b8')\n}\n\nexport const getFileUrl = (params: DownloadFileReq, baseUrl?: string, url?: string): string => {\n const authParams = baseUrl === '/luya/share' ? { [SHARE_KEY]: localStorage.getItem(SHARE_KEY) || '' } : { [TOKEN_KEY]: tokenManager.get() }\n const data = {\n ...authParams,\n workspaceType: WorkspaceTypeEnum.CONVERSATION,\n ...params\n }\n return buildUrlParams(data, url || `${baseUrl}/files/access`)\n}\n\n// 格式化文件大小\nexport const formatFileSize = (size = 0) => {\n if (size < 1024) return `${size} B`\n const kb = size / 1024\n if (kb < 1024) return `${kb.toFixed(2)} KB`\n const mb = kb / 1024\n if (mb < 1024) return `${mb.toFixed(2)} MB`\n const gb = mb / 1024\n return `${gb.toFixed(2)} GB`\n}\n","import { useEffect, useRef } from 'react'\nimport { getFileIcon } from '../../core/utils'\nimport type { CascadeCategory } from '../../types/chatLayout.types'\nimport styles from './index.module.less'\n\ntype GroupPickerGroup = {\n group: CascadeCategory\n options: CascadeCategory[]\n}\n\nexport default function GroupPicker({\n groups,\n selectedIndex,\n onSelect,\n onHover\n}: {\n groups: GroupPickerGroup[]\n selectedIndex: number\n onSelect: (group: CascadeCategory, option: CascadeCategory) => void\n onHover: (index: number) => void\n}) {\n const itemRefs = useRef<Array<HTMLDivElement | null>>([])\n let currentIndex = -1\n\n useEffect(() => {\n itemRefs.current[selectedIndex]?.scrollIntoView({\n block: 'nearest'\n })\n }, [groups, selectedIndex])\n\n return (\n <div className={styles.fileMenu} role=\"listbox\">\n {groups.map(({ group, options }) => (\n <div key={group.value} className={styles.fileMenuGroup}>\n <div className={styles.fileMenuGroupTitle}>{group.label}</div>\n {options.length ? (\n options.map((option) => {\n currentIndex += 1\n const optionIndex = currentIndex\n return (\n <div\n key={`${group.value}-${option.value}`}\n ref={(element) => {\n itemRefs.current[optionIndex] = element\n }}\n role=\"option\"\n aria-selected={optionIndex === selectedIndex}\n className={`${styles.fileMenuItem} ${optionIndex === selectedIndex ? styles.fileMenuItemActive : ''}`}\n onMouseEnter={() => onHover(optionIndex)}\n onClick={() => onSelect(group, option)}\n >\n {option.ext && <span className={styles.fileIcon}>{getFileIcon(option.ext, 14)}</span>}\n <span className={styles.fileName}>{option.label}</span>\n </div>\n )\n })\n ) : (\n <div className={styles.fileMenuEmpty}>暂无数据</div>\n )}\n </div>\n ))}\n </div>\n )\n}\n","import React, { ReactNode, useLayoutEffect, useRef, useState } from 'react'\nimport styles from './index.module.less'\n\nexport default function ResourcePickerMenu({\n anchorElementRef,\n children\n}: {\n anchorElementRef: React.MutableRefObject<HTMLElement | null>\n children: ReactNode\n}) {\n const menuRef = useRef<HTMLDivElement>(null)\n const [placement, setPlacement] = useState<'top' | 'bottom'>('bottom')\n\n useLayoutEffect(() => {\n const anchor = anchorElementRef.current\n const menu = menuRef.current\n if (!anchor || !menu) return\n\n const updatePlacement = () => {\n const anchorRect = anchor.getBoundingClientRect()\n const menuHeight = Math.min(menu.scrollHeight, 256)\n const spaceBelow = window.innerHeight - anchorRect.bottom\n const spaceAbove = anchorRect.top\n setPlacement(spaceBelow < menuHeight + 8 && spaceAbove > spaceBelow ? 'top' : 'bottom')\n }\n\n updatePlacement()\n window.addEventListener('resize', updatePlacement)\n return () => window.removeEventListener('resize', updatePlacement)\n }, [anchorElementRef, children])\n\n return (\n <div ref={menuRef} className={styles.resourceSelect} data-placement={placement} onMouseDown={(event) => event.preventDefault()}>\n {children}\n </div>\n )\n}\n","import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { Tag } from 'antd'\nimport { $getNodeByKey, NodeKey } from 'lexical'\nimport styles from './index.module.less'\n\nexport type DisplayResource = {\n resourceLabel: string\n resourceName: string\n resourceType: string\n resourceId: string\n}\n\nexport type Resource = {\n resourceLabel: string\n resourceName: string\n resourceType: string\n resourceId: string\n nodeKey: NodeKey\n}\n\n/**\n * 格式化资源名称展示文案。\n * 如果存在后缀,则只截断后缀前的主体部分,再把后缀拼回去。\n */\nexport function formatResourceName(resourceName: string) {\n const lastDotIndex = resourceName.lastIndexOf('.')\n const hasExtension = lastDotIndex > 0 && lastDotIndex < resourceName.length - 1\n const name = hasExtension ? resourceName.slice(0, lastDotIndex) : resourceName\n const extension = hasExtension ? resourceName.slice(lastDotIndex) : ''\n\n if (name.length <= 6) return `${name}${extension}`\n\n return `${name.slice(0, 3)}***${name.slice(-3)}${extension}`\n}\n\nexport function ReadonlyResourceTag({ resource }: { resource: DisplayResource }) {\n return (\n <div className={styles.resourceTag}>\n <Tag color=\"blue\">\n {resource.resourceLabel}:{formatResourceName(resource.resourceName)}\n </Tag>\n </div>\n )\n}\n\nexport default function ResourceTag({ resource }: { resource: Resource }) {\n const [editor] = useLexicalComposerContext()\n\n const handleClose = (event: React.MouseEvent<HTMLElement>) => {\n event.preventDefault()\n event.stopPropagation()\n editor.update(() => {\n const node = $getNodeByKey(resource.nodeKey)\n node?.remove()\n })\n }\n\n return (\n <div className={styles.resourceTag}>\n <Tag closeIcon color=\"blue\" onClose={handleClose}>\n {resource.resourceLabel}:{formatResourceName(resource.resourceName)}\n </Tag>\n </div>\n )\n}\n","import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { LexicalTypeaheadMenuPlugin, MenuOption } from '@lexical/react/LexicalTypeaheadMenuPlugin'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n BLUR_COMMAND,\n COMMAND_PRIORITY_LOW,\n DecoratorNode,\n FOCUS_COMMAND,\n LexicalNode,\n NodeKey,\n SerializedLexicalNode,\n Spread,\n TextNode\n} from 'lexical'\nimport type { ReactNode } from 'react'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport * as ReactDOM from 'react-dom'\nimport { LibraryTypeEnum } from '../../core/constants'\nimport { useChatStore } from '../../stores/Context'\nimport type { Datasource, Library, Skill } from '../../types'\nimport type { CascadeCategory, CommandConfig } from '../../types/chatLayout.types'\nimport GroupPicker from './FilePickerMenu'\nimport ResourcePickerMenu from './ResourcePickerMenu'\nimport type { Resource } from './ResourceTag'\nimport ResourceTag from './ResourceTag'\n\n/**\n * 变量节点类\n * 自定义 Lexical 节点,用于在编辑器中显示变量\n */\nexport class VariableNode extends DecoratorNode<ReactNode> {\n __resourceLabel: string\n __resourceType: string\n __resourceName: string\n __resourceId: string\n\n /**\n * 返回当前自定义节点的唯一类型标识,供 Lexical 注册和反序列化使用。\n */\n static getType(): string {\n return 'variable'\n }\n\n /**\n * 基于现有节点创建一个内容完全一致的新节点实例。\n */\n static clone(node: VariableNode): VariableNode {\n return new VariableNode(node.__resourceLabel, node.__resourceName, node.__resourceType, node.__resourceId, node.__key)\n }\n\n /**\n * 初始化变量节点,并保存标签展示与序列化所需的资源信息。\n */\n constructor(resourceLabel: string, resourceName: string, resourceType: string, resourceId: string, key?: NodeKey) {\n super(key)\n this.__resourceLabel = resourceLabel\n this.__resourceType = resourceType\n this.__resourceName = resourceName\n this.__resourceId = resourceId\n }\n\n /**\n * 创建节点对应的宿主 DOM,用于承载后续的 React 装饰器内容。\n */\n createDOM(): HTMLElement {\n const span = document.createElement('span')\n span.style.display = 'inline-block'\n span.style.verticalAlign = 'middle'\n return span\n }\n\n /**\n * 当前节点的 DOM 不依赖增量更新,始终交由 Lexical 复用现有 DOM。\n */\n updateDOM(): false {\n return false\n }\n\n /**\n * 声明当前节点是行内节点,这样它可以和普通文本一起排版。\n */\n isInline(): boolean {\n return true\n }\n\n /**\n * 将序列化结果恢复为变量节点实例,支持编辑器内容反解析。\n */\n static importJSON(serializedNode: SerializedVariableNode): VariableNode {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return $createVariableNode(serializedNode.resourceLabel, serializedNode.resourceName, serializedNode.resourceType, serializedNode.resourceId)\n }\n\n /**\n * 导出节点的业务字段,供 Lexical 持久化和回显使用。\n */\n exportJSON(): SerializedVariableNode {\n return {\n resourceLabel: this.__resourceLabel,\n resourceName: this.__resourceName,\n resourceType: this.__resourceType,\n resourceId: this.__resourceId,\n type: 'variable',\n version: 1\n }\n }\n\n /**\n * 生成节点的纯文本表达,便于发送、存储和重新初始化编辑器内容。\n */\n getTextContent(): string {\n return ` ${this.__resourceType}://${this.__resourceId}?name=${this.__resourceName}&label=${this.__resourceLabel} `\n }\n\n /**\n * 将变量节点渲染为可交互的资源标签组件。\n */\n decorate(): ReactNode {\n const resource: Resource = {\n resourceLabel: this.__resourceLabel,\n resourceName: this.__resourceName,\n resourceType: this.__resourceType,\n resourceId: this.__resourceId,\n nodeKey: this.getKey()\n }\n return <ResourceTag resource={resource} />\n }\n}\n\n/**\n * 创建变量节点的快捷方法,统一外部构造入口。\n */\nexport function $createVariableNode(resourceLabel: string, resourceName: string, resourceType: string, resourceId: string): VariableNode {\n return new VariableNode(resourceLabel, resourceName, resourceType, resourceId)\n}\n\nexport type SerializedVariableNode = Spread<\n {\n resourceLabel: string\n resourceName: string\n resourceType: string\n resourceId: string\n },\n SerializedLexicalNode\n>\n\n/**\n * 判断是否为变量节点\n */\nexport function $isVariableNode(node: LexicalNode | null | undefined): node is VariableNode {\n return node instanceof VariableNode\n}\n\nclass ResourceOption extends MenuOption {\n group: CascadeCategory\n item: CascadeCategory\n\n /**\n * 将分组列表中的资源节点包装成 Lexical 菜单选项对象。\n */\n constructor(group: CascadeCategory, item: CascadeCategory) {\n super(`${group.value}:${item.value}`)\n this.group = group\n this.item = item\n }\n}\n\ntype ResourceGroup = {\n group: CascadeCategory\n options: CascadeCategory[]\n}\n\n/**\n * 通过输入 / 选择资源,并将二级资源插入为变量节点。\n */\n\nexport function VariablePickerPlugin({ commandConfig = {} }: { commandConfig?: ObjectType<CommandConfig> }) {\n const [editor] = useLexicalComposerContext()\n const chatStore = useChatStore()\n const [commandDataSource, setCommandDataSource] = useState(commandConfig)\n const [queryString, setQueryString] = useState<string | null>(null)\n const [isEditorFocused, setIsEditorFocused] = useState(false)\n const [menuResetKey, setMenuResetKey] = useState(0)\n const blurTimerRef = useRef<NodeJS.Timeout | null>(null)\n\n /**\n * 监听编辑器焦点变化,控制资源菜单的显示与隐藏。\n */\n useEffect(() => {\n const unregister = mergeRegister(\n editor.registerCommand(\n FOCUS_COMMAND,\n () => {\n if (blurTimerRef.current) clearTimeout(blurTimerRef.current)\n setIsEditorFocused(true)\n return false\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n BLUR_COMMAND,\n () => {\n setIsEditorFocused(false)\n setMenuResetKey((current) => current + 1)\n return false\n },\n COMMAND_PRIORITY_LOW\n )\n )\n return () => {\n if (blurTimerRef.current) clearTimeout(blurTimerRef.current)\n unregister()\n }\n }, [editor])\n\n /**\n * 当外部指令配置变化时,同步刷新当前可用的数据源。\n */\n useEffect(() => {\n setCommandDataSource(commandConfig)\n }, [commandConfig])\n\n const commandKeys = useMemo(() => Object.keys(commandConfig), [commandConfig])\n const commandKey = queryString?.[0] || ''\n const searchKeyword = queryString?.slice(commandKey.length).trim().toLocaleLowerCase() || ''\n\n /**\n * 维护不同一级分类对应的加载方式和展示字段,避免在业务逻辑中堆叠条件分支。\n */\n const categoryConfig = useMemo(\n () => ({\n skill: {\n load: () => chatStore.config.services.request.listSkills(),\n getLabel: (item: Skill | Library | Datasource) => (item as Skill).aliasName || item.name\n },\n knowledge: {\n load: () => chatStore.config.services.request.listLibrarys({ libraryType: LibraryTypeEnum.KNOWLEDGE }),\n getLabel: (item: Skill | Library | Datasource) => item.name\n },\n datasource: {\n load: () => chatStore.config.services.request.listDataSources(),\n getLabel: (item: Skill | Library | Datasource) => item.name\n }\n }),\n [chatStore]\n )\n\n /**\n * 将接口返回的技能或知识库数据统一格式化为分组列表可识别的数据结构。\n */\n const formatDataSource = useCallback(\n (items: (Skill | Library | Datasource)[], category: CascadeCategory): CascadeCategory[] => {\n const currentCategoryConfig = categoryConfig[category.value as keyof typeof categoryConfig]\n if (!items.length) return []\n\n return items.map((item) => ({\n value: item.id,\n label: currentCategoryConfig?.getLabel(item) || item.name,\n children: []\n }))\n },\n [categoryConfig]\n )\n\n /**\n * 当外部指令配置变化时,补齐 children 字段并为可懒加载的分组预取资源数据。\n */\n useEffect(() => {\n let isUnmounted = false\n\n const initializeCommandDataSource = async () => {\n const nextEntries = await Promise.all(\n Object.entries(commandConfig).map(async ([trigger, currentCommandConfig]) => {\n const nextDataSource = await Promise.all(\n (currentCommandConfig.dataSource || []).map(async (category) => {\n const normalizedChildren = category.children || []\n const nextCategory = {\n ...category,\n children: normalizedChildren\n }\n const currentCategoryConfig = categoryConfig[category.value as keyof typeof categoryConfig]\n\n if (!currentCategoryConfig) {\n return nextCategory\n }\n\n if (normalizedChildren.length) {\n return nextCategory\n }\n\n const response = (await currentCategoryConfig.load()) as { data?: (Skill | Library | Datasource)[] }\n const items = (response.data || []) as (Skill | Library | Datasource)[]\n return {\n ...nextCategory,\n children: formatDataSource(items, category)\n }\n })\n )\n\n return [\n trigger,\n {\n ...currentCommandConfig,\n dataSource: nextDataSource\n }\n ] as const\n })\n )\n\n if (isUnmounted) return\n setCommandDataSource(Object.fromEntries(nextEntries))\n }\n\n initializeCommandDataSource()\n\n return () => {\n isUnmounted = true\n }\n }, [categoryConfig, commandConfig, formatDataSource])\n\n /**\n * 根据当前触发字符和查询内容整理分组列表,仅按子项内容过滤当前可见数据。\n */\n const commandGroups = useMemo<ResourceGroup[]>(() => {\n if (!isEditorFocused) return []\n return (commandDataSource[commandKey]?.dataSource || [])\n .map((group) => {\n const options = group.children || []\n if (!searchKeyword) return { group, options }\n return {\n group,\n options: options.filter((option) => option.label.toLocaleLowerCase().includes(searchKeyword))\n }\n })\n .filter(({ options }) => !searchKeyword || options.length)\n }, [commandDataSource, commandKey, isEditorFocused, searchKeyword])\n\n /**\n * 将当前触发器下可选中的资源项扁平化,供键盘高亮与回车选中复用。\n */\n const commandOptions = useMemo(\n () => commandGroups.flatMap(({ group, options }) => options.map((item) => new ResourceOption(group, item))),\n [commandGroups]\n )\n\n /**\n * 将菜单中选中的资源替换为变量节点,并关闭当前菜单。\n */\n const onSelectOption = useCallback(\n (selectedOption: ResourceOption, nodeToReplace: TextNode | null, closeMenu: () => void, matchingString: string) => {\n void matchingString\n const resource = selectedOption.item\n const resourceLabel = selectedOption.group.label\n const resourceType = selectedOption.group.value\n\n editor.update(() => {\n const variableNode = $createVariableNode(resourceLabel, resource.label, resourceType, resource.value)\n if (nodeToReplace) {\n nodeToReplace.replace(variableNode)\n variableNode.selectNext()\n }\n })\n closeMenu()\n },\n [editor]\n )\n\n return (\n <>\n <LexicalTypeaheadMenuPlugin<ResourceOption>\n key={menuResetKey}\n onQueryChange={(query) => setQueryString(query)}\n onSelectOption={onSelectOption}\n /**\n * 从当前文本末尾匹配触发器和查询串,决定是否打开资源选择菜单。\n */\n triggerFn={(text) => {\n if (!commandKeys.length) return null\n const match = new RegExp(`(?:${commandKeys.map((key) => key.replace(/[.*+?^${}()|[\\\\]\\\\]/g, '\\\\$&')).join('|')})([^\\\\s]*)$`).exec(text)\n\n if (!match) return null\n return { leadOffset: match.index, matchingString: match[0], replaceableString: match[0] }\n }}\n options={commandOptions}\n /**\n * 统一使用分组文件列表菜单渲染资源选择器,并通过 portal 挂载到编辑器锚点位置。\n */\n menuRenderFn={(anchorElementRef, { selectedIndex, setHighlightedIndex, selectOptionAndCleanUp }) => {\n if (!isEditorFocused || !anchorElementRef.current || !commandKeys.length || (!commandGroups.length && !searchKeyword)) return null\n if (searchKeyword && !commandGroups.length) return null\n return ReactDOM.createPortal(\n <ResourcePickerMenu anchorElementRef={anchorElementRef}>\n <GroupPicker\n groups={commandGroups}\n selectedIndex={selectedIndex ?? 0}\n onHover={setHighlightedIndex}\n onSelect={(group, option) => selectOptionAndCleanUp(new ResourceOption(group, option))}\n />\n </ResourcePickerMenu>,\n anchorElementRef.current\n )\n }}\n />\n </>\n )\n}\n","import { LexicalComposer } from '@lexical/react/LexicalComposer'\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { ContentEditable } from '@lexical/react/LexicalContentEditable'\nimport { LexicalErrorBoundary } from '@lexical/react/LexicalErrorBoundary'\nimport { HistoryPlugin } from '@lexical/react/LexicalHistoryPlugin'\nimport { OnChangePlugin } from '@lexical/react/LexicalOnChangePlugin'\nimport { RichTextPlugin } from '@lexical/react/LexicalRichTextPlugin'\nimport { Input } from 'antd'\nimport { $createParagraphNode, $createTextNode, $getRoot, type EditorState, type ParagraphNode } from 'lexical'\nimport * as React from 'react'\nimport { useEffect, useImperativeHandle, useRef } from 'react'\nimport type { CommandConfig } from '../../types/chatLayout.types'\nimport styles from './index.module.less'\nimport { $createVariableNode, VariableNode, VariablePickerPlugin } from './ResourceSelect'\n\nfunction InitialStatePlugin({ value }: { value: string }) {\n const [editor] = useLexicalComposerContext()\n\n function parseAndAppendNodes(paragraph: ParagraphNode, value: string) {\n const variableRegex = /\\/(\\w+):\\/\\/([^?\\s]+)\\?name=([^&\\s]+)&label=([^\\s]+)/g\n let lastIndex = 0\n let match: RegExpExecArray | null\n while ((match = variableRegex.exec(value)) !== null) {\n if (match.index > lastIndex) {\n paragraph.append($createTextNode(value.substring(lastIndex, match.index)))\n }\n\n paragraph.append($createVariableNode(decodeURIComponent(match[4]), decodeURIComponent(match[3]), match[1], match[2]))\n\n lastIndex = variableRegex.lastIndex\n }\n\n if (lastIndex < value.length) {\n paragraph.append($createTextNode(value.substring(lastIndex)))\n }\n }\n\n useEffect(() => {\n if (value === null || value === undefined) return\n\n editor.update(() => {\n const root = $getRoot()\n const currentText = root.getTextContent()\n\n if (currentText === value) {\n return\n }\n\n root.clear()\n const paragraph = $createParagraphNode()\n parseAndAppendNodes(paragraph, value)\n root.append(paragraph)\n })\n }, [editor, value])\n\n return null\n}\n\ntype ChatInputProps = React.ComponentPropsWithoutRef<typeof Input.TextArea> & {\n commandConfig?: ObjectType<CommandConfig>\n}\n\nconst ChatInput = React.forwardRef<any, ChatInputProps>(\n (\n {\n value = '',\n commandConfig,\n onChange,\n placeholder,\n className,\n style,\n disabled,\n readOnly,\n onFocus,\n onBlur,\n onKeyDown,\n onKeyUp,\n onPaste,\n onCompositionStart,\n onCompositionEnd\n },\n ref\n ) => {\n const contentEditableRef = useRef<HTMLDivElement>(null)\n const stringValue = typeof value === 'string' ? value : ''\n\n const initialConfig = {\n namespace: 'ChatInput',\n onError: (error: Error) => console.error(error),\n nodes: [VariableNode],\n editable: !disabled && !readOnly\n }\n\n useImperativeHandle(ref, () => ({\n focus: () => contentEditableRef.current?.focus(),\n blur: () => contentEditableRef.current?.blur(),\n nativeElement: contentEditableRef.current\n }))\n\n const handleOnChange = (editorState: EditorState) => {\n editorState.read(() => {\n const nextValue = $getRoot().getTextContent()\n if (nextValue !== stringValue && onChange) {\n onChange({ target: { value: nextValue } } as React.ChangeEvent<HTMLTextAreaElement>)\n }\n })\n }\n\n return (\n <div className={styles.promptEditorInputContainer} onClick={() => contentEditableRef.current?.focus()}>\n <LexicalComposer initialConfig={initialConfig}>\n <RichTextPlugin\n contentEditable={\n <ContentEditable\n ref={contentEditableRef}\n className={[`${className || ''}`, 'ant-sender-input', styles.promptEditorContent].filter(Boolean).join(' ')}\n style={style}\n contentEditable={!disabled && !readOnly}\n suppressContentEditableWarning\n role=\"textbox\"\n aria-multiline=\"true\"\n tabIndex={!disabled && !readOnly ? 0 : -1}\n onMouseDown={(event) => {\n if (!disabled && !readOnly) {\n event.stopPropagation()\n }\n }}\n onFocus={(event) => onFocus?.(event as unknown as React.FocusEvent<HTMLTextAreaElement>)}\n onBlur={(event) => onBlur?.(event as unknown as React.FocusEvent<HTMLTextAreaElement>)}\n onKeyDown={(event) => onKeyDown?.(event as unknown as React.KeyboardEvent<HTMLTextAreaElement>)}\n onKeyUp={(event) => onKeyUp?.(event as unknown as React.KeyboardEvent<HTMLTextAreaElement>)}\n onPaste={(event) => onPaste?.(event as unknown as React.ClipboardEvent<HTMLTextAreaElement>)}\n onCompositionStart={(event) => onCompositionStart?.(event as unknown as React.CompositionEvent<HTMLTextAreaElement>)}\n onCompositionEnd={(event) => {\n onCompositionEnd?.(event as unknown as React.CompositionEvent<HTMLTextAreaElement>)\n }}\n />\n }\n placeholder={!stringValue ? <div className={styles.promptEditorPlaceholder}>{placeholder || '今天帮你做些什么?'}</div> : null}\n ErrorBoundary={LexicalErrorBoundary}\n />\n <HistoryPlugin />\n <VariablePickerPlugin commandConfig={commandConfig} />\n <OnChangePlugin onChange={handleOnChange} />\n <InitialStatePlugin value={stringValue} />\n </LexicalComposer>\n </div>\n )\n }\n)\n\nexport { VariableNode, VariablePickerPlugin } from './ResourceSelect'\nexport { default as ResourceTag } from './ResourceTag'\nexport default ChatInput\n","import { PaperClipOutlined } from '@ant-design/icons'\nimport { Sender } from '@ant-design/x-v2'\nimport { useSyncInput } from '@zero-library/common'\nimport { Badge, Button, ButtonProps, Flex, GetRef } from 'antd'\nimport { ComponentProps, forwardRef, useEffect, useImperativeHandle, useMemo, useRef } from 'react'\nimport { FileUploadConfig, InputFile } from '../types'\nimport type { CommandConfig } from '../types/chatLayout.types'\nimport ChatSendAttachments, { AttachmentsProps } from './Attachments'\nimport ChatInput from './ChatInput'\nimport styles from './styles.module.less'\n\n/**\n * ChatSender 组件暴露的方法接口\n */\nexport interface ChatSenderHandle {\n /** 聚焦输入框 */\n focus: (options?: { cursor?: 'start' | 'end' }) => void\n}\n/**\n * 文件上传配置接口\n */\ninterface FileUpload {\n /** 上传时的额外参数 */\n params?: ObjectType<any>\n /** 文件上传配置列表 */\n config: FileUploadConfig\n /** 文件上传请求函数 */\n request: AttachmentsProps['fileUpload']\n}\n\n/**\n * ChatSender 组件属性接口\n */\nexport interface SenderProps {\n /** 输入框占位符 */\n placeholder?: string\n /** 特殊指令配置 */\n commandConfig?: ObjectType<CommandConfig>\n /** 输入框内容 */\n content?: string\n /** 文件列表 */\n fileList?: InputFile[]\n /** 是否打开文件选择头部 */\n headerOpen?: boolean\n /** 是否正在发送消息 */\n loading?: boolean\n /** 内容变化回调 */\n onContentChange: (value: string) => void\n /** 文件列表变化回调 */\n onFileListChange: (files: InputFile[]) => void\n /** 头部打开状态变化回调 */\n onHeaderOpenChange: (open: boolean) => void\n /** 发送消息回调 */\n onSend: () => void\n /** 取消发送回调 */\n onCancel?: () => void\n /** 输入框聚焦回调 */\n onFocus?: () => void\n /** 头部额外内容 */\n extraHeader?: React.ReactNode\n /** 底部额外内容 */\n extraFooter?: React.ReactNode\n /** 底部下方额外内容 */\n extraFooterBelow?: React.ReactNode\n /** 发送按钮属性 */\n sendBtnProps?: ButtonProps\n /** 文件上传配置 */\n fileUpload?: FileUpload\n}\n\nexport default forwardRef<ChatSenderHandle, SenderProps>(\n (\n {\n placeholder,\n content,\n commandConfig = {},\n fileList = [],\n headerOpen = false,\n loading = false,\n onContentChange,\n onFileListChange,\n onHeaderOpenChange,\n onSend,\n onCancel,\n onFocus,\n extraHeader,\n extraFooter,\n extraFooterBelow,\n sendBtnProps,\n fileUpload\n },\n ref\n ) => {\n const senderRef = useRef<GetRef<typeof Sender>>(null)\n const { inputValue, setInputValue } = useSyncInput(content || '', onContentChange)\n\n const attachmentsNode = fileUpload?.config?.enabled && (\n <Badge dot={!!fileList?.length && !headerOpen}>\n <Button type=\"text\" icon={<PaperClipOutlined />} onClick={() => onHeaderOpenChange(!headerOpen)} />\n </Badge>\n )\n const attachmentsRef = useRef<any>()\n const senderHeader = (\n <>\n <Sender.Header title=\"选择文件\" open={headerOpen} onOpenChange={onHeaderOpenChange}>\n <ChatSendAttachments\n ref={attachmentsRef}\n fileList={fileList}\n fileUpload={fileUpload.request}\n onChange={onFileListChange}\n fileUploadConfig={fileUpload.config}\n extraParams={fileUpload.params}\n />\n </Sender.Header>\n {extraHeader}\n </>\n )\n const onSubmit = () => {\n if (!attachmentsRef.current?.validateFile || attachmentsRef.current.validateFile()) {\n onSend()\n }\n }\n\n const isFocusedRef = useRef(false)\n const commandConfigRef = useRef(commandConfig)\n commandConfigRef.current = commandConfig\n // 【BUGFIX】使用 forwardRef 包裹自定义输入组件,解决 React 警告:\n // \"Function components cannot be given refs.\"\n //\n // 问题原因:@ant-design/x-v2 的 Sender 组件会通过 components.input\n // 传入的自定义组件挂载 ref(用于 focus 等命令式操作)。之前使用\n // useCallback 返回的是普通函数组件,无法接收 ref,导致控制台报错\n // \"Did you mean to use React.forwardRef()?\" 且 ref 操作静默失败。\n //\n // 修复方案:改用 useMemo + forwardRef 创建组件,确保 ref 能正确\n // 穿透到 ChatInput(ChatInput 本身已是 React.forwardRef)。\n const inputComponent = useMemo(\n () =>\n forwardRef<any, ComponentProps<typeof ChatInput>>((inputProps, ref) => (\n <ChatInput {...inputProps} ref={ref} commandConfig={commandConfigRef.current} />\n )),\n []\n )\n\n useEffect(() => {\n if (!content) return\n if (!isFocusedRef.current) {\n senderRef.current?.focus({ cursor: 'end' })\n }\n }, [content])\n\n // 暴露方法给外部组件\n useImperativeHandle(\n ref,\n () => ({\n focus: (options?: { cursor?: 'start' | 'end' }) => {\n senderRef.current?.focus(options)\n }\n }),\n []\n )\n\n return (\n // <Suggestion items={[]} onSelect={(itemVal) => setInputValue(`[${itemVal}]:`)}>\n // {({}) => (\n <Sender\n components={{ input: inputComponent }}\n className={styles.chatSender}\n ref={senderRef}\n value={inputValue}\n placeholder={placeholder}\n header={senderHeader}\n onSubmit={onSubmit}\n onChange={setInputValue}\n onFocus={() => {\n isFocusedRef.current = true\n onFocus?.()\n }}\n onBlur={() => {\n isFocusedRef.current = false\n }}\n autoSize={{ minRows: 2, maxRows: 6 }}\n suffix={false}\n onCancel={onCancel}\n footer={(_, { components }) => {\n const { SendButton, LoadingButton } = components\n return (\n <Flex vertical>\n <Flex justify=\"space-between\" align=\"center\" gap={12}>\n <Flex className=\"flex-1\" gap={6} align=\"center\">\n {attachmentsNode}\n <>{extraFooter}</>\n </Flex>\n <Flex align=\"center\" style={{ marginLeft: 'auto' }} gap={6}>\n {loading ? <LoadingButton disabled={false} /> : <SendButton {...sendBtnProps} />}\n </Flex>\n </Flex>\n <>{extraFooterBelow}</>\n </Flex>\n )\n }}\n />\n // )}\n // </Suggestion>\n )\n }\n)\n","import { buildUrlParams, type createRequest, type RequestConfig } from '@zero-library/common'\nimport { TagTypeEnum, WorkspaceTypeEnum } from '../core/constants'\nimport { getFileUrl } from '../core/utils'\nimport {\n AgentInfo,\n ConversationCreate,\n ConversationMessage,\n ConversationMessageSend,\n ConversationMessagesQuery,\n ConversationsQuery,\n ConversationType,\n Datasource,\n DocType,\n DownloadFileReq,\n FeedbackUpdate,\n InputFile,\n Library,\n ListLibraryReq,\n ListSkillReq,\n ProviderModel,\n ShareConversationResponse,\n Skill,\n Variable,\n WorkspaceTag\n} from '../types'\n\ninterface UserInputType {\n inputs: Variable[]\n outputs: Variable[]\n}\n\ninterface ChatUploadParams {\n workspaceType: WorkspaceTypeEnum\n agentId: string\n workspaceId: string\n}\n\n/**\n * 创建聊天服务\n * @param request - 请求函数实例\n * @returns 聊天服务对象\n */\nexport const createChatService = (request: ReturnType<typeof createRequest>, config?: RequestConfig) => {\n // 获取模型列表\n const fetchModelList = (): Promise<R<ProviderModel[]>> => {\n return request.get(`/providers/models/type/llm`)\n }\n\n // 获取智能体详情\n const fetchAgentInfo = (agentId: string): Promise<R<AgentInfo>> => {\n return request.get(`/agents/${agentId}`)\n }\n\n // 创建会话\n const createConversationId = (params: ConversationCreate): Promise<R<string>> => {\n return request.post(`/agents/${params.agentId}/conversations`, { convMeta: params.convMeta })\n }\n\n // 获取会话列表\n const fetchConversations = (params: ConversationsQuery): Promise<R<ConversationType[]>> => {\n return request.get(`/agents/${params.agentId}/conversations`, { ...params.convMeta })\n }\n\n // 删除会话\n const deleteConversation = (id: string): Promise<R<string>> => {\n return request.delete(`/agents/conversations/${id}`)\n }\n\n // 历史记录\n const fetchMessages = (params: ConversationMessagesQuery): Promise<R<ConversationMessage[]>> => {\n return request.get(`/agents/conversations/${params.conversationId}/messages`)\n }\n\n // 发送消息\n const sendMessageStream = (params: ConversationMessageSend, agentId: string): Promise<R<ConversationMessage[]>> => {\n return request.post(`/agents/${agentId}/chat`, params)\n }\n\n // cancelMessage 取消消息\n const cancelMessage = (executionId: string): Promise<R<string>> => {\n return request.post(`/agents/executions/${executionId}/cancel`)\n }\n\n const getAgentUserInput = (agentId: string): Promise<R<UserInputType>> => {\n return request.get(`/agents/${agentId}/workflow/params`)\n }\n\n /**\n * 更新消息反馈(赞或踩)\n * @param params - 反馈参数,包含消息ID和反馈类型\n */\n const feedbackUpdate = (params: FeedbackUpdate): Promise<R<null>> => {\n return request.put(`/agents/messages/${params.executionId}/feedback`, params)\n }\n\n const chatUpload = (params: ChatUploadParams, data: FormData, signal?: AbortSignal): Promise<R<InputFile[]>> => {\n return request.post(buildUrlParams(params, '/files/upload'), data, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n },\n timeout: 300000,\n signal\n })\n }\n\n const getPreviewUrl = (params: DownloadFileReq): string => {\n return getFileUrl(params, config?.baseURL)\n }\n\n const docQuery = (params: string): Promise<R<DocType>> => {\n return request.get(`/library/cloud/document?${params}`)\n }\n\n const listSkills = (params?: ListSkillReq): Promise<R<Skill[]>> => {\n return request.get('/skill', params)\n }\n\n // 获取Library列表\n const listLibrarys = (params?: ListLibraryReq): Promise<R<Library[]>> => {\n return request.get('/library', params)\n }\n\n // 标签列表\n const listTags = (params: { tagType: TagTypeEnum }): Promise<R<WorkspaceTag[]>> => {\n return request.get(`/tags`, { tagType: params.tagType })\n }\n\n // 数据源列表\n const listDataSources = (): Promise<R<Datasource[]>> => {\n return request.get(`/datasource`)\n }\n\n const getAgentAvatar = (path: string): Promise<Blob> => {\n return request.get(`/files/access?path=${path}&workspaceType=${WorkspaceTypeEnum.GLOBAL}`, undefined, { responseType: 'blob' })\n }\n\n /**\n * 收藏/取消收藏会话\n * @param conversationId - 会话ID\n * @param isFavorite - false-取消收藏; true-收藏\n */\n const conversationFavorite = (conversationId: string, isFavorite: boolean): Promise<R<boolean>> => {\n return request.put('/agents/conversations/favorite', { conversationIds: [conversationId], favorite: isFavorite })\n }\n\n /**\n * 分享会话\n * @param conversationId - 会话ID\n */\n const shareConversation = (conversationId: string): Promise<R<ShareConversationResponse>> => {\n return request.post(`/agents/conversations/${conversationId}/share/url`)\n }\n\n return {\n fetchModelList,\n fetchAgentInfo,\n createConversationId,\n fetchConversations,\n deleteConversation,\n fetchMessages,\n sendMessageStream,\n cancelMessage,\n getAgentUserInput,\n feedbackUpdate,\n chatUpload,\n getPreviewUrl,\n docQuery,\n listSkills,\n listLibrarys,\n listDataSources,\n listTags,\n getAgentAvatar,\n conversationFavorite,\n shareConversation\n }\n}\n","import { classifyTime, getChatSocketUrl, variablesToObject } from '../core/utils'\n\nimport { ConversationItemType } from '@ant-design/x-v2'\nimport {\n buildUrlParams,\n createRequest,\n deepCopy,\n deepMerge,\n HttpStatus,\n isArray,\n isNullOrUnDef,\n isObject,\n isString,\n shouldRender,\n transform,\n transforms\n} from '@zero-library/common'\nimport { message as antdMessage, message } from 'antd'\nimport { proxy } from 'valtio'\nimport { AgentTypeEnum, CONV_MODE } from '../core/constants'\nimport { redirectUrl, SHARE_KEY, TOKEN_KEY, tokenManager } from '../core/session'\nimport { createChatService } from '../services'\nimport {\n A2uiCommandEvent,\n AgentInfo,\n AgentSpec,\n ChatConfig,\n ChatHooks,\n ChatLayout,\n ChatParams,\n ChatServices,\n ConversationMessage,\n ConversationMessageSend,\n ConversationNewTitleEvent,\n ConversationsQuery,\n ConversationType,\n FeedbackUpdate,\n FileTextType,\n FileUrlType,\n MessageBoxType,\n ProviderModel,\n ReferencesType,\n RequestInstance,\n RunStartedEvent,\n StepErrorEvent,\n StepStartedEvent,\n TextEvent,\n ToolCallDeltaEvent,\n ToolCallEvent,\n ToolResultEvent,\n Variable\n} from '../types'\n\nconst defaultLayout = {\n globalHeader: false,\n conversationList: false,\n preview: true,\n chatHeader: true,\n messageList: true,\n senderHeader: false,\n senderFooter: false,\n disclaimerNotice: true,\n userInput: false\n} as ChatLayout\n\n/**\n * 创建聊天状态管理器\n * 使用 Valtio 进行状态管理,包含会话、消息、用户信息等所有聊天相关状态\n * @returns 聊天状态管理器和操作方法\n */\nexport function createChatStore() {\n /** 全局配置对象,包含钩子函数、布局等配置 */\n const config = proxy({\n services: {\n /** WebSocket地址 */\n websocketUrls: ['', ''] as [string, string],\n /** HTTP请求实例 */\n request: {} as RequestInstance\n },\n models: [] as ProviderModel[],\n /** 钩子函数 */\n hooks: {} as ChatHooks,\n layout: {} as ChatLayout,\n loading: false,\n /** 文件预览状态 */\n preview: {\n file: {} as FileUrlType | FileTextType,\n isEdit: false // 未使用\n },\n stream: true,\n params: {\n convMeta: {\n mode: CONV_MODE.PROD\n }\n } as ChatParams\n })\n\n /**\n * 获取模型列表\n * 从后端获取可用的模型列表\n */\n const getModels = async () => {\n return await config.services.request.fetchModelList()\n }\n\n /**\n * 设置服务配置\n * 配置聊天组件所需的HTTP和WebSocket服务\n *\n * @param services - 服务配置对象,包含HTTP和WebSocket配置\n */\n const setServices = ({ http, websocket } = {} as ChatServices) => {\n // 合并默认HTTP配置和用户提供的配置,包括默认的认证头\n const baseURL = http?.config?.baseURL || '/luya/v1'\n const headers = baseURL === '/luya/share' ? { [SHARE_KEY]: localStorage.getItem(SHARE_KEY) || '' } : { [TOKEN_KEY]: tokenManager.get() }\n const httpConfig = {\n baseURL,\n headers,\n ...http?.config\n }\n // 初始化http配置\n const request = createRequest(httpConfig)\n if (config.hooks?.onRequestInterceptor) {\n request.instance.interceptors.request.use(...(config.hooks.onRequestInterceptor as any))\n }\n request.instance.interceptors.response.use(undefined, (err) => {\n if (err?.response?.status === HttpStatus.UNAUTHORIZED) {\n if (config.hooks.onRedirectLogin) {\n config.hooks.onRedirectLogin()\n } else {\n redirectUrl()\n }\n }\n return Promise.reject(err)\n })\n if (config.hooks?.onResponseInterceptor) {\n request.instance.interceptors.response.use(...config.hooks.onResponseInterceptor)\n }\n config.services.request = { ...createChatService(request, httpConfig), ...http?.request }\n\n // 初始化WebSocket配置数组,最多支持两个地址\n config.services.websocketUrls = ['', '']\n if (isArray(websocket?.baseURLs)) {\n // 配置提供的WebSocket地址\n websocket.baseURLs.forEach((baseURL, index) => {\n if (isString(baseURL)) {\n config.services.websocketUrls[index] = getChatSocketUrl(baseURL, websocket?.params || httpConfig.headers)\n }\n })\n } else {\n // 如果未提供WebSocket URL数组,则继承HTTP配置\n const url = getChatSocketUrl(httpConfig.baseURL, websocket?.params || httpConfig.headers)\n config.services.websocketUrls = [url, '']\n }\n }\n /**\n * 设置文件预览\n * @param file - 要预览的文件\n * @param isEdit - 是否为编辑模式\n */\n const setPreview = async (file = {} as FileUrlType | FileTextType, isEdit = false) => {\n const preview = shouldRender(config.layout.preview)\n\n const canProceed = await config.hooks?.onBeforeFilePreview?.(file, preview)\n if (canProceed === false) {\n return\n }\n\n if (preview) {\n const newFile = file\n if ((newFile as FileUrlType).fileUrl) {\n ;(newFile as FileUrlType).fileUrl = buildUrlParams({ _t: Date.now() }, (newFile as FileUrlType).fileUrl)\n }\n config.preview = {\n file: newFile,\n isEdit\n }\n } else {\n if ((file as FileUrlType)?.fileUrl) {\n window.open((file as FileUrlType).fileUrl, '_blank')\n } else if ((file as FileTextType)?.content) {\n message.warning('当前环境不支持预览')\n }\n }\n config.hooks?.onAfterFilePreview?.(file, preview)\n }\n\n /**\n * 设置参数\n * @param params - 参数对象\n */\n const setParams = (params?: ObjectType<any>) => {\n if (isObject(params)) {\n Object.assign(config.params, params)\n }\n }\n\n /**\n * 设置布局配置\n * @param layout - 布局配置\n */\n const setLayout = (layout: Partial<ChatLayout>) => {\n config.layout = deepMerge(defaultLayout, layout)\n }\n\n /**\n * 设置生命周期钩子函数\n * @param hooks - 钩子函数配置\n */\n const setHooks = (hooks = {} as ChatHooks) => {\n config.hooks = hooks\n }\n\n /** 智能体信息 */\n const agent = proxy({\n /** 当前智能体 */\n agentInfo: {} as AgentInfo,\n /** 智能体加载状态 */\n loading: false\n })\n\n const getUserInput = async (agentId: string) => {\n agent.loading = true\n try {\n const { data } = await config.services.request.getAgentUserInput(agentId)\n if (data?.inputs && !agent.agentInfo.userInput?.length) {\n agent.agentInfo.userInput = data.inputs.filter((item) => item.enableEdit)\n }\n } finally {\n agent.loading = false\n }\n }\n\n const setUserInput = (userInput: AgentInfo['userInput']) => {\n if (agent.agentInfo.agentType === AgentTypeEnum.FLOW) {\n agent.agentInfo.userInput = userInput\n }\n }\n\n /** 获取智能体详情 */\n const getAgentInfo = async (id: string) => {\n config.loading = true\n try {\n const { data } = await config.services.request.fetchAgentInfo(id || '')\n agent.agentInfo = data as AgentInfo\n } finally {\n config.loading = false\n }\n }\n\n const setAgent = async (agentInfo: AgentInfo) => {\n if ((!agent.agentInfo.id && !agentInfo.updatedAt) || (agent.agentInfo.id && agent.agentInfo.id !== agentInfo.id)) {\n await getAgentInfo(agentInfo.id)\n }\n\n agent.agentInfo = { ...agent.agentInfo, ...agentInfo }\n if (config.layout.userInput) {\n await getUserInput(agent.agentInfo.id)\n }\n config.hooks?.onAfterSwitchAgent?.(agent.agentInfo)\n }\n\n /** 历史会话管理 */\n const conversations = proxy({\n /** 会话列表数据 */\n list: {\n items: [] as ConversationItemType[]\n },\n /** 当前会话索引,创建会话时更新,促使页面更新会话列表 */\n updateIndex: 0,\n /** 获取会话列表的加载状态 */\n loading: false,\n /** 编辑会话的加载状态 */\n editLoading: false\n })\n\n /** 获取会话列表 */\n const getConversations = async (agentId: ConversationsQuery['agentId']) => {\n try {\n conversations.loading = true\n const { data } = await config.services.request.fetchConversations({\n agentId,\n convMeta: config.params.convMeta\n })\n // 防止会话接口请求前就已经切换了智能体\n if (agent.agentInfo.id !== agentId) return\n const resultItems = transforms<ConversationType, ConversationItemType>(data || [], {\n key: 'id',\n id: 'id',\n label: 'title',\n spec: 'spec',\n isFavorite: 'isFavorite',\n group: (c): string => {\n return classifyTime(c.updatedAt)\n }\n })\n conversations.list.items = resultItems\n } finally {\n conversations.loading = false\n }\n }\n\n /** 删除会话 */\n const delConversation = async (conversationId: ConversationType['id']) => {\n try {\n const canProceed = await config.hooks?.onBeforeDelConversation?.(conversationId)\n if (canProceed === false) return\n conversations.editLoading = true\n await config.services.request.deleteConversation(conversationId)\n antdMessage.success('删除成功')\n conversations.list.items = conversations.list.items.filter((item) => item.key !== conversationId)\n favorite.list.items = favorite.list.items.filter((item) => item.id !== conversationId)\n delete conversation.messages[conversationId]\n if (conversation.active.id === conversationId) {\n createConversation()\n }\n config.hooks?.onAfterDelConversation?.(conversationId, conversation.active.id === conversationId)\n } finally {\n conversations.editLoading = false\n }\n }\n\n const initConversation = async (config: ChatConfig) => {\n await getConversations(config.agent.id)\n await getConversationFavorite()\n\n if (config?.conversationId) {\n switchConversation(config.conversationId)\n } else {\n if (config.conversationStrategy === 1 && conversations.list.items.length > 0) {\n switchConversation(conversations.list.items[0].key)\n } else {\n createConversation()\n }\n }\n }\n\n const switchConversation = async (id: ConversationType['id']) => {\n const conversationId = String(id)\n\n if (conversation.active.id === conversationId) return\n const canProceed = await config.hooks?.onBeforeSwitchConversation?.(conversationId)\n if (canProceed === false) {\n throw new Error('操作被阻止')\n }\n // 初始化会话信息\n conversation.active.id = conversationId\n\n // 更新会话的 spec\n const targetConversation = conversations.list.items.find((item) => item.key === conversationId) as ConversationItemType\n if (targetConversation) {\n conversation.active.spec = targetConversation.spec\n } else {\n conversation.active.spec = {} as AgentSpec\n }\n await getMessages(conversationId)\n // 关闭文件预览\n await setPreview()\n config.hooks?.onAfterSwitchConversation?.(conversationId)\n }\n\n /** 更新会话列表 */\n const updateConversations = (data: ConversationType) => {\n const item = transform<ConversationType, ConversationItemType>(data, {\n key: 'id',\n id: 'id',\n label: 'title',\n spec: 'spec',\n isFavorite: 'isFavorite',\n group: (c): string => {\n return classifyTime(c.updatedAt)\n }\n })\n conversations.list.items = [item, ...conversations.list.items.filter((i) => i.key !== item.key)]\n }\n\n /** 创建会话 */\n const createConversation = async () => {\n if (!agent.agentInfo.id) return\n const { data } = await config.services.request.createConversationId({ agentId: agent.agentInfo.id, convMeta: config.params.convMeta })\n\n const newSpec = {\n skills: { items: [] },\n knowledges: { items: [] }\n } as AgentSpec\n\n updateConversations({\n id: data || '',\n title: '',\n agentId: agent.agentInfo?.id || '',\n isFavorite: false,\n updatedAt: new Date().toISOString(),\n spec: newSpec\n })\n await switchConversation(data)\n }\n\n /** 收藏管理 */\n const favorite = proxy({\n /** 收藏列表数据 */\n list: {\n items: [] as ConversationItemType[]\n },\n\n /** 收藏列表的加载状态 */\n loading: false\n })\n\n const getConversationFavorite = async () => {\n try {\n favorite.loading = true\n const { data } = await config.services.request.fetchConversations({\n agentId: agent.agentInfo?.id || '',\n convMeta: {\n ...config.params.convMeta,\n isFavorite: true\n }\n })\n\n const resultItems = transforms<ConversationType, ConversationItemType>(data || [], {\n key: 'id',\n id: 'id',\n label: 'title',\n spec: 'spec',\n isFavorite: 'isFavorite',\n group: (c): string => {\n return classifyTime(c.updatedAt)\n }\n })\n favorite.list.items = resultItems\n } finally {\n favorite.loading = false\n }\n }\n\n const collectConversation = async (conversationId: ConversationType['id'], isFavorite: boolean) => {\n try {\n await config.services.request.conversationFavorite(conversationId, isFavorite)\n\n // 同步会话列表\n if (conversations.list.items.length) {\n const item = conversations.list.items.find((item) => item.id === conversationId)\n if (item) {\n item.isFavorite = isFavorite\n }\n }\n\n // 同步收藏列表\n if (isFavorite) {\n await getConversationFavorite()\n } else if (favorite.list.items.length) {\n favorite.list.items = favorite.list.items.filter((item) => item.id !== conversationId)\n }\n\n message.success(isFavorite ? '收藏成功' : '已取消收藏')\n } finally {\n }\n }\n\n /** 当前会话管理 */\n const conversation = proxy({\n loading: false,\n /** 当前激活的会话信息 */\n active: {\n id: '',\n spec: {} as AgentSpec,\n userInput: [] as Variable[]\n },\n /** 每个会话的消息存储,以会话ID为键 */\n messages: {} as { [key: ConversationType['id']]: MessageBoxType },\n\n /** 消息反馈状态 */\n feedback: {\n /** 反馈操作加载状态 */\n loading: false\n }\n })\n\n const setReferences = async (references?: ReferencesType) => {\n const canProceed = await config.hooks?.onBeforeSetReferences?.(references)\n if (canProceed === false) {\n throw new Error('操作被阻止')\n }\n conversation.messages[conversation.active.id].references = references\n config.hooks?.onAfterSetReferences?.(references)\n }\n\n /** 更新会话内容 */\n const setContent = (content?: ConversationMessageSend['message']) => {\n conversation.messages[conversation.active.id].content = content\n }\n\n const setContentParams = (params?: MessageBoxType['params']) => {\n conversation.messages[conversation.active.id].params = params\n }\n\n /** 更新文件列表 */\n const setFileList = (files = [] as ConversationMessageSend['files']) => {\n conversation.messages[conversation.active.id].files = files\n }\n\n /** 更新头部展开状态 */\n const setHeaderOpen = (headerOpen: MessageBoxType['headerOpen']) => {\n conversation.messages[conversation.active.id].headerOpen = headerOpen\n }\n\n const setConversationSpec = (spec: AgentSpec) => {\n if (isObject(spec)) {\n Object.assign(conversation.active.spec || {}, spec)\n }\n }\n\n const setConversationUserInput = (userInput: Variable[]) => {\n conversation.active.userInput = userInput\n }\n\n const feedback = async (executionId: FeedbackUpdate['executionId'], feedback: FeedbackUpdate['feedback'], index: number) => {\n try {\n conversation.feedback.loading = true\n await config.services.request.feedbackUpdate({ executionId, feedback })\n message.success('感谢您的反馈')\n conversation.messages[conversation.active.id].message[index].feedback = feedback\n } finally {\n conversation.feedback.loading = false\n }\n }\n\n /**\n * 初始化会话消息状态\n * @param conversationId - 会话ID\n */\n const setInitMessage = async (conversationId: ConversationType['id']) => {\n conversation.messages[conversationId] = {\n /** 输入框内容 */\n content: '',\n /** 上传文件列表 */\n files: [] as ConversationMessageSend['files'],\n /** 头部展开状态 */\n headerOpen: false,\n /** 消息发送/接收加载状态 */\n loading: false,\n /** 消息列表 */\n message: []\n }\n }\n\n /** 获取会话消息列表 */\n const getMessages = async (conversationId: ConversationType['id']) => {\n const canProceed = await config.hooks?.onBeforeInitMessages?.(conversationId)\n if (canProceed === false) {\n throw new Error('操作被阻止')\n }\n conversation.loading = true\n // 初始化消息列表\n if (!conversation.messages[conversationId]) {\n setInitMessage(conversationId)\n }\n if (conversation.messages[conversationId].message.length === 0) {\n // 接口请求-获取会话消息列表\n const { data } = await config.services.request.fetchMessages({\n ...config.params.convMeta,\n conversationId\n })\n conversation.messages[conversationId].message = []\n if (data?.length) {\n // 先处理主智能体消息,再处理子智能体消息(按 toolCallId 归组)\n const mainMessages = data.filter((msg) => !msg.toolCallId)\n const subAgentMessages = data.filter((msg) => msg.toolCallId)\n\n mainMessages.forEach((msg) => {\n processMessageContent(msg)\n })\n subAgentMessages.forEach((msg) => {\n routeSubAgentMessage(msg)\n })\n\n finalizeHistoryMessages(conversationId)\n normalizeMessagesByExecutionAndRole(conversation.messages[conversationId].message)\n }\n }\n conversation.loading = false\n config.hooks?.onAfterInitMessages?.(conversation.messages[conversationId].message)\n config.hooks?.onAfterInit?.()\n }\n\n function findExecutionMsgIndex(msg: Pick<ConversationMessage, 'executionId' | 'role'>, messages?: ConversationMessage[]) {\n return (messages || []).findLastIndex((item) => item.executionId === msg.executionId && item.role === msg.role)\n }\n\n function normalizeMessagesByExecutionAndRole(messages?: ConversationMessage[]) {\n if (!messages?.length) return\n\n const mergedMessages: ConversationMessage[] = []\n const groupedMessageIndex = new Map<string, number>()\n\n messages.forEach((item) => {\n const key = `${item.executionId}-${item.role}`\n const existedIndex = groupedMessageIndex.get(key)\n\n if (isNullOrUnDef(existedIndex)) {\n mergedMessages.push({\n ...item,\n content: [...(item.content || [])],\n files: item.files ? [...item.files] : item.files\n })\n groupedMessageIndex.set(key, mergedMessages.length - 1)\n return\n }\n\n const target = mergedMessages[existedIndex]\n target.content = [...(target.content || []), ...(item.content || [])]\n if ((!target.files || target.files.length === 0) && item.files?.length) {\n target.files = [...item.files]\n }\n if (item.generating !== undefined) {\n target.generating = item.generating\n }\n if (item.stopFlag) {\n target.stopFlag = true\n }\n if (item.feedback !== undefined) {\n target.feedback = item.feedback\n }\n if (item.params !== undefined) {\n target.params = item.params\n }\n if (item.quoteMsg !== undefined) {\n target.quoteMsg = item.quoteMsg\n }\n if (!target.createdAt && item.createdAt) {\n target.createdAt = item.createdAt\n }\n if (!target.messageId && item.messageId) {\n target.messageId = item.messageId\n }\n })\n\n if (mergedMessages.length !== messages.length) {\n messages.splice(0, messages.length, ...mergedMessages)\n }\n }\n\n function finalizeHistoryMessages(conversationId: string) {\n const currentConversation = conversation.messages[conversationId]\n if (!currentConversation?.message) return\n\n currentConversation.loading = false\n currentConversation.message.forEach((item) => {\n item.generating = false\n })\n }\n\n /**\n * 消息回调\n * 处理思维链消息\n * @param msg - 步骤消息\n */\n function startCallback(msg: ConversationMessage, messages: ConversationMessage[], isMain: boolean) {\n const idx = findExecutionMsgIndex(msg, messages)\n\n const contentItem = msg.content[0] as RunStartedEvent\n if (contentItem.type !== 'runStarted') return\n\n if (idx === -1) {\n const finalMsg = {\n ...msg,\n content: [contentItem],\n generating: true\n }\n messages.push(finalMsg)\n\n // 仅主智能体更新会话列表\n if (isMain) {\n const targetConversation = conversations.list.items.find((item) => item.id === msg.conversationId)\n if (targetConversation && msg.createdAt) {\n updateConversations({\n ...targetConversation,\n id: targetConversation.id as string,\n title: targetConversation.label as string,\n updatedAt: msg.createdAt\n })\n }\n }\n } else {\n const prevContent = messages[idx]?.content || []\n messages[idx].content = [...prevContent, contentItem]\n }\n if (isMain) conversation.messages[msg.conversationId].loading = true\n }\n\n /**\n * 消息内容回调\n * 处理流式消息内容的追加\n * @param msg - 消息内容\n */\n function textCallback(msg: ConversationMessage, messages: ConversationMessage[], isMain: boolean) {\n const idx = findExecutionMsgIndex(msg, messages)\n const contents = idx !== -1 && messages[idx] ? messages[idx].content || [] : []\n\n const nextContent = msg.content[0] as TextEvent\n if (nextContent.type !== 'text') return\n const normalizedNextContent: TextEvent = { ...nextContent }\n\n if (idx === -1) {\n const finalMsg = {\n ...msg,\n content: [normalizedNextContent],\n generating: true\n }\n messages.push(finalMsg)\n } else {\n const lastContent = contents[contents.length - 1]\n\n if (lastContent?.type === 'text') {\n const lastTextContent = lastContent as TextEvent\n const mergedMessageContent = (lastTextContent.messageContent || '') + (normalizedNextContent.messageContent || '')\n const mergedReasoningContent = nextContent.reasoningContent\n ? (lastTextContent.reasoningContent || '') + nextContent.reasoningContent\n : lastTextContent.reasoningContent\n const nextTextContent: TextEvent = {\n ...lastTextContent,\n messageContent: mergedMessageContent,\n reasoningContent: mergedReasoningContent\n }\n messages[idx].content = [...contents.slice(0, -1), nextTextContent]\n } else {\n messages[idx].content = [...contents, normalizedNextContent]\n }\n }\n if (isMain) conversation.messages[msg.conversationId].loading = true\n }\n\n /**\n * 节点开始消息回调\n * 处理节点开始状态更新\n * @param msg - 节点开始消息\n */\n function stepStartedCallback(msg: ConversationMessage, messages: ConversationMessage[], isMain: boolean) {\n const idx = findExecutionMsgIndex(msg, messages)\n const contentItem = msg.content[0] as StepStartedEvent\n if (isMain) conversation.messages[msg.conversationId].loading = true\n\n if (idx !== -1 && messages[idx]) {\n const contentList = messages[idx].content || []\n const runStartedIndex = contentList.findIndex((item) => item.type === 'runStarted')\n const runStartedItem = runStartedIndex !== -1 ? (contentList[runStartedIndex] as RunStartedEvent | undefined) : undefined\n if (runStartedItem && contentItem.title) {\n const nextRunStartedItem: RunStartedEvent = { ...runStartedItem, title: contentItem.title }\n messages[idx].content = contentList.map((item, i) => (i === runStartedIndex ? nextRunStartedItem : item))\n }\n }\n\n if (isMain) config.hooks?.onStepMessage?.(msg)\n config.hooks?.onStepMessage?.(msg)\n }\n\n /**\n * 节点结束消息回调\n * 处理节点结束状态更新\n * @param msg - 节点结束消息\n */\n function stepFinishedCallback(msg: ConversationMessage, _messages: ConversationMessage[], isMain: boolean) {\n if (isMain) conversation.messages[msg.conversationId].loading = true\n if (isMain) config.hooks?.onStepMessage?.(msg)\n }\n\n /**\n * 节点错误消息回调\n * 处理节点错误状态更新\n * @param msg - 节点错误消息\n */\n function stepErrCallback(msg: ConversationMessage, messages: ConversationMessage[], isMain: boolean) {\n if (isMain) conversation.messages[msg.conversationId].loading = false\n const idx = findExecutionMsgIndex(msg, messages)\n const contentItem = msg.content[0] as StepErrorEvent\n\n messages.forEach((item) => {\n if (item.executionId === msg.executionId) {\n item.generating = false\n }\n })\n\n if (idx !== -1) {\n messages[idx].generating = false\n const prevContent = messages[idx]?.content || []\n messages[idx].content = [...prevContent, contentItem]\n } else {\n const finalMsg = { ...msg }\n finalMsg.generating = false\n messages.push(finalMsg)\n }\n if (isMain) config.hooks?.onStepMessage?.(msg)\n }\n\n function doneCallback(msg: ConversationMessage, message: ConversationMessage[], isMain: boolean) {\n conversation.messages[msg.conversationId].loading = false\n const messages = conversation.messages[msg.conversationId]?.message\n if (messages) {\n const idx = findExecutionMsgIndex(msg, messages)\n const contentItem = msg.content[0]\n\n messages.forEach((item) => {\n if (item.executionId === msg.executionId) {\n item.generating = false\n }\n })\n\n if (contentItem?.type === 'runFailed') {\n if (idx !== -1) {\n const prevContent = messages[idx]?.content || []\n messages[idx].content = [...prevContent, contentItem]\n } else {\n const finalMsg = { ...msg, generating: false }\n messages.push(finalMsg)\n }\n }\n }\n if (isMain) config.hooks?.onAfterAcceptMessage?.(msg)\n }\n\n function titleCallback(msg: ConversationMessage, _messages: ConversationMessage[], isMain: boolean) {\n const content = msg.content[0] as ConversationNewTitleEvent\n if (content.type !== 'conversationNewTitle') return\n if (!isMain) return\n\n const title = content.title || ''\n const conversationId = msg.conversationId || ''\n if (content && conversations.list.items.length) {\n const idx = conversations.list.items.findIndex((item) => item.id === conversationId)\n if (idx === -1) return\n conversations.list.items[idx].label = title\n }\n }\n\n /**\n * 工具调用消息回调\n * @param msg - 工具调用消息\n */\n function toolCallCallback(msg: ConversationMessage, messages: ConversationMessage[], isMain: boolean) {\n let idx = -1\n const contentItem = msg.content[0] as ToolCallEvent\n if (contentItem.type !== 'toolCall') return\n\n if (contentItem.toolCallId) {\n idx = messages.findLastIndex((m) => m.content?.some((c) => c.type === 'toolCall' && (c as ToolCallEvent).toolCallId === contentItem.toolCallId))\n }\n\n if (idx === -1) {\n idx = findExecutionMsgIndex(msg, messages)\n }\n\n if (idx === -1) {\n const finalMsg = { ...msg, generating: true }\n messages.push(finalMsg)\n } else {\n const contents = messages[idx].content\n let existingItemIndex = contents.findIndex((item) => item.type === 'toolCall' && (item as ToolCallEvent).toolCallId === contentItem.toolCallId)\n // 兜底:toolCallId 匹配失败时,尝试匹配无 toolCallId 的流式 item(由 delta 按 index 创建)\n if (existingItemIndex === -1 && contentItem.toolCallId) {\n existingItemIndex = contents.findIndex(\n (item) => item.type === 'toolCall' && !(item as any).toolCallId && (item as any)._streamingIndex !== undefined\n )\n }\n\n if (existingItemIndex !== -1) {\n const nextItem: any = { ...contents[existingItemIndex] }\n const newContent = contentItem.content || (contentItem as any).arguments\n if (typeof newContent === 'string') {\n nextItem.content = (nextItem.content || '') + newContent\n } else if (newContent !== undefined) {\n nextItem.arguments = newContent\n }\n if (contentItem.toolName) nextItem.toolName = contentItem.toolName\n if (contentItem.title) nextItem.title = contentItem.title\n if (contentItem.status) nextItem.status = contentItem.status\n if (contentItem.toolIcon) nextItem.toolIcon = contentItem.toolIcon\n // 关键步骤:ToolCall.display 表示参数最终态,直接覆盖 argsDisplay,\n // 不再与流式阶段内容做字符串拼接,避免参数态/结果态语义混杂。\n if (contentItem.display?.title) nextItem.title = contentItem.display.title\n if (contentItem.display) {\n nextItem.argsDisplay = contentItem.display\n nextItem.displayProtocol = true\n }\n messages[idx].content = contents.map((item, i) => (i === existingItemIndex ? nextItem : item))\n } else {\n messages[idx].content = [...contents, { ...contentItem, displayProtocol: !!contentItem.display }]\n }\n }\n if (isMain) conversation.messages[msg.conversationId].loading = true\n }\n\n /**\n * 工具结果消息回调\n * @param msg - 工具结果消息\n */\n function toolResultCallback(msg: ConversationMessage, messages: ConversationMessage[], isMain: boolean) {\n const contentItem = msg.content[0] as ToolResultEvent\n if (contentItem.type !== 'toolResult') return\n\n let idx = -1\n if (contentItem.toolCallId) {\n idx = messages.findLastIndex((m) => m.content?.some((c) => c.type === 'toolCall' && (c as ToolCallEvent).toolCallId === contentItem.toolCallId))\n }\n\n if (idx === -1) {\n idx = findExecutionMsgIndex(msg, messages)\n }\n\n if (idx === -1) return\n\n const contents = messages[idx].content\n const toolCallIndex = contents.findIndex((item) => item.type === 'toolCall' && (item as ToolCallEvent).toolCallId === contentItem.toolCallId)\n\n if (toolCallIndex !== -1) {\n const nextToolCallItem: any = {\n ...contents[toolCallIndex],\n result: (contentItem as any).result ?? contentItem.content\n }\n if (contentItem.status) nextToolCallItem.status = contentItem.status\n if (contentItem.isError !== undefined) nextToolCallItem.isError = contentItem.isError\n if (contentItem.errorMessage) nextToolCallItem.errorMessage = contentItem.errorMessage\n const dur = contentItem.durationMs ?? contentItem.duration\n if (dur !== undefined) nextToolCallItem.duration = dur\n if (contentItem.title) nextToolCallItem.title = contentItem.title\n // 关键步骤:ToolResult.display 表示结果最终态,独立保存到 resultDisplay,\n // 前端按“输入信息/执行结果”两个区块渲染,而不是继续 append 到同一内容缓冲区。\n if (contentItem.display?.title) nextToolCallItem.title = contentItem.display.title\n if (contentItem.display) {\n nextToolCallItem.resultDisplay = contentItem.display\n nextToolCallItem.displayProtocol = true\n }\n messages[idx].content = contents.map((item, i) => (i === toolCallIndex ? nextToolCallItem : item))\n } else {\n messages[idx].content = [...contents, contentItem]\n }\n if (isMain) conversation.messages[msg.conversationId].loading = true\n }\n\n /**\n * A2UI 命令消息回调\n * @param msg - A2UI 命令消息\n */\n function a2uiCommandCallback(msg: ConversationMessage, messages: ConversationMessage[], isMain: boolean) {\n const idx = findExecutionMsgIndex(msg, messages)\n const contentItem = msg.content[0] as A2uiCommandEvent\n if (contentItem.type !== 'a2uiCommand') return\n\n if (idx === -1) {\n const finalMsg = { ...msg, generating: true }\n messages.push(finalMsg)\n } else {\n const prevContent = messages[idx]?.content || []\n messages[idx].content = [...prevContent, contentItem]\n }\n if (isMain) conversation.messages[msg.conversationId].loading = true\n }\n\n /**\n * toolCallDelta 增量回调\n * 追加参数 + 处理 displayDelta 流式展示 + 支持 index 匹配\n */\n function toolCallDeltaCallback(msg: ConversationMessage, messages: ConversationMessage[], isMain: boolean) {\n const contentItem = msg.content[0] as ToolCallDeltaEvent\n if (contentItem.type !== 'toolCallDelta') return\n\n // 匹配:优先 toolCallId,其次 index(toolCallId 为 null 时按 index 关联)\n let idx = -1\n if (contentItem.toolCallId) {\n idx = messages.findLastIndex((m) => m.content?.some((c) => c.type === 'toolCall' && (c as any).toolCallId === contentItem.toolCallId))\n }\n if (idx === -1 && contentItem.index !== undefined) {\n idx = messages.findLastIndex(\n (m) =>\n m.executionId === msg.executionId &&\n m.content?.some((c) => c.type === 'toolCall' && (c as any)._streamingIndex === contentItem.index && !(c as any).toolCallId)\n )\n }\n if (idx === -1) idx = findExecutionMsgIndex(msg, messages)\n\n // 构建 delta 新 item 的公共逻辑\n const buildNewItem = (): any => {\n const item: any = {\n type: 'toolCall' as const,\n toolCallId: contentItem.toolCallId || undefined,\n _streamingIndex: contentItem.index,\n toolName: contentItem.toolName || undefined,\n toolIcon: contentItem.toolIcon,\n title: contentItem.title,\n content: contentItem.displayDelta ? '' : contentItem.argumentsDelta || '',\n status: contentItem.status || ('running' as const),\n displayProtocol: !!contentItem.displayDelta\n }\n if (contentItem.displayDelta?.title) item.title = contentItem.displayDelta.title\n if (contentItem.displayDelta?.contentAppend) {\n item.streamingArgsDisplay = {\n title: contentItem.displayDelta.title,\n content: contentItem.displayDelta.contentAppend,\n kind: contentItem.displayDelta.kind,\n lang: contentItem.displayDelta.lang\n }\n }\n return item\n }\n\n if (idx === -1) {\n messages.push({ ...msg, content: [buildNewItem()], generating: true })\n } else {\n const contents = messages[idx].content\n let itemIdx = -1\n if (contentItem.toolCallId) {\n itemIdx = contents.findIndex((c) => c.type === 'toolCall' && (c as any).toolCallId === contentItem.toolCallId)\n }\n if (itemIdx === -1 && contentItem.index !== undefined) {\n itemIdx = contents.findIndex((c) => c.type === 'toolCall' && (c as any)._streamingIndex === contentItem.index && !(c as any).toolCallId)\n }\n\n if (itemIdx !== -1) {\n const existing = contents[itemIdx] as any\n const nextItem: any = {\n ...existing,\n type: 'toolCall',\n content: contentItem.displayDelta ? existing.content || '' : (existing.content || '') + (contentItem.argumentsDelta || '')\n }\n if (contentItem.toolCallId && !existing.toolCallId) nextItem.toolCallId = contentItem.toolCallId\n if (contentItem.toolName) nextItem.toolName = contentItem.toolName\n if (contentItem.title) nextItem.title = contentItem.title\n if (contentItem.status) nextItem.status = contentItem.status\n if (contentItem.toolIcon) nextItem.toolIcon = contentItem.toolIcon\n if (contentItem.displayDelta) nextItem.displayProtocol = true\n // 关键步骤:displayDelta 只表达“参数流式临时态”,只更新 streamingArgsDisplay。\n if (contentItem.displayDelta?.title) nextItem.title = contentItem.displayDelta.title\n if (contentItem.displayDelta?.contentAppend) {\n nextItem.streamingArgsDisplay = {\n title: contentItem.displayDelta.title || existing.streamingArgsDisplay?.title,\n content: (existing.streamingArgsDisplay?.content || '') + contentItem.displayDelta.contentAppend,\n kind: contentItem.displayDelta.kind || existing.streamingArgsDisplay?.kind,\n lang: contentItem.displayDelta.lang ?? existing.streamingArgsDisplay?.lang\n }\n }\n messages[idx].content = contents.map((c, i) => (i === itemIdx ? nextItem : c))\n } else {\n messages[idx].content = [...contents, buildNewItem()]\n }\n }\n if (isMain) conversation.messages[msg.conversationId].loading = true\n }\n\n /**\n * 递归查找包含指定 toolCallId 的消息及其 content item 位置\n * 支持多层子智能体嵌套\n */\n function findToolCallItemRecursive(\n messages: ConversationMessage[],\n toolCallId: string\n ): { messageList: ConversationMessage; itemIndex: number } | null {\n for (let i = messages.length - 1; i >= 0; i--) {\n const msg = messages[i]\n const contents = msg.content || []\n\n const itemIdx = contents.findIndex((c) => c.type === 'toolCall' && (c as ToolCallEvent).toolCallId === toolCallId)\n if (itemIdx !== -1) {\n return { messageList: msg, itemIndex: itemIdx }\n }\n\n // 递归搜索子智能体消息\n for (const content of contents) {\n if (content.type === 'toolCall') {\n const subMessages = (content as any).subMessages as ConversationMessage[] | undefined\n if (subMessages?.length) {\n const found = findToolCallItemRecursive(subMessages, toolCallId)\n if (found) return found\n }\n }\n }\n }\n return null\n }\n\n /**\n * 将子智能体消息路由到对应 toolCall 的 subMessages 中\n */\n function routeSubAgentMessage(msg: ConversationMessage) {\n const conversationId = msg.conversationId\n const mainMessages = conversation.messages[conversationId]?.message\n if (!mainMessages) return\n\n const found = findToolCallItemRecursive(mainMessages, msg.toolCallId!)\n if (!found) {\n // toolCall item 尚未创建,暂不处理(实际场景中 toolCall 应先于子消息到达)\n return\n }\n\n const { messageList, itemIndex } = found\n const contents = messageList.content\n const toolCallItem = contents[itemIndex] as ToolCallEvent & {\n subMessages?: ConversationMessage[]\n hasSubAgent?: boolean\n }\n\n // 标记该 toolCall 触发了子智能体\n toolCallItem.hasSubAgent = true\n\n // 初始化 subMessages\n if (!toolCallItem.subMessages) {\n toolCallItem.subMessages = []\n }\n\n // 复用 processMessageContent 处理子消息,目标是 subMessages\n processMessageContent(msg, toolCallItem.subMessages)\n\n // 触发响应式更新\n messageList.content = contents.map((c, i) => (i === itemIndex ? { ...toolCallItem } : c))\n }\n\n /**\n * 处理消息内容分发\n */\n function processSingleMessageContent(newMessage: ConversationMessage, messages: ConversationMessage[], isMain: boolean) {\n switch (newMessage.content[0].type) {\n case 'runStarted':\n startCallback(newMessage, messages, isMain)\n break\n case 'text':\n textCallback(newMessage, messages, isMain)\n break\n case 'stepStarted':\n stepStartedCallback(newMessage, messages, isMain)\n break\n case 'stepFinished':\n stepFinishedCallback(newMessage, messages, isMain)\n break\n case 'stepError':\n stepErrCallback(newMessage, messages, isMain)\n break\n case 'runFinished':\n case 'runFailed':\n case 'runStopped':\n doneCallback(newMessage, messages, isMain)\n break\n case 'conversationNewTitle':\n titleCallback(newMessage, messages, isMain)\n break\n case 'toolCall':\n toolCallCallback(newMessage, messages, isMain)\n break\n case 'toolCallDelta':\n toolCallDeltaCallback(newMessage, messages, isMain)\n break\n case 'toolResult':\n toolResultCallback(newMessage, messages, isMain)\n break\n case 'a2uiCommand':\n a2uiCommandCallback(newMessage, messages, isMain)\n break\n default: {\n const idx = findExecutionMsgIndex(newMessage, messages)\n if (idx === -1) {\n const finalMsg = { ...newMessage, generating: true }\n messages.push(finalMsg)\n } else {\n const prevContent = messages[idx]?.content || []\n messages[idx].content = [...prevContent, ...newMessage.content]\n }\n if (isMain) conversation.messages[newMessage.conversationId].loading = true\n break\n }\n }\n }\n\n function processMessageContent(message: ConversationMessage, targetMessages?: ConversationMessage[]) {\n const newMessage = {\n ...message,\n agentId: agent.agentInfo.id\n }\n const isMain = !targetMessages\n const messages = targetMessages ?? conversation.messages[newMessage.conversationId]?.message\n if (!messages) return\n\n const contentList = Array.isArray(newMessage.content) ? newMessage.content : []\n\n if (contentList.length === 0) {\n const idx = findExecutionMsgIndex(newMessage, messages)\n if (idx === -1) {\n messages.push({ ...newMessage })\n } else {\n const prevContent = messages[idx]?.content || []\n messages[idx] = {\n ...messages[idx],\n ...newMessage,\n content: prevContent\n }\n }\n\n normalizeMessagesByExecutionAndRole(messages)\n return\n }\n\n contentList.forEach((contentItem) => {\n processSingleMessageContent(\n {\n ...newMessage,\n content: [contentItem]\n },\n messages,\n isMain\n )\n })\n\n normalizeMessagesByExecutionAndRole(messages)\n }\n\n function isStoppedIncomingMessage(newMessage: ConversationMessage) {\n const messages = conversation.messages[newMessage.conversationId]?.message\n if (!messages) return false\n\n // 检查主消息列表\n if (messages.some((item) => item.stopFlag && item.executionId === newMessage.executionId)) {\n return true\n }\n\n // 递归检查子智能体消息列表\n return messages.some((msg) =>\n msg.content?.some((c) => {\n if (c.type === 'toolCall') {\n const subMessages = (c as any).subMessages as ConversationMessage[] | undefined\n return subMessages?.some((sub) => sub.stopFlag && sub.executionId === newMessage.executionId)\n }\n return false\n })\n )\n }\n\n /**\n * 接收WebSocket消息的统一入口\n * 根据消息类型分发到不同的处理函数\n * @param newMessage - 新消息对象\n */\n const acceptMessage = async (newMessage: ConversationMessage) => {\n const conversationId = newMessage.conversationId\n if (!conversation.messages[conversationId]?.message) return\n const isActive = conversation.active.id === conversationId\n const canProceed = await config.hooks?.onBeforeAcceptMessage?.(newMessage, isActive)\n if (canProceed === false) {\n throw new Error('操作被阻止')\n }\n\n // 子智能体消息分流:携带 toolCallId 的消息归属到对应工具块\n if (newMessage.toolCallId) {\n routeSubAgentMessage(newMessage)\n return\n }\n\n if (isStoppedIncomingMessage(newMessage)) {\n conversation.messages[conversationId].loading = false\n return\n }\n processMessageContent(newMessage)\n }\n\n const sendMessage = async (\n message?: ConversationMessageSend['message'],\n msgFiles = [] as ConversationMessageSend['files'],\n params?: ObjectType<any>\n ) => {\n const conversationId = conversation.active.id\n if (conversation.messages[conversationId].loading) return\n let msgContent: ConversationMessageSend['message'] = '',\n files: ConversationMessageSend['files'] | undefined\n const references = conversation.messages[conversationId].references\n if (message) {\n msgContent = message\n files = [...msgFiles, ...(conversation.messages[conversationId].files || [])]\n } else {\n if (references?.type === 1 && references?.content?.msgContent) {\n msgContent = references.content.msgContent + '\\n\\n'\n }\n msgContent = msgContent + conversation.messages[conversationId].content!\n files = conversation.messages[conversationId].files\n }\n if (!msgContent) return\n\n const canProceed = await config.hooks?.onBeforeSend?.(msgContent, files || [])\n if (canProceed === false) return\n\n // 校验 userInput\n if (conversation.active.userInput?.length) {\n const invalid = conversation.active.userInput.some((item) => {\n const isRequired = item.rules?.some((r) => r.type === 'required')\n if (isRequired) {\n if (item.type === 'BOOLEAN') {\n return isNullOrUnDef(item.value)\n }\n return isNullOrUnDef(item.value) || item.value === ''\n }\n return false\n })\n if (invalid) {\n antdMessage.error('请检查输入参数')\n return\n }\n }\n\n conversation.messages[conversationId].loading = true\n\n // 如果当前会话没有标题(新创建的隐式会话),则给一个默认标题,使其在发送消息后显示在列表中\n const idx = conversations.list.items.findIndex((item) => item.id === conversationId)\n if (idx !== -1 && !conversations.list.items[idx].label) {\n conversations.list.items[idx].label = '新会话'\n }\n\n const sendParams = {\n conversationId,\n message: msgContent,\n convMeta: config.params.convMeta,\n files,\n spec: {\n ...conversation.active.spec,\n model: {\n providerName: agent.agentInfo.spec?.model?.providerName || '',\n modelName: agent.agentInfo.spec?.model?.modelName || '',\n reasoning: agent.agentInfo.spec?.model?.reasoning ?? false\n }\n },\n stream: true,\n responseMode: 2\n } as ConversationMessageSend\n\n // 参数合并\n const extraParams = deepCopy(config.params?.params || {}) as ChatParams['params']\n const userInputParams = variablesToObject(conversation.active.userInput || [])\n Object.assign(extraParams, message ? {} : { ...references?.params }, params, userInputParams)\n sendParams.params = extraParams\n\n if (!message) {\n setContent('')\n setContentParams()\n setReferences()\n }\n setFileList([])\n setHeaderOpen(false)\n\n try {\n const dealedParams = await config.hooks?.onHandleSendParams?.(sendParams)\n await config.services.request.sendMessageStream(dealedParams || sendParams, agent.agentInfo?.id || '')\n config.hooks?.onAfterSend?.()\n } catch (err) {\n // HTTP 请求失败时(如 422),WebSocket 不会有消息回来,需要手动重置 loading\n conversation.messages[conversationId].loading = false\n const errMsg = (err as any)?.response?.data?.message || (err as any)?.message || '发送失败,请重试'\n antdMessage.error(errMsg)\n throw err\n } finally {\n // loading关闭由websocket消息执行\n // conversation.messages[conversationId].loading = false\n }\n }\n\n // 取消接收消息\n const cancelReceive = async () => {\n const messages = conversation.messages[conversation.active.id].message\n if (messages.length > 0) {\n const lastMsg = messages[messages.length - 1]\n if (lastMsg.executionId) {\n await config.services.request.cancelMessage(lastMsg.executionId)\n\n // 递归标记所有层级消息的停止状态\n const markStopped = (msgList: ConversationMessage[], matchExecutionId: boolean) => {\n msgList.forEach((item) => {\n if (matchExecutionId && item.executionId === lastMsg.executionId) {\n item.generating = false\n item.stopFlag = true\n }\n if (item.content && Array.isArray(item.content)) {\n item.content.forEach((contentItem: any) => {\n if (contentItem.type === 'toolCall' && contentItem.status !== 'success' && contentItem.status !== 'error') {\n contentItem.status = 'error'\n }\n // 子智能体消息:无条件递归清理(子智能体有独立的 executionId)\n if (contentItem.subMessages?.length) {\n markStopped(contentItem.subMessages, true)\n }\n })\n }\n })\n }\n markStopped(messages, true)\n } else {\n lastMsg.stopFlag = true\n lastMsg.generating = false\n }\n }\n conversation.messages[conversation.active.id].loading = false\n }\n\n return {\n /** 获取模型列表 */\n getModels,\n /** 全局配置对象 */\n config,\n /** 设置服务配置 */\n setServices,\n /** 智能体状态 */\n agent,\n /** 设置文件预览 */\n setPreview,\n /** 设置参数 */\n setParams,\n /** 设置布局配置 */\n setLayout,\n /** 设置生命周期钩子 */\n setHooks,\n /** 获取智能体详情 */\n getAgentInfo,\n /** 设置智能体 */\n setAgent,\n /** 设置智能体用户输入 */\n setUserInput,\n /** 设置会话配置 */\n setConversationSpec,\n /** 历史会话状态 */\n conversations,\n /** 获取会话列表 */\n getConversations,\n /** 删除会话 */\n delConversation,\n /** 设置内容参数,透传大模型后清空 */\n setContentParams,\n /** 当前会话状态 */\n conversation,\n /** 设置引用消息 */\n setReferences,\n /** 设置消息内容 */\n setContent,\n /** 设置文件列表 */\n setFileList,\n /** 设置头部展开状态 */\n setHeaderOpen,\n /** 创建新会话 */\n createConversation,\n /** 切换会话 */\n switchConversation,\n /** 初始化会话 */\n initConversation,\n /** 发送消息 */\n sendMessage,\n /** 取消接收 */\n cancelReceive,\n /** 接收消息 */\n acceptMessage,\n /** 获取智能体用户输入 */\n getUserInput,\n /** 消息反馈 */\n feedback,\n /** 设置会话用户输入 */\n setConversationUserInput,\n /** 收藏管理 */\n favorite,\n /** 获取会话收藏列表 */\n getConversationFavorite,\n /** 收藏会话 */\n collectConversation\n }\n}\n","import { Avatar } from 'antd'\nimport React, { useEffect, useRef, useState } from 'react'\nimport { useChatStore } from '../../stores/Context'\n\ninterface AuthImageProps {\n path?: string // 图片接口地址(需要鉴权)\n size?: number // 头像大小\n shape?: 'square' | 'circle' // 头像形状\n}\n\nconst AuthImage: React.FC<AuthImageProps> = ({ path, size, shape = 'square' }) => {\n const chatStore = useChatStore()\n const [imgSrc, setImgSrc] = useState<string | null>(null)\n const blobUrlRef = useRef<string | null>(null)\n\n useEffect(() => {\n if (!path) {\n return\n }\n\n const loadAuthImage = async () => {\n try {\n const blob = await chatStore.config.services.request.getAgentAvatar(path)\n const imgUrl = URL.createObjectURL(blob)\n // 清理上一个 blob URL(防止内存泄漏)\n if (blobUrlRef.current) {\n URL.revokeObjectURL(blobUrlRef.current)\n }\n blobUrlRef.current = imgUrl\n\n setImgSrc(imgUrl)\n } finally {\n }\n }\n\n loadAuthImage()\n\n // 组件卸载时清理 blob URL 和 取消请求\n return () => {\n if (blobUrlRef.current) {\n URL.revokeObjectURL(blobUrlRef.current)\n blobUrlRef.current = null\n }\n }\n }, [path]) // 当 path 变化时重新加载\n\n return <Avatar shape={shape} size={size} src={imgSrc} />\n}\n\nexport default AuthImage\n","window._iconfont_svg_string_5021436='<svg><symbol id=\"icon-Ollama\" viewBox=\"0 0 1024 1024\"><path d=\"M686.682353 446.524235a33.912471 33.912471 0 0 0-21.022118 17.648941l-2.710588 5.601883 0.060235 7.830588c0 7.228235 0.180706 8.131765 2.228706 13.251765 2.831059 7.228235 5.722353 11.745882 10.962824 16.865882 9.035294 8.975059 19.215059 11.264 32.828235 7.710118a32.346353 32.346353 0 0 0 22.467765-35.177412c-2.409412-17.046588-12.408471-29.455059-27.286588-33.731765a41.381647 41.381647 0 0 0-17.468236 0z m-346.473412 0.180706a37.948235 37.948235 0 0 0-24.455529 24.094118 45.176471 45.176471 0 0 0-2.228706 19.516235 33.129412 33.129412 0 0 0 22.467765 25.118118c13.673412 3.614118 23.792941 1.204706 32.828235-7.710118a42.887529 42.887529 0 0 0 10.962823-16.865882 25.479529 25.479529 0 0 0 2.228706-13.251765v-7.830588l-2.650353-5.601883a33.852235 33.852235 0 0 0-21.263058-17.769411 37.647059 37.647059 0 0 0-17.889883 0.301176z m157.515294 75.294118c-4.939294 2.650353-8.372706 9.396706-7.348706 14.396235 1.204706 5.421176 5.963294 10.842353 13.312 15.299765 3.975529 2.409412 4.216471 2.710588 4.397177 5.12a45.899294 45.899294 0 0 1-1.084235 9.155765 65.656471 65.656471 0 0 0-1.325177 8.372705 15.661176 15.661176 0 0 0 5.360941 9.517177c2.409412 1.987765 2.831059 2.048 9.637647 2.228706 6.144 0.180706 7.408941 0 9.878589-1.144471 6.384941-3.072 8.011294-8.794353 5.662117-19.757176-1.927529-9.155765-1.566118-10.541176 3.252706-13.372236a33.731765 33.731765 0 0 0 12.227765-11.806117 13.733647 13.733647 0 0 0-6.625883-18.070588 15.058824 15.058824 0 0 0-6.806588-1.204706c-4.698353 0-7.770353 1.084235-13.312 4.638117l-3.252706 1.987765-1.987764-1.204706c-8.252235-4.879059-9.758118-5.421176-14.697412-5.421176a15.058824 15.058824 0 0 0-7.228235 1.204706z m14.697412-82.642824a205.763765 205.763765 0 0 0-24.636235 3.252706 169.381647 169.381647 0 0 0-35.779765 12.348235c-35.418353 17.287529-59.813647 46.140235-67.282823 79.510589-1.505882 6.625882-1.686588 8.854588-1.686589 19.998117 0 11.083294 0.180706 13.432471 1.626353 19.757177 9.938824 43.670588 50.115765 75.896471 102.159059 81.799529 11.324235 1.204706 60.114824 1.204706 71.378824 0 41.803294-4.758588 77.703529-27.407059 93.846588-59.151059a85.534118 85.534118 0 0 0 8.31247-22.64847 68.065882 68.065882 0 0 0 1.626353-19.696941c0-11.203765-0.180706-13.372235-1.686588-19.998118-10.842353-48.549647-57.946353-86.738824-115.651765-93.967059a264.011294 264.011294 0 0 0-32.225882-1.204706z m24.274824 35.237647c19.335529 2.168471 37.948235 8.794353 54.211764 19.395765 8.432941 5.541647 20.239059 17.227294 25.298824 24.877177 6.204235 9.456941 9.758118 19.154824 11.38447 30.900705a44.815059 44.815059 0 0 1-1.626353 18.130824c-3.011765 13.010824-12.468706 26.503529-25.298823 36.020706-8.011294 5.481412-16.745412 9.878588-25.901177 13.131294-14.456471 4.577882-23.853176 5.421176-57.46447 5.180235-21.865412-0.240941-25.780706-0.361412-32.105412-1.566117-21.443765-4.035765-38.430118-12.589176-50.838588-25.6a59.994353 59.994353 0 0 1-16.865882-35.599059c-1.204706-7.228235 0.903529-19.215059 5.12-29.214118 5.12-12.288 18.371765-27.527529 31.442823-36.261647a124.687059 124.687059 0 0 1 53.609412-19.275294 197.571765 197.571765 0 0 1 29.033412-0.120471zM329.487059 60.476235c-9.276235 1.807059-18.070588 5.601882-25.660235 11.264-21.624471 16.384-38.309647 51.2-45.417412 94.629647-2.590118 16.384-4.457412 39.152941-4.457412 56.621177 0 20.48 2.409412 46.622118 5.842824 64.752941 0.722824 4.035765 1.204706 7.589647 0.843294 7.830588l-7.04753 5.722353c-13.552941 11.143529-25.539765 24.094118-35.719529 38.369883a207.088941 207.088941 0 0 0-35.358118 88.064 248.470588 248.470588 0 0 0-0.903529 51.079529c3.433412 29.394824 12.227765 54.211765 27.407059 76.8l4.818823 7.348706-1.325176 2.409412c-10.119529 17.046588-18.733176 41.562353-22.768942 65.234823-3.192471 18.672941-3.614118 23.672471-3.614117 48.730353 0 25.178353 0.361412 30.177882 3.312941 47.585882 3.614118 20.961882 10.842353 43.068235 18.974118 57.825883 2.650353 4.818824 9.155765 14.757647 9.938823 15.299764 0.240941 0.120471-0.602353 2.529882-1.807059 5.300706-9.878588 22.467765-16.865882 46.200471-20.60047 70.475294-2.108235 12.348235-3.011765 24.877176-2.650353 37.345883 0 21.082353 1.204706 31.322353 5.601882 48.188235l0.602353 2.409412h55.657412l-1.867294-3.433412c-11.203765-20.781176-12.227765-59.271529-2.590118-97.761882 4.397176-17.769412 9.396706-30.840471 18.733177-48.790588l5.601882-10.902589v-6.625882c0-6.264471-0.120471-6.987294-2.168471-11.083294a33.912471 33.912471 0 0 0-7.28847-9.396706 64.030118 64.030118 0 0 1-14.456471-20.48c-16.022588-34.635294-19.094588-86.016-7.830588-129.867294 4.638118-18.311529 12.348235-34.575059 20.48-43.489883a30.117647 30.117647 0 0 0 8.372706-19.998117 27.587765 27.587765 0 0 0-8.432941-19.636706 118.241882 118.241882 0 0 1-30.72-65.054118c-5.300706-36.141176 4.216471-75.535059 25.901176-106.736941 21.202824-30.599529 50.959059-50.296471 84.208941-55.536941 7.529412-1.204706 21.504-1.024 29.214118 0.421647 8.553412 1.505882 13.854118 1.024 19.275294-1.566118 6.746353-3.192471 10.119529-7.168 14.095059-16.263529a80.715294 80.715294 0 0 1 13.552941-21.684706c8.794353-10.842353 17.347765-18.371765 30.960941-27.407059 15.540706-10.179765 33.249882-17.588706 50.898824-21.082353 6.384941-1.325176 9.396706-1.566118 21.443764-1.566117 11.986824 0 14.938353 0.240941 21.38353 1.505882 26.985412 5.842824 51.862588 18.793412 72.041412 37.586824 4.457412 4.096 15.058824 17.167059 18.371764 22.64847 1.325176 2.108235 3.614118 6.625882 4.99953 10.059294 3.975529 9.035294 7.348706 13.010824 14.095059 16.143059a29.214118 29.214118 0 0 0 18.913882 1.746824c12.890353-2.228706 22.889412-2.048 35.538823 0.602353 43.008 8.613647 80.534588 44.152471 97.15953 91.738352 14.456471 41.682824 10.360471 85.353412-11.14353 118.66353-3.674353 5.662118-7.288471 10.24-12.589176 15.781647-11.324235 12.107294-11.324235 27.166118 0 39.634823 18.552471 20.299294 30.117647 70.294588 26.624 114.326589-2.288941 29.033412-9.758118 55.055059-20.058353 69.812706a75.294118 75.294118 0 0 1-8.432941 9.637647 33.972706 33.972706 0 0 0-7.288471 9.456941c-2.048 4.096-2.168471 4.818824-2.16847 11.023059v6.686117l5.601882 10.962824c9.336471 17.889882 14.275765 30.960941 18.733177 48.730353 9.517176 37.948235 8.673882 75.655529-2.228706 97.159529a36.141176 36.141176 0 0 0-1.626353 3.674353c0 0.240941 12.348235 0.361412 27.527529 0.361412h27.467294l0.783059-2.770824 1.325177-5.059764a278.287059 278.287059 0 0 0 3.312941-19.395765 337.679059 337.679059 0 0 0 0-47.405177c-4.096-32.948706-11.083294-59.090824-22.467765-83.787294-1.204706-2.770824-1.987765-5.180235-1.686588-5.300706a53.729882 53.729882 0 0 0 4.035764-5.722352c14.155294-21.443765 22.889412-48.368941 27.286589-83.907765 1.144471-9.758118 1.144471-51.802353 0-61.259294a243.049412 243.049412 0 0 0-13.131294-57.404236 226.063059 226.063059 0 0 0-12.408471-26.383058l-1.385412-2.409412 4.939294-7.288471a169.863529 169.863529 0 0 0 27.346824-76.8c1.445647-17.046588 1.204706-34.153412-0.90353-51.139764a207.088941 207.088941 0 0 0-35.358117-88.064 199.619765 199.619765 0 0 0-35.779765-38.369883l-6.987294-5.722353a26.383059 26.383059 0 0 1 0.843294-7.830588c7.830588-40.96 7.589647-91.979294-0.602353-131.915294-7.168-34.755765-20.178824-62.403765-36.924235-78.305882-13.251765-12.769882-26.925176-18.191059-43.248941-17.167059-37.526588 2.228706-67.764706 45.357176-79.691294 113.302588-1.686588 9.035294-2.891294 18.191059-3.614118 27.346823 0 1.325176-0.301176 2.469647-0.602353 2.469648a37.586824 37.586824 0 0 1-5.601882-2.95153 182.994824 182.994824 0 0 0-92.400942-26.202353c-31.322353 0-63.548235 9.155765-92.461176 26.262588a37.707294 37.707294 0 0 1-5.601882 2.95153c-0.301176 0-0.602353-1.144471-0.602353-2.469647a263.589647 263.589647 0 0 0-3.614118-27.346824C409.419294 112.64 384.602353 72.282353 351.593412 62.042353a75.535059 75.535059 0 0 0-22.046118-1.566118z m11.083294 52.826353c9.336471 7.408941 19.696941 28.551529 25.660235 52.224a199.499294 199.499294 0 0 1 4.156236 19.757177c2.529882 13.733647 3.674353 28.611765 3.855058 46.682353l0.060236 17.889882-4.517647 6.625882-4.457412 6.625883h-10.480941c-12.167529 0-24.274824 1.566118-35.900236 4.698353l-8.975058 2.288941c-1.204706 0.240941-1.385412-0.120471-2.108236-5.421177a316.235294 316.235294 0 0 1 0.602353-87.461647c4.638118-29.696 15.540706-56.500706 26.202353-64.451764 2.529882-1.807059 3.011765-1.807059 5.903059 0.542117z m369.844706-0.481882c6.445176 4.758588 13.492706 17.347765 18.793412 33.430588 10.541176 32.165647 13.552941 76.378353 7.951058 118.422588-0.722824 5.240471-0.903529 5.662118-2.108235 5.421177l-9.035294-2.288941a139.264 139.264 0 0 0-35.84-4.638118h-10.480941l-4.457412-6.686118-4.517647-6.625882 0.060235-17.829647c0.180706-25.178353 2.529882-44.815059 8.07153-66.740706 5.903059-23.431529 16.323765-44.574118 25.6-51.983059 2.951529-2.349176 3.373176-2.409412 6.023529-0.481882z\" fill=\"#1E1E1E\" ></path></symbol><symbol id=\"icon-Zhipu\" viewBox=\"0 0 1024 1024\"><path d=\"M511.6512 958.56213333a9.3088 9.3088 0 0 0-9.46453333 9.62026667 9.3088 9.3088 0 0 0 9.46453333 9.6576 9.3088 9.3088 0 0 0 9.50293333-9.6576 9.3088 9.3088 0 0 0-8.53333333-9.5808l-0.97066667-0.03946667z m-89.9872-703.53066666c34.592 11.08266667 53.66933333 48.09066667 42.6272 82.69546666l-2.75413333 6.672-0.6208 1.552-0.6976 2.09386667c-2.71573333 6.20586667-4.03413333 12.41173333-4.03413334 19.31733333-1.35786667 27.53813333 18.22933333 49.60853333 46.00213334 50.96533334h14.19733333c50.77226667 2.05653333 90.6848 45.49866667 88.66773333 97.8624-2.01706667 51.66506667-44.68266667 92.31466667-96.11626666 90.25813333H502.18666667c-27.73333333 0.69866667-49.41546667 24.82453333-48.0576 53.06133333 0 4.81066667 0.6976 8.9216 2.05546666 13.072 8.10666667 14.4672 20.94506667 25.52213333 37.23626667 31.02933334 29.09013333 8.9216 58.84053333-4.848 73.696-30.33173334l0.69866667-1.3568c15.59253333-24.82453333 45.38133333-37.23733333 74.47253333-27.57866666 33.12426667 11.01653333 53.4496 47.55413333 42.6272 84.05333333a64.42666667 64.42666667 0 0 1-80.56213333 42.74346667A66.36586667 66.36586667 0 0 1 569.17333333 743.56266667l-0.6592-1.35786667c-7.75786667-12.528-17.95946667-22.496-33.00906666-27.5776l-2.17173334-0.69866667c-28.93226667-9.70773333-60.69013333 2.416-75.79093333 28.93546667a64.3872 64.3872 0 0 1-41.3088 29.63413333c-34.98346667 7.4944-69.45173333-14.66986667-77.1488-49.6096-8.10666667-35.14133333 12.87786667-70.98133333 48.75626667-79.24266666a58.5696 58.5696 0 0 1 11.48053333-1.35786667h0.69866667c26.37546667-2.75413333 44.64426667-24.12586667 43.2864-51.70346667a50.69546667 50.69546667 0 0 0-8.80426667-26.88 97.55093333 97.55093333 0 0 1-14.19733333-54.4192 92.70293333 92.70293333 0 0 1 14.19733333-46.85546666c5.42933333-7.56373333 8.14506667-17.22133333 8.80426667-26.88 0.69866667-27.5392-19.62666667-48.91093333-46.00213334-51.66506667l-2.71466666-0.69866667a55.46666667 55.46666667 0 0 1-11.59786667-2.71466666l-1.9392-0.736c-33.38453333-11.96586667-51.32586667-48.192-40.61013333-81.99786667 10.7616-34.11626667 47.0144-53.17866667 81.22133333-42.70506667zM205.42293333 647.17653333c10.08426667-10.24 24.78506667-14.23573333 38.55466667-10.47253333 13.7696 3.72266667 24.55253333 14.69973333 28.2368 28.70293333 3.68533333 14.04053333-0.27093333 29.01333333-10.35626667 39.29173334-15.59253333 15.90293333-40.84266667 15.90293333-56.4352 0-15.57973333-15.99466667-15.57973333-41.48906667 0-57.48266667v-0.03946667z m575.80266667-11.40373333c13.92426667-3.4912 28.62506667 0.9312 38.4768 11.52 9.85173333 10.62826667 13.344 25.79413333 9.19253333 39.7568-4.14933333 13.96373333-15.36 24.592-29.32266666 27.85066667-21.3728 4.96426667-42.66666667-8.53333333-47.70986667-30.29333334-5.14773333-21.568 7.904-43.29173333 29.3632-48.87253333v0.0384z m-2.4832-170.27733333c12.1792 12.41173333 19.00586667 29.2064 19.00586667 46.7776 0 17.53173333-6.82666667 34.36586667-19.00586667 46.7776-12.2176 12.41173333-28.70293333 19.39413333-45.96266667 19.39413333-17.2224 0-33.74613333-6.9824-45.92533333-19.39413333-25.38453333-26.0192-25.38453333-67.536 0-93.5552a64.15466667 64.15466667 0 0 1 91.888 0z m-436.0896 6.32213333c14.11946667 18.77333333 17.33866667 43.75253333 8.45653333 65.58933333a64.58133333 64.58133333 0 0 1-84.86826666 35.8016c-33.16266667-13.96373333-48.87253333-52.67413333-35.17973334-86.4192a65.16266667 65.16266667 0 0 1 51.5872-40.26133333c23.0016-3.104 45.88586667 6.55466667 60.00426667 25.2896z m447.80373333-163.72266667c14.27413333 0 27.46133333 7.75786667 34.5984 20.32426667 7.13706667 12.56746667 7.13706667 28.08213333 0 40.65066667a39.79626667 39.79626667 0 0 1-34.5984 20.32426666c-22.03093333 0-39.95093333-18.2304-39.95093333-40.65066666 0-22.4576 17.92-40.64853333 39.95093333-40.64853334z m-556.91306666 0c14.27413333 0 27.42293333 7.75786667 34.56 20.32426667 7.136 12.56746667 7.136 28.08213333 0 40.65066667a39.79626667 39.79626667 0 0 1-34.56 20.32426666c-22.06933333 0-39.95093333-18.2304-39.95093334-40.65066666 0-22.4576 17.88053333-40.64853333 39.95093334-40.64853334z m389.0784-57.21173333c35.87946667 0 64.97066667 29.63306667 64.97066666 66.17173333 0 36.5376-29.0912 66.13333333-64.97066666 66.13333334-35.8784 0-64.93013333-29.59573333-64.93013334-66.13333334 0-36.53866667 29.0912-66.17173333 64.93013334-66.17173333z m-101.856-26.5312c14.0416-3.1808 25.328-13.808 29.51786666-27.8496a41.19253333 41.19253333 0 0 0-9.232-39.87306667 39.44746667 39.44746667 0 0 0-38.63253333-11.40373333c-21.216 5.42933333-34.17173333 27.15093333-29.168 48.75626667 5.04213333 21.64266667 26.18133333 35.17973333 47.51466667 30.37013333z m0 654.58133333c13.92533333-3.37493333 24.9792-13.9648 29.0912-27.92746666a41.19253333 41.19253333 0 0 0-9.19253334-39.52533334 39.48586667 39.48586667 0 0 0-38.20586666-11.67466666 40.22293333 40.22293333 0 0 0-29.55733334 27.8112c-4.1888 14.00213333-0.6592 29.24586667 9.27146667 39.87306666 9.50293333 10.2016 23.50506667 14.624 36.96426667 11.8304l1.6672-0.38826666h-0.0384z m192.54186666-696.23893333a24.47466667 24.47466667 0 0 0 24.3584-24.82453333c0-13.7696-10.82133333-24.82346667-24.3584-24.82346667a24.47466667 24.47466667 0 0 0-24.3584 24.82346667c0 13.77066667 10.8608 24.82453333 24.3584 24.82453333z m-402.61546666 0a24.47466667 24.47466667 0 0 0 24.3584-24.82453333c0-13.7696-10.8608-24.82346667-24.3584-24.82346667a24.47466667 24.47466667 0 0 0-24.3584 24.82346667c0 13.77066667 10.82133333 24.82453333 24.3584 24.82453333zM109.69493333 487.25333333a24.47466667 24.47466667 0 0 0-24.35946666 24.82453334c0 13.7312 10.8608 24.78506667 24.35946666 24.78506666 13.0944-0.05333333 23.8208-10.4192 24.32-23.50506666l0.0384-1.3184a24.048 24.048 0 0 0-24.3584-24.82453334v0.0384zM310.69226667 841.38666667a24.47466667 24.47466667 0 0 0-24.3584 24.82346666c0 13.77066667 10.82133333 24.82453333 24.3584 24.82453334a24.47466667 24.47466667 0 0 0 24.3584-24.82453334c0-13.7696-10.8608-24.82346667-24.3584-24.82346666z m402.61546666 0.6976a24.47466667 24.47466667 0 0 0-24.3584 24.82453333c0 13.7696 10.8608 24.82346667 24.3584 24.82346667a24.47466667 24.47466667 0 0 0 24.3584-24.82346667c0-13.77066667-10.82133333-24.82453333-24.3584-24.82453333zM914.30506667 487.25333333a24.47466667 24.47466667 0 0 0-24.3584 24.82453334c0 13.7312 10.8224 24.78506667 24.3584 24.78506666a24.47466667 24.47466667 0 0 0 24.35946666-24.82346666c0-13.77066667-10.8608-24.82453333-24.35946666-24.82453334v0.0384z m-14.89386667-193.62773333a9.3088 9.3088 0 0 0 9.46453333-9.6576 9.3088 9.3088 0 0 0-9.46453333-9.65866667 9.3088 9.3088 0 0 0-9.46453333 9.65866667c0 5.5072 4.7328 9.6576 9.46453333 9.6576zM511.6512 66.2144a9.3088 9.3088 0 0 0 9.50293333-9.62026667 9.3088 9.3088 0 0 0-9.5424-9.6576 9.3088 9.3088 0 0 0-9.46346666 9.6576c0 5.15946667 4.1888 9.15413333 8.6496 9.5808l0.81386666 0.03946667h0.03946667zM124.5504 293.6256a9.3088 9.3088 0 0 0 9.50293333-9.6576 9.3088 9.3088 0 0 0-9.46453333-9.65866667 9.3088 9.3088 0 0 0-9.46453333 9.65866667 9.3088 9.3088 0 0 0 9.46453333 9.6576h-0.0384z m0 436.86613333a9.3088 9.3088 0 0 0-9.42613333 9.6192 9.3088 9.3088 0 0 0 9.46453333 9.6576 9.3088 9.3088 0 0 0 9.46453333-9.6576 9.77493333 9.77493333 0 0 0-9.46453333-9.6192h-0.0384z m775.5584-0.69866666a9.3088 9.3088 0 0 0-9.50293333 9.6192 9.3088 9.3088 0 0 0 9.504 9.696 9.3088 9.3088 0 0 0 9.46346666-9.696 9.77493333 9.77493333 0 0 0-9.46453333-9.6192z\" fill=\"#3859FF\" ></path></symbol><symbol id=\"icon-lolrai\" viewBox=\"0 0 1024 1024\"><path d=\"M1002.50055111 880.16668445c-1.16508445 12.23338667-4.07779555 25.04931555-12.81592889 34.3699911-17.47626667 19.22389333-46.02083555 15.14609778-68.73998222 14.56355556-54.17642667-1.74762667-139.22759111-13.98101333-226.60892445-57.67168-13.98101333-6.99050667-27.96202667-14.56355555-41.36049777-22.71914666-6.40796445-4.07779555-13.39847111-8.15559111-19.80643556-12.8159289-5.82542222-3.49525333-12.23338667-6.99050667-16.31118222-12.81592888-2.91271111-4.07779555-4.07779555-9.90321778-2.33016889-15.14609778 1.16508445-4.07779555 4.07779555-6.99050667 7.57304889-9.32067556 3.49525333-2.33016889 20.97152-11.65084445 25.63185778-14.56355555 8.73813333-5.24288 18.05880889-11.06830222 26.2144-17.47626667 16.89372445-11.65084445 33.78744889-25.04931555 49.51608889-38.44778666 33.20490667-29.12711111 63.49710222-62.91456 88.54641778-99.03217778 8.15559111-12.23338667 14.56355555-25.63185778 26.2144-34.95253334 13.98101333-10.48576 31.45728-13.39847111 47.18592-5.82542222 11.06830222 5.24288 19.22389333 13.98101333 27.37948444 22.71914667 24.46677333 27.37948445 46.60337778 58.25422222 61.16693333 92.04167111 0 0.58254222 0.58254222 0.58254222 0.58254223 1.16508444 13.98101333 31.45728 23.30168889 65.82727111 27.37948444 100.19726222l1.74762666 19.22389334c1.16508445 16.89372445 0.58254222 33.78744889-1.16508444 50.68117333 0.58254222 2.33016889 0.58254222 4.07779555 0 5.82542223zM768.31857778 435.10442667c0.58254222 6.99050667-0.58254222 13.98101333-2.33016889 20.38897778-24.46677333 121.16878222-91.45912889 233.59943111-186.41351111 312.82517333-4.66033778 4.07779555-10.48576 8.15559111-16.89372445 7.57304889-6.40796445-0.58254222-11.65084445-5.82542222-15.72864-9.90321778l-13.39847111-13.39847111c-9.32067555-9.32067555-18.64135111-19.22389333-27.37948444-29.12711111-17.47626667-19.80643555-33.20490667-41.36049778-47.76846223-63.49710222-14.56355555-22.13660445-26.79694222-45.43829333-37.86524444-69.90506667-11.06830222-23.88423111-20.38897778-48.93354667-27.37948444-74.56540445-7.57304889-25.63185778-12.81592889-51.26371555-16.31118222-77.47811555-0.58254222-4.66033778-1.16508445-8.73813333-1.74762667-13.39847111-8.73813333-81.55591111 1.16508445-164.85944889 29.12711111-241.75502222 13.98101333-39.03032889 32.03982222-76.31303111 54.75896889-111.26556445 9.32067555-14.56355555 15.72864-22.13660445 33.20490667-24.46677333 16.89372445-2.33016889 34.95253333 4.07779555 44.27320888 19.22389333 8.73813333 13.98101333 8.73813333 31.45728 9.90321778 48.35100445 6.99050667 114.17827555 76.89557333 222.53112889 178.25792 275.5424711 17.47626667 8.73813333 37.28270222 18.64135111 42.52558222 37.28270223 0.58254222 2.33016889 1.16508445 5.24288 1.16508445 7.57304889zM652.39267555 974.53852445c-2.91271111 2.91271111-6.99050667 3.49525333-10.48576 1.16508444-4.07779555-2.33016889-6.99050667-5.82542222-10.48576-8.73813334-3.49525333-2.91271111-7.57304889-6.40796445-11.06830222-9.32067555-8.15559111-6.40796445-15.72864-12.81592889-24.46677333-18.64135111-6.99050667-5.24288-14.56355555-10.48576-22.71914667-15.14609778-38.44778667-23.88423111-79.80828445-41.94304-121.16878222-53.01134222-44.85575111-12.23338667-90.29404445-16.89372445-135.14979556-15.14609778-6.40796445 0-13.39847111 0.58254222-19.80643555 1.16508444l-15.72864 1.74762667c-4.07779555 0-7.57304889-1.16508445-9.90321778-4.07779555-1.74762667-2.91271111-2.33016889-6.40796445 0-9.32067556 1.74762667-1.74762667 3.49525333-2.91271111 5.82542223-4.07779556 2.33016889-1.16508445 4.07779555-2.33016889 6.40796444-2.9127111 4.66033778-2.33016889 9.32067555-4.07779555 13.98101333-6.40796445 9.32067555-4.07779555 19.22389333-7.57304889 29.12711111-10.48576 1.16508445-0.58254222 2.33016889-0.58254222 4.07779556-1.16508445 2.33016889-0.58254222 5.24288-1.16508445 7.57304889-1.74762666 70.48760889-16.89372445 147.38318222-6.99050667 213.21045333 34.36999111 5.82542222 3.49525333 11.06830222 7.57304889 16.89372444 11.06830222 6.40796445 4.66033778 12.81592889 9.90321778 19.22389334 15.14609778 8.73813333 7.57304889 17.47626667 15.72864 25.04931556 24.46677333 13.98101333 15.14609778 39.03032889 53.01134222 41.94304 65.24472889 0.58254222 2.33016889-0.58254222 4.07779555-2.3301689 5.82542223zM473.55221333 749.09468445c-0.58254222 3.49525333-4.07779555 5.82542222-7.57304888 5.24288 0 0-58.25422222-8.73813333-113.59573334-31.45728C191.60177778 658.21809778 64.60757333 517.82542222 22.08199111 336.65479111c-0.58254222-2.91271111-1.16508445-5.82542222-1.74762666-8.15559111v-0.58254222c-1.74762667-8.73813333-1.74762667-18.05880889 1.74762666-26.2144 5.82542222-13.98101333 17.47626667-24.46677333 33.20490667-27.96202667 11.06830222-2.33016889 23.30168889-0.58254222 33.20490667 5.24288 2.91271111 1.74762667 5.82542222 4.07779555 8.73813333 6.99050667 5.24288 5.24288 8.73813333 11.06830222 13.39847111 16.31118222 4.66033778 5.24288 9.90321778 10.48576 15.14609778 15.14609778 11.06830222 9.90321778 23.88423111 19.22389333 36.70016 26.2144 8.73813333 4.66033778 18.05880889 9.32067555 27.37948444 12.81592889 9.32067555 3.49525333 19.22389333 6.40796445 29.12711111 8.73813333 5.82542222 1.16508445 11.65084445 2.33016889 18.05880889 2.91271111 6.40796445 0.58254222 12.23338667 1.16508445 18.64135111 1.16508444 3.49525333 0 6.99050667 0.58254222 9.32067556 2.3301689 3.49525333 1.74762667 5.24288 5.82542222 6.40796444 9.32067555 1.16508445 3.49525333 2.91271111 17.47626667 3.49525333 20.97152 1.16508445 8.15559111 5.24288 26.79694222 5.24288 28.54456889 6.40796445 28.54456889 14.56355555 57.08913778 25.63185778 84.46862222 10.48576 26.79694222 22.71914667 52.4288 37.28270222 76.89557334 14.56355555 25.04931555 30.87473778 48.93354667 49.5160889 71.0701511 20.97152 24.46677333 68.15744 69.90506667 75.14794666 76.31303112 2.33016889 2.91271111 6.40796445 5.82542222 5.82542222 9.90321778z\" fill=\"#2b84ad\" ></path></symbol><symbol id=\"icon-reason\" viewBox=\"0 0 1024 1024\"><path d=\"M638.06472596 110.87954931c49.79829823-19.09314497 98.52342423-29.73683863 142.61151416-28.58340504 44.38583372 1.16249537 86.51917085 14.49235595 117.92466931 45.89785443 31.40420393 31.40420393 44.73535905 73.53883559 45.89785442 117.92337477 1.1534336 44.08808992-9.49155461 92.81321591-28.58340503 142.61151416-15.38558736 40.12939188-36.72605076 82.1643441-63.34305217 124.6860427 26.8707309 42.81814787 48.39501875 85.15602205 63.88675824 125.55985604 19.09185043 49.79829823 29.73683863 98.52342423 28.58340503 142.61151416-1.16249537 44.38583372-14.49235595 86.51917085-45.89655987 117.9246693-31.40549847 31.40420393-73.53883559 44.73406451-117.92466932 45.89655989-44.08808992 1.15472814-92.81321591-9.48896553-142.61151415-28.5821105-40.43878653-15.50468489-82.81679138-37.05356895-125.67248087-63.95795785-42.35729225 26.47719127-84.22654356 47.71538615-124.20447448 63.04271929-49.79829823 19.09185043-98.52342423 29.73683863-142.61151414 28.58340504-44.38453918-1.16249537-86.51917085-14.49365049-117.92466932-45.89785441-31.40290939-31.40549847-44.73406451-73.53754107-45.89655988-117.92337479-1.1534336-44.08808992 9.49155461-92.81321591 28.58340504-142.61151415 15.38170373-40.1164465 36.7105163-82.13845333 63.31586686-124.64461748-26.35162107-42.20971488-47.49660918-83.93138883-62.77216078-123.77339322-19.09185043-49.79829823-29.7355441-98.52342423-28.58211051-142.61151416 1.16249537-44.38453918 14.49235595-86.51917085 45.89655988-117.92337477 31.40549847-31.40549847 73.53883559-44.73535905 117.92466932-45.89655988 44.08808992-1.15472814 92.81321591 9.49026007 142.61151415 28.58340503 39.80705185 15.26131168 81.48859511 36.38299813 123.6607684 62.7009612 42.67057051-26.74516069 84.85827824-48.17753632 125.12618571-63.61619976z m162.61471953 477.2341229c-29.31740823 38.36364169-62.59739813 76.44766309-99.35581234 113.20607732-36.89692981 36.89692981-75.13241221 70.28824999-113.64363125 99.68721415 27.83775099 15.72864 54.89489541 28.60670672 80.59018557 38.45814297 43.31395603 16.60633695 80.89440205 23.90235465 110.78270165 23.11915898 29.59055582-0.77413389 49.10830933-9.25724318 61.50869145-21.65762528 12.39908756-12.4003821 20.88478594-31.91813563 21.65891981-61.50869143 0.78319565-29.88829962-6.51411659-67.46874563-23.12045353-110.78399621-9.84366901-25.67328301-22.70879037-52.70712573-38.42060136-80.5202805z m-574.6092917 0.13592653c-15.44254704 27.44421136-28.10960403 54.12205605-37.82899736 79.47170449-16.60633695 43.31395603-23.90235465 80.89440205-23.119159 110.78270167 0.77542843 29.59055582 9.25983227 49.10701479 21.65891982 61.50739689 12.4003821 12.39908756 31.91813563 20.88478594 61.50869144 21.65891983 29.88829962 0.78319565 67.46874563-6.51282205 110.78270168-23.11915899 25.26938706-9.68832443 51.85402501-22.30618896 79.2050296-37.68142002-38.04518526-29.14264557-75.8016885-62.1805568-112.2584753-98.63734359-37.00567103-37.00567103-70.48760889-75.3550728-99.94871088-113.98280028z m286.96029867-314.09123177c-43.03433577 30.77894195-86.6796936 67.60337762-128.97225891 109.89594295-42.43755362 42.43884816-79.37073051 86.2369615-110.21310484 129.41628555 30.95241008 43.42528631 68.06941139 87.49136909 110.75810544 130.1787686 42.11391905 42.1152136 85.56897975 78.80631182 128.42725831 109.50499239 43.27253081-30.88379955 87.17550175-67.88558697 129.7088512-110.41893641 42.38836116-42.38836116 79.2827019-86.13598752 110.10306909-129.26482458-30.71033141-42.88287478-67.42084773-86.36382625-109.55936301-128.50234152-42.71199573-42.71199573-86.80396926-79.84712059-130.25255728-110.80988698z m0.44661571 126.92559392c62.07181558 0 112.39181275 50.31999715 112.39181274 112.39310728 0 62.07181558-50.31999715 112.39181275-112.39181274 112.39181274-62.07311013 0-112.39310729-50.31999715-112.39310728-112.39181274 0-62.07311013 50.31999715-112.39310729 112.39310728-112.39310728z m0 82.85044938c-16.31506583 0-29.5426579 13.22759205-29.5426579 29.5426579 0 16.31506583 13.22629751 29.54136336 29.5426579 29.54136335 16.31506583 0 29.54136336-13.22629751 29.54136335-29.54136335 0-16.31636037-13.22629751-29.5426579-29.54136335-29.5426579z m265.03082034-318.81629646c-29.88829962-0.78190112-67.47004018 6.51411659-110.78399621 23.12045354-25.50110942 9.77764756-52.34594955 22.53661677-79.96362903 38.10473402 38.66915271 29.48440368 77.06127423 62.99482137 114.10707595 100.04062309 36.49562295 36.49562295 69.5646031 74.29614048 98.72925582 112.38275097 15.50080126-27.52447273 28.21187255-54.27740065 37.9584512-79.69824868 16.60633695-43.31395603 23.90235465-80.89569659 23.119159-110.78399621-0.77413389-29.59055582-9.25853772-49.10830933-21.65762529-61.50869144-12.4003821-12.39908756-31.91813563-20.88219685-61.50869144-21.65762529z m-418.89057754 24.03310302c-43.31395603-16.60633695-80.89440205-23.90106011-110.78270167-23.119159-29.59055582 0.77542843-49.10830933 9.25983227-61.50869143 21.65891982-12.39908756 12.4003821-20.88349139 31.91813563-21.65762528 61.50869145-0.78319565 29.88829962 6.51282205 67.46874563 23.11915898 110.78270166 9.62230297 25.09591893 22.13401537 51.49155429 37.36555268 78.64449454 29.30964101-38.34681268 62.57798005-76.4140051 99.3208598-113.15688485 36.60436417-36.60306963 74.52009561-69.76007838 112.72062546-98.98816348-27.12963856-15.21600285-53.50197223-27.71606439-78.57717854-37.33060014z\" ></path></symbol><symbol id=\"icon-MiniMax\" viewBox=\"0 0 1169 1024\"><path d=\"M478.75435244 475.68580947V806.78782724c-22.36074786 112.12453565-171.10955566 83.20989638-171.75290449 1.92740802-0.70574941-102.1640625 0-203.68653398 0-305.07980889V386.05034023c0-14.71351641-3.21234697-26.34388242-16.06261377-35.53268994-25.05982237-18.76168916-55.13020401 3.27738516-55.77267304 30.32877568-1.41413555 36.30347666-0.70750723 71.8361666-1.41413643 107.6254919 0 28.27216933 0 55.70939268 0.64246992 83.91652471C215.95360098 696.59245742 65.46986211 675.96664062 62 573.0950709V486.99450195c0-28.14385166 55.13020401-34.76190146 52.43200752 7.3888374-1.79909033 20.88245302-0.64334795 42.40825489-1.34997627 63.09823096-0.64159013 36.94594658 55.83771123 61.81241308 69.13797012 1.41325664 0.64246904-49.79709229 0.64246904-99.59418457 0.64246991-149.84126982 0-62.96903349 17.86258301-114.2444206 84.62315304-118.99922168 28.91463926-2.56987793 48.1263205 9.50960214 66.56721415 30.39205518 7.06892168 7.38971631 23.77400537 30.84292617 24.41735333 56.3518626 0 23.51736914 0.64159013 46.90554083 0.64159013 70.68042421 0 46.90466192-0.64159013 94.067717-0.64159013 140.97413672 0 30.39205518 0.64159013 60.46243594 0.64159013 90.14786279 0 37.65345381 0 75.82105898-0.64159013 113.53779317-0.64246904 49.02630469 58.98502002 48.31967637 68.55966034-0.7707876 0-57.82927852 0.64159013-114.9510498 0.64159015-172.78032832 0-142.45155263-0.64159013-284.90398418-0.64159015-427.29225644 0-14.77855459-2.05660547-55.77267305 5.78310294-70.6795462C474.44866455 19.15811826 600.77256523 63.42874297 601.92918565 147.40942695c2.44155938 172.07369912 0 346.07480713 0.64246992 518.53346016 0 59.8208458-48.5763126 46.97057813-51.2745082 23.58152753 0-179.4625374 0-359.63170224 0.64159013-538.83760253-2.37652119-44.97813193-69.07293281-38.87335459-72.92862773-6.61805068-1.28493896 37.01010498-0.64159013 74.66355878-1.28493897 111.61038427v219.74914863h0.64246904l0.44999297 0.25751515z\" fill=\"#D4367A\" ></path><path d=\"M674.02374628 473.05089424v243.13907724-573.79286073c21.7173999-112.89356543 170.40292734-83.52981299 171.0453964-2.18404424 0.70662832 101.45831308 0 203.62237559 0.70662831 305.01564961 0 38.93839278 0 78.00510322-0.64246904 116.94349599 0 15.42102364 3.79065761 26.27972403 16.7059626 36.17515898 24.41647442 18.3125751 54.42357568-3.21234697 55.77267305-30.71372958 1.34997714-35.59684834 0.64334795-71.19369667 0.64334795-107.69053008v-83.40237334c18.6333706-124.20313594 168.66799629-103.57731914 171.81618486-0.70662832V687.46956787c0 28.27129131-54.48773408 34.95350039-52.04617471-7.3255579 1.47741592-21.52492295 0-268.00554463 0.7707876-289.59462599 1.28493896-36.30347666-55.9009916-61.87745127-69.13797099-0.7707876v149.07048135c0 63.86901856-17.92674229 114.30857989-85.26562296 119.77001016-63.48230596 1.47741592-88.99212129-42.40825489-91.04872587-86.74391777V270.52098066c0-38.36008213 0-75.82018008 0.64334795-113.47363388 0.64159013-49.02542578-58.98589893-49.02542578-69.13797012 0.70750723v674.67198515c0 14.64935713 2.05660547 55.70851377-5.20479316 70.67954532-41.57242911 101.3932749-168.53967773 57.05761201-169.69629903-26.8589127v-79.86747392c3.14906661-53.78110576 48.5763126-40.99499737 50.63291807-18.24841583V872.90680625c2.44155938 45.10645049 69.13797012 39.64502109 72.28615869 6.68220908 1.34909825-37.01010498 1.34909825-73.95693047 1.34909737-111.67366377V473.11505263h-0.19335586v-0.06415839z\" fill=\"#ED6D48\" ></path></symbol><symbol id=\"icon-Kimi\" viewBox=\"0 0 1024 1024\"><path d=\"M696.5 206m0 0l166.5 0q0 0 0 0l0 166.5q0 0 0 0l-166.5 0q0 0 0 0l0-166.5q0 0 0 0Z\" fill=\"#1683FF\" ></path><path d=\"M282.5 305m0 0l418.5 0q0 0 0 0l0 423q0 0 0 0l-418.5 0q0 0 0 0l0-423q0 0 0 0Z\" fill=\"#FFFFFF\" ></path><path d=\"M704.8835 62C846.8855 62 962 177.1145 962 319.121v385.7625c-0.0315 141.9885-115.128 257.085-257.1165 257.1165H319.0625C177.083 961.9685 62 846.863 62 704.8835V319.0625C62.0315 177.083 177.137 62 319.121 62h385.7625z m-393.75 642.8835h72.279V621.35l64.296-63.675 172.8 127.2915c0.504 0.396 28.4625 19.9125 68.2875 19.9125V621.35c-23.9625 0-36-7.875-36.171-7.929l-152.6625-111.375 188.8335-182.925h-108.5625l-196.875 190.9125V319.058H311.1875v385.7625l-0.054 0.0585zM765.125 230.75c-24.417 0-44.2125 19.7955-44.2125 44.2125v44.1585h44.2125c25.02 0.891 45.7875-19.152 45.7875-44.19 0-25.0335-20.7675-45.072-45.7875-44.181z\" fill=\"#000000\" ></path></symbol><symbol id=\"icon-Claude\" viewBox=\"0 0 1024 1024\"><path d=\"M246.752 655.856l171.696-96.288 2.928-8.352-2.928-4.656h-8.352l-28.752-1.728-98.16-2.64-85.104-3.552-82.416-4.416-20.784-4.416-19.488-25.632 2.016-12.816 17.472-11.664 24.96 2.16 55.296 3.744 82.848 5.76 60.096 3.552 89.088 9.264h14.16l2.016-5.712-4.896-3.552-3.744-3.552-85.776-58.08-92.832-61.392-48.576-35.376-26.352-17.856-13.248-16.8-5.76-36.672 23.856-26.256 32.064 2.16 8.208 2.208 32.496 24.96 69.408 53.712L398.816 388.64l13.296 11.04 5.28-3.744 0.672-2.64-5.952-9.984-49.296-88.992-52.608-90.576-23.424-37.536-6.192-22.512c-2.352-8.64-3.648-17.568-3.792-26.496l27.216-36.864 15.024-4.896 36.24 4.896 15.264 13.248 22.56 51.456 36.432 81.072L486.08 336.32l16.608 32.688 8.832 30.288 3.312 9.264h5.76v-5.328l4.656-62.064 8.64-76.224 8.352-98.016 2.928-27.648 13.68-33.12 27.168-17.904 21.264 10.176 17.472 24.912-2.448 16.128-10.416 67.344-20.352 105.6-13.248 70.656h7.728l8.832-8.784 35.808-47.52 60.096-75.072 26.544-29.808 30.912-32.88 19.92-15.696h37.584l27.648 41.088-12.384 42.432-38.688 49.008-32.064 41.52-45.984 61.824-28.752 49.488 2.64 3.984 6.816-0.72 103.872-22.032 56.112-10.176 66.96-11.472 30.288 14.112 3.312 14.352-11.952 29.376-71.616 17.664-84 16.8-125.088 29.568-1.536 1.104 1.776 2.208 56.352 5.328 24.096 1.296h58.992l109.872 8.208 28.752 19.008 17.232 23.232-2.88 17.664-44.208 22.56-59.664-14.16-139.296-33.12-47.712-11.952h-6.624v3.984l39.744 38.832 72.96 65.856 91.248 84.768 4.608 21.024-11.712 16.56-12.384-1.776-80.208-60.288-30.96-27.168-70.08-58.944h-4.656v6.192l16.128 23.616 85.296 128.064 4.416 39.264-6.192 12.864-22.128 7.728-24.288-4.416-49.968-70.032-51.456-78.816-41.568-70.704-5.088 2.928-24.528 263.904-11.472 13.44-26.496 10.176-22.08-16.752-11.712-27.168 11.712-53.712 14.16-69.984 11.472-55.68 10.416-69.12 6.192-22.992-0.432-1.536-5.088 0.672-52.176 71.568-79.296 107.136-62.784 67.104-15.072 5.952-26.064-13.44 2.448-24.096 14.592-21.408 86.88-110.448 52.368-68.448 33.84-39.504-0.24-5.76h-2.016l-230.736 149.712-41.088 5.328-17.712-16.608 2.208-27.12 8.4-8.832 69.408-47.712-0.24 0.24z\" fill=\"#D97757\" ></path></symbol><symbol id=\"icon-create\" viewBox=\"0 0 1024 1024\"><path d=\"M739.16 185.54a33.54 33.54 0 1 1 67.02 0v92.28h92.28a33.54 33.54 0 0 1 0 67.08h-92.22v91.98a33.54 33.54 0 0 1-67.02 0V344.9h-92.16a33.54 33.54 0 0 1 0-67.08h92.04V185.6h0.06z m-501.9 63.6h276.06a33.54 33.54 0 0 0 0-66.96H237.26a139.8 139.8 0 0 0-102.72 42.6A139.8 139.8 0 0 0 92 327.32v335.16c0 40.14 14.16 74.4 42.6 102.72 24.72 24.78 54 38.7 87.78 41.82v60.3a33.54 33.54 0 0 0 48.48 29.94l179.16-89.52h308.58c40.14 0 74.4-14.22 102.66-42.54 28.38-28.38 42.6-62.58 42.6-102.72V551.24a33.54 33.54 0 0 0-67.02 0v111.3c0 21.6-7.68 40.02-22.92 55.32a75.36 75.36 0 0 1-55.32 22.86H442.04a33.54 33.54 0 0 0-15 3.6L289.4 813.08v-38.88a33.54 33.54 0 0 0-33.54-33.54h-18.6c-21.6 0-40.08-7.62-55.32-22.86a75.36 75.36 0 0 1-22.92-55.32V327.38c0-21.6 7.62-40.02 22.92-55.26 15.24-15.3 33.72-22.92 55.32-22.92z\" ></path></symbol><symbol id=\"icon-history\" viewBox=\"0 0 1024 1024\"><path d=\"M707.552 453.104c-123.648 0-223.824 97.776-223.824 218.352 0 120.576 100.176 218.352 223.824 218.352 123.6 0 223.824-97.728 223.824-218.352 0-120.576-100.224-218.352-223.824-218.352z m0 387.168c-95.568 0-173.088-75.6-173.088-168.816 0-93.264 77.52-168.816 173.088-168.816 95.52 0 173.04 75.6 173.04 168.816 0 93.264-77.472 168.816-173.04 168.816z\" ></path><path d=\"M785.744 142.4a144 144 0 0 1 144 144v355.68l-0.096 2.88a215.232 215.232 0 0 0-57.504-121.44v-35.76V286.4a86.4 86.4 0 0 0-86.352-86.4H238.4a86.4 86.4 0 0 0-86.4 86.4v355.68a86.4 86.4 0 0 0 86.4 86.4h71.136v108.24l135.888-108.24h46.08c5.664 20.544 14.352 39.888 25.536 57.6H465.536l-135.696 108.096a48 48 0 0 1-77.952-37.536v-70.56h-13.44a144 144 0 0 1-144-144V286.4a144 144 0 0 1 144-144h547.296z\" ></path><path d=\"M696.512 573.152a24.96 24.96 0 0 1 24.96 24.96v87.84h59.808a23.52 23.52 0 0 1 0 47.04h-99.456a10.08 10.08 0 0 1-10.224-10.08v-124.8c0-13.776 11.136-24.96 24.912-24.96zM536.864 393.008a33.6 33.6 0 0 0 4.608-66.912l-4.56-0.288h-230.4a33.6 33.6 0 0 0-4.56 66.912l4.512 0.288h230.4z m-115.2 133.392a33.6 33.6 0 0 0 4.608-66.912L421.712 459.2h-115.2a33.6 33.6 0 0 0-4.56 66.864l4.56 0.336h115.2-0.048z\" ></path></symbol><symbol id=\"icon-project\" viewBox=\"0 0 1024 1024\"><path d=\"M410.67 544H133.33A69.33 69.33 0 0 0 64 613.33v277.34A69.33 69.33 0 0 0 133.33 960h277.34A69.33 69.33 0 0 0 480 890.67V613.33A69.33 69.33 0 0 0 410.67 544zM402 842a40 40 0 0 1-40 40H182a40 40 0 0 1-40-40V662a40 40 0 0 1 40-40h180a40 40 0 0 1 40 40zM890.67 544H613.33A69.33 69.33 0 0 0 544 613.33v277.34A69.33 69.33 0 0 0 613.33 960h277.34A69.33 69.33 0 0 0 960 890.67V613.33A69.33 69.33 0 0 0 890.67 544zM882 842a40 40 0 0 1-40 40H662a40 40 0 0 1-40-40V662a40 40 0 0 1 40-40h180a40 40 0 0 1 40 40zM410.67 64H133.33A69.33 69.33 0 0 0 64 133.33v277.34A69.33 69.33 0 0 0 133.33 480h277.34A69.33 69.33 0 0 0 480 410.67V133.33A69.33 69.33 0 0 0 410.67 64zM402 362a40 40 0 0 1-40 40H182a40 40 0 0 1-40-40V182a40 40 0 0 1 40-40h180a40 40 0 0 1 40 40zM694.49 456.18a81.35 81.35 0 0 0 115 0l126.69-126.67a81.35 81.35 0 0 0 0-115L809.51 87.82a81.35 81.35 0 0 0-115 0L567.82 214.49a81.35 81.35 0 0 0 0 115z\" ></path></symbol><symbol id=\"icon-Doubao\" viewBox=\"0 0 1024 1024\"><path d=\"M943.57048924 444.46151111c-143.81511147-96.0284448-295.36711147-110.4099552-295.36711146-110.4099552s7.64586667 219.3635552-10.0124448 285.80977707c-0.45511147 9.10222187-11.01368853 70.2691552-40.1408 147.18293333-10.0124448 26.30542187-22.48248853 51.65511147-36.81848854 76.00355627a689.9939552 689.9939552 0 0 1-83.64942186 119.0115552c111.86631147-45.42008853 191.64728853-86.47111147 289.1776-163.93102187 114.688-90.3395552 214.08426667-237.568 176.81066666-353.6668448z\" fill=\"#37E1BE\" ></path><path d=\"M356.20408924 403.36497778c147.6835552-94.16248853 288.1763552-73.59146667 291.54417707-69.76853333 0.45511147 0.45511147 0.91022187 0.45511147 0.91022293 0.45511146 0-13.38026667-6.18951147-56.88888853-12.37902293-99.39626666-11.01368853-56.88888853-21.02613333-116.59946667-21.5267552-124.7004448-159.1523552-130.0252448-333.14133333-73.18186667-418.15608853 23.84782186C139.20711111 199.33866631 100.02204444 292.49991111 100.97777778 343.15377778v402.8643552c0.45511147-11.92391147 1.36533333-19.11466667 1.8659552-19.11466667 16.74808853-184.00142187 253.3148448-323.584 253.3148448-323.584z\" fill=\"#A569FF\" ></path><path d=\"M787.74044444 288.17635591c-39.1395552-40.64142187-81.6924448-82.69368853-114.23288853-117.1000896-31.03857813-32.49493333-55.38702187-56.88888853-58.70933333-61.16693333 0.45511147 8.14648853 10.4675552 67.85706667 21.48124373 124.74595627 6.18951147 42.55288853 11.92391147 86.47111147 12.42453333 99.39626666 0 0 151.50648853 14.336 295.36711147 110.4099552-0.45511147 0-77.91502187-75.04782187-156.2851552-156.2851552zM561.73226631 843.04782258c-2.41208853 0.95573333-185.45777813 99.89688853-272.93013333-28.672-19.56977813-28.672-29.58222187-63.57902187-31.03857707-99.39626667-2.8672-69.76853333 4.77866667-212.67342187 98.44053333-311.61457813 0 0-236.5667552 139.53706667-252.81422293 323.584-0.45511147 0.45511147-1.91146667 7.6003552-1.91146667 19.11466667-0.95573333 30.5379552 4.2780448 91.7504 40.1408 144.7708448 48.7424 73.1363552 180.17848853 129.52462187 306.3352896 79.82648853l31.08408854-9.10222187c-0.95573333 0.45511147 44.4643552-48.69688853 82.69368853-118.51093333z\" fill=\"#1E37FC\" ></path></symbol><symbol id=\"icon-AIbianji\" viewBox=\"0 0 1024 1024\"><path d=\"M927.87039969 563.39199969a32.64 32.64 0 0 1 32.12800031 33.024v330.49600031a32.64 32.64 0 0 1-32.12800031 33.024 32.64 32.64 0 0 1-32.19199969-33.024V596.41599969a32.64 32.64 0 0 1 32.19199969-33.024zM382.0784 893.82399969c16.63999969 0 30.20800031 14.84800031 30.20800031 33.08800031 0 18.24-13.56799969 33.024-30.20800031 33.024H140.41440031c-16.63999969 0-30.20800031-14.784-30.20800031-33.024 0-18.24 13.56799969-33.08800031 30.20800031-33.08800031h241.728z m329.088-312.192l151.03999969 330.49600031c7.488 16.32 1.40800031 36.16000031-13.44 44.352-14.976 8.12800031-33.08800031 1.536-40.57599938-14.784l-124.032-271.36000031-124.032 271.36000031a29.31199969 29.31199969 0 0 1-35.45600062 16.96000031l-5.11999969-2.17600031c-14.84800031-8.19199969-20.928-28.032-13.44-44.352l151.03999969-330.49600031c11.136-24.31999969 42.88000031-24.31999969 54.01600031 0z m46.20799969-493.11999938l42.68800031 42.36799969c35.39200031 35.136 32.448 94.97599969-6.528 133.69600031l-510.97600031 506.88a35.83999969 35.83999969 0 0 1-17.28 9.6l-165.43999969 37.11999938a28.54399969 28.54399969 0 0 1-35.07199969-34.68799969l37.248-164.352a35.39200031 35.39200031 0 0 1 9.6-17.21599969l444.79999969-441.408 6.912-7.42400062 59.26399969-58.04799938C661.75839969 56.31999969 722.04639969 53.37600031 757.4384 88.51200031zM186.2384 612.67200031l-24.44800031 24.31999969-24.83199938 109.44 110.33599969-24.70399969 16.19200031-16.19200031-77.24800031-92.80000031z m373.248-370.30400062L231.03840031 568.32000031l77.31199969 92.79999938 332.47999969-329.856-81.27999938-88.896z m105.85600031-104.95999969l-61.12000031 60.48 81.28000031 88.96000031 65.28-64.64000062c11.52-11.52 13.632-28.54399969 5.63199938-40.38399938l-3.456-4.224-42.68799938-42.36800062c-11.83999969-11.712-31.93600031-10.752-44.928 2.17600031z\" ></path></symbol><symbol id=\"icon-DeepSeek\" viewBox=\"0 0 1391 1024\"><path d=\"M1299.71873948 130.41498185c-12.94676356-6.47485468-18.53640721 5.86654827-26.09973268 12.13814317-2.57756953 2.02376031-4.77807747 4.65435413-6.9785854 7.08168819-18.91788751 20.63528526-41.02017805 34.19182812-69.92725219 32.57311445-42.23384508-2.42733405-78.29772513 11.12773591-110.16384908 44.10589701-6.77679853-40.66668282-29.28560862-64.94444203-63.55255448-80.5232723-17.95608583-8.09209545-36.06388005-16.1856638-48.63358202-33.78825438-8.74900746-12.5431898-11.12773591-26.50330641-15.52727889-40.26016326-2.7823022-8.29535522-5.56460442-16.79249731-14.92044537-18.20942412-10.19244639-1.61871367-14.16337637 7.08168818-18.15934561 14.36516325-15.93232553 29.74073376-22.12880269 62.51710799-21.49692993 95.69705596 1.36684831 74.65672404 32.27117059 134.13819156 93.62469003 176.42358804 6.9800583 4.8546681 8.77551959 9.71080912 6.57501167 16.7910244-4.17271686 14.56695011-9.18056624 28.7303265-13.55506996 43.29727663-2.78377509 9.30723537-6.95501906 11.32952278-16.74241882 7.28347506-33.66158524-14.36516325-62.745407-35.60875491-88.46513227-61.30196805-43.62425973-43.09548975-83.0772755-90.64060097-132.26613965-127.86659668a581.67054343 581.67054343 0 0 0-35.07703915-24.481019c-50.20074429-49.77065841 6.57501167-90.63912807 19.72650787-95.49526908 13.73181759-5.05792788 4.77955037-22.4572587-39.65480261-22.25547183s-85.07599655 15.3770434-136.87041529 35.60875492c-7.58541892 3.03416756-15.55379103 5.25971475-23.69596497 7.08168819-47.03990759-9.10544849-95.84876434-11.12773591-146.85960188-5.26118764-96.02551195 10.92594905-172.73103555 57.25739323-229.12678414 136.36373875-67.72674425 95.09022244-83.68558192 203.13015422-64.13582166 315.82149433 20.48504978 118.76262107 79.88992666 217.09027084 171.13736116 293.9710692 94.6350973 79.71317902 203.61031862 118.76262107 327.93607115 111.27735912 75.51542292-4.45256725 159.57953934-14.77020989 254.41642352-96.71040901 23.92426399 12.13961607 49.03715574 16.99575708 90.66564022 20.63675815 32.09295007 3.03416756 62.97223311-1.61871367 86.87145787-6.67664152 37.45429471-8.09209545 34.84874013-43.49906349 21.3187094-49.97244528-109.7838417-52.19946535-85.68283009-30.95587367-107.58333375-48.15194474 55.78891504-67.37324899 139.85303146-137.3770918 172.73103558-364.17669887 2.60408167-18.00616433 0.40357375-29.33568711 0-43.90263723-0.20325977-8.90218873 1.76894914-12.34287584 11.75960868-13.3532831 27.49014733-3.23742733 54.19671351-10.92594905 78.70277175-24.68280587 71.11440706-39.65480265 99.81822142-104.80250446 106.59649285-182.89844271 1.01188015-11.9363563-0.20178686-24.27775924-12.56970195-30.54935415M679.88691083 833.27400751c-106.36966673-85.37941333-157.98733782-113.5014334-179.30604723-112.28776638-19.92829476 1.21366703-16.33737217 24.48101902-11.96286845 39.65480263 4.5777635 14.97199677 10.57098089 25.2896394 18.94145388 38.44113563 5.76786417 8.70040186 9.76383341 21.64863831-5.78995764 31.35944742-34.26841876 21.64863831-93.82647692-7.28347506-96.60730623-8.69892897-69.3454579-41.67856295-127.33635378-96.710409-168.17978423-171.97249367-39.45154288-72.43117687-62.33888747-150.1220685-66.13306982-233.07267484-1.01188015-20.02992464 4.77955037-27.11161282 24.27923215-30.75408683a235.19659216 235.19659216 0 0 1 77.91771776-2.0222874c108.59668681 16.18713669 201.05631542 65.75453531 278.54394725 144.25552022 44.23256614 44.71125762 77.69089163 98.12439001 112.18613649 150.32385536 36.64567431 55.43394691 76.0986901 108.24024576 126.2994344 151.53604948 17.72778682 15.17378365 31.86465106 26.7065662 45.41972101 35.20370828-40.84343042 4.65435413-108.99878765 5.66476139-155.60860934-31.96628093m51.00936468-334.83953884c0-8.90218873 6.9815312-15.98387693 15.75557788-15.98387693q2.98408908 0.05155138 5.36134465 1.01188016a15.85720779 15.85720779 0 0 1 10.16740716 14.97199677 15.78061715 15.78061715 0 0 1-15.73053865 15.98387692 15.60386953 15.60386953 0 0 1-15.55379104-15.98387692m158.39238445 82.95060636c-10.1423679 4.24930749-20.30830215 7.89178146-30.09570189 8.29535522-15.12370514 0.81009328-31.66286419-5.46150162-40.61513143-13.15002333-13.96011661-11.93782919-23.92573689-18.61447073-28.09845373-39.45301577-1.79546129-8.90218873-0.81009328-22.65904557 0.78505404-30.54935414 3.59092258-16.99575708-0.40504665-27.92023321-12.13961607-37.8343021-9.55910075-8.09356835-21.72522894-10.31911553-35.07703915-10.31911553-4.98281013 0-9.55910075-2.22407429-12.94823646-4.04604772a13.27669246 13.27669246 0 0 1-5.76639126-18.61299785c1.39041466-2.8323807 8.16868608-9.71228202 9.76236049-10.92594903 18.13136058-10.52090241 39.04649623-7.08021529 58.36795747 0.81009328 17.93104659 7.48526194 31.46107731 21.24359167 51.01083759 40.66668278 19.92829476 23.46913885 23.51921733 29.94399353 34.84874012 47.54511124 8.97877936 13.75685685 17.14746545 27.92023321 22.71206985 44.1044241 3.41270206 10.11732865-0.98684091 18.41121097-12.74644957 23.46913885\" fill=\"#4D6BFE\" ></path></symbol><symbol id=\"icon-OpenAI\" viewBox=\"0 0 1024 1024\"><path d=\"M950.676 419.057a255.347 255.347 0 0 0-22.015-209.482A257.95 257.95 0 0 0 650.915 85.848a258.76 258.76 0 0 0-438.377 92.539A255.347 255.347 0 0 0 41.966 302.114a257.95 257.95 0 0 0 31.7 302.79 255.133 255.133 0 0 0 21.758 209.525 258.163 258.163 0 0 0 277.96 123.727 255.347 255.347 0 0 0 192.373 85.84 258.376 258.376 0 0 0 246.26-179.446 255.56 255.56 0 0 0 170.53-123.727 258.376 258.376 0 0 0-31.871-301.766zM565.757 957.013a190.966 190.966 0 0 1-122.703-44.37l6.016-3.456 203.893-117.67a33.918 33.918 0 0 0 16.725-29.054v-287.43l86.182 49.832a3.03 3.03 0 0 1 1.621 2.219v238.195a192.16 192.16 0 0 1-191.734 191.734zM153.62 780.98a190.71 190.71 0 0 1-22.826-128.59l6.058 3.626 204.065 117.71a32.894 32.894 0 0 0 33.278 0L623.482 629.99v99.494a3.413 3.413 0 0 1-1.408 2.645L415.578 851.206a191.99 191.99 0 0 1-261.96-70.226zM99.86 336.928a191.35 191.35 0 0 1 100.944-84.177v242.206a32.681 32.681 0 0 0 16.554 28.841l248.094 143.14-86.182 49.832a3.242 3.242 0 0 1-3.03 0L170.173 597.907a192.16 192.16 0 0 1-70.31-262.003zM807.963 501.4L559.102 356.895l85.968-49.661a3.242 3.242 0 0 1 3.03 0L854.169 426.31a191.734 191.734 0 0 1-28.841 345.796v-242.25a33.705 33.705 0 0 0-17.365-28.456z m85.756-128.975l-6.016-3.627-203.68-118.692a33.108 33.108 0 0 0-33.491 0L401.456 393.842v-99.536a2.816 2.816 0 0 1 1.195-2.602l206.07-118.906a191.99 191.99 0 0 1 284.998 198.816zM354.44 548.842l-86.182-49.661a3.413 3.413 0 0 1-1.621-2.432V259.236a191.99 191.99 0 0 1 314.65-147.32l-6.058 3.413-203.851 117.668a33.918 33.918 0 0 0-16.767 29.055z m46.803-100.901l111.013-63.997 111.226 63.997v127.95l-110.8 63.997-111.226-63.996z\" ></path></symbol><symbol id=\"icon-Qwen\" viewBox=\"0 0 1024 1024\"><path d=\"M955 607.2L843.6 412.1l47.8-91.6c6.6-8.7 8.3-21.5 5.6-31.8L835.7 178c-4.7-7.3-12.8-11.8-21.5-12H586.3l-51-89.2c-3.6-7-10.5-11.8-18.3-12.7H396.7c-8.9 0.2-15.2 6.7-19.6 14.4l-1.9 3.1-113.8 195.1H152.2c-9-0.2-17.5 4.3-22.3 12L67 400.1c-4 8-4 17.5 0 25.5l113.1 196.7-51 89.2c-4 8-4 17.4 0 25.5l58.1 102c4.7 7.8 13.2 12.7 22.3 12.7h227.8l54.9 95.5c4.2 7.2 11.6 11.9 19.9 12.8h129c8.9-0.2 17.1-5 21.5-12.7L775 750.5h100.4c8.9-0.8 16.9-5.8 21.5-13.5L955 634.3c5.4-8.3 5.4-18.9 0-27.1zM814.1 620L756 512.5 517 933.7l-65.3-107.5H212.8l57.4-104.3H392L153 302.2h125L396.7 90.3l59.7 104.3-61.3 107.5H873l-60.5 106.8 120.3 211H814.1z\" fill=\"#605BEC\" ></path><path d=\"M511.4 660.5l149-238.9H361.7l149.7 238.9z m0 0\" fill=\"#605BEC\" ></path></symbol><symbol id=\"icon-zhinengti\" viewBox=\"0 0 1024 1024\"><path d=\"M866.304 527.36v185.856c52.224 3.072 98.816-43.52 98.816-95.744 0-49.152-46.592-92.672-98.816-90.112zM58.88 623.104c3.072 49.152 46.592 90.112 98.816 90.112V527.36c-57.856 3.072-98.816 43.52-98.816 95.744zM450.56 610.816c-13.824 0-20.992 9.216-20.992 27.136 0 18.944 9.216 26.624 20.992 26.624 13.312 0 21.504-8.192 21.504-26.624-0.512-17.92-8.192-27.136-21.504-27.136z\" ></path><path d=\"M690.176 395.264h-165.376V335.36c0-8.704 8.704-17.408 17.408-20.48 37.888-17.408 52.224-46.592 43.52-81.408-8.704-31.744-37.888-55.296-72.704-55.296-31.744 0-64 20.48-72.704 52.224-8.704 34.816 5.632 64 43.52 84.48 5.632 3.072 17.408 8.704 17.408 14.336v65.536H346.624c-73.728 0-133.632 59.904-133.632 133.632V711.68c0 73.728 59.904 133.632 133.632 133.632h344.064c73.728 0 133.632-59.904 133.632-133.632v-182.272c0-74.24-59.904-134.144-134.144-134.144z m-300.544 289.792H293.376v-131.072H322.56v107.008h67.072v24.064z m60.928 2.048c-29.696 0-50.176-19.456-50.176-48.64s18.944-49.152 50.688-49.152c33.792 0 50.176 21.504 50.176 49.152 0 29.184-19.456 48.64-50.688 48.64z m162.304-2.048h-96.256v-131.072h29.184v107.008h67.072v24.064z m93.696-0.512l-31.744-51.2h-16.896v51.712h-29.696v-131.072h59.392c32.768 0 49.664 16.384 49.664 38.912 0 20.48-8.704 34.304-32.256 39.424l38.912 53.248H706.56z\" ></path><path d=\"M683.008 576.512h-25.088v34.816h25.088c16.384 0 23.04-5.632 23.04-16.896 0-11.776-5.632-17.92-23.04-17.92z\" ></path></symbol><symbol id=\"icon-skill\" viewBox=\"0 0 1025 1024\"><path d=\"M285.59485039 717.3125H519.73547539a288.28125 288.28125 0 0 0 35.15625 47.8125H285.59485039v-47.109375z m0-74.53125h203.203125a315 315 0 0 1-9.140625-47.109375H285.59485039v47.109375z m0-120.9375h194.765625c2.109375-16.171875 4.921875-32.34375 9.140625-47.109375h-203.90625v47.109375z m378.984375 315v40.78125c0 19.6875-14.765625 35.859375-33.046875 35.859375h-492.1875c-18.28125 0-33.046875-16.171875-33.046875-35.15625V281.375l163.125-147.65625v156.796875H183.64172539v46.40625h129.375V109.109375h318.515625c18.28125 0 33.046875 16.171875 33.046875 35.15625v140.625c14.0625-4.21875 28.125-7.03125 42.890625-9.84375V144.96875C707.46985039 99.265625 674.42297539 62 632.23547539 62H281.37610039L62.70422539 259.578125v618.75c0 45 34.453125 82.265625 75.9375 82.265625H632.23547539c42.1875 0 75.9375-37.265625 75.9375-82.96875v-30.9375c-14.0625-2.109375-28.828125-4.921875-42.890625-9.84375zM226.53235039 474.734375h-56.25v47.109375h56.25v-47.109375z m-56.25 289.6875h56.25v-47.109375h-56.25v47.109375z m56.25-168.75h-56.25v47.109375h56.25V596.375zM857.23547539 490.90625l-34.453125-28.125-87.1875 123.046875-78.75-65.390625-26.71875 37.265625 112.5 94.21875 114.609375-161.71875z m105.46875 70.3125c0-130.78125-98.4375-236.953125-218.671875-236.953125-120.9375 0-219.375 106.875-219.375 237.65625 0 130.78125 98.4375 237.65625 219.375 237.65625C864.26672539 798.875 962.70422539 692 962.70422539 561.21875z m-43.59375 0c0 105.46875-78.75 191.25-175.78125 191.25-96.328125 0-175.78125-85.78125-175.78125-190.546875 0-105.46875 79.453125-190.546875 175.78125-190.546875 97.03125 0 175.78125 85.078125 175.78125 189.84375z\" ></path></symbol><symbol id=\"icon-iteration\" viewBox=\"0 0 1024 1024\"><path d=\"M926.38827705 332.00007823A450.83470957 450.83470957 0 0 0 513.16018613 62.00022852a450.32055029 450.32055029 0 0 0-361.0922792 180.64238027 37.28581875 37.28581875 0 0 0 59.59332598 44.54997451 375.87811113 375.87811113 0 0 1 301.49983212-150.87823593 376.39227129 376.39227129 0 0 1 345.02060919 225.38571416 37.28581875 37.28581875 0 0 0 68.20660283-29.76414346z m-834.16945781 22.49998769A294.042317 294.042317 0 0 0 62.00291797 474.97167793a37.15749844 37.15749844 0 0 0 74.44331807 0.77080079 221.14235742 221.14235742 0 0 1 21.79246816-87.04243214A37.28581875 37.28581875 0 0 0 92.21794033 354.50006592z m8.93495566 340.26397031a450.83470957 450.83470957 0 0 0 412.00641124 267.2348124 450.32055029 450.32055029 0 0 0 360.70731914-180.06405996 37.28581875 37.28581875 0 0 0-59.52828692-44.61325664 375.87811113 375.87811113 0 0 1-301.17903222 150.36319776 376.39227129 376.39227129 0 0 1-343.99228887-223.07067686 37.28581875 37.28581875 0 0 0-68.01412237 30.21414345z m834.04201641-21.59998769c18.70663008-38.57165859 27.12830537-79.07163575 26.80662568-125.3574501a37.15749844 37.15749844 0 0 0-74.44243916 0.64335937c0.25751953 35.16414082-5.78583633 64.47828428-19.28582929 92.31410831a37.28581875 37.28581875 0 0 0 66.98580292 32.46414257z\" ></path><path d=\"M744.58837812 304.87177286a39.53581787 39.53581787 0 0 0-39.72829833 39.34245849c0 21.66414786 17.80663095 39.27829834 39.72829834 39.27829834h155.57159268a61.45748526 61.45748526 0 0 0 61.84244619-61.13580557V165.5001705A39.53581787 39.53581787 0 0 0 922.27499756 126.28603232a39.53581787 39.53581787 0 0 0-39.7924585 39.21413819v139.37160235H744.58837812z m-465.16966347 414.25641034a39.53581787 39.53581787 0 0 0 39.72741943-39.3433374 39.53581787 39.53581787 0 0 0-39.72829833-39.21413818H123.84712197A61.45748526 61.45748526 0 0 0 62.00379687 701.64235303v156.85655362c0 21.5999877 17.80663095 39.21413818 39.72829834 39.21413817A39.53581787 39.53581787 0 0 0 141.52543262 858.49978555V719.1281832H279.41695684z\" ></path></symbol><symbol id=\"icon-list_filter\" viewBox=\"0 0 1024 1024\"><path d=\"M559.025 962a29.1375 29.1375 0 0 1-29.1375-29.1375V354.5a29.1375 29.1375 0 0 1 7.425-18.84375l190.18125-215.26875H156.44375L346.0625 335.09375a31.3875 31.3875 0 0 1 7.425 19.40625v334.06875l62.26875 61.875a29.1375 29.1375 0 1 1-41.11875 41.11875l-69.8625-70.5375a31.3875 31.3875 0 0 1-8.55-20.53125v-335.25L70.775 113.4125A29.7 29.7 0 0 1 65.6 78.875 30.2625 30.2625 0 0 1 92.43125 62h700.14375a30.9375 30.9375 0 0 1 21.7125 51.4125L586.025 368.675v567.05625a29.1375 29.1375 0 0 1-26.83125 26.26875z\" ></path><path d=\"M926.7875 506.88125h-250.70625a29.1375 29.1375 0 1 1 0-57.09375h250.70625a29.1375 29.1375 0 1 1 0 57.09375z m0 182.75625h-250.70625a29.1375 29.1375 0 0 1 0-57.09375h250.70625a29.1375 29.1375 0 0 1 0 57.09375z m0 182.75625h-250.70625a29.1375 29.1375 0 0 1 0-57.09375h250.70625a29.1375 29.1375 0 0 1 0 57.09375z\" ></path></symbol><symbol id=\"icon-variable_assign\" viewBox=\"0 0 1024 1024\"><path d=\"M842.410667 85.333333H181.589333A96.426667 96.426667 0 0 0 85.333333 181.674667v674.901333c0 45.226667 58.197333 82.090667 103.424 82.090667h52.565334a14.165333 14.165333 0 0 0 14.250666-14.165334v-59.306666a14.165333 14.165333 0 0 0-14.250666-14.165334h-38.4a30.549333 30.549333 0 0 1-30.464-30.549333V648.533333h119.893333a16.384 16.384 0 0 0 16.298667-16.298666V577.706667a16.384 16.384 0 0 0-16.213334-16.298667H172.373333V371.2h745.130667A21.077333 21.077333 0 0 0 938.666667 350.122667V181.674667A96.426667 96.426667 0 0 0 842.410667 85.333333zM172.373333 284.074667v-80.554667c0-16.810667 13.653333-30.549333 30.464-30.549333l632.32-0.512c8.96 0 16.298667 7.424 16.298667 16.298666V284.16H172.458667z\" ></path><path d=\"M696.661333 905.984a24.746667 24.746667 0 0 1-23.722666 29.013333h-24.746667a23.808 23.808 0 0 1-23.637333-20.48l-9.984-62.208a24.746667 24.746667 0 0 0-23.637334-20.48H471.893333a23.722667 23.722667 0 0 0-21.504 14.165334l-33.706666 74.752a24.234667 24.234667 0 0 1-21.589334 14.250666h-27.306666a23.978667 23.978667 0 0 1-21.589334-34.730666l207.274667-426.410667a23.296 23.296 0 0 1 21.589333-13.226667h38.4l83.114667 445.44zM569.856 610.986667l-62.037333 112.384a24.32 24.32 0 0 0 21.504 34.730666h41.045333a23.893333 23.893333 0 0 0 23.722667-27.904l-22.186667-118.186666-2.048-1.024z\" ></path><path d=\"M725.333333 512m42.666667 0l128 0q42.666667 0 42.666667 42.666667l0 0q0 42.666667-42.666667 42.666666l-128 0q-42.666667 0-42.666667-42.666666l0 0q0-42.666667 42.666667-42.666667Z\" ></path><path d=\"M725.333333 661.333333m42.666667 0l128 0q42.666667 0 42.666667 42.666667l0 0q0 42.666667-42.666667 42.666667l-128 0q-42.666667 0-42.666667-42.666667l0 0q0-42.666667 42.666667-42.666667Z\" ></path><path d=\"M725.333333 810.666667m42.666667 0l128 0q42.666667 0 42.666667 42.666666l0 0q0 42.666667-42.666667 42.666667l-128 0q-42.666667 0-42.666667-42.666667l0 0q0-42.666667 42.666667-42.666666Z\" ></path></symbol><symbol id=\"icon-conv_variable\" viewBox=\"0 0 1024 1024\"><path d=\"M192.10666667 191.97866667A42.688 42.688 0 0 0 149.41866667 234.66666667v426.688c0 23.552 19.072 42.624 42.688 42.624h85.312c23.552 0 42.688 19.136 42.688 42.688v52.608l148.672-89.216a42.688 42.688 0 0 1 21.952-6.08h256a42.688 42.688 0 0 0 42.688-42.624 42.688 42.688 0 0 1 85.312 0 128 128 0 0 1-128 128H502.57066667l-203.2 121.92A42.688 42.688 0 0 1 234.73066667 874.66666667v-85.312h-42.624a128 128 0 0 1-128-128V234.66666667a128 128 0 0 1 128-128h213.312a42.688 42.688 0 0 1 0 85.312H192.10666667z\" ></path><path d=\"M538.09066667 149.35466667c0-23.616 19.136-42.688 42.688-42.688h59.072c41.024 0 75.968 27.904 86.72 66.56l15.808 56.96 61.824-74.112A136.448 136.448 0 0 1 908.97066667 106.66666667h3.84a42.688 42.688 0 1 1 0 85.312h-3.84a51.136 51.136 0 0 0-39.232 18.752l-99.584 119.424 31.616 113.728c0.896 3.136 3.2 4.096 4.48 4.096h59.072a42.688 42.688 0 1 1 0 85.376h-59.072a90.24 90.24 0 0 1-86.72-66.624l-15.808-56.96-61.824 74.176a136.448 136.448 0 0 1-104.768 49.408h-3.84a42.688 42.688 0 0 1 0-85.376h3.84a51.136 51.136 0 0 0 39.232-18.688l99.584-119.424-31.616-113.728c-0.832-3.2-3.2-4.16-4.48-4.16h-59.072a42.688 42.688 0 0 1-42.688-42.624z\" ></path></symbol><symbol id=\"icon-temp_transform\" viewBox=\"0 0 1024 1024\"><path d=\"M186.32 914.912a2.64 2.64 0 0 1-1.44-0.432A114.864 114.864 0 0 1 73.28 798.272v-124.128a115.2 115.2 0 0 1 113.04-116.64h212.304a115.2 115.2 0 0 1 113.04 116.64v124.128a115.2 115.2 0 0 1-113.04 116.64z m-43.488-240.768v124.128a44.448 44.448 0 0 0 43.488 45.264h211.824a44.448 44.448 0 0 0 43.488-45.264v-124.128a44.448 44.448 0 0 0-43.488-45.264H186.32a44.448 44.448 0 0 0-43.488 45.264z m470.4 227.28a2.448 2.448 0 0 1-2.208-1.44 30.144 30.144 0 0 1-28.08-29.664 32.736 32.736 0 0 1 33.6-33.6 380.352 380.352 0 0 0 60.912-14.64l0.768-0.384a2.16 2.16 0 0 1 1.056-0.24h0.912a146.736 146.736 0 0 0 56.448-46.128l0.288-0.672a2.4 2.4 0 0 1 0.816-0.912l1.392-0.912a2.256 2.256 0 0 1 1.152-0.432 166.512 166.512 0 0 0 43.728-82.752c0.384-2.496 0.864-4.8 1.296-7.056l1.2-6.432a205.2 205.2 0 0 0 4.8-38.4 80.16 80.16 0 0 0-0.432-8.736v-1.488l-28.8 35.136a32.064 32.064 0 0 1-24 12.144 28.08 28.08 0 0 1-12.336-2.976 29.424 29.424 0 0 1-16.56-19.584 31.68 31.68 0 0 1 5.76-24l0.24-0.288 0.384-0.384 74.544-92.544a58.56 58.56 0 0 1 35.808-17.952 49.776 49.776 0 0 1 40.752 26.832l66.912 96.576a30.192 30.192 0 0 1-8.352 38.112 32.112 32.112 0 0 1-21.984 10.608 24 24 0 0 1-16.56-6.576v-0.24l-33.024-44.16v7.632a259.728 259.728 0 0 1-54 155.232 262.464 262.464 0 0 1-124.8 89.856 62.064 62.064 0 0 1-12.048 3.696l-3.6 0.912a333.408 333.408 0 0 1-29.472 5.856h-16.56zM170.72 475.616L107.84 376.304a29.568 29.568 0 0 1 8.64-37.584 32.64 32.64 0 0 1 21.936-10.608 24 24 0 0 1 16.464 6.576v0.24l33.024 43.776a367.68 367.68 0 0 1 7.68-66.672 272.976 272.976 0 0 1 73.104-123.936 243.552 243.552 0 0 1 124.128-64.128 179.184 179.184 0 0 1 46.272-4.08c10.08 0 15.84 12.72 16.32 25.248a34.704 34.704 0 0 1-33.6 38.4l-2.928 0.72A265.968 265.968 0 0 0 368 198.272a187.2 187.2 0 0 0-82.128 66.624l-4.032 5.808a2.496 2.496 0 0 1-1.584 1.056 2.4 2.4 0 0 1-1.536-0.288 196.08 196.08 0 0 0-23.472 59.568l-0.432 2.592a1.248 1.248 0 0 1 0 0.384l-0.336 1.056a2.448 2.448 0 0 1 0 0.576 231.888 231.888 0 0 0-4.464 44.4v9.696l25.968-31.488a32.016 32.016 0 0 1 24-12.096 26.352 26.352 0 0 1 12.432 2.928 30.096 30.096 0 0 1 16.56 19.2 31.536 31.536 0 0 1-5.376 23.376 2.064 2.064 0 0 1-0.528 1.2L248.48 484.928a59.856 59.856 0 0 1-36.336 18.24 48.576 48.576 0 0 1-41.424-27.552z m455.04-9.12a2.544 2.544 0 0 1-1.44-0.432 115.2 115.2 0 0 1-111.648-116.64V225.728a115.2 115.2 0 0 1 113.088-116.64h211.824a115.2 115.2 0 0 1 113.04 116.64v124.128a115.2 115.2 0 0 1-113.04 116.64z m-43.68-240.768v124.128a44.448 44.448 0 0 0 43.488 45.264h211.824a44.448 44.448 0 0 0 43.488-45.264V225.728a44.448 44.448 0 0 0-43.488-45.264H625.76a44.448 44.448 0 0 0-43.68 45.264z\" ></path></symbol><symbol id=\"icon-doc_parser\" viewBox=\"0 0 1024 1024\"><path d=\"M755.797333 891.733333H250.410667A80.810667 80.810667 0 0 1 170.666667 811.776V165.077333A80.768 80.768 0 0 1 250.410667 85.333333h289.024a33.152 33.152 0 0 1 34.133333 32.426667v1.706667a33.152 33.152 0 0 1-32.384 33.92H250.410667a12.373333 12.373333 0 0 0-11.904 11.904v646.485333a12.373333 12.373333 0 0 0 11.904 11.904h505.386666a12.373333 12.373333 0 0 0 11.904-11.904v-369.194667a34.133333 34.133333 0 0 1 67.84 0v369.194667a80.810667 80.810667 0 0 1-79.744 79.957333m-243.2-189.696H384a34.133333 34.133333 0 0 1 0-67.84h129.962667a34.133333 34.133333 0 0 1-1.322667 67.84z m100.565334-166.784H384a33.92 33.92 0 1 1-2.389333-67.797333h231.509333a33.92 33.92 0 1 1 2.389333 67.797333h-2.346666z m46.08-221.866666l-55.466667-38.4a483.498667 483.498667 0 0 1 130.090667-128l3.242666-1.834667-20.650666-50.56a5.717333 5.717333 0 0 1 0.725333-5.162667 6.698667 6.698667 0 0 1 5.290667-2.986666l174.592 22.784a11.050667 11.050667 0 0 1 5.632 7.210666 3.712 3.712 0 0 1-0.981334 3.456L793.216 260.266667a5.888 5.888 0 0 1-4.565333 2.474666 4.864 4.864 0 0 1-4.565334-3.712l-21.333333-50.858666-4.266667 2.816a464.554667 464.554667 0 0 0-99.157333 102.186666z\" ></path></symbol><symbol id=\"icon-shezhi\" viewBox=\"0 0 1024 1024\"><path d=\"M909.6250001 459.6250001H114.3749999a52.3749999 52.3749999 0 1 0 0 104.7499998h795.2500002a52.3749999 52.3749999 0 0 0 0-104.7499998zM114.3749999 264.37500019h457.2500001a150.00000029 150.00000029 0 0 0 280.7499999 0h57.2500002a52.3749999 52.3749999 0 0 0 0-104.7499998h-57.2500002a150.00000029 150.00000029 0 0 0-280.7499999 0H114.3749999a52.3749999 52.3749999 0 0 0 0 104.7499998zM666.7499999 212.00000029A45.24999961 45.24999961 0 1 1 712.00000039 257.2499999 45.24999961 45.24999961 0 0 1 666.7499999 212.00000029zM909.6250001 759.62499981H452.375a150.00000029 150.00000029 0 0 0-280.7499999 0H114.3749999a52.3749999 52.3749999 0 1 0 0 104.7499998h57.2500002a150.00000029 150.00000029 0 0 0 280.7499999 0h457.2500001a52.3749999 52.3749999 0 0 0 0-104.7499998zM357.2500001 811.99999971A45.24999961 45.24999961 0 1 1 311.99999961 766.7500001 45.24999961 45.24999961 0 0 1 357.2500001 811.99999971z\" ></path></symbol><symbol id=\"icon-xitong\" viewBox=\"0 0 1024 1024\"><path d=\"M900.288 142.08H125.44a57.6 57.6 0 0 0-57.6 57.6v495.168a57.6 57.6 0 0 0 57.6 57.6h774.848a57.6 57.6 0 0 0 57.6-57.6V199.68a57.6 57.6 0 0 0-57.6-57.6z m-7.552 545.28H132.992V207.104h759.744v480.128z m-62.528 127.936H195.584a31.68 31.68 0 0 0-31.68 31.68v3.52c0 17.472 14.144 31.68 31.68 31.68h634.624a31.68 31.68 0 0 0 31.616-31.68v-3.52a31.68 31.68 0 0 0-31.616-31.68z\" ></path><path d=\"M166.912 581.952a32.448 32.448 0 0 0 43.328-15.616l95.872-203.84 152.832 189.632a45.312 45.312 0 0 0 77.44-12.416l36.032-95.488 88.32 98.112a45.44 45.44 0 0 0 65.088 2.176l141.888-138.432a32.512 32.512 0 1 0-45.44-46.656l-127.04 123.968L598.848 376.32a44.8 44.8 0 0 0-41.856-14.144 44.8 44.8 0 0 0-33.92 28.416l-35.328 93.44-150.912-187.264a44.928 44.928 0 0 0-40.512-16.448 44.928 44.928 0 0 0-35.52 25.6L151.296 538.624a32.576 32.576 0 0 0 15.616 43.328z\" ></path></symbol><symbol id=\"icon-knowledge\" viewBox=\"0 0 1024 1024\"><path d=\"M567.23363335 136.41129657h-225.57415728v751.17740686H777.12143803a110.46726541 110.46726541 0 0 0 110.4672654-110.4672654V246.87856197c0-49.48933467-32.52156263-91.33433539-77.32708565-105.42995809V379.43928098a33.14017975 33.14017975 0 0 1-56.55924054 23.41906079L688.74762492 337.90358945l-64.95475232 64.95475232a33.14017975 33.14017975 0 0 1-56.55923925-23.41906079V136.41129657z m-291.85451678 0H246.87856197A110.46726541 110.46726541 0 0 0 136.41129657 246.87856197v530.24287606A110.46726541 110.46726541 0 0 0 246.87856197 887.58870343h28.5005546v-751.17740686zM246.87856197 70.13093706h530.24287606a176.74762492 176.74762492 0 0 1 176.74762491 176.74762491v530.24287606a176.74762492 176.74762492 0 0 1-176.74762491 176.74762491H246.87856197a176.74762492 176.74762492 0 0 1-176.74762491-176.74762491V246.87856197a176.74762492 176.74762492 0 0 1 176.74762491-176.74762491z m386.63543089 77.32708566v152.00295823l31.81457256-31.81457257a33.14017975 33.14017975 0 0 1 46.83812029 0l31.81457256 31.81457257V147.45802272h-110.46726541z\" ></path></symbol><symbol id=\"icon-http\" viewBox=\"0 0 1024 1024\"><path d=\"M926.6 336.8c-22.70000001-53.6-55.10000001-101.70000001-96.4-143-41.30000001-41.30000001-89.4-73.8-143-96.4C631.70000001 73.89999999 572.70000001 62 512 62c-60.70000001 0-119.70000001 11.90000001-175.2 35.4-53.6 22.70000001-101.70000001 55.10000001-143 96.4-41.30000001 41.30000001-73.8 89.4-96.4 143C73.89999999 392.29999999 62 451.29999999 62 512c0 60.70000001 11.90000001 119.70000001 35.4 175.2 22.70000001 53.6 55.10000001 101.70000001 96.4 143 41.30000001 41.30000001 89.4 73.8 143 96.4C392.29999999 950.10000001 451.29999999 962 512 962c60.70000001 0 119.70000001-11.90000001 175.2-35.4 53.6-22.70000001 101.70000001-55.10000001 143-96.4 41.30000001-41.30000001 73.8-89.4 96.4-143C950.10000001 631.70000001 962 572.70000001 962 512c0-60.70000001-11.90000001-119.70000001-35.4-175.2z m-685.70000001-95.90000001C280.8 201 327.99999999 171 379.49999999 151.99999999c-2.90000001 3.10000001-5.8 6.30000001-8.69999999 9.50000002-33.90000001 38-61.4 82.10000001-81.70000001 130.89999999-33.70000001-3.6-62-7.50000002-83.59999998-10.90000001 10.90000001-14.2 22.70000001-27.8 35.4-40.59999998z m93.6 122.90000001c9.8 0.8 20 1.60000001 30.50000001 2.30000001 37.8 2.6 75.70000001 4.2 113.69999999 4.79999998v107.80000002H314.4c2.90000001-40.70000001 9.6-79.2 20.10000001-114.90000001zM167.8 343c21.10000001 3.70000001 55 9.10000001 99.40000001 14.2-10.30000001 38.2-16.90000001 78.8-19.60000001 121.50000001H130.10000001c4.10000001-47.70000001 16.90000001-93.6 37.69999999-135.70000001z m0.20000001 338.6c-20.90000001-42.30000001-33.8-88.4-37.9-136.2h116.6c2.10000001 40.8 10.10000001 81.50000001 24.09999999 121.70000001-46 5.10000001-81.10000002 10.6-102.79999999 14.49999999z m72.9 101.50000001c-12.6-12.6-24.30000001-26-35.00000002-40.20000002 23.50000002-3.6 54.70000001-7.90000001 92.30000001-11.8 19 37 43 73.30000001 71.70000001 108.10000001 11.90000001 14.40000001 24.30000001 28.30000001 37.2 41.70000001-62.10000001-17.60000001-119.2-50.90000001-166.20000002-97.80000002z m237.79999998 74.49999999c-17.70000001-16.50000001-38.10000001-37.50000001-58.4-62.2-18.8-23-35.30000001-46.6-49.39999998-70.50000001 35.90000001-2.4 71.8-3.90000001 107.69999999-4.49999999v137.2z m2e-8-203.90000001c-37.90000001 0.6-75.90000001 2.2-113.70000001 4.80000002-8.8 0.6-17.30000001 1.2-25.6 1.89999999-14.90000001-38-23.6-76.6-25.89999999-115.10000001h165.2v108.40000002z m0-349.59999998c-35.90000001-0.6-71.90000001-2.10000001-107.70000001-4.50000001-3.90000001-0.30000001-7.8-0.50000001-11.6-0.8 15.8-33.2 35.6-63.50000001 59-90.30000001 21.10000001-24.2 42.4-42.2 60.30000001-55.09999999v150.70000001z m304.39999998-63.20000002c12.8 12.8 24.6 26.4 35.50000001 40.8-26 4-52.10000001 7.50000002-78.2 10.4-20.30000002-48.70000001-47.70000001-92.6-81.6-130.59999998-1.8-2.10000001-3.70000001-4.10000001-5.6-6.2 48 19.10000001 92.2 48 129.90000001 85.6z m-237.79999998-91.39999998c18.4 12.70000001 41 31.10000001 63.59999998 56.49999999 24.4 27.4 44.90000001 58.50000001 61.2 92.70000002-43.70000001 3.30000001-85.50000001 5-124.89999999 5.59999997V149.49999999z m-2e-8 221.39999998c18.30000001-0.30000001 36.6-0.70000001 54.70000002-1.39999998 31.70000001-1.2 63.30000001-3.2 94.9-5.90000001 10.6 35.8 17.30000001 74.30000001 20.19999998 115.10000001H545.30000001V370.89999999z m0 174.40000002h170.80000002c-2.30000001 38.50000001-11 77.10000001-26 115.19999998-30-2.50000001-60-4.30000002-90.1-5.49999999-18.2-0.70000001-36.50000001-1.2-54.70000002-1.4V545.30000001z m0 317.49999999V720.4c35.8 0.50000001 73.70000001 2 113.2 4.70000001-14 23.90000001-30.50000001 47.4-49.29999999 70.29999999-22.4 27.4-45 50.10000001-63.90000001 67.4z m237.80000002-79.70000001c-45 45-99.30000001 77.50000001-158.50000001 95.60000002 12.2-12.70000001 23.8-25.8 35-39.4 28.6-34.70000001 52.6-70.90000001 71.60000001-107.8 29.10000001 3.10000001 58.10000001 6.90000001 86.99999999 11.29999999-10.8 14.2-22.50000001 27.70000001-35.10000001 40.30000001zM856.00000001 681.4c-32.30000001-5.50000001-64.8-10.2-97.40000001-14 14-40.30000001 22.10000001-81.2 24.2-122.10000001h111c-4 47.8-16.90000001 93.8-37.80000001 136.10000001z m-74.00000001-202.70000001c-2.70000001-42.8-9.30000001-83.6-19.70000001-121.89999998 31.4-3.8 62.8-8.30000001 94.00000002-13.60000001 20.70000001 42.10000001 33.50000001 88.00000001 37.59999998 135.6H782z\" ></path></symbol><symbol id=\"icon-llm\" viewBox=\"0 0 1024 1024\"><path d=\"M495.488 45.994667a42.666667 42.666667 0 0 1 38.144 2.56l362.666667 213.333333A42.666667 42.666667 0 0 1 917.333333 298.666667v426.666666c0 15.104-8.021333 29.141333-21.034666 36.778667l-362.666667 213.333333a42.666667 42.666667 0 0 1-43.264 0l-362.666667-213.333333A42.709333 42.709333 0 0 1 106.666667 725.333333V298.666667a42.666667 42.666667 0 0 1 21.034666-36.778667l362.666667-213.333333 5.12-2.56zM192 322.986667v377.941333l320 188.16 320-188.16V322.986667L512 134.826667 192 322.986667z m467.968 46.122666a42.666667 42.666667 0 1 1 45.226667 72.362667L554.666667 535.552V704a42.666667 42.666667 0 1 1-85.333334 0v-168.277333l-150.613333-94.293334a42.666667 42.666667 0 0 1 45.226667-72.32l147.925333 92.586667 148.053333-92.586667z\" ></path></symbol><symbol id=\"icon-gongneng\" viewBox=\"0 0 1024 1024\"><path d=\"M732.20397484 80.64152876C614.22558955 80.64152876 518.70331735 176.16380093 518.70331735 294.14218623s95.52227219 213.33307455 213.33307454 213.33307456 213.33307455-95.52227219 213.33307455-213.33307456-95.35468925-213.50065749-213.1654916-213.50065747z m0 351.75657775c-76.41781775 0-138.42350321-62.00568545-138.42350321-138.42350321s62.00568545-138.42350321 138.42350321-138.4235032 138.42350321 62.00568545 138.42350321 138.4235032-62.00568545 138.42350321-138.42350321 138.42350321zM398.21118804 100.58389783H149.51811447c-41.39298462 0-75.24473721 33.85175261-75.24473719 75.24473724v248.35790768c0 41.39298462 33.85175261 75.24473721 75.24473719 75.24473723h248.69307357c41.39298462 0 75.24473721-33.85175261 75.24473722-75.24473723V175.82863507c0-41.39298462-33.85175261-75.24473721-75.24473722-75.24473724z m2.17857814 313.88283478c0 6.70331735-5.36265388 12.06597121-12.06597124 12.06597123H159.5730905c-6.70331735 0-12.06597121-5.36265388-12.06597123-12.06597123V185.71602815c0-6.70331735 5.36265388-12.06597121 12.06597123-12.06597122h228.75070444c6.70331735 0 12.06597121 5.36265388 12.06597124 12.06597122v228.75070446zM398.21118804 543.33800861H149.51811447c-41.39298462 0-75.24473721 33.85175261-75.24473719 75.2447372v248.35790768c0 41.39298462 33.85175261 75.24473721 75.24473719 75.24473721h248.69307357c41.39298462 0 75.24473721-33.85175261 75.24473722-75.24473721V618.58274581c0-41.39298462-33.85175261-75.24473721-75.24473722-75.2447372z m2.17857814 313.88283474c0 6.70331735-5.36265388 12.06597121-12.06597124 12.06597122H159.5730905c-6.70331735 0-12.06597121-5.36265388-12.06597123-12.06597122V628.47013888c0-6.70331735 5.36265388-12.06597121 12.06597123-12.06597122h228.75070444c6.70331735 0 12.06597121 5.36265388 12.06597124 12.06597122V857.22084335zM856.38292869 534.62369604H607.85743806c-41.39298462 0-75.24473721 33.85175261-75.24473721 75.24473721v248.35790771c0 41.39298462 33.85175261 75.24473721 75.24473721 75.24473722h248.69307356c41.39298462 0 75.24473721-33.85175261 75.2447372-75.24473722V609.86843325c0-41.39298462-33.85175261-75.24473721-75.41232013-75.24473721z m2.17857814 313.71525182c0 6.70331735-5.36265388 12.06597121-12.06597122 12.06597123H617.74483115c-6.70331735 0-12.06597121-5.36265388-12.06597121-12.06597123V619.5882434c0-6.70331735 5.36265388-12.06597121 12.06597121-12.06597121h228.75070446c6.70331735 0 12.06597121 5.36265388 12.06597122 12.06597121v228.75070446z\" ></path></symbol><symbol id=\"icon-note\" viewBox=\"0 0 1024 1024\"><path d=\"M864 64H704V32c0-17.066667-14.933333-32-32-32S640 14.933333 640 32V64H384V32c0-17.066667-14.933333-32-32-32S320 14.933333 320 32V64H160C142.933333 64 128 78.933333 128 96v896c0 17.066667 14.933333 32 32 32h704c17.066667 0 32-14.933333 32-32v-896c0-17.066667-14.933333-32-32-32zM832 960H192V128h128v64c0 17.066667 14.933333 32 32 32S384 209.066667 384 192V128h256v64c0 17.066667 14.933333 32 32 32S704 209.066667 704 192V128h128v832z\" ></path><path d=\"M704 384H320c-17.066667 0-32 14.933333-32 32S302.933333 448 320 448h384c17.066667 0 32-14.933333 32-32S721.066667 384 704 384zM704 640H320c-17.066667 0-32 14.933333-32 32S302.933333 704 320 704h384c17.066667 0 32-14.933333 32-32S721.066667 640 704 640z\" ></path></symbol><symbol id=\"icon-code\" viewBox=\"0 0 1024 1024\"><path d=\"M153.770667 517.558857l200.387047-197.241905L302.86019 268.190476 48.761905 518.290286l254.439619 243.614476 50.590476-52.833524-200.021333-191.512381zM658.285714 320.316952L709.583238 268.190476l254.098286 250.09981L709.241905 761.904762l-50.590476-52.833524 200.021333-191.512381L658.285714 320.316952z m-112.981333-86.186666L393.99619 785.554286l70.534096 19.358476 151.30819-551.399619-70.534095-19.358476z\" ></path></symbol><symbol id=\"icon-yidongzhi\" viewBox=\"0 0 1076 1024\"><path d=\"M864.12529436 570.86169596c-0.69658846-6.26929351-2.78635252-12.53858572-7.66246912-18.11129078-1.39317561-1.39317561-2.78635252-2.08976406-4.8761179-3.48294097l-192.25832033-174.14702956c-13.23517418-11.84199855-34.13281745-11.14541009-45.97481601 2.08976406s-11.14541009 34.13281745 2.08976406 45.97481602l128.86880202 117.02680346H288.0469192c-16.71811515 0-32.04305339 12.53858572-33.436229 29.25670215-2.08976406 19.50446767 13.23517418 35.52599437 32.04305339 35.52599308h462.53451136l-144.89032869 131.65515454c-13.23517418 11.84199855-14.62835108 32.73964185-2.08976536 45.97481602 6.26929351 6.96588066 15.32493824 10.44882164 24.38058426 10.44882163 7.66246912 0 15.32493824-2.78635252 21.59423175-8.35905757l204.10031889-184.59585122c1.39317561-1.39317561 2.78635252-1.39317561 4.17952944-2.78635252 4.8761166-4.8761166 6.96588066-11.84199855 7.66246912-18.11129076 0-1.39317561 0.69658846-2.78635252 0.69658846-4.17952814 0-1.39317561-0.69658846-2.78635252-0.69658846-4.17952944z\" ></path><path d=\"M961.64763014 169.62694013h-407.50404933l-55.7270492-82.89398729c-15.32493824-22.98740736-41.09869942-36.22258282-68.96222339-36.22258153h-299.53289189c-61.29975426 0-110.75751124 49.45775699-110.75750995 110.75751124v702.16082336c0 61.29975426 49.45775699 110.75751124 110.75750995 110.75751123h823.36715753c60.6031658 0 110.75751124-49.45775699 110.75750995-110.06092278l8.35905758-583.04425582c0-61.99634272-49.45775699-111.45409841-110.75751125-111.45409841z m37.61575844 693.10517732c0 25.07717273-20.20105484 45.27822756-45.27822756 45.27822755H129.92141633c-25.07717273 0-45.27822756-20.20105484-45.27822756-45.27822755V161.26788255c0-25.07717273 20.20105484-45.27822756 45.27822756-45.27822755h265.40007314c27.86352525 0 53.63728514 13.93176263 68.96222467 36.22258152l55.7270492 82.89398601h441.6368668c25.07717273 0 45.27822756 20.20105484 45.27822885 45.27822755l-7.66247041 582.34766737z\" ></path></symbol><symbol id=\"icon-gengduo\" viewBox=\"0 0 1024 1024\"><path d=\"M227.14123 413.647995c-52.14973 0-94.587262 42.439578-94.587262 94.587262 0 52.14973 42.437531 94.587262 94.587262 94.587262 52.147684 0 94.587262-42.437531 94.587262-94.587262C321.728492 456.087573 279.288914 413.647995 227.14123 413.647995z\" ></path><path d=\"M510.903016 413.647995c-52.14973 0-94.587262 42.439578-94.587262 94.587262 0 52.14973 42.437531 94.587262 94.587262 94.587262 52.147684 0 94.587262-42.437531 94.587262-94.587262C605.490278 456.087573 563.051723 413.647995 510.903016 413.647995z\" ></path><path d=\"M794.665825 413.647995c-52.14973 0-94.587262 42.439578-94.587262 94.587262 0 52.14973 42.437531 94.587262 94.587262 94.587262 52.147684 0 94.587262-42.437531 94.587262-94.587262C889.253086 456.087573 846.813508 413.647995 794.665825 413.647995z\" ></path></symbol><symbol id=\"icon-circle\" viewBox=\"0 0 1024 1024\"><path d=\"M512 64C264.576 64 64 264.576 64 512c0 247.36 200.576 448 448 448s448-200.64 448-448c0-247.424-200.576-448-448-448z m0 832C299.936 896 128 724.032 128 512 128 299.904 299.936 128 512 128s384 171.904 384 384c0 212.032-171.936 384-384 384z\" ></path><path d=\"M512 512m-288 0a288 288 0 1 0 576 0 288 288 0 1 0-576 0Z\" ></path></symbol><symbol id=\"icon-yuan\" viewBox=\"0 0 1024 1024\"><path d=\"M512 960c247.42 0 448-200.58 448-448S759.42 64 512 64 64 264.58 64 512s200.58 448 448 448z m0-76c-205.45 0-372-166.55-372-372s166.55-372 372-372 372 166.55 372 372-166.55 372-372 372z\" ></path></symbol><symbol id=\"icon-close\" viewBox=\"0 0 1024 1024\"><path d=\"M56.888889 512c0-125.667556 44.430222-232.96 133.290667-321.820444C279.04 101.319111 386.332444 56.888889 512 56.888889s232.96 44.430222 321.820444 133.290667C922.680889 279.04 967.111111 386.332444 967.111111 512s-44.430222 232.96-133.290667 321.820444C744.96 922.680889 637.667556 967.111111 512 967.111111s-232.96-44.430222-321.820444-133.290667C101.319111 744.96 56.888889 637.667556 56.888889 512z m56.888889 0c0 109.966222 38.883556 203.832889 116.622222 281.6 77.767111 77.738667 171.633778 116.622222 281.6 116.622222 109.966222 0 203.832889-38.883556 281.6-116.622222 77.738667-77.767111 116.622222-171.633778 116.622222-281.6 0-109.966222-38.883556-203.832889-116.622222-281.6C715.832889 152.689778 621.966222 113.777778 512 113.777778c-109.966222 0-203.832889 38.883556-281.6 116.622222C152.689778 308.195556 113.777778 402.062222 113.777778 512z\" ></path><path d=\"M56.888889 512c0-125.667556 44.430222-232.96 133.290667-321.820444C279.04 101.319111 386.332444 56.888889 512 56.888889s232.96 44.430222 321.820444 133.290667C922.680889 279.04 967.111111 386.332444 967.111111 512s-44.430222 232.96-133.290667 321.820444C744.96 922.680889 637.667556 967.111111 512 967.111111s-232.96-44.430222-321.820444-133.290667C101.319111 744.96 56.888889 637.667556 56.888889 512z m56.888889 0c0 109.966222 38.883556 203.832889 116.622222 281.6 77.767111 77.738667 171.633778 116.622222 281.6 116.622222 109.966222 0 203.832889-38.883556 281.6-116.622222 77.738667-77.767111 116.622222-171.633778 116.622222-281.6 0-109.966222-38.883556-203.832889-116.622222-281.6C715.832889 152.689778 621.966222 113.777778 512 113.777778c-109.966222 0-203.832889 38.883556-281.6 116.622222C152.689778 308.195556 113.777778 402.062222 113.777778 512z\" ></path><path d=\"M661.134222 391.338667a28.444444 28.444444 0 0 1-8.334222 20.110222l-241.351111 241.351111a28.444444 28.444444 0 1 1-40.248889-40.220444l241.351111-241.351112a28.444444 28.444444 0 0 1 48.583111 20.110223z\" ></path><path d=\"M661.134222 391.338667a28.444444 28.444444 0 0 1-8.334222 20.110222l-241.351111 241.351111a28.444444 28.444444 0 1 1-40.248889-40.220444l241.351111-241.351112a28.444444 28.444444 0 0 1 48.583111 20.110223z\" ></path><path d=\"M661.134222 632.689778a28.444444 28.444444 0 0 1-48.583111 20.110222l-241.351111-241.351111a28.444444 28.444444 0 1 1 40.248889-40.220445l241.351111 241.351112a28.444444 28.444444 0 0 1 8.334222 20.110222z\" ></path><path d=\"M661.134222 632.689778a28.444444 28.444444 0 0 1-48.583111 20.110222l-241.351111-241.351111a28.444444 28.444444 0 1 1 40.248889-40.220445l241.351111 241.351112a28.444444 28.444444 0 0 1 8.334222 20.110222z\" ></path></symbol><symbol id=\"icon-wenjianjia\" viewBox=\"0 0 1024 1024\"><path d=\"M855.04 385.024q19.456 2.048 38.912 10.24t33.792 23.04 21.504 37.376 2.048 54.272q-2.048 8.192-8.192 40.448t-14.336 74.24-18.432 86.528-19.456 76.288q-5.12 18.432-14.848 37.888t-25.088 35.328-36.864 26.112-51.2 10.24l-567.296 0q-21.504 0-44.544-9.216t-42.496-26.112-31.744-40.96-12.288-53.76l0-439.296q0-62.464 33.792-97.792t95.232-35.328l503.808 0q22.528 0 46.592 8.704t43.52 24.064 31.744 35.84 12.288 44.032l0 11.264-53.248 0q-40.96 0-95.744-0.512t-116.736-0.512-115.712-0.512-92.672-0.512l-47.104 0q-26.624 0-41.472 16.896t-23.04 44.544q-8.192 29.696-18.432 62.976t-18.432 61.952q-10.24 33.792-20.48 65.536-2.048 8.192-2.048 13.312 0 17.408 11.776 29.184t29.184 11.776q31.744 0 43.008-39.936l54.272-198.656q133.12 1.024 243.712 1.024l286.72 0z\" ></path></symbol><symbol id=\"icon-AIshengcheng\" viewBox=\"0 0 1024 1024\"><path d=\"M512 101.54666667l60.611048 199.143619a286.72 286.72 0 0 0 190.805333 190.805333l199.143619 60.611048-199.143619 60.61104799a286.72 286.72 0 0 0-190.805333 190.80533301L512 1002.66666667l-60.611048-199.143619a286.72 286.72 0 0 0-190.805333-190.80533301L61.44 552.10666667l199.143619-60.611048a286.72 286.72 0 0 0 190.805333-190.805333L512 101.54666667z\" ></path><path d=\"M235.52 265.38666667l10.337524 34.08457102a40.96 40.96 0 0 0 27.25790499 27.25790498l34.035809 10.337524-34.035809 10.386286a40.96 40.96 0 0 0-27.25790499 27.257904l-10.38628601 34.03581-10.337524-34.03581a40.96 40.96 0 0 0-27.30666599-27.306666L163.84 337.06666667l34.08457101-10.337524a40.96 40.96 0 0 0 27.25790499-27.306666l10.337524-34.03581zM829.44 183.46666667a46.12876199 46.12876199 0 0 0 30.72 30.72 46.12876199 46.12876199 0 0 0-30.72 30.72 46.177524 46.177524 0 0 0-30.72-30.72 46.177524 46.177524 0 0 0 30.72-30.72zM518.339048 27.42857167a46.177524 46.177524 0 0 0 30.72 30.72 46.177524 46.177524 0 0 0-30.72 30.72 46.177524 46.177524 0 0 0-30.72-30.72 46.177524 46.177524 0 0 0 30.72-30.72zM645.36380999 27.18476167l42.42285701 50.22476201c13.16571399 15.60380999 33.35314299 23.69828598 53.686857 21.45523799l65.340952-7.265524-50.22476201 42.42285801a61.44 61.44 0 0 0-21.45523799 53.63809499l7.21676201 65.340952-42.374095-50.22476201a61.44 61.44 0 0 0-53.686857-21.45523799l-65.34095301 7.265524 50.224762-42.422857c15.60380999-13.16571399 23.69828598-33.304381 21.455238-53.63809499l-7.26552299-65.34095301z\" ></path></symbol><symbol id=\"icon-sijiaoxing\" viewBox=\"0 0 1024 1024\"><path d=\"M532.8 134.464c-12.16-35.392-32-35.328-44.032 0.128l-67.84 200c-12.096 35.456-50.88 74.24-86.336 86.336L136.064 488.448c-35.456 12.032-35.52 32-0.192 44.288l197.376 68.672c35.328 12.288 74.24 51.328 86.4 86.72l68.864 200.192c12.16 35.392 31.872 35.328 43.84-0.128l67.264-199.36c11.968-35.456 50.688-74.368 86.08-86.464l201.664-69.12c35.392-12.096 35.392-31.808-0.064-43.776l-198.464-67.2c-35.456-11.968-74.432-50.688-86.592-86.08L532.8 134.464z\" ></path><path d=\"M883.648 111.552c-3.456-10.112-9.152-10.112-12.608 0l-19.392 57.216a44.672 44.672 0 0 1-24.64 24.64l-56.704 19.264c-10.112 3.456-10.176 9.152 0 12.672l56.32 19.648a45.44 45.44 0 0 1 24.704 24.768l19.648 57.216c3.52 10.112 9.152 10.048 12.544-0.064l19.2-56.96a44.672 44.672 0 0 1 24.64-24.704l57.6-19.712c10.112-3.52 10.112-9.152 0-12.544l-56.704-19.2a44.8 44.8 0 0 1-24.768-24.576l-19.84-57.6z\" ></path></symbol><symbol id=\"icon-hand\" viewBox=\"0 0 1024 1024\"><path d=\"M824.515155 243.164159c-16.249079 0-31.582299 4.389984-44.734854 12.033058l0-56.767911c0-49.345871-40.10337-89.468684-89.468684-89.468684-18.438954 0-35.519981 5.591345-49.800219 15.155165-12.236696-34.83539-45.433772-59.890019-84.405365-59.890019-38.968523 0-72.189136 25.054629-84.420715 59.890019-14.21884-9.56382-31.343869-15.155165-49.7818-15.155165-49.343825 0-89.467661 40.122813-89.467661 89.468684l0 329.831031-60.22157-104.365976c-11.664667-21.25407-30.735002-36.369326-53.626361-42.637076-22.321378-6.072299-45.541219-2.863211-65.399499 9.041934-40.582277 24.332175-56.048527 79.356372-34.444487 122.669854 1.333368 2.708692 29.879518 61.160965 118.979812 239.312434 41.960671 83.877339 88.004333 143.902434 136.845715 178.239474 38.334073 26.956955 64.831564 28.353768 69.746504 28.353768l223.674269 0c38.047548 0 73.438593-12.362562 105.236809-36.785811 29.794583-22.935362 55.745628-56.136531 76.933183-98.596576 41.765219-83.532485 63.869656-199.123107 63.869656-334.333578L914.029888 332.587817c0-49.342802-40.148395-89.469708-89.467661-89.469708L824.515155 243.164159zM869.250008 489.203808c0 128.264269-20.444635 236.908688-59.150168 314.276776-25.255197 50.504254-70.422909 110.702288-142.157697 110.702288l-223.234247 0c-1.726318-0.130983-20.576641-2.228761-48.974411-23.502273-28.308743-21.186532-71.795163-65.835428-118.017904-158.318772-90.669022-181.384094-118.541837-238.506069-118.803803-239.050468-0.041956-0.089028-0.041956-0.130983-0.085958-0.176009-11.228739-22.499433-3.276626-51.988048 17.388019-64.36903 9.304923-5.593392 20.180622-7.057743 30.645974-4.239558 11.138688 3.036149 20.488637 10.552334 26.253944 21.100574 0.10847 0.130983 0.198521 0.326435 0.284479 0.458441l69.829392 121.009028c14.264888 26.079982 30.319539 37.004799 47.730071 32.593326 17.452487-4.414543 26.253944-21.889543 26.253944-51.770084L377.211643 198.429305c0-24.64019 20.09671-44.734854 44.732807-44.734854 24.642237 0 44.738947 20.094664 44.738947 44.734854l0 290.774503c0 12.342096 10.021238 22.367427 22.366404 22.367427 12.341073 0 22.36538-10.025331 22.36538-22.367427L511.415181 153.694451c0-24.641213 20.09671-44.73383 44.735877-44.73383 24.638143 0 44.735877 20.092617 44.735877 44.73383l0 335.509357c0 12.342096 10.002818 22.367427 22.36538 22.367427 12.363585 0 22.367427-10.025331 22.367427-22.367427L645.619742 198.429305c0-24.64019 20.098757-44.734854 44.73383-44.734854 24.63712 0 44.735877 20.094664 44.735877 44.734854l0 335.509357c0 12.319583 10.001795 22.367427 22.367427 22.367427 12.363585 0 22.366404-10.047844 22.366404-22.367427L779.82328 332.632843c0-24.641213 20.09671-44.73383 44.735877-44.73383 24.635073 0 44.731784 20.092617 44.731784 44.73383l0 156.570965L869.250008 489.203808z\" ></path></symbol><symbol id=\"icon-xiaoditu\" viewBox=\"0 0 1024 1024\"><path d=\"M512 32a32 32 0 0 1 31.488 26.24L544 64v33.216a416.064 416.064 0 0 1 382.784 382.848L960 480a32 32 0 0 1 5.76 63.488L960 544h-33.216a416.064 416.064 0 0 1-382.72 382.784L544 960a32 32 0 0 1-63.488 5.76L480 960v-33.216a416.064 416.064 0 0 1-382.784-382.72L64 544a32 32 0 0 1-5.76-63.488L64 480h33.216A416.064 416.064 0 0 1 480 97.28L480 64A32 32 0 0 1 512 32z m32 129.408V192a32 32 0 0 1-63.488 5.76L480 192v-30.592A352.128 352.128 0 0 0 161.408 480H192a32 32 0 0 1 5.76 63.488L192 544h-30.592A352.128 352.128 0 0 0 480 862.656V832a32 32 0 0 1 63.488-5.76L544 832v30.592A352.128 352.128 0 0 0 862.656 544L832 544a32 32 0 0 1-5.76-63.488L832 480h30.592A352.128 352.128 0 0 0 544 161.408zM512 320a192 192 0 1 1 0 384 192 192 0 0 1 0-384z m0 64a128 128 0 1 0 0 256 128 128 0 0 0 0-256z\" ></path></symbol><symbol id=\"icon-add1\" viewBox=\"0 0 1024 1024\"><path d=\"M511.954846 142.505688c-204.095599 0-369.449158 165.443866-369.449158 369.449158S307.949555 881.494312 511.954846 881.494312 881.404004 716.050445 881.404004 512.045154 716.050445 142.505688 511.954846 142.505688z m221.795926 394.2838H536.789488v196.961284h-49.578976V536.789488H290.158921v-49.578976h196.961284V290.158921h49.578975v196.961284h196.961284v49.669283z\" ></path></symbol><symbol id=\"icon-remark\" viewBox=\"0 0 1024 1024\"><path d=\"M882.385702 78.966129h-101.235346V33.659793c0-18.55768-15.230096-33.659793-33.659792-33.659793-18.55768 0-33.659793 15.230096-33.659793 33.659793v45.306336H342.933133V33.659793c0-18.55768-15.230096-33.659793-33.659792-33.659793-18.55768 0-33.659793 15.230096-33.659793 33.659793v45.306336H140.590426c-55.417073 0-100.979378 45.178353-100.979377 100.979378v741.795275c0 55.417073 45.178353 100.979378 100.979377 100.979378h741.795276c55.417073 0 100.979378-45.178353 100.979377-100.979378V179.945507c0-55.417073-45.178353-100.979378-100.979377-100.979378z m33.531808 842.774653c0 18.429696-15.230096 33.531809-33.531808 33.531809H140.590426c-18.429696 0-33.531809-15.230096-33.531808-33.531809V179.945507c0-18.429696 15.230096-33.531809 33.531808-33.531809h134.895138v9.5988c0 18.55768 15.230096 33.659793 33.659793 33.659793 18.55768 0 33.659793-15.230096 33.659792-33.659793v-9.5988h370.769654v9.5988c0 18.55768 15.230096 33.659793 33.659793 33.659793 18.55768 0 33.659793-15.230096 33.659792-33.659793v-9.5988h101.235346c18.429696 0 33.531809 15.230096 33.531808 33.531809v741.795275z m0 0\" ></path><path d=\"M781.150356 314.968629H241.825772c-18.55768 0-33.659793 15.230096-33.659793 33.659792 0 18.55768 15.102112 33.659793 33.659793 33.659793h539.324584c18.55768 0 33.659793-15.230096 33.659793-33.659793 0-18.55768-15.102112-33.659793-33.659793-33.659792zM781.150356 517.183352H241.825772c-18.55768 0-33.659793 15.230096-33.659793 33.659793 0 18.55768 15.102112 33.659793 33.659793 33.659792h539.324584c18.55768 0 33.659793-15.230096 33.659793-33.659792 0-18.55768-15.102112-33.659793-33.659793-33.659793zM511.488064 719.398075H241.825772c-18.55768 0-33.659793 15.230096-33.659793 33.659793 0 18.55768 15.102112 33.659793 33.659793 33.659792h269.662292c18.55768 0 33.659793-15.230096 33.659793-33.659792 0-18.55768-15.102112-33.659793-33.659793-33.659793zM817.241845 751.394076H770.527684v-46.714161c0-17.91776-14.71816-32.635921-32.63592-32.63592S705.255843 686.762155 705.255843 704.679915V751.394076h-46.714161c-17.91776 0-32.635921 14.71816-32.63592 32.63592s14.71816 32.635921 32.63592 32.635921H705.255843v46.71416c0 17.91776 14.71816 32.635921 32.635921 32.635921s32.635921-14.71816 32.63592-32.635921V816.665917h46.714161c17.91776 0 32.635921-14.71816 32.63592-32.635921S835.159605 751.394076 817.241845 751.394076z\" ></path></symbol><symbol id=\"icon-cursor\" viewBox=\"0 0 1024 1024\"><path d=\"M288 83.008V900.992l52.992-44 128.992-108 65.024 129.024 13.984 28.992 29.024-15.008 98.976-51.008 28-13.984-13.984-29.024-59.008-116 162.016-20 64.96-8L813.024 608 343.04 136.992 288 83.008z m64 155.008l370.016 368.96-144 17.024-45.024 6.016 21.024 40.96 65.984 128-42.016 22.016-68.992-137.984-19.008-36-30.976 25.984L352 763.008V237.984z\" ></path></symbol><symbol id=\"icon-agent\" viewBox=\"0 0 1024 1024\"><path d=\"M690.185 275.766c88.365 0 160 71.634 160 160v239.488c0 88.365-71.635 160-160 160H339.766c-88.366 0-160-71.635-160-160V435.766c0-88.366 71.634-160 160-160h350.419z m-350.419 64c-53.02 0-96 42.98-96 96v239.488c0 53.019 42.98 96 96 96h350.419c53.019 0 96-42.981 96-96V435.766c0-53.02-42.981-96-96-96H339.766z m56.28 120.882c52.056 0.001 94.256 42.201 94.256 94.257 0 52.057-42.2 94.256-94.256 94.256s-94.257-42.199-94.257-94.256c0-52.056 42.2-94.257 94.257-94.257z m240.348 0c52.056 0.001 94.255 42.201 94.255 94.257 0 52.057-42.199 94.256-94.255 94.256-52.057 0-94.257-42.199-94.257-94.256 0-52.056 42.2-94.257 94.257-94.257zM128 481.562c17.673 0 32 14.327 32 32v83.907c0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32v-83.907c0-17.673 14.327-32 32-32z m769.113 0c17.673 0 32 14.327 32 32v83.907c0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32v-83.907c0-17.673 14.327-32 32-32z m-501.067 43.086c-16.71 0-30.257 13.547-30.257 30.257s13.547 30.256 30.257 30.256 30.256-13.546 30.256-30.256-13.546-30.256-30.256-30.257z m240.348 0c-16.711 0-30.257 13.547-30.257 30.257s13.546 30.256 30.257 30.256c16.71 0 30.255-13.546 30.255-30.256s-13.545-30.256-30.255-30.257zM556.931 192c17.673 0 32 14.327 32 32 0 17.673-14.327 32-32 32h-83.908c-17.673 0-32-14.327-32-32 0-17.673 14.327-32 32-32h83.908z\" ></path></symbol><symbol id=\"icon-flow\" viewBox=\"0 0 1024 1024\"><path d=\"M339.264 809.6l3.712 1.92 158.272 91.776c3.712 2.176 8.128 2.56 12.032 1.088l2.304-1.088 158.272-91.776a43.072 43.072 0 0 1 59.008 15.872 43.52 43.52 0 0 1-12.288 56.96l-3.52 2.304-158.272 91.776a100.416 100.416 0 0 1-95.168 3.008l-5.568-3.008-158.272-91.776a43.52 43.52 0 0 1-15.808-59.264 43.072 43.072 0 0 1 55.296-17.792zM870.4 636.992c49.472 0 89.6 40.32 89.6 90.048 0 49.664-40.128 89.984-89.6 89.984-49.472 0-89.6-40.32-89.6-89.984 0-49.728 40.128-90.048 89.6-90.048z m-716.8 0c49.472 0 89.6 40.32 89.6 90.048 0 49.664-40.128 89.984-89.6 89.984-49.472 0-89.6-40.32-89.6-89.984 0-49.728 40.128-90.048 89.6-90.048z m386.816-350.784l157.696 91.008a64 64 0 0 1 32 55.424v182.144a64 64 0 0 1-32 55.424l-157.696 91.008a64 64 0 0 1-64 0L318.72 670.208a64 64 0 0 1-32-55.424V432.64a64 64 0 0 1 32-55.424l157.696-91.008a64 64 0 0 1 64 0z m172.928-127.36l3.712 1.92 158.208 91.712c29.376 17.024 48.128 47.68 50.24 81.344l0.192 6.4v183.488a43.264 43.264 0 0 1-43.2 43.392 43.264 43.264 0 0 1-43.008-39.232l-0.192-4.16V340.16c0-4.288-1.92-8.32-5.12-11.072L832 327.68 673.92 235.904a43.52 43.52 0 0 1-15.808-59.264 43.072 43.072 0 0 1 55.296-17.792z m-354.56 17.792a43.52 43.52 0 0 1-12.288 56.96l-3.52 2.304L184.768 327.68a14.464 14.464 0 0 0-7.04 9.984l-0.192 2.56v183.488a43.264 43.264 0 0 1-43.2 43.392 43.264 43.264 0 0 1-43.008-39.232l-0.192-4.16V340.16c0-34.048 17.024-65.6 45.056-84.288l5.376-3.392 158.208-91.712a43.072 43.072 0 0 1 59.008 15.872zM511.616 32c49.472 0 89.6 40.32 89.6 89.984 0 49.728-40.128 90.048-89.6 90.048-49.472 0-89.6-40.32-89.6-90.048 0-49.664 40.128-89.984 89.6-89.984z\" ></path></symbol><symbol id=\"icon-logo\" viewBox=\"0 0 1024 1024\"><path d=\"M512.512 54.4C764.544 54.4 969.6 259.712 969.6 512v2.88c0 86.4-29.44 166.976-79.296 215.68-30.08 29.44-65.344 45.184-102.08 45.184h-2.24c-46.272-0.832-82.88-26.24-108.608-74.368l-4.16-8.256-5.888 7.68c-39.424 47.552-94.4 74.88-152.896 74.88h-3.2c-115.2-1.92-206.592-109.696-204.288-239.616C309.12 407.552 403.2 303.68 518.08 303.68h3.2c41.024 0.704 71.232 12.8 113.856 43.712l8.96 6.72v-11.52c0-6.784 1.024-12.224 4.224-16.896l2.816-3.392c5.824-5.76 10.816-6.656 23.616-6.72h13.44c14.72 0.064 20.608 1.152 27.136 7.68 4.928 4.864 7.232 11.456 7.232 19.392V528c0 99.584 27.648 162.624 66.176 163.328h0.896c21.568 0 45.248-16.96 64.384-47.552 21.824-34.816 34.432-81.792 35.328-131.904 0-205.76-168.064-373.184-374.592-373.184-206.592 0-374.656 167.424-374.656 373.248 0 205.824 168.064 373.312 374.656 373.312 43.072 0 85.312-7.296 125.632-21.568 8.96-3.2 17.024-6.592 19.456-7.808a40.768 40.768 0 0 1 52.864 18.368l2.88 5.76c4.608 9.344 5.248 19.84 1.728 29.632a37.504 37.504 0 0 1-20.032 21.76 324.352 324.352 0 0 1-32.768 13.184 460.672 460.672 0 0 1-150.336 24.96C260.672 969.6 54.4 764.352 54.4 512 54.4 259.648 259.904 54.4 512.512 54.4z m2.24 329.088c-66.368 0-121.408 70.4-121.408 157.888s55.04 157.824 121.408 157.824c66.304 0 121.344-70.4 121.344-157.824 0-87.488-55.04-157.888-121.344-157.888z\" ></path></symbol><symbol id=\"icon-chat\" viewBox=\"0 0 1024 1024\"><path d=\"M826.88 35.84a166.4 166.4 0 1 1-161.984 204.864h-445.44a122.24 122.24 0 0 0-9.6 243.968l9.6 0.384h576a197.76 197.76 0 0 1 11.2 395.328l-11.264 0.32H348.8a166.464 166.464 0 1 1 0-76.8h446.72a120.96 120.96 0 0 0 9.408-241.728l-9.472-0.32h-576a199.04 199.04 0 0 1-11.264-397.632l11.264-0.32h445.44c17.344-73.408 83.328-128 161.984-128z m-640 716.8a89.6 89.6 0 1 0 0 179.2 89.6 89.6 0 0 0 0-179.2z m640-640a89.6 89.6 0 1 0 0 179.2 89.6 89.6 0 0 0 0-179.2z\" ></path></symbol><symbol id=\"icon-sql-transaction\" viewBox=\"0 0 1024 1024\"><path d=\"M405.875 118c89.239 0 173.203 11.837 236.305 32.87 3.28 1.093 6.5 2.21 9.657 3.35l2.357 0.859c26.973 9.933 49.338 21.597 66.225 34.904 23.535 18.547 37.331 41.018 37.331 66.635l-0.004-0.718 0.004 0.188v162.51C878.078 434.278 971 537.171 971 661.765 971 797.204 861.196 907 725.75 907c-38.19 0-75.165-8.762-108.605-25.303C557.57 898.002 483.7 907 405.875 907c-89.239 0-173.203-11.837-236.305-32.87-3.28-1.093-6.5-2.21-9.657-3.35l-2.357-0.859c-26.973-9.933-49.338-21.597-66.225-34.905-23.3-18.36-37.054-40.568-37.331-65.866V256.423c0.07-25.536 13.855-47.94 37.33-66.44 16.888-13.307 39.253-24.971 66.226-34.904l2.357-0.86a414.19 414.19 0 0 1 9.657-3.35C232.672 129.838 316.636 118 405.875 118zM117.999 681.725l0.001 86.657c0 1.057 0.36 2.357 1.167 3.887l0.243 0.443c0.638 1.124 1.508 2.363 2.644 3.712l0.468 0.546c0.563 0.644 1.184 1.31 1.868 2.001l0.6 0.598c0.514 0.502 1.06 1.017 1.639 1.543l0.71 0.637 0.368 0.322 0.759 0.653 0.792 0.664c0.27 0.223 0.545 0.448 0.826 0.675l0.86 0.686c2.993 2.359 6.387 4.709 10.162 7.036l1.272 0.775c0.429 0.258 0.862 0.516 1.3 0.773l1.329 0.771 1.356 0.77 1.383 0.766c1.398 0.766 2.836 1.528 4.315 2.286l1.492 0.757c1.004 0.504 2.025 1.005 3.064 1.505l1.572 0.748c0.529 0.25 1.061 0.498 1.599 0.745l1.624 0.742a246.56 246.56 0 0 0 5.028 2.205l1.727 0.727 0.873 0.362 1.765 0.722 0.892 0.36 1.803 0.715c1.512 0.595 3.05 1.185 4.615 1.77l1.888 0.7 1.913 0.696c0.642 0.231 1.288 0.462 1.937 0.691l1.961 0.686c0.658 0.228 1.32 0.455 1.985 0.681l2.009 0.676C245.908 832.114 323.13 843 405.875 843c50.403 0 98.793-4.035 141.664-11.446l1.061-0.186-0.08-0.083a246.17 246.17 0 0 1-31.783-41.173 245.405 245.405 0 0 1-14.168-26.565 244.405 244.405 0 0 1-11.632-30.817c-27.528 2.435-56.05 3.682-85.062 3.682-89.239 0-173.203-11.837-236.305-32.87l-2.448-0.824a397.1 397.1 0 0 1-13.058-4.69l-2.299-0.882c-12.308-4.765-23.593-9.909-33.766-15.421zM725.75 480.529c-52.166 0-100.693 22.114-134.885 60.176l0.106-0.117c-0.072 0.082-0.145 0.163-0.218 0.243-29.617 33.027-46.253 75.644-46.253 120.934 0 10.419 0.876 20.714 2.604 30.817l-0.015-0.09 0.024 0.136c8.688 50.71 38.729 95.09 81.78 122.357a181.75 181.75 0 0 0 7.597 4.557C663.477 834.845 693.983 843 725.75 843 825.851 843 907 761.857 907 661.765c0-100.092-81.149-181.236-181.25-181.236z m43.196 72.582l0.378 0.36 0.378 0.371 85.3 85.295a32.218 32.218 0 0 1 1.264 1.337l0.348 0.397 0.08 0.093a31.845 31.845 0 0 1 7.585 18.292l0.032 0.469 0.028 0.518 0.02 0.503 0.016 0.721v0.599l-0.013 0.612-0.034 0.831-0.035 0.56-0.015 0.199a31.79 31.79 0 0 1-2.244 9.534 31.779 31.779 0 0 1-5.736 9.217c-0.195 0.22-0.395 0.438-0.598 0.654l-0.341 0.357-0.41 0.414-85.247 85.243c-12.498 12.496-32.759 12.496-45.255-0.002-12.372-12.372-12.495-32.354-0.37-44.877l0.371-0.377 30.668-30.667H619.125c-17.673 0-32-14.326-32-32 0-17.496 14.042-31.712 31.47-31.995l0.53-0.004 135.991-0.001-30.668-30.665c-12.497-12.497-12.498-32.758-0.001-45.255 12.247-12.249 31.954-12.493 44.5-0.733z m-650.948-41.974l0.001 86.551 0.001 0.106c0 1.358 0.594 3.12 1.97 5.253l0.319 0.48 0.345 0.492c0.298 0.416 0.624 0.843 0.98 1.283l0.44 0.534 0.468 0.546c0.322 0.368 0.662 0.743 1.023 1.126l0.556 0.58 0.289 0.295 0.6 0.598c0.514 0.502 1.06 1.017 1.639 1.543l0.71 0.636c0.243 0.214 0.49 0.43 0.743 0.648l0.776 0.659c0.264 0.221 0.534 0.444 0.809 0.67l0.843 0.68 0.434 0.343c2.66 2.097 5.638 4.187 8.918 6.26l1.244 0.777c4.194 2.586 8.858 5.143 13.966 7.652l1.545 0.751 1.572 0.748a240.411 240.411 0 0 0 9.111 4.056l1.74 0.725 0.88 0.362 1.777 0.72 0.898 0.358 1.815 0.713c1.219 0.474 2.454 0.946 3.705 1.414l1.888 0.7 0.954 0.349 1.925 0.693 1.949 0.689 1.973 0.683 1.997 0.679 1.007 0.337c56.1 18.699 133.323 29.586 216.067 29.586 25.497 0 50.549-1.028 74.743-3.032a244.642 244.642 0 0 1-0.118-7.615c0-35.321 7.51-69.501 21.556-100.676-30.875 3.12-63.193 4.735-96.181 4.735-89.239 0-173.203-11.838-236.305-32.87a401.903 401.903 0 0 1-15.506-5.515l-2.299-0.881c-0.762-0.295-1.52-0.592-2.275-0.89l-2.252-0.898c-10.56-4.258-20.327-8.804-29.24-13.633z m575.753-170.588c-14.899 8.072-32.183 15.354-51.571 21.817-63.102 21.032-147.066 32.87-236.305 32.87s-173.203-11.838-236.305-32.87c-19.388-6.463-36.672-13.745-51.57-21.817l-0.001 86.538 0.001 0.119c0 1.358 0.594 3.12 1.97 5.253l0.319 0.48 0.345 0.492 0.371 0.504c0.193 0.256 0.395 0.515 0.609 0.78l0.44 0.533 0.468 0.546 0.497 0.557c0.085 0.094 0.172 0.188 0.26 0.283l0.54 0.575c0.556 0.58 1.156 1.178 1.804 1.792l0.663 0.62c0.113 0.104 0.227 0.21 0.343 0.314l0.71 0.637 0.368 0.323 0.759 0.653 0.392 0.33 0.809 0.67c0.413 0.337 0.838 0.679 1.277 1.024 8.149 6.422 19.265 12.78 32.953 18.78l1.689 0.734c0.85 0.366 1.711 0.73 2.581 1.093l1.753 0.723 0.885 0.36 1.79 0.718a307.437 307.437 0 0 0 8.362 3.177l1.925 0.693 1.949 0.688 1.973 0.684 1.997 0.678 1.007 0.338c56.1 18.699 133.323 29.586 216.067 29.586 51.494 0 101.043-4.199 145.052-12.047l0.004-0.009a247.268 247.268 0 0 1 1.087-1.097l-0.293 0.294a247.187 247.187 0 0 1 18.6-16.92 245.81 245.81 0 0 1 23.027-16.754 244.71 244.71 0 0 1 32.317-17.475 244.1 244.1 0 0 1 66.656-19.02l1.425-0.189zM405.875 182c-82.744 0-159.967 10.887-216.067 29.586l-2.009 0.676c-0.665 0.226-1.327 0.453-1.985 0.68l-1.96 0.687c-0.325 0.114-0.65 0.23-0.972 0.345l-1.925 0.693-1.901 0.698c-1.889 0.7-3.741 1.407-5.556 2.12l-1.803 0.716-0.892 0.36-1.765 0.721c-0.584 0.242-1.164 0.483-1.74 0.726l-1.714 0.73c-1.418 0.609-2.81 1.222-4.174 1.839l-1.624 0.741a205.141 205.141 0 0 0-8.463 4.135l-1.452 0.76c-7.43 3.938-13.774 7.975-18.93 12.038l-0.859 0.686-0.417 0.338-0.809 0.67-0.776 0.659c-0.253 0.217-0.5 0.433-0.743 0.647l-0.71 0.637-0.679 0.626c-0.331 0.31-0.651 0.615-0.96 0.917l-0.6 0.598a40.285 40.285 0 0 0-2.986 3.343l-0.399 0.516c-2.117 2.806-3.005 5.07-3.005 6.73 0 1.66 0.888 3.923 3.005 6.73l0.399 0.515a40.285 40.285 0 0 0 2.986 3.344l0.6 0.597 0.313 0.303 0.647 0.615 0.679 0.625 0.351 0.317 0.727 0.642 0.759 0.653 0.392 0.331 0.809 0.67 0.417 0.338 0.86 0.686c5.155 4.063 11.498 8.1 18.929 12.037l1.452 0.761a210.812 210.812 0 0 0 10.909 5.246l1.663 0.737c0.559 0.245 1.122 0.489 1.689 0.733l1.714 0.73c0.288 0.12 0.577 0.242 0.867 0.362l1.753 0.724 0.885 0.36 1.79 0.718c2.103 0.835 4.257 1.661 6.46 2.478l1.902 0.698 1.925 0.694 1.949 0.688 1.973 0.684 1.997 0.678 1.007 0.337c56.1 18.7 133.323 29.586 216.067 29.586s159.967-10.886 216.067-29.586c0.337-0.112 0.673-0.224 1.007-0.337l1.997-0.678 1.973-0.684 1.95-0.688 1.924-0.694 1.901-0.698a303.164 303.164 0 0 0 6.46-2.478l1.79-0.718 0.886-0.36 1.753-0.724c0.29-0.12 0.579-0.242 0.867-0.363l1.714-0.73c0.567-0.243 1.13-0.487 1.689-0.732l1.663-0.737c3.85-1.723 7.49-3.474 10.91-5.246l1.451-0.76c7.43-3.938 13.774-7.975 18.93-12.038l0.859-0.686 0.417-0.338 0.809-0.67c0.132-0.11 0.263-0.22 0.392-0.33l0.76-0.654 0.726-0.642 0.351-0.317 0.679-0.625 0.647-0.615c0.105-0.101 0.21-0.202 0.312-0.303l0.601-0.597a40.285 40.285 0 0 0 2.986-3.344l0.399-0.516c2.117-2.806 3.005-5.07 3.005-6.73 0-1.66-0.888-3.923-3.005-6.729l-0.399-0.516a40.285 40.285 0 0 0-2.986-3.343l-0.6-0.598a58.596 58.596 0 0 0-0.96-0.917l-0.679-0.626-0.71-0.637c-0.243-0.214-0.49-0.43-0.743-0.647l-0.776-0.66-0.809-0.669a88.944 88.944 0 0 0-0.417-0.338l-0.86-0.686c-5.155-4.063-11.498-8.1-18.929-12.037l-1.452-0.76a205.141 205.141 0 0 0-8.463-4.136l-1.624-0.741a244.534 244.534 0 0 0-4.174-1.84l-1.714-0.729c-0.576-0.243-1.156-0.484-1.74-0.726l-1.765-0.721-0.892-0.36-1.803-0.715a305.328 305.328 0 0 0-5.556-2.121l-1.9-0.698-1.926-0.693c-0.323-0.116-0.647-0.23-0.971-0.345l-1.961-0.686c-0.658-0.228-1.32-0.455-1.985-0.681l-2.009-0.676C565.842 192.886 488.62 182 405.875 182z\" ></path></symbol><symbol id=\"icon-continue\" viewBox=\"0 0 1066 1024\"><path d=\"M533.333333 0c281.6 0 512 230.4 512 512s-230.4 512-512 512c-281.557333 0-512-230.4-512-512s230.4-512 512-512zM368.128 119.210667A431.232 431.232 0 0 0 140.8 346.624a423.808 423.808 0 0 0 0 330.752 431.274667 431.274667 0 0 0 227.413333 227.413333 423.381333 423.381333 0 0 0 330.325334 0 431.146667 431.146667 0 0 0 227.413333-227.413333 423.808 423.808 0 0 0 0-330.752 431.146667 431.146667 0 0 0-227.413333-227.413333 423.338667 423.338667 0 0 0-330.368 0zM582.101333 341.333333l211.413334 192-211.413334 192V341.333333zM362.666667 341.333333l211.413333 192L362.666667 725.333333V341.333333z\" ></path></symbol><symbol id=\"icon-break\" viewBox=\"0 0 1024 1024\"><path d=\"M285.696 53.504a24.6272 24.6272 0 0 1 32.7168 11.9296l416.4608 893.0304a24.6272 24.6272 0 0 1-44.6976 20.8384L273.7664 86.272a24.6272 24.6272 0 0 1 11.9296-32.768z m89.7536 540.6208a20.48 20.48 0 0 1 14.4896 34.9696l-95.8464 95.7952a285.7984 285.7984 0 0 0 259.6864 78.4896l46.336 99.4304a393.728 393.728 0 0 1-103.5776 13.824 393.5232 393.5232 0 0 1-278.784-115.4048l-80.384 80.384A20.48 20.48 0 0 1 102.4 867.2256v-242.3296a30.72 30.72 0 0 1 30.72-30.72h242.3296z m508.7744 0a394.4448 394.4448 0 0 1-151.296 243.6608L686.08 737.28a288.4096 288.4096 0 0 0 88.1664-143.1552h109.9776zM496.5376 128.3072c108.9536 0 207.104 44.032 278.784 115.4048l74.5472-79.0016a20.48 20.48 0 0 1 35.3792 13.6704l4.8128 241.1008a30.72 30.72 0 0 1-30.1056 31.3344h-242.2784a20.48 20.48 0 0 1-14.4896-34.9696l95.7952-95.8464a285.7472 285.7472 0 0 0-245.248-80.9984l-46.848-100.4032a394.3936 394.3936 0 0 1 89.6512-10.24z m-224.768 70.4512l46.4384 99.4816a288.5632 288.5632 0 0 0-99.328 152.576H108.8a394.6496 394.6496 0 0 1 162.9184-252.0576z\" ></path></symbol><symbol id=\"icon-qiehuan\" viewBox=\"0 0 1024 1024\"><path d=\"M132.33 482.42c-16.45-4.65-26.93-21.18-23.7-38.31 14.28-75.9 50.02-145.78 103.36-202.09 73.97-78.08 173.91-122.69 281.43-125.6 107.51-2.9 209.72 36.22 287.81 110.19 46 43.58 80.2 95.7 101.65 154.9 6.29 17.34-2.68 36.5-20.03 42.78-17.35 6.29-36.5-2.68-42.78-20.03-17.87-49.33-46.4-92.78-84.79-129.15-65.12-61.69-150.38-94.32-240.05-91.9-89.68 2.43-173.04 39.63-234.73 104.76-44.49 46.97-74.31 105.23-86.21 168.5-3.41 18.13-20.87 30.06-39 26.65-1.01-0.19-1.99-0.43-2.96-0.7zM408.23 908.31c-61.82-17.48-118.89-49.76-166.85-95.2-46.01-43.59-80.21-95.7-101.65-154.9-6.28-17.35 2.69-36.5 20.03-42.79 17.35-6.27 36.51 2.69 42.79 20.03 17.87 49.32 46.39 92.78 84.79 129.15 65.12 61.7 150.39 94.33 240.05 91.9 89.68-2.43 173.04-39.63 234.73-104.76 44.5-46.97 74.31-105.24 86.21-168.5 3.41-18.13 20.87-30.06 39-26.65 18.07 3.4 30.07 20.87 26.65 39-14.28 75.89-50.02 145.78-103.36 202.09-73.97 78.08-173.91 122.69-281.43 125.6-41.47 1.13-82.15-4-120.96-14.97z\" ></path><path d=\"M842.51 424.91l-0.22-0.06c-17.72-5.14-27.92-23.67-22.78-41.39l28.22-97.31c5.14-17.72 23.56-28.27 41.39-22.78 17.72 5.14 27.92 23.67 22.78 41.39l-28.22 97.31c-5.12 17.64-23.52 27.83-41.17 22.84zM133.87 776.24l-0.22-0.06c-17.72-5.14-27.92-23.67-22.78-41.39l28.22-97.31c5.12-17.64 23.52-27.83 41.17-22.84l0.22 0.06c17.72 5.14 27.92 23.67 22.78 41.39l-28.22 97.31c-5.12 17.64-23.53 27.83-41.17 22.84z\" ></path></symbol><symbol id=\"icon-add\" viewBox=\"0 0 1024 1024\"><path d=\"M853.333333 480H544V170.666667c0-17.066667-14.933333-32-32-32s-32 14.933333-32 32v309.333333H170.666667c-17.066667 0-32 14.933333-32 32s14.933333 32 32 32h309.333333V853.333333c0 17.066667 14.933333 32 32 32s32-14.933333 32-32V544H853.333333c17.066667 0 32-14.933333 32-32s-14.933333-32-32-32z\" ></path></symbol><symbol id=\"icon-export\" viewBox=\"0 0 1024 1024\"><path d=\"M582.4 864H170.666667c-6.4 0-10.666667-4.266667-10.666667-10.666667V170.666667c0-6.4 4.266667-10.666667 10.666667-10.666667h309.333333V320c0 40.533333 34.133333 74.666667 74.666667 74.666667h160v38.4c0 17.066667 14.933333 32 32 32s32-14.933333 32-32V298.666667c0-8.533333-4.266667-17.066667-8.533334-23.466667l-170.666666-170.666667c-6.4-6.4-14.933333-8.533333-23.466667-8.533333H170.666667C130.133333 96 96 130.133333 96 170.666667v682.666666c0 40.533333 34.133333 74.666667 74.666667 74.666667h411.733333c17.066667 0 32-14.933333 32-32s-14.933333-32-32-32z m132.266667-550.4v17.066667H554.666667c-6.4 0-10.666667-4.266667-10.666667-10.666667V160h19.2l151.466667 153.6z\" ></path><path d=\"M866.133333 669.866667l-106.666666-106.666667c-12.8-12.8-32-12.8-44.8 0s-12.8 32 0 44.8l51.2 51.2H512c-17.066667 0-32 14.933333-32 32S494.933333 725.333333 512 725.333333h253.866667l-51.2 51.2c-12.8 12.8-12.8 32 0 44.8 6.4 6.4 14.933333 8.533333 23.466666 8.533334s17.066667-2.133333 23.466667-8.533334l106.666667-106.666666c8.533333-10.666667 8.533333-32-2.133334-44.8z\" ></path></symbol><symbol id=\"icon-file\" viewBox=\"0 0 1024 1024\"><path d=\"M842.666667 285.866667l-187.733334-187.733334c-14.933333-14.933333-32-21.333333-53.333333-21.333333H234.666667C194.133333 74.666667 160 108.8 160 149.333333v725.333334c0 40.533333 34.133333 74.666667 74.666667 74.666666h554.666666c40.533333 0 74.666667-34.133333 74.666667-74.666666V337.066667c0-19.2-8.533333-38.4-21.333333-51.2z m-44.8 44.8c-2.133333 2.133333-4.266667 0-8.533334 0h-170.666666c-6.4 0-10.666667-4.266667-10.666667-10.666667V149.333333c0-2.133333 0-6.4-2.133333-8.533333 0 0 2.133333 0 2.133333 2.133333l189.866667 187.733334z m-8.533334 554.666666H234.666667c-6.4 0-10.666667-4.266667-10.666667-10.666666V149.333333c0-6.4 4.266667-10.666667 10.666667-10.666666h311.466666c-2.133333 4.266667-2.133333 6.4-2.133333 10.666666v170.666667c0 40.533333 34.133333 74.666667 74.666667 74.666667h170.666666c4.266667 0 6.4 0 10.666667-2.133334V874.666667c0 6.4-4.266667 10.666667-10.666667 10.666666z\" ></path><path d=\"M640 693.333333H341.333333c-17.066667 0-32 14.933333-32 32s14.933333 32 32 32h298.666667c17.066667 0 32-14.933333 32-32s-14.933333-32-32-32zM640 522.666667H341.333333c-17.066667 0-32 14.933333-32 32s14.933333 32 32 32h298.666667c17.066667 0 32-14.933333 32-32s-14.933333-32-32-32zM341.333333 416h85.333334c17.066667 0 32-14.933333 32-32s-14.933333-32-32-32h-85.333334c-17.066667 0-32 14.933333-32 32s14.933333 32 32 32z\" ></path></symbol><symbol id=\"icon-import\" viewBox=\"0 0 1024 1024\"><path d=\"M667.733333 864H170.666667c-6.4 0-10.666667-4.266667-10.666667-10.666667V170.666667c0-6.4 4.266667-10.666667 10.666667-10.666667h309.333333V320c0 40.533333 34.133333 74.666667 74.666667 74.666667h160v38.4c0 17.066667 14.933333 32 32 32s32-14.933333 32-32V298.666667c0-8.533333-4.266667-17.066667-8.533334-23.466667l-170.666666-170.666667c-6.4-6.4-14.933333-8.533333-23.466667-8.533333H170.666667C130.133333 96 96 130.133333 96 170.666667v682.666666c0 40.533333 34.133333 74.666667 74.666667 74.666667h497.066666c17.066667 0 32-14.933333 32-32s-14.933333-32-32-32z m46.933334-550.4v17.066667H554.666667c-6.4 0-10.666667-4.266667-10.666667-10.666667V160h19.2l151.466667 153.6z\" ></path><path d=\"M853.333333 597.333333H599.466667l51.2-51.2c12.8-12.8 12.8-32 0-44.8-12.8-12.8-32-12.8-44.8 0l-106.666667 106.666667c-12.8 12.8-12.8 32 0 44.8l106.666667 106.666667c6.4 6.4 14.933333 8.533333 23.466666 8.533333s17.066667-2.133333 23.466667-8.533333c12.8-12.8 12.8-32 0-44.8L599.466667 661.333333H853.333333c17.066667 0 32-14.933333 32-32S870.4 597.333333 853.333333 597.333333z\" ></path></symbol><symbol id=\"icon-zoom\" viewBox=\"0 0 1024 1024\"><path d=\"M455.68 756.48H316.8v-64h138.88A241.92 241.92 0 0 0 697.6 448V312.32h64V448a305.92 305.92 0 0 1-305.92 308.48z\" ></path></symbol><symbol id=\"icon-sql\" viewBox=\"0 0 1024 1024\"><path d=\"M512 426.666667c-239.253333 0-426.666667-84.330667-426.666667-192s187.413333-192 426.666667-192 426.666667 84.330667 426.666667 192S751.253333 426.666667 512 426.666667zM512 85.333333C330.368 85.333333 128 146.666667 128 234.666667s202.368 149.333333 384 149.333333 384-61.333333 384-149.333333S693.632 85.333333 512 85.333333z\" ></path><path d=\"M512 597.333333c-239.253333 0-426.666667-84.330667-426.666667-192l0-170.666667c0-11.797333 9.536-21.333333 21.333333-21.333333s21.333333 9.536 21.333333 21.333333l0 170.666667c0 88 202.368 149.333333 384 149.333333s384-61.333333 384-149.333333l0-170.666667c0-11.797333 9.536-21.333333 21.333333-21.333333s21.333333 9.536 21.333333 21.333333l0 170.666667C938.666667 513.002667 751.253333 597.333333 512 597.333333z\" ></path><path d=\"M512 789.333333c-239.253333 0-426.666667-84.330667-426.666667-192l0-192c0-11.797333 9.536-21.333333 21.333333-21.333333s21.333333 9.536 21.333333 21.333333l0 192c0 88 202.368 149.333333 384 149.333333s384-61.333333 384-149.333333l0-192c0-11.797333 9.536-21.333333 21.333333-21.333333s21.333333 9.536 21.333333 21.333333l0 192C938.666667 705.002667 751.253333 789.333333 512 789.333333z\" ></path><path d=\"M512 981.333333c-239.253333 0-426.666667-84.330667-426.666667-192l0-192c0-11.797333 9.536-21.333333 21.333333-21.333333s21.333333 9.536 21.333333 21.333333l0 192c0 88 202.368 149.333333 384 149.333333s384-61.333333 384-149.333333l0-192c0-11.797333 9.536-21.333333 21.333333-21.333333s21.333333 9.536 21.333333 21.333333l0 192C938.666667 897.002667 751.253333 981.333333 512 981.333333z\" ></path></symbol><symbol id=\"icon-subflow\" viewBox=\"0 0 1024 1024\"><path d=\"M375.467 213.333a85.333 85.333 0 1 1-85.334 85.334 85.333 85.333 0 0 1 85.334-85.334m0-85.333a170.667 170.667 0 1 0 170.666 170.667A170.667 170.667 0 0 0 375.467 128zM631.467 597.333a85.333 85.333 0 1 0 170.666 0 85.333 85.333 0 1 0-170.666 0zM631.467 853.333a85.333 85.333 0 1 0 170.666 0 85.333 85.333 0 1 0-170.666 0z\" ></path><path d=\"M418.133 384H332.8v426.667A85.333 85.333 0 0 0 418.133 896V384z m256 170.667h-256V640h256v-85.333z m0 256h-256V896h256v-85.333z\" ></path></symbol><symbol id=\"icon-start\" viewBox=\"0 0 1024 1024\"><path d=\"M409 379.1c0-36.42 25.12-50.47 56.11-31.38L674 476.42c31 19.08 30.91 50 0 69L465.11 674.15c-31 19.09-56.11 5-56.11-31.38z m0 0\" ></path><path d=\"M512 109.35A401.22 401.22 0 1 1 355.28 141 400.2 400.2 0 0 1 512 109.35m0-43C265.87 66.35 66.35 265.87 66.35 512S265.87 957.65 512 957.65 957.65 758.13 957.65 512 758.13 66.35 512 66.35z\" ></path></symbol><symbol id=\"icon-assign\" viewBox=\"0 0 1024 1024\"><path d=\"M301.44 139.306667h-42.666667a119.466667 119.466667 0 0 0-119.466666 119.466666v170.666667a51.2 51.2 0 0 1-51.2 51.2 34.133333 34.133333 0 1 0 0 68.266667 51.2 51.2 0 0 1 51.2 51.2v170.666666a119.466667 119.466667 0 0 0 119.466666 119.466667h42.666667a34.133333 34.133333 0 1 0 0-68.266667h-42.666667a51.2 51.2 0 0 1-51.2-51.2v-170.666666c0-29.824-10.965333-57.898667-30.421333-79.658667l-5.12-5.674667 5.12-5.674666c19.456-21.76 30.421333-49.834667 30.421333-79.658667v-170.666667a51.2 51.2 0 0 1 51.2-51.2h42.666667a34.133333 34.133333 0 0 0 0-68.266666z m469.333333 0h-42.666666a34.133333 34.133333 0 1 0 0 68.266666h42.666666a51.2 51.2 0 0 1 51.2 51.2v170.666667c0 29.824 10.965333 57.898667 30.421334 79.658667l5.12 5.674666-5.12 5.674667a118.954667 118.954667 0 0 0-30.421334 79.658667v170.666666a51.2 51.2 0 0 1-51.2 51.2h-42.666666a34.133333 34.133333 0 1 0 0 68.266667h42.666666a119.466667 119.466667 0 0 0 119.466667-119.466667v-170.666666a51.2 51.2 0 0 1 51.2-51.2 34.133333 34.133333 0 1 0 0-68.266667 51.2 51.2 0 0 1-51.2-51.2v-170.666667a119.466667 119.466667 0 0 0-119.466667-119.466666zM674.133333 605.866667H349.866667v68.266666h324.266666v-68.266666z m0-213.333334H349.866667v68.266667h324.266666V392.533333z\" ></path></symbol><symbol id=\"icon-loop\" viewBox=\"0 0 1024 1024\"><path d=\"M867.340007 319.228555c-51.538817-51.534723-120.027677-79.890538-192.814423-79.890538H388.423497v-54.715159c0-17.449417-11.967566-23.99653-26.734898-14.519692l-131.680065 85.000929c-14.705933 9.533121-14.583137 24.802896 0.314155 34.022885l131.114177 81.201393c14.772448 9.225105 26.986631 2.430352 26.986631-15.018041v-54.524825H674.588005c116.408243 0 211.132628 94.785783 211.132628 211.133652 0 19.317974-2.552126 38.388309-7.66354 56.705489-4.550643 16.389272 5.048993 33.282011 21.438265 37.766139 2.743484 0.874927 5.481851 1.245364 8.225335 1.245364 13.459546 0 25.802666-8.971325 29.601179-22.493294 6.541997-23.743774 9.784854-48.363498 9.784854-73.163323 0-72.7847-28.355815-141.335982-79.766719-192.750979zM816.547181 734.829018l-131.052778-81.202417c-14.896268-9.218966-27.110451-2.490727-27.110451 15.020089v54.40612H349.535815c-116.41029 0-211.133651-94.723362-211.133652-211.132628 0-40.756239 11.653411-80.32749 33.653471-114.417913 9.224082-14.273075 5.106298-33.339316-9.100262-42.562374-14.273075-9.16166-33.339316-5.048993-42.500976 9.156544-28.478612 44.060495-43.561122 95.223758-43.561122 147.884118 0 72.849168 28.355815 141.27663 79.828117 192.748932 51.477418 51.538817 119.965256 79.893608 192.814424 79.893609h308.910558v54.716182c0 17.509792 12.028964 24.051789 26.734898 14.519692l131.680065-85.063351c14.705933-9.475815 14.583137-24.742521-0.314155-33.966603z\" ></path></symbol><symbol id=\"icon-script\" viewBox=\"0 0 1024 1024\"><path d=\"M263.616 870.016l440.256-751.872 61.376 35.904-440.256 751.808-61.376-35.84zM78.016 509.504l192.768-190.592-4.864-8.512-32.256-55.04-205.76 203.648a72.32 72.32 0 0 0-0.768 101.76l205.76 207.872 37.504-64.192-192.384-194.944zM996.032 459.008l-205.76-203.648-32.256 55.04-4.928 8.576 192.832 190.592-192.448 194.944 37.44 64.192 205.824-207.872a72.384 72.384 0 0 0-0.704-101.824z\" ></path></symbol><symbol id=\"icon-case\" viewBox=\"0 0 1024 1024\"><path d=\"M760.32 640c-50.688 0-96.256 20.992-129.536 54.272L424.96 600.064c8.192-20.48 12.288-43.008 12.288-66.048 0-26.112-5.632-50.688-15.36-73.216l214.528-119.808c32.256 30.72 76.288 49.152 123.904 49.152 99.84 0 181.248-81.408 181.248-181.248S860.16 27.648 760.32 27.648s-181.248 81.408-181.248 181.248c0 26.112 5.632 50.688 15.36 73.216L379.904 401.92c-32.256-30.72-76.288-49.152-123.904-49.152-99.84 0-181.248 81.408-181.248 181.248s81.408 181.248 181.248 181.248c50.688 0 96.256-20.992 129.536-54.272l205.824 93.696c-8.192 20.48-12.288 43.008-12.288 66.048 0 99.84 81.408 181.248 181.248 181.248s181.248-81.408 181.248-181.248S860.16 640 760.32 640z m0-540.672c60.416 0 109.568 49.152 109.568 109.568 0 60.416-49.152 109.568-109.568 109.568-60.416 0-109.568-49.152-109.568-109.568-0.512-60.416 49.152-109.568 109.568-109.568zM256 643.584c-60.416 0-109.568-49.152-109.568-109.568 0-60.416 49.152-109.568 109.568-109.568 60.416 0 109.568 49.152 109.568 109.568 0 60.416-49.152 109.568-109.568 109.568z m504.32 287.232c-60.416 0-109.568-49.152-109.568-109.568 0-60.416 49.152-109.568 109.568-109.568 60.416 0 109.568 49.152 109.568 109.568 0 60.416-49.152 109.568-109.568 109.568z m0 0\" ></path></symbol><symbol id=\"icon-variable\" viewBox=\"0 0 1024 1024\"><path d=\"M291.6864 865.7408v-57.6h-42.5984c-13.9776-0.6656-23.8592-8.6016-29.7984-23.9104a128 128 0 0 1-8.6016-48.64v-111.7184a143.5136 143.5136 0 0 0-8.0896-51.6608 99.3792 99.3792 0 0 0-19.968-34.048 79.0016 79.0016 0 0 0-21.8112-20.0704 72.3456 72.3456 0 0 0-18.3808-7.2704v-1.6896c10.0352-2.304 23.3984-12.1344 40.1408-29.44 8.192-8.8064 14.9504-20.1728 19.968-34.1504 5.4784-12.8 8.0896-28.7744 8.0896-48.128v-112.64c0-19.3024 2.8672-36.1984 8.6528-50.688 5.9392-13.9264 15.872-21.1456 29.7984-21.76h42.5984V154.7264h-74.24c-23.2448 0-43.008 8.3968-59.1872 25.1904-16.9984 17.0496-25.9072 40.96-26.4704 71.68v124.928c0 28.416-5.5296 52.8384-16.5888 73.2672a53.76 53.76 0 0 1-20.8384 22.6304c-8.96 6.144-19.5584 9.216-30.3616 8.96v57.6c22.784 0.6144 39.7824 11.1104 51.2 31.488 11.0592 19.6608 16.64 44.6976 16.64 75.1104v123.2384c0.6144 30.1056 9.3696 53.5552 26.4192 70.4 16.2304 16.9472 35.8912 25.8048 59.2896 26.4192h74.24l-0.1024 0.1024z m219.8528-236.6976l94.72 147.5072h106.1888l-151.04-225.9456 144.9984-216.6784h-106.5984L511.5392 477.184 423.7312 333.9264H317.1328l144.9472 216.6784-151.296 225.8944h106.496l94.2592-147.4048z m355.9936 210.176c15.5648-16.8448 23.6544-40.192 24.32-70.4v-124.928c0-29.9008 5.9904-54.5792 18.2272-74.24 11.7248-19.9168 28.3648-30.0544 49.92-30.72V481.3312c-21.5552-1.6384-38.1952-12.3904-49.92-32.3584-12.1344-19.8656-18.2784-44.6464-18.2784-74.1888V251.648c-0.6144-30.72-8.704-54.5792-24.32-71.68a82.6368 82.6368 0 0 0-61.44-25.1392h-74.24v57.6h42.752c14.1824 0.5632 24.1664 7.7824 29.7984 21.76 5.9904 14.4384 8.96 31.3344 8.96 50.7392v111.6672c0 19.9168 3.2256 36.8128 9.4208 50.7392 5.4272 13.9776 12.0832 25.2928 20.0192 34.1504 8.192 8.8064 15.7184 15.1552 22.5792 19.2 7.168 3.9424 12.3392 6.8096 15.8208 8.4992v1.7408c-8.4992 1.3824-21.2992 10.752-38.4 28.16-8.704 10.0352-15.4624 21.5552-20.0192 34.048a121.344 121.344 0 0 0-9.3696 49.92v112.64c0 18.432-2.9696 34.6112-8.96 48.5376-5.7344 15.36-15.616 23.296-29.9008 23.9104h-42.5984v57.6h74.24a85.4016 85.4016 0 0 0 61.3888-26.5216z\" ></path></symbol></svg>',(l=>{var a=(c=(c=document.getElementsByTagName(\"script\"))[c.length-1]).getAttribute(\"data-injectcss\"),c=c.getAttribute(\"data-disable-injectsvg\");if(!c){var h,o,t,i,z,m=function(a,c){c.parentNode.insertBefore(a,c)};if(a&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write(\"<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>\")}catch(a){console&&console.log(a)}}h=function(){var a,c=document.createElement(\"div\");c.innerHTML=l._iconfont_svg_string_5021436,(c=c.getElementsByTagName(\"svg\")[0])&&(c.setAttribute(\"aria-hidden\",\"true\"),c.style.position=\"absolute\",c.style.width=0,c.style.height=0,c.style.overflow=\"hidden\",c=c,(a=document.body).firstChild?m(c,a.firstChild):a.appendChild(c))},document.addEventListener?~[\"complete\",\"loaded\",\"interactive\"].indexOf(document.readyState)?setTimeout(h,0):(o=function(){document.removeEventListener(\"DOMContentLoaded\",o,!1),h()},document.addEventListener(\"DOMContentLoaded\",o,!1)):document.attachEvent&&(t=h,i=l.document,z=!1,s(),i.onreadystatechange=function(){\"complete\"==i.readyState&&(i.onreadystatechange=null,v())})}function v(){z||(z=!0,t())}function s(){try{i.documentElement.doScroll(\"left\")}catch(a){return void setTimeout(s,50)}v()}})(window);","import { createFromIconfontCN } from '@ant-design/icons'\nimport '../../assets/iconfont.js'\n\nconst IconFont = createFromIconfontCN({})\n\nexport default IconFont\n","import { StarFilled, StarOutlined } from '@ant-design/icons'\nimport { Button } from 'antd'\nimport { CustomButtonProps } from 'packages/chat-copilot/src/types'\nimport { useMemo } from 'react'\nimport { useSnapshot } from 'valtio'\nimport { useChatStore } from '../../../stores/Context'\n\nexport default ({ icon, disabled, ...rest }: CustomButtonProps) => {\n const chatStore = useChatStore()\n const conversationsState = useSnapshot(chatStore.conversations)\n const conversationState = useSnapshot(chatStore.conversation)\n const activeMessages = conversationState.messages[conversationState.active.id]?.message\n\n const activeConversation = useMemo(() => {\n return conversationsState.list.items.find((item) => item.id === conversationState.active.id)\n }, [conversationsState.list.items, conversationState.active.id])\n\n const isFavorite = activeConversation?.isFavorite\n\n const handleToggleFavorite = () => {\n if (!conversationState.active.id) return\n chatStore.collectConversation(conversationState.active.id, !isFavorite)\n }\n\n return (\n <Button\n title={isFavorite ? '取消收藏' : '收藏'}\n type=\"text\"\n size=\"large\"\n disabled={disabled || !conversationState.active.id || !activeMessages?.length}\n icon={icon?.() || (isFavorite ? <StarFilled className=\"primary-text\" /> : <StarOutlined />)}\n onClick={handleToggleFavorite}\n {...rest}\n />\n )\n}\n","import { ShareAltOutlined } from '@ant-design/icons'\nimport { copyText } from '@zero-library/common'\nimport { Button } from 'antd'\nimport { CustomButtonProps } from 'packages/chat-copilot/src/types'\nimport { useSnapshot } from 'valtio'\nimport { useChatStore } from '../../../stores/Context'\n\nexport default ({ icon, disabled, ...rest }: CustomButtonProps) => {\n const chatStore = useChatStore()\n const conversationState = useSnapshot(chatStore.conversation)\n const configState = useSnapshot(chatStore.config)\n const activeMessages = conversationState.messages[conversationState.active.id]?.message\n\n const handleShareConversation = async () => {\n const { data } = await configState.services.request.shareConversation(conversationState.active.id)\n if (data) {\n copyText(data.url, '链接已复制,可直接粘贴分享')\n }\n }\n\n return (\n <Button\n title=\"分享\"\n type=\"text\"\n size=\"large\"\n disabled={disabled || !conversationState.active.id || !activeMessages?.length}\n icon={icon?.() || <ShareAltOutlined />}\n {...rest}\n onClick={handleShareConversation}\n />\n )\n}\n","import { PlusOutlined } from '@ant-design/icons'\nimport { Button } from 'antd'\nimport { useChatStore } from '../../../stores/Context'\nimport { CustomButtonProps } from '../../../types'\n\nexport default ({ icon, ...rest }: CustomButtonProps) => {\n const chatStore = useChatStore()\n\n return (\n <Button title=\"新建会话\" size=\"large\" type=\"text\" icon={icon?.() || <PlusOutlined />} onClick={() => chatStore.createConversation()} {...rest} />\n )\n}\n",".chatHeader {\n padding: 8px 16px;\n border-bottom: 1px solid #eee;\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n.chatHeader .chatHeaderContent {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.chatHeader .chatHeaderContent .chatTitle {\n font-size: 16px;\n font-weight: bold;\n}\n.chatHeader .chatHeaderContent .defaultLogo {\n font-size: 22px;\n}\n.chatHeader .chatHeaderBtnGroup {\n display: flex;\n gap: 8px;\n}\n.conversationListPanel {\n width: 300px;\n max-width: 100%;\n border-right: 1px dashed #eee;\n}\n.conversationListPanel .defaultLogo {\n font-size: 48px;\n}\n.conversationListPanel .conversationAvatar {\n font-size: 38px;\n}\n.conversationListPanel .createConversationButton {\n height: 38px;\n background-color: var(--ant-color-primary-bg);\n border-radius: var(--ant-border-radius-lg);\n color: var(--ant-color-primary);\n font-weight: bold;\n}\n.conversations {\n padding: 0;\n height: 100%;\n overflow: auto;\n}\n.conversations :global .ant-conversations-group-title {\n padding-left: 16px;\n}\n.conversations :global .ant-conversations-group-title .ant-typography {\n color: #878aab;\n}\n.conversations :global .ant-conversations-list .ant-conversations-item {\n padding-left: 16px;\n touch-action: manipulation !important;\n}\n.conversations :global .ant-conversations-list .ant-conversations-item .ant-conversations-label {\n color: rgba(0, 0, 0, 0.88);\n}\n.conversations :global .ant-conversations-list .ant-conversations-item.ant-conversations-item-active .ant-conversations-label {\n color: var(--ant-color-primary);\n}\n.conversationEmpty {\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.chatWelcomeWrap {\n height: 100%;\n max-width: 1000px;\n min-width: 320px;\n width: calc(100% - 24px);\n margin: 0 auto;\n}\n.chatWelcomeWrap :global .ant-prompts .ant-prompts-list {\n overflow: auto;\n}\n.chatWelcomeWrap .chatWelcome .defaultLogo {\n font-size: 48px;\n}\n.chatWelcomeWrap .chatWelcome :global .ant-welcome-icon > img {\n border-radius: 10px;\n max-width: initial;\n}\n.promptItem {\n width: 100%;\n max-width: 100%;\n}\n.promptItem :global .ant-prompts-item {\n max-width: 100%;\n white-space: normal;\n height: auto;\n}\n.bubbleList {\n width: 100%;\n}\n.bubbleList:global.ant-bubble-list {\n width: 100%;\n}\n.bubbleList:global.ant-bubble-list .ant-bubble-list-scroll-box .ant-bubble-list-scroll-content {\n max-width: 1000px;\n min-width: 320px;\n width: calc(100% - 12px);\n margin: 0 auto;\n padding-right: 0;\n padding-left: 10px;\n}\n.bubbleList:global.ant-bubble-list .ant-bubble-list-scroll-box .ant-bubble-list-scroll-content > .ant-bubble > .ant-bubble-body {\n width: 100%;\n}\n.bubbleList:global.ant-bubble-list .ant-bubble {\n padding-top: 8px;\n padding-bottom: 0;\n}\n.bubbleList:global.ant-bubble-list .ant-bubble:hover .message-actions {\n opacity: 1;\n pointer-events: auto;\n}\n.bubbleList:global.ant-bubble-list .ant-bubble.ant-bubble-start {\n padding-inline-end: 0% !important;\n}\n.bubbleList:global.ant-bubble-list .ant-bubble.ant-bubble-start .ant-bubble-body {\n width: 100%;\n}\n.bubbleList:global.ant-bubble-list .ant-bubble.ant-bubble-start .ant-bubble-content {\n background-color: transparent;\n padding: 0;\n padding-bottom: 0;\n min-height: 0;\n}\n.bubbleList:global.ant-bubble-list .ant-bubble.ant-bubble-end .ant-bubble-content {\n background-color: var(--ant-color-primary-bg, #e6f4ff);\n}\n.bubbleList:global.ant-bubble-list .ant-bubble.ant-bubble-end .ant-bubble-content-borderless {\n background-color: transparent;\n}\n.bubbleList:global.ant-bubble-list .ant-bubble.ant-bubble-end .ant-bubble-content-borderless .ant-file-card-list-content {\n padding: 0;\n}\n.messageActions {\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.2s ease;\n}\n.userInputCollapse {\n width: calc(100% - 24px);\n max-width: 1000px;\n min-width: 320px;\n margin: 0 auto;\n}\n.logoArea {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n margin-top: 5rem;\n flex-direction: column;\n}\n.logoArea .logoContainer {\n position: relative;\n margin-bottom: 2rem;\n cursor: pointer;\n}\n.logoArea .logoContainer .staticHalo {\n position: absolute;\n inset: 0;\n background-color: var(--ant-color-primary);\n filter: blur(24px);\n opacity: 0.2;\n transition: opacity 700ms;\n border-radius: 9999px;\n}\n.logoArea .logoContainer .logoHoverWrapper {\n position: relative;\n z-index: 10;\n padding: 0.5rem;\n transition: all 500ms ease-out;\n transform: scale(1) translateY(0);\n}\n.logoArea .logoContainer .logoHoverWrapper .logoImage {\n font-size: 80px;\n filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.1));\n transition: all 500ms;\n}\n.logoArea .logoContainer:hover .staticHalo {\n opacity: 0.5;\n}\n.logoArea .logoContainer:hover .logoHoverWrapper {\n transform: scale(1.1) translateY(-0.5rem);\n}\n.logoArea .logoContainer:hover .logoImage {\n filter: drop-shadow(0 10px 20px rgba(18, 124, 183, 0.4));\n}\n.logoArea .greetingTitle {\n margin-bottom: 0.75rem;\n font-size: 2.25rem;\n line-height: 2.5rem;\n font-weight: 700;\n letter-spacing: -0.025em;\n color: #1e293b;\n}\n@media (width >= 768px) {\n .logoArea .greetingTitle {\n font-size: 3rem;\n line-height: 1;\n }\n}\n.logoArea .greetingTitle .gradientText {\n color: transparent;\n background-clip: text;\n background-image: linear-gradient(to right, var(--ant-color-primary), #3b82f6);\n}\n.logoArea .greetingSubtitle {\n font-size: 1.125rem;\n line-height: 1.75rem;\n font-weight: 500;\n color: #64748b;\n}\n@media (width >= 768px) {\n .logoArea .greetingSubtitle {\n font-size: 1.25rem;\n line-height: 1.75rem;\n }\n}\n.senderReferenceHeaderTitle:global > .ant-sender-header-title {\n overflow: hidden;\n}\n.senderReferenceHeaderContent {\n padding: 0 !important;\n}\n","import { DeleteOutlined, RedoOutlined, StarFilled, StarOutlined } from '@ant-design/icons'\nimport { Conversations, ConversationsProps } from '@ant-design/x-v2'\nimport type { ItemType } from '@ant-design/x-v2/es/conversations/interface'\nimport { Button, Empty, Popconfirm, Spin, Tabs } from 'antd'\nimport console from 'console'\nimport { useMemo, useState } from 'react'\nimport InfiniteScroll from 'react-infinite-scroll-component'\nimport { useSnapshot } from 'valtio'\nimport { useChatStore } from '../../stores/Context'\nimport styles from './styles.module.less'\n\ninterface ConversationTabPaneProps {\n items: ItemType[]\n activeKey?: string\n emptyDescription: string\n scrollableTarget: string\n menu: ConversationsProps['menu']\n onActiveChange: (id: string) => Promise<void> | void\n}\n\nconst ConversationTabPane = ({ items, activeKey, emptyDescription, scrollableTarget, menu, onActiveChange }: ConversationTabPaneProps) => {\n return (\n <div className=\"height-full\">\n {items.length ? (\n <div className=\"height-full scroll-fade-in\" id={scrollableTarget}>\n <InfiniteScroll\n dataLength={items.length}\n hasMore={false}\n next={() => {\n console.log('next')\n }}\n loader={\n <div className=\"text-center\">\n <Spin indicator={<RedoOutlined spin />} size=\"small\" />\n </div>\n }\n style={{ overflow: 'hidden', padding: '0 10px' }}\n scrollableTarget={scrollableTarget}\n >\n <Conversations\n className={styles.conversations}\n items={items}\n activeKey={activeKey}\n onActiveChange={async (id) => onActiveChange(id as string)}\n groupable\n menu={menu}\n />\n </InfiniteScroll>\n </div>\n ) : (\n <div className={styles.conversationEmpty}>\n <Empty description={emptyDescription} image={Empty.PRESENTED_IMAGE_SIMPLE} />\n </div>\n )}\n </div>\n )\n}\n\ninterface ConversationListProps {\n onClose?: () => void\n}\n\nexport default ({ onClose }: ConversationListProps) => {\n const chatStore = useChatStore()\n const conversationsState = useSnapshot(chatStore.conversations)\n const conversationState = useSnapshot(chatStore.conversation)\n const favoriteState = useSnapshot(chatStore.favorite)\n const [activeTabKey, setActiveTabKey] = useState('history')\n\n const conversationList = useMemo<ItemType[]>(() => {\n return conversationsState.list.items.filter((item) => item.label) as ItemType[]\n }, [conversationsState.list.items])\n\n const favoriteConversationList = useMemo<ItemType[]>(() => {\n return favoriteState.list.items.filter((item) => item.label) as ItemType[]\n }, [favoriteState.list.items])\n\n const historyMenuConfig: ConversationsProps['menu'] = (conversation) => ({\n items: [\n {\n label: `${conversation.isFavorite ? '取消收藏' : '收藏'}`,\n key: 'collect',\n icon: conversation?.isFavorite ? <StarFilled className=\"primary-text\" /> : <StarOutlined />\n },\n {\n label: '删除',\n key: 'deleteChat',\n icon: <DeleteOutlined />,\n danger: true\n }\n ],\n onClick: (itemInfo) => {\n itemInfo.domEvent.stopPropagation()\n if (itemInfo.key === 'deleteChat') {\n chatStore.delConversation(conversation.key)\n onClose?.()\n } else if (itemInfo.key === 'collect') {\n chatStore.collectConversation(conversation.id, !conversation.isFavorite)\n }\n }\n })\n\n const favoriteMenuConfig: ConversationsProps['menu'] = (conversation) => ({\n trigger: (\n <Popconfirm\n title=\"提示\"\n okText=\"确定\"\n cancelText=\"取消\"\n description=\"确认取消收藏该会话吗?\"\n onConfirm={(e) => {\n e.stopPropagation()\n chatStore.collectConversation(conversation.id, false)\n }}\n onCancel={(e) => e.stopPropagation()}\n >\n <Button\n icon={<StarFilled className=\"primary-text\" />}\n title=\"取消收藏\"\n type=\"text\"\n onClick={(e) => {\n e.stopPropagation()\n }}\n />\n </Popconfirm>\n ),\n items: []\n })\n\n const handleConversationChange = async (id: string) => {\n await chatStore.switchConversation(id)\n onClose?.()\n }\n\n return (\n <Tabs\n activeKey={activeTabKey}\n centered\n className=\"full-tabs\"\n onChange={setActiveTabKey}\n items={[\n {\n key: 'history',\n label: '历史会话',\n children: (\n <ConversationTabPane\n items={conversationList}\n activeKey={conversationState.active.id}\n emptyDescription=\"暂无会话记录\"\n scrollableTarget=\"historyConversationScrollableDiv\"\n menu={historyMenuConfig}\n onActiveChange={handleConversationChange}\n />\n )\n },\n {\n key: 'favorite',\n label: '收藏会话',\n children: (\n <ConversationTabPane\n items={favoriteConversationList}\n activeKey={conversationState.active.id}\n emptyDescription=\"暂无收藏会话\"\n scrollableTarget=\"favoriteConversationScrollableDiv\"\n menu={favoriteMenuConfig}\n onActiveChange={handleConversationChange}\n />\n )\n }\n ]}\n />\n )\n}\n",".popover {\n height: 500px;\n max-height: 500px;\n width: 300px;\n display: flex;\n flex-direction: column;\n padding: 0 0 16px 0 !important;\n overflow: hidden;\n}\n.popover :global .ant-popover-content {\n height: 100%;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n.popover :global .ant-popover-inner {\n height: 100%;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n.popover :global .ant-popover-inner-content {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n.resourceBtn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 4px 8px;\n font-size: 13px;\n font-weight: 500;\n color: #475569;\n background-color: #f1f5f9;\n border: 1px solid #e2e8f0;\n border-radius: 12px;\n transition: all 0.3s;\n cursor: pointer;\n}\n.resourceBtn .divider {\n margin: 0;\n background-color: #eee;\n height: 10px;\n transform: translateY(1px);\n}\n.resourceBtn .count {\n font-size: 10px;\n font-weight: 500;\n background-color: var(--ant-color-primary);\n /* text-teal-500 */\n width: 14px;\n height: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n color: #fff;\n}\n.resourceBtnActive {\n background-color: var(--ant-color-primary);\n color: #fff;\n}\n.customModal :global .ant-modal-close:focus,\n.customModal :global .ant-modal-close:focus-visible {\n outline: none !important;\n box-shadow: none !important;\n}\n.customModal :global(.ant-modal-container) {\n padding: 0 !important;\n}\n.customModal :global(.ant-modal-body) {\n padding: 0 !important;\n height: 75vh;\n border-radius: 20px;\n min-height: 600px;\n overflow: hidden;\n}\n.customModal :global(.ant-modal-footer) {\n margin-top: 0 !important;\n}\n.layout {\n height: 100%;\n width: 100%;\n background: #f5f5f5;\n display: flex;\n}\n.layout .sider {\n background-color: #fff !important;\n border-right: 1px solid #f0f0f0;\n height: 100%;\n}\n.layout .sider :global .ant-layout-sider-children {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n.layout .sider .categoryName {\n margin-left: 8px;\n font-size: 14px;\n color: #333;\n}\n.layout .sider .siderContent {\n flex: 1;\n overflow-y: auto;\n padding: 0 12px;\n}\n.layout .sider .siderContent .categoryItem {\n align-items: center;\n padding: 8px 12px;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n}\n.layout .sider .siderContent .categoryItem:hover {\n background-color: #f5f5f5;\n}\n.layout .sider .siderContent .categoryActive {\n background-color: #e6f4ff;\n}\n.layout .sider .siderContent .categoryActive:hover {\n background-color: #e6f4ff;\n}\n.layout .sider .siderContent .categoryActive .categoryName {\n color: #1677ff;\n font-weight: 500;\n}\n.layout .sider .siderContent .roundCheckbox :global .ant-checkbox-inner {\n border-radius: 50%;\n}\n.content {\n display: flex;\n flex-direction: column;\n background-color: #fff;\n height: 100%;\n padding: 20px;\n padding-top: 0;\n gap: 16px;\n}\n.content .searchInput {\n width: 300px;\n}\n.content .selectedCount {\n font-size: 12px;\n}\n.content .tagsArea {\n width: 100%;\n max-height: 60px;\n overflow: hidden;\n display: flex;\n}\n.content .tagsArea .tagContainer {\n width: calc(100% - 40px);\n}\n.content .tagsArea .tagContainer .tag {\n font-size: 13px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n margin: 0;\n}\n.content .tagsArea .expandBtnWrapper {\n display: flex;\n align-items: flex-end;\n padding-bottom: 8px;\n}\n.content .tagsArea .expandBtn {\n background-color: #f5f5f5;\n font-size: 13px;\n border: none;\n}\n.content .tagsArea .expandBtn:hover {\n border: none !important;\n background-color: #f5f5f5 !important;\n}\n.content .tagsExpanded {\n max-height: none;\n overflow: visible;\n}\n.content .listArea {\n flex: 1;\n overflow-y: auto;\n background-color: #fafafa;\n border-radius: 12px;\n padding: 16px;\n}\n.content .listArea .listInner {\n padding-bottom: 16px;\n}\n.content .listArea .listItem {\n width: 100%;\n background-color: #fff;\n border-radius: 8px;\n padding: 10px;\n display: flex;\n cursor: pointer;\n transition: all 0.2s;\n position: relative;\n}\n.content .listArea .listItem:hover {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);\n background-color: #e6f4ff;\n}\n.content .listArea .listItemSelected {\n background-color: #eee;\n}\n.content .listArea .itemIconWrapper {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n background-color: #e6f4ff;\n color: #1677ff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 20px;\n margin-right: 12px;\n flex-shrink: 0;\n}\n.content .listArea .itemInfo {\n flex: 1;\n min-width: 0;\n gap: 2px;\n}\n.content .listArea .itemInfo .itemDesc {\n font-size: 12px;\n color: #999;\n}\n.footer {\n border-top: 1px solid #f0f0f0;\n padding: 10px 20px;\n justify-content: flex-end;\n align-items: center;\n display: flex;\n}\n.titleContainer {\n display: flex;\n padding: 16px 32px 0 20px;\n border-bottom: 1px solid #f0f0f0;\n align-items: center;\n}\n.favoriteCard {\n border-radius: 10px;\n padding: 8px 10px 8px 16px;\n transition: all 0.2s;\n cursor: pointer;\n}\n.favoriteCard.favoriteCardActive {\n background: #f2f2f2;\n}\n.favoriteCard.favoriteCardActive .favoriteCardTitle {\n color: var(--ant-color-primary);\n}\n.favoriteCard:hover {\n background: #f2f2f2;\n}\n.favoriteCard:hover .favoriteCardActions {\n opacity: 1;\n}\n.favoriteCard .favoriteCardActions {\n opacity: 0;\n transition: all 0.2s;\n}\n.favoriteCard .favoriteCardDate {\n font-size: 12px;\n color: #999;\n margin-top: 4px;\n}\n","import { CommentOutlined } from '@ant-design/icons'\nimport { Button, Popover } from 'antd'\nimport { useState } from 'react'\nimport { useSnapshot } from 'valtio'\nimport { useChatStore } from '../../../stores/Context'\nimport { CustomButtonProps } from '../../../types'\nimport ConversationList from '../ConversationList'\nimport styles from './style.module.less'\n\nexport default ({ icon, ...rest }: CustomButtonProps) => {\n const chatStore = useChatStore()\n const agentState = useSnapshot(chatStore.agent)\n const [open, setOpen] = useState(false)\n\n const handleOpenChange = (open: boolean) => {\n setOpen(open)\n if (open && agentState.agentInfo.id) {\n chatStore.getConversations(agentState.agentInfo.id)\n chatStore.getConversationFavorite()\n }\n }\n\n return (\n <Popover\n open={open}\n getPopupContainer={(e) => e}\n onOpenChange={handleOpenChange}\n placement=\"bottom\"\n classNames={{ container: styles.popover }}\n content={<ConversationList onClose={() => setOpen(false)} />}\n trigger={['click']}\n >\n <Button title=\"历史会话\" size=\"large\" type=\"text\" icon={icon?.() || <CommentOutlined />} {...rest} />\n </Popover>\n )\n}\n","import { CloseOutlined } from '@ant-design/icons'\nimport { RenderWrapper } from '@zero-library/common'\nimport { Avatar, Button, Space } from 'antd'\nimport classNames from 'classnames'\nimport { useSnapshot } from 'valtio'\nimport AuthImage from '../../components/AuthImage'\nimport IconFont from '../../components/IconFont'\nimport { useChatStore } from '../../stores/Context'\nimport { ChatLayoutHeader } from '../../types'\nimport ConversationFavoritesBtn from './FeatureComponents/ConversationFavoritesBtn'\nimport ConversationShareBtn from './FeatureComponents/ConversationShareBtn'\nimport CreateBtn from './FeatureComponents/CreateBtn'\nimport HistoryBtn from './FeatureComponents/HistoryBtn'\nimport styles from './styles.module.less'\n\nexport default ({\n title = true,\n avatar = true,\n closeBtn = false,\n newConversationBtn = true,\n conversationListBtn = true,\n conversationFavoriteBtn = true,\n conversationShareBtn = true\n}: ChatLayoutHeader) => {\n const chatStore = useChatStore()\n const agentState = useSnapshot(chatStore.agent)\n const configState = useSnapshot(chatStore.config)\n return (\n <>\n <div className={classNames(styles.chatHeader, 'zero-chat-header')}>\n <div className={styles.chatHeaderContent}>\n <RenderWrapper\n control={avatar}\n DefaultComponent={\n agentState.agentInfo?.iconUrl ? (\n /^https?:\\/\\//i.test(agentState.agentInfo?.iconUrl) ? (\n <Avatar shape=\"circle\" size={28} src={agentState.agentInfo?.iconUrl} />\n ) : (\n <AuthImage shape=\"circle\" size={28} path={agentState.agentInfo?.iconUrl} />\n )\n ) : (\n <Avatar shape=\"circle\" size={28} src={<IconFont type=\"icon-lolrai\" className={styles.defaultLogo} />} />\n )\n }\n />{' '}\n <RenderWrapper control={title} DefaultComponent={<div className={styles.chatTitle}>{agentState.agentInfo.name}</div>} />\n </div>\n <Space size={2}>\n <div className={styles.chatHeaderBtnGroup}>\n <RenderWrapper control={newConversationBtn} DefaultComponent={CreateBtn} />\n <RenderWrapper control={conversationListBtn} DefaultComponent={HistoryBtn} />\n <RenderWrapper control={conversationFavoriteBtn} DefaultComponent={ConversationFavoritesBtn} />\n <RenderWrapper control={conversationShareBtn} DefaultComponent={ConversationShareBtn} />\n </div>\n\n <RenderWrapper\n control={closeBtn}\n DefaultComponent={<Button title=\"关闭\" type=\"text\" size=\"large\" onClick={configState.hooks?.onHeaderClose} icon={<CloseOutlined />} />}\n />\n </Space>\n </div>\n </>\n )\n}\n","import { PlusOutlined } from '@ant-design/icons'\nimport { RenderWrapper } from '@zero-library/common'\nimport { Avatar, Button, Flex, Typography } from 'antd'\nimport classNames from 'classnames'\nimport { useSnapshot } from 'valtio'\nimport AuthImage from '../../components/AuthImage'\nimport IconFont from '../../components/IconFont'\nimport { useChatStore } from '../../stores/Context'\nimport { ChatLayoutConversationListHeader } from '../../types'\nimport styles from './styles.module.less'\n\nconst { Text } = Typography\n\nexport default ({ title = true, avatar = true, newConversationBtn = true, conversationFavoriteBtn = true }: ChatLayoutConversationListHeader) => {\n const chatStore = useChatStore()\n const agentState = useSnapshot(chatStore.agent)\n\n return (\n <Flex className=\"p-24\" gap={16} vertical>\n <Flex align=\"center\" gap={16}>\n <RenderWrapper\n control={avatar}\n DefaultComponent={\n agentState.agentInfo?.iconUrl ? (\n /^https?:\\/\\//i.test(agentState.agentInfo?.iconUrl) ? (\n <Avatar shape=\"square\" size={50} src={agentState.agentInfo?.iconUrl} />\n ) : (\n <AuthImage size={50} path={agentState.agentInfo?.iconUrl} />\n )\n ) : (\n <Avatar shape=\"square\" size={50} src={<IconFont type=\"icon-lolrai\" className={styles.defaultLogo} />} />\n )\n }\n />\n\n <RenderWrapper\n control={title}\n DefaultComponent={\n <>\n <Flex vertical gap={4} flex={1} style={{ minWidth: 0 }}>\n <Text strong className={classNames('fz-16')}>\n {agentState.agentInfo.name}\n </Text>\n <Text type=\"secondary\" ellipsis className={classNames('fz-12')}>\n {agentState.agentInfo.description}\n </Text>\n </Flex>\n </>\n }\n />\n </Flex>\n <RenderWrapper\n control={newConversationBtn}\n DefaultComponent={\n <Button\n block\n type=\"primary\"\n onClick={() => chatStore.createConversation()}\n className={classNames(styles.createConversationButton)}\n icon={<PlusOutlined />}\n >\n 新建会话\n </Button>\n }\n />\n </Flex>\n )\n}\n","import { RenderWrapper } from '@zero-library/common'\nimport { Flex } from 'antd'\nimport classNames from 'classnames'\nimport { ChatLayoutConversationList } from '../../types'\nimport ConversationList from './ConversationList'\nimport ConversationListHeader from './ConversationListHeader'\nimport styles from './styles.module.less'\n\nconst ConversationListPanel = ({ header }: ChatLayoutConversationList) => {\n return (\n <Flex vertical className={classNames('height-full', 'zero-chat-conversations', styles.conversationListPanel)}>\n <RenderWrapper control={header} DefaultComponent={ConversationListHeader} />\n <div className=\"full-scroll\">\n <ConversationList />\n </div>\n </Flex>\n )\n}\n\nexport default ConversationListPanel\n","import type React from 'react'\n// 关键步骤:项目当前缺少 x-card 完整类型声明,使用本地桥接文件集中兜底,避免业务代码出现类型噪音。\n// @ts-ignore\nimport { registerCatalog as rawRegisterCatalog, XCard as rawXCard } from '@ant-design/x-card'\n\nexport type Catalog = {\n catalogId: string\n components: Record<string, any>\n}\n\nexport const registerCatalog = (catalog: Catalog) => {\n rawRegisterCatalog?.(catalog as any)\n}\n\nexport const XCard = rawXCard as {\n Box: React.ComponentType<{\n commands: any[]\n components?: Record<string, React.ComponentType<any>>\n onAction?: (payload: any) => void\n children?: React.ReactNode\n }>\n Card: React.ComponentType<{ id: string }>\n}\n","import { Card as AntCard, Tag as AntTag, Space, Typography } from 'antd'\nimport React from 'react'\n\nconst { Text: AText } = Typography\n\n/** 根据制品类型生成一个可读的默认标题。 */\nfunction getArtifactFallbackTitle(type: string) {\n const normalizedType = String(type || '').toLowerCase()\n if (normalizedType === 'report') return '未命名报告'\n if (normalizedType === 'chart') return '未命名图表'\n if (normalizedType === 'table') return '未命名表格'\n return '未命名内容'\n}\n\n/** 通用制品兜底卡片,在无法渲染具体内容时至少展示类型和标题。 */\nexport const ArtifactCard: React.FC<{\n type: string\n artifactId: string\n title?: string\n payload?: any\n}> = ({ type, title }) => (\n <AntCard size=\"small\" style={{ borderRadius: 12 }}>\n <Space align=\"center\" wrap>\n <AntTag color=\"blue\">{type}</AntTag>\n <AText strong>{title || getArtifactFallbackTitle(type)}</AText>\n </Space>\n </AntCard>\n)\n","import React from 'react'\n\nfunction toVChartSpec(raw: any): any | null {\n const palette = [\n '#1677ff',\n '#52c41a',\n '#faad14',\n '#f5222d',\n '#722ed1',\n '#13c2c2',\n '#eb2f96',\n '#fa541c',\n '#a0d911',\n '#2f54eb',\n '#9254de',\n '#08979c',\n '#d46b08',\n '#7cb305',\n '#c41d7f',\n '#ad2102',\n '#1d39c4',\n '#389e0d',\n '#d4380d',\n '#531dab'\n ]\n\n const t = String(raw?.type ?? '').toLowerCase()\n const xs = Array.isArray(raw?.x) ? raw.x : null\n const ys = Array.isArray(raw?.y) ? raw.y : null\n if (!xs || !ys) return null\n\n const n = Math.min(xs.length, ys.length)\n if (n <= 0) return null\n\n const axisBottom = {\n orient: 'bottom',\n label: { autoHide: true, autoRotate: true, autoRotateAngle: [0, 45, 90] }\n }\n const axisLeft = { orient: 'left', label: { autoHide: true } }\n\n if (t === 'scatter') {\n const values = Array.from({ length: n }, (_, i) => ({\n _i: i,\n x: typeof xs[i] === 'number' ? xs[i] : Number(xs[i]),\n y: typeof ys[i] === 'number' ? ys[i] : Number(ys[i])\n })).filter((p) => Number.isFinite(p.x) && Number.isFinite(p.y))\n if (values.length === 0) return null\n return {\n type: 'scatter',\n data: [{ id: 'data', values }],\n xField: 'x',\n yField: 'y',\n axes: [axisBottom, axisLeft],\n point: {\n style: {\n size: 4,\n fillOpacity: 0.9,\n fill: (d: any) => palette[(d?._i ?? 0) % palette.length]\n }\n }\n }\n }\n\n if (t === 'pie') {\n const values = Array.from({ length: n }, (_, i) => ({\n _i: i,\n category: String(xs[i]),\n value: typeof ys[i] === 'number' ? ys[i] : Number(ys[i])\n })).filter((p) => Number.isFinite(p.value))\n if (values.length === 0) return null\n return {\n type: 'pie',\n data: [{ id: 'data', values }],\n categoryField: 'category',\n valueField: 'value',\n legends: { visible: false },\n label: { visible: true },\n outerRadius: 0.8,\n pie: {\n style: {\n fill: (d: any) => palette[(d?._i ?? 0) % palette.length],\n stroke: '#fff',\n lineWidth: 1\n }\n }\n }\n }\n\n if (t === 'bar' || t === 'line') {\n const values = Array.from({ length: n }, (_, i) => ({\n _i: i,\n category: String(xs[i]),\n value: typeof ys[i] === 'number' ? ys[i] : Number(ys[i])\n })).filter((p) => Number.isFinite(p.value))\n if (values.length === 0) return null\n return {\n type: t,\n data: [{ id: 'data', values }],\n xField: 'category',\n yField: 'value',\n axes: [axisBottom, axisLeft],\n ...(t === 'line'\n ? {\n point: { visible: true, style: { size: 3, fill: '#1677ff', fillOpacity: 0.9 } },\n line: { style: { lineWidth: 2, stroke: '#1677ff' } }\n }\n : null),\n ...(t === 'bar'\n ? {\n legends: { visible: false },\n bar: {\n style: {\n cornerRadius: 4,\n fill: (d: any) => palette[(d?._i ?? 0) % palette.length]\n }\n }\n }\n : null)\n }\n }\n\n return null\n}\n\nfunction toLegendColor(i: number) {\n const palette = [\n '#1677ff',\n '#52c41a',\n '#faad14',\n '#f5222d',\n '#722ed1',\n '#13c2c2',\n '#eb2f96',\n '#fa541c',\n '#a0d911',\n '#2f54eb',\n '#9254de',\n '#08979c',\n '#d46b08',\n '#7cb305',\n '#c41d7f',\n '#ad2102',\n '#1d39c4',\n '#389e0d',\n '#d4380d',\n '#531dab'\n ]\n return palette[i] ?? palette[i % palette.length]\n}\n\nfunction formatCompactNumber(v: number) {\n const abs = Math.abs(v)\n if (abs >= 10000) return `${Math.round(v)}`\n if (abs >= 1000) return `${Math.round(v)}`\n if (abs >= 10) return `${Math.round(v)}`\n if (Number.isInteger(v)) return String(v)\n return v.toFixed(1)\n}\n\nfunction renderMiniChart(spec: any, opts?: { containerWidth?: number }): React.ReactNode | null {\n const t = String(spec?.type ?? '').toLowerCase()\n if (t !== 'line' && t !== 'bar' && t !== 'pie' && t !== 'scatter') return null\n\n const xs = Array.isArray(spec?.x) ? spec.x : null\n const ys = Array.isArray(spec?.y) ? spec.y : null\n if (!xs || !ys || xs.length === 0 || ys.length === 0) return null\n\n const n = Math.min(xs.length, ys.length)\n const pairs = Array.from({ length: n }, (_, i) => ({\n label: String(xs[i]),\n x: xs[i],\n y: typeof ys[i] === 'number' ? ys[i] : Number(ys[i])\n })).filter((p) => Number.isFinite(p.y))\n if (pairs.length === 0) return null\n if (t === 'line' && pairs.length < 2) return null\n\n const height = 180\n const left = 44\n const right = 18\n const top = 14\n const bottom = 30\n\n const baseWidth = Math.max(520, Math.floor(opts?.containerWidth ?? 0))\n const minBarPx = 22\n const minPointPx = 32\n const neededWidth = left + right + Math.max(pairs.length * (t === 'bar' ? minBarPx : minPointPx), 320)\n const width = Math.max(baseWidth, neededWidth)\n\n const colors = [\n '#1677ff',\n '#52c41a',\n '#faad14',\n '#f5222d',\n '#722ed1',\n '#13c2c2',\n '#eb2f96',\n '#fa541c',\n '#a0d911',\n '#2f54eb',\n '#9254de',\n '#08979c',\n '#d46b08',\n '#7cb305',\n '#c41d7f',\n '#ad2102'\n ]\n\n const formatNumber = (v: number) => {\n if (Number.isInteger(v)) return String(v)\n const abs = Math.abs(v)\n if (abs < 1) return v.toFixed(2)\n return v.toFixed(1)\n }\n\n const textColorForHex = (hex: string) => {\n const m = hex.replace('#', '').trim()\n if (m.length !== 6) return '#fff'\n const r = parseInt(m.slice(0, 2), 16)\n const g = parseInt(m.slice(2, 4), 16)\n const b = parseInt(m.slice(4, 6), 16)\n const luminance = (0.2126 * r + 0.7152 * g + 0.0722 * b) / 255\n return luminance > 0.6 ? '#111' : '#fff'\n }\n\n const colorAt = (i: number) => colors[i] ?? colors[i % colors.length]\n\n if (t === 'pie') {\n const total = pairs.reduce((sum, p) => sum + p.y, 0)\n if (total <= 0) return null\n\n let currentAngle = 0\n const centerX = width / 2 - 80\n const centerY = height / 2\n const radius = 60\n\n return (\n <div style={{ width: '100%', overflowX: 'auto' }}>\n <svg width={width} height={height} viewBox={`0 0 ${width} ${height}`}>\n {pairs.map((p, i) => {\n const sliceAngle = (p.y / total) * 2 * Math.PI\n const x1 = centerX + radius * Math.cos(currentAngle)\n const y1 = centerY + radius * Math.sin(currentAngle)\n const x2 = centerX + radius * Math.cos(currentAngle + sliceAngle)\n const y2 = centerY + radius * Math.sin(currentAngle + sliceAngle)\n\n const largeArcFlag = sliceAngle > Math.PI ? 1 : 0\n const pathData = `M ${centerX} ${centerY} L ${x1} ${y1} A ${radius} ${radius} 0 ${largeArcFlag} 1 ${x2} ${y2} Z`\n\n const midAngle = currentAngle + sliceAngle / 2\n const labelRadius = radius * 0.7\n const labelX = centerX + labelRadius * Math.cos(midAngle)\n const labelY = centerY + labelRadius * Math.sin(midAngle)\n const ratio = p.y / total\n const percentText = `${(ratio * 100).toFixed(1)}%`\n const valueText = formatNumber(p.y)\n const showInner = ratio >= 0.08 && sliceAngle >= 0.35\n const fill = colorAt(i)\n\n currentAngle += sliceAngle\n\n return (\n <g key={i}>\n <path d={pathData} fill={fill} stroke=\"#fff\" strokeWidth=\"1\" />\n {showInner ? (\n <>\n <text x={labelX} y={labelY - 2} textAnchor=\"middle\" style={{ fontSize: 11, fill: textColorForHex(fill) }}>\n {valueText}\n </text>\n <text x={labelX} y={labelY + 12} textAnchor=\"middle\" style={{ fontSize: 10, fill: textColorForHex(fill) }}>\n {percentText}\n </text>\n </>\n ) : null}\n <rect x={width - 140} y={20 + i * 20} width={12} height={12} fill={fill} rx={2} />\n <text x={width - 120} y={30 + i * 20} style={{ fontSize: 12, fill: '#666' }}>\n {p.label}: {valueText} ({percentText})\n </text>\n </g>\n )\n })}\n </svg>\n </div>\n )\n }\n\n if (t === 'scatter') {\n const numericPairs = pairs\n .map((p) => ({\n ...p,\n x: typeof p.x === 'number' ? p.x : Number(p.x)\n }))\n .filter((p) => Number.isFinite(p.x) && Number.isFinite(p.y))\n if (numericPairs.length === 0) return null\n\n const rawMinX = Math.min(...numericPairs.map((p) => p.x))\n const rawMaxX = Math.max(...numericPairs.map((p) => p.x))\n const rawMinY = Math.min(...numericPairs.map((p) => p.y))\n const rawMaxY = Math.max(...numericPairs.map((p) => p.y))\n\n const spanX0 = rawMaxX - rawMinX\n const spanY0 = rawMaxY - rawMinY\n const padX = (spanX0 || Math.abs(rawMaxX) || 1) * 0.06\n const padY = (spanY0 || Math.abs(rawMaxY) || 1) * 0.08\n\n const minX = rawMinX >= 0 ? Math.max(0, rawMinX - padX) : rawMinX - padX\n const maxX = rawMaxX <= 0 ? Math.min(0, rawMaxX + padX) : rawMaxX + padX\n const minY = rawMinY >= 0 ? Math.max(0, rawMinY - padY) : rawMinY - padY\n const maxY = rawMaxY <= 0 ? Math.min(0, rawMaxY + padY) : rawMaxY + padY\n\n const spanX = maxX - minX || 1\n const spanY = maxY - minY || 1\n\n const plotW = width - left - right\n const plotH = height - top - bottom\n\n const scaleX = (x: number) => left + ((x - minX) * plotW) / spanX\n const scaleY = (y: number) => top + ((maxY - y) * plotH) / spanY\n\n const ticksX = Array.from({ length: 5 }, (_, i) => minX + (i * spanX) / 4)\n const ticksY = Array.from({ length: 5 }, (_, i) => minY + (i * spanY) / 4)\n\n const x0 = minY < 0 && maxY > 0 ? scaleY(0) : null\n const y0 = minX < 0 && maxX > 0 ? scaleX(0) : null\n\n const formatAxisNumber = (v: number) => {\n const abs = Math.abs(v)\n if (abs >= 1000) return String(Math.round(v))\n if (abs >= 10) return String(Math.round(v))\n return formatNumber(v)\n }\n\n return (\n <div style={{ width: '100%', overflowX: 'auto' }}>\n <svg width={width} height={height} viewBox={`0 0 ${width} ${height}`}>\n {ticksY.map((value, idx) => {\n const y = scaleY(value)\n return (\n <g key={`y_${idx}`}>\n <line x1={left} y1={y} x2={width - right} y2={y} stroke={idx === 0 ? '#eee' : '#f0f0f0'} />\n <text x={left - 6} y={y + 4} textAnchor=\"end\" style={{ fontSize: 10, fill: '#999' }}>\n {formatAxisNumber(value)}\n </text>\n </g>\n )\n })}\n {ticksX.map((value, idx) => {\n const x = scaleX(value)\n return (\n <g key={`x_${idx}`}>\n <line x1={x} y1={top} x2={x} y2={height - bottom} stroke={idx === 0 ? '#eee' : '#f0f0f0'} />\n <text x={x} y={height - 8} textAnchor=\"middle\" style={{ fontSize: 10, fill: '#999' }}>\n {formatAxisNumber(value)}\n </text>\n </g>\n )\n })}\n\n <line x1={left} y1={top} x2={left} y2={height - bottom} stroke=\"#eee\" />\n <line x1={left} y1={height - bottom} x2={width - right} y2={height - bottom} stroke=\"#eee\" />\n\n {typeof x0 === 'number' ? <line x1={left} y1={x0} x2={width - right} y2={x0} stroke=\"#e6f4ff\" /> : null}\n {typeof y0 === 'number' ? <line x1={y0} y1={top} x2={y0} y2={height - bottom} stroke=\"#e6f4ff\" /> : null}\n\n {numericPairs.map((p, i) => {\n const x = scaleX(p.x)\n const y = scaleY(p.y)\n return (\n <g key={i}>\n <circle cx={x} cy={y} r=\"3\" fill={colors[0]} opacity=\"0.85\" />\n </g>\n )\n })}\n </svg>\n </div>\n )\n }\n\n const rawMinY = Math.min(...pairs.map((p) => p.y))\n const rawMaxY = Math.max(...pairs.map((p) => p.y))\n const minY = Math.min(0, rawMinY)\n const maxY = Math.max(0, rawMaxY)\n const spanY = maxY - minY || 1\n\n const plotW = width - left - right\n const plotH = height - top - bottom\n\n const scaleX = (i: number) => left + (i * plotW) / Math.max(1, pairs.length - 1)\n const scaleY = (y: number) => top + ((maxY - y) * plotH) / spanY\n\n const ticks = Array.from({ length: 5 }, (_, i) => minY + (i * spanY) / 4)\n const maxLabels = Math.max(2, Math.floor(plotW / 70))\n const labelStep = Math.max(1, Math.ceil(pairs.length / maxLabels))\n\n if (t === 'line') {\n const points = pairs.map((p, i) => `${scaleX(i)},${scaleY(p.y)}`).join(' ')\n return (\n <div style={{ width: '100%', overflowX: 'auto' }}>\n <svg width={width} height={height} viewBox={`0 0 ${width} ${height}`}>\n {ticks.map((value, idx) => {\n const y = scaleY(value)\n return (\n <g key={idx}>\n <line x1={left} y1={y} x2={width - right} y2={y} stroke={idx === 0 ? '#eee' : '#f0f0f0'} />\n <text x={left - 6} y={y + 4} textAnchor=\"end\" style={{ fontSize: 10, fill: '#999' }}>\n {formatNumber(value)}\n </text>\n </g>\n )\n })}\n <line x1={left} y1={top} x2={left} y2={height - bottom} stroke=\"#eee\" />\n <polyline fill=\"none\" stroke=\"#1677ff\" strokeWidth=\"2.5\" points={points} />\n {pairs.map((p, i) => {\n const x = scaleX(i)\n const y = scaleY(p.y)\n const showLabel = i % labelStep === 0 || i === pairs.length - 1\n return (\n <g key={i}>\n <circle cx={x} cy={y} r=\"3\" fill=\"#1677ff\" />\n {showLabel ? (\n <text x={x} y={height - 8} textAnchor=\"middle\" style={{ fontSize: 10, fill: '#999' }}>\n {p.label}\n </text>\n ) : null}\n </g>\n )\n })}\n </svg>\n </div>\n )\n }\n\n const barW = plotW / pairs.length\n const y0 = scaleY(0)\n const showValueLabel = barW >= 18\n const xAxisY = height - bottom\n return (\n <div style={{ width: '100%', overflowX: 'auto' }}>\n <svg width={width} height={height} viewBox={`0 0 ${width} ${height}`}>\n {ticks.map((value, idx) => {\n const y = scaleY(value)\n return (\n <g key={idx}>\n <line x1={left} y1={y} x2={width - right} y2={y} stroke={idx === 0 ? '#eee' : '#f0f0f0'} />\n <text x={left - 6} y={y + 4} textAnchor=\"end\" style={{ fontSize: 10, fill: '#999' }}>\n {formatNumber(value)}\n </text>\n </g>\n )\n })}\n <line x1={left} y1={top} x2={left} y2={height - bottom} stroke=\"#eee\" />\n <line x1={left} y1={xAxisY} x2={width - right} y2={xAxisY} stroke=\"#eee\" />\n <line x1={left} y1={y0} x2={width - right} y2={y0} stroke=\"#e6f4ff\" />\n {pairs.map((p, i) => {\n const valueY = scaleY(p.y)\n const barH = Math.abs(valueY - y0)\n const x = left + i * barW + 2\n const cx = left + i * barW + barW / 2\n const y = Math.min(valueY, y0)\n const labelY = p.y >= 0 ? y - 4 : y + barH + 12\n const showLabel = i % labelStep === 0 || i === pairs.length - 1\n return (\n <g key={i}>\n <rect x={x} y={y} width={Math.max(2, barW - 4)} height={barH} fill={colorAt(i)} rx={4} />\n {showValueLabel ? (\n <text x={cx} y={labelY} textAnchor=\"middle\" style={{ fontSize: 10, fill: '#666' }}>\n {formatNumber(p.y)}\n </text>\n ) : null}\n <line x1={cx} y1={xAxisY} x2={cx} y2={xAxisY + 4} stroke=\"#e6e6e6\" />\n {showLabel ? (\n <text x={cx} y={height - 8} textAnchor=\"middle\" style={{ fontSize: 10, fill: '#999' }}>\n {p.label}\n </text>\n ) : null}\n </g>\n )\n })}\n </svg>\n </div>\n )\n}\n\nexport { formatCompactNumber, renderMiniChart, toLegendColor, toVChartSpec }\n","function sanitizeFileName(name: string) {\n return (\n name\n // eslint-disable-next-line no-control-regex\n .replace(/[\\\\/:*?\"<>|\\u0000-\\u001F]/g, '_')\n .replace(/\\s+/g, ' ')\n .trim()\n )\n}\n\nfunction downloadBlob(blob: Blob, fileName: string) {\n const url = URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.href = url\n a.download = sanitizeFileName(fileName) || 'download'\n document.body.appendChild(a)\n a.click()\n a.remove()\n URL.revokeObjectURL(url)\n}\n\nfunction escapeCsvCell(value: unknown) {\n const raw = value === null || value === undefined ? '' : String(value)\n const needsQuote = /[\",\\n\\r]/.test(raw)\n const escaped = raw.replace(/\"/g, '\"\"')\n return needsQuote ? `\"${escaped}\"` : escaped\n}\n\nasync function exportSvgElementAsPng(svgEl: SVGSVGElement, fileName: string) {\n const serializer = new XMLSerializer()\n const svgText = serializer.serializeToString(svgEl)\n const blob = new Blob([svgText], { type: 'image/svg+xml;charset=utf-8' })\n const url = URL.createObjectURL(blob)\n\n const wAttr = svgEl.getAttribute('width')\n const hAttr = svgEl.getAttribute('height')\n const width = wAttr ? Number(wAttr) : svgEl.viewBox.baseVal?.width || 520\n const height = hAttr ? Number(hAttr) : svgEl.viewBox.baseVal?.height || 180\n\n const img = new Image()\n img.crossOrigin = 'anonymous'\n await new Promise<void>((resolve, reject) => {\n img.onload = () => resolve()\n img.onerror = () => reject(new Error('image load failed'))\n img.src = url\n })\n\n const ratio = Math.max(1, Math.min(3, window.devicePixelRatio || 1))\n const canvas = document.createElement('canvas')\n canvas.width = Math.round(width * ratio)\n canvas.height = Math.round(height * ratio)\n const ctx = canvas.getContext('2d')\n if (!ctx) {\n URL.revokeObjectURL(url)\n return\n }\n ctx.scale(ratio, ratio)\n ctx.drawImage(img, 0, 0, width, height)\n URL.revokeObjectURL(url)\n\n const pngBlob: Blob | null = await new Promise((resolve) => {\n canvas.toBlob((b) => resolve(b), 'image/png')\n })\n if (!pngBlob) return\n downloadBlob(pngBlob, fileName)\n}\n\nasync function exportCanvasElementAsPng(canvas: HTMLCanvasElement, fileName: string) {\n const pngBlob: Blob | null = await new Promise((resolve) => {\n canvas.toBlob((b) => resolve(b), 'image/png')\n })\n if (!pngBlob) return\n downloadBlob(pngBlob, fileName)\n}\n\nfunction exportTextFile(text: string, fileName: string, mime = 'text/plain;charset=utf-8') {\n downloadBlob(new Blob([text], { type: mime }), fileName)\n}\n\nfunction exportJsonFile(data: unknown, fileName: string) {\n const json = JSON.stringify(data ?? null, null, 2)\n exportTextFile(json, fileName, 'application/json;charset=utf-8')\n}\n\nexport { downloadBlob, escapeCsvCell, exportCanvasElementAsPng, exportJsonFile, exportSvgElementAsPng, exportTextFile, sanitizeFileName }\n","import { Button as AntButton, Card as AntCard, Space } from 'antd'\nimport React from 'react'\nimport { ArtifactCard } from './ArtifactCard'\nimport { renderMiniChart } from './chart-utils'\nimport { exportCanvasElementAsPng, exportSvgElementAsPng, sanitizeFileName } from './export-utils'\n\n/** 图表制品渲染器,优先使用 VChart,缺少 spec 时回退到通用制品卡片。 */\nexport const ChartViewer: React.FC<{ artifactId: string; title?: string; payload?: any }> = ({ artifactId, title, payload }) => {\n const containerRef = React.useRef<HTMLDivElement | null>(null)\n const [containerWidth, setContainerWidth] = React.useState<number>(0)\n const spec = payload?.spec\n const needsContainerWidth = true\n\n /** 迷你图模式下依赖容器宽度,因此在尺寸变化时重新计算。 */\n React.useLayoutEffect(() => {\n if (!needsContainerWidth) return\n const el = containerRef.current\n if (!el) return\n let frame = 0\n const update = () => {\n const nextWidth = el.clientWidth || 0\n setContainerWidth((prev) => (prev === nextWidth ? prev : nextWidth))\n }\n const scheduleUpdate = () => {\n if (frame) window.cancelAnimationFrame(frame)\n frame = window.requestAnimationFrame(update)\n }\n scheduleUpdate()\n const ro = new ResizeObserver(() => scheduleUpdate())\n ro.observe(el)\n return () => {\n ro.disconnect()\n if (frame) window.cancelAnimationFrame(frame)\n }\n }, [needsContainerWidth])\n\n /** 缺少 chart spec 时退回到占位卡片。 */\n if (!spec) {\n return <ArtifactCard type=\"chart\" artifactId={artifactId} title={title} payload={payload} />\n }\n\n const node = renderMiniChart(spec, { containerWidth })\n if (!node) {\n return <ArtifactCard type=\"chart\" artifactId={artifactId} title={title} payload={payload} />\n }\n const exportBase = sanitizeFileName(title || artifactId || 'chart')\n /** 优先导出 SVG 图,再退回 Canvas 导出 PNG。 */\n const exportPng = async () => {\n const svg = containerRef.current?.querySelector('svg')\n if (svg) {\n await exportSvgElementAsPng(svg, `${exportBase}.png`)\n return\n }\n const canvas = containerRef.current?.querySelector('canvas')\n if (canvas) {\n await exportCanvasElementAsPng(canvas, `${exportBase}.png`)\n }\n }\n\n return (\n <AntCard\n size=\"small\"\n style={{ borderRadius: 12 }}\n title={title || '图表'}\n extra={\n <Space size={4}>\n <AntButton size=\"small\" type=\"text\" onClick={exportPng}>\n 导出PNG\n </AntButton>\n </Space>\n }\n >\n <div ref={containerRef}>{node}</div>\n </AntCard>\n )\n}\n","import { emit } from '@zero-library/common'\nimport { Button } from 'antd'\n\ninterface AgentNavigate {\n emit: string\n name: string\n data: any\n}\ninterface Props {\n data: string\n}\n\nimport { memo, useEffect, useState } from 'react'\n// 自定义业务组件 - 导航到智能体导航页\nexport default memo(({ data }: Props) => {\n const [content, setContent] = useState<AgentNavigate | null>(null)\n useEffect(() => {\n if (!data) {\n return\n }\n console.log(typeof data, data)\n // 从模型返回的数据中解析spec信息\n if (typeof data === 'string') {\n try {\n setContent(JSON.parse(data))\n } catch (_error) {\n setContent(null)\n }\n } else {\n setContent(data as unknown as AgentNavigate)\n }\n }, [data])\n\n const handleClick = () => {\n if (!content?.emit) return\n emit(content.emit, { ...content.data, name: 'luya-web-drawer' }, 'nearest')\n }\n\n return (\n <Button onClick={handleClick} style={{ padding: 0 }} type=\"link\">\n {content?.name || '点击此处'}\n </Button>\n )\n})\n",".appCard {\n width: 180px;\n border-radius: 10px;\n border: 1px solid #d7d7d7;\n background-color: #fafafa;\n font-size: 16px;\n cursor: pointer;\n margin: 8px;\n padding: 12px 8px;\n}\n.appCard > div {\n max-width: 100%;\n}\n.appCard > img {\n height: 30px;\n}\n.fileView {\n width: 200px;\n padding: 4px 8px;\n cursor: pointer;\n background-color: #f5f3f3;\n border-radius: 6px;\n}\n.fileEdit {\n margin: 12px 0;\n border-radius: 6px;\n border: 1px solid #f2f2f2;\n}\n.fileEdit .fileEditHeader {\n padding: 2px 8px;\n background-color: #f2f2f2;\n}\n.fileEdit .fileEditContent {\n padding: 8px;\n background-color: #fafafa;\n}\n.mdEdit {\n margin: 10px 0;\n background-color: rgba(242, 242, 242, 0.2);\n border: 1px solid #f2f2f2;\n padding: 10px;\n border-radius: 4px;\n}\n.chart {\n padding: 10px;\n max-width: 100%;\n min-width: 350px;\n overflow-x: scroll;\n display: inline-block;\n border-radius: 12px;\n border: 1px solid #e5e9f0;\n background: linear-gradient(180deg, #fff 0%, #f8fafc 100%);\n margin: 12px 0;\n}\n.chart .chartSkeleton {\n width: 100% !important;\n}\n.chart .chartSkeleton .chartSkeletonIcon {\n font-size: 40px;\n color: #bfbfbf;\n}\n","import { Flex, Spin } from 'antd'\nimport { useChatStore } from '../../../stores/Context'\nimport styles from './styles.module.less'\n\ninterface Props {\n data: {\n agentId: string\n appKey?: string\n appName: string\n iconUrl: string\n }\n loading: boolean\n}\n// <appcard>{appKey:\"cube-acc\",agentId:\"\",appName:\"罗拉易账\",iconUrl:\"/icon-url/2e53e398d31627d559e0b3b1b5acb731.png\"}</appcard>\nexport default ({ data, loading }: Props) => {\n const chatStore = useChatStore()\n const onClick = async () => {\n if (data.appKey) {\n const canProceed = await chatStore.config.hooks?.onAppRightVerify?.(data.appKey)\n if (canProceed === false) {\n return\n }\n }\n chatStore.getAgentInfo(data.agentId)\n }\n return (\n <Spin spinning={loading} size=\"small\">\n <Flex vertical gap={4} align=\"center\" className={styles.appCard} onClick={onClick}>\n <img src={data.iconUrl} />\n <div className=\"text-ellipsis\" title={data.appName}>\n {data.appName}\n </div>\n </Flex>\n </Spin>\n )\n}\n","import { DotChartOutlined } from '@ant-design/icons'\nimport { LazyComponent } from '@zero-library/common'\nimport { Alert, Skeleton } from 'antd'\nimport classNames from 'classnames'\nimport styles from './styles.module.less'\n// 需要支持的图表类型列表\nconst chartTypes = [\n 'Line',\n 'Column',\n 'Bar',\n 'Area',\n 'Pie',\n 'DualAxes',\n 'Scatter',\n 'WordCloud',\n 'Funnel',\n 'Heatmap',\n 'Histogram',\n 'Liquid',\n 'BidirectionalBar',\n 'Box',\n 'Bullet',\n 'CirclePacking',\n 'Gauge',\n 'Radar',\n 'Rose',\n 'Sankey',\n 'Stock',\n 'Sunburst',\n 'Treemap',\n 'Venn',\n 'Waterfall',\n 'MindMap',\n 'Fishbone',\n 'IndentedTree',\n 'Dendrogram',\n 'OrganizationChart',\n 'FlowGraph',\n 'FlowDirectionGraph',\n 'NetworkGraph'\n // …如果还有其他图表也继续加\n] as const\n// 所有支持的图表类型映射\nconst CHART_COMPONENTS = Object.fromEntries(\n chartTypes.map((type) => [\n type,\n () =>\n import('@ant-design/charts').then((mod) => ({\n default: (mod as any)[type]\n }))\n ])\n)\n\ninterface Props {\n data: {\n type: string\n config: any\n }\n loading: boolean\n}\n\nexport default ({ data, loading }: Props) => {\n const { type, config } = data\n\n return (\n <div className={classNames(styles.chart, 'scroll-fade-in')}>\n {loading ? (\n // Antd 骨架屏\n <Skeleton.Node active className={styles.chartSkeleton}>\n <DotChartOutlined className={styles.chartSkeletonIcon} />\n </Skeleton.Node>\n ) : (\n <LazyComponent\n type={type}\n {...config}\n customComponents={CHART_COMPONENTS}\n unknownContent={\n <Alert title=\"不支持的图表\" description={`当前图表类型 \"${type}\" 暂未实现,请检查图表类型是否正确。`} type=\"warning\" showIcon />\n }\n />\n )}\n </div>\n )\n}\n","import { CodeHighlighter, Mermaid } from '@ant-design/x-v2'\n\ninterface Props {\n data: string\n className: string\n}\nexport default ({ className, data }: Props) => {\n const lang = className?.match(/language-(\\w+)/)?.[1] || ''\n\n if (typeof data !== 'string') return null\n\n if (!lang) {\n return <code>{data}</code>\n }\n\n if (lang === 'mermaid') {\n return <Mermaid>{data}</Mermaid>\n }\n\n return (\n <div\n style={{\n maxHeight: 400,\n overflowY: 'auto',\n overflowX: 'auto',\n borderRadius: 8\n }}\n >\n <CodeHighlighter lang={lang} style={{ margin: 0 }}>\n {data}\n </CodeHighlighter>\n </div>\n )\n}\n","// :::alert type=fileEdit data={fileName:\"\",content:\"\"} :::\nimport { CopyOutlined, PlayCircleOutlined } from '@ant-design/icons'\nimport { copyText, FileIcon } from '@zero-library/common'\nimport { Button, Flex, Spin } from 'antd'\nimport { useChatStore } from '../../../stores/Context'\nimport { FileTextType } from '../../../types/message.types'\nimport XMarkdown from '../../XMarkdown'\nimport styles from './styles.module.less'\n\ninterface Props {\n data: FileTextType\n loading: boolean\n}\nexport default ({ data, loading }: Props) => {\n const chatStore = useChatStore()\n const onPreview = () => {\n chatStore.setPreview(data, true)\n }\n\n return (\n <Flex vertical className={styles.fileEdit}>\n <Flex gap={8} align=\"center\" justify=\"space-between\" className={styles.fileEditHeader}>\n <Flex gap={4} align=\"center\" className=\"flex-1\">\n <FileIcon suffix={'md'} fontSize={18} />\n <div className=\"text-ellipsis\" title={data.fileName}>\n {data.fileName}\n </div>\n </Flex>\n <Spin spinning={loading} size=\"small\">\n <Flex>\n <Button color=\"default\" variant=\"text\" size=\"small\" icon={<PlayCircleOutlined />} onClick={onPreview}>\n 预览编辑\n </Button>\n <Button color=\"default\" variant=\"text\" size=\"small\" icon={<CopyOutlined />} onClick={() => copyText(data.content)}>\n 复制\n </Button>\n </Flex>\n </Spin>\n </Flex>\n <Flex gap={8} align=\"center\" className={styles.fileEditContent}>\n <XMarkdown content={data.content} />\n </Flex>\n </Flex>\n )\n}\n","import { FileIcon } from '@zero-library/common'\nimport { Flex, Spin } from 'antd'\nimport { useChatStore } from '../../../stores/Context'\nimport { FileUrlType } from '../../../types/message.types'\nimport styles from './styles.module.less'\n\ninterface Props {\n data: FileUrlType\n loading: boolean\n}\n// :::alert type=fileView data={fileUrl:\"\",fileName:\"\",suffix:\"\"} :::\nexport default ({ data, loading }: Props) => {\n const chatStore = useChatStore()\n const onClick = () => {\n chatStore.setPreview(data, false)\n }\n return (\n <Spin spinning={loading} size=\"small\">\n <Flex gap={8} align=\"center\" className={styles.fileView} onClick={onClick}>\n <FileIcon suffix={data.suffix} />\n <div className=\"text-ellipsis\" title={data.fileName}>\n {data.fileName}\n </div>\n </Flex>\n </Spin>\n )\n}\n","import XMarkdown from '@ant-design/x-markdown'\nimport { Drawer, Empty, Spin } from 'antd'\nimport { useEffect, useState } from 'react'\nimport { useSnapshot } from 'valtio'\nimport { useChatStore } from '../../../../stores/Context'\n\ninterface Props {\n paramsStr: string\n title: string\n open: boolean\n onClose: () => void\n}\nexport default ({ title, open, onClose, paramsStr }: Props) => {\n const chatStore = useChatStore()\n const configState = useSnapshot(chatStore.config)\n const [content, setContent] = useState('')\n const [loading, setLoading] = useState(false)\n const getContent = async () => {\n try {\n setLoading(true)\n const res = await configState.services.request.docQuery(paramsStr)\n setContent(res.data?.content || '')\n } finally {\n setLoading(false)\n }\n }\n useEffect(() => {\n getContent()\n }, [paramsStr])\n return (\n <Drawer title={title} push={false} size=\"100%\" open={open} onClose={onClose}>\n <Spin spinning={loading}>{content ? <XMarkdown content={content} /> : <Empty className=\"m-t-32\" />}</Spin>\n </Drawer>\n )\n}\n","// TODO 律师启用\nimport { isExternal } from '@zero-library/common'\nimport { Flex, Popover, Spin, Tag } from 'antd'\nimport { useMemo, useState } from 'react'\nimport { ConversationMessage } from '../../../types'\nimport DocDrawer from './components/DocDrawer'\n\ninterface Props {\n message: ConversationMessage\n data: {\n citationName: string\n citationId: number\n citationUrl: string\n }\n loading: boolean\n}\nexport default ({ data, loading, message }: Props) => {\n const [open, setOpen] = useState(false)\n // {\"citationId\": 1, \"citationUrl\": \"type=2&datasetId=1997851270976937984&docId=1765162923266&sid=0fd11940-b20e-4719-9b16-147a5f618e4e\", \"citationName\": \"第3卷证词.pdf\"}\n const citation = useMemo(() => {\n const citations = message.content?.find((item) => item.type === 'citation')?.citations ?? []\n return citations?.find((item) => String(item.citationId) === String(data.citationId))\n }, [data.citationId, message.content])\n const onClick = () => {\n if (!citation?.citationUrl) return\n if (isExternal(citation.citationUrl)) {\n window.open(citation.citationUrl, '_blank')\n } else {\n setOpen(true)\n }\n }\n\n const Content = (\n <div>\n <Flex align=\"center\" gap={8}>\n {/* <FileIcon suffix={data.suffix} fontSize={16} /> */}\n <a onClick={onClick}>{citation?.citationName}</a>\n </Flex>\n </div>\n )\n return (\n <div className=\"inline-block m-l-8\">\n <Spin spinning={loading} size=\"small\">\n <Popover content={Content}>\n <Tag variant=\"filled\" color=\"processing\" className=\"cursor-pointer\">\n {data?.citationName}\n </Tag>\n </Popover>\n </Spin>\n {open && <DocDrawer paramsStr={citation?.citationUrl} title={citation?.citationName} open={open} onClose={() => setOpen(false)} />}\n </div>\n )\n}\n","import { buildUrlParams } from '@zero-library/common'\nimport { Image, Spin } from 'antd'\nimport { useMemo } from 'react'\nimport { TOKEN_KEY, tokenManager } from '../../../core/session'\n\nexport default ({ data, loading, message, ...rest }: any) => {\n const getPreviewFileUrl = (src: string) => {\n return buildUrlParams({ [TOKEN_KEY]: tokenManager.get() || '' }, src)\n }\n\n const previewSrc = useMemo(() => {\n if (String(rest.src).startsWith('/luya')) {\n return getPreviewFileUrl(rest.src)\n }\n return rest.src\n }, [rest.src])\n\n return <Image {...rest} src={previewSrc} placeholder={<Spin />} />\n}\n","import { MarkdownEditor } from '@zero-library/common'\nimport { Button, Flex } from 'antd'\nimport { useEffect, useState } from 'react'\nimport { useChatStore } from '../../../stores/Context'\nimport styles from './styles.module.less'\n\ninterface Props {\n data: {\n content: string\n btnText?: string\n }\n loading: boolean\n}\n// :::alert type=mdEdit data={content:\"\",btnText:\"\"} :::\nexport default ({ data, loading }: Props) => {\n // const num = useRef(0)\n // useEffect(() => {\n // num.current = num.current + 1\n // console.log('mdEdit', num.current, data.content, loading)\n // }, [data.content, loading])\n const chatStore = useChatStore()\n const [value, setValue] = useState('')\n const btnText = data.btnText || '继续' // '开始写作',\n const onOk = () => {\n chatStore.sendMessage(btnText, [], { citation: value })\n }\n useEffect(() => {\n setValue(data.content)\n }, [data.content])\n return (\n <div className={styles.mdEdit}>\n <MarkdownEditor disabled={loading} value={value} onChange={setValue} fixedToolbar={false} floatToolbar={false} />\n {!loading && (\n <Flex justify=\"end\" className=\"m-t-16\">\n <Button color=\"primary\" variant=\"outlined\" onClick={onOk}>\n {/* 确认提纲思路,开始写作 */}\n {btnText}\n </Button>\n </Flex>\n )}\n </div>\n )\n}\n","import { getFileSuffixName } from '@zero-library/common'\nimport React from 'react'\nimport { useChatStore } from '../../../stores/Context'\n\nexport default ({ data, loading, message, ...rest }: any) => {\n const chatStore = useChatStore()\n const conversationWorkspacePrefix = '/workspace'\n\n const getLinkFileName = (path: string) => {\n const lastSegment = path.split('/').pop()\n\n if (!lastSegment) {\n return 'link'\n }\n\n try {\n return decodeURIComponent(lastSegment)\n } catch {\n return lastSegment\n }\n }\n\n const normalizePreviewPath = (path: string) => {\n if (!path) {\n return path\n }\n\n if (path.startsWith(conversationWorkspacePrefix)) {\n return path\n }\n\n const fileName = getLinkFileName(path)\n return `${conversationWorkspacePrefix}${fileName}`\n }\n\n const handlePreviewByPath = (path: string) => {\n const normalizedPath = normalizePreviewPath(path)\n const fileName = getLinkFileName(normalizedPath)\n const suffix = getFileSuffixName(fileName)\n\n chatStore.setPreview({\n fileUrl: chatStore.config.services.request.getPreviewUrl({\n path: normalizedPath,\n workspaceId: message.conversationId\n }),\n fileName,\n suffix\n })\n }\n\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n rest.onClick?.(e)\n\n const href = rest.href || e.currentTarget.href\n if (e.defaultPrevented || !href) {\n return\n }\n\n e.preventDefault()\n\n if (String(rest.href).startsWith('/luya') || String(rest.href).startsWith('/agents')) {\n const url = new URL(href, window.location.origin)\n const path = url.searchParams.get('path')\n\n if (!path) {\n window.open(href, '_blank')\n return\n }\n\n handlePreviewByPath(path)\n return\n }\n\n if (String(rest.href).startsWith('/workspace')) {\n handlePreviewByPath(href)\n return\n }\n\n window.open(href, '_blank')\n }\n\n return (\n <a {...rest} onClick={handleClick}>\n {data}\n </a>\n )\n}\n","import { Think } from '@ant-design/x-v2'\n\nexport default ({ data }) => {\n return (\n <Think title=\"深度思考\" className=\"m-b-16\">\n {data}\n </Think>\n )\n}\n",".xMarkdownStyle :global {\n /* stylelint-disable-next-line selector-class-pattern */\n}\n.xMarkdownStyle :global .ant-codeHighlighter-code code {\n white-space: pre-wrap !important;\n}\n.xMarkdownStyle :global .ant-codeHighlighter-code code,\n.xMarkdownStyle :global .ant-codeHighlighter-code pre,\n.xMarkdownStyle :global .ant-codeHighlighter-code [class*='language-'] {\n background-color: transparent !important;\n}\n","import XMarkdown, { XMarkdownProps } from '@ant-design/x-markdown'\n\nimport Latex from '@ant-design/x-markdown/plugins/Latex'\nimport { isString, safeParseJson } from '@zero-library/common'\nimport classNames from 'classnames'\nimport { ComponentType, MutableRefObject, memo, useMemo, useRef } from 'react'\nimport { ConversationMessage } from '../../types'\nimport AgentNavigate from '../CustomComponents/XMarkdown/AgentNavigate'\nimport AppCard from '../CustomComponents/XMarkdown/AppCard'\nimport Charts from '../CustomComponents/XMarkdown/Charts'\nimport CodeHighlight from '../CustomComponents/XMarkdown/CodeHighlight'\nimport FileEdit from '../CustomComponents/XMarkdown/FileEdit'\nimport FileView from '../CustomComponents/XMarkdown/FileView'\nimport IndexQuote from '../CustomComponents/XMarkdown/IndexQuote'\nimport MarkImg from '../CustomComponents/XMarkdown/MarkImg'\nimport MdEdit from '../CustomComponents/XMarkdown/MdEdit'\nimport PreviewLink from '../CustomComponents/XMarkdown/PreviewLink'\nimport Think from '../CustomComponents/XMarkdown/Think'\nimport styles from './styles.module.less'\n\nconst MARKDOWN_PAYLOAD_PLACEHOLDER_PREFIX = 'XMD_PAYLOAD_'\nconst singleTildeExtension = {\n name: 'singleTilde',\n level: 'inline' as const,\n start(src: string) {\n return src.match(/(?<!~)~(?!~)/)?.index\n },\n tokenizer(src: string) {\n const match = /^(?<!~)~(?!~)/.exec(src)\n if (match) {\n return {\n type: 'text',\n raw: match[0],\n text: match[0]\n }\n }\n return undefined\n }\n}\n\nconst getMarkdownConfig = () => {\n const latexExtensions = Latex()\n const extensions = Array.isArray(latexExtensions) ? [...latexExtensions, singleTildeExtension] : [latexExtensions, singleTildeExtension]\n\n return {\n extensions: extensions as any,\n breaks: true\n }\n}\n\nfunction makeMarkdownPayloadPlaceholder(index: number) {\n return `${MARKDOWN_PAYLOAD_PLACEHOLDER_PREFIX}${index}`\n}\n\nfunction resolveMappedMarkdownPayload(value: any, payloadMap: Map<string, string>) {\n if (isString(value)) {\n if (new RegExp(`^${MARKDOWN_PAYLOAD_PLACEHOLDER_PREFIX}\\\\d+$`).test(value)) {\n return safeParseJson(payloadMap.get(value), { repair: true })\n }\n }\n return value\n}\n\n/** 把混合文本里的完整 HTML 包装成代码块,避免直接参与 Markdown 布局。 */\nfunction formatMixedContent(content: string): string {\n return content.replace(/<!DOCTYPE html>[\\s\\S]*?<\\/html>/gi, (match) => `\\`\\`\\`html\\n${match}\\n\\`\\`\\``)\n}\n\nfunction preprocessCustomTagPayloads(content = '', payloadTagPattern: string) {\n let id = 0\n const payloadMap = new Map<string, string>()\n const processedContent = content.replace(\n new RegExp(`(?<opening><(?<tag>${payloadTagPattern})\\\\b[^>]*>)(?<inner>[\\\\s\\\\S]*?)(?<closing><\\\\/\\\\k<tag>\\\\s*>|$)`, 'gi'),\n (match, _opening, _tag, _inner, _closing, _offset, _source, groups) => {\n const openingText = groups?.opening ?? ''\n if (!openingText) {\n return match\n }\n\n const innerText = groups?.inner ?? ''\n const closingText = groups?.closing ?? ''\n const placeholder = makeMarkdownPayloadPlaceholder(id++)\n payloadMap.set(placeholder, innerText.trim())\n\n return `${openingText}${placeholder}${closingText}`\n }\n )\n\n return {\n content: processedContent,\n payloadMap\n }\n}\n\nconst adaptMarkdownComponent = (\n Component: ComponentType<any>,\n payloadMapRef: MutableRefObject<Map<string, string>>,\n messageRef: MutableRefObject<ConversationMessage>\n) => {\n const WrappedComponent = ({ children, streamStatus, ...rest }: any) => {\n const rawData = resolveMappedMarkdownPayload(children, payloadMapRef.current)\n // console.log('rawData', children, rawData, streamStatus)\n return <Component message={messageRef.current} {...rest} data={rawData} loading={streamStatus === 'loading'} />\n }\n\n WrappedComponent.displayName = `AdaptedMarkdownComponent(${Component.displayName || Component.name || 'Anonymous'})`\n\n return WrappedComponent\n}\n\nconst adaptMarkdownComponents = (\n components: Record<string, ComponentType<any>>,\n payloadMapRef: MutableRefObject<Map<string, string>>,\n messageRef: MutableRefObject<ConversationMessage>\n) =>\n Object.fromEntries(Object.entries(components ?? {}).map(([key, Component]) => [key, adaptMarkdownComponent(Component, payloadMapRef, messageRef)]))\ninterface Props extends XMarkdownProps {\n message?: ConversationMessage\n}\n\nexport default memo(({ message, components = {}, content = '', ...rest }: Props) => {\n const config = useMemo(() => getMarkdownConfig(), [])\n const formattedContent = useMemo(() => formatMixedContent(content), [content])\n const newComponents = useMemo(\n () => ({\n think: Think,\n code: CodeHighlight,\n agentnavigate: AgentNavigate,\n a: PreviewLink,\n appcard: AppCard,\n fileview: FileView,\n charts: Charts,\n indexquote: IndexQuote,\n mdedit: MdEdit,\n fileedit: FileEdit,\n img: MarkImg,\n ...components\n }),\n [components]\n )\n const payloadTagPattern = useMemo(() => Object.keys(newComponents).join('|'), [newComponents])\n const { content: processedContent, payloadMap } = useMemo(\n () => preprocessCustomTagPayloads(formattedContent, payloadTagPattern),\n [formattedContent, payloadTagPattern]\n )\n // Keep the wrapper component identity stable and only refresh injected data through refs.\n const payloadMapRef = useRef(payloadMap)\n const messageRef = useRef(message)\n payloadMapRef.current = payloadMap\n messageRef.current = message\n // console.log('payloadMap', formattedContent, payloadMap)\n const markdownComponents = useMemo(() => adaptMarkdownComponents(newComponents, payloadMapRef, messageRef), [payloadTagPattern])\n\n return (\n <XMarkdown\n // openLinksInNewTab\n className={classNames('x-markdown-light', styles.xMarkdownStyle)}\n config={config}\n {...rest}\n content={processedContent}\n components={markdownComponents}\n />\n )\n})\n","import '@ant-design/x-markdown/themes/light.css'\nimport { Button as AntButton, Card as AntCard, Space } from 'antd'\nimport React from 'react'\nimport XMarkdown from '../../../../XMarkdown'\nimport { ArtifactCard } from './ArtifactCard'\nimport { exportTextFile, sanitizeFileName } from './export-utils'\n\n/** 报告制品渲染器,负责 Markdown 展示和导出。 */\nexport const ReportViewer: React.FC<{ artifactId: string; title?: string; payload?: any }> = ({ artifactId, title, payload }) => {\n const markdown = typeof payload?.markdown === 'string' ? payload.markdown : null\n /** 没有 markdown 正文时回退到通用制品卡片。 */\n if (!markdown) {\n return <ArtifactCard type=\"report\" artifactId={artifactId} title={title} payload={payload} />\n }\n\n const exportBase = sanitizeFileName(title || artifactId || 'report')\n /** 导出原始 Markdown,方便用户二次编辑。 */\n const exportMd = () => {\n exportTextFile(markdown, `${exportBase}.md`, 'text/markdown;charset=utf-8')\n }\n\n return (\n <AntCard\n size=\"small\"\n style={{ borderRadius: 12 }}\n title={title || '报告'}\n extra={\n <Space size={4}>\n <AntButton size=\"small\" type=\"text\" onClick={exportMd}>\n 导出MD\n </AntButton>\n </Space>\n }\n >\n <div style={{ lineHeight: 1.75 }}>\n <XMarkdown content={markdown} />\n </div>\n </AntCard>\n )\n}\n","import { Button as AntButton, Card as AntCard, Table as AntTable, Space } from 'antd'\nimport React from 'react'\nimport { ArtifactCard } from './ArtifactCard'\nimport { escapeCsvCell, exportJsonFile, exportTextFile, sanitizeFileName } from './export-utils'\n\n/** 表格制品渲染器,支持预览和导出 CSV/JSON。 */\nexport const TableViewer: React.FC<{ artifactId: string; title?: string; payload?: any }> = ({ artifactId, title, payload }) => {\n const columns = Array.isArray(payload?.columns) ? payload.columns : null\n const rows = Array.isArray(payload?.rows) ? payload.rows : null\n\n /** 当表格数据不完整时,回退到通用制品卡片。 */\n if (!columns || !rows) {\n return <ArtifactCard type=\"table\" artifactId={artifactId} title={title} payload={payload} />\n }\n\n /** 统一规范列定义,避免 title/dataIndex 缺失导致表格不可用。 */\n const safeColumns = columns\n .map((c: any) => ({\n title: String(c?.title ?? c?.dataIndex ?? ''),\n dataIndex: String(c?.dataIndex ?? '')\n }))\n .filter((c: any) => c.dataIndex)\n\n /** 为 Ant Table 构造稳定的 dataSource,并补齐 key。 */\n const dataSource = rows.map((r: any, i: number) => ({\n key: String(r?.id ?? i),\n ...(r && typeof r === 'object' ? r : {})\n }))\n\n const exportBase = sanitizeFileName(title || artifactId || 'table')\n /** 导出为 CSV,便于直接给 Excel 等工具打开。 */\n const exportCsv = () => {\n const header = safeColumns.map((c: any) => escapeCsvCell(c.title)).join(',')\n const body = rows.map((row: any) => safeColumns.map((c: any) => escapeCsvCell(row?.[c.dataIndex])).join(',')).join('\\n')\n exportTextFile(`\\ufeff${header}\\n${body}\\n`, `${exportBase}.csv`, 'text/csv;charset=utf-8')\n }\n /** 导出为 JSON,保留完整结构化数据。 */\n const exportJson = () => {\n exportJsonFile({ columns: safeColumns, rows }, `${exportBase}.json`)\n }\n\n return (\n <AntCard\n size=\"small\"\n style={{ borderRadius: 12 }}\n title={title || '表格'}\n extra={\n <Space size={4}>\n <AntButton size=\"small\" type=\"text\" onClick={exportCsv}>\n 导出CSV\n </AntButton>\n <AntButton size=\"small\" type=\"text\" onClick={exportJson}>\n 导出JSON\n </AntButton>\n </Space>\n }\n >\n <AntTable size=\"small\" pagination={false} columns={safeColumns} dataSource={dataSource} scroll={{ x: true }} />\n </AntCard>\n )\n}\n","import {\n Button as AntButton,\n Divider as AntDivider,\n Progress as AntProgress,\n Select as AntSelect,\n Switch as AntSwitch,\n Tag as AntTag,\n Input,\n Space,\n Typography\n} from 'antd'\nimport React from 'react'\nimport { ArtifactCard } from './artifacts/ArtifactCard'\nimport { ChartViewer } from './artifacts/ChartViewer'\nimport { ReportViewer } from './artifacts/ReportViewer'\nimport { TableViewer } from './artifacts/TableViewer'\n\nconst { Text: AText, Title } = Typography\n\ntype PathRef = { path: string }\ntype SelectValue = string | number | boolean\n\nconst FIELD_LABEL_STYLE: React.CSSProperties = { marginBottom: 6, fontSize: 13, fontWeight: 500, color: '#555' }\nconst INPUT_RADIUS_STYLE: React.CSSProperties = { borderRadius: 8 }\n\nconst formPathValueStore = new Map<string, unknown>()\n\n/** 规范 model path,保证缓存键格式统一。 */\nfunction normalizeModelPath(modelPath: string): string {\n const normalized = typeof modelPath === 'string' ? modelPath.trim() : ''\n if (!normalized.startsWith('/')) return ''\n return normalized.replace(/\\/{2,}/g, '/').replace(/\\/$/, '') || '/'\n}\n\n/** 计算某个 model path 的字段前缀,用于批量匹配子字段。 */\nfunction modelPathPrefix(modelPath: string): string {\n const normalized = normalizeModelPath(modelPath)\n if (!normalized || normalized === '/') return normalized\n return `${normalized}/`\n}\n\n/** 读取指定 model 下缓存的所有一级字段值。 */\nexport function readModelValues(modelPath: string): Record<string, unknown> {\n const normalized = normalizeModelPath(modelPath)\n if (!normalized || normalized === '/') return {}\n const prefix = modelPathPrefix(normalized)\n const values: Record<string, unknown> = {}\n for (const [path, value] of formPathValueStore.entries()) {\n if (typeof path !== 'string') continue\n if (!path.startsWith(prefix)) continue\n const rest = path.slice(prefix.length)\n if (!rest || rest.includes('/')) continue\n values[rest] = value\n }\n return values\n}\n\n/** 批量写入指定 model 的字段值到本地缓存。 */\nexport function writeModelValues(modelPath: string, values: Record<string, unknown>) {\n const normalized = normalizeModelPath(modelPath)\n if (!normalized || normalized === '/' || !values || typeof values !== 'object' || Array.isArray(values)) return\n Object.entries(values).forEach(([key, value]) => {\n if (typeof key !== 'string' || !key.trim() || key.includes('/')) return\n const fieldPath = `${normalized}/${key}`.replace(/\\/{2,}/g, '/')\n formPathValueStore.set(fieldPath, value === undefined ? null : value)\n })\n}\n\n/** 清空指定 model 及其子路径下的缓存值。 */\nexport function clearModelValues(modelPath: string) {\n const normalized = normalizeModelPath(modelPath)\n if (!normalized) return\n if (normalized === '/') {\n formPathValueStore.clear()\n return\n }\n const prefix = modelPathPrefix(normalized)\n for (const path of Array.from(formPathValueStore.keys())) {\n if (path === normalized || path.startsWith(prefix)) {\n formPathValueStore.delete(path)\n }\n }\n}\n\n/** 清空整个 A2UI 运行时维护的表单缓存。 */\nexport function clearAllModelValues() {\n formPathValueStore.clear()\n}\n\n/** 判断值是否是 `{ path }` 形式的绑定引用。 */\nfunction isPathRef(v: unknown): v is PathRef {\n return !!v && typeof v === 'object' && typeof (v as Record<string, unknown>).path === 'string'\n}\n\n/** 判断值是否是以 `/` 开头的路径字符串。 */\nfunction isPathString(v: unknown): v is string {\n return typeof v === 'string' && v.startsWith('/')\n}\n\n/** 统一从值里抽取绑定路径。 */\nfunction pathFromValue(v: unknown): string | null {\n if (isPathRef(v)) return v.path\n if (isPathString(v)) return v\n return null\n}\n\n/** 解析 `$bind:/path` 形式的 token。 */\nfunction decodeBindPathToken(token: unknown): string | null {\n if (typeof token !== 'string') return null\n if (!token.startsWith('$bind:')) return null\n const path = token.slice('$bind:'.length)\n return path.startsWith('/') ? path : null\n}\n\n/** 把某个绑定路径的新值写回缓存。 */\nfunction rememberPathValue(path: string | null, value: unknown) {\n if (!path) return\n formPathValueStore.set(path, value === undefined ? null : value)\n}\n\n/** 从缓存中读取某个绑定路径当前保存的值。 */\nfunction readPathValue(path: string | null): unknown {\n if (!path) return undefined\n return formPathValueStore.get(path)\n}\n\n/** 如果值本身是绑定路径,则优先读取缓存后的真实值。 */\nfunction resolveMaybePath(v: unknown): unknown {\n const path = pathFromValue(v)\n if (!path) return v\n const cached = readPathValue(path)\n return cached === undefined ? v : cached\n}\n\n/** 把 action context 中的绑定引用展开成可直接提交的真实 values。 */\nexport function normalizeActionContext(context: Record<string, unknown>): Record<string, unknown> {\n const next: Record<string, unknown> = { ...context }\n const refs = next.refs && typeof next.refs === 'object' && !Array.isArray(next.refs) ? (next.refs as Record<string, unknown>) : null\n const values = next.values && typeof next.values === 'object' && !Array.isArray(next.values) ? { ...(next.values as Record<string, unknown>) } : {}\n\n const candidateKeys = refs ? Object.keys(refs) : Object.keys(next).filter((k) => k !== 'form_name' && k !== 'refs' && k !== 'values')\n\n for (const key of candidateKeys) {\n const source = refs ? (refs[key] ?? next[key]) : next[key]\n const resolved = resolveMaybePath(source)\n if (!pathFromValue(resolved)) {\n values[key] = resolved\n next[key] = resolved\n }\n }\n\n if (next.form_name || refs || Object.keys(values).length > 0) {\n next.values = values\n }\n return next\n}\n\n/** 安全读取字符串值。 */\nfunction readStringValue(value: unknown): string | undefined {\n return typeof value === 'string' ? value : undefined\n}\n\n/** 安全读取布尔值。 */\nfunction readBooleanValue(value: unknown): boolean | undefined {\n return typeof value === 'boolean' ? value : undefined\n}\n\n/** 安全读取 Select 支持的原始值。 */\nfunction readSelectValue(value: unknown): SelectValue | undefined {\n return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' ? value : undefined\n}\n\n/** 文本类字段在绑定模式下优先保留用户已输入的非空值。 */\nfunction preferCachedStringValue(externalValue: string, cachedValue: string | undefined, valuePath: string | null) {\n return !!valuePath && externalValue === '' && typeof cachedValue === 'string' && cachedValue !== ''\n}\n\ntype BoundFieldStateOptions<T> = {\n value: unknown\n bindPathToken?: string\n defaultValue: T\n readExternalValue: (value: unknown) => T | undefined\n readCachedValue: (value: unknown) => T | undefined\n preferCachedValueWhenBound?: boolean\n preferCachedOverExternal?: (externalValue: T, cachedValue: T | undefined, valuePath: string | null) => boolean\n}\n\n/** 管理字段的外部值、本地值和缓存值三者同步关系。 */\nfunction useBoundFieldState<T>({\n value,\n bindPathToken,\n defaultValue,\n readExternalValue,\n readCachedValue,\n preferCachedValueWhenBound,\n preferCachedOverExternal\n}: BoundFieldStateOptions<T>) {\n const valuePath = decodeBindPathToken(bindPathToken) ?? pathFromValue(value)\n const cachedValue = readCachedValue(readPathValue(valuePath))\n const externalValue = readExternalValue(value)\n const dirtyRef = React.useRef(false)\n\n const [localValue, setLocalValue] = React.useState<T>(() => {\n if (preferCachedValueWhenBound && valuePath && cachedValue !== undefined) {\n return cachedValue\n }\n if (externalValue !== undefined) {\n if (preferCachedOverExternal?.(externalValue, cachedValue, valuePath) && cachedValue !== undefined) {\n return cachedValue\n }\n return externalValue\n }\n if (cachedValue !== undefined) return cachedValue\n return defaultValue\n })\n\n React.useEffect(() => {\n dirtyRef.current = false\n }, [valuePath])\n\n React.useEffect(() => {\n if (preferCachedValueWhenBound && valuePath && cachedValue !== undefined) {\n setLocalValue(cachedValue)\n return\n }\n if (valuePath && cachedValue !== undefined && dirtyRef.current) {\n setLocalValue(cachedValue)\n return\n }\n if (externalValue !== undefined) {\n if (preferCachedOverExternal?.(externalValue, cachedValue, valuePath) && cachedValue !== undefined) {\n setLocalValue(cachedValue)\n return\n }\n if (!dirtyRef.current) {\n setLocalValue(externalValue)\n rememberPathValue(valuePath, externalValue)\n }\n return\n }\n if (cachedValue !== undefined) {\n setLocalValue(cachedValue)\n }\n }, [cachedValue, externalValue, preferCachedOverExternal, valuePath])\n\n React.useEffect(() => {\n rememberPathValue(valuePath, localValue)\n }, [valuePath, localValue])\n\n const updateLocalValue = React.useCallback(\n (nextValue: T) => {\n dirtyRef.current = true\n setLocalValue(nextValue)\n rememberPathValue(valuePath, nextValue)\n },\n [valuePath]\n )\n\n return { localValue, updateLocalValue, valuePath }\n}\n\ntype BoundFieldProps<T> = {\n id?: string\n label: string\n value?: unknown\n bind_path_token?: string\n onChange?: (value: T) => void\n onDataChange?: (path: string, value: unknown) => void\n}\n\n/** 统一渲染大多数表单项的标题和宽度。 */\nconst FieldBlock: React.FC<{ label: string; children: React.ReactNode }> = ({ label, children }) => (\n <div style={{ width: '100%' }}>\n <div style={FIELD_LABEL_STYLE}>{label}</div>\n {children}\n </div>\n)\n\n/** 把字段变更同时同步到本地缓存、绑定路径和外部监听。 */\nfunction emitFieldChange<T>(\n nextValue: T,\n valuePath: string | null,\n updateLocalValue: (value: T) => void,\n onDataChange?: (path: string, value: unknown) => void,\n onChange?: (value: T) => void\n) {\n updateLocalValue(nextValue)\n if (valuePath) onDataChange?.(valuePath, nextValue)\n onChange?.(nextValue)\n}\n\n/** 统一给输入类控件分配稳定 id。 */\nfunction useControlId(id?: string) {\n const autoId = React.useId()\n return id ?? autoId\n}\n\n/** 从按钮 action 中抽取标准事件。 */\nfunction readActionEvent(action: any) {\n const name = typeof action?.event?.name === 'string' ? action.event.name : ''\n const context = action?.event?.context ?? {}\n return { name, context }\n}\n\n/* ─── 布局 ─── */\n/** 纵向布局容器,适合表单和卡片内容区。 */\nexport const Column: React.FC<{ children?: React.ReactNode }> = ({ children }) => (\n <Space orientation=\"vertical\" style={{ width: '100%' }} size={14}>\n {children}\n </Space>\n)\n\n/** 横向布局容器,支持 gap 和自动换行。 */\nexport const Row: React.FC<{ children?: React.ReactNode; gap?: number }> = ({ children, gap = 8 }) => (\n <Space orientation=\"horizontal\" size={gap} wrap>\n {children}\n </Space>\n)\n\n/* ─── 文字 ─── */\n/** 文本渲染组件,统一处理标题、说明和普通文本。 */\nexport const Text: React.FC<{ text: string; variant?: string }> = ({ text, variant }) => {\n if (variant === 'h2')\n return (\n <Title level={4} style={{ margin: 0 }}>\n {text}\n </Title>\n )\n if (variant === 'h3')\n return (\n <Title level={5} style={{ margin: 0 }}>\n {text}\n </Title>\n )\n if (variant === 'caption')\n return (\n <AText type=\"secondary\" style={{ fontSize: 12, lineHeight: 1.6 }}>\n {text}\n </AText>\n )\n return <AText style={{ lineHeight: 1.7 }}>{text}</AText>\n}\n\n/* ─── 输入 ─── */\n/** 文本输入框,支持 bind token、本地缓存和回写。 */\nexport const TextField: React.FC<\n BoundFieldProps<string> & {\n placeholder?: string\n }\n> = ({ id, label, placeholder, value, bind_path_token, onChange, onDataChange }) => {\n const inputId = useControlId(id)\n const { localValue, updateLocalValue, valuePath } = useBoundFieldState<string>({\n value,\n bindPathToken: bind_path_token,\n defaultValue: '',\n readExternalValue: readStringValue,\n readCachedValue: readStringValue,\n preferCachedValueWhenBound: true,\n preferCachedOverExternal: preferCachedStringValue\n })\n\n return (\n <FieldBlock label={label}>\n <Input\n id={inputId}\n name={inputId}\n placeholder={placeholder}\n value={localValue}\n onChange={(e) => emitFieldChange(e.target.value, valuePath, updateLocalValue, onDataChange, onChange)}\n style={INPUT_RADIUS_STYLE}\n />\n </FieldBlock>\n )\n}\n\n/* ─── 下拉 ─── */\n/** 下拉选择框,统一处理候选项、缓存同步和路径回写。 */\nexport const Select: React.FC<\n BoundFieldProps<SelectValue> & {\n placeholder?: string\n options: { label: string; value: SelectValue }[]\n }\n> = ({ id, label, placeholder, options, value, bind_path_token, onChange, onDataChange }) => {\n const inputId = useControlId(id)\n const { localValue, updateLocalValue, valuePath } = useBoundFieldState<SelectValue | undefined>({\n value,\n bindPathToken: bind_path_token,\n defaultValue: undefined,\n readExternalValue: readSelectValue,\n readCachedValue: readSelectValue,\n preferCachedValueWhenBound: true,\n preferCachedOverExternal: (externalValue, cachedValue, valuePath) =>\n typeof externalValue === 'string' ? preferCachedStringValue(externalValue, readStringValue(cachedValue), valuePath) : false\n })\n\n return (\n <FieldBlock label={label}>\n <AntSelect\n id={inputId}\n style={{ width: '100%' }}\n options={options}\n value={localValue}\n onChange={(nextValue) => emitFieldChange(nextValue, valuePath, updateLocalValue, onDataChange, onChange)}\n placeholder={placeholder || '请选择...'}\n />\n </FieldBlock>\n )\n}\n\n/* ─── 开关 ─── */\n/** 布尔开关组件,用于简单 on/off 表达。 */\nexport const Switch: React.FC<BoundFieldProps<boolean>> = ({ id, label, value, bind_path_token, onChange, onDataChange }) => {\n const inputId = useControlId(id)\n const { localValue, updateLocalValue, valuePath } = useBoundFieldState<boolean>({\n value,\n bindPathToken: bind_path_token,\n defaultValue: false,\n readExternalValue: readBooleanValue,\n readCachedValue: readBooleanValue,\n preferCachedValueWhenBound: true\n })\n\n return (\n <Space align=\"center\">\n <AntSwitch\n id={inputId}\n checked={localValue}\n onChange={(nextValue) => emitFieldChange(nextValue, valuePath, updateLocalValue, onDataChange, onChange)}\n />\n <span style={{ fontSize: 13, color: '#555' }}>{label}</span>\n </Space>\n )\n}\n\n/* ─── 按钮 ─── */\n/** 动作按钮,优先走 onClick,未提供时回退到 action.event 派发。 */\nexport const Button: React.FC<{\n label: string\n variant?: 'primary' | 'default' | 'danger'\n onClick?: () => void\n action?: any\n onAction?: (name: string, context: Record<string, any>) => void\n}> = ({ label, variant = 'default', onClick, action, onAction }) => {\n const handleClick = () => {\n if (onClick) {\n onClick()\n return\n }\n const { name, context } = readActionEvent(action)\n if (name && onAction) {\n onAction(name, context)\n }\n }\n\n return (\n <AntButton type={variant === 'primary' ? 'primary' : 'default'} danger={variant === 'danger'} onClick={handleClick} style={{ borderRadius: 8 }}>\n {label}\n </AntButton>\n )\n}\n\n/* ─── 装饰 ─── */\n/** 分割线组件,用于分隔视觉区块。 */\nexport const Divider: React.FC = () => <AntDivider style={{ margin: '8px 0' }} />\n\n/** 标签组件,用于展示状态或类型。 */\nexport const Tag: React.FC<{ text: string; color?: string }> = ({ text, color }) => <AntTag color={color}>{text}</AntTag>\n\n/** 进度组件,支持百分比、状态和附加说明。 */\nexport const Progress: React.FC<{ percent: number; status?: 'normal' | 'active' | 'success' | 'exception'; text?: string }> = ({\n percent,\n status = 'normal',\n text\n}) => (\n <div style={{ width: '100%' }}>\n <AntProgress percent={Math.max(0, Math.min(100, Math.round(percent)))} status={status} />\n {text ? (\n <AText type=\"secondary\" style={{ fontSize: 12 }}>\n {text}\n </AText>\n ) : null}\n </div>\n)\n\n/* ─── 统一导出,传给 XCard.Box ─── */\nexport const A2uiComponents = {\n Column,\n Row,\n Text,\n TextField,\n Select,\n Switch,\n Button,\n Divider,\n Tag,\n Progress,\n ArtifactCard,\n TableViewer,\n ChartViewer,\n ReportViewer\n} as Record<string, React.ComponentType<any>>\n","/**\n * A2UI 标签解析器\n *\n * A2UI 命令以 <A2UI id=\"xxx\">[JSON]</A2UI> 自定义标签形式出现在\n * toolResult 项的 result.stdout 中。工具执行完成后一次性拿到完整值,\n * 无需流式容错处理。\n *\n * 异常处理:标签内容无法解析(JSON 无效、结构不完整等)时静默跳过,\n * 不抛出异常,不影响页面渲染。\n */\n\n/** 匹配 <A2UI id=\"xxx\">[JSON]</A2UI> 自定义标签。 */\nconst A2UI_TAG_REGEX = /<A2UI\\s+id=\"([^\"]*)\"\\s*>([\\s\\S]*?)<\\/A2UI>/g\n\nexport type ParsedA2uiTag = {\n tagId: string\n commands: any[]\n}\n\n/**\n * 从文本中解析所有完整的 <A2UI> 标签,提取其中的 JSON 命令数组。\n *\n * 异常安全:JSON 解析失败或标签内容为空时静默跳过,不抛出异常。\n */\nexport function parseA2uiTagsFromText(text: string): ParsedA2uiTag[] {\n if (typeof text !== 'string' || !text.includes('<A2UI')) return []\n const tags: ParsedA2uiTag[] = []\n const regex = new RegExp(A2UI_TAG_REGEX)\n let match: RegExpExecArray | null\n while ((match = regex.exec(text)) !== null) {\n const tagId = match[1]\n const json = match[2].trim()\n if (!json) continue\n try {\n const parsed = JSON.parse(json)\n const commands = Array.isArray(parsed) ? parsed : [parsed]\n if (commands.length) tags.push({ tagId, commands })\n } catch {\n // JSON 解析失败,静默跳过\n }\n }\n return tags\n}\n\n/**\n * 从文本中剥离所有 <A2UI> 标签,返回纯净的展示文本。\n * 用于在工具结果展示时移除 A2UI 标签,避免原始标签暴露在界面上。\n */\nexport function stripA2uiTags(text: string): string {\n if (typeof text !== 'string' || !text.includes('<A2UI')) return text\n return text.replace(A2UI_TAG_REGEX, '').trim()\n}\n\n/**\n * 从 toolCall 项的 result.stdout 中提取文本。\n * store 的 toolResultCallback 会把 toolResult 合并到 toolCall item 中,\n * 所以只需扫描 toolCall 类型即可拿到完整的 result.stdout。\n */\nexport function extractItemTextForA2ui(item: any): string {\n if (!item || item.type !== 'toolCall') return ''\n const result = item.result\n if (typeof result === 'string') return result\n if (result && typeof result === 'object' && typeof result.stdout === 'string') {\n return result.stdout\n }\n return ''\n}\n\n/**\n * 从消息列表中提取所有 A2UI 命令。\n * 只扫描 toolCall 项的 result.stdout。\n */\nexport function extractA2uiCommandsFromConversation(conversationMessages: readonly any[]) {\n const commands: any[] = []\n let lastA2uiHostMessageId = ''\n let lastA2uiHostMessageIndex = -1\n const messages = conversationMessages as any[]\n for (let idx = 0; idx < messages.length; idx++) {\n const msg = messages[idx]\n const items = Array.isArray(msg?.content) ? msg.content : []\n let hasA2ui = false\n for (const item of items) {\n // 兼容旧 a2uiCommand 事件\n if (item?.type === 'a2uiCommand' && item.command) {\n commands.push(item.command)\n hasA2ui = true\n continue\n }\n const text = extractItemTextForA2ui(item)\n if (typeof text !== 'string' || !text.includes('<A2UI')) continue\n const tags = parseA2uiTagsFromText(text)\n if (tags.length) {\n for (const tag of tags) {\n commands.push(...tag.commands)\n }\n hasA2ui = true\n }\n }\n if (hasA2ui) {\n lastA2uiHostMessageId = String(msg?.messageId || '')\n lastA2uiHostMessageIndex = idx\n }\n }\n return { commands, lastA2uiHostMessageId, lastA2uiHostMessageIndex }\n}\n\n/**\n * 计算 surfaceId -> 首次出现的消息索引映射。\n * 只扫描 toolCall 项的 result.stdout。\n */\nexport function extractSurfaceAnchorIndexById(conversationMessages: readonly any[]) {\n const anchorIndexById = new Map<string, number>()\n const messages = conversationMessages as any[]\n for (let idx = 0; idx < messages.length; idx++) {\n const msg = messages[idx]\n const items = Array.isArray(msg?.content) ? msg.content : []\n for (const item of items) {\n // 兼容旧 a2uiCommand 事件\n if (item?.type === 'a2uiCommand' && item.command) {\n const cmd = item.command\n const surfaceId =\n cmd?.createSurface?.surfaceId ?? cmd?.updateComponents?.surfaceId ?? cmd?.updateDataModel?.surfaceId ?? cmd?.deleteSurface?.surfaceId ?? ''\n if (!surfaceId) continue\n if (!anchorIndexById.has(surfaceId) && cmd?.createSurface?.surfaceId) {\n anchorIndexById.set(surfaceId, idx)\n }\n if (!anchorIndexById.has(surfaceId) && !cmd?.deleteSurface) {\n anchorIndexById.set(surfaceId, idx)\n }\n continue\n }\n const text = extractItemTextForA2ui(item)\n if (typeof text !== 'string' || !text.includes('<A2UI')) continue\n const tags = parseA2uiTagsFromText(text)\n const commands: any[] = []\n for (const tag of tags) commands.push(...tag.commands)\n if (!commands.length) continue\n\n for (const cmd of commands) {\n const surfaceId =\n cmd?.createSurface?.surfaceId ?? cmd?.updateComponents?.surfaceId ?? cmd?.updateDataModel?.surfaceId ?? cmd?.deleteSurface?.surfaceId ?? ''\n if (!surfaceId) continue\n\n if (!anchorIndexById.has(surfaceId) && cmd?.createSurface?.surfaceId) {\n anchorIndexById.set(surfaceId, idx)\n }\n if (!anchorIndexById.has(surfaceId) && !cmd?.deleteSurface) {\n anchorIndexById.set(surfaceId, idx)\n }\n }\n }\n }\n return anchorIndexById\n}\n\n/**\n * 扫描消息流,基于时序比较提取已 dismiss 的 surfaceId 列表。\n *\n * 核心逻辑:对每个 surfaceId,比较最后一次 createSurface 的消息索引\n * 与最后一次 a2ui_action.v1 的消息索引:\n * - action 在 create 之后 → dismiss(用户已交互,Surface 应隐藏)\n * - create 在 action 之后 → 不 dismiss(后端重新创建了 Surface,应恢复显示)\n * - 只有 action 没有 create → dismiss\n * - 只有 create 没有 action → 不 dismiss\n */\nexport function extractDismissedSurfaceIdsFromMessages(messages: readonly any[]): string[] {\n const lastCreateIndexBySurface = new Map<string, number>()\n const lastActionIndexBySurface = new Map<string, number>()\n\n for (let messageIndex = 0; messageIndex < messages.length; messageIndex++) {\n const message = messages[messageIndex]\n const items = Array.isArray(message?.content) ? message.content : []\n\n for (const item of items) {\n // 扫描 agent 消息中 toolCall 的 createSurface 命令和旧 a2uiCommand 事件\n if (message?.role !== 1) {\n if (item?.type === 'a2uiCommand' && item.command) {\n const surfaceId = String(item.command?.createSurface?.surfaceId || '').trim()\n if (surfaceId) lastCreateIndexBySurface.set(surfaceId, messageIndex)\n }\n const text = extractItemTextForA2ui(item)\n if (typeof text === 'string' && text.includes('<A2UI')) {\n const tags = parseA2uiTagsFromText(text)\n for (const tag of tags) {\n for (const cmd of tag.commands) {\n const surfaceId = String(cmd?.createSurface?.surfaceId || '').trim()\n if (surfaceId) lastCreateIndexBySurface.set(surfaceId, messageIndex)\n }\n }\n }\n }\n\n // 扫描用户消息中的 a2ui_action.v1\n if (message?.role === 1 && item?.type === 'text') {\n const text = item.messageContent || item.text || ''\n if (typeof text !== 'string' || !text.includes('a2ui_action.v1')) continue\n try {\n const parsed = JSON.parse(text.trim())\n if (parsed?.type !== 'a2ui_action.v1') continue\n const surfaceId = String(parsed.surfaceId || '').trim()\n if (!surfaceId) continue\n lastActionIndexBySurface.set(surfaceId, messageIndex)\n } catch {\n // JSON 解析失败,跳过\n }\n }\n }\n }\n\n // 只有 action 在 create 之后(或没有 create)时才 dismiss\n const dismissed: string[] = []\n for (const [surfaceId, actionIndex] of lastActionIndexBySurface) {\n const createIndex = lastCreateIndexBySurface.get(surfaceId)\n if (createIndex === undefined || actionIndex > createIndex) {\n dismissed.push(surfaceId)\n }\n }\n return dismissed\n}\n","function readProp(current: Record<string, any>, props: Record<string, unknown> | null, key: string): unknown {\n return current[key] ?? props?.[key]\n}\n\nfunction readStringProp(current: Record<string, any>, props: Record<string, unknown> | null, key: string): string {\n const value = readProp(current, props, key)\n return typeof value === 'string' ? value.trim() : ''\n}\n\nfunction extractOptionLabels(value: unknown): Record<string, string> | null {\n if (!Array.isArray(value)) return null\n const optionLabels: Record<string, string> = {}\n value.forEach((item) => {\n if (!item || typeof item !== 'object') return\n const option = item as Record<string, unknown>\n if (typeof option.value !== 'string' && typeof option.value !== 'number' && typeof option.value !== 'boolean') return\n if (typeof option.label !== 'string' || !option.label.trim()) return\n optionLabels[String(option.value)] = option.label.trim()\n })\n return Object.keys(optionLabels).length ? optionLabels : null\n}\n\nfunction extractPathFromRef(value: unknown): string | null {\n if (typeof value === 'string') {\n if (value.startsWith('$bind:/')) return value.slice('$bind:'.length)\n if (value.startsWith('/')) return value\n return null\n }\n if (value && typeof value === 'object' && typeof (value as Record<string, unknown>).path === 'string') {\n return (value as Record<string, string>).path\n }\n return null\n}\n\nfunction collectComponentsMeta(\n node: unknown,\n metaByPath: Record<string, { label?: string; optionLabels?: Record<string, string>; component?: string }>\n) {\n if (Array.isArray(node)) {\n node.forEach((item) => collectComponentsMeta(item, metaByPath))\n return\n }\n if (!node || typeof node !== 'object') return\n const current = node as Record<string, any>\n const props = current.props && typeof current.props === 'object' ? (current.props as Record<string, unknown>) : null\n const label = readStringProp(current, props, 'label')\n const path = extractPathFromRef(readProp(current, props, 'bind_path_token')) || extractPathFromRef(readProp(current, props, 'value'))\n if (path) {\n const nextMeta = metaByPath[path] || {}\n if (label) {\n nextMeta.label = label\n }\n const optionLabels = extractOptionLabels(readProp(current, props, 'options'))\n if (optionLabels) {\n nextMeta.optionLabels = optionLabels\n }\n if (typeof current.component === 'string') {\n nextMeta.component = current.component\n }\n metaByPath[path] = nextMeta\n }\n const children = Array.isArray(current.children) ? current.children : []\n children.forEach((child) => collectComponentsMeta(child, metaByPath))\n}\n\nfunction collectSurfaceMetaByPath(\n commands: any[],\n surfaceId: string\n): Record<string, { label?: string; optionLabels?: Record<string, string>; component?: string }> {\n const metaByPath: Record<string, { label?: string; optionLabels?: Record<string, string>; component?: string }> = {}\n commands.forEach((cmd) => {\n const update = cmd?.updateComponents\n if (!update || update.surfaceId !== surfaceId) return\n collectComponentsMeta(update.components, metaByPath)\n })\n return metaByPath\n}\n\nfunction resolveDisplayValue(value: unknown, meta: { label?: string; optionLabels?: Record<string, string>; component?: string }): string {\n if (value === null || value === undefined || value === '') return ''\n if (meta.optionLabels && Object.prototype.hasOwnProperty.call(meta.optionLabels, String(value))) {\n return meta.optionLabels[String(value)]\n }\n if (typeof value === 'boolean') {\n return value ? '是' : '否'\n }\n if (Array.isArray(value)) {\n return value.map((item) => String(item)).join('、')\n }\n if (typeof value === 'object') {\n return JSON.stringify(value)\n }\n return String(value)\n}\n\nexport function collectActionDisplayMeta(\n commands: any[],\n surfaceId: string,\n context: Record<string, unknown>\n): { labels: Record<string, string>; valueLabels: Record<string, string> } | null {\n const refs = context.refs && typeof context.refs === 'object' && !Array.isArray(context.refs) ? (context.refs as Record<string, unknown>) : null\n if (!surfaceId || !refs) return null\n\n const values =\n context.values && typeof context.values === 'object' && !Array.isArray(context.values) ? (context.values as Record<string, unknown>) : context\n const metaByPath = collectSurfaceMetaByPath(commands, surfaceId)\n if (!Object.keys(metaByPath).length) return null\n\n const labels: Record<string, string> = {}\n const valueLabels: Record<string, string> = {}\n Object.entries(refs).forEach(([key, ref]) => {\n const path = extractPathFromRef(ref)\n const meta = path ? metaByPath[path] : null\n if (!meta) return\n if (meta.label) {\n labels[key] = meta.label\n }\n const displayValue = resolveDisplayValue(values[key], meta)\n if (displayValue) {\n valueLabels[key] = displayValue\n }\n })\n return Object.keys(labels).length || Object.keys(valueLabels).length ? { labels, valueLabels } : null\n}\n","import { normalizeActionContext, readModelValues } from '../components/A2uiComponents'\nimport { collectActionDisplayMeta } from './meta'\n\nfunction extractPathFromRef(value: unknown): string | null {\n if (typeof value === 'string') {\n if (value.startsWith('$bind:/')) return value.slice('$bind:'.length)\n if (value.startsWith('/')) return value\n return null\n }\n if (value && typeof value === 'object' && typeof (value as Record<string, unknown>).path === 'string') {\n const path = String((value as Record<string, unknown>).path || '')\n return path.startsWith('/') ? path : null\n }\n return null\n}\n\nfunction commonParentPath(paths: string[]): string {\n const parents = paths\n .map((p) => {\n const idx = p.lastIndexOf('/')\n return idx > 0 ? p.slice(0, idx) : ''\n })\n .filter((p) => p.startsWith('/'))\n if (!parents.length) return ''\n const split = parents.map((p) => p.split('/').filter(Boolean))\n let prefix = split[0]\n for (let i = 1; i < split.length; i++) {\n const cur = split[i]\n let j = 0\n while (j < prefix.length && j < cur.length && prefix[j] === cur[j]) j++\n prefix = prefix.slice(0, j)\n if (!prefix.length) break\n }\n return prefix.length ? `/${prefix.join('/')}` : ''\n}\n\nfunction inferModelPathFromContext(context: Record<string, any>): string {\n const refs = context?.refs && typeof context.refs === 'object' && !Array.isArray(context.refs) ? (context.refs as Record<string, unknown>) : null\n if (!refs) return ''\n const paths = Object.values(refs)\n .map((v) => extractPathFromRef(v))\n .filter((p): p is string => typeof p === 'string' && p.startsWith('/'))\n return commonParentPath(paths)\n}\n\nfunction collectBindingPathsFromNode(node: unknown, paths: string[]) {\n if (Array.isArray(node)) {\n node.forEach((item) => collectBindingPathsFromNode(item, paths))\n return\n }\n if (!node || typeof node !== 'object') return\n const current = node as Record<string, unknown>\n const props =\n current.props && typeof current.props === 'object' && !Array.isArray(current.props) ? (current.props as Record<string, unknown>) : null\n const bindPath =\n extractPathFromRef(current.bind_path_token) ||\n extractPathFromRef(current.value) ||\n extractPathFromRef(props?.bind_path_token) ||\n extractPathFromRef(props?.value)\n if (bindPath) {\n paths.push(bindPath)\n }\n const children = Array.isArray(current.children) ? current.children : []\n children.forEach((child) => collectBindingPathsFromNode(child, paths))\n}\n\nfunction inferModelPathFromSurfaceCommands(surfaceId: string, commands: any[]): string {\n if (!surfaceId) return ''\n const paths: string[] = []\n commands.forEach((cmd) => {\n const update = cmd?.updateComponents\n if (!update || update.surfaceId !== surfaceId) return\n collectBindingPathsFromNode(update.components, paths)\n })\n return commonParentPath(paths)\n}\n\nexport function isSubmitLikeActionName(name: string): boolean {\n const trimmed = typeof name === 'string' ? name.trim() : ''\n return trimmed === 'submit' || trimmed === 'confirm' || trimmed.startsWith('submit_') || trimmed.endsWith('.confirm')\n}\n\nexport function isCancelLikeActionName(name: string): boolean {\n const trimmed = typeof name === 'string' ? name.trim() : ''\n return trimmed === 'cancel' || trimmed === 'qf.cancel' || trimmed.endsWith('.cancel')\n}\n\nexport function shouldOptimisticallyDismissSurface(actionName: string, context: Record<string, unknown>): boolean {\n // wizard 导航动作在调用方已被拦截,不会走到这里。\n // 默认行为:任何非 wizard 动作都视为 dismiss 信号(\"默认删掉就可以\")。\n // 如果未来需要排除某些动作(如 refresh / load_more),可在此添加白名单。\n return true\n}\n\nexport function buildDispatchContext(surfaceId: string, rawContext: Record<string, unknown>, commands: any[]): Record<string, any> {\n let normalizedContext = normalizeActionContext(rawContext) as Record<string, any>\n let modelPath =\n normalizedContext?.model && typeof normalizedContext.model === 'object' && typeof normalizedContext.model.path === 'string'\n ? String(normalizedContext.model.path).trim()\n : ''\n if (!modelPath) {\n const inferredModelPath = inferModelPathFromContext(normalizedContext)\n if (inferredModelPath) {\n modelPath = inferredModelPath\n normalizedContext = {\n ...normalizedContext,\n model: {\n ...(normalizedContext.model && typeof normalizedContext.model === 'object' ? normalizedContext.model : {}),\n path: inferredModelPath\n }\n }\n }\n }\n if (!modelPath) {\n const inferredModelPath = inferModelPathFromSurfaceCommands(surfaceId, commands)\n if (inferredModelPath) {\n modelPath = inferredModelPath\n normalizedContext = {\n ...normalizedContext,\n model: {\n ...(normalizedContext.model && typeof normalizedContext.model === 'object' ? normalizedContext.model : {}),\n path: inferredModelPath\n }\n }\n }\n }\n if (modelPath) {\n const valuesFromStore = readModelValues(modelPath)\n const existingValues =\n normalizedContext.values && typeof normalizedContext.values === 'object' && !Array.isArray(normalizedContext.values)\n ? (normalizedContext.values as Record<string, unknown>)\n : {}\n const mergedValues = { ...valuesFromStore, ...existingValues }\n if (Object.keys(mergedValues).length > 0) {\n const existingRefs =\n normalizedContext.refs && typeof normalizedContext.refs === 'object' && !Array.isArray(normalizedContext.refs)\n ? (normalizedContext.refs as Record<string, unknown>)\n : {}\n const refs: Record<string, unknown> = { ...existingRefs }\n for (const key of Object.keys(mergedValues)) {\n if (refs[key] === undefined) {\n refs[key] = `$bind:${modelPath}/${key}`.replace(/\\/{2,}/g, '/')\n }\n }\n normalizedContext = {\n ...normalizedContext,\n refs,\n values: mergedValues\n }\n }\n }\n\n const displayMeta = collectActionDisplayMeta(commands, surfaceId, normalizedContext)\n if (!displayMeta) return normalizedContext\n return {\n ...normalizedContext,\n labels: {\n ...(normalizedContext.labels && typeof normalizedContext.labels === 'object' ? normalizedContext.labels : {}),\n ...displayMeta.labels\n },\n valueLabels: {\n ...(normalizedContext.valueLabels && typeof normalizedContext.valueLabels === 'object' ? normalizedContext.valueLabels : {}),\n ...displayMeta.valueLabels\n }\n }\n}\n","export function extractSurfaceId(cmd: any): string {\n if (!cmd || typeof cmd !== 'object') return ''\n return cmd.createSurface?.surfaceId ?? cmd.updateComponents?.surfaceId ?? cmd.updateDataModel?.surfaceId ?? cmd.deleteSurface?.surfaceId ?? ''\n}\n\nexport function resolveVisibleSurfaceIds(commands: any[], dismissedSurfaceIds: readonly string[] = []): string[] {\n const states = new Map<string, { deleted: boolean }>()\n commands.forEach((cmd) => {\n const sid = extractSurfaceId(cmd)\n if (!sid) return\n const prev = states.get(sid) || { deleted: false }\n if ((cmd as Record<string, unknown>)?.deleteSurface) {\n prev.deleted = true\n } else if ((cmd as Record<string, unknown>)?.createSurface) {\n prev.deleted = false\n }\n states.set(sid, prev)\n })\n return Array.from(states.entries())\n .filter(([sid, st]) => !st.deleted && !dismissedSurfaceIds.includes(sid))\n .map(([sid]) => sid)\n}\n","type WizardField = {\n key: string\n label?: string | null\n placeholder?: string | null\n required?: boolean | null\n type?: string | null\n options?: { label: string; value: string }[]\n default?: unknown\n}\n\ntype WizardStep = {\n stepId: string\n title?: string | null\n description?: string | null\n fields?: WizardField[]\n}\n\nexport type WizardSchema = {\n version?: string\n surfaceId: string\n title?: string | null\n description?: string | null\n modelPath: string\n steps: WizardStep[]\n nextEvent: string\n backEvent: string\n submitEvent: string\n labels?: { next?: string | null; back?: string | null; submit?: string | null } | null\n}\n\nexport type WizardModelSeed = {\n modelPath: string\n values: Record<string, unknown>\n}\n\nfunction readString(obj: Record<string, any>, ...keys: string[]): string {\n for (const k of keys) {\n const v = obj?.[k]\n if (typeof v === 'string' && v.trim()) return v.trim()\n }\n return ''\n}\n\nfunction readOptionalString(obj: Record<string, any>, ...keys: string[]): string | null {\n for (const k of keys) {\n const v = obj?.[k]\n if (typeof v === 'string') return v\n }\n return null\n}\n\nexport function normalizeWizardSchema(schema: unknown): WizardSchema | null {\n if (!schema || typeof schema !== 'object') return null\n const raw = schema as Record<string, any>\n const surfaceId = readString(raw, 'surfaceId', 'surface_id')\n const modelPath = readString(raw, 'modelPath', 'model_path')\n const submitEvent = readString(raw, 'submitEvent', 'submit_event')\n const stepsRaw = Array.isArray(raw.steps) ? raw.steps : []\n if (!surfaceId || !modelPath || !submitEvent || !stepsRaw.length) return null\n\n const steps: WizardStep[] = stepsRaw\n .map((s: any) => {\n if (!s || typeof s !== 'object') return null\n const stepObj = s as Record<string, any>\n const stepId = readString(stepObj, 'stepId', 'step_id')\n if (!stepId) return null\n const fieldsRaw = Array.isArray(stepObj.fields) ? stepObj.fields : []\n const fields: WizardField[] = fieldsRaw\n .map((f: any) => {\n if (!f || typeof f !== 'object') return null\n const fo = f as Record<string, any>\n const key = readString(fo, 'key')\n if (!key) return null\n const type = readOptionalString(fo, 'type')\n const label = readOptionalString(fo, 'label')\n const placeholder = readOptionalString(fo, 'placeholder')\n const required = typeof fo.required === 'boolean' ? fo.required : fo.required === null || fo.required === undefined ? null : !!fo.required\n const options = Array.isArray(fo.options) ? fo.options : undefined\n return {\n key,\n type,\n label,\n placeholder,\n required,\n options,\n default: fo.default\n }\n })\n .filter(Boolean) as WizardField[]\n return {\n stepId,\n title: readOptionalString(stepObj, 'title'),\n description: readOptionalString(stepObj, 'description'),\n fields\n }\n })\n .filter(Boolean) as WizardStep[]\n\n if (!steps.length) return null\n const nextEvent = readString(raw, 'nextEvent', 'next_event') || 'wizard.next'\n const backEvent = readString(raw, 'backEvent', 'back_event') || 'wizard.back'\n const labels =\n raw.labels && typeof raw.labels === 'object' && !Array.isArray(raw.labels)\n ? (raw.labels as { next?: string | null; back?: string | null; submit?: string | null })\n : null\n return {\n version: readOptionalString(raw, 'version') ?? undefined,\n surfaceId,\n modelPath,\n steps,\n submitEvent,\n nextEvent,\n backEvent,\n labels,\n title: readOptionalString(raw, 'title'),\n description: readOptionalString(raw, 'description')\n }\n}\n\nexport function findWizardSchemaBySurface(conversationMessages: readonly any[], surfaceId: string): WizardSchema | null {\n if (!surfaceId) return null\n for (let i = conversationMessages.length - 1; i >= 0; i--) {\n const msg = conversationMessages[i]\n const items = Array.isArray(msg?.content) ? msg.content : []\n for (let j = items.length - 1; j >= 0; j--) {\n const item = items[j]\n if (item?.type !== 'a2uiSchema') continue\n const schema = normalizeWizardSchema(item?.schema)\n if (schema && schema.surfaceId === surfaceId) return schema\n }\n }\n return null\n}\n\nexport function buildWizardModelSeed(schema: WizardSchema | null): WizardModelSeed | null {\n if (!schema?.modelPath) return null\n const values: Record<string, unknown> = {}\n schema.steps.forEach((step) => {\n const fields = Array.isArray(step?.fields) ? step.fields : []\n fields.forEach((field) => {\n const key = typeof field?.key === 'string' ? field.key.trim() : ''\n if (!key || key in values || field?.default === undefined) return\n values[key] = field.default\n })\n })\n return { modelPath: schema.modelPath, values }\n}\n\nexport function pickWizardCurrentStepIdFromCommands(surfaceId: string, commands: any[]): string {\n for (let i = commands.length - 1; i >= 0; i--) {\n const cmd = commands[i]\n const update = cmd?.updateComponents\n if (!update || update.surfaceId !== surfaceId) continue\n const components = Array.isArray(update.components) ? update.components : []\n for (const c of components) {\n if (c?.component !== 'Button') continue\n const stepId = c?.action?.event?.context?.step_id\n if (typeof stepId === 'string' && stepId.trim()) return stepId.trim()\n }\n }\n return ''\n}\n\nfunction buildWizardComponents(schema: WizardSchema, stepId: string) {\n const stepIndex = Math.max(\n 0,\n schema.steps.findIndex((s) => s?.stepId === stepId)\n )\n const step = schema.steps[stepIndex] || schema.steps[0]\n const resolvedStepId = typeof step?.stepId === 'string' && step.stepId ? step.stepId : schema.steps[0]?.stepId\n const fields = Array.isArray(step?.fields) ? step.fields : []\n const modelPath = schema.modelPath\n\n const rootChildren: string[] = ['title', 'desc', 'step-indicator', 'step-title']\n const nodes: any[] = [\n { component: 'Column', id: 'root', children: rootChildren },\n { component: 'Text', id: 'title', text: schema.title || '表单', variant: 'h2' },\n { component: 'Text', id: 'desc', text: schema.description || '', variant: 'caption' },\n { component: 'Text', id: 'step-indicator', text: `步骤 ${stepIndex + 1}/${schema.steps.length}`, variant: 'caption' },\n { component: 'Text', id: 'step-title', text: step?.title || '', variant: 'h3' }\n ]\n\n for (const f of fields) {\n if (!f || typeof f !== 'object') continue\n const key = typeof f.key === 'string' ? f.key.trim() : ''\n if (!key) continue\n const id = `f-${key}`\n const bindPath = `${modelPath}/${key}`.replace(/\\/{2,}/g, '/')\n rootChildren.push(id)\n const label = typeof f.label === 'string' && f.label.trim() ? f.label.trim() : key\n const placeholder = typeof f.placeholder === 'string' ? f.placeholder : undefined\n const type = typeof f.type === 'string' ? f.type.toLowerCase() : 'text'\n if (type === 'select') {\n nodes.push({\n component: 'Select',\n id,\n label,\n placeholder,\n options: Array.isArray((f as any).options) ? (f as any).options : [],\n value: { path: bindPath },\n bind_path_token: `$bind:${bindPath}`\n })\n continue\n }\n if (type === 'switch') {\n nodes.push({\n component: 'Switch',\n id,\n label,\n value: { path: bindPath },\n bind_path_token: `$bind:${bindPath}`\n })\n continue\n }\n nodes.push({\n component: 'TextField',\n id,\n label,\n placeholder,\n value: { path: bindPath },\n bind_path_token: `$bind:${bindPath}`\n })\n }\n\n rootChildren.push('divider', 'actions')\n nodes.push({ component: 'Divider', id: 'divider' })\n nodes.push({ component: 'Row', id: 'actions', gap: 8, children: [] as string[] })\n const actions = nodes.find((n) => n.id === 'actions')\n const actionChildren: string[] = []\n actions.children = actionChildren\n const backLabel = typeof schema.labels?.back === 'string' && schema.labels.back.trim() ? schema.labels.back.trim() : '上一步'\n const nextLabel = typeof schema.labels?.next === 'string' && schema.labels.next.trim() ? schema.labels.next.trim() : '下一步'\n const submitLabel = typeof schema.labels?.submit === 'string' && schema.labels.submit.trim() ? schema.labels.submit.trim() : '提交'\n\n if (stepIndex > 0) {\n actionChildren.push('btn-prev')\n nodes.push({\n component: 'Button',\n id: 'btn-prev',\n label: backLabel,\n variant: 'default',\n action: { event: { name: schema.backEvent, context: { model: { path: modelPath }, step_id: resolvedStepId } } }\n })\n }\n\n const isLast = stepIndex >= schema.steps.length - 1\n if (isLast) {\n actionChildren.push('btn-submit')\n nodes.push({\n component: 'Button',\n id: 'btn-submit',\n label: submitLabel,\n variant: 'primary',\n action: { event: { name: schema.submitEvent, context: { model: { path: modelPath }, step_id: resolvedStepId } } }\n })\n } else {\n actionChildren.push('btn-next')\n nodes.push({\n component: 'Button',\n id: 'btn-next',\n label: nextLabel,\n variant: 'primary',\n action: { event: { name: schema.nextEvent, context: { model: { path: modelPath }, step_id: resolvedStepId } } }\n })\n }\n\n return nodes\n}\n\nexport function buildWizardUpdateComponentsCommand(schema: WizardSchema, stepId: string) {\n return {\n updateComponents: {\n surfaceId: schema.surfaceId,\n components: buildWizardComponents(schema, stepId)\n },\n version: 'v0.9'\n }\n}\n","import { shouldOptimisticallyDismissSurface } from './action'\nimport { extractItemTextForA2ui, parseA2uiTagsFromText } from './extract'\nimport { resolveVisibleSurfaceIds } from './visibility'\nimport {\n buildWizardModelSeed,\n buildWizardUpdateComponentsCommand,\n normalizeWizardSchema,\n pickWizardCurrentStepIdFromCommands,\n type WizardSchema\n} from './wizard'\n\nexport type MessageCursor = {\n messageId: string\n contentLength: number\n}\n\nexport type A2uiRuntimeEffect =\n | { type: 'reset-model-store' }\n | { type: 'clear-model'; modelPath: string }\n | { type: 'write-model'; modelPath: string; values: Record<string, unknown> }\n\nexport type A2uiRuntimeState = {\n processedMessageCursors: MessageCursor[]\n processedTagIds: string[]\n serverCommands: any[]\n localCommands: any[]\n anchorIndexBySurface: Record<string, number>\n wizardSchemaBySurface: Record<string, WizardSchema>\n latestCreateCommandIndexBySurface: Record<string, number>\n initializedWizardRevisionBySurface: Record<string, string>\n modelPathBySurface: Record<string, string>\n wizardStepBySurface: Record<string, string>\n optimisticallyDismissedSurfaceIds: string[]\n lastA2uiHost: { id: string; index: number }\n}\n\ntype PendingItem = {\n messageIndex: number\n messageId: string\n item: any\n}\n\ntype RuntimeActionInput = {\n surfaceId: string\n actionName: string\n rawContext: Record<string, unknown>\n}\n\n/** 创建全新的 A2UI runtime 状态。 */\nexport function createA2uiRuntimeState(): A2uiRuntimeState {\n return {\n processedMessageCursors: [],\n processedTagIds: [],\n serverCommands: [],\n localCommands: [],\n anchorIndexBySurface: {},\n wizardSchemaBySurface: {},\n latestCreateCommandIndexBySurface: {},\n initializedWizardRevisionBySurface: {},\n modelPathBySurface: {},\n wizardStepBySurface: {},\n optimisticallyDismissedSurfaceIds: [],\n lastA2uiHost: { id: '', index: -1 }\n }\n}\n\n/** 从命令体中提取 surfaceId。 */\nfunction extractSurfaceId(command: any): string {\n if (!command || typeof command !== 'object') return ''\n return String(\n command.createSurface?.surfaceId ??\n command.updateComponents?.surfaceId ??\n command.updateDataModel?.surfaceId ??\n command.deleteSurface?.surfaceId ??\n ''\n ).trim()\n}\n\n/** 合并当前 runtime 中的服务端命令和本地命令。 */\nexport function getA2uiRuntimeCommands(state: A2uiRuntimeState): any[] {\n return [...state.serverCommands, ...state.localCommands]\n}\n\n/**\n * 【BUGFIX】对命令进行消毒,确保 updateDataModel.path 始终为有效字符串。\n *\n * 问题场景:后端下发的某些特殊数据中,updateDataModel 命令可能缺少 path\n * 字段(值为 undefined / null)。@ant-design/x-card 的 Card 组件在处理\n * updateDataModel 时会直接调用 setValueByPath(model, path, value),\n * 该函数第一行 path.replace(/^\\//, '') 会在 path 为 undefined 时抛出\n * TypeError: Cannot read properties of undefined (reading 'replace'),\n * 导致整个 Card 组件树崩溃(白屏)。\n *\n * 虽然 runtime 在写入本地 model store 时已对 path 做了类型守卫\n * (见 processA2uiCommand 中的 if 判断),但原始命令对象仍被原封不动地\n * 传给了 XCard.Box,Card 组件内部没有同等防护。\n *\n * 修复方案:在命令到达 XCard.Box 之前(即 selectA2uiRuntimeView 中)\n * 对命令列表做消毒——对 updateDataModel.path 非有效字符串的命令,\n * 移除其 updateDataModel 字段,从而避免 Card 组件崩溃。\n * 对于有效命令则原样返回(引用不变),不影响正常逻辑。\n */\nfunction sanitizeA2uiCommands(commands: any[]): any[] {\n return commands.map((cmd) => {\n if (!cmd || typeof cmd !== 'object' || !cmd.updateDataModel) return cmd\n const { path } = cmd.updateDataModel\n if (typeof path === 'string' && path.trim()) return cmd\n // path 无效(undefined / null / 空串):移除 updateDataModel 字段,\n // 防止 @ant-design/x-card 的 setValueByPath 在调用 path.replace() 时崩溃\n const { updateDataModel: _, ...rest } = cmd\n return rest\n })\n}\n\n/** 当 schema 和 createSurface 都已到位时,初始化 wizard 的默认值和首步。 */\nfunction initializeWizardSurface(state: A2uiRuntimeState, surfaceId: string, effects: A2uiRuntimeEffect[], nextWizardSteps: Record<string, string>) {\n const wizard = state.wizardSchemaBySurface[surfaceId]\n const createCommandIndex = state.latestCreateCommandIndexBySurface[surfaceId]\n const modelSeed = buildWizardModelSeed(wizard)\n if (!wizard || modelSeed === null || createCommandIndex === undefined) return\n\n const revision = `${surfaceId}:${createCommandIndex}`\n state.modelPathBySurface[surfaceId] = modelSeed.modelPath\n if (state.initializedWizardRevisionBySurface[surfaceId] === revision) return\n\n effects.push({ type: 'clear-model', modelPath: modelSeed.modelPath })\n effects.push({ type: 'write-model', modelPath: modelSeed.modelPath, values: modelSeed.values })\n state.initializedWizardRevisionBySurface[surfaceId] = revision\n\n const firstStepId = wizard.steps[0]?.stepId\n if (typeof firstStepId === 'string' && firstStepId.trim()) {\n nextWizardSteps[surfaceId] = firstStepId.trim()\n }\n}\n\n/** 处理单条 A2UI 命令,更新 runtime 状态和 effects。 */\nfunction processA2uiCommand(\n cmd: any,\n messageIndex: number,\n messageId: string,\n nextState: A2uiRuntimeState,\n effects: A2uiRuntimeEffect[],\n deletedSurfaceIds: Set<string>,\n nextWizardSteps: Record<string, string>\n) {\n nextState.serverCommands.push(cmd)\n nextState.lastA2uiHost = { id: messageId, index: messageIndex }\n\n // 先尝试从命令本身提取 wizard schema\n // wizard schema 命令的 surfaceId/modelPath/steps/submitEvent 直接挂在对象上,\n // 不嵌套在 createSurface/updateComponents 里,所以 extractSurfaceId 匹配不到\n const wizardSchema = normalizeWizardSchema(cmd)\n if (wizardSchema) {\n nextState.wizardSchemaBySurface[wizardSchema.surfaceId] = wizardSchema\n }\n\n const surfaceId = extractSurfaceId(cmd)\n if (!surfaceId) return\n\n // createSurface 时更新锚点到最新位置(支持同 surfaceId 重新创建后在新位置渲染)\n // 其他命令只在首次出现时设置锚点\n if (cmd?.createSurface) {\n nextState.anchorIndexBySurface[surfaceId] = messageIndex\n } else if (nextState.anchorIndexBySurface[surfaceId] === undefined && !cmd?.deleteSurface) {\n nextState.anchorIndexBySurface[surfaceId] = messageIndex\n }\n\n if (cmd?.createSurface) {\n nextState.latestCreateCommandIndexBySurface[surfaceId] = nextState.serverCommands.length - 1\n // 重新创建 Surface 时,清除之前的乐观隐藏状态\n nextState.optimisticallyDismissedSurfaceIds = nextState.optimisticallyDismissedSurfaceIds.filter((id) => id !== surfaceId)\n // 尝试从 createSurface 命令中提取 wizard schema\n // schema 可能直接嵌入在 createSurface 对象中,也可能在 schema/wizard/plan 字段中\n const schemaSource = cmd.createSurface.schema ?? cmd.createSurface.wizard ?? cmd.createSurface.plan\n const schema = normalizeWizardSchema(schemaSource) ?? normalizeWizardSchema(cmd.createSurface)\n if (schema) {\n nextState.wizardSchemaBySurface[surfaceId] = schema\n }\n initializeWizardSurface(nextState, surfaceId, effects, nextWizardSteps)\n }\n\n if (cmd?.updateDataModel) {\n const { path, value } = cmd.updateDataModel\n if (typeof path === 'string' && path.trim() && value && typeof value === 'object' && !Array.isArray(value)) {\n effects.push({ type: 'write-model', modelPath: path, values: value as Record<string, unknown> })\n }\n }\n\n if (cmd?.deleteSurface) {\n deletedSurfaceIds.add(surfaceId)\n const modelPath = nextState.modelPathBySurface[surfaceId]\n if (modelPath) effects.push({ type: 'clear-model', modelPath })\n delete nextState.initializedWizardRevisionBySurface[surfaceId]\n delete nextState.modelPathBySurface[surfaceId]\n }\n}\n\n/** 增量比对消息流,只有历史被改写时才退化成全量回放。 */\nfunction diffConversationMessages(messages: readonly any[], prevCursors: MessageCursor[]) {\n if (messages.length < prevCursors.length) {\n return { shouldReplayAll: true, nextCursors: [] as MessageCursor[], pendingItems: [] as PendingItem[] }\n }\n\n const nextCursors: MessageCursor[] = []\n const pendingItems: PendingItem[] = []\n for (let messageIndex = 0; messageIndex < messages.length; messageIndex += 1) {\n const message = messages[messageIndex]\n const messageId = String(message?.messageId ?? messageIndex)\n const items = Array.isArray(message?.content) ? message.content : []\n const prevCursor = prevCursors[messageIndex]\n const startIndex = prevCursor ? prevCursor.contentLength : 0\n\n if (prevCursor && (prevCursor.messageId !== messageId || items.length < prevCursor.contentLength)) {\n return { shouldReplayAll: true, nextCursors: [] as MessageCursor[], pendingItems: [] as PendingItem[] }\n }\n\n for (let itemIndex = startIndex; itemIndex < items.length; itemIndex += 1) {\n pendingItems.push({ messageIndex, messageId, item: items[itemIndex] })\n }\n nextCursors.push({ messageId, contentLength: items.length })\n }\n\n return { shouldReplayAll: false, nextCursors, pendingItems }\n}\n\n/** 扫描所有消息的 toolCall 项,从 result.stdout 中提取尚未处理的 A2UI 标签命令。 */\nfunction scanA2uiTagsFromMessages(\n messages: readonly any[],\n processedTagIds: Set<string>\n): { newTags: Array<{ commands: any[]; messageIndex: number; messageId: string }>; newTagIds: string[] } {\n const newTags: Array<{ commands: any[]; messageIndex: number; messageId: string }> = []\n const newTagIds: string[] = []\n for (let messageIndex = 0; messageIndex < messages.length; messageIndex += 1) {\n const message = messages[messageIndex]\n const messageId = String(message?.messageId ?? messageIndex)\n const items = Array.isArray(message?.content) ? message.content : []\n for (const item of items) {\n const text = extractItemTextForA2ui(item)\n if (typeof text !== 'string' || !text.includes('<A2UI')) continue\n const tags = parseA2uiTagsFromText(text)\n for (const tag of tags) {\n if (processedTagIds.has(tag.tagId)) continue\n processedTagIds.add(tag.tagId)\n newTagIds.push(tag.tagId)\n newTags.push({ commands: tag.commands, messageIndex, messageId })\n }\n }\n }\n return { newTags, newTagIds }\n}\n\n/** 用消息流推进 runtime 状态,必要时生成模型同步 effect。 */\nexport function reduceA2uiRuntimeMessages(state: A2uiRuntimeState, messages: readonly any[]) {\n const { shouldReplayAll, pendingItems, nextCursors } = diffConversationMessages(messages || [], state.processedMessageCursors)\n\n // 扫描 toolCall 项中的 A2UI 标签(不依赖 diff,因为 toolCall 的 result 是合并进来的,contentLength 不变)\n const tagProcessedSet = new Set(shouldReplayAll ? [] : state.processedTagIds)\n const { newTags, newTagIds } = scanA2uiTagsFromMessages(messages || [], tagProcessedSet)\n\n if (!shouldReplayAll && pendingItems.length === 0 && newTags.length === 0) {\n return { state, effects: [] as A2uiRuntimeEffect[] }\n }\n\n const nextState = shouldReplayAll ? createA2uiRuntimeState() : { ...state }\n nextState.processedMessageCursors = shouldReplayAll ? [] : [...state.processedMessageCursors]\n nextState.processedTagIds = shouldReplayAll ? [] : [...state.processedTagIds, ...newTagIds]\n nextState.serverCommands = shouldReplayAll ? [] : [...state.serverCommands]\n nextState.localCommands = shouldReplayAll ? [] : [...state.localCommands]\n nextState.anchorIndexBySurface = shouldReplayAll ? {} : { ...state.anchorIndexBySurface }\n nextState.wizardSchemaBySurface = shouldReplayAll ? {} : { ...state.wizardSchemaBySurface }\n nextState.latestCreateCommandIndexBySurface = shouldReplayAll ? {} : { ...state.latestCreateCommandIndexBySurface }\n nextState.initializedWizardRevisionBySurface = shouldReplayAll ? {} : { ...state.initializedWizardRevisionBySurface }\n nextState.modelPathBySurface = shouldReplayAll ? {} : { ...state.modelPathBySurface }\n nextState.wizardStepBySurface = shouldReplayAll ? {} : { ...state.wizardStepBySurface }\n nextState.optimisticallyDismissedSurfaceIds = shouldReplayAll ? [] : [...state.optimisticallyDismissedSurfaceIds]\n nextState.lastA2uiHost = shouldReplayAll ? { id: '', index: -1 } : { ...state.lastA2uiHost }\n\n const effects: A2uiRuntimeEffect[] = shouldReplayAll ? [{ type: 'reset-model-store' }] : []\n const deletedSurfaceIds = new Set<string>()\n const nextWizardSteps: Record<string, string> = {}\n\n // 处理 diff 产出的事件项(兼容旧 a2uiSchema / a2uiCommand 事件)\n pendingItems.forEach(({ item, messageIndex, messageId }) => {\n // a2uiSchema 事件:提取 wizard schema\n if (item?.type === 'a2uiSchema') {\n const schema = normalizeWizardSchema(item.schema)\n if (schema) {\n nextState.wizardSchemaBySurface[schema.surfaceId] = schema\n initializeWizardSurface(nextState, schema.surfaceId, effects, nextWizardSteps)\n }\n return\n }\n\n // a2uiCommand 事件:处理命令\n if (item?.type === 'a2uiCommand' && item.command) {\n processA2uiCommand(item.command, messageIndex, messageId, nextState, effects, deletedSurfaceIds, nextWizardSteps)\n }\n })\n\n // 处理从 toolCall result.stdout 中提取的 A2UI 标签命令\n newTags.forEach(({ commands, messageIndex, messageId }) => {\n for (const cmd of commands) {\n processA2uiCommand(cmd, messageIndex, messageId, nextState, effects, deletedSurfaceIds, nextWizardSteps)\n }\n })\n\n nextState.processedMessageCursors = shouldReplayAll\n ? (messages as any[]).map((message, messageIndex) => ({\n messageId: String(message?.messageId ?? messageIndex),\n contentLength: Array.isArray(message?.content) ? message.content.length : 0\n }))\n : nextCursors\n nextState.wizardStepBySurface = { ...nextState.wizardStepBySurface, ...nextWizardSteps }\n\n if (deletedSurfaceIds.size) {\n nextState.optimisticallyDismissedSurfaceIds = nextState.optimisticallyDismissedSurfaceIds.filter((surfaceId) => !deletedSurfaceIds.has(surfaceId))\n nextState.wizardStepBySurface = Object.fromEntries(\n Object.entries(nextState.wizardStepBySurface).filter(([surfaceId]) => !deletedSurfaceIds.has(surfaceId))\n )\n nextState.localCommands = nextState.localCommands.filter(\n (cmd) => !deletedSurfaceIds.has(String(cmd?.updateComponents?.surfaceId || cmd?.updateDataModel?.surfaceId || ''))\n )\n }\n\n return { state: nextState, effects }\n}\n\n/** 处理不依赖副作用的本地 runtime 交互,如 wizard 切步和乐观关闭。 */\nexport function reduceA2uiRuntimeAction(state: A2uiRuntimeState, input: RuntimeActionInput) {\n const { surfaceId, actionName, rawContext } = input\n if (!surfaceId) {\n return { state, handled: actionName === 'wizard.next' || actionName === 'wizard.back' }\n }\n\n const wizard = state.wizardSchemaBySurface[surfaceId]\n if (wizard) {\n const isNext = actionName === wizard.nextEvent\n const isBack = actionName === wizard.backEvent\n if (isNext || isBack) {\n const commands = getA2uiRuntimeCommands(state)\n const fallbackStepId = pickWizardCurrentStepIdFromCommands(surfaceId, commands) || wizard.steps[0]?.stepId || ''\n const currentStepId = state.wizardStepBySurface[surfaceId] || fallbackStepId\n const currentIndex = wizard.steps.findIndex((step) => step?.stepId === currentStepId)\n const baseIndex = currentIndex >= 0 ? currentIndex : 0\n const nextIndex = isNext ? baseIndex + 1 : baseIndex - 1\n const nextStepId = wizard.steps[nextIndex]?.stepId\n if (!nextStepId) return { state, handled: true }\n\n return {\n state: {\n ...state,\n wizardStepBySurface: { ...state.wizardStepBySurface, [surfaceId]: nextStepId },\n localCommands: [...state.localCommands, buildWizardUpdateComponentsCommand(wizard, nextStepId)]\n },\n handled: true\n }\n }\n }\n\n // wizard.next / wizard.back 始终在前端本地处理,不发给后端\n if (actionName === 'wizard.next' || actionName === 'wizard.back') {\n return { state, handled: true }\n }\n\n if (!shouldOptimisticallyDismissSurface(actionName, rawContext)) {\n return { state, handled: false }\n }\n if (state.optimisticallyDismissedSurfaceIds.includes(surfaceId)) {\n return { state, handled: false }\n }\n\n return {\n state: {\n ...state,\n optimisticallyDismissedSurfaceIds: [...state.optimisticallyDismissedSurfaceIds, surfaceId]\n },\n handled: false\n }\n}\n\n/** 根据当前 runtime 状态导出给渲染层使用的视图模型。 */\nexport function selectA2uiRuntimeView(state: A2uiRuntimeState, dismissedSurfaceIds: readonly string[]) {\n const mergedDismissedSurfaceIds = Array.from(\n new Set([...(dismissedSurfaceIds || []), ...state.optimisticallyDismissedSurfaceIds].filter((surfaceId) => surfaceId?.trim?.()))\n )\n // 【BUGFIX】对命令做消毒处理,移除 updateDataModel.path 缺失的无效字段,\n // 防止 @ant-design/x-card 的 Card 组件在调用 setValueByPath 时因 path 为\n // undefined 而崩溃(TypeError: Cannot read properties of undefined)\n const commands = sanitizeA2uiCommands(getA2uiRuntimeCommands(state))\n const visibleSurfaceIds = resolveVisibleSurfaceIds(commands, mergedDismissedSurfaceIds)\n const anchoredSurfaceIdsByMessageIndex: Record<number, string[]> = {}\n\n visibleSurfaceIds.forEach((surfaceId) => {\n const messageIndex = state.anchorIndexBySurface[surfaceId]\n if (typeof messageIndex !== 'number' || messageIndex < 0) return\n if (!anchoredSurfaceIdsByMessageIndex[messageIndex]) anchoredSurfaceIdsByMessageIndex[messageIndex] = []\n anchoredSurfaceIdsByMessageIndex[messageIndex].push(surfaceId)\n })\n\n return {\n commands,\n visibleSurfaceIds,\n lastA2uiHostMessageId: state.lastA2uiHost.id,\n lastA2uiHostMessageIndex: state.lastA2uiHost.index,\n anchoredSurfaceIdsByMessageIndex\n }\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { clearAllModelValues, clearModelValues, writeModelValues } from '../components/A2uiComponents'\nimport { extractDismissedSurfaceIdsFromMessages } from './extract'\nexport * from './extract'\nimport {\n createA2uiRuntimeState,\n reduceA2uiRuntimeAction,\n reduceA2uiRuntimeMessages,\n selectA2uiRuntimeView,\n type A2uiRuntimeEffect,\n type A2uiRuntimeState\n} from './runtime'\nimport type { A2uiControllerParams, A2uiControllerResult } from './types'\n\n/** 执行 runtime 产出的模型同步 effect。 */\nfunction applyA2uiRuntimeEffects(effects: A2uiRuntimeEffect[]) {\n effects.forEach((effect) => {\n if (effect.type === 'reset-model-store') {\n clearAllModelValues()\n return\n }\n if (effect.type === 'clear-model') {\n clearModelValues(effect.modelPath)\n return\n }\n writeModelValues(effect.modelPath, effect.values)\n })\n}\n\nexport function useA2uiController(params: A2uiControllerParams): A2uiControllerResult {\n const { conversationId, conversationMessages, dismissedSurfaceIds } = params\n const runtimeRef = useRef<A2uiRuntimeState>(createA2uiRuntimeState())\n const [runtimeState, setRuntimeState] = useState<A2uiRuntimeState>(() => createA2uiRuntimeState())\n\n useEffect(() => {\n const nextState = createA2uiRuntimeState()\n runtimeRef.current = nextState\n setRuntimeState(nextState)\n clearAllModelValues()\n }, [conversationId])\n\n useEffect(() => {\n const result = reduceA2uiRuntimeMessages(runtimeRef.current, conversationMessages || [])\n if (result.state === runtimeRef.current && result.effects.length === 0) return\n runtimeRef.current = result.state\n applyA2uiRuntimeEffects(result.effects)\n setRuntimeState(result.state)\n }, [conversationMessages, conversationId])\n\n // 从用户消息中扫描 a2ui_action.v1,提取永久 dismiss 列表。\n // 这些 surface 已被用户提交/取消,即使刷新页面或切换会话后也应保持隐藏。\n const permanentDismissedSurfaceIds = useMemo(\n () => extractDismissedSurfaceIdsFromMessages(conversationMessages || []),\n [conversationMessages]\n )\n\n // 合并三层 dismiss 来源:\n // 1. 外部传入的 dismissedSurfaceIds(provider 层乐观隐藏 + 恢复逻辑)\n // 2. runtime 内部的 optimisticallyDismissedSurfaceIds(已在 selectA2uiRuntimeView 中合并)\n // 3. permanentDismissedSurfaceIds(从 a2ui_action.v1 历史消息中提取的永久记录)\n const mergedDismissedSurfaceIds = useMemo(\n () => Array.from(new Set([...(dismissedSurfaceIds || []), ...permanentDismissedSurfaceIds])),\n [dismissedSurfaceIds, permanentDismissedSurfaceIds]\n )\n\n const view = useMemo(() => selectA2uiRuntimeView(runtimeState, mergedDismissedSurfaceIds), [runtimeState, mergedDismissedSurfaceIds])\n\n /** 仅推进本地 runtime;未处理的动作交给上层决定如何派发。 */\n const handleRuntimeAction = useCallback((payload: any) => {\n const surfaceId = String(payload?.surfaceId || payload?.cardId || '')\n const name = String(payload?.name || payload?.event?.name || '').trim()\n const rawContext = (payload?.context || payload?.event?.context || {}) as Record<string, unknown>\n const runtimeActionResult = reduceA2uiRuntimeAction(runtimeRef.current, { surfaceId, actionName: name, rawContext })\n if (runtimeActionResult.state !== runtimeRef.current) {\n runtimeRef.current = runtimeActionResult.state\n setRuntimeState(runtimeActionResult.state)\n }\n return { handled: runtimeActionResult.handled, name, surfaceId, rawContext }\n }, [])\n\n return {\n runtimeState,\n commands: view.commands,\n visibleSurfaceIds: view.visibleSurfaceIds,\n lastA2uiHostMessageId: view.lastA2uiHostMessageId,\n lastA2uiHostMessageIndex: view.lastA2uiHostMessageIndex,\n anchoredSurfaceIdsByMessageIndex: view.anchoredSurfaceIdsByMessageIndex,\n handleRuntimeAction\n }\n}\n\nexport type { A2uiControllerParams, A2uiControllerResult, A2uiRuntimeActionResult, DispatchPayload } from './types'\n","import React from 'react'\n\nexport type A2uiRuntimeProviderProps = {\n messages: readonly any[]\n children: React.ReactNode\n}\n\nexport type A2uiRuntimeView = {\n commands: any[]\n onAction: (payload: any) => void\n surfaceIdsByMessageIndex: Record<number, string[]>\n}\n\nexport const A2uiRuntimeContext = React.createContext<A2uiRuntimeView>({\n commands: [],\n onAction: () => undefined,\n surfaceIdsByMessageIndex: {}\n})\n","import React from 'react'\nimport { A2uiRuntimeContext } from './context'\n\n/** 读取当前 A2UI runtime 的渲染视图和动作入口。 */\nexport function useA2uiRuntimeView() {\n return React.useContext(A2uiRuntimeContext)\n}\n","import { XCard } from '../x-card'\nimport { useA2uiRuntimeView } from './useA2uiRuntimeView'\n\n/** 在消息锚点位置挂载当前可见的 A2UI Surface。 */\nexport function A2uiMessageCards({ messageIndex }: { messageIndex: number; message?: any }) {\n const { surfaceIdsByMessageIndex } = useA2uiRuntimeView()\n const surfaceIds = surfaceIdsByMessageIndex[messageIndex] || []\n if (!surfaceIds.length) return null\n\n return (\n <div>\n {surfaceIds.map((surfaceId) => (\n <XCard.Card key={surfaceId} id={surfaceId} />\n ))}\n </div>\n )\n}\n","/** A2UI 交互事件的标准载荷。 */\nexport type A2uiActionPayload = {\n name: string\n surfaceId: string\n context: Record<string, any>\n}\n\n/** 判断事件名是否代表提交类动作。 */\nexport function isSubmitLikeActionName(name: string): boolean {\n const normalized = String(name || '').trim()\n return normalized === 'submit' || normalized === 'confirm' || normalized.startsWith('submit_') || normalized.endsWith('.confirm')\n}\n\n/** 判断事件名是否代表取消类动作。 */\nexport function isCancelLikeActionName(name: string): boolean {\n const normalized = String(name || '').trim()\n return normalized === 'cancel' || normalized === 'qf.cancel' || normalized.endsWith('.cancel')\n}\n\n/** 判断当前动作是否应该先把 Surface 从界面上隐藏。 */\nexport function shouldDismissA2uiSurface(name: string, context?: Record<string, unknown>): boolean {\n // 默认行为:任何 a2ui_action.v1 都视为 dismiss 信号(\"默认删掉就可以\")。\n // wizard 导航动作由本地拦截,不会走到这里。\n // 如果未来需要排除某些动作,可在此添加白名单。\n return true\n}\n\n/** 把外部输入规整成稳定的 A2UI 载荷。 */\nexport function normalizeA2uiActionPayload(payload: Partial<A2uiActionPayload>): A2uiActionPayload {\n return {\n name: String(payload?.name || '').trim(),\n surfaceId: String(payload?.surfaceId || '').trim(),\n context: payload?.context && typeof payload.context === 'object' && !Array.isArray(payload.context) ? payload.context : {}\n }\n}\n\n/** 把 A2UI 动作编码成发送给后端的标准协议文本。 */\nexport function formatA2uiActionMessage(payload: Partial<A2uiActionPayload>): string {\n const normalized = normalizeA2uiActionPayload(payload)\n return JSON.stringify({\n type: 'a2ui_action.v1',\n name: normalized.name,\n surfaceId: normalized.surfaceId,\n context: normalized.context\n })\n}\n\n/** 从文本消息中解析 A2UI 动作协议。 */\nexport function parseA2uiActionMessage(content?: string): A2uiActionPayload | null {\n if (typeof content !== 'string') return null\n const trimmed = content.trim()\n if (!trimmed.startsWith('{') || !trimmed.includes('\"a2ui_action.v1\"')) return null\n\n try {\n const parsed = JSON.parse(trimmed)\n if (parsed?.type !== 'a2ui_action.v1') return null\n return normalizeA2uiActionPayload(parsed)\n } catch {\n return null\n }\n}\n\n/** 判断这条动作是否应该渲染成 Question 摘要。 */\nfunction isQuestionActionPayload(payload: A2uiActionPayload): boolean {\n const mode = payload.context?.form_mode\n if (payload.name === 'qf.submit' || payload.name === 'qf.cancel') return true\n if (payload.name.startsWith('qf.')) return true\n return typeof mode === 'string' && mode.toLowerCase() === 'ephemeral'\n ? isSubmitLikeActionName(payload.name) || isCancelLikeActionName(payload.name)\n : false\n}\n\n/** 把值格式化成用户可读的摘要文本。 */\nfunction formatActionValue(value: unknown, displayOverride?: unknown): string {\n if (typeof displayOverride === 'string' && displayOverride.trim()) return displayOverride.trim()\n if (typeof value === 'boolean') return value ? '是' : '否'\n if (Array.isArray(value)) return value.map((item) => String(item)).join('、')\n if (value && typeof value === 'object') return JSON.stringify(value)\n return String(value)\n}\n\n/** 生成 Question 类型动作的简洁摘要。 */\nfunction buildQuestionSummary(payload: A2uiActionPayload): string {\n if (isCancelLikeActionName(payload.name)) return 'Question: 已取消'\n\n const values =\n payload.context.values && typeof payload.context.values === 'object' && !Array.isArray(payload.context.values)\n ? (payload.context.values as Record<string, unknown>)\n : payload.context\n const labels =\n payload.context.labels && typeof payload.context.labels === 'object' && !Array.isArray(payload.context.labels)\n ? (payload.context.labels as Record<string, unknown>)\n : {}\n const valueLabels =\n payload.context.valueLabels && typeof payload.context.valueLabels === 'object' && !Array.isArray(payload.context.valueLabels)\n ? (payload.context.valueLabels as Record<string, unknown>)\n : {}\n\n const details = Object.entries(values)\n .filter(([, value]) => value !== null && value !== undefined && value !== '')\n .map(([key, value]) => {\n const label = typeof labels[key] === 'string' && String(labels[key]).trim() ? String(labels[key]).trim() : key\n return `${label}: ${formatActionValue(value, valueLabels[key])}`\n })\n\n return details.length ? `Question: ${details.join('; ')}` : 'Question: 已回答'\n}\n\n/** 生成普通 A2UI 动作的可读展示文本。 */\nexport function formatA2uiActionDisplayText(payload: A2uiActionPayload): string {\n if (isQuestionActionPayload(payload)) return buildQuestionSummary(payload)\n\n const values =\n payload.context.values && typeof payload.context.values === 'object' && !Array.isArray(payload.context.values)\n ? (payload.context.values as Record<string, unknown>)\n : payload.context\n const labels =\n payload.context.labels && typeof payload.context.labels === 'object' && !Array.isArray(payload.context.labels)\n ? (payload.context.labels as Record<string, unknown>)\n : {}\n const valueLabels =\n payload.context.valueLabels && typeof payload.context.valueLabels === 'object' && !Array.isArray(payload.context.valueLabels)\n ? (payload.context.valueLabels as Record<string, unknown>)\n : {}\n\n const actionLabels: Record<string, string> = {\n submit_basic: '已提交基础信息',\n submit_params: '已提交参数配置',\n back_to_basic: '已返回修改基础信息',\n back_to_params: '已返回修改参数',\n confirm: '已确认创建'\n }\n let actionLabel = actionLabels[payload.name]\n if (!actionLabel) {\n if (payload.name.startsWith('confirm_')) {\n actionLabel = '已选择'\n } else if (payload.name.startsWith('submit_')) {\n actionLabel = '已提交'\n } else {\n actionLabel = `已提交动作 (${payload.name})`\n }\n }\n const isConfirmLike = payload.name.startsWith('confirm_')\n const details = Object.entries(values)\n .filter(([, value]) => value !== null && value !== undefined && value !== '')\n .map(([key, value]) => {\n const formatted = formatActionValue(value, valueLabels[key])\n if (isConfirmLike) return formatted\n const label = typeof labels[key] === 'string' && String(labels[key]).trim() ? String(labels[key]).trim() : key\n return `${label}: ${formatted}`\n })\n\n return details.length ? `${actionLabel}:${details.join('; ')}` : actionLabel\n}\n\n/** 把用户消息中的 A2UI 协议转换成可直接显示的文案。 */\nexport function toA2uiDisplayText(role: number, content?: string): string {\n if (role !== 1) return content || ''\n const payload = parseA2uiActionMessage(content)\n return payload ? formatA2uiActionDisplayText(payload) : content || ''\n}\n\n/** 判断 plan 是否只是 A2UI 的上游描述,不应该单独渲染。 */\nexport function shouldHideA2uiPlan(item: { plan?: unknown }): boolean {\n if (!item.plan || typeof item.plan !== 'object') return false\n\n const rawPlan = item.plan as Record<string, unknown>\n const candidates = [rawPlan, rawPlan.plan].filter((plan): plan is Record<string, unknown> => !!plan && typeof plan === 'object')\n\n return candidates.some((plan) => {\n const kind = typeof plan.kind === 'string' ? plan.kind.toLowerCase() : ''\n const surfaceId = typeof plan.surface_id === 'string' ? plan.surface_id : ''\n return (kind === 'form' || kind === 'wizard' || kind === 'dashboard') && !!surfaceId\n })\n}\n","import '@ant-design/x-markdown/themes/light.css'\nimport React from 'react'\nimport XMarkdown from '../../../XMarkdown'\nimport { A2uiComponents } from '../components/A2uiComponents'\nimport { shouldHideA2uiPlan } from './protocol'\n\n/** 统一提取 plan 的真实载荷。 */\nfunction extractPlanPayload(plan: unknown): Record<string, any> | null {\n if (!plan || typeof plan !== 'object') return null\n const raw = plan as Record<string, any>\n return raw.plan && typeof raw.plan === 'object' ? raw.plan : raw\n}\n\n/** 统一规范表格列定义,避免调用方重复写兼容逻辑。 */\nfunction normalizeTableColumns(columns: unknown): { title: string; dataIndex: string }[] {\n if (!Array.isArray(columns)) return []\n return columns\n .map((column: any) => ({\n title: String(column?.title ?? ''),\n dataIndex: String(column?.dataIndex ?? column?.data_index ?? '')\n }))\n .filter((column) => column.dataIndex)\n}\n\n/** 按制品类型选择对应的 A2UI 组件。 */\nfunction renderArtifact(artifact: any, index: number): React.ReactNode {\n const ReportViewer = A2uiComponents.ReportViewer as React.ComponentType<any>\n const ChartViewer = A2uiComponents.ChartViewer as React.ComponentType<any>\n const TableViewer = A2uiComponents.TableViewer as React.ComponentType<any>\n const ArtifactCard = A2uiComponents.ArtifactCard as React.ComponentType<any>\n\n const type = String(artifact?.type ?? '').toLowerCase()\n const artifactId = String(artifact?.artifact_id ?? artifact?.artifactId ?? `artifact_${index}`)\n const title = typeof artifact?.title === 'string' ? artifact.title : undefined\n\n if (type === 'report') {\n return <ReportViewer key={artifactId} artifactId={artifactId} title={title} payload={{ markdown: artifact?.markdown }} />\n }\n if (type === 'chart') {\n return <ChartViewer key={artifactId} artifactId={artifactId} title={title} payload={artifact} />\n }\n if (type === 'table') {\n return (\n <TableViewer\n key={artifactId}\n artifactId={artifactId}\n title={title}\n payload={{ columns: normalizeTableColumns(artifact?.columns), rows: Array.isArray(artifact?.rows) ? artifact.rows : [] }}\n />\n )\n }\n return <ArtifactCard key={artifactId} type={type || 'artifact'} artifactId={artifactId} title={title} payload={artifact} />\n}\n\n/** 渲染 viewer 类型的 plan。 */\nfunction ViewerPlan({ payload }: { payload: Record<string, any> }) {\n const artifacts = Array.isArray(payload.artifacts) ? payload.artifacts : []\n if (!artifacts.length) return null\n\n const title = typeof payload.title === 'string' ? payload.title.trim() : ''\n const description = typeof payload.description === 'string' ? payload.description.trim() : ''\n const header = title || description ? `### ${title || '报告'}\\n\\n${description || ''}`.trim() : ''\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: 8 }}>\n {header ? <XMarkdown content={header} /> : null}\n {artifacts.map((artifact, index) => renderArtifact(artifact, index))}\n </div>\n )\n}\n\n/** 统一渲染消息里的 plan 节点。 */\nexport function A2uiPlanNode({ item }: { item: any }) {\n if (!item || shouldHideA2uiPlan(item)) return null\n\n const payload = extractPlanPayload(item.plan)\n const isViewer = typeof payload?.kind === 'string' && payload.kind.toLowerCase() === 'viewer'\n if (payload && isViewer) {\n return <ViewerPlan payload={payload} />\n }\n\n const title = item.title ? `### ${item.title}\\n\\n` : ''\n const content = typeof item.content === 'string' ? item.content : item.plan ? `\\`\\`\\`json\\n${JSON.stringify(item.plan, null, 2)}\\n\\`\\`\\`` : ''\n if (!title && !content) return null\n\n return <XMarkdown content={`${title}${content}`} />\n}\n","import { message as antdMessage } from 'antd'\nimport React from 'react'\nimport { useSnapshot } from 'valtio'\nimport { useChatStore } from '../../../../stores/Context'\nimport { A2uiComponents, clearModelValues } from '../components/A2uiComponents'\nimport { useA2uiController } from '../controller'\nimport { extractItemTextForA2ui, parseA2uiTagsFromText } from '../controller/extract'\nimport { buildDispatchContext, shouldOptimisticallyDismissSurface } from '../controller/action'\nimport { XCard } from '../x-card'\nimport { A2uiRuntimeContext, type A2uiRuntimeProviderProps } from './context'\nimport { formatA2uiActionMessage, normalizeA2uiActionPayload, shouldDismissA2uiSurface } from './protocol'\n\n/** 从任意命令里提取 surfaceId,用来维护 dismiss 的恢复边界。 */\nfunction extractSurfaceId(command: unknown): string {\n if (!command || typeof command !== 'object') return ''\n const current = command as Record<string, any>\n return String(\n current.createSurface?.surfaceId ??\n current.updateComponents?.surfaceId ??\n current.updateDataModel?.surfaceId ??\n current.deleteSurface?.surfaceId ??\n ''\n ).trim()\n}\n\n/** 从动作上下文中提取 model path,便于提交后清理本地缓存。 */\nfunction readContextModelPath(context: Record<string, unknown>): string {\n const path = context?.model && typeof context.model === 'object' ? (context.model as { path?: unknown }).path : ''\n return typeof path === 'string' ? path.trim() : ''\n}\n\n/**\n * 遍历所有消息,构建 surfaceId -> 最新命令索引的映射。\n * 只扫描 toolCall 项的 result.stdout 中的 <A2UI> 标签。\n */\nfunction buildLatestCommandIndexBySurface(messages: readonly any[]): Record<string, number> {\n const indexBySurface: Record<string, number> = {}\n let commandIndex = -1\n for (const message of messages) {\n const items = Array.isArray(message?.content) ? message.content : []\n for (const item of items) {\n // 兼容旧 a2uiCommand 事件\n if (item?.type === 'a2uiCommand' && item.command) {\n commandIndex += 1\n const surfaceId = extractSurfaceId(item.command)\n if (surfaceId) indexBySurface[surfaceId] = commandIndex\n continue\n }\n const text = extractItemTextForA2ui(item)\n if (typeof text !== 'string' || !text.includes('<A2UI')) continue\n const tags = parseA2uiTagsFromText(text)\n for (const tag of tags) {\n for (const cmd of tag.commands) {\n commandIndex += 1\n const surfaceId = extractSurfaceId(cmd)\n if (surfaceId) indexBySurface[surfaceId] = commandIndex\n }\n }\n }\n }\n return indexBySurface\n}\n\n/** 为整个子树提供 A2UI runtime,并负责把未消费动作发回聊天链路。 */\nexport function A2uiRuntimeProvider({ messages, children }: A2uiRuntimeProviderProps) {\n const chatStore = useChatStore()\n const conversationState = useSnapshot(chatStore.conversation)\n const conversationId = conversationState.active.id\n const [latestCommandIndexBySurface, setLatestCommandIndexBySurface] = React.useState<Record<string, number>>({})\n const [dismissedAtBySurface, setDismissedAtBySurface] = React.useState<Record<string, number>>({})\n\n React.useEffect(() => {\n setLatestCommandIndexBySurface({})\n setDismissedAtBySurface({})\n }, [conversationId])\n\n React.useEffect(() => {\n setLatestCommandIndexBySurface(buildLatestCommandIndexBySurface(messages))\n }, [messages])\n\n /** 只保留还没有被后续新命令覆盖的隐藏状态。 */\n const dismissedSurfaceIds = React.useMemo(() => {\n return Object.entries(dismissedAtBySurface)\n .filter(([surfaceId, dismissedAt]) => (latestCommandIndexBySurface[surfaceId] ?? -1) <= dismissedAt)\n .map(([surfaceId]) => surfaceId)\n }, [dismissedAtBySurface, latestCommandIndexBySurface])\n\n /** 把 A2UI 动作转成聊天消息协议,并在需要时先做本地隐藏。 */\n const dispatchA2uiAction = React.useCallback(\n async (payload: { name: string; surfaceId: string; context: Record<string, any> }) => {\n const actionPayload = normalizeA2uiActionPayload(payload)\n if (!actionPayload.name) return\n\n if (actionPayload.surfaceId && shouldDismissA2uiSurface(actionPayload.name, actionPayload.context)) {\n const latestIndex = latestCommandIndexBySurface[actionPayload.surfaceId] ?? Number.MAX_SAFE_INTEGER\n setDismissedAtBySurface((prev) => ({ ...prev, [actionPayload.surfaceId]: latestIndex }))\n }\n\n try {\n await chatStore.config.hooks?.onA2uiAction?.(actionPayload)\n } catch (error) {\n console.error('A2UI action hook failed:', error)\n }\n\n try {\n await chatStore.sendMessage(formatA2uiActionMessage(actionPayload))\n } catch (error) {\n console.error('A2UI action send failed:', error)\n antdMessage.error('提交失败,请稍后重试')\n }\n },\n [chatStore, latestCommandIndexBySurface]\n )\n\n const { runtimeState, commands, anchoredSurfaceIdsByMessageIndex, handleRuntimeAction } = useA2uiController({\n conversationId,\n conversationMessages: messages,\n dismissedSurfaceIds\n })\n\n /** 先尝试用 runtime 消费动作;剩余动作再作为外部协议派发。 */\n const onAction = React.useCallback(\n (payload: any) => {\n const result = handleRuntimeAction(payload)\n if (result.handled || !result.name) return\n\n const nextContext = buildDispatchContext(result.surfaceId, result.rawContext, commands)\n void dispatchA2uiAction({ name: result.name, surfaceId: result.surfaceId, context: nextContext })\n\n if (shouldOptimisticallyDismissSurface(result.name, result.rawContext)) {\n const modelPath =\n readContextModelPath(nextContext) || readContextModelPath(result.rawContext) || runtimeState.modelPathBySurface[result.surfaceId]\n if (modelPath) clearModelValues(modelPath)\n }\n },\n [commands, dispatchA2uiAction, handleRuntimeAction, runtimeState.modelPathBySurface]\n )\n\n const contextValue = React.useMemo(\n () => ({ commands, onAction, surfaceIdsByMessageIndex: anchoredSurfaceIdsByMessageIndex }),\n [anchoredSurfaceIdsByMessageIndex, commands, onAction]\n )\n\n return (\n <A2uiRuntimeContext.Provider value={contextValue}>\n <XCard.Box commands={commands as any} components={A2uiComponents} onAction={onAction}>\n {children}\n </XCard.Box>\n </A2uiRuntimeContext.Provider>\n )\n}\n","import { A2uiRuntimeProvider } from './A2uiRuntimeProvider'\nimport type { A2uiRuntimeProviderProps } from './context'\n\n/** 兼容旧用法,内部直接复用新的 Provider。 */\nexport function A2uiRenderer(props: A2uiRuntimeProviderProps) {\n return <A2uiRuntimeProvider {...props} />\n}\n","import { FileCard } from '@ant-design/x-v2'\nimport React, { useMemo } from 'react'\nimport { useSnapshot } from 'valtio'\nimport { useChatStore } from '../../../stores/Context'\nimport { FilesEvent } from '../../../types'\n\nexport const FilesNode = React.memo(({ item }: { item: FilesEvent }) => {\n const chatStore = useChatStore()\n const configState = useSnapshot(chatStore.config)\n const conversationState = useSnapshot(chatStore.conversation)\n const fileItems = useMemo(() => {\n return (item.files || []).map((file: any) => {\n const previewUrl = configState.services.request.getPreviewUrl({\n path: file.path,\n workspaceId: conversationState.active.id\n })\n\n let fileType = 'file'\n const ext = file.ext?.toLowerCase() || ''\n if (['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'webp'].includes(ext)) {\n fileType = 'image'\n } else if (['mp4', 'webm', 'ogg', 'mov'].includes(ext)) {\n fileType = 'video'\n } else if (['mp3', 'wav', 'ogg', 'm4a'].includes(ext)) {\n fileType = 'audio'\n }\n\n return {\n ...file,\n src: previewUrl,\n type: fileType,\n onClick: () => chatStore.setPreview({ fileUrl: previewUrl, fileName: file.name, suffix: ext })\n }\n })\n }, [item.files])\n\n return <FileCard.List items={fileItems} />\n})\n",".runStartedNode {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 2px 0;\n}\n.runStartedNode .dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: #000;\n animation: loading-dot-blink 1s infinite ease-in-out;\n}\n.runStartedNode .dot:nth-child(2) {\n animation-delay: 0.16s;\n}\n.runStartedNode .dot:nth-child(3) {\n animation-delay: 0.32s;\n}\n@keyframes loading-dot-blink {\n 0%,\n 70%,\n 100% {\n opacity: 0.2;\n }\n 35% {\n opacity: 0.85;\n }\n}\n.chatQuoteMsg {\n margin-top: 0;\n padding-top: 0 !important;\n}\n.chatQuoteMsg:global.ant-bubble > .ant-bubble-body > .ant-bubble-content {\n min-height: auto;\n background-color: var(--ant-color-fill-tertiary) !important;\n color: var(--ant-color-text-tertiary);\n}\n.chatQuoteMsg .quoteTooltip {\n max-width: 100%;\n border: 1px solid #000;\n}\n.chatQuoteMsg .quoteTooltip .quoteTooltipContainer {\n max-height: 200px;\n overflow-y: auto;\n background-color: #fff;\n color: #000;\n}\n","import { Bubble } from '@ant-design/x-v2'\nimport { Flex, Tooltip } from 'antd'\nimport React from 'react'\nimport { RoleContent } from '../../../ui/common/BubbleListItems'\nimport XMarkdown from '../../XMarkdown'\nimport styles from './style.module.less'\n\ninterface QuoteMsgNodeProps {\n quoteMsg: {\n messageContent?: string\n }\n role: RoleContent\n}\n\nexport const QuoteMsgNode = React.memo(({ quoteMsg, role }: QuoteMsgNodeProps) => {\n if (!quoteMsg || !quoteMsg.messageContent) return null\n\n return (\n <Bubble\n className={styles.quoteMsgNode}\n placement={role.placement}\n variant=\"borderless\"\n content={\n <Flex vertical gap={8}>\n <Tooltip arrow={false} title={<XMarkdown content={quoteMsg.messageContent} />} getPopupContainer={(node) => node}>\n <Flex>\n <span>【引用消息】:</span>\n <Flex\n flex={1}\n className=\"text-ellipsis-2\"\n style={{\n color: '#666',\n background: 'rgba(0,0,0,0.04)',\n padding: '2px 8px',\n borderRadius: '4px',\n fontSize: '12px',\n cursor: 'pointer'\n }}\n >\n {quoteMsg.messageContent}\n </Flex>\n </Flex>\n </Tooltip>\n </Flex>\n }\n />\n )\n})\n","import React from 'react'\nimport styles from './style.module.less'\n\nexport const RunStartedNode = React.memo(() => {\n return (\n <span className={styles.runStartedNode}>\n <span className={styles.dot} />\n <span className={styles.dot} />\n <span className={styles.dot} />\n </span>\n )\n})\n","import { Think } from '@ant-design/x-v2'\nimport React from 'react'\nimport { ConversationMessage } from '../../../types'\nimport { ReadonlyResourceTag, type DisplayResource } from '../../ChatInput/ResourceTag'\nimport XMarkdown from '../../XMarkdown'\nimport { toA2uiDisplayText } from '../A2uiRuntime'\n\nconst RESOURCE_MARKDOWN_TAG = 'resourcetag'\nconst RESOURCE_TOKEN_REGEX = /(\\w+):\\/\\/([^?\\s]+)\\?name=([^&\\s]+)&label=([^\\s]+)/g\n\nfunction QuestionSummary({ content }: { content: string }) {\n const answer = content.replace(/^Question:\\s*/, '').trim() || '已回答'\n return (\n <span style={{ display: 'inline-flex', flexDirection: 'column', gap: 4 }}>\n <span style={{ fontSize: 13, fontWeight: 600, color: '#1677ff', lineHeight: 1.4 }}>Question</span>\n <span style={{ fontSize: 13, color: '#262626', lineHeight: 1.6, whiteSpace: 'pre-wrap' }}>{answer}</span>\n </span>\n )\n}\n\nfunction MessageResourceTag({ data }: Record<string, unknown>) {\n const resource = data as DisplayResource | undefined\n if (!resource) return null\n return <ReadonlyResourceTag resource={resource} />\n}\n\nfunction transformResourceText(content: string) {\n return content.replace(RESOURCE_TOKEN_REGEX, (_, resourceType: string, resourceId: string, resourceName: string, resourceLabel: string) => {\n const resource = {\n resourceType: decodeURIComponent(resourceType),\n resourceId: decodeURIComponent(resourceId),\n resourceName: decodeURIComponent(resourceName),\n resourceLabel: decodeURIComponent(resourceLabel)\n }\n return `<${RESOURCE_MARKDOWN_TAG}>${JSON.stringify(resource)}</${RESOURCE_MARKDOWN_TAG}>`\n })\n}\n\nexport const TextNode = React.memo(\n ({\n item,\n role,\n customComponents,\n message\n }: {\n item: any\n role: number\n customComponents?: Record<string, any>\n message?: ConversationMessage\n messageIndex?: number\n }) => {\n const content = toA2uiDisplayText(role, item?.messageContent)\n const markdownComponents = {\n [RESOURCE_MARKDOWN_TAG]: MessageResourceTag,\n ...customComponents\n }\n\n if (typeof content === 'string' && content.startsWith('Question:')) {\n return <QuestionSummary content={content} />\n }\n\n const markdownContent = typeof content === 'string' ? transformResourceText(content) : content\n\n return (\n <>\n {!!item.reasoningContent && (\n <Think title=\"深度思考\" style={{ marginBottom: '16px' }}>\n {item.reasoningContent}\n </Think>\n )}\n {!!markdownContent && <XMarkdown message={message} components={markdownComponents} content={markdownContent} />}\n </>\n )\n }\n)\n",".toolCollapse {\n border: 1px solid rgba(0, 0, 0, 0.08) !important;\n background-color: rgba(255, 255, 255, 0.42) !important;\n}\n.toolCollapse :global .ant-collapse-item {\n height: 100% !important;\n}\n.toolCollapse :global .ant-collapse-item .ant-collapse-header {\n padding: 4px 8px !important;\n min-height: 36px !important;\n display: flex !important;\n align-items: center !important;\n}\n.toolCollapse :global .ant-collapse-item .ant-collapse-header .ant-collapse-title {\n display: block;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.toolCollapse :global .ant-collapse-item .ant-collapse-panel .ant-collapse-body {\n padding: 0 0 8px 8px !important;\n}\n.toolCallItem {\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n gap: 8px;\n}\n.toolCallItem .toolIcon {\n font-size: 14px;\n color: #000000;\n}\n.toolCallItem .toolName {\n font-size: 12px;\n color: var(--ant-color-text-tertiary);\n flex: 1;\n line-height: 22px;\n}\n.toolCallItem .statusIcon {\n font-size: 12px;\n display: flex;\n align-items: center;\n flex-shrink: 0;\n}\n.toolCallItem .duration {\n font-size: 12px;\n color: var(--ant-color-text-tertiary);\n flex-shrink: 0;\n}\n.toolCallItem .toolNamePending {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n flex: 1;\n}\n.toolCallItem .toolNamePending .dot {\n width: 2px;\n height: 2px;\n border-radius: 50%;\n background: var(--ant-color-text-tertiary);\n animation: dot-blink 1s infinite ease-in-out;\n}\n.toolCallItem .toolNamePending .dot:nth-child(2) {\n animation-delay: 0.16s;\n}\n.toolCallItem .toolNamePending .dot:nth-child(3) {\n animation-delay: 0.32s;\n}\n.expandIcon {\n font-size: 10px;\n color: var(--ant-color-text-tertiary);\n flex-shrink: 0;\n cursor: pointer;\n transition: transform 0.2s ease;\n transform: rotate(0deg);\n}\n.expandIcon.expanded {\n transform: rotate(-90deg);\n}\n.contentScrollContainer {\n padding: 4px 2px 0;\n overflow-y: auto;\n max-height: 500px;\n background: transparent;\n scrollbar-width: thin;\n scrollbar-color: transparent transparent;\n}\n.contentScrollContainer::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n.contentScrollContainer::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0);\n border-radius: 4px;\n transition: background-color 0.3s ease 0.3s;\n}\n.contentScrollContainer::-webkit-scrollbar-track {\n background: transparent;\n}\n.contentScrollContainer:hover {\n scrollbar-color: rgba(0, 0, 0, 0.3) transparent;\n}\n.contentScrollContainer:hover::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0.3);\n transition-delay: 0s;\n}\n@keyframes dot-blink {\n 0%,\n 70%,\n 100% {\n opacity: 0.2;\n }\n 35% {\n opacity: 0.85;\n }\n}\n.sectionLabel {\n font-size: 12px;\n color: var(--ant-color-text-tertiary);\n margin-bottom: 3px;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n.sectionLabel::before {\n content: '';\n width: 2px;\n height: 8px;\n border-radius: 2px;\n background: var(--ant-color-border);\n opacity: 0.9;\n flex-shrink: 0;\n}\n.plainTextContainer {\n margin: 0;\n font-size: 12px;\n line-height: 1.6;\n color: var(--ant-color-text-secondary);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, monospace;\n white-space: pre-wrap;\n word-break: break-all;\n max-height: calc(10 * 1.6em + 16px);\n overflow-y: auto;\n}\n.plainTextContainer::-webkit-scrollbar {\n width: 6px;\n}\n.plainTextContainer::-webkit-scrollbar-thumb {\n background: var(--ant-color-border);\n border-radius: 3px;\n}\n.plainTextContainer::-webkit-scrollbar-track {\n background: transparent;\n}\n.markdownContainer {\n max-width: 100%;\n overflow: auto hidden;\n font-size: 12px;\n opacity: 0.75;\n}\n.markdownContainer :global .ant-codeHighlighter-header {\n padding: 8px;\n}\n.markdownContainer :global .ant-codeHighlighter-code pre code {\n margin: 0 !important;\n}\n.summaryText {\n font-size: 12px;\n line-height: 1.5;\n color: var(--ant-color-text-tertiary);\n margin-bottom: 4px;\n white-space: pre-wrap;\n word-break: break-word;\n}\n.metaGrid {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-bottom: 4px;\n}\n.metaItem {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 1px 6px;\n border-radius: 999px;\n background: rgba(0, 0, 0, 0.03);\n}\n.metaLabel {\n font-size: 10px;\n color: var(--ant-color-text-tertiary);\n}\n.metaValue {\n font-size: 10px;\n color: var(--ant-color-text-secondary);\n}\n.linkList {\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n.linkItem {\n display: flex;\n align-items: flex-start;\n gap: 6px;\n padding: 4px 0;\n border: none;\n border-radius: 0;\n text-decoration: none;\n background: transparent;\n transition: color 0.15s ease, opacity 0.15s ease;\n}\n.linkItem:hover {\n opacity: 0.85;\n}\n.linkItem:hover .linkTitle {\n color: var(--ant-color-text);\n}\n.linkItem + .linkItem {\n border-top: 1px solid rgba(0, 0, 0, 0.04);\n padding-top: 6px;\n}\n.linkIndex {\n width: 16px;\n flex-shrink: 0;\n font-size: 10px;\n line-height: 1.55;\n color: var(--ant-color-text-quaternary);\n text-align: right;\n}\n.linkTitle {\n display: block;\n flex: 1;\n font-size: 11px;\n line-height: 1.55;\n color: var(--ant-color-text-secondary);\n}\n.linkSummary {\n display: block;\n margin-top: 4px;\n font-size: 11px;\n line-height: 1.5;\n color: var(--ant-color-text-secondary);\n}\n.linkUrl {\n display: block;\n margin-top: 2px;\n font-size: 10px;\n color: var(--ant-color-text-tertiary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.statusBlock {\n padding: 4px 6px;\n border-radius: var(--ant-border-radius);\n font-size: 11px;\n line-height: 1.5;\n margin-bottom: 4px;\n opacity: 0.8;\n}\n.status_info {\n background: rgba(22, 119, 255, 0.08);\n color: var(--ant-color-primary);\n}\n.status_success {\n background: rgba(82, 196, 26, 0.1);\n color: #389e0d;\n}\n.status_warning {\n background: rgba(250, 173, 20, 0.12);\n color: #d48806;\n}\n.status_error {\n background: rgba(255, 77, 79, 0.1);\n color: var(--ant-color-error);\n}\n.errorDisplay {\n border-left: 1px solid rgba(255, 77, 79, 0.45);\n padding-left: 6px;\n}\n.sectionBlock {\n display: block;\n}\n.sectionBlock + .sectionBlock {\n margin-top: 4px;\n padding-top: 4px;\n}\n.compactSectionBlock .sectionLabel {\n margin-bottom: 2px;\n}\n.compactSectionBlock .markdownContainer {\n font-size: 11px;\n}\n.subAgentContainer {\n padding: 2px 0;\n}\n.subAgentHeader {\n padding: 4px 0 8px;\n border-bottom: 1px solid var(--ant-color-border-secondary);\n margin-bottom: 8px;\n}\n.subAgentName {\n font-size: 12px;\n font-weight: 500;\n}\n.subAgentMessages {\n max-height: 500px;\n overflow-y: auto;\n}\n.subAgentMessages::-webkit-scrollbar {\n width: 6px;\n}\n.subAgentMessages::-webkit-scrollbar-thumb {\n background: var(--ant-color-border);\n border-radius: 3px;\n}\n.todoList {\n background-color: rgba(255, 255, 255, 0.45);\n}\n.todoItem {\n padding: 2px 10px !important;\n display: flex;\n align-items: flex-start;\n gap: 8px;\n border-bottom: none !important;\n}\n.todoItem:last-child {\n border-bottom: none;\n}\n.statusIconWrapper {\n margin-top: 2px;\n}\n.todoContent {\n flex: 1;\n min-width: 0;\n}\n.todoText {\n font-size: 12px;\n color: var(--ant-color-text-secondary);\n}\n.todoText.completed {\n color: var(--ant-color-text-tertiary);\n text-decoration: line-through;\n}\n.emptyText {\n font-size: 12px;\n}\n","import { Typography } from 'antd'\nimport React from 'react'\nimport { DisplayBlock, DisplayView } from '../../../types/message.types'\nimport XMarkdown from '../../XMarkdown'\nimport styles from './index.module.less'\n\nexport interface ToolRenderProps {\n args?: any\n result?: any\n argsContent?: { text: string; isJson: boolean; parsed: any }\n resultContent?: { text: string; isJson: boolean; parsed: any } | null\n errorMessage?: string\n item: any\n}\n\nconst toMarkdown = (content: string, kind?: string, lang?: string) => {\n if (kind === 'markdown') return content\n if (kind === 'data') return `\\`\\`\\`json\\n${content}\\n\\`\\`\\``\n return lang ? `\\`\\`\\`${lang}\\n${content}\\n\\`\\`\\`` : `\\`\\`\\`\\n${content}\\n\\`\\`\\``\n}\n\nconst renderBlock = (block: DisplayBlock, index: number) => {\n if (block.kind === 'status') {\n return (\n <div key={`status-${index}`} className={`${styles.statusBlock} ${styles[`status_${block.level}`] || ''}`}>\n {block.text}\n </div>\n )\n }\n\n if (block.kind === 'key_value') {\n return (\n <div key={`kv-${index}`} className={styles.sectionBlock}>\n {block.title && <Typography.Text className={styles.sectionLabel}>{block.title}</Typography.Text>}\n <div className={styles.metaGrid}>\n {block.items.map((item, itemIndex) => (\n <div key={`${item.label}-${itemIndex}`} className={styles.metaItem}>\n <span className={styles.metaLabel}>{item.label}</span>\n <span className={styles.metaValue}>{item.value}</span>\n </div>\n ))}\n </div>\n </div>\n )\n }\n\n if (block.kind === 'links') {\n return (\n <div key={`links-${index}`} className={styles.sectionBlock}>\n {block.title && <Typography.Text className={styles.sectionLabel}>{block.title}</Typography.Text>}\n <div className={styles.linkList}>\n {block.items.map((item, itemIndex) => (\n <a key={`${item.url}-${itemIndex}`} href={item.url} target=\"_blank\" rel=\"noreferrer\" className={styles.linkItem}>\n <span className={styles.linkIndex}>{itemIndex + 1}.</span>\n <span className={styles.linkTitle}>{item.title}</span>\n </a>\n ))}\n </div>\n </div>\n )\n }\n\n const markdown = block.kind === 'markdown' ? block.content : toMarkdown(block.content, 'code', block.lang)\n return (\n <div key={`${block.kind}-${index}`} className={styles.sectionBlock}>\n {block.title && <Typography.Text className={styles.sectionLabel}>{block.title}</Typography.Text>}\n <div className={styles.markdownContainer}>\n <XMarkdown content={markdown} />\n </div>\n </div>\n )\n}\n\nconst renderDisplayView = (view?: DisplayView | null, fallbackLabel?: string) => {\n if (!view) return null\n const hasBody = (view.blocks && view.blocks.length > 0) || (view.meta && view.meta.length > 0) || view.summary\n if (!hasBody) return null\n const hasRichBody = !!(view.blocks && view.blocks.length > 0)\n const isOnlyLinksBlock =\n !fallbackLabel && !view.summary && (!view.meta || view.meta.length === 0) && view.blocks?.length === 1 && view.blocks[0].kind === 'links'\n const label = isOnlyLinksBlock ? undefined : fallbackLabel || (hasRichBody ? view.title : undefined)\n\n return (\n <div className={`${styles.sectionBlock} ${!hasRichBody ? styles.compactSectionBlock : ''}`}>\n {label && <Typography.Text className={styles.sectionLabel}>{label}</Typography.Text>}\n {view.summary && <div className={styles.summaryText}>{view.summary}</div>}\n {view.meta && view.meta.length > 0 && (\n <div className={styles.metaGrid}>\n {view.meta.map((item, index) => (\n <div key={`${item.label}-${index}`} className={styles.metaItem}>\n <span className={styles.metaLabel}>{item.label}</span>\n <span className={styles.metaValue}>{item.value}</span>\n </div>\n ))}\n </div>\n )}\n {view.blocks?.map((block, index) => renderBlock(block, index))}\n </div>\n )\n}\n\nconst DefaultToolRender: React.FC<ToolRenderProps> = ({ argsContent, resultContent, item }) => {\n const sd = item.streamingArgsDisplay\n const isError = item.isError || item.status === 'error'\n\n const hasStructuredDisplay = !!item.displayProtocol || !!sd?.content || !!item.argsDisplay || !!item.resultDisplay\n\n return (\n <div className={isError ? styles.errorDisplay : ''}>\n {!item.argsDisplay && sd?.content && (\n <div className={`${styles.sectionBlock} ${styles.compactSectionBlock}`}>\n <Typography.Text className={styles.sectionLabel}>{sd.title || '输入生成中'}</Typography.Text>\n <div className={styles.markdownContainer}>\n <XMarkdown content={toMarkdown(sd.content, sd.kind, sd.lang)} />\n </div>\n </div>\n )}\n\n {renderDisplayView(item.argsDisplay)}\n {renderDisplayView(item.resultDisplay)}\n\n {!hasStructuredDisplay && (\n <>\n {(item.content || item.arguments) && argsContent && (\n <div className={styles.sectionBlock}>\n <Typography.Text className={styles.sectionLabel}>输入参数</Typography.Text>\n <div className={styles.markdownContainer}>\n <XMarkdown content={argsContent.isJson ? `\\`\\`\\`json\\n${argsContent.text}\\n\\`\\`\\`` : argsContent.text} />\n </div>\n </div>\n )}\n\n {item.result && resultContent && (\n <div className={styles.sectionBlock}>\n <Typography.Text className={styles.sectionLabel}>返回结果</Typography.Text>\n <div className={styles.markdownContainer}>\n <XMarkdown content={resultContent.isJson ? `\\`\\`\\`json\\n${resultContent.text}\\n\\`\\`\\`` : resultContent.text} />\n </div>\n </div>\n )}\n </>\n )}\n </div>\n )\n}\n\nexport default DefaultToolRender\n","import { Typography } from 'antd'\nimport React from 'react'\nimport MessageRender from '../../MessageRender'\nimport type { ConversationMessage } from '../../../types'\nimport styles from './index.module.less'\n\nexport interface SubAgentRenderProps {\n item: any\n args?: any\n result?: any\n}\n\nconst MAX_NESTING_DEPTH = 3\n\nconst SubAgentRender: React.FC<SubAgentRenderProps> = ({ item }) => {\n const subMessages: ConversationMessage[] = item.subMessages || []\n // 深度从子智能体消息元数据中获取\n const depth: number = subMessages[0]?.subAgentDepth || 1\n\n if (!subMessages.length) {\n return (\n <Typography.Text type=\"secondary\" className={styles.emptyText}>\n 子智能体执行中...\n </Typography.Text>\n )\n }\n\n // 超过最大嵌套深度,降级为文本摘要\n if (depth > MAX_NESTING_DEPTH) {\n return (\n <Typography.Text type=\"secondary\" className={styles.emptyText}>\n 子智能体执行内容(嵌套层级 {depth},已折叠)\n </Typography.Text>\n )\n }\n\n return (\n <div className={styles.subAgentContainer}>\n {item.subAgentName && (\n <div className={styles.subAgentHeader}>\n <Typography.Text type=\"secondary\" className={styles.subAgentName}>\n {item.subAgentName}\n </Typography.Text>\n </div>\n )}\n <div className={styles.subAgentMessages}>\n {subMessages.map((msg, index) => (\n <MessageRender\n key={`sub-agent-${msg.messageId || index}`}\n role={{ user: 'agent', role: 2, placement: 'start' }}\n message={msg}\n loading={!!msg.generating}\n />\n ))}\n </div>\n </div>\n )\n}\n\nexport default SubAgentRender\n","import { CheckCircleOutlined, ClockCircleOutlined } from '@ant-design/icons'\nimport { List, Typography, theme } from 'antd'\nimport React from 'react'\nimport { ToolRenderProps } from './default-render'\nimport styles from './index.module.less'\n\nexport interface TodoItem {\n id: string\n title?: string\n content?: string\n status: 'pending' | 'in_progress' | 'completed'\n}\n\nconst TodoWriteRender: React.FC<ToolRenderProps> = ({ args, result }) => {\n const { token } = theme.useToken()\n\n const todos: TodoItem[] = Array.isArray(result) ? result : result?.todos || (Array.isArray(args) ? args : args?.todos) || []\n\n const getStatusIcon = (status: string) => {\n switch (status) {\n case 'completed':\n return <CheckCircleOutlined style={{ color: token.colorSuccess }} />\n case 'in_progress':\n return <ClockCircleOutlined style={{ color: token.colorPrimary }} />\n case 'pending':\n default:\n return <ClockCircleOutlined style={{ color: token.colorTextTertiary }} />\n }\n }\n\n if (!todos || todos.length === 0) {\n return (\n <Typography.Text type=\"secondary\" className={styles.emptyText}>\n 暂无任务\n </Typography.Text>\n )\n }\n\n return (\n <List\n size=\"small\"\n dataSource={todos}\n renderItem={(item) => (\n <List.Item className={styles.todoItem}>\n <div className={styles.statusIconWrapper}>{getStatusIcon(item.status)}</div>\n <div className={styles.todoContent}>\n <Typography.Text className={`${styles.todoText} ${item.status === 'completed' ? styles.completed : ''}`}>\n {item.title || item.content}\n </Typography.Text>\n </div>\n </List.Item>\n )}\n className={styles.todoList}\n />\n )\n}\n\nexport default TodoWriteRender\n","import React from 'react'\nimport DefaultToolRender, { ToolRenderProps } from './default-render'\nimport SubAgentRender from './sub-agent-render'\nimport TodoWriteRender from './todo-write-render'\nimport { ToolCallEvent } from '../../../types/message.types'\n\nexport interface ToolRenderConfig {\n component: React.FC<ToolRenderProps>\n defaultExpanded?: boolean | ((args: any, result: any) => boolean)\n alwaysShowContent?: boolean | ((args: any, result: any) => boolean)\n hideStatus?: boolean\n disableExpandOnError?: boolean\n}\n\nexport const toolRenders: Record<string, ToolRenderConfig> = {\n todo_write: {\n component: TodoWriteRender,\n defaultExpanded: true,\n alwaysShowContent: (args, result) => {\n const todos = Array.isArray(result) ? result : result?.todos || (Array.isArray(args) ? args : args?.todos) || []\n return Array.isArray(todos) && todos.length > 0\n },\n hideStatus: true,\n disableExpandOnError: true\n }\n}\n\nexport const getToolRenderConfig = (item?: ToolCallEvent & Record<string, any>): ToolRenderConfig => {\n // 子智能体工具渲染:当 toolCall 触发了子智能体且有子消息时\n if (item?.hasSubAgent && item?.subMessages?.length) {\n return {\n component: SubAgentRender,\n defaultExpanded: true,\n alwaysShowContent: true\n }\n }\n if (item?.toolName && toolRenders[item.toolName]) {\n return toolRenders[item.toolName]\n }\n return {\n component: DefaultToolRender,\n defaultExpanded: false,\n alwaysShowContent: false\n }\n}\n\nexport { DefaultToolRender, SubAgentRender, TodoWriteRender }\nexport type { ToolRenderProps }\n","import { LoadingOutlined, RightOutlined, ToolOutlined } from '@ant-design/icons'\nimport { Collapse, theme } from 'antd'\nimport React, { useMemo } from 'react'\nimport { DisplayView, ToolCallEvent } from '../../../types/message.types'\nimport { stripA2uiTags } from '../A2uiRuntime'\nimport { getToolRenderConfig, ToolRenderConfig } from './index'\nimport styles from './index.module.less'\n\ninterface ExtendedToolCallEvent extends ToolCallEvent {\n result?: any\n arguments?: any\n errorMessage?: string\n duration?: number\n isError?: boolean\n summary?: string\n /** 子智能体消息列表 */\n subMessages?: any[]\n subAgentName?: string\n subAgentDepth?: number\n /** 流式参数展示态(仅用于参数生成阶段) */\n streamingArgsDisplay?: { title?: string; content: string; kind?: string; lang?: string }\n /** 参数最终展示态 */\n argsDisplay?: DisplayView | null\n /** 结果最终展示态 */\n resultDisplay?: DisplayView | null\n /** 使用 display 协议渲染时,禁止回退展示原始参数/结果 */\n displayProtocol?: boolean\n _streamingIndex?: number\n}\n\ninterface ToolCallItemProps {\n item: ExtendedToolCallEvent\n}\n\n/** 从结果对象的所有字符串字段中剥离 <A2UI> 标签,返回清理后的副本。 */\nfunction stripA2uiTagsFromResult(result: any): any {\n if (!result || typeof result !== 'object' || Array.isArray(result)) return result\n const cleaned: Record<string, any> = {}\n for (const [key, value] of Object.entries(result)) {\n cleaned[key] = typeof value === 'string' && value.includes('<A2UI') ? stripA2uiTags(value) : value\n }\n // 如果剥离后所有字段都为空字符串,返回 null 以避免显示空 JSON\n const hasVisible = Object.values(cleaned).some((v) => v !== '' && v !== null && v !== undefined)\n return hasVisible ? cleaned : null\n}\n\nconst formatContent = (content?: any) => {\n try {\n if (!content) return { text: '', isJson: false, parsed: null }\n if (typeof content === 'object') {\n return { text: JSON.stringify(content, null, 2), isJson: true, parsed: content }\n }\n const parsed = JSON.parse(content)\n if (typeof parsed === 'object' && parsed !== null) {\n return { text: JSON.stringify(parsed, null, 2), isJson: true, parsed }\n }\n // 字符串内容可能包含 A2UI 标签,剥离后展示\n const stripped = content.includes('<A2UI') ? stripA2uiTags(content) : content\n return { text: stripped, isJson: false, parsed: null }\n } catch {\n const text = typeof content === 'string' ? (content.includes('<A2UI') ? stripA2uiTags(content) : content) : ''\n return { text, isJson: false, parsed: null }\n }\n}\n\nconst hasDisplayViewBody = (view?: DisplayView | null) => {\n return !!(view?.summary || view?.blocks?.length || view?.meta?.length)\n}\n\nconst ToolCallItem: React.FC<ToolCallItemProps> = ({ item }) => {\n const { token } = theme.useToken()\n const renderConfig: ToolRenderConfig = getToolRenderConfig(item as any)\n const CustomRender = renderConfig.component\n\n const status = useMemo(() => {\n if (item.status) return item.status\n if (item.errorMessage) return 'error'\n if (item.result) return 'success'\n return 'running'\n }, [item.status, item.errorMessage, item.result])\n\n const argsContent = useMemo(() => formatContent(item.arguments || item.content), [item.arguments, item.content])\n const resultContent = useMemo(() => {\n if (!item.result) return null\n const cleanedResult = stripA2uiTagsFromResult(item.result)\n if (!cleanedResult) return null\n return formatContent(cleanedResult)\n }, [item.result])\n\n const hasContent = useMemo(() => {\n if (renderConfig.disableExpandOnError && status === 'error') return false\n\n let alwaysShow = false\n if (typeof renderConfig.alwaysShowContent === 'function') {\n alwaysShow = renderConfig.alwaysShowContent(argsContent.parsed, resultContent?.parsed)\n } else if (renderConfig.alwaysShowContent) {\n alwaysShow = renderConfig.alwaysShowContent\n }\n\n if (alwaysShow) return true\n\n // 关键步骤:display 协议工具不再回退显示原始 JSON。\n // 只有真正存在可见内容时才允许展开,避免“只有标题却还能展开”。\n if (item.displayProtocol) {\n if (item.streamingArgsDisplay?.content) return true\n if (hasDisplayViewBody(item.argsDisplay)) return true\n if (hasDisplayViewBody(item.resultDisplay)) return true\n return false\n }\n\n if (argsContent.text) return true\n if (resultContent?.text) return true\n\n return false\n }, [\n renderConfig.disableExpandOnError,\n renderConfig.alwaysShowContent,\n item.displayProtocol,\n item.streamingArgsDisplay,\n item.argsDisplay,\n item.resultDisplay,\n status,\n argsContent.parsed,\n resultContent?.parsed,\n argsContent.text,\n resultContent?.text\n ])\n\n const isDefaultExpanded = useMemo(() => {\n if (typeof renderConfig.defaultExpanded === 'function') {\n return renderConfig.defaultExpanded(argsContent.parsed, resultContent?.parsed)\n }\n return renderConfig.defaultExpanded\n }, [renderConfig.defaultExpanded, argsContent.parsed, resultContent?.parsed])\n\n // 仅执行中显示 loading 图标,完成后不显示\n const showLoading = status === 'running' || status === 'pending'\n\n // title 有值时显示名称;执行中无 title 时用闪动点占位;结束后无 title 回退 toolName\n const displayName = item.title || (showLoading ? '' : item.toolName || 'Unknown Tool')\n\n const renderIcon = () => {\n if (!item.toolIcon) {\n return <ToolOutlined style={{ fontSize: 14 }} />\n }\n\n const isUrl = /^(http|\\/)/.test(item.toolIcon)\n\n if (isUrl) {\n return <img src={item.toolIcon} alt=\"tool-icon\" style={{ width: '100%', height: '100%', objectFit: 'contain' }} />\n }\n\n return <span className={styles.toolIcon}>{item.toolIcon}</span>\n }\n\n return (\n <Collapse\n className={styles.toolCollapse}\n style={{ width: '100%' }}\n collapsible={hasContent ? undefined : 'disabled'}\n defaultActiveKey={isDefaultExpanded && hasContent ? [item.toolCallId || 'fallback-key'] : undefined}\n expandIconPlacement=\"end\"\n expandIcon={({ isActive }) => (hasContent ? <RightOutlined className={`${styles.expandIcon} ${isActive ? styles.expanded : ''}`} /> : null)}\n items={[\n {\n key: item.toolCallId || 'fallback-key',\n showArrow: hasContent,\n label: (\n <div className={styles.toolCallItem}>\n <div>{renderIcon()}</div>\n {displayName ? (\n <span className={`${styles.toolName} text-ellipsis`}>{displayName}</span>\n ) : (\n <span className={styles.toolNamePending}>\n <span className={styles.dot} />\n <span className={styles.dot} />\n <span className={styles.dot} />\n </span>\n )}\n {showLoading && (\n <div className={styles.statusIcon} style={{ color: token.colorPrimary }}>\n <LoadingOutlined />\n </div>\n )}\n {/* {item.duration && <Typography.Text className={styles.duration}>{item.duration}ms</Typography.Text>} */}\n </div>\n ),\n children: (\n <div className={styles.contentScrollContainer}>\n <CustomRender\n item={item}\n args={argsContent.parsed}\n result={resultContent?.parsed}\n argsContent={argsContent}\n resultContent={resultContent}\n errorMessage={item.errorMessage}\n />\n </div>\n )\n }\n ]}\n />\n )\n}\n\nexport default ToolCallItem\n","import '@ant-design/x-markdown/themes/light.css'\nimport { Bubble } from '@ant-design/x-v2'\nimport { isEmptyObj } from '@zero-library/common'\nimport { Flex } from 'antd'\nimport React, { useMemo } from 'react'\nimport { ChatLayoutMessageList, ConversationMessage, FilesEvent, InputFile } from '../types'\nimport { RoleContent } from '../ui/common/BubbleListItems'\nimport { A2uiMessageCards, A2uiPlanNode, shouldHideA2uiPlan } from './CustomComponents/A2uiRuntime'\nimport { FilesNode, QuoteMsgNode, RunStartedNode, TextNode } from './CustomComponents/MessageNode'\nimport ToolCallItem from './CustomComponents/ToolRenders/tool-call-item'\nimport XMarkdown from './XMarkdown'\nimport styles from './styles.module.less'\n\nconst RENDERABLE_MESSAGE_TYPES = ['runStarted', 'toolCall', 'toolResult', 'text', 'stepError', 'runFailed', 'files', 'plan'] as const\n\nexport interface MessageRenderProps {\n role: RoleContent\n message: ConversationMessage\n messageIndex?: number\n loading?: boolean\n onFilePreview?: (file: InputFile) => void\n containerRef?: React.Ref<HTMLDivElement>\n /** message自定义标记渲染组件 */\n customComponents?: ChatLayoutMessageList['customComponents']\n}\n\nexport default React.memo(({ role, message, messageIndex = -1, loading, containerRef, customComponents }: MessageRenderProps) => {\n const content = useMemo(() => {\n return (message.content || []).filter((item) => {\n if (!RENDERABLE_MESSAGE_TYPES.includes(item.type as (typeof RENDERABLE_MESSAGE_TYPES)[number])) {\n return false\n }\n if (item.type === 'plan') {\n return !shouldHideA2uiPlan(item as any)\n }\n if (item.type === 'text') {\n const rawText = item.messageContent || item.text || ''\n return !!rawText.trim() || !!item.reasoningContent\n }\n return true\n })\n }, [message.content])\n\n const quoteMsg = useMemo(() => {\n const quoteMsg = {} as { files?: FilesEvent; messageContent?: string }\n if (message.params) {\n try {\n const citation = JSON.parse(message.params).citation\n if (citation) {\n quoteMsg.messageContent = citation\n }\n } catch (e) {}\n }\n return isEmptyObj(quoteMsg) ? null : quoteMsg\n }, [message.params, message.quoteMsg])\n\n // generating 为 true 且最后一项不是正在流式输出的 text 时显示等待指示器\n // - 无内容时:初始等待\n // - 最后一项是 toolCall/toolResult 等:多轮执行间等待\n // - 最后一项是 text:正在输出回答,不显示\n const showPending = loading && (content.length === 0 || content[content.length - 1].type !== 'text')\n\n if (content.length === 0 && !showPending) return null\n\n // 找到最后一个 toolCall/toolResult 的索引,A2UI 卡片紧跟其后渲染\n const lastToolCallIndex = (() => {\n let lastIdx = -1\n content.forEach((item, i) => {\n if (item.type === 'toolCall' || item.type === 'toolResult') lastIdx = i\n })\n return lastIdx\n })()\n\n return (\n <Flex ref={containerRef} vertical gap={8}>\n {content.map((item, index) => (\n <React.Fragment key={`message-${index}`}>\n <Bubble\n role={role.user}\n placement={role.placement}\n className={styles.bubble}\n variant={item.type === 'files' ? 'borderless' : undefined}\n content={\n <>\n {(item.type === 'toolCall' || item.type === 'toolResult') && (\n <ToolCallItem key={`tool-call-${(item as any).toolCallId || index}`} item={item as any} />\n )}\n {item.type === 'text' && (\n <TextNode\n key={`message-${index}`}\n item={item}\n role={message.role}\n customComponents={customComponents}\n message={message}\n messageIndex={messageIndex}\n />\n )}\n {(item.type === 'stepError' || item.type === 'runFailed') &&\n (item.errorMessage ? <XMarkdown message={message} components={customComponents} content={item.errorMessage} /> : null)}\n {item.type === 'files' && <FilesNode key={`files-${index}`} item={item as FilesEvent} />}\n {item.type === 'plan' && <A2uiPlanNode key={`plan-${index}`} item={item} />}\n </>\n }\n />\n {/* A2UI 卡片紧跟在最后一个 toolCall 之后渲染,和流式出现顺序一致 */}\n {index === lastToolCallIndex && messageIndex >= 0 ? <A2uiMessageCards messageIndex={messageIndex} message={message} /> : null}\n </React.Fragment>\n ))}\n {showPending && role.user === 'agent' && <Bubble role={role.user} placement={role.placement} content={<RunStartedNode />} />}\n {quoteMsg && <QuoteMsgNode quoteMsg={quoteMsg} role={role} />}\n </Flex>\n )\n})\n","import { Prompts, Welcome } from '@ant-design/x-v2'\nimport { RenderWrapper } from '@zero-library/common'\nimport { Avatar, Flex } from 'antd'\nimport classNames from 'classnames'\nimport { useMemo } from 'react'\nimport { useSnapshot } from 'valtio'\nimport AuthImage from '../../components/AuthImage'\nimport IconFont from '../../components/IconFont'\nimport { useChatStore } from '../../stores/Context'\nimport type { ChatLayoutWelcomeMessage } from '../../types'\nimport styles from './styles.module.less'\n\nexport default ({ icon = true, title = true, description = true, prompts = true }: ChatLayoutWelcomeMessage) => {\n const chatStore = useChatStore()\n const agentState = useSnapshot(chatStore.agent)\n\n const recommendQuestions = useMemo(() => {\n return agentState.agentInfo?.config?.onboarding?.guiding?.map((item, index) => ({\n key: String(index),\n description: item\n }))\n }, [agentState.agentInfo?.config?.onboarding?.guiding])\n\n return (\n <Flex vertical justify=\"center\" className={styles.chatWelcomeWrap}>\n <Welcome\n className={classNames(styles.chatWelcome, 'p-t-32')}\n variant=\"borderless\"\n icon={\n <RenderWrapper\n control={icon}\n DefaultComponent={\n agentState.agentInfo?.iconUrl ? (\n /^https?:\\/\\//i.test(agentState.agentInfo?.iconUrl) ? (\n <Avatar size={58} src={agentState.agentInfo?.iconUrl} />\n ) : (\n <AuthImage size={58} path={agentState.agentInfo?.iconUrl} />\n )\n ) : (\n <Avatar size={58} src={<IconFont type=\"icon-lolrai\" className={styles.defaultLogo} />} />\n )\n }\n />\n }\n title={<RenderWrapper control={title} DefaultComponent={`你好,我是${agentState.agentInfo?.name || ''}`} />}\n description={\n <RenderWrapper\n control={description}\n DefaultComponent={<div dangerouslySetInnerHTML={{ __html: agentState.agentInfo?.config?.onboarding?.greeting || '' }}></div>}\n />\n }\n />\n\n {(agentState.agentInfo?.config?.onboarding?.guiding?.length ?? 0) > 0 && (\n <RenderWrapper\n control={prompts}\n DefaultComponent={\n <Prompts\n className={classNames('m-t-16', styles.promptItem)}\n wrap\n onItemClick={(info) => chatStore.sendMessage(info.data.description as string)}\n items={recommendQuestions}\n />\n }\n />\n )}\n </Flex>\n )\n}\n","import { CopyOutlined, DislikeOutlined, LikeOutlined } from '@ant-design/icons'\nimport { Bubble, BubbleProps } from '@ant-design/x-v2'\nimport type { BubbleItemType } from '@ant-design/x-v2/es/bubble'\nimport { copyText, htmlToMarkdown, isBoolean, RenderWrapper, shouldRender, UserAvatar } from '@zero-library/common'\nimport { Button, Flex, GetRef, Spin, Typography } from 'antd'\nimport classNames from 'classnames'\nimport { useEffect, useMemo, useRef } from 'react'\nimport { useSnapshot } from 'valtio'\nimport { A2uiRenderer } from '../../components/CustomComponents/A2uiRuntime'\nimport MessageRender from '../../components/MessageRender'\nimport { ConversationMemberEnum } from '../../core/constants'\nimport { useChatStore } from '../../stores/Context'\nimport { ChatLayoutMessageList, ConversationMessage, MessageBoxType } from '../../types'\nimport styles from './styles.module.less'\nimport WelcomeItem from './WelcomeItem'\n\nconst { Text } = Typography\n\nexport interface RoleContent {\n role: number\n user: ConversationMemberEnum\n placement: BubbleProps['placement']\n avatar?: any\n}\n\n/* 🌟 消息列表 */\nexport default ({\n firstMessages = [],\n welcomeMessage = true,\n avatar = { user: false, agent: true },\n agentActions = false,\n customComponents\n}: ChatLayoutMessageList) => {\n const chatStore = useChatStore()\n const agentState = useSnapshot(chatStore.agent)\n const conversationState = useSnapshot(chatStore.conversation)\n\n // 构建角色信息和消息显示位置\n const conversationRoles = useMemo(() => {\n const roles = {} as Record<ConversationMemberEnum, RoleContent>\n if (agentState.agentInfo?.id) {\n roles.agent = {\n user: 'agent',\n role: 2,\n placement: 'start'\n // avatar: (isBoolean(avatar) ? avatar : avatar?.agent) ? { src: agentState.agentInfo.iconUrl, icon: <OpenAIOutlined /> } : null\n }\n }\n roles.user = {\n user: 'user',\n role: 1,\n placement: 'end',\n avatar: (isBoolean(avatar) ? avatar : avatar?.user) ? <UserAvatar size={30} avatarSrc=\"\" userName=\"\" /> : null\n }\n\n return roles\n }, [agentState.agentInfo.id])\n\n // 当前会话参数\n const chatMessage = useMemo(\n () => conversationState.messages[conversationState.active.id] || ({} as MessageBoxType),\n [conversationState.messages[conversationState.active.id]]\n )\n const conversationMessages = chatMessage?.message || []\n\n // 获取角色配置\n const getRole = (role: number) => {\n const roleKey = Object.keys(conversationRoles).find((key) => conversationRoles[key].role === role)\n return conversationRoles[roleKey] || ({} as RoleContent)\n }\n const messageRefs = useRef<ObjectType<HTMLDivElement>>({})\n\n const chatRecords = useMemo(() => {\n const chatRecords: BubbleItemType[] = []\n\n conversationMessages.forEach((message, messageIndex) => {\n const role = getRole(message.role)\n const isLeftBubble = role.user === 'agent'\n const isMessageLoading = !!message.generating\n const baseKey = `${message.executionId}-${messageIndex}`\n\n const footerNode = !isMessageLoading ? (\n <Flex align=\"center\" gap={8}>\n {message.stopFlag && isLeftBubble && (\n <Text type=\"secondary\" style={{ flex: 'none' }}>\n 已停止\n </Text>\n )}\n <Flex align=\"center\" gap={4}>\n {role.user === 'agent' && (\n <>\n <Button\n onClick={async () => {\n const container = messageRefs.current[baseKey]\n if (!container) return\n const markdown = htmlToMarkdown(container.innerHTML) || container.innerText || ''\n copyText(markdown)\n }}\n color=\"default\"\n variant=\"text\"\n size=\"small\"\n icon={<CopyOutlined />}\n />\n <Button\n color={message.feedback === 1 ? 'primary' : 'default'}\n size=\"small\"\n variant=\"text\"\n icon={<LikeOutlined />}\n onClick={() => chatStore.feedback(message.executionId, 1, messageIndex)}\n />\n <Button\n color={message.feedback === 2 ? 'primary' : 'default'}\n size=\"small\"\n variant=\"text\"\n icon={<DislikeOutlined />}\n onClick={() => chatStore.feedback(message.executionId, 2, messageIndex)}\n />\n <RenderWrapper\n control={agentActions}\n ctx={{\n message,\n get dom() {\n return messageRefs.current[baseKey]\n }\n }}\n />\n </>\n )}\n </Flex>\n </Flex>\n ) : undefined\n\n chatRecords.push({\n key: baseKey,\n role: String(role.role),\n placement: role.placement,\n avatar: role.avatar,\n content: (\n <MessageRender\n role={role}\n message={message as ConversationMessage}\n messageIndex={messageIndex}\n customComponents={customComponents}\n loading={isMessageLoading}\n containerRef={(node) => {\n if (node) {\n messageRefs.current[baseKey] = node\n } else {\n delete messageRefs.current[baseKey]\n }\n }}\n />\n ),\n footer: footerNode,\n variant: 'borderless'\n })\n })\n\n return chatRecords\n }, [agentActions, chatStore, conversationMessages, conversationRoles, conversationState.active.id])\n\n const firstMessagesRecord = useMemo(() => {\n return (firstMessages || []).map((firstMessage, index) => {\n const { member, content, contentRender, ...args } = firstMessage\n const roleObj = getRole(member)\n\n return {\n key: `firstMessage-${index}`,\n role: roleObj.user,\n placement: roleObj.placement,\n avatar: roleObj.avatar,\n styles: {\n body: {\n width: 'auto'\n }\n },\n variant: 'borderless',\n ...args,\n content: contentRender ? contentRender({ index, member }) : content\n } as BubbleItemType\n })\n }, [firstMessages, conversationRoles])\n\n const welcomeMessageRecord = useMemo(() => {\n const isExist = shouldRender(welcomeMessage)\n\n return isExist\n ? [\n {\n key: 'welcome-message',\n content: <RenderWrapper control={welcomeMessage} DefaultComponent={WelcomeItem} />,\n variant: 'borderless'\n } as BubbleItemType\n ]\n : []\n }, [welcomeMessage, agentState.agentInfo.id])\n\n const bubbleListItems = useMemo(() => {\n const list: BubbleItemType[] = []\n list.push(...firstMessagesRecord)\n list.push(...chatRecords)\n if (list.length) {\n return list\n }\n return [...welcomeMessageRecord]\n }, [chatRecords, welcomeMessageRecord, firstMessagesRecord])\n\n const listRef = useRef<GetRef<typeof Bubble.List>>(null)\n // 真实控制是否自动滚动的 ref(不会触发渲染)\n const autoScrollRef = useRef(true)\n\n const handleScroll = (el: any) => {\n const target = el.target\n const distanceToBottom = target.scrollHeight - target.scrollTop - target.clientHeight\n // 小于 150px 表示接近底部,允许自动滚动\n autoScrollRef.current = distanceToBottom < 90\n }\n useEffect(() => {\n const latestMessage = conversationMessages[conversationMessages?.length - 1]\n if (!latestMessage) return\n\n if (latestMessage.generating) {\n autoScrollRef.current = true\n }\n }, [conversationMessages?.length])\n useEffect(() => {\n const el = listRef.current?.nativeElement\n if (!el || !bubbleListItems.length) return\n\n if (autoScrollRef.current) {\n setTimeout(() => {\n if (autoScrollRef.current) {\n listRef.current?.scrollTo({\n top: 'bottom',\n behavior: 'instant'\n })\n }\n }, 300)\n }\n }, [bubbleListItems])\n\n return (\n <A2uiRenderer messages={conversationMessages}>\n <Spin spinning={conversationState.loading} classNames={{ root: 'full-spin' }}>\n <Bubble.List\n autoScroll={false}\n key={conversationState.active.id}\n ref={listRef}\n items={bubbleListItems}\n className={classNames(styles.bubbleList, 'height-full', 'scroll-fade-in')}\n onScroll={handleScroll}\n />\n </Spin>\n </A2uiRenderer>\n )\n}\n","import { CloseOutlined, DownOutlined, SearchOutlined, UpOutlined } from '@ant-design/icons'\nimport { Button, Checkbox, Empty, Flex, Input, Layout, Modal, Spin, Tag, theme, Typography } from 'antd'\nimport classNames from 'classnames'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { useSnapshot } from 'valtio'\nimport IconFont from '../../../components/IconFont'\nimport { LibraryTypeEnum, TagTypeEnum } from '../../../core/constants'\nimport { useChatStore } from '../../../stores/Context'\nimport { AgentSpec, Library, Skill, WorkspaceTag } from '../../../types'\nimport styles from './style.module.less'\n\nconst { Sider, Content } = Layout\nconst { Title, Text } = Typography\n\nexport interface ResourceSelectorModalProps {\n open: boolean\n type: 'skill' | 'knowledge'\n onCancel?: () => void\n}\n\ntype ResourceItem = Skill | Library\n\nconst ALL_CATEGORY_ID = 'all'\n\nexport default ({ open, type, onCancel }: ResourceSelectorModalProps) => {\n const chatStore = useChatStore()\n const conversationState = useSnapshot(chatStore.conversation)\n const { token } = theme.useToken()\n const tagsContainerRef = useRef<HTMLDivElement>(null)\n\n const isSkill = type === 'skill'\n\n const [loading, setLoading] = useState(false)\n const [resources, setResources] = useState<ResourceItem[]>([])\n const [categories, setCategories] = useState<WorkspaceTag[]>([])\n\n const [selectedCategoryIds, setSelectedCategoryIds] = useState<string[]>([ALL_CATEGORY_ID])\n const [selectedIds, setSelectedIds] = useState<string[]>([])\n const [searchText, setSearchText] = useState('')\n const [tagsExpanded, setTagsExpanded] = useState(false)\n const [showExpandBtn, setShowExpandBtn] = useState(false)\n\n // 1. 获取数据与初始化\n useEffect(() => {\n if (!open) {\n setResources([])\n setCategories([])\n setSelectedCategoryIds([ALL_CATEGORY_ID])\n setSelectedIds([])\n setSearchText('')\n setTagsExpanded(false)\n setShowExpandBtn(false)\n return\n }\n\n let canceled = false\n setLoading(true)\n\n const fetchData = async () => {\n try {\n const tagType = isSkill ? TagTypeEnum.SKILL : TagTypeEnum.KNOWLEDGE\n const [tagsRes, resourcesRes] = await Promise.all([\n chatStore.config.services.request.listTags({ tagType }),\n isSkill\n ? chatStore.config.services.request.listSkills()\n : chatStore.config.services.request.listLibrarys({ libraryType: LibraryTypeEnum.KNOWLEDGE })\n ])\n\n if (canceled) return\n\n const fetchedResources = (resourcesRes.data || []) as ResourceItem[]\n setCategories([{ id: ALL_CATEGORY_ID, name: '全部' }, ...(tagsRes.data || [])])\n setResources(fetchedResources)\n\n // 初始化选中项,并过滤掉已经不存在的脏数据\n const spec = conversationState.active.spec\n const initialItems = isSkill ? spec?.skills?.items : spec?.knowledges?.items\n const validIds = new Set(fetchedResources.map((r) => r.id))\n\n const validSelectedIds = (initialItems || []).map((item) => item.id).filter((id) => validIds.has(id))\n setSelectedIds(validSelectedIds)\n\n // 如果发现脏数据,即时更新 store\n if (initialItems && validSelectedIds.length !== initialItems.length) {\n const currentSpec = chatStore.conversation.active.spec || ({} as AgentSpec)\n const clonedSpec = JSON.parse(JSON.stringify(currentSpec))\n\n chatStore.setConversationSpec(getNextSpec(clonedSpec, validSelectedIds, fetchedResources))\n }\n } finally {\n if (!canceled) setLoading(false)\n }\n }\n\n fetchData()\n return () => {\n canceled = true\n }\n }, [open, isSkill, chatStore, conversationState.active.spec])\n\n // 2. 标签区域展开/收起按钮计算\n useEffect(() => {\n if (!open) return\n\n const checkHeight = () => {\n if (tagsContainerRef.current) {\n setShowExpandBtn(tagsContainerRef.current.scrollHeight > 60)\n }\n }\n\n // 延迟检查以确保 DOM 已渲染\n setTimeout(checkHeight, 0)\n const observer = new ResizeObserver(checkHeight)\n if (tagsContainerRef.current) observer.observe(tagsContainerRef.current)\n\n return () => observer.disconnect()\n }, [open, selectedIds])\n\n // 3. 筛选列表\n const filteredResources = useMemo(() => {\n return resources.filter((item) => {\n const matchCategory = selectedCategoryIds.includes(ALL_CATEGORY_ID) || item.tagIds?.some((id) => selectedCategoryIds.includes(id))\n\n const searchLower = searchText.trim().toLowerCase()\n const itemName = item.name?.toLowerCase() || ''\n const itemAlias = 'aliasName' in item ? item.aliasName?.toLowerCase() || '' : ''\n const matchSearch = !searchLower || itemName.includes(searchLower) || itemAlias.includes(searchLower)\n\n return matchCategory && matchSearch\n })\n }, [resources, selectedCategoryIds, searchText])\n\n /**\n * 构造新的 AgentSpec 配置\n * @param spec - 当前的 AgentSpec 会话配置\n * @param ids - 本次弹窗选中的资源 ID 列表\n * @param resourceList - 当前获取到的完整资源列表数据\n * @returns 新的 AgentSpec 会话配置\n */\n const getNextSpec = (spec: AgentSpec, ids: string[], resourceList: ResourceItem[]) => {\n const nextSpec: AgentSpec = { ...spec } as AgentSpec\n\n if (isSkill) {\n nextSpec.skills = {\n items: ids.map((id) => ({ id }))\n }\n } else {\n nextSpec.knowledges = {\n items: ids.map((id) => {\n const resource = resourceList.find((r) => r.id === id)\n return { id, name: resource?.name || '' }\n })\n }\n }\n\n return nextSpec\n }\n\n /**\n * 处理左侧分类标签的勾选与取消勾选\n * @param categoryId - 操作的分类标签 ID\n * @param checked - 是否勾选\n */\n const handleCategoryChange = (categoryId: string, checked: boolean) => {\n if (categoryId === ALL_CATEGORY_ID) {\n setSelectedCategoryIds(checked ? [ALL_CATEGORY_ID] : [])\n return\n }\n\n let nextIds = selectedCategoryIds.filter((id) => id !== ALL_CATEGORY_ID)\n if (checked) {\n nextIds.push(categoryId)\n } else {\n nextIds = nextIds.filter((id) => id !== categoryId)\n }\n\n setSelectedCategoryIds(nextIds.length ? nextIds : [ALL_CATEGORY_ID])\n }\n\n /**\n * 切换单个资源的选中状态\n * @param id - 资源 ID\n */\n const toggleItemSelection = (id: string) => {\n setSelectedIds((prev) => (prev.includes(id) ? prev.filter((i) => i !== id) : [...prev, id]))\n }\n\n /**\n * 点击确认按钮,将本地选中的数据回写到全局 Store\n */\n const handleConfirm = () => {\n // 从代理直接读取,并深拷贝,避免 snapshot 带来的不可变或陈旧闭包问题\n const currentSpec = chatStore.conversation.active.spec || ({} as AgentSpec)\n const clonedSpec = JSON.parse(JSON.stringify(currentSpec))\n\n chatStore.setConversationSpec(getNextSpec(clonedSpec, selectedIds, resources))\n onCancel?.()\n }\n\n /**\n * 辅助方法:通过 ID 获取展示给用户的资源名称,优先使用 aliasName\n * @param id - 资源 ID\n * @returns 资源的展示名称\n */\n const getDisplayName = (id: string) => {\n const item = resources.find((r) => r.id === id)\n if (!item) return id\n return 'aliasName' in item && item.aliasName ? item.aliasName : item.name || id\n }\n\n const title = isSkill ? '选择技能' : '选择知识库'\n const iconType = isSkill ? 'icon-skill' : 'icon-remark'\n\n return (\n <Modal\n open={open}\n className={styles.customModal}\n onCancel={onCancel}\n closeIcon={<CloseOutlined />}\n width={960}\n centered\n destroyOnHidden\n title={\n <div className={styles.titleContainer}>\n <Title level={5}>{title}</Title>\n </div>\n }\n footer={\n <div className={styles.footer}>\n <Button type=\"primary\" onClick={handleConfirm}>\n 确认\n </Button>\n </div>\n }\n >\n <Layout className={styles.layout}>\n {/* 左侧分类 */}\n <Sider width={220} className={styles.sider} theme=\"light\">\n <div className={styles.siderContent}>\n <Flex gap={4} vertical>\n {categories.map((cat) => {\n const isChecked = selectedCategoryIds.includes(cat.id)\n return (\n <Flex\n key={cat.id}\n className={classNames(styles.categoryItem, { [styles.categoryActive]: isChecked })}\n onClick={() => handleCategoryChange(cat.id, !isChecked)}\n >\n <Checkbox\n checked={isChecked}\n className={cat.id === ALL_CATEGORY_ID ? styles.roundCheckbox : ''}\n onClick={(e) => e.stopPropagation()}\n onChange={(e) => handleCategoryChange(cat.id, e.target.checked)}\n />\n <span className={styles.categoryName}>{cat.name}</span>\n </Flex>\n )\n })}\n </Flex>\n </div>\n </Sider>\n\n {/* 右侧内容 */}\n <Content className={styles.content}>\n <Flex align=\"center\" justify=\"space-between\">\n <Input\n className={styles.searchInput}\n placeholder={`搜索${isSkill ? '技能' : '知识库'}名称`}\n prefix={<SearchOutlined style={{ color: token.colorTextQuaternary }} />}\n value={searchText}\n onChange={(e) => setSearchText(e.target.value)}\n allowClear\n autoFocus\n />\n </Flex>\n\n {selectedIds.length > 0 && (\n <Flex vertical gap={2}>\n <Text type=\"secondary\" className={styles.selectedCount}>\n 已选 {selectedIds.length}\n </Text>\n </Flex>\n )}\n\n {/* 顶部已选标签区 */}\n <div className={classNames(styles.tagsArea, { [styles.tagsExpanded]: tagsExpanded })}>\n <Flex gap={8} className={styles.tagContainer} wrap ref={tagsContainerRef}>\n {selectedIds.map((id) => (\n <Tag\n key={id}\n closable\n onClose={(e) => {\n e.preventDefault()\n toggleItemSelection(id)\n }}\n className={styles.tag}\n >\n {getDisplayName(id)}\n </Tag>\n ))}\n {showExpandBtn && tagsExpanded && (\n <Button size=\"small\" className={styles.expandBtn} onClick={() => setTagsExpanded(false)}>\n 收起 <UpOutlined />\n </Button>\n )}\n </Flex>\n {showExpandBtn && !tagsExpanded && (\n <div className={styles.expandBtnWrapper}>\n <Button size=\"small\" className={styles.expandBtn} onClick={() => setTagsExpanded(true)}>\n 展开 <DownOutlined />\n </Button>\n </div>\n )}\n </div>\n\n {/* 资源列表区 */}\n <div className={styles.listArea}>\n <Spin spinning={loading} classNames={{ root: 'full-spin' }}>\n <div className={styles.listInner}>\n <Flex gap={8} vertical>\n {filteredResources.length > 0 ? (\n filteredResources.map((item) => {\n const isSelected = selectedIds.includes(item.id)\n return (\n <div\n key={item.id}\n className={classNames(styles.listItem, { [styles.listItemSelected]: isSelected })}\n onClick={() => toggleItemSelection(item.id)}\n >\n <div className={styles.itemIconWrapper}>\n <IconFont type={iconType} />\n </div>\n <Flex vertical className={styles.itemInfo}>\n <Flex justify=\"space-between\">\n <Text strong>{getDisplayName(item.id)}</Text>\n {isSelected && (\n <Tag color={token.colorPrimary} variant=\"outlined\">\n 已添加\n </Tag>\n )}\n </Flex>\n <Text type=\"secondary\" className={styles.itemDesc}>\n {item.description || '暂无描述'}\n </Text>\n </Flex>\n </div>\n )\n })\n ) : (\n <Empty description=\"暂无匹配的搜索结果\" />\n )}\n </Flex>\n </div>\n </Spin>\n </div>\n </Content>\n </Layout>\n </Modal>\n )\n}\n","import { Divider, Flex, Typography } from 'antd'\nimport { useState } from 'react'\nimport { useSnapshot } from 'valtio'\nimport IconFont from '../../../components/IconFont'\nimport { useChatStore } from '../../../stores/Context'\nimport ResourceSelectorModal from './ResourceSelectorModal'\nimport styles from './style.module.less'\n\nconst { Text } = Typography\n\nexport default ({}) => {\n const chatStore = useChatStore()\n const conversationState = useSnapshot(chatStore.conversation)\n const [modalOpen, setModalOpen] = useState(false)\n const knowledgeCount = conversationState.active.spec?.knowledges?.items?.length ?? 0\n\n return (\n <>\n <div className={styles.resourceBtn} onClick={() => setModalOpen(true)}>\n <IconFont type=\"icon-remark\" />\n <Text>知识库</Text>\n {knowledgeCount > 0 && (\n <>\n <Divider vertical className={styles.divider} />\n <Flex className={styles.count}>{knowledgeCount}</Flex>\n </>\n )}\n </div>\n\n {modalOpen && <ResourceSelectorModal open={modalOpen} type=\"knowledge\" onCancel={() => setModalOpen(false)} />}\n </>\n )\n}\n","import type { SelectProps } from 'antd'\nimport { Flex, Select, Typography } from 'antd'\nimport { useCallback, useEffect, useState } from 'react'\nimport { useSnapshot } from 'valtio'\nimport IconFont from '../../../components/IconFont'\nimport { useChatStore } from '../../../stores/Context'\nimport type { AgentInfo, ProviderModel } from '../../../types'\ntype LabelRender = SelectProps['labelRender']\n\nconst { Text } = Typography\n\ntype ModelOption = {\n label: string\n value: string\n icon?: string\n modelName: string\n providerName: string\n}\n\ntype ModelGroupOption = {\n label: string\n title: string\n value: string\n options: ModelOption[]\n}\n\n/**\n * 清理图标名称,去除 .Color 和 . 后缀,并确保以 icon- 开头。\n * 如果最终结果为空,则返回默认图标 'icon-zhinengti'。\n *\n * @param iconName 原始图标名称\n * @returns 处理后的图标名称\n */\nconst getModelIcon = (iconName?: string): string => {\n if (!iconName) {\n return 'icon-zhinengti'\n }\n\n let cleanedIconName = iconName.replace(/\\.Color$/i, '').replace(/\\./g, '')\n\n if (!cleanedIconName.startsWith('icon-')) {\n cleanedIconName = `icon-${cleanedIconName}`\n }\n\n return cleanedIconName\n}\n\nexport default ({}) => {\n const chatStore = useChatStore()\n const agentState = useSnapshot(chatStore.agent)\n const [models, setModels] = useState<ProviderModel[]>([])\n const currentModel = agentState.agentInfo.spec?.model\n\n const updateAgentModel = useCallback(\n (model: Pick<ModelOption, 'modelName' | 'providerName'>) => {\n const nextAgentInfo: AgentInfo = {\n ...agentState.agentInfo,\n spec: {\n ...agentState.agentInfo.spec,\n model: {\n ...agentState.agentInfo.spec?.model,\n ...model\n }\n }\n }\n chatStore.setAgent(nextAgentInfo)\n },\n [agentState.agentInfo, chatStore]\n )\n\n const modelOptions: ModelGroupOption[] = models.map((item) => ({\n label: item.providerLabel || item.providerName,\n title: item.providerLabel || item.providerName,\n value: item.providerName,\n icon: item.icon,\n options: item.models.map((model) => ({\n label: model.modelLabel,\n value: `${item.providerName}:${model.modelName}`,\n modelName: model.modelName,\n providerName: item.providerName,\n icon: model.icon\n }))\n }))\n\n const selectedModelValue =\n currentModel?.providerName && currentModel?.modelName ? `${currentModel.providerName}:${currentModel.modelName}` : undefined\n\n const handleModelChange: SelectProps<string, ModelOption | ModelGroupOption>['onChange'] = (_, option) => {\n if (Array.isArray(option) || !option || !('providerName' in option)) return\n\n updateAgentModel({\n modelName: option.modelName,\n providerName: option.providerName\n })\n }\n\n const labelRender: LabelRender = (props) => {\n const currentVal = props.value\n const model = modelOptions.flatMap((item) => item.options).find((model) => model.value === currentVal)\n\n if (!model) {\n return currentVal\n }\n\n return (\n <Flex align=\"center\" gap={8}>\n <IconFont type={getModelIcon(model.icon)} style={{ fontSize: 20, borderRadius: 4 }} />\n <Text>{model.label}</Text>\n </Flex>\n )\n }\n\n useEffect(() => {\n const getModels = async () => {\n const { data } = await chatStore.config.services.request.fetchModelList()\n setModels(data || [])\n }\n\n getModels()\n }, [])\n\n return (\n <Select<string, ModelOption | ModelGroupOption>\n popupMatchSelectWidth={false}\n labelRender={labelRender}\n options={modelOptions}\n value={selectedModelValue}\n onChange={handleModelChange}\n variant=\"borderless\"\n optionRender={(option) => {\n const data = option.data as any\n return (\n <Flex gap={12}>\n <IconFont type={getModelIcon(data?.icon)} style={{ fontSize: 20 }} />\n <Text>{data?.label}</Text>\n </Flex>\n )\n }}\n />\n )\n}\n","import classNames from 'classnames'\nimport { useSnapshot } from 'valtio'\nimport IconFont from '../../../components/IconFont'\nimport { useChatStore } from '../../../stores/Context'\nimport type { AgentInfo } from '../../../types'\nimport styles from './style.module.less'\n\nexport default () => {\n const chatStore = useChatStore()\n const agentState = useSnapshot(chatStore.agent)\n const currentModel = agentState.agentInfo.spec?.model\n\n const toggleReasoning = () => {\n const nextAgentInfo: AgentInfo = {\n ...agentState.agentInfo,\n spec: {\n ...agentState.agentInfo.spec,\n model: {\n ...agentState.agentInfo.spec?.model,\n reasoning: !currentModel?.reasoning\n }\n }\n }\n chatStore.setAgent(nextAgentInfo)\n }\n\n return (\n <div className={classNames(styles.resourceBtn, { [styles.resourceBtnActive]: currentModel?.reasoning })} onClick={toggleReasoning}>\n <IconFont type=\"icon-reason\" />\n <span>深度思考</span>\n </div>\n )\n}\n","import { Divider, Flex, Typography } from 'antd'\nimport { useEffect, useState } from 'react'\nimport { useSnapshot } from 'valtio'\nimport IconFont from '../../../components/IconFont'\nimport { useChatStore } from '../../../stores/Context'\nimport { Skill } from '../../../types'\nimport ResourceSelectorModal from './ResourceSelectorModal'\nimport styles from './style.module.less'\n\nconst { Text } = Typography\n\nexport default ({}) => {\n const chatStore = useChatStore()\n const conversationState = useSnapshot(chatStore.conversation)\n const [modalOpen, setModalOpen] = useState(false)\n const [skillsCount, setSkillsCount] = useState(0)\n\n useEffect(() => {\n let canceled = false\n\n const syncSkillsCount = async () => {\n const initialItems = conversationState.active.spec?.skills?.items\n if (!initialItems?.length) {\n setSkillsCount(0)\n return\n }\n\n const { data } = await chatStore.config.services.request.listSkills()\n if (canceled) return\n\n const validIds = new Set(((data || []) as Skill[]).map((item) => item.id))\n setSkillsCount(initialItems.map((item) => item.id).filter((id) => validIds.has(id)).length)\n }\n\n syncSkillsCount()\n\n return () => {\n canceled = true\n }\n }, [chatStore, conversationState.active.spec?.skills?.items])\n\n return (\n <>\n <div className={styles.resourceBtn} onClick={() => setModalOpen(true)}>\n <IconFont type=\"icon-skill\" />\n <Text>技能</Text>\n {skillsCount > 0 && (\n <>\n <Divider vertical className={styles.divider} />\n <Flex className={styles.count}>{skillsCount}</Flex>\n </>\n )}\n </div>\n\n {modalOpen && <ResourceSelectorModal open={modalOpen} type=\"skill\" onCancel={() => setModalOpen(false)} />}\n </>\n )\n}\n","import { EnterOutlined } from '@ant-design/icons'\nimport { Sender } from '@ant-design/x-v2'\nimport { isFunction, markdownToText, RenderWrapper, shouldRender } from '@zero-library/common'\nimport { Button, Flex, Typography } from 'antd'\nimport { forwardRef, useMemo } from 'react'\nimport { useSnapshot } from 'valtio'\nimport { InputFile } from '../..'\nimport { AttachmentsProps } from '../../components/Attachments'\nimport ChatSender, { ChatSenderHandle } from '../../components/ChatSender'\nimport { AgentTypeEnum, WorkspaceTypeEnum } from '../../core/constants'\nimport { useChatStore } from '../../stores/Context'\nimport { ChatLayoutSender, FileUploadConfig, MessageBoxType } from '../../types'\nimport KnowledgeBtn from './FeatureComponents/KnowledgeBtn'\nimport ModelSelect from './FeatureComponents/ModelSelect'\nimport ReasonBtn from './FeatureComponents/ReasonBtn'\nimport SkillBtn from './FeatureComponents/SkillBtn'\nimport styles from './styles.module.less'\n\nexport default forwardRef<ChatSenderHandle, ChatLayoutSender>(\n (\n {\n placeholder,\n extraBtn = false,\n referencesBtn = false,\n sendBtnProps,\n footerBelow = false,\n reasonBtn = true,\n skillsBtn = false,\n knowledgeBtn = false,\n modelSelect = false,\n commandConfig,\n uploadConfig\n },\n ref\n ) => {\n const chatStore = useChatStore()\n const configState = useSnapshot(chatStore.config)\n const agentState = useSnapshot(chatStore.agent)\n const conversationState = useSnapshot(chatStore.conversation)\n\n const fileUploadRequest: AttachmentsProps['fileUpload'] = (formData, signal) => {\n const params = {\n workspaceType: WorkspaceTypeEnum.CONVERSATION,\n agentId: agentState.agentInfo.id,\n workspaceId: conversationState.active.id\n }\n return configState.services.request.chatUpload(params, formData, signal)\n }\n // 当前会话参数\n const chatMessage = useMemo(\n () => conversationState.messages[conversationState.active.id] || ({} as MessageBoxType),\n [conversationState.messages[conversationState.active.id]]\n )\n const referenceContent = useMemo(() => {\n const content = chatMessage.references?.content?.name\n if (content) {\n return markdownToText(content)\n }\n }, [chatMessage.references])\n\n const referenceHandle = (con: string) => {\n if (chatMessage?.loading) return\n chatStore.setContent(con)\n chatStore.sendMessage()\n }\n\n return (\n <Flex vertical gap={8} className=\"zero-chat-sender\">\n {/* 🌟 提示词 */}\n {/* <RenderWrapper control={prompts} DefaultComponent={SenderPromptsItems} /> */}\n <ChatSender\n ref={ref}\n commandConfig={commandConfig}\n placeholder={placeholder}\n content={chatMessage.content}\n fileList={chatMessage.files as InputFile[]}\n headerOpen={chatMessage.headerOpen}\n loading={chatMessage.loading}\n onContentChange={chatStore.setContent}\n onFileListChange={chatStore.setFileList}\n onHeaderOpenChange={chatStore.setHeaderOpen}\n onSend={() => chatStore.sendMessage()}\n onCancel={chatStore.cancelReceive}\n onFocus={chatStore.config.hooks?.onSenderFocus}\n fileUpload={{\n request: fileUploadRequest,\n config: uploadConfig || (agentState.agentInfo.config?.options?.fileUpload as FileUploadConfig)\n }}\n sendBtnProps={isFunction(sendBtnProps) ? sendBtnProps() : {}}\n extraFooterBelow={<RenderWrapper control={footerBelow} />}\n extraFooter={\n <Flex justify=\"space-between\" flex={1}>\n <Flex gap={8}>\n {agentState.agentInfo.agentType === AgentTypeEnum.AUTONOMOUS && (\n <>\n <RenderWrapper control={reasonBtn} DefaultComponent={ReasonBtn} />\n </>\n )}\n <RenderWrapper control={skillsBtn} DefaultComponent={SkillBtn} />\n <RenderWrapper control={knowledgeBtn} DefaultComponent={KnowledgeBtn} />\n <RenderWrapper control={extraBtn} />\n </Flex>\n {agentState.agentInfo.agentType === AgentTypeEnum.AUTONOMOUS && (\n <>\n <RenderWrapper control={modelSelect} DefaultComponent={ModelSelect} />\n </>\n )}\n </Flex>\n }\n extraHeader={\n <Sender.Header\n title={\n <Flex gap={4}>\n <EnterOutlined />\n <Typography.Text type=\"secondary\" ellipsis>\n {referenceContent}\n </Typography.Text>\n </Flex>\n }\n open={!!referenceContent}\n onOpenChange={() => chatStore.setReferences()}\n classNames={{\n header: styles.senderReferenceHeaderTitle,\n content: shouldRender(referencesBtn) ? '' : styles.senderReferenceHeaderContent\n }}\n >\n <RenderWrapper\n control={referencesBtn}\n DefaultComponent={\n <Flex gap={8}>\n {['深度解读', '概要解读'].map((con) => (\n <Button key={con} color=\"primary\" variant=\"filled\" onClick={() => referenceHandle(con)}>\n {con} →\n </Button>\n ))}\n </Flex>\n }\n />\n </Sender.Header>\n }\n />\n </Flex>\n )\n }\n)\n","import IconFont from '../../components/IconFont'\nimport styles from './styles.module.less'\n\nconst ChatSenderHeader = () => {\n return (\n <div className={styles.logoArea}>\n <div className={styles.logoContainer}>\n {/* 静态的柔和光晕 */}\n <div className={styles.staticHalo}></div>\n\n {/* 悬浮呼吸感 */}\n <div className={styles.logoHoverWrapper}>\n <IconFont type=\"icon-lolrai\" className={styles.logoImage} />\n </div>\n </div>\n <h1 className={styles.greetingTitle}>\n 你好,我是 <span className={styles.gradientText}>LoLR.AI</span>\n </h1>\n <p className={styles.greetingSubtitle}>今天想探索点什么?</p>\n </div>\n )\n}\n\nexport default ChatSenderHeader\n","import { Input } from 'antd'\nimport React, { useCallback } from 'react'\n\ninterface MonacoEditorProps {\n language?: string\n value?: string\n onChange?: (value: string) => void\n placeholder?: string\n height?: number | string\n readOnly?: boolean\n style?: React.CSSProperties\n onMount?: (editor: any, monaco: any) => void\n}\n\nconst MonacoEditor: React.FC<MonacoEditorProps> = ({ value = '', onChange, placeholder, height = 200, readOnly = false, style }) => {\n const handleKeyDownCapture = useCallback((e: React.KeyboardEvent<HTMLDivElement>) => {\n // 阻止空格键事件向外层组件传播,避免被拦截\n if (e.key === ' ' || e.code === 'Space') {\n e.stopPropagation()\n }\n }, [])\n\n const handleKeyUpCapture = useCallback((e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === ' ' || e.code === 'Space') {\n e.stopPropagation()\n }\n }, [])\n\n const handleScriptChange = useCallback(\n (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n onChange?.(event.target.value || '')\n },\n [onChange]\n )\n\n return (\n <div style={style} onKeyDownCapture={handleKeyDownCapture} onKeyUpCapture={handleKeyUpCapture}>\n <Input.TextArea\n value={value}\n onChange={handleScriptChange}\n readOnly={readOnly}\n placeholder={placeholder}\n autoSize={false}\n style={{\n height,\n resize: 'vertical',\n fontFamily: 'Monaco, Menlo, Consolas, \"Courier New\", monospace',\n ...style\n }}\n />\n </div>\n )\n}\n\nexport default MonacoEditor\n","import { CloudUploadOutlined, DeleteOutlined } from '@ant-design/icons'\nimport { getFileSuffixName } from '@zero-library/common'\nimport { Button, Collapse, Flex, Form, Input, InputNumber, Switch, Typography, Upload, message, theme } from 'antd'\nimport { RcFile } from 'antd/es/upload'\nimport React, { useEffect, useMemo, useState } from 'react'\nimport { useSnapshot } from 'valtio'\nimport MonacoEditor from '../../components/MonacoEditor'\nimport { WorkspaceTypeEnum } from '../../core/constants'\nimport { formatFileSize, getFileIcon } from '../../core/utils'\nimport { useChatStore } from '../../stores/Context'\nimport { Variable } from '../../types/agentflow.types'\nimport styles from './styles.module.less'\n\nconst { Text } = Typography\n\nconst FormFileUpload = ({ value, onChange, multiple = false }: { value?: any; onChange?: (value: any) => void; multiple?: boolean }) => {\n const { token } = theme.useToken()\n const fileList = Array.isArray(value) ? value : value ? [value] : []\n const chatStore = useChatStore()\n const conversationState = useSnapshot(chatStore.conversation)\n const agentState = useSnapshot(chatStore.agent)\n const configState = useSnapshot(chatStore.config)\n\n const customRequest = async (options: any) => {\n const { file, onSuccess, onError } = options\n try {\n const formData = new FormData()\n formData.append('file', file as RcFile)\n const params = {\n workspaceType: WorkspaceTypeEnum.CONVERSATION,\n agentId: agentState.agentInfo.id,\n workspaceId: conversationState.active.id\n }\n const res = await configState.services.request.chatUpload(params, formData)\n\n if (res.code === 200 && res.data?.length) {\n const uploadedFile = res.data[0]\n onSuccess(uploadedFile)\n\n if (multiple) {\n onChange?.([...fileList, uploadedFile])\n } else {\n onChange?.([uploadedFile])\n }\n } else {\n message.error(res.message || '上传失败')\n onError(new Error(res.message))\n }\n } catch (error) {\n onError(error)\n }\n }\n\n const handleRemove = (fileToRemove: any) => {\n const newList = fileList.filter((f: any) => f.id !== fileToRemove.id)\n onChange?.(newList.length > 0 ? newList : undefined)\n }\n\n return (\n <Flex vertical gap={12} style={{ width: '100%' }}>\n {!multiple && fileList.length >= 1 ? null : (\n <Upload multiple={multiple} customRequest={customRequest} showUploadList={false}>\n <Button icon={<CloudUploadOutlined />}>从本地上传</Button>\n </Upload>\n )}\n\n {fileList.length > 0 && (\n <Flex vertical gap={8}>\n {fileList.map((file: any) => (\n <Flex\n key={file.id || file.uid}\n align=\"center\"\n justify=\"space-between\"\n style={{\n padding: '8px 12px',\n backgroundColor: token.colorFillAlter,\n borderRadius: token.borderRadiusLG || 8,\n border: `1px solid ${token.colorBorderSecondary}`\n }}\n >\n <Flex align=\"center\" gap={12} style={{ overflow: 'hidden', flex: 1 }}>\n <div\n style={{\n width: 40,\n height: 40,\n backgroundColor: '#000',\n borderRadius: token.borderRadiusSM || 4,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0\n }}\n >\n {getFileIcon(file.extension || getFileSuffixName(file.name), 20)}\n </div>\n <div style={{ overflow: 'hidden', display: 'flex', flexDirection: 'column', flex: 1 }}>\n <Text ellipsis style={{ width: '100%', fontSize: 14, fontWeight: 500 }}>\n {file.name}\n </Text>\n <Text type=\"secondary\" style={{ fontSize: 12 }}>\n {(file.extension || getFileSuffixName(file.name)).toUpperCase()} • {formatFileSize(file.size)}\n </Text>\n </div>\n </Flex>\n <Button type=\"text\" icon={<DeleteOutlined />} onClick={() => handleRemove(file)} style={{ color: token.colorTextSecondary }} />\n </Flex>\n ))}\n </Flex>\n )}\n </Flex>\n )\n}\n\nconst FormMonacoEditor = ({ value, onChange }: { value?: string; onChange?: (value: string) => void }) => {\n const { token } = theme.useToken()\n return (\n <div style={{ backgroundColor: token.colorFillAlter, padding: 8, borderRadius: token.borderRadius }}>\n <MonacoEditor language=\"json\" placeholder=\"请输入值...\" height={80} value={value} onChange={onChange} />\n </div>\n )\n}\n\nconst UserInputPanel = () => {\n const chatStore = useChatStore()\n const agentState = useSnapshot(chatStore.agent)\n const [form] = Form.useForm()\n const [activeKey, setActiveKey] = useState<string[]>(['1'])\n\n const inputs = useMemo(() => {\n if (agentState.agentInfo.userInput?.length > 0) {\n return agentState.agentInfo.userInput\n }\n }, [agentState.agentInfo.userInput])\n\n useEffect(() => {\n if (inputs.length > 0) {\n const initialValues = inputs.reduce((acc: any, cur: Variable) => {\n let value: any = cur.value\n\n acc[cur.name] = value\n return acc\n }, {})\n form.setFieldsValue(initialValues)\n }\n }, [inputs, form])\n\n const handleValuesChange = (changedValues: any) => {\n if (agentState.agentInfo.userInput?.length > 0) {\n const newInput = agentState.agentInfo.userInput.map((v: any) => {\n if (v.name in changedValues) {\n const newValue = changedValues[v.name]\n return { ...v, value: newValue }\n }\n return v\n })\n chatStore.setConversationUserInput(newInput as Variable[])\n return\n }\n }\n\n const handleStartChat = () => {\n form\n .validateFields()\n .then(() => {\n setActiveKey([])\n })\n .catch(() => {\n message.error('请检查输入参数')\n })\n }\n\n const renderFormItem = (item: Variable) => {\n const itemStyle = { marginBottom: 0 }\n const commonProps = {\n label: item.name,\n name: item.name,\n style: itemStyle,\n rules: item.rules?.map((r) => {\n const valStr = String(r.value || '')\n if (r.type === 'required') return { required: true, message: r.message }\n if (r.type === 'email') return { type: 'email', message: r.message }\n if (r.type === 'pattern') return { pattern: new RegExp(valStr), message: r.message }\n if (r.type === 'max' || r.type === 'min') {\n return {\n validator: (_: any, val: any) => {\n if (val === undefined || val === null || val === '') return Promise.resolve()\n const numVal = Number(val)\n if (isNaN(numVal)) return Promise.resolve()\n if (r.type === 'max' && numVal > Number(valStr)) return Promise.reject(new Error(r.message))\n if (r.type === 'min' && numVal < Number(valStr)) return Promise.reject(new Error(r.message))\n return Promise.resolve()\n }\n }\n }\n if (r.type === 'length') {\n const [min, max] = valStr.split(',').map((v: string) => (v ? Number(v) : undefined))\n return {\n validator: (_: any, val: any) => {\n if (val === undefined || val === null || val === '') return Promise.resolve()\n const strVal = String(val)\n if (min !== undefined && strVal.length < min) return Promise.reject(new Error(r.message))\n if (max !== undefined && strVal.length > max) return Promise.reject(new Error(r.message))\n return Promise.resolve()\n }\n }\n }\n if (r.type === 'size') {\n const [min, max] = valStr.split(',').map((v: string) => (v ? Number(v) : undefined))\n return {\n validator: (_: any, val: any) => {\n if (val === undefined || val === null || val === '') return Promise.resolve()\n let len = 0\n if (Array.isArray(val)) {\n len = val.length\n } else if (typeof val === 'string') {\n try {\n const parsed = JSON.parse(val)\n if (Array.isArray(parsed)) len = parsed.length\n else return Promise.resolve()\n } catch (e) {\n return Promise.resolve()\n }\n } else {\n return Promise.resolve()\n }\n if (min !== undefined && len < min) return Promise.reject(new Error(r.message))\n if (max !== undefined && len > max) return Promise.reject(new Error(r.message))\n return Promise.resolve()\n }\n }\n }\n if (r.type === 'enum') {\n const options = valStr.split(',').map((s: string) => s.trim())\n return {\n validator: (_: any, val: any) => {\n if (val === undefined || val === null || val === '') return Promise.resolve()\n if (options.includes(String(val))) return Promise.resolve()\n return Promise.reject(new Error(r.message))\n }\n }\n }\n return {}\n }) as any\n }\n\n if (['STRING', 'LONG'].includes(item.type)) {\n return (\n <Form.Item {...commonProps}>\n <Input placeholder=\"请输入值\" />\n </Form.Item>\n )\n }\n\n if (['NUMBER'].includes(item.type)) {\n return (\n <Form.Item {...commonProps}>\n <InputNumber style={{ width: '100%' }} placeholder=\"请输入数值\" />\n </Form.Item>\n )\n }\n\n if (item.type === 'BOOLEAN') {\n return (\n <Form.Item style={itemStyle} name={item.name} valuePropName=\"checked\">\n <Flex justify=\"space-between\" align=\"center\">\n <span>{item.name}</span>\n <Switch size=\"small\" />\n </Flex>\n </Form.Item>\n )\n }\n\n if (item.type === 'FILE') {\n return (\n <Form.Item {...commonProps}>\n <FormFileUpload multiple={false} />\n </Form.Item>\n )\n }\n\n if (item.type === 'ARRAY_FILE') {\n return (\n <Form.Item {...commonProps}>\n <FormFileUpload multiple={true} />\n </Form.Item>\n )\n }\n\n if (['OBJECT', 'ARRAY', 'ARRAY_STRING', 'ARRAY_NUMBER', 'ARRAY_DECIMAL', 'ARRAY_BOOLEAN', 'ARRAY_OBJECT'].includes(item.type)) {\n return (\n <Form.Item {...commonProps}>\n <FormMonacoEditor />\n </Form.Item>\n )\n }\n\n return (\n <Form.Item {...commonProps}>\n <Input placeholder=\"请输入值\" />\n </Form.Item>\n )\n }\n\n const genExtra = () => {\n if (activeKey.includes('1')) return null\n return (\n <Button\n type=\"text\"\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation()\n setActiveKey(['1'])\n }}\n >\n 编辑\n </Button>\n )\n }\n\n const items = [\n {\n key: '1',\n label: '参数设置',\n extra: genExtra(),\n children: (\n <>\n <Form form={form} layout=\"vertical\" onValuesChange={handleValuesChange} style={{ maxHeight: 500, overflow: 'auto', paddingRight: 16 }}>\n {inputs.length > 0 ? (\n <Flex vertical gap={12}>\n {inputs.map((item: Variable) => (\n <React.Fragment key={item.name}>{renderFormItem(item)}</React.Fragment>\n ))}\n </Flex>\n ) : (\n <div style={{ padding: '10px', color: '#999', textAlign: 'center' }}>暂无用户输入字段</div>\n )}\n </Form>\n <Flex align=\"center\" justify=\"center\" className=\"m-t-16\">\n <Button type=\"primary\" onClick={handleStartChat}>\n 开始会话\n </Button>\n </Flex>\n </>\n )\n }\n ]\n\n return (\n <div className={styles.userInputCollapse}>\n <Collapse\n activeKey={activeKey}\n onChange={(keys) => {\n const newKeys = typeof keys === 'string' ? [keys] : (keys as string[])\n setActiveKey(newKeys)\n }}\n items={items}\n className=\"m-16\"\n styles={{\n body: {\n paddingRight: 0,\n paddingBottom: 10\n }\n }}\n />\n </div>\n )\n}\n\nexport default UserInputPanel\n",".bodyWidth {\n width: 100%;\n height: 100%;\n}\n.inputContainer {\n max-width: 1000px;\n min-width: 320px;\n width: calc(100% - 24px);\n}\n.disclaimerNotice {\n font-size: 12px;\n text-align: center;\n color: #bfbfbf;\n}\n.previewHeader {\n display: flex;\n padding: 8px 20px;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);\n align-items: center;\n justify-content: space-between;\n}\n.previewHeader .previewHeaderTitle {\n font-size: 16px;\n font-weight: bold;\n}\n.previewHeader .actionIcon {\n font-size: 16px;\n cursor: pointer;\n color: var(--ant-color-text-tertiary);\n transition: transform 0.3s ease;\n}\n.previewHeader .actionIcon:hover {\n color: var(--ant-color-text);\n}\n","import { RenderWrapper, shouldRender } from '@zero-library/common'\nimport { Flex } from 'antd'\nimport classNames from 'classnames'\nimport { forwardRef, memo, useImperativeHandle, useRef } from 'react'\nimport { useSnapshot } from 'valtio'\nimport type { ChatSenderHandle } from '../../../components/ChatSender'\nimport { useChatStore } from '../../../stores/Context'\nimport { ChatLayout } from '../../../types/'\nimport BubbleListItems from '../../common/BubbleListItems'\nimport ChatHeader from '../../common/ChatHeader'\nimport ChatSender from '../../common/ChatSender'\nimport ChatSenderHeader from '../../common/ChatSenderHeader'\nimport UserInputPanel from '../../common/UserInputPanel'\nimport styles from './styles.module.less'\n\nconst ChatMainPanel = memo(\n forwardRef<ChatSenderHandle>((_props, ref) => {\n const chatStore = useChatStore()\n const senderRef = useRef<ChatSenderHandle | null>(null)\n\n useImperativeHandle(\n ref,\n () => ({\n focus: (options) => {\n senderRef.current?.focus(options)\n }\n }),\n []\n )\n\n /** 配置状态的快照 */\n const configState = useSnapshot(chatStore.config)\n /** 智能体状态的快照 */\n const agentState = useSnapshot(chatStore.agent)\n\n return (\n <Flex vertical className={classNames('height-full')}>\n {/** 聊天区域头部 */}\n <RenderWrapper control={configState.layout.chatHeader} DefaultComponent={ChatHeader} />\n\n <Flex align=\"center\" vertical gap={24} className={classNames('height-full', styles.bodyWidth)}>\n {/** 消息列表上方区域 */}\n {shouldRender(agentState.agentInfo.userInput && agentState.agentInfo.userInput.length > 0) && (\n <RenderWrapper control={configState.layout.userInput} DefaultComponent={UserInputPanel} />\n )}\n\n {/** 消息列表区域 */}\n {shouldRender(configState.layout.messageList) && (\n <div className=\"full-scroll\" style={{ width: '100%' }}>\n <RenderWrapper control={configState.layout.messageList} DefaultComponent={BubbleListItems} />\n </div>\n )}\n\n {/** 输入框上方头部 */}\n <RenderWrapper control={configState.layout.senderHeader as ChatLayout['senderHeader']} DefaultComponent={<ChatSenderHeader />} />\n\n <Flex className={styles.inputContainer} vertical gap={8}>\n {/** 输入框组件 */}\n <RenderWrapper ref={senderRef} control={configState.layout.sender} DefaultComponent={ChatSender} />\n {/** 免责声明 */}\n <RenderWrapper\n control={configState.layout.disclaimerNotice}\n DefaultComponent={<div className={styles.disclaimerNotice}>内容由AI生成,仅供参考,请仔细甄别</div>}\n />\n\n {/** 输入框底部区域 */}\n <RenderWrapper control={configState.layout.senderFooter} />\n </Flex>\n </Flex>\n </Flex>\n )\n })\n)\n\nexport default ChatMainPanel\n","import { CloseOutlined, DownloadOutlined } from '@ant-design/icons'\nimport { downloadFile, LuyaFilePreview, MarkdownEditor } from '@zero-library/common'\nimport { Button, Flex, Tag } from 'antd'\nimport classNames from 'classnames'\nimport { memo, useMemo } from 'react'\nimport { useChatStore } from '../../../stores/Context'\nimport type { FileTextType, FileUrlType } from '../../../types'\nimport styles from './styles.module.less'\n\nexport interface ChatPreviewPanelProps {\n file: FileUrlType | FileTextType\n}\n\nconst ChatPreviewPanel = memo(({ file }: ChatPreviewPanelProps) => {\n const chatStore = useChatStore()\n\n const preview = useMemo(() => {\n const urlFile = file as FileUrlType\n if (urlFile.fileUrl) {\n return {\n ...file,\n fileUrl: urlFile.fileUrl + '&isPreview=true'\n }\n }\n return file\n }, [file])\n\n return (\n <>\n {/** 文件URL预览 */}\n {(file as FileUrlType).fileUrl && (\n <Flex vertical className=\"height-full\">\n <div className={styles.previewHeader}>\n <div className={classNames(styles.previewHeaderTitle, 'text-ellipsis')} title={file.fileName}>\n {file.fileName}\n </div>\n <Flex gap={8} justify=\"center\" align=\"center\">\n <Button\n type=\"text\"\n icon={<DownloadOutlined />}\n className={styles.actionIcon}\n onClick={() => downloadFile((file as FileUrlType).fileUrl, file.fileName)}\n />\n <Button type=\"text\" icon={<CloseOutlined />} className={styles.actionIcon} onClick={() => chatStore.setPreview()} />\n </Flex>\n </div>\n <div className=\"full-scroll\">\n <LuyaFilePreview {...(preview as FileUrlType)} />\n </div>\n </Flex>\n )}\n\n {/** 文本内容预览 */}\n {(file as FileTextType).content && (\n <MarkdownEditor\n value={(file as FileTextType).content}\n floatToolbar={[]}\n onQuote={(text) => {\n chatStore.setReferences({\n type: 2,\n content: {\n name: text\n },\n params: {\n citation: text\n }\n })\n }}\n // onDownloadFile={(content, type) => configState.services.request.fileCreate(content, configState.preview.file.fileName, type)}\n extraNav={\n <>\n <Tag variant=\"filled\" color=\"default\" className=\"cursor-pointer\" onClick={() => chatStore.setPreview()}>\n <CloseOutlined />\n </Tag>\n </>\n }\n />\n )}\n </>\n )\n})\n\nexport default ChatPreviewPanel\n",".chatLayout {\n background-color: transparent;\n height: 100%;\n width: 100%;\n}\n.animatedSplitter :global(.ant-splitter-panel) {\n transition: all 0.3s cubic-bezier(0.2, 0, 0, 1) !important;\n}\n.animatedSplitter :global(.ant-splitter-bar) {\n transition: all 0.3s cubic-bezier(0.2, 0, 0, 1) !important;\n}\n.hideSplitterBar :global(.ant-splitter-bar) {\n display: none !important;\n}\n","import { XProvider } from '@ant-design/x-v2'\nimport { RenderWrapper, shouldRender, useDeepEffect, useWebSocket } from '@zero-library/common'\nimport { Flex, Spin, Splitter } from 'antd'\nimport classNames from 'classnames'\nimport { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react'\nimport { useSnapshot } from 'valtio'\nimport { ChatSenderHandle } from '../../components/ChatSender'\nimport { createChatStore } from '../../stores'\nimport { ChatProvider } from '../../stores/Context'\nimport { ChatHandle, ChatLayout, ChatProps, FileTextType, FileUrlType } from '../../types'\nimport ChatHeader from '../common/ChatHeader'\nimport ConversationListPanel from '../common/ConversationListPanel'\nimport { ChatMainPanel, ChatPreviewPanel } from './components'\nimport styles from './index.module.less'\n\nexport default forwardRef<ChatHandle, ChatProps>(({ theme, params, hooks, layout, config, services }, _ref) => {\n /** 创建聊天状态管理器实例 */\n const chatStore = useMemo(() => createChatStore(), [])\n /** 输入框组件的引用 */\n const senderRef = useRef<ChatSenderHandle | null>(null)\n useImperativeHandle(\n _ref,\n () => ({\n sendMessage: chatStore.sendMessage,\n setConversationSpec: chatStore.setConversationSpec,\n switchConversation: chatStore.switchConversation,\n createConversation: chatStore.createConversation,\n setReferences: chatStore.setReferences,\n setMessage: chatStore.setContent,\n setMessageParams: chatStore.setContentParams,\n setFiles: chatStore.setFileList,\n setServices: chatStore.setServices,\n setParams: chatStore.setParams,\n senderFocus: (options) => {\n senderRef.current?.focus(options)\n }\n }),\n []\n )\n\n /** 配置状态的快照 */\n const configState = useSnapshot(chatStore.config)\n /** 智能体状态的快照 */\n const agentState = useSnapshot(chatStore.agent)\n\n const containerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n chatStore.setHooks(hooks)\n }, [hooks])\n\n useEffect(() => {\n chatStore.setLayout(layout)\n }, [layout])\n\n useEffect(() => {\n chatStore.setParams(params)\n }, [params])\n\n useDeepEffect(() => {\n chatStore.setServices(services)\n }, [services])\n\n // useDeepEffect(() => {\n // if (agentState.agentInfo.id && isObject(config.agent?.spec)) {\n // chatStore.setAgent({ ...agentState.agentInfo, spec: config.agent.spec || {} } as AgentInfo)\n // }\n // }, [agentState.agentInfo.id, config.agent?.spec])\n\n // useDeepEffect(() => {\n // if (agentState.agentInfo.id && isObject(config.agent?.config)) {\n // chatStore.setAgent({ ...agentState.agentInfo, config: config.agent.config || {} } as AgentInfo)\n // }\n // }, [agentState.agentInfo.id, config.agent?.config])\n\n // useDeepEffect(() => {\n // if (agentState.agentInfo.id) {\n // chatStore.setAgent({ ...agentState.agentInfo, userInput: config.agent.userInput || [] } as AgentInfo)\n // }\n // }, [agentState.agentInfo.id, config.agent?.userInput])\n\n // useDeepEffect(() => {\n // if (config?.agent?.id) {\n // chatStore.getAgentInfo(config.agent.id)\n // }\n // }, [config.agent?.id])\n\n useDeepEffect(() => {\n if (config.agent) {\n chatStore.setAgent(config.agent)\n }\n }, [config.agent])\n\n useDeepEffect(() => {\n if (agentState.agentInfo.id) {\n chatStore.initConversation(config)\n } else if (config.conversationId) {\n chatStore.switchConversation(config.conversationId)\n }\n }, [agentState.agentInfo.id, config.conversationId])\n\n const hasPreView = useMemo(() => {\n return (\n shouldRender(configState.layout.preview as ChatLayout['preview']) &&\n (!!(configState.preview.file as FileUrlType).fileUrl || !!(configState.preview.file as FileTextType).content)\n )\n }, [configState.layout.preview, configState.preview.file])\n\n /** 分割面板尺寸状态 */\n const [sizes, setSizes] = useState([0, '100%'])\n /** 设置分割面板尺寸 */\n const setSplitterSizes = (sizes: (number | string)[]) => {\n setSizes(sizes)\n }\n useEffect(() => {\n if (hasPreView) {\n setSplitterSizes(['50%', '50%'])\n } else {\n setSplitterSizes([0, '100%'])\n }\n }, [hasPreView])\n\n /** 主 WebSocket 连接,用于接收实时消息 */\n useWebSocket({\n url: configState.services.websocketUrls?.[0],\n onMessage: (message) => chatStore.acceptMessage(message.payload),\n clientHeartbeat: false,\n reconnectInterval: 10000\n })\n /** 备用 WebSocket 连接,提供一体机saas可用性 */\n useWebSocket({\n url: configState.services.websocketUrls?.[1],\n onMessage: (message) => chatStore.acceptMessage(message.payload),\n clientHeartbeat: false,\n reconnectInterval: 10000\n })\n useEffect(() => {\n hooks?.onBeforeInit?.()\n }, [])\n\n return (\n <XProvider theme={{ cssVar: {}, ...theme }}>\n <ChatProvider store={chatStore}>\n <Spin spinning={configState.loading} classNames={{ root: 'full-spin' }}>\n <Flex vertical className={classNames(styles.chatLayout, 'zero-chat-layout', 'height-full')}>\n {/** 全局头部区域 */}\n <RenderWrapper control={configState.layout.globalHeader} DefaultComponent={ChatHeader} />\n\n <Flex ref={containerRef} className=\"full-scroll\">\n {/** 左侧面板区域 */}\n <RenderWrapper control={configState.layout.leftPanel} />\n\n {/** 会话列表面板 */}\n {<RenderWrapper control={configState.layout.conversationList} DefaultComponent={ConversationListPanel} />}\n\n <Splitter className={classNames('flex-1', styles.animatedSplitter, { [styles.hideSplitterBar]: !hasPreView })}>\n {/** 消息列表面板 */}\n <Splitter.Panel collapsible={false} max={800} min={400} size={sizes[1]}>\n <ChatMainPanel ref={senderRef} />\n </Splitter.Panel>\n {/** 预览面板 */}\n <Splitter.Panel collapsible={false} min={600} size={sizes[0]}>\n <ChatPreviewPanel file={configState.preview.file as FileUrlType} />\n </Splitter.Panel>\n </Splitter>\n </Flex>\n </Flex>\n </Spin>\n </ChatProvider>\n </XProvider>\n )\n})\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/i18n/constants.ts","../src/i18n/en-US.ts","../src/i18n/ja-JP.ts","../src/i18n/zh-CN.ts","../src/stores/Context.ts","../src/components/styles.module.less","../src/components/Attachments.tsx","../src/components/ChatInput/index.module.less","../src/core/constants.ts","../src/core/session.ts","../src/core/utils.ts","../src/components/ChatInput/FilePickerMenu.tsx","../src/components/ChatInput/ResourcePickerMenu.tsx","../src/components/ChatInput/ResourceTag.tsx","../src/components/ChatInput/ResourceSelect.tsx","../src/components/ChatInput/index.tsx","../src/components/ChatSender.tsx","../src/services/index.ts","../src/stores/index.ts","../src/components/AuthImage/index.tsx","../src/assets/iconfont.js","../src/components/IconFont/index.ts","../src/ui/common/FeatureComponents/ConversationFavoritesBtn.tsx","../src/ui/common/FeatureComponents/ConversationShareBtn.tsx","../src/ui/common/FeatureComponents/CreateBtn.tsx","../src/ui/common/styles.module.less","../src/ui/common/ConversationList.tsx","../src/ui/common/FeatureComponents/style.module.less","../src/ui/common/FeatureComponents/HistoryBtn.tsx","../src/ui/common/ChatHeader.tsx","../src/ui/common/ConversationListHeader.tsx","../src/ui/common/ConversationListPanel.tsx","../src/components/agentExecShared.ts","../src/components/CustomComponents/A2uiRuntime/x-card.ts","../src/components/CustomComponents/A2uiRuntime/components/artifacts/ArtifactCard.tsx","../src/components/CustomComponents/A2uiRuntime/components/artifacts/chart-utils.tsx","../src/components/CustomComponents/A2uiRuntime/components/artifacts/export-utils.ts","../src/components/CustomComponents/A2uiRuntime/components/artifacts/ChartViewer.tsx","../src/components/CustomComponents/XMarkdown/AgentNavigate.tsx","../src/components/CustomComponents/XMarkdown/styles.module.less","../src/components/CustomComponents/XMarkdown/AppCard.tsx","../src/components/CustomComponents/XMarkdown/Charts.tsx","../src/components/CustomComponents/XMarkdown/CodeHighlight.tsx","../src/components/CustomComponents/XMarkdown/FileEdit.tsx","../src/components/CustomComponents/XMarkdown/FileView.tsx","../src/components/CustomComponents/XMarkdown/components/DocDrawer.tsx","../src/components/CustomComponents/XMarkdown/IndexQuote.tsx","../src/components/CustomComponents/XMarkdown/MarkImg.tsx","../src/components/CustomComponents/XMarkdown/MdEdit.tsx","../src/components/CustomComponents/XMarkdown/PreviewLink.tsx","../src/components/CustomComponents/XMarkdown/Think.tsx","../src/components/XMarkdown/styles.module.less","../src/components/XMarkdown/index.tsx","../src/components/CustomComponents/A2uiRuntime/components/artifacts/ReportViewer.tsx","../src/components/CustomComponents/A2uiRuntime/components/artifacts/TableViewer.tsx","../src/components/CustomComponents/A2uiRuntime/components/A2uiComponents.tsx","../src/components/CustomComponents/A2uiRuntime/controller/extract.ts","../src/components/CustomComponents/A2uiRuntime/controller/meta.ts","../src/components/CustomComponents/A2uiRuntime/controller/action.ts","../src/components/CustomComponents/A2uiRuntime/controller/visibility.ts","../src/components/CustomComponents/A2uiRuntime/controller/wizard.ts","../src/components/CustomComponents/A2uiRuntime/controller/runtime.ts","../src/components/CustomComponents/A2uiRuntime/controller/index.ts","../src/components/CustomComponents/A2uiRuntime/renderer/context.ts","../src/components/CustomComponents/A2uiRuntime/renderer/useA2uiRuntimeView.ts","../src/components/CustomComponents/A2uiRuntime/renderer/A2uiMessageCards.tsx","../src/components/CustomComponents/A2uiRuntime/renderer/protocol.ts","../src/components/CustomComponents/A2uiRuntime/renderer/A2uiPlan.tsx","../src/components/CustomComponents/A2uiRuntime/renderer/A2uiRuntimeProvider.tsx","../src/components/CustomComponents/A2uiRuntime/renderer/A2uiRenderer.tsx","../src/components/CustomComponents/MessageNode/FilesNode.tsx","../src/components/CustomComponents/MessageNode/style.module.less","../src/components/CustomComponents/MessageNode/QuoteMsgNode.tsx","../src/components/CustomComponents/MessageNode/RunStartedNode.tsx","../src/components/CustomComponents/MessageNode/TextNode.tsx","../src/components/CustomComponents/ToolRenders/index.module.less","../src/components/CustomComponents/ToolRenders/default-render.tsx","../src/components/CustomComponents/ToolRenders/todo-write-render.tsx","../src/components/CustomComponents/ToolRenders/index.tsx","../src/components/CustomComponents/ToolRenders/tool-call-item.tsx","../src/components/agentExecList.module.less","../src/components/agentExecRow.tsx","../src/components/agentExecList.tsx","../src/components/agentExecSequence.module.less","../src/components/agentExecSequence.tsx","../src/components/MessageRender.tsx","../src/ui/common/WelcomeItem.tsx","../src/ui/common/BubbleListItems.tsx","../src/ui/common/FeatureComponents/ResourceSelectorModal.tsx","../src/ui/common/FeatureComponents/KnowledgeBtn.tsx","../src/ui/common/FeatureComponents/ModelSelect.tsx","../src/ui/common/FeatureComponents/ReasonBtn.tsx","../src/ui/common/FeatureComponents/SkillBtn.tsx","../src/ui/common/ChatSender.tsx","../src/ui/common/ChatSenderHeader.tsx","../src/components/MonacoEditor/index.tsx","../src/ui/common/UserInputPanel.tsx","../src/ui/layouts/components/execution-trace.module.less","../src/ui/layouts/components/ExecutionTracePanel.tsx","../src/ui/layouts/components/styles.module.less","../src/ui/layouts/components/ChatMainPanel.tsx","../src/ui/layouts/components/ChatPreviewPanel.tsx","../src/ui/layouts/components/ChatSubAgentPanel.tsx","../src/ui/layouts/index.module.less","../src/ui/layouts/index.tsx","../src/index.ts"],"names":["createContext","React","useContext","chatAttachments","chatSender","bubble","forwardRef","t","useTranslation","message","App","useSnapshot","useRef","useRefState","useEffect","useDebounce","getFileSuffixName","isNumber","isObject","isNullOrUnDef","useImperativeHandle","useMemo","jsx","Attachments","CloudUploadOutlined","jsxs","promptEditorInputContainer","promptEditorContent","promptEditorPlaceholder","resourceSelect","fileMenu","fileMenuGroup","fileMenuGroupTitle","fileMenuEmpty","fileMenuItem","fileMenuItemActive","fileIcon","fileName","resourceTag","WorkspaceTypeEnum","createTokenManager","emit","dayjs","isArray","isDef","isNull","buildUrlParams","getWebSocketUrl","FileImageOutlined","FilePdfOutlined","FileWordOutlined","FileExcelOutlined","FilePptOutlined","FileZipOutlined","FileTextOutlined","FileUnknownOutlined","useState","useLayoutEffect","Tag","useLexicalComposerContext","$getNodeByKey","DecoratorNode","MenuOption","mergeRegister","FOCUS_COMMAND","COMMAND_PRIORITY_LOW","BLUR_COMMAND","useCallback","Fragment","LexicalTypeaheadMenuPlugin","ReactDOM","value","$createTextNode","$getRoot","$createParagraphNode","React4","LexicalComposer","RichTextPlugin","ContentEditable","LexicalErrorBoundary","HistoryPlugin","OnChangePlugin","useSyncInput","Badge","Button","PaperClipOutlined","Sender","ref","Flex","proxy","getLang","createRequest","HttpStatus","baseURL","isString","shouldRender","deepMerge","transforms","antdMessage","config","transform","item","subscribe","feedback","canProceed","deepCopy","Avatar","a","c","createFromIconfontCN","StarFilled","StarOutlined","copyText","ShareAltOutlined","PlusOutlined","styles_module_default","chatHeader","chatHeaderContent","chatTitle","defaultLogo","chatHeaderBtnGroup","conversationListPanel","createConversationButton","conversations","conversationEmpty","chatWelcomeWrap","chatWelcome","promptItem","bubbleList","userInputCollapse","logoArea","logoContainer","staticHalo","logoHoverWrapper","logoImage","greetingTitle","gradientText","greetingSubtitle","senderReferenceHeaderTitle","senderReferenceHeaderContent","conversationLabel","conversationLabelTitle","conversationStatusDot","conversationStatusRunning","conversationStatusUnread","InfiniteScroll","console","Spin","RedoOutlined","Conversations","Empty","DeleteOutlined","Popconfirm","Tabs","popover","resourceBtn","divider","count","resourceBtnActive","customModal","layout","sider","categoryName","siderContent","categoryItem","categoryActive","roundCheckbox","content","searchInput","selectedCount","tagsArea","tagContainer","tag","expandBtnWrapper","expandBtn","tagsExpanded","listArea","listInner","listItem","listItemSelected","itemIconWrapper","itemInfo","itemDesc","footer","titleContainer","open","Popover","CommentOutlined","classNames","RenderWrapper","Space","CloseOutlined","Typography","rawXCard","AntCard","AntTag","rawMinY","rawMaxY","minY","maxY","spanY","plotW","plotH","scaleX","scaleY","y0","AntButton","memo","appCard","fileView","fileEdit","fileEditHeader","fileEditContent","mdEdit","chart","chartSkeleton","chartSkeletonIcon","Skeleton","DotChartOutlined","LazyComponent","Alert","Mermaid","CodeHighlighter","FileIcon","PlayCircleOutlined","CopyOutlined","Drawer","XMarkdown","isExternal","Content","Image","MarkdownEditor","Think","xMarkdownStyle","Latex","safeParseJson","AntTable","AText","Text","Input","valuePath","AntSelect","AntSwitch","AntDivider","AntProgress","extractPathFromRef","extractSurfaceId","ReportViewer","ChartViewer","TableViewer","ArtifactCard","FileCard","style_module_default","runStartedNode","dot","Bubble","Tooltip","TextNode","index_module_default","toolCallContent","sectionLabel","plainTextContainer","markdownContainer","summaryText","metaGrid","metaItem","metaLabel","metaValue","linkList","linkItem","linkTitle","linkIndex","linkSummary","linkUrl","statusBlock","status_info","status_success","status_warning","status_error","errorDisplay","sectionBlock","compactSectionBlock","todoList","todoItem","statusIconWrapper","todoContent","todoText","completed","emptyText","theme","CheckCircleOutlined","ClockCircleOutlined","List","hasContent","wrap","summary","summaryIcon","list","execRow","rowLine","rowIcon","rowLabel","rowLabelError","rowDetail","rowDetailExpandable","rowDetailAction","rowBody","ToolOutlined","LoadingOutlined","BulbOutlined","CloseCircleOutlined","ScheduleOutlined","CheckCircleFilled","Collapse","seq","quoteMsg","isEmptyObj","Welcome","Prompts","isBoolean","UserAvatar","chatRecords","htmlToMarkdown","LikeOutlined","DislikeOutlined","Layout","Title","Modal","Checkbox","SearchOutlined","UpOutlined","DownOutlined","Divider","model","Select","ChatSender_default","markdownToText","isFunction","EnterOutlined","Upload","Form","InputNumber","Switch","tracePanel","tracePanelHeader","tracePanelTitle","tracePanelCount","traceBody","traceMain","traceDetail","traceDetailHeader","traceDetailTitle","traceDetailTime","detailEmpty","executionSection","executionHeader","executionHeaderMain","executionHeaderTitle","executionStatus","executionHeaderMeta","executionMeta","userMessage","userMessageHeader","userMessageLabel","userMessageContent","turnList","turnSection","turnHeader","turnHeaderDot","turnTitle","turnMeta","turnHeaderMuted","turnHeaderDotMuted","eventRow","eventRowSelected","eventLane","lane_input","lane_model","lane_tools","lane_system","eventIcon","eventRole","eventType","eventTypeError","eventPreview","eventTime","detailBody","detailSectionTitle","detailMeta","toolCard","toolCardName","toolCardDesc","msgCard","msgTag","msgContent","jsonBlock","empty","LoginOutlined","FlagOutlined","CloseCircleFilled","SettingOutlined","CloudSyncOutlined","ForwardOutlined","MessageOutlined","bodyWidth","execModeBar","mainTabs","inputContainer","disclaimerNotice","previewHeader","previewHeaderTitle","actionIcon","subAgentHeader","subAgentTitle","subAgentMessages","Segmented","DownloadOutlined","downloadFile","LuyaFilePreview","chatLayout","animatedSplitter","hideSplitterBar","rightTabs","useDeepEffect","sizes","useWebSocket","XProvider","Splitter","addBundledResource"],"mappings":"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","file":"index.cjs.js","sourcesContent":["/**\n * chat-copilot 包命名空间常量\n *\n * 命名空间在每个包内部是固定值,统一使用常量引用,避免散落字符串字面量。\n */\nexport const NS_CHAT_COPILOT = 'chat-copilot'\n","/**\n * chat-copilot 包英文翻译资源(namespace: chat-copilot)\n */\n\nexport const chatCopilotEnUS = {\n uploadFailed: 'Upload failed',\n valuePlaceholder: 'Enter value...',\n checkParams: 'Please check input parameters',\n inputPlaceholder: 'Enter value',\n numberPlaceholder: 'Enter number',\n paramSettings: 'Parameter Settings',\n all: 'All',\n selectSkill: 'Select Skill',\n selectKnowledge: 'Select Knowledge Base',\n searchSkill: 'Search skill name',\n searchKnowledge: 'Search knowledge base name',\n noDescription: 'No description',\n noMatch: 'No matching results',\n selectedCount: '{{count}} Selected',\n added: 'Added',\n collapse: 'Collapse',\n expand: 'Expand',\n history: 'History',\n create: 'New Conversation',\n share: 'Share',\n linkCopied: 'Link copied, ready to paste and share',\n unfavorite: 'Unfavorite',\n favorite: 'Favorite',\n delete: 'Delete',\n tipTitle: 'Notice',\n confirm: 'OK',\n cancel: 'Cancel',\n confirmUnfavorite: 'Are you sure you want to unfavorite this conversation?',\n unfavoriteTitle: 'Unfavorite',\n historyTab: 'History',\n historyEmpty: 'No conversations',\n favoritesTab: 'Favorites',\n favoritesEmpty: 'No favorite conversations',\n deepAnalysis: 'Deep Analysis',\n summaryAnalysis: 'Summary Analysis',\n headerClose: 'Close',\n deepThinking: 'Deep Thinking',\n skill: 'Skill',\n knowledge: 'Knowledge Base',\n supportedExtensions: 'Supported extensions: {{types}}',\n empty: 'No data',\n chatPlaceholder: 'What can I help you with today?',\n selectFile: 'Select File',\n selectPlaceholder: 'Please select...',\n unnamedReport: 'Untitled Report',\n unnamedChart: 'Untitled Chart',\n unnamedTable: 'Untitled Table',\n unnamedContent: 'Untitled Content',\n chart: 'Chart',\n exportPng: 'Export PNG',\n report: 'Report',\n exportMd: 'Export MD',\n table: 'Table',\n exportCsv: 'Export CSV',\n exportJson: 'Export JSON',\n boolYes: 'Yes',\n boolNo: 'No',\n formTitle: 'Form',\n stepIndicator: 'Step {{current}}/{{total}}',\n prevStep: 'Previous',\n nextStep: 'Next',\n submit: 'Submit',\n submitFailed: 'Submission failed, please try again later',\n questionCancelled: 'Question: Cancelled',\n questionAnswered: 'Question: Answered',\n questionDetails: 'Question: {{details}}',\n basicInfoSubmitted: 'Basic information submitted',\n paramsSubmitted: 'Parameter configuration submitted',\n backToBasic: 'Went back to edit basic information',\n backToParams: 'Went back to edit parameters',\n createConfirmed: 'Creation confirmed',\n actionSelected: 'Selected',\n actionSubmitted: 'Submitted',\n actionSubmittedNamed: 'Submitted action ({{name}})',\n quotedMessage: '[Quoted Message]:',\n answered: 'Answered',\n inputGenerating: 'Generating input...',\n inputParams: 'Input Parameters',\n outputResult: 'Output Result',\n subAgentRunning: 'Sub-agent running...',\n subAgentNested: 'Sub-agent content (nested level {{depth}}, collapsed)',\n noTasks: 'No tasks',\n clickHere: 'Click here',\n unsupportedChart: 'Unsupported chart',\n unsupportedChartDesc: 'Chart type \"{{type}}\" is not implemented yet. Please check the chart type.',\n previewEdit: 'Preview & Edit',\n copy: 'Copy',\n continueText: 'Continue',\n noVariables: 'No variables available',\n stopped: 'Stopped',\n greetingHello: 'Hello, I am',\n greetingSubtitle: 'What would you like to explore today?',\n disclaimer: 'Content is AI-generated, for reference only. Please verify carefully.',\n uploadFromLocal: 'Upload from local',\n edit: 'Edit',\n noUserInputFields: 'No user input fields',\n startConversation: 'Start Conversation',\n helloIam: 'Hello, I am {{name}}',\n newConversation: 'New Conversation',\n sendFailed: 'Send failed, please retry',\n previewNotSupported: 'Preview is not supported in this environment',\n operationBlocked: 'Operation blocked',\n deleteSuccess: 'Deleted successfully',\n favoriteSuccess: 'Added to favorites',\n unfavoriteSuccess: 'Removed from favorites',\n feedbackThanks: 'Thank you for your feedback'\n}\n","/**\n * chat-copilot パッケージ日本語翻訳リソース(namespace: chat-copilot)\n *\n * 純データ出口、side-effect を含まない。\n * ホストプロジェクトは I18nProvider の resources パラメータで注入します。\n */\n\nexport const chatCopilotJaJP = {\n // UserInputPanel\n uploadFailed: 'アップロードに失敗しました',\n valuePlaceholder: '値を入力...',\n checkParams: '入力パラメータをご確認ください',\n inputPlaceholder: '値を入力',\n numberPlaceholder: '数値を入力',\n paramSettings: 'パラメータ設定',\n // ResourceSelectorModal\n all: 'すべて',\n selectSkill: 'スキルを選択',\n selectKnowledge: 'ナレッジベースを選択',\n searchSkill: 'スキル名を検索',\n searchKnowledge: 'ナレッジベース名を検索',\n noDescription: '説明がありません',\n noMatch: '検索結果に一致するものがありません',\n selectedCount: '{{count}}件選択中',\n added: '追加済み',\n collapse: '折りたたむ',\n expand: '展開する',\n // HistoryBtn\n history: '会話履歴',\n // CreateBtn\n create: '新しい会話',\n // ConversationShareBtn\n share: '共有',\n linkCopied: 'リンクをコピーしました。そのまま貼り付けて共有できます',\n // ConversationFavoritesBtn\n unfavorite: 'お気に入りを解除',\n favorite: 'お気に入り',\n // ConversationList\n delete: '削除',\n tipTitle: 'ヒント',\n confirm: 'OK',\n cancel: 'キャンセル',\n confirmUnfavorite: 'この会話をお気に入りから削除しますか?',\n unfavoriteTitle: 'お気に入りを解除',\n historyTab: '会話履歴',\n historyEmpty: '会話履歴がありません',\n favoritesTab: 'お気に入り会話',\n favoritesEmpty: 'お気に入りの会話はありません',\n // ChatSender\n deepAnalysis: '詳細分析',\n summaryAnalysis: '概要分析',\n // ChatHeader\n headerClose: '閉じる',\n // ReasonBtn / SkillBtn / KnowledgeBtn\n deepThinking: '思考プロセス',\n skill: 'スキル',\n knowledge: 'ナレッジベース',\n // Attachments\n supportedExtensions: '対応拡張子:{{types}}',\n empty: 'データがありません',\n selectFile: 'ファイルを選択',\n unsupportedType: 'サポートされていないファイル形式:{{fileName}} ({{fileType}})',\n maxFileCountExceed: '【{{fileName}}】のタイプは最大{{max}}件までアップロードできます',\n maxFileSizeExceed: 'ファイルサイズは{{max}}MBを超えることはできません',\n waitUpload: 'すべてのファイルのアップロード完了までお待ちください',\n checkFailed: 'アップロードに失敗したファイルをご確認ください',\n dropTitle: 'ここにファイルをドロップ',\n uploadTitle: 'ファイルを送信',\n uploadDescription: 'クリックまたはドラッグ&ドロップでファイルをアップロード',\n // ChatInput\n chatPlaceholder: '今日は何をお手伝いしましょうか?',\n // A2UI ランタイム\n selectPlaceholder: '選択してください...',\n unnamedReport: '無題のレポート',\n unnamedChart: '無題のグラフ',\n unnamedTable: '無題のテーブル',\n unnamedContent: '無題のコンテンツ',\n chart: 'グラフ',\n exportPng: 'PNG を出力',\n report: 'レポート',\n exportMd: 'Markdown を出力',\n table: 'テーブル',\n exportCsv: 'CSV を出力',\n exportJson: 'JSON を出力',\n boolYes: 'はい',\n boolNo: 'いいえ',\n formTitle: 'フォーム',\n stepIndicator: 'ステップ {{current}}/{{total}}',\n prevStep: '前へ',\n nextStep: '次へ',\n submit: '送信',\n submitFailed: '送信に失敗しました。しばらくしてからもう一度お試しください',\n questionCancelled: 'Question: キャンセルされました',\n questionAnswered: 'Question: 回答済み',\n questionDetails: 'Question: {{details}}',\n basicInfoSubmitted: '基本情報を送信しました',\n paramsSubmitted: 'パラメータ設定を送信しました',\n backToBasic: '基本情報の編集に戻りました',\n backToParams: 'パラメータの編集に戻りました',\n createConfirmed: '作成を確認しました',\n actionSelected: '選択しました',\n actionSubmitted: '送信しました',\n actionSubmittedNamed: 'アクションを送信しました ({{name}})',\n quotedMessage: '【引用メッセージ】:',\n answered: '回答済み',\n // ツールレンダリング\n inputGenerating: '入力生成中',\n inputParams: '入力パラメータ',\n outputResult: '出力結果',\n subAgentRunning: 'サブエージェント実行中...',\n subAgentNested: 'サブエージェント実行内容(ネストレベル {{depth}}、折りたたみ済み)',\n noTasks: 'タスクがありません',\n clickHere: 'ここをクリック',\n unsupportedChart: 'サポートされていないチャート',\n unsupportedChartDesc: 'チャートタイプ \"{{type}}\" はまだ実装されていません。チャートタイプが正しいかご確認ください。',\n previewEdit: 'プレビュー&編集',\n copy: 'コピー',\n continueText: '続ける',\n // MonacoEditor\n noVariables: '利用できる変数がありません',\n // 会話時間グループ\n dateToday: '今日',\n dateLast7Days: '最近 7 日間',\n dateLast30Days: '最近 30 日間',\n dateLastHalfYear: '過去半年',\n dateEarlier: 'それ以前',\n // store 操作ヒント\n previewNotSupported: '現在の環境ではプレビューに対応していません',\n deleteSuccess: '削除しました',\n operationBlocked: '操作がブロックされました',\n favoriteSuccess: 'お気に入りに追加しました',\n unfavoriteSuccess: 'お気に入りを解除しました',\n feedbackThanks: 'フィードバックありがとうございます',\n sendFailed: '送信に失敗しました。もう一度お試しください',\n newConversationTitle: '新規会話',\n // レイアウト / メッセージ\n stopped: '停止しました',\n greetingHello: 'こんにちは、私は',\n greetingSubtitle: '今日は何を探検しましょうか?',\n disclaimer: 'この内容は AI が生成したものです。参考としてご利用ください。正確性をご確認のうえご利用ください',\n helloIam: 'こんにちは、私は{{name}}です',\n newConversation: '新しい会話',\n // UserInputPanel\n uploadFromLocal: 'ローカルからアップロード',\n edit: '編集',\n noUserInputFields: 'ユーザー入力フィールドがありません',\n startConversation: '会話を開始'\n}\n","/**\n * chat-copilot 包中文翻译资源(namespace: chat-copilot)\n *\n * 纯数据导出,不含 side-effect。\n * 宿主项目通过 I18nProvider 的 resources 参数注入。\n */\n\nexport const chatCopilotZhCN = {\n // UserInputPanel\n uploadFailed: '上传失败',\n valuePlaceholder: '请输入值...',\n checkParams: '请检查输入参数',\n inputPlaceholder: '请输入值',\n numberPlaceholder: '请输入数值',\n paramSettings: '参数设置',\n // ResourceSelectorModal\n all: '全部',\n selectSkill: '选择技能',\n selectKnowledge: '选择知识库',\n searchSkill: '搜索技能名称',\n searchKnowledge: '搜索知识库名称',\n noDescription: '暂无描述',\n noMatch: '暂无匹配的搜索结果',\n selectedCount: '已选 {{count}}',\n added: '已添加',\n collapse: '收起',\n expand: '展开',\n // HistoryBtn\n history: '历史会话',\n // CreateBtn\n create: '新建会话',\n // ConversationShareBtn\n share: '分享',\n linkCopied: '链接已复制,可直接粘贴分享',\n // ConversationFavoritesBtn\n unfavorite: '取消收藏',\n favorite: '收藏',\n // ConversationList\n delete: '删除',\n tipTitle: '提示',\n confirm: '确定',\n cancel: '取消',\n confirmUnfavorite: '确认取消收藏该会话吗?',\n unfavoriteTitle: '取消收藏',\n historyTab: '历史会话',\n historyEmpty: '暂无会话记录',\n favoritesTab: '收藏会话',\n favoritesEmpty: '暂无收藏会话',\n // ChatSender\n deepAnalysis: '深度解读',\n summaryAnalysis: '概要解读',\n // ChatHeader\n headerClose: '关闭',\n // ReasonBtn / SkillBtn / KnowledgeBtn\n deepThinking: '深度思考',\n skill: '技能',\n knowledge: '知识库',\n // Attachments\n supportedExtensions: '支持扩展名:{{types}}',\n empty: '暂无数据',\n selectFile: '选择文件',\n unsupportedType: '不支持的文件类型:{{fileName}} ({{fileType}})',\n maxFileCountExceed: '【{{fileName}}】所属类型最多只能上传 {{max}} 个文件',\n maxFileSizeExceed: '文件大小不能超过 {{max}} MB',\n waitUpload: '请等待所有文件上传完成',\n checkFailed: '请检查上传失败的文件',\n dropTitle: '将文件放到这里',\n uploadTitle: '提交文件',\n uploadDescription: '单击或拖动文件到此区域进行上传',\n // ChatInput\n chatPlaceholder: '今天帮你做些什么?',\n // A2UI 运行时\n selectPlaceholder: '请选择...',\n unnamedReport: '未命名报告',\n unnamedChart: '未命名图表',\n unnamedTable: '未命名表格',\n unnamedContent: '未命名内容',\n chart: '图表',\n exportPng: '导出PNG',\n report: '报告',\n exportMd: '导出MD',\n table: '表格',\n exportCsv: '导出CSV',\n exportJson: '导出JSON',\n boolYes: '是',\n boolNo: '否',\n formTitle: '表单',\n stepIndicator: '步骤 {{current}}/{{total}}',\n prevStep: '上一步',\n nextStep: '下一步',\n submit: '提交',\n submitFailed: '提交失败,请稍后重试',\n questionCancelled: 'Question: 已取消',\n questionAnswered: 'Question: 已回答',\n questionDetails: 'Question: {{details}}',\n basicInfoSubmitted: '已提交基础信息',\n paramsSubmitted: '已提交参数配置',\n backToBasic: '已返回修改基础信息',\n backToParams: '已返回修改参数',\n createConfirmed: '已确认创建',\n actionSelected: '已选择',\n actionSubmitted: '已提交',\n actionSubmittedNamed: '已提交动作 ({{name}})',\n quotedMessage: '【引用消息】:',\n answered: '已回答',\n // 工具渲染\n inputGenerating: '输入生成中',\n inputParams: '输入参数',\n outputResult: '返回结果',\n subAgentRunning: '子智能体执行中...',\n subAgentNested: '子智能体执行内容(嵌套层级 {{depth}},已折叠)',\n noTasks: '暂无任务',\n clickHere: '点击此处',\n unsupportedChart: '不支持的图表',\n unsupportedChartDesc: '当前图表类型 \"{{type}}\" 暂未实现,请检查图表类型是否正确。',\n previewEdit: '预览编辑',\n copy: '复制',\n continueText: '继续',\n // MonacoEditor\n noVariables: '暂无可用变量',\n // 会话时间分组\n dateToday: '今天',\n dateLast7Days: '最近 7 天',\n dateLast30Days: '最近 30 天',\n dateLastHalfYear: '最近半年',\n dateEarlier: '更早',\n // store 操作提示\n previewNotSupported: '当前环境不支持预览',\n deleteSuccess: '删除成功',\n operationBlocked: '操作被阻止',\n favoriteSuccess: '收藏成功',\n unfavoriteSuccess: '已取消收藏',\n feedbackThanks: '感谢您的反馈',\n sendFailed: '发送失败,请重试',\n newConversationTitle: '新会话',\n // 布局 / 消息\n stopped: '已停止',\n greetingHello: '你好,我是',\n greetingSubtitle: '今天想探索点什么?',\n disclaimer: '内容由AI生成,仅供参考,请仔细甄别',\n helloIam: '你好,我是{{name}}',\n newConversation: '新建会话',\n // UserInputPanel\n uploadFromLocal: '从本地上传',\n edit: '编辑',\n noUserInputFields: '暂无用户输入字段',\n startConversation: '开始会话'\n} as const\n","import React, { createContext, useContext } from 'react'\nimport type { ChatStoreType } from '../types'\n\n/**\n * 基于泛型创建专用的聊天上下文\n * 使用 Valtio 进行状态管理,提供 Provider 和 Hook\n */\nconst ChatContext = createContext<ChatStoreType | null>(null)\n\nexport function ChatProvider({ store, children }: { store: ChatStoreType; children?: React.ReactNode }) {\n return React.createElement(ChatContext.Provider, { value: store }, children)\n}\n\nexport function useChatStore() {\n const store = useContext(ChatContext)\n if (!store) {\n throw new Error('useChatStore must be used within ChatProvider')\n }\n return store\n}\n","@keyframes loading-line {\n from {\n background-position: 200% 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n.chatAttachments:global > .ant-attachment-list .ant-attachment-list-content {\n padding: 0 !important;\n}\n.chatAttachments:global > .ant-attachment-list .ant-attachment-list-card-status-uploading .ant-progress .ant-progress-text {\n display: none;\n}\n.chatAttachments:global > .ant-attachment-list .ant-attachment-list-card-status-uploading .ant-progress .ant-progress-circle {\n animation: spin 2s linear infinite;\n}\n.chatAttachments:global > .ant-attachment-list .ant-attachment-list-card-status-uploading .ant-attachment-list-card-content {\n gap: 4px;\n}\n.chatAttachments:global > .ant-attachment-list .ant-attachment-list-card-status-uploading .ant-attachment-list-card-content .ant-attachment-list-card-desc {\n width: 15px;\n height: 15px;\n border: 2px solid transparent;\n border-color: #1890ff;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n box-sizing: border-box;\n position: relative;\n clip-path: inset(0 0 30% 0);\n}\n.chatAttachments:global > .ant-attachment-list .ant-attachment-list-card-status-uploading .ant-attachment-list-card-content .ant-attachment-list-card-desc .ant-attachment-list-card-ellipsis-prefix {\n display: none;\n}\n.chatSender:global.ant-sender .ant-sender-input {\n scrollbar-width: thin;\n scrollbar-color: transparent transparent;\n}\n.chatSender:global.ant-sender .ant-sender-input::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n.chatSender:global.ant-sender .ant-sender-input::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0);\n border-radius: 4px;\n transition: background-color 0.3s ease 0.3s;\n}\n.chatSender:global.ant-sender .ant-sender-input::-webkit-scrollbar-track {\n background: transparent;\n}\n.chatSender:global.ant-sender .ant-sender-input:hover {\n scrollbar-color: rgba(0, 0, 0, 0.1) transparent;\n}\n.chatSender:global.ant-sender .ant-sender-input:hover::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0.1);\n transition-delay: 0s;\n}\n.chatSender:global.ant-sender .ant-sender-footer {\n padding: 6px;\n}\n.chatSender:global.ant-sender .ant-sender-header .ant-sender-header-content {\n padding: 0 !important;\n}\n.chatSender:global.ant-sender:focus-within {\n box-shadow: none;\n}\n@keyframes shimmer-bg {\n 0% {\n background-position: 200% 0;\n }\n 100% {\n background-position: -200% 0;\n }\n}\n.bubble {\n min-width: 0;\n max-width: 100%;\n}\n.bubble:global.ant-bubble-end {\n padding-inline-start: 0% !important;\n}\n","import { CloudUploadOutlined } from '@ant-design/icons'\nimport { Attachments } from '@ant-design/x-v2'\nimport { Attachment } from '@ant-design/x-v2/es/attachments'\nimport { getFileSuffixName, isNullOrUnDef, isNumber, isObject, useDebounce, useRefState, useTranslation } from '@zero-library/common'\nimport { App } from 'antd'\nimport { RcFile, UploadFile } from 'antd/lib/upload'\nimport { forwardRef, useEffect, useImperativeHandle, useMemo, useRef } from 'react'\nimport { useSnapshot } from 'valtio'\nimport { NS_CHAT_COPILOT } from '../i18n/constants'\nimport { useChatStore } from '../stores/Context'\nimport { FileUploadConfig, InputFile } from '../types'\nimport styles from './styles.module.less'\n/**\n * 附件组件属性接口\n */\nexport interface AttachmentsProps {\n /** 文件上传函数,接收 FormData 并返回上传结果 */\n fileUpload: (formData: FormData, signal?: AbortSignal) => Promise<R<InputFile[]>>\n /** 文件上传配置列表,定义允许的文件类型和大小限制 */\n fileUploadConfig?: FileUploadConfig\n /** 额外的上传参数,会附加到 FormData 中 */\n extraParams?: ObjectType<string | undefined>\n /** 当前文件列表 */\n fileList?: InputFile[]\n /** 文件列表变化回调函数 */\n onChange: (fileList: InputFile[]) => void\n}\n/**\n * 附件文件类型,继承自 Ant Design X 的 Attachment 类型\n */\ntype AttachedFile = Attachment & InputFile & { abortController?: AbortController }\n\n/**\n * 附件上传组件\n * 支持多文件上传、文件类型验证、文件大小限制等功能\n */\nexport default forwardRef(({ fileUpload, fileUploadConfig, fileList = [], onChange, extraParams }: AttachmentsProps, ref) => {\n const { t } = useTranslation(NS_CHAT_COPILOT)\n const { message } = App.useApp()\n const chatStore = useChatStore()\n const configState = useSnapshot(chatStore.config)\n const fileListRef = useRef<InputFile[]>([])\n const [attachedFiles, setAttachedFiles, getAttachedFiles] = useRefState<AttachedFile[]>([])\n // 初始化 fileList 映射为 Attachments 所需格式\n useEffect(() => {\n if (JSON.stringify(fileList) !== JSON.stringify(fileListRef.current)) {\n fileListRef.current = fileList\n const mapped: AttachedFile[] = fileList.map((file) => ({\n ...file,\n uid: file.id,\n url: file.url || file.id,\n status: 'done'\n }))\n setAttachedFiles(mapped)\n }\n }, [fileList])\n useEffect(() => {\n const files = attachedFiles\n .filter((file) => file.status === 'done')\n .map((file) => {\n const f = { ...file }\n delete f.status\n delete f.size\n return f as unknown as InputFile\n })\n fileListRef.current = files\n onChange(files)\n }, [attachedFiles])\n\n const onErrorTip = useDebounce((errorMsg: string) => {\n message.error(errorMsg)\n }, 300)\n\n /** 根据文件类型找到对应的 upload config */\n const findConfig = (file: RcFile): string => {\n return fileUploadConfig?.allowedTypes?.find((type) => type === getFileSuffixName(file.name)) || ''\n }\n\n const onBeforeUpload = (files: RcFile[]) => {\n // 多规则支持:逐个文件校验\n for (const file of files) {\n const cfg = findConfig(file)\n\n if (!cfg) {\n onErrorTip(t('unsupportedType', { fileName: file.name, fileType: file.type }))\n return Promise.reject(false)\n }\n\n // 校验数量\n if (isNumber(fileUploadConfig?.maxCount)) {\n const currentCount = attachedFiles.length\n\n if (currentCount + 1 > fileUploadConfig?.maxCount) {\n onErrorTip(t('maxFileCountExceed', { fileName: file.name, max: fileUploadConfig?.maxCount }))\n return Promise.reject(false)\n }\n }\n }\n }\n const onCustomRequest = async ({ file }: any) => {\n const cfg = findConfig(file)\n\n if (!cfg) {\n onErrorTip(t('unsupportedType', { fileName: file.name }))\n return\n }\n\n // 校验大小\n if (fileUploadConfig?.maxSize && file.size > fileUploadConfig?.maxSize * 1024 * 1024) {\n onErrorTip(t('maxFileSizeExceed', { max: fileUploadConfig?.maxSize }))\n return\n }\n\n const abortController = new AbortController()\n\n setAttachedFiles([\n ...getAttachedFiles(),\n {\n uid: file.uid,\n status: 'uploading',\n percent: 70,\n size: file.size,\n type: file.type,\n name: file.name,\n url: URL.createObjectURL(file),\n abortController\n } as AttachedFile\n ])\n try {\n const formData = new FormData()\n formData.append('file', file)\n if (isObject(extraParams)) {\n Object.keys(extraParams).forEach((key) => {\n if (isNullOrUnDef(extraParams[key])) return\n formData.append(key, extraParams[key])\n })\n }\n // 发送文件到后端\n const { data } = await fileUpload(formData, abortController.signal)\n\n const uploadedFile = data![0]\n let previewUrl = uploadedFile.id\n // 使用后端返回的 workspaceId 和 path 拼接预览 URL\n if (uploadedFile.workspaceId && uploadedFile.path) {\n previewUrl = chatStore.config.services.request.getPreviewUrl({\n path: uploadedFile.path,\n workspaceId: uploadedFile.workspaceId,\n workspaceType: uploadedFile.workspaceType\n })\n }\n\n setAttachedFiles(\n getAttachedFiles().map((f) => {\n if (f.uid === file.uid) {\n return { ...uploadedFile, uid: file.uid, url: previewUrl, status: 'done', size: f.size }\n } else {\n return f\n }\n })\n )\n } catch (error) {\n if (error?.name === 'CanceledError' || error?.message === 'canceled') {\n return\n }\n setAttachedFiles(\n getAttachedFiles().map((f) => {\n if (f.uid === file.uid) {\n return { ...f, status: 'error', description: t('uploadFailed') }\n } else {\n return f\n }\n })\n )\n }\n }\n const onRemove = (file: UploadFile<any>) => {\n // 中断上传请求\n const currentFile = getAttachedFiles().find((f) => f.uid === file.uid)\n if (currentFile?.abortController) {\n currentFile.abortController.abort()\n }\n // 删除文件\n setAttachedFiles(attachedFiles.filter((f) => f.uid !== file.uid))\n const filePath = (file as any).path\n configState.hooks?.onAfterRemoveFile?.(filePath)\n }\n\n useImperativeHandle(\n ref,\n () => ({\n validateFile: () => {\n const files = getAttachedFiles()\n const uploadingFiles = files.filter((file) => file.status === 'uploading')\n if (uploadingFiles.length > 0) {\n onErrorTip(t('waitUpload'))\n return false\n }\n const errorFiles = files.filter((file) => file.status === 'error')\n if (errorFiles.length > 0) {\n onErrorTip(t('checkFailed'))\n return false\n }\n return true\n }\n }),\n []\n )\n\n const acceptStr = useMemo(() => {\n const allTypes = fileUploadConfig?.allowedTypes.map((type) => `.${type}`) || []\n return allTypes.length ? allTypes.join(',') : undefined\n }, [fileUploadConfig])\n\n return (\n <Attachments\n className={styles.chatAttachments}\n accept={acceptStr}\n multiple={true}\n customRequest={onCustomRequest}\n beforeUpload={(file, files) => onBeforeUpload(files)}\n items={attachedFiles}\n onRemove={onRemove}\n overflow=\"wrap\"\n placeholder={(type) =>\n type === 'drop'\n ? { title: t('dropTitle') }\n : {\n icon: <CloudUploadOutlined />,\n title: t('uploadTitle'),\n description: (\n <div>\n <div>{t('uploadDescription')}; </div>\n {fileUploadConfig?.allowedTypes && <div>{t('supportedExtensions', { types: fileUploadConfig?.allowedTypes.join(',') })}; </div>}\n </div>\n )\n }\n }\n />\n )\n})\n",".promptEditorInputContainer {\n position: relative;\n flex: 1;\n min-height: 40px;\n max-height: 62px;\n width: 100%;\n box-sizing: border-box;\n overflow-y: auto;\n scrollbar-width: thin;\n scrollbar-color: transparent transparent;\n}\n.promptEditorInputContainer .promptEditorContent {\n width: 100%;\n height: 100%;\n outline: none;\n white-space: pre-wrap;\n word-break: break-word;\n text-align: justify;\n}\n.promptEditorInputContainer .promptEditorPlaceholder {\n position: absolute;\n top: 0;\n color: rgba(0, 0, 0, 0.3);\n pointer-events: none;\n user-select: none;\n}\n.promptEditorInputContainer::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n.promptEditorInputContainer::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0);\n border-radius: 4px;\n transition: background-color 0.3s ease 0.3s;\n}\n.promptEditorInputContainer::-webkit-scrollbar-track {\n background: transparent;\n}\n.promptEditorInputContainer:hover {\n scrollbar-color: rgba(0, 0, 0, 0.2) transparent;\n}\n.promptEditorInputContainer:hover::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0.2);\n transition-delay: 0s;\n}\n.resourceSelect {\n position: absolute;\n width: max-content;\n padding: 8px;\n z-index: 1000;\n background: #fff;\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);\n font-size: 14px;\n overflow-y: auto;\n max-height: 300px;\n scrollbar-width: thin;\n scrollbar-color: transparent transparent;\n}\n.resourceSelect::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n.resourceSelect::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0);\n border-radius: 4px;\n transition: background-color 0.3s ease 0.3s;\n}\n.resourceSelect::-webkit-scrollbar-track {\n background: transparent;\n}\n.resourceSelect:hover {\n scrollbar-color: rgba(0, 0, 0, 0.1) transparent;\n}\n.resourceSelect:hover::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0.1);\n transition-delay: 0s;\n}\n.resourceSelect[data-placement='top'] {\n transform: translateY(calc(-100% - 26px)) !important;\n}\n.fileMenu .fileMenuGroup + .fileMenuGroup {\n margin-top: 4px;\n}\n.fileMenu .fileMenuGroup .fileMenuGroupTitle {\n padding: 6px 10px 4px;\n color: rgba(0, 0, 0, 0.45);\n font-size: 12px;\n line-height: 20px;\n}\n.fileMenu .fileMenuGroup .fileMenuEmpty {\n padding: 8px 10px;\n color: rgba(0, 0, 0, 0.45);\n line-height: 22px;\n text-align: center;\n}\n.fileMenu .fileMenuItem {\n display: flex;\n align-items: center;\n gap: 4px;\n min-width: 0;\n padding: 8px 10px;\n cursor: pointer;\n border-radius: 6px;\n}\n.fileMenu .fileMenuItem:hover,\n.fileMenu .fileMenuItem.fileMenuItemActive {\n background: #e6f4ff;\n}\n.fileMenu .fileMenuItem .fileIcon {\n flex: 0 0 auto;\n font-size: 10px;\n text-align: center;\n border-radius: 4px;\n}\n.fileMenu .fileMenuItem .fileName {\n min-width: 0;\n overflow: hidden;\n color: rgba(0, 0, 0, 0.88);\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.resourceTag {\n display: inline-block;\n margin: 0 4px;\n}\n","export type ConversationMemberEnum = 'user' | 'agent'\n\nexport enum AgentTypeEnum {\n DEFAULT = 0,\n FLOW = 1,\n AUTONOMOUS = 2\n}\n\nexport enum WorkspaceTypeEnum {\n GLOBAL = 'global',\n SKILL = 'skill',\n CONVERSATION = 'conversation',\n KNOWLEDGE = 'knowledge',\n PROJECT = 'project',\n DEV_SKILL = 'devSkill'\n}\n\nexport enum LibraryTypeEnum {\n KNOWLEDGE = 1,\n PROJECT = 2\n}\n\nexport const CONV_MODE = {\n PROD: 1,\n DEBUG: 2\n} as const\n\nexport enum TagTypeEnum {\n AGENT = 1,\n KNOWLEDGE = 2,\n SKILL = 3,\n PROJECT = 4\n}\n","import { createTokenManager, emit } from '@zero-library/common'\n\nexport const TOKEN_KEY = 'NS-TOKEN'\nexport const SHARE_KEY = 'SHARE-TOKEN'\n/**\n * 令牌管理器\n * 用于管理用户认证令牌,支持从URL参数或存储中获取、设置和清除令牌\n *\n * 特点:\n * 1. 默认使用localStorage存储\n * 2. 支持从URL参数自动同步令牌\n */\nexport const tokenManager = createTokenManager({\n key: TOKEN_KEY\n})\n\n/**\n * 跳转到登录页面\n * 该函数用于在用户未授权或会话过期时重定向到登录页面\n */\nexport const redirectUrl = () => {\n const path = localStorage.getItem('SIGNPATH')\n emit('jumpLink', { url: `/uc${path || '/sign-in'}` })\n}\n","import {\n FileExcelOutlined,\n FileImageOutlined,\n FilePdfOutlined,\n FilePptOutlined,\n FileTextOutlined,\n FileUnknownOutlined,\n FileWordOutlined,\n FileZipOutlined\n} from '@ant-design/icons'\nimport { buildUrlParams, getFileSuffixName, getWebSocketUrl, isArray, isDef, isNull, t } from '@zero-library/common'\nimport dayjs from 'dayjs'\nimport React from 'react'\nimport { NS_CHAT_COPILOT } from '../i18n/constants'\nimport { DownloadFileReq } from '../types'\nimport { WorkspaceTypeEnum } from './constants'\nimport { SHARE_KEY, TOKEN_KEY, tokenManager } from './session'\n\n/**\n * 根据时间戳分类时间,返回相对时间描述\n * @param timestamp - 时间戳(毫秒),可选,默认为当前时间\n * @returns 时间分类字符串\n */\nexport const classifyTime = (timestamp?: number | string): string => {\n const now = dayjs()\n const target = dayjs(timestamp)\n\n if (target.isSame(now, 'day')) {\n return t(`${NS_CHAT_COPILOT}:dateToday`)\n }\n\n const diffInDays = now.diff(target, 'day')\n if (diffInDays < 7) {\n return t(`${NS_CHAT_COPILOT}:dateLast7Days`)\n } else if (diffInDays < 30) {\n return t(`${NS_CHAT_COPILOT}:dateLast30Days`)\n } else if (diffInDays < 180) {\n return t(`${NS_CHAT_COPILOT}:dateLastHalfYear`)\n } else {\n return t(`${NS_CHAT_COPILOT}:dateEarlier`)\n }\n}\n\n/**\n * 将变量数组转换为对象格式\n *\n * @param variables - 变量数组,包含 name, value, type\n * @returns 转换后的对象\n *\n * @remarks\n * - Boolean 类型:只要 value 不为 undefined 或 null 即保留\n * - String/Number 类型:value 不为 undefined, null, '' 时保留\n */\nexport const variablesToObject = (variables: Array<{ name: string; value?: any; type: string }>) => {\n if (!isArray(variables)) return {}\n\n const jsonTypes = ['OBJECT', 'ARRAY', 'ARRAY_STRING', 'ARRAY_NUMBER', 'ARRAY_DECIMAL', 'ARRAY_BOOLEAN', 'ARRAY_OBJECT']\n\n return variables.reduce(\n (acc, cur) => {\n if (cur.type === 'BOOLEAN') {\n if (isDef(cur.value) && !isNull(cur.value)) {\n acc[cur.name] = cur.value\n }\n } else if (jsonTypes.includes(cur.type)) {\n if (isDef(cur.value) && !isNull(cur.value)) {\n if (typeof cur.value === 'string') {\n if (cur.value === '') {\n acc[cur.name] = cur.type === 'OBJECT' ? {} : []\n } else {\n try {\n acc[cur.name] = JSON.parse(cur.value)\n } catch (e) {\n acc[cur.name] = cur.type === 'OBJECT' ? {} : []\n }\n }\n } else {\n acc[cur.name] = cur.value\n }\n }\n } else {\n if (isDef(cur.value) && !isNull(cur.value) && cur.value !== '') {\n acc[cur.name] = cur.value\n }\n }\n return acc\n },\n {} as Record<string, any>\n )\n}\n\n/**\n * 构建Chat WebSocket URL\n * 将 baseURL和参数组合成完整的WebSocket连接URL\n *\n * @param baseURL - WebSocket baseURL\n * @param params - 要附加到URL上的参数\n * @returns 完整的WebSocket URL\n */\nexport const getChatSocketUrl = (baseURL: string, params: Record<string, any>) => {\n return buildUrlParams(params, getWebSocketUrl(`${baseURL}/ws`), 'comma')\n}\n\n/**\n * 判断文件名是否为文档\n * @param fileName 文件名\n * @returns boolean\n */\nexport const isDocument = (fileName: string): boolean => {\n if (!fileName) return false\n const ext = getFileSuffixName(fileName)\n return ['pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'csv'].includes(ext)\n}\n\n// 根据扩展名返回图标\nexport const getFileIcon = (extension: string, fontSize = 24) => {\n const baseStyle = { fontSize }\n const createIcon = (Icon: React.ComponentType<{ style?: React.CSSProperties }>, color: string) =>\n React.createElement(Icon, { style: { ...baseStyle, color } })\n if (['png', 'jpg', 'jpeg', 'gif', 'bmp', 'webp', 'svg'].includes(extension)) {\n return createIcon(FileImageOutlined, '#22c55e')\n }\n if (['pdf'].includes(extension)) {\n return createIcon(FilePdfOutlined, '#ef4444')\n }\n if (['doc', 'docx'].includes(extension)) {\n return createIcon(FileWordOutlined, '#2563eb')\n }\n if (['xls', 'xlsx', 'csv'].includes(extension)) {\n return createIcon(FileExcelOutlined, '#16a34a')\n }\n if (['ppt', 'pptx'].includes(extension)) {\n return createIcon(FilePptOutlined, '#f59e0b')\n }\n if (['zip', 'rar', '7z', 'tar', 'gz'].includes(extension)) {\n return createIcon(FileZipOutlined, '#8b5cf6')\n }\n if (['txt', 'md', 'log', 'json', 'yaml', 'yml', 'xml', 'ini', 'conf'].includes(extension)) {\n return createIcon(FileTextOutlined, '#64748b')\n }\n return createIcon(FileUnknownOutlined, '#94a3b8')\n}\n\nexport const getFileUrl = (params: DownloadFileReq, baseUrl?: string, url?: string): string => {\n const authParams = baseUrl === '/luya/share' ? { [SHARE_KEY]: localStorage.getItem(SHARE_KEY) || '' } : { [TOKEN_KEY]: tokenManager.get() }\n const data = {\n ...authParams,\n workspaceType: WorkspaceTypeEnum.CONVERSATION,\n ...params\n }\n return buildUrlParams(data, url || `${baseUrl}/files/access`)\n}\n\n// 格式化文件大小\nexport const formatFileSize = (size = 0) => {\n if (size < 1024) return `${size} B`\n const kb = size / 1024\n if (kb < 1024) return `${kb.toFixed(2)} KB`\n const mb = kb / 1024\n if (mb < 1024) return `${mb.toFixed(2)} MB`\n const gb = mb / 1024\n return `${gb.toFixed(2)} GB`\n}\n","import { useTranslation } from '@zero-library/common'\nimport { useEffect, useRef } from 'react'\nimport { getFileIcon } from '../../core/utils'\nimport { NS_CHAT_COPILOT } from '../../i18n/constants'\nimport type { CascadeCategory } from '../../types/chatLayout.types'\nimport styles from './index.module.less'\n\ntype GroupPickerGroup = {\n group: CascadeCategory\n options: CascadeCategory[]\n}\n\nexport default function GroupPicker({\n groups,\n selectedIndex,\n onSelect,\n onHover\n}: {\n groups: GroupPickerGroup[]\n selectedIndex: number\n onSelect: (group: CascadeCategory, option: CascadeCategory) => void\n onHover: (index: number) => void\n}) {\n const { t } = useTranslation(NS_CHAT_COPILOT)\n const itemRefs = useRef<Array<HTMLDivElement | null>>([])\n let currentIndex = -1\n\n useEffect(() => {\n itemRefs.current[selectedIndex]?.scrollIntoView({\n block: 'nearest'\n })\n }, [groups, selectedIndex])\n\n return (\n <div className={styles.fileMenu} role=\"listbox\">\n {groups.map(({ group, options }) => (\n <div key={group.value} className={styles.fileMenuGroup}>\n <div className={styles.fileMenuGroupTitle}>{group.label}</div>\n {options.length ? (\n options.map((option) => {\n currentIndex += 1\n const optionIndex = currentIndex\n return (\n <div\n key={`${group.value}-${option.value}`}\n ref={(element) => {\n itemRefs.current[optionIndex] = element\n }}\n role=\"option\"\n aria-selected={optionIndex === selectedIndex}\n className={`${styles.fileMenuItem} ${optionIndex === selectedIndex ? styles.fileMenuItemActive : ''}`}\n onMouseEnter={() => onHover(optionIndex)}\n onClick={() => onSelect(group, option)}\n >\n {option.ext && <span className={styles.fileIcon}>{getFileIcon(option.ext, 14)}</span>}\n <span className={styles.fileName}>{option.label}</span>\n </div>\n )\n })\n ) : (\n <div className={styles.fileMenuEmpty}>{t('empty')}</div>\n )}\n </div>\n ))}\n </div>\n )\n}\n","import React, { ReactNode, useLayoutEffect, useRef, useState } from 'react'\nimport styles from './index.module.less'\n\nexport default function ResourcePickerMenu({\n anchorElementRef,\n children\n}: {\n anchorElementRef: React.MutableRefObject<HTMLElement | null>\n children: ReactNode\n}) {\n const menuRef = useRef<HTMLDivElement>(null)\n const [placement, setPlacement] = useState<'top' | 'bottom'>('bottom')\n\n useLayoutEffect(() => {\n const anchor = anchorElementRef.current\n const menu = menuRef.current\n if (!anchor || !menu) return\n\n const updatePlacement = () => {\n const anchorRect = anchor.getBoundingClientRect()\n const menuHeight = Math.min(menu.scrollHeight, 256)\n const spaceBelow = window.innerHeight - anchorRect.bottom\n const spaceAbove = anchorRect.top\n setPlacement(spaceBelow < menuHeight + 8 && spaceAbove > spaceBelow ? 'top' : 'bottom')\n }\n\n updatePlacement()\n window.addEventListener('resize', updatePlacement)\n return () => window.removeEventListener('resize', updatePlacement)\n }, [anchorElementRef, children])\n\n return (\n <div ref={menuRef} className={styles.resourceSelect} data-placement={placement} onMouseDown={(event) => event.preventDefault()}>\n {children}\n </div>\n )\n}\n","import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { Tag } from 'antd'\nimport { $getNodeByKey, NodeKey } from 'lexical'\nimport styles from './index.module.less'\n\nexport type DisplayResource = {\n resourceLabel: string\n resourceName: string\n resourceType: string\n resourceId: string\n}\n\nexport type Resource = {\n resourceLabel: string\n resourceName: string\n resourceType: string\n resourceId: string\n nodeKey: NodeKey\n}\n\n/**\n * 格式化资源名称展示文案。\n * 如果存在后缀,则只截断后缀前的主体部分,再把后缀拼回去。\n */\nexport function formatResourceName(resourceName: string) {\n const lastDotIndex = resourceName.lastIndexOf('.')\n const hasExtension = lastDotIndex > 0 && lastDotIndex < resourceName.length - 1\n const name = hasExtension ? resourceName.slice(0, lastDotIndex) : resourceName\n const extension = hasExtension ? resourceName.slice(lastDotIndex) : ''\n\n if (name.length <= 6) return `${name}${extension}`\n\n return `${name.slice(0, 3)}***${name.slice(-3)}${extension}`\n}\n\nexport function ReadonlyResourceTag({ resource }: { resource: DisplayResource }) {\n return (\n <div className={styles.resourceTag}>\n <Tag color=\"blue\">\n {resource.resourceLabel}:{formatResourceName(resource.resourceName)}\n </Tag>\n </div>\n )\n}\n\nexport default function ResourceTag({ resource }: { resource: Resource }) {\n const [editor] = useLexicalComposerContext()\n\n const handleClose = (event: React.MouseEvent<HTMLElement>) => {\n event.preventDefault()\n event.stopPropagation()\n editor.update(() => {\n const node = $getNodeByKey(resource.nodeKey)\n node?.remove()\n })\n }\n\n return (\n <div className={styles.resourceTag}>\n <Tag closeIcon color=\"blue\" onClose={handleClose}>\n {resource.resourceLabel}:{formatResourceName(resource.resourceName)}\n </Tag>\n </div>\n )\n}\n","import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { LexicalTypeaheadMenuPlugin, MenuOption } from '@lexical/react/LexicalTypeaheadMenuPlugin'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n BLUR_COMMAND,\n COMMAND_PRIORITY_LOW,\n DecoratorNode,\n FOCUS_COMMAND,\n LexicalNode,\n NodeKey,\n SerializedLexicalNode,\n Spread,\n TextNode\n} from 'lexical'\nimport type { ReactNode } from 'react'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport * as ReactDOM from 'react-dom'\nimport { LibraryTypeEnum } from '../../core/constants'\nimport { useChatStore } from '../../stores/Context'\nimport type { Datasource, Library, Skill } from '../../types'\nimport type { CascadeCategory, CommandConfig } from '../../types/chatLayout.types'\nimport GroupPicker from './FilePickerMenu'\nimport ResourcePickerMenu from './ResourcePickerMenu'\nimport type { Resource } from './ResourceTag'\nimport ResourceTag from './ResourceTag'\n\n/**\n * 变量节点类\n * 自定义 Lexical 节点,用于在编辑器中显示变量\n */\nexport class VariableNode extends DecoratorNode<ReactNode> {\n __resourceLabel: string\n __resourceType: string\n __resourceName: string\n __resourceId: string\n\n /**\n * 返回当前自定义节点的唯一类型标识,供 Lexical 注册和反序列化使用。\n */\n static getType(): string {\n return 'variable'\n }\n\n /**\n * 基于现有节点创建一个内容完全一致的新节点实例。\n */\n static clone(node: VariableNode): VariableNode {\n return new VariableNode(node.__resourceLabel, node.__resourceName, node.__resourceType, node.__resourceId, node.__key)\n }\n\n /**\n * 初始化变量节点,并保存标签展示与序列化所需的资源信息。\n */\n constructor(resourceLabel: string, resourceName: string, resourceType: string, resourceId: string, key?: NodeKey) {\n super(key)\n this.__resourceLabel = resourceLabel\n this.__resourceType = resourceType\n this.__resourceName = resourceName\n this.__resourceId = resourceId\n }\n\n /**\n * 创建节点对应的宿主 DOM,用于承载后续的 React 装饰器内容。\n */\n createDOM(): HTMLElement {\n const span = document.createElement('span')\n span.style.display = 'inline-block'\n span.style.verticalAlign = 'middle'\n return span\n }\n\n /**\n * 当前节点的 DOM 不依赖增量更新,始终交由 Lexical 复用现有 DOM。\n */\n updateDOM(): false {\n return false\n }\n\n /**\n * 声明当前节点是行内节点,这样它可以和普通文本一起排版。\n */\n isInline(): boolean {\n return true\n }\n\n /**\n * 将序列化结果恢复为变量节点实例,支持编辑器内容反解析。\n */\n static importJSON(serializedNode: SerializedVariableNode): VariableNode {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return $createVariableNode(serializedNode.resourceLabel, serializedNode.resourceName, serializedNode.resourceType, serializedNode.resourceId)\n }\n\n /**\n * 导出节点的业务字段,供 Lexical 持久化和回显使用。\n */\n exportJSON(): SerializedVariableNode {\n return {\n resourceLabel: this.__resourceLabel,\n resourceName: this.__resourceName,\n resourceType: this.__resourceType,\n resourceId: this.__resourceId,\n type: 'variable',\n version: 1\n }\n }\n\n /**\n * 生成节点的纯文本表达,便于发送、存储和重新初始化编辑器内容。\n */\n getTextContent(): string {\n return ` ${this.__resourceType}://${this.__resourceId}?name=${this.__resourceName}&label=${this.__resourceLabel} `\n }\n\n /**\n * 将变量节点渲染为可交互的资源标签组件。\n */\n decorate(): ReactNode {\n const resource: Resource = {\n resourceLabel: this.__resourceLabel,\n resourceName: this.__resourceName,\n resourceType: this.__resourceType,\n resourceId: this.__resourceId,\n nodeKey: this.getKey()\n }\n return <ResourceTag resource={resource} />\n }\n}\n\n/**\n * 创建变量节点的快捷方法,统一外部构造入口。\n */\nexport function $createVariableNode(resourceLabel: string, resourceName: string, resourceType: string, resourceId: string): VariableNode {\n return new VariableNode(resourceLabel, resourceName, resourceType, resourceId)\n}\n\nexport type SerializedVariableNode = Spread<\n {\n resourceLabel: string\n resourceName: string\n resourceType: string\n resourceId: string\n },\n SerializedLexicalNode\n>\n\n/**\n * 判断是否为变量节点\n */\nexport function $isVariableNode(node: LexicalNode | null | undefined): node is VariableNode {\n return node instanceof VariableNode\n}\n\nclass ResourceOption extends MenuOption {\n group: CascadeCategory\n item: CascadeCategory\n\n /**\n * 将分组列表中的资源节点包装成 Lexical 菜单选项对象。\n */\n constructor(group: CascadeCategory, item: CascadeCategory) {\n super(`${group.value}:${item.value}`)\n this.group = group\n this.item = item\n }\n}\n\ntype ResourceGroup = {\n group: CascadeCategory\n options: CascadeCategory[]\n}\n\n/**\n * 通过输入 / 选择资源,并将二级资源插入为变量节点。\n */\n\nexport function VariablePickerPlugin({ commandConfig = {} }: { commandConfig?: ObjectType<CommandConfig> }) {\n const [editor] = useLexicalComposerContext()\n const chatStore = useChatStore()\n const [commandDataSource, setCommandDataSource] = useState(commandConfig)\n const [queryString, setQueryString] = useState<string | null>(null)\n const [isEditorFocused, setIsEditorFocused] = useState(false)\n const [menuResetKey, setMenuResetKey] = useState(0)\n const blurTimerRef = useRef<NodeJS.Timeout | null>(null)\n\n /**\n * 监听编辑器焦点变化,控制资源菜单的显示与隐藏。\n */\n useEffect(() => {\n const unregister = mergeRegister(\n editor.registerCommand(\n FOCUS_COMMAND,\n () => {\n if (blurTimerRef.current) clearTimeout(blurTimerRef.current)\n setIsEditorFocused(true)\n return false\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n BLUR_COMMAND,\n () => {\n setIsEditorFocused(false)\n setMenuResetKey((current) => current + 1)\n return false\n },\n COMMAND_PRIORITY_LOW\n )\n )\n return () => {\n if (blurTimerRef.current) clearTimeout(blurTimerRef.current)\n unregister()\n }\n }, [editor])\n\n /**\n * 当外部指令配置变化时,同步刷新当前可用的数据源。\n */\n useEffect(() => {\n setCommandDataSource(commandConfig)\n }, [commandConfig])\n\n const commandKeys = useMemo(() => Object.keys(commandConfig), [commandConfig])\n const commandKey = queryString?.[0] || ''\n const searchKeyword = queryString?.slice(commandKey.length).trim().toLocaleLowerCase() || ''\n\n /**\n * 维护不同一级分类对应的加载方式和展示字段,避免在业务逻辑中堆叠条件分支。\n */\n const categoryConfig = useMemo(\n () => ({\n skill: {\n load: () => chatStore.config.services.request.listSkills(),\n getLabel: (item: Skill | Library | Datasource) => (item as Skill).aliasName || item.name\n },\n knowledge: {\n load: () => chatStore.config.services.request.listLibrarys({ libraryType: LibraryTypeEnum.KNOWLEDGE }),\n getLabel: (item: Skill | Library | Datasource) => item.name\n },\n datasource: {\n load: () => chatStore.config.services.request.listDataSources(),\n getLabel: (item: Skill | Library | Datasource) => item.name\n }\n }),\n [chatStore]\n )\n\n /**\n * 将接口返回的技能或知识库数据统一格式化为分组列表可识别的数据结构。\n */\n const formatDataSource = useCallback(\n (items: (Skill | Library | Datasource)[], category: CascadeCategory): CascadeCategory[] => {\n const currentCategoryConfig = categoryConfig[category.value as keyof typeof categoryConfig]\n if (!items.length) return []\n\n return items.map((item) => ({\n value: item.id,\n label: currentCategoryConfig?.getLabel(item) || item.name,\n children: []\n }))\n },\n [categoryConfig]\n )\n\n /**\n * 当外部指令配置变化时,补齐 children 字段并为可懒加载的分组预取资源数据。\n */\n useEffect(() => {\n let isUnmounted = false\n\n const initializeCommandDataSource = async () => {\n const nextEntries = await Promise.all(\n Object.entries(commandConfig).map(async ([trigger, currentCommandConfig]) => {\n const nextDataSource = await Promise.all(\n (currentCommandConfig.dataSource || []).map(async (category) => {\n const normalizedChildren = category.children || []\n const nextCategory = {\n ...category,\n children: normalizedChildren\n }\n const currentCategoryConfig = categoryConfig[category.value as keyof typeof categoryConfig]\n\n if (!currentCategoryConfig) {\n return nextCategory\n }\n\n if (normalizedChildren.length) {\n return nextCategory\n }\n\n const response = (await currentCategoryConfig.load()) as { data?: (Skill | Library | Datasource)[] }\n const items = (response.data || []) as (Skill | Library | Datasource)[]\n return {\n ...nextCategory,\n children: formatDataSource(items, category)\n }\n })\n )\n\n return [\n trigger,\n {\n ...currentCommandConfig,\n dataSource: nextDataSource\n }\n ] as const\n })\n )\n\n if (isUnmounted) return\n setCommandDataSource(Object.fromEntries(nextEntries))\n }\n\n initializeCommandDataSource()\n\n return () => {\n isUnmounted = true\n }\n }, [categoryConfig, commandConfig, formatDataSource])\n\n /**\n * 根据当前触发字符和查询内容整理分组列表,仅按子项内容过滤当前可见数据。\n */\n const commandGroups = useMemo<ResourceGroup[]>(() => {\n if (!isEditorFocused) return []\n return (commandDataSource[commandKey]?.dataSource || [])\n .map((group) => {\n const options = group.children || []\n if (!searchKeyword) return { group, options }\n return {\n group,\n options: options.filter((option) => option.label.toLocaleLowerCase().includes(searchKeyword))\n }\n })\n .filter(({ options }) => !searchKeyword || options.length)\n }, [commandDataSource, commandKey, isEditorFocused, searchKeyword])\n\n /**\n * 将当前触发器下可选中的资源项扁平化,供键盘高亮与回车选中复用。\n */\n const commandOptions = useMemo(\n () => commandGroups.flatMap(({ group, options }) => options.map((item) => new ResourceOption(group, item))),\n [commandGroups]\n )\n\n /**\n * 将菜单中选中的资源替换为变量节点,并关闭当前菜单。\n */\n const onSelectOption = useCallback(\n (selectedOption: ResourceOption, nodeToReplace: TextNode | null, closeMenu: () => void, matchingString: string) => {\n void matchingString\n const resource = selectedOption.item\n const resourceLabel = selectedOption.group.label\n const resourceType = selectedOption.group.value\n\n editor.update(() => {\n const variableNode = $createVariableNode(resourceLabel, resource.label, resourceType, resource.value)\n if (nodeToReplace) {\n nodeToReplace.replace(variableNode)\n variableNode.selectNext()\n }\n })\n closeMenu()\n },\n [editor]\n )\n\n return (\n <>\n <LexicalTypeaheadMenuPlugin<ResourceOption>\n key={menuResetKey}\n onQueryChange={(query) => setQueryString(query)}\n onSelectOption={onSelectOption}\n /**\n * 从当前文本末尾匹配触发器和查询串,决定是否打开资源选择菜单。\n */\n triggerFn={(text) => {\n if (!commandKeys.length) return null\n const match = new RegExp(`(?:${commandKeys.map((key) => key.replace(/[.*+?^${}()|[\\\\]\\\\]/g, '\\\\$&')).join('|')})([^\\\\s]*)$`).exec(text)\n\n if (!match) return null\n return { leadOffset: match.index, matchingString: match[0], replaceableString: match[0] }\n }}\n options={commandOptions}\n /**\n * 统一使用分组文件列表菜单渲染资源选择器,并通过 portal 挂载到编辑器锚点位置。\n */\n menuRenderFn={(anchorElementRef, { selectedIndex, setHighlightedIndex, selectOptionAndCleanUp }) => {\n if (!isEditorFocused || !anchorElementRef.current || !commandKeys.length || (!commandGroups.length && !searchKeyword)) return null\n if (searchKeyword && !commandGroups.length) return null\n return ReactDOM.createPortal(\n <ResourcePickerMenu anchorElementRef={anchorElementRef}>\n <GroupPicker\n groups={commandGroups}\n selectedIndex={selectedIndex ?? 0}\n onHover={setHighlightedIndex}\n onSelect={(group, option) => selectOptionAndCleanUp(new ResourceOption(group, option))}\n />\n </ResourcePickerMenu>,\n anchorElementRef.current\n )\n }}\n />\n </>\n )\n}\n","import { LexicalComposer } from '@lexical/react/LexicalComposer'\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { ContentEditable } from '@lexical/react/LexicalContentEditable'\nimport { LexicalErrorBoundary } from '@lexical/react/LexicalErrorBoundary'\nimport { HistoryPlugin } from '@lexical/react/LexicalHistoryPlugin'\nimport { OnChangePlugin } from '@lexical/react/LexicalOnChangePlugin'\nimport { RichTextPlugin } from '@lexical/react/LexicalRichTextPlugin'\nimport { useTranslation } from '@zero-library/common'\nimport { Input } from 'antd'\nimport { $createParagraphNode, $createTextNode, $getRoot, type EditorState, type ParagraphNode } from 'lexical'\nimport * as React from 'react'\nimport { useEffect, useImperativeHandle, useRef } from 'react'\nimport { NS_CHAT_COPILOT } from '../../i18n/constants'\nimport type { CommandConfig } from '../../types/chatLayout.types'\nimport styles from './index.module.less'\nimport { $createVariableNode, VariableNode, VariablePickerPlugin } from './ResourceSelect'\n\nfunction InitialStatePlugin({ value }: { value: string }) {\n const [editor] = useLexicalComposerContext()\n\n function parseAndAppendNodes(paragraph: ParagraphNode, value: string) {\n const variableRegex = /\\/(\\w+):\\/\\/([^?\\s]+)\\?name=([^&\\s]+)&label=([^\\s]+)/g\n let lastIndex = 0\n let match: RegExpExecArray | null\n while ((match = variableRegex.exec(value)) !== null) {\n if (match.index > lastIndex) {\n paragraph.append($createTextNode(value.substring(lastIndex, match.index)))\n }\n\n paragraph.append($createVariableNode(decodeURIComponent(match[4]), decodeURIComponent(match[3]), match[1], match[2]))\n\n lastIndex = variableRegex.lastIndex\n }\n\n if (lastIndex < value.length) {\n paragraph.append($createTextNode(value.substring(lastIndex)))\n }\n }\n\n useEffect(() => {\n if (value === null || value === undefined) return\n\n editor.update(() => {\n const root = $getRoot()\n const currentText = root.getTextContent()\n\n if (currentText === value) {\n return\n }\n\n root.clear()\n const paragraph = $createParagraphNode()\n parseAndAppendNodes(paragraph, value)\n root.append(paragraph)\n })\n }, [editor, value])\n\n return null\n}\n\ntype ChatInputProps = React.ComponentPropsWithoutRef<typeof Input.TextArea> & {\n commandConfig?: ObjectType<CommandConfig>\n}\n\nconst ChatInput = React.forwardRef<any, ChatInputProps>(\n (\n {\n value = '',\n commandConfig,\n onChange,\n placeholder,\n className,\n style,\n disabled,\n readOnly,\n onFocus,\n onBlur,\n onKeyDown,\n onKeyUp,\n onPaste,\n onCompositionStart,\n onCompositionEnd\n },\n ref\n ) => {\n const contentEditableRef = useRef<HTMLDivElement>(null)\n const { t } = useTranslation(NS_CHAT_COPILOT)\n const stringValue = typeof value === 'string' ? value : ''\n\n const initialConfig = {\n namespace: 'ChatInput',\n onError: (error: Error) => console.error(error),\n nodes: [VariableNode],\n editable: !disabled && !readOnly\n }\n\n useImperativeHandle(ref, () => ({\n focus: () => contentEditableRef.current?.focus(),\n blur: () => contentEditableRef.current?.blur(),\n nativeElement: contentEditableRef.current\n }))\n\n const handleOnChange = (editorState: EditorState) => {\n editorState.read(() => {\n const nextValue = $getRoot().getTextContent()\n if (nextValue !== stringValue && onChange) {\n onChange({ target: { value: nextValue } } as React.ChangeEvent<HTMLTextAreaElement>)\n }\n })\n }\n\n return (\n <div className={styles.promptEditorInputContainer} onClick={() => contentEditableRef.current?.focus()}>\n <LexicalComposer initialConfig={initialConfig}>\n <RichTextPlugin\n contentEditable={\n <ContentEditable\n ref={contentEditableRef}\n className={[`${className || ''}`, 'ant-sender-input', styles.promptEditorContent].filter(Boolean).join(' ')}\n style={style}\n contentEditable={!disabled && !readOnly}\n suppressContentEditableWarning\n role=\"textbox\"\n aria-multiline=\"true\"\n tabIndex={!disabled && !readOnly ? 0 : -1}\n onMouseDown={(event) => {\n if (!disabled && !readOnly) {\n event.stopPropagation()\n }\n }}\n onFocus={(event) => onFocus?.(event as unknown as React.FocusEvent<HTMLTextAreaElement>)}\n onBlur={(event) => onBlur?.(event as unknown as React.FocusEvent<HTMLTextAreaElement>)}\n onKeyDown={(event) => onKeyDown?.(event as unknown as React.KeyboardEvent<HTMLTextAreaElement>)}\n onKeyUp={(event) => onKeyUp?.(event as unknown as React.KeyboardEvent<HTMLTextAreaElement>)}\n onPaste={(event) => onPaste?.(event as unknown as React.ClipboardEvent<HTMLTextAreaElement>)}\n onCompositionStart={(event) => onCompositionStart?.(event as unknown as React.CompositionEvent<HTMLTextAreaElement>)}\n onCompositionEnd={(event) => {\n onCompositionEnd?.(event as unknown as React.CompositionEvent<HTMLTextAreaElement>)\n }}\n />\n }\n placeholder={!stringValue ? <div className={styles.promptEditorPlaceholder}>{placeholder || t('chatPlaceholder')}</div> : null}\n ErrorBoundary={LexicalErrorBoundary}\n />\n <HistoryPlugin />\n <VariablePickerPlugin commandConfig={commandConfig} />\n <OnChangePlugin onChange={handleOnChange} />\n <InitialStatePlugin value={stringValue} />\n </LexicalComposer>\n </div>\n )\n }\n)\n\nexport { VariableNode, VariablePickerPlugin } from './ResourceSelect'\nexport { default as ResourceTag } from './ResourceTag'\nexport default ChatInput\n","import { PaperClipOutlined } from '@ant-design/icons'\nimport { Sender } from '@ant-design/x-v2'\nimport { useSyncInput, useTranslation } from '@zero-library/common'\nimport { Badge, Button, ButtonProps, Flex, GetRef } from 'antd'\nimport { ComponentProps, forwardRef, useEffect, useImperativeHandle, useMemo, useRef } from 'react'\nimport { NS_CHAT_COPILOT } from '../i18n/constants'\nimport { FileUploadConfig, InputFile } from '../types'\nimport type { CommandConfig } from '../types/chatLayout.types'\nimport ChatSendAttachments, { AttachmentsProps } from './Attachments'\nimport ChatInput from './ChatInput'\nimport styles from './styles.module.less'\n\n/**\n * ChatSender 组件暴露的方法接口\n */\nexport interface ChatSenderHandle {\n /** 聚焦输入框 */\n focus: (options?: { cursor?: 'start' | 'end' }) => void\n}\n/**\n * 文件上传配置接口\n */\ninterface FileUpload {\n /** 上传时的额外参数 */\n params?: ObjectType<any>\n /** 文件上传配置列表 */\n config: FileUploadConfig\n /** 文件上传请求函数 */\n request: AttachmentsProps['fileUpload']\n}\n\n/**\n * ChatSender 组件属性接口\n */\nexport interface SenderProps {\n /** 输入框占位符 */\n placeholder?: string\n /** 特殊指令配置 */\n commandConfig?: ObjectType<CommandConfig>\n /** 输入框内容 */\n content?: string\n /** 文件列表 */\n fileList?: InputFile[]\n /** 是否打开文件选择头部 */\n headerOpen?: boolean\n /** 是否正在发送消息 */\n loading?: boolean\n /** 内容变化回调 */\n onContentChange: (value: string) => void\n /** 文件列表变化回调 */\n onFileListChange: (files: InputFile[]) => void\n /** 头部打开状态变化回调 */\n onHeaderOpenChange: (open: boolean) => void\n /** 发送消息回调 */\n onSend: () => void\n /** 取消发送回调 */\n onCancel?: () => void\n /** 输入框聚焦回调 */\n onFocus?: () => void\n /** 头部额外内容 */\n extraHeader?: React.ReactNode\n /** 底部额外内容 */\n extraFooter?: React.ReactNode\n /** 底部下方额外内容 */\n extraFooterBelow?: React.ReactNode\n /** 发送按钮属性 */\n sendBtnProps?: ButtonProps\n /** 文件上传配置 */\n fileUpload?: FileUpload\n}\n\nexport default forwardRef<ChatSenderHandle, SenderProps>(\n (\n {\n placeholder,\n content,\n commandConfig = {},\n fileList = [],\n headerOpen = false,\n loading = false,\n onContentChange,\n onFileListChange,\n onHeaderOpenChange,\n onSend,\n onCancel,\n onFocus,\n extraHeader,\n extraFooter,\n extraFooterBelow,\n sendBtnProps,\n fileUpload\n },\n ref\n ) => {\n const senderRef = useRef<GetRef<typeof Sender>>(null)\n const { inputValue, setInputValue } = useSyncInput(content || '', onContentChange)\n const { t } = useTranslation(NS_CHAT_COPILOT)\n\n const attachmentsNode = fileUpload?.config?.enabled && (\n <Badge dot={!!fileList?.length && !headerOpen}>\n <Button type=\"text\" icon={<PaperClipOutlined />} onClick={() => onHeaderOpenChange(!headerOpen)} />\n </Badge>\n )\n const attachmentsRef = useRef<any>()\n const senderHeader = (\n <>\n <Sender.Header title={t('selectFile')} open={headerOpen} onOpenChange={onHeaderOpenChange}>\n <ChatSendAttachments\n ref={attachmentsRef}\n fileList={fileList}\n fileUpload={fileUpload.request}\n onChange={onFileListChange}\n fileUploadConfig={fileUpload.config}\n extraParams={fileUpload.params}\n />\n </Sender.Header>\n {extraHeader}\n </>\n )\n const onSubmit = () => {\n if (!attachmentsRef.current?.validateFile || attachmentsRef.current.validateFile()) {\n onSend()\n }\n }\n\n const isFocusedRef = useRef(false)\n const commandConfigRef = useRef(commandConfig)\n commandConfigRef.current = commandConfig\n // 【BUGFIX】使用 forwardRef 包裹自定义输入组件,解决 React 警告:\n // \"Function components cannot be given refs.\"\n //\n // 问题原因:@ant-design/x-v2 的 Sender 组件会通过 components.input\n // 传入的自定义组件挂载 ref(用于 focus 等命令式操作)。之前使用\n // useCallback 返回的是普通函数组件,无法接收 ref,导致控制台报错\n // \"Did you mean to use React.forwardRef()?\" 且 ref 操作静默失败。\n //\n // 修复方案:改用 useMemo + forwardRef 创建组件,确保 ref 能正确\n // 穿透到 ChatInput(ChatInput 本身已是 React.forwardRef)。\n const inputComponent = useMemo(\n () =>\n forwardRef<any, ComponentProps<typeof ChatInput>>((inputProps, ref) => (\n <ChatInput {...inputProps} ref={ref} commandConfig={commandConfigRef.current} />\n )),\n []\n )\n\n useEffect(() => {\n if (!content) return\n if (!isFocusedRef.current) {\n senderRef.current?.focus({ cursor: 'end' })\n }\n }, [content])\n\n // 暴露方法给外部组件\n useImperativeHandle(\n ref,\n () => ({\n focus: (options?: { cursor?: 'start' | 'end' }) => {\n senderRef.current?.focus(options)\n }\n }),\n []\n )\n\n return (\n // <Suggestion items={[]} onSelect={(itemVal) => setInputValue(`[${itemVal}]:`)}>\n // {({}) => (\n <Sender\n components={{ input: inputComponent }}\n className={styles.chatSender}\n ref={senderRef}\n value={inputValue}\n placeholder={placeholder}\n header={senderHeader}\n onSubmit={onSubmit}\n onChange={setInputValue}\n onFocus={() => {\n isFocusedRef.current = true\n onFocus?.()\n }}\n onBlur={() => {\n isFocusedRef.current = false\n }}\n autoSize={{ minRows: 2, maxRows: 6 }}\n suffix={false}\n onCancel={onCancel}\n footer={(_, { components }) => {\n const { SendButton, LoadingButton } = components\n return (\n <Flex vertical>\n <Flex justify=\"space-between\" align=\"center\" gap={12}>\n <Flex className=\"flex-1\" gap={6} align=\"center\">\n {attachmentsNode}\n <>{extraFooter}</>\n </Flex>\n <Flex align=\"center\" style={{ marginLeft: 'auto' }} gap={6}>\n {loading ? <LoadingButton disabled={false} /> : <SendButton {...sendBtnProps} />}\n </Flex>\n </Flex>\n <>{extraFooterBelow}</>\n </Flex>\n )\n }}\n />\n // )}\n // </Suggestion>\n )\n }\n)\n","import { buildUrlParams, type createRequest, type RequestConfig } from '@zero-library/common'\nimport { TagTypeEnum, WorkspaceTypeEnum } from '../core/constants'\nimport { getFileUrl } from '../core/utils'\nimport {\n AgentInfo,\n ConversationCreate,\n ConversationMessage,\n ConversationMessageSend,\n ConversationMessagesQuery,\n ConversationsQuery,\n ConversationType,\n Datasource,\n DocType,\n DownloadFileReq,\n ExecutionDebug,\n FeedbackUpdate,\n InputFile,\n Library,\n ListLibraryReq,\n ListSkillReq,\n ProviderModel,\n ShareConversationResponse,\n Skill,\n Variable,\n WorkspaceTag\n} from '../types'\n\ninterface UserInputType {\n inputs: Variable[]\n outputs: Variable[]\n}\n\ninterface ChatUploadParams {\n workspaceType: WorkspaceTypeEnum\n agentId: string\n workspaceId: string\n}\n\n/**\n * 创建聊天服务\n * @param request - 请求函数实例\n * @returns 聊天服务对象\n */\nexport const createChatService = (request: ReturnType<typeof createRequest>, config?: RequestConfig) => {\n // 获取模型列表\n const fetchModelList = (): Promise<R<ProviderModel[]>> => {\n return request.get(`/providers/models/type/llm`)\n }\n\n // 获取智能体详情\n const fetchAgentInfo = (agentId: string): Promise<R<AgentInfo>> => {\n return request.get(`/agents/${agentId}`)\n }\n\n // 创建会话\n const createConversationId = (params: ConversationCreate): Promise<R<string>> => {\n return request.post(`/agents/${params.agentId}/conversations`, { convMeta: params.convMeta })\n }\n\n // 获取会话列表\n const fetchConversations = (params: ConversationsQuery): Promise<R<ConversationType[]>> => {\n return request.get(`/agents/${params.agentId}/conversations`, { ...params.convMeta })\n }\n\n // 删除会话\n const deleteConversation = (id: string): Promise<R<string>> => {\n return request.delete(`/agents/conversations/${id}`)\n }\n\n // 历史记录\n const fetchMessages = (params: ConversationMessagesQuery): Promise<R<ConversationMessage[]>> => {\n return request.get(`/agents/conversations/${params.conversationId}/messages`)\n }\n\n // 发送消息\n const sendMessageStream = (params: ConversationMessageSend, agentId: string): Promise<R<ConversationMessage[]>> => {\n return request.post(`/agents/${agentId}/chat`, params)\n }\n\n // cancelMessage 取消消息\n const cancelMessage = (executionId: string): Promise<R<string>> => {\n return request.post(`/agents/executions/${executionId}/cancel`)\n }\n\n const getAgentUserInput = (agentId: string): Promise<R<UserInputType>> => {\n return request.get(`/agents/${agentId}/workflow/params`)\n }\n\n /**\n * 更新消息反馈(赞或踩)\n * @param params - 反馈参数,包含消息ID和反馈类型\n */\n const feedbackUpdate = (params: FeedbackUpdate): Promise<R<null>> => {\n return request.put(`/agents/messages/${params.executionId}/feedback`, params)\n }\n\n const chatUpload = (params: ChatUploadParams, data: FormData, signal?: AbortSignal): Promise<R<InputFile[]>> => {\n return request.post(buildUrlParams(params, '/files/upload'), data, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n },\n timeout: 300000,\n signal\n })\n }\n\n const getPreviewUrl = (params: DownloadFileReq): string => {\n return getFileUrl(params, config?.baseURL)\n }\n\n const docQuery = (params: string): Promise<R<DocType>> => {\n return request.get(`/library/cloud/document?${params}`)\n }\n\n const listSkills = (params?: ListSkillReq): Promise<R<Skill[]>> => {\n return request.get('/skill', params)\n }\n\n // 获取Library列表\n const listLibrarys = (params?: ListLibraryReq): Promise<R<Library[]>> => {\n return request.get('/library', params)\n }\n\n // 标签列表\n const listTags = (params: { tagType: TagTypeEnum }): Promise<R<WorkspaceTag[]>> => {\n return request.get(`/tags`, { tagType: params.tagType })\n }\n\n // 数据源列表\n const listDataSources = (): Promise<R<Datasource[]>> => {\n return request.get(`/datasource`)\n }\n\n const getAgentAvatar = (path: string): Promise<Blob> => {\n return request.get(`/files/access?path=${path}&workspaceType=${WorkspaceTypeEnum.GLOBAL}`, undefined, { responseType: 'blob' })\n }\n\n /**\n * 收藏/取消收藏会话\n * @param conversationId - 会话ID\n * @param isFavorite - false-取消收藏; true-收藏\n */\n const conversationFavorite = (conversationId: string, isFavorite: boolean): Promise<R<boolean>> => {\n return request.put('/agents/conversations/favorite', { conversationIds: [conversationId], favorite: isFavorite })\n }\n\n /**\n * 分享会话\n * @param conversationId - 会话ID\n */\n const shareConversation = (conversationId: string): Promise<R<ShareConversationResponse>> => {\n return request.post(`/agents/conversations/${conversationId}/share/url`)\n }\n\n /**\n * 获取会话执行轨迹(debug 模式)\n * 返回该会话下所有执行(executions)的分页列表,逐条渲染轨迹。\n * @param conversationId - 会话ID\n */\n const fetchExecutionDebug = (conversationId: string): Promise<R<PageRes<ExecutionDebug>>> => {\n return request.get(`/agents/conversations/${conversationId}/executions/debug`)\n }\n\n return {\n fetchModelList,\n fetchAgentInfo,\n createConversationId,\n fetchConversations,\n deleteConversation,\n fetchMessages,\n sendMessageStream,\n cancelMessage,\n getAgentUserInput,\n feedbackUpdate,\n chatUpload,\n getPreviewUrl,\n docQuery,\n listSkills,\n listLibrarys,\n listDataSources,\n listTags,\n getAgentAvatar,\n conversationFavorite,\n shareConversation,\n fetchExecutionDebug\n }\n}\n","import { classifyTime, getChatSocketUrl, variablesToObject } from '../core/utils'\n\nimport { ConversationItemType } from '@ant-design/x-v2'\nimport {\n buildUrlParams,\n createRequest,\n deepCopy,\n deepMerge,\n getLang,\n HttpStatus,\n isArray,\n isNullOrUnDef,\n isObject,\n isString,\n shouldRender,\n t,\n transform,\n transforms\n} from '@zero-library/common'\nimport { message as antdMessage, message } from 'antd'\nimport { proxy, subscribe } from 'valtio'\nimport { AgentTypeEnum, CONV_MODE } from '../core/constants'\nimport { redirectUrl, SHARE_KEY, TOKEN_KEY, tokenManager } from '../core/session'\nimport { NS_CHAT_COPILOT } from '../i18n/constants'\nimport { createChatService } from '../services'\nimport {\n A2uiCommandEvent,\n AgentExecMode,\n AgentInfo,\n AgentSpec,\n ChatConfig,\n ChatHooks,\n ChatLayout,\n ChatParams,\n ChatServices,\n ConversationMessage,\n ConversationMessageSend,\n ConversationNewTitleEvent,\n ConversationsQuery,\n ConversationType,\n FeedbackUpdate,\n FileTextType,\n FileUrlType,\n MessageBoxType,\n ProviderModel,\n ReferencesType,\n RequestInstance,\n RunStartedEvent,\n StepErrorEvent,\n StepStartedEvent,\n TextEvent,\n ToolCallDeltaEvent,\n ToolCallEvent,\n ToolResultEvent,\n Variable\n} from '../types'\n\nconst defaultLayout = {\n globalHeader: false,\n conversationList: false,\n preview: true,\n chatHeader: true,\n messageList: true,\n senderHeader: false,\n senderFooter: false,\n disclaimerNotice: true,\n userInput: false\n} as ChatLayout\n\n/**\n * 创建聊天状态管理器\n * 使用 Valtio 进行状态管理,包含会话、消息、用户信息等所有聊天相关状态\n * @returns 聊天状态管理器和操作方法\n */\nexport function createChatStore() {\n /** 全局配置对象,包含钩子函数、布局等配置 */\n const config = proxy({\n services: {\n /** WebSocket地址 */\n websocketUrls: ['', ''] as [string, string],\n /** HTTP请求实例 */\n request: {} as RequestInstance\n },\n models: [] as ProviderModel[],\n /** 钩子函数 */\n hooks: {} as ChatHooks,\n layout: {} as ChatLayout,\n /** 智能体执行链展示模式(默认聚合模式,可运行时切换) */\n agentExecMode: 'aggregate' as AgentExecMode,\n loading: false,\n /** 文件预览状态 */\n preview: {\n file: {} as FileUrlType | FileTextType,\n isEdit: false // 未使用\n },\n stream: true,\n params: {\n convMeta: {\n mode: CONV_MODE.PROD\n }\n } as ChatParams\n })\n\n /**\n * 获取模型列表\n * 从后端获取可用的模型列表\n */\n const getModels = async () => {\n return await config.services.request.fetchModelList()\n }\n\n /**\n * 设置服务配置\n * 配置聊天组件所需的HTTP和WebSocket服务\n *\n * @param services - 服务配置对象,包含HTTP和WebSocket配置\n */\n const setServices = ({ http, websocket } = {} as ChatServices) => {\n // 合并默认HTTP配置和用户提供的配置,包括默认的认证头\n const baseURL = http?.config?.baseURL || '/luya/v1'\n const headers =\n baseURL === '/luya/share'\n ? { [SHARE_KEY]: localStorage.getItem(SHARE_KEY) || '', 'Accept-Language': getLang() }\n : { [TOKEN_KEY]: tokenManager.get(), 'Accept-Language': getLang() }\n const httpConfig = {\n baseURL,\n headers,\n ...http?.config\n }\n // 初始化http配置\n const request = createRequest(httpConfig)\n if (config.hooks?.onRequestInterceptor) {\n request.instance.interceptors.request.use(...(config.hooks.onRequestInterceptor as any))\n }\n request.instance.interceptors.response.use(undefined, (err) => {\n if (err?.response?.status === HttpStatus.UNAUTHORIZED) {\n if (config.hooks.onRedirectLogin) {\n config.hooks.onRedirectLogin()\n } else {\n redirectUrl()\n }\n }\n return Promise.reject(err)\n })\n if (config.hooks?.onResponseInterceptor) {\n request.instance.interceptors.response.use(...config.hooks.onResponseInterceptor)\n }\n config.services.request = { ...createChatService(request, httpConfig), ...http?.request }\n\n // 初始化WebSocket配置数组,最多支持两个地址\n config.services.websocketUrls = ['', '']\n if (isArray(websocket?.baseURLs)) {\n // 配置提供的WebSocket地址\n websocket.baseURLs.forEach((baseURL, index) => {\n if (isString(baseURL)) {\n config.services.websocketUrls[index] = getChatSocketUrl(baseURL, websocket?.params || httpConfig.headers)\n }\n })\n } else {\n // 如果未提供WebSocket URL数组,则继承HTTP配置\n const url = getChatSocketUrl(httpConfig.baseURL, websocket?.params || httpConfig.headers)\n config.services.websocketUrls = [url, '']\n }\n }\n /**\n * 设置文件预览\n * @param file - 要预览的文件\n * @param isEdit - 是否为编辑模式\n */\n const setPreview = async (file = {} as FileUrlType | FileTextType, isEdit = false) => {\n const preview = shouldRender(config.layout.preview)\n\n const canProceed = await config.hooks?.onBeforeFilePreview?.(file, preview)\n if (canProceed === false) {\n return\n }\n\n if (preview) {\n const newFile = file\n if ((newFile as FileUrlType).fileUrl) {\n ;(newFile as FileUrlType).fileUrl = buildUrlParams({ _t: Date.now() }, (newFile as FileUrlType).fileUrl)\n }\n config.preview = {\n file: newFile,\n isEdit\n }\n // 意图:聚焦到文件预览面板(布局层消费后切到对应 Tab)\n focusTarget.target = 'preview'\n } else {\n if ((file as FileUrlType)?.fileUrl) {\n window.open((file as FileUrlType).fileUrl, '_blank')\n } else if ((file as FileTextType)?.content) {\n message.warning(t(`${NS_CHAT_COPILOT}:previewNotSupported`))\n }\n }\n config.hooks?.onAfterFilePreview?.(file, preview)\n }\n\n /**\n * 设置参数\n * @param params - 参数对象\n */\n const setParams = (params?: ObjectType<any>) => {\n if (isObject(params)) {\n Object.assign(config.params, params)\n }\n }\n\n /**\n * 设置布局配置\n * @param layout - 布局配置\n */\n const setLayout = (layout: Partial<ChatLayout>) => {\n config.layout = deepMerge(defaultLayout, layout)\n }\n\n /**\n * 设置智能体执行链展示模式(聚合 / 顺序)\n * @param mode - 展示模式\n */\n const setExecMode = (mode: AgentExecMode) => {\n config.agentExecMode = mode\n }\n\n /**\n * 获取会话执行轨迹(debug 模式)\n * 封装 service 调用,组件无需直接访问 config.services\n * @param conversationId - 会话ID\n */\n const fetchExecutionDebug = (conversationId: string) => {\n return config.services.request.fetchExecutionDebug(conversationId)\n }\n\n /**\n * 设置生命周期钩子函数\n * @param hooks - 钩子函数配置\n */\n const setHooks = (hooks = {} as ChatHooks) => {\n config.hooks = hooks\n }\n\n /** 智能体信息 */\n const agent = proxy({\n /** 当前智能体 */\n agentInfo: {} as AgentInfo,\n /** 智能体加载状态 */\n loading: false\n })\n\n const getUserInput = async (agentId: string) => {\n agent.loading = true\n try {\n const { data } = await config.services.request.getAgentUserInput(agentId)\n if (data?.inputs && !agent.agentInfo.userInput?.length) {\n agent.agentInfo.userInput = data.inputs.filter((item) => item.enableEdit)\n }\n } finally {\n agent.loading = false\n }\n }\n\n const setUserInput = (userInput: AgentInfo['userInput']) => {\n if (agent.agentInfo.agentType === AgentTypeEnum.FLOW) {\n agent.agentInfo.userInput = userInput\n }\n }\n\n /** 获取智能体详情 */\n const getAgentInfo = async (id: string) => {\n config.loading = true\n try {\n const { data } = await config.services.request.fetchAgentInfo(id || '')\n agent.agentInfo = data as AgentInfo\n } finally {\n config.loading = false\n }\n }\n\n const setAgent = async (agentInfo: AgentInfo) => {\n if ((!agent.agentInfo.id && !agentInfo.updatedAt) || (agent.agentInfo.id && agent.agentInfo.id !== agentInfo.id)) {\n await getAgentInfo(agentInfo.id)\n }\n\n agent.agentInfo = { ...agent.agentInfo, ...agentInfo }\n if (config.layout.userInput) {\n await getUserInput(agent.agentInfo.id)\n }\n config.hooks?.onAfterSwitchAgent?.(agent.agentInfo)\n }\n\n /** 历史会话管理 */\n const conversations = proxy({\n /** 会话列表数据 */\n list: {\n items: [] as ConversationItemType[]\n },\n /** 当前会话索引,创建会话时更新,促使页面更新会话列表 */\n updateIndex: 0,\n /** 获取会话列表的加载状态 */\n loading: false,\n /** 编辑会话的加载状态 */\n editLoading: false\n })\n\n /** 获取会话列表 */\n const getConversations = async (agentId: ConversationsQuery['agentId']) => {\n try {\n conversations.loading = true\n const { data } = await config.services.request.fetchConversations({\n agentId,\n convMeta: config.params.convMeta\n })\n // 防止会话接口请求前就已经切换了智能体\n if (agent.agentInfo.id !== agentId) return\n const resultItems = transforms<ConversationType, ConversationItemType>(data || [], {\n key: 'id',\n id: 'id',\n label: 'title',\n spec: 'spec',\n isFavorite: 'isFavorite',\n group: (c): string => {\n return classifyTime(c.updatedAt)\n }\n })\n conversations.list.items = resultItems\n } finally {\n conversations.loading = false\n }\n }\n\n /** 删除会话 */\n const delConversation = async (conversationId: ConversationType['id']) => {\n try {\n const canProceed = await config.hooks?.onBeforeDelConversation?.(conversationId)\n if (canProceed === false) return\n conversations.editLoading = true\n await config.services.request.deleteConversation(conversationId)\n antdMessage.success(t(`${NS_CHAT_COPILOT}:deleteSuccess`))\n conversations.list.items = conversations.list.items.filter((item) => item.key !== conversationId)\n favorite.list.items = favorite.list.items.filter((item) => item.id !== conversationId)\n delete conversation.messages[conversationId]\n if (conversation.active.id === conversationId) {\n createConversation()\n }\n config.hooks?.onAfterDelConversation?.(conversationId, conversation.active.id === conversationId)\n } finally {\n conversations.editLoading = false\n }\n }\n\n const initConversation = async (config: ChatConfig) => {\n await getConversations(config.agent.id)\n await getConversationFavorite()\n\n if (config?.conversationId) {\n switchConversation(config.conversationId)\n } else {\n if (config.conversationStrategy === 1 && conversations.list.items.length > 0) {\n switchConversation(conversations.list.items[0].key)\n } else {\n createConversation()\n }\n }\n }\n\n const switchConversation = async (id: ConversationType['id']) => {\n const conversationId = String(id)\n\n if (conversation.active.id === conversationId) return\n const canProceed = await config.hooks?.onBeforeSwitchConversation?.(conversationId)\n if (canProceed === false) {\n throw new Error(t(`${NS_CHAT_COPILOT}:operationBlocked`))\n }\n // 初始化会话信息\n conversation.active.id = conversationId\n // 查看该会话 → 清除未读状态(运行中的点由 running 实时反映)\n conversation.unread[conversationId] = false\n\n // 更新会话的 spec\n const targetConversation = conversations.list.items.find((item) => item.key === conversationId) as ConversationItemType\n if (targetConversation) {\n conversation.active.spec = targetConversation.spec\n } else {\n conversation.active.spec = {} as AgentSpec\n }\n await getMessages(conversationId)\n // 关闭文件预览\n await setPreview()\n config.hooks?.onAfterSwitchConversation?.(conversationId)\n }\n\n /** 更新会话列表 */\n const updateConversations = (data: ConversationType) => {\n const item = transform<ConversationType, ConversationItemType>(data, {\n key: 'id',\n id: 'id',\n label: 'title',\n spec: 'spec',\n isFavorite: 'isFavorite',\n group: (c): string => {\n return classifyTime(c.updatedAt)\n }\n })\n conversations.list.items = [item, ...conversations.list.items.filter((i) => i.key !== item.key)]\n }\n\n /** 创建会话 */\n const createConversation = async () => {\n if (!agent.agentInfo.id) return\n const { data } = await config.services.request.createConversationId({ agentId: agent.agentInfo.id, convMeta: config.params.convMeta })\n\n const newSpec = {\n skills: { items: [] },\n knowledges: { items: [] }\n } as AgentSpec\n\n updateConversations({\n id: data || '',\n title: '',\n agentId: agent.agentInfo?.id || '',\n isFavorite: false,\n updatedAt: new Date().toISOString(),\n spec: newSpec\n })\n await switchConversation(data)\n }\n\n /** 收藏管理 */\n const favorite = proxy({\n /** 收藏列表数据 */\n list: {\n items: [] as ConversationItemType[]\n },\n\n /** 收藏列表的加载状态 */\n loading: false\n })\n\n const getConversationFavorite = async () => {\n try {\n favorite.loading = true\n const { data } = await config.services.request.fetchConversations({\n agentId: agent.agentInfo?.id || '',\n convMeta: {\n ...config.params.convMeta,\n isFavorite: true\n }\n })\n\n const resultItems = transforms<ConversationType, ConversationItemType>(data || [], {\n key: 'id',\n id: 'id',\n label: 'title',\n spec: 'spec',\n isFavorite: 'isFavorite',\n group: (c): string => {\n return classifyTime(c.updatedAt)\n }\n })\n favorite.list.items = resultItems\n } finally {\n favorite.loading = false\n }\n }\n\n const collectConversation = async (conversationId: ConversationType['id'], isFavorite: boolean) => {\n try {\n await config.services.request.conversationFavorite(conversationId, isFavorite)\n\n // 同步会话列表\n if (conversations.list.items.length) {\n const item = conversations.list.items.find((item) => item.id === conversationId)\n if (item) {\n item.isFavorite = isFavorite\n }\n }\n\n // 同步收藏列表\n if (isFavorite) {\n await getConversationFavorite()\n } else if (favorite.list.items.length) {\n favorite.list.items = favorite.list.items.filter((item) => item.id !== conversationId)\n }\n\n message.success(isFavorite ? t(`${NS_CHAT_COPILOT}:favoriteSuccess`) : t(`${NS_CHAT_COPILOT}:unfavoriteSuccess`))\n } finally {\n }\n }\n\n /** 当前会话管理 */\n const conversation = proxy({\n loading: false,\n /** 当前激活的会话信息 */\n active: {\n id: '',\n spec: {} as AgentSpec,\n userInput: [] as Variable[]\n },\n /** 每个会话的消息存储,以会话ID为键 */\n messages: {} as { [key: ConversationType['id']]: MessageBoxType },\n\n /** 每个会话的运行中状态(消息流式执行中) */\n running: {} as Record<string, boolean>,\n /** 每个会话的待查看状态(运行结束但尚未查看) */\n unread: {} as Record<string, boolean>,\n\n /** 消息反馈状态 */\n feedback: {\n /** 反馈操作加载状态 */\n loading: false\n }\n })\n\n // 跟踪各会话的运行/未读状态:消息流式执行中 → running;运行结束且非当前会话 → unread\n subscribe(conversation, (ops) => {\n for (const op of ops) {\n if (op[0] !== 'set') continue\n const path = op[1]\n if (!Array.isArray(path) || path[0] !== 'messages' || path[2] !== 'loading') continue\n const convId = path[1] as string\n const loading = !!conversation.messages?.[convId]?.loading\n conversation.running[convId] = loading\n if (!loading && convId !== conversation.active.id) {\n conversation.unread[convId] = true\n }\n }\n })\n\n /**\n * 子智能体消息独立存储(以子会话 ID 为键)\n * 实时推送的子智能体消息存入此处,面板打开时直接读取,无需懒加载\n */\n const subAgentMessages = proxy({\n /** 以子会话 ID 为键的消息列表 */\n messages: {} as Record<string, ConversationMessage[]>,\n /** 以子会话 ID 为键的 loading 状态 */\n loading: {} as Record<string, boolean>\n })\n\n /**\n * 子智能体执行详情面板状态\n * 工具节点\"查看执行详情\"点击后,存入此处,由布局层渲染侧边栏\n */\n const subAgentPanel = proxy({\n /** 当前展示的 toolCall 项(含 subConversationId),null 表示关闭 */\n active: null as\n | (ToolCallEvent & {\n subConversationId?: string\n agentName?: string\n toolName?: string\n title?: string\n })\n | null\n })\n\n /**\n * 右侧面板聚焦意图(通用)\n * 当打开子智能体或文件预览时,设置目标面板,由布局层消费后切到对应 Tab\n */\n const focusTarget = proxy({\n target: null as 'preview' | 'subAgent' | null\n })\n\n /** 打开子智能体执行详情面板 */\n const openSubAgent = async (\n item: ToolCallEvent & {\n subConversationId?: string\n agentName?: string\n metadata?: { conversationId?: string }\n }\n ) => {\n // 子会话 ID:优先顶层 subConversationId,其次 toolResult.metadata.conversationId\n let subConvId = item.subConversationId ?? item.metadata?.conversationId\n let agentName = item.agentName\n // 兜底:工具项缺子会话 ID 时,从子智能体消息里反查(子智能体消息已存入独立存储)\n // 优先按父工具调用 ID 精确匹配,其次按子智能体名匹配\n if (!subConvId) {\n for (const id of Object.keys(subAgentMessages.messages)) {\n const list = subAgentMessages.messages[id] || []\n const hit = list.some((m) => {\n if (item.toolCallId && m.toolCallId === item.toolCallId) return true\n return !!(m.agentName && m.agentName === agentName)\n })\n if (hit) {\n subConvId = id\n agentName = agentName || list.find((m) => m.agentName)?.agentName\n break\n }\n }\n }\n subAgentPanel.active = { ...item, subConversationId: subConvId, agentName }\n // 意图:聚焦到子智能体面板(布局层消费后切到对应 Tab)\n focusTarget.target = 'subAgent'\n if (!subConvId) return\n // 独立存储中已有数据(实时推送场景)→ 直接展示\n if (subAgentMessages.messages[subConvId]?.length) return\n // 无数据 → 懒加载历史\n subAgentMessages.loading[subConvId] = true\n try {\n const { data } = await config.services.request.fetchMessages({\n ...config.params.convMeta,\n conversationId: subConvId\n })\n if (data?.length) {\n const list: ConversationMessage[] = []\n data.forEach((msg) => processMessageContent(msg, list))\n finalizeSubMessages(list)\n subAgentMessages.messages[subConvId] = list\n }\n } finally {\n subAgentMessages.loading[subConvId] = false\n }\n }\n\n /** 关闭子智能体执行详情面板 */\n const closeSubAgent = () => {\n subAgentPanel.active = null\n }\n\n const setReferences = async (references?: ReferencesType) => {\n const canProceed = await config.hooks?.onBeforeSetReferences?.(references)\n if (canProceed === false) {\n throw new Error(t(`${NS_CHAT_COPILOT}:operationBlocked`))\n }\n conversation.messages[conversation.active.id].references = references\n config.hooks?.onAfterSetReferences?.(references)\n }\n\n /** 更新会话内容 */\n const setContent = (content?: ConversationMessageSend['message']) => {\n conversation.messages[conversation.active.id].content = content\n }\n\n const setContentParams = (params?: MessageBoxType['params']) => {\n conversation.messages[conversation.active.id].params = params\n }\n\n /** 更新文件列表 */\n const setFileList = (files = [] as ConversationMessageSend['files']) => {\n conversation.messages[conversation.active.id].files = files\n }\n\n /** 更新头部展开状态 */\n const setHeaderOpen = (headerOpen: MessageBoxType['headerOpen']) => {\n conversation.messages[conversation.active.id].headerOpen = headerOpen\n }\n\n const setConversationSpec = (spec: AgentSpec) => {\n if (isObject(spec)) {\n Object.assign(conversation.active.spec || {}, spec)\n }\n }\n\n const setConversationUserInput = (userInput: Variable[]) => {\n conversation.active.userInput = userInput\n }\n\n const feedback = async (executionId: FeedbackUpdate['executionId'], feedback: FeedbackUpdate['feedback'], index: number) => {\n try {\n conversation.feedback.loading = true\n await config.services.request.feedbackUpdate({ executionId, feedback })\n message.success(t(`${NS_CHAT_COPILOT}:feedbackThanks`))\n conversation.messages[conversation.active.id].message[index].feedback = feedback\n } finally {\n conversation.feedback.loading = false\n }\n }\n\n /**\n * 初始化会话消息状态\n * @param conversationId - 会话ID\n */\n const setInitMessage = async (conversationId: ConversationType['id']) => {\n conversation.messages[conversationId] = {\n /** 输入框内容 */\n content: '',\n /** 上传文件列表 */\n files: [] as ConversationMessageSend['files'],\n /** 头部展开状态 */\n headerOpen: false,\n /** 消息发送/接收加载状态 */\n loading: false,\n /** 消息列表 */\n message: []\n }\n }\n\n /** 获取会话消息列表 */\n const getMessages = async (conversationId: ConversationType['id']) => {\n const canProceed = await config.hooks?.onBeforeInitMessages?.(conversationId)\n if (canProceed === false) {\n throw new Error(t(`${NS_CHAT_COPILOT}:operationBlocked`))\n }\n conversation.loading = true\n // 初始化消息列表\n if (!conversation.messages[conversationId]) {\n setInitMessage(conversationId)\n }\n if (conversation.messages[conversationId].message.length === 0) {\n // 接口请求-获取会话消息列表\n const { data } = await config.services.request.fetchMessages({\n ...config.params.convMeta,\n conversationId\n })\n conversation.messages[conversationId].message = []\n if (data?.length) {\n // 主会话历史不含子智能体消息(子智能体消息通过面板懒加载按需获取)\n data.forEach((msg) => {\n processMessageContent(msg)\n })\n\n finalizeHistoryMessages(conversationId)\n normalizeMessagesByExecutionAndRole(conversation.messages[conversationId].message)\n }\n }\n conversation.loading = false\n config.hooks?.onAfterInitMessages?.(conversation.messages[conversationId].message)\n config.hooks?.onAfterInit?.()\n }\n\n function findExecutionMsgIndex(msg: Pick<ConversationMessage, 'executionId' | 'role'>, messages?: ConversationMessage[]) {\n return (messages || []).findLastIndex((item) => item.executionId === msg.executionId && item.role === msg.role)\n }\n\n function normalizeMessagesByExecutionAndRole(messages?: ConversationMessage[]) {\n if (!messages?.length) return\n\n const mergedMessages: ConversationMessage[] = []\n // key -> 该 key 下最后一条消息的索引(用于判断是否需要新建 turn)\n const groupedMessageIndex = new Map<string, number>()\n\n messages.forEach((item) => {\n const key = `${item.executionId}-${item.role}`\n const existedIndex = groupedMessageIndex.get(key)\n\n // 判断是否是新 turn 的开始:content 中包含 runStarted 事件\n const isNewTurn = (item.content || []).some((c) => c.type === 'runStarted')\n\n // 没有已存在的消息,或当前消息是新 turn 的开始,则创建新消息\n if (isNullOrUnDef(existedIndex) || isNewTurn) {\n mergedMessages.push({\n ...item,\n content: [...(item.content || [])],\n files: item.files ? [...item.files] : item.files\n })\n groupedMessageIndex.set(key, mergedMessages.length - 1)\n return\n }\n\n const target = mergedMessages[existedIndex]\n target.content = [...(target.content || []), ...(item.content || [])]\n if ((!target.files || target.files.length === 0) && item.files?.length) {\n target.files = [...item.files]\n }\n if (item.generating !== undefined) {\n target.generating = item.generating\n }\n if (item.stopFlag) {\n target.stopFlag = true\n }\n if (item.feedback !== undefined) {\n target.feedback = item.feedback\n }\n if (item.params !== undefined) {\n target.params = item.params\n }\n if (item.quoteMsg !== undefined) {\n target.quoteMsg = item.quoteMsg\n }\n if (!target.createdAt && item.createdAt) {\n target.createdAt = item.createdAt\n }\n if (!target.messageId && item.messageId) {\n target.messageId = item.messageId\n }\n })\n\n if (mergedMessages.length !== messages.length) {\n messages.splice(0, messages.length, ...mergedMessages)\n }\n }\n\n function finalizeHistoryMessages(conversationId: string) {\n const currentConversation = conversation.messages[conversationId]\n if (!currentConversation?.message) return\n\n currentConversation.loading = false\n currentConversation.message.forEach((item) => {\n item.generating = false\n })\n }\n\n /** 清理子智能体历史消息的 generating 标记 */\n function finalizeSubMessages(messages: ConversationMessage[]) {\n messages.forEach((item) => {\n item.generating = false\n })\n normalizeMessagesByExecutionAndRole(messages)\n }\n\n /**\n * 消息回调\n * 处理思维链消息\n * @param msg - 步骤消息\n */\n function startCallback(msg: ConversationMessage, messages: ConversationMessage[], isMain: boolean) {\n const contentItem = msg.content[0] as RunStartedEvent\n if (contentItem.type !== 'runStarted') return\n\n // runStarted 标记一次新的执行开始:始终新建一条消息\n // (与 normalizeMessagesByExecutionAndRole 的 isNewTurn 判定保持一致,避免同一 executionId 复用时的合并错乱)\n messages.push({\n ...msg,\n content: [contentItem],\n generating: true\n })\n\n // 仅主智能体更新会话列表\n if (isMain) {\n const targetConversation = conversations.list.items.find((item) => item.id === msg.conversationId)\n if (targetConversation && msg.createdAt) {\n updateConversations({\n ...targetConversation,\n id: targetConversation.id as string,\n title: targetConversation.label as string,\n updatedAt: msg.createdAt\n })\n }\n }\n if (isMain) conversation.messages[msg.conversationId].loading = true\n }\n\n /**\n * 消息内容回调\n * 处理流式消息内容的追加\n * @param msg - 消息内容\n */\n function textCallback(msg: ConversationMessage, messages: ConversationMessage[], isMain: boolean) {\n const idx = findExecutionMsgIndex(msg, messages)\n const contents = idx !== -1 && messages[idx] ? messages[idx].content || [] : []\n\n const nextContent = msg.content[0] as TextEvent\n if (nextContent.type !== 'text') return\n const normalizedNextContent: TextEvent = { ...nextContent }\n\n if (idx === -1) {\n const finalMsg = {\n ...msg,\n content: [normalizedNextContent],\n generating: true\n }\n messages.push(finalMsg)\n } else {\n const lastContent = contents[contents.length - 1]\n\n if (lastContent?.type === 'text') {\n const lastTextContent = lastContent as TextEvent\n const mergedMessageContent = (lastTextContent.messageContent || '') + (normalizedNextContent.messageContent || '')\n const mergedReasoningContent = nextContent.reasoningContent\n ? (lastTextContent.reasoningContent || '') + nextContent.reasoningContent\n : lastTextContent.reasoningContent\n const nextTextContent: TextEvent = {\n ...lastTextContent,\n messageContent: mergedMessageContent,\n reasoningContent: mergedReasoningContent\n }\n messages[idx].content = [...contents.slice(0, -1), nextTextContent]\n } else {\n messages[idx].content = [...contents, normalizedNextContent]\n }\n }\n if (isMain) conversation.messages[msg.conversationId].loading = true\n }\n\n /**\n * 节点开始消息回调\n * 处理节点开始状态更新\n * @param msg - 节点开始消息\n */\n function stepStartedCallback(msg: ConversationMessage, messages: ConversationMessage[], isMain: boolean) {\n const idx = findExecutionMsgIndex(msg, messages)\n const contentItem = msg.content[0] as StepStartedEvent\n if (isMain) conversation.messages[msg.conversationId].loading = true\n\n if (idx !== -1 && messages[idx]) {\n const contentList = messages[idx].content || []\n const runStartedIndex = contentList.findIndex((item) => item.type === 'runStarted')\n const runStartedItem = runStartedIndex !== -1 ? (contentList[runStartedIndex] as RunStartedEvent | undefined) : undefined\n if (runStartedItem && contentItem.title) {\n const nextRunStartedItem: RunStartedEvent = { ...runStartedItem, title: contentItem.title }\n messages[idx].content = contentList.map((item, i) => (i === runStartedIndex ? nextRunStartedItem : item))\n }\n }\n\n if (isMain) config.hooks?.onStepMessage?.(msg)\n config.hooks?.onStepMessage?.(msg)\n }\n\n /**\n * 节点结束消息回调\n * 处理节点结束状态更新\n * @param msg - 节点结束消息\n */\n function stepFinishedCallback(msg: ConversationMessage, _messages: ConversationMessage[], isMain: boolean) {\n if (isMain) conversation.messages[msg.conversationId].loading = true\n if (isMain) config.hooks?.onStepMessage?.(msg)\n }\n\n /**\n * 节点错误消息回调\n * 处理节点错误状态更新\n * @param msg - 节点错误消息\n */\n function stepErrCallback(msg: ConversationMessage, messages: ConversationMessage[], isMain: boolean) {\n if (isMain) conversation.messages[msg.conversationId].loading = false\n const idx = findExecutionMsgIndex(msg, messages)\n const contentItem = msg.content[0] as StepErrorEvent\n\n messages.forEach((item) => {\n if (item.executionId === msg.executionId) {\n item.generating = false\n }\n })\n\n if (idx !== -1) {\n messages[idx].generating = false\n const prevContent = messages[idx]?.content || []\n messages[idx].content = [...prevContent, contentItem]\n } else {\n const finalMsg = { ...msg }\n finalMsg.generating = false\n messages.push(finalMsg)\n }\n if (isMain) config.hooks?.onStepMessage?.(msg)\n }\n\n function doneCallback(msg: ConversationMessage, messages: ConversationMessage[], isMain: boolean) {\n // 仅主会话需要关闭主会话 loading;子智能体消息走独立存储(subAgentMessages),不写主会话\n if (isMain) conversation.messages[msg.conversationId].loading = false\n // 使用传入的 messages(主会话 or 子智能体独立存储),而非硬编码主会话,\n // 确保子智能体消息实时推送完成后也能复位 generating,避免省略号一直显示\n if (messages) {\n const idx = findExecutionMsgIndex(msg, messages)\n const contentItem = msg.content[0]\n\n messages.forEach((item) => {\n if (item.executionId === msg.executionId) {\n item.generating = false\n }\n })\n\n if (contentItem?.type === 'runFailed') {\n if (idx !== -1) {\n const prevContent = messages[idx]?.content || []\n messages[idx].content = [...prevContent, contentItem]\n } else {\n const finalMsg = { ...msg, generating: false }\n messages.push(finalMsg)\n }\n }\n }\n if (isMain) config.hooks?.onAfterAcceptMessage?.(msg)\n }\n\n function titleCallback(msg: ConversationMessage, _messages: ConversationMessage[], isMain: boolean) {\n const content = msg.content[0] as ConversationNewTitleEvent\n if (content.type !== 'conversationNewTitle') return\n if (!isMain) return\n\n const title = content.title || ''\n const conversationId = msg.conversationId || ''\n if (content && conversations.list.items.length) {\n const idx = conversations.list.items.findIndex((item) => item.id === conversationId)\n if (idx === -1) return\n conversations.list.items[idx].label = title\n }\n }\n\n /**\n * 工具调用消息回调\n * @param msg - 工具调用消息\n */\n function toolCallCallback(msg: ConversationMessage, messages: ConversationMessage[], isMain: boolean) {\n let idx = -1\n const contentItem = msg.content[0] as ToolCallEvent\n if (contentItem.type !== 'toolCall') return\n\n if (contentItem.toolCallId) {\n idx = messages.findLastIndex((m) => m.content?.some((c) => c.type === 'toolCall' && (c as ToolCallEvent).toolCallId === contentItem.toolCallId))\n }\n\n if (idx === -1) {\n idx = findExecutionMsgIndex(msg, messages)\n }\n\n if (idx === -1) {\n const finalMsg = { ...msg, generating: true }\n messages.push(finalMsg)\n } else {\n const contents = messages[idx].content\n let existingItemIndex = contents.findIndex((item) => item.type === 'toolCall' && (item as ToolCallEvent).toolCallId === contentItem.toolCallId)\n // 兜底:toolCallId 匹配失败时,尝试匹配无 toolCallId 的流式 item(由 delta 按 index 创建)\n if (existingItemIndex === -1 && contentItem.toolCallId) {\n existingItemIndex = contents.findIndex(\n (item) => item.type === 'toolCall' && !(item as any).toolCallId && (item as any)._streamingIndex !== undefined\n )\n }\n\n if (existingItemIndex !== -1) {\n const nextItem: any = { ...contents[existingItemIndex] }\n const newContent = contentItem.content || (contentItem as any).arguments\n if (typeof newContent === 'string') {\n nextItem.content = (nextItem.content || '') + newContent\n } else if (newContent !== undefined) {\n nextItem.arguments = newContent\n }\n if (contentItem.toolName) nextItem.toolName = contentItem.toolName\n if (contentItem.title) nextItem.title = contentItem.title\n if (contentItem.status) nextItem.status = contentItem.status\n if (contentItem.toolIcon) nextItem.toolIcon = contentItem.toolIcon\n // 关键步骤:ToolCall.display 表示参数最终态,直接覆盖 argsDisplay,\n // 不再与流式阶段内容做字符串拼接,避免参数态/结果态语义混杂。\n if (contentItem.display?.title) nextItem.title = contentItem.display.title\n if (contentItem.display) {\n nextItem.argsDisplay = contentItem.display\n nextItem.displayProtocol = true\n }\n messages[idx].content = contents.map((item, i) => (i === existingItemIndex ? nextItem : item))\n } else {\n messages[idx].content = [...contents, { ...contentItem, displayProtocol: !!contentItem.display }]\n }\n }\n if (isMain) conversation.messages[msg.conversationId].loading = true\n }\n\n /**\n * 工具结果消息回调\n * @param msg - 工具结果消息\n */\n function toolResultCallback(msg: ConversationMessage, messages: ConversationMessage[], isMain: boolean) {\n const contentItem = msg.content[0] as ToolResultEvent\n if (contentItem.type !== 'toolResult') return\n\n let idx = -1\n if (contentItem.toolCallId) {\n idx = messages.findLastIndex((m) => m.content?.some((c) => c.type === 'toolCall' && (c as ToolCallEvent).toolCallId === contentItem.toolCallId))\n }\n\n if (idx === -1) {\n idx = findExecutionMsgIndex(msg, messages)\n }\n\n if (idx === -1) return\n\n const contents = messages[idx].content\n const toolCallIndex = contents.findIndex((item) => item.type === 'toolCall' && (item as ToolCallEvent).toolCallId === contentItem.toolCallId)\n\n if (toolCallIndex !== -1) {\n const nextToolCallItem: any = {\n ...contents[toolCallIndex],\n result: (contentItem as any).result ?? contentItem.content\n }\n if (contentItem.status) nextToolCallItem.status = contentItem.status\n if (contentItem.isError !== undefined) nextToolCallItem.isError = contentItem.isError\n if (contentItem.errorMessage) nextToolCallItem.errorMessage = contentItem.errorMessage\n const dur = contentItem.durationMs ?? contentItem.duration\n if (dur !== undefined) nextToolCallItem.duration = dur\n if (contentItem.title) nextToolCallItem.title = contentItem.title\n // 关键步骤:ToolResult.display 表示结果最终态,独立保存到 resultDisplay,\n // 前端按\"输入信息/执行结果\"两个区块渲染,而不是继续 append 到同一内容缓冲区。\n if (contentItem.display?.title) nextToolCallItem.title = contentItem.display.title\n if (contentItem.display) {\n nextToolCallItem.resultDisplay = contentItem.display\n nextToolCallItem.displayProtocol = true\n }\n // agent_spawn 工具结果携带 metadata.conversationId(子会话 ID),存入 toolCallItem 供懒加载\n const meta = (contentItem as any).metadata\n if (meta?.conversationId) {\n nextToolCallItem.subConversationId = meta.conversationId\n nextToolCallItem.hasSubAgent = true\n nextToolCallItem.agentName = msg.agentName || (meta as any).agentName || nextToolCallItem.agentName\n }\n messages[idx].content = contents.map((item, i) => (i === toolCallIndex ? nextToolCallItem : item))\n } else {\n messages[idx].content = [...contents, contentItem]\n }\n if (isMain) conversation.messages[msg.conversationId].loading = true\n }\n\n /**\n * A2UI 命令消息回调\n * @param msg - A2UI 命令消息\n */\n function a2uiCommandCallback(msg: ConversationMessage, messages: ConversationMessage[], isMain: boolean) {\n const idx = findExecutionMsgIndex(msg, messages)\n const contentItem = msg.content[0] as A2uiCommandEvent\n if (contentItem.type !== 'a2uiCommand') return\n\n if (idx === -1) {\n const finalMsg = { ...msg, generating: true }\n messages.push(finalMsg)\n } else {\n const prevContent = messages[idx]?.content || []\n messages[idx].content = [...prevContent, contentItem]\n }\n if (isMain) conversation.messages[msg.conversationId].loading = true\n }\n\n /**\n * toolCallDelta 增量回调\n * 追加参数 + 处理 displayDelta 流式展示 + 支持 index 匹配\n */\n function toolCallDeltaCallback(msg: ConversationMessage, messages: ConversationMessage[], isMain: boolean) {\n const contentItem = msg.content[0] as ToolCallDeltaEvent\n if (contentItem.type !== 'toolCallDelta') return\n\n // 匹配:优先 toolCallId,其次 index(toolCallId 为 null 时按 index 关联)\n let idx = -1\n if (contentItem.toolCallId) {\n idx = messages.findLastIndex((m) => m.content?.some((c) => c.type === 'toolCall' && (c as any).toolCallId === contentItem.toolCallId))\n }\n if (idx === -1 && contentItem.index !== undefined) {\n idx = messages.findLastIndex(\n (m) =>\n m.executionId === msg.executionId &&\n m.content?.some((c) => c.type === 'toolCall' && (c as any)._streamingIndex === contentItem.index && !(c as any).toolCallId)\n )\n }\n if (idx === -1) idx = findExecutionMsgIndex(msg, messages)\n\n // 构建 delta 新 item 的公共逻辑\n const buildNewItem = (): any => {\n const item: any = {\n type: 'toolCall' as const,\n toolCallId: contentItem.toolCallId || undefined,\n _streamingIndex: contentItem.index,\n toolName: contentItem.toolName || undefined,\n toolIcon: contentItem.toolIcon,\n title: contentItem.title,\n content: contentItem.displayDelta ? '' : contentItem.argumentsDelta || '',\n status: contentItem.status || ('running' as const),\n displayProtocol: !!contentItem.displayDelta\n }\n if (contentItem.displayDelta?.title) item.title = contentItem.displayDelta.title\n if (contentItem.displayDelta?.contentAppend) {\n item.streamingArgsDisplay = {\n title: contentItem.displayDelta.title,\n content: contentItem.displayDelta.contentAppend,\n kind: contentItem.displayDelta.kind,\n lang: contentItem.displayDelta.lang\n }\n }\n return item\n }\n\n if (idx === -1) {\n messages.push({ ...msg, content: [buildNewItem()], generating: true })\n } else {\n const contents = messages[idx].content\n let itemIdx = -1\n if (contentItem.toolCallId) {\n itemIdx = contents.findIndex((c) => c.type === 'toolCall' && (c as any).toolCallId === contentItem.toolCallId)\n }\n if (itemIdx === -1 && contentItem.index !== undefined) {\n itemIdx = contents.findIndex((c) => c.type === 'toolCall' && (c as any)._streamingIndex === contentItem.index && !(c as any).toolCallId)\n }\n\n if (itemIdx !== -1) {\n const existing = contents[itemIdx] as any\n const nextItem: any = {\n ...existing,\n type: 'toolCall',\n content: contentItem.displayDelta ? existing.content || '' : (existing.content || '') + (contentItem.argumentsDelta || '')\n }\n if (contentItem.toolCallId && !existing.toolCallId) nextItem.toolCallId = contentItem.toolCallId\n if (contentItem.toolName) nextItem.toolName = contentItem.toolName\n if (contentItem.title) nextItem.title = contentItem.title\n if (contentItem.status) nextItem.status = contentItem.status\n if (contentItem.toolIcon) nextItem.toolIcon = contentItem.toolIcon\n if (contentItem.displayDelta) nextItem.displayProtocol = true\n // 关键步骤:displayDelta 只表达“参数流式临时态”,只更新 streamingArgsDisplay。\n if (contentItem.displayDelta?.title) nextItem.title = contentItem.displayDelta.title\n if (contentItem.displayDelta?.contentAppend) {\n nextItem.streamingArgsDisplay = {\n title: contentItem.displayDelta.title || existing.streamingArgsDisplay?.title,\n content: (existing.streamingArgsDisplay?.content || '') + contentItem.displayDelta.contentAppend,\n kind: contentItem.displayDelta.kind || existing.streamingArgsDisplay?.kind,\n lang: contentItem.displayDelta.lang ?? existing.streamingArgsDisplay?.lang\n }\n }\n messages[idx].content = contents.map((c, i) => (i === itemIdx ? nextItem : c))\n } else {\n messages[idx].content = [...contents, buildNewItem()]\n }\n }\n if (isMain) conversation.messages[msg.conversationId].loading = true\n }\n\n /**\n * 查找包含指定 toolCallId 的消息及其 content item 位置\n */\n function findToolCallItemRecursive(\n messages: ConversationMessage[],\n toolCallId: string\n ): { messageList: ConversationMessage; itemIndex: number } | null {\n for (let i = messages.length - 1; i >= 0; i--) {\n const msg = messages[i]\n const contents = msg.content || []\n\n const itemIdx = contents.findIndex((c) => c.type === 'toolCall' && (c as ToolCallEvent).toolCallId === toolCallId)\n if (itemIdx !== -1) {\n return { messageList: msg, itemIndex: itemIdx }\n }\n }\n return null\n }\n\n /**\n * 兜底查找最近的\"spawn 类\"工具项(最后一次 toolCall/toolResult,含递归),\n * 用于子智能体消息未携带 toolCallId 或匹配不到父工具时的归属。\n */\n function findSpawnToolCallRecursive(messages: ConversationMessage[]): { messageList: ConversationMessage; itemIndex: number } | null {\n for (let i = messages.length - 1; i >= 0; i--) {\n const msg = messages[i]\n const contents = msg.content || []\n for (let k = contents.length - 1; k >= 0; k--) {\n const c = contents[k]\n if (c.type === 'toolCall' || c.type === 'toolResult') {\n return { messageList: msg, itemIndex: k }\n }\n }\n }\n return null\n }\n\n /**\n * 将子智能体消息路由到独立存储(以子会话 ID 为键)\n * 子智能体消息的 conversationId 即为子会话 ID,直接用它做独立存储\n */\n function routeSubAgentMessage(msg: ConversationMessage) {\n const subConvId = msg.conversationId\n if (!subConvId) return\n\n // 初始化子会话的消息列表\n if (!subAgentMessages.messages[subConvId]) {\n subAgentMessages.messages[subConvId] = []\n }\n\n // 复用 processMessageContent,目标是独立存储\n processMessageContent(msg, subAgentMessages.messages[subConvId])\n\n // 标记主会话中对应的 toolCallItem 为 hasSubAgent(供 UI 显示\"查看执行详情\"入口)\n // 遍历所有会话查找,避免用户切换会话后找不到 toolCallItem\n for (const convId of Object.keys(conversation.messages)) {\n const mainMessages = conversation.messages[convId]?.message\n if (!mainMessages) continue\n const found = msg.toolCallId ? findToolCallItemRecursive(mainMessages, msg.toolCallId) : findSpawnToolCallRecursive(mainMessages)\n if (!found) continue\n const { messageList, itemIndex } = found\n const contents = messageList.content\n const toolCallItem = contents[itemIndex] as ToolCallEvent & {\n hasSubAgent?: boolean\n subConversationId?: string\n agentName?: string\n }\n toolCallItem.hasSubAgent = true\n toolCallItem.subConversationId = subConvId\n // 让侧边栏标题能显示子智能体名称(而非回退到 toolName)\n toolCallItem.agentName = msg.agentName || toolCallItem.agentName\n messageList.content = contents.map((c, i) => (i === itemIndex ? { ...toolCallItem } : c))\n\n // 若侧边栏已打开且就是该子会话,同步刷新名称\n if (subAgentPanel.active?.subConversationId === subConvId && msg.agentName) {\n subAgentPanel.active.agentName = msg.agentName\n }\n break\n }\n }\n\n /**\n * 处理消息内容分发\n */\n function processSingleMessageContent(newMessage: ConversationMessage, messages: ConversationMessage[], isMain: boolean) {\n switch (newMessage.content[0].type) {\n case 'runStarted':\n startCallback(newMessage, messages, isMain)\n break\n case 'text':\n textCallback(newMessage, messages, isMain)\n break\n case 'stepStarted':\n stepStartedCallback(newMessage, messages, isMain)\n break\n case 'stepFinished':\n stepFinishedCallback(newMessage, messages, isMain)\n break\n case 'stepError':\n stepErrCallback(newMessage, messages, isMain)\n break\n case 'runFinished':\n case 'runFailed':\n case 'runStopped':\n doneCallback(newMessage, messages, isMain)\n break\n case 'conversationNewTitle':\n titleCallback(newMessage, messages, isMain)\n break\n case 'toolCall':\n toolCallCallback(newMessage, messages, isMain)\n break\n case 'toolCallDelta':\n toolCallDeltaCallback(newMessage, messages, isMain)\n break\n case 'toolResult':\n toolResultCallback(newMessage, messages, isMain)\n break\n case 'a2uiCommand':\n a2uiCommandCallback(newMessage, messages, isMain)\n break\n default: {\n const idx = findExecutionMsgIndex(newMessage, messages)\n if (idx === -1) {\n const finalMsg = { ...newMessage, generating: true }\n messages.push(finalMsg)\n } else {\n const prevContent = messages[idx]?.content || []\n messages[idx].content = [...prevContent, ...newMessage.content]\n }\n if (isMain) conversation.messages[newMessage.conversationId].loading = true\n break\n }\n }\n }\n\n function processMessageContent(message: ConversationMessage, targetMessages?: ConversationMessage[]) {\n const newMessage = {\n ...message,\n agentId: agent.agentInfo.id\n }\n const isMain = !targetMessages\n const messages = targetMessages ?? conversation.messages[newMessage.conversationId]?.message\n if (!messages) return\n\n const contentList = Array.isArray(newMessage.content) ? newMessage.content : []\n\n if (contentList.length === 0) {\n const idx = findExecutionMsgIndex(newMessage, messages)\n if (idx === -1) {\n messages.push({ ...newMessage })\n } else {\n const prevContent = messages[idx]?.content || []\n messages[idx] = {\n ...messages[idx],\n ...newMessage,\n content: prevContent\n }\n }\n\n normalizeMessagesByExecutionAndRole(messages)\n return\n }\n\n contentList.forEach((contentItem) => {\n processSingleMessageContent(\n {\n ...newMessage,\n content: [contentItem]\n },\n messages,\n isMain\n )\n })\n\n normalizeMessagesByExecutionAndRole(messages)\n }\n\n function isStoppedIncomingMessage(newMessage: ConversationMessage) {\n const messages = conversation.messages[newMessage.conversationId]?.message\n if (!messages) return false\n\n // 检查主消息列表\n return messages.some((item) => item.stopFlag && item.executionId === newMessage.executionId)\n }\n\n /**\n * 接收WebSocket消息的统一入口\n * 根据消息类型分发到不同的处理函数\n * @param newMessage - 新消息对象\n */\n const acceptMessage = async (newMessage: ConversationMessage) => {\n const conversationId = newMessage.conversationId\n const isActive = conversation.active.id === conversationId\n\n // 子智能体消息分流:携带 parentExecutionId 或 depth>0 的消息属于子智能体\n // 关键:先于 conversationId 早退判断——子智能体消息的 conversationId 是子会话 id,父工具块在当前主会话中\n const isSubAgent = !!newMessage.parentExecutionId || (newMessage.depth ?? 0) > 0\n if (isSubAgent) {\n const canProceed = await config.hooks?.onBeforeAcceptMessage?.(newMessage, isActive)\n if (canProceed === false) {\n throw new Error('操作被阻止')\n }\n routeSubAgentMessage(newMessage)\n return\n }\n\n if (!conversation.messages[conversationId]?.message) return\n const canProceed = await config.hooks?.onBeforeAcceptMessage?.(newMessage, isActive)\n if (canProceed === false) {\n throw new Error(t(`${NS_CHAT_COPILOT}:operationBlocked`))\n }\n\n if (isStoppedIncomingMessage(newMessage)) {\n conversation.messages[conversationId].loading = false\n return\n }\n processMessageContent(newMessage)\n }\n\n const sendMessage = async (\n message?: ConversationMessageSend['message'],\n msgFiles = [] as ConversationMessageSend['files'],\n params?: ObjectType<any>\n ) => {\n const conversationId = conversation.active.id\n if (conversation.messages[conversationId].loading) return\n let msgContent: ConversationMessageSend['message'] = '',\n files: ConversationMessageSend['files'] | undefined\n const references = conversation.messages[conversationId].references\n if (message) {\n msgContent = message\n files = [...msgFiles, ...(conversation.messages[conversationId].files || [])]\n } else {\n if (references?.type === 1 && references?.content?.msgContent) {\n msgContent = references.content.msgContent + '\\n\\n'\n }\n msgContent = msgContent + conversation.messages[conversationId].content!\n files = conversation.messages[conversationId].files\n }\n if (!msgContent) return\n\n const canProceed = await config.hooks?.onBeforeSend?.(msgContent, files || [])\n if (canProceed === false) return\n\n // 校验 userInput\n if (conversation.active.userInput?.length) {\n const invalid = conversation.active.userInput.some((item) => {\n const isRequired = item.rules?.some((r) => r.type === 'required')\n if (isRequired) {\n if (item.type === 'BOOLEAN') {\n return isNullOrUnDef(item.value)\n }\n return isNullOrUnDef(item.value) || item.value === ''\n }\n return false\n })\n if (invalid) {\n antdMessage.error(t(`${NS_CHAT_COPILOT}:checkParams`))\n return\n }\n }\n\n conversation.messages[conversationId].loading = true\n\n // 如果当前会话没有标题(新创建的隐式会话),则给一个默认标题,使其在发送消息后显示在列表中\n const idx = conversations.list.items.findIndex((item) => item.id === conversationId)\n if (idx !== -1 && !conversations.list.items[idx].label) {\n conversations.list.items[idx].label = t(`${NS_CHAT_COPILOT}:newConversationTitle`)\n }\n\n const sendParams = {\n conversationId,\n message: msgContent,\n convMeta: config.params.convMeta,\n files,\n spec: {\n ...conversation.active.spec,\n model: {\n providerName: agent.agentInfo.spec?.model?.providerName || '',\n modelName: agent.agentInfo.spec?.model?.modelName || '',\n reasoning: agent.agentInfo.spec?.model?.reasoning ?? false\n }\n },\n stream: true,\n responseMode: 2\n } as ConversationMessageSend\n\n // 参数合并\n const extraParams = deepCopy(config.params?.params || {}) as ChatParams['params']\n const userInputParams = variablesToObject(conversation.active.userInput || [])\n Object.assign(extraParams, message ? {} : { ...references?.params }, params, userInputParams)\n sendParams.params = extraParams\n\n if (!message) {\n setContent('')\n setContentParams()\n setReferences()\n }\n setFileList([])\n setHeaderOpen(false)\n\n try {\n const dealedParams = await config.hooks?.onHandleSendParams?.(sendParams)\n await config.services.request.sendMessageStream(dealedParams || sendParams, agent.agentInfo?.id || '')\n config.hooks?.onAfterSend?.()\n } catch (err) {\n // HTTP 请求失败时(如 422),WebSocket 不会有消息回来,需要手动重置 loading\n conversation.messages[conversationId].loading = false\n const errMsg = (err as any)?.response?.data?.message || (err as any)?.message || t(`${NS_CHAT_COPILOT}:sendFailed`)\n antdMessage.error(errMsg)\n throw err\n } finally {\n // loading关闭由websocket消息执行\n // conversation.messages[conversationId].loading = false\n }\n }\n\n // 取消接收消息\n const cancelReceive = async () => {\n const messages = conversation.messages[conversation.active.id].message\n if (messages.length > 0) {\n const lastMsg = messages[messages.length - 1]\n if (lastMsg.executionId) {\n await config.services.request.cancelMessage(lastMsg.executionId)\n\n // 递归标记所有层级消息的停止状态\n const markStopped = (msgList: ConversationMessage[], matchExecutionId: boolean) => {\n msgList.forEach((item) => {\n if (matchExecutionId && item.executionId === lastMsg.executionId) {\n item.generating = false\n item.stopFlag = true\n }\n if (item.content && Array.isArray(item.content)) {\n item.content.forEach((contentItem: any) => {\n if (contentItem.type === 'toolCall' && contentItem.status !== 'success' && contentItem.status !== 'error') {\n contentItem.status = 'error'\n }\n })\n }\n })\n }\n markStopped(messages, true)\n } else {\n lastMsg.stopFlag = true\n lastMsg.generating = false\n }\n }\n conversation.messages[conversation.active.id].loading = false\n }\n\n return {\n /** 获取模型列表 */\n getModels,\n /** 全局配置对象 */\n config,\n /** 设置服务配置 */\n setServices,\n /** 智能体状态 */\n agent,\n /** 设置文件预览 */\n setPreview,\n /** 设置参数 */\n setParams,\n /** 设置布局配置 */\n setLayout,\n /** 设置智能体执行链展示模式(聚合 / 顺序) */\n setExecMode,\n /** 获取会话执行轨迹(debug 模式) */\n fetchExecutionDebug,\n /** 设置生命周期钩子 */\n setHooks,\n /** 获取智能体详情 */\n getAgentInfo,\n /** 设置智能体 */\n setAgent,\n /** 设置智能体用户输入 */\n setUserInput,\n /** 设置会话配置 */\n setConversationSpec,\n /** 历史会话状态 */\n conversations,\n /** 获取会话列表 */\n getConversations,\n /** 删除会话 */\n delConversation,\n /** 设置内容参数,透传大模型后清空 */\n setContentParams,\n /** 当前会话状态 */\n conversation,\n /** 设置引用消息 */\n setReferences,\n /** 设置消息内容 */\n setContent,\n /** 设置文件列表 */\n setFileList,\n /** 设置头部展开状态 */\n setHeaderOpen,\n /** 创建新会话 */\n createConversation,\n /** 切换会话 */\n switchConversation,\n /** 初始化会话 */\n initConversation,\n /** 发送消息 */\n sendMessage,\n /** 取消接收 */\n cancelReceive,\n /** 接收消息 */\n acceptMessage,\n /** 获取智能体用户输入 */\n getUserInput,\n /** 消息反馈 */\n feedback,\n /** 设置会话用户输入 */\n setConversationUserInput,\n /** 收藏管理 */\n favorite,\n /** 获取会话收藏列表 */\n getConversationFavorite,\n /** 收藏会话 */\n collectConversation,\n /** 子智能体执行详情面板状态 */\n subAgentPanel,\n /** 子智能体消息独立存储(实时推送 + 懒加载) */\n subAgentMessages,\n /** 打开子智能体执行详情面板 */\n openSubAgent,\n /** 关闭子智能体执行详情面板 */\n closeSubAgent,\n /** 右侧面板聚焦意图(通用) */\n focusTarget\n }\n}\n","import { Avatar } from 'antd'\nimport React, { useEffect, useRef, useState } from 'react'\nimport { useChatStore } from '../../stores/Context'\n\ninterface AuthImageProps {\n path?: string // 图片接口地址(需要鉴权)\n size?: number // 头像大小\n shape?: 'square' | 'circle' // 头像形状\n}\n\nconst AuthImage: React.FC<AuthImageProps> = ({ path, size, shape = 'square' }) => {\n const chatStore = useChatStore()\n const [imgSrc, setImgSrc] = useState<string | null>(null)\n const blobUrlRef = useRef<string | null>(null)\n\n useEffect(() => {\n if (!path) {\n return\n }\n\n const loadAuthImage = async () => {\n try {\n const blob = await chatStore.config.services.request.getAgentAvatar(path)\n const imgUrl = URL.createObjectURL(blob)\n // 清理上一个 blob URL(防止内存泄漏)\n if (blobUrlRef.current) {\n URL.revokeObjectURL(blobUrlRef.current)\n }\n blobUrlRef.current = imgUrl\n\n setImgSrc(imgUrl)\n } finally {\n }\n }\n\n loadAuthImage()\n\n // 组件卸载时清理 blob URL 和 取消请求\n return () => {\n if (blobUrlRef.current) {\n URL.revokeObjectURL(blobUrlRef.current)\n blobUrlRef.current = null\n }\n }\n }, [path]) // 当 path 变化时重新加载\n\n return <Avatar shape={shape} size={size} src={imgSrc} />\n}\n\nexport default AuthImage\n","window._iconfont_svg_string_5021436='<svg><symbol id=\"icon-Ollama\" viewBox=\"0 0 1024 1024\"><path d=\"M686.682353 446.524235a33.912471 33.912471 0 0 0-21.022118 17.648941l-2.710588 5.601883 0.060235 7.830588c0 7.228235 0.180706 8.131765 2.228706 13.251765 2.831059 7.228235 5.722353 11.745882 10.962824 16.865882 9.035294 8.975059 19.215059 11.264 32.828235 7.710118a32.346353 32.346353 0 0 0 22.467765-35.177412c-2.409412-17.046588-12.408471-29.455059-27.286588-33.731765a41.381647 41.381647 0 0 0-17.468236 0z m-346.473412 0.180706a37.948235 37.948235 0 0 0-24.455529 24.094118 45.176471 45.176471 0 0 0-2.228706 19.516235 33.129412 33.129412 0 0 0 22.467765 25.118118c13.673412 3.614118 23.792941 1.204706 32.828235-7.710118a42.887529 42.887529 0 0 0 10.962823-16.865882 25.479529 25.479529 0 0 0 2.228706-13.251765v-7.830588l-2.650353-5.601883a33.852235 33.852235 0 0 0-21.263058-17.769411 37.647059 37.647059 0 0 0-17.889883 0.301176z m157.515294 75.294118c-4.939294 2.650353-8.372706 9.396706-7.348706 14.396235 1.204706 5.421176 5.963294 10.842353 13.312 15.299765 3.975529 2.409412 4.216471 2.710588 4.397177 5.12a45.899294 45.899294 0 0 1-1.084235 9.155765 65.656471 65.656471 0 0 0-1.325177 8.372705 15.661176 15.661176 0 0 0 5.360941 9.517177c2.409412 1.987765 2.831059 2.048 9.637647 2.228706 6.144 0.180706 7.408941 0 9.878589-1.144471 6.384941-3.072 8.011294-8.794353 5.662117-19.757176-1.927529-9.155765-1.566118-10.541176 3.252706-13.372236a33.731765 33.731765 0 0 0 12.227765-11.806117 13.733647 13.733647 0 0 0-6.625883-18.070588 15.058824 15.058824 0 0 0-6.806588-1.204706c-4.698353 0-7.770353 1.084235-13.312 4.638117l-3.252706 1.987765-1.987764-1.204706c-8.252235-4.879059-9.758118-5.421176-14.697412-5.421176a15.058824 15.058824 0 0 0-7.228235 1.204706z m14.697412-82.642824a205.763765 205.763765 0 0 0-24.636235 3.252706 169.381647 169.381647 0 0 0-35.779765 12.348235c-35.418353 17.287529-59.813647 46.140235-67.282823 79.510589-1.505882 6.625882-1.686588 8.854588-1.686589 19.998117 0 11.083294 0.180706 13.432471 1.626353 19.757177 9.938824 43.670588 50.115765 75.896471 102.159059 81.799529 11.324235 1.204706 60.114824 1.204706 71.378824 0 41.803294-4.758588 77.703529-27.407059 93.846588-59.151059a85.534118 85.534118 0 0 0 8.31247-22.64847 68.065882 68.065882 0 0 0 1.626353-19.696941c0-11.203765-0.180706-13.372235-1.686588-19.998118-10.842353-48.549647-57.946353-86.738824-115.651765-93.967059a264.011294 264.011294 0 0 0-32.225882-1.204706z m24.274824 35.237647c19.335529 2.168471 37.948235 8.794353 54.211764 19.395765 8.432941 5.541647 20.239059 17.227294 25.298824 24.877177 6.204235 9.456941 9.758118 19.154824 11.38447 30.900705a44.815059 44.815059 0 0 1-1.626353 18.130824c-3.011765 13.010824-12.468706 26.503529-25.298823 36.020706-8.011294 5.481412-16.745412 9.878588-25.901177 13.131294-14.456471 4.577882-23.853176 5.421176-57.46447 5.180235-21.865412-0.240941-25.780706-0.361412-32.105412-1.566117-21.443765-4.035765-38.430118-12.589176-50.838588-25.6a59.994353 59.994353 0 0 1-16.865882-35.599059c-1.204706-7.228235 0.903529-19.215059 5.12-29.214118 5.12-12.288 18.371765-27.527529 31.442823-36.261647a124.687059 124.687059 0 0 1 53.609412-19.275294 197.571765 197.571765 0 0 1 29.033412-0.120471zM329.487059 60.476235c-9.276235 1.807059-18.070588 5.601882-25.660235 11.264-21.624471 16.384-38.309647 51.2-45.417412 94.629647-2.590118 16.384-4.457412 39.152941-4.457412 56.621177 0 20.48 2.409412 46.622118 5.842824 64.752941 0.722824 4.035765 1.204706 7.589647 0.843294 7.830588l-7.04753 5.722353c-13.552941 11.143529-25.539765 24.094118-35.719529 38.369883a207.088941 207.088941 0 0 0-35.358118 88.064 248.470588 248.470588 0 0 0-0.903529 51.079529c3.433412 29.394824 12.227765 54.211765 27.407059 76.8l4.818823 7.348706-1.325176 2.409412c-10.119529 17.046588-18.733176 41.562353-22.768942 65.234823-3.192471 18.672941-3.614118 23.672471-3.614117 48.730353 0 25.178353 0.361412 30.177882 3.312941 47.585882 3.614118 20.961882 10.842353 43.068235 18.974118 57.825883 2.650353 4.818824 9.155765 14.757647 9.938823 15.299764 0.240941 0.120471-0.602353 2.529882-1.807059 5.300706-9.878588 22.467765-16.865882 46.200471-20.60047 70.475294-2.108235 12.348235-3.011765 24.877176-2.650353 37.345883 0 21.082353 1.204706 31.322353 5.601882 48.188235l0.602353 2.409412h55.657412l-1.867294-3.433412c-11.203765-20.781176-12.227765-59.271529-2.590118-97.761882 4.397176-17.769412 9.396706-30.840471 18.733177-48.790588l5.601882-10.902589v-6.625882c0-6.264471-0.120471-6.987294-2.168471-11.083294a33.912471 33.912471 0 0 0-7.28847-9.396706 64.030118 64.030118 0 0 1-14.456471-20.48c-16.022588-34.635294-19.094588-86.016-7.830588-129.867294 4.638118-18.311529 12.348235-34.575059 20.48-43.489883a30.117647 30.117647 0 0 0 8.372706-19.998117 27.587765 27.587765 0 0 0-8.432941-19.636706 118.241882 118.241882 0 0 1-30.72-65.054118c-5.300706-36.141176 4.216471-75.535059 25.901176-106.736941 21.202824-30.599529 50.959059-50.296471 84.208941-55.536941 7.529412-1.204706 21.504-1.024 29.214118 0.421647 8.553412 1.505882 13.854118 1.024 19.275294-1.566118 6.746353-3.192471 10.119529-7.168 14.095059-16.263529a80.715294 80.715294 0 0 1 13.552941-21.684706c8.794353-10.842353 17.347765-18.371765 30.960941-27.407059 15.540706-10.179765 33.249882-17.588706 50.898824-21.082353 6.384941-1.325176 9.396706-1.566118 21.443764-1.566117 11.986824 0 14.938353 0.240941 21.38353 1.505882 26.985412 5.842824 51.862588 18.793412 72.041412 37.586824 4.457412 4.096 15.058824 17.167059 18.371764 22.64847 1.325176 2.108235 3.614118 6.625882 4.99953 10.059294 3.975529 9.035294 7.348706 13.010824 14.095059 16.143059a29.214118 29.214118 0 0 0 18.913882 1.746824c12.890353-2.228706 22.889412-2.048 35.538823 0.602353 43.008 8.613647 80.534588 44.152471 97.15953 91.738352 14.456471 41.682824 10.360471 85.353412-11.14353 118.66353-3.674353 5.662118-7.288471 10.24-12.589176 15.781647-11.324235 12.107294-11.324235 27.166118 0 39.634823 18.552471 20.299294 30.117647 70.294588 26.624 114.326589-2.288941 29.033412-9.758118 55.055059-20.058353 69.812706a75.294118 75.294118 0 0 1-8.432941 9.637647 33.972706 33.972706 0 0 0-7.288471 9.456941c-2.048 4.096-2.168471 4.818824-2.16847 11.023059v6.686117l5.601882 10.962824c9.336471 17.889882 14.275765 30.960941 18.733177 48.730353 9.517176 37.948235 8.673882 75.655529-2.228706 97.159529a36.141176 36.141176 0 0 0-1.626353 3.674353c0 0.240941 12.348235 0.361412 27.527529 0.361412h27.467294l0.783059-2.770824 1.325177-5.059764a278.287059 278.287059 0 0 0 3.312941-19.395765 337.679059 337.679059 0 0 0 0-47.405177c-4.096-32.948706-11.083294-59.090824-22.467765-83.787294-1.204706-2.770824-1.987765-5.180235-1.686588-5.300706a53.729882 53.729882 0 0 0 4.035764-5.722352c14.155294-21.443765 22.889412-48.368941 27.286589-83.907765 1.144471-9.758118 1.144471-51.802353 0-61.259294a243.049412 243.049412 0 0 0-13.131294-57.404236 226.063059 226.063059 0 0 0-12.408471-26.383058l-1.385412-2.409412 4.939294-7.288471a169.863529 169.863529 0 0 0 27.346824-76.8c1.445647-17.046588 1.204706-34.153412-0.90353-51.139764a207.088941 207.088941 0 0 0-35.358117-88.064 199.619765 199.619765 0 0 0-35.779765-38.369883l-6.987294-5.722353a26.383059 26.383059 0 0 1 0.843294-7.830588c7.830588-40.96 7.589647-91.979294-0.602353-131.915294-7.168-34.755765-20.178824-62.403765-36.924235-78.305882-13.251765-12.769882-26.925176-18.191059-43.248941-17.167059-37.526588 2.228706-67.764706 45.357176-79.691294 113.302588-1.686588 9.035294-2.891294 18.191059-3.614118 27.346823 0 1.325176-0.301176 2.469647-0.602353 2.469648a37.586824 37.586824 0 0 1-5.601882-2.95153 182.994824 182.994824 0 0 0-92.400942-26.202353c-31.322353 0-63.548235 9.155765-92.461176 26.262588a37.707294 37.707294 0 0 1-5.601882 2.95153c-0.301176 0-0.602353-1.144471-0.602353-2.469647a263.589647 263.589647 0 0 0-3.614118-27.346824C409.419294 112.64 384.602353 72.282353 351.593412 62.042353a75.535059 75.535059 0 0 0-22.046118-1.566118z m11.083294 52.826353c9.336471 7.408941 19.696941 28.551529 25.660235 52.224a199.499294 199.499294 0 0 1 4.156236 19.757177c2.529882 13.733647 3.674353 28.611765 3.855058 46.682353l0.060236 17.889882-4.517647 6.625882-4.457412 6.625883h-10.480941c-12.167529 0-24.274824 1.566118-35.900236 4.698353l-8.975058 2.288941c-1.204706 0.240941-1.385412-0.120471-2.108236-5.421177a316.235294 316.235294 0 0 1 0.602353-87.461647c4.638118-29.696 15.540706-56.500706 26.202353-64.451764 2.529882-1.807059 3.011765-1.807059 5.903059 0.542117z m369.844706-0.481882c6.445176 4.758588 13.492706 17.347765 18.793412 33.430588 10.541176 32.165647 13.552941 76.378353 7.951058 118.422588-0.722824 5.240471-0.903529 5.662118-2.108235 5.421177l-9.035294-2.288941a139.264 139.264 0 0 0-35.84-4.638118h-10.480941l-4.457412-6.686118-4.517647-6.625882 0.060235-17.829647c0.180706-25.178353 2.529882-44.815059 8.07153-66.740706 5.903059-23.431529 16.323765-44.574118 25.6-51.983059 2.951529-2.349176 3.373176-2.409412 6.023529-0.481882z\" fill=\"#1E1E1E\" ></path></symbol><symbol id=\"icon-Zhipu\" viewBox=\"0 0 1024 1024\"><path d=\"M511.6512 958.56213333a9.3088 9.3088 0 0 0-9.46453333 9.62026667 9.3088 9.3088 0 0 0 9.46453333 9.6576 9.3088 9.3088 0 0 0 9.50293333-9.6576 9.3088 9.3088 0 0 0-8.53333333-9.5808l-0.97066667-0.03946667z m-89.9872-703.53066666c34.592 11.08266667 53.66933333 48.09066667 42.6272 82.69546666l-2.75413333 6.672-0.6208 1.552-0.6976 2.09386667c-2.71573333 6.20586667-4.03413333 12.41173333-4.03413334 19.31733333-1.35786667 27.53813333 18.22933333 49.60853333 46.00213334 50.96533334h14.19733333c50.77226667 2.05653333 90.6848 45.49866667 88.66773333 97.8624-2.01706667 51.66506667-44.68266667 92.31466667-96.11626666 90.25813333H502.18666667c-27.73333333 0.69866667-49.41546667 24.82453333-48.0576 53.06133333 0 4.81066667 0.6976 8.9216 2.05546666 13.072 8.10666667 14.4672 20.94506667 25.52213333 37.23626667 31.02933334 29.09013333 8.9216 58.84053333-4.848 73.696-30.33173334l0.69866667-1.3568c15.59253333-24.82453333 45.38133333-37.23733333 74.47253333-27.57866666 33.12426667 11.01653333 53.4496 47.55413333 42.6272 84.05333333a64.42666667 64.42666667 0 0 1-80.56213333 42.74346667A66.36586667 66.36586667 0 0 1 569.17333333 743.56266667l-0.6592-1.35786667c-7.75786667-12.528-17.95946667-22.496-33.00906666-27.5776l-2.17173334-0.69866667c-28.93226667-9.70773333-60.69013333 2.416-75.79093333 28.93546667a64.3872 64.3872 0 0 1-41.3088 29.63413333c-34.98346667 7.4944-69.45173333-14.66986667-77.1488-49.6096-8.10666667-35.14133333 12.87786667-70.98133333 48.75626667-79.24266666a58.5696 58.5696 0 0 1 11.48053333-1.35786667h0.69866667c26.37546667-2.75413333 44.64426667-24.12586667 43.2864-51.70346667a50.69546667 50.69546667 0 0 0-8.80426667-26.88 97.55093333 97.55093333 0 0 1-14.19733333-54.4192 92.70293333 92.70293333 0 0 1 14.19733333-46.85546666c5.42933333-7.56373333 8.14506667-17.22133333 8.80426667-26.88 0.69866667-27.5392-19.62666667-48.91093333-46.00213334-51.66506667l-2.71466666-0.69866667a55.46666667 55.46666667 0 0 1-11.59786667-2.71466666l-1.9392-0.736c-33.38453333-11.96586667-51.32586667-48.192-40.61013333-81.99786667 10.7616-34.11626667 47.0144-53.17866667 81.22133333-42.70506667zM205.42293333 647.17653333c10.08426667-10.24 24.78506667-14.23573333 38.55466667-10.47253333 13.7696 3.72266667 24.55253333 14.69973333 28.2368 28.70293333 3.68533333 14.04053333-0.27093333 29.01333333-10.35626667 39.29173334-15.59253333 15.90293333-40.84266667 15.90293333-56.4352 0-15.57973333-15.99466667-15.57973333-41.48906667 0-57.48266667v-0.03946667z m575.80266667-11.40373333c13.92426667-3.4912 28.62506667 0.9312 38.4768 11.52 9.85173333 10.62826667 13.344 25.79413333 9.19253333 39.7568-4.14933333 13.96373333-15.36 24.592-29.32266666 27.85066667-21.3728 4.96426667-42.66666667-8.53333333-47.70986667-30.29333334-5.14773333-21.568 7.904-43.29173333 29.3632-48.87253333v0.0384z m-2.4832-170.27733333c12.1792 12.41173333 19.00586667 29.2064 19.00586667 46.7776 0 17.53173333-6.82666667 34.36586667-19.00586667 46.7776-12.2176 12.41173333-28.70293333 19.39413333-45.96266667 19.39413333-17.2224 0-33.74613333-6.9824-45.92533333-19.39413333-25.38453333-26.0192-25.38453333-67.536 0-93.5552a64.15466667 64.15466667 0 0 1 91.888 0z m-436.0896 6.32213333c14.11946667 18.77333333 17.33866667 43.75253333 8.45653333 65.58933333a64.58133333 64.58133333 0 0 1-84.86826666 35.8016c-33.16266667-13.96373333-48.87253333-52.67413333-35.17973334-86.4192a65.16266667 65.16266667 0 0 1 51.5872-40.26133333c23.0016-3.104 45.88586667 6.55466667 60.00426667 25.2896z m447.80373333-163.72266667c14.27413333 0 27.46133333 7.75786667 34.5984 20.32426667 7.13706667 12.56746667 7.13706667 28.08213333 0 40.65066667a39.79626667 39.79626667 0 0 1-34.5984 20.32426666c-22.03093333 0-39.95093333-18.2304-39.95093333-40.65066666 0-22.4576 17.92-40.64853333 39.95093333-40.64853334z m-556.91306666 0c14.27413333 0 27.42293333 7.75786667 34.56 20.32426667 7.136 12.56746667 7.136 28.08213333 0 40.65066667a39.79626667 39.79626667 0 0 1-34.56 20.32426666c-22.06933333 0-39.95093333-18.2304-39.95093334-40.65066666 0-22.4576 17.88053333-40.64853333 39.95093334-40.64853334z m389.0784-57.21173333c35.87946667 0 64.97066667 29.63306667 64.97066666 66.17173333 0 36.5376-29.0912 66.13333333-64.97066666 66.13333334-35.8784 0-64.93013333-29.59573333-64.93013334-66.13333334 0-36.53866667 29.0912-66.17173333 64.93013334-66.17173333z m-101.856-26.5312c14.0416-3.1808 25.328-13.808 29.51786666-27.8496a41.19253333 41.19253333 0 0 0-9.232-39.87306667 39.44746667 39.44746667 0 0 0-38.63253333-11.40373333c-21.216 5.42933333-34.17173333 27.15093333-29.168 48.75626667 5.04213333 21.64266667 26.18133333 35.17973333 47.51466667 30.37013333z m0 654.58133333c13.92533333-3.37493333 24.9792-13.9648 29.0912-27.92746666a41.19253333 41.19253333 0 0 0-9.19253334-39.52533334 39.48586667 39.48586667 0 0 0-38.20586666-11.67466666 40.22293333 40.22293333 0 0 0-29.55733334 27.8112c-4.1888 14.00213333-0.6592 29.24586667 9.27146667 39.87306666 9.50293333 10.2016 23.50506667 14.624 36.96426667 11.8304l1.6672-0.38826666h-0.0384z m192.54186666-696.23893333a24.47466667 24.47466667 0 0 0 24.3584-24.82453333c0-13.7696-10.82133333-24.82346667-24.3584-24.82346667a24.47466667 24.47466667 0 0 0-24.3584 24.82346667c0 13.77066667 10.8608 24.82453333 24.3584 24.82453333z m-402.61546666 0a24.47466667 24.47466667 0 0 0 24.3584-24.82453333c0-13.7696-10.8608-24.82346667-24.3584-24.82346667a24.47466667 24.47466667 0 0 0-24.3584 24.82346667c0 13.77066667 10.82133333 24.82453333 24.3584 24.82453333zM109.69493333 487.25333333a24.47466667 24.47466667 0 0 0-24.35946666 24.82453334c0 13.7312 10.8608 24.78506667 24.35946666 24.78506666 13.0944-0.05333333 23.8208-10.4192 24.32-23.50506666l0.0384-1.3184a24.048 24.048 0 0 0-24.3584-24.82453334v0.0384zM310.69226667 841.38666667a24.47466667 24.47466667 0 0 0-24.3584 24.82346666c0 13.77066667 10.82133333 24.82453333 24.3584 24.82453334a24.47466667 24.47466667 0 0 0 24.3584-24.82453334c0-13.7696-10.8608-24.82346667-24.3584-24.82346666z m402.61546666 0.6976a24.47466667 24.47466667 0 0 0-24.3584 24.82453333c0 13.7696 10.8608 24.82346667 24.3584 24.82346667a24.47466667 24.47466667 0 0 0 24.3584-24.82346667c0-13.77066667-10.82133333-24.82453333-24.3584-24.82453333zM914.30506667 487.25333333a24.47466667 24.47466667 0 0 0-24.3584 24.82453334c0 13.7312 10.8224 24.78506667 24.3584 24.78506666a24.47466667 24.47466667 0 0 0 24.35946666-24.82346666c0-13.77066667-10.8608-24.82453333-24.35946666-24.82453334v0.0384z m-14.89386667-193.62773333a9.3088 9.3088 0 0 0 9.46453333-9.6576 9.3088 9.3088 0 0 0-9.46453333-9.65866667 9.3088 9.3088 0 0 0-9.46453333 9.65866667c0 5.5072 4.7328 9.6576 9.46453333 9.6576zM511.6512 66.2144a9.3088 9.3088 0 0 0 9.50293333-9.62026667 9.3088 9.3088 0 0 0-9.5424-9.6576 9.3088 9.3088 0 0 0-9.46346666 9.6576c0 5.15946667 4.1888 9.15413333 8.6496 9.5808l0.81386666 0.03946667h0.03946667zM124.5504 293.6256a9.3088 9.3088 0 0 0 9.50293333-9.6576 9.3088 9.3088 0 0 0-9.46453333-9.65866667 9.3088 9.3088 0 0 0-9.46453333 9.65866667 9.3088 9.3088 0 0 0 9.46453333 9.6576h-0.0384z m0 436.86613333a9.3088 9.3088 0 0 0-9.42613333 9.6192 9.3088 9.3088 0 0 0 9.46453333 9.6576 9.3088 9.3088 0 0 0 9.46453333-9.6576 9.77493333 9.77493333 0 0 0-9.46453333-9.6192h-0.0384z m775.5584-0.69866666a9.3088 9.3088 0 0 0-9.50293333 9.6192 9.3088 9.3088 0 0 0 9.504 9.696 9.3088 9.3088 0 0 0 9.46346666-9.696 9.77493333 9.77493333 0 0 0-9.46453333-9.6192z\" fill=\"#3859FF\" ></path></symbol><symbol id=\"icon-lolrai\" viewBox=\"0 0 1024 1024\"><path d=\"M1002.50055111 880.16668445c-1.16508445 12.23338667-4.07779555 25.04931555-12.81592889 34.3699911-17.47626667 19.22389333-46.02083555 15.14609778-68.73998222 14.56355556-54.17642667-1.74762667-139.22759111-13.98101333-226.60892445-57.67168-13.98101333-6.99050667-27.96202667-14.56355555-41.36049777-22.71914666-6.40796445-4.07779555-13.39847111-8.15559111-19.80643556-12.8159289-5.82542222-3.49525333-12.23338667-6.99050667-16.31118222-12.81592888-2.91271111-4.07779555-4.07779555-9.90321778-2.33016889-15.14609778 1.16508445-4.07779555 4.07779555-6.99050667 7.57304889-9.32067556 3.49525333-2.33016889 20.97152-11.65084445 25.63185778-14.56355555 8.73813333-5.24288 18.05880889-11.06830222 26.2144-17.47626667 16.89372445-11.65084445 33.78744889-25.04931555 49.51608889-38.44778666 33.20490667-29.12711111 63.49710222-62.91456 88.54641778-99.03217778 8.15559111-12.23338667 14.56355555-25.63185778 26.2144-34.95253334 13.98101333-10.48576 31.45728-13.39847111 47.18592-5.82542222 11.06830222 5.24288 19.22389333 13.98101333 27.37948444 22.71914667 24.46677333 27.37948445 46.60337778 58.25422222 61.16693333 92.04167111 0 0.58254222 0.58254222 0.58254222 0.58254223 1.16508444 13.98101333 31.45728 23.30168889 65.82727111 27.37948444 100.19726222l1.74762666 19.22389334c1.16508445 16.89372445 0.58254222 33.78744889-1.16508444 50.68117333 0.58254222 2.33016889 0.58254222 4.07779555 0 5.82542223zM768.31857778 435.10442667c0.58254222 6.99050667-0.58254222 13.98101333-2.33016889 20.38897778-24.46677333 121.16878222-91.45912889 233.59943111-186.41351111 312.82517333-4.66033778 4.07779555-10.48576 8.15559111-16.89372445 7.57304889-6.40796445-0.58254222-11.65084445-5.82542222-15.72864-9.90321778l-13.39847111-13.39847111c-9.32067555-9.32067555-18.64135111-19.22389333-27.37948444-29.12711111-17.47626667-19.80643555-33.20490667-41.36049778-47.76846223-63.49710222-14.56355555-22.13660445-26.79694222-45.43829333-37.86524444-69.90506667-11.06830222-23.88423111-20.38897778-48.93354667-27.37948444-74.56540445-7.57304889-25.63185778-12.81592889-51.26371555-16.31118222-77.47811555-0.58254222-4.66033778-1.16508445-8.73813333-1.74762667-13.39847111-8.73813333-81.55591111 1.16508445-164.85944889 29.12711111-241.75502222 13.98101333-39.03032889 32.03982222-76.31303111 54.75896889-111.26556445 9.32067555-14.56355555 15.72864-22.13660445 33.20490667-24.46677333 16.89372445-2.33016889 34.95253333 4.07779555 44.27320888 19.22389333 8.73813333 13.98101333 8.73813333 31.45728 9.90321778 48.35100445 6.99050667 114.17827555 76.89557333 222.53112889 178.25792 275.5424711 17.47626667 8.73813333 37.28270222 18.64135111 42.52558222 37.28270223 0.58254222 2.33016889 1.16508445 5.24288 1.16508445 7.57304889zM652.39267555 974.53852445c-2.91271111 2.91271111-6.99050667 3.49525333-10.48576 1.16508444-4.07779555-2.33016889-6.99050667-5.82542222-10.48576-8.73813334-3.49525333-2.91271111-7.57304889-6.40796445-11.06830222-9.32067555-8.15559111-6.40796445-15.72864-12.81592889-24.46677333-18.64135111-6.99050667-5.24288-14.56355555-10.48576-22.71914667-15.14609778-38.44778667-23.88423111-79.80828445-41.94304-121.16878222-53.01134222-44.85575111-12.23338667-90.29404445-16.89372445-135.14979556-15.14609778-6.40796445 0-13.39847111 0.58254222-19.80643555 1.16508444l-15.72864 1.74762667c-4.07779555 0-7.57304889-1.16508445-9.90321778-4.07779555-1.74762667-2.91271111-2.33016889-6.40796445 0-9.32067556 1.74762667-1.74762667 3.49525333-2.91271111 5.82542223-4.07779556 2.33016889-1.16508445 4.07779555-2.33016889 6.40796444-2.9127111 4.66033778-2.33016889 9.32067555-4.07779555 13.98101333-6.40796445 9.32067555-4.07779555 19.22389333-7.57304889 29.12711111-10.48576 1.16508445-0.58254222 2.33016889-0.58254222 4.07779556-1.16508445 2.33016889-0.58254222 5.24288-1.16508445 7.57304889-1.74762666 70.48760889-16.89372445 147.38318222-6.99050667 213.21045333 34.36999111 5.82542222 3.49525333 11.06830222 7.57304889 16.89372444 11.06830222 6.40796445 4.66033778 12.81592889 9.90321778 19.22389334 15.14609778 8.73813333 7.57304889 17.47626667 15.72864 25.04931556 24.46677333 13.98101333 15.14609778 39.03032889 53.01134222 41.94304 65.24472889 0.58254222 2.33016889-0.58254222 4.07779555-2.3301689 5.82542223zM473.55221333 749.09468445c-0.58254222 3.49525333-4.07779555 5.82542222-7.57304888 5.24288 0 0-58.25422222-8.73813333-113.59573334-31.45728C191.60177778 658.21809778 64.60757333 517.82542222 22.08199111 336.65479111c-0.58254222-2.91271111-1.16508445-5.82542222-1.74762666-8.15559111v-0.58254222c-1.74762667-8.73813333-1.74762667-18.05880889 1.74762666-26.2144 5.82542222-13.98101333 17.47626667-24.46677333 33.20490667-27.96202667 11.06830222-2.33016889 23.30168889-0.58254222 33.20490667 5.24288 2.91271111 1.74762667 5.82542222 4.07779555 8.73813333 6.99050667 5.24288 5.24288 8.73813333 11.06830222 13.39847111 16.31118222 4.66033778 5.24288 9.90321778 10.48576 15.14609778 15.14609778 11.06830222 9.90321778 23.88423111 19.22389333 36.70016 26.2144 8.73813333 4.66033778 18.05880889 9.32067555 27.37948444 12.81592889 9.32067555 3.49525333 19.22389333 6.40796445 29.12711111 8.73813333 5.82542222 1.16508445 11.65084445 2.33016889 18.05880889 2.91271111 6.40796445 0.58254222 12.23338667 1.16508445 18.64135111 1.16508444 3.49525333 0 6.99050667 0.58254222 9.32067556 2.3301689 3.49525333 1.74762667 5.24288 5.82542222 6.40796444 9.32067555 1.16508445 3.49525333 2.91271111 17.47626667 3.49525333 20.97152 1.16508445 8.15559111 5.24288 26.79694222 5.24288 28.54456889 6.40796445 28.54456889 14.56355555 57.08913778 25.63185778 84.46862222 10.48576 26.79694222 22.71914667 52.4288 37.28270222 76.89557334 14.56355555 25.04931555 30.87473778 48.93354667 49.5160889 71.0701511 20.97152 24.46677333 68.15744 69.90506667 75.14794666 76.31303112 2.33016889 2.91271111 6.40796445 5.82542222 5.82542222 9.90321778z\" fill=\"#2b84ad\" ></path></symbol><symbol id=\"icon-reason\" viewBox=\"0 0 1024 1024\"><path d=\"M638.06472596 110.87954931c49.79829823-19.09314497 98.52342423-29.73683863 142.61151416-28.58340504 44.38583372 1.16249537 86.51917085 14.49235595 117.92466931 45.89785443 31.40420393 31.40420393 44.73535905 73.53883559 45.89785442 117.92337477 1.1534336 44.08808992-9.49155461 92.81321591-28.58340503 142.61151416-15.38558736 40.12939188-36.72605076 82.1643441-63.34305217 124.6860427 26.8707309 42.81814787 48.39501875 85.15602205 63.88675824 125.55985604 19.09185043 49.79829823 29.73683863 98.52342423 28.58340503 142.61151416-1.16249537 44.38583372-14.49235595 86.51917085-45.89655987 117.9246693-31.40549847 31.40420393-73.53883559 44.73406451-117.92466932 45.89655989-44.08808992 1.15472814-92.81321591-9.48896553-142.61151415-28.5821105-40.43878653-15.50468489-82.81679138-37.05356895-125.67248087-63.95795785-42.35729225 26.47719127-84.22654356 47.71538615-124.20447448 63.04271929-49.79829823 19.09185043-98.52342423 29.73683863-142.61151414 28.58340504-44.38453918-1.16249537-86.51917085-14.49365049-117.92466932-45.89785441-31.40290939-31.40549847-44.73406451-73.53754107-45.89655988-117.92337479-1.1534336-44.08808992 9.49155461-92.81321591 28.58340504-142.61151415 15.38170373-40.1164465 36.7105163-82.13845333 63.31586686-124.64461748-26.35162107-42.20971488-47.49660918-83.93138883-62.77216078-123.77339322-19.09185043-49.79829823-29.7355441-98.52342423-28.58211051-142.61151416 1.16249537-44.38453918 14.49235595-86.51917085 45.89655988-117.92337477 31.40549847-31.40549847 73.53883559-44.73535905 117.92466932-45.89655988 44.08808992-1.15472814 92.81321591 9.49026007 142.61151415 28.58340503 39.80705185 15.26131168 81.48859511 36.38299813 123.6607684 62.7009612 42.67057051-26.74516069 84.85827824-48.17753632 125.12618571-63.61619976z m162.61471953 477.2341229c-29.31740823 38.36364169-62.59739813 76.44766309-99.35581234 113.20607732-36.89692981 36.89692981-75.13241221 70.28824999-113.64363125 99.68721415 27.83775099 15.72864 54.89489541 28.60670672 80.59018557 38.45814297 43.31395603 16.60633695 80.89440205 23.90235465 110.78270165 23.11915898 29.59055582-0.77413389 49.10830933-9.25724318 61.50869145-21.65762528 12.39908756-12.4003821 20.88478594-31.91813563 21.65891981-61.50869143 0.78319565-29.88829962-6.51411659-67.46874563-23.12045353-110.78399621-9.84366901-25.67328301-22.70879037-52.70712573-38.42060136-80.5202805z m-574.6092917 0.13592653c-15.44254704 27.44421136-28.10960403 54.12205605-37.82899736 79.47170449-16.60633695 43.31395603-23.90235465 80.89440205-23.119159 110.78270167 0.77542843 29.59055582 9.25983227 49.10701479 21.65891982 61.50739689 12.4003821 12.39908756 31.91813563 20.88478594 61.50869144 21.65891983 29.88829962 0.78319565 67.46874563-6.51282205 110.78270168-23.11915899 25.26938706-9.68832443 51.85402501-22.30618896 79.2050296-37.68142002-38.04518526-29.14264557-75.8016885-62.1805568-112.2584753-98.63734359-37.00567103-37.00567103-70.48760889-75.3550728-99.94871088-113.98280028z m286.96029867-314.09123177c-43.03433577 30.77894195-86.6796936 67.60337762-128.97225891 109.89594295-42.43755362 42.43884816-79.37073051 86.2369615-110.21310484 129.41628555 30.95241008 43.42528631 68.06941139 87.49136909 110.75810544 130.1787686 42.11391905 42.1152136 85.56897975 78.80631182 128.42725831 109.50499239 43.27253081-30.88379955 87.17550175-67.88558697 129.7088512-110.41893641 42.38836116-42.38836116 79.2827019-86.13598752 110.10306909-129.26482458-30.71033141-42.88287478-67.42084773-86.36382625-109.55936301-128.50234152-42.71199573-42.71199573-86.80396926-79.84712059-130.25255728-110.80988698z m0.44661571 126.92559392c62.07181558 0 112.39181275 50.31999715 112.39181274 112.39310728 0 62.07181558-50.31999715 112.39181275-112.39181274 112.39181274-62.07311013 0-112.39310729-50.31999715-112.39310728-112.39181274 0-62.07311013 50.31999715-112.39310729 112.39310728-112.39310728z m0 82.85044938c-16.31506583 0-29.5426579 13.22759205-29.5426579 29.5426579 0 16.31506583 13.22629751 29.54136336 29.5426579 29.54136335 16.31506583 0 29.54136336-13.22629751 29.54136335-29.54136335 0-16.31636037-13.22629751-29.5426579-29.54136335-29.5426579z m265.03082034-318.81629646c-29.88829962-0.78190112-67.47004018 6.51411659-110.78399621 23.12045354-25.50110942 9.77764756-52.34594955 22.53661677-79.96362903 38.10473402 38.66915271 29.48440368 77.06127423 62.99482137 114.10707595 100.04062309 36.49562295 36.49562295 69.5646031 74.29614048 98.72925582 112.38275097 15.50080126-27.52447273 28.21187255-54.27740065 37.9584512-79.69824868 16.60633695-43.31395603 23.90235465-80.89569659 23.119159-110.78399621-0.77413389-29.59055582-9.25853772-49.10830933-21.65762529-61.50869144-12.4003821-12.39908756-31.91813563-20.88219685-61.50869144-21.65762529z m-418.89057754 24.03310302c-43.31395603-16.60633695-80.89440205-23.90106011-110.78270167-23.119159-29.59055582 0.77542843-49.10830933 9.25983227-61.50869143 21.65891982-12.39908756 12.4003821-20.88349139 31.91813563-21.65762528 61.50869145-0.78319565 29.88829962 6.51282205 67.46874563 23.11915898 110.78270166 9.62230297 25.09591893 22.13401537 51.49155429 37.36555268 78.64449454 29.30964101-38.34681268 62.57798005-76.4140051 99.3208598-113.15688485 36.60436417-36.60306963 74.52009561-69.76007838 112.72062546-98.98816348-27.12963856-15.21600285-53.50197223-27.71606439-78.57717854-37.33060014z\" ></path></symbol><symbol id=\"icon-MiniMax\" viewBox=\"0 0 1169 1024\"><path d=\"M478.75435244 475.68580947V806.78782724c-22.36074786 112.12453565-171.10955566 83.20989638-171.75290449 1.92740802-0.70574941-102.1640625 0-203.68653398 0-305.07980889V386.05034023c0-14.71351641-3.21234697-26.34388242-16.06261377-35.53268994-25.05982237-18.76168916-55.13020401 3.27738516-55.77267304 30.32877568-1.41413555 36.30347666-0.70750723 71.8361666-1.41413643 107.6254919 0 28.27216933 0 55.70939268 0.64246992 83.91652471C215.95360098 696.59245742 65.46986211 675.96664062 62 573.0950709V486.99450195c0-28.14385166 55.13020401-34.76190146 52.43200752 7.3888374-1.79909033 20.88245302-0.64334795 42.40825489-1.34997627 63.09823096-0.64159013 36.94594658 55.83771123 61.81241308 69.13797012 1.41325664 0.64246904-49.79709229 0.64246904-99.59418457 0.64246991-149.84126982 0-62.96903349 17.86258301-114.2444206 84.62315304-118.99922168 28.91463926-2.56987793 48.1263205 9.50960214 66.56721415 30.39205518 7.06892168 7.38971631 23.77400537 30.84292617 24.41735333 56.3518626 0 23.51736914 0.64159013 46.90554083 0.64159013 70.68042421 0 46.90466192-0.64159013 94.067717-0.64159013 140.97413672 0 30.39205518 0.64159013 60.46243594 0.64159013 90.14786279 0 37.65345381 0 75.82105898-0.64159013 113.53779317-0.64246904 49.02630469 58.98502002 48.31967637 68.55966034-0.7707876 0-57.82927852 0.64159013-114.9510498 0.64159015-172.78032832 0-142.45155263-0.64159013-284.90398418-0.64159015-427.29225644 0-14.77855459-2.05660547-55.77267305 5.78310294-70.6795462C474.44866455 19.15811826 600.77256523 63.42874297 601.92918565 147.40942695c2.44155938 172.07369912 0 346.07480713 0.64246992 518.53346016 0 59.8208458-48.5763126 46.97057813-51.2745082 23.58152753 0-179.4625374 0-359.63170224 0.64159013-538.83760253-2.37652119-44.97813193-69.07293281-38.87335459-72.92862773-6.61805068-1.28493896 37.01010498-0.64159013 74.66355878-1.28493897 111.61038427v219.74914863h0.64246904l0.44999297 0.25751515z\" fill=\"#D4367A\" ></path><path d=\"M674.02374628 473.05089424v243.13907724-573.79286073c21.7173999-112.89356543 170.40292734-83.52981299 171.0453964-2.18404424 0.70662832 101.45831308 0 203.62237559 0.70662831 305.01564961 0 38.93839278 0 78.00510322-0.64246904 116.94349599 0 15.42102364 3.79065761 26.27972403 16.7059626 36.17515898 24.41647442 18.3125751 54.42357568-3.21234697 55.77267305-30.71372958 1.34997714-35.59684834 0.64334795-71.19369667 0.64334795-107.69053008v-83.40237334c18.6333706-124.20313594 168.66799629-103.57731914 171.81618486-0.70662832V687.46956787c0 28.27129131-54.48773408 34.95350039-52.04617471-7.3255579 1.47741592-21.52492295 0-268.00554463 0.7707876-289.59462599 1.28493896-36.30347666-55.9009916-61.87745127-69.13797099-0.7707876v149.07048135c0 63.86901856-17.92674229 114.30857989-85.26562296 119.77001016-63.48230596 1.47741592-88.99212129-42.40825489-91.04872587-86.74391777V270.52098066c0-38.36008213 0-75.82018008 0.64334795-113.47363388 0.64159013-49.02542578-58.98589893-49.02542578-69.13797012 0.70750723v674.67198515c0 14.64935713 2.05660547 55.70851377-5.20479316 70.67954532-41.57242911 101.3932749-168.53967773 57.05761201-169.69629903-26.8589127v-79.86747392c3.14906661-53.78110576 48.5763126-40.99499737 50.63291807-18.24841583V872.90680625c2.44155938 45.10645049 69.13797012 39.64502109 72.28615869 6.68220908 1.34909825-37.01010498 1.34909825-73.95693047 1.34909737-111.67366377V473.11505263h-0.19335586v-0.06415839z\" fill=\"#ED6D48\" ></path></symbol><symbol id=\"icon-Kimi\" viewBox=\"0 0 1024 1024\"><path d=\"M696.5 206m0 0l166.5 0q0 0 0 0l0 166.5q0 0 0 0l-166.5 0q0 0 0 0l0-166.5q0 0 0 0Z\" fill=\"#1683FF\" ></path><path d=\"M282.5 305m0 0l418.5 0q0 0 0 0l0 423q0 0 0 0l-418.5 0q0 0 0 0l0-423q0 0 0 0Z\" fill=\"#FFFFFF\" ></path><path d=\"M704.8835 62C846.8855 62 962 177.1145 962 319.121v385.7625c-0.0315 141.9885-115.128 257.085-257.1165 257.1165H319.0625C177.083 961.9685 62 846.863 62 704.8835V319.0625C62.0315 177.083 177.137 62 319.121 62h385.7625z m-393.75 642.8835h72.279V621.35l64.296-63.675 172.8 127.2915c0.504 0.396 28.4625 19.9125 68.2875 19.9125V621.35c-23.9625 0-36-7.875-36.171-7.929l-152.6625-111.375 188.8335-182.925h-108.5625l-196.875 190.9125V319.058H311.1875v385.7625l-0.054 0.0585zM765.125 230.75c-24.417 0-44.2125 19.7955-44.2125 44.2125v44.1585h44.2125c25.02 0.891 45.7875-19.152 45.7875-44.19 0-25.0335-20.7675-45.072-45.7875-44.181z\" fill=\"#000000\" ></path></symbol><symbol id=\"icon-Claude\" viewBox=\"0 0 1024 1024\"><path d=\"M246.752 655.856l171.696-96.288 2.928-8.352-2.928-4.656h-8.352l-28.752-1.728-98.16-2.64-85.104-3.552-82.416-4.416-20.784-4.416-19.488-25.632 2.016-12.816 17.472-11.664 24.96 2.16 55.296 3.744 82.848 5.76 60.096 3.552 89.088 9.264h14.16l2.016-5.712-4.896-3.552-3.744-3.552-85.776-58.08-92.832-61.392-48.576-35.376-26.352-17.856-13.248-16.8-5.76-36.672 23.856-26.256 32.064 2.16 8.208 2.208 32.496 24.96 69.408 53.712L398.816 388.64l13.296 11.04 5.28-3.744 0.672-2.64-5.952-9.984-49.296-88.992-52.608-90.576-23.424-37.536-6.192-22.512c-2.352-8.64-3.648-17.568-3.792-26.496l27.216-36.864 15.024-4.896 36.24 4.896 15.264 13.248 22.56 51.456 36.432 81.072L486.08 336.32l16.608 32.688 8.832 30.288 3.312 9.264h5.76v-5.328l4.656-62.064 8.64-76.224 8.352-98.016 2.928-27.648 13.68-33.12 27.168-17.904 21.264 10.176 17.472 24.912-2.448 16.128-10.416 67.344-20.352 105.6-13.248 70.656h7.728l8.832-8.784 35.808-47.52 60.096-75.072 26.544-29.808 30.912-32.88 19.92-15.696h37.584l27.648 41.088-12.384 42.432-38.688 49.008-32.064 41.52-45.984 61.824-28.752 49.488 2.64 3.984 6.816-0.72 103.872-22.032 56.112-10.176 66.96-11.472 30.288 14.112 3.312 14.352-11.952 29.376-71.616 17.664-84 16.8-125.088 29.568-1.536 1.104 1.776 2.208 56.352 5.328 24.096 1.296h58.992l109.872 8.208 28.752 19.008 17.232 23.232-2.88 17.664-44.208 22.56-59.664-14.16-139.296-33.12-47.712-11.952h-6.624v3.984l39.744 38.832 72.96 65.856 91.248 84.768 4.608 21.024-11.712 16.56-12.384-1.776-80.208-60.288-30.96-27.168-70.08-58.944h-4.656v6.192l16.128 23.616 85.296 128.064 4.416 39.264-6.192 12.864-22.128 7.728-24.288-4.416-49.968-70.032-51.456-78.816-41.568-70.704-5.088 2.928-24.528 263.904-11.472 13.44-26.496 10.176-22.08-16.752-11.712-27.168 11.712-53.712 14.16-69.984 11.472-55.68 10.416-69.12 6.192-22.992-0.432-1.536-5.088 0.672-52.176 71.568-79.296 107.136-62.784 67.104-15.072 5.952-26.064-13.44 2.448-24.096 14.592-21.408 86.88-110.448 52.368-68.448 33.84-39.504-0.24-5.76h-2.016l-230.736 149.712-41.088 5.328-17.712-16.608 2.208-27.12 8.4-8.832 69.408-47.712-0.24 0.24z\" fill=\"#D97757\" ></path></symbol><symbol id=\"icon-create\" viewBox=\"0 0 1024 1024\"><path d=\"M739.16 185.54a33.54 33.54 0 1 1 67.02 0v92.28h92.28a33.54 33.54 0 0 1 0 67.08h-92.22v91.98a33.54 33.54 0 0 1-67.02 0V344.9h-92.16a33.54 33.54 0 0 1 0-67.08h92.04V185.6h0.06z m-501.9 63.6h276.06a33.54 33.54 0 0 0 0-66.96H237.26a139.8 139.8 0 0 0-102.72 42.6A139.8 139.8 0 0 0 92 327.32v335.16c0 40.14 14.16 74.4 42.6 102.72 24.72 24.78 54 38.7 87.78 41.82v60.3a33.54 33.54 0 0 0 48.48 29.94l179.16-89.52h308.58c40.14 0 74.4-14.22 102.66-42.54 28.38-28.38 42.6-62.58 42.6-102.72V551.24a33.54 33.54 0 0 0-67.02 0v111.3c0 21.6-7.68 40.02-22.92 55.32a75.36 75.36 0 0 1-55.32 22.86H442.04a33.54 33.54 0 0 0-15 3.6L289.4 813.08v-38.88a33.54 33.54 0 0 0-33.54-33.54h-18.6c-21.6 0-40.08-7.62-55.32-22.86a75.36 75.36 0 0 1-22.92-55.32V327.38c0-21.6 7.62-40.02 22.92-55.26 15.24-15.3 33.72-22.92 55.32-22.92z\" ></path></symbol><symbol id=\"icon-history\" viewBox=\"0 0 1024 1024\"><path d=\"M707.552 453.104c-123.648 0-223.824 97.776-223.824 218.352 0 120.576 100.176 218.352 223.824 218.352 123.6 0 223.824-97.728 223.824-218.352 0-120.576-100.224-218.352-223.824-218.352z m0 387.168c-95.568 0-173.088-75.6-173.088-168.816 0-93.264 77.52-168.816 173.088-168.816 95.52 0 173.04 75.6 173.04 168.816 0 93.264-77.472 168.816-173.04 168.816z\" ></path><path d=\"M785.744 142.4a144 144 0 0 1 144 144v355.68l-0.096 2.88a215.232 215.232 0 0 0-57.504-121.44v-35.76V286.4a86.4 86.4 0 0 0-86.352-86.4H238.4a86.4 86.4 0 0 0-86.4 86.4v355.68a86.4 86.4 0 0 0 86.4 86.4h71.136v108.24l135.888-108.24h46.08c5.664 20.544 14.352 39.888 25.536 57.6H465.536l-135.696 108.096a48 48 0 0 1-77.952-37.536v-70.56h-13.44a144 144 0 0 1-144-144V286.4a144 144 0 0 1 144-144h547.296z\" ></path><path d=\"M696.512 573.152a24.96 24.96 0 0 1 24.96 24.96v87.84h59.808a23.52 23.52 0 0 1 0 47.04h-99.456a10.08 10.08 0 0 1-10.224-10.08v-124.8c0-13.776 11.136-24.96 24.912-24.96zM536.864 393.008a33.6 33.6 0 0 0 4.608-66.912l-4.56-0.288h-230.4a33.6 33.6 0 0 0-4.56 66.912l4.512 0.288h230.4z m-115.2 133.392a33.6 33.6 0 0 0 4.608-66.912L421.712 459.2h-115.2a33.6 33.6 0 0 0-4.56 66.864l4.56 0.336h115.2-0.048z\" ></path></symbol><symbol id=\"icon-project\" viewBox=\"0 0 1024 1024\"><path d=\"M410.67 544H133.33A69.33 69.33 0 0 0 64 613.33v277.34A69.33 69.33 0 0 0 133.33 960h277.34A69.33 69.33 0 0 0 480 890.67V613.33A69.33 69.33 0 0 0 410.67 544zM402 842a40 40 0 0 1-40 40H182a40 40 0 0 1-40-40V662a40 40 0 0 1 40-40h180a40 40 0 0 1 40 40zM890.67 544H613.33A69.33 69.33 0 0 0 544 613.33v277.34A69.33 69.33 0 0 0 613.33 960h277.34A69.33 69.33 0 0 0 960 890.67V613.33A69.33 69.33 0 0 0 890.67 544zM882 842a40 40 0 0 1-40 40H662a40 40 0 0 1-40-40V662a40 40 0 0 1 40-40h180a40 40 0 0 1 40 40zM410.67 64H133.33A69.33 69.33 0 0 0 64 133.33v277.34A69.33 69.33 0 0 0 133.33 480h277.34A69.33 69.33 0 0 0 480 410.67V133.33A69.33 69.33 0 0 0 410.67 64zM402 362a40 40 0 0 1-40 40H182a40 40 0 0 1-40-40V182a40 40 0 0 1 40-40h180a40 40 0 0 1 40 40zM694.49 456.18a81.35 81.35 0 0 0 115 0l126.69-126.67a81.35 81.35 0 0 0 0-115L809.51 87.82a81.35 81.35 0 0 0-115 0L567.82 214.49a81.35 81.35 0 0 0 0 115z\" ></path></symbol><symbol id=\"icon-Doubao\" viewBox=\"0 0 1024 1024\"><path d=\"M943.57048924 444.46151111c-143.81511147-96.0284448-295.36711147-110.4099552-295.36711146-110.4099552s7.64586667 219.3635552-10.0124448 285.80977707c-0.45511147 9.10222187-11.01368853 70.2691552-40.1408 147.18293333-10.0124448 26.30542187-22.48248853 51.65511147-36.81848854 76.00355627a689.9939552 689.9939552 0 0 1-83.64942186 119.0115552c111.86631147-45.42008853 191.64728853-86.47111147 289.1776-163.93102187 114.688-90.3395552 214.08426667-237.568 176.81066666-353.6668448z\" fill=\"#37E1BE\" ></path><path d=\"M356.20408924 403.36497778c147.6835552-94.16248853 288.1763552-73.59146667 291.54417707-69.76853333 0.45511147 0.45511147 0.91022187 0.45511147 0.91022293 0.45511146 0-13.38026667-6.18951147-56.88888853-12.37902293-99.39626666-11.01368853-56.88888853-21.02613333-116.59946667-21.5267552-124.7004448-159.1523552-130.0252448-333.14133333-73.18186667-418.15608853 23.84782186C139.20711111 199.33866631 100.02204444 292.49991111 100.97777778 343.15377778v402.8643552c0.45511147-11.92391147 1.36533333-19.11466667 1.8659552-19.11466667 16.74808853-184.00142187 253.3148448-323.584 253.3148448-323.584z\" fill=\"#A569FF\" ></path><path d=\"M787.74044444 288.17635591c-39.1395552-40.64142187-81.6924448-82.69368853-114.23288853-117.1000896-31.03857813-32.49493333-55.38702187-56.88888853-58.70933333-61.16693333 0.45511147 8.14648853 10.4675552 67.85706667 21.48124373 124.74595627 6.18951147 42.55288853 11.92391147 86.47111147 12.42453333 99.39626666 0 0 151.50648853 14.336 295.36711147 110.4099552-0.45511147 0-77.91502187-75.04782187-156.2851552-156.2851552zM561.73226631 843.04782258c-2.41208853 0.95573333-185.45777813 99.89688853-272.93013333-28.672-19.56977813-28.672-29.58222187-63.57902187-31.03857707-99.39626667-2.8672-69.76853333 4.77866667-212.67342187 98.44053333-311.61457813 0 0-236.5667552 139.53706667-252.81422293 323.584-0.45511147 0.45511147-1.91146667 7.6003552-1.91146667 19.11466667-0.95573333 30.5379552 4.2780448 91.7504 40.1408 144.7708448 48.7424 73.1363552 180.17848853 129.52462187 306.3352896 79.82648853l31.08408854-9.10222187c-0.95573333 0.45511147 44.4643552-48.69688853 82.69368853-118.51093333z\" fill=\"#1E37FC\" ></path></symbol><symbol id=\"icon-AIbianji\" viewBox=\"0 0 1024 1024\"><path d=\"M927.87039969 563.39199969a32.64 32.64 0 0 1 32.12800031 33.024v330.49600031a32.64 32.64 0 0 1-32.12800031 33.024 32.64 32.64 0 0 1-32.19199969-33.024V596.41599969a32.64 32.64 0 0 1 32.19199969-33.024zM382.0784 893.82399969c16.63999969 0 30.20800031 14.84800031 30.20800031 33.08800031 0 18.24-13.56799969 33.024-30.20800031 33.024H140.41440031c-16.63999969 0-30.20800031-14.784-30.20800031-33.024 0-18.24 13.56799969-33.08800031 30.20800031-33.08800031h241.728z m329.088-312.192l151.03999969 330.49600031c7.488 16.32 1.40800031 36.16000031-13.44 44.352-14.976 8.12800031-33.08800031 1.536-40.57599938-14.784l-124.032-271.36000031-124.032 271.36000031a29.31199969 29.31199969 0 0 1-35.45600062 16.96000031l-5.11999969-2.17600031c-14.84800031-8.19199969-20.928-28.032-13.44-44.352l151.03999969-330.49600031c11.136-24.31999969 42.88000031-24.31999969 54.01600031 0z m46.20799969-493.11999938l42.68800031 42.36799969c35.39200031 35.136 32.448 94.97599969-6.528 133.69600031l-510.97600031 506.88a35.83999969 35.83999969 0 0 1-17.28 9.6l-165.43999969 37.11999938a28.54399969 28.54399969 0 0 1-35.07199969-34.68799969l37.248-164.352a35.39200031 35.39200031 0 0 1 9.6-17.21599969l444.79999969-441.408 6.912-7.42400062 59.26399969-58.04799938C661.75839969 56.31999969 722.04639969 53.37600031 757.4384 88.51200031zM186.2384 612.67200031l-24.44800031 24.31999969-24.83199938 109.44 110.33599969-24.70399969 16.19200031-16.19200031-77.24800031-92.80000031z m373.248-370.30400062L231.03840031 568.32000031l77.31199969 92.79999938 332.47999969-329.856-81.27999938-88.896z m105.85600031-104.95999969l-61.12000031 60.48 81.28000031 88.96000031 65.28-64.64000062c11.52-11.52 13.632-28.54399969 5.63199938-40.38399938l-3.456-4.224-42.68799938-42.36800062c-11.83999969-11.712-31.93600031-10.752-44.928 2.17600031z\" ></path></symbol><symbol id=\"icon-DeepSeek\" viewBox=\"0 0 1391 1024\"><path d=\"M1299.71873948 130.41498185c-12.94676356-6.47485468-18.53640721 5.86654827-26.09973268 12.13814317-2.57756953 2.02376031-4.77807747 4.65435413-6.9785854 7.08168819-18.91788751 20.63528526-41.02017805 34.19182812-69.92725219 32.57311445-42.23384508-2.42733405-78.29772513 11.12773591-110.16384908 44.10589701-6.77679853-40.66668282-29.28560862-64.94444203-63.55255448-80.5232723-17.95608583-8.09209545-36.06388005-16.1856638-48.63358202-33.78825438-8.74900746-12.5431898-11.12773591-26.50330641-15.52727889-40.26016326-2.7823022-8.29535522-5.56460442-16.79249731-14.92044537-18.20942412-10.19244639-1.61871367-14.16337637 7.08168818-18.15934561 14.36516325-15.93232553 29.74073376-22.12880269 62.51710799-21.49692993 95.69705596 1.36684831 74.65672404 32.27117059 134.13819156 93.62469003 176.42358804 6.9800583 4.8546681 8.77551959 9.71080912 6.57501167 16.7910244-4.17271686 14.56695011-9.18056624 28.7303265-13.55506996 43.29727663-2.78377509 9.30723537-6.95501906 11.32952278-16.74241882 7.28347506-33.66158524-14.36516325-62.745407-35.60875491-88.46513227-61.30196805-43.62425973-43.09548975-83.0772755-90.64060097-132.26613965-127.86659668a581.67054343 581.67054343 0 0 0-35.07703915-24.481019c-50.20074429-49.77065841 6.57501167-90.63912807 19.72650787-95.49526908 13.73181759-5.05792788 4.77955037-22.4572587-39.65480261-22.25547183s-85.07599655 15.3770434-136.87041529 35.60875492c-7.58541892 3.03416756-15.55379103 5.25971475-23.69596497 7.08168819-47.03990759-9.10544849-95.84876434-11.12773591-146.85960188-5.26118764-96.02551195 10.92594905-172.73103555 57.25739323-229.12678414 136.36373875-67.72674425 95.09022244-83.68558192 203.13015422-64.13582166 315.82149433 20.48504978 118.76262107 79.88992666 217.09027084 171.13736116 293.9710692 94.6350973 79.71317902 203.61031862 118.76262107 327.93607115 111.27735912 75.51542292-4.45256725 159.57953934-14.77020989 254.41642352-96.71040901 23.92426399 12.13961607 49.03715574 16.99575708 90.66564022 20.63675815 32.09295007 3.03416756 62.97223311-1.61871367 86.87145787-6.67664152 37.45429471-8.09209545 34.84874013-43.49906349 21.3187094-49.97244528-109.7838417-52.19946535-85.68283009-30.95587367-107.58333375-48.15194474 55.78891504-67.37324899 139.85303146-137.3770918 172.73103558-364.17669887 2.60408167-18.00616433 0.40357375-29.33568711 0-43.90263723-0.20325977-8.90218873 1.76894914-12.34287584 11.75960868-13.3532831 27.49014733-3.23742733 54.19671351-10.92594905 78.70277175-24.68280587 71.11440706-39.65480265 99.81822142-104.80250446 106.59649285-182.89844271 1.01188015-11.9363563-0.20178686-24.27775924-12.56970195-30.54935415M679.88691083 833.27400751c-106.36966673-85.37941333-157.98733782-113.5014334-179.30604723-112.28776638-19.92829476 1.21366703-16.33737217 24.48101902-11.96286845 39.65480263 4.5777635 14.97199677 10.57098089 25.2896394 18.94145388 38.44113563 5.76786417 8.70040186 9.76383341 21.64863831-5.78995764 31.35944742-34.26841876 21.64863831-93.82647692-7.28347506-96.60730623-8.69892897-69.3454579-41.67856295-127.33635378-96.710409-168.17978423-171.97249367-39.45154288-72.43117687-62.33888747-150.1220685-66.13306982-233.07267484-1.01188015-20.02992464 4.77955037-27.11161282 24.27923215-30.75408683a235.19659216 235.19659216 0 0 1 77.91771776-2.0222874c108.59668681 16.18713669 201.05631542 65.75453531 278.54394725 144.25552022 44.23256614 44.71125762 77.69089163 98.12439001 112.18613649 150.32385536 36.64567431 55.43394691 76.0986901 108.24024576 126.2994344 151.53604948 17.72778682 15.17378365 31.86465106 26.7065662 45.41972101 35.20370828-40.84343042 4.65435413-108.99878765 5.66476139-155.60860934-31.96628093m51.00936468-334.83953884c0-8.90218873 6.9815312-15.98387693 15.75557788-15.98387693q2.98408908 0.05155138 5.36134465 1.01188016a15.85720779 15.85720779 0 0 1 10.16740716 14.97199677 15.78061715 15.78061715 0 0 1-15.73053865 15.98387692 15.60386953 15.60386953 0 0 1-15.55379104-15.98387692m158.39238445 82.95060636c-10.1423679 4.24930749-20.30830215 7.89178146-30.09570189 8.29535522-15.12370514 0.81009328-31.66286419-5.46150162-40.61513143-13.15002333-13.96011661-11.93782919-23.92573689-18.61447073-28.09845373-39.45301577-1.79546129-8.90218873-0.81009328-22.65904557 0.78505404-30.54935414 3.59092258-16.99575708-0.40504665-27.92023321-12.13961607-37.8343021-9.55910075-8.09356835-21.72522894-10.31911553-35.07703915-10.31911553-4.98281013 0-9.55910075-2.22407429-12.94823646-4.04604772a13.27669246 13.27669246 0 0 1-5.76639126-18.61299785c1.39041466-2.8323807 8.16868608-9.71228202 9.76236049-10.92594903 18.13136058-10.52090241 39.04649623-7.08021529 58.36795747 0.81009328 17.93104659 7.48526194 31.46107731 21.24359167 51.01083759 40.66668278 19.92829476 23.46913885 23.51921733 29.94399353 34.84874012 47.54511124 8.97877936 13.75685685 17.14746545 27.92023321 22.71206985 44.1044241 3.41270206 10.11732865-0.98684091 18.41121097-12.74644957 23.46913885\" fill=\"#4D6BFE\" ></path></symbol><symbol id=\"icon-OpenAI\" viewBox=\"0 0 1024 1024\"><path d=\"M950.676 419.057a255.347 255.347 0 0 0-22.015-209.482A257.95 257.95 0 0 0 650.915 85.848a258.76 258.76 0 0 0-438.377 92.539A255.347 255.347 0 0 0 41.966 302.114a257.95 257.95 0 0 0 31.7 302.79 255.133 255.133 0 0 0 21.758 209.525 258.163 258.163 0 0 0 277.96 123.727 255.347 255.347 0 0 0 192.373 85.84 258.376 258.376 0 0 0 246.26-179.446 255.56 255.56 0 0 0 170.53-123.727 258.376 258.376 0 0 0-31.871-301.766zM565.757 957.013a190.966 190.966 0 0 1-122.703-44.37l6.016-3.456 203.893-117.67a33.918 33.918 0 0 0 16.725-29.054v-287.43l86.182 49.832a3.03 3.03 0 0 1 1.621 2.219v238.195a192.16 192.16 0 0 1-191.734 191.734zM153.62 780.98a190.71 190.71 0 0 1-22.826-128.59l6.058 3.626 204.065 117.71a32.894 32.894 0 0 0 33.278 0L623.482 629.99v99.494a3.413 3.413 0 0 1-1.408 2.645L415.578 851.206a191.99 191.99 0 0 1-261.96-70.226zM99.86 336.928a191.35 191.35 0 0 1 100.944-84.177v242.206a32.681 32.681 0 0 0 16.554 28.841l248.094 143.14-86.182 49.832a3.242 3.242 0 0 1-3.03 0L170.173 597.907a192.16 192.16 0 0 1-70.31-262.003zM807.963 501.4L559.102 356.895l85.968-49.661a3.242 3.242 0 0 1 3.03 0L854.169 426.31a191.734 191.734 0 0 1-28.841 345.796v-242.25a33.705 33.705 0 0 0-17.365-28.456z m85.756-128.975l-6.016-3.627-203.68-118.692a33.108 33.108 0 0 0-33.491 0L401.456 393.842v-99.536a2.816 2.816 0 0 1 1.195-2.602l206.07-118.906a191.99 191.99 0 0 1 284.998 198.816zM354.44 548.842l-86.182-49.661a3.413 3.413 0 0 1-1.621-2.432V259.236a191.99 191.99 0 0 1 314.65-147.32l-6.058 3.413-203.851 117.668a33.918 33.918 0 0 0-16.767 29.055z m46.803-100.901l111.013-63.997 111.226 63.997v127.95l-110.8 63.997-111.226-63.996z\" ></path></symbol><symbol id=\"icon-Qwen\" viewBox=\"0 0 1024 1024\"><path d=\"M955 607.2L843.6 412.1l47.8-91.6c6.6-8.7 8.3-21.5 5.6-31.8L835.7 178c-4.7-7.3-12.8-11.8-21.5-12H586.3l-51-89.2c-3.6-7-10.5-11.8-18.3-12.7H396.7c-8.9 0.2-15.2 6.7-19.6 14.4l-1.9 3.1-113.8 195.1H152.2c-9-0.2-17.5 4.3-22.3 12L67 400.1c-4 8-4 17.5 0 25.5l113.1 196.7-51 89.2c-4 8-4 17.4 0 25.5l58.1 102c4.7 7.8 13.2 12.7 22.3 12.7h227.8l54.9 95.5c4.2 7.2 11.6 11.9 19.9 12.8h129c8.9-0.2 17.1-5 21.5-12.7L775 750.5h100.4c8.9-0.8 16.9-5.8 21.5-13.5L955 634.3c5.4-8.3 5.4-18.9 0-27.1zM814.1 620L756 512.5 517 933.7l-65.3-107.5H212.8l57.4-104.3H392L153 302.2h125L396.7 90.3l59.7 104.3-61.3 107.5H873l-60.5 106.8 120.3 211H814.1z\" fill=\"#605BEC\" ></path><path d=\"M511.4 660.5l149-238.9H361.7l149.7 238.9z m0 0\" fill=\"#605BEC\" ></path></symbol><symbol id=\"icon-zhinengti\" viewBox=\"0 0 1024 1024\"><path d=\"M866.304 527.36v185.856c52.224 3.072 98.816-43.52 98.816-95.744 0-49.152-46.592-92.672-98.816-90.112zM58.88 623.104c3.072 49.152 46.592 90.112 98.816 90.112V527.36c-57.856 3.072-98.816 43.52-98.816 95.744zM450.56 610.816c-13.824 0-20.992 9.216-20.992 27.136 0 18.944 9.216 26.624 20.992 26.624 13.312 0 21.504-8.192 21.504-26.624-0.512-17.92-8.192-27.136-21.504-27.136z\" ></path><path d=\"M690.176 395.264h-165.376V335.36c0-8.704 8.704-17.408 17.408-20.48 37.888-17.408 52.224-46.592 43.52-81.408-8.704-31.744-37.888-55.296-72.704-55.296-31.744 0-64 20.48-72.704 52.224-8.704 34.816 5.632 64 43.52 84.48 5.632 3.072 17.408 8.704 17.408 14.336v65.536H346.624c-73.728 0-133.632 59.904-133.632 133.632V711.68c0 73.728 59.904 133.632 133.632 133.632h344.064c73.728 0 133.632-59.904 133.632-133.632v-182.272c0-74.24-59.904-134.144-134.144-134.144z m-300.544 289.792H293.376v-131.072H322.56v107.008h67.072v24.064z m60.928 2.048c-29.696 0-50.176-19.456-50.176-48.64s18.944-49.152 50.688-49.152c33.792 0 50.176 21.504 50.176 49.152 0 29.184-19.456 48.64-50.688 48.64z m162.304-2.048h-96.256v-131.072h29.184v107.008h67.072v24.064z m93.696-0.512l-31.744-51.2h-16.896v51.712h-29.696v-131.072h59.392c32.768 0 49.664 16.384 49.664 38.912 0 20.48-8.704 34.304-32.256 39.424l38.912 53.248H706.56z\" ></path><path d=\"M683.008 576.512h-25.088v34.816h25.088c16.384 0 23.04-5.632 23.04-16.896 0-11.776-5.632-17.92-23.04-17.92z\" ></path></symbol><symbol id=\"icon-skill\" viewBox=\"0 0 1025 1024\"><path d=\"M285.59485039 717.3125H519.73547539a288.28125 288.28125 0 0 0 35.15625 47.8125H285.59485039v-47.109375z m0-74.53125h203.203125a315 315 0 0 1-9.140625-47.109375H285.59485039v47.109375z m0-120.9375h194.765625c2.109375-16.171875 4.921875-32.34375 9.140625-47.109375h-203.90625v47.109375z m378.984375 315v40.78125c0 19.6875-14.765625 35.859375-33.046875 35.859375h-492.1875c-18.28125 0-33.046875-16.171875-33.046875-35.15625V281.375l163.125-147.65625v156.796875H183.64172539v46.40625h129.375V109.109375h318.515625c18.28125 0 33.046875 16.171875 33.046875 35.15625v140.625c14.0625-4.21875 28.125-7.03125 42.890625-9.84375V144.96875C707.46985039 99.265625 674.42297539 62 632.23547539 62H281.37610039L62.70422539 259.578125v618.75c0 45 34.453125 82.265625 75.9375 82.265625H632.23547539c42.1875 0 75.9375-37.265625 75.9375-82.96875v-30.9375c-14.0625-2.109375-28.828125-4.921875-42.890625-9.84375zM226.53235039 474.734375h-56.25v47.109375h56.25v-47.109375z m-56.25 289.6875h56.25v-47.109375h-56.25v47.109375z m56.25-168.75h-56.25v47.109375h56.25V596.375zM857.23547539 490.90625l-34.453125-28.125-87.1875 123.046875-78.75-65.390625-26.71875 37.265625 112.5 94.21875 114.609375-161.71875z m105.46875 70.3125c0-130.78125-98.4375-236.953125-218.671875-236.953125-120.9375 0-219.375 106.875-219.375 237.65625 0 130.78125 98.4375 237.65625 219.375 237.65625C864.26672539 798.875 962.70422539 692 962.70422539 561.21875z m-43.59375 0c0 105.46875-78.75 191.25-175.78125 191.25-96.328125 0-175.78125-85.78125-175.78125-190.546875 0-105.46875 79.453125-190.546875 175.78125-190.546875 97.03125 0 175.78125 85.078125 175.78125 189.84375z\" ></path></symbol><symbol id=\"icon-iteration\" viewBox=\"0 0 1024 1024\"><path d=\"M926.38827705 332.00007823A450.83470957 450.83470957 0 0 0 513.16018613 62.00022852a450.32055029 450.32055029 0 0 0-361.0922792 180.64238027 37.28581875 37.28581875 0 0 0 59.59332598 44.54997451 375.87811113 375.87811113 0 0 1 301.49983212-150.87823593 376.39227129 376.39227129 0 0 1 345.02060919 225.38571416 37.28581875 37.28581875 0 0 0 68.20660283-29.76414346z m-834.16945781 22.49998769A294.042317 294.042317 0 0 0 62.00291797 474.97167793a37.15749844 37.15749844 0 0 0 74.44331807 0.77080079 221.14235742 221.14235742 0 0 1 21.79246816-87.04243214A37.28581875 37.28581875 0 0 0 92.21794033 354.50006592z m8.93495566 340.26397031a450.83470957 450.83470957 0 0 0 412.00641124 267.2348124 450.32055029 450.32055029 0 0 0 360.70731914-180.06405996 37.28581875 37.28581875 0 0 0-59.52828692-44.61325664 375.87811113 375.87811113 0 0 1-301.17903222 150.36319776 376.39227129 376.39227129 0 0 1-343.99228887-223.07067686 37.28581875 37.28581875 0 0 0-68.01412237 30.21414345z m834.04201641-21.59998769c18.70663008-38.57165859 27.12830537-79.07163575 26.80662568-125.3574501a37.15749844 37.15749844 0 0 0-74.44243916 0.64335937c0.25751953 35.16414082-5.78583633 64.47828428-19.28582929 92.31410831a37.28581875 37.28581875 0 0 0 66.98580292 32.46414257z\" ></path><path d=\"M744.58837812 304.87177286a39.53581787 39.53581787 0 0 0-39.72829833 39.34245849c0 21.66414786 17.80663095 39.27829834 39.72829834 39.27829834h155.57159268a61.45748526 61.45748526 0 0 0 61.84244619-61.13580557V165.5001705A39.53581787 39.53581787 0 0 0 922.27499756 126.28603232a39.53581787 39.53581787 0 0 0-39.7924585 39.21413819v139.37160235H744.58837812z m-465.16966347 414.25641034a39.53581787 39.53581787 0 0 0 39.72741943-39.3433374 39.53581787 39.53581787 0 0 0-39.72829833-39.21413818H123.84712197A61.45748526 61.45748526 0 0 0 62.00379687 701.64235303v156.85655362c0 21.5999877 17.80663095 39.21413818 39.72829834 39.21413817A39.53581787 39.53581787 0 0 0 141.52543262 858.49978555V719.1281832H279.41695684z\" ></path></symbol><symbol id=\"icon-list_filter\" viewBox=\"0 0 1024 1024\"><path d=\"M559.025 962a29.1375 29.1375 0 0 1-29.1375-29.1375V354.5a29.1375 29.1375 0 0 1 7.425-18.84375l190.18125-215.26875H156.44375L346.0625 335.09375a31.3875 31.3875 0 0 1 7.425 19.40625v334.06875l62.26875 61.875a29.1375 29.1375 0 1 1-41.11875 41.11875l-69.8625-70.5375a31.3875 31.3875 0 0 1-8.55-20.53125v-335.25L70.775 113.4125A29.7 29.7 0 0 1 65.6 78.875 30.2625 30.2625 0 0 1 92.43125 62h700.14375a30.9375 30.9375 0 0 1 21.7125 51.4125L586.025 368.675v567.05625a29.1375 29.1375 0 0 1-26.83125 26.26875z\" ></path><path d=\"M926.7875 506.88125h-250.70625a29.1375 29.1375 0 1 1 0-57.09375h250.70625a29.1375 29.1375 0 1 1 0 57.09375z m0 182.75625h-250.70625a29.1375 29.1375 0 0 1 0-57.09375h250.70625a29.1375 29.1375 0 0 1 0 57.09375z m0 182.75625h-250.70625a29.1375 29.1375 0 0 1 0-57.09375h250.70625a29.1375 29.1375 0 0 1 0 57.09375z\" ></path></symbol><symbol id=\"icon-variable_assign\" viewBox=\"0 0 1024 1024\"><path d=\"M842.410667 85.333333H181.589333A96.426667 96.426667 0 0 0 85.333333 181.674667v674.901333c0 45.226667 58.197333 82.090667 103.424 82.090667h52.565334a14.165333 14.165333 0 0 0 14.250666-14.165334v-59.306666a14.165333 14.165333 0 0 0-14.250666-14.165334h-38.4a30.549333 30.549333 0 0 1-30.464-30.549333V648.533333h119.893333a16.384 16.384 0 0 0 16.298667-16.298666V577.706667a16.384 16.384 0 0 0-16.213334-16.298667H172.373333V371.2h745.130667A21.077333 21.077333 0 0 0 938.666667 350.122667V181.674667A96.426667 96.426667 0 0 0 842.410667 85.333333zM172.373333 284.074667v-80.554667c0-16.810667 13.653333-30.549333 30.464-30.549333l632.32-0.512c8.96 0 16.298667 7.424 16.298667 16.298666V284.16H172.458667z\" ></path><path d=\"M696.661333 905.984a24.746667 24.746667 0 0 1-23.722666 29.013333h-24.746667a23.808 23.808 0 0 1-23.637333-20.48l-9.984-62.208a24.746667 24.746667 0 0 0-23.637334-20.48H471.893333a23.722667 23.722667 0 0 0-21.504 14.165334l-33.706666 74.752a24.234667 24.234667 0 0 1-21.589334 14.250666h-27.306666a23.978667 23.978667 0 0 1-21.589334-34.730666l207.274667-426.410667a23.296 23.296 0 0 1 21.589333-13.226667h38.4l83.114667 445.44zM569.856 610.986667l-62.037333 112.384a24.32 24.32 0 0 0 21.504 34.730666h41.045333a23.893333 23.893333 0 0 0 23.722667-27.904l-22.186667-118.186666-2.048-1.024z\" ></path><path d=\"M725.333333 512m42.666667 0l128 0q42.666667 0 42.666667 42.666667l0 0q0 42.666667-42.666667 42.666666l-128 0q-42.666667 0-42.666667-42.666666l0 0q0-42.666667 42.666667-42.666667Z\" ></path><path d=\"M725.333333 661.333333m42.666667 0l128 0q42.666667 0 42.666667 42.666667l0 0q0 42.666667-42.666667 42.666667l-128 0q-42.666667 0-42.666667-42.666667l0 0q0-42.666667 42.666667-42.666667Z\" ></path><path d=\"M725.333333 810.666667m42.666667 0l128 0q42.666667 0 42.666667 42.666666l0 0q0 42.666667-42.666667 42.666667l-128 0q-42.666667 0-42.666667-42.666667l0 0q0-42.666667 42.666667-42.666666Z\" ></path></symbol><symbol id=\"icon-conv_variable\" viewBox=\"0 0 1024 1024\"><path d=\"M192.10666667 191.97866667A42.688 42.688 0 0 0 149.41866667 234.66666667v426.688c0 23.552 19.072 42.624 42.688 42.624h85.312c23.552 0 42.688 19.136 42.688 42.688v52.608l148.672-89.216a42.688 42.688 0 0 1 21.952-6.08h256a42.688 42.688 0 0 0 42.688-42.624 42.688 42.688 0 0 1 85.312 0 128 128 0 0 1-128 128H502.57066667l-203.2 121.92A42.688 42.688 0 0 1 234.73066667 874.66666667v-85.312h-42.624a128 128 0 0 1-128-128V234.66666667a128 128 0 0 1 128-128h213.312a42.688 42.688 0 0 1 0 85.312H192.10666667z\" ></path><path d=\"M538.09066667 149.35466667c0-23.616 19.136-42.688 42.688-42.688h59.072c41.024 0 75.968 27.904 86.72 66.56l15.808 56.96 61.824-74.112A136.448 136.448 0 0 1 908.97066667 106.66666667h3.84a42.688 42.688 0 1 1 0 85.312h-3.84a51.136 51.136 0 0 0-39.232 18.752l-99.584 119.424 31.616 113.728c0.896 3.136 3.2 4.096 4.48 4.096h59.072a42.688 42.688 0 1 1 0 85.376h-59.072a90.24 90.24 0 0 1-86.72-66.624l-15.808-56.96-61.824 74.176a136.448 136.448 0 0 1-104.768 49.408h-3.84a42.688 42.688 0 0 1 0-85.376h3.84a51.136 51.136 0 0 0 39.232-18.688l99.584-119.424-31.616-113.728c-0.832-3.2-3.2-4.16-4.48-4.16h-59.072a42.688 42.688 0 0 1-42.688-42.624z\" ></path></symbol><symbol id=\"icon-temp_transform\" viewBox=\"0 0 1024 1024\"><path d=\"M186.32 914.912a2.64 2.64 0 0 1-1.44-0.432A114.864 114.864 0 0 1 73.28 798.272v-124.128a115.2 115.2 0 0 1 113.04-116.64h212.304a115.2 115.2 0 0 1 113.04 116.64v124.128a115.2 115.2 0 0 1-113.04 116.64z m-43.488-240.768v124.128a44.448 44.448 0 0 0 43.488 45.264h211.824a44.448 44.448 0 0 0 43.488-45.264v-124.128a44.448 44.448 0 0 0-43.488-45.264H186.32a44.448 44.448 0 0 0-43.488 45.264z m470.4 227.28a2.448 2.448 0 0 1-2.208-1.44 30.144 30.144 0 0 1-28.08-29.664 32.736 32.736 0 0 1 33.6-33.6 380.352 380.352 0 0 0 60.912-14.64l0.768-0.384a2.16 2.16 0 0 1 1.056-0.24h0.912a146.736 146.736 0 0 0 56.448-46.128l0.288-0.672a2.4 2.4 0 0 1 0.816-0.912l1.392-0.912a2.256 2.256 0 0 1 1.152-0.432 166.512 166.512 0 0 0 43.728-82.752c0.384-2.496 0.864-4.8 1.296-7.056l1.2-6.432a205.2 205.2 0 0 0 4.8-38.4 80.16 80.16 0 0 0-0.432-8.736v-1.488l-28.8 35.136a32.064 32.064 0 0 1-24 12.144 28.08 28.08 0 0 1-12.336-2.976 29.424 29.424 0 0 1-16.56-19.584 31.68 31.68 0 0 1 5.76-24l0.24-0.288 0.384-0.384 74.544-92.544a58.56 58.56 0 0 1 35.808-17.952 49.776 49.776 0 0 1 40.752 26.832l66.912 96.576a30.192 30.192 0 0 1-8.352 38.112 32.112 32.112 0 0 1-21.984 10.608 24 24 0 0 1-16.56-6.576v-0.24l-33.024-44.16v7.632a259.728 259.728 0 0 1-54 155.232 262.464 262.464 0 0 1-124.8 89.856 62.064 62.064 0 0 1-12.048 3.696l-3.6 0.912a333.408 333.408 0 0 1-29.472 5.856h-16.56zM170.72 475.616L107.84 376.304a29.568 29.568 0 0 1 8.64-37.584 32.64 32.64 0 0 1 21.936-10.608 24 24 0 0 1 16.464 6.576v0.24l33.024 43.776a367.68 367.68 0 0 1 7.68-66.672 272.976 272.976 0 0 1 73.104-123.936 243.552 243.552 0 0 1 124.128-64.128 179.184 179.184 0 0 1 46.272-4.08c10.08 0 15.84 12.72 16.32 25.248a34.704 34.704 0 0 1-33.6 38.4l-2.928 0.72A265.968 265.968 0 0 0 368 198.272a187.2 187.2 0 0 0-82.128 66.624l-4.032 5.808a2.496 2.496 0 0 1-1.584 1.056 2.4 2.4 0 0 1-1.536-0.288 196.08 196.08 0 0 0-23.472 59.568l-0.432 2.592a1.248 1.248 0 0 1 0 0.384l-0.336 1.056a2.448 2.448 0 0 1 0 0.576 231.888 231.888 0 0 0-4.464 44.4v9.696l25.968-31.488a32.016 32.016 0 0 1 24-12.096 26.352 26.352 0 0 1 12.432 2.928 30.096 30.096 0 0 1 16.56 19.2 31.536 31.536 0 0 1-5.376 23.376 2.064 2.064 0 0 1-0.528 1.2L248.48 484.928a59.856 59.856 0 0 1-36.336 18.24 48.576 48.576 0 0 1-41.424-27.552z m455.04-9.12a2.544 2.544 0 0 1-1.44-0.432 115.2 115.2 0 0 1-111.648-116.64V225.728a115.2 115.2 0 0 1 113.088-116.64h211.824a115.2 115.2 0 0 1 113.04 116.64v124.128a115.2 115.2 0 0 1-113.04 116.64z m-43.68-240.768v124.128a44.448 44.448 0 0 0 43.488 45.264h211.824a44.448 44.448 0 0 0 43.488-45.264V225.728a44.448 44.448 0 0 0-43.488-45.264H625.76a44.448 44.448 0 0 0-43.68 45.264z\" ></path></symbol><symbol id=\"icon-doc_parser\" viewBox=\"0 0 1024 1024\"><path d=\"M755.797333 891.733333H250.410667A80.810667 80.810667 0 0 1 170.666667 811.776V165.077333A80.768 80.768 0 0 1 250.410667 85.333333h289.024a33.152 33.152 0 0 1 34.133333 32.426667v1.706667a33.152 33.152 0 0 1-32.384 33.92H250.410667a12.373333 12.373333 0 0 0-11.904 11.904v646.485333a12.373333 12.373333 0 0 0 11.904 11.904h505.386666a12.373333 12.373333 0 0 0 11.904-11.904v-369.194667a34.133333 34.133333 0 0 1 67.84 0v369.194667a80.810667 80.810667 0 0 1-79.744 79.957333m-243.2-189.696H384a34.133333 34.133333 0 0 1 0-67.84h129.962667a34.133333 34.133333 0 0 1-1.322667 67.84z m100.565334-166.784H384a33.92 33.92 0 1 1-2.389333-67.797333h231.509333a33.92 33.92 0 1 1 2.389333 67.797333h-2.346666z m46.08-221.866666l-55.466667-38.4a483.498667 483.498667 0 0 1 130.090667-128l3.242666-1.834667-20.650666-50.56a5.717333 5.717333 0 0 1 0.725333-5.162667 6.698667 6.698667 0 0 1 5.290667-2.986666l174.592 22.784a11.050667 11.050667 0 0 1 5.632 7.210666 3.712 3.712 0 0 1-0.981334 3.456L793.216 260.266667a5.888 5.888 0 0 1-4.565333 2.474666 4.864 4.864 0 0 1-4.565334-3.712l-21.333333-50.858666-4.266667 2.816a464.554667 464.554667 0 0 0-99.157333 102.186666z\" ></path></symbol><symbol id=\"icon-shezhi\" viewBox=\"0 0 1024 1024\"><path d=\"M909.6250001 459.6250001H114.3749999a52.3749999 52.3749999 0 1 0 0 104.7499998h795.2500002a52.3749999 52.3749999 0 0 0 0-104.7499998zM114.3749999 264.37500019h457.2500001a150.00000029 150.00000029 0 0 0 280.7499999 0h57.2500002a52.3749999 52.3749999 0 0 0 0-104.7499998h-57.2500002a150.00000029 150.00000029 0 0 0-280.7499999 0H114.3749999a52.3749999 52.3749999 0 0 0 0 104.7499998zM666.7499999 212.00000029A45.24999961 45.24999961 0 1 1 712.00000039 257.2499999 45.24999961 45.24999961 0 0 1 666.7499999 212.00000029zM909.6250001 759.62499981H452.375a150.00000029 150.00000029 0 0 0-280.7499999 0H114.3749999a52.3749999 52.3749999 0 1 0 0 104.7499998h57.2500002a150.00000029 150.00000029 0 0 0 280.7499999 0h457.2500001a52.3749999 52.3749999 0 0 0 0-104.7499998zM357.2500001 811.99999971A45.24999961 45.24999961 0 1 1 311.99999961 766.7500001 45.24999961 45.24999961 0 0 1 357.2500001 811.99999971z\" ></path></symbol><symbol id=\"icon-xitong\" viewBox=\"0 0 1024 1024\"><path d=\"M900.288 142.08H125.44a57.6 57.6 0 0 0-57.6 57.6v495.168a57.6 57.6 0 0 0 57.6 57.6h774.848a57.6 57.6 0 0 0 57.6-57.6V199.68a57.6 57.6 0 0 0-57.6-57.6z m-7.552 545.28H132.992V207.104h759.744v480.128z m-62.528 127.936H195.584a31.68 31.68 0 0 0-31.68 31.68v3.52c0 17.472 14.144 31.68 31.68 31.68h634.624a31.68 31.68 0 0 0 31.616-31.68v-3.52a31.68 31.68 0 0 0-31.616-31.68z\" ></path><path d=\"M166.912 581.952a32.448 32.448 0 0 0 43.328-15.616l95.872-203.84 152.832 189.632a45.312 45.312 0 0 0 77.44-12.416l36.032-95.488 88.32 98.112a45.44 45.44 0 0 0 65.088 2.176l141.888-138.432a32.512 32.512 0 1 0-45.44-46.656l-127.04 123.968L598.848 376.32a44.8 44.8 0 0 0-41.856-14.144 44.8 44.8 0 0 0-33.92 28.416l-35.328 93.44-150.912-187.264a44.928 44.928 0 0 0-40.512-16.448 44.928 44.928 0 0 0-35.52 25.6L151.296 538.624a32.576 32.576 0 0 0 15.616 43.328z\" ></path></symbol><symbol id=\"icon-knowledge\" viewBox=\"0 0 1024 1024\"><path d=\"M567.23363335 136.41129657h-225.57415728v751.17740686H777.12143803a110.46726541 110.46726541 0 0 0 110.4672654-110.4672654V246.87856197c0-49.48933467-32.52156263-91.33433539-77.32708565-105.42995809V379.43928098a33.14017975 33.14017975 0 0 1-56.55924054 23.41906079L688.74762492 337.90358945l-64.95475232 64.95475232a33.14017975 33.14017975 0 0 1-56.55923925-23.41906079V136.41129657z m-291.85451678 0H246.87856197A110.46726541 110.46726541 0 0 0 136.41129657 246.87856197v530.24287606A110.46726541 110.46726541 0 0 0 246.87856197 887.58870343h28.5005546v-751.17740686zM246.87856197 70.13093706h530.24287606a176.74762492 176.74762492 0 0 1 176.74762491 176.74762491v530.24287606a176.74762492 176.74762492 0 0 1-176.74762491 176.74762491H246.87856197a176.74762492 176.74762492 0 0 1-176.74762491-176.74762491V246.87856197a176.74762492 176.74762492 0 0 1 176.74762491-176.74762491z m386.63543089 77.32708566v152.00295823l31.81457256-31.81457257a33.14017975 33.14017975 0 0 1 46.83812029 0l31.81457256 31.81457257V147.45802272h-110.46726541z\" ></path></symbol><symbol id=\"icon-http\" viewBox=\"0 0 1024 1024\"><path d=\"M926.6 336.8c-22.70000001-53.6-55.10000001-101.70000001-96.4-143-41.30000001-41.30000001-89.4-73.8-143-96.4C631.70000001 73.89999999 572.70000001 62 512 62c-60.70000001 0-119.70000001 11.90000001-175.2 35.4-53.6 22.70000001-101.70000001 55.10000001-143 96.4-41.30000001 41.30000001-73.8 89.4-96.4 143C73.89999999 392.29999999 62 451.29999999 62 512c0 60.70000001 11.90000001 119.70000001 35.4 175.2 22.70000001 53.6 55.10000001 101.70000001 96.4 143 41.30000001 41.30000001 89.4 73.8 143 96.4C392.29999999 950.10000001 451.29999999 962 512 962c60.70000001 0 119.70000001-11.90000001 175.2-35.4 53.6-22.70000001 101.70000001-55.10000001 143-96.4 41.30000001-41.30000001 73.8-89.4 96.4-143C950.10000001 631.70000001 962 572.70000001 962 512c0-60.70000001-11.90000001-119.70000001-35.4-175.2z m-685.70000001-95.90000001C280.8 201 327.99999999 171 379.49999999 151.99999999c-2.90000001 3.10000001-5.8 6.30000001-8.69999999 9.50000002-33.90000001 38-61.4 82.10000001-81.70000001 130.89999999-33.70000001-3.6-62-7.50000002-83.59999998-10.90000001 10.90000001-14.2 22.70000001-27.8 35.4-40.59999998z m93.6 122.90000001c9.8 0.8 20 1.60000001 30.50000001 2.30000001 37.8 2.6 75.70000001 4.2 113.69999999 4.79999998v107.80000002H314.4c2.90000001-40.70000001 9.6-79.2 20.10000001-114.90000001zM167.8 343c21.10000001 3.70000001 55 9.10000001 99.40000001 14.2-10.30000001 38.2-16.90000001 78.8-19.60000001 121.50000001H130.10000001c4.10000001-47.70000001 16.90000001-93.6 37.69999999-135.70000001z m0.20000001 338.6c-20.90000001-42.30000001-33.8-88.4-37.9-136.2h116.6c2.10000001 40.8 10.10000001 81.50000001 24.09999999 121.70000001-46 5.10000001-81.10000002 10.6-102.79999999 14.49999999z m72.9 101.50000001c-12.6-12.6-24.30000001-26-35.00000002-40.20000002 23.50000002-3.6 54.70000001-7.90000001 92.30000001-11.8 19 37 43 73.30000001 71.70000001 108.10000001 11.90000001 14.40000001 24.30000001 28.30000001 37.2 41.70000001-62.10000001-17.60000001-119.2-50.90000001-166.20000002-97.80000002z m237.79999998 74.49999999c-17.70000001-16.50000001-38.10000001-37.50000001-58.4-62.2-18.8-23-35.30000001-46.6-49.39999998-70.50000001 35.90000001-2.4 71.8-3.90000001 107.69999999-4.49999999v137.2z m2e-8-203.90000001c-37.90000001 0.6-75.90000001 2.2-113.70000001 4.80000002-8.8 0.6-17.30000001 1.2-25.6 1.89999999-14.90000001-38-23.6-76.6-25.89999999-115.10000001h165.2v108.40000002z m0-349.59999998c-35.90000001-0.6-71.90000001-2.10000001-107.70000001-4.50000001-3.90000001-0.30000001-7.8-0.50000001-11.6-0.8 15.8-33.2 35.6-63.50000001 59-90.30000001 21.10000001-24.2 42.4-42.2 60.30000001-55.09999999v150.70000001z m304.39999998-63.20000002c12.8 12.8 24.6 26.4 35.50000001 40.8-26 4-52.10000001 7.50000002-78.2 10.4-20.30000002-48.70000001-47.70000001-92.6-81.6-130.59999998-1.8-2.10000001-3.70000001-4.10000001-5.6-6.2 48 19.10000001 92.2 48 129.90000001 85.6z m-237.79999998-91.39999998c18.4 12.70000001 41 31.10000001 63.59999998 56.49999999 24.4 27.4 44.90000001 58.50000001 61.2 92.70000002-43.70000001 3.30000001-85.50000001 5-124.89999999 5.59999997V149.49999999z m-2e-8 221.39999998c18.30000001-0.30000001 36.6-0.70000001 54.70000002-1.39999998 31.70000001-1.2 63.30000001-3.2 94.9-5.90000001 10.6 35.8 17.30000001 74.30000001 20.19999998 115.10000001H545.30000001V370.89999999z m0 174.40000002h170.80000002c-2.30000001 38.50000001-11 77.10000001-26 115.19999998-30-2.50000001-60-4.30000002-90.1-5.49999999-18.2-0.70000001-36.50000001-1.2-54.70000002-1.4V545.30000001z m0 317.49999999V720.4c35.8 0.50000001 73.70000001 2 113.2 4.70000001-14 23.90000001-30.50000001 47.4-49.29999999 70.29999999-22.4 27.4-45 50.10000001-63.90000001 67.4z m237.80000002-79.70000001c-45 45-99.30000001 77.50000001-158.50000001 95.60000002 12.2-12.70000001 23.8-25.8 35-39.4 28.6-34.70000001 52.6-70.90000001 71.60000001-107.8 29.10000001 3.10000001 58.10000001 6.90000001 86.99999999 11.29999999-10.8 14.2-22.50000001 27.70000001-35.10000001 40.30000001zM856.00000001 681.4c-32.30000001-5.50000001-64.8-10.2-97.40000001-14 14-40.30000001 22.10000001-81.2 24.2-122.10000001h111c-4 47.8-16.90000001 93.8-37.80000001 136.10000001z m-74.00000001-202.70000001c-2.70000001-42.8-9.30000001-83.6-19.70000001-121.89999998 31.4-3.8 62.8-8.30000001 94.00000002-13.60000001 20.70000001 42.10000001 33.50000001 88.00000001 37.59999998 135.6H782z\" ></path></symbol><symbol id=\"icon-llm\" viewBox=\"0 0 1024 1024\"><path d=\"M495.488 45.994667a42.666667 42.666667 0 0 1 38.144 2.56l362.666667 213.333333A42.666667 42.666667 0 0 1 917.333333 298.666667v426.666666c0 15.104-8.021333 29.141333-21.034666 36.778667l-362.666667 213.333333a42.666667 42.666667 0 0 1-43.264 0l-362.666667-213.333333A42.709333 42.709333 0 0 1 106.666667 725.333333V298.666667a42.666667 42.666667 0 0 1 21.034666-36.778667l362.666667-213.333333 5.12-2.56zM192 322.986667v377.941333l320 188.16 320-188.16V322.986667L512 134.826667 192 322.986667z m467.968 46.122666a42.666667 42.666667 0 1 1 45.226667 72.362667L554.666667 535.552V704a42.666667 42.666667 0 1 1-85.333334 0v-168.277333l-150.613333-94.293334a42.666667 42.666667 0 0 1 45.226667-72.32l147.925333 92.586667 148.053333-92.586667z\" ></path></symbol><symbol id=\"icon-gongneng\" viewBox=\"0 0 1024 1024\"><path d=\"M732.20397484 80.64152876C614.22558955 80.64152876 518.70331735 176.16380093 518.70331735 294.14218623s95.52227219 213.33307455 213.33307454 213.33307456 213.33307455-95.52227219 213.33307455-213.33307456-95.35468925-213.50065749-213.1654916-213.50065747z m0 351.75657775c-76.41781775 0-138.42350321-62.00568545-138.42350321-138.42350321s62.00568545-138.42350321 138.42350321-138.4235032 138.42350321 62.00568545 138.42350321 138.4235032-62.00568545 138.42350321-138.42350321 138.42350321zM398.21118804 100.58389783H149.51811447c-41.39298462 0-75.24473721 33.85175261-75.24473719 75.24473724v248.35790768c0 41.39298462 33.85175261 75.24473721 75.24473719 75.24473723h248.69307357c41.39298462 0 75.24473721-33.85175261 75.24473722-75.24473723V175.82863507c0-41.39298462-33.85175261-75.24473721-75.24473722-75.24473724z m2.17857814 313.88283478c0 6.70331735-5.36265388 12.06597121-12.06597124 12.06597123H159.5730905c-6.70331735 0-12.06597121-5.36265388-12.06597123-12.06597123V185.71602815c0-6.70331735 5.36265388-12.06597121 12.06597123-12.06597122h228.75070444c6.70331735 0 12.06597121 5.36265388 12.06597124 12.06597122v228.75070446zM398.21118804 543.33800861H149.51811447c-41.39298462 0-75.24473721 33.85175261-75.24473719 75.2447372v248.35790768c0 41.39298462 33.85175261 75.24473721 75.24473719 75.24473721h248.69307357c41.39298462 0 75.24473721-33.85175261 75.24473722-75.24473721V618.58274581c0-41.39298462-33.85175261-75.24473721-75.24473722-75.2447372z m2.17857814 313.88283474c0 6.70331735-5.36265388 12.06597121-12.06597124 12.06597122H159.5730905c-6.70331735 0-12.06597121-5.36265388-12.06597123-12.06597122V628.47013888c0-6.70331735 5.36265388-12.06597121 12.06597123-12.06597122h228.75070444c6.70331735 0 12.06597121 5.36265388 12.06597124 12.06597122V857.22084335zM856.38292869 534.62369604H607.85743806c-41.39298462 0-75.24473721 33.85175261-75.24473721 75.24473721v248.35790771c0 41.39298462 33.85175261 75.24473721 75.24473721 75.24473722h248.69307356c41.39298462 0 75.24473721-33.85175261 75.2447372-75.24473722V609.86843325c0-41.39298462-33.85175261-75.24473721-75.41232013-75.24473721z m2.17857814 313.71525182c0 6.70331735-5.36265388 12.06597121-12.06597122 12.06597123H617.74483115c-6.70331735 0-12.06597121-5.36265388-12.06597121-12.06597123V619.5882434c0-6.70331735 5.36265388-12.06597121 12.06597121-12.06597121h228.75070446c6.70331735 0 12.06597121 5.36265388 12.06597122 12.06597121v228.75070446z\" ></path></symbol><symbol id=\"icon-note\" viewBox=\"0 0 1024 1024\"><path d=\"M864 64H704V32c0-17.066667-14.933333-32-32-32S640 14.933333 640 32V64H384V32c0-17.066667-14.933333-32-32-32S320 14.933333 320 32V64H160C142.933333 64 128 78.933333 128 96v896c0 17.066667 14.933333 32 32 32h704c17.066667 0 32-14.933333 32-32v-896c0-17.066667-14.933333-32-32-32zM832 960H192V128h128v64c0 17.066667 14.933333 32 32 32S384 209.066667 384 192V128h256v64c0 17.066667 14.933333 32 32 32S704 209.066667 704 192V128h128v832z\" ></path><path d=\"M704 384H320c-17.066667 0-32 14.933333-32 32S302.933333 448 320 448h384c17.066667 0 32-14.933333 32-32S721.066667 384 704 384zM704 640H320c-17.066667 0-32 14.933333-32 32S302.933333 704 320 704h384c17.066667 0 32-14.933333 32-32S721.066667 640 704 640z\" ></path></symbol><symbol id=\"icon-code\" viewBox=\"0 0 1024 1024\"><path d=\"M153.770667 517.558857l200.387047-197.241905L302.86019 268.190476 48.761905 518.290286l254.439619 243.614476 50.590476-52.833524-200.021333-191.512381zM658.285714 320.316952L709.583238 268.190476l254.098286 250.09981L709.241905 761.904762l-50.590476-52.833524 200.021333-191.512381L658.285714 320.316952z m-112.981333-86.186666L393.99619 785.554286l70.534096 19.358476 151.30819-551.399619-70.534095-19.358476z\" ></path></symbol><symbol id=\"icon-yidongzhi\" viewBox=\"0 0 1076 1024\"><path d=\"M864.12529436 570.86169596c-0.69658846-6.26929351-2.78635252-12.53858572-7.66246912-18.11129078-1.39317561-1.39317561-2.78635252-2.08976406-4.8761179-3.48294097l-192.25832033-174.14702956c-13.23517418-11.84199855-34.13281745-11.14541009-45.97481601 2.08976406s-11.14541009 34.13281745 2.08976406 45.97481602l128.86880202 117.02680346H288.0469192c-16.71811515 0-32.04305339 12.53858572-33.436229 29.25670215-2.08976406 19.50446767 13.23517418 35.52599437 32.04305339 35.52599308h462.53451136l-144.89032869 131.65515454c-13.23517418 11.84199855-14.62835108 32.73964185-2.08976536 45.97481602 6.26929351 6.96588066 15.32493824 10.44882164 24.38058426 10.44882163 7.66246912 0 15.32493824-2.78635252 21.59423175-8.35905757l204.10031889-184.59585122c1.39317561-1.39317561 2.78635252-1.39317561 4.17952944-2.78635252 4.8761166-4.8761166 6.96588066-11.84199855 7.66246912-18.11129076 0-1.39317561 0.69658846-2.78635252 0.69658846-4.17952814 0-1.39317561-0.69658846-2.78635252-0.69658846-4.17952944z\" ></path><path d=\"M961.64763014 169.62694013h-407.50404933l-55.7270492-82.89398729c-15.32493824-22.98740736-41.09869942-36.22258282-68.96222339-36.22258153h-299.53289189c-61.29975426 0-110.75751124 49.45775699-110.75750995 110.75751124v702.16082336c0 61.29975426 49.45775699 110.75751124 110.75750995 110.75751123h823.36715753c60.6031658 0 110.75751124-49.45775699 110.75750995-110.06092278l8.35905758-583.04425582c0-61.99634272-49.45775699-111.45409841-110.75751125-111.45409841z m37.61575844 693.10517732c0 25.07717273-20.20105484 45.27822756-45.27822756 45.27822755H129.92141633c-25.07717273 0-45.27822756-20.20105484-45.27822756-45.27822755V161.26788255c0-25.07717273 20.20105484-45.27822756 45.27822756-45.27822755h265.40007314c27.86352525 0 53.63728514 13.93176263 68.96222467 36.22258152l55.7270492 82.89398601h441.6368668c25.07717273 0 45.27822756 20.20105484 45.27822885 45.27822755l-7.66247041 582.34766737z\" ></path></symbol><symbol id=\"icon-gengduo\" viewBox=\"0 0 1024 1024\"><path d=\"M227.14123 413.647995c-52.14973 0-94.587262 42.439578-94.587262 94.587262 0 52.14973 42.437531 94.587262 94.587262 94.587262 52.147684 0 94.587262-42.437531 94.587262-94.587262C321.728492 456.087573 279.288914 413.647995 227.14123 413.647995z\" ></path><path d=\"M510.903016 413.647995c-52.14973 0-94.587262 42.439578-94.587262 94.587262 0 52.14973 42.437531 94.587262 94.587262 94.587262 52.147684 0 94.587262-42.437531 94.587262-94.587262C605.490278 456.087573 563.051723 413.647995 510.903016 413.647995z\" ></path><path d=\"M794.665825 413.647995c-52.14973 0-94.587262 42.439578-94.587262 94.587262 0 52.14973 42.437531 94.587262 94.587262 94.587262 52.147684 0 94.587262-42.437531 94.587262-94.587262C889.253086 456.087573 846.813508 413.647995 794.665825 413.647995z\" ></path></symbol><symbol id=\"icon-circle\" viewBox=\"0 0 1024 1024\"><path d=\"M512 64C264.576 64 64 264.576 64 512c0 247.36 200.576 448 448 448s448-200.64 448-448c0-247.424-200.576-448-448-448z m0 832C299.936 896 128 724.032 128 512 128 299.904 299.936 128 512 128s384 171.904 384 384c0 212.032-171.936 384-384 384z\" ></path><path d=\"M512 512m-288 0a288 288 0 1 0 576 0 288 288 0 1 0-576 0Z\" ></path></symbol><symbol id=\"icon-yuan\" viewBox=\"0 0 1024 1024\"><path d=\"M512 960c247.42 0 448-200.58 448-448S759.42 64 512 64 64 264.58 64 512s200.58 448 448 448z m0-76c-205.45 0-372-166.55-372-372s166.55-372 372-372 372 166.55 372 372-166.55 372-372 372z\" ></path></symbol><symbol id=\"icon-close\" viewBox=\"0 0 1024 1024\"><path d=\"M56.888889 512c0-125.667556 44.430222-232.96 133.290667-321.820444C279.04 101.319111 386.332444 56.888889 512 56.888889s232.96 44.430222 321.820444 133.290667C922.680889 279.04 967.111111 386.332444 967.111111 512s-44.430222 232.96-133.290667 321.820444C744.96 922.680889 637.667556 967.111111 512 967.111111s-232.96-44.430222-321.820444-133.290667C101.319111 744.96 56.888889 637.667556 56.888889 512z m56.888889 0c0 109.966222 38.883556 203.832889 116.622222 281.6 77.767111 77.738667 171.633778 116.622222 281.6 116.622222 109.966222 0 203.832889-38.883556 281.6-116.622222 77.738667-77.767111 116.622222-171.633778 116.622222-281.6 0-109.966222-38.883556-203.832889-116.622222-281.6C715.832889 152.689778 621.966222 113.777778 512 113.777778c-109.966222 0-203.832889 38.883556-281.6 116.622222C152.689778 308.195556 113.777778 402.062222 113.777778 512z\" ></path><path d=\"M56.888889 512c0-125.667556 44.430222-232.96 133.290667-321.820444C279.04 101.319111 386.332444 56.888889 512 56.888889s232.96 44.430222 321.820444 133.290667C922.680889 279.04 967.111111 386.332444 967.111111 512s-44.430222 232.96-133.290667 321.820444C744.96 922.680889 637.667556 967.111111 512 967.111111s-232.96-44.430222-321.820444-133.290667C101.319111 744.96 56.888889 637.667556 56.888889 512z m56.888889 0c0 109.966222 38.883556 203.832889 116.622222 281.6 77.767111 77.738667 171.633778 116.622222 281.6 116.622222 109.966222 0 203.832889-38.883556 281.6-116.622222 77.738667-77.767111 116.622222-171.633778 116.622222-281.6 0-109.966222-38.883556-203.832889-116.622222-281.6C715.832889 152.689778 621.966222 113.777778 512 113.777778c-109.966222 0-203.832889 38.883556-281.6 116.622222C152.689778 308.195556 113.777778 402.062222 113.777778 512z\" ></path><path d=\"M661.134222 391.338667a28.444444 28.444444 0 0 1-8.334222 20.110222l-241.351111 241.351111a28.444444 28.444444 0 1 1-40.248889-40.220444l241.351111-241.351112a28.444444 28.444444 0 0 1 48.583111 20.110223z\" ></path><path d=\"M661.134222 391.338667a28.444444 28.444444 0 0 1-8.334222 20.110222l-241.351111 241.351111a28.444444 28.444444 0 1 1-40.248889-40.220444l241.351111-241.351112a28.444444 28.444444 0 0 1 48.583111 20.110223z\" ></path><path d=\"M661.134222 632.689778a28.444444 28.444444 0 0 1-48.583111 20.110222l-241.351111-241.351111a28.444444 28.444444 0 1 1 40.248889-40.220445l241.351111 241.351112a28.444444 28.444444 0 0 1 8.334222 20.110222z\" ></path><path d=\"M661.134222 632.689778a28.444444 28.444444 0 0 1-48.583111 20.110222l-241.351111-241.351111a28.444444 28.444444 0 1 1 40.248889-40.220445l241.351111 241.351112a28.444444 28.444444 0 0 1 8.334222 20.110222z\" ></path></symbol><symbol id=\"icon-wenjianjia\" viewBox=\"0 0 1024 1024\"><path d=\"M855.04 385.024q19.456 2.048 38.912 10.24t33.792 23.04 21.504 37.376 2.048 54.272q-2.048 8.192-8.192 40.448t-14.336 74.24-18.432 86.528-19.456 76.288q-5.12 18.432-14.848 37.888t-25.088 35.328-36.864 26.112-51.2 10.24l-567.296 0q-21.504 0-44.544-9.216t-42.496-26.112-31.744-40.96-12.288-53.76l0-439.296q0-62.464 33.792-97.792t95.232-35.328l503.808 0q22.528 0 46.592 8.704t43.52 24.064 31.744 35.84 12.288 44.032l0 11.264-53.248 0q-40.96 0-95.744-0.512t-116.736-0.512-115.712-0.512-92.672-0.512l-47.104 0q-26.624 0-41.472 16.896t-23.04 44.544q-8.192 29.696-18.432 62.976t-18.432 61.952q-10.24 33.792-20.48 65.536-2.048 8.192-2.048 13.312 0 17.408 11.776 29.184t29.184 11.776q31.744 0 43.008-39.936l54.272-198.656q133.12 1.024 243.712 1.024l286.72 0z\" ></path></symbol><symbol id=\"icon-AIshengcheng\" viewBox=\"0 0 1024 1024\"><path d=\"M512 101.54666667l60.611048 199.143619a286.72 286.72 0 0 0 190.805333 190.805333l199.143619 60.611048-199.143619 60.61104799a286.72 286.72 0 0 0-190.805333 190.80533301L512 1002.66666667l-60.611048-199.143619a286.72 286.72 0 0 0-190.805333-190.80533301L61.44 552.10666667l199.143619-60.611048a286.72 286.72 0 0 0 190.805333-190.805333L512 101.54666667z\" ></path><path d=\"M235.52 265.38666667l10.337524 34.08457102a40.96 40.96 0 0 0 27.25790499 27.25790498l34.035809 10.337524-34.035809 10.386286a40.96 40.96 0 0 0-27.25790499 27.257904l-10.38628601 34.03581-10.337524-34.03581a40.96 40.96 0 0 0-27.30666599-27.306666L163.84 337.06666667l34.08457101-10.337524a40.96 40.96 0 0 0 27.25790499-27.306666l10.337524-34.03581zM829.44 183.46666667a46.12876199 46.12876199 0 0 0 30.72 30.72 46.12876199 46.12876199 0 0 0-30.72 30.72 46.177524 46.177524 0 0 0-30.72-30.72 46.177524 46.177524 0 0 0 30.72-30.72zM518.339048 27.42857167a46.177524 46.177524 0 0 0 30.72 30.72 46.177524 46.177524 0 0 0-30.72 30.72 46.177524 46.177524 0 0 0-30.72-30.72 46.177524 46.177524 0 0 0 30.72-30.72zM645.36380999 27.18476167l42.42285701 50.22476201c13.16571399 15.60380999 33.35314299 23.69828598 53.686857 21.45523799l65.340952-7.265524-50.22476201 42.42285801a61.44 61.44 0 0 0-21.45523799 53.63809499l7.21676201 65.340952-42.374095-50.22476201a61.44 61.44 0 0 0-53.686857-21.45523799l-65.34095301 7.265524 50.224762-42.422857c15.60380999-13.16571399 23.69828598-33.304381 21.455238-53.63809499l-7.26552299-65.34095301z\" ></path></symbol><symbol id=\"icon-sijiaoxing\" viewBox=\"0 0 1024 1024\"><path d=\"M532.8 134.464c-12.16-35.392-32-35.328-44.032 0.128l-67.84 200c-12.096 35.456-50.88 74.24-86.336 86.336L136.064 488.448c-35.456 12.032-35.52 32-0.192 44.288l197.376 68.672c35.328 12.288 74.24 51.328 86.4 86.72l68.864 200.192c12.16 35.392 31.872 35.328 43.84-0.128l67.264-199.36c11.968-35.456 50.688-74.368 86.08-86.464l201.664-69.12c35.392-12.096 35.392-31.808-0.064-43.776l-198.464-67.2c-35.456-11.968-74.432-50.688-86.592-86.08L532.8 134.464z\" ></path><path d=\"M883.648 111.552c-3.456-10.112-9.152-10.112-12.608 0l-19.392 57.216a44.672 44.672 0 0 1-24.64 24.64l-56.704 19.264c-10.112 3.456-10.176 9.152 0 12.672l56.32 19.648a45.44 45.44 0 0 1 24.704 24.768l19.648 57.216c3.52 10.112 9.152 10.048 12.544-0.064l19.2-56.96a44.672 44.672 0 0 1 24.64-24.704l57.6-19.712c10.112-3.52 10.112-9.152 0-12.544l-56.704-19.2a44.8 44.8 0 0 1-24.768-24.576l-19.84-57.6z\" ></path></symbol><symbol id=\"icon-hand\" viewBox=\"0 0 1024 1024\"><path d=\"M824.515155 243.164159c-16.249079 0-31.582299 4.389984-44.734854 12.033058l0-56.767911c0-49.345871-40.10337-89.468684-89.468684-89.468684-18.438954 0-35.519981 5.591345-49.800219 15.155165-12.236696-34.83539-45.433772-59.890019-84.405365-59.890019-38.968523 0-72.189136 25.054629-84.420715 59.890019-14.21884-9.56382-31.343869-15.155165-49.7818-15.155165-49.343825 0-89.467661 40.122813-89.467661 89.468684l0 329.831031-60.22157-104.365976c-11.664667-21.25407-30.735002-36.369326-53.626361-42.637076-22.321378-6.072299-45.541219-2.863211-65.399499 9.041934-40.582277 24.332175-56.048527 79.356372-34.444487 122.669854 1.333368 2.708692 29.879518 61.160965 118.979812 239.312434 41.960671 83.877339 88.004333 143.902434 136.845715 178.239474 38.334073 26.956955 64.831564 28.353768 69.746504 28.353768l223.674269 0c38.047548 0 73.438593-12.362562 105.236809-36.785811 29.794583-22.935362 55.745628-56.136531 76.933183-98.596576 41.765219-83.532485 63.869656-199.123107 63.869656-334.333578L914.029888 332.587817c0-49.342802-40.148395-89.469708-89.467661-89.469708L824.515155 243.164159zM869.250008 489.203808c0 128.264269-20.444635 236.908688-59.150168 314.276776-25.255197 50.504254-70.422909 110.702288-142.157697 110.702288l-223.234247 0c-1.726318-0.130983-20.576641-2.228761-48.974411-23.502273-28.308743-21.186532-71.795163-65.835428-118.017904-158.318772-90.669022-181.384094-118.541837-238.506069-118.803803-239.050468-0.041956-0.089028-0.041956-0.130983-0.085958-0.176009-11.228739-22.499433-3.276626-51.988048 17.388019-64.36903 9.304923-5.593392 20.180622-7.057743 30.645974-4.239558 11.138688 3.036149 20.488637 10.552334 26.253944 21.100574 0.10847 0.130983 0.198521 0.326435 0.284479 0.458441l69.829392 121.009028c14.264888 26.079982 30.319539 37.004799 47.730071 32.593326 17.452487-4.414543 26.253944-21.889543 26.253944-51.770084L377.211643 198.429305c0-24.64019 20.09671-44.734854 44.732807-44.734854 24.642237 0 44.738947 20.094664 44.738947 44.734854l0 290.774503c0 12.342096 10.021238 22.367427 22.366404 22.367427 12.341073 0 22.36538-10.025331 22.36538-22.367427L511.415181 153.694451c0-24.641213 20.09671-44.73383 44.735877-44.73383 24.638143 0 44.735877 20.092617 44.735877 44.73383l0 335.509357c0 12.342096 10.002818 22.367427 22.36538 22.367427 12.363585 0 22.367427-10.025331 22.367427-22.367427L645.619742 198.429305c0-24.64019 20.098757-44.734854 44.73383-44.734854 24.63712 0 44.735877 20.094664 44.735877 44.734854l0 335.509357c0 12.319583 10.001795 22.367427 22.367427 22.367427 12.363585 0 22.366404-10.047844 22.366404-22.367427L779.82328 332.632843c0-24.641213 20.09671-44.73383 44.735877-44.73383 24.635073 0 44.731784 20.092617 44.731784 44.73383l0 156.570965L869.250008 489.203808z\" ></path></symbol><symbol id=\"icon-xiaoditu\" viewBox=\"0 0 1024 1024\"><path d=\"M512 32a32 32 0 0 1 31.488 26.24L544 64v33.216a416.064 416.064 0 0 1 382.784 382.848L960 480a32 32 0 0 1 5.76 63.488L960 544h-33.216a416.064 416.064 0 0 1-382.72 382.784L544 960a32 32 0 0 1-63.488 5.76L480 960v-33.216a416.064 416.064 0 0 1-382.784-382.72L64 544a32 32 0 0 1-5.76-63.488L64 480h33.216A416.064 416.064 0 0 1 480 97.28L480 64A32 32 0 0 1 512 32z m32 129.408V192a32 32 0 0 1-63.488 5.76L480 192v-30.592A352.128 352.128 0 0 0 161.408 480H192a32 32 0 0 1 5.76 63.488L192 544h-30.592A352.128 352.128 0 0 0 480 862.656V832a32 32 0 0 1 63.488-5.76L544 832v30.592A352.128 352.128 0 0 0 862.656 544L832 544a32 32 0 0 1-5.76-63.488L832 480h30.592A352.128 352.128 0 0 0 544 161.408zM512 320a192 192 0 1 1 0 384 192 192 0 0 1 0-384z m0 64a128 128 0 1 0 0 256 128 128 0 0 0 0-256z\" ></path></symbol><symbol id=\"icon-add1\" viewBox=\"0 0 1024 1024\"><path d=\"M511.954846 142.505688c-204.095599 0-369.449158 165.443866-369.449158 369.449158S307.949555 881.494312 511.954846 881.494312 881.404004 716.050445 881.404004 512.045154 716.050445 142.505688 511.954846 142.505688z m221.795926 394.2838H536.789488v196.961284h-49.578976V536.789488H290.158921v-49.578976h196.961284V290.158921h49.578975v196.961284h196.961284v49.669283z\" ></path></symbol><symbol id=\"icon-remark\" viewBox=\"0 0 1024 1024\"><path d=\"M882.385702 78.966129h-101.235346V33.659793c0-18.55768-15.230096-33.659793-33.659792-33.659793-18.55768 0-33.659793 15.230096-33.659793 33.659793v45.306336H342.933133V33.659793c0-18.55768-15.230096-33.659793-33.659792-33.659793-18.55768 0-33.659793 15.230096-33.659793 33.659793v45.306336H140.590426c-55.417073 0-100.979378 45.178353-100.979377 100.979378v741.795275c0 55.417073 45.178353 100.979378 100.979377 100.979378h741.795276c55.417073 0 100.979378-45.178353 100.979377-100.979378V179.945507c0-55.417073-45.178353-100.979378-100.979377-100.979378z m33.531808 842.774653c0 18.429696-15.230096 33.531809-33.531808 33.531809H140.590426c-18.429696 0-33.531809-15.230096-33.531808-33.531809V179.945507c0-18.429696 15.230096-33.531809 33.531808-33.531809h134.895138v9.5988c0 18.55768 15.230096 33.659793 33.659793 33.659793 18.55768 0 33.659793-15.230096 33.659792-33.659793v-9.5988h370.769654v9.5988c0 18.55768 15.230096 33.659793 33.659793 33.659793 18.55768 0 33.659793-15.230096 33.659792-33.659793v-9.5988h101.235346c18.429696 0 33.531809 15.230096 33.531808 33.531809v741.795275z m0 0\" ></path><path d=\"M781.150356 314.968629H241.825772c-18.55768 0-33.659793 15.230096-33.659793 33.659792 0 18.55768 15.102112 33.659793 33.659793 33.659793h539.324584c18.55768 0 33.659793-15.230096 33.659793-33.659793 0-18.55768-15.102112-33.659793-33.659793-33.659792zM781.150356 517.183352H241.825772c-18.55768 0-33.659793 15.230096-33.659793 33.659793 0 18.55768 15.102112 33.659793 33.659793 33.659792h539.324584c18.55768 0 33.659793-15.230096 33.659793-33.659792 0-18.55768-15.102112-33.659793-33.659793-33.659793zM511.488064 719.398075H241.825772c-18.55768 0-33.659793 15.230096-33.659793 33.659793 0 18.55768 15.102112 33.659793 33.659793 33.659792h269.662292c18.55768 0 33.659793-15.230096 33.659793-33.659792 0-18.55768-15.102112-33.659793-33.659793-33.659793zM817.241845 751.394076H770.527684v-46.714161c0-17.91776-14.71816-32.635921-32.63592-32.63592S705.255843 686.762155 705.255843 704.679915V751.394076h-46.714161c-17.91776 0-32.635921 14.71816-32.63592 32.63592s14.71816 32.635921 32.63592 32.635921H705.255843v46.71416c0 17.91776 14.71816 32.635921 32.635921 32.635921s32.635921-14.71816 32.63592-32.635921V816.665917h46.714161c17.91776 0 32.635921-14.71816 32.63592-32.635921S835.159605 751.394076 817.241845 751.394076z\" ></path></symbol><symbol id=\"icon-cursor\" viewBox=\"0 0 1024 1024\"><path d=\"M288 83.008V900.992l52.992-44 128.992-108 65.024 129.024 13.984 28.992 29.024-15.008 98.976-51.008 28-13.984-13.984-29.024-59.008-116 162.016-20 64.96-8L813.024 608 343.04 136.992 288 83.008z m64 155.008l370.016 368.96-144 17.024-45.024 6.016 21.024 40.96 65.984 128-42.016 22.016-68.992-137.984-19.008-36-30.976 25.984L352 763.008V237.984z\" ></path></symbol><symbol id=\"icon-agent\" viewBox=\"0 0 1024 1024\"><path d=\"M690.185 275.766c88.365 0 160 71.634 160 160v239.488c0 88.365-71.635 160-160 160H339.766c-88.366 0-160-71.635-160-160V435.766c0-88.366 71.634-160 160-160h350.419z m-350.419 64c-53.02 0-96 42.98-96 96v239.488c0 53.019 42.98 96 96 96h350.419c53.019 0 96-42.981 96-96V435.766c0-53.02-42.981-96-96-96H339.766z m56.28 120.882c52.056 0.001 94.256 42.201 94.256 94.257 0 52.057-42.2 94.256-94.256 94.256s-94.257-42.199-94.257-94.256c0-52.056 42.2-94.257 94.257-94.257z m240.348 0c52.056 0.001 94.255 42.201 94.255 94.257 0 52.057-42.199 94.256-94.255 94.256-52.057 0-94.257-42.199-94.257-94.256 0-52.056 42.2-94.257 94.257-94.257zM128 481.562c17.673 0 32 14.327 32 32v83.907c0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32v-83.907c0-17.673 14.327-32 32-32z m769.113 0c17.673 0 32 14.327 32 32v83.907c0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32v-83.907c0-17.673 14.327-32 32-32z m-501.067 43.086c-16.71 0-30.257 13.547-30.257 30.257s13.547 30.256 30.257 30.256 30.256-13.546 30.256-30.256-13.546-30.256-30.256-30.257z m240.348 0c-16.711 0-30.257 13.547-30.257 30.257s13.546 30.256 30.257 30.256c16.71 0 30.255-13.546 30.255-30.256s-13.545-30.256-30.255-30.257zM556.931 192c17.673 0 32 14.327 32 32 0 17.673-14.327 32-32 32h-83.908c-17.673 0-32-14.327-32-32 0-17.673 14.327-32 32-32h83.908z\" ></path></symbol><symbol id=\"icon-flow\" viewBox=\"0 0 1024 1024\"><path d=\"M339.264 809.6l3.712 1.92 158.272 91.776c3.712 2.176 8.128 2.56 12.032 1.088l2.304-1.088 158.272-91.776a43.072 43.072 0 0 1 59.008 15.872 43.52 43.52 0 0 1-12.288 56.96l-3.52 2.304-158.272 91.776a100.416 100.416 0 0 1-95.168 3.008l-5.568-3.008-158.272-91.776a43.52 43.52 0 0 1-15.808-59.264 43.072 43.072 0 0 1 55.296-17.792zM870.4 636.992c49.472 0 89.6 40.32 89.6 90.048 0 49.664-40.128 89.984-89.6 89.984-49.472 0-89.6-40.32-89.6-89.984 0-49.728 40.128-90.048 89.6-90.048z m-716.8 0c49.472 0 89.6 40.32 89.6 90.048 0 49.664-40.128 89.984-89.6 89.984-49.472 0-89.6-40.32-89.6-89.984 0-49.728 40.128-90.048 89.6-90.048z m386.816-350.784l157.696 91.008a64 64 0 0 1 32 55.424v182.144a64 64 0 0 1-32 55.424l-157.696 91.008a64 64 0 0 1-64 0L318.72 670.208a64 64 0 0 1-32-55.424V432.64a64 64 0 0 1 32-55.424l157.696-91.008a64 64 0 0 1 64 0z m172.928-127.36l3.712 1.92 158.208 91.712c29.376 17.024 48.128 47.68 50.24 81.344l0.192 6.4v183.488a43.264 43.264 0 0 1-43.2 43.392 43.264 43.264 0 0 1-43.008-39.232l-0.192-4.16V340.16c0-4.288-1.92-8.32-5.12-11.072L832 327.68 673.92 235.904a43.52 43.52 0 0 1-15.808-59.264 43.072 43.072 0 0 1 55.296-17.792z m-354.56 17.792a43.52 43.52 0 0 1-12.288 56.96l-3.52 2.304L184.768 327.68a14.464 14.464 0 0 0-7.04 9.984l-0.192 2.56v183.488a43.264 43.264 0 0 1-43.2 43.392 43.264 43.264 0 0 1-43.008-39.232l-0.192-4.16V340.16c0-34.048 17.024-65.6 45.056-84.288l5.376-3.392 158.208-91.712a43.072 43.072 0 0 1 59.008 15.872zM511.616 32c49.472 0 89.6 40.32 89.6 89.984 0 49.728-40.128 90.048-89.6 90.048-49.472 0-89.6-40.32-89.6-90.048 0-49.664 40.128-89.984 89.6-89.984z\" ></path></symbol><symbol id=\"icon-logo\" viewBox=\"0 0 1024 1024\"><path d=\"M512.512 54.4C764.544 54.4 969.6 259.712 969.6 512v2.88c0 86.4-29.44 166.976-79.296 215.68-30.08 29.44-65.344 45.184-102.08 45.184h-2.24c-46.272-0.832-82.88-26.24-108.608-74.368l-4.16-8.256-5.888 7.68c-39.424 47.552-94.4 74.88-152.896 74.88h-3.2c-115.2-1.92-206.592-109.696-204.288-239.616C309.12 407.552 403.2 303.68 518.08 303.68h3.2c41.024 0.704 71.232 12.8 113.856 43.712l8.96 6.72v-11.52c0-6.784 1.024-12.224 4.224-16.896l2.816-3.392c5.824-5.76 10.816-6.656 23.616-6.72h13.44c14.72 0.064 20.608 1.152 27.136 7.68 4.928 4.864 7.232 11.456 7.232 19.392V528c0 99.584 27.648 162.624 66.176 163.328h0.896c21.568 0 45.248-16.96 64.384-47.552 21.824-34.816 34.432-81.792 35.328-131.904 0-205.76-168.064-373.184-374.592-373.184-206.592 0-374.656 167.424-374.656 373.248 0 205.824 168.064 373.312 374.656 373.312 43.072 0 85.312-7.296 125.632-21.568 8.96-3.2 17.024-6.592 19.456-7.808a40.768 40.768 0 0 1 52.864 18.368l2.88 5.76c4.608 9.344 5.248 19.84 1.728 29.632a37.504 37.504 0 0 1-20.032 21.76 324.352 324.352 0 0 1-32.768 13.184 460.672 460.672 0 0 1-150.336 24.96C260.672 969.6 54.4 764.352 54.4 512 54.4 259.648 259.904 54.4 512.512 54.4z m2.24 329.088c-66.368 0-121.408 70.4-121.408 157.888s55.04 157.824 121.408 157.824c66.304 0 121.344-70.4 121.344-157.824 0-87.488-55.04-157.888-121.344-157.888z\" ></path></symbol><symbol id=\"icon-chat\" viewBox=\"0 0 1024 1024\"><path d=\"M826.88 35.84a166.4 166.4 0 1 1-161.984 204.864h-445.44a122.24 122.24 0 0 0-9.6 243.968l9.6 0.384h576a197.76 197.76 0 0 1 11.2 395.328l-11.264 0.32H348.8a166.464 166.464 0 1 1 0-76.8h446.72a120.96 120.96 0 0 0 9.408-241.728l-9.472-0.32h-576a199.04 199.04 0 0 1-11.264-397.632l11.264-0.32h445.44c17.344-73.408 83.328-128 161.984-128z m-640 716.8a89.6 89.6 0 1 0 0 179.2 89.6 89.6 0 0 0 0-179.2z m640-640a89.6 89.6 0 1 0 0 179.2 89.6 89.6 0 0 0 0-179.2z\" ></path></symbol><symbol id=\"icon-sql-transaction\" viewBox=\"0 0 1024 1024\"><path d=\"M405.875 118c89.239 0 173.203 11.837 236.305 32.87 3.28 1.093 6.5 2.21 9.657 3.35l2.357 0.859c26.973 9.933 49.338 21.597 66.225 34.904 23.535 18.547 37.331 41.018 37.331 66.635l-0.004-0.718 0.004 0.188v162.51C878.078 434.278 971 537.171 971 661.765 971 797.204 861.196 907 725.75 907c-38.19 0-75.165-8.762-108.605-25.303C557.57 898.002 483.7 907 405.875 907c-89.239 0-173.203-11.837-236.305-32.87-3.28-1.093-6.5-2.21-9.657-3.35l-2.357-0.859c-26.973-9.933-49.338-21.597-66.225-34.905-23.3-18.36-37.054-40.568-37.331-65.866V256.423c0.07-25.536 13.855-47.94 37.33-66.44 16.888-13.307 39.253-24.971 66.226-34.904l2.357-0.86a414.19 414.19 0 0 1 9.657-3.35C232.672 129.838 316.636 118 405.875 118zM117.999 681.725l0.001 86.657c0 1.057 0.36 2.357 1.167 3.887l0.243 0.443c0.638 1.124 1.508 2.363 2.644 3.712l0.468 0.546c0.563 0.644 1.184 1.31 1.868 2.001l0.6 0.598c0.514 0.502 1.06 1.017 1.639 1.543l0.71 0.637 0.368 0.322 0.759 0.653 0.792 0.664c0.27 0.223 0.545 0.448 0.826 0.675l0.86 0.686c2.993 2.359 6.387 4.709 10.162 7.036l1.272 0.775c0.429 0.258 0.862 0.516 1.3 0.773l1.329 0.771 1.356 0.77 1.383 0.766c1.398 0.766 2.836 1.528 4.315 2.286l1.492 0.757c1.004 0.504 2.025 1.005 3.064 1.505l1.572 0.748c0.529 0.25 1.061 0.498 1.599 0.745l1.624 0.742a246.56 246.56 0 0 0 5.028 2.205l1.727 0.727 0.873 0.362 1.765 0.722 0.892 0.36 1.803 0.715c1.512 0.595 3.05 1.185 4.615 1.77l1.888 0.7 1.913 0.696c0.642 0.231 1.288 0.462 1.937 0.691l1.961 0.686c0.658 0.228 1.32 0.455 1.985 0.681l2.009 0.676C245.908 832.114 323.13 843 405.875 843c50.403 0 98.793-4.035 141.664-11.446l1.061-0.186-0.08-0.083a246.17 246.17 0 0 1-31.783-41.173 245.405 245.405 0 0 1-14.168-26.565 244.405 244.405 0 0 1-11.632-30.817c-27.528 2.435-56.05 3.682-85.062 3.682-89.239 0-173.203-11.837-236.305-32.87l-2.448-0.824a397.1 397.1 0 0 1-13.058-4.69l-2.299-0.882c-12.308-4.765-23.593-9.909-33.766-15.421zM725.75 480.529c-52.166 0-100.693 22.114-134.885 60.176l0.106-0.117c-0.072 0.082-0.145 0.163-0.218 0.243-29.617 33.027-46.253 75.644-46.253 120.934 0 10.419 0.876 20.714 2.604 30.817l-0.015-0.09 0.024 0.136c8.688 50.71 38.729 95.09 81.78 122.357a181.75 181.75 0 0 0 7.597 4.557C663.477 834.845 693.983 843 725.75 843 825.851 843 907 761.857 907 661.765c0-100.092-81.149-181.236-181.25-181.236z m43.196 72.582l0.378 0.36 0.378 0.371 85.3 85.295a32.218 32.218 0 0 1 1.264 1.337l0.348 0.397 0.08 0.093a31.845 31.845 0 0 1 7.585 18.292l0.032 0.469 0.028 0.518 0.02 0.503 0.016 0.721v0.599l-0.013 0.612-0.034 0.831-0.035 0.56-0.015 0.199a31.79 31.79 0 0 1-2.244 9.534 31.779 31.779 0 0 1-5.736 9.217c-0.195 0.22-0.395 0.438-0.598 0.654l-0.341 0.357-0.41 0.414-85.247 85.243c-12.498 12.496-32.759 12.496-45.255-0.002-12.372-12.372-12.495-32.354-0.37-44.877l0.371-0.377 30.668-30.667H619.125c-17.673 0-32-14.326-32-32 0-17.496 14.042-31.712 31.47-31.995l0.53-0.004 135.991-0.001-30.668-30.665c-12.497-12.497-12.498-32.758-0.001-45.255 12.247-12.249 31.954-12.493 44.5-0.733z m-650.948-41.974l0.001 86.551 0.001 0.106c0 1.358 0.594 3.12 1.97 5.253l0.319 0.48 0.345 0.492c0.298 0.416 0.624 0.843 0.98 1.283l0.44 0.534 0.468 0.546c0.322 0.368 0.662 0.743 1.023 1.126l0.556 0.58 0.289 0.295 0.6 0.598c0.514 0.502 1.06 1.017 1.639 1.543l0.71 0.636c0.243 0.214 0.49 0.43 0.743 0.648l0.776 0.659c0.264 0.221 0.534 0.444 0.809 0.67l0.843 0.68 0.434 0.343c2.66 2.097 5.638 4.187 8.918 6.26l1.244 0.777c4.194 2.586 8.858 5.143 13.966 7.652l1.545 0.751 1.572 0.748a240.411 240.411 0 0 0 9.111 4.056l1.74 0.725 0.88 0.362 1.777 0.72 0.898 0.358 1.815 0.713c1.219 0.474 2.454 0.946 3.705 1.414l1.888 0.7 0.954 0.349 1.925 0.693 1.949 0.689 1.973 0.683 1.997 0.679 1.007 0.337c56.1 18.699 133.323 29.586 216.067 29.586 25.497 0 50.549-1.028 74.743-3.032a244.642 244.642 0 0 1-0.118-7.615c0-35.321 7.51-69.501 21.556-100.676-30.875 3.12-63.193 4.735-96.181 4.735-89.239 0-173.203-11.838-236.305-32.87a401.903 401.903 0 0 1-15.506-5.515l-2.299-0.881c-0.762-0.295-1.52-0.592-2.275-0.89l-2.252-0.898c-10.56-4.258-20.327-8.804-29.24-13.633z m575.753-170.588c-14.899 8.072-32.183 15.354-51.571 21.817-63.102 21.032-147.066 32.87-236.305 32.87s-173.203-11.838-236.305-32.87c-19.388-6.463-36.672-13.745-51.57-21.817l-0.001 86.538 0.001 0.119c0 1.358 0.594 3.12 1.97 5.253l0.319 0.48 0.345 0.492 0.371 0.504c0.193 0.256 0.395 0.515 0.609 0.78l0.44 0.533 0.468 0.546 0.497 0.557c0.085 0.094 0.172 0.188 0.26 0.283l0.54 0.575c0.556 0.58 1.156 1.178 1.804 1.792l0.663 0.62c0.113 0.104 0.227 0.21 0.343 0.314l0.71 0.637 0.368 0.323 0.759 0.653 0.392 0.33 0.809 0.67c0.413 0.337 0.838 0.679 1.277 1.024 8.149 6.422 19.265 12.78 32.953 18.78l1.689 0.734c0.85 0.366 1.711 0.73 2.581 1.093l1.753 0.723 0.885 0.36 1.79 0.718a307.437 307.437 0 0 0 8.362 3.177l1.925 0.693 1.949 0.688 1.973 0.684 1.997 0.678 1.007 0.338c56.1 18.699 133.323 29.586 216.067 29.586 51.494 0 101.043-4.199 145.052-12.047l0.004-0.009a247.268 247.268 0 0 1 1.087-1.097l-0.293 0.294a247.187 247.187 0 0 1 18.6-16.92 245.81 245.81 0 0 1 23.027-16.754 244.71 244.71 0 0 1 32.317-17.475 244.1 244.1 0 0 1 66.656-19.02l1.425-0.189zM405.875 182c-82.744 0-159.967 10.887-216.067 29.586l-2.009 0.676c-0.665 0.226-1.327 0.453-1.985 0.68l-1.96 0.687c-0.325 0.114-0.65 0.23-0.972 0.345l-1.925 0.693-1.901 0.698c-1.889 0.7-3.741 1.407-5.556 2.12l-1.803 0.716-0.892 0.36-1.765 0.721c-0.584 0.242-1.164 0.483-1.74 0.726l-1.714 0.73c-1.418 0.609-2.81 1.222-4.174 1.839l-1.624 0.741a205.141 205.141 0 0 0-8.463 4.135l-1.452 0.76c-7.43 3.938-13.774 7.975-18.93 12.038l-0.859 0.686-0.417 0.338-0.809 0.67-0.776 0.659c-0.253 0.217-0.5 0.433-0.743 0.647l-0.71 0.637-0.679 0.626c-0.331 0.31-0.651 0.615-0.96 0.917l-0.6 0.598a40.285 40.285 0 0 0-2.986 3.343l-0.399 0.516c-2.117 2.806-3.005 5.07-3.005 6.73 0 1.66 0.888 3.923 3.005 6.73l0.399 0.515a40.285 40.285 0 0 0 2.986 3.344l0.6 0.597 0.313 0.303 0.647 0.615 0.679 0.625 0.351 0.317 0.727 0.642 0.759 0.653 0.392 0.331 0.809 0.67 0.417 0.338 0.86 0.686c5.155 4.063 11.498 8.1 18.929 12.037l1.452 0.761a210.812 210.812 0 0 0 10.909 5.246l1.663 0.737c0.559 0.245 1.122 0.489 1.689 0.733l1.714 0.73c0.288 0.12 0.577 0.242 0.867 0.362l1.753 0.724 0.885 0.36 1.79 0.718c2.103 0.835 4.257 1.661 6.46 2.478l1.902 0.698 1.925 0.694 1.949 0.688 1.973 0.684 1.997 0.678 1.007 0.337c56.1 18.7 133.323 29.586 216.067 29.586s159.967-10.886 216.067-29.586c0.337-0.112 0.673-0.224 1.007-0.337l1.997-0.678 1.973-0.684 1.95-0.688 1.924-0.694 1.901-0.698a303.164 303.164 0 0 0 6.46-2.478l1.79-0.718 0.886-0.36 1.753-0.724c0.29-0.12 0.579-0.242 0.867-0.363l1.714-0.73c0.567-0.243 1.13-0.487 1.689-0.732l1.663-0.737c3.85-1.723 7.49-3.474 10.91-5.246l1.451-0.76c7.43-3.938 13.774-7.975 18.93-12.038l0.859-0.686 0.417-0.338 0.809-0.67c0.132-0.11 0.263-0.22 0.392-0.33l0.76-0.654 0.726-0.642 0.351-0.317 0.679-0.625 0.647-0.615c0.105-0.101 0.21-0.202 0.312-0.303l0.601-0.597a40.285 40.285 0 0 0 2.986-3.344l0.399-0.516c2.117-2.806 3.005-5.07 3.005-6.73 0-1.66-0.888-3.923-3.005-6.729l-0.399-0.516a40.285 40.285 0 0 0-2.986-3.343l-0.6-0.598a58.596 58.596 0 0 0-0.96-0.917l-0.679-0.626-0.71-0.637c-0.243-0.214-0.49-0.43-0.743-0.647l-0.776-0.66-0.809-0.669a88.944 88.944 0 0 0-0.417-0.338l-0.86-0.686c-5.155-4.063-11.498-8.1-18.929-12.037l-1.452-0.76a205.141 205.141 0 0 0-8.463-4.136l-1.624-0.741a244.534 244.534 0 0 0-4.174-1.84l-1.714-0.729c-0.576-0.243-1.156-0.484-1.74-0.726l-1.765-0.721-0.892-0.36-1.803-0.715a305.328 305.328 0 0 0-5.556-2.121l-1.9-0.698-1.926-0.693c-0.323-0.116-0.647-0.23-0.971-0.345l-1.961-0.686c-0.658-0.228-1.32-0.455-1.985-0.681l-2.009-0.676C565.842 192.886 488.62 182 405.875 182z\" ></path></symbol><symbol id=\"icon-continue\" viewBox=\"0 0 1066 1024\"><path d=\"M533.333333 0c281.6 0 512 230.4 512 512s-230.4 512-512 512c-281.557333 0-512-230.4-512-512s230.4-512 512-512zM368.128 119.210667A431.232 431.232 0 0 0 140.8 346.624a423.808 423.808 0 0 0 0 330.752 431.274667 431.274667 0 0 0 227.413333 227.413333 423.381333 423.381333 0 0 0 330.325334 0 431.146667 431.146667 0 0 0 227.413333-227.413333 423.808 423.808 0 0 0 0-330.752 431.146667 431.146667 0 0 0-227.413333-227.413333 423.338667 423.338667 0 0 0-330.368 0zM582.101333 341.333333l211.413334 192-211.413334 192V341.333333zM362.666667 341.333333l211.413333 192L362.666667 725.333333V341.333333z\" ></path></symbol><symbol id=\"icon-break\" viewBox=\"0 0 1024 1024\"><path d=\"M285.696 53.504a24.6272 24.6272 0 0 1 32.7168 11.9296l416.4608 893.0304a24.6272 24.6272 0 0 1-44.6976 20.8384L273.7664 86.272a24.6272 24.6272 0 0 1 11.9296-32.768z m89.7536 540.6208a20.48 20.48 0 0 1 14.4896 34.9696l-95.8464 95.7952a285.7984 285.7984 0 0 0 259.6864 78.4896l46.336 99.4304a393.728 393.728 0 0 1-103.5776 13.824 393.5232 393.5232 0 0 1-278.784-115.4048l-80.384 80.384A20.48 20.48 0 0 1 102.4 867.2256v-242.3296a30.72 30.72 0 0 1 30.72-30.72h242.3296z m508.7744 0a394.4448 394.4448 0 0 1-151.296 243.6608L686.08 737.28a288.4096 288.4096 0 0 0 88.1664-143.1552h109.9776zM496.5376 128.3072c108.9536 0 207.104 44.032 278.784 115.4048l74.5472-79.0016a20.48 20.48 0 0 1 35.3792 13.6704l4.8128 241.1008a30.72 30.72 0 0 1-30.1056 31.3344h-242.2784a20.48 20.48 0 0 1-14.4896-34.9696l95.7952-95.8464a285.7472 285.7472 0 0 0-245.248-80.9984l-46.848-100.4032a394.3936 394.3936 0 0 1 89.6512-10.24z m-224.768 70.4512l46.4384 99.4816a288.5632 288.5632 0 0 0-99.328 152.576H108.8a394.6496 394.6496 0 0 1 162.9184-252.0576z\" ></path></symbol><symbol id=\"icon-qiehuan\" viewBox=\"0 0 1024 1024\"><path d=\"M132.33 482.42c-16.45-4.65-26.93-21.18-23.7-38.31 14.28-75.9 50.02-145.78 103.36-202.09 73.97-78.08 173.91-122.69 281.43-125.6 107.51-2.9 209.72 36.22 287.81 110.19 46 43.58 80.2 95.7 101.65 154.9 6.29 17.34-2.68 36.5-20.03 42.78-17.35 6.29-36.5-2.68-42.78-20.03-17.87-49.33-46.4-92.78-84.79-129.15-65.12-61.69-150.38-94.32-240.05-91.9-89.68 2.43-173.04 39.63-234.73 104.76-44.49 46.97-74.31 105.23-86.21 168.5-3.41 18.13-20.87 30.06-39 26.65-1.01-0.19-1.99-0.43-2.96-0.7zM408.23 908.31c-61.82-17.48-118.89-49.76-166.85-95.2-46.01-43.59-80.21-95.7-101.65-154.9-6.28-17.35 2.69-36.5 20.03-42.79 17.35-6.27 36.51 2.69 42.79 20.03 17.87 49.32 46.39 92.78 84.79 129.15 65.12 61.7 150.39 94.33 240.05 91.9 89.68-2.43 173.04-39.63 234.73-104.76 44.5-46.97 74.31-105.24 86.21-168.5 3.41-18.13 20.87-30.06 39-26.65 18.07 3.4 30.07 20.87 26.65 39-14.28 75.89-50.02 145.78-103.36 202.09-73.97 78.08-173.91 122.69-281.43 125.6-41.47 1.13-82.15-4-120.96-14.97z\" ></path><path d=\"M842.51 424.91l-0.22-0.06c-17.72-5.14-27.92-23.67-22.78-41.39l28.22-97.31c5.14-17.72 23.56-28.27 41.39-22.78 17.72 5.14 27.92 23.67 22.78 41.39l-28.22 97.31c-5.12 17.64-23.52 27.83-41.17 22.84zM133.87 776.24l-0.22-0.06c-17.72-5.14-27.92-23.67-22.78-41.39l28.22-97.31c5.12-17.64 23.52-27.83 41.17-22.84l0.22 0.06c17.72 5.14 27.92 23.67 22.78 41.39l-28.22 97.31c-5.12 17.64-23.53 27.83-41.17 22.84z\" ></path></symbol><symbol id=\"icon-add\" viewBox=\"0 0 1024 1024\"><path d=\"M853.333333 480H544V170.666667c0-17.066667-14.933333-32-32-32s-32 14.933333-32 32v309.333333H170.666667c-17.066667 0-32 14.933333-32 32s14.933333 32 32 32h309.333333V853.333333c0 17.066667 14.933333 32 32 32s32-14.933333 32-32V544H853.333333c17.066667 0 32-14.933333 32-32s-14.933333-32-32-32z\" ></path></symbol><symbol id=\"icon-export\" viewBox=\"0 0 1024 1024\"><path d=\"M582.4 864H170.666667c-6.4 0-10.666667-4.266667-10.666667-10.666667V170.666667c0-6.4 4.266667-10.666667 10.666667-10.666667h309.333333V320c0 40.533333 34.133333 74.666667 74.666667 74.666667h160v38.4c0 17.066667 14.933333 32 32 32s32-14.933333 32-32V298.666667c0-8.533333-4.266667-17.066667-8.533334-23.466667l-170.666666-170.666667c-6.4-6.4-14.933333-8.533333-23.466667-8.533333H170.666667C130.133333 96 96 130.133333 96 170.666667v682.666666c0 40.533333 34.133333 74.666667 74.666667 74.666667h411.733333c17.066667 0 32-14.933333 32-32s-14.933333-32-32-32z m132.266667-550.4v17.066667H554.666667c-6.4 0-10.666667-4.266667-10.666667-10.666667V160h19.2l151.466667 153.6z\" ></path><path d=\"M866.133333 669.866667l-106.666666-106.666667c-12.8-12.8-32-12.8-44.8 0s-12.8 32 0 44.8l51.2 51.2H512c-17.066667 0-32 14.933333-32 32S494.933333 725.333333 512 725.333333h253.866667l-51.2 51.2c-12.8 12.8-12.8 32 0 44.8 6.4 6.4 14.933333 8.533333 23.466666 8.533334s17.066667-2.133333 23.466667-8.533334l106.666667-106.666666c8.533333-10.666667 8.533333-32-2.133334-44.8z\" ></path></symbol><symbol id=\"icon-file\" viewBox=\"0 0 1024 1024\"><path d=\"M842.666667 285.866667l-187.733334-187.733334c-14.933333-14.933333-32-21.333333-53.333333-21.333333H234.666667C194.133333 74.666667 160 108.8 160 149.333333v725.333334c0 40.533333 34.133333 74.666667 74.666667 74.666666h554.666666c40.533333 0 74.666667-34.133333 74.666667-74.666666V337.066667c0-19.2-8.533333-38.4-21.333333-51.2z m-44.8 44.8c-2.133333 2.133333-4.266667 0-8.533334 0h-170.666666c-6.4 0-10.666667-4.266667-10.666667-10.666667V149.333333c0-2.133333 0-6.4-2.133333-8.533333 0 0 2.133333 0 2.133333 2.133333l189.866667 187.733334z m-8.533334 554.666666H234.666667c-6.4 0-10.666667-4.266667-10.666667-10.666666V149.333333c0-6.4 4.266667-10.666667 10.666667-10.666666h311.466666c-2.133333 4.266667-2.133333 6.4-2.133333 10.666666v170.666667c0 40.533333 34.133333 74.666667 74.666667 74.666667h170.666666c4.266667 0 6.4 0 10.666667-2.133334V874.666667c0 6.4-4.266667 10.666667-10.666667 10.666666z\" ></path><path d=\"M640 693.333333H341.333333c-17.066667 0-32 14.933333-32 32s14.933333 32 32 32h298.666667c17.066667 0 32-14.933333 32-32s-14.933333-32-32-32zM640 522.666667H341.333333c-17.066667 0-32 14.933333-32 32s14.933333 32 32 32h298.666667c17.066667 0 32-14.933333 32-32s-14.933333-32-32-32zM341.333333 416h85.333334c17.066667 0 32-14.933333 32-32s-14.933333-32-32-32h-85.333334c-17.066667 0-32 14.933333-32 32s14.933333 32 32 32z\" ></path></symbol><symbol id=\"icon-import\" viewBox=\"0 0 1024 1024\"><path d=\"M667.733333 864H170.666667c-6.4 0-10.666667-4.266667-10.666667-10.666667V170.666667c0-6.4 4.266667-10.666667 10.666667-10.666667h309.333333V320c0 40.533333 34.133333 74.666667 74.666667 74.666667h160v38.4c0 17.066667 14.933333 32 32 32s32-14.933333 32-32V298.666667c0-8.533333-4.266667-17.066667-8.533334-23.466667l-170.666666-170.666667c-6.4-6.4-14.933333-8.533333-23.466667-8.533333H170.666667C130.133333 96 96 130.133333 96 170.666667v682.666666c0 40.533333 34.133333 74.666667 74.666667 74.666667h497.066666c17.066667 0 32-14.933333 32-32s-14.933333-32-32-32z m46.933334-550.4v17.066667H554.666667c-6.4 0-10.666667-4.266667-10.666667-10.666667V160h19.2l151.466667 153.6z\" ></path><path d=\"M853.333333 597.333333H599.466667l51.2-51.2c12.8-12.8 12.8-32 0-44.8-12.8-12.8-32-12.8-44.8 0l-106.666667 106.666667c-12.8 12.8-12.8 32 0 44.8l106.666667 106.666667c6.4 6.4 14.933333 8.533333 23.466666 8.533333s17.066667-2.133333 23.466667-8.533333c12.8-12.8 12.8-32 0-44.8L599.466667 661.333333H853.333333c17.066667 0 32-14.933333 32-32S870.4 597.333333 853.333333 597.333333z\" ></path></symbol><symbol id=\"icon-zoom\" viewBox=\"0 0 1024 1024\"><path d=\"M455.68 756.48H316.8v-64h138.88A241.92 241.92 0 0 0 697.6 448V312.32h64V448a305.92 305.92 0 0 1-305.92 308.48z\" ></path></symbol><symbol id=\"icon-sql\" viewBox=\"0 0 1024 1024\"><path d=\"M512 426.666667c-239.253333 0-426.666667-84.330667-426.666667-192s187.413333-192 426.666667-192 426.666667 84.330667 426.666667 192S751.253333 426.666667 512 426.666667zM512 85.333333C330.368 85.333333 128 146.666667 128 234.666667s202.368 149.333333 384 149.333333 384-61.333333 384-149.333333S693.632 85.333333 512 85.333333z\" ></path><path d=\"M512 597.333333c-239.253333 0-426.666667-84.330667-426.666667-192l0-170.666667c0-11.797333 9.536-21.333333 21.333333-21.333333s21.333333 9.536 21.333333 21.333333l0 170.666667c0 88 202.368 149.333333 384 149.333333s384-61.333333 384-149.333333l0-170.666667c0-11.797333 9.536-21.333333 21.333333-21.333333s21.333333 9.536 21.333333 21.333333l0 170.666667C938.666667 513.002667 751.253333 597.333333 512 597.333333z\" ></path><path d=\"M512 789.333333c-239.253333 0-426.666667-84.330667-426.666667-192l0-192c0-11.797333 9.536-21.333333 21.333333-21.333333s21.333333 9.536 21.333333 21.333333l0 192c0 88 202.368 149.333333 384 149.333333s384-61.333333 384-149.333333l0-192c0-11.797333 9.536-21.333333 21.333333-21.333333s21.333333 9.536 21.333333 21.333333l0 192C938.666667 705.002667 751.253333 789.333333 512 789.333333z\" ></path><path d=\"M512 981.333333c-239.253333 0-426.666667-84.330667-426.666667-192l0-192c0-11.797333 9.536-21.333333 21.333333-21.333333s21.333333 9.536 21.333333 21.333333l0 192c0 88 202.368 149.333333 384 149.333333s384-61.333333 384-149.333333l0-192c0-11.797333 9.536-21.333333 21.333333-21.333333s21.333333 9.536 21.333333 21.333333l0 192C938.666667 897.002667 751.253333 981.333333 512 981.333333z\" ></path></symbol><symbol id=\"icon-subflow\" viewBox=\"0 0 1024 1024\"><path d=\"M375.467 213.333a85.333 85.333 0 1 1-85.334 85.334 85.333 85.333 0 0 1 85.334-85.334m0-85.333a170.667 170.667 0 1 0 170.666 170.667A170.667 170.667 0 0 0 375.467 128zM631.467 597.333a85.333 85.333 0 1 0 170.666 0 85.333 85.333 0 1 0-170.666 0zM631.467 853.333a85.333 85.333 0 1 0 170.666 0 85.333 85.333 0 1 0-170.666 0z\" ></path><path d=\"M418.133 384H332.8v426.667A85.333 85.333 0 0 0 418.133 896V384z m256 170.667h-256V640h256v-85.333z m0 256h-256V896h256v-85.333z\" ></path></symbol><symbol id=\"icon-start\" viewBox=\"0 0 1024 1024\"><path d=\"M409 379.1c0-36.42 25.12-50.47 56.11-31.38L674 476.42c31 19.08 30.91 50 0 69L465.11 674.15c-31 19.09-56.11 5-56.11-31.38z m0 0\" ></path><path d=\"M512 109.35A401.22 401.22 0 1 1 355.28 141 400.2 400.2 0 0 1 512 109.35m0-43C265.87 66.35 66.35 265.87 66.35 512S265.87 957.65 512 957.65 957.65 758.13 957.65 512 758.13 66.35 512 66.35z\" ></path></symbol><symbol id=\"icon-assign\" viewBox=\"0 0 1024 1024\"><path d=\"M301.44 139.306667h-42.666667a119.466667 119.466667 0 0 0-119.466666 119.466666v170.666667a51.2 51.2 0 0 1-51.2 51.2 34.133333 34.133333 0 1 0 0 68.266667 51.2 51.2 0 0 1 51.2 51.2v170.666666a119.466667 119.466667 0 0 0 119.466666 119.466667h42.666667a34.133333 34.133333 0 1 0 0-68.266667h-42.666667a51.2 51.2 0 0 1-51.2-51.2v-170.666666c0-29.824-10.965333-57.898667-30.421333-79.658667l-5.12-5.674667 5.12-5.674666c19.456-21.76 30.421333-49.834667 30.421333-79.658667v-170.666667a51.2 51.2 0 0 1 51.2-51.2h42.666667a34.133333 34.133333 0 0 0 0-68.266666z m469.333333 0h-42.666666a34.133333 34.133333 0 1 0 0 68.266666h42.666666a51.2 51.2 0 0 1 51.2 51.2v170.666667c0 29.824 10.965333 57.898667 30.421334 79.658667l5.12 5.674666-5.12 5.674667a118.954667 118.954667 0 0 0-30.421334 79.658667v170.666666a51.2 51.2 0 0 1-51.2 51.2h-42.666666a34.133333 34.133333 0 1 0 0 68.266667h42.666666a119.466667 119.466667 0 0 0 119.466667-119.466667v-170.666666a51.2 51.2 0 0 1 51.2-51.2 34.133333 34.133333 0 1 0 0-68.266667 51.2 51.2 0 0 1-51.2-51.2v-170.666667a119.466667 119.466667 0 0 0-119.466667-119.466666zM674.133333 605.866667H349.866667v68.266666h324.266666v-68.266666z m0-213.333334H349.866667v68.266667h324.266666V392.533333z\" ></path></symbol><symbol id=\"icon-loop\" viewBox=\"0 0 1024 1024\"><path d=\"M867.340007 319.228555c-51.538817-51.534723-120.027677-79.890538-192.814423-79.890538H388.423497v-54.715159c0-17.449417-11.967566-23.99653-26.734898-14.519692l-131.680065 85.000929c-14.705933 9.533121-14.583137 24.802896 0.314155 34.022885l131.114177 81.201393c14.772448 9.225105 26.986631 2.430352 26.986631-15.018041v-54.524825H674.588005c116.408243 0 211.132628 94.785783 211.132628 211.133652 0 19.317974-2.552126 38.388309-7.66354 56.705489-4.550643 16.389272 5.048993 33.282011 21.438265 37.766139 2.743484 0.874927 5.481851 1.245364 8.225335 1.245364 13.459546 0 25.802666-8.971325 29.601179-22.493294 6.541997-23.743774 9.784854-48.363498 9.784854-73.163323 0-72.7847-28.355815-141.335982-79.766719-192.750979zM816.547181 734.829018l-131.052778-81.202417c-14.896268-9.218966-27.110451-2.490727-27.110451 15.020089v54.40612H349.535815c-116.41029 0-211.133651-94.723362-211.133652-211.132628 0-40.756239 11.653411-80.32749 33.653471-114.417913 9.224082-14.273075 5.106298-33.339316-9.100262-42.562374-14.273075-9.16166-33.339316-5.048993-42.500976 9.156544-28.478612 44.060495-43.561122 95.223758-43.561122 147.884118 0 72.849168 28.355815 141.27663 79.828117 192.748932 51.477418 51.538817 119.965256 79.893608 192.814424 79.893609h308.910558v54.716182c0 17.509792 12.028964 24.051789 26.734898 14.519692l131.680065-85.063351c14.705933-9.475815 14.583137-24.742521-0.314155-33.966603z\" ></path></symbol><symbol id=\"icon-script\" viewBox=\"0 0 1024 1024\"><path d=\"M263.616 870.016l440.256-751.872 61.376 35.904-440.256 751.808-61.376-35.84zM78.016 509.504l192.768-190.592-4.864-8.512-32.256-55.04-205.76 203.648a72.32 72.32 0 0 0-0.768 101.76l205.76 207.872 37.504-64.192-192.384-194.944zM996.032 459.008l-205.76-203.648-32.256 55.04-4.928 8.576 192.832 190.592-192.448 194.944 37.44 64.192 205.824-207.872a72.384 72.384 0 0 0-0.704-101.824z\" ></path></symbol><symbol id=\"icon-case\" viewBox=\"0 0 1024 1024\"><path d=\"M760.32 640c-50.688 0-96.256 20.992-129.536 54.272L424.96 600.064c8.192-20.48 12.288-43.008 12.288-66.048 0-26.112-5.632-50.688-15.36-73.216l214.528-119.808c32.256 30.72 76.288 49.152 123.904 49.152 99.84 0 181.248-81.408 181.248-181.248S860.16 27.648 760.32 27.648s-181.248 81.408-181.248 181.248c0 26.112 5.632 50.688 15.36 73.216L379.904 401.92c-32.256-30.72-76.288-49.152-123.904-49.152-99.84 0-181.248 81.408-181.248 181.248s81.408 181.248 181.248 181.248c50.688 0 96.256-20.992 129.536-54.272l205.824 93.696c-8.192 20.48-12.288 43.008-12.288 66.048 0 99.84 81.408 181.248 181.248 181.248s181.248-81.408 181.248-181.248S860.16 640 760.32 640z m0-540.672c60.416 0 109.568 49.152 109.568 109.568 0 60.416-49.152 109.568-109.568 109.568-60.416 0-109.568-49.152-109.568-109.568-0.512-60.416 49.152-109.568 109.568-109.568zM256 643.584c-60.416 0-109.568-49.152-109.568-109.568 0-60.416 49.152-109.568 109.568-109.568 60.416 0 109.568 49.152 109.568 109.568 0 60.416-49.152 109.568-109.568 109.568z m504.32 287.232c-60.416 0-109.568-49.152-109.568-109.568 0-60.416 49.152-109.568 109.568-109.568 60.416 0 109.568 49.152 109.568 109.568 0 60.416-49.152 109.568-109.568 109.568z m0 0\" ></path></symbol><symbol id=\"icon-variable\" viewBox=\"0 0 1024 1024\"><path d=\"M291.6864 865.7408v-57.6h-42.5984c-13.9776-0.6656-23.8592-8.6016-29.7984-23.9104a128 128 0 0 1-8.6016-48.64v-111.7184a143.5136 143.5136 0 0 0-8.0896-51.6608 99.3792 99.3792 0 0 0-19.968-34.048 79.0016 79.0016 0 0 0-21.8112-20.0704 72.3456 72.3456 0 0 0-18.3808-7.2704v-1.6896c10.0352-2.304 23.3984-12.1344 40.1408-29.44 8.192-8.8064 14.9504-20.1728 19.968-34.1504 5.4784-12.8 8.0896-28.7744 8.0896-48.128v-112.64c0-19.3024 2.8672-36.1984 8.6528-50.688 5.9392-13.9264 15.872-21.1456 29.7984-21.76h42.5984V154.7264h-74.24c-23.2448 0-43.008 8.3968-59.1872 25.1904-16.9984 17.0496-25.9072 40.96-26.4704 71.68v124.928c0 28.416-5.5296 52.8384-16.5888 73.2672a53.76 53.76 0 0 1-20.8384 22.6304c-8.96 6.144-19.5584 9.216-30.3616 8.96v57.6c22.784 0.6144 39.7824 11.1104 51.2 31.488 11.0592 19.6608 16.64 44.6976 16.64 75.1104v123.2384c0.6144 30.1056 9.3696 53.5552 26.4192 70.4 16.2304 16.9472 35.8912 25.8048 59.2896 26.4192h74.24l-0.1024 0.1024z m219.8528-236.6976l94.72 147.5072h106.1888l-151.04-225.9456 144.9984-216.6784h-106.5984L511.5392 477.184 423.7312 333.9264H317.1328l144.9472 216.6784-151.296 225.8944h106.496l94.2592-147.4048z m355.9936 210.176c15.5648-16.8448 23.6544-40.192 24.32-70.4v-124.928c0-29.9008 5.9904-54.5792 18.2272-74.24 11.7248-19.9168 28.3648-30.0544 49.92-30.72V481.3312c-21.5552-1.6384-38.1952-12.3904-49.92-32.3584-12.1344-19.8656-18.2784-44.6464-18.2784-74.1888V251.648c-0.6144-30.72-8.704-54.5792-24.32-71.68a82.6368 82.6368 0 0 0-61.44-25.1392h-74.24v57.6h42.752c14.1824 0.5632 24.1664 7.7824 29.7984 21.76 5.9904 14.4384 8.96 31.3344 8.96 50.7392v111.6672c0 19.9168 3.2256 36.8128 9.4208 50.7392 5.4272 13.9776 12.0832 25.2928 20.0192 34.1504 8.192 8.8064 15.7184 15.1552 22.5792 19.2 7.168 3.9424 12.3392 6.8096 15.8208 8.4992v1.7408c-8.4992 1.3824-21.2992 10.752-38.4 28.16-8.704 10.0352-15.4624 21.5552-20.0192 34.048a121.344 121.344 0 0 0-9.3696 49.92v112.64c0 18.432-2.9696 34.6112-8.96 48.5376-5.7344 15.36-15.616 23.296-29.9008 23.9104h-42.5984v57.6h74.24a85.4016 85.4016 0 0 0 61.3888-26.5216z\" ></path></symbol></svg>',(l=>{var a=(c=(c=document.getElementsByTagName(\"script\"))[c.length-1]).getAttribute(\"data-injectcss\"),c=c.getAttribute(\"data-disable-injectsvg\");if(!c){var h,o,t,i,z,m=function(a,c){c.parentNode.insertBefore(a,c)};if(a&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write(\"<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>\")}catch(a){console&&console.log(a)}}h=function(){var a,c=document.createElement(\"div\");c.innerHTML=l._iconfont_svg_string_5021436,(c=c.getElementsByTagName(\"svg\")[0])&&(c.setAttribute(\"aria-hidden\",\"true\"),c.style.position=\"absolute\",c.style.width=0,c.style.height=0,c.style.overflow=\"hidden\",c=c,(a=document.body).firstChild?m(c,a.firstChild):a.appendChild(c))},document.addEventListener?~[\"complete\",\"loaded\",\"interactive\"].indexOf(document.readyState)?setTimeout(h,0):(o=function(){document.removeEventListener(\"DOMContentLoaded\",o,!1),h()},document.addEventListener(\"DOMContentLoaded\",o,!1)):document.attachEvent&&(t=h,i=l.document,z=!1,s(),i.onreadystatechange=function(){\"complete\"==i.readyState&&(i.onreadystatechange=null,v())})}function v(){z||(z=!0,t())}function s(){try{i.documentElement.doScroll(\"left\")}catch(a){return void setTimeout(s,50)}v()}})(window);","import { createFromIconfontCN } from '@ant-design/icons'\nimport '../../assets/iconfont.js'\n\nconst IconFont = createFromIconfontCN({})\n\nexport default IconFont\n","import { StarFilled, StarOutlined } from '@ant-design/icons'\nimport { useTranslation } from '@zero-library/common'\nimport { Button } from 'antd'\nimport { CustomButtonProps } from 'packages/chat-copilot/src/types'\nimport { useMemo } from 'react'\nimport { useSnapshot } from 'valtio'\nimport { NS_CHAT_COPILOT } from '../../../i18n'\nimport { useChatStore } from '../../../stores/Context'\n\nexport default ({ icon, disabled, ...rest }: CustomButtonProps) => {\n const chatStore = useChatStore()\n const conversationsState = useSnapshot(chatStore.conversations)\n const conversationState = useSnapshot(chatStore.conversation)\n const { t } = useTranslation(NS_CHAT_COPILOT)\n const activeMessages = conversationState.messages[conversationState.active.id]?.message\n\n const activeConversation = useMemo(() => {\n return conversationsState.list.items.find((item) => item.id === conversationState.active.id)\n }, [conversationsState.list.items, conversationState.active.id])\n\n const isFavorite = activeConversation?.isFavorite\n\n const handleToggleFavorite = () => {\n if (!conversationState.active.id) return\n chatStore.collectConversation(conversationState.active.id, !isFavorite)\n }\n\n return (\n <Button\n title={isFavorite ? t('unfavorite') : t('favorite')}\n type=\"text\"\n size=\"large\"\n disabled={disabled || !conversationState.active.id || !activeMessages?.length}\n icon={icon?.() || (isFavorite ? <StarFilled className=\"primary-text\" /> : <StarOutlined />)}\n onClick={handleToggleFavorite}\n {...rest}\n />\n )\n}\n","import { ShareAltOutlined } from '@ant-design/icons'\nimport { copyText, useTranslation } from '@zero-library/common'\nimport { Button } from 'antd'\nimport { CustomButtonProps } from 'packages/chat-copilot/src/types'\nimport { useSnapshot } from 'valtio'\nimport { NS_CHAT_COPILOT } from '../../../i18n'\nimport { useChatStore } from '../../../stores/Context'\n\nexport default ({ icon, disabled, ...rest }: CustomButtonProps) => {\n const chatStore = useChatStore()\n const conversationState = useSnapshot(chatStore.conversation)\n const configState = useSnapshot(chatStore.config)\n const { t } = useTranslation(NS_CHAT_COPILOT)\n const activeMessages = conversationState.messages[conversationState.active.id]?.message\n\n const handleShareConversation = async () => {\n const { data } = await configState.services.request.shareConversation(conversationState.active.id)\n if (data) {\n copyText(data.url, t('linkCopied'))\n }\n }\n\n return (\n <Button\n title={t('share')}\n type=\"text\"\n size=\"large\"\n disabled={disabled || !conversationState.active.id || !activeMessages?.length}\n icon={icon?.() || <ShareAltOutlined />}\n {...rest}\n onClick={handleShareConversation}\n />\n )\n}\n","import { PlusOutlined } from '@ant-design/icons'\nimport { useTranslation } from '@zero-library/common'\nimport { Button } from 'antd'\nimport { NS_CHAT_COPILOT } from '../../../i18n'\nimport { useChatStore } from '../../../stores/Context'\nimport { CustomButtonProps } from '../../../types'\n\nexport default ({ icon, ...rest }: CustomButtonProps) => {\n const chatStore = useChatStore()\n const { t } = useTranslation(NS_CHAT_COPILOT)\n\n return (\n <Button\n title={t('create')}\n size=\"large\"\n type=\"text\"\n icon={icon?.() || <PlusOutlined />}\n onClick={() => chatStore.createConversation()}\n {...rest}\n />\n )\n}\n",".chatHeader {\n padding: 8px 16px;\n border-bottom: 1px solid #eee;\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n.chatHeader .chatHeaderContent {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.chatHeader .chatHeaderContent .chatTitle {\n font-size: 16px;\n font-weight: bold;\n}\n.chatHeader .chatHeaderContent .defaultLogo {\n font-size: 22px;\n}\n.chatHeader .chatHeaderBtnGroup {\n display: flex;\n gap: 8px;\n}\n.conversationListPanel {\n width: 300px;\n max-width: 100%;\n border-right: 1px dashed #eee;\n}\n.conversationListPanel .defaultLogo {\n font-size: 48px;\n}\n.conversationListPanel .conversationAvatar {\n font-size: 38px;\n}\n.conversationListPanel .createConversationButton {\n height: 38px;\n background-color: var(--ant-color-primary-bg);\n border-radius: var(--ant-border-radius-lg);\n color: var(--ant-color-primary);\n font-weight: bold;\n}\n.conversations {\n padding: 0;\n height: 100%;\n overflow: auto;\n}\n.conversations :global .ant-conversations-group-title {\n padding-left: 16px;\n}\n.conversations :global .ant-conversations-group-title .ant-typography {\n color: #878aab;\n}\n.conversations :global .ant-conversations-list .ant-conversations-item {\n padding-left: 16px;\n touch-action: manipulation !important;\n}\n.conversations :global .ant-conversations-list .ant-conversations-item .ant-conversations-label {\n color: rgba(0, 0, 0, 0.88);\n}\n.conversations :global .ant-conversations-list .ant-conversations-item.ant-conversations-item-active .ant-conversations-label {\n color: var(--ant-color-primary);\n}\n.conversationEmpty {\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.chatWelcomeWrap {\n height: 100%;\n max-width: 1000px;\n min-width: 320px;\n width: calc(100% - 24px);\n margin: 0 auto;\n}\n.chatWelcomeWrap :global .ant-prompts .ant-prompts-list {\n overflow: auto;\n}\n.chatWelcomeWrap .chatWelcome .defaultLogo {\n font-size: 48px;\n}\n.chatWelcomeWrap .chatWelcome :global .ant-welcome-icon > img {\n border-radius: 10px;\n max-width: initial;\n}\n.promptItem {\n width: 100%;\n max-width: 100%;\n}\n.promptItem :global .ant-prompts-item {\n max-width: 100%;\n white-space: normal;\n height: auto;\n}\n.bubbleList {\n width: 100%;\n}\n.bubbleList:global.ant-bubble-list {\n width: 100%;\n}\n.bubbleList:global.ant-bubble-list .ant-bubble-list-scroll-box .ant-bubble-list-scroll-content {\n max-width: 1000px;\n min-width: 320px;\n width: calc(100% - 12px);\n margin: 0 auto;\n padding-right: 0;\n padding-left: 10px;\n}\n.bubbleList:global.ant-bubble-list .ant-bubble-list-scroll-box .ant-bubble-list-scroll-content > .ant-bubble > .ant-bubble-body {\n width: 100%;\n}\n.bubbleList:global.ant-bubble-list .ant-bubble {\n padding-top: 8px;\n padding-bottom: 0;\n}\n.bubbleList:global.ant-bubble-list .ant-bubble:hover .message-actions {\n opacity: 1;\n pointer-events: auto;\n}\n.bubbleList:global.ant-bubble-list .ant-bubble.ant-bubble-start {\n padding-inline-end: 0% !important;\n}\n.bubbleList:global.ant-bubble-list .ant-bubble.ant-bubble-start .ant-bubble-body {\n width: 100%;\n}\n.bubbleList:global.ant-bubble-list .ant-bubble.ant-bubble-start .ant-bubble-content {\n background-color: transparent;\n padding: 0;\n padding-bottom: 0;\n min-height: 0;\n}\n.bubbleList:global.ant-bubble-list .ant-bubble.ant-bubble-end .ant-bubble-content {\n background-color: var(--ant-color-primary-bg, #e6f4ff);\n}\n.bubbleList:global.ant-bubble-list .ant-bubble.ant-bubble-end .ant-bubble-content-borderless {\n background-color: transparent;\n}\n.bubbleList:global.ant-bubble-list .ant-bubble.ant-bubble-end .ant-bubble-content-borderless .ant-file-card-list-content {\n padding: 0;\n}\n.messageActions {\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.2s ease;\n}\n.userInputCollapse {\n width: calc(100% - 24px);\n max-width: 1000px;\n min-width: 320px;\n margin: 0 auto;\n}\n.logoArea {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n margin-top: 5rem;\n flex-direction: column;\n}\n.logoArea .logoContainer {\n position: relative;\n margin-bottom: 2rem;\n cursor: pointer;\n}\n.logoArea .logoContainer .staticHalo {\n position: absolute;\n inset: 0;\n background-color: var(--ant-color-primary);\n filter: blur(24px);\n opacity: 0.2;\n transition: opacity 700ms;\n border-radius: 9999px;\n}\n.logoArea .logoContainer .logoHoverWrapper {\n position: relative;\n z-index: 10;\n padding: 0.5rem;\n transition: all 500ms ease-out;\n transform: scale(1) translateY(0);\n}\n.logoArea .logoContainer .logoHoverWrapper .logoImage {\n font-size: 80px;\n filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.1));\n transition: all 500ms;\n}\n.logoArea .logoContainer:hover .staticHalo {\n opacity: 0.5;\n}\n.logoArea .logoContainer:hover .logoHoverWrapper {\n transform: scale(1.1) translateY(-0.5rem);\n}\n.logoArea .logoContainer:hover .logoImage {\n filter: drop-shadow(0 10px 20px rgba(18, 124, 183, 0.4));\n}\n.logoArea .greetingTitle {\n margin-bottom: 0.75rem;\n font-size: 2.25rem;\n line-height: 2.5rem;\n font-weight: 700;\n letter-spacing: -0.025em;\n color: #1e293b;\n}\n@media (width >= 768px) {\n .logoArea .greetingTitle {\n font-size: 3rem;\n line-height: 1;\n }\n}\n.logoArea .greetingTitle .gradientText {\n color: transparent;\n background-clip: text;\n background-image: linear-gradient(to right, var(--ant-color-primary), #3b82f6);\n}\n.logoArea .greetingSubtitle {\n font-size: 1.125rem;\n line-height: 1.75rem;\n font-weight: 500;\n color: #64748b;\n}\n@media (width >= 768px) {\n .logoArea .greetingSubtitle {\n font-size: 1.25rem;\n line-height: 1.75rem;\n }\n}\n.senderReferenceHeaderTitle:global > .ant-sender-header-title {\n overflow: hidden;\n}\n.senderReferenceHeaderContent {\n padding: 0 !important;\n}\n/* 会话列表项:标题 + 运行/未读状态点 */\n.conversationLabel {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n min-width: 0;\n}\n.conversationLabel .conversationLabelTitle {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.conversationLabel .conversationStatusDot {\n flex-shrink: 0;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n}\n.conversationLabel .conversationStatusRunning {\n background: var(--ant-color-primary, #1677ff);\n animation: conversation-dot-pulse 1s ease-in-out infinite;\n}\n.conversationLabel .conversationStatusUnread {\n background: var(--ant-color-success, #52c41a);\n}\n@keyframes conversation-dot-pulse {\n 0%,\n 100% {\n opacity: 0.3;\n }\n 50% {\n opacity: 1;\n }\n}\n","import { DeleteOutlined, RedoOutlined, StarFilled, StarOutlined } from '@ant-design/icons'\nimport { Conversations, ConversationsProps } from '@ant-design/x-v2'\nimport type { ItemType } from '@ant-design/x-v2/es/conversations/interface'\nimport { useTranslation } from '@zero-library/common'\nimport { Button, Empty, Popconfirm, Spin, Tabs } from 'antd'\nimport console from 'console'\nimport { useMemo, useState } from 'react'\nimport InfiniteScroll from 'react-infinite-scroll-component'\nimport { useSnapshot } from 'valtio'\nimport { NS_CHAT_COPILOT } from '../../i18n/constants'\nimport { useChatStore } from '../../stores/Context'\nimport styles from './styles.module.less'\n\ninterface ConversationTabPaneProps {\n items: ItemType[]\n activeKey?: string\n emptyDescription: string\n scrollableTarget: string\n menu: ConversationsProps['menu']\n onActiveChange: (id: string) => Promise<void> | void\n}\n\nconst ConversationTabPane = ({ items, activeKey, emptyDescription, scrollableTarget, menu, onActiveChange }: ConversationTabPaneProps) => {\n return (\n <div className=\"height-full\">\n {items.length ? (\n <div className=\"height-full scroll-fade-in\" id={scrollableTarget}>\n <InfiniteScroll\n dataLength={items.length}\n hasMore={false}\n next={() => {\n console.log('next')\n }}\n loader={\n <div className=\"text-center\">\n <Spin indicator={<RedoOutlined spin />} size=\"small\" />\n </div>\n }\n style={{ overflow: 'hidden', padding: '0 10px' }}\n scrollableTarget={scrollableTarget}\n >\n <Conversations\n className={styles.conversations}\n items={items}\n activeKey={activeKey}\n onActiveChange={async (id) => onActiveChange(id as string)}\n groupable\n menu={menu}\n />\n </InfiniteScroll>\n </div>\n ) : (\n <div className={styles.conversationEmpty}>\n <Empty description={emptyDescription} image={Empty.PRESENTED_IMAGE_SIMPLE} />\n </div>\n )}\n </div>\n )\n}\n\n/** 为会话项标题附加运行/未读状态点 */\nfunction withStatusDot(item: any, running: Record<string, boolean>, unread: Record<string, boolean>, activeId: string): any {\n const convId = item.key as string\n const isActive = convId === activeId\n // 运行中:当前对话也显示(闪烁);未读:仅非当前对话的\"已结束未查看\"\n const isRunning = !!running[convId]\n const isUnread = !isActive && !!unread[convId]\n if (!isRunning && !isUnread) return item\n return {\n ...item,\n label: (\n <span className={styles.conversationLabel}>\n <span className={styles.conversationLabelTitle}>{String(item.label)}</span>\n <span className={`${styles.conversationStatusDot} ${isRunning ? styles.conversationStatusRunning : styles.conversationStatusUnread}`} />\n </span>\n )\n }\n}\n\n/** 运行中的会话置顶(不修改原数组) */\nfunction sortRunningFirst(arr: any[], running: Record<string, boolean>): any[] {\n return [...arr].sort((a: any, b: any) => {\n const ar = !!running[a.key]\n const br = !!running[b.key]\n if (ar === br) return 0\n return ar ? -1 : 1\n })\n}\n\ninterface ConversationListProps {\n onClose?: () => void\n}\n\nexport default ({ onClose }: ConversationListProps) => {\n const chatStore = useChatStore()\n const conversationsState = useSnapshot(chatStore.conversations)\n const conversationState = useSnapshot(chatStore.conversation)\n const favoriteState = useSnapshot(chatStore.favorite)\n const [activeTabKey, setActiveTabKey] = useState('history')\n const { t } = useTranslation(NS_CHAT_COPILOT)\n\n const conversationList = useMemo<ItemType[]>(() => {\n return sortRunningFirst(\n conversationsState.list.items\n .filter((item) => item.label)\n .map((item) => withStatusDot(item, conversationState.running, conversationState.unread, conversationState.active.id)),\n conversationState.running\n ) as ItemType[]\n }, [conversationsState.list.items, conversationState.running, conversationState.unread, conversationState.active.id])\n\n const favoriteConversationList = useMemo<ItemType[]>(() => {\n return sortRunningFirst(\n favoriteState.list.items\n .filter((item) => item.label)\n .map((item) => withStatusDot(item, conversationState.running, conversationState.unread, conversationState.active.id)),\n conversationState.running\n ) as ItemType[]\n }, [favoriteState.list.items, conversationState.running, conversationState.unread, conversationState.active.id])\n\n const historyMenuConfig: ConversationsProps['menu'] = (conversation) => ({\n items: [\n {\n label: `${conversation.isFavorite ? t('unfavorite') : t('favorite')}`,\n key: 'collect',\n icon: conversation?.isFavorite ? <StarFilled className=\"primary-text\" /> : <StarOutlined />\n },\n {\n label: t('delete'),\n key: 'deleteChat',\n icon: <DeleteOutlined />,\n danger: true\n }\n ],\n onClick: (itemInfo) => {\n itemInfo.domEvent.stopPropagation()\n if (itemInfo.key === 'deleteChat') {\n chatStore.delConversation(conversation.key)\n onClose?.()\n } else if (itemInfo.key === 'collect') {\n chatStore.collectConversation(conversation.id, !conversation.isFavorite)\n }\n }\n })\n\n const favoriteMenuConfig: ConversationsProps['menu'] = (conversation) => ({\n trigger: (\n <Popconfirm\n title={t('tipTitle')}\n okText={t('confirm')}\n cancelText={t('cancel')}\n description={t('confirmUnfavorite')}\n onConfirm={(e) => {\n e.stopPropagation()\n chatStore.collectConversation(conversation.id, false)\n }}\n onCancel={(e) => e.stopPropagation()}\n >\n <Button\n icon={<StarFilled className=\"primary-text\" />}\n title={t('unfavoriteTitle')}\n type=\"text\"\n onClick={(e) => {\n e.stopPropagation()\n }}\n />\n </Popconfirm>\n ),\n items: []\n })\n\n const handleConversationChange = async (id: string) => {\n await chatStore.switchConversation(id)\n onClose?.()\n }\n\n return (\n <Tabs\n activeKey={activeTabKey}\n centered\n className=\"full-tabs\"\n onChange={setActiveTabKey}\n items={[\n {\n key: 'history',\n label: t('historyTab'),\n children: (\n <ConversationTabPane\n items={conversationList}\n activeKey={conversationState.active.id}\n emptyDescription={t('historyEmpty')}\n scrollableTarget=\"historyConversationScrollableDiv\"\n menu={historyMenuConfig}\n onActiveChange={handleConversationChange}\n />\n )\n },\n {\n key: 'favorite',\n label: t('favoritesTab'),\n children: (\n <ConversationTabPane\n items={favoriteConversationList}\n activeKey={conversationState.active.id}\n emptyDescription={t('favoritesEmpty')}\n scrollableTarget=\"favoriteConversationScrollableDiv\"\n menu={favoriteMenuConfig}\n onActiveChange={handleConversationChange}\n />\n )\n }\n ]}\n />\n )\n}\n",".popover {\n height: 500px;\n max-height: 500px;\n width: 300px;\n display: flex;\n flex-direction: column;\n padding: 0 0 16px 0 !important;\n overflow: hidden;\n}\n.popover :global .ant-popover-content {\n height: 100%;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n.popover :global .ant-popover-inner {\n height: 100%;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n.popover :global .ant-popover-inner-content {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n.resourceBtn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 4px 8px;\n font-size: 13px;\n font-weight: 500;\n color: #475569;\n background-color: #f1f5f9;\n border: 1px solid #e2e8f0;\n border-radius: 12px;\n transition: all 0.3s;\n cursor: pointer;\n}\n.resourceBtn .divider {\n margin: 0;\n background-color: #eee;\n height: 10px;\n transform: translateY(1px);\n}\n.resourceBtn .count {\n font-size: 10px;\n font-weight: 500;\n background-color: var(--ant-color-primary);\n /* text-teal-500 */\n width: 14px;\n height: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n color: #fff;\n}\n.resourceBtnActive {\n background-color: var(--ant-color-primary);\n color: #fff;\n}\n.customModal :global .ant-modal-close:focus,\n.customModal :global .ant-modal-close:focus-visible {\n outline: none !important;\n box-shadow: none !important;\n}\n.customModal :global(.ant-modal-container) {\n padding: 0 !important;\n}\n.customModal :global(.ant-modal-body) {\n padding: 0 !important;\n height: 75vh;\n border-radius: 20px;\n min-height: 600px;\n overflow: hidden;\n}\n.customModal :global(.ant-modal-footer) {\n margin-top: 0 !important;\n}\n.layout {\n height: 100%;\n width: 100%;\n background: #f5f5f5;\n display: flex;\n}\n.layout .sider {\n background-color: #fff !important;\n border-right: 1px solid #f0f0f0;\n height: 100%;\n}\n.layout .sider :global .ant-layout-sider-children {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n.layout .sider .categoryName {\n margin-left: 8px;\n font-size: 14px;\n color: #333;\n}\n.layout .sider .siderContent {\n flex: 1;\n overflow-y: auto;\n padding: 0 12px;\n}\n.layout .sider .siderContent .categoryItem {\n align-items: center;\n padding: 8px 12px;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n}\n.layout .sider .siderContent .categoryItem:hover {\n background-color: #f5f5f5;\n}\n.layout .sider .siderContent .categoryActive {\n background-color: #e6f4ff;\n}\n.layout .sider .siderContent .categoryActive:hover {\n background-color: #e6f4ff;\n}\n.layout .sider .siderContent .categoryActive .categoryName {\n color: #1677ff;\n font-weight: 500;\n}\n.layout .sider .siderContent .roundCheckbox :global .ant-checkbox-inner {\n border-radius: 50%;\n}\n.content {\n display: flex;\n flex-direction: column;\n background-color: #fff;\n height: 100%;\n padding: 20px;\n padding-top: 0;\n gap: 16px;\n}\n.content .searchInput {\n width: 300px;\n}\n.content .selectedCount {\n font-size: 12px;\n}\n.content .tagsArea {\n width: 100%;\n max-height: 60px;\n overflow: hidden;\n display: flex;\n}\n.content .tagsArea .tagContainer {\n width: calc(100% - 40px);\n}\n.content .tagsArea .tagContainer .tag {\n font-size: 13px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n margin: 0;\n}\n.content .tagsArea .expandBtnWrapper {\n display: flex;\n align-items: flex-end;\n padding-bottom: 8px;\n}\n.content .tagsArea .expandBtn {\n background-color: #f5f5f5;\n font-size: 13px;\n border: none;\n}\n.content .tagsArea .expandBtn:hover {\n border: none !important;\n background-color: #f5f5f5 !important;\n}\n.content .tagsExpanded {\n max-height: none;\n overflow: visible;\n}\n.content .listArea {\n flex: 1;\n overflow-y: auto;\n background-color: #fafafa;\n border-radius: 12px;\n padding: 16px;\n}\n.content .listArea .listInner {\n padding-bottom: 16px;\n}\n.content .listArea .listItem {\n width: 100%;\n background-color: #fff;\n border-radius: 8px;\n padding: 10px;\n display: flex;\n cursor: pointer;\n transition: all 0.2s;\n position: relative;\n}\n.content .listArea .listItem:hover {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);\n background-color: #e6f4ff;\n}\n.content .listArea .listItemSelected {\n background-color: #eee;\n}\n.content .listArea .itemIconWrapper {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n background-color: #e6f4ff;\n color: #1677ff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 20px;\n margin-right: 12px;\n flex-shrink: 0;\n}\n.content .listArea .itemInfo {\n flex: 1;\n min-width: 0;\n gap: 2px;\n}\n.content .listArea .itemInfo .itemDesc {\n font-size: 12px;\n color: #999;\n}\n.footer {\n border-top: 1px solid #f0f0f0;\n padding: 10px 20px;\n justify-content: flex-end;\n align-items: center;\n display: flex;\n}\n.titleContainer {\n display: flex;\n padding: 16px 32px 0 20px;\n border-bottom: 1px solid #f0f0f0;\n align-items: center;\n}\n.favoriteCard {\n border-radius: 10px;\n padding: 8px 10px 8px 16px;\n transition: all 0.2s;\n cursor: pointer;\n}\n.favoriteCard.favoriteCardActive {\n background: #f2f2f2;\n}\n.favoriteCard.favoriteCardActive .favoriteCardTitle {\n color: var(--ant-color-primary);\n}\n.favoriteCard:hover {\n background: #f2f2f2;\n}\n.favoriteCard:hover .favoriteCardActions {\n opacity: 1;\n}\n.favoriteCard .favoriteCardActions {\n opacity: 0;\n transition: all 0.2s;\n}\n.favoriteCard .favoriteCardDate {\n font-size: 12px;\n color: #999;\n margin-top: 4px;\n}\n","import { CommentOutlined } from '@ant-design/icons'\nimport { useTranslation } from '@zero-library/common'\nimport { Button, Popover } from 'antd'\nimport { useState } from 'react'\nimport { useSnapshot } from 'valtio'\nimport { NS_CHAT_COPILOT } from '../../../i18n'\nimport { useChatStore } from '../../../stores/Context'\nimport { CustomButtonProps } from '../../../types'\nimport ConversationList from '../ConversationList'\nimport styles from './style.module.less'\n\nexport default ({ icon, ...rest }: CustomButtonProps) => {\n const chatStore = useChatStore()\n const agentState = useSnapshot(chatStore.agent)\n const { t } = useTranslation(NS_CHAT_COPILOT)\n const [open, setOpen] = useState(false)\n\n const handleOpenChange = (open: boolean) => {\n setOpen(open)\n if (open && agentState.agentInfo.id) {\n chatStore.getConversations(agentState.agentInfo.id)\n chatStore.getConversationFavorite()\n }\n }\n\n return (\n <Popover\n open={open}\n getPopupContainer={(e) => e}\n onOpenChange={handleOpenChange}\n placement=\"bottom\"\n classNames={{ container: styles.popover }}\n content={<ConversationList onClose={() => setOpen(false)} />}\n trigger={['click']}\n >\n <Button title={t('history')} size=\"large\" type=\"text\" icon={icon?.() || <CommentOutlined />} {...rest} />\n </Popover>\n )\n}\n","import { CloseOutlined } from '@ant-design/icons'\nimport { RenderWrapper, useTranslation } from '@zero-library/common'\nimport { Avatar, Button, Space } from 'antd'\nimport classNames from 'classnames'\nimport { useSnapshot } from 'valtio'\nimport AuthImage from '../../components/AuthImage'\nimport IconFont from '../../components/IconFont'\nimport { NS_CHAT_COPILOT } from '../../i18n/constants'\nimport { useChatStore } from '../../stores/Context'\nimport { ChatLayoutHeader } from '../../types'\nimport ConversationFavoritesBtn from './FeatureComponents/ConversationFavoritesBtn'\nimport ConversationShareBtn from './FeatureComponents/ConversationShareBtn'\nimport CreateBtn from './FeatureComponents/CreateBtn'\nimport HistoryBtn from './FeatureComponents/HistoryBtn'\nimport styles from './styles.module.less'\n\nexport default ({\n title = true,\n avatar = true,\n closeBtn = false,\n newConversationBtn = true,\n conversationListBtn = true,\n conversationFavoriteBtn = true,\n conversationShareBtn = true\n}: ChatLayoutHeader) => {\n const chatStore = useChatStore()\n const agentState = useSnapshot(chatStore.agent)\n const configState = useSnapshot(chatStore.config)\n const { t } = useTranslation(NS_CHAT_COPILOT)\n const conversationState = useSnapshot(chatStore.conversation)\n const conversationsState = useSnapshot(chatStore.conversations)\n // 当前会话标题(会话列表中的 label),无则回退智能体名称\n const conversationTitle = String(conversationsState.list.items.find((item) => item.key === conversationState.active.id)?.label || '')\n return (\n <>\n <div className={classNames(styles.chatHeader, 'zero-chat-header')}>\n <div className={styles.chatHeaderContent}>\n <RenderWrapper\n control={avatar}\n DefaultComponent={\n agentState.agentInfo?.iconUrl ? (\n /^https?:\\/\\//i.test(agentState.agentInfo?.iconUrl) ? (\n <Avatar shape=\"circle\" size={28} src={agentState.agentInfo?.iconUrl} />\n ) : (\n <AuthImage shape=\"circle\" size={28} path={agentState.agentInfo?.iconUrl} />\n )\n ) : (\n <Avatar shape=\"circle\" size={28} src={<IconFont type=\"icon-lolrai\" className={styles.defaultLogo} />} />\n )\n }\n />{' '}\n <RenderWrapper\n control={title}\n DefaultComponent={<div className={styles.chatTitle}>{conversationTitle || agentState.agentInfo.name}</div>}\n />\n </div>\n <Space size={2}>\n <div className={styles.chatHeaderBtnGroup}>\n <RenderWrapper control={newConversationBtn} DefaultComponent={CreateBtn} />\n <RenderWrapper control={conversationListBtn} DefaultComponent={HistoryBtn} />\n <RenderWrapper control={conversationFavoriteBtn} DefaultComponent={ConversationFavoritesBtn} />\n <RenderWrapper control={conversationShareBtn} DefaultComponent={ConversationShareBtn} />\n </div>\n\n <RenderWrapper\n control={closeBtn}\n DefaultComponent={\n <Button title={t('headerClose')} type=\"text\" size=\"large\" onClick={configState.hooks?.onHeaderClose} icon={<CloseOutlined />} />\n }\n />\n </Space>\n </div>\n </>\n )\n}\n","import { PlusOutlined } from '@ant-design/icons'\nimport { RenderWrapper, useTranslation } from '@zero-library/common'\nimport { Avatar, Button, Flex, Typography } from 'antd'\nimport classNames from 'classnames'\nimport { useSnapshot } from 'valtio'\nimport AuthImage from '../../components/AuthImage'\nimport IconFont from '../../components/IconFont'\nimport { NS_CHAT_COPILOT } from '../../i18n/constants'\nimport { useChatStore } from '../../stores/Context'\nimport { ChatLayoutConversationListHeader } from '../../types'\nimport styles from './styles.module.less'\n\nconst { Text } = Typography\n\nexport default ({ title = true, avatar = true, newConversationBtn = true, conversationFavoriteBtn = true }: ChatLayoutConversationListHeader) => {\n const chatStore = useChatStore()\n const agentState = useSnapshot(chatStore.agent)\n const { t } = useTranslation(NS_CHAT_COPILOT)\n\n return (\n <Flex className=\"p-24\" gap={16} vertical>\n <Flex align=\"center\" gap={16}>\n <RenderWrapper\n control={avatar}\n DefaultComponent={\n agentState.agentInfo?.iconUrl ? (\n /^https?:\\/\\//i.test(agentState.agentInfo?.iconUrl) ? (\n <Avatar shape=\"square\" size={50} src={agentState.agentInfo?.iconUrl} />\n ) : (\n <AuthImage size={50} path={agentState.agentInfo?.iconUrl} />\n )\n ) : (\n <Avatar shape=\"square\" size={50} src={<IconFont type=\"icon-lolrai\" className={styles.defaultLogo} />} />\n )\n }\n />\n\n <RenderWrapper\n control={title}\n DefaultComponent={\n <>\n <Flex vertical gap={4} flex={1} style={{ minWidth: 0 }}>\n <Text strong className={classNames('fz-16')}>\n {agentState.agentInfo.name}\n </Text>\n <Text type=\"secondary\" ellipsis className={classNames('fz-12')}>\n {agentState.agentInfo.description}\n </Text>\n </Flex>\n </>\n }\n />\n </Flex>\n <RenderWrapper\n control={newConversationBtn}\n DefaultComponent={\n <Button\n block\n type=\"primary\"\n onClick={() => chatStore.createConversation()}\n className={classNames(styles.createConversationButton)}\n icon={<PlusOutlined />}\n >\n {t('newConversation')}\n </Button>\n }\n />\n </Flex>\n )\n}\n","import { RenderWrapper } from '@zero-library/common'\nimport { Flex } from 'antd'\nimport classNames from 'classnames'\nimport { ChatLayoutConversationList } from '../../types'\nimport ConversationList from './ConversationList'\nimport ConversationListHeader from './ConversationListHeader'\nimport styles from './styles.module.less'\n\nconst ConversationListPanel = ({ header }: ChatLayoutConversationList) => {\n return (\n <Flex vertical className={classNames('height-full', 'zero-chat-conversations', styles.conversationListPanel)}>\n <RenderWrapper control={header} DefaultComponent={ConversationListHeader} />\n <div className=\"full-scroll\">\n <ConversationList />\n </div>\n </Flex>\n )\n}\n\nexport default ConversationListPanel\n","import { MessageEvent, TextEvent } from '../types/message.types'\n\n/**\n * 会产生执行链内容的事件类型(聚合模式与顺序模式共用)。\n * 用于判断某条消息是否存在可展示的执行链内容,从而决定是否渲染执行列表/轨迹。\n */\nexport const EXEC_CONTENT_EVENT_TYPES: string[] = ['text', 'toolCall', 'toolResult', 'stepError', 'runFailed', 'files', 'plan']\n\n/**\n * 内部公共实现:按是否把纯回答(messageContent)计入内容来判断 text 事件。\n * @param countAnswer - true:思考与回答都算内容;false:仅思考算执行链。\n */\nfunction hasContent(content: readonly unknown[] = [], countAnswer: boolean): boolean {\n return content.some((item) => {\n const evt = item as MessageEvent\n if (evt.type === 'text') {\n const t = item as TextEvent\n return countAnswer ? !!(t.reasoningContent || t.messageContent) : !!t.reasoningContent\n }\n return EXEC_CONTENT_EVENT_TYPES.includes(evt.type)\n })\n}\n\n/**\n * 是否有可渲染的执行链内容(思考 / 回答 / 工具 / 计划 / 文件 / 错误)。\n * 用于判断某条消息是否值得渲染执行列表/轨迹。\n */\nexport function hasExecContent(content: readonly unknown[] = []): boolean {\n return hasContent(content, true)\n}\n\n/**\n * 是否包含「真正的执行链」内容(思考 / 工具 / 计划 / 文件 / 错误)。\n * 与 hasExecContent 的区别:不把纯回答(messageContent)计入执行链。\n * 用于决定是否展示「聚合 / 顺序」切换按钮——纯回答会话切换后展示无差别,无需出现该按钮。\n */\nexport function hasExecChain(content: readonly unknown[] = []): boolean {\n return hasContent(content, false)\n}\n\n/**\n * 子智能体识别:任一信号命中即视为子智能体 spawn 工具。\n * - hasSubAgent / subConversationId:store 在子智能体消息到达时写入工具项的标记;\n * - metadata.conversationId:agent_spawn 工具结果携带的子会话 ID(可能只在结果上);\n * - toolName === 'agent_spawn':文档确认的 spawn 工具名,作为字段标记缺失时的兜底识别。\n */\nexport function isSubAgentEvent(tool: any): boolean {\n if (!tool) return false\n return !!tool.hasSubAgent || !!tool.subConversationId || !!tool.metadata?.conversationId || tool.toolName === 'agent_spawn'\n}\n","import type React from 'react'\n// 关键步骤:项目当前缺少 x-card 完整类型声明,使用本地桥接文件集中兜底,避免业务代码出现类型噪音。\n// @ts-ignore\nimport { registerCatalog as rawRegisterCatalog, XCard as rawXCard } from '@ant-design/x-card'\n\nexport type Catalog = {\n catalogId: string\n components: Record<string, any>\n}\n\nexport const registerCatalog = (catalog: Catalog) => {\n rawRegisterCatalog?.(catalog as any)\n}\n\nexport const XCard = rawXCard as {\n Box: React.ComponentType<{\n commands: any[]\n components?: Record<string, React.ComponentType<any>>\n onAction?: (payload: any) => void\n children?: React.ReactNode\n }>\n Card: React.ComponentType<{ id: string }>\n}\n","import { t } from '@zero-library/common'\nimport { Card as AntCard, Tag as AntTag, Space, Typography } from 'antd'\nimport React from 'react'\nimport { NS_CHAT_COPILOT } from '../../../../../i18n/constants'\n\nconst { Text: AText } = Typography\n\n/** 根据制品类型生成一个可读的默认标题。 */\nfunction getArtifactFallbackTitle(type: string) {\n const normalizedType = String(type || '').toLowerCase()\n if (normalizedType === 'report') return t(`${NS_CHAT_COPILOT}:unnamedReport`)\n if (normalizedType === 'chart') return t(`${NS_CHAT_COPILOT}:unnamedChart`)\n if (normalizedType === 'table') return t(`${NS_CHAT_COPILOT}:unnamedTable`)\n return t(`${NS_CHAT_COPILOT}:unnamedContent`)\n}\n\n/** 通用制品兜底卡片,在无法渲染具体内容时至少展示类型和标题。 */\nexport const ArtifactCard: React.FC<{\n type: string\n artifactId: string\n title?: string\n payload?: any\n}> = ({ type, title }) => (\n <AntCard size=\"small\" style={{ borderRadius: 12 }}>\n <Space align=\"center\" wrap>\n <AntTag color=\"blue\">{type}</AntTag>\n <AText strong>{title || getArtifactFallbackTitle(type)}</AText>\n </Space>\n </AntCard>\n)\n","import React from 'react'\n\nfunction toVChartSpec(raw: any): any | null {\n const palette = [\n '#1677ff',\n '#52c41a',\n '#faad14',\n '#f5222d',\n '#722ed1',\n '#13c2c2',\n '#eb2f96',\n '#fa541c',\n '#a0d911',\n '#2f54eb',\n '#9254de',\n '#08979c',\n '#d46b08',\n '#7cb305',\n '#c41d7f',\n '#ad2102',\n '#1d39c4',\n '#389e0d',\n '#d4380d',\n '#531dab'\n ]\n\n const t = String(raw?.type ?? '').toLowerCase()\n const xs = Array.isArray(raw?.x) ? raw.x : null\n const ys = Array.isArray(raw?.y) ? raw.y : null\n if (!xs || !ys) return null\n\n const n = Math.min(xs.length, ys.length)\n if (n <= 0) return null\n\n const axisBottom = {\n orient: 'bottom',\n label: { autoHide: true, autoRotate: true, autoRotateAngle: [0, 45, 90] }\n }\n const axisLeft = { orient: 'left', label: { autoHide: true } }\n\n if (t === 'scatter') {\n const values = Array.from({ length: n }, (_, i) => ({\n _i: i,\n x: typeof xs[i] === 'number' ? xs[i] : Number(xs[i]),\n y: typeof ys[i] === 'number' ? ys[i] : Number(ys[i])\n })).filter((p) => Number.isFinite(p.x) && Number.isFinite(p.y))\n if (values.length === 0) return null\n return {\n type: 'scatter',\n data: [{ id: 'data', values }],\n xField: 'x',\n yField: 'y',\n axes: [axisBottom, axisLeft],\n point: {\n style: {\n size: 4,\n fillOpacity: 0.9,\n fill: (d: any) => palette[(d?._i ?? 0) % palette.length]\n }\n }\n }\n }\n\n if (t === 'pie') {\n const values = Array.from({ length: n }, (_, i) => ({\n _i: i,\n category: String(xs[i]),\n value: typeof ys[i] === 'number' ? ys[i] : Number(ys[i])\n })).filter((p) => Number.isFinite(p.value))\n if (values.length === 0) return null\n return {\n type: 'pie',\n data: [{ id: 'data', values }],\n categoryField: 'category',\n valueField: 'value',\n legends: { visible: false },\n label: { visible: true },\n outerRadius: 0.8,\n pie: {\n style: {\n fill: (d: any) => palette[(d?._i ?? 0) % palette.length],\n stroke: '#fff',\n lineWidth: 1\n }\n }\n }\n }\n\n if (t === 'bar' || t === 'line') {\n const values = Array.from({ length: n }, (_, i) => ({\n _i: i,\n category: String(xs[i]),\n value: typeof ys[i] === 'number' ? ys[i] : Number(ys[i])\n })).filter((p) => Number.isFinite(p.value))\n if (values.length === 0) return null\n return {\n type: t,\n data: [{ id: 'data', values }],\n xField: 'category',\n yField: 'value',\n axes: [axisBottom, axisLeft],\n ...(t === 'line'\n ? {\n point: { visible: true, style: { size: 3, fill: '#1677ff', fillOpacity: 0.9 } },\n line: { style: { lineWidth: 2, stroke: '#1677ff' } }\n }\n : null),\n ...(t === 'bar'\n ? {\n legends: { visible: false },\n bar: {\n style: {\n cornerRadius: 4,\n fill: (d: any) => palette[(d?._i ?? 0) % palette.length]\n }\n }\n }\n : null)\n }\n }\n\n return null\n}\n\nfunction toLegendColor(i: number) {\n const palette = [\n '#1677ff',\n '#52c41a',\n '#faad14',\n '#f5222d',\n '#722ed1',\n '#13c2c2',\n '#eb2f96',\n '#fa541c',\n '#a0d911',\n '#2f54eb',\n '#9254de',\n '#08979c',\n '#d46b08',\n '#7cb305',\n '#c41d7f',\n '#ad2102',\n '#1d39c4',\n '#389e0d',\n '#d4380d',\n '#531dab'\n ]\n return palette[i] ?? palette[i % palette.length]\n}\n\nfunction formatCompactNumber(v: number) {\n const abs = Math.abs(v)\n if (abs >= 10000) return `${Math.round(v)}`\n if (abs >= 1000) return `${Math.round(v)}`\n if (abs >= 10) return `${Math.round(v)}`\n if (Number.isInteger(v)) return String(v)\n return v.toFixed(1)\n}\n\nfunction renderMiniChart(spec: any, opts?: { containerWidth?: number }): React.ReactNode | null {\n const t = String(spec?.type ?? '').toLowerCase()\n if (t !== 'line' && t !== 'bar' && t !== 'pie' && t !== 'scatter') return null\n\n const xs = Array.isArray(spec?.x) ? spec.x : null\n const ys = Array.isArray(spec?.y) ? spec.y : null\n if (!xs || !ys || xs.length === 0 || ys.length === 0) return null\n\n const n = Math.min(xs.length, ys.length)\n const pairs = Array.from({ length: n }, (_, i) => ({\n label: String(xs[i]),\n x: xs[i],\n y: typeof ys[i] === 'number' ? ys[i] : Number(ys[i])\n })).filter((p) => Number.isFinite(p.y))\n if (pairs.length === 0) return null\n if (t === 'line' && pairs.length < 2) return null\n\n const height = 180\n const left = 44\n const right = 18\n const top = 14\n const bottom = 30\n\n const baseWidth = Math.max(520, Math.floor(opts?.containerWidth ?? 0))\n const minBarPx = 22\n const minPointPx = 32\n const neededWidth = left + right + Math.max(pairs.length * (t === 'bar' ? minBarPx : minPointPx), 320)\n const width = Math.max(baseWidth, neededWidth)\n\n const colors = [\n '#1677ff',\n '#52c41a',\n '#faad14',\n '#f5222d',\n '#722ed1',\n '#13c2c2',\n '#eb2f96',\n '#fa541c',\n '#a0d911',\n '#2f54eb',\n '#9254de',\n '#08979c',\n '#d46b08',\n '#7cb305',\n '#c41d7f',\n '#ad2102'\n ]\n\n const formatNumber = (v: number) => {\n if (Number.isInteger(v)) return String(v)\n const abs = Math.abs(v)\n if (abs < 1) return v.toFixed(2)\n return v.toFixed(1)\n }\n\n const textColorForHex = (hex: string) => {\n const m = hex.replace('#', '').trim()\n if (m.length !== 6) return '#fff'\n const r = parseInt(m.slice(0, 2), 16)\n const g = parseInt(m.slice(2, 4), 16)\n const b = parseInt(m.slice(4, 6), 16)\n const luminance = (0.2126 * r + 0.7152 * g + 0.0722 * b) / 255\n return luminance > 0.6 ? '#111' : '#fff'\n }\n\n const colorAt = (i: number) => colors[i] ?? colors[i % colors.length]\n\n if (t === 'pie') {\n const total = pairs.reduce((sum, p) => sum + p.y, 0)\n if (total <= 0) return null\n\n let currentAngle = 0\n const centerX = width / 2 - 80\n const centerY = height / 2\n const radius = 60\n\n return (\n <div style={{ width: '100%', overflowX: 'auto' }}>\n <svg width={width} height={height} viewBox={`0 0 ${width} ${height}`}>\n {pairs.map((p, i) => {\n const sliceAngle = (p.y / total) * 2 * Math.PI\n const x1 = centerX + radius * Math.cos(currentAngle)\n const y1 = centerY + radius * Math.sin(currentAngle)\n const x2 = centerX + radius * Math.cos(currentAngle + sliceAngle)\n const y2 = centerY + radius * Math.sin(currentAngle + sliceAngle)\n\n const largeArcFlag = sliceAngle > Math.PI ? 1 : 0\n const pathData = `M ${centerX} ${centerY} L ${x1} ${y1} A ${radius} ${radius} 0 ${largeArcFlag} 1 ${x2} ${y2} Z`\n\n const midAngle = currentAngle + sliceAngle / 2\n const labelRadius = radius * 0.7\n const labelX = centerX + labelRadius * Math.cos(midAngle)\n const labelY = centerY + labelRadius * Math.sin(midAngle)\n const ratio = p.y / total\n const percentText = `${(ratio * 100).toFixed(1)}%`\n const valueText = formatNumber(p.y)\n const showInner = ratio >= 0.08 && sliceAngle >= 0.35\n const fill = colorAt(i)\n\n currentAngle += sliceAngle\n\n return (\n <g key={i}>\n <path d={pathData} fill={fill} stroke=\"#fff\" strokeWidth=\"1\" />\n {showInner ? (\n <>\n <text x={labelX} y={labelY - 2} textAnchor=\"middle\" style={{ fontSize: 11, fill: textColorForHex(fill) }}>\n {valueText}\n </text>\n <text x={labelX} y={labelY + 12} textAnchor=\"middle\" style={{ fontSize: 10, fill: textColorForHex(fill) }}>\n {percentText}\n </text>\n </>\n ) : null}\n <rect x={width - 140} y={20 + i * 20} width={12} height={12} fill={fill} rx={2} />\n <text x={width - 120} y={30 + i * 20} style={{ fontSize: 12, fill: '#666' }}>\n {p.label}: {valueText} ({percentText})\n </text>\n </g>\n )\n })}\n </svg>\n </div>\n )\n }\n\n if (t === 'scatter') {\n const numericPairs = pairs\n .map((p) => ({\n ...p,\n x: typeof p.x === 'number' ? p.x : Number(p.x)\n }))\n .filter((p) => Number.isFinite(p.x) && Number.isFinite(p.y))\n if (numericPairs.length === 0) return null\n\n const rawMinX = Math.min(...numericPairs.map((p) => p.x))\n const rawMaxX = Math.max(...numericPairs.map((p) => p.x))\n const rawMinY = Math.min(...numericPairs.map((p) => p.y))\n const rawMaxY = Math.max(...numericPairs.map((p) => p.y))\n\n const spanX0 = rawMaxX - rawMinX\n const spanY0 = rawMaxY - rawMinY\n const padX = (spanX0 || Math.abs(rawMaxX) || 1) * 0.06\n const padY = (spanY0 || Math.abs(rawMaxY) || 1) * 0.08\n\n const minX = rawMinX >= 0 ? Math.max(0, rawMinX - padX) : rawMinX - padX\n const maxX = rawMaxX <= 0 ? Math.min(0, rawMaxX + padX) : rawMaxX + padX\n const minY = rawMinY >= 0 ? Math.max(0, rawMinY - padY) : rawMinY - padY\n const maxY = rawMaxY <= 0 ? Math.min(0, rawMaxY + padY) : rawMaxY + padY\n\n const spanX = maxX - minX || 1\n const spanY = maxY - minY || 1\n\n const plotW = width - left - right\n const plotH = height - top - bottom\n\n const scaleX = (x: number) => left + ((x - minX) * plotW) / spanX\n const scaleY = (y: number) => top + ((maxY - y) * plotH) / spanY\n\n const ticksX = Array.from({ length: 5 }, (_, i) => minX + (i * spanX) / 4)\n const ticksY = Array.from({ length: 5 }, (_, i) => minY + (i * spanY) / 4)\n\n const x0 = minY < 0 && maxY > 0 ? scaleY(0) : null\n const y0 = minX < 0 && maxX > 0 ? scaleX(0) : null\n\n const formatAxisNumber = (v: number) => {\n const abs = Math.abs(v)\n if (abs >= 1000) return String(Math.round(v))\n if (abs >= 10) return String(Math.round(v))\n return formatNumber(v)\n }\n\n return (\n <div style={{ width: '100%', overflowX: 'auto' }}>\n <svg width={width} height={height} viewBox={`0 0 ${width} ${height}`}>\n {ticksY.map((value, idx) => {\n const y = scaleY(value)\n return (\n <g key={`y_${idx}`}>\n <line x1={left} y1={y} x2={width - right} y2={y} stroke={idx === 0 ? '#eee' : '#f0f0f0'} />\n <text x={left - 6} y={y + 4} textAnchor=\"end\" style={{ fontSize: 10, fill: '#999' }}>\n {formatAxisNumber(value)}\n </text>\n </g>\n )\n })}\n {ticksX.map((value, idx) => {\n const x = scaleX(value)\n return (\n <g key={`x_${idx}`}>\n <line x1={x} y1={top} x2={x} y2={height - bottom} stroke={idx === 0 ? '#eee' : '#f0f0f0'} />\n <text x={x} y={height - 8} textAnchor=\"middle\" style={{ fontSize: 10, fill: '#999' }}>\n {formatAxisNumber(value)}\n </text>\n </g>\n )\n })}\n\n <line x1={left} y1={top} x2={left} y2={height - bottom} stroke=\"#eee\" />\n <line x1={left} y1={height - bottom} x2={width - right} y2={height - bottom} stroke=\"#eee\" />\n\n {typeof x0 === 'number' ? <line x1={left} y1={x0} x2={width - right} y2={x0} stroke=\"#e6f4ff\" /> : null}\n {typeof y0 === 'number' ? <line x1={y0} y1={top} x2={y0} y2={height - bottom} stroke=\"#e6f4ff\" /> : null}\n\n {numericPairs.map((p, i) => {\n const x = scaleX(p.x)\n const y = scaleY(p.y)\n return (\n <g key={i}>\n <circle cx={x} cy={y} r=\"3\" fill={colors[0]} opacity=\"0.85\" />\n </g>\n )\n })}\n </svg>\n </div>\n )\n }\n\n const rawMinY = Math.min(...pairs.map((p) => p.y))\n const rawMaxY = Math.max(...pairs.map((p) => p.y))\n const minY = Math.min(0, rawMinY)\n const maxY = Math.max(0, rawMaxY)\n const spanY = maxY - minY || 1\n\n const plotW = width - left - right\n const plotH = height - top - bottom\n\n const scaleX = (i: number) => left + (i * plotW) / Math.max(1, pairs.length - 1)\n const scaleY = (y: number) => top + ((maxY - y) * plotH) / spanY\n\n const ticks = Array.from({ length: 5 }, (_, i) => minY + (i * spanY) / 4)\n const maxLabels = Math.max(2, Math.floor(plotW / 70))\n const labelStep = Math.max(1, Math.ceil(pairs.length / maxLabels))\n\n if (t === 'line') {\n const points = pairs.map((p, i) => `${scaleX(i)},${scaleY(p.y)}`).join(' ')\n return (\n <div style={{ width: '100%', overflowX: 'auto' }}>\n <svg width={width} height={height} viewBox={`0 0 ${width} ${height}`}>\n {ticks.map((value, idx) => {\n const y = scaleY(value)\n return (\n <g key={idx}>\n <line x1={left} y1={y} x2={width - right} y2={y} stroke={idx === 0 ? '#eee' : '#f0f0f0'} />\n <text x={left - 6} y={y + 4} textAnchor=\"end\" style={{ fontSize: 10, fill: '#999' }}>\n {formatNumber(value)}\n </text>\n </g>\n )\n })}\n <line x1={left} y1={top} x2={left} y2={height - bottom} stroke=\"#eee\" />\n <polyline fill=\"none\" stroke=\"#1677ff\" strokeWidth=\"2.5\" points={points} />\n {pairs.map((p, i) => {\n const x = scaleX(i)\n const y = scaleY(p.y)\n const showLabel = i % labelStep === 0 || i === pairs.length - 1\n return (\n <g key={i}>\n <circle cx={x} cy={y} r=\"3\" fill=\"#1677ff\" />\n {showLabel ? (\n <text x={x} y={height - 8} textAnchor=\"middle\" style={{ fontSize: 10, fill: '#999' }}>\n {p.label}\n </text>\n ) : null}\n </g>\n )\n })}\n </svg>\n </div>\n )\n }\n\n const barW = plotW / pairs.length\n const y0 = scaleY(0)\n const showValueLabel = barW >= 18\n const xAxisY = height - bottom\n return (\n <div style={{ width: '100%', overflowX: 'auto' }}>\n <svg width={width} height={height} viewBox={`0 0 ${width} ${height}`}>\n {ticks.map((value, idx) => {\n const y = scaleY(value)\n return (\n <g key={idx}>\n <line x1={left} y1={y} x2={width - right} y2={y} stroke={idx === 0 ? '#eee' : '#f0f0f0'} />\n <text x={left - 6} y={y + 4} textAnchor=\"end\" style={{ fontSize: 10, fill: '#999' }}>\n {formatNumber(value)}\n </text>\n </g>\n )\n })}\n <line x1={left} y1={top} x2={left} y2={height - bottom} stroke=\"#eee\" />\n <line x1={left} y1={xAxisY} x2={width - right} y2={xAxisY} stroke=\"#eee\" />\n <line x1={left} y1={y0} x2={width - right} y2={y0} stroke=\"#e6f4ff\" />\n {pairs.map((p, i) => {\n const valueY = scaleY(p.y)\n const barH = Math.abs(valueY - y0)\n const x = left + i * barW + 2\n const cx = left + i * barW + barW / 2\n const y = Math.min(valueY, y0)\n const labelY = p.y >= 0 ? y - 4 : y + barH + 12\n const showLabel = i % labelStep === 0 || i === pairs.length - 1\n return (\n <g key={i}>\n <rect x={x} y={y} width={Math.max(2, barW - 4)} height={barH} fill={colorAt(i)} rx={4} />\n {showValueLabel ? (\n <text x={cx} y={labelY} textAnchor=\"middle\" style={{ fontSize: 10, fill: '#666' }}>\n {formatNumber(p.y)}\n </text>\n ) : null}\n <line x1={cx} y1={xAxisY} x2={cx} y2={xAxisY + 4} stroke=\"#e6e6e6\" />\n {showLabel ? (\n <text x={cx} y={height - 8} textAnchor=\"middle\" style={{ fontSize: 10, fill: '#999' }}>\n {p.label}\n </text>\n ) : null}\n </g>\n )\n })}\n </svg>\n </div>\n )\n}\n\nexport { formatCompactNumber, renderMiniChart, toLegendColor, toVChartSpec }\n","function sanitizeFileName(name: string) {\n return (\n name\n // eslint-disable-next-line no-control-regex\n .replace(/[\\\\/:*?\"<>|\\u0000-\\u001F]/g, '_')\n .replace(/\\s+/g, ' ')\n .trim()\n )\n}\n\nfunction downloadBlob(blob: Blob, fileName: string) {\n const url = URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.href = url\n a.download = sanitizeFileName(fileName) || 'download'\n document.body.appendChild(a)\n a.click()\n a.remove()\n URL.revokeObjectURL(url)\n}\n\nfunction escapeCsvCell(value: unknown) {\n const raw = value === null || value === undefined ? '' : String(value)\n const needsQuote = /[\",\\n\\r]/.test(raw)\n const escaped = raw.replace(/\"/g, '\"\"')\n return needsQuote ? `\"${escaped}\"` : escaped\n}\n\nasync function exportSvgElementAsPng(svgEl: SVGSVGElement, fileName: string) {\n const serializer = new XMLSerializer()\n const svgText = serializer.serializeToString(svgEl)\n const blob = new Blob([svgText], { type: 'image/svg+xml;charset=utf-8' })\n const url = URL.createObjectURL(blob)\n\n const wAttr = svgEl.getAttribute('width')\n const hAttr = svgEl.getAttribute('height')\n const width = wAttr ? Number(wAttr) : svgEl.viewBox.baseVal?.width || 520\n const height = hAttr ? Number(hAttr) : svgEl.viewBox.baseVal?.height || 180\n\n const img = new Image()\n img.crossOrigin = 'anonymous'\n await new Promise<void>((resolve, reject) => {\n img.onload = () => resolve()\n img.onerror = () => reject(new Error('image load failed'))\n img.src = url\n })\n\n const ratio = Math.max(1, Math.min(3, window.devicePixelRatio || 1))\n const canvas = document.createElement('canvas')\n canvas.width = Math.round(width * ratio)\n canvas.height = Math.round(height * ratio)\n const ctx = canvas.getContext('2d')\n if (!ctx) {\n URL.revokeObjectURL(url)\n return\n }\n ctx.scale(ratio, ratio)\n ctx.drawImage(img, 0, 0, width, height)\n URL.revokeObjectURL(url)\n\n const pngBlob: Blob | null = await new Promise((resolve) => {\n canvas.toBlob((b) => resolve(b), 'image/png')\n })\n if (!pngBlob) return\n downloadBlob(pngBlob, fileName)\n}\n\nasync function exportCanvasElementAsPng(canvas: HTMLCanvasElement, fileName: string) {\n const pngBlob: Blob | null = await new Promise((resolve) => {\n canvas.toBlob((b) => resolve(b), 'image/png')\n })\n if (!pngBlob) return\n downloadBlob(pngBlob, fileName)\n}\n\nfunction exportTextFile(text: string, fileName: string, mime = 'text/plain;charset=utf-8') {\n downloadBlob(new Blob([text], { type: mime }), fileName)\n}\n\nfunction exportJsonFile(data: unknown, fileName: string) {\n const json = JSON.stringify(data ?? null, null, 2)\n exportTextFile(json, fileName, 'application/json;charset=utf-8')\n}\n\nexport { downloadBlob, escapeCsvCell, exportCanvasElementAsPng, exportJsonFile, exportSvgElementAsPng, exportTextFile, sanitizeFileName }\n","import { useTranslation } from '@zero-library/common'\nimport { Button as AntButton, Card as AntCard, Space } from 'antd'\nimport React from 'react'\nimport { NS_CHAT_COPILOT } from '../../../../../i18n/constants'\nimport { ArtifactCard } from './ArtifactCard'\nimport { renderMiniChart } from './chart-utils'\nimport { exportCanvasElementAsPng, exportSvgElementAsPng, sanitizeFileName } from './export-utils'\n\n/** 图表制品渲染器,优先使用 VChart,缺少 spec 时回退到通用制品卡片。 */\nexport const ChartViewer: React.FC<{ artifactId: string; title?: string; payload?: any }> = ({ artifactId, title, payload }) => {\n const { t } = useTranslation(NS_CHAT_COPILOT)\n const containerRef = React.useRef<HTMLDivElement | null>(null)\n const [containerWidth, setContainerWidth] = React.useState<number>(0)\n const spec = payload?.spec\n const needsContainerWidth = true\n\n /** 迷你图模式下依赖容器宽度,因此在尺寸变化时重新计算。 */\n React.useLayoutEffect(() => {\n if (!needsContainerWidth) return\n const el = containerRef.current\n if (!el) return\n let frame = 0\n const update = () => {\n const nextWidth = el.clientWidth || 0\n setContainerWidth((prev) => (prev === nextWidth ? prev : nextWidth))\n }\n const scheduleUpdate = () => {\n if (frame) window.cancelAnimationFrame(frame)\n frame = window.requestAnimationFrame(update)\n }\n scheduleUpdate()\n const ro = new ResizeObserver(() => scheduleUpdate())\n ro.observe(el)\n return () => {\n ro.disconnect()\n if (frame) window.cancelAnimationFrame(frame)\n }\n }, [needsContainerWidth])\n\n /** 缺少 chart spec 时退回到占位卡片。 */\n if (!spec) {\n return <ArtifactCard type=\"chart\" artifactId={artifactId} title={title} payload={payload} />\n }\n\n const node = renderMiniChart(spec, { containerWidth })\n if (!node) {\n return <ArtifactCard type=\"chart\" artifactId={artifactId} title={title} payload={payload} />\n }\n const exportBase = sanitizeFileName(title || artifactId || 'chart')\n /** 优先导出 SVG 图,再退回 Canvas 导出 PNG。 */\n const exportPng = async () => {\n const svg = containerRef.current?.querySelector('svg')\n if (svg) {\n await exportSvgElementAsPng(svg, `${exportBase}.png`)\n return\n }\n const canvas = containerRef.current?.querySelector('canvas')\n if (canvas) {\n await exportCanvasElementAsPng(canvas, `${exportBase}.png`)\n }\n }\n\n return (\n <AntCard\n size=\"small\"\n style={{ borderRadius: 12 }}\n title={title || t('chart')}\n extra={\n <Space size={4}>\n <AntButton size=\"small\" type=\"text\" onClick={exportPng}>\n {t('exportPng')}\n </AntButton>\n </Space>\n }\n >\n <div ref={containerRef}>{node}</div>\n </AntCard>\n )\n}\n","import { emit, useTranslation } from '@zero-library/common'\nimport { Button } from 'antd'\n\ninterface AgentNavigate {\n emit: string\n name: string\n data: any\n}\ninterface Props {\n data: string\n}\n\nimport { memo, useEffect, useState } from 'react'\nimport { NS_CHAT_COPILOT } from '../../../i18n/constants'\n// 自定义业务组件 - 导航到智能体导航页\nexport default memo(({ data }: Props) => {\n const [content, setContent] = useState<AgentNavigate | null>(null)\n const { t } = useTranslation(NS_CHAT_COPILOT)\n useEffect(() => {\n if (!data) {\n return\n }\n console.log(typeof data, data)\n // 从模型返回的数据中解析spec信息\n if (typeof data === 'string') {\n try {\n setContent(JSON.parse(data))\n } catch (_error) {\n setContent(null)\n }\n } else {\n setContent(data as unknown as AgentNavigate)\n }\n }, [data])\n\n const handleClick = () => {\n if (!content?.emit) return\n emit(content.emit, { ...content.data, name: 'luya-web-drawer' }, 'nearest')\n }\n\n return (\n <Button onClick={handleClick} style={{ padding: 0 }} type=\"link\">\n {content?.name || t('clickHere')}\n </Button>\n )\n})\n",".appCard {\n width: 180px;\n border-radius: 10px;\n border: 1px solid #d7d7d7;\n background-color: #fafafa;\n font-size: 16px;\n cursor: pointer;\n margin: 8px;\n padding: 12px 8px;\n}\n.appCard > div {\n max-width: 100%;\n}\n.appCard > img {\n height: 30px;\n}\n.fileView {\n width: 200px;\n padding: 4px 8px;\n cursor: pointer;\n background-color: #f5f3f3;\n border-radius: 6px;\n}\n.fileEdit {\n margin: 12px 0;\n border-radius: 6px;\n border: 1px solid #f2f2f2;\n}\n.fileEdit .fileEditHeader {\n padding: 2px 8px;\n background-color: #f2f2f2;\n}\n.fileEdit .fileEditContent {\n padding: 8px;\n background-color: #fafafa;\n}\n.mdEdit {\n margin: 10px 0;\n background-color: rgba(242, 242, 242, 0.2);\n border: 1px solid #f2f2f2;\n padding: 10px;\n border-radius: 4px;\n}\n.chart {\n padding: 10px;\n max-width: 100%;\n min-width: 350px;\n overflow-x: scroll;\n display: inline-block;\n border-radius: 12px;\n border: 1px solid #e5e9f0;\n background: linear-gradient(180deg, #fff 0%, #f8fafc 100%);\n margin: 12px 0;\n}\n.chart .chartSkeleton {\n width: 100% !important;\n}\n.chart .chartSkeleton .chartSkeletonIcon {\n font-size: 40px;\n color: #bfbfbf;\n}\n","import { Flex, Spin } from 'antd'\nimport { useChatStore } from '../../../stores/Context'\nimport styles from './styles.module.less'\n\ninterface Props {\n data: {\n agentId: string\n appKey?: string\n appName: string\n iconUrl: string\n }\n loading: boolean\n}\n// <appcard>{appKey:\"cube-acc\",agentId:\"\",appName:\"罗拉易账\",iconUrl:\"/icon-url/2e53e398d31627d559e0b3b1b5acb731.png\"}</appcard>\nexport default ({ data, loading }: Props) => {\n const chatStore = useChatStore()\n const onClick = async () => {\n if (data.appKey) {\n const canProceed = await chatStore.config.hooks?.onAppRightVerify?.(data.appKey)\n if (canProceed === false) {\n return\n }\n }\n chatStore.getAgentInfo(data.agentId)\n }\n return (\n <Spin spinning={loading} size=\"small\">\n <Flex vertical gap={4} align=\"center\" className={styles.appCard} onClick={onClick}>\n <img src={data.iconUrl} />\n <div className=\"text-ellipsis\" title={data.appName}>\n {data.appName}\n </div>\n </Flex>\n </Spin>\n )\n}\n","import { DotChartOutlined } from '@ant-design/icons'\nimport { LazyComponent, useTranslation } from '@zero-library/common'\nimport { Alert, Skeleton } from 'antd'\nimport classNames from 'classnames'\nimport { NS_CHAT_COPILOT } from '../../../i18n/constants'\nimport styles from './styles.module.less'\n// 需要支持的图表类型列表\nconst chartTypes = [\n 'Line',\n 'Column',\n 'Bar',\n 'Area',\n 'Pie',\n 'DualAxes',\n 'Scatter',\n 'WordCloud',\n 'Funnel',\n 'Heatmap',\n 'Histogram',\n 'Liquid',\n 'BidirectionalBar',\n 'Box',\n 'Bullet',\n 'CirclePacking',\n 'Gauge',\n 'Radar',\n 'Rose',\n 'Sankey',\n 'Stock',\n 'Sunburst',\n 'Treemap',\n 'Venn',\n 'Waterfall',\n 'MindMap',\n 'Fishbone',\n 'IndentedTree',\n 'Dendrogram',\n 'OrganizationChart',\n 'FlowGraph',\n 'FlowDirectionGraph',\n 'NetworkGraph'\n // …如果还有其他图表也继续加\n] as const\n// 所有支持的图表类型映射\nconst CHART_COMPONENTS = Object.fromEntries(\n chartTypes.map((type) => [\n type,\n () =>\n import('@ant-design/charts').then((mod) => ({\n default: (mod as any)[type]\n }))\n ])\n)\n\ninterface Props {\n data: {\n type: string\n config: any\n }\n loading: boolean\n}\n\nexport default ({ data, loading }: Props) => {\n const { type, config } = data\n const { t } = useTranslation(NS_CHAT_COPILOT)\n\n return (\n <div className={classNames(styles.chart, 'scroll-fade-in')}>\n {loading ? (\n // Antd 骨架屏\n <Skeleton.Node active className={styles.chartSkeleton}>\n <DotChartOutlined className={styles.chartSkeletonIcon} />\n </Skeleton.Node>\n ) : (\n <LazyComponent\n type={type}\n {...config}\n customComponents={CHART_COMPONENTS}\n unknownContent={<Alert title={t('unsupportedChart')} description={t('unsupportedChartDesc', { type })} type=\"warning\" showIcon />}\n />\n )}\n </div>\n )\n}\n","import { CodeHighlighter, Mermaid } from '@ant-design/x-v2'\n\ninterface Props {\n data: string\n className: string\n}\nexport default ({ className, data }: Props) => {\n const lang = className?.match(/language-(\\w+)/)?.[1] || ''\n\n if (typeof data !== 'string') return null\n\n if (!lang) {\n return <code>{data}</code>\n }\n\n if (lang === 'mermaid') {\n return <Mermaid>{data}</Mermaid>\n }\n\n return (\n <div\n style={{\n maxHeight: 400,\n overflowY: 'auto',\n overflowX: 'auto',\n borderRadius: 8\n }}\n >\n <CodeHighlighter lang={lang} style={{ margin: 0 }}>\n {data}\n </CodeHighlighter>\n </div>\n )\n}\n","// :::alert type=fileEdit data={fileName:\"\",content:\"\"} :::\nimport { CopyOutlined, PlayCircleOutlined } from '@ant-design/icons'\nimport { copyText, FileIcon } from '@zero-library/common'\nimport { Button, Flex, Spin } from 'antd'\nimport { useChatStore } from '../../../stores/Context'\nimport { FileTextType } from '../../../types/message.types'\nimport XMarkdown from '../../XMarkdown'\nimport styles from './styles.module.less'\n\ninterface Props {\n data: FileTextType\n loading: boolean\n}\nexport default ({ data, loading }: Props) => {\n const chatStore = useChatStore()\n const onPreview = () => {\n chatStore.setPreview(data, true)\n }\n\n return (\n <Flex vertical className={styles.fileEdit}>\n <Flex gap={8} align=\"center\" justify=\"space-between\" className={styles.fileEditHeader}>\n <Flex gap={4} align=\"center\" className=\"flex-1\">\n <FileIcon suffix={'md'} fontSize={18} />\n <div className=\"text-ellipsis\" title={data.fileName}>\n {data.fileName}\n </div>\n </Flex>\n <Spin spinning={loading} size=\"small\">\n <Flex>\n <Button color=\"default\" variant=\"text\" size=\"small\" icon={<PlayCircleOutlined />} onClick={onPreview}>\n 预览编辑\n </Button>\n <Button color=\"default\" variant=\"text\" size=\"small\" icon={<CopyOutlined />} onClick={() => copyText(data.content)}>\n 复制\n </Button>\n </Flex>\n </Spin>\n </Flex>\n <Flex gap={8} align=\"center\" className={styles.fileEditContent}>\n <XMarkdown content={data.content} />\n </Flex>\n </Flex>\n )\n}\n","import { FileIcon } from '@zero-library/common'\nimport { Flex, Spin } from 'antd'\nimport { useChatStore } from '../../../stores/Context'\nimport { FileUrlType } from '../../../types/message.types'\nimport styles from './styles.module.less'\n\ninterface Props {\n data: FileUrlType\n loading: boolean\n}\n// :::alert type=fileView data={fileUrl:\"\",fileName:\"\",suffix:\"\"} :::\nexport default ({ data, loading }: Props) => {\n const chatStore = useChatStore()\n const onClick = () => {\n chatStore.setPreview(data, false)\n }\n return (\n <Spin spinning={loading} size=\"small\">\n <Flex gap={8} align=\"center\" className={styles.fileView} onClick={onClick}>\n <FileIcon suffix={data.suffix} />\n <div className=\"text-ellipsis\" title={data.fileName}>\n {data.fileName}\n </div>\n </Flex>\n </Spin>\n )\n}\n","import XMarkdown from '@ant-design/x-markdown'\nimport { Drawer, Empty, Spin } from 'antd'\nimport { useEffect, useState } from 'react'\nimport { useSnapshot } from 'valtio'\nimport { useChatStore } from '../../../../stores/Context'\n\ninterface Props {\n paramsStr: string\n title: string\n open: boolean\n onClose: () => void\n}\nexport default ({ title, open, onClose, paramsStr }: Props) => {\n const chatStore = useChatStore()\n const configState = useSnapshot(chatStore.config)\n const [content, setContent] = useState('')\n const [loading, setLoading] = useState(false)\n const getContent = async () => {\n try {\n setLoading(true)\n const res = await configState.services.request.docQuery(paramsStr)\n setContent(res.data?.content || '')\n } finally {\n setLoading(false)\n }\n }\n useEffect(() => {\n getContent()\n }, [paramsStr])\n return (\n <Drawer title={title} push={false} size=\"100%\" open={open} onClose={onClose}>\n <Spin spinning={loading}>{content ? <XMarkdown content={content} /> : <Empty className=\"m-t-32\" />}</Spin>\n </Drawer>\n )\n}\n","// TODO 律师启用\nimport { isExternal } from '@zero-library/common'\nimport { Flex, Popover, Spin, Tag } from 'antd'\nimport { useMemo, useState } from 'react'\nimport { ConversationMessage } from '../../../types'\nimport DocDrawer from './components/DocDrawer'\n\ninterface Props {\n message: ConversationMessage\n data: {\n citationName: string\n citationId: number\n citationUrl: string\n }\n loading: boolean\n}\nexport default ({ data, loading, message }: Props) => {\n const [open, setOpen] = useState(false)\n // {\"citationId\": 1, \"citationUrl\": \"type=2&datasetId=1997851270976937984&docId=1765162923266&sid=0fd11940-b20e-4719-9b16-147a5f618e4e\", \"citationName\": \"第3卷证词.pdf\"}\n const citation = useMemo(() => {\n const citations = message.content?.find((item) => item.type === 'citation')?.citations ?? []\n return citations?.find((item) => String(item.citationId) === String(data.citationId))\n }, [data.citationId, message.content])\n const onClick = () => {\n if (!citation?.citationUrl) return\n if (isExternal(citation.citationUrl)) {\n window.open(citation.citationUrl, '_blank')\n } else {\n setOpen(true)\n }\n }\n\n const Content = (\n <div>\n <Flex align=\"center\" gap={8}>\n {/* <FileIcon suffix={data.suffix} fontSize={16} /> */}\n <a onClick={onClick}>{citation?.citationName}</a>\n </Flex>\n </div>\n )\n return (\n <div className=\"inline-block m-l-8\">\n <Spin spinning={loading} size=\"small\">\n <Popover content={Content}>\n <Tag variant=\"filled\" color=\"processing\" className=\"cursor-pointer\">\n {data?.citationName}\n </Tag>\n </Popover>\n </Spin>\n {open && <DocDrawer paramsStr={citation?.citationUrl} title={citation?.citationName} open={open} onClose={() => setOpen(false)} />}\n </div>\n )\n}\n","import { buildUrlParams } from '@zero-library/common'\nimport { Image, Spin } from 'antd'\nimport { useMemo } from 'react'\nimport { TOKEN_KEY, tokenManager } from '../../../core/session'\n\nexport default ({ data, loading, message, ...rest }: any) => {\n const getPreviewFileUrl = (src: string) => {\n return buildUrlParams({ [TOKEN_KEY]: tokenManager.get() || '' }, src)\n }\n\n const previewSrc = useMemo(() => {\n if (String(rest.src).startsWith('/luya')) {\n return getPreviewFileUrl(rest.src)\n }\n return rest.src\n }, [rest.src])\n\n return <Image {...rest} src={previewSrc} placeholder={<Spin />} />\n}\n","import { MarkdownEditor, useTranslation } from '@zero-library/common'\nimport { Button, Flex } from 'antd'\nimport { useEffect, useState } from 'react'\nimport { NS_CHAT_COPILOT } from '../../../i18n/constants'\nimport { useChatStore } from '../../../stores/Context'\nimport styles from './styles.module.less'\n\ninterface Props {\n data: {\n content: string\n btnText?: string\n }\n loading: boolean\n}\n// :::alert type=mdEdit data={content:\"\",btnText:\"\"} :::\nexport default ({ data, loading }: Props) => {\n // const num = useRef(0)\n // useEffect(() => {\n // num.current = num.current + 1\n // console.log('mdEdit', num.current, data.content, loading)\n // }, [data.content, loading])\n const chatStore = useChatStore()\n const [value, setValue] = useState('')\n const { t } = useTranslation(NS_CHAT_COPILOT)\n const btnText = data.btnText || t('continueText') // '开始写作',\n const onOk = () => {\n chatStore.sendMessage(btnText, [], { citation: value })\n }\n useEffect(() => {\n setValue(data.content)\n }, [data.content])\n return (\n <div className={styles.mdEdit}>\n <MarkdownEditor disabled={loading} value={value} onChange={setValue} fixedToolbar={false} floatToolbar={false} />\n {!loading && (\n <Flex justify=\"end\" className=\"m-t-16\">\n <Button color=\"primary\" variant=\"outlined\" onClick={onOk}>\n {/* 确认提纲思路,开始写作 */}\n {btnText}\n </Button>\n </Flex>\n )}\n </div>\n )\n}\n","import { getFileSuffixName } from '@zero-library/common'\nimport React from 'react'\nimport { useChatStore } from '../../../stores/Context'\n\nexport default ({ data, loading, message, ...rest }: any) => {\n const chatStore = useChatStore()\n const conversationWorkspacePrefix = '/workspace'\n\n const getLinkFileName = (path: string) => {\n const lastSegment = path.split('/').pop()\n\n if (!lastSegment) {\n return 'link'\n }\n\n try {\n return decodeURIComponent(lastSegment)\n } catch {\n return lastSegment\n }\n }\n\n const normalizePreviewPath = (path: string) => {\n if (!path) {\n return path\n }\n\n if (path.startsWith(conversationWorkspacePrefix)) {\n return path\n }\n\n const fileName = getLinkFileName(path)\n return `${conversationWorkspacePrefix}${fileName}`\n }\n\n const handlePreviewByPath = (path: string) => {\n const normalizedPath = normalizePreviewPath(path)\n const fileName = getLinkFileName(normalizedPath)\n const suffix = getFileSuffixName(fileName)\n\n chatStore.setPreview({\n fileUrl: chatStore.config.services.request.getPreviewUrl({\n path: normalizedPath,\n workspaceId: message.conversationId\n }),\n fileName,\n suffix\n })\n }\n\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n rest.onClick?.(e)\n\n const href = rest.href || e.currentTarget.href\n if (e.defaultPrevented || !href) {\n return\n }\n\n e.preventDefault()\n\n if (String(rest.href).startsWith('/luya') || String(rest.href).startsWith('/agents')) {\n const url = new URL(href, window.location.origin)\n const path = url.searchParams.get('path')\n\n if (!path) {\n window.open(href, '_blank')\n return\n }\n\n handlePreviewByPath(path)\n return\n }\n\n if (String(rest.href).startsWith('/workspace')) {\n handlePreviewByPath(href)\n return\n }\n\n window.open(href, '_blank')\n }\n\n return (\n <a {...rest} onClick={handleClick}>\n {data}\n </a>\n )\n}\n","import { Think } from '@ant-design/x-v2'\nimport { useTranslation } from '@zero-library/common'\nimport { NS_CHAT_COPILOT } from '../../../i18n/constants'\n\nexport default ({ data }) => {\n const { t } = useTranslation(NS_CHAT_COPILOT)\n return (\n <Think title={t('deepThinking')} className=\"m-b-16\">\n {data}\n </Think>\n )\n}\n",".xMarkdownStyle :global {\n /* stylelint-disable-next-line selector-class-pattern */\n}\n.xMarkdownStyle :global .ant-codeHighlighter-code code {\n white-space: pre-wrap !important;\n}\n.xMarkdownStyle :global .ant-codeHighlighter-code code,\n.xMarkdownStyle :global .ant-codeHighlighter-code pre,\n.xMarkdownStyle :global .ant-codeHighlighter-code [class*='language-'] {\n background-color: transparent !important;\n}\n","import XMarkdown, { XMarkdownProps } from '@ant-design/x-markdown'\n\nimport Latex from '@ant-design/x-markdown/plugins/Latex'\nimport { isString, safeParseJson } from '@zero-library/common'\nimport classNames from 'classnames'\nimport { ComponentType, MutableRefObject, memo, useMemo, useRef } from 'react'\nimport { ConversationMessage } from '../../types'\nimport AgentNavigate from '../CustomComponents/XMarkdown/AgentNavigate'\nimport AppCard from '../CustomComponents/XMarkdown/AppCard'\nimport Charts from '../CustomComponents/XMarkdown/Charts'\nimport CodeHighlight from '../CustomComponents/XMarkdown/CodeHighlight'\nimport FileEdit from '../CustomComponents/XMarkdown/FileEdit'\nimport FileView from '../CustomComponents/XMarkdown/FileView'\nimport IndexQuote from '../CustomComponents/XMarkdown/IndexQuote'\nimport MarkImg from '../CustomComponents/XMarkdown/MarkImg'\nimport MdEdit from '../CustomComponents/XMarkdown/MdEdit'\nimport PreviewLink from '../CustomComponents/XMarkdown/PreviewLink'\nimport Think from '../CustomComponents/XMarkdown/Think'\nimport styles from './styles.module.less'\n\nconst MARKDOWN_PAYLOAD_PLACEHOLDER_PREFIX = 'XMD_PAYLOAD_'\nconst singleTildeExtension = {\n name: 'singleTilde',\n level: 'inline' as const,\n start(src: string) {\n return src.match(/(?<!~)~(?!~)/)?.index\n },\n tokenizer(src: string) {\n const match = /^(?<!~)~(?!~)/.exec(src)\n if (match) {\n return {\n type: 'text',\n raw: match[0],\n text: match[0]\n }\n }\n return undefined\n }\n}\n\nconst getMarkdownConfig = () => {\n const latexExtensions = Latex()\n const extensions = Array.isArray(latexExtensions) ? [...latexExtensions, singleTildeExtension] : [latexExtensions, singleTildeExtension]\n\n return {\n extensions: extensions as any,\n breaks: true\n }\n}\n\nfunction makeMarkdownPayloadPlaceholder(index: number) {\n return `${MARKDOWN_PAYLOAD_PLACEHOLDER_PREFIX}${index}`\n}\n\nfunction resolveMappedMarkdownPayload(value: any, payloadMap: Map<string, string>) {\n if (isString(value)) {\n if (new RegExp(`^${MARKDOWN_PAYLOAD_PLACEHOLDER_PREFIX}\\\\d+$`).test(value)) {\n return safeParseJson(payloadMap.get(value), { repair: true })\n }\n }\n return value\n}\n\n/** 把混合文本里的完整 HTML 包装成代码块,避免直接参与 Markdown 布局。 */\nfunction formatMixedContent(content: string): string {\n return content.replace(/<!DOCTYPE html>[\\s\\S]*?<\\/html>/gi, (match) => `\\`\\`\\`html\\n${match}\\n\\`\\`\\``)\n}\n\nfunction preprocessCustomTagPayloads(content = '', payloadTagPattern: string) {\n let id = 0\n const payloadMap = new Map<string, string>()\n const processedContent = content.replace(\n new RegExp(`(?<opening><(?<tag>${payloadTagPattern})\\\\b[^>]*>)(?<inner>[\\\\s\\\\S]*?)(?<closing><\\\\/\\\\k<tag>\\\\s*>|$)`, 'gi'),\n (match, _opening, _tag, _inner, _closing, _offset, _source, groups) => {\n const openingText = groups?.opening ?? ''\n if (!openingText) {\n return match\n }\n\n const innerText = groups?.inner ?? ''\n const closingText = groups?.closing ?? ''\n const placeholder = makeMarkdownPayloadPlaceholder(id++)\n payloadMap.set(placeholder, innerText.trim())\n\n return `${openingText}${placeholder}${closingText}`\n }\n )\n\n return {\n content: processedContent,\n payloadMap\n }\n}\n\nconst adaptMarkdownComponent = (\n Component: ComponentType<any>,\n payloadMapRef: MutableRefObject<Map<string, string>>,\n messageRef: MutableRefObject<ConversationMessage>\n) => {\n const WrappedComponent = ({ children, streamStatus, ...rest }: any) => {\n const rawData = resolveMappedMarkdownPayload(children, payloadMapRef.current)\n // console.log('rawData', children, rawData, streamStatus)\n return <Component message={messageRef.current} {...rest} data={rawData} loading={streamStatus === 'loading'} />\n }\n\n WrappedComponent.displayName = `AdaptedMarkdownComponent(${Component.displayName || Component.name || 'Anonymous'})`\n\n return WrappedComponent\n}\n\nconst adaptMarkdownComponents = (\n components: Record<string, ComponentType<any>>,\n payloadMapRef: MutableRefObject<Map<string, string>>,\n messageRef: MutableRefObject<ConversationMessage>\n) =>\n Object.fromEntries(Object.entries(components ?? {}).map(([key, Component]) => [key, adaptMarkdownComponent(Component, payloadMapRef, messageRef)]))\ninterface Props extends XMarkdownProps {\n message?: ConversationMessage\n}\n\nexport default memo(({ message, components = {}, content = '', ...rest }: Props) => {\n const config = useMemo(() => getMarkdownConfig(), [])\n const formattedContent = useMemo(() => formatMixedContent(content), [content])\n const newComponents = useMemo(\n () => ({\n think: Think,\n code: CodeHighlight,\n agentnavigate: AgentNavigate,\n a: PreviewLink,\n appcard: AppCard,\n fileview: FileView,\n charts: Charts,\n indexquote: IndexQuote,\n mdedit: MdEdit,\n fileedit: FileEdit,\n img: MarkImg,\n ...components\n }),\n [components]\n )\n const payloadTagPattern = useMemo(() => Object.keys(newComponents).join('|'), [newComponents])\n const { content: processedContent, payloadMap } = useMemo(\n () => preprocessCustomTagPayloads(formattedContent, payloadTagPattern),\n [formattedContent, payloadTagPattern]\n )\n // Keep the wrapper component identity stable and only refresh injected data through refs.\n const payloadMapRef = useRef(payloadMap)\n const messageRef = useRef(message)\n payloadMapRef.current = payloadMap\n messageRef.current = message\n // console.log('payloadMap', formattedContent, payloadMap)\n const markdownComponents = useMemo(() => adaptMarkdownComponents(newComponents, payloadMapRef, messageRef), [payloadTagPattern])\n\n return (\n <XMarkdown\n // openLinksInNewTab\n className={classNames('x-markdown-light', styles.xMarkdownStyle)}\n config={config}\n {...rest}\n content={processedContent}\n components={markdownComponents}\n />\n )\n})\n","import '@ant-design/x-markdown/themes/light.css'\nimport { useTranslation } from '@zero-library/common'\nimport { Button as AntButton, Card as AntCard, Space } from 'antd'\nimport React from 'react'\nimport { NS_CHAT_COPILOT } from '../../../../../i18n/constants'\nimport XMarkdown from '../../../../XMarkdown'\nimport { ArtifactCard } from './ArtifactCard'\nimport { exportTextFile, sanitizeFileName } from './export-utils'\n\n/** 报告制品渲染器,负责 Markdown 展示和导出。 */\nexport const ReportViewer: React.FC<{ artifactId: string; title?: string; payload?: any }> = ({ artifactId, title, payload }) => {\n const { t } = useTranslation(NS_CHAT_COPILOT)\n const markdown = typeof payload?.markdown === 'string' ? payload.markdown : null\n /** 没有 markdown 正文时回退到通用制品卡片。 */\n if (!markdown) {\n return <ArtifactCard type=\"report\" artifactId={artifactId} title={title} payload={payload} />\n }\n\n const exportBase = sanitizeFileName(title || artifactId || 'report')\n /** 导出原始 Markdown,方便用户二次编辑。 */\n const exportMd = () => {\n exportTextFile(markdown, `${exportBase}.md`, 'text/markdown;charset=utf-8')\n }\n\n return (\n <AntCard\n size=\"small\"\n style={{ borderRadius: 12 }}\n title={title || t('report')}\n extra={\n <Space size={4}>\n <AntButton size=\"small\" type=\"text\" onClick={exportMd}>\n {t('exportMd')}\n </AntButton>\n </Space>\n }\n >\n <div style={{ lineHeight: 1.75 }}>\n <XMarkdown content={markdown} />\n </div>\n </AntCard>\n )\n}\n","import { useTranslation } from '@zero-library/common'\nimport { Button as AntButton, Card as AntCard, Table as AntTable, Space } from 'antd'\nimport React from 'react'\nimport { NS_CHAT_COPILOT } from '../../../../../i18n/constants'\nimport { ArtifactCard } from './ArtifactCard'\nimport { escapeCsvCell, exportJsonFile, exportTextFile, sanitizeFileName } from './export-utils'\n\n/** 表格制品渲染器,支持预览和导出 CSV/JSON。 */\nexport const TableViewer: React.FC<{ artifactId: string; title?: string; payload?: any }> = ({ artifactId, title, payload }) => {\n const { t } = useTranslation(NS_CHAT_COPILOT)\n const columns = Array.isArray(payload?.columns) ? payload.columns : null\n const rows = Array.isArray(payload?.rows) ? payload.rows : null\n\n /** 当表格数据不完整时,回退到通用制品卡片。 */\n if (!columns || !rows) {\n return <ArtifactCard type=\"table\" artifactId={artifactId} title={title} payload={payload} />\n }\n\n /** 统一规范列定义,避免 title/dataIndex 缺失导致表格不可用。 */\n const safeColumns = columns\n .map((c: any) => ({\n title: String(c?.title ?? c?.dataIndex ?? ''),\n dataIndex: String(c?.dataIndex ?? '')\n }))\n .filter((c: any) => c.dataIndex)\n\n /** 为 Ant Table 构造稳定的 dataSource,并补齐 key。 */\n const dataSource = rows.map((r: any, i: number) => ({\n key: String(r?.id ?? i),\n ...(r && typeof r === 'object' ? r : {})\n }))\n\n const exportBase = sanitizeFileName(title || artifactId || 'table')\n /** 导出为 CSV,便于直接给 Excel 等工具打开。 */\n const exportCsv = () => {\n const header = safeColumns.map((c: any) => escapeCsvCell(c.title)).join(',')\n const body = rows.map((row: any) => safeColumns.map((c: any) => escapeCsvCell(row?.[c.dataIndex])).join(',')).join('\\n')\n exportTextFile(`\\ufeff${header}\\n${body}\\n`, `${exportBase}.csv`, 'text/csv;charset=utf-8')\n }\n /** 导出为 JSON,保留完整结构化数据。 */\n const exportJson = () => {\n exportJsonFile({ columns: safeColumns, rows }, `${exportBase}.json`)\n }\n\n return (\n <AntCard\n size=\"small\"\n style={{ borderRadius: 12 }}\n title={title || t('table')}\n extra={\n <Space size={4}>\n <AntButton size=\"small\" type=\"text\" onClick={exportCsv}>\n {t('exportCsv')}\n </AntButton>\n <AntButton size=\"small\" type=\"text\" onClick={exportJson}>\n {t('exportJson')}\n </AntButton>\n </Space>\n }\n >\n <AntTable size=\"small\" pagination={false} columns={safeColumns} dataSource={dataSource} scroll={{ x: true }} />\n </AntCard>\n )\n}\n","import { useTranslation } from '@zero-library/common'\nimport {\n Button as AntButton,\n Divider as AntDivider,\n Progress as AntProgress,\n Select as AntSelect,\n Switch as AntSwitch,\n Tag as AntTag,\n Input,\n Space,\n Typography\n} from 'antd'\nimport React from 'react'\nimport { NS_CHAT_COPILOT } from '../../../../i18n/constants'\nimport { ArtifactCard } from './artifacts/ArtifactCard'\nimport { ChartViewer } from './artifacts/ChartViewer'\nimport { ReportViewer } from './artifacts/ReportViewer'\nimport { TableViewer } from './artifacts/TableViewer'\n\nconst { Text: AText, Title } = Typography\n\ntype PathRef = { path: string }\ntype SelectValue = string | number | boolean\n\nconst FIELD_LABEL_STYLE: React.CSSProperties = { marginBottom: 6, fontSize: 13, fontWeight: 500, color: '#555' }\nconst INPUT_RADIUS_STYLE: React.CSSProperties = { borderRadius: 8 }\n\nconst formPathValueStore = new Map<string, unknown>()\n\n/** 规范 model path,保证缓存键格式统一。 */\nfunction normalizeModelPath(modelPath: string): string {\n const normalized = typeof modelPath === 'string' ? modelPath.trim() : ''\n if (!normalized.startsWith('/')) return ''\n return normalized.replace(/\\/{2,}/g, '/').replace(/\\/$/, '') || '/'\n}\n\n/** 计算某个 model path 的字段前缀,用于批量匹配子字段。 */\nfunction modelPathPrefix(modelPath: string): string {\n const normalized = normalizeModelPath(modelPath)\n if (!normalized || normalized === '/') return normalized\n return `${normalized}/`\n}\n\n/** 读取指定 model 下缓存的所有一级字段值。 */\nexport function readModelValues(modelPath: string): Record<string, unknown> {\n const normalized = normalizeModelPath(modelPath)\n if (!normalized || normalized === '/') return {}\n const prefix = modelPathPrefix(normalized)\n const values: Record<string, unknown> = {}\n for (const [path, value] of formPathValueStore.entries()) {\n if (typeof path !== 'string') continue\n if (!path.startsWith(prefix)) continue\n const rest = path.slice(prefix.length)\n if (!rest || rest.includes('/')) continue\n values[rest] = value\n }\n return values\n}\n\n/** 批量写入指定 model 的字段值到本地缓存。 */\nexport function writeModelValues(modelPath: string, values: Record<string, unknown>) {\n const normalized = normalizeModelPath(modelPath)\n if (!normalized || normalized === '/' || !values || typeof values !== 'object' || Array.isArray(values)) return\n Object.entries(values).forEach(([key, value]) => {\n if (typeof key !== 'string' || !key.trim() || key.includes('/')) return\n const fieldPath = `${normalized}/${key}`.replace(/\\/{2,}/g, '/')\n formPathValueStore.set(fieldPath, value === undefined ? null : value)\n })\n}\n\n/** 清空指定 model 及其子路径下的缓存值。 */\nexport function clearModelValues(modelPath: string) {\n const normalized = normalizeModelPath(modelPath)\n if (!normalized) return\n if (normalized === '/') {\n formPathValueStore.clear()\n return\n }\n const prefix = modelPathPrefix(normalized)\n for (const path of Array.from(formPathValueStore.keys())) {\n if (path === normalized || path.startsWith(prefix)) {\n formPathValueStore.delete(path)\n }\n }\n}\n\n/** 清空整个 A2UI 运行时维护的表单缓存。 */\nexport function clearAllModelValues() {\n formPathValueStore.clear()\n}\n\n/** 判断值是否是 `{ path }` 形式的绑定引用。 */\nfunction isPathRef(v: unknown): v is PathRef {\n return !!v && typeof v === 'object' && typeof (v as Record<string, unknown>).path === 'string'\n}\n\n/** 判断值是否是以 `/` 开头的路径字符串。 */\nfunction isPathString(v: unknown): v is string {\n return typeof v === 'string' && v.startsWith('/')\n}\n\n/** 统一从值里抽取绑定路径。 */\nfunction pathFromValue(v: unknown): string | null {\n if (isPathRef(v)) return v.path\n if (isPathString(v)) return v\n return null\n}\n\n/** 解析 `$bind:/path` 形式的 token。 */\nfunction decodeBindPathToken(token: unknown): string | null {\n if (typeof token !== 'string') return null\n if (!token.startsWith('$bind:')) return null\n const path = token.slice('$bind:'.length)\n return path.startsWith('/') ? path : null\n}\n\n/** 把某个绑定路径的新值写回缓存。 */\nfunction rememberPathValue(path: string | null, value: unknown) {\n if (!path) return\n formPathValueStore.set(path, value === undefined ? null : value)\n}\n\n/** 从缓存中读取某个绑定路径当前保存的值。 */\nfunction readPathValue(path: string | null): unknown {\n if (!path) return undefined\n return formPathValueStore.get(path)\n}\n\n/** 如果值本身是绑定路径,则优先读取缓存后的真实值。 */\nfunction resolveMaybePath(v: unknown): unknown {\n const path = pathFromValue(v)\n if (!path) return v\n const cached = readPathValue(path)\n return cached === undefined ? v : cached\n}\n\n/** 把 action context 中的绑定引用展开成可直接提交的真实 values。 */\nexport function normalizeActionContext(context: Record<string, unknown>): Record<string, unknown> {\n const next: Record<string, unknown> = { ...context }\n const refs = next.refs && typeof next.refs === 'object' && !Array.isArray(next.refs) ? (next.refs as Record<string, unknown>) : null\n const values = next.values && typeof next.values === 'object' && !Array.isArray(next.values) ? { ...(next.values as Record<string, unknown>) } : {}\n\n const candidateKeys = refs ? Object.keys(refs) : Object.keys(next).filter((k) => k !== 'form_name' && k !== 'refs' && k !== 'values')\n\n for (const key of candidateKeys) {\n const source = refs ? (refs[key] ?? next[key]) : next[key]\n const resolved = resolveMaybePath(source)\n if (!pathFromValue(resolved)) {\n values[key] = resolved\n next[key] = resolved\n }\n }\n\n if (next.form_name || refs || Object.keys(values).length > 0) {\n next.values = values\n }\n return next\n}\n\n/** 安全读取字符串值。 */\nfunction readStringValue(value: unknown): string | undefined {\n return typeof value === 'string' ? value : undefined\n}\n\n/** 安全读取布尔值。 */\nfunction readBooleanValue(value: unknown): boolean | undefined {\n return typeof value === 'boolean' ? value : undefined\n}\n\n/** 安全读取 Select 支持的原始值。 */\nfunction readSelectValue(value: unknown): SelectValue | undefined {\n return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' ? value : undefined\n}\n\n/** 文本类字段在绑定模式下优先保留用户已输入的非空值。 */\nfunction preferCachedStringValue(externalValue: string, cachedValue: string | undefined, valuePath: string | null) {\n return !!valuePath && externalValue === '' && typeof cachedValue === 'string' && cachedValue !== ''\n}\n\ntype BoundFieldStateOptions<T> = {\n value: unknown\n bindPathToken?: string\n defaultValue: T\n readExternalValue: (value: unknown) => T | undefined\n readCachedValue: (value: unknown) => T | undefined\n preferCachedValueWhenBound?: boolean\n preferCachedOverExternal?: (externalValue: T, cachedValue: T | undefined, valuePath: string | null) => boolean\n}\n\n/** 管理字段的外部值、本地值和缓存值三者同步关系。 */\nfunction useBoundFieldState<T>({\n value,\n bindPathToken,\n defaultValue,\n readExternalValue,\n readCachedValue,\n preferCachedValueWhenBound,\n preferCachedOverExternal\n}: BoundFieldStateOptions<T>) {\n const valuePath = decodeBindPathToken(bindPathToken) ?? pathFromValue(value)\n const cachedValue = readCachedValue(readPathValue(valuePath))\n const externalValue = readExternalValue(value)\n const dirtyRef = React.useRef(false)\n\n const [localValue, setLocalValue] = React.useState<T>(() => {\n if (preferCachedValueWhenBound && valuePath && cachedValue !== undefined) {\n return cachedValue\n }\n if (externalValue !== undefined) {\n if (preferCachedOverExternal?.(externalValue, cachedValue, valuePath) && cachedValue !== undefined) {\n return cachedValue\n }\n return externalValue\n }\n if (cachedValue !== undefined) return cachedValue\n return defaultValue\n })\n\n React.useEffect(() => {\n dirtyRef.current = false\n }, [valuePath])\n\n React.useEffect(() => {\n if (preferCachedValueWhenBound && valuePath && cachedValue !== undefined) {\n setLocalValue(cachedValue)\n return\n }\n if (valuePath && cachedValue !== undefined && dirtyRef.current) {\n setLocalValue(cachedValue)\n return\n }\n if (externalValue !== undefined) {\n if (preferCachedOverExternal?.(externalValue, cachedValue, valuePath) && cachedValue !== undefined) {\n setLocalValue(cachedValue)\n return\n }\n if (!dirtyRef.current) {\n setLocalValue(externalValue)\n rememberPathValue(valuePath, externalValue)\n }\n return\n }\n if (cachedValue !== undefined) {\n setLocalValue(cachedValue)\n }\n }, [cachedValue, externalValue, preferCachedOverExternal, valuePath])\n\n React.useEffect(() => {\n rememberPathValue(valuePath, localValue)\n }, [valuePath, localValue])\n\n const updateLocalValue = React.useCallback(\n (nextValue: T) => {\n dirtyRef.current = true\n setLocalValue(nextValue)\n rememberPathValue(valuePath, nextValue)\n },\n [valuePath]\n )\n\n return { localValue, updateLocalValue, valuePath }\n}\n\ntype BoundFieldProps<T> = {\n id?: string\n label: string\n value?: unknown\n bind_path_token?: string\n onChange?: (value: T) => void\n onDataChange?: (path: string, value: unknown) => void\n}\n\n/** 统一渲染大多数表单项的标题和宽度。 */\nconst FieldBlock: React.FC<{ label: string; children: React.ReactNode }> = ({ label, children }) => (\n <div style={{ width: '100%' }}>\n <div style={FIELD_LABEL_STYLE}>{label}</div>\n {children}\n </div>\n)\n\n/** 把字段变更同时同步到本地缓存、绑定路径和外部监听。 */\nfunction emitFieldChange<T>(\n nextValue: T,\n valuePath: string | null,\n updateLocalValue: (value: T) => void,\n onDataChange?: (path: string, value: unknown) => void,\n onChange?: (value: T) => void\n) {\n updateLocalValue(nextValue)\n if (valuePath) onDataChange?.(valuePath, nextValue)\n onChange?.(nextValue)\n}\n\n/** 统一给输入类控件分配稳定 id。 */\nfunction useControlId(id?: string) {\n const autoId = React.useId()\n return id ?? autoId\n}\n\n/** 从按钮 action 中抽取标准事件。 */\nfunction readActionEvent(action: any) {\n const name = typeof action?.event?.name === 'string' ? action.event.name : ''\n const context = action?.event?.context ?? {}\n return { name, context }\n}\n\n/* ─── 布局 ─── */\n/** 纵向布局容器,适合表单和卡片内容区。 */\nexport const Column: React.FC<{ children?: React.ReactNode }> = ({ children }) => (\n <Space orientation=\"vertical\" style={{ width: '100%' }} size={14}>\n {children}\n </Space>\n)\n\n/** 横向布局容器,支持 gap 和自动换行。 */\nexport const Row: React.FC<{ children?: React.ReactNode; gap?: number }> = ({ children, gap = 8 }) => (\n <Space orientation=\"horizontal\" size={gap} wrap>\n {children}\n </Space>\n)\n\n/* ─── 文字 ─── */\n/** 文本渲染组件,统一处理标题、说明和普通文本。 */\nexport const Text: React.FC<{ text: string; variant?: string }> = ({ text, variant }) => {\n if (variant === 'h2')\n return (\n <Title level={4} style={{ margin: 0 }}>\n {text}\n </Title>\n )\n if (variant === 'h3')\n return (\n <Title level={5} style={{ margin: 0 }}>\n {text}\n </Title>\n )\n if (variant === 'caption')\n return (\n <AText type=\"secondary\" style={{ fontSize: 12, lineHeight: 1.6 }}>\n {text}\n </AText>\n )\n return <AText style={{ lineHeight: 1.7 }}>{text}</AText>\n}\n\n/* ─── 输入 ─── */\n/** 文本输入框,支持 bind token、本地缓存和回写。 */\nexport const TextField: React.FC<\n BoundFieldProps<string> & {\n placeholder?: string\n }\n> = ({ id, label, placeholder, value, bind_path_token, onChange, onDataChange }) => {\n const inputId = useControlId(id)\n const { localValue, updateLocalValue, valuePath } = useBoundFieldState<string>({\n value,\n bindPathToken: bind_path_token,\n defaultValue: '',\n readExternalValue: readStringValue,\n readCachedValue: readStringValue,\n preferCachedValueWhenBound: true,\n preferCachedOverExternal: preferCachedStringValue\n })\n\n return (\n <FieldBlock label={label}>\n <Input\n id={inputId}\n name={inputId}\n placeholder={placeholder}\n value={localValue}\n onChange={(e) => emitFieldChange(e.target.value, valuePath, updateLocalValue, onDataChange, onChange)}\n style={INPUT_RADIUS_STYLE}\n />\n </FieldBlock>\n )\n}\n\n/* ─── 下拉 ─── */\n/** 下拉选择框,统一处理候选项、缓存同步和路径回写。 */\nexport const Select: React.FC<\n BoundFieldProps<SelectValue> & {\n placeholder?: string\n options: { label: string; value: SelectValue }[]\n }\n> = ({ id, label, placeholder, options, value, bind_path_token, onChange, onDataChange }) => {\n const { t } = useTranslation(NS_CHAT_COPILOT)\n const inputId = useControlId(id)\n const { localValue, updateLocalValue, valuePath } = useBoundFieldState<SelectValue | undefined>({\n value,\n bindPathToken: bind_path_token,\n defaultValue: undefined,\n readExternalValue: readSelectValue,\n readCachedValue: readSelectValue,\n preferCachedValueWhenBound: true,\n preferCachedOverExternal: (externalValue, cachedValue, valuePath) =>\n typeof externalValue === 'string' ? preferCachedStringValue(externalValue, readStringValue(cachedValue), valuePath) : false\n })\n\n return (\n <FieldBlock label={label}>\n <AntSelect\n id={inputId}\n style={{ width: '100%' }}\n options={options}\n value={localValue}\n onChange={(nextValue) => emitFieldChange(nextValue, valuePath, updateLocalValue, onDataChange, onChange)}\n placeholder={placeholder || t(`selectPlaceholder`)}\n />\n </FieldBlock>\n )\n}\n\n/* ─── 开关 ─── */\n/** 布尔开关组件,用于简单 on/off 表达。 */\nexport const Switch: React.FC<BoundFieldProps<boolean>> = ({ id, label, value, bind_path_token, onChange, onDataChange }) => {\n const inputId = useControlId(id)\n const { localValue, updateLocalValue, valuePath } = useBoundFieldState<boolean>({\n value,\n bindPathToken: bind_path_token,\n defaultValue: false,\n readExternalValue: readBooleanValue,\n readCachedValue: readBooleanValue,\n preferCachedValueWhenBound: true\n })\n\n return (\n <Space align=\"center\">\n <AntSwitch\n id={inputId}\n checked={localValue}\n onChange={(nextValue) => emitFieldChange(nextValue, valuePath, updateLocalValue, onDataChange, onChange)}\n />\n <span style={{ fontSize: 13, color: '#555' }}>{label}</span>\n </Space>\n )\n}\n\n/* ─── 按钮 ─── */\n/** 动作按钮,优先走 onClick,未提供时回退到 action.event 派发。 */\nexport const Button: React.FC<{\n label: string\n variant?: 'primary' | 'default' | 'danger'\n onClick?: () => void\n action?: any\n onAction?: (name: string, context: Record<string, any>) => void\n}> = ({ label, variant = 'default', onClick, action, onAction }) => {\n const handleClick = () => {\n if (onClick) {\n onClick()\n return\n }\n const { name, context } = readActionEvent(action)\n if (name && onAction) {\n onAction(name, context)\n }\n }\n\n return (\n <AntButton type={variant === 'primary' ? 'primary' : 'default'} danger={variant === 'danger'} onClick={handleClick} style={{ borderRadius: 8 }}>\n {label}\n </AntButton>\n )\n}\n\n/* ─── 装饰 ─── */\n/** 分割线组件,用于分隔视觉区块。 */\nexport const Divider: React.FC = () => <AntDivider style={{ margin: '8px 0' }} />\n\n/** 标签组件,用于展示状态或类型。 */\nexport const Tag: React.FC<{ text: string; color?: string }> = ({ text, color }) => <AntTag color={color}>{text}</AntTag>\n\n/** 进度组件,支持百分比、状态和附加说明。 */\nexport const Progress: React.FC<{ percent: number; status?: 'normal' | 'active' | 'success' | 'exception'; text?: string }> = ({\n percent,\n status = 'normal',\n text\n}) => (\n <div style={{ width: '100%' }}>\n <AntProgress percent={Math.max(0, Math.min(100, Math.round(percent)))} status={status} />\n {text ? (\n <AText type=\"secondary\" style={{ fontSize: 12 }}>\n {text}\n </AText>\n ) : null}\n </div>\n)\n\n/* ─── 统一导出,传给 XCard.Box ─── */\nexport const A2uiComponents = {\n Column,\n Row,\n Text,\n TextField,\n Select,\n Switch,\n Button,\n Divider,\n Tag,\n Progress,\n ArtifactCard,\n TableViewer,\n ChartViewer,\n ReportViewer\n} as Record<string, React.ComponentType<any>>\n","/**\n * A2UI 标签解析器\n *\n * A2UI 命令以 <A2UI id=\"xxx\">[JSON]</A2UI> 自定义标签形式出现在\n * toolResult 项的 result.stdout 中。工具执行完成后一次性拿到完整值,\n * 无需流式容错处理。\n *\n * 异常处理:标签内容无法解析(JSON 无效、结构不完整等)时静默跳过,\n * 不抛出异常,不影响页面渲染。\n */\n\n/** 匹配 <A2UI id=\"xxx\">[JSON]</A2UI> 自定义标签。 */\nconst A2UI_TAG_REGEX = /<A2UI\\s+id=\"([^\"]*)\"\\s*>([\\s\\S]*?)<\\/A2UI>/g\n\nexport type ParsedA2uiTag = {\n tagId: string\n commands: any[]\n}\n\n/**\n * 从文本中解析所有完整的 <A2UI> 标签,提取其中的 JSON 命令数组。\n *\n * 异常安全:JSON 解析失败或标签内容为空时静默跳过,不抛出异常。\n */\nexport function parseA2uiTagsFromText(text: string): ParsedA2uiTag[] {\n if (typeof text !== 'string' || !text.includes('<A2UI')) return []\n const tags: ParsedA2uiTag[] = []\n const regex = new RegExp(A2UI_TAG_REGEX)\n let match: RegExpExecArray | null\n while ((match = regex.exec(text)) !== null) {\n const tagId = match[1]\n const json = match[2].trim()\n if (!json) continue\n try {\n const parsed = JSON.parse(json)\n const commands = Array.isArray(parsed) ? parsed : [parsed]\n if (commands.length) tags.push({ tagId, commands })\n } catch {\n // JSON 解析失败,静默跳过\n }\n }\n return tags\n}\n\n/**\n * 从文本中剥离所有 <A2UI> 标签,返回纯净的展示文本。\n * 用于在工具结果展示时移除 A2UI 标签,避免原始标签暴露在界面上。\n */\nexport function stripA2uiTags(text: string): string {\n if (typeof text !== 'string' || !text.includes('<A2UI')) return text\n return text.replace(A2UI_TAG_REGEX, '').trim()\n}\n\n/**\n * 从 toolCall 项的 result.stdout 中提取文本。\n * store 的 toolResultCallback 会把 toolResult 合并到 toolCall item 中,\n * 所以只需扫描 toolCall 类型即可拿到完整的 result.stdout。\n */\nexport function extractItemTextForA2ui(item: any): string {\n if (!item || item.type !== 'toolCall') return ''\n const result = item.result\n if (typeof result === 'string') return result\n if (result && typeof result === 'object' && typeof result.stdout === 'string') {\n return result.stdout\n }\n return ''\n}\n\n/**\n * 从消息列表中提取所有 A2UI 命令。\n * 只扫描 toolCall 项的 result.stdout。\n */\nexport function extractA2uiCommandsFromConversation(conversationMessages: readonly any[]) {\n const commands: any[] = []\n let lastA2uiHostMessageId = ''\n let lastA2uiHostMessageIndex = -1\n const messages = conversationMessages as any[]\n for (let idx = 0; idx < messages.length; idx++) {\n const msg = messages[idx]\n const items = Array.isArray(msg?.content) ? msg.content : []\n let hasA2ui = false\n for (const item of items) {\n // 兼容旧 a2uiCommand 事件\n if (item?.type === 'a2uiCommand' && item.command) {\n commands.push(item.command)\n hasA2ui = true\n continue\n }\n const text = extractItemTextForA2ui(item)\n if (typeof text !== 'string' || !text.includes('<A2UI')) continue\n const tags = parseA2uiTagsFromText(text)\n if (tags.length) {\n for (const tag of tags) {\n commands.push(...tag.commands)\n }\n hasA2ui = true\n }\n }\n if (hasA2ui) {\n lastA2uiHostMessageId = String(msg?.messageId || '')\n lastA2uiHostMessageIndex = idx\n }\n }\n return { commands, lastA2uiHostMessageId, lastA2uiHostMessageIndex }\n}\n\n/**\n * 计算 surfaceId -> 首次出现的消息索引映射。\n * 只扫描 toolCall 项的 result.stdout。\n */\nexport function extractSurfaceAnchorIndexById(conversationMessages: readonly any[]) {\n const anchorIndexById = new Map<string, number>()\n const messages = conversationMessages as any[]\n for (let idx = 0; idx < messages.length; idx++) {\n const msg = messages[idx]\n const items = Array.isArray(msg?.content) ? msg.content : []\n for (const item of items) {\n // 兼容旧 a2uiCommand 事件\n if (item?.type === 'a2uiCommand' && item.command) {\n const cmd = item.command\n const surfaceId =\n cmd?.createSurface?.surfaceId ?? cmd?.updateComponents?.surfaceId ?? cmd?.updateDataModel?.surfaceId ?? cmd?.deleteSurface?.surfaceId ?? ''\n if (!surfaceId) continue\n if (!anchorIndexById.has(surfaceId) && cmd?.createSurface?.surfaceId) {\n anchorIndexById.set(surfaceId, idx)\n }\n if (!anchorIndexById.has(surfaceId) && !cmd?.deleteSurface) {\n anchorIndexById.set(surfaceId, idx)\n }\n continue\n }\n const text = extractItemTextForA2ui(item)\n if (typeof text !== 'string' || !text.includes('<A2UI')) continue\n const tags = parseA2uiTagsFromText(text)\n const commands: any[] = []\n for (const tag of tags) commands.push(...tag.commands)\n if (!commands.length) continue\n\n for (const cmd of commands) {\n const surfaceId =\n cmd?.createSurface?.surfaceId ?? cmd?.updateComponents?.surfaceId ?? cmd?.updateDataModel?.surfaceId ?? cmd?.deleteSurface?.surfaceId ?? ''\n if (!surfaceId) continue\n\n if (!anchorIndexById.has(surfaceId) && cmd?.createSurface?.surfaceId) {\n anchorIndexById.set(surfaceId, idx)\n }\n if (!anchorIndexById.has(surfaceId) && !cmd?.deleteSurface) {\n anchorIndexById.set(surfaceId, idx)\n }\n }\n }\n }\n return anchorIndexById\n}\n\n/**\n * 扫描消息流,基于时序比较提取已 dismiss 的 surfaceId 列表。\n *\n * 核心逻辑:对每个 surfaceId,比较最后一次 createSurface 的消息索引\n * 与最后一次 a2ui_action.v1 的消息索引:\n * - action 在 create 之后 → dismiss(用户已交互,Surface 应隐藏)\n * - create 在 action 之后 → 不 dismiss(后端重新创建了 Surface,应恢复显示)\n * - 只有 action 没有 create → dismiss\n * - 只有 create 没有 action → 不 dismiss\n */\nexport function extractDismissedSurfaceIdsFromMessages(messages: readonly any[]): string[] {\n const lastCreateIndexBySurface = new Map<string, number>()\n const lastActionIndexBySurface = new Map<string, number>()\n\n for (let messageIndex = 0; messageIndex < messages.length; messageIndex++) {\n const message = messages[messageIndex]\n const items = Array.isArray(message?.content) ? message.content : []\n\n for (const item of items) {\n // 扫描 agent 消息中 toolCall 的 createSurface 命令和旧 a2uiCommand 事件\n if (message?.role !== 1) {\n if (item?.type === 'a2uiCommand' && item.command) {\n const surfaceId = String(item.command?.createSurface?.surfaceId || '').trim()\n if (surfaceId) lastCreateIndexBySurface.set(surfaceId, messageIndex)\n }\n const text = extractItemTextForA2ui(item)\n if (typeof text === 'string' && text.includes('<A2UI')) {\n const tags = parseA2uiTagsFromText(text)\n for (const tag of tags) {\n for (const cmd of tag.commands) {\n const surfaceId = String(cmd?.createSurface?.surfaceId || '').trim()\n if (surfaceId) lastCreateIndexBySurface.set(surfaceId, messageIndex)\n }\n }\n }\n }\n\n // 扫描用户消息中的 a2ui_action.v1\n if (message?.role === 1 && item?.type === 'text') {\n const text = item.messageContent || item.text || ''\n if (typeof text !== 'string' || !text.includes('a2ui_action.v1')) continue\n try {\n const parsed = JSON.parse(text.trim())\n if (parsed?.type !== 'a2ui_action.v1') continue\n const surfaceId = String(parsed.surfaceId || '').trim()\n if (!surfaceId) continue\n lastActionIndexBySurface.set(surfaceId, messageIndex)\n } catch {\n // JSON 解析失败,跳过\n }\n }\n }\n }\n\n // 只有 action 在 create 之后(或没有 create)时才 dismiss\n const dismissed: string[] = []\n for (const [surfaceId, actionIndex] of lastActionIndexBySurface) {\n const createIndex = lastCreateIndexBySurface.get(surfaceId)\n if (createIndex === undefined || actionIndex > createIndex) {\n dismissed.push(surfaceId)\n }\n }\n return dismissed\n}\n","import { t } from '@zero-library/common'\nimport { NS_CHAT_COPILOT } from '../../../../i18n/constants'\n\nfunction readProp(current: Record<string, any>, props: Record<string, unknown> | null, key: string): unknown {\n return current[key] ?? props?.[key]\n}\n\nfunction readStringProp(current: Record<string, any>, props: Record<string, unknown> | null, key: string): string {\n const value = readProp(current, props, key)\n return typeof value === 'string' ? value.trim() : ''\n}\n\nfunction extractOptionLabels(value: unknown): Record<string, string> | null {\n if (!Array.isArray(value)) return null\n const optionLabels: Record<string, string> = {}\n value.forEach((item) => {\n if (!item || typeof item !== 'object') return\n const option = item as Record<string, unknown>\n if (typeof option.value !== 'string' && typeof option.value !== 'number' && typeof option.value !== 'boolean') return\n if (typeof option.label !== 'string' || !option.label.trim()) return\n optionLabels[String(option.value)] = option.label.trim()\n })\n return Object.keys(optionLabels).length ? optionLabels : null\n}\n\nfunction extractPathFromRef(value: unknown): string | null {\n if (typeof value === 'string') {\n if (value.startsWith('$bind:/')) return value.slice('$bind:'.length)\n if (value.startsWith('/')) return value\n return null\n }\n if (value && typeof value === 'object' && typeof (value as Record<string, unknown>).path === 'string') {\n return (value as Record<string, string>).path\n }\n return null\n}\n\nfunction collectComponentsMeta(\n node: unknown,\n metaByPath: Record<string, { label?: string; optionLabels?: Record<string, string>; component?: string }>\n) {\n if (Array.isArray(node)) {\n node.forEach((item) => collectComponentsMeta(item, metaByPath))\n return\n }\n if (!node || typeof node !== 'object') return\n const current = node as Record<string, any>\n const props = current.props && typeof current.props === 'object' ? (current.props as Record<string, unknown>) : null\n const label = readStringProp(current, props, 'label')\n const path = extractPathFromRef(readProp(current, props, 'bind_path_token')) || extractPathFromRef(readProp(current, props, 'value'))\n if (path) {\n const nextMeta = metaByPath[path] || {}\n if (label) {\n nextMeta.label = label\n }\n const optionLabels = extractOptionLabels(readProp(current, props, 'options'))\n if (optionLabels) {\n nextMeta.optionLabels = optionLabels\n }\n if (typeof current.component === 'string') {\n nextMeta.component = current.component\n }\n metaByPath[path] = nextMeta\n }\n const children = Array.isArray(current.children) ? current.children : []\n children.forEach((child) => collectComponentsMeta(child, metaByPath))\n}\n\nfunction collectSurfaceMetaByPath(\n commands: any[],\n surfaceId: string\n): Record<string, { label?: string; optionLabels?: Record<string, string>; component?: string }> {\n const metaByPath: Record<string, { label?: string; optionLabels?: Record<string, string>; component?: string }> = {}\n commands.forEach((cmd) => {\n const update = cmd?.updateComponents\n if (!update || update.surfaceId !== surfaceId) return\n collectComponentsMeta(update.components, metaByPath)\n })\n return metaByPath\n}\n\nfunction resolveDisplayValue(value: unknown, meta: { label?: string; optionLabels?: Record<string, string>; component?: string }): string {\n if (value === null || value === undefined || value === '') return ''\n if (meta.optionLabels && Object.prototype.hasOwnProperty.call(meta.optionLabels, String(value))) {\n return meta.optionLabels[String(value)]\n }\n if (typeof value === 'boolean') {\n return t(`${NS_CHAT_COPILOT}:${value ? 'boolYes' : 'boolNo'}`)\n }\n if (Array.isArray(value)) {\n return value.map((item) => String(item)).join('、')\n }\n if (typeof value === 'object') {\n return JSON.stringify(value)\n }\n return String(value)\n}\n\nexport function collectActionDisplayMeta(\n commands: any[],\n surfaceId: string,\n context: Record<string, unknown>\n): { labels: Record<string, string>; valueLabels: Record<string, string> } | null {\n const refs = context.refs && typeof context.refs === 'object' && !Array.isArray(context.refs) ? (context.refs as Record<string, unknown>) : null\n if (!surfaceId || !refs) return null\n\n const values =\n context.values && typeof context.values === 'object' && !Array.isArray(context.values) ? (context.values as Record<string, unknown>) : context\n const metaByPath = collectSurfaceMetaByPath(commands, surfaceId)\n if (!Object.keys(metaByPath).length) return null\n\n const labels: Record<string, string> = {}\n const valueLabels: Record<string, string> = {}\n Object.entries(refs).forEach(([key, ref]) => {\n const path = extractPathFromRef(ref)\n const meta = path ? metaByPath[path] : null\n if (!meta) return\n if (meta.label) {\n labels[key] = meta.label\n }\n const displayValue = resolveDisplayValue(values[key], meta)\n if (displayValue) {\n valueLabels[key] = displayValue\n }\n })\n return Object.keys(labels).length || Object.keys(valueLabels).length ? { labels, valueLabels } : null\n}\n","import { normalizeActionContext, readModelValues } from '../components/A2uiComponents'\nimport { collectActionDisplayMeta } from './meta'\n\nfunction extractPathFromRef(value: unknown): string | null {\n if (typeof value === 'string') {\n if (value.startsWith('$bind:/')) return value.slice('$bind:'.length)\n if (value.startsWith('/')) return value\n return null\n }\n if (value && typeof value === 'object' && typeof (value as Record<string, unknown>).path === 'string') {\n const path = String((value as Record<string, unknown>).path || '')\n return path.startsWith('/') ? path : null\n }\n return null\n}\n\nfunction commonParentPath(paths: string[]): string {\n const parents = paths\n .map((p) => {\n const idx = p.lastIndexOf('/')\n return idx > 0 ? p.slice(0, idx) : ''\n })\n .filter((p) => p.startsWith('/'))\n if (!parents.length) return ''\n const split = parents.map((p) => p.split('/').filter(Boolean))\n let prefix = split[0]\n for (let i = 1; i < split.length; i++) {\n const cur = split[i]\n let j = 0\n while (j < prefix.length && j < cur.length && prefix[j] === cur[j]) j++\n prefix = prefix.slice(0, j)\n if (!prefix.length) break\n }\n return prefix.length ? `/${prefix.join('/')}` : ''\n}\n\nfunction inferModelPathFromContext(context: Record<string, any>): string {\n const refs = context?.refs && typeof context.refs === 'object' && !Array.isArray(context.refs) ? (context.refs as Record<string, unknown>) : null\n if (!refs) return ''\n const paths = Object.values(refs)\n .map((v) => extractPathFromRef(v))\n .filter((p): p is string => typeof p === 'string' && p.startsWith('/'))\n return commonParentPath(paths)\n}\n\nfunction collectBindingPathsFromNode(node: unknown, paths: string[]) {\n if (Array.isArray(node)) {\n node.forEach((item) => collectBindingPathsFromNode(item, paths))\n return\n }\n if (!node || typeof node !== 'object') return\n const current = node as Record<string, unknown>\n const props =\n current.props && typeof current.props === 'object' && !Array.isArray(current.props) ? (current.props as Record<string, unknown>) : null\n const bindPath =\n extractPathFromRef(current.bind_path_token) ||\n extractPathFromRef(current.value) ||\n extractPathFromRef(props?.bind_path_token) ||\n extractPathFromRef(props?.value)\n if (bindPath) {\n paths.push(bindPath)\n }\n const children = Array.isArray(current.children) ? current.children : []\n children.forEach((child) => collectBindingPathsFromNode(child, paths))\n}\n\nfunction inferModelPathFromSurfaceCommands(surfaceId: string, commands: any[]): string {\n if (!surfaceId) return ''\n const paths: string[] = []\n commands.forEach((cmd) => {\n const update = cmd?.updateComponents\n if (!update || update.surfaceId !== surfaceId) return\n collectBindingPathsFromNode(update.components, paths)\n })\n return commonParentPath(paths)\n}\n\nexport function isSubmitLikeActionName(name: string): boolean {\n const trimmed = typeof name === 'string' ? name.trim() : ''\n return trimmed === 'submit' || trimmed === 'confirm' || trimmed.startsWith('submit_') || trimmed.endsWith('.confirm')\n}\n\nexport function isCancelLikeActionName(name: string): boolean {\n const trimmed = typeof name === 'string' ? name.trim() : ''\n return trimmed === 'cancel' || trimmed === 'qf.cancel' || trimmed.endsWith('.cancel')\n}\n\nexport function shouldOptimisticallyDismissSurface(actionName: string, context: Record<string, unknown>): boolean {\n // wizard 导航动作在调用方已被拦截,不会走到这里。\n // 默认行为:任何非 wizard 动作都视为 dismiss 信号(\"默认删掉就可以\")。\n // 如果未来需要排除某些动作(如 refresh / load_more),可在此添加白名单。\n return true\n}\n\nexport function buildDispatchContext(surfaceId: string, rawContext: Record<string, unknown>, commands: any[]): Record<string, any> {\n let normalizedContext = normalizeActionContext(rawContext) as Record<string, any>\n let modelPath =\n normalizedContext?.model && typeof normalizedContext.model === 'object' && typeof normalizedContext.model.path === 'string'\n ? String(normalizedContext.model.path).trim()\n : ''\n if (!modelPath) {\n const inferredModelPath = inferModelPathFromContext(normalizedContext)\n if (inferredModelPath) {\n modelPath = inferredModelPath\n normalizedContext = {\n ...normalizedContext,\n model: {\n ...(normalizedContext.model && typeof normalizedContext.model === 'object' ? normalizedContext.model : {}),\n path: inferredModelPath\n }\n }\n }\n }\n if (!modelPath) {\n const inferredModelPath = inferModelPathFromSurfaceCommands(surfaceId, commands)\n if (inferredModelPath) {\n modelPath = inferredModelPath\n normalizedContext = {\n ...normalizedContext,\n model: {\n ...(normalizedContext.model && typeof normalizedContext.model === 'object' ? normalizedContext.model : {}),\n path: inferredModelPath\n }\n }\n }\n }\n if (modelPath) {\n const valuesFromStore = readModelValues(modelPath)\n const existingValues =\n normalizedContext.values && typeof normalizedContext.values === 'object' && !Array.isArray(normalizedContext.values)\n ? (normalizedContext.values as Record<string, unknown>)\n : {}\n const mergedValues = { ...valuesFromStore, ...existingValues }\n if (Object.keys(mergedValues).length > 0) {\n const existingRefs =\n normalizedContext.refs && typeof normalizedContext.refs === 'object' && !Array.isArray(normalizedContext.refs)\n ? (normalizedContext.refs as Record<string, unknown>)\n : {}\n const refs: Record<string, unknown> = { ...existingRefs }\n for (const key of Object.keys(mergedValues)) {\n if (refs[key] === undefined) {\n refs[key] = `$bind:${modelPath}/${key}`.replace(/\\/{2,}/g, '/')\n }\n }\n normalizedContext = {\n ...normalizedContext,\n refs,\n values: mergedValues\n }\n }\n }\n\n const displayMeta = collectActionDisplayMeta(commands, surfaceId, normalizedContext)\n if (!displayMeta) return normalizedContext\n return {\n ...normalizedContext,\n labels: {\n ...(normalizedContext.labels && typeof normalizedContext.labels === 'object' ? normalizedContext.labels : {}),\n ...displayMeta.labels\n },\n valueLabels: {\n ...(normalizedContext.valueLabels && typeof normalizedContext.valueLabels === 'object' ? normalizedContext.valueLabels : {}),\n ...displayMeta.valueLabels\n }\n }\n}\n","export function extractSurfaceId(cmd: any): string {\n if (!cmd || typeof cmd !== 'object') return ''\n return cmd.createSurface?.surfaceId ?? cmd.updateComponents?.surfaceId ?? cmd.updateDataModel?.surfaceId ?? cmd.deleteSurface?.surfaceId ?? ''\n}\n\nexport function resolveVisibleSurfaceIds(commands: any[], dismissedSurfaceIds: readonly string[] = []): string[] {\n const states = new Map<string, { deleted: boolean }>()\n commands.forEach((cmd) => {\n const sid = extractSurfaceId(cmd)\n if (!sid) return\n const prev = states.get(sid) || { deleted: false }\n if ((cmd as Record<string, unknown>)?.deleteSurface) {\n prev.deleted = true\n } else if ((cmd as Record<string, unknown>)?.createSurface) {\n prev.deleted = false\n }\n states.set(sid, prev)\n })\n return Array.from(states.entries())\n .filter(([sid, st]) => !st.deleted && !dismissedSurfaceIds.includes(sid))\n .map(([sid]) => sid)\n}\n","import { t } from '@zero-library/common'\nimport { NS_CHAT_COPILOT } from '../../../../i18n/constants'\n\ntype WizardField = {\n key: string\n label?: string | null\n placeholder?: string | null\n required?: boolean | null\n type?: string | null\n options?: { label: string; value: string }[]\n default?: unknown\n}\n\ntype WizardStep = {\n stepId: string\n title?: string | null\n description?: string | null\n fields?: WizardField[]\n}\n\nexport type WizardSchema = {\n version?: string\n surfaceId: string\n title?: string | null\n description?: string | null\n modelPath: string\n steps: WizardStep[]\n nextEvent: string\n backEvent: string\n submitEvent: string\n labels?: { next?: string | null; back?: string | null; submit?: string | null } | null\n}\n\nexport type WizardModelSeed = {\n modelPath: string\n values: Record<string, unknown>\n}\n\nfunction readString(obj: Record<string, any>, ...keys: string[]): string {\n for (const k of keys) {\n const v = obj?.[k]\n if (typeof v === 'string' && v.trim()) return v.trim()\n }\n return ''\n}\n\nfunction readOptionalString(obj: Record<string, any>, ...keys: string[]): string | null {\n for (const k of keys) {\n const v = obj?.[k]\n if (typeof v === 'string') return v\n }\n return null\n}\n\nexport function normalizeWizardSchema(schema: unknown): WizardSchema | null {\n if (!schema || typeof schema !== 'object') return null\n const raw = schema as Record<string, any>\n const surfaceId = readString(raw, 'surfaceId', 'surface_id')\n const modelPath = readString(raw, 'modelPath', 'model_path')\n const submitEvent = readString(raw, 'submitEvent', 'submit_event')\n const stepsRaw = Array.isArray(raw.steps) ? raw.steps : []\n if (!surfaceId || !modelPath || !submitEvent || !stepsRaw.length) return null\n\n const steps: WizardStep[] = stepsRaw\n .map((s: any) => {\n if (!s || typeof s !== 'object') return null\n const stepObj = s as Record<string, any>\n const stepId = readString(stepObj, 'stepId', 'step_id')\n if (!stepId) return null\n const fieldsRaw = Array.isArray(stepObj.fields) ? stepObj.fields : []\n const fields: WizardField[] = fieldsRaw\n .map((f: any) => {\n if (!f || typeof f !== 'object') return null\n const fo = f as Record<string, any>\n const key = readString(fo, 'key')\n if (!key) return null\n const type = readOptionalString(fo, 'type')\n const label = readOptionalString(fo, 'label')\n const placeholder = readOptionalString(fo, 'placeholder')\n const required = typeof fo.required === 'boolean' ? fo.required : fo.required === null || fo.required === undefined ? null : !!fo.required\n const options = Array.isArray(fo.options) ? fo.options : undefined\n return {\n key,\n type,\n label,\n placeholder,\n required,\n options,\n default: fo.default\n }\n })\n .filter(Boolean) as WizardField[]\n return {\n stepId,\n title: readOptionalString(stepObj, 'title'),\n description: readOptionalString(stepObj, 'description'),\n fields\n }\n })\n .filter(Boolean) as WizardStep[]\n\n if (!steps.length) return null\n const nextEvent = readString(raw, 'nextEvent', 'next_event') || 'wizard.next'\n const backEvent = readString(raw, 'backEvent', 'back_event') || 'wizard.back'\n const labels =\n raw.labels && typeof raw.labels === 'object' && !Array.isArray(raw.labels)\n ? (raw.labels as { next?: string | null; back?: string | null; submit?: string | null })\n : null\n return {\n version: readOptionalString(raw, 'version') ?? undefined,\n surfaceId,\n modelPath,\n steps,\n submitEvent,\n nextEvent,\n backEvent,\n labels,\n title: readOptionalString(raw, 'title'),\n description: readOptionalString(raw, 'description')\n }\n}\n\nexport function findWizardSchemaBySurface(conversationMessages: readonly any[], surfaceId: string): WizardSchema | null {\n if (!surfaceId) return null\n for (let i = conversationMessages.length - 1; i >= 0; i--) {\n const msg = conversationMessages[i]\n const items = Array.isArray(msg?.content) ? msg.content : []\n for (let j = items.length - 1; j >= 0; j--) {\n const item = items[j]\n if (item?.type !== 'a2uiSchema') continue\n const schema = normalizeWizardSchema(item?.schema)\n if (schema && schema.surfaceId === surfaceId) return schema\n }\n }\n return null\n}\n\nexport function buildWizardModelSeed(schema: WizardSchema | null): WizardModelSeed | null {\n if (!schema?.modelPath) return null\n const values: Record<string, unknown> = {}\n schema.steps.forEach((step) => {\n const fields = Array.isArray(step?.fields) ? step.fields : []\n fields.forEach((field) => {\n const key = typeof field?.key === 'string' ? field.key.trim() : ''\n if (!key || key in values || field?.default === undefined) return\n values[key] = field.default\n })\n })\n return { modelPath: schema.modelPath, values }\n}\n\nexport function pickWizardCurrentStepIdFromCommands(surfaceId: string, commands: any[]): string {\n for (let i = commands.length - 1; i >= 0; i--) {\n const cmd = commands[i]\n const update = cmd?.updateComponents\n if (!update || update.surfaceId !== surfaceId) continue\n const components = Array.isArray(update.components) ? update.components : []\n for (const c of components) {\n if (c?.component !== 'Button') continue\n const stepId = c?.action?.event?.context?.step_id\n if (typeof stepId === 'string' && stepId.trim()) return stepId.trim()\n }\n }\n return ''\n}\n\nfunction buildWizardComponents(schema: WizardSchema, stepId: string) {\n const stepIndex = Math.max(\n 0,\n schema.steps.findIndex((s) => s?.stepId === stepId)\n )\n const step = schema.steps[stepIndex] || schema.steps[0]\n const resolvedStepId = typeof step?.stepId === 'string' && step.stepId ? step.stepId : schema.steps[0]?.stepId\n const fields = Array.isArray(step?.fields) ? step.fields : []\n const modelPath = schema.modelPath\n\n const rootChildren: string[] = ['title', 'desc', 'step-indicator', 'step-title']\n const nodes: any[] = [\n { component: 'Column', id: 'root', children: rootChildren },\n { component: 'Text', id: 'title', text: schema.title || t(`${NS_CHAT_COPILOT}:formTitle`), variant: 'h2' },\n { component: 'Text', id: 'desc', text: schema.description || '', variant: 'caption' },\n {\n component: 'Text',\n id: 'step-indicator',\n text: t(`${NS_CHAT_COPILOT}:stepIndicator`, { current: stepIndex + 1, total: schema.steps.length }),\n variant: 'caption'\n },\n { component: 'Text', id: 'step-title', text: step?.title || '', variant: 'h3' }\n ]\n\n for (const f of fields) {\n if (!f || typeof f !== 'object') continue\n const key = typeof f.key === 'string' ? f.key.trim() : ''\n if (!key) continue\n const id = `f-${key}`\n const bindPath = `${modelPath}/${key}`.replace(/\\/{2,}/g, '/')\n rootChildren.push(id)\n const label = typeof f.label === 'string' && f.label.trim() ? f.label.trim() : key\n const placeholder = typeof f.placeholder === 'string' ? f.placeholder : undefined\n const type = typeof f.type === 'string' ? f.type.toLowerCase() : 'text'\n if (type === 'select') {\n nodes.push({\n component: 'Select',\n id,\n label,\n placeholder,\n options: Array.isArray((f as any).options) ? (f as any).options : [],\n value: { path: bindPath },\n bind_path_token: `$bind:${bindPath}`\n })\n continue\n }\n if (type === 'switch') {\n nodes.push({\n component: 'Switch',\n id,\n label,\n value: { path: bindPath },\n bind_path_token: `$bind:${bindPath}`\n })\n continue\n }\n nodes.push({\n component: 'TextField',\n id,\n label,\n placeholder,\n value: { path: bindPath },\n bind_path_token: `$bind:${bindPath}`\n })\n }\n\n rootChildren.push('divider', 'actions')\n nodes.push({ component: 'Divider', id: 'divider' })\n nodes.push({ component: 'Row', id: 'actions', gap: 8, children: [] as string[] })\n const actions = nodes.find((n) => n.id === 'actions')\n const actionChildren: string[] = []\n actions.children = actionChildren\n const backLabel =\n typeof schema.labels?.back === 'string' && schema.labels.back.trim() ? schema.labels.back.trim() : t(`${NS_CHAT_COPILOT}:prevStep`)\n const nextLabel =\n typeof schema.labels?.next === 'string' && schema.labels.next.trim() ? schema.labels.next.trim() : t(`${NS_CHAT_COPILOT}:nextStep`)\n const submitLabel =\n typeof schema.labels?.submit === 'string' && schema.labels.submit.trim() ? schema.labels.submit.trim() : t(`${NS_CHAT_COPILOT}:submit`)\n\n if (stepIndex > 0) {\n actionChildren.push('btn-prev')\n nodes.push({\n component: 'Button',\n id: 'btn-prev',\n label: backLabel,\n variant: 'default',\n action: { event: { name: schema.backEvent, context: { model: { path: modelPath }, step_id: resolvedStepId } } }\n })\n }\n\n const isLast = stepIndex >= schema.steps.length - 1\n if (isLast) {\n actionChildren.push('btn-submit')\n nodes.push({\n component: 'Button',\n id: 'btn-submit',\n label: submitLabel,\n variant: 'primary',\n action: { event: { name: schema.submitEvent, context: { model: { path: modelPath }, step_id: resolvedStepId } } }\n })\n } else {\n actionChildren.push('btn-next')\n nodes.push({\n component: 'Button',\n id: 'btn-next',\n label: nextLabel,\n variant: 'primary',\n action: { event: { name: schema.nextEvent, context: { model: { path: modelPath }, step_id: resolvedStepId } } }\n })\n }\n\n return nodes\n}\n\nexport function buildWizardUpdateComponentsCommand(schema: WizardSchema, stepId: string) {\n return {\n updateComponents: {\n surfaceId: schema.surfaceId,\n components: buildWizardComponents(schema, stepId)\n },\n version: 'v0.9'\n }\n}\n","import { shouldOptimisticallyDismissSurface } from './action'\nimport { extractItemTextForA2ui, parseA2uiTagsFromText } from './extract'\nimport { resolveVisibleSurfaceIds } from './visibility'\nimport {\n buildWizardModelSeed,\n buildWizardUpdateComponentsCommand,\n normalizeWizardSchema,\n pickWizardCurrentStepIdFromCommands,\n type WizardSchema\n} from './wizard'\n\nexport type MessageCursor = {\n messageId: string\n contentLength: number\n}\n\nexport type A2uiRuntimeEffect =\n | { type: 'reset-model-store' }\n | { type: 'clear-model'; modelPath: string }\n | { type: 'write-model'; modelPath: string; values: Record<string, unknown> }\n\nexport type A2uiRuntimeState = {\n processedMessageCursors: MessageCursor[]\n processedTagIds: string[]\n serverCommands: any[]\n localCommands: any[]\n anchorIndexBySurface: Record<string, number>\n wizardSchemaBySurface: Record<string, WizardSchema>\n latestCreateCommandIndexBySurface: Record<string, number>\n initializedWizardRevisionBySurface: Record<string, string>\n modelPathBySurface: Record<string, string>\n wizardStepBySurface: Record<string, string>\n optimisticallyDismissedSurfaceIds: string[]\n lastA2uiHost: { id: string; index: number }\n}\n\ntype PendingItem = {\n messageIndex: number\n messageId: string\n item: any\n}\n\ntype RuntimeActionInput = {\n surfaceId: string\n actionName: string\n rawContext: Record<string, unknown>\n}\n\n/** 创建全新的 A2UI runtime 状态。 */\nexport function createA2uiRuntimeState(): A2uiRuntimeState {\n return {\n processedMessageCursors: [],\n processedTagIds: [],\n serverCommands: [],\n localCommands: [],\n anchorIndexBySurface: {},\n wizardSchemaBySurface: {},\n latestCreateCommandIndexBySurface: {},\n initializedWizardRevisionBySurface: {},\n modelPathBySurface: {},\n wizardStepBySurface: {},\n optimisticallyDismissedSurfaceIds: [],\n lastA2uiHost: { id: '', index: -1 }\n }\n}\n\n/** 从命令体中提取 surfaceId。 */\nfunction extractSurfaceId(command: any): string {\n if (!command || typeof command !== 'object') return ''\n return String(\n command.createSurface?.surfaceId ??\n command.updateComponents?.surfaceId ??\n command.updateDataModel?.surfaceId ??\n command.deleteSurface?.surfaceId ??\n ''\n ).trim()\n}\n\n/** 合并当前 runtime 中的服务端命令和本地命令。 */\nexport function getA2uiRuntimeCommands(state: A2uiRuntimeState): any[] {\n return [...state.serverCommands, ...state.localCommands]\n}\n\n/**\n * 【BUGFIX】对命令进行消毒,确保 updateDataModel.path 始终为有效字符串。\n *\n * 问题场景:后端下发的某些特殊数据中,updateDataModel 命令可能缺少 path\n * 字段(值为 undefined / null)。@ant-design/x-card 的 Card 组件在处理\n * updateDataModel 时会直接调用 setValueByPath(model, path, value),\n * 该函数第一行 path.replace(/^\\//, '') 会在 path 为 undefined 时抛出\n * TypeError: Cannot read properties of undefined (reading 'replace'),\n * 导致整个 Card 组件树崩溃(白屏)。\n *\n * 虽然 runtime 在写入本地 model store 时已对 path 做了类型守卫\n * (见 processA2uiCommand 中的 if 判断),但原始命令对象仍被原封不动地\n * 传给了 XCard.Box,Card 组件内部没有同等防护。\n *\n * 修复方案:在命令到达 XCard.Box 之前(即 selectA2uiRuntimeView 中)\n * 对命令列表做消毒——对 updateDataModel.path 非有效字符串的命令,\n * 移除其 updateDataModel 字段,从而避免 Card 组件崩溃。\n * 对于有效命令则原样返回(引用不变),不影响正常逻辑。\n */\nfunction sanitizeA2uiCommands(commands: any[]): any[] {\n return commands.map((cmd) => {\n if (!cmd || typeof cmd !== 'object' || !cmd.updateDataModel) return cmd\n const { path } = cmd.updateDataModel\n if (typeof path === 'string' && path.trim()) return cmd\n // path 无效(undefined / null / 空串):移除 updateDataModel 字段,\n // 防止 @ant-design/x-card 的 setValueByPath 在调用 path.replace() 时崩溃\n const { updateDataModel: _, ...rest } = cmd\n return rest\n })\n}\n\n/** 当 schema 和 createSurface 都已到位时,初始化 wizard 的默认值和首步。 */\nfunction initializeWizardSurface(state: A2uiRuntimeState, surfaceId: string, effects: A2uiRuntimeEffect[], nextWizardSteps: Record<string, string>) {\n const wizard = state.wizardSchemaBySurface[surfaceId]\n const createCommandIndex = state.latestCreateCommandIndexBySurface[surfaceId]\n const modelSeed = buildWizardModelSeed(wizard)\n if (!wizard || modelSeed === null || createCommandIndex === undefined) return\n\n const revision = `${surfaceId}:${createCommandIndex}`\n state.modelPathBySurface[surfaceId] = modelSeed.modelPath\n if (state.initializedWizardRevisionBySurface[surfaceId] === revision) return\n\n effects.push({ type: 'clear-model', modelPath: modelSeed.modelPath })\n effects.push({ type: 'write-model', modelPath: modelSeed.modelPath, values: modelSeed.values })\n state.initializedWizardRevisionBySurface[surfaceId] = revision\n\n const firstStepId = wizard.steps[0]?.stepId\n if (typeof firstStepId === 'string' && firstStepId.trim()) {\n nextWizardSteps[surfaceId] = firstStepId.trim()\n }\n}\n\n/** 处理单条 A2UI 命令,更新 runtime 状态和 effects。 */\nfunction processA2uiCommand(\n cmd: any,\n messageIndex: number,\n messageId: string,\n nextState: A2uiRuntimeState,\n effects: A2uiRuntimeEffect[],\n deletedSurfaceIds: Set<string>,\n nextWizardSteps: Record<string, string>\n) {\n nextState.serverCommands.push(cmd)\n nextState.lastA2uiHost = { id: messageId, index: messageIndex }\n\n // 先尝试从命令本身提取 wizard schema\n // wizard schema 命令的 surfaceId/modelPath/steps/submitEvent 直接挂在对象上,\n // 不嵌套在 createSurface/updateComponents 里,所以 extractSurfaceId 匹配不到\n const wizardSchema = normalizeWizardSchema(cmd)\n if (wizardSchema) {\n nextState.wizardSchemaBySurface[wizardSchema.surfaceId] = wizardSchema\n }\n\n const surfaceId = extractSurfaceId(cmd)\n if (!surfaceId) return\n\n // createSurface 时更新锚点到最新位置(支持同 surfaceId 重新创建后在新位置渲染)\n // 其他命令只在首次出现时设置锚点\n if (cmd?.createSurface) {\n nextState.anchorIndexBySurface[surfaceId] = messageIndex\n } else if (nextState.anchorIndexBySurface[surfaceId] === undefined && !cmd?.deleteSurface) {\n nextState.anchorIndexBySurface[surfaceId] = messageIndex\n }\n\n if (cmd?.createSurface) {\n nextState.latestCreateCommandIndexBySurface[surfaceId] = nextState.serverCommands.length - 1\n // 重新创建 Surface 时,清除之前的乐观隐藏状态\n nextState.optimisticallyDismissedSurfaceIds = nextState.optimisticallyDismissedSurfaceIds.filter((id) => id !== surfaceId)\n // 尝试从 createSurface 命令中提取 wizard schema\n // schema 可能直接嵌入在 createSurface 对象中,也可能在 schema/wizard/plan 字段中\n const schemaSource = cmd.createSurface.schema ?? cmd.createSurface.wizard ?? cmd.createSurface.plan\n const schema = normalizeWizardSchema(schemaSource) ?? normalizeWizardSchema(cmd.createSurface)\n if (schema) {\n nextState.wizardSchemaBySurface[surfaceId] = schema\n }\n initializeWizardSurface(nextState, surfaceId, effects, nextWizardSteps)\n }\n\n if (cmd?.updateDataModel) {\n const { path, value } = cmd.updateDataModel\n if (typeof path === 'string' && path.trim() && value && typeof value === 'object' && !Array.isArray(value)) {\n effects.push({ type: 'write-model', modelPath: path, values: value as Record<string, unknown> })\n }\n }\n\n if (cmd?.deleteSurface) {\n deletedSurfaceIds.add(surfaceId)\n const modelPath = nextState.modelPathBySurface[surfaceId]\n if (modelPath) effects.push({ type: 'clear-model', modelPath })\n delete nextState.initializedWizardRevisionBySurface[surfaceId]\n delete nextState.modelPathBySurface[surfaceId]\n }\n}\n\n/** 增量比对消息流,只有历史被改写时才退化成全量回放。 */\nfunction diffConversationMessages(messages: readonly any[], prevCursors: MessageCursor[]) {\n if (messages.length < prevCursors.length) {\n return { shouldReplayAll: true, nextCursors: [] as MessageCursor[], pendingItems: [] as PendingItem[] }\n }\n\n const nextCursors: MessageCursor[] = []\n const pendingItems: PendingItem[] = []\n for (let messageIndex = 0; messageIndex < messages.length; messageIndex += 1) {\n const message = messages[messageIndex]\n const messageId = String(message?.messageId ?? messageIndex)\n const items = Array.isArray(message?.content) ? message.content : []\n const prevCursor = prevCursors[messageIndex]\n const startIndex = prevCursor ? prevCursor.contentLength : 0\n\n if (prevCursor && (prevCursor.messageId !== messageId || items.length < prevCursor.contentLength)) {\n return { shouldReplayAll: true, nextCursors: [] as MessageCursor[], pendingItems: [] as PendingItem[] }\n }\n\n for (let itemIndex = startIndex; itemIndex < items.length; itemIndex += 1) {\n pendingItems.push({ messageIndex, messageId, item: items[itemIndex] })\n }\n nextCursors.push({ messageId, contentLength: items.length })\n }\n\n return { shouldReplayAll: false, nextCursors, pendingItems }\n}\n\n/** 扫描所有消息的 toolCall 项,从 result.stdout 中提取尚未处理的 A2UI 标签命令。 */\nfunction scanA2uiTagsFromMessages(\n messages: readonly any[],\n processedTagIds: Set<string>\n): { newTags: Array<{ commands: any[]; messageIndex: number; messageId: string }>; newTagIds: string[] } {\n const newTags: Array<{ commands: any[]; messageIndex: number; messageId: string }> = []\n const newTagIds: string[] = []\n for (let messageIndex = 0; messageIndex < messages.length; messageIndex += 1) {\n const message = messages[messageIndex]\n const messageId = String(message?.messageId ?? messageIndex)\n const items = Array.isArray(message?.content) ? message.content : []\n for (const item of items) {\n const text = extractItemTextForA2ui(item)\n if (typeof text !== 'string' || !text.includes('<A2UI')) continue\n const tags = parseA2uiTagsFromText(text)\n for (const tag of tags) {\n if (processedTagIds.has(tag.tagId)) continue\n processedTagIds.add(tag.tagId)\n newTagIds.push(tag.tagId)\n newTags.push({ commands: tag.commands, messageIndex, messageId })\n }\n }\n }\n return { newTags, newTagIds }\n}\n\n/** 用消息流推进 runtime 状态,必要时生成模型同步 effect。 */\nexport function reduceA2uiRuntimeMessages(state: A2uiRuntimeState, messages: readonly any[]) {\n const { shouldReplayAll, pendingItems, nextCursors } = diffConversationMessages(messages || [], state.processedMessageCursors)\n\n // 扫描 toolCall 项中的 A2UI 标签(不依赖 diff,因为 toolCall 的 result 是合并进来的,contentLength 不变)\n const tagProcessedSet = new Set(shouldReplayAll ? [] : state.processedTagIds)\n const { newTags, newTagIds } = scanA2uiTagsFromMessages(messages || [], tagProcessedSet)\n\n if (!shouldReplayAll && pendingItems.length === 0 && newTags.length === 0) {\n return { state, effects: [] as A2uiRuntimeEffect[] }\n }\n\n const nextState = shouldReplayAll ? createA2uiRuntimeState() : { ...state }\n nextState.processedMessageCursors = shouldReplayAll ? [] : [...state.processedMessageCursors]\n nextState.processedTagIds = shouldReplayAll ? [] : [...state.processedTagIds, ...newTagIds]\n nextState.serverCommands = shouldReplayAll ? [] : [...state.serverCommands]\n nextState.localCommands = shouldReplayAll ? [] : [...state.localCommands]\n nextState.anchorIndexBySurface = shouldReplayAll ? {} : { ...state.anchorIndexBySurface }\n nextState.wizardSchemaBySurface = shouldReplayAll ? {} : { ...state.wizardSchemaBySurface }\n nextState.latestCreateCommandIndexBySurface = shouldReplayAll ? {} : { ...state.latestCreateCommandIndexBySurface }\n nextState.initializedWizardRevisionBySurface = shouldReplayAll ? {} : { ...state.initializedWizardRevisionBySurface }\n nextState.modelPathBySurface = shouldReplayAll ? {} : { ...state.modelPathBySurface }\n nextState.wizardStepBySurface = shouldReplayAll ? {} : { ...state.wizardStepBySurface }\n nextState.optimisticallyDismissedSurfaceIds = shouldReplayAll ? [] : [...state.optimisticallyDismissedSurfaceIds]\n nextState.lastA2uiHost = shouldReplayAll ? { id: '', index: -1 } : { ...state.lastA2uiHost }\n\n const effects: A2uiRuntimeEffect[] = shouldReplayAll ? [{ type: 'reset-model-store' }] : []\n const deletedSurfaceIds = new Set<string>()\n const nextWizardSteps: Record<string, string> = {}\n\n // 处理 diff 产出的事件项(兼容旧 a2uiSchema / a2uiCommand 事件)\n pendingItems.forEach(({ item, messageIndex, messageId }) => {\n // a2uiSchema 事件:提取 wizard schema\n if (item?.type === 'a2uiSchema') {\n const schema = normalizeWizardSchema(item.schema)\n if (schema) {\n nextState.wizardSchemaBySurface[schema.surfaceId] = schema\n initializeWizardSurface(nextState, schema.surfaceId, effects, nextWizardSteps)\n }\n return\n }\n\n // a2uiCommand 事件:处理命令\n if (item?.type === 'a2uiCommand' && item.command) {\n processA2uiCommand(item.command, messageIndex, messageId, nextState, effects, deletedSurfaceIds, nextWizardSteps)\n }\n })\n\n // 处理从 toolCall result.stdout 中提取的 A2UI 标签命令\n newTags.forEach(({ commands, messageIndex, messageId }) => {\n for (const cmd of commands) {\n processA2uiCommand(cmd, messageIndex, messageId, nextState, effects, deletedSurfaceIds, nextWizardSteps)\n }\n })\n\n nextState.processedMessageCursors = shouldReplayAll\n ? (messages as any[]).map((message, messageIndex) => ({\n messageId: String(message?.messageId ?? messageIndex),\n contentLength: Array.isArray(message?.content) ? message.content.length : 0\n }))\n : nextCursors\n nextState.wizardStepBySurface = { ...nextState.wizardStepBySurface, ...nextWizardSteps }\n\n if (deletedSurfaceIds.size) {\n nextState.optimisticallyDismissedSurfaceIds = nextState.optimisticallyDismissedSurfaceIds.filter((surfaceId) => !deletedSurfaceIds.has(surfaceId))\n nextState.wizardStepBySurface = Object.fromEntries(\n Object.entries(nextState.wizardStepBySurface).filter(([surfaceId]) => !deletedSurfaceIds.has(surfaceId))\n )\n nextState.localCommands = nextState.localCommands.filter(\n (cmd) => !deletedSurfaceIds.has(String(cmd?.updateComponents?.surfaceId || cmd?.updateDataModel?.surfaceId || ''))\n )\n }\n\n return { state: nextState, effects }\n}\n\n/** 处理不依赖副作用的本地 runtime 交互,如 wizard 切步和乐观关闭。 */\nexport function reduceA2uiRuntimeAction(state: A2uiRuntimeState, input: RuntimeActionInput) {\n const { surfaceId, actionName, rawContext } = input\n if (!surfaceId) {\n return { state, handled: actionName === 'wizard.next' || actionName === 'wizard.back' }\n }\n\n const wizard = state.wizardSchemaBySurface[surfaceId]\n if (wizard) {\n const isNext = actionName === wizard.nextEvent\n const isBack = actionName === wizard.backEvent\n if (isNext || isBack) {\n const commands = getA2uiRuntimeCommands(state)\n const fallbackStepId = pickWizardCurrentStepIdFromCommands(surfaceId, commands) || wizard.steps[0]?.stepId || ''\n const currentStepId = state.wizardStepBySurface[surfaceId] || fallbackStepId\n const currentIndex = wizard.steps.findIndex((step) => step?.stepId === currentStepId)\n const baseIndex = currentIndex >= 0 ? currentIndex : 0\n const nextIndex = isNext ? baseIndex + 1 : baseIndex - 1\n const nextStepId = wizard.steps[nextIndex]?.stepId\n if (!nextStepId) return { state, handled: true }\n\n return {\n state: {\n ...state,\n wizardStepBySurface: { ...state.wizardStepBySurface, [surfaceId]: nextStepId },\n localCommands: [...state.localCommands, buildWizardUpdateComponentsCommand(wizard, nextStepId)]\n },\n handled: true\n }\n }\n }\n\n // wizard.next / wizard.back 始终在前端本地处理,不发给后端\n if (actionName === 'wizard.next' || actionName === 'wizard.back') {\n return { state, handled: true }\n }\n\n if (!shouldOptimisticallyDismissSurface(actionName, rawContext)) {\n return { state, handled: false }\n }\n if (state.optimisticallyDismissedSurfaceIds.includes(surfaceId)) {\n return { state, handled: false }\n }\n\n return {\n state: {\n ...state,\n optimisticallyDismissedSurfaceIds: [...state.optimisticallyDismissedSurfaceIds, surfaceId]\n },\n handled: false\n }\n}\n\n/** 根据当前 runtime 状态导出给渲染层使用的视图模型。 */\nexport function selectA2uiRuntimeView(state: A2uiRuntimeState, dismissedSurfaceIds: readonly string[]) {\n const mergedDismissedSurfaceIds = Array.from(\n new Set([...(dismissedSurfaceIds || []), ...state.optimisticallyDismissedSurfaceIds].filter((surfaceId) => surfaceId?.trim?.()))\n )\n // 【BUGFIX】对命令做消毒处理,移除 updateDataModel.path 缺失的无效字段,\n // 防止 @ant-design/x-card 的 Card 组件在调用 setValueByPath 时因 path 为\n // undefined 而崩溃(TypeError: Cannot read properties of undefined)\n const commands = sanitizeA2uiCommands(getA2uiRuntimeCommands(state))\n const visibleSurfaceIds = resolveVisibleSurfaceIds(commands, mergedDismissedSurfaceIds)\n const anchoredSurfaceIdsByMessageIndex: Record<number, string[]> = {}\n\n visibleSurfaceIds.forEach((surfaceId) => {\n const messageIndex = state.anchorIndexBySurface[surfaceId]\n if (typeof messageIndex !== 'number' || messageIndex < 0) return\n if (!anchoredSurfaceIdsByMessageIndex[messageIndex]) anchoredSurfaceIdsByMessageIndex[messageIndex] = []\n anchoredSurfaceIdsByMessageIndex[messageIndex].push(surfaceId)\n })\n\n return {\n commands,\n visibleSurfaceIds,\n lastA2uiHostMessageId: state.lastA2uiHost.id,\n lastA2uiHostMessageIndex: state.lastA2uiHost.index,\n anchoredSurfaceIdsByMessageIndex\n }\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { clearAllModelValues, clearModelValues, writeModelValues } from '../components/A2uiComponents'\nimport { extractDismissedSurfaceIdsFromMessages } from './extract'\nimport {\n createA2uiRuntimeState,\n reduceA2uiRuntimeAction,\n reduceA2uiRuntimeMessages,\n selectA2uiRuntimeView,\n type A2uiRuntimeEffect,\n type A2uiRuntimeState\n} from './runtime'\nimport type { A2uiControllerParams, A2uiControllerResult } from './types'\nexport * from './extract'\n\n/** 执行 runtime 产出的模型同步 effect。 */\nfunction applyA2uiRuntimeEffects(effects: A2uiRuntimeEffect[]) {\n effects.forEach((effect) => {\n if (effect.type === 'reset-model-store') {\n clearAllModelValues()\n return\n }\n if (effect.type === 'clear-model') {\n clearModelValues(effect.modelPath)\n return\n }\n writeModelValues(effect.modelPath, effect.values)\n })\n}\n\nexport function useA2uiController(params: A2uiControllerParams): A2uiControllerResult {\n const { conversationId, conversationMessages, dismissedSurfaceIds } = params\n const runtimeRef = useRef<A2uiRuntimeState>(createA2uiRuntimeState())\n const [runtimeState, setRuntimeState] = useState<A2uiRuntimeState>(() => createA2uiRuntimeState())\n\n useEffect(() => {\n const nextState = createA2uiRuntimeState()\n runtimeRef.current = nextState\n setRuntimeState(nextState)\n clearAllModelValues()\n }, [conversationId])\n\n useEffect(() => {\n const result = reduceA2uiRuntimeMessages(runtimeRef.current, conversationMessages || [])\n if (result.state === runtimeRef.current && result.effects.length === 0) return\n runtimeRef.current = result.state\n applyA2uiRuntimeEffects(result.effects)\n setRuntimeState(result.state)\n }, [conversationMessages, conversationId])\n\n // 从用户消息中扫描 a2ui_action.v1,提取永久 dismiss 列表。\n // 这些 surface 已被用户提交/取消,即使刷新页面或切换会话后也应保持隐藏。\n const permanentDismissedSurfaceIds = useMemo(() => extractDismissedSurfaceIdsFromMessages(conversationMessages || []), [conversationMessages])\n\n // 合并三层 dismiss 来源:\n // 1. 外部传入的 dismissedSurfaceIds(provider 层乐观隐藏 + 恢复逻辑)\n // 2. runtime 内部的 optimisticallyDismissedSurfaceIds(已在 selectA2uiRuntimeView 中合并)\n // 3. permanentDismissedSurfaceIds(从 a2ui_action.v1 历史消息中提取的永久记录)\n const mergedDismissedSurfaceIds = useMemo(\n () => Array.from(new Set([...(dismissedSurfaceIds || []), ...permanentDismissedSurfaceIds])),\n [dismissedSurfaceIds, permanentDismissedSurfaceIds]\n )\n\n const view = useMemo(() => selectA2uiRuntimeView(runtimeState, mergedDismissedSurfaceIds), [runtimeState, mergedDismissedSurfaceIds])\n\n /** 仅推进本地 runtime;未处理的动作交给上层决定如何派发。 */\n const handleRuntimeAction = useCallback((payload: any) => {\n const surfaceId = String(payload?.surfaceId || payload?.cardId || '')\n const name = String(payload?.name || payload?.event?.name || '').trim()\n const rawContext = (payload?.context || payload?.event?.context || {}) as Record<string, unknown>\n const runtimeActionResult = reduceA2uiRuntimeAction(runtimeRef.current, { surfaceId, actionName: name, rawContext })\n if (runtimeActionResult.state !== runtimeRef.current) {\n runtimeRef.current = runtimeActionResult.state\n setRuntimeState(runtimeActionResult.state)\n }\n return { handled: runtimeActionResult.handled, name, surfaceId, rawContext }\n }, [])\n\n return {\n runtimeState,\n commands: view.commands,\n visibleSurfaceIds: view.visibleSurfaceIds,\n lastA2uiHostMessageId: view.lastA2uiHostMessageId,\n lastA2uiHostMessageIndex: view.lastA2uiHostMessageIndex,\n anchoredSurfaceIdsByMessageIndex: view.anchoredSurfaceIdsByMessageIndex,\n handleRuntimeAction\n }\n}\n\nexport type { A2uiControllerParams, A2uiControllerResult, A2uiRuntimeActionResult, DispatchPayload } from './types'\n","import React from 'react'\n\nexport type A2uiRuntimeProviderProps = {\n messages: readonly any[]\n children: React.ReactNode\n}\n\nexport type A2uiRuntimeView = {\n commands: any[]\n onAction: (payload: any) => void\n surfaceIdsByMessageIndex: Record<number, string[]>\n}\n\nexport const A2uiRuntimeContext = React.createContext<A2uiRuntimeView>({\n commands: [],\n onAction: () => undefined,\n surfaceIdsByMessageIndex: {}\n})\n","import React from 'react'\nimport { A2uiRuntimeContext } from './context'\n\n/** 读取当前 A2UI runtime 的渲染视图和动作入口。 */\nexport function useA2uiRuntimeView() {\n return React.useContext(A2uiRuntimeContext)\n}\n","import { XCard } from '../x-card'\nimport { useA2uiRuntimeView } from './useA2uiRuntimeView'\n\n/** 在消息锚点位置挂载当前可见的 A2UI Surface。 */\nexport function A2uiMessageCards({ messageIndex }: { messageIndex: number; message?: any }) {\n const { surfaceIdsByMessageIndex } = useA2uiRuntimeView()\n const surfaceIds = surfaceIdsByMessageIndex[messageIndex] || []\n if (!surfaceIds.length) return null\n\n return (\n <div>\n {surfaceIds.map((surfaceId) => (\n <XCard.Card key={surfaceId} id={surfaceId} />\n ))}\n </div>\n )\n}\n","import { t } from '@zero-library/common'\nimport { NS_CHAT_COPILOT } from '../../../../i18n/constants'\n/** A2UI 交互事件的标准载荷。 */\nexport type A2uiActionPayload = {\n name: string\n surfaceId: string\n context: Record<string, any>\n}\n/** 判断事件名是否代表提交类动作。 */\nexport function isSubmitLikeActionName(name: string): boolean {\n const normalized = String(name || '').trim()\n return normalized === 'submit' || normalized === 'confirm' || normalized.startsWith('submit_') || normalized.endsWith('.confirm')\n}\n\n/** 判断事件名是否代表取消类动作。 */\nexport function isCancelLikeActionName(name: string): boolean {\n const normalized = String(name || '').trim()\n return normalized === 'cancel' || normalized === 'qf.cancel' || normalized.endsWith('.cancel')\n}\n\n/** 判断当前动作是否应该先把 Surface 从界面上隐藏。 */\nexport function shouldDismissA2uiSurface(name: string, context?: Record<string, unknown>): boolean {\n // 默认行为:任何 a2ui_action.v1 都视为 dismiss 信号(\"默认删掉就可以\")。\n // wizard 导航动作由本地拦截,不会走到这里。\n // 如果未来需要排除某些动作,可在此添加白名单。\n return true\n}\n\n/** 把外部输入规整成稳定的 A2UI 载荷。 */\nexport function normalizeA2uiActionPayload(payload: Partial<A2uiActionPayload>): A2uiActionPayload {\n return {\n name: String(payload?.name || '').trim(),\n surfaceId: String(payload?.surfaceId || '').trim(),\n context: payload?.context && typeof payload.context === 'object' && !Array.isArray(payload.context) ? payload.context : {}\n }\n}\n\n/** 把 A2UI 动作编码成发送给后端的标准协议文本。 */\nexport function formatA2uiActionMessage(payload: Partial<A2uiActionPayload>): string {\n const normalized = normalizeA2uiActionPayload(payload)\n return JSON.stringify({\n type: 'a2ui_action.v1',\n name: normalized.name,\n surfaceId: normalized.surfaceId,\n context: normalized.context\n })\n}\n\n/** 从文本消息中解析 A2UI 动作协议。 */\nexport function parseA2uiActionMessage(content?: string): A2uiActionPayload | null {\n if (typeof content !== 'string') return null\n const trimmed = content.trim()\n if (!trimmed.startsWith('{') || !trimmed.includes('\"a2ui_action.v1\"')) return null\n\n try {\n const parsed = JSON.parse(trimmed)\n if (parsed?.type !== 'a2ui_action.v1') return null\n return normalizeA2uiActionPayload(parsed)\n } catch {\n return null\n }\n}\n\n/** 判断这条动作是否应该渲染成 Question 摘要。 */\nfunction isQuestionActionPayload(payload: A2uiActionPayload): boolean {\n const mode = payload.context?.form_mode\n if (payload.name === 'qf.submit' || payload.name === 'qf.cancel') return true\n if (payload.name.startsWith('qf.')) return true\n return typeof mode === 'string' && mode.toLowerCase() === 'ephemeral'\n ? isSubmitLikeActionName(payload.name) || isCancelLikeActionName(payload.name)\n : false\n}\n\n/** 把值格式化成用户可读的摘要文本。 */\nfunction formatActionValue(value: unknown, displayOverride?: unknown): string {\n if (typeof displayOverride === 'string' && displayOverride.trim()) return displayOverride.trim()\n if (typeof value === 'boolean') return t(`${NS_CHAT_COPILOT}:${value ? 'boolYes' : 'boolNo'}`)\n if (Array.isArray(value)) return value.map((item) => String(item)).join('、')\n if (value && typeof value === 'object') return JSON.stringify(value)\n return String(value)\n}\n\n/** 生成 Question 类型动作的简洁摘要。 */\nfunction buildQuestionSummary(payload: A2uiActionPayload): string {\n if (isCancelLikeActionName(payload.name)) return t(`${NS_CHAT_COPILOT}:questionCancelled`)\n\n const values =\n payload.context.values && typeof payload.context.values === 'object' && !Array.isArray(payload.context.values)\n ? (payload.context.values as Record<string, unknown>)\n : payload.context\n const labels =\n payload.context.labels && typeof payload.context.labels === 'object' && !Array.isArray(payload.context.labels)\n ? (payload.context.labels as Record<string, unknown>)\n : {}\n const valueLabels =\n payload.context.valueLabels && typeof payload.context.valueLabels === 'object' && !Array.isArray(payload.context.valueLabels)\n ? (payload.context.valueLabels as Record<string, unknown>)\n : {}\n\n const details = Object.entries(values)\n .filter(([, value]) => value !== null && value !== undefined && value !== '')\n .map(([key, value]) => {\n const label = typeof labels[key] === 'string' && String(labels[key]).trim() ? String(labels[key]).trim() : key\n return `${label}: ${formatActionValue(value, valueLabels[key])}`\n })\n\n return details.length ? t(`${NS_CHAT_COPILOT}:questionDetails`, { details: details.join('; ') }) : t(`${NS_CHAT_COPILOT}:questionAnswered`)\n}\n\n/** 生成普通 A2UI 动作的可读展示文本。 */\nexport function formatA2uiActionDisplayText(payload: A2uiActionPayload): string {\n if (isQuestionActionPayload(payload)) return buildQuestionSummary(payload)\n\n const values =\n payload.context.values && typeof payload.context.values === 'object' && !Array.isArray(payload.context.values)\n ? (payload.context.values as Record<string, unknown>)\n : payload.context\n const labels =\n payload.context.labels && typeof payload.context.labels === 'object' && !Array.isArray(payload.context.labels)\n ? (payload.context.labels as Record<string, unknown>)\n : {}\n const valueLabels =\n payload.context.valueLabels && typeof payload.context.valueLabels === 'object' && !Array.isArray(payload.context.valueLabels)\n ? (payload.context.valueLabels as Record<string, unknown>)\n : {}\n\n const actionLabels: Record<string, string> = {\n submit_basic: t(`${NS_CHAT_COPILOT}:basicInfoSubmitted`),\n submit_params: t(`${NS_CHAT_COPILOT}:paramsSubmitted`),\n back_to_basic: t(`${NS_CHAT_COPILOT}:backToBasic`),\n back_to_params: t(`${NS_CHAT_COPILOT}:backToParams`),\n confirm: t(`${NS_CHAT_COPILOT}:createConfirmed`)\n }\n let actionLabel = actionLabels[payload.name]\n if (!actionLabel) {\n if (payload.name.startsWith('confirm_')) {\n actionLabel = t(`${NS_CHAT_COPILOT}:actionSelected`)\n } else if (payload.name.startsWith('submit_')) {\n actionLabel = t(`${NS_CHAT_COPILOT}:actionSubmitted`)\n } else {\n actionLabel = t(`${NS_CHAT_COPILOT}:actionSubmittedNamed`, { name: payload.name })\n }\n }\n const isConfirmLike = payload.name.startsWith('confirm_')\n const details = Object.entries(values)\n .filter(([, value]) => value !== null && value !== undefined && value !== '')\n .map(([key, value]) => {\n const formatted = formatActionValue(value, valueLabels[key])\n if (isConfirmLike) return formatted\n const label = typeof labels[key] === 'string' && String(labels[key]).trim() ? String(labels[key]).trim() : key\n return `${label}: ${formatted}`\n })\n\n return details.length ? `${actionLabel}:${details.join('; ')}` : actionLabel\n}\n\n/** 把用户消息中的 A2UI 协议转换成可直接显示的文案。 */\nexport function toA2uiDisplayText(role: number, content?: string): string {\n if (role !== 1) return content || ''\n const payload = parseA2uiActionMessage(content)\n return payload ? formatA2uiActionDisplayText(payload) : content || ''\n}\n\n/** 判断 plan 是否只是 A2UI 的上游描述,不应该单独渲染。 */\nexport function shouldHideA2uiPlan(item: { plan?: unknown }): boolean {\n if (!item.plan || typeof item.plan !== 'object') return false\n\n const rawPlan = item.plan as Record<string, unknown>\n const candidates = [rawPlan, rawPlan.plan].filter((plan): plan is Record<string, unknown> => !!plan && typeof plan === 'object')\n\n return candidates.some((plan) => {\n const kind = typeof plan.kind === 'string' ? plan.kind.toLowerCase() : ''\n const surfaceId = typeof plan.surface_id === 'string' ? plan.surface_id : ''\n return (kind === 'form' || kind === 'wizard' || kind === 'dashboard') && !!surfaceId\n })\n}\n","import '@ant-design/x-markdown/themes/light.css'\nimport { t } from '@zero-library/common'\nimport React from 'react'\nimport { NS_CHAT_COPILOT } from '../../../../i18n/constants'\nimport XMarkdown from '../../../XMarkdown'\nimport { A2uiComponents } from '../components/A2uiComponents'\nimport { shouldHideA2uiPlan } from './protocol'\n\n/** 统一提取 plan 的真实载荷。 */\nfunction extractPlanPayload(plan: unknown): Record<string, any> | null {\n if (!plan || typeof plan !== 'object') return null\n const raw = plan as Record<string, any>\n return raw.plan && typeof raw.plan === 'object' ? raw.plan : raw\n}\n\n/** 统一规范表格列定义,避免调用方重复写兼容逻辑。 */\nfunction normalizeTableColumns(columns: unknown): { title: string; dataIndex: string }[] {\n if (!Array.isArray(columns)) return []\n return columns\n .map((column: any) => ({\n title: String(column?.title ?? ''),\n dataIndex: String(column?.dataIndex ?? column?.data_index ?? '')\n }))\n .filter((column) => column.dataIndex)\n}\n\n/** 按制品类型选择对应的 A2UI 组件。 */\nfunction renderArtifact(artifact: any, index: number): React.ReactNode {\n const ReportViewer = A2uiComponents.ReportViewer as React.ComponentType<any>\n const ChartViewer = A2uiComponents.ChartViewer as React.ComponentType<any>\n const TableViewer = A2uiComponents.TableViewer as React.ComponentType<any>\n const ArtifactCard = A2uiComponents.ArtifactCard as React.ComponentType<any>\n\n const type = String(artifact?.type ?? '').toLowerCase()\n const artifactId = String(artifact?.artifact_id ?? artifact?.artifactId ?? `artifact_${index}`)\n const title = typeof artifact?.title === 'string' ? artifact.title : undefined\n\n if (type === 'report') {\n return <ReportViewer key={artifactId} artifactId={artifactId} title={title} payload={{ markdown: artifact?.markdown }} />\n }\n if (type === 'chart') {\n return <ChartViewer key={artifactId} artifactId={artifactId} title={title} payload={artifact} />\n }\n if (type === 'table') {\n return (\n <TableViewer\n key={artifactId}\n artifactId={artifactId}\n title={title}\n payload={{ columns: normalizeTableColumns(artifact?.columns), rows: Array.isArray(artifact?.rows) ? artifact.rows : [] }}\n />\n )\n }\n return <ArtifactCard key={artifactId} type={type || 'artifact'} artifactId={artifactId} title={title} payload={artifact} />\n}\n\n/** 渲染 viewer 类型的 plan。 */\nfunction ViewerPlan({ payload }: { payload: Record<string, any> }) {\n const artifacts = Array.isArray(payload.artifacts) ? payload.artifacts : []\n if (!artifacts.length) return null\n\n const title = typeof payload.title === 'string' ? payload.title.trim() : ''\n const description = typeof payload.description === 'string' ? payload.description.trim() : ''\n const header = title || description ? `### ${title || t(`${NS_CHAT_COPILOT}:report`)}\\n\\n${description || ''}`.trim() : ''\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: 8 }}>\n {header ? <XMarkdown content={header} /> : null}\n {artifacts.map((artifact, index) => renderArtifact(artifact, index))}\n </div>\n )\n}\n\n/** 统一渲染消息里的 plan 节点。 */\nexport function A2uiPlanNode({ item }: { item: any }) {\n if (!item || shouldHideA2uiPlan(item)) return null\n\n const payload = extractPlanPayload(item.plan)\n const isViewer = typeof payload?.kind === 'string' && payload.kind.toLowerCase() === 'viewer'\n if (payload && isViewer) {\n return <ViewerPlan payload={payload} />\n }\n\n const title = item.title ? `### ${item.title}\\n\\n` : ''\n const content = typeof item.content === 'string' ? item.content : item.plan ? `\\`\\`\\`json\\n${JSON.stringify(item.plan, null, 2)}\\n\\`\\`\\`` : ''\n if (!title && !content) return null\n\n return <XMarkdown content={`${title}${content}`} />\n}\n","import { t } from '@zero-library/common'\nimport { message as antdMessage } from 'antd'\nimport React from 'react'\nimport { useSnapshot } from 'valtio'\nimport { NS_CHAT_COPILOT } from '../../../../i18n/constants'\nimport { useChatStore } from '../../../../stores/Context'\nimport { A2uiComponents, clearModelValues } from '../components/A2uiComponents'\nimport { useA2uiController } from '../controller'\nimport { buildDispatchContext, shouldOptimisticallyDismissSurface } from '../controller/action'\nimport { extractItemTextForA2ui, parseA2uiTagsFromText } from '../controller/extract'\nimport { XCard } from '../x-card'\nimport { A2uiRuntimeContext, type A2uiRuntimeProviderProps } from './context'\nimport { formatA2uiActionMessage, normalizeA2uiActionPayload, shouldDismissA2uiSurface } from './protocol'\n\n/** 从任意命令里提取 surfaceId,用来维护 dismiss 的恢复边界。 */\nfunction extractSurfaceId(command: unknown): string {\n if (!command || typeof command !== 'object') return ''\n const current = command as Record<string, any>\n return String(\n current.createSurface?.surfaceId ??\n current.updateComponents?.surfaceId ??\n current.updateDataModel?.surfaceId ??\n current.deleteSurface?.surfaceId ??\n ''\n ).trim()\n}\n\n/** 从动作上下文中提取 model path,便于提交后清理本地缓存。 */\nfunction readContextModelPath(context: Record<string, unknown>): string {\n const path = context?.model && typeof context.model === 'object' ? (context.model as { path?: unknown }).path : ''\n return typeof path === 'string' ? path.trim() : ''\n}\n\n/**\n * 遍历所有消息,构建 surfaceId -> 最新命令索引的映射。\n * 只扫描 toolCall 项的 result.stdout 中的 <A2UI> 标签。\n */\nfunction buildLatestCommandIndexBySurface(messages: readonly any[]): Record<string, number> {\n const indexBySurface: Record<string, number> = {}\n let commandIndex = -1\n for (const message of messages) {\n const items = Array.isArray(message?.content) ? message.content : []\n for (const item of items) {\n // 兼容旧 a2uiCommand 事件\n if (item?.type === 'a2uiCommand' && item.command) {\n commandIndex += 1\n const surfaceId = extractSurfaceId(item.command)\n if (surfaceId) indexBySurface[surfaceId] = commandIndex\n continue\n }\n const text = extractItemTextForA2ui(item)\n if (typeof text !== 'string' || !text.includes('<A2UI')) continue\n const tags = parseA2uiTagsFromText(text)\n for (const tag of tags) {\n for (const cmd of tag.commands) {\n commandIndex += 1\n const surfaceId = extractSurfaceId(cmd)\n if (surfaceId) indexBySurface[surfaceId] = commandIndex\n }\n }\n }\n }\n return indexBySurface\n}\n\n/** 为整个子树提供 A2UI runtime,并负责把未消费动作发回聊天链路。 */\nexport function A2uiRuntimeProvider({ messages, children }: A2uiRuntimeProviderProps) {\n const chatStore = useChatStore()\n const conversationState = useSnapshot(chatStore.conversation)\n const conversationId = conversationState.active.id\n const [latestCommandIndexBySurface, setLatestCommandIndexBySurface] = React.useState<Record<string, number>>({})\n const [dismissedAtBySurface, setDismissedAtBySurface] = React.useState<Record<string, number>>({})\n\n React.useEffect(() => {\n setLatestCommandIndexBySurface({})\n setDismissedAtBySurface({})\n }, [conversationId])\n\n React.useEffect(() => {\n setLatestCommandIndexBySurface(buildLatestCommandIndexBySurface(messages))\n }, [messages])\n\n /** 只保留还没有被后续新命令覆盖的隐藏状态。 */\n const dismissedSurfaceIds = React.useMemo(() => {\n return Object.entries(dismissedAtBySurface)\n .filter(([surfaceId, dismissedAt]) => (latestCommandIndexBySurface[surfaceId] ?? -1) <= dismissedAt)\n .map(([surfaceId]) => surfaceId)\n }, [dismissedAtBySurface, latestCommandIndexBySurface])\n\n /** 把 A2UI 动作转成聊天消息协议,并在需要时先做本地隐藏。 */\n const dispatchA2uiAction = React.useCallback(\n async (payload: { name: string; surfaceId: string; context: Record<string, any> }) => {\n const actionPayload = normalizeA2uiActionPayload(payload)\n if (!actionPayload.name) return\n\n if (actionPayload.surfaceId && shouldDismissA2uiSurface(actionPayload.name, actionPayload.context)) {\n const latestIndex = latestCommandIndexBySurface[actionPayload.surfaceId] ?? Number.MAX_SAFE_INTEGER\n setDismissedAtBySurface((prev) => ({ ...prev, [actionPayload.surfaceId]: latestIndex }))\n }\n\n try {\n await chatStore.config.hooks?.onA2uiAction?.(actionPayload)\n } catch (error) {\n console.error('A2UI action hook failed:', error)\n }\n\n try {\n await chatStore.sendMessage(formatA2uiActionMessage(actionPayload))\n } catch (error) {\n console.error('A2UI action send failed:', error)\n antdMessage.error(t(`${NS_CHAT_COPILOT}:submitFailed`))\n }\n },\n [chatStore, latestCommandIndexBySurface]\n )\n\n const { runtimeState, commands, anchoredSurfaceIdsByMessageIndex, handleRuntimeAction } = useA2uiController({\n conversationId,\n conversationMessages: messages,\n dismissedSurfaceIds\n })\n\n /** 先尝试用 runtime 消费动作;剩余动作再作为外部协议派发。 */\n const onAction = React.useCallback(\n (payload: any) => {\n const result = handleRuntimeAction(payload)\n if (result.handled || !result.name) return\n\n const nextContext = buildDispatchContext(result.surfaceId, result.rawContext, commands)\n void dispatchA2uiAction({ name: result.name, surfaceId: result.surfaceId, context: nextContext })\n\n if (shouldOptimisticallyDismissSurface(result.name, result.rawContext)) {\n const modelPath =\n readContextModelPath(nextContext) || readContextModelPath(result.rawContext) || runtimeState.modelPathBySurface[result.surfaceId]\n if (modelPath) clearModelValues(modelPath)\n }\n },\n [commands, dispatchA2uiAction, handleRuntimeAction, runtimeState.modelPathBySurface]\n )\n\n const contextValue = React.useMemo(\n () => ({ commands, onAction, surfaceIdsByMessageIndex: anchoredSurfaceIdsByMessageIndex }),\n [anchoredSurfaceIdsByMessageIndex, commands, onAction]\n )\n\n return (\n <A2uiRuntimeContext.Provider value={contextValue}>\n <XCard.Box commands={commands as any} components={A2uiComponents} onAction={onAction}>\n {children}\n </XCard.Box>\n </A2uiRuntimeContext.Provider>\n )\n}\n","import { A2uiRuntimeProvider } from './A2uiRuntimeProvider'\nimport type { A2uiRuntimeProviderProps } from './context'\n\n/** 兼容旧用法,内部直接复用新的 Provider。 */\nexport function A2uiRenderer(props: A2uiRuntimeProviderProps) {\n return <A2uiRuntimeProvider {...props} />\n}\n","import { FileCard } from '@ant-design/x-v2'\nimport React, { useMemo } from 'react'\nimport { useSnapshot } from 'valtio'\nimport { useChatStore } from '../../../stores/Context'\nimport { FilesEvent } from '../../../types'\n\nexport const FilesNode = React.memo(({ item }: { item: FilesEvent }) => {\n const chatStore = useChatStore()\n const configState = useSnapshot(chatStore.config)\n const conversationState = useSnapshot(chatStore.conversation)\n const fileItems = useMemo(() => {\n return (item.files || []).map((file: any) => {\n const previewUrl = configState.services.request.getPreviewUrl({\n path: file.path,\n workspaceId: conversationState.active.id\n })\n\n let fileType = 'file'\n const ext = file.ext?.toLowerCase() || ''\n if (['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'webp'].includes(ext)) {\n fileType = 'image'\n } else if (['mp4', 'webm', 'ogg', 'mov'].includes(ext)) {\n fileType = 'video'\n } else if (['mp3', 'wav', 'ogg', 'm4a'].includes(ext)) {\n fileType = 'audio'\n }\n\n return {\n ...file,\n src: previewUrl,\n type: fileType,\n onClick: () => chatStore.setPreview({ fileUrl: previewUrl, fileName: file.name, suffix: ext })\n }\n })\n }, [item.files])\n\n return <FileCard.List items={fileItems} />\n})\n",".runStartedNode {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 2px 0;\n}\n.runStartedNode .dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: #000;\n animation: loading-dot-blink 1s infinite ease-in-out;\n}\n.runStartedNode .dot:nth-child(2) {\n animation-delay: 0.16s;\n}\n.runStartedNode .dot:nth-child(3) {\n animation-delay: 0.32s;\n}\n@keyframes loading-dot-blink {\n 0%,\n 70%,\n 100% {\n opacity: 0.2;\n }\n 35% {\n opacity: 0.85;\n }\n}\n.chatQuoteMsg {\n margin-top: 0;\n padding-top: 0 !important;\n}\n.chatQuoteMsg:global.ant-bubble > .ant-bubble-body > .ant-bubble-content {\n min-height: auto;\n background-color: var(--ant-color-fill-tertiary) !important;\n color: var(--ant-color-text-tertiary);\n}\n.chatQuoteMsg .quoteTooltip {\n max-width: 100%;\n border: 1px solid #000;\n}\n.chatQuoteMsg .quoteTooltip .quoteTooltipContainer {\n max-height: 200px;\n overflow-y: auto;\n background-color: #fff;\n color: #000;\n}\n","import { Bubble } from '@ant-design/x-v2'\nimport { Flex, Tooltip } from 'antd'\nimport React from 'react'\nimport { RoleContent } from '../../../ui/common/BubbleListItems'\nimport XMarkdown from '../../XMarkdown'\nimport styles from './style.module.less'\n\ninterface QuoteMsgNodeProps {\n quoteMsg: {\n messageContent?: string\n }\n role: RoleContent\n}\n\nexport const QuoteMsgNode = React.memo(({ quoteMsg, role }: QuoteMsgNodeProps) => {\n if (!quoteMsg || !quoteMsg.messageContent) return null\n\n return (\n <Bubble\n className={styles.quoteMsgNode}\n placement={role.placement}\n variant=\"borderless\"\n content={\n <Flex vertical gap={8}>\n <Tooltip arrow={false} title={<XMarkdown content={quoteMsg.messageContent} />} getPopupContainer={(node) => node}>\n <Flex>\n <span>【引用消息】:</span>\n <Flex\n flex={1}\n className=\"text-ellipsis-2\"\n style={{\n color: '#666',\n background: 'rgba(0,0,0,0.04)',\n padding: '2px 8px',\n borderRadius: '4px',\n fontSize: '12px',\n cursor: 'pointer'\n }}\n >\n {quoteMsg.messageContent}\n </Flex>\n </Flex>\n </Tooltip>\n </Flex>\n }\n />\n )\n})\n","import React from 'react'\nimport styles from './style.module.less'\n\nexport const RunStartedNode = React.memo(() => {\n return (\n <span className={styles.runStartedNode}>\n <span className={styles.dot} />\n <span className={styles.dot} />\n <span className={styles.dot} />\n </span>\n )\n})\n","import { Think } from '@ant-design/x-v2'\nimport { useTranslation } from '@zero-library/common'\nimport React from 'react'\nimport { NS_CHAT_COPILOT } from '../../../i18n/constants'\nimport { ConversationMessage } from '../../../types'\nimport { ReadonlyResourceTag, type DisplayResource } from '../../ChatInput/ResourceTag'\nimport XMarkdown from '../../XMarkdown'\nimport { toA2uiDisplayText } from '../A2uiRuntime'\n\nconst RESOURCE_MARKDOWN_TAG = 'resourcetag'\nconst RESOURCE_TOKEN_REGEX = /(\\w+):\\/\\/([^?\\s]+)\\?name=([^&\\s]+)&label=([^\\s]+)/g\n\nfunction QuestionSummary({ content }: { content: string }) {\n const { t } = useTranslation(NS_CHAT_COPILOT)\n const answer = content.replace(/^Question:\\s*/, '').trim() || t('answered')\n return (\n <span style={{ display: 'inline-flex', flexDirection: 'column', gap: 4 }}>\n <span style={{ fontSize: 13, fontWeight: 600, color: '#1677ff', lineHeight: 1.4 }}>Question</span>\n <span style={{ fontSize: 13, color: '#262626', lineHeight: 1.6, whiteSpace: 'pre-wrap' }}>{answer}</span>\n </span>\n )\n}\n\nfunction MessageResourceTag({ data }: Record<string, unknown>) {\n const resource = data as DisplayResource | undefined\n if (!resource) return null\n return <ReadonlyResourceTag resource={resource} />\n}\n\nfunction transformResourceText(content: string) {\n return content.replace(RESOURCE_TOKEN_REGEX, (_, resourceType: string, resourceId: string, resourceName: string, resourceLabel: string) => {\n const resource = {\n resourceType: decodeURIComponent(resourceType),\n resourceId: decodeURIComponent(resourceId),\n resourceName: decodeURIComponent(resourceName),\n resourceLabel: decodeURIComponent(resourceLabel)\n }\n return `<${RESOURCE_MARKDOWN_TAG}>${JSON.stringify(resource)}</${RESOURCE_MARKDOWN_TAG}>`\n })\n}\n\nexport const TextNode = React.memo(\n ({\n item,\n role,\n customComponents,\n message\n }: {\n item: any\n role: number\n customComponents?: Record<string, any>\n message?: ConversationMessage\n messageIndex?: number\n }) => {\n const { t } = useTranslation(NS_CHAT_COPILOT)\n const content = toA2uiDisplayText(role, item?.messageContent)\n const markdownComponents = {\n [RESOURCE_MARKDOWN_TAG]: MessageResourceTag,\n ...customComponents\n }\n\n if (typeof content === 'string' && content.startsWith('Question:')) {\n return <QuestionSummary content={content} />\n }\n\n const markdownContent = typeof content === 'string' ? transformResourceText(content) : content\n\n return (\n <>\n {!!item.reasoningContent && (\n <Think title={t('deepThinking')} style={{ marginBottom: '16px' }}>\n {item.reasoningContent}\n </Think>\n )}\n {!!markdownContent && <XMarkdown message={message} components={markdownComponents} content={markdownContent} />}\n </>\n )\n }\n)\n",".toolCallContent {\n padding: 4px 2px 0;\n overflow-y: auto;\n max-height: 500px;\n background: transparent;\n scrollbar-width: thin;\n scrollbar-color: transparent transparent;\n}\n.toolCallContent::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n.toolCallContent::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0);\n border-radius: 4px;\n transition: background-color 0.3s ease 0.3s;\n}\n.toolCallContent::-webkit-scrollbar-track {\n background: transparent;\n}\n.toolCallContent:hover {\n scrollbar-color: rgba(0, 0, 0, 0.3) transparent;\n}\n.toolCallContent:hover::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0.3);\n transition-delay: 0s;\n}\n.sectionLabel {\n font-size: 12px;\n color: var(--ant-color-text-tertiary);\n margin-bottom: 3px;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n.sectionLabel::before {\n content: '';\n width: 2px;\n height: 8px;\n border-radius: 2px;\n background: var(--ant-color-border);\n opacity: 0.9;\n flex-shrink: 0;\n}\n.plainTextContainer {\n margin: 0;\n font-size: 12px;\n line-height: 1.6;\n color: var(--ant-color-text-secondary);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, monospace;\n white-space: pre-wrap;\n word-break: break-all;\n max-height: calc(10 * 1.6em + 16px);\n overflow-y: auto;\n}\n.plainTextContainer::-webkit-scrollbar {\n width: 6px;\n}\n.plainTextContainer::-webkit-scrollbar-thumb {\n background: var(--ant-color-border);\n border-radius: 3px;\n}\n.plainTextContainer::-webkit-scrollbar-track {\n background: transparent;\n}\n.markdownContainer {\n max-width: 100%;\n overflow: auto hidden;\n font-size: 12px;\n opacity: 0.75;\n}\n.markdownContainer :global .ant-codeHighlighter-header {\n padding: 8px;\n}\n.markdownContainer :global .ant-codeHighlighter-code pre code {\n margin: 0 !important;\n}\n.summaryText {\n font-size: 12px;\n line-height: 1.5;\n color: var(--ant-color-text-tertiary);\n margin-bottom: 4px;\n white-space: pre-wrap;\n word-break: break-word;\n}\n.metaGrid {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-bottom: 4px;\n}\n.metaItem {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 1px 6px;\n border-radius: 999px;\n background: rgba(0, 0, 0, 0.03);\n}\n.metaLabel {\n font-size: 10px;\n color: var(--ant-color-text-tertiary);\n}\n.metaValue {\n font-size: 10px;\n color: var(--ant-color-text-secondary);\n}\n.linkList {\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n.linkItem {\n display: flex;\n align-items: flex-start;\n gap: 6px;\n padding: 4px 0;\n border: none;\n border-radius: 0;\n text-decoration: none;\n background: transparent;\n transition: color 0.15s ease, opacity 0.15s ease;\n}\n.linkItem:hover {\n opacity: 0.85;\n}\n.linkItem:hover .linkTitle {\n color: var(--ant-color-text);\n}\n.linkItem + .linkItem {\n border-top: 1px solid rgba(0, 0, 0, 0.04);\n padding-top: 6px;\n}\n.linkIndex {\n width: 16px;\n flex-shrink: 0;\n font-size: 10px;\n line-height: 1.55;\n color: var(--ant-color-text-quaternary);\n text-align: right;\n}\n.linkTitle {\n display: block;\n flex: 1;\n font-size: 11px;\n line-height: 1.55;\n color: var(--ant-color-text-secondary);\n}\n.linkSummary {\n display: block;\n margin-top: 4px;\n font-size: 11px;\n line-height: 1.5;\n color: var(--ant-color-text-secondary);\n}\n.linkUrl {\n display: block;\n margin-top: 2px;\n font-size: 10px;\n color: var(--ant-color-text-tertiary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.statusBlock {\n padding: 4px 6px;\n border-radius: var(--ant-border-radius);\n font-size: 11px;\n line-height: 1.5;\n margin-bottom: 4px;\n opacity: 0.8;\n}\n.status_info {\n background: rgba(22, 119, 255, 0.08);\n color: var(--ant-color-primary);\n}\n.status_success {\n background: rgba(82, 196, 26, 0.1);\n color: #389e0d;\n}\n.status_warning {\n background: rgba(250, 173, 20, 0.12);\n color: #d48806;\n}\n.status_error {\n background: rgba(255, 77, 79, 0.1);\n color: var(--ant-color-error);\n}\n.errorDisplay {\n border-left: 1px solid rgba(255, 77, 79, 0.45);\n padding-left: 6px;\n}\n.sectionBlock {\n display: block;\n}\n.sectionBlock + .sectionBlock {\n margin-top: 4px;\n padding-top: 4px;\n}\n.compactSectionBlock .sectionLabel {\n margin-bottom: 2px;\n}\n.compactSectionBlock .markdownContainer {\n font-size: 11px;\n}\n.todoList {\n background-color: rgba(255, 255, 255, 0.45);\n}\n.todoItem {\n padding: 2px 10px !important;\n display: flex;\n align-items: flex-start;\n gap: 8px;\n border-bottom: none !important;\n}\n.todoItem:last-child {\n border-bottom: none;\n}\n.statusIconWrapper {\n margin-top: 2px;\n}\n.todoContent {\n flex: 1;\n min-width: 0;\n}\n.todoText {\n font-size: 12px;\n color: var(--ant-color-text-secondary);\n}\n.todoText.completed {\n color: var(--ant-color-text-tertiary);\n text-decoration: line-through;\n}\n.emptyText {\n font-size: 12px;\n}\n","import { useTranslation } from '@zero-library/common'\nimport { Typography } from 'antd'\nimport React from 'react'\nimport { NS_CHAT_COPILOT } from '../../../i18n/constants'\nimport { DisplayBlock, DisplayView } from '../../../types/message.types'\nimport XMarkdown from '../../XMarkdown'\nimport styles from './index.module.less'\n\nexport interface ToolRenderProps {\n args?: any\n result?: any\n argsContent?: { text: string; isJson: boolean; parsed: any }\n resultContent?: { text: string; isJson: boolean; parsed: any } | null\n errorMessage?: string\n item: any\n}\n\nconst toMarkdown = (content: string, kind?: string, lang?: string) => {\n if (kind === 'markdown') return content\n if (kind === 'data') return `\\`\\`\\`json\\n${content}\\n\\`\\`\\``\n return lang ? `\\`\\`\\`${lang}\\n${content}\\n\\`\\`\\`` : `\\`\\`\\`\\n${content}\\n\\`\\`\\``\n}\n\nconst renderBlock = (block: DisplayBlock, index: number) => {\n if (block.kind === 'status') {\n return (\n <div key={`status-${index}`} className={`${styles.statusBlock} ${styles[`status_${block.level}`] || ''}`}>\n {block.text}\n </div>\n )\n }\n\n if (block.kind === 'key_value') {\n return (\n <div key={`kv-${index}`} className={styles.sectionBlock}>\n {block.title && <Typography.Text className={styles.sectionLabel}>{block.title}</Typography.Text>}\n <div className={styles.metaGrid}>\n {block.items.map((item, itemIndex) => (\n <div key={`${item.label}-${itemIndex}`} className={styles.metaItem}>\n <span className={styles.metaLabel}>{item.label}</span>\n <span className={styles.metaValue}>{item.value}</span>\n </div>\n ))}\n </div>\n </div>\n )\n }\n\n if (block.kind === 'links') {\n return (\n <div key={`links-${index}`} className={styles.sectionBlock}>\n {block.title && <Typography.Text className={styles.sectionLabel}>{block.title}</Typography.Text>}\n <div className={styles.linkList}>\n {block.items.map((item, itemIndex) => (\n <a key={`${item.url}-${itemIndex}`} href={item.url} target=\"_blank\" rel=\"noreferrer\" className={styles.linkItem}>\n <span className={styles.linkIndex}>{itemIndex + 1}.</span>\n <span className={styles.linkTitle}>{item.title}</span>\n </a>\n ))}\n </div>\n </div>\n )\n }\n\n const markdown = block.kind === 'markdown' ? block.content : toMarkdown(block.content, 'code', block.lang)\n return (\n <div key={`${block.kind}-${index}`} className={styles.sectionBlock}>\n {block.title && <Typography.Text className={styles.sectionLabel}>{block.title}</Typography.Text>}\n <div className={styles.markdownContainer}>\n <XMarkdown content={markdown} />\n </div>\n </div>\n )\n}\n\nconst renderDisplayView = (view?: DisplayView | null, fallbackLabel?: string) => {\n if (!view) return null\n const hasBody = (view.blocks && view.blocks.length > 0) || (view.meta && view.meta.length > 0) || view.summary\n if (!hasBody) return null\n const hasRichBody = !!(view.blocks && view.blocks.length > 0)\n const isOnlyLinksBlock =\n !fallbackLabel && !view.summary && (!view.meta || view.meta.length === 0) && view.blocks?.length === 1 && view.blocks[0].kind === 'links'\n const label = isOnlyLinksBlock ? undefined : fallbackLabel || (hasRichBody ? view.title : undefined)\n\n return (\n <div className={`${styles.sectionBlock} ${!hasRichBody ? styles.compactSectionBlock : ''}`}>\n {label && <Typography.Text className={styles.sectionLabel}>{label}</Typography.Text>}\n {view.summary && <div className={styles.summaryText}>{view.summary}</div>}\n {view.meta && view.meta.length > 0 && (\n <div className={styles.metaGrid}>\n {view.meta.map((item, index) => (\n <div key={`${item.label}-${index}`} className={styles.metaItem}>\n <span className={styles.metaLabel}>{item.label}</span>\n <span className={styles.metaValue}>{item.value}</span>\n </div>\n ))}\n </div>\n )}\n {view.blocks?.map((block, index) => renderBlock(block, index))}\n </div>\n )\n}\n\nconst DefaultToolRender: React.FC<ToolRenderProps> = ({ argsContent, resultContent, item }) => {\n const { t } = useTranslation(NS_CHAT_COPILOT)\n const sd = item.streamingArgsDisplay\n const isError = item.isError || item.status === 'error'\n\n const hasStructuredDisplay = !!item.displayProtocol || !!sd?.content || !!item.argsDisplay || !!item.resultDisplay\n\n return (\n <div className={isError ? styles.errorDisplay : ''}>\n {!item.argsDisplay && sd?.content && (\n <div className={`${styles.sectionBlock} ${styles.compactSectionBlock}`}>\n <Typography.Text className={styles.sectionLabel}>{sd.title || t('inputGenerating')}</Typography.Text>\n <div className={styles.markdownContainer}>\n <XMarkdown content={toMarkdown(sd.content, sd.kind, sd.lang)} />\n </div>\n </div>\n )}\n\n {renderDisplayView(item.argsDisplay)}\n {renderDisplayView(item.resultDisplay)}\n\n {!hasStructuredDisplay && (\n <>\n {(item.content || item.arguments) && argsContent && (\n <div className={styles.sectionBlock}>\n <Typography.Text className={styles.sectionLabel}>{t('inputParams')}</Typography.Text>\n <div className={styles.markdownContainer}>\n <XMarkdown content={argsContent.isJson ? `\\`\\`\\`json\\n${argsContent.text}\\n\\`\\`\\`` : argsContent.text} />\n </div>\n </div>\n )}\n\n {item.result && resultContent && (\n <div className={styles.sectionBlock}>\n <Typography.Text className={styles.sectionLabel}>{t('outputResult')}</Typography.Text>\n <div className={styles.markdownContainer}>\n <XMarkdown content={resultContent.isJson ? `\\`\\`\\`json\\n${resultContent.text}\\n\\`\\`\\`` : resultContent.text} />\n </div>\n </div>\n )}\n </>\n )}\n </div>\n )\n}\n\nexport default DefaultToolRender\n","import { CheckCircleOutlined, ClockCircleOutlined } from '@ant-design/icons'\nimport { List, Typography, theme } from 'antd'\nimport React from 'react'\nimport { ToolRenderProps } from './default-render'\nimport styles from './index.module.less'\n\nexport interface TodoItem {\n id: string\n title?: string\n content?: string\n status: 'pending' | 'in_progress' | 'completed'\n}\n\nconst TodoWriteRender: React.FC<ToolRenderProps> = ({ args, result }) => {\n const { token } = theme.useToken()\n\n const todos: TodoItem[] = Array.isArray(result) ? result : result?.todos || (Array.isArray(args) ? args : args?.todos) || []\n\n const getStatusIcon = (status: string) => {\n switch (status) {\n case 'completed':\n return <CheckCircleOutlined style={{ color: token.colorSuccess }} />\n case 'in_progress':\n return <ClockCircleOutlined style={{ color: token.colorPrimary }} />\n case 'pending':\n default:\n return <ClockCircleOutlined style={{ color: token.colorTextTertiary }} />\n }\n }\n\n if (!todos || todos.length === 0) {\n return (\n <Typography.Text type=\"secondary\" className={styles.emptyText}>\n 暂无任务\n </Typography.Text>\n )\n }\n\n return (\n <List\n size=\"small\"\n dataSource={todos}\n renderItem={(item) => (\n <List.Item className={styles.todoItem}>\n <div className={styles.statusIconWrapper}>{getStatusIcon(item.status)}</div>\n <div className={styles.todoContent}>\n <Typography.Text className={`${styles.todoText} ${item.status === 'completed' ? styles.completed : ''}`}>\n {item.title || item.content}\n </Typography.Text>\n </div>\n </List.Item>\n )}\n className={styles.todoList}\n />\n )\n}\n\nexport default TodoWriteRender\n","import React from 'react'\nimport { ToolCallEvent } from '../../../types/message.types'\nimport DefaultToolRender, { ToolRenderProps } from './default-render'\nimport TodoWriteRender from './todo-write-render'\n\nexport interface ToolRenderConfig {\n component: React.FC<ToolRenderProps>\n defaultExpanded?: boolean | ((args: any, result: any) => boolean)\n alwaysShowContent?: boolean | ((args: any, result: any) => boolean)\n hideStatus?: boolean\n disableExpandOnError?: boolean\n}\n\nexport const toolRenders: Record<string, ToolRenderConfig> = {\n todo_write: {\n component: TodoWriteRender,\n defaultExpanded: true,\n alwaysShowContent: (args, result) => {\n const todos = Array.isArray(result) ? result : result?.todos || (Array.isArray(args) ? args : args?.todos) || []\n return Array.isArray(todos) && todos.length > 0\n },\n hideStatus: true,\n disableExpandOnError: true\n }\n}\n\nexport const getToolRenderConfig = (item?: ToolCallEvent & Record<string, any>): ToolRenderConfig => {\n if (item?.toolName && toolRenders[item.toolName]) {\n return toolRenders[item.toolName]\n }\n return {\n component: DefaultToolRender,\n defaultExpanded: false,\n alwaysShowContent: false\n }\n}\n\nexport { DefaultToolRender, TodoWriteRender }\nexport type { ToolRenderProps }\n","import React, { useMemo } from 'react'\nimport { DisplayView, ToolCallEvent } from '../../../types/message.types'\nimport { stripA2uiTags } from '../A2uiRuntime'\nimport { getToolRenderConfig, ToolRenderConfig } from './index'\nimport styles from './index.module.less'\n\ninterface ExtendedToolCallEvent extends ToolCallEvent {\n result?: any\n arguments?: any\n errorMessage?: string\n duration?: number\n isError?: boolean\n summary?: string\n /** 流式参数展示态(仅用于参数生成阶段) */\n streamingArgsDisplay?: { title?: string; content: string; kind?: string; lang?: string }\n /** 参数最终展示态 */\n argsDisplay?: DisplayView | null\n /** 结果最终展示态 */\n resultDisplay?: DisplayView | null\n /** 使用 display 协议渲染时,禁止回退展示原始参数/结果 */\n displayProtocol?: boolean\n _streamingIndex?: number\n}\n\ninterface ToolCallItemProps {\n item: ExtendedToolCallEvent\n}\n\n/** 从结果对象的所有字符串字段中剥离 <A2UI> 标签,返回清理后的副本。 */\nfunction stripA2uiTagsFromResult(result: any): any {\n if (!result || typeof result !== 'object' || Array.isArray(result)) return result\n const cleaned: Record<string, any> = {}\n for (const [key, value] of Object.entries(result)) {\n cleaned[key] = typeof value === 'string' && value.includes('<A2UI') ? stripA2uiTags(value) : value\n }\n // 如果剥离后所有字段都为空字符串,返回 null 以避免显示空 JSON\n const hasVisible = Object.values(cleaned).some((v) => v !== '' && v !== null && v !== undefined)\n return hasVisible ? cleaned : null\n}\n\nconst formatContent = (content?: any) => {\n try {\n if (!content) return { text: '', isJson: false, parsed: null }\n if (typeof content === 'object') {\n return { text: JSON.stringify(content, null, 2), isJson: true, parsed: content }\n }\n const parsed = JSON.parse(content)\n if (typeof parsed === 'object' && parsed !== null) {\n return { text: JSON.stringify(parsed, null, 2), isJson: true, parsed }\n }\n // 字符串内容可能包含 A2UI 标签,剥离后展示\n const stripped = content.includes('<A2UI') ? stripA2uiTags(content) : content\n return { text: stripped, isJson: false, parsed: null }\n } catch {\n const text = typeof content === 'string' ? (content.includes('<A2UI') ? stripA2uiTags(content) : content) : ''\n return { text, isJson: false, parsed: null }\n }\n}\n\nconst hasDisplayViewBody = (view?: DisplayView | null) => {\n return !!(view?.summary || view?.blocks?.length || view?.meta?.length)\n}\n\n/**\n * 工具调用内容渲染器。\n * 仅负责渲染工具的参数和结果详情,折叠由外层 AgentExecList 管理。\n */\nconst ToolCallItem: React.FC<ToolCallItemProps> = ({ item }) => {\n const renderConfig: ToolRenderConfig = getToolRenderConfig(item as any)\n const CustomRender = renderConfig.component\n\n const status = useMemo(() => {\n if (item.status) return item.status\n if (item.errorMessage) return 'error'\n if (item.result) return 'success'\n return 'running'\n }, [item.status, item.errorMessage, item.result])\n\n const argsContent = useMemo(() => formatContent(item.arguments || item.content), [item.arguments, item.content])\n const resultContent = useMemo(() => {\n if (!item.result) return null\n const cleanedResult = stripA2uiTagsFromResult(item.result)\n if (!cleanedResult) return null\n return formatContent(cleanedResult)\n }, [item.result])\n\n const hasContent = useMemo(() => {\n if (renderConfig.disableExpandOnError && status === 'error') return false\n\n let alwaysShow = false\n if (typeof renderConfig.alwaysShowContent === 'function') {\n alwaysShow = renderConfig.alwaysShowContent(argsContent.parsed, resultContent?.parsed)\n } else if (renderConfig.alwaysShowContent) {\n alwaysShow = renderConfig.alwaysShowContent\n }\n\n if (alwaysShow) return true\n\n // 关键步骤:display 协议工具不再回退显示原始 JSON。\n // 只有真正存在可见内容时才允许展开,避免\"只有标题却还能展开\"。\n if (item.displayProtocol) {\n if (item.streamingArgsDisplay?.content) return true\n if (hasDisplayViewBody(item.argsDisplay)) return true\n if (hasDisplayViewBody(item.resultDisplay)) return true\n return false\n }\n\n if (argsContent.text) return true\n if (resultContent?.text) return true\n\n return false\n }, [\n renderConfig.disableExpandOnError,\n renderConfig.alwaysShowContent,\n item.displayProtocol,\n item.streamingArgsDisplay,\n item.argsDisplay,\n item.resultDisplay,\n status,\n argsContent.parsed,\n resultContent?.parsed,\n argsContent.text,\n resultContent?.text\n ])\n\n // 无内容时不渲染\n if (!hasContent) return null\n\n return (\n <div className={styles.toolCallContent}>\n <CustomRender\n item={item}\n args={argsContent.parsed}\n result={resultContent?.parsed}\n argsContent={argsContent}\n resultContent={resultContent}\n errorMessage={item.errorMessage}\n />\n </div>\n )\n}\n\nexport default ToolCallItem\n",".wrap {\n margin: 4px 0;\n}\n.wrap :global .ant-collapse-header {\n padding: 6px 8px !important;\n align-items: center !important;\n}\n/* 汇总头 */\n.summary {\n font-size: 13px;\n}\n.summary .summaryIcon {\n display: inline-flex;\n align-items: center;\n margin-right: 2px;\n}\n.summary .count {\n color: var(--ant-color-text, #262626);\n font-weight: 500;\n}\n.summary .divider {\n color: var(--ant-color-text-tertiary, #8c8c8c);\n margin: 0 2px;\n}\n/* 执行列表 */\n.list {\n display: flex;\n flex-direction: column;\n}\n.execRow {\n padding: 0;\n min-width: 0;\n max-width: 100%;\n /* 展开内容(思维链/工具详情):覆盖 x-markdown 深色正文/标题,降低字重,并约束宽度防横向滚动 */\n}\n.execRow .rowLine {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: default;\n padding: 6px;\n border-radius: 4px;\n font-size: 13px;\n line-height: 1.85;\n}\n.execRow .rowLine:hover {\n background: rgba(0, 0, 0, 0.03);\n}\n.execRow .rowIcon {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n line-height: 1;\n}\n.execRow .rowLabel {\n flex-shrink: 0;\n font-weight: 500;\n color: var(--ant-color-text-secondary, #595959);\n white-space: nowrap;\n}\n.execRow .rowLabelError {\n color: var(--ant-color-error, #ff4d4f);\n}\n.execRow .rowDetail {\n flex: 1;\n min-width: 0;\n color: var(--ant-color-text-tertiary, #8c8c8c);\n font-size: 13px;\n line-height: 1.85;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.execRow .rowDetailExpandable {\n cursor: pointer;\n}\n.execRow .rowDetailAction {\n flex-shrink: 0;\n font-size: 12px;\n color: var(--ant-color-primary, #1677ff);\n cursor: pointer;\n white-space: nowrap;\n}\n.execRow .rowDetailAction:hover {\n opacity: 0.85;\n}\n.execRow .rowBody {\n margin: 2px 0 4px 26px;\n padding-left: 8px;\n border-left: 1px solid rgba(0, 0, 0, 0.08);\n font-size: 13px;\n min-width: 0;\n max-width: 100%;\n overflow-wrap: anywhere;\n word-break: break-word;\n}\n.execRow .rowBody :global .x-markdown-light {\n --heading-color: var(--ant-color-text, rgba(0, 0, 0, 0.88));\n --text-color: var(--ant-color-text-secondary, rgba(0, 0, 0, 0.65));\n color: var(--ant-color-text-secondary, rgba(0, 0, 0, 0.65));\n overflow-wrap: anywhere;\n word-break: break-word;\n max-width: 100%;\n}\n","import { memo, useState } from 'react'\nimport styles from './agentExecList.module.less'\n\nexport interface AgentExecRowProps {\n /** 行首图标(状态/类型图标) */\n icon?: React.ReactNode\n /** 类型标签:思考过程 / 已执行 / 执行失败 …… */\n label: string\n /** 单行截断详情 */\n detail: string\n /** 状态(决定标签是否红色) */\n status?: 'success' | 'error' | 'loading' | 'abort'\n /** 展开后的主体(无则不可展开) */\n content?: React.ReactNode\n /** 「查看执行详情」动作(子智能体场景);存在时显示入口 */\n onDetail?: () => void\n}\n\n/**\n * 执行链单行:状态图标 + 类型标签 + 单行截断详情,点击可展开/收起主体。\n * 聚合(AgentExecList)与顺序(AgentExecSequence)两种模式共用,保证交互与外观一致。\n */\nconst AgentExecRow = memo(({ icon, label, detail, status, content, onDetail }: AgentExecRowProps) => {\n const [open, setOpen] = useState(false)\n const hasExpand = !!content\n\n return (\n <div className={styles.execRow}>\n <div className={styles.rowLine} onClick={() => hasExpand && setOpen((o) => !o)}>\n <span className={styles.rowIcon}>{icon}</span>\n <span className={`${styles.rowLabel} ${status === 'error' ? styles.rowLabelError : ''}`}>{label}</span>\n <span className={`${styles.rowDetail} ${hasExpand ? styles.rowDetailExpandable : ''}`} title={detail}>\n {detail || ' '}\n </span>\n {onDetail && (\n <span\n className={styles.rowDetailAction}\n onClick={(e) => {\n e.stopPropagation()\n onDetail()\n }}\n >\n 查看执行详情\n </span>\n )}\n </div>\n {open && content && <div className={styles.rowBody}>{content}</div>}\n </div>\n )\n})\n\nexport default AgentExecRow\n","import {\n BulbOutlined,\n CheckCircleFilled,\n CloseCircleOutlined,\n LoadingOutlined,\n PaperClipOutlined,\n ScheduleOutlined,\n ToolOutlined\n} from '@ant-design/icons'\nimport { Collapse, Flex } from 'antd'\nimport React from 'react'\nimport { ConversationMessage, MessageEvent, TextEvent } from '../types/message.types'\nimport { A2uiPlanNode } from './CustomComponents/A2uiRuntime'\nimport { FilesNode } from './CustomComponents/MessageNode'\nimport ToolCallItem from './CustomComponents/ToolRenders/tool-call-item'\nimport XMarkdown from './XMarkdown'\nimport styles from './agentExecList.module.less'\nimport AgentExecRow from './agentExecRow'\nimport { isSubAgentEvent } from './agentExecShared'\n\n/** 工具状态 → 行标签 */\nexport const TOOL_LABEL: Record<string, string> = {\n loading: '执行中',\n success: '已执行',\n error: '执行失败'\n}\n\n/** 执行行 */\nexport interface AgentExecItem {\n key: string\n kind: 'thinking' | 'tool' | 'error' | 'file' | 'plan'\n status: 'success' | 'error' | 'loading' | 'abort'\n /** 类型标签:思考过程 / 已执行 / 执行失败 …… */\n label: string\n /** 单行截断详情 */\n detail: string\n /** 类型图标:工具→工具图标,思考→思考图标(默认) */\n icon?: React.ReactNode\n /** 展开后的完整内容 */\n content?: React.ReactNode\n /** 右侧抽屉\"查看执行详情\"回调(子智能体场景);存在时显示入口 */\n onDetail?: () => void\n}\n\ninterface BuildCtx {\n message: ConversationMessage\n customComponents?: Record<string, any>\n /** 打开子智能体执行详情抽屉的回调 */\n onViewSubAgent?: (item: any) => void\n}\n\n/** 工具事件 → 状态(success/error/loading) */\nexport function mapToolStatus(tool: any): 'success' | 'error' | 'loading' {\n if (tool.status === 'success') return 'success'\n if (tool.status === 'error' || tool.isError || tool.errorMessage) return 'error'\n if (tool.status === 'pending' || tool.status === 'running') return 'loading'\n // 兜底:有结果为成功,否则视为执行中\n return tool.result !== undefined ? 'success' : 'loading'\n}\n\n/** 工具行详情文本:优先 display.title / title,其次 toolName(+参数),最后工具名 */\nexport function toolDetail(tool: any): string {\n const title = tool.display?.title || tool.title || ''\n if (title) return title\n const name = tool.toolName || ''\n const args = typeof tool.arguments === 'string' ? tool.arguments : ''\n return [name, args].filter(Boolean).join(' ') || '工具调用'\n}\n\n/** 图标基准尺寸 */\nconst ICON_SIZE = 13\n\n/** 工具图标:优先使用数据自带的 toolIcon(URL 图片/emoji),缺省用默认工具图标 */\nexport function renderToolIcon(toolIcon?: string): React.ReactNode {\n if (!toolIcon) return <ToolOutlined style={{ fontSize: ICON_SIZE, color: 'var(--ant-color-text-secondary, #8c8c8c)' }} />\n const isUrl = /^(https?:|\\/)/.test(toolIcon)\n if (isUrl) return <img src={toolIcon} alt=\"tool-icon\" style={{ width: 14, height: 14, objectFit: 'contain' }} />\n return <span style={{ fontSize: ICON_SIZE }}>{toolIcon}</span>\n}\n\n/**\n * 工具行状态图标:执行中 → 旋转 Loading 指示器(完成后随状态切换消失);\n * 成功/失败 → 工具图标(错误行另有错误图标)。\n */\nexport function renderStatusIcon(status: 'success' | 'error' | 'loading', toolIcon?: string): React.ReactNode {\n if (status === 'loading') {\n return <LoadingOutlined spin style={{ fontSize: ICON_SIZE, color: 'var(--ant-color-text-secondary, #8c8c8c)' }} />\n }\n return renderToolIcon(toolIcon)\n}\n\n/**\n * 单条事件 → 执行行(思考 / 工具 / 错误 / 文件 / 计划)。\n * 聚合(buildAgentExecItems)与顺序(AgentExecSequence)两种模式共用,\n * 保证行级外观、子智能体「查看执行详情」入口一致。\n * 文本(text)仅当带 reasoningContent(思考)时才生成行;纯回答文本由调用方单独渲染。\n * @returns 行数据;非上述类型或纯回答文本时返回 null。\n */\nexport function buildExecRow(item: MessageEvent, index: number, ctx: BuildCtx): AgentExecItem | null {\n switch (item.type) {\n case 'text': {\n const textItem = item as TextEvent\n const reasoning = textItem.reasoningContent\n if (!reasoning) return null\n const text = typeof reasoning === 'string' ? reasoning : ''\n return {\n key: `thinking-${index}`,\n kind: 'thinking',\n status: 'success',\n label: '思考过程',\n detail: text,\n icon: <BulbOutlined style={{ fontSize: ICON_SIZE, color: 'var(--ant-color-text-secondary, #8c8c8c)' }} />,\n content: <XMarkdown content={text} message={ctx.message} components={ctx.customComponents} />\n }\n }\n\n case 'toolCall':\n case 'toolResult': {\n const tool = item as any\n const status = mapToolStatus(tool)\n // 子智能体识别:hasSubAgent 标记或 subConversationId 存在\n const isSubAgent = isSubAgentEvent(tool)\n return {\n key: `tool-${tool.toolCallId || index}`,\n kind: 'tool',\n status,\n label: TOOL_LABEL[status] || '执行',\n detail: toolDetail(tool),\n icon: renderStatusIcon(status, tool.toolIcon),\n // 子智能体:不在行内展开子执行内容,只保留\"查看执行详情\"打开右侧抽屉\n content: isSubAgent ? undefined : <ToolCallItem item={tool} />,\n onDetail: isSubAgent && ctx.onViewSubAgent ? () => ctx.onViewSubAgent?.(tool) : undefined\n }\n }\n\n case 'stepError':\n case 'runFailed': {\n const err = item as any\n return {\n key: `error-${index}`,\n kind: 'error',\n status: 'error',\n label: '执行失败',\n detail: err.errorMessage || '',\n icon: <CloseCircleOutlined style={{ fontSize: ICON_SIZE, color: 'var(--ant-color-error, #ff4d4f)' }} />,\n content: err.errorMessage ? <XMarkdown content={err.errorMessage} message={ctx.message} components={ctx.customComponents} /> : undefined\n }\n }\n\n case 'files': {\n const files = (item as any).files || []\n const detail =\n files\n .map((f: any) => f.name)\n .filter(Boolean)\n .join('、') || ''\n return {\n key: `files-${index}`,\n kind: 'file',\n status: 'success',\n label: '文件',\n detail,\n icon: <PaperClipOutlined style={{ fontSize: ICON_SIZE, color: 'var(--ant-color-text-secondary, #8c8c8c)' }} />,\n content: <FilesNode item={item as any} />\n }\n }\n\n case 'plan': {\n const plan = item as any\n return {\n key: `plan-${index}`,\n kind: 'plan',\n status: 'success',\n label: '执行计划',\n detail: plan.title || '',\n icon: <ScheduleOutlined style={{ fontSize: ICON_SIZE, color: 'var(--ant-color-text-secondary, #8c8c8c)' }} />,\n content: <A2uiPlanNode item={plan} />\n }\n }\n\n default:\n return null\n }\n}\n\n/**\n * 从消息 content 事件聚合\"执行行\"(平铺)。\n * 复用 buildExecRow 生成每行,并对重复思考做去重。\n * 同时返回完成/失败/执行中计数,供汇总头展示。\n */\nexport function buildAgentExecItems(\n content: MessageEvent[],\n ctx: BuildCtx\n): { items: AgentExecItem[]; completed: number; failed: number; loading: number } {\n const items: AgentExecItem[] = []\n // 上一段“思考过程”的原始文本,用于去重(实时推送时同一段推理可能被重复推送成多个 text 事件)\n let lastThinkingText: string | null = null\n\n ;(content || []).forEach((item, index) => {\n const row = buildExecRow(item, index, ctx)\n if (!row) return\n if (row.kind === 'thinking') {\n if (row.detail === lastThinkingText) return\n lastThinkingText = row.detail\n }\n items.push(row)\n })\n\n const completed = items.filter((i) => i.status === 'success').length\n const failed = items.filter((i) => i.status === 'error').length\n const loading = items.filter((i) => i.status === 'loading').length\n\n return { items, completed, failed, loading }\n}\n\nexport interface AgentExecListProps {\n items: AgentExecItem[]\n /** 完成项数 */\n completed: number\n /** 失败项数 */\n failed: number\n /** 执行中项数(>0 时展示) */\n loading?: number\n /** 是否默认展开 */\n defaultActive?: boolean\n}\n\n/**\n * 自建 Collapse 包装:汇总头「X 项完成 | Y 项失败」+ 折叠列表\n * 行样式对齐目标图:状态图标 + 类型标签 + 单行截断详情\n */\nexport default function AgentExecList({ items, completed, failed, loading = 0, defaultActive = true }: AgentExecListProps) {\n if (!items.length) return null\n\n const summary = (\n <Flex align=\"center\" gap={8} className={styles.summary}>\n <span className={styles.summaryIcon}>\n <CheckCircleFilled style={{ color: '#faad14', fontSize: 14 }} />\n </span>\n <span className={styles.count}>{completed} 项完成</span>\n <span className={styles.divider}>|</span>\n <span className={styles.count}>{failed} 项失败</span>\n {loading > 0 && (\n <>\n <span className={styles.divider}>|</span>\n <span className={styles.count}>{loading} 项执行中</span>\n </>\n )}\n </Flex>\n )\n\n return (\n <Collapse\n ghost\n size=\"small\"\n className={styles.wrap}\n defaultActiveKey={defaultActive ? ['agent-exec'] : []}\n items={[\n {\n key: 'agent-exec',\n label: summary,\n children: (\n <div className={styles.list}>\n {items.map((item) => (\n <AgentExecRow\n key={item.key}\n icon={item.icon}\n label={item.label}\n detail={item.detail}\n status={item.status}\n content={item.content}\n onDetail={item.onDetail}\n />\n ))}\n </div>\n )\n }\n ]}\n />\n )\n}\n","/* 顺序(非聚合)执行链:外层时间线容器。\n 行内(图标/标签/详情/可折叠主体)样式由共享 agentExecRow 复用聚合模式的 agentExecList.module.less。 */\n.seq {\n width: 100%;\n min-width: 0;\n}\n","import { Flex } from 'antd'\nimport { memo } from 'react'\nimport { ConversationMessage, MessageEvent, TextEvent } from '../types/message.types'\nimport { TextNode } from './CustomComponents/MessageNode'\nimport type { AgentExecItem } from './agentExecList'\nimport { buildExecRow } from './agentExecList'\nimport AgentExecRow from './agentExecRow'\nimport styles from './agentExecSequence.module.less'\n\nexport interface AgentExecSequenceProps {\n content: MessageEvent[]\n message: ConversationMessage\n customComponents?: Record<string, any>\n messageIndex?: number\n /** 消息角色:用于 TextNode 的 A2UI 文本转换 */\n role: number\n /** 打开子智能体执行详情抽屉的回调 */\n onViewSubAgent?: (item: any) => void\n}\n\n/** 行数据 → 可折叠行;与聚合模式共用 AgentExecRow */\nfunction renderRow(row: AgentExecItem, key: string) {\n return (\n <AgentExecRow key={key} icon={row.icon} label={row.label} detail={row.detail} status={row.status} content={row.content} onDetail={row.onDetail} />\n )\n}\n\n/**\n * 顺序(非聚合)执行链渲染器。\n * 按真实事件顺序平铺渲染:思考(可折叠行)→ 正文(按实际顺序)→ 工具/文件/计划/错误(可折叠行)。\n * 行数据复用 buildExecRow,与聚合模式共用 AgentExecRow,保证交互与外观一致;\n * 子智能体工具行保留「查看执行详情」入口。\n */\nconst AgentExecSequence = memo(({ content, message, customComponents, messageIndex, role, onViewSubAgent }: AgentExecSequenceProps) => {\n const ctx = { message, customComponents, onViewSubAgent }\n const nodes: React.ReactNode[] = []\n // 上一段“思考过程”的原始文本,用于去重(实时推送时同一段推理可能被重复推送成多个 text 事件)\n let lastThinkingText: string | null = null\n\n ;(content || []).forEach((item, index) => {\n if (item.type === 'text') {\n const textItem = item as TextEvent\n // 思考 → 可折叠行(与聚合一致,去重)\n if (textItem.reasoningContent) {\n const thinking = buildExecRow(item, index, ctx)\n if (thinking && thinking.detail !== lastThinkingText) {\n lastThinkingText = thinking.detail\n nodes.push(renderRow(thinking, `seq-thinking-${index}`))\n }\n }\n // 回答 → 正文,按实际顺序展示(剥离 reasoningContent,避免与思考行重复)\n if (textItem.messageContent) {\n nodes.push(\n <TextNode\n key={`seq-answer-${index}`}\n item={{ ...textItem, reasoningContent: undefined }}\n role={role}\n message={message}\n customComponents={customComponents}\n messageIndex={messageIndex}\n />\n )\n }\n return\n }\n\n const row = buildExecRow(item, index, ctx)\n if (row) nodes.push(renderRow(row, `seq-${index}`))\n })\n\n if (!nodes.length) return null\n\n return (\n <Flex vertical gap={10} className={styles.seq}>\n {nodes}\n </Flex>\n )\n})\n\nexport default AgentExecSequence\n","import '@ant-design/x-markdown/themes/light.css'\nimport { Bubble } from '@ant-design/x-v2'\nimport { isEmptyObj } from '@zero-library/common'\nimport { Flex } from 'antd'\nimport React, { useCallback, useMemo } from 'react'\nimport { useSnapshot } from 'valtio'\nimport { useChatStore } from '../stores/Context'\nimport { ChatLayoutMessageList, ConversationMessage, FilesEvent, InputFile, TextEvent } from '../types'\nimport { RoleContent } from '../ui/common/BubbleListItems'\nimport AgentExecList, { buildAgentExecItems } from './agentExecList'\nimport AgentExecSequence from './agentExecSequence'\nimport { hasExecContent } from './agentExecShared'\nimport { A2uiMessageCards } from './CustomComponents/A2uiRuntime'\nimport { QuoteMsgNode, RunStartedNode, TextNode } from './CustomComponents/MessageNode'\nimport styles from './styles.module.less'\n\nexport interface MessageRenderProps {\n role: RoleContent\n message: ConversationMessage\n messageIndex?: number\n loading?: boolean\n onFilePreview?: (file: InputFile) => void\n containerRef?: React.Ref<HTMLDivElement>\n /** message自定义标记渲染组件 */\n customComponents?: ChatLayoutMessageList['customComponents']\n}\n\nexport default React.memo(({ role, message, messageIndex = -1, loading, containerRef, customComponents }: MessageRenderProps) => {\n const chatStore = useChatStore()\n // 执行链展示模式(聚合 / 顺序),对 config.agentExecMode 变化保持响应\n const configState = useSnapshot(chatStore.config)\n const execMode = configState.agentExecMode || 'aggregate'\n const isSequence = execMode === 'sequence'\n // 稳定引用,避免 chatStore 进入 useMemo 依赖\n const openSubAgent = useCallback((item: any) => chatStore.openSubAgent(item), [chatStore])\n // 聚合执行行(图片风格:状态图标 + 标签 + 单行截断详情)+ 汇总计数\n const {\n items,\n completed,\n failed,\n loading: runLoading\n } = useMemo(\n () =>\n buildAgentExecItems(message.content || [], {\n message,\n customComponents,\n // 子智能体:打开右侧执行详情抽屉\n onViewSubAgent: openSubAgent\n }),\n [message, customComponents, openSubAgent]\n )\n\n // 顺序模式下是否存在可渲染的执行链内容(含仅回答但无思考/工具的消息)\n const hasSequenceContent = useMemo(() => hasExecContent(message.content || []), [message.content])\n\n // 最终回答(最后一个 text 的 messageContent),聚合模式下独立于执行列表渲染;\n // 顺序模式下由 AgentExecSequence 按实际顺序内联渲染,不再单独展示。\n const finalAnswer = useMemo(() => {\n const lastText = [...(message.content || [])].reverse().find((i) => i.type === 'text') as TextEvent | undefined\n if (!lastText) return null\n // 仅以 messageContent 作为回答内容(TextNode 不渲染 text 字段,兜底 text 会产生空气泡)\n const content = lastText.messageContent || ''\n if (!String(content).trim()) return null\n // 只渲染 messageContent,剥离 reasoningContent(已在\"思考过程\"行展示)\n const answerItem = { ...lastText, reasoningContent: undefined }\n return <TextNode item={answerItem} role={message.role} customComponents={customComponents} message={message} messageIndex={messageIndex} />\n }, [message, messageIndex, customComponents])\n\n const quoteMsg = useMemo(() => {\n const quoteMsg = {} as { files?: FilesEvent; messageContent?: string }\n if (message.params) {\n try {\n const citation = JSON.parse(message.params).citation\n if (citation) {\n quoteMsg.messageContent = citation\n }\n } catch (e) {}\n }\n return isEmptyObj(quoteMsg) ? null : quoteMsg\n }, [message.params, message.quoteMsg])\n\n // 是否存在工具调用(A2UI 卡片跟随渲染)\n const hasToolCall = useMemo(() => (message.content || []).some((i) => i.type === 'toolCall' || i.type === 'toolResult'), [message])\n\n // generating 为 true 且尚未产出可见内容时显示等待指示器;\n // 一旦内容已出现(最终回答/执行链),即使仍在 generating/loading 也不再渲染三个点。\n const lastContentType = message.content?.[message.content.length - 1]?.type\n // 是否已有可见内容(聚合:折叠行;顺序:时间线条目)\n const hasVisibleContent = isSequence ? hasSequenceContent : items.length > 0\n const showPending = loading && !finalAnswer && (!hasVisibleContent || lastContentType !== 'text')\n\n if (isSequence ? !hasSequenceContent && !showPending : items.length === 0 && !finalAnswer && !showPending) return null\n\n return (\n <Flex ref={containerRef} vertical gap={8}>\n {isSequence\n ? hasSequenceContent && (\n <Bubble\n role={role.user}\n placement={role.placement}\n variant=\"borderless\"\n className={styles.bubble}\n content={\n <AgentExecSequence\n content={message.content || []}\n message={message}\n customComponents={customComponents}\n messageIndex={messageIndex}\n role={message.role}\n onViewSubAgent={openSubAgent}\n />\n }\n />\n )\n : items.length > 0 && (\n <Bubble\n role={role.user}\n placement={role.placement}\n variant=\"borderless\"\n className={styles.bubble}\n content={<AgentExecList items={items} completed={completed} failed={failed} loading={runLoading} />}\n />\n )}\n {/* A2UI 卡片紧跟在执行列表之后渲染 */}\n {hasToolCall && messageIndex >= 0 && <A2uiMessageCards messageIndex={messageIndex} message={message} />}\n {/* 最终回答独立于执行列表渲染(仅聚合模式) */}\n {!isSequence && finalAnswer && <Bubble role={role.user} placement={role.placement} className={styles.bubble} content={finalAnswer} />}\n {showPending && role.user === 'agent' && <Bubble role={role.user} placement={role.placement} content={<RunStartedNode />} />}\n {quoteMsg && <QuoteMsgNode quoteMsg={quoteMsg} role={role} />}\n </Flex>\n )\n})\n","import { Prompts, Welcome } from '@ant-design/x-v2'\nimport { RenderWrapper, useTranslation } from '@zero-library/common'\nimport { Avatar, Flex } from 'antd'\nimport classNames from 'classnames'\nimport { useMemo } from 'react'\nimport { useSnapshot } from 'valtio'\nimport AuthImage from '../../components/AuthImage'\nimport IconFont from '../../components/IconFont'\nimport { NS_CHAT_COPILOT } from '../../i18n/constants'\nimport { useChatStore } from '../../stores/Context'\nimport type { ChatLayoutWelcomeMessage } from '../../types'\nimport styles from './styles.module.less'\n\nexport default ({ icon = true, title = true, description = true, prompts = true }: ChatLayoutWelcomeMessage) => {\n const { t } = useTranslation(NS_CHAT_COPILOT)\n const chatStore = useChatStore()\n const agentState = useSnapshot(chatStore.agent)\n\n const recommendQuestions = useMemo(() => {\n return agentState.agentInfo?.config?.onboarding?.guiding?.map((item, index) => ({\n key: String(index),\n description: item\n }))\n }, [agentState.agentInfo?.config?.onboarding?.guiding])\n\n return (\n <Flex vertical justify=\"center\" className={styles.chatWelcomeWrap}>\n <Welcome\n className={classNames(styles.chatWelcome, 'p-t-32')}\n variant=\"borderless\"\n icon={\n <RenderWrapper\n control={icon}\n DefaultComponent={\n agentState.agentInfo?.iconUrl ? (\n /^https?:\\/\\//i.test(agentState.agentInfo?.iconUrl) ? (\n <Avatar size={58} src={agentState.agentInfo?.iconUrl} />\n ) : (\n <AuthImage size={58} path={agentState.agentInfo?.iconUrl} />\n )\n ) : (\n <Avatar size={58} src={<IconFont type=\"icon-lolrai\" className={styles.defaultLogo} />} />\n )\n }\n />\n }\n title={<RenderWrapper control={title} DefaultComponent={t('helloIam', { name: agentState.agentInfo?.name || '' })} />}\n description={\n <RenderWrapper\n control={description}\n DefaultComponent={<div dangerouslySetInnerHTML={{ __html: agentState.agentInfo?.config?.onboarding?.greeting || '' }}></div>}\n />\n }\n />\n\n {(agentState.agentInfo?.config?.onboarding?.guiding?.length ?? 0) > 0 && (\n <RenderWrapper\n control={prompts}\n DefaultComponent={\n <Prompts\n className={classNames('m-t-16', styles.promptItem)}\n wrap\n onItemClick={(info) => chatStore.sendMessage(info.data.description as string)}\n items={recommendQuestions}\n />\n }\n />\n )}\n </Flex>\n )\n}\n","import { CopyOutlined, DislikeOutlined, LikeOutlined } from '@ant-design/icons'\nimport { Bubble, BubbleProps } from '@ant-design/x-v2'\nimport type { BubbleItemType } from '@ant-design/x-v2/es/bubble'\nimport { copyText, htmlToMarkdown, isBoolean, RenderWrapper, shouldRender, UserAvatar } from '@zero-library/common'\nimport { Button, Flex, GetRef, Spin, Typography } from 'antd'\nimport classNames from 'classnames'\nimport { useEffect, useMemo, useRef } from 'react'\nimport { useSnapshot } from 'valtio'\nimport { A2uiRenderer } from '../../components/CustomComponents/A2uiRuntime'\nimport MessageRender from '../../components/MessageRender'\nimport { ConversationMemberEnum } from '../../core/constants'\nimport { useChatStore } from '../../stores/Context'\nimport { ChatLayoutMessageList, ConversationMessage, MessageBoxType } from '../../types'\nimport styles from './styles.module.less'\nimport WelcomeItem from './WelcomeItem'\n\nconst { Text } = Typography\n\nexport interface RoleContent {\n role: number\n user: ConversationMemberEnum\n placement: BubbleProps['placement']\n avatar?: any\n}\n\n/* 🌟 消息列表 */\nexport default ({\n firstMessages = [],\n welcomeMessage = true,\n avatar = { user: false, agent: true },\n agentActions = false,\n customComponents\n}: ChatLayoutMessageList) => {\n const chatStore = useChatStore()\n const agentState = useSnapshot(chatStore.agent)\n const conversationState = useSnapshot(chatStore.conversation)\n\n // 构建角色信息和消息显示位置\n const conversationRoles = useMemo(() => {\n const roles = {} as Record<ConversationMemberEnum, RoleContent>\n if (agentState.agentInfo?.id) {\n roles.agent = {\n user: 'agent',\n role: 2,\n placement: 'start'\n // avatar: (isBoolean(avatar) ? avatar : avatar?.agent) ? { src: agentState.agentInfo.iconUrl, icon: <OpenAIOutlined /> } : null\n }\n }\n roles.user = {\n user: 'user',\n role: 1,\n placement: 'end',\n avatar: (isBoolean(avatar) ? avatar : avatar?.user) ? <UserAvatar size={30} avatarSrc=\"\" userName=\"\" /> : null\n }\n\n return roles\n }, [agentState.agentInfo.id])\n\n // 当前会话参数\n const chatMessage = useMemo(\n () => conversationState.messages[conversationState.active.id] || ({} as MessageBoxType),\n [conversationState.messages[conversationState.active.id]]\n )\n const conversationMessages = chatMessage?.message || []\n\n // 获取角色配置\n const getRole = (role: number) => {\n const roleKey = Object.keys(conversationRoles).find((key) => conversationRoles[key].role === role)\n return conversationRoles[roleKey] || ({} as RoleContent)\n }\n const messageRefs = useRef<ObjectType<HTMLDivElement>>({})\n\n const chatRecords = useMemo(() => {\n const chatRecords: BubbleItemType[] = []\n\n conversationMessages.forEach((message, messageIndex) => {\n const role = getRole(message.role)\n const isLeftBubble = role.user === 'agent'\n const isMessageLoading = !!message.generating\n const baseKey = `${message.executionId}-${messageIndex}`\n\n const footerNode = !isMessageLoading ? (\n <Flex align=\"center\" gap={8}>\n {message.stopFlag && isLeftBubble && (\n <Text type=\"secondary\" style={{ flex: 'none' }}>\n 已停止\n </Text>\n )}\n <Flex align=\"center\" gap={4}>\n {role.user === 'agent' && (\n <>\n <Button\n onClick={async () => {\n const container = messageRefs.current[baseKey]\n if (!container) return\n const markdown = htmlToMarkdown(container.innerHTML) || container.innerText || ''\n copyText(markdown)\n }}\n color=\"default\"\n variant=\"text\"\n size=\"small\"\n icon={<CopyOutlined />}\n />\n <Button\n color={message.feedback === 1 ? 'primary' : 'default'}\n size=\"small\"\n variant=\"text\"\n icon={<LikeOutlined />}\n onClick={() => chatStore.feedback(message.executionId, 1, messageIndex)}\n />\n <Button\n color={message.feedback === 2 ? 'primary' : 'default'}\n size=\"small\"\n variant=\"text\"\n icon={<DislikeOutlined />}\n onClick={() => chatStore.feedback(message.executionId, 2, messageIndex)}\n />\n <RenderWrapper\n control={agentActions}\n ctx={{\n message,\n get dom() {\n return messageRefs.current[baseKey]\n }\n }}\n />\n </>\n )}\n </Flex>\n </Flex>\n ) : undefined\n\n chatRecords.push({\n key: baseKey,\n role: String(role.role),\n placement: role.placement,\n avatar: role.avatar,\n content: (\n <MessageRender\n role={role}\n message={message as ConversationMessage}\n messageIndex={messageIndex}\n customComponents={customComponents}\n loading={isMessageLoading}\n containerRef={(node) => {\n if (node) {\n messageRefs.current[baseKey] = node\n } else {\n delete messageRefs.current[baseKey]\n }\n }}\n />\n ),\n footer: footerNode,\n variant: 'borderless'\n })\n })\n\n return chatRecords\n }, [agentActions, chatStore, conversationMessages, conversationRoles, conversationState.active.id])\n\n const firstMessagesRecord = useMemo(() => {\n return (firstMessages || []).map((firstMessage, index) => {\n const { member, content, contentRender, ...args } = firstMessage\n const roleObj = getRole(member)\n\n return {\n key: `firstMessage-${index}`,\n role: roleObj.user,\n placement: roleObj.placement,\n avatar: roleObj.avatar,\n styles: {\n body: {\n width: 'auto'\n }\n },\n variant: 'borderless',\n ...args,\n content: contentRender ? contentRender({ index, member }) : content\n } as BubbleItemType\n })\n }, [firstMessages, conversationRoles])\n\n const welcomeMessageRecord = useMemo(() => {\n const isExist = shouldRender(welcomeMessage)\n\n return isExist\n ? [\n {\n key: 'welcome-message',\n content: <RenderWrapper control={welcomeMessage} DefaultComponent={WelcomeItem} />,\n variant: 'borderless'\n } as BubbleItemType\n ]\n : []\n }, [welcomeMessage, agentState.agentInfo.id])\n\n const bubbleListItems = useMemo(() => {\n const list: BubbleItemType[] = []\n list.push(...firstMessagesRecord)\n list.push(...chatRecords)\n if (list.length) {\n return list\n }\n return [...welcomeMessageRecord]\n }, [chatRecords, welcomeMessageRecord, firstMessagesRecord])\n\n const listRef = useRef<GetRef<typeof Bubble.List>>(null)\n // 真实控制是否自动滚动的 ref(不会触发渲染)\n const autoScrollRef = useRef(true)\n\n const handleScroll = (el: any) => {\n const target = el.target\n const distanceToBottom = target.scrollHeight - target.scrollTop - target.clientHeight\n // 小于 150px 表示接近底部,允许自动滚动\n autoScrollRef.current = distanceToBottom < 90\n }\n useEffect(() => {\n const latestMessage = conversationMessages[conversationMessages?.length - 1]\n if (!latestMessage) return\n\n if (latestMessage.generating) {\n autoScrollRef.current = true\n }\n }, [conversationMessages?.length])\n useEffect(() => {\n const el = listRef.current?.nativeElement\n if (!el || !bubbleListItems.length) return\n\n if (autoScrollRef.current) {\n setTimeout(() => {\n if (autoScrollRef.current) {\n listRef.current?.scrollTo({\n top: 'bottom',\n behavior: 'instant'\n })\n }\n }, 300)\n }\n }, [bubbleListItems])\n\n return (\n <A2uiRenderer messages={conversationMessages}>\n <Spin spinning={conversationState.loading} classNames={{ root: 'full-spin' }}>\n <Bubble.List\n autoScroll={false}\n key={conversationState.active.id}\n ref={listRef}\n items={bubbleListItems}\n className={classNames(styles.bubbleList, 'height-full', 'scroll-fade-in')}\n onScroll={handleScroll}\n />\n </Spin>\n </A2uiRenderer>\n )\n}\n","import { CloseOutlined, DownOutlined, SearchOutlined, UpOutlined } from '@ant-design/icons'\nimport { useTranslation } from '@zero-library/common'\nimport { Button, Checkbox, Empty, Flex, Input, Layout, Modal, Spin, Tag, theme, Typography } from 'antd'\nimport classNames from 'classnames'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { useSnapshot } from 'valtio'\nimport IconFont from '../../../components/IconFont'\nimport { LibraryTypeEnum, TagTypeEnum } from '../../../core/constants'\nimport { NS_CHAT_COPILOT } from '../../../i18n'\nimport { useChatStore } from '../../../stores/Context'\nimport { AgentSpec, Library, Skill, WorkspaceTag } from '../../../types'\nimport styles from './style.module.less'\n\nconst { Sider, Content } = Layout\nconst { Title, Text } = Typography\n\nexport interface ResourceSelectorModalProps {\n open: boolean\n type: 'skill' | 'knowledge'\n onCancel?: () => void\n}\n\ntype ResourceItem = Skill | Library\n\nconst ALL_CATEGORY_ID = 'all'\n\nexport default ({ open, type, onCancel }: ResourceSelectorModalProps) => {\n const chatStore = useChatStore()\n const conversationState = useSnapshot(chatStore.conversation)\n const { t } = useTranslation(NS_CHAT_COPILOT)\n const { token } = theme.useToken()\n const tagsContainerRef = useRef<HTMLDivElement>(null)\n\n const isSkill = type === 'skill'\n\n const [loading, setLoading] = useState(false)\n const [resources, setResources] = useState<ResourceItem[]>([])\n const [categories, setCategories] = useState<WorkspaceTag[]>([])\n\n const [selectedCategoryIds, setSelectedCategoryIds] = useState<string[]>([ALL_CATEGORY_ID])\n const [selectedIds, setSelectedIds] = useState<string[]>([])\n const [searchText, setSearchText] = useState('')\n const [tagsExpanded, setTagsExpanded] = useState(false)\n const [showExpandBtn, setShowExpandBtn] = useState(false)\n\n // 1. 获取数据与初始化\n useEffect(() => {\n if (!open) {\n setResources([])\n setCategories([])\n setSelectedCategoryIds([ALL_CATEGORY_ID])\n setSelectedIds([])\n setSearchText('')\n setTagsExpanded(false)\n setShowExpandBtn(false)\n return\n }\n\n let canceled = false\n setLoading(true)\n\n const fetchData = async () => {\n try {\n const tagType = isSkill ? TagTypeEnum.SKILL : TagTypeEnum.KNOWLEDGE\n const [tagsRes, resourcesRes] = await Promise.all([\n chatStore.config.services.request.listTags({ tagType }),\n isSkill\n ? chatStore.config.services.request.listSkills()\n : chatStore.config.services.request.listLibrarys({ libraryType: LibraryTypeEnum.KNOWLEDGE })\n ])\n\n if (canceled) return\n\n const fetchedResources = (resourcesRes.data || []) as ResourceItem[]\n setCategories(tagsRes.data || [])\n setResources(fetchedResources)\n\n // 初始化选中项,并过滤掉已经不存在的脏数据\n const spec = conversationState.active.spec\n const initialItems = isSkill ? spec?.skills?.items : spec?.knowledges?.items\n const validIds = new Set(fetchedResources.map((r) => r.id))\n\n const validSelectedIds = (initialItems || []).map((item) => item.id).filter((id) => validIds.has(id))\n setSelectedIds(validSelectedIds)\n\n // 如果发现脏数据,即时更新 store\n if (initialItems && validSelectedIds.length !== initialItems.length) {\n const currentSpec = chatStore.conversation.active.spec || ({} as AgentSpec)\n const clonedSpec = JSON.parse(JSON.stringify(currentSpec))\n\n chatStore.setConversationSpec(getNextSpec(clonedSpec, validSelectedIds, fetchedResources))\n }\n } finally {\n if (!canceled) setLoading(false)\n }\n }\n\n fetchData()\n return () => {\n canceled = true\n }\n }, [open, isSkill, chatStore, conversationState.active.spec])\n\n // 2. 标签区域展开/收起按钮计算\n useEffect(() => {\n if (!open) return\n\n const checkHeight = () => {\n if (tagsContainerRef.current) {\n setShowExpandBtn(tagsContainerRef.current.scrollHeight > 60)\n }\n }\n\n // 延迟检查以确保 DOM 已渲染\n setTimeout(checkHeight, 0)\n const observer = new ResizeObserver(checkHeight)\n if (tagsContainerRef.current) observer.observe(tagsContainerRef.current)\n\n return () => observer.disconnect()\n }, [open, selectedIds])\n\n // 「全部」分类在渲染期拼接,保证切换语言后文案同步更新\n const allCategories = useMemo<WorkspaceTag[]>(() => [{ id: ALL_CATEGORY_ID, name: t('all') }, ...categories], [categories, t])\n\n // 3. 筛选列表\n const filteredResources = useMemo(() => {\n return resources.filter((item) => {\n const matchCategory = selectedCategoryIds.includes(ALL_CATEGORY_ID) || item.tagIds?.some((id) => selectedCategoryIds.includes(id))\n\n const searchLower = searchText.trim().toLowerCase()\n const itemName = item.name?.toLowerCase() || ''\n const itemAlias = 'aliasName' in item ? item.aliasName?.toLowerCase() || '' : ''\n const matchSearch = !searchLower || itemName.includes(searchLower) || itemAlias.includes(searchLower)\n\n return matchCategory && matchSearch\n })\n }, [resources, selectedCategoryIds, searchText])\n\n /**\n * 构造新的 AgentSpec 配置\n * @param spec - 当前的 AgentSpec 会话配置\n * @param ids - 本次弹窗选中的资源 ID 列表\n * @param resourceList - 当前获取到的完整资源列表数据\n * @returns 新的 AgentSpec 会话配置\n */\n const getNextSpec = (spec: AgentSpec, ids: string[], resourceList: ResourceItem[]) => {\n const nextSpec: AgentSpec = { ...spec } as AgentSpec\n\n if (isSkill) {\n nextSpec.skills = {\n items: ids.map((id) => ({ id }))\n }\n } else {\n nextSpec.knowledges = {\n items: ids.map((id) => {\n const resource = resourceList.find((r) => r.id === id)\n return { id, name: resource?.name || '' }\n })\n }\n }\n\n return nextSpec\n }\n\n /**\n * 处理左侧分类标签的勾选与取消勾选\n * @param categoryId - 操作的分类标签 ID\n * @param checked - 是否勾选\n */\n const handleCategoryChange = (categoryId: string, checked: boolean) => {\n if (categoryId === ALL_CATEGORY_ID) {\n setSelectedCategoryIds(checked ? [ALL_CATEGORY_ID] : [])\n return\n }\n\n let nextIds = selectedCategoryIds.filter((id) => id !== ALL_CATEGORY_ID)\n if (checked) {\n nextIds.push(categoryId)\n } else {\n nextIds = nextIds.filter((id) => id !== categoryId)\n }\n\n setSelectedCategoryIds(nextIds.length ? nextIds : [ALL_CATEGORY_ID])\n }\n\n /**\n * 切换单个资源的选中状态\n * @param id - 资源 ID\n */\n const toggleItemSelection = (id: string) => {\n setSelectedIds((prev) => (prev.includes(id) ? prev.filter((i) => i !== id) : [...prev, id]))\n }\n\n /**\n * 点击确认按钮,将本地选中的数据回写到全局 Store\n */\n const handleConfirm = () => {\n // 从代理直接读取,并深拷贝,避免 snapshot 带来的不可变或陈旧闭包问题\n const currentSpec = chatStore.conversation.active.spec || ({} as AgentSpec)\n const clonedSpec = JSON.parse(JSON.stringify(currentSpec))\n\n chatStore.setConversationSpec(getNextSpec(clonedSpec, selectedIds, resources))\n onCancel?.()\n }\n\n /**\n * 辅助方法:通过 ID 获取展示给用户的资源名称,优先使用 aliasName\n * @param id - 资源 ID\n * @returns 资源的展示名称\n */\n const getDisplayName = (id: string) => {\n const item = resources.find((r) => r.id === id)\n if (!item) return id\n return 'aliasName' in item && item.aliasName ? item.aliasName : item.name || id\n }\n\n const title = isSkill ? t('selectSkill') : t('selectKnowledge')\n const iconType = isSkill ? 'icon-skill' : 'icon-remark'\n\n return (\n <Modal\n open={open}\n className={styles.customModal}\n onCancel={onCancel}\n closeIcon={<CloseOutlined />}\n width={960}\n centered\n destroyOnHidden\n title={\n <div className={styles.titleContainer}>\n <Title level={5}>{title}</Title>\n </div>\n }\n footer={\n <div className={styles.footer}>\n <Button type=\"primary\" onClick={handleConfirm}>\n {t('confirm')}\n </Button>\n </div>\n }\n >\n <Layout className={styles.layout}>\n {/* 左侧分类 */}\n <Sider width={220} className={styles.sider} theme=\"light\">\n <div className={styles.siderContent}>\n <Flex gap={4} vertical>\n {allCategories.map((cat) => {\n const isChecked = selectedCategoryIds.includes(cat.id)\n return (\n <Flex\n key={cat.id}\n className={classNames(styles.categoryItem, { [styles.categoryActive]: isChecked })}\n onClick={() => handleCategoryChange(cat.id, !isChecked)}\n >\n <Checkbox\n checked={isChecked}\n className={cat.id === ALL_CATEGORY_ID ? styles.roundCheckbox : ''}\n onClick={(e) => e.stopPropagation()}\n onChange={(e) => handleCategoryChange(cat.id, e.target.checked)}\n />\n <span className={styles.categoryName}>{cat.name}</span>\n </Flex>\n )\n })}\n </Flex>\n </div>\n </Sider>\n\n {/* 右侧内容 */}\n <Content className={styles.content}>\n <Flex align=\"center\" justify=\"space-between\">\n <Input\n className={styles.searchInput}\n placeholder={isSkill ? t('searchSkill') : t('searchKnowledge')}\n prefix={<SearchOutlined style={{ color: token.colorTextQuaternary }} />}\n value={searchText}\n onChange={(e) => setSearchText(e.target.value)}\n allowClear\n autoFocus\n />\n </Flex>\n\n {selectedIds.length > 0 && (\n <Flex vertical gap={2}>\n <Text type=\"secondary\" className={styles.selectedCount}>\n {t('selectedCount', { count: selectedIds.length })}\n </Text>\n </Flex>\n )}\n\n {/* 顶部已选标签区 */}\n <div className={classNames(styles.tagsArea, { [styles.tagsExpanded]: tagsExpanded })}>\n <Flex gap={8} className={styles.tagContainer} wrap ref={tagsContainerRef}>\n {selectedIds.map((id) => (\n <Tag\n key={id}\n closable\n onClose={(e) => {\n e.preventDefault()\n toggleItemSelection(id)\n }}\n className={styles.tag}\n >\n {getDisplayName(id)}\n </Tag>\n ))}\n {showExpandBtn && tagsExpanded && (\n <Button size=\"small\" className={styles.expandBtn} onClick={() => setTagsExpanded(false)}>\n {t('collapse')} <UpOutlined />\n </Button>\n )}\n </Flex>\n {showExpandBtn && !tagsExpanded && (\n <div className={styles.expandBtnWrapper}>\n <Button size=\"small\" className={styles.expandBtn} onClick={() => setTagsExpanded(true)}>\n {t('expand')} <DownOutlined />\n </Button>\n </div>\n )}\n </div>\n\n {/* 资源列表区 */}\n <div className={styles.listArea}>\n <Spin spinning={loading} classNames={{ root: 'full-spin' }}>\n <div className={styles.listInner}>\n <Flex gap={8} vertical>\n {filteredResources.length > 0 ? (\n filteredResources.map((item) => {\n const isSelected = selectedIds.includes(item.id)\n return (\n <div\n key={item.id}\n className={classNames(styles.listItem, { [styles.listItemSelected]: isSelected })}\n onClick={() => toggleItemSelection(item.id)}\n >\n <div className={styles.itemIconWrapper}>\n <IconFont type={iconType} />\n </div>\n <Flex vertical className={styles.itemInfo}>\n <Flex justify=\"space-between\">\n <Text strong>{getDisplayName(item.id)}</Text>\n {isSelected && (\n <Tag color={token.colorPrimary} variant=\"outlined\">\n {t('added')}\n </Tag>\n )}\n </Flex>\n <Text type=\"secondary\" className={styles.itemDesc}>\n {item.description || t('noDescription')}\n </Text>\n </Flex>\n </div>\n )\n })\n ) : (\n <Empty description={t('noMatch')} />\n )}\n </Flex>\n </div>\n </Spin>\n </div>\n </Content>\n </Layout>\n </Modal>\n )\n}\n","import { useTranslation } from '@zero-library/common'\nimport { Divider, Flex, Typography } from 'antd'\nimport { useState } from 'react'\nimport { useSnapshot } from 'valtio'\nimport IconFont from '../../../components/IconFont'\nimport { NS_CHAT_COPILOT } from '../../../i18n'\nimport { useChatStore } from '../../../stores/Context'\nimport ResourceSelectorModal from './ResourceSelectorModal'\nimport styles from './style.module.less'\n\nconst { Text } = Typography\n\nexport default ({}) => {\n const chatStore = useChatStore()\n const conversationState = useSnapshot(chatStore.conversation)\n const { t } = useTranslation(NS_CHAT_COPILOT)\n const [modalOpen, setModalOpen] = useState(false)\n const knowledgeCount = conversationState.active.spec?.knowledges?.items?.length ?? 0\n\n return (\n <>\n <div className={styles.resourceBtn} onClick={() => setModalOpen(true)}>\n <IconFont type=\"icon-remark\" />\n <Text>{t('knowledge')}</Text>\n {knowledgeCount > 0 && (\n <>\n <Divider vertical className={styles.divider} />\n <Flex className={styles.count}>{knowledgeCount}</Flex>\n </>\n )}\n </div>\n\n {modalOpen && <ResourceSelectorModal open={modalOpen} type=\"knowledge\" onCancel={() => setModalOpen(false)} />}\n </>\n )\n}\n","import type { SelectProps } from 'antd'\nimport { Flex, Select, Typography } from 'antd'\nimport { useCallback, useEffect, useState } from 'react'\nimport { useSnapshot } from 'valtio'\nimport IconFont from '../../../components/IconFont'\nimport { useChatStore } from '../../../stores/Context'\nimport type { AgentInfo, ProviderModel } from '../../../types'\ntype LabelRender = SelectProps['labelRender']\n\nconst { Text } = Typography\n\ntype ModelOption = {\n label: string\n value: string\n icon?: string\n modelName: string\n providerName: string\n}\n\ntype ModelGroupOption = {\n label: string\n title: string\n value: string\n options: ModelOption[]\n}\n\n/**\n * 清理图标名称,去除 .Color 和 . 后缀,并确保以 icon- 开头。\n * 如果最终结果为空,则返回默认图标 'icon-zhinengti'。\n *\n * @param iconName 原始图标名称\n * @returns 处理后的图标名称\n */\nconst getModelIcon = (iconName?: string): string => {\n if (!iconName) {\n return 'icon-zhinengti'\n }\n\n let cleanedIconName = iconName.replace(/\\.Color$/i, '').replace(/\\./g, '')\n\n if (!cleanedIconName.startsWith('icon-')) {\n cleanedIconName = `icon-${cleanedIconName}`\n }\n\n return cleanedIconName\n}\n\nexport default ({}) => {\n const chatStore = useChatStore()\n const agentState = useSnapshot(chatStore.agent)\n const [models, setModels] = useState<ProviderModel[]>([])\n const currentModel = agentState.agentInfo.spec?.model\n\n const updateAgentModel = useCallback(\n (model: Pick<ModelOption, 'modelName' | 'providerName'>) => {\n const nextAgentInfo: AgentInfo = {\n ...agentState.agentInfo,\n spec: {\n ...agentState.agentInfo.spec,\n model: {\n ...agentState.agentInfo.spec?.model,\n ...model\n }\n }\n }\n chatStore.setAgent(nextAgentInfo)\n },\n [agentState.agentInfo, chatStore]\n )\n\n const modelOptions: ModelGroupOption[] = models.map((item) => ({\n label: item.providerLabel || item.providerName,\n title: item.providerLabel || item.providerName,\n value: item.providerName,\n icon: item.icon,\n options: item.models.map((model) => ({\n label: model.modelLabel,\n value: `${item.providerName}:${model.modelName}`,\n modelName: model.modelName,\n providerName: item.providerName,\n icon: model.icon\n }))\n }))\n\n const selectedModelValue =\n currentModel?.providerName && currentModel?.modelName ? `${currentModel.providerName}:${currentModel.modelName}` : undefined\n\n const handleModelChange: SelectProps<string, ModelOption | ModelGroupOption>['onChange'] = (_, option) => {\n if (Array.isArray(option) || !option || !('providerName' in option)) return\n\n updateAgentModel({\n modelName: option.modelName,\n providerName: option.providerName\n })\n }\n\n const labelRender: LabelRender = (props) => {\n const currentVal = props.value\n const model = modelOptions.flatMap((item) => item.options).find((model) => model.value === currentVal)\n\n if (!model) {\n return currentVal\n }\n\n return (\n <Flex align=\"center\" gap={8}>\n <IconFont type={getModelIcon(model.icon)} style={{ fontSize: 20, borderRadius: 4 }} />\n <Text>{model.label}</Text>\n </Flex>\n )\n }\n\n useEffect(() => {\n const getModels = async () => {\n const { data } = await chatStore.config.services.request.fetchModelList()\n setModels(data || [])\n }\n\n getModels()\n }, [])\n\n return (\n <Select<string, ModelOption | ModelGroupOption>\n popupMatchSelectWidth={false}\n labelRender={labelRender}\n options={modelOptions}\n value={selectedModelValue}\n onChange={handleModelChange}\n variant=\"borderless\"\n optionRender={(option) => {\n const data = option.data as any\n return (\n <Flex gap={12}>\n <IconFont type={getModelIcon(data?.icon)} style={{ fontSize: 20 }} />\n <Text>{data?.label}</Text>\n </Flex>\n )\n }}\n />\n )\n}\n","import { useTranslation } from '@zero-library/common'\nimport classNames from 'classnames'\nimport { useSnapshot } from 'valtio'\nimport IconFont from '../../../components/IconFont'\nimport { NS_CHAT_COPILOT } from '../../../i18n'\nimport { useChatStore } from '../../../stores/Context'\nimport type { AgentInfo } from '../../../types'\nimport styles from './style.module.less'\n\nexport default () => {\n const chatStore = useChatStore()\n const agentState = useSnapshot(chatStore.agent)\n const { t } = useTranslation(NS_CHAT_COPILOT)\n const currentModel = agentState.agentInfo.spec?.model\n\n const toggleReasoning = () => {\n const nextAgentInfo: AgentInfo = {\n ...agentState.agentInfo,\n spec: {\n ...agentState.agentInfo.spec,\n model: {\n ...agentState.agentInfo.spec?.model,\n reasoning: !currentModel?.reasoning\n }\n }\n }\n chatStore.setAgent(nextAgentInfo)\n }\n\n return (\n <div className={classNames(styles.resourceBtn, { [styles.resourceBtnActive]: currentModel?.reasoning })} onClick={toggleReasoning}>\n <IconFont type=\"icon-reason\" />\n <span>{t('deepThinking')}</span>\n </div>\n )\n}\n","import { useTranslation } from '@zero-library/common'\nimport { Divider, Flex, Typography } from 'antd'\nimport { useEffect, useState } from 'react'\nimport { useSnapshot } from 'valtio'\nimport IconFont from '../../../components/IconFont'\nimport { NS_CHAT_COPILOT } from '../../../i18n'\nimport { useChatStore } from '../../../stores/Context'\nimport { Skill } from '../../../types'\nimport ResourceSelectorModal from './ResourceSelectorModal'\nimport styles from './style.module.less'\n\nconst { Text } = Typography\n\nexport default ({}) => {\n const chatStore = useChatStore()\n const conversationState = useSnapshot(chatStore.conversation)\n const { t } = useTranslation(NS_CHAT_COPILOT)\n const [modalOpen, setModalOpen] = useState(false)\n const [skillsCount, setSkillsCount] = useState(0)\n\n useEffect(() => {\n let canceled = false\n\n const syncSkillsCount = async () => {\n const initialItems = conversationState.active.spec?.skills?.items\n if (!initialItems?.length) {\n setSkillsCount(0)\n return\n }\n\n const { data } = await chatStore.config.services.request.listSkills()\n if (canceled) return\n\n const validIds = new Set(((data || []) as Skill[]).map((item) => item.id))\n setSkillsCount(initialItems.map((item) => item.id).filter((id) => validIds.has(id)).length)\n }\n\n syncSkillsCount()\n\n return () => {\n canceled = true\n }\n }, [chatStore, conversationState.active.spec?.skills?.items])\n\n return (\n <>\n <div className={styles.resourceBtn} onClick={() => setModalOpen(true)}>\n <IconFont type=\"icon-skill\" />\n <Text>{t('skill')}</Text>\n {skillsCount > 0 && (\n <>\n <Divider vertical className={styles.divider} />\n <Flex className={styles.count}>{skillsCount}</Flex>\n </>\n )}\n </div>\n\n {modalOpen && <ResourceSelectorModal open={modalOpen} type=\"skill\" onCancel={() => setModalOpen(false)} />}\n </>\n )\n}\n","import { EnterOutlined } from '@ant-design/icons'\nimport { Sender } from '@ant-design/x-v2'\nimport { isFunction, markdownToText, RenderWrapper, shouldRender, useTranslation } from '@zero-library/common'\nimport { Button, Flex, Typography } from 'antd'\nimport { forwardRef, useMemo } from 'react'\nimport { useSnapshot } from 'valtio'\nimport { InputFile } from '../..'\nimport { AttachmentsProps } from '../../components/Attachments'\nimport ChatSender, { ChatSenderHandle } from '../../components/ChatSender'\nimport { AgentTypeEnum, WorkspaceTypeEnum } from '../../core/constants'\nimport { NS_CHAT_COPILOT } from '../../i18n/constants'\nimport { useChatStore } from '../../stores/Context'\nimport { ChatLayoutSender, FileUploadConfig, MessageBoxType } from '../../types'\nimport KnowledgeBtn from './FeatureComponents/KnowledgeBtn'\nimport ModelSelect from './FeatureComponents/ModelSelect'\nimport ReasonBtn from './FeatureComponents/ReasonBtn'\nimport SkillBtn from './FeatureComponents/SkillBtn'\nimport styles from './styles.module.less'\n\nexport default forwardRef<ChatSenderHandle, ChatLayoutSender>(\n (\n {\n placeholder,\n extraBtn = false,\n referencesBtn = false,\n sendBtnProps,\n footerBelow = false,\n reasonBtn = true,\n skillsBtn = false,\n knowledgeBtn = false,\n modelSelect = false,\n commandConfig,\n uploadConfig\n },\n ref\n ) => {\n const chatStore = useChatStore()\n const configState = useSnapshot(chatStore.config)\n const agentState = useSnapshot(chatStore.agent)\n const conversationState = useSnapshot(chatStore.conversation)\n const { t } = useTranslation(NS_CHAT_COPILOT)\n\n const fileUploadRequest: AttachmentsProps['fileUpload'] = (formData, signal) => {\n const params = {\n workspaceType: WorkspaceTypeEnum.CONVERSATION,\n agentId: agentState.agentInfo.id,\n workspaceId: conversationState.active.id\n }\n return configState.services.request.chatUpload(params, formData, signal)\n }\n // 当前会话参数\n const chatMessage = useMemo(\n () => conversationState.messages[conversationState.active.id] || ({} as MessageBoxType),\n [conversationState.messages[conversationState.active.id]]\n )\n const referenceContent = useMemo(() => {\n const content = chatMessage.references?.content?.name\n if (content) {\n return markdownToText(content)\n }\n }, [chatMessage.references])\n\n const referenceHandle = (con: string) => {\n if (chatMessage?.loading) return\n chatStore.setContent(con)\n chatStore.sendMessage()\n }\n\n return (\n <Flex vertical gap={8} className=\"zero-chat-sender\">\n {/* 🌟 提示词 */}\n {/* <RenderWrapper control={prompts} DefaultComponent={SenderPromptsItems} /> */}\n <ChatSender\n ref={ref}\n commandConfig={commandConfig}\n placeholder={placeholder}\n content={chatMessage.content}\n fileList={chatMessage.files as InputFile[]}\n headerOpen={chatMessage.headerOpen}\n loading={chatMessage.loading}\n onContentChange={chatStore.setContent}\n onFileListChange={chatStore.setFileList}\n onHeaderOpenChange={chatStore.setHeaderOpen}\n onSend={() => chatStore.sendMessage()}\n onCancel={chatStore.cancelReceive}\n onFocus={chatStore.config.hooks?.onSenderFocus}\n fileUpload={{\n request: fileUploadRequest,\n config: uploadConfig || (agentState.agentInfo.config?.options?.fileUpload as FileUploadConfig)\n }}\n sendBtnProps={isFunction(sendBtnProps) ? sendBtnProps() : {}}\n extraFooterBelow={<RenderWrapper control={footerBelow} />}\n extraFooter={\n <Flex justify=\"space-between\" flex={1}>\n <Flex gap={8}>\n {agentState.agentInfo.agentType === AgentTypeEnum.AUTONOMOUS && (\n <>\n <RenderWrapper control={reasonBtn} DefaultComponent={ReasonBtn} />\n </>\n )}\n <RenderWrapper control={skillsBtn} DefaultComponent={SkillBtn} />\n <RenderWrapper control={knowledgeBtn} DefaultComponent={KnowledgeBtn} />\n <RenderWrapper control={extraBtn} />\n </Flex>\n {agentState.agentInfo.agentType === AgentTypeEnum.AUTONOMOUS && (\n <>\n <RenderWrapper control={modelSelect} DefaultComponent={ModelSelect} />\n </>\n )}\n </Flex>\n }\n extraHeader={\n <Sender.Header\n title={\n <Flex gap={4}>\n <EnterOutlined />\n <Typography.Text type=\"secondary\" ellipsis>\n {referenceContent}\n </Typography.Text>\n </Flex>\n }\n open={!!referenceContent}\n onOpenChange={() => chatStore.setReferences()}\n classNames={{\n header: styles.senderReferenceHeaderTitle,\n content: shouldRender(referencesBtn) ? '' : styles.senderReferenceHeaderContent\n }}\n >\n <RenderWrapper\n control={referencesBtn}\n DefaultComponent={\n <Flex gap={8}>\n {[t('deepAnalysis'), t('summaryAnalysis')].map((con) => (\n <Button key={con} color=\"primary\" variant=\"filled\" onClick={() => referenceHandle(con)}>\n {con} →\n </Button>\n ))}\n </Flex>\n }\n />\n </Sender.Header>\n }\n />\n </Flex>\n )\n }\n)\n","import { useTranslation } from '@zero-library/common'\nimport IconFont from '../../components/IconFont'\nimport { NS_CHAT_COPILOT } from '../../i18n/constants'\nimport styles from './styles.module.less'\n\nconst ChatSenderHeader = () => {\n const { t } = useTranslation(NS_CHAT_COPILOT)\n return (\n <div className={styles.logoArea}>\n <div className={styles.logoContainer}>\n {/* 静态的柔和光晕 */}\n <div className={styles.staticHalo}></div>\n\n {/* 悬浮呼吸感 */}\n <div className={styles.logoHoverWrapper}>\n <IconFont type=\"icon-lolrai\" className={styles.logoImage} />\n </div>\n </div>\n <h1 className={styles.greetingTitle}>\n {t('greetingHello')} <span className={styles.gradientText}>LoLR.AI</span>\n </h1>\n <p className={styles.greetingSubtitle}>{t('greetingSubtitle')}</p>\n </div>\n )\n}\n\nexport default ChatSenderHeader\n","import { Input } from 'antd'\nimport React, { useCallback } from 'react'\n\ninterface MonacoEditorProps {\n language?: string\n value?: string\n onChange?: (value: string) => void\n placeholder?: string\n height?: number | string\n readOnly?: boolean\n style?: React.CSSProperties\n onMount?: (editor: any, monaco: any) => void\n}\n\nconst MonacoEditor: React.FC<MonacoEditorProps> = ({ value = '', onChange, placeholder, height = 200, readOnly = false, style }) => {\n const handleKeyDownCapture = useCallback((e: React.KeyboardEvent<HTMLDivElement>) => {\n // 阻止空格键事件向外层组件传播,避免被拦截\n if (e.key === ' ' || e.code === 'Space') {\n e.stopPropagation()\n }\n }, [])\n\n const handleKeyUpCapture = useCallback((e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === ' ' || e.code === 'Space') {\n e.stopPropagation()\n }\n }, [])\n\n const handleScriptChange = useCallback(\n (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n onChange?.(event.target.value || '')\n },\n [onChange]\n )\n\n return (\n <div style={style} onKeyDownCapture={handleKeyDownCapture} onKeyUpCapture={handleKeyUpCapture}>\n <Input.TextArea\n value={value}\n onChange={handleScriptChange}\n readOnly={readOnly}\n placeholder={placeholder}\n autoSize={false}\n style={{\n height,\n resize: 'vertical',\n fontFamily: 'Monaco, Menlo, Consolas, \"Courier New\", monospace',\n ...style\n }}\n />\n </div>\n )\n}\n\nexport default MonacoEditor\n","import { CloudUploadOutlined, DeleteOutlined } from '@ant-design/icons'\nimport { getFileSuffixName, useTranslation } from '@zero-library/common'\nimport { Button, Collapse, Flex, Form, Input, InputNumber, Switch, Typography, Upload, message, theme } from 'antd'\nimport { RcFile } from 'antd/es/upload'\nimport React, { useEffect, useMemo, useState } from 'react'\nimport { useSnapshot } from 'valtio'\nimport MonacoEditor from '../../components/MonacoEditor'\nimport { WorkspaceTypeEnum } from '../../core/constants'\nimport { formatFileSize, getFileIcon } from '../../core/utils'\nimport { NS_CHAT_COPILOT } from '../../i18n/constants'\nimport { useChatStore } from '../../stores/Context'\nimport { Variable } from '../../types/agentflow.types'\nimport styles from './styles.module.less'\n\nconst { Text } = Typography\n\nconst FormFileUpload = ({ value, onChange, multiple = false }: { value?: any; onChange?: (value: any) => void; multiple?: boolean }) => {\n const { token } = theme.useToken()\n const fileList = Array.isArray(value) ? value : value ? [value] : []\n const chatStore = useChatStore()\n const conversationState = useSnapshot(chatStore.conversation)\n const agentState = useSnapshot(chatStore.agent)\n const configState = useSnapshot(chatStore.config)\n const { t } = useTranslation(NS_CHAT_COPILOT)\n\n const customRequest = async (options: any) => {\n const { file, onSuccess, onError } = options\n try {\n const formData = new FormData()\n formData.append('file', file as RcFile)\n const params = {\n workspaceType: WorkspaceTypeEnum.CONVERSATION,\n agentId: agentState.agentInfo.id,\n workspaceId: conversationState.active.id\n }\n const res = await configState.services.request.chatUpload(params, formData)\n\n if (res.code === 200 && res.data?.length) {\n const uploadedFile = res.data[0]\n onSuccess(uploadedFile)\n\n if (multiple) {\n onChange?.([...fileList, uploadedFile])\n } else {\n onChange?.([uploadedFile])\n }\n } else {\n message.error(res.message || t('uploadFailed'))\n onError(new Error(res.message))\n }\n } catch (error) {\n onError(error)\n }\n }\n\n const handleRemove = (fileToRemove: any) => {\n const newList = fileList.filter((f: any) => f.id !== fileToRemove.id)\n onChange?.(newList.length > 0 ? newList : undefined)\n }\n\n return (\n <Flex vertical gap={12} style={{ width: '100%' }}>\n {!multiple && fileList.length >= 1 ? null : (\n <Upload multiple={multiple} customRequest={customRequest} showUploadList={false}>\n <Button icon={<CloudUploadOutlined />}>{t('uploadFromLocal')}</Button>\n </Upload>\n )}\n\n {fileList.length > 0 && (\n <Flex vertical gap={8}>\n {fileList.map((file: any) => (\n <Flex\n key={file.id || file.uid}\n align=\"center\"\n justify=\"space-between\"\n style={{\n padding: '8px 12px',\n backgroundColor: token.colorFillAlter,\n borderRadius: token.borderRadiusLG || 8,\n border: `1px solid ${token.colorBorderSecondary}`\n }}\n >\n <Flex align=\"center\" gap={12} style={{ overflow: 'hidden', flex: 1 }}>\n <div\n style={{\n width: 40,\n height: 40,\n backgroundColor: '#000',\n borderRadius: token.borderRadiusSM || 4,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0\n }}\n >\n {getFileIcon(file.extension || getFileSuffixName(file.name), 20)}\n </div>\n <div style={{ overflow: 'hidden', display: 'flex', flexDirection: 'column', flex: 1 }}>\n <Text ellipsis style={{ width: '100%', fontSize: 14, fontWeight: 500 }}>\n {file.name}\n </Text>\n <Text type=\"secondary\" style={{ fontSize: 12 }}>\n {(file.extension || getFileSuffixName(file.name)).toUpperCase()} • {formatFileSize(file.size)}\n </Text>\n </div>\n </Flex>\n <Button type=\"text\" icon={<DeleteOutlined />} onClick={() => handleRemove(file)} style={{ color: token.colorTextSecondary }} />\n </Flex>\n ))}\n </Flex>\n )}\n </Flex>\n )\n}\n\nconst FormMonacoEditor = ({ value, onChange }: { value?: string; onChange?: (value: string) => void }) => {\n const { token } = theme.useToken()\n const { t } = useTranslation(NS_CHAT_COPILOT)\n return (\n <div style={{ backgroundColor: token.colorFillAlter, padding: 8, borderRadius: token.borderRadius }}>\n <MonacoEditor language=\"json\" placeholder={t('valuePlaceholder')} height={80} value={value} onChange={onChange} />\n </div>\n )\n}\n\nconst UserInputPanel = () => {\n const chatStore = useChatStore()\n const agentState = useSnapshot(chatStore.agent)\n const [form] = Form.useForm()\n const [activeKey, setActiveKey] = useState<string[]>(['1'])\n const { t } = useTranslation(NS_CHAT_COPILOT)\n\n const inputs = useMemo(() => {\n if (agentState.agentInfo.userInput?.length > 0) {\n return agentState.agentInfo.userInput\n }\n }, [agentState.agentInfo.userInput])\n\n useEffect(() => {\n if (inputs.length > 0) {\n const initialValues = inputs.reduce((acc: any, cur: Variable) => {\n const value: any = cur.value\n\n acc[cur.name] = value\n return acc\n }, {})\n form.setFieldsValue(initialValues)\n }\n }, [inputs, form])\n\n const handleValuesChange = (changedValues: any) => {\n if (agentState.agentInfo.userInput?.length > 0) {\n const newInput = agentState.agentInfo.userInput.map((v: any) => {\n if (v.name in changedValues) {\n const newValue = changedValues[v.name]\n return { ...v, value: newValue }\n }\n return v\n })\n chatStore.setConversationUserInput(newInput as Variable[])\n return\n }\n }\n\n const handleStartChat = () => {\n form\n .validateFields()\n .then(() => {\n setActiveKey([])\n })\n .catch(() => {\n message.error(t('checkParams'))\n })\n }\n\n const renderFormItem = (item: Variable) => {\n const itemStyle = { marginBottom: 0 }\n const commonProps = {\n label: item.name,\n name: item.name,\n style: itemStyle,\n rules: item.rules?.map((r) => {\n const valStr = String(r.value || '')\n if (r.type === 'required') return { required: true, message: r.message }\n if (r.type === 'email') return { type: 'email', message: r.message }\n if (r.type === 'pattern') return { pattern: new RegExp(valStr), message: r.message }\n if (r.type === 'max' || r.type === 'min') {\n return {\n validator: (_: any, val: any) => {\n if (val === undefined || val === null || val === '') return Promise.resolve()\n const numVal = Number(val)\n if (isNaN(numVal)) return Promise.resolve()\n if (r.type === 'max' && numVal > Number(valStr)) return Promise.reject(new Error(r.message))\n if (r.type === 'min' && numVal < Number(valStr)) return Promise.reject(new Error(r.message))\n return Promise.resolve()\n }\n }\n }\n if (r.type === 'length') {\n const [min, max] = valStr.split(',').map((v: string) => (v ? Number(v) : undefined))\n return {\n validator: (_: any, val: any) => {\n if (val === undefined || val === null || val === '') return Promise.resolve()\n const strVal = String(val)\n if (min !== undefined && strVal.length < min) return Promise.reject(new Error(r.message))\n if (max !== undefined && strVal.length > max) return Promise.reject(new Error(r.message))\n return Promise.resolve()\n }\n }\n }\n if (r.type === 'size') {\n const [min, max] = valStr.split(',').map((v: string) => (v ? Number(v) : undefined))\n return {\n validator: (_: any, val: any) => {\n if (val === undefined || val === null || val === '') return Promise.resolve()\n let len = 0\n if (Array.isArray(val)) {\n len = val.length\n } else if (typeof val === 'string') {\n try {\n const parsed = JSON.parse(val)\n if (Array.isArray(parsed)) len = parsed.length\n else return Promise.resolve()\n } catch (e) {\n return Promise.resolve()\n }\n } else {\n return Promise.resolve()\n }\n if (min !== undefined && len < min) return Promise.reject(new Error(r.message))\n if (max !== undefined && len > max) return Promise.reject(new Error(r.message))\n return Promise.resolve()\n }\n }\n }\n if (r.type === 'enum') {\n const options = valStr.split(',').map((s: string) => s.trim())\n return {\n validator: (_: any, val: any) => {\n if (val === undefined || val === null || val === '') return Promise.resolve()\n if (options.includes(String(val))) return Promise.resolve()\n return Promise.reject(new Error(r.message))\n }\n }\n }\n return {}\n }) as any\n }\n\n if (['STRING', 'LONG'].includes(item.type)) {\n return (\n <Form.Item {...commonProps}>\n <Input placeholder={t('inputPlaceholder')} />\n </Form.Item>\n )\n }\n\n if (['NUMBER'].includes(item.type)) {\n return (\n <Form.Item {...commonProps}>\n <InputNumber style={{ width: '100%' }} placeholder={t('numberPlaceholder')} />\n </Form.Item>\n )\n }\n\n if (item.type === 'BOOLEAN') {\n return (\n <Form.Item style={itemStyle} name={item.name} valuePropName=\"checked\">\n <Flex justify=\"space-between\" align=\"center\">\n <span>{item.name}</span>\n <Switch size=\"small\" />\n </Flex>\n </Form.Item>\n )\n }\n\n if (item.type === 'FILE') {\n return (\n <Form.Item {...commonProps}>\n <FormFileUpload multiple={false} />\n </Form.Item>\n )\n }\n\n if (item.type === 'ARRAY_FILE') {\n return (\n <Form.Item {...commonProps}>\n <FormFileUpload multiple={true} />\n </Form.Item>\n )\n }\n\n if (['OBJECT', 'ARRAY', 'ARRAY_STRING', 'ARRAY_NUMBER', 'ARRAY_DECIMAL', 'ARRAY_BOOLEAN', 'ARRAY_OBJECT'].includes(item.type)) {\n return (\n <Form.Item {...commonProps}>\n <FormMonacoEditor />\n </Form.Item>\n )\n }\n\n return (\n <Form.Item {...commonProps}>\n <Input placeholder={t('inputPlaceholder')} />\n </Form.Item>\n )\n }\n\n const genExtra = () => {\n if (activeKey.includes('1')) return null\n return (\n <Button\n type=\"text\"\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation()\n setActiveKey(['1'])\n }}\n >\n {t('edit')}\n </Button>\n )\n }\n\n const items = [\n {\n key: '1',\n label: t('paramSettings'),\n extra: genExtra(),\n children: (\n <>\n <Form form={form} layout=\"vertical\" onValuesChange={handleValuesChange} style={{ maxHeight: 500, overflow: 'auto', paddingRight: 16 }}>\n {inputs.length > 0 ? (\n <Flex vertical gap={12}>\n {inputs.map((item: Variable) => (\n <React.Fragment key={item.name}>{renderFormItem(item)}</React.Fragment>\n ))}\n </Flex>\n ) : (\n <div style={{ padding: '10px', color: '#999', textAlign: 'center' }}>{t('noUserInputFields')}</div>\n )}\n </Form>\n <Flex align=\"center\" justify=\"center\" className=\"m-t-16\">\n <Button type=\"primary\" onClick={handleStartChat}>\n {t('startConversation')}\n </Button>\n </Flex>\n </>\n )\n }\n ]\n\n return (\n <div className={styles.userInputCollapse}>\n <Collapse\n activeKey={activeKey}\n onChange={(keys) => {\n const newKeys = typeof keys === 'string' ? [keys] : (keys as string[])\n setActiveKey(newKeys)\n }}\n items={items}\n className=\"m-16\"\n styles={{\n body: {\n paddingRight: 0,\n paddingBottom: 10\n }\n }}\n />\n </div>\n )\n}\n\nexport default UserInputPanel\n",".tracePanel {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n min-width: 0;\n}\n/* 面板头部 */\n.tracePanelHeader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 8px 12px;\n border-bottom: 1px solid var(--ant-color-border-secondary, #f0f0f0);\n flex-shrink: 0;\n}\n.tracePanelHeader .tracePanelTitle {\n font-size: 13px;\n font-weight: 600;\n color: var(--ant-color-text, #262626);\n}\n.tracePanelHeader .tracePanelCount {\n font-size: 12px;\n color: var(--ant-color-text-tertiary, #8c8c8c);\n}\n/* 主体:事件时间线 + 右侧详情 */\n.traceBody {\n display: flex;\n flex: 1;\n min-height: 0;\n}\n.traceMain {\n flex: 1;\n min-width: 0;\n overflow: hidden auto;\n padding-bottom: 12px;\n}\n.traceDetail {\n width: 380px;\n flex-shrink: 0;\n border-left: 1px solid var(--ant-color-border-secondary, #f0f0f0);\n overflow: hidden auto;\n}\n.traceDetail .traceDetailHeader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 8px 12px;\n border-bottom: 1px solid var(--ant-color-border-secondary, #f0f0f0);\n position: sticky;\n top: 0;\n z-index: 1;\n background: var(--ant-color-bg-container, #fff);\n}\n.traceDetail .traceDetailHeader .traceDetailTitle {\n font-size: 12px;\n font-weight: 600;\n color: var(--ant-color-text, #262626);\n font-family: Monaco, Menlo, Consolas, monospace;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.traceDetail .traceDetailHeader .traceDetailTime {\n font-size: 11px;\n color: var(--ant-color-text-tertiary, #8c8c8c);\n white-space: nowrap;\n}\n.detailEmpty {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n min-height: 120px;\n}\n/* 单次执行 */\n.executionSection {\n border-bottom: 1px solid var(--ant-color-border-secondary, #f0f0f0);\n}\n.executionSection:last-child {\n border-bottom: none;\n}\n.executionHeader {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: 6px 12px;\n padding: 10px 12px 6px;\n}\n.executionHeader .executionHeaderMain {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n.executionHeader .executionHeaderTitle {\n font-size: 12px;\n font-weight: 600;\n color: var(--ant-color-text, #262626);\n}\n.executionHeader .executionStatus {\n font-size: 11px;\n margin: 0;\n}\n.executionHeader .executionHeaderMeta {\n display: inline-flex;\n flex-wrap: wrap;\n gap: 2px 10px;\n font-size: 11px;\n color: var(--ant-color-text-tertiary, #8c8c8c);\n}\n.executionHeader .executionMeta {\n white-space: nowrap;\n}\n/* 用户消息块:浅绿底 + 左侧绿色描边,弱化为贴合页面风格的卡片 */\n.userMessage {\n margin: 6px 12px;\n padding: 8px 12px;\n border-radius: 6px;\n background: var(--ant-color-success-bg, #f6ffed);\n border: 1px solid var(--ant-color-success-border, #b7eb8f);\n border-left: 3px solid var(--ant-color-success, #52c41a);\n}\n.userMessage .userMessageHeader {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n margin-bottom: 4px;\n}\n.userMessage .userMessageHeader .userMessageLabel {\n font-weight: 600;\n color: var(--ant-color-text-secondary, #595959);\n}\n.userMessage .userMessageHeader :global(.ant-tag) {\n margin: 0;\n font-size: 10px;\n line-height: 16px;\n}\n.userMessage .userMessageContent {\n font-size: 13px;\n color: var(--ant-color-text, #262626);\n max-width: 100%;\n overflow-wrap: anywhere;\n}\n/* Turn 分组 */\n.turnList {\n padding: 0 4px;\n}\n.turnSection {\n margin-bottom: 2px;\n}\n.turnHeader {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 12px;\n font-size: 12px;\n font-weight: 600;\n color: var(--ant-color-text, #262626);\n background: var(--ant-color-fill-quaternary, #fafafa);\n}\n.turnHeader .turnHeaderDot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n background: var(--ant-color-primary, #1677ff);\n}\n.turnHeader .turnTitle {\n flex-shrink: 0;\n}\n.turnHeader .turnMeta {\n flex: 1;\n text-align: right;\n font-weight: 400;\n font-size: 11px;\n color: var(--ant-color-text-tertiary, #8c8c8c);\n}\n/* 开始/结束 等非 turn 分组:弱化显示 */\n.turnHeaderMuted {\n background: transparent;\n color: var(--ant-color-text-tertiary, #8c8c8c);\n font-weight: 500;\n}\n.turnHeaderMuted .turnHeaderDotMuted {\n background: var(--ant-color-text-quaternary, #bfbfbf);\n}\n/* 事件行:行高与思维链(.rowLine)对齐,保证整条时间线视觉节奏一致 */\n.eventRow {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 8px 6px 12px;\n cursor: pointer;\n font-size: 13px;\n line-height: 1.85;\n border-radius: 4px;\n}\n.eventRow:hover {\n background: rgba(0, 0, 0, 0.03);\n}\n.eventRowSelected {\n background: var(--ant-color-primary-bg, #e6f4ff);\n}\n.eventRowSelected:hover {\n background: var(--ant-color-primary-bg, #e6f4ff);\n}\n/* 泳道色条 */\n.eventLane {\n width: 3px;\n align-self: stretch;\n border-radius: 2px;\n flex-shrink: 0;\n min-height: 14px;\n}\n.lane_input {\n background: #52c41a;\n}\n.lane_model {\n background: #1677ff;\n}\n.lane_tools {\n background: #722ed1;\n}\n.lane_system {\n background: #fa8c16;\n}\n.eventIcon {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n line-height: 1;\n}\n.eventRole {\n font-size: 10px;\n line-height: 16px;\n margin: 0;\n flex-shrink: 0;\n}\n.eventType {\n flex-shrink: 0;\n font-family: Monaco, Menlo, Consolas, monospace;\n font-size: 11px;\n color: var(--ant-color-text-secondary, #595959);\n white-space: nowrap;\n}\n.eventTypeError {\n color: var(--ant-color-error, #ff4d4f);\n}\n.eventPreview {\n flex: 1;\n min-width: 0;\n color: var(--ant-color-text-tertiary, #8c8c8c);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.eventTime {\n flex-shrink: 0;\n font-size: 11px;\n color: var(--ant-color-text-quaternary, #bfbfbf);\n white-space: nowrap;\n}\n/* 详情面板内容 */\n.detailBody {\n padding: 12px;\n font-size: 13px;\n overflow-wrap: anywhere;\n}\n.detailBody :global .x-markdown-light {\n --heading-color: var(--ant-color-text, rgba(0, 0, 0, 0.88));\n --text-color: var(--ant-color-text-secondary, rgba(0, 0, 0, 0.65));\n color: var(--ant-color-text-secondary, rgba(0, 0, 0, 0.65));\n overflow-wrap: anywhere;\n word-break: break-word;\n max-width: 100%;\n}\n.detailSectionTitle {\n font-size: 12px;\n font-weight: 600;\n color: var(--ant-color-text-secondary, #595959);\n margin: 12px 0 6px;\n}\n.detailSectionTitle:first-child {\n margin-top: 0;\n}\n.detailMeta {\n font-size: 12px;\n color: var(--ant-color-text-tertiary, #8c8c8c);\n margin-bottom: 6px;\n}\n.toolCard {\n border: 1px solid var(--ant-color-border-secondary, #f0f0f0);\n border-radius: 6px;\n padding: 6px 8px;\n margin-bottom: 6px;\n background: var(--ant-color-fill-quaternary, #fafafa);\n}\n.toolCard .toolCardName {\n font-size: 12px;\n font-weight: 600;\n color: var(--ant-color-text, #262626);\n margin-bottom: 2px;\n}\n.toolCard .toolCardDesc {\n font-size: 12px;\n color: var(--ant-color-text-tertiary, #8c8c8c);\n line-height: 1.5;\n}\n.msgCard {\n display: flex;\n align-items: flex-start;\n gap: 6px;\n padding: 4px 0;\n font-size: 12px;\n /* 消息正文:完整展示(保留换行,不做截断) */\n}\n.msgCard .msgTag {\n font-size: 10px;\n line-height: 16px;\n margin: 0;\n flex-shrink: 0;\n}\n.msgCard .msgContent {\n flex: 1;\n min-width: 0;\n color: var(--ant-color-text-secondary, #595959);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n word-break: break-word;\n}\n/* JSON 详情 */\n.jsonBlock {\n background: var(--ant-color-fill-quaternary, #fafafa);\n border-radius: 4px;\n padding: 8px;\n font-size: 12px;\n font-family: Monaco, Menlo, Consolas, monospace;\n overflow: auto auto;\n max-height: 420px;\n}\n/* 空状态 */\n.empty {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: var(--ant-color-text-tertiary, #8c8c8c);\n font-size: 13px;\n}\n","import {\n CheckCircleFilled,\n CloseCircleFilled,\n CloudSyncOutlined,\n FileTextOutlined,\n FlagOutlined,\n ForwardOutlined,\n LoginOutlined,\n MessageOutlined,\n PlayCircleOutlined,\n SettingOutlined,\n ToolOutlined\n} from '@ant-design/icons'\nimport { Empty, Flex, Spin, Tag } from 'antd'\nimport classNames from 'classnames'\nimport { memo, useCallback, useEffect, useMemo, useState } from 'react'\nimport { useSnapshot } from 'valtio'\nimport XMarkdown from '../../../components/XMarkdown'\nimport { useChatStore } from '../../../stores/Context'\nimport type { DebugEvent, ExecutionDebug } from '../../../types'\nimport styles from './execution-trace.module.less'\n\n// ── 角色 / 泳道 映射 ──\n\ntype Role = 'USER' | 'ASSISTANT' | 'TOOL' | 'SYSTEM'\ntype Lane = 'input' | 'model' | 'tools' | 'system'\n\nconst ROLE_COLOR: Record<Role, string> = {\n USER: 'green',\n ASSISTANT: 'geekblue',\n TOOL: 'purple',\n SYSTEM: 'orange'\n}\n\n// ── 文本工具 ──\n\nfunction truncate(text: string, max = 80): string {\n if (!text) return ''\n const t = text.replace(/\\s+/g, ' ').trim()\n return t.length > max ? t.slice(0, max) + '…' : t\n}\n\n/** 提取一条消息的完整文本:兼容 内容数组([{type,text}])/ 纯字符串 */\nfunction messageText(m: any): string {\n const c = m?.content\n if (!c) return ''\n if (typeof c === 'string') return c\n if (Array.isArray(c)) return c.map((p: any) => (typeof p === 'string' ? p : p?.text || '')).join(' ')\n return c?.text || ''\n}\n\nfunction formatDuration(ms?: number): string {\n if (ms == null) return ''\n if (ms < 1000) return `${ms}ms`\n return `${(ms / 1000).toFixed(1)}s`\n}\n\nfunction formatTokens(n?: number): string {\n return (n || 0).toLocaleString()\n}\n\nfunction eventIcon(eventType: string): React.ReactNode {\n const props = { fontSize: 13, color: 'var(--ant-color-text-tertiary, #8c8c8c)' }\n switch (eventType) {\n case 'run_input':\n return <LoginOutlined {...props} />\n case 'run_started':\n return <PlayCircleOutlined {...props} />\n case 'run_finished':\n return <FlagOutlined {...props} />\n case 'run_failed':\n case 'step_error':\n return <CloseCircleFilled style={{ fontSize: 13, color: 'var(--ant-color-error, #ff4d4f)' }} />\n case 'agent_resolved':\n return <SettingOutlined {...props} />\n case 'context_prepared':\n case 'context_updated':\n return <FileTextOutlined {...props} />\n case 'context_usage':\n case 'model_request':\n case 'model_response':\n return <CloudSyncOutlined {...props} />\n case 'step_started':\n return <ForwardOutlined {...props} />\n case 'step_finished':\n return <CheckCircleFilled style={{ fontSize: 13, color: '#52c41a' }} />\n case 'assistant_message':\n return <MessageOutlined {...props} />\n default:\n return <ToolOutlined {...props} />\n }\n}\n\n// ── 事件排序与时序分组 ──\n\nfunction sortEvents(events: DebugEvent[]): DebugEvent[] {\n return [...events].sort((a, b) => {\n if (a.seq !== b.seq) return a.seq - b.seq\n return (a.payloadJson?.timestampMs || 0) - (b.payloadJson?.timestampMs || 0)\n })\n}\n\ninterface TurnGroup {\n turnIndex: number\n kind: 'start' | 'turn' | 'end'\n title: string\n events: DebugEvent[]\n durationMs?: number\n}\n\n/**\n * 按 step_started / step_finished 边界做有状态分组,保证工具/上下文等事件\n * 即使缺少 turnIndex 也能归入正在执行的 step(turn),从而保持正确时序。\n * - 首个 step 之前的事件 → “开始”\n * - 每个 step(step_started → step_finished)→ 一个 Turn\n * - 最后一个 step 之后的事件 → “结束”\n */\nfunction groupByTurn(events: DebugEvent[]): TurnGroup[] {\n const groups: TurnGroup[] = []\n let current: TurnGroup | null = null\n let seenStep = false\n\n const pushStart = (evt: DebugEvent) => {\n if (!groups.length || groups[groups.length - 1].kind !== 'start') {\n groups.push({ turnIndex: -2, kind: 'start', title: '开始', events: [evt] })\n } else {\n groups[groups.length - 1].events.push(evt)\n }\n }\n const pushEnd = (evt: DebugEvent) => {\n if (!groups.length || groups[groups.length - 1].kind !== 'end') {\n groups.push({ turnIndex: -1, kind: 'end', title: '结束', events: [evt] })\n } else {\n groups[groups.length - 1].events.push(evt)\n }\n }\n\n for (const evt of events) {\n if (evt.eventType === 'step_started') {\n if (current) groups.push(current)\n const ev = evt.payloadJson?.event as any\n current = {\n turnIndex: ev.turnIndex ?? groups.length,\n kind: 'turn',\n title: ev.stepId || ev.title || `Turn ${groups.length + 1}`,\n events: [evt]\n }\n seenStep = true\n continue\n }\n\n if (evt.eventType === 'step_finished') {\n const ev = evt.payloadJson?.event as any\n if (current) {\n current.events.push(evt)\n if (ev.durationMs != null) current.durationMs = ev.durationMs\n groups.push(current)\n current = null\n } else {\n groups.push({ turnIndex: -1, kind: 'end', title: ev.stepId || '未匹配步骤', events: [evt], durationMs: ev.durationMs })\n }\n continue\n }\n\n if (current) {\n current.events.push(evt)\n } else if (seenStep) {\n pushEnd(evt)\n } else {\n pushStart(evt)\n }\n }\n\n if (current) groups.push(current)\n return groups\n}\n\ninterface EventSummary {\n role: Role\n lane: Lane\n preview: string\n}\n\nfunction eventSummary(evt: DebugEvent): EventSummary {\n const ev = evt.payloadJson?.event || {}\n switch (evt.eventType) {\n case 'run_input':\n return { role: 'USER', lane: 'input', preview: truncate(ev.message || '') }\n case 'run_started':\n return { role: 'SYSTEM', lane: 'system', preview: truncate(ev.agentName || '') }\n case 'run_finished':\n return { role: 'SYSTEM', lane: 'system', preview: `总耗时 ${formatDuration(ev.durationMs)}` }\n case 'run_failed':\n return { role: 'SYSTEM', lane: 'system', preview: truncate(ev.errorMessage || '') }\n case 'agent_resolved':\n return { role: 'SYSTEM', lane: 'system', preview: `${ev.agent?.name || ''} · ${ev.agent?.spec?.model?.model || ''}` }\n case 'context_prepared': {\n const tools = ev.tools?.length || 0\n const msgs = ev.messages?.length || 0\n return { role: 'SYSTEM', lane: 'system', preview: `上下文 ${msgs} 条消息 · ${tools} 个工具 · ${ev.model?.model || ''}` }\n }\n case 'context_usage': {\n const u = ev.usage || {}\n return {\n role: 'SYSTEM',\n lane: 'system',\n preview:\n u.phase === 'model_finished'\n ? `输入 ${formatTokens(u.inputActualTokens)} → 输出 ${formatTokens(u.outputActualTokens)} tokens`\n : truncate(u.phase || u.model || '')\n }\n }\n case 'step_started':\n return { role: 'ASSISTANT', lane: 'model', preview: truncate(ev.title || ev.stepId || '') }\n case 'step_finished':\n return { role: 'ASSISTANT', lane: 'model', preview: `耗时 ${formatDuration(ev.durationMs)}` }\n case 'model_request':\n return { role: 'ASSISTANT', lane: 'model', preview: turnIndex(evt) >= 0 ? '发起模型调用' : '模型请求' }\n case 'model_response': {\n const u = ev.usage || {}\n return {\n role: 'ASSISTANT',\n lane: 'model',\n preview: `${ev.finishReason || ''} ${u.totalTokens ? `· ${formatTokens(u.totalTokens)} tokens` : ''}`\n }\n }\n case 'assistant_message': {\n const msg = ev.message || {}\n const thinking = msg.thinking ? truncate(msg.thinking, 40) : ''\n const text = msg.content?.find((c: any) => c.type === 'text')?.text || ''\n return { role: 'ASSISTANT', lane: 'model', preview: thinking || truncate(text, 60) }\n }\n case 'extension':\n return { role: 'TOOL', lane: 'tools', preview: truncate(ev.name || '') }\n case 'tool_pending':\n return { role: 'TOOL', lane: 'tools', preview: truncate(ev.toolPending?.toolName || '') }\n case 'tool_started':\n return { role: 'TOOL', lane: 'tools', preview: truncate(ev.toolCall?.title || ev.toolCall?.toolName || '') }\n case 'tool_finished': {\n const tr = ev.toolResult || {}\n return { role: 'TOOL', lane: 'tools', preview: `${tr.toolName || ''} · ${formatDuration(tr.durationMs)} · ${tr.status || ''}` }\n }\n case 'step_error':\n return { role: 'SYSTEM', lane: 'system', preview: truncate(ev.errorMessage || ev.title || '') }\n default:\n return { role: 'SYSTEM', lane: 'system', preview: truncate(ev.type || evt.eventType) }\n }\n}\n\nfunction turnIndex(evt: DebugEvent): number {\n return evt.payloadJson?.event?.turnIndex ?? -1\n}\n\nfunction tsToTime(evt: DebugEvent): string {\n const ts = evt.payloadJson?.timestampMs\n if (!ts) return ''\n const d = new Date(ts)\n return isNaN(d.getTime()) ? '' : d.toLocaleTimeString('zh-CN', { hour12: false })\n}\n\n// ── 选中的事件详情(右侧面板) ──\n\nfunction EventDetail({ evt }: { evt: DebugEvent }) {\n const ev = evt.payloadJson?.event || {}\n const content = (c: any) => (\n <div className={styles.detailBody}>\n {typeof c !== 'string' ? <pre className={styles.jsonBlock}>{JSON.stringify(c, null, 2)}</pre> : <XMarkdown content={c} />}\n </div>\n )\n\n switch (evt.eventType) {\n case 'context_prepared': {\n // 类似参考截图的 System Prompt / Tools 面板:消息置顶(系统消息在前)、完整展示正文\n const msgs = ev.messages || []\n const tools = ev.tools || []\n return (\n <div className={styles.detailBody}>\n <div className={styles.detailMeta}>\n 模型 {ev.model?.model || '-'} · 上下文窗口 {formatTokens(ev.model?.contextWindowTokens)}\n </div>\n <div className={styles.detailSectionTitle}>消息({msgs.length})</div>\n {msgs.map((m: any, i: number) => {\n const text = messageText(m)\n return (\n <div key={i} className={styles.msgCard}>\n <Tag className={styles.msgTag}>{m.role}</Tag>\n <div className={styles.msgContent}>{text || ' '}</div>\n </div>\n )\n })}\n <div className={styles.detailSectionTitle}>工具({tools.length})</div>\n {tools.map((t: any, i: number) => (\n <div key={i} className={styles.toolCard}>\n <div className={styles.toolCardName}>\n {t.icon} {t.name || t.description?.slice?.(0, 20)}\n </div>\n <div className={styles.toolCardDesc}>{truncate(t.description || '', 160)}</div>\n </div>\n ))}\n </div>\n )\n }\n\n case 'assistant_message': {\n const msg = ev.message || {}\n return (\n <div className={styles.detailBody}>\n {msg.thinking && (\n <>\n <div className={styles.detailSectionTitle}>思维链</div>\n <XMarkdown content={msg.thinking} />\n </>\n )}\n {msg.content?.map((c: any, i: number) => {\n if (c.type === 'text')\n return (\n <div key={i}>\n <div className={styles.detailSectionTitle}>正文</div>\n <XMarkdown content={c.text} />\n </div>\n )\n if (c.type === 'tool_call')\n return (\n <div key={i}>\n <div className={styles.detailSectionTitle}>工具调用</div>\n {content(c)}\n </div>\n )\n return null\n })}\n </div>\n )\n }\n\n case 'tool_finished': {\n const tr = ev.toolResult || {}\n return (\n <div className={styles.detailBody}>\n <div className={styles.detailMeta}>\n {tr.toolName || ''} · {tr.status || ''} · {formatDuration(tr.durationMs)}\n </div>\n {tr.result != null && (\n <>\n <div className={styles.detailSectionTitle}>结果</div>\n {typeof tr.result === 'string' ? <XMarkdown content={tr.result} /> : content(tr.result)}\n </>\n )}\n {tr.metadata && (\n <>\n <div className={styles.detailSectionTitle}>元数据</div>\n {content(tr.metadata)}\n </>\n )}\n </div>\n )\n }\n\n case 'tool_started': {\n const tc = ev.toolCall || {}\n return (\n <div className={styles.detailBody}>\n {tc.title && <div className={styles.detailSectionTitle}>{tc.title}</div>}\n {tc.arguments != null && (\n <>\n <div className={styles.detailSectionTitle}>参数</div>\n {content(tc.arguments)}\n </>\n )}\n </div>\n )\n }\n\n case 'run_input':\n return (\n <div className={styles.detailBody}>\n <div className={styles.detailSectionTitle}>用户输入</div>\n <XMarkdown content={ev.message || ''} />\n </div>\n )\n\n case 'step_finished': {\n const out = ev.output\n return (\n <div className={styles.detailBody}>\n <div className={styles.detailMeta}>\n {ev.title || ''} · 耗时 {formatDuration(ev.durationMs)}\n </div>\n {out != null && (\n <>\n <div className={styles.detailSectionTitle}>输出</div>\n {typeof out === 'string' ? <XMarkdown content={out} /> : content(out)}\n </>\n )}\n </div>\n )\n }\n\n default:\n return <div className={styles.detailBody}>{content(evt.payloadJson)}</div>\n }\n}\n\n// ── 事件行 ──\n\nfunction EventRow({ evt, selected, onSelect }: { evt: DebugEvent; selected: boolean; onSelect: (e: DebugEvent) => void }) {\n const { role, lane, preview } = eventSummary(evt)\n const isError = evt.eventType === 'run_failed' || evt.eventType === 'step_error'\n const time = tsToTime(evt)\n return (\n <div className={classNames(styles.eventRow, { [styles.eventRowSelected]: selected })} onClick={() => onSelect(evt)}>\n <span className={classNames(styles.eventLane, styles[`lane_${lane}`])} />\n <span className={styles.eventIcon}>{eventIcon(evt.eventType)}</span>\n <Tag className={styles.eventRole} color={ROLE_COLOR[role]}>\n {role}\n </Tag>\n <span className={classNames(styles.eventType, { [styles.eventTypeError]: isError })}>{evt.eventType}</span>\n <span className={styles.eventPreview} title={preview}>\n {preview || ' '}\n </span>\n {time && <span className={styles.eventTime}>{time}</span>}\n </div>\n )\n}\n\n// ── 单次执行 ──\n\nfunction ExecutionSection({\n execution,\n selected,\n onSelect\n}: {\n execution: ExecutionDebug\n selected: DebugEvent | null\n onSelect: (e: DebugEvent) => void\n}) {\n // 排序 & 分组结果 memo 化,避免每次 render 重建导致下游 useMemo 失效\n const events = useMemo(() => sortEvents(execution.events || []), [execution.events])\n const turns = useMemo(() => groupByTurn(events.filter((e) => e.eventType !== 'run_input')), [events])\n const userInput = events.find((e) => e.eventType === 'run_input')\n\n const summary = useMemo(() => {\n const runFinished = events.find((e) => e.eventType === 'run_finished')\n const metas = runFinished?.payloadJson?.event?.responseMeta || []\n const totalInput = metas.reduce((s: number, m: any) => s + (m.usage?.promptTokens || 0), 0)\n const totalOutput = metas.reduce((s: number, m: any) => s + (m.usage?.completionTokens || 0), 0)\n const dur = runFinished?.payloadJson?.event?.durationMs\n const toolCount = events.filter((e) => e.eventType === 'tool_finished').length\n const turnCount = turns.filter((t) => t.turnIndex >= 0).length\n return { dur, totalInput, totalOutput, turnCount, toolCount, eventCount: events.length }\n }, [events, turns])\n\n const statusColor =\n execution.status === 'finished' ? 'success' : execution.status === 'error' || execution.status === 'failed' ? 'error' : 'processing'\n const statusText =\n execution.status === 'finished' ? '执行完成' : execution.status === 'error' || execution.status === 'failed' ? '执行失败' : '执行中'\n\n return (\n <div className={styles.executionSection}>\n <div className={styles.executionHeader}>\n <div className={styles.executionHeaderMain}>\n <span className={styles.executionHeaderTitle}>执行 #{execution.id?.slice(-8) || '-'}</span>\n <Tag color={statusColor} className={styles.executionStatus}>\n {statusText}\n </Tag>\n </div>\n <div className={styles.executionHeaderMeta}>\n {execution.startedAt && <span className={styles.executionMeta}>{execution.startedAt}</span>}\n {summary.dur != null && <span className={styles.executionMeta}>耗时 {formatDuration(summary.dur)}</span>}\n <span className={styles.executionMeta}>输入 {formatTokens(summary.totalInput)}</span>\n <span className={styles.executionMeta}>输出 {formatTokens(summary.totalOutput)}</span>\n <span className={styles.executionMeta}>{summary.turnCount} 轮</span>\n <span className={styles.executionMeta}>{summary.toolCount} 次工具</span>\n <span className={styles.executionMeta}>{summary.eventCount} 个事件</span>\n </div>\n </div>\n\n {/* 用户消息 */}\n {userInput && (\n <div className={styles.userMessage}>\n <div className={styles.userMessageHeader}>\n <Tag color={ROLE_COLOR.USER}>USER</Tag>\n <span className={styles.userMessageLabel}>用户消息</span>\n </div>\n <div className={styles.userMessageContent}>\n <XMarkdown content={userInput.payloadJson?.event?.message || ''} />\n </div>\n </div>\n )}\n\n {/* 时序列:Turn 分组 */}\n <div className={styles.turnList}>\n {turns.map((group, gi) => (\n <div key={`turn-${group.turnIndex}-${gi}`} className={styles.turnSection}>\n <div className={classNames(styles.turnHeader, group.kind !== 'turn' && styles.turnHeaderMuted)}>\n <span className={classNames(styles.turnHeaderDot, group.kind !== 'turn' && styles.turnHeaderDotMuted)} />\n <span className={styles.turnTitle}>{group.kind === 'turn' ? `Turn ${group.turnIndex + 1} · ${group.title}` : group.title}</span>\n <span className={styles.turnMeta}>\n {group.durationMs != null ? formatDuration(group.durationMs) : ''}\n {group.events.length} 个事件\n </span>\n </div>\n <div className={styles.turnEvents}>\n {group.events.map((evt, ei) => (\n <EventRow key={evt.id || `${group.turnIndex}-${ei}`} evt={evt} selected={selected?.id === evt.id} onSelect={onSelect} />\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n )\n}\n\n// ── 主面板 ──\n\nfunction sortExecutions(executions: ExecutionDebug[]): ExecutionDebug[] {\n return [...executions].sort((a, b) => {\n const ta = new Date(a.startedAt || 0).getTime()\n const tb = new Date(b.startedAt || 0).getTime()\n if (!isNaN(ta) && !isNaN(tb) && ta !== tb) return ta - tb\n return 0\n })\n}\n\n/** 规范化:兼容分页 items / 数组 / 单次执行 */\nfunction normalizeExecutions(data: any): ExecutionDebug[] {\n if (!data) return []\n if (Array.isArray(data.items)) return (data.items || []) as ExecutionDebug[]\n if (Array.isArray(data)) return data as ExecutionDebug[]\n if (Array.isArray(data.events)) return [data as ExecutionDebug]\n return []\n}\n\nconst ExecutionTracePanel = memo(() => {\n const chatStore = useChatStore()\n const conversationState = useSnapshot(chatStore.conversation)\n const [loading, setLoading] = useState(false)\n const [executions, setExecutions] = useState<ExecutionDebug[] | null>(null)\n const [selected, setSelected] = useState<DebugEvent | null>(null)\n\n const conversationId = conversationState.active.id\n\n const loadTrace = useCallback(async () => {\n if (!conversationId) return\n setLoading(true)\n try {\n const { data } = await chatStore.fetchExecutionDebug(conversationId)\n const list = sortExecutions(normalizeExecutions(data))\n setExecutions(list)\n setSelected(null)\n } catch {\n setExecutions([])\n } finally {\n setLoading(false)\n }\n }, [conversationId, chatStore])\n\n useEffect(() => {\n loadTrace()\n }, [loadTrace])\n\n const onSelect = useCallback((e: DebugEvent) => setSelected(e), [])\n\n if (loading) {\n return (\n <Flex justify=\"center\" align=\"center\" style={{ height: '100%' }}>\n <Spin size=\"small\" />\n </Flex>\n )\n }\n\n const list = executions || []\n if (!list.length) {\n return <div className={styles.empty}>暂无执行轨迹数据</div>\n }\n\n return (\n <div className={styles.tracePanel}>\n <div className={styles.tracePanelHeader}>\n <span className={styles.tracePanelTitle}>执行轨迹</span>\n <span className={styles.tracePanelCount}>共 {list.length} 次执行 · 按时间正序</span>\n </div>\n <div className={styles.traceBody}>\n <div className={styles.traceMain}>\n {list.map((exec, i) => (\n <ExecutionSection key={exec.id || i} execution={exec} selected={selected} onSelect={onSelect} />\n ))}\n </div>\n <div className={styles.traceDetail}>\n <div className={styles.traceDetailHeader}>\n <span className={styles.traceDetailTitle}>{selected ? selected.eventType : '事件详情'}</span>\n {selected && <span className={styles.traceDetailTime}>{tsToTime(selected)}</span>}\n </div>\n {selected ? (\n <EventDetail evt={selected} />\n ) : (\n <div className={styles.detailEmpty}>\n <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description=\"点击左侧事件查看详情\" />\n </div>\n )}\n </div>\n </div>\n </div>\n )\n})\n\nexport default ExecutionTracePanel\n",".bodyWidth {\n width: 100%;\n height: 100%;\n}\n/* 智能体执行链展示模式切换(聚合 / 顺序) */\n.execModeBar {\n display: flex;\n justify-content: flex-end;\n width: calc(100% - 24px);\n max-width: 1000px;\n flex-shrink: 0;\n}\n/* debug 模式:对话 / 执行轨迹 以 tab 切换,占满主聊天区高度 */\n.mainTabs {\n height: 100%;\n min-width: 0;\n}\n.mainTabs :global .ant-tabs-nav {\n margin: 0;\n padding: 6px 16px 0;\n}\n.mainTabs :global .ant-tabs-content-holder,\n.mainTabs :global .ant-tabs-content,\n.mainTabs :global .ant-tabs-tabpane {\n height: 100%;\n overflow: auto;\n}\n.inputContainer {\n max-width: 1000px;\n min-width: 320px;\n width: calc(100% - 24px);\n}\n.disclaimerNotice {\n font-size: 12px;\n text-align: center;\n color: #bfbfbf;\n}\n.previewHeader {\n display: flex;\n padding: 8px 20px;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);\n align-items: center;\n justify-content: space-between;\n}\n.previewHeader .previewHeaderTitle {\n font-size: 16px;\n font-weight: bold;\n}\n.previewHeader .actionIcon {\n font-size: 16px;\n cursor: pointer;\n color: var(--ant-color-text-tertiary);\n transition: transform 0.3s ease;\n}\n.previewHeader .actionIcon:hover {\n color: var(--ant-color-text);\n}\n/* 子智能体执行详情侧边栏 */\n.subAgentHeader {\n padding: 8px 16px;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);\n flex-shrink: 0;\n}\n.subAgentHeader .subAgentTitle {\n font-size: 15px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n/* 子智能体消息列表:约束宽度,避免思维链内容横向撑开 */\n.subAgentMessages {\n min-width: 0;\n width: 100%;\n max-width: 100%;\n overflow-x: hidden;\n}\n","import { RenderWrapper, shouldRender, useTranslation } from '@zero-library/common'\nimport { Flex, Segmented, Tabs } from 'antd'\nimport classNames from 'classnames'\nimport { forwardRef, memo, useCallback, useImperativeHandle, useMemo, useRef } from 'react'\nimport { useSnapshot } from 'valtio'\nimport { hasExecChain } from '../../../components/agentExecShared'\nimport type { ChatSenderHandle } from '../../../components/ChatSender'\nimport { NS_CHAT_COPILOT } from '../../../i18n/constants'\nimport { useChatStore } from '../../../stores/Context'\nimport { AgentExecMode, ChatLayout } from '../../../types/'\nimport BubbleListItems from '../../common/BubbleListItems'\nimport ChatHeader from '../../common/ChatHeader'\nimport ChatSender from '../../common/ChatSender'\nimport ChatSenderHeader from '../../common/ChatSenderHeader'\nimport UserInputPanel from '../../common/UserInputPanel'\nimport ExecutionTracePanel from './ExecutionTracePanel'\nimport styles from './styles.module.less'\n\n/** 执行链展示模式切换(聚合 / 顺序);独立订阅 conversation + config,避免流式推送牵动整个对话区 */\nconst ExecModeSwitch = memo(() => {\n const chatStore = useChatStore()\n const configState = useSnapshot(chatStore.config)\n const conversationState = useSnapshot(chatStore.conversation)\n\n /** 当前会话是否包含真正的执行链内容(思考/工具/文件/计划/错误),决定是否展示切换按钮 */\n const activeId = conversationState.active.id\n const messages = conversationState.messages[activeId]?.message\n const hasAgentExec = useMemo(() => (messages || []).some((m) => m.role === 2 && hasExecChain(m.content || [])), [messages])\n\n const handleExecModeChange = useCallback(\n (v: string | number) => {\n chatStore.setExecMode(v as AgentExecMode)\n },\n [chatStore]\n )\n\n if (!hasAgentExec) return null\n\n return (\n <div className={styles.execModeBar}>\n <Segmented\n size=\"small\"\n value={configState.agentExecMode}\n onChange={handleExecModeChange}\n options={[\n { label: '聚合', value: 'aggregate' },\n { label: '顺序', value: 'sequence' }\n ]}\n />\n </div>\n )\n})\n\n/** 对话内容(消息列表 + 输入区);独立组件避免 ChatMainPanel 因 debug tab 切换等无关状态变化导致重渲染 */\nconst ChatContent = memo(({ senderRef }: { senderRef: React.Ref<ChatSenderHandle | null> }) => {\n const chatStore = useChatStore()\n\n /** 配置状态的快照 */\n const configState = useSnapshot(chatStore.config)\n /** 智能体状态的快照 */\n const agentState = useSnapshot(chatStore.agent)\n\n return (\n <Flex align=\"center\" vertical gap={24} className={classNames(styles.bodyWidth, 'height-full')}>\n {/** 消息列表上方区域 */}\n {shouldRender(agentState.agentInfo.userInput && agentState.agentInfo.userInput.length > 0) && (\n <RenderWrapper control={configState.layout.userInput} DefaultComponent={UserInputPanel} />\n )}\n\n {/** 执行链展示模式切换(聚合 / 顺序) */}\n <ExecModeSwitch />\n\n {/** 消息列表区域 */}\n {shouldRender(configState.layout.messageList) && (\n <div className=\"full-scroll\" style={{ width: '100%' }}>\n <RenderWrapper control={configState.layout.messageList} DefaultComponent={BubbleListItems} />\n </div>\n )}\n\n {/** 输入框上方头部 */}\n <RenderWrapper control={configState.layout.senderHeader as ChatLayout['senderHeader']} DefaultComponent={<ChatSenderHeader />} />\n\n <Flex className={styles.inputContainer} vertical gap={8}>\n {/** 输入框组件 */}\n <RenderWrapper ref={senderRef} control={configState.layout.sender} DefaultComponent={ChatSender} />\n {/** 免责声明 */}\n <RenderWrapper\n control={configState.layout.disclaimerNotice}\n DefaultComponent={<div className={styles.disclaimerNotice}>内容由AI生成,仅供参考,请仔细甄别</div>}\n />\n\n {/** 输入框底部区域 */}\n <RenderWrapper control={configState.layout.senderFooter} />\n </Flex>\n </Flex>\n )\n})\n\nconst ChatMainPanel = memo(\n forwardRef<ChatSenderHandle, { debugMode?: boolean }>(({ debugMode = false }, ref) => {\n const chatStore = useChatStore()\n const senderRef = useRef<ChatSenderHandle | null>(null)\n const { t } = useTranslation(NS_CHAT_COPILOT)\n\n useImperativeHandle(\n ref,\n () => ({\n focus: (options) => {\n senderRef.current?.focus(options)\n }\n }),\n []\n )\n\n /** 配置状态的快照 */\n const configState = useSnapshot(chatStore.config)\n\n return (\n <Flex vertical className={classNames('height-full')}>\n {/** 聊天区域头部 */}\n <RenderWrapper control={configState.layout.chatHeader} DefaultComponent={ChatHeader} />\n\n {/** debug 模式:对话 / 执行轨迹 以 tab 切换;非 debug 模式仅展示对话 */}\n {debugMode ? (\n <Tabs\n className={classNames(styles.mainTabs)}\n defaultActiveKey=\"chat\"\n items={[\n { key: 'chat', label: '对话', children: <ChatContent senderRef={senderRef} /> },\n { key: 'trace', label: '执行轨迹', children: <ExecutionTracePanel /> }\n ]}\n />\n ) : (\n <ChatContent senderRef={senderRef} />\n )}\n </Flex>\n )\n })\n)\n\nexport default ChatMainPanel\n","import { CloseOutlined, DownloadOutlined } from '@ant-design/icons'\nimport { downloadFile, LuyaFilePreview, MarkdownEditor } from '@zero-library/common'\nimport { Button, Flex, Tag } from 'antd'\nimport classNames from 'classnames'\nimport { memo, useMemo } from 'react'\nimport { useChatStore } from '../../../stores/Context'\nimport type { FileTextType, FileUrlType } from '../../../types'\nimport styles from './styles.module.less'\n\nexport interface ChatPreviewPanelProps {\n file: FileUrlType | FileTextType\n}\n\nconst ChatPreviewPanel = memo(({ file }: ChatPreviewPanelProps) => {\n const chatStore = useChatStore()\n\n const preview = useMemo(() => {\n const urlFile = file as FileUrlType\n if (urlFile.fileUrl) {\n return {\n ...file,\n fileUrl: urlFile.fileUrl + '&isPreview=true'\n }\n }\n return file\n }, [file])\n\n return (\n <>\n {/** 文件URL预览 */}\n {(file as FileUrlType).fileUrl && (\n <Flex vertical className=\"height-full\">\n <div className={styles.previewHeader}>\n <div className={classNames(styles.previewHeaderTitle, 'text-ellipsis')} title={file.fileName}>\n {file.fileName}\n </div>\n <Flex gap={8} justify=\"center\" align=\"center\">\n <Button\n type=\"text\"\n icon={<DownloadOutlined />}\n className={styles.actionIcon}\n onClick={() => downloadFile((file as FileUrlType).fileUrl, file.fileName)}\n />\n <Button type=\"text\" icon={<CloseOutlined />} className={styles.actionIcon} onClick={() => chatStore.setPreview()} />\n </Flex>\n </div>\n <div className=\"full-scroll\">\n <LuyaFilePreview {...(preview as FileUrlType)} />\n </div>\n </Flex>\n )}\n\n {/** 文本内容预览 */}\n {(file as FileTextType).content && (\n <MarkdownEditor\n value={(file as FileTextType).content}\n floatToolbar={[]}\n onQuote={(text) => {\n chatStore.setReferences({\n type: 2,\n content: {\n name: text\n },\n params: {\n citation: text\n }\n })\n }}\n // onDownloadFile={(content, type) => configState.services.request.fileCreate(content, configState.preview.file.fileName, type)}\n extraNav={\n <>\n <Tag variant=\"filled\" color=\"default\" className=\"cursor-pointer\" onClick={() => chatStore.setPreview()}>\n <CloseOutlined />\n </Tag>\n </>\n }\n />\n )}\n </>\n )\n})\n\nexport default ChatPreviewPanel\n","import { CloseOutlined } from '@ant-design/icons'\nimport { Bubble } from '@ant-design/x-v2'\nimport type { BubbleItemType } from '@ant-design/x-v2/es/bubble'\nimport { Button, Flex, GetRef, Spin, Typography } from 'antd'\nimport classNames from 'classnames'\nimport { memo, useEffect, useMemo, useRef } from 'react'\nimport { useSnapshot } from 'valtio'\nimport MessageRender from '../../../components/MessageRender'\nimport { useChatStore } from '../../../stores/Context'\nimport { ConversationMessage } from '../../../types'\nimport { RoleContent } from '../../common/BubbleListItems'\nimport styles from './styles.module.less'\n\nconst { Text } = Typography\n\n/**\n * 依据消息角色返回与主聊天统一的 RoleContent。\n * 必须与主会话 BubbleListItems 中 conversationRoles 的约定保持一致:\n * role 2 = 智能体(左对齐 start),role 1 = 用户(右对齐 end)\n * 此前此处映射与主会话相反,导致子智能体消息左右位置颠倒。\n */\nfunction roleForMessage(role?: number): RoleContent {\n if (role === 1) {\n return { user: 'user', role: 1, placement: 'end' }\n }\n return { user: 'agent', role: 2, placement: 'start' }\n}\n\n/**\n * 子智能体执行详情侧边栏(与主聊天并列)\n * 从 subAgentMessages 独立存储读取消息(实时推送 / 懒加载历史),\n * 复用与主聊天一致的消息渲染:Bubble.List + MessageRender。\n */\nconst ChatSubAgentPanel = memo(() => {\n const chatStore = useChatStore()\n const subAgentState = useSnapshot(chatStore.subAgentPanel)\n const subAgentMessagesState = useSnapshot(chatStore.subAgentMessages)\n const active = subAgentState.active\n\n const subConvId = active?.subConversationId\n const messages = subConvId ? subAgentMessagesState.messages[subConvId] : undefined\n const loading = subConvId ? subAgentMessagesState.loading[subConvId] : false\n\n const listRef = useRef<GetRef<typeof Bubble.List>>(null)\n // 真实控制是否自动滚动的 ref(不会触发渲染)\n const autoScrollRef = useRef(true)\n // 面板刚打开/切换子智能体时,强制滚动到最新消息(无视用户当前滚动位置)\n const forceScrollRef = useRef(true)\n\n const handleScroll = (el: any) => {\n const target = el.target\n const distanceToBottom = target.scrollHeight - target.scrollTop - target.clientHeight\n autoScrollRef.current = distanceToBottom < 90\n }\n\n // 打开/切换子智能体 → 重置自动滚动并强制滚到最新消息\n useEffect(() => {\n forceScrollRef.current = true\n autoScrollRef.current = true\n }, [subConvId])\n\n // 消息列表变化:若正在生成 或 强制/接近底部,则滚动到最新;否则保持用户位置\n useEffect(() => {\n if (!messages?.length) return\n const latest = messages[messages.length - 1]\n if (latest.generating) {\n autoScrollRef.current = true\n }\n if (!forceScrollRef.current && !autoScrollRef.current) return\n setTimeout(() => {\n if (forceScrollRef.current || autoScrollRef.current) {\n listRef.current?.scrollTo({ top: 'bottom', behavior: 'instant' })\n }\n forceScrollRef.current = false\n }, 300)\n }, [messages])\n\n const items = useMemo<BubbleItemType[]>(() => {\n if (!messages?.length) return []\n return messages.map((msg, index) => {\n const rc = roleForMessage(msg.role)\n return {\n key: `${msg.messageId || index}-${index}`,\n role: String(rc.role),\n placement: rc.placement,\n variant: 'borderless',\n content: <MessageRender role={rc} message={msg as ConversationMessage} loading={!!msg.generating} />\n }\n })\n }, [messages])\n\n // 无 active 时不渲染(但 Hooks 已全部调用完毕)\n if (!active) return null\n\n const subAgentName = active.agentName || active.toolName || '子智能体执行详情'\n\n return (\n <Flex vertical className=\"height-full\">\n <Flex align=\"center\" justify=\"space-between\" gap={8} className={styles.subAgentHeader}>\n <Text strong className={styles.subAgentTitle} title={subAgentName}>\n {subAgentName}\n </Text>\n <Button type=\"text\" size=\"small\" icon={<CloseOutlined />} onClick={chatStore.closeSubAgent} aria-label=\"关闭子智能体详情\" />\n </Flex>\n <div className={classNames('full-scroll', styles.subAgentMessages)}>\n {loading ? (\n <Flex justify=\"center\" align=\"center\" style={{ height: 120 }}>\n <Spin size=\"small\" />\n </Flex>\n ) : (\n <Bubble.List ref={listRef} autoScroll={false} items={items} onScroll={handleScroll} className=\"height-full\" />\n )}\n </div>\n </Flex>\n )\n})\n\nexport default ChatSubAgentPanel\n",".chatLayout {\n background-color: transparent;\n height: 100%;\n width: 100%;\n}\n.animatedSplitter :global(.ant-splitter-panel) {\n transition: all 0.3s cubic-bezier(0.2, 0, 0, 1) !important;\n}\n.animatedSplitter :global(.ant-splitter-bar) {\n transition: all 0.3s cubic-bezier(0.2, 0, 0, 1) !important;\n}\n.hideSplitterBar :global(.ant-splitter-bar) {\n display: none !important;\n}\n/* 右侧面板(文件预览 / 子智能体):标准 antd Tabs,仅补充间距与占满高度 */\n.rightTabs {\n height: 100%;\n}\n.rightTabs :global .ant-tabs-nav {\n padding: 6px 16px 0;\n margin-bottom: 0;\n}\n.rightTabs :global .ant-tabs-tab {\n padding: 10px 4px;\n margin: 0 20px 0 0;\n font-size: 14px;\n}\n.rightTabs :global .ant-tabs-content-holder,\n.rightTabs :global .ant-tabs-content,\n.rightTabs :global .ant-tabs-tabpane {\n height: 100%;\n overflow: auto;\n}\n","import { XProvider } from '@ant-design/x-v2'\nimport { RenderWrapper, shouldRender, useDeepEffect, useWebSocket } from '@zero-library/common'\nimport { Flex, Spin, Splitter, Tabs } from 'antd'\nimport classNames from 'classnames'\nimport { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react'\nimport { useSnapshot } from 'valtio'\nimport { ChatSenderHandle } from '../../components/ChatSender'\nimport { createChatStore } from '../../stores'\nimport { ChatProvider } from '../../stores/Context'\nimport { ChatHandle, ChatLayout, ChatProps, FileTextType, FileUrlType } from '../../types'\nimport ChatHeader from '../common/ChatHeader'\nimport ConversationListPanel from '../common/ConversationListPanel'\nimport { ChatMainPanel, ChatPreviewPanel, ChatSubAgentPanel } from './components'\nimport styles from './index.module.less'\n\n/** 读取某个 window 的 location.search,判断是否命中 mode=debug;跨域访问被拒绝时按未命中处理 */\nfunction readModeDebug(target: Window): boolean {\n try {\n return new URLSearchParams(target.location.search).get('mode') === 'debug'\n } catch {\n return false\n }\n}\n\n/**\n * 解析是否为 debug 模式(仅同源内嵌):\n * 当前 iframe 自身 URL,或同源顶层宿主页(浏览器地址栏)URL 带 mode=debug 即启用;\n * 顶层与当前窗口相同(未内嵌)时只校验自身。\n */\nfunction resolveDebugMode(): boolean {\n return readModeDebug(window) || (window.top !== window && readModeDebug(window.top))\n}\n\nexport default forwardRef<ChatHandle, ChatProps>(({ theme, params, hooks, layout, config, services }, _ref) => {\n /** 创建聊天状态管理器实例 */\n const chatStore = useMemo(() => createChatStore(), [])\n /** 输入框组件的引用 */\n const senderRef = useRef<ChatSenderHandle | null>(null)\n useImperativeHandle(\n _ref,\n () => ({\n sendMessage: chatStore.sendMessage,\n setConversationSpec: chatStore.setConversationSpec,\n switchConversation: chatStore.switchConversation,\n createConversation: chatStore.createConversation,\n setReferences: chatStore.setReferences,\n setMessage: chatStore.setContent,\n setMessageParams: chatStore.setContentParams,\n setFiles: chatStore.setFileList,\n setServices: chatStore.setServices,\n setParams: chatStore.setParams,\n senderFocus: (options) => {\n senderRef.current?.focus(options)\n }\n }),\n []\n )\n\n /** 配置状态的快照 */\n const configState = useSnapshot(chatStore.config)\n /** 智能体状态的快照 */\n const agentState = useSnapshot(chatStore.agent)\n /** 子智能体执行详情面板快照 */\n const subAgentState = useSnapshot(chatStore.subAgentPanel)\n /** 右侧面板聚焦意图快照 */\n const focusState = useSnapshot(chatStore.focusTarget)\n\n const containerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n chatStore.setHooks(hooks)\n }, [hooks])\n\n useEffect(() => {\n chatStore.setLayout(layout)\n }, [layout])\n\n useEffect(() => {\n chatStore.setParams(params)\n }, [params])\n\n useDeepEffect(() => {\n chatStore.setServices(services)\n }, [services])\n\n // useDeepEffect(() => {\n // if (agentState.agentInfo.id && isObject(config.agent?.spec)) {\n // chatStore.setAgent({ ...agentState.agentInfo, spec: config.agent.spec || {} } as AgentInfo)\n // }\n // }, [agentState.agentInfo.id, config.agent?.spec])\n\n // useDeepEffect(() => {\n // if (agentState.agentInfo.id && isObject(config.agent?.config)) {\n // chatStore.setAgent({ ...agentState.agentInfo, config: config.agent.config || {} } as AgentInfo)\n // }\n // }, [agentState.agentInfo.id, config.agent?.config])\n\n // useDeepEffect(() => {\n // if (agentState.agentInfo.id) {\n // chatStore.setAgent({ ...agentState.agentInfo, userInput: config.agent.userInput || [] } as AgentInfo)\n // }\n // }, [agentState.agentInfo.id, config.agent?.userInput])\n\n // useDeepEffect(() => {\n // if (config?.agent?.id) {\n // chatStore.getAgentInfo(config.agent.id)\n // }\n // }, [config.agent?.id])\n\n useDeepEffect(() => {\n if (config.agent) {\n chatStore.setAgent(config.agent)\n }\n }, [config.agent])\n\n useDeepEffect(() => {\n if (agentState.agentInfo.id) {\n chatStore.initConversation(config)\n } else if (config.conversationId) {\n chatStore.switchConversation(config.conversationId)\n }\n }, [agentState.agentInfo.id, config.conversationId])\n\n const hasPreView = useMemo(() => {\n return (\n shouldRender(configState.layout.preview as ChatLayout['preview']) &&\n (!!(configState.preview.file as FileUrlType).fileUrl || !!(configState.preview.file as FileTextType).content)\n )\n }, [configState.layout.preview, configState.preview.file])\n\n /** debug 模式(仅同源内嵌):当前 iframe 或同源父/顶层宿主页 URL 带 mode=debug 时启用 */\n const isDebugMode = useMemo(() => resolveDebugMode(), [])\n\n /** 子智能体详情侧边栏是否打开 */\n const hasSubAgentPanel = !!subAgentState.active\n /** 子智能体面板触发标识(每次打开都变化,用于驱动 tab 切换);兜底 subConversationId 以覆盖无 toolCallId/toolName 的工具 */\n const subAgentTrigger = subAgentState.active?.toolCallId ?? subAgentState.active?.toolName ?? subAgentState.active?.subConversationId\n /** 文件预览触发标识(每次打开都变化,用于驱动 tab 切换) */\n const previewTrigger = (configState.preview.file as FileUrlType)?.fileUrl || (configState.preview.file as FileTextType)?.content\n\n /** 右侧面板 tab(文件预览 / 子智能体) */\n type RightTabKey = 'preview' | 'subAgent'\n const [activeRightTab, setActiveRightTab] = useState<RightTabKey>('preview')\n\n /** 用 ref 记录上一次触发标识,判断是哪一侧发生变化 */\n const prevTriggers = useRef<{ subAgent: string | undefined; preview: string | undefined }>({\n subAgent: undefined,\n preview: undefined\n })\n // 任一面板触发标识变化 → 切到对应 tab;关闭一侧时自动切回另一侧\n useEffect(() => {\n const prev = prevTriggers.current\n let nextTab: RightTabKey | null = null\n // 子智能体标识变化\n if (subAgentTrigger !== prev.subAgent) {\n nextTab = hasSubAgentPanel ? 'subAgent' : hasPreView ? 'preview' : null\n }\n // 文件预览标识变化(后执行,覆盖同帧冲突)\n if (previewTrigger !== prev.preview) {\n const fromPreview = hasPreView ? 'preview' : hasSubAgentPanel ? 'subAgent' : null\n if (fromPreview) nextTab = fromPreview\n }\n if (nextTab) setActiveRightTab(nextTab)\n prevTriggers.current = { subAgent: subAgentTrigger, preview: previewTrigger }\n }, [subAgentTrigger, previewTrigger, hasSubAgentPanel, hasPreView])\n\n // focusTarget 意图驱动:每次打开子智能体或文件预览时,强制切到对应 Tab\n useEffect(() => {\n if (!focusState.target) return\n const targetTab = focusState.target\n const hasTarget = (targetTab === 'subAgent' && hasSubAgentPanel) || (targetTab === 'preview' && hasPreView)\n if (hasTarget) {\n setActiveRightTab(targetTab)\n }\n // 消费后复位\n chatStore.focusTarget.target = null\n }, [focusState.target, hasSubAgentPanel, hasPreView])\n\n const rightTabs = useMemo(() => {\n const tabs: { key: RightTabKey; label: string; children: React.ReactNode }[] = []\n if (hasPreView) {\n tabs.push({ key: 'preview', label: '文件预览', children: <ChatPreviewPanel file={configState.preview.file as FileUrlType} /> })\n }\n if (hasSubAgentPanel) {\n tabs.push({ key: 'subAgent', label: '子智能体', children: <ChatSubAgentPanel /> })\n }\n return tabs\n }, [hasPreView, hasSubAgentPanel, configState.preview.file])\n\n const effectiveRightTab = rightTabs.some((t) => t.key === activeRightTab) ? activeRightTab : rightTabs[0]?.key\n\n /** 分割面板尺寸状态(面板顺序:[主聊天, 右侧面板]) */\n const [sizes, setSizes] = useState<(number | string)[]>(['100%', 0])\n /** 设置分割面板尺寸 */\n const setSplitterSizes = (sizes: (number | string)[]) => {\n setSizes(sizes)\n }\n useEffect(() => {\n // 子智能体详情侧边栏打开 或 文件预览存在 → 主聊天与右侧面板各占 50%\n if (hasSubAgentPanel || hasPreView) {\n setSplitterSizes(['50%', '50%'])\n } else {\n setSplitterSizes(['100%', 0])\n }\n }, [hasPreView, hasSubAgentPanel])\n\n /** 是否有任何右侧面板(决定是否显示拖拽把手);debug 模式轨迹在主聊天区内部渲染,不再占用右侧 */\n const hasRightPanel = hasSubAgentPanel || hasPreView\n\n /** 主 WebSocket 连接,用于接收实时消息 */\n useWebSocket({\n url: configState.services.websocketUrls?.[0],\n onMessage: (message) => chatStore.acceptMessage(message.payload),\n clientHeartbeat: false,\n reconnectInterval: 10000\n })\n /** 备用 WebSocket 连接,提供一体机saas可用性 */\n useWebSocket({\n url: configState.services.websocketUrls?.[1],\n onMessage: (message) => chatStore.acceptMessage(message.payload),\n clientHeartbeat: false,\n reconnectInterval: 10000\n })\n useEffect(() => {\n hooks?.onBeforeInit?.()\n }, [])\n\n return (\n <XProvider theme={{ cssVar: {}, ...theme }}>\n <ChatProvider store={chatStore}>\n <Spin spinning={configState.loading} classNames={{ root: 'full-spin' }}>\n <Flex vertical className={classNames(styles.chatLayout, 'zero-chat-layout', 'height-full')}>\n {/** 全局头部区域 */}\n <RenderWrapper control={configState.layout.globalHeader} DefaultComponent={ChatHeader} />\n\n <Flex ref={containerRef} className=\"full-scroll\">\n {/** 左侧面板区域 */}\n <RenderWrapper control={configState.layout.leftPanel} />\n\n {/** 会话列表面板 */}\n {<RenderWrapper control={configState.layout.conversationList} DefaultComponent={ConversationListPanel} />}\n\n <Splitter\n className={classNames('flex-1', styles.animatedSplitter, { [styles.hideSplitterBar]: !hasRightPanel })}\n onResize={(p) => setSizes(p as (number | string)[])}\n >\n {/** 消息列表面板 */}\n <Splitter.Panel collapsible={false} max={800} min={400} size={sizes[0]}>\n <ChatMainPanel ref={senderRef} debugMode={isDebugMode} />\n </Splitter.Panel>\n {/** 右侧面板:文件预览 / 子智能体 合并为多 tab,可自由切换 */}\n {hasRightPanel && (\n <Splitter.Panel collapsible={false} min={360} size={sizes[1]}>\n <Tabs\n className={classNames('height-full', styles.rightTabs)}\n activeKey={effectiveRightTab}\n onChange={(k) => setActiveRightTab(k as RightTabKey)}\n tabBarStyle={{ marginBottom: 0 }}\n items={rightTabs}\n />\n </Splitter.Panel>\n )}\n </Splitter>\n </Flex>\n </Flex>\n </Spin>\n </ChatProvider>\n </XProvider>\n )\n})\n","import { addBundledResource } from '@zero-library/common'\nimport { NS_CHAT_COPILOT } from './i18n'\nimport { chatCopilotZhCN } from './i18n/zh-CN'\n\n// i18n: 注册兜底中文资源(宿主未调用 initI18n 时也能正常显示中文)\naddBundledResource('zh-CN', NS_CHAT_COPILOT, chatCopilotZhCN)\n\n// 其他通用组件(可按需组合使用)\nexport { default as Attachments } from './components/Attachments'\nexport { default as ChatSender } from './components/ChatSender'\n// export { default as MessageRender } from './components/MessageRender'\n// export { default as XMarkdown } from './components/XMarkdown'\n\n// 组件 Props 类型\nexport type { AttachmentsProps } from './components/Attachments'\nexport type { SenderProps } from './components/ChatSender'\nexport type { MessageRenderProps } from './components/MessageRender'\n\n// layouts 里的页面级组件(主聊天入口)\nexport type {\n AgentConfig,\n AgentExecMode,\n AgentInfo,\n AgentSpec,\n ChatConfig,\n ChatHandle,\n ChatHooks,\n ChatLayout,\n ChatParams,\n ChatProps,\n ChatServices,\n ConversationMessage,\n ConversationMessageSend,\n ConversationStrategy,\n CustomButtonProps,\n FileTextType,\n FileUploadConfig,\n FileUrlType,\n InputFile,\n ReferencesType,\n RequestInstance\n} from './types'\n\nexport { WorkspaceTypeEnum } from './core/constants'\nexport { getFileIcon, getFileUrl } from './core/utils'\nexport { default as ChatCopilot } from './ui/layouts'\n\n// i18n: 导出命名空间常量与翻译资源数据供宿主注入\nexport * from './i18n'\n"]}
|