@next-bricks/ai-portal 0.70.3 → 0.70.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/7669.6f177bf2.js","mappings":"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","sources":["webpack:///./src/cruise-canvas/index.tsx","webpack:///./src/chat-box/i18n.ts","webpack:///./src/data-providers/set-chat-command.ts","webpack:///./src/data-providers/set-chat-mentioned-employee.ts","webpack:///./src/chat-box/bricks.ts","webpack:///./src/chat-box/index.tsx","webpack:///./src/home-container/index.tsx","webpack:///./src/stat-with-mini-chart/index.tsx","webpack:///./src/elevo-sidebar/index.tsx","webpack:///../../src/useHasAssignedNodes.ts","webpack:///./src/icon-button/index.tsx","webpack:///./src/show-cases/i18n.ts","webpack:///./src/show-cases/index.tsx","webpack:///./src/mcp-tools/i18n.ts","webpack:///./src/mcp-tools/index.tsx","webpack:///./src/chat-stream/index.tsx","webpack:///./src/ai-employees/i18n.ts","webpack:///./src/ai-employees/index.tsx","webpack:///./src/ai-agents/i18n.ts","webpack:///./src/ai-agents/index.tsx","webpack:///./src/data-providers/request-store.ts","webpack:///./src/page-container/index.tsx","webpack:///./src/tab-list/index.tsx","webpack:///./src/dropdown-select/i18n.ts","webpack:///./src/dropdown-select/index.tsx","webpack:///./src/preview-container/i18n.ts","webpack:///./src/preview-container/styles.module.css?836e","webpack:///./src/preview-container/index.tsx","webpack:///./src/action-buttons/i18n.ts","webpack:///./src/action-buttons/index.tsx","webpack:///./src/goal-card-list/i18n.ts","webpack:///./src/shared/getContentEditable.ts","webpack:///./src/goal-card-list/CardItem/CardItem.tsx","webpack:///./src/goal-card-list/index.tsx","webpack:///./src/project-conversations/i18n.ts","webpack:///./src/project-conversations/index.tsx","webpack:///./src/project-knowledges/index.tsx","webpack:///./src/activity-timeline/i18n.ts","webpack:///./src/activity-timeline/index.tsx","webpack:///./src/chat-input/i18n.ts","webpack:///./src/chat-input/index.tsx","webpack:///./src/elevo-logo/index.tsx","webpack:///./src/show-case/i18n.ts","webpack:///./src/show-case/index.tsx","webpack:///./src/data-providers/call-tool.ts","webpack:///./src/blank-state/index.tsx","webpack:///./src/sticky-container/index.tsx","webpack:///./src/elevo-card/index.tsx","webpack:///./src/flow-tabs/drawBg.ts","webpack:///./src/flow-tabs/index.tsx","webpack:///./src/stage-flow/i18n.ts","webpack:///./src/stage-flow/index.tsx","webpack:///./src/running-flow/images/stage.svg","webpack:///./src/running-flow/index.tsx","webpack:///./src/running-flow/formatDuration.ts","webpack:///./src/notice-dropdown/i18n.ts","webpack:///./src/notice-dropdown/index.tsx","webpack:///./src/notice-list/i18n.ts","webpack:///./src/notice-list/index.tsx","webpack:///./src/chat-panel/index.tsx","webpack:///./src/space-workbench/space-logo/index.tsx","webpack:///./src/space-workbench/chat-panel-welcome/i18n.ts","webpack:///./src/space-workbench/chat-panel-welcome/index.tsx","webpack:///./src/space-workbench/space-chat-guide/i18n.ts","webpack:///./src/space-workbench/images/magic.svg","webpack:///./src/space-workbench/space-chat-guide/SpaceGuide.tsx","webpack:///../../node_modules/@next-api-sdk/llm-sdk/dist/esm/api/llm/elevo_space/generateSpaceCapabilities.js","webpack:///./src/space-workbench/space-chat-guide/index.tsx","webpack:///./src/space-workbench/index.tsx","webpack:///./src/stat-with-mini-chart/styles.shadow.css","webpack:///./src/notice-dropdown/styles.shadow.css","webpack:///./src/goal-card-list/styles.shadow.css","webpack:///./src/action-buttons/styles.shadow.css","webpack:///./src/activity-timeline/styles.shadow.css","webpack:///./src/elevo-card/styles.shadow.css","webpack:///./src/blank-state/styles.shadow.css","webpack:///./src/tab-list/styles.shadow.css","webpack:///./src/space-workbench/space-logo/styles.shadow.css","webpack:///./src/notice-list/styles.shadow.css","webpack:///./src/space-workbench/chat-panel-welcome/styles.shadow.css","webpack:///./src/project-knowledges/styles.shadow.css","webpack:///./src/flow-tabs/styles.shadow.css","webpack:///./src/elevo-logo/styles.shadow.css","webpack:///./src/mcp-tools/styles.shadow.css","webpack:///./src/dropdown-select/styles.shadow.css","webpack:///./src/show-cases/styles.shadow.css","webpack:///./src/show-case/styles.shadow.css","webpack:///./src/goal-card-list/CardItem/CardItem.shadow.css","webpack:///./src/chat-box/styles.shadow.css","webpack:///./src/icon-button/styles.shadow.css","webpack:///./src/page-container/styles.shadow.css","webpack:///./src/preview-container/styles.module.css","webpack:///./src/running-flow/styles.shadow.css","webpack:///./src/stage-flow/styles.shadow.css","webpack:///./src/project-conversations/styles.shadow.css","webpack:///./src/sticky-container/styles.shadow.css","webpack:///./src/home-container/styles.shadow.css","webpack:///./src/ai-agents/styles.shadow.css","webpack:///./src/space-workbench/space-chat-guide/styles.shadow.css","webpack:///./src/chat-input/styles.shadow.css","webpack:///./src/ai-employees/styles.shadow.css"],"sourcesContent":["// istanbul ignore file: experimental\nimport React, { createRef, forwardRef } from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { NS, locales } from \"./i18n.js\";\nimport type { FeedbackDetail } from \"./interfaces.js\";\nimport { CruiseCanvasComponent, type CruiseCanvasRef } from \"./CruiseCanvas.js\";\nimport type {\n ExampleProject,\n RequestStore,\n ShowCaseType,\n UploadOptions,\n} from \"../shared/interfaces.js\";\nimport type {\n AIEmployee,\n Command,\n} from \"../shared/ChatCompletions/useChatCompletions.js\";\n\ninitializeI18n(NS, locales);\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport interface CruiseCanvasProps {\n conversationId?: string;\n initialRequest?: RequestStore | null;\n replay?: boolean;\n replayDelay?: number;\n supports?: Record<string, boolean>;\n showHiddenJobs?: boolean;\n showHumanActions?: boolean;\n showFeedback?: boolean;\n showFeedbackAfterFailed?: boolean;\n showUiSwitch?: boolean;\n showFeedbackOnView?: boolean;\n showJsxEditor?: boolean;\n previewUrlTemplate?: string;\n showCases?: ShowCaseType[];\n exampleProjects?: ExampleProject[];\n tryItOutUrl?: string;\n separateInstructions?: boolean;\n aiEmployees?: AIEmployee[];\n commands?: Command[];\n uploadOptions?: UploadOptions;\n hideMermaid?: boolean;\n}\n\nexport interface ConversationDetail {\n projectId?: string;\n}\n\nconst ForwardedCruiseCanvasComponent = forwardRef(CruiseCanvasComponent);\n\n/**\n * AI 任务执行画布,以节点图形式展示任务的执行过程,支持任务回放、反馈及 UI 切换等功能。\n *\n * @description AI 任务执行画布,以节点图形式展示任务的执行过程,支持任务回放、反馈及 UI 切换等功能。\n * @category ai-portal\n */\nexport\n@defineElement(\"ai-portal.cruise-canvas\", {\n // Will wrap v2 bricks which don't support in shadow DOM.\n shadowOptions: false,\n})\nclass CruiseCanvas extends ReactNextElement implements CruiseCanvasProps {\n /**\n * 对话 ID\n */\n @property()\n accessor conversationId: string | undefined;\n\n /** 初始请求数据。仅初始设置有效。 */\n @property({ attribute: false, render: false })\n accessor initialRequest: RequestStore | undefined | null;\n\n /** 是否启用回放。仅初始设置有效。 */\n @property({ type: Boolean, render: false })\n accessor replay: boolean | undefined;\n\n /**\n * 设置回放时消息之间的时间间隔,单位为秒。仅初始设置有效。\n *\n * @default 2\n */\n @property({ type: Number, render: false })\n accessor replayDelay: number | undefined;\n\n /**\n * 功能开关配置,键为功能名,值为是否启用\n */\n @property({ attribute: false })\n accessor supports: Record<string, boolean> | undefined;\n\n /**\n * 是否显示隐藏的 Job 节点\n */\n @property({ type: Boolean })\n accessor showHiddenJobs: boolean | undefined;\n\n /**\n * 是否显示 Human-in-the-loop 操作按钮\n */\n @property({ type: Boolean })\n accessor showHumanActions: boolean | undefined;\n\n /**\n * 是否显示反馈按钮\n */\n @property({ type: Boolean })\n accessor showFeedback: boolean | undefined;\n\n /**\n * 是否在任务失败时也显示反馈按钮\n */\n @property({ type: Boolean })\n accessor showFeedbackAfterFailed: boolean | undefined;\n\n /**\n * 是否在查看生成视图时显示反馈按钮\n */\n @property({ type: Boolean })\n accessor showFeedbackOnView: boolean | undefined;\n\n /**\n * 是否显示切换到对话流视图的按钮\n */\n @property({ type: Boolean })\n accessor showUiSwitch: boolean | undefined;\n\n /**\n * 是否隐藏 Mermaid 图表渲染,通过 CSS 属性选择器控制样式\n */\n @property({ type: Boolean, render: false })\n accessor hideMermaid: boolean | undefined;\n\n /**\n * 是否显示 JSX 编辑器按钮\n */\n @property({ type: Boolean })\n accessor showJsxEditor: boolean | undefined;\n\n /**\n * 生成视图预览页的 URL 模板,支持 {viewId} 等字段插值\n */\n @property()\n accessor previewUrlTemplate: string | undefined;\n\n /**\n * 示例场景列表,用于在空对话时展示快速入口\n */\n @property({ attribute: false })\n accessor showCases: ShowCaseType[] | undefined;\n\n /**\n * 示例项目列表,用于展示可参考的已有项目\n */\n @property({ attribute: false })\n accessor exampleProjects: ExampleProject[] | undefined;\n\n /**\n * \"试一试\"跳转 URL\n */\n @property()\n accessor tryItOutUrl: string | undefined;\n\n /**\n * 是否将任务说明独立展示,而非内联在节点中\n */\n @property({ type: Boolean })\n accessor separateInstructions: boolean | undefined;\n\n /**\n * 可 @ 提及的数字人列表\n */\n @property({ attribute: false })\n accessor aiEmployees: AIEmployee[] | undefined;\n\n /**\n * 命令列表,支持通过 / 或搜索触发联想\n */\n @property({ attribute: false })\n accessor commands: Command[] | undefined;\n\n /**\n * 文件上传配置\n */\n @property({ attribute: false })\n accessor uploadOptions: UploadOptions | undefined;\n\n /**\n * @detail void\n * @description 用户点击分享时触发\n */\n @event({ type: \"share\" })\n accessor #shareEvent!: EventEmitter<void>;\n\n #onShare = () => {\n this.#shareEvent.emit();\n };\n\n /**\n * @detail void\n * @description 用户点击终止任务时触发\n */\n @event({ type: \"terminate\" })\n accessor #terminateEvent!: EventEmitter<void>;\n\n #onTerminate = () => {\n this.#terminateEvent.emit();\n };\n\n /**\n * @detail { plan: 计划步骤列表, result: 结果列表, feedback: 反馈文本 }\n * @description 用户提交反馈时触发\n */\n @event({ type: \"feedback.submit\" })\n accessor #feedbackSubmitEvent!: EventEmitter<FeedbackDetail>;\n\n #onSubmitFeedback = (detail: FeedbackDetail) => {\n this.#feedbackSubmitEvent.emit(detail);\n };\n\n /**\n * @detail 生成视图的 viewId\n * @description 用户查看生成视图时的反馈事件触发\n */\n @event({ type: \"feedback.on.view\" })\n accessor #feedbackOnViewEvent!: EventEmitter<string>;\n\n #onFeedbackOnView = (viewId: string) => {\n this.#feedbackOnViewEvent.emit(viewId);\n };\n\n /**\n * @detail 切换目标 UI 模式,值为 \"chat\"\n * @description 用户点击切换到对话流视图按钮时触发\n */\n @event({ type: \"ui.switch\" })\n accessor #switch!: EventEmitter<\"chat\">;\n\n #onSwitchToChat = () => {\n this.#switch.emit(\"chat\");\n };\n\n /**\n * @detail { projectId: 关联的项目 ID }\n * @description 对话详情信息变化时触发\n */\n @event({ type: \"detail.change\" })\n accessor #detailChange!: EventEmitter<ConversationDetail>;\n\n #onDetailChange = (detail: ConversationDetail) => {\n this.#detailChange.emit(detail);\n };\n\n #ref = createRef<CruiseCanvasRef>();\n\n /**\n * 通知组件任务已恢复,用于继续中断的对话\n */\n @method()\n resumed() {\n this.#ref.current?.resumed?.();\n }\n\n /**\n * 通知组件反馈提交成功\n */\n @method()\n feedbackSubmitDone() {\n this.#ref.current?.feedbackSubmitDone();\n }\n\n /**\n * 通知组件反馈提交失败\n */\n @method()\n feedbackSubmitFailed() {\n this.#ref.current?.feedbackSubmitFailed();\n }\n\n /**\n * 通知组件查看视图的反馈处理完成\n * @param viewId 对应的视图 ID\n */\n @method()\n feedbackOnViewDone(viewId: string) {\n this.#ref.current?.feedbackOnViewDone(viewId);\n }\n\n render() {\n return (\n <ForwardedCruiseCanvasComponent\n conversationId={this.conversationId!}\n initialRequest={this.initialRequest}\n replay={this.replay}\n replayDelay={this.replayDelay}\n supports={this.supports}\n showHiddenJobs={this.showHiddenJobs}\n showHumanActions={this.showHumanActions}\n showFeedback={this.showFeedback}\n showFeedbackAfterFailed={this.showFeedbackAfterFailed}\n showUiSwitch={this.showUiSwitch}\n showFeedbackOnView={this.showFeedbackOnView}\n showJsxEditor={this.showJsxEditor}\n previewUrlTemplate={this.previewUrlTemplate}\n showCases={this.showCases}\n exampleProjects={this.exampleProjects}\n tryItOutUrl={this.tryItOutUrl}\n separateInstructions={this.separateInstructions}\n aiEmployees={this.aiEmployees}\n commands={this.commands}\n uploadOptions={this.uploadOptions}\n onShare={this.#onShare}\n onTerminate={this.#onTerminate}\n onSubmitFeedback={this.#onSubmitFeedback}\n onSwitchToChat={this.#onSwitchToChat}\n onFeedbackOnView={this.#onFeedbackOnView}\n onDetailChange={this.#onDetailChange}\n ref={this.#ref}\n />\n );\n }\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n ASK_ANY_THING = \"ASK_ANYTHING\",\n COMMON_TASKS = \"COMMON_TASKS\",\n COMMAND_TIPS = \"COMMAND_TIPS\",\n SEARCH_COMMANDS_TIPS = \"SEARCH_COMMANDS_TIPS\",\n}\n\nconst en: Locale = {\n [K.ASK_ANY_THING]: \"Ask anything\",\n [K.COMMON_TASKS]: \"Common tasks\",\n [K.COMMAND_TIPS]: \"‘@’ AI Employee | ‘/’ Command\",\n [K.SEARCH_COMMANDS_TIPS]:\n \"Showing up to {{count}} items, type keywords to search\",\n};\n\nconst zh: Locale = {\n [K.ASK_ANY_THING]: \"询问任何问题\",\n [K.COMMON_TASKS]: \"常用任务\",\n [K.COMMAND_TIPS]: \"‘@’ 数字人 | ‘/’ 命令\",\n [K.SEARCH_COMMANDS_TIPS]: \"最多显示 {{count}} 条数据,输入关键字搜索\",\n};\n\nexport const NS = \"bricks/ai-portal/chat-box\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import { createProviderClass } from \"@next-core/utils/general\";\nimport type { CommandPayload } from \"../shared/interfaces.js\";\n\nexport interface ChatCommand {\n command: string;\n payload: CommandPayload;\n}\n\nlet chatCommand: ChatCommand | null = null;\n\nexport function setChatCommand(command: ChatCommand | null): void {\n chatCommand = command;\n}\n\nexport function getChatCommand(): ChatCommand | null {\n return chatCommand;\n}\n\ncustomElements.define(\n \"ai-portal.set-chat-command\",\n createProviderClass(setChatCommand)\n);\n","import { createProviderClass } from \"@next-core/utils/general\";\n\nlet chatEmployee: ChatMentionedEmployee | null = null;\n\ninterface ChatMentionedEmployee {\n name: string;\n employeeId: string;\n}\n\nexport function setChatMentionedEmployee(\n chatMentionedEmployee: ChatMentionedEmployee | null\n): void {\n chatEmployee = chatMentionedEmployee;\n}\n\nexport function getChatMentionedEmployee(): ChatMentionedEmployee | null {\n return chatEmployee;\n}\n\ncustomElements.define(\n \"ai-portal.set-chat-mentioned-employee\",\n createProviderClass(setChatMentionedEmployee)\n);\n","import { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type {\n ActionsEvents,\n ActionsEventsMapping,\n ActionsProps,\n EoActions,\n} from \"@next-bricks/basic/actions\";\nimport type { IconButton, IconButtonProps } from \"../icon-button\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedActions = wrapBrick<\n EoActions,\n ActionsProps & { activeKeys?: (string | number)[]; footerTips?: string },\n ActionsEvents,\n ActionsEventsMapping\n>(\"eo-actions\", {\n onActionClick: \"action.click\",\n onItemDragEnd: \"item.drag.end\",\n onItemDragStart: \"item.drag.start\",\n});\nexport const WrappedIconButton = wrapBrick<IconButton, IconButtonProps>(\n \"ai-portal.icon-button\"\n);\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useImperativeHandle,\n createRef,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { TextareaAutoResize } from \"@next-shared/form\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport {\n getChatCommand,\n setChatCommand,\n} from \"../data-providers/set-chat-command.js\";\nimport {\n getChatMentionedEmployee,\n setChatMentionedEmployee,\n} from \"../data-providers/set-chat-mentioned-employee.js\";\nimport type { ChatPayload, UploadOptions } from \"../shared/interfaces.js\";\nimport {\n UploadButton,\n type UploadButtonRef,\n} from \"../shared/FileUpload/UploadButton.js\";\nimport { UploadedFiles } from \"../shared/FileUpload/UploadedFiles.js\";\nimport UploadedFilesStyleText from \"../shared/FileUpload/UploadedFiles.shadow.css\";\nimport { WrappedActions, WrappedIcon } from \"./bricks.js\";\nimport { useFilesUploading } from \"../shared/useFilesUploading.js\";\nimport GlobalDragOverlay from \"../shared/FileUpload/GlobalDragOverlay.js\";\nimport { getInitialContent } from \"../shared/ReadableCommand/ReadableCommand.js\";\nimport {\n useChatCompletions,\n type ActionWithSubCommands,\n type Command,\n} from \"../shared/ChatCompletions/useChatCompletions.js\";\n\ninitializeI18n(NS, locales);\n\nconst MAX_SHOWN_COMMANDS = 10;\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport const ChatBoxComponent = forwardRef(LegacyChatBoxComponent);\n\nexport interface ChatBoxProps {\n disabled?: boolean;\n placeholder?: string;\n autoFocus?: boolean;\n aiEmployees?: AIEmployee[];\n commands?: Command[];\n uploadOptions?: UploadOptions;\n}\n\nexport interface AIEmployee {\n employeeId: string;\n name: string;\n}\n\nexport interface ChatBoxRef {\n setValue: (value: string) => void;\n getValue: () => string;\n focusOnInput: () => void;\n}\n\n/**\n * 大型聊天输入框,用于首页\n */\nexport\n@defineElement(\"ai-portal.chat-box\", {\n styleTexts: [styleText, UploadedFilesStyleText],\n shadowOptions: {\n delegatesFocus: true,\n },\n})\nclass ChatBox extends ReactNextElement implements ChatBoxProps {\n ref = createRef<ChatBoxRef>();\n\n @property({ type: Boolean })\n accessor disabled: boolean | undefined;\n\n @property()\n accessor placeholder: string | undefined;\n\n @property({ type: Boolean })\n accessor autoFocus: boolean | undefined;\n\n @property({ attribute: false })\n accessor aiEmployees: AIEmployee[] | undefined;\n\n @property({ attribute: false })\n accessor commands: Command[] | undefined;\n\n @property({ attribute: false })\n accessor uploadOptions: UploadOptions | undefined;\n\n /**\n * @deprecated Use `chat.submit` event instead\n */\n @event({ type: \"message.submit\" })\n accessor #messageSubmit!: EventEmitter<string>;\n\n #handleMessageSubmit = (value: string) => {\n this.#messageSubmit.emit(value);\n };\n\n @event({ type: \"chat.submit\" })\n accessor #chatSubmit!: EventEmitter<ChatPayload>;\n\n #handleChatSubmit = (payload: ChatPayload) => {\n this.#chatSubmit.emit(payload);\n };\n\n @method()\n setValue(value: string) {\n this.ref.current?.setValue(value);\n }\n\n @method()\n getValue() {\n return this.ref.current?.getValue();\n }\n\n @method()\n focusOnInput() {\n return this.ref.current?.focusOnInput();\n }\n\n render() {\n return (\n <ChatBoxComponent\n disabled={this.disabled}\n placeholder={this.placeholder}\n autoFocus={this.autoFocus}\n aiEmployees={this.aiEmployees}\n commands={this.commands}\n uploadOptions={this.uploadOptions}\n onMessageSubmit={this.#handleMessageSubmit}\n onChatSubmit={this.#handleChatSubmit}\n root={this}\n ref={this.ref}\n />\n );\n }\n}\n\ninterface ChatBoxComponentProps extends ChatBoxProps {\n root: HTMLElement;\n onMessageSubmit: (value: string) => void;\n onChatSubmit: (payload: ChatPayload) => void;\n ref?: React.Ref<ChatBoxRef>;\n}\n\nfunction LegacyChatBoxComponent(\n {\n root,\n disabled,\n placeholder,\n autoFocus,\n aiEmployees,\n commands,\n uploadOptions,\n onMessageSubmit,\n onChatSubmit,\n }: ChatBoxComponentProps,\n ref: React.Ref<ChatBoxRef>\n) {\n const containerRef = useRef<HTMLDivElement>(null);\n\n const uploadEnabled = uploadOptions?.enabled;\n const uploadAccept = uploadOptions?.accept;\n const {\n files,\n resetFiles,\n appendFiles,\n removeFile,\n hasFiles,\n allFilesDone,\n fileInfos,\n exceeded,\n paste,\n } = useFilesUploading(uploadOptions);\n\n useEffect(() => {\n if (!uploadEnabled) {\n resetFiles();\n }\n }, [uploadEnabled, resetFiles]);\n\n const {\n textareaRef,\n valueRef,\n value,\n setValue,\n selectionRef,\n\n mentioned,\n mentionedText,\n mentionPopover,\n mentionOverlay,\n mentionActiveKeys,\n setInitialMention,\n handleMention,\n\n command,\n commandText,\n commandPrefix,\n commandPopover,\n commandOverlay,\n commandActiveKeys,\n setInitialCommand,\n handleSelectCommand,\n\n handleChange,\n handleKeyDown,\n } = useChatCompletions({\n aiEmployees,\n commands,\n root,\n hasFiles,\n });\n\n useEffect(() => {\n const command = getChatCommand();\n if (command) {\n setChatCommand(null);\n }\n setInitialCommand(command);\n }, [setInitialCommand]);\n\n useEffect(() => {\n const employee = getChatMentionedEmployee();\n if (employee) {\n setChatMentionedEmployee(null);\n setInitialMention(employee.employeeId);\n }\n }, []);\n\n useEffect(() => {\n const store = window.__elevo_try_it_out;\n if (store) {\n delete window.__elevo_try_it_out;\n }\n if (typeof store?.content === \"string\") {\n valueRef.current = store.content;\n setValue(store.content);\n if (store?.cmd) {\n setInitialCommand({\n command: getInitialContent(store.cmd).slice(1),\n payload: store.cmd,\n });\n } else if (store?.mentionedAiEmployeeId) {\n setInitialMention(store.mentionedAiEmployeeId);\n }\n }\n }, [setInitialCommand, setInitialMention, setValue, valueRef]);\n\n useImperativeHandle(ref, () => ({\n setValue: (value: string) => {\n valueRef.current = value;\n setValue(value);\n },\n getValue: () => {\n return valueRef.current;\n },\n focusOnInput: () => {\n textareaRef.current?.focus();\n },\n }));\n\n const sendDisabled =\n !value ||\n !allFilesDone ||\n (!!mentionedText && value.length <= mentionedText.length) ||\n (!!commandText && value.length <= commandText.length);\n\n const doSubmit = useCallback(\n (value: string) => {\n if (sendDisabled) {\n return;\n }\n const content = value.slice(commandText.length || mentionedText.length);\n onMessageSubmit(content);\n onChatSubmit({\n content,\n files: fileInfos,\n cmd: command,\n aiEmployeeId: mentioned,\n });\n },\n [\n sendDisabled,\n commandText.length,\n mentionedText.length,\n command,\n fileInfos,\n mentioned,\n onChatSubmit,\n onMessageSubmit,\n ]\n );\n\n const handleSubmit = useCallback(\n (e: React.FormEvent<HTMLTextAreaElement>) => {\n if (e.currentTarget.value) {\n doSubmit(e.currentTarget.value);\n }\n },\n [doSubmit]\n );\n\n const handleSubmitClick = useCallback(() => {\n doSubmit(valueRef.current);\n }, [doSubmit, valueRef]);\n\n useEffect(\n () => {\n if (autoFocus) {\n Promise.resolve().then(() => {\n textareaRef.current?.focus();\n });\n }\n },\n // One-time focus\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n const uploadButtonRef = useRef<UploadButtonRef>(null);\n\n const onFilesDropped = useCallback(\n (files: File[]) => {\n appendFiles(files);\n textareaRef.current?.focus();\n },\n [appendFiles, textareaRef]\n );\n\n return (\n <>\n <div className=\"root\">\n <div className=\"container\" ref={containerRef}>\n <TextareaAutoResize\n containerRef={containerRef}\n ref={textareaRef}\n value={value}\n minRows={58 / 22}\n paddingSize={hasFiles ? 144 : 60}\n autoResize\n disabled={disabled}\n placeholder={placeholder ?? t(K.ASK_ANY_THING)}\n submitWhen=\"enter-without-shift\"\n desiredSelectionRef={selectionRef}\n onSubmit={handleSubmit}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onPaste={paste}\n style={{\n paddingTop: hasFiles ? 94 : 10,\n }}\n />\n {hasFiles && (\n <UploadedFiles\n files={files!}\n onRemove={(uid, abortController) => {\n removeFile(uid);\n abortController?.abort();\n }}\n onAdd={() => {\n uploadButtonRef.current?.requestUpload();\n }}\n />\n )}\n <div className=\"actions-bar\">\n <div>\n <slot name=\"actions\" />\n </div>\n <div className=\"buttons\">\n {uploadEnabled ? (\n <>\n <UploadButton\n ref={uploadButtonRef}\n accept={uploadAccept}\n disabled={exceeded}\n onChange={(files) => {\n appendFiles(files);\n textareaRef.current?.focus();\n }}\n />\n <div className=\"btn-divider\"></div>\n </>\n ) : null}\n <button\n className=\"btn-send\"\n disabled={sendDisabled}\n onClick={handleSubmitClick}\n >\n <WrappedIcon lib=\"fa\" prefix=\"fas\" icon=\"arrow-up\" />\n </button>\n </div>\n </div>\n {mentionOverlay?.map((overlay, index) => (\n <div key={index} className=\"mention-overlay\" style={overlay} />\n ))}\n {commandOverlay?.map((overlay, index) => (\n <div key={index} className=\"mention-overlay\" style={overlay} />\n ))}\n {mentionPopover &&\n createPortal(\n <WrappedActions\n actions={mentionPopover.actions}\n style={mentionPopover.style}\n activeKeys={mentionActiveKeys!}\n footerTips={t(K.COMMAND_TIPS)}\n onActionClick={(e) => handleMention(e.detail)}\n />,\n document.body\n )}\n {commandPopover &&\n createPortal(\n <WrappedActions\n actions={commandPopover.actions}\n style={commandPopover.style}\n activeKeys={commandActiveKeys!}\n footerTips={\n commandPrefix === \"/\"\n ? t(K.COMMAND_TIPS)\n : t(K.SEARCH_COMMANDS_TIPS, { count: MAX_SHOWN_COMMANDS })\n }\n onActionClick={(e) =>\n handleSelectCommand(e.detail as ActionWithSubCommands)\n }\n />,\n document.body\n )}\n </div>\n </div>\n <GlobalDragOverlay\n disabled={!uploadEnabled || exceeded}\n uploadOptions={uploadOptions}\n onFilesDropped={onFilesDropped}\n />\n </>\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface HomeContainerProps {\n sticky?: boolean;\n}\n\n/**\n * AI Portal 首页容器,通过 sticky 属性控制顶部吸附行为,内容通过默认插槽传入。\n *\n * @category layout-component\n * @slot default - 页面内容区域\n */\nexport\n@defineElement(\"ai-portal.home-container\", {\n styleTexts: [styleText],\n})\nclass HomeContainer extends ReactNextElement implements HomeContainerProps {\n @property({ type: Boolean, render: false })\n accessor sticky: boolean | undefined;\n\n render() {\n return <HomeContainerComponent />;\n }\n}\n\nexport function HomeContainerComponent() {\n return <slot />;\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport type {\n MiniLineChart,\n MiniLineChartProps,\n} from \"@next-bricks/mini-chart/mini-line-chart\";\n\nconst WrappedMiniLineChart = wrapBrick<MiniLineChart, MiniLineChartProps>(\n \"eo-mini-line-chart\"\n);\n\nconst { defineElement, property } = createDecorators();\n\nexport interface StatWithMiniChartProps\n extends Pick<\n MiniLineChartProps,\n \"data\" | \"xField\" | \"yField\" | \"lineColor\" | \"showArea\" | \"min\" | \"max\"\n > {\n label?: string;\n value?: string;\n size?: \"medium\" | \"small\";\n}\n\n/**\n * 构件 `ai-portal.stat-with-mini-chart`\n *\n * 带迷你折线图的统计数据展示构件,在统计数值旁边渲染一个迷你折线图。\n */\nexport\n@defineElement(\"ai-portal.stat-with-mini-chart\", {\n styleTexts: [styleText],\n})\nclass StatWithMiniChart\n extends ReactNextElement\n implements StatWithMiniChartProps\n{\n /** 统计指标标签名称 */\n @property()\n accessor label: string | undefined;\n\n /** 统计数值文本 */\n @property()\n accessor value: string | undefined;\n\n /**\n * 展示尺寸,medium 时图表高度为 92px,small 时为 55px\n * @default \"medium\"\n */\n @property()\n accessor size: \"medium\" | \"small\" | undefined;\n\n /**\n * 折线颜色\n * @default \"var(--color-brand)\"\n */\n @property()\n accessor lineColor: string | undefined;\n\n /** 是否在折线下方显示渐变填充区域 */\n @property({ type: Boolean })\n accessor showArea: boolean | undefined;\n\n /**\n * Specify the minimum value of the y-axis.\n * If not specified, the minimum value will be calculated from the data.\n */\n @property({ type: Number })\n accessor min: number | undefined;\n\n /**\n * Specify the maximum value of the y-axis.\n * If not specified, the maximum value will be calculated from the data.\n */\n @property({ type: Number })\n accessor max: number | undefined;\n\n /**\n * x 轴字段名(数据中时间字段的 key)\n * @default \"0\"\n */\n @property()\n accessor xField: string | undefined;\n\n /**\n * y 轴字段名(数据中数值字段的 key)\n * @default \"1\"\n */\n @property()\n accessor yField: string | undefined;\n\n /** 图表数据源,每项为包含 xField 和 yField 字段的对象 */\n @property({ attribute: false })\n accessor data: Record<string, number>[] | undefined;\n\n render() {\n return (\n <StatWithMiniChartComponent\n label={this.label}\n value={this.value}\n size={this.size}\n lineColor={this.lineColor}\n showArea={this.showArea}\n min={this.min}\n max={this.max}\n xField={this.xField}\n yField={this.yField}\n data={this.data}\n />\n );\n }\n}\n\nfunction StatWithMiniChartComponent({\n label,\n value,\n size,\n ...chartProps\n}: StatWithMiniChartProps) {\n if (size === \"small\") {\n return (\n <div className=\"container\">\n <div className=\"label-and-stat\">\n <div className=\"label\">{label}</div>\n <div className=\"stat\">{value}</div>\n </div>\n <div className=\"chart\">\n <WrappedMiniLineChart\n {...chartProps}\n lineWidth={1.5}\n width=\"auto\"\n height=\"55\"\n />\n </div>\n </div>\n );\n }\n return (\n <div className=\"container\">\n <div className=\"label\">{label}</div>\n <div className=\"stat-and-chart\">\n <div className=\"chart\">\n <WrappedMiniLineChart\n {...chartProps}\n lineWidth={2}\n width=\"auto\"\n height=\"92\"\n />\n </div>\n <div className=\"stat\">{value}</div>\n </div>\n </div>\n );\n}\n","import React, {\n createRef,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { i18n, initializeI18n } from \"@next-core/i18n\";\nimport { getHistory } from \"@next-core/runtime\";\nimport classNames from \"classnames\";\nimport type { DropdownActionsProps } from \"@next-bricks/basic/dropdown-actions\";\nimport type { ActionType } from \"@next-bricks/basic/mini-actions\";\nimport type { GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport {\n WrappedDropdownActions,\n WrappedEasyopsAvatar,\n WrappedIcon,\n WrappedIconButton,\n WrappedLink,\n} from \"./bricks.js\";\nimport {\n ChatHistory,\n type ActionClickDetail,\n type ChatHistoryRef,\n type PersonalActionClickDetail,\n type Project,\n type ProjectActionClickDetail,\n} from \"./ChatHistory.js\";\nimport { NavLink } from \"./NavLink.js\";\nimport type { SidebarLink } from \"./interfaces.js\";\nimport { SpaceNav, type SpaceNavProps } from \"./SpaceNav.js\";\n\nexport type { SidebarLink, SpaceNavProps };\n\ninitializeI18n(NS, locales);\n\nconst SIDEBAR_ICON: GeneralIconProps = {\n lib: \"easyops\",\n icon: \"sidebar\",\n};\n\nconst WrappedElevoLogo = wrapBrick(\"ai-portal.elevo-logo\");\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport interface ElevoSidebarProps {\n userInstanceId?: string;\n behavior?: \"default\" | \"drawer\";\n logoUrl?: string;\n newChatUrl?: string;\n newChatLinkWhenCollapsed?: boolean;\n historyActiveId?: string;\n historyUrlTemplate?: string;\n historyActions?: ActionType[];\n showProjects?: boolean;\n projectActiveId?: string;\n projectUrlTemplate?: string;\n projectActions?: ActionType[];\n personalActions?: ActionType[];\n links?: SidebarLink[];\n canAddProject?: boolean;\n myLinks?: SidebarLink[];\n scope?: \"default\" | \"space\";\n spaceNav?: SpaceNavProps;\n}\n\nexport type { ActionClickDetail, Project, ProjectActionClickDetail };\n\nconst ElevoSidebarComponent = forwardRef(LegacyElevoSidebarComponent);\n\ninterface ElevoSidebarRef extends ChatHistoryRef {\n open: () => void;\n close: () => void;\n}\n\n/**\n * Elevo AI 侧边栏,包含 Logo 导航、新建对话、历史记录、项目列表及个人账户操作,支持折叠和抽屉两种行为模式。\n *\n * @category layout-component\n */\nexport\n@defineElement(\"ai-portal.elevo-sidebar\", {\n styleTexts: [styleText],\n})\nclass ElevoSidebar extends ReactNextElement implements ElevoSidebarProps {\n @property()\n accessor userInstanceId: string | undefined;\n\n @property()\n accessor behavior: \"default\" | \"drawer\" | undefined;\n\n @property()\n accessor logoUrl: string | undefined;\n\n @property()\n accessor newChatUrl: string | undefined;\n\n @property({ type: Boolean })\n accessor newChatLinkWhenCollapsed: boolean | undefined;\n\n @property()\n accessor historyUrlTemplate: string | undefined;\n\n @property({ attribute: false })\n accessor historyActions: ActionType[] | undefined;\n\n @property({ type: Boolean })\n accessor showProjects: boolean | undefined;\n\n @property()\n accessor projectUrlTemplate: string | undefined;\n\n @property({ attribute: false })\n accessor projectActions: ActionType[] | undefined;\n\n @property({ attribute: false })\n accessor personalActions: ActionType[] | undefined;\n\n @property({ attribute: false })\n accessor links: SidebarLink[] | undefined;\n\n @property({ type: Boolean })\n accessor canAddProject: boolean | undefined = true;\n\n @property({ attribute: false })\n accessor myLinks: SidebarLink[] | undefined;\n\n /**\n * @default \"default\"\n */\n @property()\n accessor scope: \"default\" | \"space\" | undefined;\n\n @property({ attribute: false })\n accessor spaceNav: SpaceNavProps | undefined;\n\n /**\n * @detail void\n * @description 点击退出登录时触发\n */\n @event({ type: \"logout\" })\n accessor #logout!: EventEmitter<void>;\n\n #handleLogout = () => {\n this.#logout.emit();\n };\n\n /**\n * 点击对话历史操作按钮时触发\n * @detail { action: 点击的操作项(含 project 等扩展字段), item: 当前对话历史记录项, project: 关联的项目(可选) }\n * @description 点击对话历史操作按钮时触发\n */\n @event({ type: \"action.click\" })\n accessor #actionClick!: EventEmitter<ActionClickDetail>;\n\n #handleActionClick = (detail: ActionClickDetail) => {\n this.#actionClick.emit(detail);\n };\n\n /**\n * 点击项目操作按钮时触发\n * @detail { action: 点击的操作项, project: 当前项目对象 }\n * @description 点击项目操作按钮时触发\n */\n @event({ type: \"project.action.click\" })\n accessor #projectActionClick!: EventEmitter<ProjectActionClickDetail>;\n\n #handleProjectActionClick = (detail: ProjectActionClickDetail) => {\n this.#projectActionClick.emit(detail);\n };\n\n /**\n * @detail void\n * @description 点击新建项目按钮时触发\n */\n @event({ type: \"add.project\" })\n accessor #addProject!: EventEmitter<void>;\n\n #handleAddProject = () => {\n this.#addProject.emit();\n };\n\n /**\n * @detail void\n * @description 点击新建服务流按钮时触发(scope 为 space 时有效)\n */\n @event({ type: \"add.serviceflow\" })\n accessor #addServiceflow!: EventEmitter<void>;\n\n #handleAddServiceflow = () => {\n this.#addServiceflow.emit();\n };\n\n /**\n * 点击个人操作按钮时触发\n * @detail { action: 点击的操作项 }\n * @description 点击个人操作按钮时触发\n */\n @event({ type: \"personal.action.click\" })\n accessor #personalActionClick!: EventEmitter<PersonalActionClickDetail>;\n\n #handlePersonalActionClick = (detail: PersonalActionClickDetail) => {\n this.#personalActionClick.emit(detail);\n };\n\n #ref = createRef<ElevoSidebarRef>();\n\n /**\n * 延迟一段时间后拉取最新对话历史\n * @param delay 拉取前的等待时长(毫秒),用于等待任务标题生成完成\n */\n @method()\n pullHistory(delay: number) {\n // Wait several seconds to let the task title to be summarized.\n setTimeout(() => {\n this.#ref.current?.pull();\n }, delay);\n }\n\n /** 展开侧边栏(behavior 为 drawer 时有效) */\n @method()\n open() {\n this.#ref.current?.open();\n }\n\n /** 折叠侧边栏(behavior 为 drawer 时有效) */\n @method()\n close() {\n this.#ref.current?.close();\n }\n\n /**\n * 从历史列表中移除指定项目及其对话\n * @param projectId 要移除的项目 instanceId\n */\n @method()\n removeProject(projectId: string) {\n this.#ref.current?.removeProject?.(projectId);\n }\n\n /**\n * 向项目列表中追加一个新项目\n * @param project 要追加的项目对象\n */\n @method()\n addProject(project: Project) {\n this.#ref.current?.addProject?.(project);\n }\n\n /**\n * 将指定对话标记为已移入项目,从历史列表中隐藏\n * @param conversationId 要移动的对话 ID\n */\n @method()\n moveConversation(conversationId: string) {\n this.#ref.current?.moveConversation?.(conversationId);\n }\n\n render() {\n return (\n <ElevoSidebarComponent\n ref={this.#ref}\n userInstanceId={this.userInstanceId}\n behavior={this.behavior}\n logoUrl={this.logoUrl}\n newChatUrl={this.newChatUrl}\n newChatLinkWhenCollapsed={this.newChatLinkWhenCollapsed}\n historyUrlTemplate={this.historyUrlTemplate}\n historyActions={this.historyActions}\n showProjects={this.showProjects}\n projectUrlTemplate={this.projectUrlTemplate}\n projectActions={this.projectActions}\n personalActions={this.personalActions}\n links={this.links}\n canAddProject={this.canAddProject}\n myLinks={this.myLinks}\n scope={this.scope}\n spaceNav={this.spaceNav}\n onLogout={this.#handleLogout}\n onActionClick={this.#handleActionClick}\n onProjectActionClick={this.#handleProjectActionClick}\n onAddProject={this.#handleAddProject}\n onAddServiceflow={this.#handleAddServiceflow}\n onPersonalActionClick={this.#handlePersonalActionClick}\n />\n );\n }\n}\n\ninterface ElevoSidebarComponentProps extends ElevoSidebarProps {\n onLogout: () => void;\n onActionClick: (detail: ActionClickDetail) => void;\n onProjectActionClick: (detail: ProjectActionClickDetail) => void;\n onAddProject: () => void;\n onAddServiceflow: () => void;\n onPersonalActionClick: (detail: PersonalActionClickDetail) => void;\n}\n\nfunction LegacyElevoSidebarComponent(\n {\n userInstanceId,\n behavior,\n logoUrl,\n newChatUrl,\n newChatLinkWhenCollapsed,\n historyUrlTemplate,\n historyActions,\n showProjects,\n projectUrlTemplate,\n projectActions,\n links,\n canAddProject,\n myLinks,\n scope,\n spaceNav,\n personalActions,\n onLogout,\n onActionClick,\n onProjectActionClick,\n onAddProject,\n onAddServiceflow,\n onPersonalActionClick,\n }: ElevoSidebarComponentProps,\n ref: React.Ref<ElevoSidebarRef>\n) {\n const [collapsed, setCollapsed] = useState(behavior === \"drawer\");\n const handleCollapse = useCallback(() => {\n setCollapsed(true);\n }, []);\n const handleExpand = useCallback(() => {\n setCollapsed(false);\n }, []);\n\n useEffect(() => {\n if (behavior === \"drawer\") {\n setCollapsed(true);\n }\n }, [behavior]);\n\n const handleClickMask = useCallback(() => {\n setCollapsed(true);\n }, []);\n\n const handleHistoryClick = useCallback(() => {\n if (behavior === \"drawer\") {\n setCollapsed(true);\n }\n }, [behavior]);\n\n const dropdownActions = useMemo<DropdownActionsProps[\"actions\"]>(\n () => [\n {\n key: \"logout\",\n icon: {\n lib: \"fa\",\n prefix: \"fas\",\n icon: \"arrow-right-from-bracket\",\n },\n text: t(K.LOGOUT),\n },\n {\n key: \"switch-language\",\n icon: {\n lib: \"lucide\",\n icon: \"languages\",\n },\n text: t(K.SWITCH_LANGUAGE),\n },\n ],\n []\n );\n\n const historyRef = useRef<ChatHistoryRef>(null);\n\n useImperativeHandle(\n ref,\n () => ({\n close: () => {\n setCollapsed(true);\n },\n pull: () => {\n historyRef.current?.pull();\n },\n removeProject: (projectId: string) => {\n historyRef.current?.removeProject?.(projectId);\n },\n addProject: (project: Project) => {\n historyRef.current?.addProject?.(project);\n },\n moveConversation: (conversationId: string) => {\n historyRef.current?.moveConversation?.(conversationId);\n },\n open: () => {\n setCollapsed(false);\n },\n }),\n []\n );\n\n return (\n <div className={classNames(\"container\", { collapsed })}>\n {behavior === \"drawer\" && !collapsed && (\n <div className=\"mask\" onClick={handleClickMask} />\n )}\n <div className=\"alternative\">\n <WrappedIconButton\n icon={SIDEBAR_ICON}\n variant=\"light\"\n onClick={handleExpand}\n />\n {newChatLinkWhenCollapsed && (\n <WrappedLink className=\"new-chat\" url={newChatUrl}>\n <WrappedIcon\n className=\"new-chat-icon\"\n lib=\"easyops\"\n icon=\"new-chat\"\n />\n {t(K.NEW_CHAT)}\n </WrappedLink>\n )}\n </div>\n <div className=\"sidebar\">\n <div className=\"logo-bar\">\n <WrappedLink url={logoUrl} className=\"logo-link\">\n <WrappedElevoLogo />\n </WrappedLink>\n <WrappedIconButton\n icon={SIDEBAR_ICON}\n variant=\"light\"\n onClick={handleCollapse}\n />\n </div>\n <div className=\"main\">\n {scope === \"space\" ? (\n <SpaceNav onAddServiceflow={onAddServiceflow} {...spaceNav!} />\n ) : (\n <>\n <WrappedLink className=\"new-chat\" url={newChatUrl}>\n <WrappedIcon\n className=\"new-chat-icon\"\n lib=\"easyops\"\n icon=\"new-chat\"\n />\n {t(K.NEW_CHAT)}\n </WrappedLink>\n {links?.length ? (\n <>\n {links.map((link, index) => (\n <NavLink\n key={index}\n url={link.url}\n activeIncludes={link.activeIncludes}\n render={({ active }) => (\n <WrappedLink\n key={index}\n className={classNames(\"link\", { active })}\n url={link.url}\n >\n <WrappedIcon className=\"icon\" {...link.icon} />\n <span className=\"title\">{link.title}</span>\n </WrappedLink>\n )}\n />\n ))}\n <div className=\"divider\" />\n </>\n ) : null}\n <ChatHistory\n ref={historyRef}\n showProjects={showProjects}\n canAddProject={canAddProject}\n historyUrlTemplate={historyUrlTemplate}\n historyActions={historyActions}\n projectUrlTemplate={projectUrlTemplate}\n projectActions={projectActions}\n myLinks={myLinks}\n onActionClick={onActionClick}\n onHistoryClick={handleHistoryClick}\n onProjectActionClick={onProjectActionClick}\n onAddProject={onAddProject}\n />\n </>\n )}\n </div>\n <div className=\"footer\">\n <WrappedDropdownActions\n className=\"dropdown\"\n themeVariant=\"elevo\"\n actions={personalActions || dropdownActions}\n onActionClick={async (e) => {\n if (personalActions) {\n onPersonalActionClick({ action: e.detail });\n } else if (e.detail.key === \"logout\") {\n onLogout();\n } else {\n await i18n.changeLanguage(\n i18n.language && i18n.language.split(\"-\")[0] === \"en\"\n ? \"zh\"\n : \"en\"\n );\n getHistory().reload();\n }\n }}\n >\n <button className=\"account\">\n <WrappedEasyopsAvatar\n nameOrInstanceId={userInstanceId}\n showName\n size=\"xs\"\n />\n </button>\n </WrappedDropdownActions>\n </div>\n </div>\n </div>\n );\n}\n","import { useEffect, useState, type RefObject } from \"react\";\n\nexport function useHasAssignedNodes(slotRef: RefObject<HTMLSlotElement>) {\n const [hasAssignedNodes, setHasAssignedNodes] = useState(false);\n\n useEffect(() => {\n const slotElement = slotRef.current;\n\n if (!slotElement) {\n return;\n }\n\n const listener = () => {\n setHasAssignedNodes(slotElement.assignedNodes().length > 0);\n };\n\n listener();\n slotElement.addEventListener(\"slotchange\", listener);\n\n return () => {\n slotElement.removeEventListener(\"slotchange\", listener);\n };\n }, [slotRef]);\n\n return hasAssignedNodes;\n}\n","import React, { useRef, type HTMLAttributes } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport styleText from \"./styles.shadow.css\";\nimport { useHasAssignedNodes } from \"@next-shared/hooks\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\n\nconst { defineElement, property } = createDecorators();\n\nexport interface IconButtonProps {\n icon?: GeneralIconProps & HTMLAttributes<GeneralIcon>;\n tooltip?: string;\n tooltipHoist?: boolean;\n active?: boolean;\n disabled?: boolean;\n variant?: IconButtonVariant;\n reduceIconSize?: boolean;\n}\n\nexport type IconButtonVariant =\n | \"default\"\n | \"light\"\n | \"mini\"\n | \"mini-light\"\n | \"bordered\";\n\n/**\n * 图标按钮,支持多种视觉变体、禁用状态、Tooltip 提示及文字插槽。\n *\n * @category interact-basic\n * @slot default - 图标旁边的文字内容(可选)\n */\nexport\n@defineElement(\"ai-portal.icon-button\", {\n styleTexts: [styleText],\n})\nclass IconButton extends ReactNextElement implements IconButtonProps {\n @property({ attribute: false })\n accessor icon: (GeneralIconProps & HTMLAttributes<GeneralIcon>) | undefined;\n\n @property()\n accessor tooltip: string | undefined;\n\n @property({ type: Boolean })\n accessor tooltipHoist: boolean | undefined;\n\n @property({ type: Boolean, render: false })\n accessor active: boolean | undefined;\n\n @property({ type: Boolean })\n accessor disabled: boolean | undefined;\n\n @property({ render: false })\n accessor variant: IconButtonVariant | undefined;\n\n /** 是否缩小图标尺寸(部分 easyops 图标过大) */\n @property({ render: false, type: Boolean })\n accessor reduceIconSize: boolean | undefined;\n\n render() {\n return (\n <IconButtonComponent\n icon={this.icon}\n tooltip={this.tooltip}\n tooltipHoist={this.tooltipHoist}\n disabled={this.disabled}\n />\n );\n }\n}\n\nfunction IconButtonComponent({\n icon,\n tooltip,\n tooltipHoist,\n disabled,\n}: IconButtonProps) {\n const slotRef = useRef<HTMLSlotElement>(null);\n const hasSlotted = useHasAssignedNodes(slotRef);\n\n const btn = (\n <button disabled={disabled} className={hasSlotted ? \"has-slotted\" : \"\"}>\n <WrappedIcon className=\"icon\" {...icon} />\n <slot ref={slotRef} />\n </button>\n );\n\n if (tooltip) {\n return (\n <WrappedTooltip content={tooltip} hoist={tooltipHoist}>\n {btn}\n </WrappedTooltip>\n );\n }\n\n return btn;\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n ALL = \"ALL\",\n EXPLORE_EXCELLENT_CASES = \"EXPLORE_EXCELLENT_CASES\",\n}\n\nconst en: Locale = {\n [K.ALL]: \"All\",\n [K.EXPLORE_EXCELLENT_CASES]: \"Explore excellent cases\",\n};\n\nconst zh: Locale = {\n [K.ALL]: \"全部\",\n [K.EXPLORE_EXCELLENT_CASES]: \"探索优秀案例\",\n};\n\nexport const NS = \"bricks/ai-portal/show-cases\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, { useMemo, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport type {\n Tab,\n TabList,\n TabListEvents,\n TabListMapping,\n TabListProps,\n} from \"../tab-list/index.js\";\nimport type { ShowCase, ShowCaseProps } from \"../show-case/index.js\";\nimport type { ShowCaseType } from \"../shared/interfaces.js\";\n\ninitializeI18n(NS, locales);\n\nconst WrappedShowCase = wrapBrick<ShowCase, ShowCaseProps>(\n \"ai-portal.show-case\"\n);\nconst WrappedTabList = wrapBrick<\n TabList,\n TabListProps,\n TabListEvents,\n TabListMapping\n>(\"ai-portal.tab-list\", {\n onTabClick: \"tab.click\",\n});\n\nconst { defineElement, property } = createDecorators();\n\nexport interface ShowCasesProps {\n list?: ShowCaseType[];\n limit?: number;\n}\n\n/**\n * 构件 `ai-portal.show-cases`\n *\n * 案例列表展示构件,支持按场景分组筛选,展示多个优秀案例卡片。\n */\nexport\n@defineElement(\"ai-portal.show-cases\", {\n styleTexts: [styleText],\n})\nclass ShowCases extends ReactNextElement implements ShowCasesProps {\n /** 案例数据列表,每项可包含 scenario 字段用于分组筛选 */\n @property({ attribute: false })\n accessor list: ShowCaseType[] | undefined;\n\n /** 每个场景分组下最多显示的案例数量 */\n @property({ type: Number })\n accessor limit: number | undefined;\n\n render() {\n return <ShowCasesComponent list={this.list} limit={this.limit} />;\n }\n}\n\nfunction ShowCasesComponent({ list, limit }: ShowCasesProps) {\n // Grouping the list by scenario\n const groups = useMemo<string[]>(() => {\n return [\"\", ...new Set(list?.map((item) => item.scenario).filter(Boolean))];\n }, [list]);\n\n const [activeGroup, setActiveGroup] = useState(\"\");\n\n const filteredList = useMemo(() => {\n if (!list) {\n return;\n }\n let filtered = list;\n if (activeGroup) {\n filtered = filtered.filter((item) => item.scenario === activeGroup);\n }\n if (limit) {\n filtered = filtered.slice(0, limit);\n }\n return filtered;\n }, [activeGroup, list, limit]);\n\n const tabs = useMemo<Tab[]>(() => {\n return groups.map((group) => ({\n id: group,\n label: group === \"\" ? t(K.ALL) : group,\n }));\n }, [groups]);\n\n if (!list?.length) {\n return null;\n }\n\n return (\n <>\n <div className=\"tips\">{`${t(K.EXPLORE_EXCELLENT_CASES)} ↓`}</div>\n <WrappedTabList\n tabs={tabs}\n activeTab={activeGroup}\n onTabClick={(event) => setActiveGroup(event.detail.id)}\n />\n <ul className=\"cases\">\n {filteredList?.map((item) => (\n <li key={item.conversationId}>\n <WrappedShowCase\n caseTitle={item.title}\n summary={item.summary}\n url={item.url}\n />\n </li>\n ))}\n </ul>\n </>\n );\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n MCP_HUB = \"MCP_HUB\",\n ALL = \"ALL\",\n\n SERVER_cmdb = \"SERVER_cmdb\",\n SERVER_cmdb_product_helper = \"SERVER_cmdb_product_helper\",\n SERVER_alert = \"SERVER_alert\",\n SERVER_web_builder = \"SERVER_web_builder\",\n SERVER_web_builder2 = \"SERVER_web_builder2\",\n SERVER_host_troubleshooting = \"SERVER_host_troubleshooting\",\n SERVER_system_inspection = \"SERVER_system_inspection\",\n SERVER_grafana = \"SERVER_grafana\",\n SERVER_kubernetes = \"SERVER_kubernetes\",\n SERVER_llm = \"SERVER_llm\",\n}\n\nconst en: Locale = {\n [K.MCP_HUB]: \"MCP Hub\",\n [K.ALL]: \"All\",\n\n [K.SERVER_cmdb]: \"CMDB\",\n [K.SERVER_cmdb_product_helper]: \"CMDB\",\n [K.SERVER_alert]: \"Alert\",\n [K.SERVER_web_builder]: \"View\",\n [K.SERVER_web_builder2]: \"View\",\n [K.SERVER_host_troubleshooting]: \"Host Troubleshooting\",\n [K.SERVER_system_inspection]: \"System Inspection\",\n [K.SERVER_grafana]: \"Grafana\",\n [K.SERVER_kubernetes]: \"Kubernetes\",\n [K.SERVER_llm]: \"LLM\",\n};\n\nconst zh: Locale = {\n [K.MCP_HUB]: \"MCP 中心\",\n [K.ALL]: \"全部\",\n\n [K.SERVER_cmdb]: \"CMDB\",\n [K.SERVER_cmdb_product_helper]: \"CMDB\",\n [K.SERVER_alert]: \"告警\",\n [K.SERVER_web_builder]: \"视图\",\n [K.SERVER_web_builder2]: \"视图\",\n [K.SERVER_host_troubleshooting]: \"主机故障排查\",\n [K.SERVER_system_inspection]: \"系统巡检\",\n [K.SERVER_grafana]: \"Grafana\",\n [K.SERVER_kubernetes]: \"Kubernetes\",\n [K.SERVER_llm]: \"大模型\",\n};\n\nexport const NS = \"bricks/ai-portal/mcp-tools\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, { useMemo, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport type {\n Tab,\n TabList,\n TabListEvents,\n TabListMapping,\n TabListProps,\n} from \"../tab-list/index.js\";\nimport type {\n StickyContainer,\n StickyContainerProps,\n} from \"../sticky-container/index.js\";\n\ninitializeI18n(NS, locales);\n\nconst DEFAULT_TOOL_ICON: GeneralIconProps = {\n lib: \"antd\",\n icon: \"tool\",\n};\n\nconst PLATFORM_CONFIG = new Map([\n [\n \"EasyOps平台\",\n {\n servers: [\"cmdb\", \"cmdb_product_helper\"],\n },\n ],\n [\n \"Grafana\",\n {\n servers: [\"grafana\"],\n },\n ],\n [\n \"Kubernetes\",\n {\n servers: [\"kubernetes\"],\n },\n ],\n [\n \"监控事件\",\n {\n servers: [\"alert\"],\n },\n ],\n [\n \"浏览器\",\n {\n servers: [\"playwright\"],\n },\n ],\n [\n \"低代码\",\n {\n servers: [\"web-builder\", \"web-builder2\"],\n },\n ],\n [\n \"大模型\",\n {\n servers: [\"llm\"],\n },\n ],\n [\n \"故障排查\",\n {\n servers: [\"host-troubleshooting\"],\n },\n ],\n]);\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedTabList = wrapBrick<\n TabList,\n TabListProps,\n TabListEvents,\n TabListMapping\n>(\"ai-portal.tab-list\", {\n onTabClick: \"tab.click\",\n});\nconst WrappedStickyContainer = wrapBrick<StickyContainer, StickyContainerProps>(\n \"ai-portal.sticky-container\"\n);\n\nconst { defineElement, property } = createDecorators();\n\nexport interface McpToolsProps {\n list?: McpTool[];\n stickyTop?: number;\n}\n\nexport interface McpTool {\n name: string;\n title: string;\n description: string;\n icon?: GeneralIconProps;\n server: McpServer;\n}\n\nexport interface McpServer {\n id: string;\n name: string;\n}\n\n/**\n * MCP 工具列表组件,按服务分组展示工具信息,支持按平台分类过滤和吸顶标签栏。\n *\n * @category display-component\n */\nexport\n@defineElement(\"ai-portal.mcp-tools\", {\n styleTexts: [styleText],\n})\nclass McpTools extends ReactNextElement implements McpToolsProps {\n @property({ attribute: false })\n accessor list: McpTool[] | undefined;\n\n @property({ type: Number })\n accessor stickyTop: number | undefined;\n\n render() {\n return <McpToolsComponent list={this.list} stickyTop={this.stickyTop} />;\n }\n}\n\nfunction McpToolsComponent({ list, stickyTop }: McpToolsProps) {\n // Grouping the list by server name\n const [groupMap, platformMap] = useMemo(() => {\n const map = new Map<string, McpTool[]>();\n const platformMap = new Map<string, string[]>();\n list?.forEach((item) => {\n const groupName = t(\n `SERVER_${item.server.id.replaceAll(\"-\", \"_\")}`,\n item.server.name\n );\n let list = map.get(groupName);\n if (!list) {\n map.set(groupName, (list = []));\n }\n list.push(item);\n\n const platform = [...PLATFORM_CONFIG.entries()].find(\n ([_name, { servers }]) => servers.includes(item.server.id)\n );\n const platformName = platform ? platform[0] : \"其他\";\n let groups = platformMap.get(platformName);\n if (!groups) {\n platformMap.set(platformName, (groups = []));\n }\n groups.push(groupName);\n });\n\n const orderedNames = [\"CMDB\"];\n const orderedMap = new Map<string, McpTool[]>(\n [...map.entries()].sort(([nameA], [nameB]) => {\n const indexA = orderedNames.indexOf(nameA);\n const indexB = orderedNames.indexOf(nameB);\n return (\n (indexA < 0 ? orderedNames.length : indexA) -\n (indexB < 0 ? orderedNames.length : indexB)\n );\n })\n );\n\n return [orderedMap, platformMap];\n }, [list]);\n\n const platforms = useMemo(() => {\n const orderedNames = [...PLATFORM_CONFIG.keys()];\n const names = [...platformMap.keys()];\n names.sort((a, b) => {\n const aIndex = orderedNames.indexOf(a);\n const bIndex = orderedNames.indexOf(b);\n return (\n (aIndex < 0 ? orderedNames.length : aIndex) -\n (bIndex < 0 ? orderedNames.length : bIndex)\n );\n });\n return [\"\", ...names];\n }, [platformMap]);\n\n const [activePlatform, setActivePlatform] = useState(\"\");\n\n const filteredGroups = useMemo(() => {\n const groupedList = [...groupMap];\n if (!activePlatform) {\n return groupedList;\n }\n const platformGroups = platformMap.get(activePlatform);\n return groupedList.filter(([group]) => platformGroups?.includes(group));\n }, [activePlatform, groupMap, platformMap]);\n\n const tabs = useMemo<Tab[]>(() => {\n return platforms.map((platform) => ({\n id: platform,\n label: platform === \"\" ? t(K.ALL) : platform,\n }));\n }, [platforms]);\n\n const tabsNode = (\n <WrappedTabList\n tabs={tabs}\n activeTab={activePlatform}\n onTabClick={(event) => setActivePlatform(event.detail.id)}\n />\n );\n\n return (\n <>\n {stickyTop == null ? (\n <div className=\"non-sticky-tabs\">{tabsNode}</div>\n ) : (\n <WrappedStickyContainer\n className=\"sticky-tabs\"\n style={{ top: stickyTop }}\n >\n {tabsNode}\n </WrappedStickyContainer>\n )}\n <ul className=\"groups\">\n {filteredGroups?.map(([groupName, items]) => (\n <li key={groupName} className=\"group\">\n <h2>{groupName}</h2>\n <ul className=\"list\">\n {items.map((item, index) => (\n <li key={index} className=\"item\">\n <div className=\"heading\">\n <WrappedIcon\n className=\"icon\"\n {...(item.icon ?? DEFAULT_TOOL_ICON)}\n fallback={DEFAULT_TOOL_ICON}\n />\n <div className=\"title\">{item.title}</div>\n </div>\n <div className=\"description\">{item.description}</div>\n </li>\n ))}\n </ul>\n </li>\n ))}\n </ul>\n </>\n );\n}\n","// istanbul ignore file: experimental\nimport React, { createRef, forwardRef } from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { NS, locales } from \"./i18n.js\";\nimport type { FeedbackDetail } from \"../cruise-canvas/interfaces.js\";\nimport { ChatStreamComponent } from \"./ChatStream.js\";\nimport type {\n ExampleProject,\n RequestStore,\n ShowCaseType,\n UploadOptions,\n} from \"../shared/interfaces.js\";\nimport type {\n AIEmployee,\n Command,\n} from \"../shared/ChatCompletions/useChatCompletions.js\";\n\ninitializeI18n(NS, locales);\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport interface ChatStreamProps {\n conversationId?: string;\n initialRequest?: RequestStore | null;\n replay?: boolean;\n replayDelay?: number;\n supports?: Record<string, boolean>;\n showHumanActions?: boolean;\n showFeedback?: boolean;\n showFeedbackAfterFailed?: boolean;\n showFeedbackOnView?: boolean;\n showUiSwitch?: boolean;\n previewUrlTemplate?: string;\n showCases?: ShowCaseType[];\n exampleProjects?: ExampleProject[];\n tryItOutUrl?: string;\n aiEmployees?: AIEmployee[];\n commands?: Command[];\n uploadOptions?: UploadOptions;\n hideMermaid?: boolean;\n}\n\nexport interface ConversationDetail {\n projectId?: string;\n}\n\nconst ForwardedChatStreamComponent = forwardRef(ChatStreamComponent);\n\n/**\n * AI 对话流视图,以聊天气泡形式展示对话过程,支持文件上传、命令联想、回放及用户反馈等功能。\n *\n * @description AI 对话流视图,以聊天气泡形式展示对话过程,支持文件上传、命令联想、回放及用户反馈等功能。\n * @category ai-portal\n */\nexport\n@defineElement(\"ai-portal.chat-stream\", {\n // Will wrap v2 bricks which don't support in shadow DOM.\n shadowOptions: false,\n})\nclass ChatStream extends ReactNextElement implements ChatStreamProps {\n /**\n * 对话 ID\n */\n @property()\n accessor conversationId: string | undefined;\n\n /** 初始请求数据。仅初始设置有效。 */\n @property({ attribute: false, render: false })\n accessor initialRequest: RequestStore | undefined | null;\n\n /** 是否启用回放。仅初始设置有效。 */\n @property({ type: Boolean })\n accessor replay: boolean | undefined;\n\n /**\n * 设置回放时消息之间的时间间隔,单位为秒。仅初始设置有效。\n *\n * @default 2\n */\n @property({ type: Number })\n accessor replayDelay: number | undefined;\n\n /**\n * 功能开关配置,键为功能名,值为是否启用\n */\n @property({ attribute: false })\n accessor supports: Record<string, boolean> | undefined;\n\n /**\n * 是否显示 Human-in-the-loop 操作按钮\n */\n @property({ type: Boolean })\n accessor showHumanActions: boolean | undefined;\n\n /**\n * 是否显示反馈按钮\n */\n @property({ type: Boolean })\n accessor showFeedback: boolean | undefined;\n\n /**\n * 是否在任务失败时也显示反馈按钮\n */\n @property({ type: Boolean })\n accessor showFeedbackAfterFailed: boolean | undefined;\n\n /**\n * 是否在查看生成视图时显示反馈按钮\n */\n @property({ type: Boolean })\n accessor showFeedbackOnView: boolean | undefined;\n\n /**\n * 是否显示切换到画布视图的按钮\n */\n @property({ type: Boolean })\n accessor showUiSwitch: boolean | undefined;\n\n /**\n * 是否隐藏 Mermaid 图表渲染,通过 CSS 属性选择器控制样式\n */\n @property({ type: Boolean, render: false })\n accessor hideMermaid: boolean | undefined;\n\n /**\n * 生成视图预览页的 URL 模板,支持 {viewId} 等字段插值\n */\n @property()\n accessor previewUrlTemplate: string | undefined;\n\n /**\n * 示例场景列表,用于在空对话时展示快速入口\n */\n @property({ attribute: false })\n accessor showCases: ShowCaseType[] | undefined;\n\n /**\n * 示例项目列表,用于展示可参考的已有项目\n */\n @property({ attribute: false })\n accessor exampleProjects: ExampleProject[] | undefined;\n\n /**\n * \"试一试\"跳转 URL\n */\n @property()\n accessor tryItOutUrl: string | undefined;\n\n /**\n * 可 @ 提及的数字人列表\n */\n @property({ attribute: false })\n accessor aiEmployees: AIEmployee[] | undefined;\n\n /**\n * 命令列表,支持通过 / 或搜索触发联想\n */\n @property({ attribute: false })\n accessor commands: Command[] | undefined;\n\n /**\n * 文件上传配置\n */\n @property({ attribute: false })\n accessor uploadOptions: UploadOptions | undefined;\n\n /**\n * @detail void\n * @description 用户点击分享时触发\n */\n @event({ type: \"share\" })\n accessor #shareEvent!: EventEmitter<void>;\n\n #onShare = () => {\n this.#shareEvent.emit();\n };\n\n /**\n * @detail void\n * @description 用户点击终止任务时触发\n */\n @event({ type: \"terminate\" })\n accessor #terminateEvent!: EventEmitter<void>;\n\n #onTerminate = () => {\n this.#terminateEvent.emit();\n };\n\n /**\n * @detail { plan: 计划步骤列表, result: 结果列表, feedback: 反馈文本 }\n * @description 用户提交反馈时触发\n */\n @event({ type: \"feedback.submit\" })\n accessor #feedbackSubmitEvent!: EventEmitter<FeedbackDetail>;\n\n #onSubmitFeedback = (detail: FeedbackDetail) => {\n this.#feedbackSubmitEvent.emit(detail);\n };\n\n /**\n * @detail 生成视图的 viewId\n * @description 用户查看生成视图时的反馈事件触发\n */\n @event({ type: \"feedback.on.view\" })\n accessor #feedbackOnViewEvent!: EventEmitter<string>;\n\n #onFeedbackOnView = (viewId: string) => {\n this.#feedbackOnViewEvent.emit(viewId);\n };\n\n /**\n * @detail 切换目标 UI 模式,值为 \"canvas\"\n * @description 用户点击切换到画布视图按钮时触发\n */\n @event({ type: \"ui.switch\" })\n accessor #switch!: EventEmitter<\"canvas\">;\n\n #onSwitchToCanvas = () => {\n this.#switch.emit(\"canvas\");\n };\n\n /**\n * @detail { projectId: 关联的项目 ID }\n * @description 对话详情信息变化时触发\n */\n @event({ type: \"detail.change\" })\n accessor #detailChange!: EventEmitter<ConversationDetail>;\n\n #onDetailChange = (detail: ConversationDetail) => {\n this.#detailChange.emit(detail);\n };\n\n /**\n * @detail 是否已切换到分屏模式\n * @description 分屏状态切换时触发\n */\n @event({ type: \"split.change\" })\n accessor #splitChange!: EventEmitter<boolean>;\n\n #onSplitChange = (splitted: boolean) => {\n this.#splitChange.emit(splitted);\n };\n\n #ref = createRef<ChatStreamRef>();\n\n /**\n * 通知组件任务已恢复,用于继续中断的对话\n */\n @method()\n resumed() {\n this.#ref.current?.resumed?.();\n }\n\n /**\n * 通知组件反馈提交成功\n */\n @method()\n feedbackSubmitDone() {\n this.#ref.current?.feedbackSubmitDone();\n }\n\n /**\n * 通知组件反馈提交失败\n */\n @method()\n feedbackSubmitFailed() {\n this.#ref.current?.feedbackSubmitFailed();\n }\n\n /**\n * 通知组件查看视图的反馈处理完成\n * @param viewId 对应的视图 ID\n */\n @method()\n feedbackOnViewDone(viewId: string) {\n this.#ref.current?.feedbackOnViewDone(viewId);\n }\n\n render() {\n return (\n <ForwardedChatStreamComponent\n conversationId={this.conversationId!}\n initialRequest={this.initialRequest}\n replay={this.replay}\n replayDelay={this.replayDelay}\n supports={this.supports}\n showHumanActions={this.showHumanActions}\n showFeedback={this.showFeedback}\n showFeedbackAfterFailed={this.showFeedbackAfterFailed}\n showFeedbackOnView={this.showFeedbackOnView}\n showUiSwitch={this.showUiSwitch}\n previewUrlTemplate={this.previewUrlTemplate}\n showCases={this.showCases}\n exampleProjects={this.exampleProjects}\n tryItOutUrl={this.tryItOutUrl}\n aiEmployees={this.aiEmployees}\n commands={this.commands}\n uploadOptions={this.uploadOptions}\n onShare={this.#onShare}\n onTerminate={this.#onTerminate}\n onSubmitFeedback={this.#onSubmitFeedback}\n onSwitchToCanvas={this.#onSwitchToCanvas}\n onFeedbackOnView={this.#onFeedbackOnView}\n onDetailChange={this.#onDetailChange}\n onSplitChange={this.#onSplitChange}\n ref={this.#ref}\n />\n );\n }\n}\n\nexport interface ChatStreamRef {\n resumed?: () => void;\n feedbackSubmitDone: () => void;\n feedbackSubmitFailed: () => void;\n feedbackOnViewDone: (viewId: string) => void;\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n AI_EMPLOYEES = \"AI_EMPLOYEES\",\n UNTITLED = \"UNTITLED\",\n}\n\nconst en: Locale = {\n AI_EMPLOYEES: \"AI Employees\",\n UNTITLED: \"Untitled\",\n};\n\nconst zh: Locale = {\n AI_EMPLOYEES: \"Ai 数字人\",\n UNTITLED: \"未命名\",\n};\n\nexport const NS = \"bricks/ai-portal/ai-employees\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, { useMemo, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport classNames from \"classnames\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport { parseTemplate } from \"../shared/parseTemplate.js\";\nimport type {\n Tab,\n TabList,\n TabListEvents,\n TabListMapping,\n TabListProps,\n} from \"../tab-list/index.js\";\nimport type {\n StickyContainer,\n StickyContainerProps,\n} from \"../sticky-container/index.js\";\n\ninitializeI18n(NS, locales);\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedTabList = wrapBrick<\n TabList,\n TabListProps,\n TabListEvents,\n TabListMapping\n>(\"ai-portal.tab-list\", {\n onTabClick: \"tab.click\",\n});\nconst WrappedStickyContainer = wrapBrick<StickyContainer, StickyContainerProps>(\n \"ai-portal.sticky-container\"\n);\n\nconst { defineElement, property } = createDecorators();\n\nexport interface AIEmployeesProps {\n list?: Employee[];\n industries?: string[];\n // roles?: string[];\n urlTemplate?: string;\n stickyTop?: number;\n}\n\nexport interface Employee {\n name: string;\n industry: string;\n role: string;\n description: string;\n avatar?: string;\n}\n\n/**\n * AI 数字人卡片列表,按行业和角色分组展示,支持 Tab 切换行业和点击跳转。\n *\n * @description AI 数字人卡片列表,按行业和角色分组展示,支持 Tab 切换行业和点击跳转。\n * @category ai-portal\n */\nexport\n@defineElement(\"ai-portal.ai-employees\", {\n styleTexts: [styleText],\n})\nclass AIEmployees extends ReactNextElement implements AIEmployeesProps {\n /**\n * 数字人列表数据\n */\n @property({ attribute: false })\n accessor list: Employee[] | undefined;\n\n /**\n * 行业列表,用于指定 Tab 的顺序,未在此列表中的行业将按出现顺序附加在末尾\n */\n @property({ attribute: false })\n accessor industries: string[] | undefined;\n\n /**\n * 跳转到数字人详情页的 URL 模板,支持 {name} 等数字人字段插值\n */\n @property()\n accessor urlTemplate: string | undefined;\n\n /**\n * 行业 Tab 栏吸顶时距顶部的距离(px),不设置则不吸顶\n */\n @property({ type: Number })\n accessor stickyTop: number | undefined;\n\n render() {\n return (\n <AIEmployeesComponent\n list={this.list}\n industries={this.industries}\n urlTemplate={this.urlTemplate}\n stickyTop={this.stickyTop}\n />\n );\n }\n}\n\nfunction AIEmployeesComponent({\n list,\n industries: _industries,\n urlTemplate,\n stickyTop,\n}: AIEmployeesProps) {\n const industries = useMemo(() => {\n return [\n ...new Set([\n ...(_industries ?? []),\n ...(list ?? []).map((item) => item.industry),\n ]),\n ];\n }, [_industries, list]);\n\n const [activeIndustry, setActiveIndustry] = useState(industries[0]);\n\n // Grouping the list by role\n const groups = useMemo(() => {\n const map = new Map<string, Employee[]>();\n list?.forEach((item) => {\n if (item.industry !== activeIndustry) {\n return;\n }\n let array = map.get(item.role);\n if (!array) {\n map.set(item.role, (array = []));\n }\n array.push(item);\n });\n return [...map.entries()];\n }, [activeIndustry, list]);\n\n const tabs = useMemo<Tab[]>(() => {\n return industries.map((industry) => ({\n id: industry,\n label: industry || t(K.UNTITLED),\n }));\n }, [industries]);\n\n const tabsNode = (\n <WrappedTabList\n tabs={tabs}\n activeTab={activeIndustry}\n onTabClick={(event) => setActiveIndustry(event.detail.id)}\n />\n );\n\n return (\n <>\n {stickyTop == null ? (\n <div className=\"non-sticky-tabs\">{tabsNode}</div>\n ) : (\n <WrappedStickyContainer\n className=\"sticky-tabs\"\n style={{ top: stickyTop }}\n >\n {tabsNode}\n </WrappedStickyContainer>\n )}\n <ul className=\"groups\">\n {groups.map(([groupName, items]) => (\n <li key={groupName} className=\"group\">\n <h2>{groupName}</h2>\n <ul className=\"list\">\n {items.map((item, index) => (\n <li key={index}>\n <WrappedLink\n className={classNames(\"link\", { clickable: !!urlTemplate })}\n {...(urlTemplate\n ? { url: parseTemplate(urlTemplate, item) }\n : null)}\n >\n <div className=\"heading\">\n <div className=\"avatar\">\n {item.avatar ? (\n <img src={item.avatar} />\n ) : (\n <WrappedIcon lib=\"antd\" icon=\"user\" />\n )}\n </div>\n <div className=\"title\">{item.name}</div>\n </div>\n <div className=\"description\">{item.description}</div>\n </WrappedLink>\n </li>\n ))}\n </ul>\n </li>\n ))}\n </ul>\n </>\n );\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n AGENTS = \"AGENTS\",\n}\n\nconst en: Locale = {\n AGENTS: \"Agents\",\n};\n\nconst zh: Locale = {\n AGENTS: \"智能体\",\n};\n\nexport const NS = \"bricks/ai-portal/ai-agents\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport classNames from \"classnames\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport { parseTemplate } from \"../shared/parseTemplate.js\";\n\nconst DEFAULT_TOOL_ICON: GeneralIconProps = {\n lib: \"antd\",\n icon: \"tool\",\n};\n\ninitializeI18n(NS, locales);\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nconst { defineElement, property } = createDecorators();\n\nexport interface AIAgentsProps {\n list?: Agent[];\n urlTemplate?: string;\n /** @deprecated */\n withContainer?: boolean;\n}\n\nexport interface Agent {\n name: string;\n description: string;\n icon?: GeneralIconProps;\n tags?: string[];\n}\n\n/**\n * AI Agents 卡片列表,展示可用的 AI 智能体,支持点击跳转到对应详情页。\n *\n * @description AI Agents 卡片列表,展示可用的 AI 智能体,支持点击跳转到对应详情页。\n * @category ai-portal\n */\nexport\n@defineElement(\"ai-portal.ai-agents\", {\n styleTexts: [styleText],\n})\nclass AIAgents extends ReactNextElement implements AIAgentsProps {\n /**\n * AI Agent 列表数据\n */\n @property({ attribute: false })\n accessor list: Agent[] | undefined;\n\n /**\n * 跳转到 Agent 详情页的 URL 模板,支持 {name} 等 Agent 字段插值\n */\n @property()\n accessor urlTemplate: string | undefined;\n\n /** @deprecated */\n @property({ type: Boolean })\n accessor withContainer = true;\n\n render() {\n return (\n <AIAgentsComponent\n list={this.list}\n urlTemplate={this.urlTemplate}\n withContainer={this.withContainer}\n />\n );\n }\n}\n\nfunction AIAgentsComponent({\n list,\n urlTemplate,\n withContainer,\n}: AIAgentsProps) {\n const node = (\n <>\n <ul className=\"list\">\n {list?.map((item, index) => (\n <li key={index}>\n <WrappedLink\n className={classNames(\"link\", { clickable: !!urlTemplate })}\n {...(urlTemplate\n ? { url: parseTemplate(urlTemplate, item) }\n : null)}\n >\n <div className=\"heading\">\n <div className=\"icon\">\n <WrappedIcon\n {...(item.icon ?? DEFAULT_TOOL_ICON)}\n fallback={DEFAULT_TOOL_ICON}\n />\n </div>\n <div className=\"title\">{item.name}</div>\n </div>\n <div className=\"tags\">\n {item.tags?.map((tag, tagIndex) => (\n <span key={tagIndex} className=\"tag\">\n {tag}\n </span>\n ))}\n </div>\n <div className=\"description\">{item.description}</div>\n </WrappedLink>\n </li>\n ))}\n </ul>\n </>\n );\n\n if (!withContainer) {\n return node;\n }\n\n return (\n <div className=\"container\">\n <h1>{t(K.AGENTS)}</h1>\n {node}\n </div>\n );\n}\n","import { createProviderClass } from \"@next-core/utils/general\";\nimport type { RequestStore } from \"../shared/interfaces\";\n\nlet store: RequestStore | null = null;\n\nexport function saveRequestStore(value: RequestStore): void {\n store = value;\n}\n\nexport function loadRequestStore(): RequestStore | null {\n const value = store;\n store = null;\n return value;\n}\n\nexport function clearRequestStore(): void {\n store = null;\n}\n\ncustomElements.define(\n \"ai-portal.save-request-store\",\n createProviderClass(saveRequestStore)\n);\n\ncustomElements.define(\n \"ai-portal.load-request-store\",\n createProviderClass(loadRequestStore)\n);\n\ncustomElements.define(\n \"ai-portal.clear-request-store\",\n createProviderClass(clearRequestStore)\n);\n","import React, { useEffect } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { getRuntime } from \"@next-core/runtime\";\nimport \"@next-core/theme\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport styleText from \"./styles.shadow.css\";\nimport type {\n StickyContainer,\n StickyContainerProps,\n} from \"../sticky-container/index.js\";\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedStickyContainer = wrapBrick<StickyContainer, StickyContainerProps>(\n \"ai-portal.sticky-container\"\n);\n\nconst { defineElement, property } = createDecorators();\n\nexport interface PageContainerProps {\n pageTitle?: string;\n breadcrumbs?: Breadcrumb[];\n size?: \"medium\" | \"small\" | \"full\";\n variant?: \"default\" | \"form\";\n sticky?: boolean;\n}\n\nexport interface Breadcrumb {\n text: string;\n url: string;\n}\n\n/**\n * 构件 `ai-portal.page-container`\n *\n * 页面容器构件,提供统一的页面布局,包含面包屑导航、页面标题和内容区域。\n *\n * @slot - 内容\n * @slot toolbar - 工具栏\n */\nexport\n@defineElement(\"ai-portal.page-container\", {\n styleTexts: [styleText],\n})\nclass PageContainer extends ReactNextElement implements PageContainerProps {\n /** 页面标题,同时会调用 applyPageTitle 更新浏览器标签页标题 */\n @property()\n accessor pageTitle: string | undefined;\n\n /** 面包屑导航配置,每项包含 text 和 url */\n @property({ attribute: false })\n accessor breadcrumbs: Breadcrumb[] | undefined;\n\n /** 内容区域宽度模式,通过 CSS attribute selector 控制样式,不触发重新渲染 */\n @property({ render: false })\n accessor size: \"medium\" | \"small\" | \"full\" | undefined;\n\n /** 页面变体,通过 CSS attribute selector 控制样式,不触发重新渲染 */\n @property({ render: false })\n accessor variant: \"default\" | \"form\" | undefined;\n\n /** 是否固定头部(含面包屑和标题)到页面顶部 */\n @property({ type: Boolean })\n accessor sticky: boolean | undefined;\n\n render() {\n return (\n <PageContainerComponent\n pageTitle={this.pageTitle}\n breadcrumbs={this.breadcrumbs}\n sticky={this.sticky}\n />\n );\n }\n}\n\nfunction PageContainerComponent({\n breadcrumbs,\n pageTitle,\n sticky,\n}: PageContainerProps) {\n useEffect(() => {\n if (typeof pageTitle === \"string\") {\n getRuntime().applyPageTitle(pageTitle);\n }\n }, [pageTitle]);\n\n const header =\n pageTitle || breadcrumbs?.length ? (\n <div className=\"header\">\n <nav className={breadcrumbs?.length ? \"with-breadcrumbs\" : \"\"}>\n {breadcrumbs?.length ? (\n <ul className=\"breadcrumbs\">\n {breadcrumbs.map((item, index) => (\n <li key={index}>\n <WrappedLink url={item.url}>{item.text}</WrappedLink>\n </li>\n ))}\n </ul>\n ) : null}\n {pageTitle ? <h1>{pageTitle}</h1> : null}\n </nav>\n <div className=\"toolbar\">\n <slot name=\"toolbar\" />\n </div>\n </div>\n ) : null;\n\n return (\n <div className=\"container\">\n {header && sticky ? (\n <WrappedStickyContainer className=\"sticky-header\">\n {header}\n </WrappedStickyContainer>\n ) : (\n <div className=\"non-sticky-header\">{header}</div>\n )}\n <slot />\n </div>\n );\n}\n","import React from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport classNames from \"classnames\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface TabListProps {\n tabs?: Tab[];\n activeTab?: string;\n}\n\nexport interface Tab {\n id: string;\n label: string;\n}\n\nexport interface TabListEvents {\n \"tab.click\": CustomEvent<Tab>;\n}\n\nexport interface TabListMapping {\n onTabClick: \"tab.click\";\n}\n\n/**\n * 构件 `ai-portal.tab-list`\n *\n * 标签页列表构件,展示可切换的标签页,点击后触发事件并自动更新选中状态。\n *\n * @part tabs - The tab list container\n * @part tab - The individual tab\n */\nexport\n@defineElement(\"ai-portal.tab-list\", {\n styleTexts: [styleText],\n})\nclass TabList extends ReactNextElement implements TabListProps {\n /** 标签页配置列表,每项包含 id 和 label */\n @property({ attribute: false })\n accessor tabs: Tab[] | undefined;\n\n /** 当前激活的标签页 id */\n @property({ attribute: false })\n accessor activeTab: string | undefined;\n\n /**\n * @description 点击标签页时触发,同时自动更新 activeTab\n * @detail { id: 标签页ID, label: 标签页标题 }\n */\n @event({ type: \"tab.click\" })\n accessor #tabClick!: EventEmitter<Tab>;\n\n #handleTabClick = (tab: Tab) => {\n this.activeTab = tab.id;\n this.#tabClick.emit(tab);\n };\n\n render() {\n return (\n <TabListComponent\n tabs={this.tabs}\n activeTab={this.activeTab}\n onTabClick={this.#handleTabClick}\n />\n );\n }\n}\n\ninterface TabListComponentProps extends TabListProps {\n onTabClick: (tab: Tab) => void;\n}\n\nfunction TabListComponent({\n tabs,\n activeTab,\n onTabClick,\n}: TabListComponentProps) {\n return (\n <ul className=\"tabs\" part=\"tabs\">\n {tabs?.map((tab) => (\n <li\n key={tab.id}\n part=\"tab\"\n className={classNames(\"tab\", { active: tab.id === activeTab })}\n >\n <a onClick={() => onTabClick(tab)}>{tab.label}</a>\n </li>\n ))}\n </ul>\n );\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n PLEASE_SELECT = \"PLEASE_SELECT\",\n SEARCH_PLACEHOLDER = \"SEARCH_PLACEHOLDER\",\n SEARCH_NO_DATA = \"SEARCH_NO_DATA\",\n}\n\nconst en: Locale = {\n PLEASE_SELECT: \"Please Select\",\n SEARCH_PLACEHOLDER: \"Search\",\n SEARCH_NO_DATA: \"No Data\",\n};\n\nconst zh: Locale = {\n PLEASE_SELECT: \"请选择\",\n SEARCH_PLACEHOLDER: \"搜索\",\n SEARCH_NO_DATA: \"暂无结果\",\n};\n\nexport const NS = \"bricks/ai-portal/dropdown-select\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, { useState, useEffect, useCallback, useMemo } from \"react\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { debounce } from \"lodash\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport {\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping,\n} from \"@next-bricks/basic/popover\";\nimport { Menu } from \"@next-bricks/basic/menu\";\nimport { MenuItem, MenuComponentProps } from \"@next-bricks/basic/menu-item\";\nimport { GeneralIcon, GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport {\n LoadingContainer,\n LoadingContainerProps,\n} from \"@next-bricks/basic/loading-container\";\nimport { Input, InputEvents, InputProps } from \"@next-bricks/form/input\";\n\ninitializeI18n(NS, locales);\n\nconst { defineElement, property, event } = createDecorators();\nconst WrappedPopover = wrapBrick<\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping\n>(\"eo-popover\", {\n onVisibleChange: \"visible.change\",\n onBeforeVisibleChange: \"before.visible.change\",\n});\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedLoadingContainer = wrapBrick<\n LoadingContainer,\n LoadingContainerProps\n>(\"eo-loading-container\");\n\nconst WrappedMenu = wrapBrick<Menu, unknown>(\"eo-menu\");\nconst WrappedMenuItem = wrapBrick<MenuItem, MenuComponentProps>(\"eo-menu-item\");\n\nexport interface InputEventsMap {\n onValueChange: \"change\";\n}\n\nconst WrappedInput = wrapBrick<Input, InputProps, InputEvents, InputEventsMap>(\n \"eo-input\",\n {\n onValueChange: \"change\",\n }\n);\n\nexport interface DropdownSelectProps {\n value?: string;\n options?: DropdownOptions[];\n labelMaxWidth?: string | number;\n dropdownMaxWidth?: string | number;\n dropdownContentStyle?: React.CSSProperties;\n showSearch?: boolean;\n searchPlaceholder?: string;\n loading?: boolean;\n}\n\nexport interface DropdownOptions {\n label: string;\n value: string;\n disabled?: boolean;\n [key: string]: unknown;\n}\n\n/**\n * 下拉选择器,提供选项列表供用户选择,支持搜索过滤功能。\n *\n * @category interact-basic\n */\nexport\n@defineElement(\"ai-portal.dropdown-select\", {\n styleTexts: [styleText],\n})\nclass DropdownSelect extends ReactNextElement implements DropdownSelectProps {\n @property()\n accessor value: string | undefined;\n\n @property({ attribute: false })\n accessor options: DropdownOptions[] | undefined;\n\n @property({ attribute: false })\n accessor labelMaxWidth: string | number | undefined;\n\n @property({ type: Boolean })\n accessor loading: boolean | undefined;\n\n @property({ attribute: false })\n accessor searchPlaceholder: string | undefined;\n\n @property({ attribute: false })\n accessor dropdownContentStyle: React.CSSProperties | undefined;\n\n /**\n * @default \"500px\"\n */\n @property({ attribute: false })\n accessor dropdownMaxWidth: string | number | undefined;\n\n /** 是否展示搜索框 */\n @property({ type: Boolean })\n accessor showSearch: boolean | undefined;\n\n /**\n * @detail { label: 选项标签, value: 选项值 }\n * @description 选项选中时触发\n */\n @event({ type: \"change\" })\n accessor #changeEvent!: EventEmitter<DropdownOptions>;\n\n #handleChange = (option: DropdownOptions) => {\n this.#changeEvent.emit(option);\n };\n\n render() {\n return (\n <DropdownSelectComponent\n value={this.value}\n options={this.options}\n onChange={this.#handleChange}\n loading={this.loading}\n labelMaxWidth={this.labelMaxWidth}\n dropdownMaxWidth={this.dropdownMaxWidth}\n showSearch={this.showSearch}\n searchPlaceholder={this.searchPlaceholder}\n dropdownContentStyle={this.dropdownContentStyle}\n />\n );\n }\n}\n\ninterface DropdownSelectComponentProps extends DropdownSelectProps {\n onChange: (option: DropdownOptions) => void;\n}\n\nfunction DropdownSelectComponent({\n value: _value,\n options: _options,\n labelMaxWidth,\n dropdownMaxWidth,\n showSearch,\n loading,\n searchPlaceholder,\n dropdownContentStyle,\n onChange,\n}: DropdownSelectComponentProps) {\n const [open, setOpen] = useState(false);\n const [value, setValue] = useState(_value);\n const [q, setQ] = useState(\"\");\n const [options, setOptions] = useState<DropdownOptions[] | undefined>(\n _options\n );\n\n useEffect(() => {\n setOptions(_options);\n }, [_options]);\n\n const activeOption = useMemo(() => {\n return options?.find((opt) => opt.value === value);\n }, [options, value]);\n\n const filteredOptions = useMemo(() => {\n if (!q || !options) {\n return options;\n }\n return options?.filter((ops) =>\n ops.label.toLowerCase().includes(q.toLowerCase())\n );\n }, [options, q]);\n\n const handleBeforeVisibleChange = useCallback((e: CustomEvent<boolean>) => {\n setOpen(e.detail);\n if (!e.detail) {\n setQ(\"\");\n }\n }, []);\n\n const handleSearchChange = useMemo(\n () =>\n debounce((evt: CustomEvent<string>) => {\n setQ(evt.detail);\n }, 300),\n []\n );\n\n return (\n <WrappedPopover\n placement=\"bottom-start\"\n trigger=\"click\"\n active={open}\n arrow={false}\n distance={5}\n onBeforeVisibleChange={handleBeforeVisibleChange}\n >\n <span slot=\"anchor\" className=\"trigger\">\n <span className=\"label\" style={{ maxWidth: labelMaxWidth }}>\n {activeOption ? activeOption?.label : t(K.PLEASE_SELECT)}\n </span>\n <WrappedIcon lib=\"lucide\" icon={open ? \"chevron-up\" : \"chevron-down\"} />\n </span>\n <div className=\"dropdown\" style={{ maxWidth: dropdownMaxWidth }}>\n {showSearch && (\n <div className=\"search-container\">\n <WrappedInput\n className=\"search\"\n value={q}\n placeholder={searchPlaceholder || t(K.SEARCH_PLACEHOLDER)}\n onValueChange={handleSearchChange}\n >\n <WrappedIcon slot=\"prefix\" lib=\"antd\" icon=\"search\" />\n </WrappedInput>\n </div>\n )}\n <WrappedLoadingContainer\n loading={loading}\n delay={500}\n style={{ width: \"100%\" }}\n >\n <div className=\"dropdown-inner\" style={dropdownContentStyle}>\n <slot name=\"prefix\" />\n {!!filteredOptions?.length && (\n <WrappedMenu>\n {filteredOptions?.map((opt) => (\n <WrappedMenuItem\n key={opt.value}\n disabled={opt.disabled}\n className={value === opt.value ? \"active\" : undefined}\n onClick={(e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setOpen(false);\n if (value !== opt.value) {\n setValue(opt.value);\n onChange(opt);\n }\n }}\n >\n {opt.label}\n </WrappedMenuItem>\n ))}\n </WrappedMenu>\n )}\n {!filteredOptions?.length && (\n <div className=\"empty\">{t(K.SEARCH_NO_DATA)}</div>\n )}\n </div>\n </WrappedLoadingContainer>\n </div>\n </WrappedPopover>\n );\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n UNTITLED = \"UNTITLED\",\n}\n\nconst en: Locale = {\n UNTITLED: \"Untitled\",\n};\n\nconst zh: Locale = {\n UNTITLED: \"无标题\",\n};\n\nexport const NS = \"bricks/ai-portal/preview-container\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./styles.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./styles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { Suspense, use, useEffect, useMemo, useRef } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { unstable_createRoot } from \"@next-core/runtime\";\nimport type { ModulePartOfComponent, ParsedApp } from \"@next-tsx/parser\";\nimport { convertView, type ConvertResult } from \"@next-tsx/converter\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type {\n EoPageTitle,\n PageTitleProps,\n} from \"@next-bricks/basic/page-title\";\nimport type {\n EoMainView,\n MainViewProps,\n} from \"@next-bricks/containers/main-view\";\nimport type {\n EoNarrowView,\n NarrowViewProps,\n} from \"@next-bricks/containers/narrow-view\";\nimport { uniqueId } from \"lodash\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styles from \"./styles.module.css\";\nimport { getRemoteTsxParserWorker } from \"../shared/workers/tsxParser.js\";\nimport { createPortal } from \"../cruise-canvas/utils/createPortal.js\";\n\ninitializeI18n(NS, locales);\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedPageTitle = wrapBrick<EoPageTitle, PageTitleProps>(\n \"eo-page-title\"\n);\nconst WrappedMainView = wrapBrick<EoMainView, MainViewProps>(\"eo-main-view\");\nconst WrappedNarrowView = wrapBrick<EoNarrowView, NarrowViewProps>(\n \"eo-narrow-view\"\n);\n\nconst { defineElement, property } = createDecorators();\n\nexport interface PreviewContainerProps {\n source?: string;\n url?: string;\n}\n\n/**\n * 构件 `ai-portal.preview-container`\n *\n * TSX 源码预览容器,将 TSX 源码字符串解析并渲染为完整的页面视图。\n */\nexport\n@defineElement(\"ai-portal.preview-container\", {\n shadowOptions: false,\n})\nclass PreviewContainer\n extends ReactNextElement\n implements PreviewContainerProps\n{\n /** TSX 源码字符串,将被解析并渲染为页面视图 */\n @property({ attribute: false })\n accessor source: string | undefined;\n\n /** 渲染上下文中可访问的 URL,传入后可在视图内通过路由相关 API 使用 */\n @property()\n accessor url: string | undefined;\n\n #rootId = uniqueId();\n\n render() {\n return (\n <Suspense\n fallback={\n <WrappedIcon\n lib=\"antd\"\n icon=\"loading-3-quarters\"\n spinning\n className={styles.loading}\n />\n }\n >\n <PreviewContainerComponent\n rootId={this.#rootId}\n source={this.source}\n url={this.url}\n />\n </Suspense>\n );\n }\n}\n\ninterface PreviewContainerComponentProps extends PreviewContainerProps {\n rootId: string;\n}\n\nfunction PreviewContainerComponent({\n rootId,\n source,\n url,\n}: PreviewContainerComponentProps) {\n const parsedResultPromise = useMemo(() => {\n if (!source) {\n return Promise.resolve(null);\n }\n return parse(source).catch((error) => {\n // eslint-disable-next-line no-console\n console.error(\"Failed to parse view:\", error);\n return null;\n });\n }, [source]);\n\n const parsedResult = use(parsedResultPromise);\n\n const convertedResultPromise = useMemo(() => {\n if (!parsedResult) {\n return Promise.resolve(null);\n }\n return convertView(parsedResult, {\n rootId,\n expanded: true,\n }).catch((error) => {\n // eslint-disable-next-line no-console\n console.error(\"Failed to convert view:\", error);\n return null;\n });\n }, [parsedResult, rootId]);\n\n const convertedResult = use(convertedResultPromise);\n\n const viewTitle = useMemo(\n () => (parsedResult?.entry?.defaultExport as ModulePartOfComponent)?.title,\n [parsedResult]\n );\n\n return (\n <RenderComponent\n rootId={rootId}\n pageTitle={viewTitle}\n convertedResult={convertedResult}\n url={url}\n />\n );\n}\n\ninterface RenderComponentProps {\n rootId: string;\n pageTitle?: string;\n convertedResult: ConvertResult | null;\n url?: string;\n}\n\nfunction RenderComponent({\n rootId,\n pageTitle,\n convertedResult,\n url,\n}: RenderComponentProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const rootRef = useRef<Awaited<\n ReturnType<typeof unstable_createRoot>\n > | null>(null);\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) {\n return;\n }\n const portal = createPortal(rootId);\n const root = unstable_createRoot(container, {\n portal,\n supportsUseChildren: true,\n } as any);\n rootRef.current = root;\n return () => {\n root.unmount();\n portal.remove();\n rootRef.current = null;\n };\n }, [rootId]);\n\n useEffect(() => {\n if (!convertedResult) {\n return;\n }\n const { brick, context, functions, templates } = convertedResult;\n rootRef.current?.render(brick, { context, functions, templates, url });\n }, [convertedResult, url]);\n\n return (\n <WrappedNarrowView size=\"large\" className={styles.container}>\n <WrappedMainView>\n <WrappedPageTitle\n slot=\"pageTitle\"\n pageTitle={pageTitle || t(K.UNTITLED)}\n />\n <div className={styles.main} ref={containerRef} data-root-id={rootId} />\n </WrappedMainView>\n </WrappedNarrowView>\n );\n}\n\nasync function parse(source: string): Promise<ParsedApp> {\n const worker = await getRemoteTsxParserWorker();\n const result = await worker.parseView(source);\n return result;\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {}\n// HELLO = \"HELLO\",\n\nconst en: Locale = {\n // HELLO: \"Hello\",\n};\n\nconst zh: Locale = {\n // HELLO: \"你好\",\n};\n\nexport const NS = \"bricks/ai-portal/action-buttons\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { Button, ButtonProps } from \"@next-bricks/basic/button\";\nimport { NS, locales } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\n\ninitializeI18n(NS, locales);\n\nconst WrapperIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrapperButton = wrapBrick<Button, ButtonProps>(\"eo-button\");\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface ActionItem {\n text: string;\n key: string;\n icon?: GeneralIconProps;\n hidden?: boolean;\n}\n\nexport interface ActionButtonsProps {\n items?: ActionItem[];\n activeKey?: string | null;\n}\n\n/**\n * 动作按钮组,支持选中状态切换,用于聊天框的功能入口。\n *\n * @description 动作按钮组,支持选中状态切换,用于聊天框的功能入口。\n * @category ai-portal\n */\nexport\n@defineElement(\"ai-portal.action-buttons\", {\n styleTexts: [styleText],\n})\nclass ActionButtons extends ReactNextElement implements ActionButtonsProps {\n /**\n * 按钮列表配置,每项包含文本、唯一键值及可选图标\n */\n @property({\n attribute: false,\n })\n accessor items: ActionItem[] | undefined;\n\n /**\n * 当前选中按钮的键值,选中后显示删除图标,再次点击可取消选中\n */\n @property()\n accessor activeKey: string | null | undefined;\n\n /**\n * @detail { key: 按钮键值, text: 按钮文本, icon: 按钮图标 } | null — 选中时为选中的 ActionItem,取消选中时为 null\n * @description 选中或取消选中动作按钮时触发\n */\n @event({ type: \"change\" })\n accessor #change!: EventEmitter<ActionItem | null>;\n\n #handleChange = (action: ActionItem | null) => {\n this.activeKey = action ? action.key : null;\n this.#change.emit(action);\n };\n\n render() {\n return (\n <ActionButtonsComponent\n items={this.items}\n activeKey={this.activeKey}\n onChange={this.#handleChange}\n />\n );\n }\n}\n\ninterface ActionButtonsComponentProps extends ActionButtonsProps {\n onChange: (action: ActionItem | null) => void;\n}\n\nfunction ActionButtonsComponent({\n items,\n activeKey: propActiveKey,\n onChange,\n}: ActionButtonsComponentProps) {\n const [activeKey, setActiveKey] = useState<string | null>(\n propActiveKey ?? null\n );\n const initializedRef = useRef(false);\n\n useEffect(() => {\n setActiveKey(propActiveKey ?? null);\n }, [propActiveKey]);\n\n useEffect(() => {\n if (!initializedRef.current) {\n initializedRef.current = true;\n return;\n }\n onChange(\n activeKey\n ? (items?.find((item) => !item.hidden && item.key === activeKey) ??\n null)\n : null\n );\n }, [activeKey, items, onChange]);\n\n const filteredItems = useMemo(() => {\n return items?.filter(\n (item) => (!item.hidden && !activeKey) || item.key === activeKey\n );\n }, [items, activeKey]);\n\n return (\n <div className=\"button-container\">\n {filteredItems?.map((item) => {\n const { text, icon, key } = item;\n return (\n <WrapperButton\n key={key}\n className={`action${activeKey ? \" active\" : \"\"}`}\n themeVariant=\"elevo\"\n type=\"neutral\"\n onClick={() => {\n if (!activeKey) {\n setActiveKey(key);\n }\n }}\n >\n {icon ? <WrapperIcon className=\"icon\" {...icon} /> : null}\n {text}\n {activeKey ? (\n <WrapperIcon\n className=\"remove\"\n lib=\"lucide\"\n icon=\"x\"\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n setActiveKey(null);\n }}\n />\n ) : null}\n </WrapperButton>\n );\n })}\n </div>\n );\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n UN_START_STATUS = \"UN_START_STATUS\",\n RUNNING_STATUS = \"RUNNING_STATUS\",\n COMPLETED_STATUS = \"COMPLETED_STATUS\",\n NEW_CHAT = \"NEW_CHAT\",\n}\n\nconst en: Locale = {\n UN_START_STATUS: \"Not Start\",\n RUNNING_STATUS: \"Running\",\n COMPLETED_STATUS: \"Completed\",\n NEW_CHAT: \"New chat\",\n};\n\nconst zh: Locale = {\n UN_START_STATUS: \"未开始\",\n RUNNING_STATUS: \"运行中\",\n COMPLETED_STATUS: \"已完成\",\n NEW_CHAT: \"新对话\",\n};\n\nexport const NS = \"bricks/ai-portal/goal-card-list\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","// istanbul ignore file: compatibility workaround\nimport type { HTMLAttributes } from \"react\";\n\nlet _supports: boolean | undefined;\n\nfunction supportsContentEditablePlaintextOnly(): boolean {\n if (typeof _supports !== \"boolean\") {\n const div = document.createElement(\"div\");\n div.setAttribute(\"contenteditable\", \"PLAINTEXT-ONLY\");\n _supports = div.contentEditable === \"plaintext-only\";\n }\n return _supports;\n}\n\nexport function getContentEditable(\n editable: boolean\n): HTMLAttributes<HTMLDivElement>[\"contentEditable\"] {\n return editable\n ? supportsContentEditablePlaintextOnly()\n ? \"plaintext-only\"\n : \"true\"\n : \"false\";\n}\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type {\n EoDropdownActions,\n DropdownActionsProps,\n DropdownActionsEvents,\n DropdownActionsEventsMapping,\n} from \"@next-bricks/basic/dropdown-actions\";\nimport type {\n EoEasyopsAvatar,\n EoEasyopsAvatarProps,\n} from \"@next-bricks/basic/easyops-avatar\";\nimport type { Button, ButtonProps } from \"@next-bricks/basic/button\";\nimport type { Action, SimpleAction } from \"@next-bricks/basic/actions\";\nimport classNames from \"classnames\";\nimport { K, NS, locales, t } from \"../i18n.js\";\nimport { getContentEditable } from \"../../shared/getContentEditable.js\";\ninitializeI18n(NS, locales);\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedDropdownActions = wrapBrick<\n EoDropdownActions,\n DropdownActionsProps,\n DropdownActionsEvents,\n DropdownActionsEventsMapping\n>(\"eo-dropdown-actions\", {\n onActionClick: \"action.click\",\n onVisibleChange: \"visible.change\",\n});\nconst WrappedEasyopsAvatar = wrapBrick<EoEasyopsAvatar, EoEasyopsAvatarProps>(\n \"eo-easyops-avatar\"\n);\nconst WrappedButton = wrapBrick<Button, ButtonProps>(\"eo-button\");\n\nexport interface InputEventsMap {\n onValueChange: \"change\";\n}\n\nexport type GoalState = \"ready\" | \"working\" | \"completed\";\n\ninterface GoalMember {\n instanceId: string;\n}\n\nexport interface GoalItem {\n title: string;\n description?: string;\n state: GoalState;\n id: number;\n conversations?: number;\n owner?: GoalMember;\n users?: GoalMember[];\n instanceId: string;\n level: number;\n pending?: boolean;\n pendingParentId?: string;\n}\n\ninterface GoalCardItemProps {\n goalItem: GoalItem;\n idWidth?: number;\n cardStyle?: React.CSSProperties;\n isActive?: boolean;\n onTitleChange?: (newTitle: string) => void;\n onStatusChange?: (newStatus: GoalState) => void;\n onNewChat?: () => void;\n onClick?: () => void;\n onAppendChild?: () => void;\n onRevokeAppendChild?: () => void;\n}\n\nconst iconMap = {\n ready: \"uncheck-status\",\n working: \"active-status\",\n completed: \"check-status\",\n};\n\nconst iconActions: Action[] = [\n {\n key: \"ready\",\n icon: {\n icon: \"uncheck-status\",\n lib: \"easyops\",\n category: \"colored-common\",\n },\n text: t(K.UN_START_STATUS),\n },\n {\n key: \"working\",\n icon: {\n icon: \"active-status\",\n lib: \"easyops\",\n category: \"colored-common\",\n },\n text: t(K.RUNNING_STATUS),\n },\n {\n key: \"completed\",\n icon: {\n icon: \"check-status\",\n lib: \"easyops\",\n category: \"colored-common\",\n },\n text: t(K.COMPLETED_STATUS),\n },\n];\n\nexport function GoalCardItem({\n goalItem,\n idWidth,\n cardStyle,\n onStatusChange,\n onTitleChange,\n onClick,\n onNewChat,\n onAppendChild,\n onRevokeAppendChild,\n isActive,\n}: GoalCardItemProps) {\n const {\n state,\n id: serialNumber,\n title,\n conversations,\n owner,\n pending,\n } = goalItem;\n\n const handleStatusChange = (action: SimpleAction) => {\n onStatusChange?.(action.key as GoalState);\n };\n\n const compositionRef = useRef(false);\n\n const handleCompositionStart = useCallback(() => {\n compositionRef.current = true;\n }, []);\n\n const handleCompositionEnd = useCallback(() => {\n compositionRef.current = false;\n }, []);\n\n const [editing, setEditing] = useState(false);\n\n const handleFocus = useCallback(() => {\n setEditing(true);\n }, []);\n\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLSpanElement>) => {\n setEditing(false);\n const value = e.currentTarget.textContent;\n\n if (pending && !value?.trim()) {\n onRevokeAppendChild?.();\n return;\n }\n\n if (value !== null && title !== value) {\n onTitleChange?.(value);\n }\n },\n [pending, title, onRevokeAppendChild, onTitleChange]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLSpanElement>) => {\n if (compositionRef.current) {\n // Ignore key events during composition\n return;\n }\n if (e.key === \"Enter\") {\n e.preventDefault();\n e.currentTarget.blur();\n }\n },\n []\n );\n\n const titleRef = useRef<HTMLSpanElement>(null);\n\n useEffect(() => {\n if (pending) {\n titleRef.current?.focus();\n }\n }, [pending]);\n\n return (\n <div\n className={classNames(\n \"goal-item\",\n goalItem.state,\n { editing },\n { active: isActive }\n )}\n style={{\n paddingLeft: `${(goalItem.level + 1) * 24}px`,\n ...cardStyle,\n }}\n onClick={pending ? undefined : onClick}\n >\n <div className=\"start\">\n <WrappedDropdownActions\n actions={iconActions}\n disabled={pending}\n onActionClick={(e) => {\n handleStatusChange(e.detail);\n }}\n >\n <WrappedIcon\n className=\"icon\"\n lib=\"easyops\"\n category=\"colored-common\"\n icon={iconMap[state]}\n onClick={(e) => e.stopPropagation()}\n />\n </WrappedDropdownActions>\n\n <span className=\"serial-number\" style={{ width: idWidth }}>\n #{pending ? \"\" : serialNumber}\n </span>\n <span\n className=\"title\"\n ref={titleRef}\n onClick={(e) => e.stopPropagation()}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onCompositionStart={handleCompositionStart}\n onCompositionEnd={handleCompositionEnd}\n contentEditable={getContentEditable(true)}\n suppressContentEditableWarning\n >\n {title}\n </span>\n </div>\n <div className=\"end\">\n <div className=\"info\">\n <div className=\"message\">\n <WrappedIcon lib=\"easyops\" category=\"common\" icon=\"message\" />\n <span className=\"count\">{conversations || 0}</span>\n </div>\n <WrappedEasyopsAvatar\n nameOrInstanceId={owner?.instanceId}\n size=\"small\"\n />\n </div>\n <div className=\"operation\" onClick={(e) => e.stopPropagation()}>\n {goalItem.level === 0 && (\n <WrappedButton\n className=\"append-child\"\n themeVariant=\"elevo\"\n type=\"neutral\"\n size=\"small\"\n onClick={onAppendChild}\n >\n <WrappedIcon lib=\"lucide\" icon=\"plus\" />\n </WrappedButton>\n )}\n {!pending && (\n <WrappedButton\n className=\"new-chat\"\n themeVariant=\"elevo\"\n type=\"neutral\"\n size=\"small\"\n onClick={onNewChat}\n >\n {t(K.NEW_CHAT)}\n </WrappedButton>\n )}\n </div>\n </div>\n </div>\n );\n}\n","import React, {\n useState,\n useEffect,\n forwardRef,\n createRef,\n useImperativeHandle,\n useMemo,\n} from \"react\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { NS, locales } from \"./i18n.js\";\nimport CardItemStyleText from \"./CardItem/CardItem.shadow.css\";\nimport styleText from \"./styles.shadow.css\";\nimport { GoalCardItem, GoalItem, GoalState } from \"./CardItem/CardItem.js\";\nimport { GeneralIcon, GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport { uniqueId } from \"lodash\";\n\ninitializeI18n(NS, locales);\n\nconst { defineElement, property, event, method } = createDecorators();\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface GoalCardListProps {\n goalList?: GoalItem[];\n cardStyle?: React.CSSProperties;\n activeKey?: string;\n}\n\nconst GoalCardListComponent = forwardRef(LegacyGoalCardListComponent);\n\n/**\n * 目标卡片列表,以分层卡片形式展示目标项,支持内联编辑标题、状态切换、新建对话及追加子目标。\n *\n * @category display-component\n */\nexport\n@defineElement(\"ai-portal.goal-card-list\", {\n styleTexts: [styleText, CardItemStyleText],\n})\nclass GoalCardList extends ReactNextElement implements GoalCardListProps {\n @property({\n attribute: false,\n })\n accessor goalList: GoalItem[] | undefined;\n\n @property({\n attribute: false,\n })\n accessor cardStyle: React.CSSProperties | undefined;\n\n @property()\n accessor activeKey: string | undefined;\n\n /**\n * @detail { title: 目标标题, state: 目标状态, id: 序号, instanceId: 实例ID, level: 层级 }\n * @description 点击目标卡片时触发\n */\n @event({ type: \"item.click\" })\n accessor #itemClickEvent!: EventEmitter<GoalItem>;\n #handleItemClick = (item: GoalItem) => {\n this.#itemClickEvent.emit(item);\n };\n\n /**\n * @detail { title: 目标标题, state: 更新后的目标状态, id: 序号, instanceId: 实例ID, level: 层级 }\n * @description 目标状态切换时触发\n */\n @event({ type: \"item.status.change\" })\n accessor #itemStatusChangeEvent!: EventEmitter<GoalItem>;\n #handleItemStatusChange = (item: GoalItem) => {\n this.#itemStatusChangeEvent.emit(item);\n };\n\n /**\n * @detail { title: 更新后的标题, state: 目标状态, id: 序号, instanceId: 实例ID, level: 层级 }\n * @description 目标标题内联编辑完成时触发\n */\n @event({ type: \"item.title.change\" })\n accessor #itemTitleChangeEvent!: EventEmitter<GoalItem>;\n #handleTitleChange = (item: GoalItem) => {\n this.#itemTitleChangeEvent.emit(item);\n };\n\n /**\n * @detail { title: 目标标题, state: 目标状态, id: 序号, instanceId: 实例ID, level: 层级 }\n * @description 点击目标卡片的新建对话按钮时触发\n */\n @event({ type: \"item.new.chat\" })\n accessor #itemNewChatEvent!: EventEmitter<GoalItem>;\n #handleNewChat = (item: GoalItem) => {\n this.#itemNewChatEvent.emit(item);\n };\n\n #ref = createRef<GoalListRef>();\n\n /**\n * 将待定子目标提交为正式目标项\n * @param pendingId 待定子目标的临时 instanceId\n * @param newItem 创建完成后的真实目标数据\n */\n @method()\n appendChildDone(pendingId: string, newItem: GoalItem) {\n this.#ref.current?.appendChildDone(pendingId, newItem);\n }\n\n render() {\n return (\n <GoalCardListComponent\n ref={this.#ref}\n goalList={this.goalList}\n cardStyle={this.cardStyle}\n onTitleChange={this.#handleTitleChange}\n onStatusChange={this.#handleItemStatusChange}\n onItemClick={this.#handleItemClick}\n onNewChat={this.#handleNewChat}\n activeKey={this.activeKey}\n />\n );\n }\n}\n\ninterface GoalCardListComponentProps extends GoalCardListProps {\n onTitleChange?: (item: GoalItem) => void;\n onStatusChange?: (item: GoalItem) => void;\n onItemClick?: (item: GoalItem) => void;\n onNewChat?: (item: GoalItem) => void;\n}\n\ninterface GoalListRef {\n appendChildDone: (pendingId: string, newItem: GoalItem) => void;\n}\n\nfunction LegacyGoalCardListComponent(\n {\n goalList: _goalList,\n cardStyle,\n onTitleChange,\n onStatusChange,\n onItemClick,\n onNewChat,\n activeKey,\n }: GoalCardListComponentProps,\n ref: React.Ref<GoalListRef>\n) {\n const [goalList, setGoalList] = useState(_goalList);\n\n useEffect(() => {\n setGoalList(_goalList);\n }, [_goalList]);\n\n const updateGoalItem = <T extends keyof GoalItem>(\n item: GoalItem,\n field: T,\n value: GoalItem[T],\n callback?: (updatedItem: GoalItem) => void\n ) => {\n const updatedItem = {\n ...item,\n [field]: value,\n };\n\n setGoalList(\n goalList?.map((goalItem) =>\n goalItem.instanceId === updatedItem.instanceId ? updatedItem : goalItem\n )\n );\n\n callback?.(updatedItem);\n };\n\n const handleTitleChange = (newTitle: string, item: GoalItem) => {\n updateGoalItem(item, \"title\", newTitle, onTitleChange);\n };\n\n const handleStatusChange = (newStatus: GoalState, item: GoalItem) => {\n updateGoalItem(item, \"state\", newStatus, onStatusChange);\n };\n\n const handleAppendChild = (item: GoalItem) => {\n const newChild: GoalItem = {\n instanceId:\n process.env.NODE_ENV === \"test\"\n ? \"test-pending-id\"\n : uniqueId(\"pending-\"),\n pending: true,\n id: 0,\n title: \"\",\n state: \"ready\",\n level: 1,\n pendingParentId: item.instanceId,\n };\n setGoalList((prevList) => {\n const index =\n prevList?.findIndex((goal) => goal.instanceId === item.instanceId) ??\n -1;\n if (index === -1) return prevList;\n const offsetIndex =\n prevList!.slice(index + 1).findIndex((goal) => goal.level === 0) + 1;\n if (offsetIndex === 0) {\n return [...prevList!, newChild];\n }\n return [\n ...prevList!.slice(0, index + offsetIndex),\n newChild,\n ...prevList!.slice(index + offsetIndex),\n ];\n });\n };\n\n useImperativeHandle(\n ref,\n () => ({\n appendChildDone: (pendingId: string, newItem: GoalItem) => {\n setGoalList((prevList) =>\n prevList?.map((goal) =>\n goal.instanceId === pendingId\n ? { ...newItem, level: goal.level }\n : goal\n )\n );\n },\n }),\n []\n );\n\n const idWidth = useMemo(() => {\n const maxId =\n goalList?.reduce((max, item) => Math.max(max, item.id), 0) ?? 0;\n return 10 * (maxId.toString().length + 1);\n }, [goalList]);\n\n if (!goalList) {\n return (\n <div className=\"loading\">\n <WrappedIcon lib=\"antd\" icon=\"loading-3-quarters\" spinning />\n </div>\n );\n }\n\n return (\n <div className=\"goal-container\">\n {goalList?.map((item) => (\n <GoalCardItem\n key={item.instanceId}\n isActive={activeKey === item.instanceId}\n goalItem={item}\n idWidth={idWidth}\n cardStyle={cardStyle}\n onTitleChange={(v) => handleTitleChange(v, item)}\n onStatusChange={(v) => handleStatusChange(v, item)}\n onNewChat={() => onNewChat?.(item)}\n onClick={() => onItemClick?.(item)}\n onAppendChild={() => handleAppendChild(item)}\n onRevokeAppendChild={() => {\n setGoalList((prevList) =>\n prevList?.filter((goal) => goal.instanceId !== item.instanceId)\n );\n }}\n />\n ))}\n </div>\n );\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n PROJECT_OVERALL = \"PROJECT_OVERALL\",\n}\n\nconst en: Locale = {\n PROJECT_OVERALL: \"Project overall\",\n};\n\nconst zh: Locale = {\n PROJECT_OVERALL: \"项目整体\",\n};\n\nexport const NS = \"bricks/ai-portal/project-conversations\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n, i18n } from \"@next-core/i18n\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type {\n EoEasyopsAvatar,\n EoEasyopsAvatarProps,\n} from \"@next-bricks/basic/easyops-avatar\";\nimport type {\n ActionType,\n EoMiniActions,\n EoMiniActionsEvents,\n EoMiniActionsEventsMapping,\n EoMiniActionsProps,\n SimpleActionType,\n} from \"@next-bricks/basic/mini-actions\";\nimport { humanizeTime, HumanizeTimeFormat } from \"@next-shared/datetime\";\nimport classNames from \"classnames\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport { parseTemplate } from \"../shared/parseTemplate.js\";\n\ninitializeI18n(NS, locales);\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedAvatar = wrapBrick<EoEasyopsAvatar, EoEasyopsAvatarProps>(\n \"eo-easyops-avatar\"\n);\nconst WrappedMiniActions = wrapBrick<\n EoMiniActions,\n EoMiniActionsProps,\n EoMiniActionsEvents,\n EoMiniActionsEventsMapping\n>(\"eo-mini-actions\", {\n onActionClick: \"action.click\",\n onVisibleChange: \"visible.change\",\n});\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface ProjectConversationsProps {\n list?: Conversation[];\n urlTemplate?: string;\n actions?: ActionType[];\n goals?: Goal[];\n}\n\nexport interface Conversation {\n conversationId: string;\n title: string;\n startTime: number;\n description?: string;\n goalInstanceId?: string;\n username?: string;\n}\n\nexport interface ActionClickDetail {\n action: SimpleActionType;\n item: Conversation;\n}\n\nexport interface Goal {\n instanceId: string;\n title: string;\n}\n\n/**\n * 构件 `ai-portal.project-conversations`\n */\nexport\n@defineElement(\"ai-portal.project-conversations\", {\n styleTexts: [styleText],\n})\nclass ProjectConversations\n extends ReactNextElement\n implements ProjectConversationsProps\n{\n @property({ attribute: false })\n accessor list: Conversation[] | undefined;\n\n @property()\n accessor urlTemplate: string | undefined;\n\n @property({ attribute: false })\n accessor actions: ActionType[] | undefined;\n\n @property({ attribute: false })\n accessor goals: Goal[] | undefined;\n\n @event({ type: \"goal.click\" })\n accessor #goalClick!: EventEmitter<Conversation>;\n\n #handleGoalClick = (conversation: Conversation) => {\n this.#goalClick.emit(conversation);\n };\n\n @event({ type: \"action.click\" })\n accessor #actionClick!: EventEmitter<ActionClickDetail>;\n\n #handleActionClick = (detail: ActionClickDetail) => {\n this.#actionClick.emit(detail);\n };\n\n render() {\n return (\n <ProjectConversationsComponent\n list={this.list}\n urlTemplate={this.urlTemplate}\n actions={this.actions}\n goals={this.goals}\n onGoalClick={this.#handleGoalClick}\n onActionClick={this.#handleActionClick}\n />\n );\n }\n}\n\ninterface ProjectConversationsComponentProps extends ProjectConversationsProps {\n onGoalClick: (conversation: Conversation) => void;\n onActionClick: (detail: ActionClickDetail) => void;\n}\n\nfunction ProjectConversationsComponent({\n list,\n urlTemplate,\n actions,\n goals,\n onGoalClick,\n onActionClick,\n}: ProjectConversationsComponentProps) {\n if (!list) {\n return (\n <div className=\"loading\">\n <WrappedIcon lib=\"antd\" icon=\"loading-3-quarters\" spinning />\n </div>\n );\n }\n\n return (\n <ul>\n {list.map((item) => (\n <li className=\"item\" key={item.conversationId}>\n <ConversationLink\n conversation={item}\n urlTemplate={urlTemplate}\n actions={actions}\n goals={goals}\n onGoalClick={onGoalClick}\n onActionClick={onActionClick}\n />\n </li>\n ))}\n </ul>\n );\n}\n\ninterface ConversationLinkProps\n extends Pick<\n ProjectConversationsComponentProps,\n \"urlTemplate\" | \"actions\" | \"goals\" | \"onGoalClick\" | \"onActionClick\"\n > {\n conversation: Conversation;\n}\n\nfunction ConversationLink({\n conversation,\n urlTemplate,\n actions,\n goals,\n onGoalClick,\n onActionClick,\n}: ConversationLinkProps) {\n const goalRef = useRef<HTMLDivElement>(null);\n const language = i18n.language.split(\"-\")[0];\n\n // <eo-link> handles click manually,\n // so we need to stop propagation and prevent default manually.\n useEffect(() => {\n const el = goalRef.current;\n if (!el) return;\n const handleClick = (e: MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n onGoalClick(conversation);\n };\n el.addEventListener(\"click\", handleClick);\n return () => {\n el.removeEventListener(\"click\", handleClick);\n };\n }, [conversation, onGoalClick]);\n\n const [actionsVisible, setActionsVisible] = useState(false);\n\n return (\n <WrappedLink\n className={classNames(\"link\", { \"actions-active\": actionsVisible })}\n url={parseTemplate(urlTemplate, conversation)}\n >\n <div className=\"main\">\n <div className=\"header\">\n <WrappedIcon\n className=\"icon\"\n lib=\"easyops\"\n category=\"common\"\n icon=\"clock\"\n />\n <div className=\"title\">{conversation.title}</div>\n </div>\n {conversation.description && (\n <div className=\"description\">{conversation.description}</div>\n )}\n </div>\n {goals && (\n <div\n className={classNames(\"goal\", {\n global: !conversation.goalInstanceId,\n })}\n ref={goalRef}\n >\n {conversation.goalInstanceId\n ? goals.find((g) => g.instanceId === conversation.goalInstanceId)\n ?.title\n : t(K.PROJECT_OVERALL)}\n </div>\n )}\n <WrappedAvatar\n className=\"avatar\"\n size=\"small\"\n nameOrInstanceId={conversation.username}\n />\n <div className={`operations lang-${language}`}>\n <WrappedMiniActions\n className=\"actions\"\n actions={actions}\n onActionClick={(e) => {\n onActionClick({ action: e.detail, item: conversation });\n }}\n onVisibleChange={(e) => {\n setActionsVisible(e.detail);\n }}\n />\n <div\n className=\"time\"\n title={\n humanizeTime(\n conversation.startTime * 1000,\n HumanizeTimeFormat.full\n )!\n }\n >\n {humanizeTime(\n conversation.startTime * 1000,\n HumanizeTimeFormat.relative\n )}\n </div>\n </div>\n </WrappedLink>\n );\n}\n","import React, { useState } from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\n// import { initializeI18n } from \"@next-core/i18n\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type {\n ActionType,\n EoMiniActions,\n EoMiniActionsEvents,\n EoMiniActionsEventsMapping,\n EoMiniActionsProps,\n SimpleActionType,\n} from \"@next-bricks/basic/mini-actions\";\nimport { humanizeTime, HumanizeTimeFormat } from \"@next-shared/datetime\";\nimport classNames from \"classnames\";\n// import { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport { parseTemplate } from \"../shared/parseTemplate.js\";\nimport {\n EoEasyopsAvatar,\n EoEasyopsAvatarProps,\n} from \"@next-bricks/basic/easyops-avatar\";\n\n// initializeI18n(NS, locales);\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst WrappedAvatar = wrapBrick<EoEasyopsAvatar, EoEasyopsAvatarProps>(\n \"eo-easyops-avatar\"\n);\nconst WrappedMiniActions = wrapBrick<\n EoMiniActions,\n EoMiniActionsProps,\n EoMiniActionsEvents,\n EoMiniActionsEventsMapping\n>(\"eo-mini-actions\", {\n onActionClick: \"action.click\",\n onVisibleChange: \"visible.change\",\n});\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface ProjectKnowledgesProps {\n list?: Knowledge[];\n urlTemplate?: string;\n actions?: ActionType[];\n}\n\nexport interface Knowledge {\n instanceId: string;\n name: string;\n description?: string;\n time: number;\n user?: string;\n}\n\nexport interface ActionClickDetail {\n action: SimpleActionType;\n item: Knowledge;\n}\n\n/**\n * 构件 `ai-portal.project-knowledges`\n *\n * 项目知识库列表构件,展示项目中的知识条目,支持操作菜单和点击跳转。\n */\nexport\n@defineElement(\"ai-portal.project-knowledges\", {\n styleTexts: [styleText],\n})\nclass ProjectKnowledges\n extends ReactNextElement\n implements ProjectKnowledgesProps\n{\n /** 知识列表数据,为 undefined 时显示加载状态 */\n @property({ attribute: false })\n accessor list: Knowledge[] | undefined;\n\n /** 知识详情链接模板,支持使用知识字段插值 */\n @property()\n accessor urlTemplate: string | undefined;\n\n /** 操作菜单配置,每条知识行尾显示可操作的菜单项 */\n @property({ attribute: false })\n accessor actions: ActionType[] | undefined;\n\n /**\n * @description 点击操作菜单项时触发\n * @detail { action: 操作项配置, item: 所属知识数据 }\n */\n @event({ type: \"action.click\" })\n accessor #actionClick!: EventEmitter<ActionClickDetail>;\n\n /**\n * @description 点击知识条目时触发\n * @detail { instanceId: 知识ID, name: 知识名称, description: 描述, time: 时间戳, user: 创建人 }\n */\n @event({ type: \"item.click\" })\n accessor #itemClick!: EventEmitter<Knowledge>;\n\n #handleActionClick = (detail: ActionClickDetail) => {\n this.#actionClick.emit(detail);\n };\n\n #handleItemClick = (item: Knowledge) => {\n this.#itemClick.emit(item);\n };\n\n render() {\n return (\n <ProjectKnowledgesComponent\n list={this.list}\n urlTemplate={this.urlTemplate}\n actions={this.actions}\n onActionClick={this.#handleActionClick}\n onItemClick={this.#handleItemClick}\n />\n );\n }\n}\n\ninterface ProjectKnowledgesComponentProps extends ProjectKnowledgesProps {\n onActionClick: (detail: ActionClickDetail) => void;\n onItemClick?: (item: Knowledge) => void;\n}\n\nfunction ProjectKnowledgesComponent({\n list,\n urlTemplate,\n actions,\n onActionClick,\n onItemClick,\n}: ProjectKnowledgesComponentProps) {\n if (!list) {\n return (\n <div className=\"loading\">\n <WrappedIcon lib=\"antd\" icon=\"loading-3-quarters\" spinning />\n </div>\n );\n }\n\n return (\n <ul>\n {list?.map((item) => (\n <li className=\"item\" key={item.instanceId}>\n <KnowledgeLink\n knowledge={item}\n urlTemplate={urlTemplate}\n actions={actions}\n onActionClick={onActionClick}\n onItemClick={onItemClick}\n />\n </li>\n ))}\n </ul>\n );\n}\n\ninterface KnowledgeLinkProps\n extends Pick<\n ProjectKnowledgesComponentProps,\n \"urlTemplate\" | \"actions\" | \"onActionClick\" | \"onItemClick\"\n > {\n knowledge: Knowledge;\n}\n\nfunction KnowledgeLink({\n knowledge,\n urlTemplate,\n actions,\n onActionClick,\n onItemClick,\n}: KnowledgeLinkProps) {\n const [actionsVisible, setActionsVisible] = useState(false);\n\n return (\n <WrappedLink\n className={classNames(\"link\", { \"actions-active\": actionsVisible })}\n url={parseTemplate(urlTemplate, knowledge)}\n onClick={() => onItemClick?.(knowledge)}\n >\n <div className=\"main\">\n <div className=\"header\">\n <WrappedIcon\n className=\"icon\"\n lib=\"easyops\"\n icon=\"lightbulb\"\n category=\"common\"\n />\n <span className=\"title\">{knowledge.name}</span>\n <WrappedIcon className=\"attachment\" lib=\"lucide\" icon=\"paperclip\" />\n </div>\n {knowledge.description && (\n <div className=\"description\">{knowledge.description}</div>\n )}\n </div>\n <div className=\"time\">\n {humanizeTime(knowledge.time * 1000, HumanizeTimeFormat.relative)}\n </div>\n <div className=\"operations\">\n <WrappedMiniActions\n className=\"actions\"\n actions={actions}\n onActionClick={(e) => {\n onActionClick({ action: e.detail, item: knowledge });\n }}\n onVisibleChange={(e) => {\n setActionsVisible(e.detail);\n }}\n />\n <WrappedAvatar\n className=\"avatar\"\n size=\"small\"\n nameOrInstanceId={knowledge.user}\n />\n </div>\n </WrappedLink>\n );\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n STARTED_A_CHAT = \"STARTED_A_CHAT\",\n CREATED_THIS_GOAL = \"CREATED_THIS_GOAL\",\n CHANGED_THE_GOAL_TITLE = \"CHANGED_THE_GOAL_TITLE\",\n CHANGED_THE_GOAL_DESCRIPTION = \"CHANGED_THE_GOAL_DESCRIPTION\",\n CHANGED_THE_GOAL = \"CHANGED_THE_GOAL\",\n DELETED_THIS_GOAL = \"DELETED_THIS_GOAL\",\n DECOMPOSED_THIS_GOAL = \"DECOMPOSED_THIS_GOAL\",\n SET_OWNER = \"SET_OWNER\",\n REMOVED_GOAL_PARTICIPANTS = \"REMOVED_GOAL_PARTICIPANTS\",\n ADDED_GOAL_PARTICIPANTS = \"ADDED_GOAL_PARTICIPANTS\",\n COMMENTED = \"COMMENTED\",\n COMMA = \"COMMA\",\n SEMICOLON = \"SEMICOLON\",\n}\n\nconst en: Locale = {\n STARTED_A_CHAT: \"started a chat\",\n CREATED_THIS_GOAL: \"created this goal\",\n CHANGED_THE_GOAL_TITLE: 'changed the goal title to \"{{ title }}\"',\n CHANGED_THE_GOAL_DESCRIPTION:\n 'changed the goal description to \"{{ description }}\"',\n CHANGED_THE_GOAL: \"changed the goal\",\n DELETED_THIS_GOAL: \"deleted this goal\",\n DECOMPOSED_THIS_GOAL: \"decomposed this goal to {{ count }} sub-goal: \",\n DECOMPOSED_THIS_GOAL_plural:\n \"decomposed this goal to {{ count }} sub-goals: \",\n SET_OWNER: \"set {{ user }} as the owner\",\n REMOVED_GOAL_PARTICIPANTS: \"removed a goal participant: \",\n REMOVED_GOAL_PARTICIPANTS_plural: \"removed {{ count }} goal participants: \",\n ADDED_GOAL_PARTICIPANTS: \"added a goal participant: \",\n ADDED_GOAL_PARTICIPANTS_plural: \"added {{ count }} goal participants: \",\n COMMENTED: \"commented\",\n COMMA: \", \",\n SEMICOLON: \"; \",\n};\n\nconst zh: Locale = {\n STARTED_A_CHAT: \"发起了对话\",\n CREATED_THIS_GOAL: \"创建了此目标\",\n CHANGED_THE_GOAL_TITLE: \"修改目标标题为 “{{ title }}”\",\n CHANGED_THE_GOAL_DESCRIPTION: \"修改目标描述为 “{{ description }}”\",\n CHANGED_THE_GOAL: \"修改了此目标\",\n DELETED_THIS_GOAL: \"删除了此目标\",\n DECOMPOSED_THIS_GOAL: \"将此目标分解为 {{ count }} 个子目标:\",\n DECOMPOSED_THIS_GOAL_plural: \"将此目标分解为 {{ count }} 个子目标:\",\n SET_OWNER: \"设定负责人为 {{ user }}\",\n REMOVED_GOAL_PARTICIPANTS: \"移除了目标参与成员:\",\n ADDED_GOAL_PARTICIPANTS: \"添加了目标参与成员:\",\n COMMENTED: \"评论\",\n COMMA: \",\",\n SEMICOLON: \";\",\n};\n\nexport const NS = \"bricks/ai-portal/activity-timeline\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type {\n EoEasyopsAvatar,\n EoEasyopsAvatarProps,\n} from \"@next-bricks/basic/easyops-avatar\";\nimport { humanizeTime, HumanizeTimeFormat } from \"@next-shared/datetime\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport { parseTemplate } from \"../shared/parseTemplate.js\";\nimport type { Activity, ActivityOfAlterUser } from \"./interfaces.js\";\n\ninitializeI18n(NS, locales);\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedAvatar = wrapBrick<EoEasyopsAvatar, EoEasyopsAvatarProps>(\n \"eo-easyops-avatar\"\n);\nconst { defineElement, property } = createDecorators();\n\nexport interface ActivityTimelineProps {\n list?: Activity[];\n chatUrlTemplate?: string;\n}\n\n/**\n * 活动时间线,展示目标的操作历史记录,支持多种动作类型的可视化展示。\n *\n * @description 活动时间线,展示目标的操作历史记录,支持多种动作类型的可视化展示。\n * @category ai-portal\n */\nexport\n@defineElement(\"ai-portal.activity-timeline\", {\n styleTexts: [styleText],\n})\nclass ActivityTimeline\n extends ReactNextElement\n implements ActivityTimelineProps\n{\n /**\n * 活动记录列表\n */\n @property({ attribute: false })\n accessor list: Activity[] | undefined;\n\n /**\n * 跳转到对话详情页的 URL 模板,支持 {conversation_id} 等活动记录字段插值\n */\n @property()\n accessor chatUrlTemplate: string | undefined;\n\n render() {\n return (\n <ActivityTimelineComponent\n list={this.list}\n chatUrlTemplate={this.chatUrlTemplate}\n />\n );\n }\n}\n\nfunction ActivityTimelineComponent({\n list,\n chatUrlTemplate,\n}: ActivityTimelineProps) {\n if (!list) {\n return (\n <div className=\"loading\">\n <WrappedIcon lib=\"antd\" icon=\"loading-3-quarters\" spinning />\n </div>\n );\n }\n\n return (\n <ul>\n {list.map((activity, index) => (\n <li className=\"activity\" key={index}>\n <div className=\"guide-line\" />\n <div className=\"main\">\n <WrappedAvatar\n className=\"avatar\"\n nameOrInstanceId={activity.user_id}\n size=\"xs\"\n />\n <span className=\"action\">\n {activity.user_name}\n &nbsp;\n {activity.action_type === \"start_conversation\" ? (\n <>\n <span>{t(K.STARTED_A_CHAT)}</span>\n <WrappedLink\n className=\"conversation\"\n url={parseTemplate(chatUrlTemplate, activity)}\n target=\"_blank\"\n >\n {activity.metadata?.conversation_title}\n </WrappedLink>\n <WrappedIcon\n className=\"external-link-icon\"\n lib=\"lucide\"\n icon=\"external-link\"\n />\n </>\n ) : activity.action_type === \"create_goal\" ? (\n t(K.CREATED_THIS_GOAL)\n ) : activity.action_type === \"edit_goal\" ? (\n activity.metadata.after.title ? (\n t(K.CHANGED_THE_GOAL_TITLE, activity.metadata.after)\n ) : activity.metadata.after.description ? (\n t(K.CHANGED_THE_GOAL_DESCRIPTION, activity.metadata.after)\n ) : (\n t(K.CHANGED_THE_GOAL)\n )\n ) : activity.action_type === \"delete_goal\" ? (\n t(K.DELETED_THIS_GOAL)\n ) : activity.action_type === \"decompose_goals\" ? (\n `${t(K.DECOMPOSED_THIS_GOAL, {\n count: activity.metadata.sub_goals_count,\n })}${activity.metadata.sub_goals\n .map((g) => g.title)\n .join(t(K.COMMA))}`\n ) : activity.action_type === \"alter_owner\" ? (\n t(K.SET_OWNER, {\n user: activity.metadata.after.owner.user_name,\n })\n ) : activity.action_type === \"alter_user\" ? (\n getAlterPARTICIPANTsActivityDescription(activity)\n ) : activity.action_type === \"add_comment\" ? (\n t(K.COMMENTED)\n ) : (\n // Defense for future action types\n (activity as { action_type: string }).action_type\n )}\n </span>\n <span\n className=\"time\"\n title={humanizeTime(activity.time, HumanizeTimeFormat.full)!}\n >\n {humanizeTime(activity.time, HumanizeTimeFormat.relative)}\n </span>\n </div>\n {activity.action_type === \"add_comment\" && (\n <div className=\"comment\">{activity.metadata?.comment_content}</div>\n )}\n </li>\n ))}\n </ul>\n );\n}\n\nfunction getAlterPARTICIPANTsActivityDescription(\n activity: ActivityOfAlterUser\n) {\n const removed: string[] = [];\n const added: string[] = [];\n const beforeUserIds = new Set(\n activity.metadata.before.users.map((user) => user.user_name)\n );\n for (const user of activity.metadata.after.users) {\n if (!beforeUserIds.has(user.user_name)) {\n added.push(user.user_name);\n }\n }\n const afterUserIds = new Set(\n activity.metadata.after.users.map((user) => user.user_name)\n );\n for (const user of activity.metadata.before.users) {\n if (!afterUserIds.has(user.user_name)) {\n removed.push(user.user_name);\n }\n }\n\n const descriptions: string[] = [];\n if (removed.length > 0) {\n descriptions.push(\n t(K.REMOVED_GOAL_PARTICIPANTS, { count: removed.length }) +\n removed.join(t(K.COMMA))\n );\n }\n if (added.length > 0) {\n descriptions.push(\n t(K.ADDED_GOAL_PARTICIPANTS, { count: added.length }) +\n added.join(t(K.COMMA))\n );\n }\n\n return descriptions.join(t(K.SEMICOLON));\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n TERMINATE_THE_TASK = \"TERMINATE_THE_TASK\",\n COMMAND_TIPS = \"COMMAND_TIPS\",\n SEARCH_COMMANDS_TIPS = \"SEARCH_COMMANDS_TIPS\",\n}\n\nconst en: Locale = {\n [K.TERMINATE_THE_TASK]: \"Terminate the task\",\n [K.COMMAND_TIPS]: \"‘@’ AI Employee | ‘/’ Command\",\n [K.SEARCH_COMMANDS_TIPS]:\n \"Showing up to {{count}} items, type keywords to search\",\n};\n\nconst zh: Locale = {\n [K.TERMINATE_THE_TASK]: \"终止任务\",\n [K.COMMAND_TIPS]: \"‘@’ 数字人 | ‘/’ 命令\",\n [K.SEARCH_COMMANDS_TIPS]: \"最多显示 {{count}} 条数据,输入关键字搜索\",\n};\n\nexport const NS = \"bricks/ai-portal/chat-input\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, {\n createRef,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { TextareaAutoResize } from \"@next-shared/form\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport ResizeObserver from \"resize-observer-polyfill\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type {\n ActionsEvents,\n ActionsEventsMapping,\n ActionsProps,\n EoActions,\n} from \"@next-bricks/basic/actions\";\nimport classNames from \"classnames\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport type { IconButton, IconButtonProps } from \"../icon-button\";\nimport styleText from \"./styles.shadow.css\";\nimport { UploadedFiles } from \"../shared/FileUpload/UploadedFiles.js\";\nimport UploadedFilesStyleText from \"../shared/FileUpload/UploadedFiles.shadow.css\";\nimport { useFilesUploading } from \"../shared/useFilesUploading.js\";\nimport {\n UploadButton,\n type UploadButtonRef,\n} from \"../shared/FileUpload/UploadButton.js\";\nimport type { ChatPayload, UploadOptions } from \"../shared/interfaces.js\";\nimport GlobalDragOverlay from \"../shared/FileUpload/GlobalDragOverlay.js\";\nimport {\n MAX_SHOWN_COMMANDS,\n useChatCompletions,\n type ActionWithSubCommands,\n type AIEmployee,\n type Command,\n} from \"../shared/ChatCompletions/useChatCompletions.js\";\nimport { createPortal } from \"react-dom\";\n\ninitializeI18n(NS, locales);\n\nconst ICON_LOADING: GeneralIconProps = {\n lib: \"antd\",\n icon: \"loading-3-quarters\",\n spinning: true,\n};\n\nconst ICON_STOP: GeneralIconProps = {\n lib: \"fa\",\n prefix: \"far\",\n icon: \"circle-stop\",\n};\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedIconButton = wrapBrick<IconButton, IconButtonProps>(\n \"ai-portal.icon-button\"\n);\n\nexport const WrappedActions = wrapBrick<\n EoActions,\n ActionsProps & { activeKeys?: (string | number)[]; footerTips?: string },\n ActionsEvents,\n ActionsEventsMapping\n>(\"eo-actions\", {\n onActionClick: \"action.click\",\n onItemDragEnd: \"item.drag.end\",\n onItemDragStart: \"item.drag.start\",\n});\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport interface ChatInputProps {\n placeholder?: string;\n autoFocus?: boolean;\n submitDisabled?: boolean;\n supportsTerminate?: boolean;\n terminating?: boolean;\n autoFade?: boolean;\n uploadOptions?: UploadOptions;\n aiEmployees?: AIEmployee[];\n commands?: Command[];\n suggestionsPlacement?: \"top\" | \"bottom\";\n}\n\nexport interface ChatInputEvents {\n \"chat.submit\": CustomEvent<ChatPayload>;\n terminate: Event;\n}\n\nexport interface ChatInputMapEvents {\n onChatSubmit: \"chat.submit\";\n onTerminate: \"terminate\";\n}\n\nconst ChatInputComponent = forwardRef(LegacyChatInputComponent);\n\n/**\n * 小型聊天输入框,用于对话等页面,支持命令联想、@提及数字人、文件上传及终止任务等功能。\n *\n * @description 小型聊天输入框,用于对话等页面,支持命令联想、@提及数字人、文件上传及终止任务等功能。\n * @category ai-portal\n */\nexport\n@defineElement(\"ai-portal.chat-input\", {\n styleTexts: [styleText, UploadedFilesStyleText],\n shadowOptions: {\n delegatesFocus: true,\n },\n})\nclass ChatInput extends ReactNextElement implements ChatInputProps {\n /**\n * 输入框占位文字\n */\n @property()\n accessor placeholder: string | undefined;\n\n /**\n * 是否自动聚焦\n */\n @property({ type: Boolean })\n accessor autoFocus: boolean | undefined;\n\n /**\n * 是否禁用发送按钮,通常在 AI 正在处理时设为 true\n */\n @property({ type: Boolean })\n accessor submitDisabled: boolean | undefined;\n\n /**\n * 是否显示终止任务按钮,需与 submitDisabled 配合使用\n */\n @property({ type: Boolean })\n accessor supportsTerminate: boolean | undefined;\n\n /**\n * 是否正在终止任务,为 true 时显示加载状态\n */\n @property({ type: Boolean })\n accessor terminating: boolean | undefined;\n\n /**\n * 是否在输入框为空时自动淡出,通过 CSS 属性选择器控制样式\n */\n @property({ type: Boolean, render: false })\n accessor autoFade: boolean | undefined;\n\n /**\n * 文件上传配置\n */\n @property({ attribute: false })\n accessor uploadOptions: UploadOptions | undefined;\n\n /**\n * 可 @ 提及的数字人列表\n */\n @property({ attribute: false })\n accessor aiEmployees: AIEmployee[] | undefined;\n\n /**\n * 命令列表,支持通过 / 或搜索触发联想\n */\n @property({ attribute: false })\n accessor commands: Command[] | undefined;\n\n /**\n * 命令/提及联想弹出层的显示位置\n *\n * @default \"bottom\"\n */\n @property()\n accessor suggestionsPlacement: \"top\" | \"bottom\" | undefined;\n\n /**\n * @deprecated Use `chat.submit` event instead\n * @detail 用户输入的消息文本内容\n * @description 用户提交消息时触发(已废弃,请使用 chat.submit 事件)\n */\n @event({ type: \"message.submit\" })\n accessor #messageSubmit!: EventEmitter<string>;\n\n #handleMessageSubmit = (value: string) => {\n this.#messageSubmit.emit(value);\n };\n\n /**\n * @detail { content: 消息内容, files: 上传的文件列表, cmd: 命令载荷, aiEmployeeId: @提及的数字人 ID }\n * @description 用户提交聊天消息时触发\n */\n @event({ type: \"chat.submit\" })\n accessor #chatSubmit!: EventEmitter<ChatPayload>;\n\n #handleChatSubmit = (payload: ChatPayload) => {\n this.#chatSubmit.emit(payload);\n };\n\n /**\n * @detail void\n * @description 点击终止按钮时触发\n */\n @event({ type: \"terminate\" })\n accessor #terminate!: EventEmitter<void>;\n\n #handleTerminate = () => {\n this.#terminate.emit();\n };\n\n #ref = createRef<ChatInputRef>();\n\n /**\n * 设置输入框的值并聚焦\n * @param value 要设置的文本内容\n */\n @method()\n setValue(value: string) {\n this.#ref.current?.setValue(value);\n }\n\n render() {\n return (\n <ChatInputComponent\n ref={this.#ref}\n placeholder={this.placeholder}\n autoFocus={this.autoFocus}\n submitDisabled={this.submitDisabled}\n supportsTerminate={this.supportsTerminate}\n terminating={this.terminating}\n uploadOptions={this.uploadOptions}\n aiEmployees={this.aiEmployees}\n commands={this.commands}\n suggestionsPlacement={this.suggestionsPlacement}\n onMessageSubmit={this.#handleMessageSubmit}\n onChatSubmit={this.#handleChatSubmit}\n onTerminate={this.#handleTerminate}\n root={this}\n />\n );\n }\n}\n\ninterface ChatInputRef {\n setValue: (value: string) => void;\n}\n\ninterface ChatInputComponentProps extends ChatInputProps {\n root: HTMLElement;\n onMessageSubmit: (value: string) => void;\n onChatSubmit: (payload: ChatPayload) => void;\n onTerminate: () => void;\n}\n\nfunction LegacyChatInputComponent(\n {\n root,\n placeholder,\n autoFocus,\n submitDisabled,\n supportsTerminate,\n terminating,\n uploadOptions,\n aiEmployees,\n commands,\n suggestionsPlacement,\n onMessageSubmit,\n onChatSubmit,\n onTerminate,\n }: ChatInputComponentProps,\n ref: React.Ref<ChatInputRef>\n) {\n const containerRef = useRef<HTMLDivElement>(null);\n\n const [wrap, setWrap] = useState(false);\n const uploadEnabled = uploadOptions?.enabled;\n const uploadAccept = uploadOptions?.accept;\n const {\n files,\n resetFiles,\n appendFiles,\n removeFile,\n hasFiles,\n allFilesDone,\n fileInfos,\n exceeded,\n paste,\n } = useFilesUploading(uploadOptions);\n const uploadButtonRef = useRef<UploadButtonRef>(null);\n\n const {\n textareaRef,\n valueRef,\n value,\n setValue,\n selectionRef,\n\n mentioned,\n mentionedText,\n mentionPopover,\n mentionOverlay,\n mentionActiveKeys,\n handleMention,\n\n command,\n commandText,\n commandPrefix,\n commandPopover,\n commandOverlay,\n commandActiveKeys,\n handleSelectCommand,\n\n handleChange,\n handleKeyDown,\n } = useChatCompletions({\n aiEmployees,\n commands,\n root,\n hasFiles,\n placement: suggestionsPlacement,\n });\n\n useImperativeHandle(\n ref,\n () => ({\n setValue: (value: string) => {\n valueRef.current = value;\n setValue(value);\n setTimeout(() => {\n textareaRef.current?.focus();\n }, 100);\n },\n }),\n [setValue, textareaRef, valueRef]\n );\n\n useEffect(() => {\n if (!uploadEnabled) {\n resetFiles();\n }\n }, [uploadEnabled, resetFiles]);\n\n useEffect(() => {\n if (autoFocus && !submitDisabled) {\n textareaRef.current?.focus();\n }\n }, [autoFocus, submitDisabled, textareaRef]);\n\n const sendDisabled =\n !value ||\n !allFilesDone ||\n (!!mentionedText && value.length <= mentionedText.length) ||\n (!!commandText && value.length <= commandText.length);\n\n const doSubmit = useCallback(\n (value: string) => {\n if (sendDisabled) {\n return;\n }\n const content = value.slice(commandText.length || mentionedText.length);\n onMessageSubmit(content);\n onChatSubmit({\n content,\n files: fileInfos,\n cmd: command,\n aiEmployeeId: mentioned,\n });\n valueRef.current = \"\";\n setValue(\"\");\n resetFiles();\n },\n [\n sendDisabled,\n onMessageSubmit,\n onChatSubmit,\n fileInfos,\n resetFiles,\n valueRef,\n setValue,\n mentioned,\n mentionedText,\n command,\n commandText,\n ]\n );\n\n const handleSubmit = useCallback(\n (e: React.FormEvent<HTMLTextAreaElement>) => {\n if (e.currentTarget.value) {\n doSubmit(e.currentTarget.value);\n }\n },\n [doSubmit]\n );\n\n const handleSubmitClick = useCallback(() => {\n doSubmit(valueRef.current);\n }, [doSubmit, valueRef]);\n\n // istanbul ignore next\n useEffect(() => {\n if (hasFiles) {\n setWrap(true);\n return;\n }\n const container = containerRef?.current;\n if (!container) {\n return;\n }\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === container) {\n const currentBlockSize = entry.contentBoxSize\n ? entry.contentBoxSize[0]\n ? entry.contentBoxSize[0].blockSize\n : (entry.contentBoxSize as unknown as ResizeObserverSize)\n .blockSize\n : entry.contentRect.height;\n if (currentBlockSize > 52) {\n setWrap(true);\n }\n }\n }\n });\n observer.observe(container);\n return () => {\n observer.disconnect();\n };\n }, [hasFiles]);\n\n useEffect(() => {\n if (!value && !hasFiles) {\n setWrap(false);\n }\n }, [value, hasFiles]);\n\n const handleContainerClick = useCallback(\n (e: React.MouseEvent) => {\n for (const item of e.nativeEvent.composedPath()) {\n if (\n item instanceof HTMLTextAreaElement ||\n item instanceof HTMLButtonElement\n ) {\n return;\n }\n }\n textareaRef.current?.focus();\n },\n [textareaRef]\n );\n\n const onFilesDropped = useCallback(\n (files: File[]) => {\n appendFiles(files);\n textareaRef.current?.focus();\n },\n [appendFiles, textareaRef]\n );\n\n return (\n <>\n <div className=\"container\" onClick={handleContainerClick}>\n <div className={classNames(\"box\", { wrap })}>\n <div className=\"input\" ref={containerRef}>\n <TextareaAutoResize\n containerRef={containerRef}\n ref={textareaRef}\n value={value}\n minRows={1}\n maxRows={4}\n borderSize={0}\n paddingSize={hasFiles ? 86 : 16}\n autoResize\n placeholder={placeholder}\n submitWhen=\"enter-without-shift\"\n desiredSelectionRef={selectionRef}\n onSubmit={handleSubmit}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onPaste={paste}\n style={{\n paddingTop: hasFiles ? 78 : 8,\n }}\n />\n {hasFiles && (\n <UploadedFiles\n files={files!}\n className=\"condensed\"\n onRemove={(uid, abortController) => {\n removeFile(uid);\n abortController?.abort();\n }}\n onAdd={() => {\n uploadButtonRef.current?.requestUpload();\n }}\n />\n )}\n {mentionOverlay?.map((overlay, index) => (\n <div key={index} className=\"mention-overlay\" style={overlay} />\n ))}\n {commandOverlay?.map((overlay, index) => (\n <div key={index} className=\"mention-overlay\" style={overlay} />\n ))}\n {mentionPopover &&\n createPortal(\n <WrappedActions\n actions={mentionPopover.actions}\n style={mentionPopover.style}\n activeKeys={mentionActiveKeys!}\n footerTips={t(K.COMMAND_TIPS)}\n onActionClick={(e) => handleMention(e.detail)}\n />,\n document.body\n )}\n {commandPopover &&\n createPortal(\n <WrappedActions\n actions={commandPopover.actions}\n style={commandPopover.style}\n activeKeys={commandActiveKeys!}\n footerTips={\n commandPrefix === \"/\"\n ? t(K.COMMAND_TIPS)\n : t(K.SEARCH_COMMANDS_TIPS, { count: MAX_SHOWN_COMMANDS })\n }\n onActionClick={(e) =>\n handleSelectCommand(e.detail as ActionWithSubCommands)\n }\n />,\n document.body\n )}\n </div>\n <div className=\"toolbar\">\n {uploadEnabled ? (\n <>\n <UploadButton\n ref={uploadButtonRef}\n accept={uploadAccept}\n disabled={exceeded}\n onChange={(files) => {\n appendFiles(files);\n textareaRef.current?.focus();\n }}\n />\n <div className=\"btn-divider\"></div>\n </>\n ) : null}\n {!submitDisabled || !supportsTerminate ? (\n <button\n className=\"btn-send\"\n disabled={submitDisabled || !value || !allFilesDone}\n onClick={handleSubmitClick}\n >\n <WrappedIcon lib=\"fa\" icon=\"arrow-up\" />\n </button>\n ) : (\n <>\n {terminating ? (\n <WrappedIconButton icon={ICON_LOADING} disabled />\n ) : (\n <WrappedIconButton\n icon={ICON_STOP}\n tooltip={t(K.TERMINATE_THE_TASK)}\n onClick={onTerminate}\n />\n )}\n </>\n )}\n </div>\n </div>\n </div>\n <GlobalDragOverlay\n disabled={!uploadEnabled || exceeded || uploadOptions?.dragDisabled}\n uploadOptions={uploadOptions}\n onFilesDropped={onFilesDropped}\n />\n </>\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport Logo from \"./images/logo@2x.png\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement } = createDecorators();\n\n/**\n * Elevo 品牌 Logo 图片组件,固定展示 Elevo logo(95×28px)。\n *\n * @category display-component\n */\nexport\n@defineElement(\"ai-portal.elevo-logo\", {\n styleTexts: [styleText],\n})\nclass ElevoLogo extends ReactNextElement {\n render() {\n return (\n <img className=\"logo\" alt=\"Elevo\" src={Logo} width={95} height={28} />\n );\n }\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n WATCH_REPLAY = \"WATCH_REPLAY\",\n}\n\nconst en: Locale = {\n [K.WATCH_REPLAY]: \"Watch replay\",\n};\n\nconst zh: Locale = {\n [K.WATCH_REPLAY]: \"查看回放\",\n};\n\nexport const NS = \"bricks/ai-portal/show-case\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, { useMemo } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\n\ninitializeI18n(NS, locales);\n\nconst bgClasses = [\"purple\", \"green\", \"pink\"];\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst { defineElement, property } = createDecorators();\n\nexport interface ShowCaseProps {\n caseTitle?: string;\n summary?: string;\n url?: string;\n}\n\n/**\n * 构件 `ai-portal.show-case`\n *\n * 案例展示卡片构件,以彩色背景卡片展示单个优秀案例,点击可跳转到案例详情。\n */\nexport\n@defineElement(\"ai-portal.show-case\", {\n styleTexts: [styleText],\n})\nclass ShowCase extends ReactNextElement implements ShowCaseProps {\n /** 案例标题,同时用于计算卡片背景色 */\n @property()\n accessor caseTitle: string | undefined;\n\n /** 案例摘要描述 */\n @property()\n accessor summary: string | undefined;\n\n /** 点击卡片跳转的目标链接 */\n @property()\n accessor url: string | undefined;\n\n render() {\n return (\n <ShowCaseComponent\n caseTitle={this.caseTitle}\n summary={this.summary}\n url={this.url}\n />\n );\n }\n}\n\nfunction ShowCaseComponent({ caseTitle, summary, url }: ShowCaseProps) {\n const bgClass = useMemo(() => {\n // Get a deterministic class based on the caseTitle\n if (!caseTitle) return bgClasses[0];\n let hash = 0;\n for (let i = 0; i < caseTitle.length; i++) {\n hash = caseTitle.charCodeAt(i) + ((hash << 5) - hash);\n }\n const index = Math.abs(hash) % bgClasses.length;\n return bgClasses[index];\n }, [caseTitle]);\n\n return (\n <WrappedLink className={`link ${bgClass}`} url={url}>\n <span className=\"title\">{caseTitle}</span>\n <span className=\"description\">{summary}</span>\n <span className=\"mask\" />\n <span className=\"button\">\n <WrappedIcon lib=\"easyops\" icon=\"replay\" />\n {t(K.WATCH_REPLAY)}\n </span>\n </WrappedLink>\n );\n}\n","import { http } from \"@next-core/http\";\nimport { createProviderClass } from \"@next-core/utils/general\";\nimport type { ToolInfo } from \"@next-tsx/parser\";\n\nexport async function callTool(\n tool: ToolInfo,\n params: Record<string, unknown>\n): Promise<unknown> {\n const response = await http.post<{ data: unknown }>(\n `api/gateway/logic.llm.aiops_service/api/v1/elevo/conversation/${\n tool.conversationId\n }/step/${tool.stepId}/view`,\n {\n params,\n }\n );\n\n return response.data;\n}\n\ncustomElements.define(\"ai-portal.call-tool\", createProviderClass(callTool));\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport imageGoals from \"./images/goals@2x.png\";\nimport imageActivities from \"./images/activities@2x.png\";\nimport imageSpaces from \"./images/spaces@2x.png\";\nimport imageServiceflows from \"./images/serviceflows@2x.png\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface BlankStateProps {\n illustration?: BlankStateIllustration;\n description?: string;\n}\n\nexport type BlankStateIllustration =\n | \"goals\"\n | \"activities\"\n | \"collaboration-spaces\"\n | \"serviceflows\";\n\n/**\n * 空状态展示组件,提供预置插画和描述文字,并支持通过默认插槽插入自定义内容。\n *\n * @description 空状态展示组件,提供预置插画和描述文字,并支持通过默认插槽插入自定义内容。\n * @category ai-portal\n */\nexport\n@defineElement(\"ai-portal.blank-state\", {\n styleTexts: [styleText],\n})\nclass BlankState extends ReactNextElement implements BlankStateProps {\n /**\n * 插画类型,可选 \"goals\"、\"activities\"、\"collaboration-spaces\"、\"serviceflows\",默认使用 activities 插画\n */\n @property()\n accessor illustration: BlankStateIllustration | undefined;\n\n /**\n * 描述文字\n */\n @property()\n accessor description: string | undefined;\n\n render() {\n return (\n <BlankStateComponent\n illustration={this.illustration}\n description={this.description}\n />\n );\n }\n}\n\nfunction BlankStateComponent({ illustration, description }: BlankStateProps) {\n return (\n <>\n <img src={getIllustrationSrc(illustration)} width={184} height={138} />\n <p>{description}</p>\n <slot />\n </>\n );\n}\n\nfunction getIllustrationSrc(illustration?: BlankStateIllustration) {\n switch (illustration) {\n case \"goals\":\n return imageGoals;\n case \"collaboration-spaces\":\n return imageSpaces;\n case \"serviceflows\":\n return imageServiceflows;\n default:\n return imageActivities;\n }\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface StickyContainerProps {\n variant?: StickyContainerVariant;\n}\n\nexport type StickyContainerVariant = \"default\" | \"home\";\n\n/**\n * 构件 `ai-portal.sticky-container`\n *\n * 粘性容器构件,使内容在页面滚动时固定在顶部。\n *\n * @slot - 内容\n * @slot header - 头部\n * @slot toolbar - 工具栏\n */\nexport\n@defineElement(\"ai-portal.sticky-container\", {\n styleTexts: [styleText],\n})\nclass StickyContainer extends ReactNextElement implements StickyContainerProps {\n /**\n * 变体风格,通过 CSS attribute selector 控制样式,不触发重新渲染\n * @default \"default\"\n */\n @property({ render: false })\n accessor variant: StickyContainerVariant | undefined;\n\n render() {\n return <StickyContainerComponent />;\n }\n}\n\nfunction StickyContainerComponent() {\n return <slot />;\n}\n","import React, { useRef } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport classNames from \"classnames\";\nimport { useHasAssignedNodes } from \"@next-shared/hooks\";\nimport styleText from \"./styles.shadow.css\";\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst { defineElement, property } = createDecorators();\n\nexport interface ElevoCardProps {\n cardTitle?: string;\n description?: string;\n url?: string;\n avatar?: string | IconWithColor;\n avatarType?: \"icon\" | \"image\";\n}\n\nexport type IconWithColor = GeneralIconProps & {\n color?: string;\n};\n\n/**\n * Elevo 风格的卡片组件,支持图标或图片头像、标题、描述、操作按钮及底部插槽。\n *\n * @category display-component\n * @slot actions - 卡片右上角操作区域\n * @slot footer - 卡片底部操作区域\n */\nexport\n@defineElement(\"ai-portal.elevo-card\", {\n styleTexts: [styleText],\n})\nclass ElevoCard extends ReactNextElement implements ElevoCardProps {\n @property()\n accessor cardTitle: string | undefined;\n\n @property()\n accessor description: string | undefined;\n\n @property()\n accessor url: string | undefined;\n\n @property({ attribute: false })\n accessor avatar: string | GeneralIconProps | undefined;\n\n @property()\n accessor avatarType: \"icon\" | \"image\" | undefined;\n\n render() {\n return (\n <ElevoCardComponent\n cardTitle={this.cardTitle}\n description={this.description}\n url={this.url}\n avatar={this.avatar}\n avatarType={this.avatarType}\n />\n );\n }\n}\n\nfunction ElevoCardComponent({\n cardTitle,\n description,\n url,\n avatar,\n avatarType,\n}: ElevoCardProps) {\n const footerRef = useRef<HTMLSlotElement>(null);\n const hasFooter = useHasAssignedNodes(footerRef);\n\n const actionsRef = useRef<HTMLSlotElement>(null);\n const hasActions = useHasAssignedNodes(actionsRef);\n\n return (\n <WrappedLink className={classNames(\"card\", { clickable: !!url })} url={url}>\n <div className=\"header\">\n <div className=\"heading\">\n {avatarType !== \"image\" && avatar ? (\n <IconAvatar {...(avatar as IconWithColor)} />\n ) : (\n <div className=\"avatar\" />\n )}\n <div className=\"title\">{cardTitle}</div>\n </div>\n <div className=\"actions\" hidden={!hasActions}>\n <slot name=\"actions\" ref={actionsRef} />\n </div>\n </div>\n <div className=\"body\">{description}</div>\n <div className=\"footer\" hidden={!hasFooter}>\n <slot name=\"footer\" ref={footerRef} />\n </div>\n </WrappedLink>\n );\n}\n\nfunction IconAvatar({ color, ...iconProps }: IconWithColor) {\n return (\n <div\n className=\"avatar\"\n style={\n color\n ? {\n borderColor: `rgba(var(--theme-${color}-color-rgb-channel), 0.15)`,\n color: `var(--theme-${color}-color)`,\n }\n : undefined\n }\n >\n <WrappedIcon {...iconProps} />\n </div>\n );\n}\n","const dpr = window.devicePixelRatio || 1;\n\nconst TAB_HEIGHT = 40;\nconst BORDER_RADIUS = 12;\nconst slopeAngle = (Math.PI * 36) / 180; // 36度角\nconst deltaY = BORDER_RADIUS * (1 - Math.sin(slopeAngle));\nconst deltaX = BORDER_RADIUS * Math.cos(slopeAngle);\nconst slopeHeight = TAB_HEIGHT - deltaY * 2;\nconst slopeWidth = slopeHeight * Math.tan(slopeAngle);\nconst offsetX = deltaX + slopeWidth / 2;\n\nexport default function drawBg(\n canvas: HTMLCanvasElement,\n ctx: CanvasRenderingContext2D,\n width: number,\n height: number,\n isFirstTab: boolean,\n tabOffset: number,\n tabWidth: number\n) {\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n canvas.style.width = `${width}px`;\n canvas.style.height = `${height}px`;\n\n ctx.scale(dpr, dpr);\n\n ctx.clearRect(0, 0, width, height);\n\n ctx.fillStyle = \"rgba(255,255,255,0.5)\";\n\n // 创建渐变边框\n const borderGradient = ctx.createLinearGradient(0, 0, 0, height);\n borderGradient.addColorStop(0, \"rgba(255,255,255,0.9)\");\n borderGradient.addColorStop(1, \"rgba(255,255,255,0.4)\");\n\n ctx.lineWidth = 1;\n ctx.strokeStyle = borderGradient;\n\n const actualWidth = width - 1;\n const actualHeight = height - 1;\n\n ctx.translate(0.5, 0.5);\n ctx.beginPath();\n\n if (isFirstTab) {\n ctx.moveTo(0, BORDER_RADIUS);\n ctx.arcTo(0, 0, BORDER_RADIUS, 0, BORDER_RADIUS);\n } else {\n ctx.moveTo(0, BORDER_RADIUS + TAB_HEIGHT);\n ctx.arcTo(0, TAB_HEIGHT, BORDER_RADIUS, TAB_HEIGHT, BORDER_RADIUS);\n\n const upStartX = tabOffset - offsetX;\n ctx.lineTo(upStartX, TAB_HEIGHT);\n ctx.arc(\n upStartX,\n TAB_HEIGHT - BORDER_RADIUS,\n BORDER_RADIUS,\n Math.PI / 2,\n slopeAngle,\n true\n );\n\n ctx.lineTo(upStartX + deltaX + slopeWidth, deltaY);\n ctx.arc(\n upStartX + offsetX * 2,\n BORDER_RADIUS,\n BORDER_RADIUS,\n Math.PI + slopeAngle,\n Math.PI * 1.5,\n false\n );\n }\n\n const downStartX = tabOffset + tabWidth - offsetX;\n ctx.lineTo(downStartX, 0);\n ctx.arc(\n downStartX,\n BORDER_RADIUS,\n BORDER_RADIUS,\n Math.PI * 1.5,\n Math.PI * 2 - slopeAngle,\n false\n );\n\n ctx.lineTo(downStartX + deltaX + slopeWidth, TAB_HEIGHT - deltaY);\n ctx.arc(\n downStartX + offsetX * 2,\n TAB_HEIGHT - BORDER_RADIUS,\n BORDER_RADIUS,\n Math.PI - slopeAngle,\n Math.PI / 2,\n true\n );\n\n ctx.lineTo(actualWidth - BORDER_RADIUS, TAB_HEIGHT);\n ctx.arcTo(\n actualWidth,\n TAB_HEIGHT,\n actualWidth,\n TAB_HEIGHT + BORDER_RADIUS,\n BORDER_RADIUS\n );\n\n ctx.lineTo(actualWidth, actualHeight - BORDER_RADIUS);\n ctx.arcTo(\n actualWidth,\n actualHeight,\n actualWidth - BORDER_RADIUS,\n actualHeight,\n BORDER_RADIUS\n );\n\n ctx.lineTo(BORDER_RADIUS, actualHeight);\n ctx.arcTo(0, actualHeight, 0, actualHeight - BORDER_RADIUS, BORDER_RADIUS);\n\n ctx.closePath();\n\n ctx.fill();\n ctx.stroke();\n}\n","import React, { useEffect, useRef } from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport classNames from \"classnames\";\nimport ResizeObserver from \"resize-observer-polyfill\";\nimport drawBg from \"./drawBg\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface FlowTabsProps {\n tabs?: Tab[];\n activeTab?: string;\n}\n\nexport interface Tab {\n id: string;\n label: string;\n}\n\ntype SizeTuple = [width: number, height: number];\n\n/**\n * 流程标签页组件,提供带背景画布动效的标签导航,支持工具栏插槽和默认内容插槽。\n *\n * @category navigate\n * @slot toolbar - 标签栏右侧工具栏区域\n * @slot default - 标签页内容区域\n */\nexport\n@defineElement(\"ai-portal.flow-tabs\", {\n styleTexts: [styleText],\n})\nclass FlowTabs extends ReactNextElement implements FlowTabsProps {\n @property({ attribute: false })\n accessor tabs: Tab[] | undefined;\n\n @property({ attribute: false })\n accessor activeTab: string | undefined;\n\n /**\n * @detail { id: 标签 ID, label: 标签显示文本 }\n * @description 点击标签项时触发,同时更新 activeTab 属性\n */\n @event({ type: \"tab.click\" })\n accessor #tabClick!: EventEmitter<Tab>;\n\n #handleTabClick = (tab: Tab) => {\n this.activeTab = tab.id;\n this.#tabClick.emit(tab);\n };\n\n render() {\n return (\n <FlowTabsComponent\n tabs={this.tabs}\n activeTab={this.activeTab}\n onTabClick={this.#handleTabClick}\n />\n );\n }\n}\n\ninterface FlowTabsComponentProps extends FlowTabsProps {\n onTabClick: (tab: Tab) => void;\n}\n\nfunction FlowTabsComponent({\n tabs,\n activeTab,\n onTabClick,\n}: FlowTabsComponentProps) {\n const rootRef = useRef<HTMLDivElement>(null);\n const bgRef = useRef<HTMLCanvasElement>(null);\n const tabsRef = useRef<HTMLUListElement>(null);\n\n useEffect(() => {\n const root = rootRef.current;\n const canvas = bgRef.current;\n const nav = tabsRef.current;\n if (!root || !canvas || !nav || !tabs?.length) return;\n\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return;\n\n let rootSize: SizeTuple | undefined;\n\n let requestId: number | undefined;\n\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === root) {\n const width = getContentBoxSize(entry, \"width\");\n const height = getContentBoxSize(entry, \"height\");\n rootSize = [width, height];\n }\n }\n\n const tabElements = Array.from(nav.querySelectorAll(\".tab\"));\n const activeTabElement = tabElements.find((tab) =>\n tab.classList.contains(\"active\")\n );\n if (!activeTabElement) return;\n\n const tabWidth = activeTabElement.getBoundingClientRect().width;\n const activeTabIndex = tabElements.indexOf(activeTabElement);\n const isFirstTab = activeTabIndex === 0;\n let tabOffset = 0;\n if (!isFirstTab) {\n const tabsOffset = nav.getBoundingClientRect().left;\n const activeTabOffset = activeTabElement!.getBoundingClientRect().left;\n tabOffset = activeTabOffset - tabsOffset;\n }\n\n if (requestId) {\n cancelAnimationFrame(requestId);\n }\n requestId = requestAnimationFrame(() => {\n if (rootSize) {\n drawBg(\n canvas,\n ctx,\n rootSize[0],\n rootSize[1],\n isFirstTab,\n tabOffset,\n tabWidth\n );\n }\n });\n });\n observer.observe(root);\n observer.observe(nav);\n return () => {\n observer.disconnect();\n if (requestId) {\n cancelAnimationFrame(requestId);\n }\n };\n }, [tabs, activeTab]);\n\n return (\n <div className=\"container\" ref={rootRef}>\n <canvas className=\"bg\" ref={bgRef} />\n <div className=\"header\">\n <ul className=\"tabs\" ref={tabsRef}>\n {tabs?.map((tab) => (\n <li\n key={tab.id}\n part=\"tab\"\n className={classNames(\"tab\", { active: tab.id === activeTab })}\n >\n <a onClick={() => onTabClick(tab)} title={tab.label}>\n {tab.label}\n </a>\n </li>\n ))}\n </ul>\n <div className=\"toolbar\">\n <slot name=\"toolbar\" />\n </div>\n </div>\n <div className=\"body\">\n <slot />\n </div>\n </div>\n );\n}\n\n// istanbul ignore next: compatibility code\nfunction getContentBoxSize(\n entry: ResizeObserverEntry,\n type: \"width\" | \"height\"\n): number {\n const boxSizeType = type === \"height\" ? \"blockSize\" : \"inlineSize\";\n const size = entry.contentBoxSize\n ? entry.contentBoxSize[0]\n ? entry.contentBoxSize[0][boxSizeType]\n : (entry.contentBoxSize as unknown as ResizeObserverSize)[boxSizeType]\n : entry.contentRect[type];\n return size;\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n ADD_STAGE = \"ADD_STAGE\",\n PLEASE_ENTER_NAME = \"PLEASE_ENTER_NAME\",\n UNASSIGNED = \"UNASSIGNED\",\n DELETE_STAGE = \"DELETE_STAGE\",\n DELETE_STAGE_TIPS = \"DELETE_STAGE_TIPS\",\n DELETE = \"DELETE\",\n ADD_ACTIVITY = \"ADD_ACTIVITY\",\n STAGE_NAME_EXISTS = \"STAGE_NAME_EXISTS\",\n ACTIVITY_NAME_EXISTS = \"ACTIVITY_NAME_EXISTS\",\n}\n\nconst en: Locale = {\n [K.ADD_STAGE]: \"Add stage\",\n [K.PLEASE_ENTER_NAME]: \"Please enter name\",\n [K.UNASSIGNED]: \"Unassigned\",\n [K.DELETE_STAGE]: \"Delete stage\",\n [K.DELETE_STAGE_TIPS]: 'Are you sure you want to delete stage \"{{ name }}\"?',\n [K.DELETE]: \"Delete\",\n [K.ADD_ACTIVITY]: \"Add activity\",\n [K.STAGE_NAME_EXISTS]: 'Stage with name \"{{ name }}\" already exists.',\n [K.ACTIVITY_NAME_EXISTS]: 'Activity with name \"{{ name }}\" already exists.',\n};\n\nconst zh: Locale = {\n [K.ADD_STAGE]: \"添加阶段\",\n [K.PLEASE_ENTER_NAME]: \"请输入名称\",\n [K.UNASSIGNED]: \"未设置\",\n [K.DELETE_STAGE]: \"删除阶段\",\n [K.DELETE_STAGE_TIPS]: \"您确定要删除阶段 “{{ name }}” 吗?\",\n [K.DELETE]: \"删除\",\n [K.ADD_ACTIVITY]: \"添加活动\",\n [K.STAGE_NAME_EXISTS]: '阶段名称 \"{{ name }}\" 已存在。',\n [K.ACTIVITY_NAME_EXISTS]: '活动名称 \"{{ name }}\" 已存在。',\n};\n\nexport const NS = \"bricks/ai-portal/stage-flow\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, {\n createRef,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n type Ref,\n} from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport {\n GeneralIcon,\n type GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type {\n Popover,\n PopoverEvents,\n PopoverEventsMapping,\n PopoverProps,\n} from \"@next-bricks/basic/popover\";\nimport type {\n Input,\n InputEvents,\n InputEventsMap,\n InputProps,\n} from \"@next-bricks/form/input\";\nimport type { showDialog as _showDialog } from \"@next-bricks/basic/data-providers/show-dialog/show-dialog\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\n\ninitializeI18n(NS, locales);\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedPopover = wrapBrick<\n Popover,\n PopoverProps & {\n themeVariant?: \"default\" | \"elevo\";\n },\n PopoverEvents,\n PopoverEventsMapping\n>(\"eo-popover\", {\n onVisibleChange: \"visible.change\",\n onBeforeVisibleChange: \"before.visible.change\",\n});\nconst WrappedInput = wrapBrick<Input, InputProps, InputEvents, InputEventsMap>(\n \"eo-input\",\n {\n onChange: \"change\",\n }\n);\nconst showDialog = unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport interface StageFlowProps {\n spec?: Stage[];\n aiEmployees?: AIEmployee[];\n readOnly?: boolean;\n}\n\nexport interface Stage {\n name: string;\n serviceFlowActivities?: FlowActivity[];\n}\n\nexport interface FlowActivity {\n name: string;\n description?: string;\n aiEmployeeId?: string;\n hilRules?: string;\n hilUser?: string;\n}\n\nexport interface AIEmployee {\n employeeId: string;\n name: string;\n}\n\nexport interface EditActivityDetail {\n stage: Stage;\n activity: FlowActivity;\n activityIndex: number;\n}\n\nconst StageFlowComponent = forwardRef(LegacyStageFlowComponent);\n\n/**\n * 构件 `ai-portal.stage-flow`\n *\n * 阶段流程编辑器构件,支持以泳道方式展示和编辑服务流的阶段与活动。\n */\nexport\n@defineElement(\"ai-portal.stage-flow\", {\n styleTexts: [styleText],\n})\nclass StageFlow extends ReactNextElement implements StageFlowProps {\n /** 阶段流程配置数据,每个阶段包含名称和活动列表 */\n @property({ attribute: false })\n accessor spec: Stage[] | undefined;\n\n /** AI 员工列表,用于在活动中显示分配的员工名称 */\n @property({ attribute: false })\n accessor aiEmployees: AIEmployee[] | undefined;\n\n /** 是否为只读模式,只读时不显示编辑、添加、删除操作 */\n @property({ type: Boolean })\n accessor readOnly: boolean | undefined;\n\n /**\n * @description 流程阶段数据发生变化时触发\n * @detail 更新后的阶段列表\n */\n @event({ type: \"change\" })\n accessor #change!: EventEmitter<Stage[]>;\n\n #handleChange = (spec: Stage[]) => {\n this.#change.emit(spec);\n };\n\n /**\n * @description 点击添加活动按钮时触发\n * @detail { stage: 所属阶段数据 }\n */\n @event({ type: \"add.activity\" })\n accessor #addActivity!: EventEmitter<{ stage: Stage }>;\n\n #handleAddActivity = (stage: Stage) => {\n this.#addActivity.emit({ stage });\n };\n\n /**\n * @description 点击活动进行编辑时触发\n * @detail { stage: 所属阶段, activity: 活动数据, activityIndex: 活动索引 }\n */\n @event({ type: \"edit.activity\" })\n accessor #editActivity!: EventEmitter<EditActivityDetail>;\n\n #handleEditActivity = (detail: EditActivityDetail) => {\n this.#editActivity.emit(detail);\n };\n\n #ref = createRef<StageFlowRef>();\n\n /**\n * 向指定阶段添加活动\n * @param stage 目标阶段\n * @param activity 要添加的活动数据\n */\n @method()\n addActivity(stage: Stage, activity: FlowActivity) {\n this.#ref.current?.addActivity(stage, activity);\n }\n\n /**\n * 编辑指定阶段中的某个活动\n * @param stage 目标阶段\n * @param activity 更新后的活动数据\n * @param activityIndex 活动在阶段中的索引\n */\n @method()\n editActivity(stage: Stage, activity: FlowActivity, activityIndex: number) {\n this.#ref.current?.editActivity(stage, activity, activityIndex);\n }\n\n /**\n * 删除指定阶段中的某个活动\n * @param stage 目标阶段\n * @param activityIndex 活动在阶段中的索引\n */\n @method()\n deleteActivity(stage: Stage, activityIndex: number) {\n this.#ref.current?.deleteActivity(stage, activityIndex);\n }\n\n render() {\n return (\n <StageFlowComponent\n ref={this.#ref}\n spec={this.spec}\n aiEmployees={this.aiEmployees}\n readOnly={this.readOnly}\n onChange={this.#handleChange}\n onAddActivity={this.#handleAddActivity}\n onEditActivity={this.#handleEditActivity}\n />\n );\n }\n}\n\ninterface StageFlowRef {\n addActivity(stage: Stage, activity: FlowActivity): void;\n editActivity(\n stage: Stage,\n activity: FlowActivity,\n activityIndex: number\n ): void;\n deleteActivity(stage: Stage, activityIndex: number): void;\n}\n\ninterface StageFlowComponentProps extends StageFlowProps {\n onChange: (spec: Stage[]) => void;\n onAddActivity: (stage: Stage) => void;\n onEditActivity(detail: EditActivityDetail): void;\n}\n\nfunction LegacyStageFlowComponent(\n {\n spec,\n aiEmployees,\n readOnly,\n onChange,\n onAddActivity,\n onEditActivity,\n }: StageFlowComponentProps,\n ref: Ref<StageFlowRef>\n) {\n const [stages, setStages] = useState(spec);\n const [addingStage, setAddingStage] = useState(false);\n const initialRef = useRef(true);\n\n useEffect(() => {\n setStages(spec);\n }, [spec]);\n\n useEffect(() => {\n if (initialRef.current) {\n initialRef.current = false;\n return;\n }\n if (stages) {\n onChange(stages);\n }\n }, [stages, onChange]);\n\n const getAIEmployeeName = useCallback(\n (employeeId: string | undefined) => {\n if (!employeeId) {\n return t(K.UNASSIGNED);\n }\n const employee = aiEmployees?.find((e) => e.employeeId === employeeId);\n return employee ? employee.name : employeeId;\n },\n [aiEmployees]\n );\n\n useImperativeHandle(\n ref,\n () => ({\n addActivity(stage: Stage, activity: FlowActivity) {\n setStages((prev) => {\n const prevList = prev ?? [];\n const stageIndex = prevList.findIndex((s) => s.name === stage.name);\n if (stageIndex === -1) {\n // Stage not found, return previous state\n return prevList;\n }\n const updatedStage = { ...prevList[stageIndex] };\n const prevActivities = updatedStage.serviceFlowActivities ?? [];\n\n if (prevActivities.find((a) => a.name === activity.name)) {\n // Activity with the same name already exists, return previous state\n showDialog({\n type: \"warn\",\n content: t(K.ACTIVITY_NAME_EXISTS, { name: activity.name }),\n });\n return prevList;\n }\n\n const updatedActivities = [...prevActivities, activity];\n updatedStage.serviceFlowActivities = updatedActivities;\n const newStages = [...prevList];\n newStages[stageIndex] = updatedStage;\n return newStages;\n });\n },\n editActivity(\n stage: Stage,\n activity: FlowActivity,\n activityIndex: number\n ) {\n setStages((prev) => {\n const prevList = prev ?? [];\n const stageIndex = prevList.findIndex((s) => s.name === stage.name);\n if (stageIndex === -1) {\n // Stage not found, return previous state\n return prevList;\n }\n const updatedStage = { ...prevList[stageIndex] };\n const prevActivities = updatedStage.serviceFlowActivities ?? [];\n\n if (\n prevActivities.find(\n (a, index) => a.name === activity.name && index !== activityIndex\n )\n ) {\n // Activity with the same name already exists, return previous state\n showDialog({\n type: \"warn\",\n content: t(K.ACTIVITY_NAME_EXISTS, { name: activity.name }),\n });\n return prevList;\n }\n\n const updatedActivities = [...prevActivities];\n if (activityIndex < 0 || activityIndex >= updatedActivities.length) {\n // Activity index out of bounds, return previous state\n return prevList;\n }\n updatedActivities[activityIndex] = activity;\n updatedStage.serviceFlowActivities = updatedActivities;\n const newStages = [...prevList];\n newStages[stageIndex] = updatedStage;\n return newStages;\n });\n },\n deleteActivity(stage: Stage, activityIndex: number) {\n setStages((prev) => {\n const prevList = prev ?? [];\n const stageIndex = prevList.findIndex((s) => s.name === stage.name);\n if (stageIndex === -1) {\n // Stage not found, return previous state\n return prevList;\n }\n const updatedStage = { ...prevList[stageIndex] };\n const updatedActivities = [\n ...(updatedStage.serviceFlowActivities ?? []),\n ];\n if (activityIndex < 0 || activityIndex >= updatedActivities.length) {\n // Activity index out of bounds, return previous state\n return prevList;\n }\n updatedActivities.splice(activityIndex, 1);\n updatedStage.serviceFlowActivities = updatedActivities;\n const newStages = [...prevList];\n newStages[stageIndex] = updatedStage;\n return newStages;\n });\n },\n }),\n []\n );\n\n return (\n <div className=\"container\">\n <ul className=\"nav\">\n {stages?.map((stage, index) => (\n <StageNavItem\n key={index}\n stage={stage}\n readOnly={readOnly}\n otherStageNames={stages\n .filter((s) => s !== stage)\n .map((s) => s.name)}\n onNameChange={(newName) => {\n setStages((prev) => {\n const prevList = prev ?? [];\n const updatedStages = [...prevList];\n updatedStages[index] = {\n ...stage,\n name: newName,\n };\n return updatedStages;\n });\n }}\n onDelete={() => {\n setStages((prev) => {\n const prevList = prev ?? [];\n const updatedStages = prevList.filter((_, i) => i !== index);\n return updatedStages;\n });\n }}\n />\n ))}\n {addingStage && (\n <li className=\"nav-item pending\">\n <StageNameInput\n onDone={(stageName) => {\n setAddingStage(false);\n if (stageName) {\n setStages((prev) => {\n const prevList = prev ?? [];\n if (prevList.find((s) => s.name === stageName)) {\n // Stage with the same name already exists\n showDialog({\n type: \"warn\",\n content: t(K.STAGE_NAME_EXISTS, { name: stageName }),\n });\n return prevList;\n }\n return [...prevList, { name: stageName }];\n });\n }\n }}\n />\n </li>\n )}\n {!readOnly && (\n <li className=\"nav-add\">\n <button\n className=\"btn-add-stage\"\n onClick={() => setAddingStage(true)}\n >\n <WrappedIcon lib=\"antd\" icon=\"plus\" className=\"plus\" />\n {t(K.ADD_STAGE)}\n </button>\n </li>\n )}\n </ul>\n <div className=\"lanes\">\n {stages?.map((stage, index) => (\n <ul className=\"lane\" key={index}>\n {stage.serviceFlowActivities?.map((activity, activityIndex) => (\n <li key={activityIndex}>\n <div\n className=\"activity\"\n onClick={() => {\n if (!readOnly) {\n onEditActivity({ stage, activity, activityIndex });\n }\n }}\n >\n <div className=\"title\">{activity.name}</div>\n <div className=\"assignee\">\n <WrappedIcon\n lib=\"antd\"\n icon=\"user\"\n className=\"assignee-icon\"\n />\n {getAIEmployeeName(activity.aiEmployeeId)}\n </div>\n </div>\n </li>\n ))}\n {!readOnly && (\n <li>\n <button\n className=\"btn-add-activity\"\n onClick={() => onAddActivity(stage)}\n >\n <WrappedIcon lib=\"antd\" icon=\"plus\" />\n {t(K.ADD_ACTIVITY)}\n </button>\n </li>\n )}\n </ul>\n ))}\n </div>\n </div>\n );\n}\n\ninterface StageNameInputProps {\n onDone: (name: string) => void;\n}\n\nfunction StageNameInput({ onDone }: StageNameInputProps) {\n const compositionRef = useRef(false);\n\n return (\n <input\n className=\"input-new-stage\"\n type=\"text\"\n placeholder={t(K.PLEASE_ENTER_NAME)}\n autoFocus\n onCompositionStart={() => {\n compositionRef.current = true;\n }}\n onCompositionEnd={() => {\n compositionRef.current = false;\n }}\n onKeyDown={(e) => {\n if (compositionRef.current) {\n // Ignore key events during composition\n return;\n }\n if (e.key === \"Enter\") {\n e.preventDefault();\n const stageName = (e.target as HTMLInputElement).value.trim();\n onDone(stageName);\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n onDone(\"\");\n }\n }}\n onBlur={(e) => {\n const stageName = e.target.value.trim();\n onDone(stageName);\n }}\n />\n );\n}\n\ninterface StageNavItemProps {\n stage: Stage;\n otherStageNames: string[];\n readOnly?: boolean;\n onNameChange: (name: string) => void;\n onDelete: (stage: Stage) => void;\n}\n\nfunction StageNavItem({\n stage,\n otherStageNames,\n readOnly,\n onNameChange,\n onDelete,\n}: StageNavItemProps) {\n const compositionRef = useRef(false);\n const popoverRef = useRef<Popover>(null);\n\n if (readOnly) {\n return (\n <li className=\"nav-item\">\n <span className=\"nav-link\">\n <span>{stage.name}</span>\n </span>\n </li>\n );\n }\n\n return (\n <li className=\"nav-item\">\n <WrappedPopover\n trigger=\"click\"\n placement=\"bottom\"\n sync=\"width\"\n arrow={false}\n distance={8}\n themeVariant=\"elevo\"\n ref={popoverRef}\n >\n <button className=\"nav-link\" slot=\"anchor\" title={stage.name}>\n <span>{stage.name}</span>\n </button>\n <div className=\"stage-settings\">\n <WrappedInput\n value={stage.name}\n themeVariant=\"elevo\"\n onCompositionStart={() => {\n compositionRef.current = true;\n }}\n onCompositionEnd={() => {\n compositionRef.current = false;\n }}\n onBlur={(e) => {\n const newValue = (e.currentTarget as Input).value?.trim();\n if (newValue && newValue !== stage.name) {\n if (otherStageNames.includes(newValue)) {\n // Stage with the same name already exists\n showDialog({\n type: \"warn\",\n content: t(K.STAGE_NAME_EXISTS, { name: newValue }),\n });\n (e.currentTarget as Input).value = stage.name;\n } else {\n onNameChange(newValue);\n }\n } else if (!newValue) {\n (e.currentTarget as Input).value = stage.name;\n }\n }}\n onKeyDown={(e) => {\n if (compositionRef.current) {\n // Ignore key events during composition\n return;\n }\n if (e.key === \"Enter\") {\n e.preventDefault();\n popoverRef.current!.active = false;\n }\n }}\n />\n <div className=\"divider\" />\n <button\n onClick={async () => {\n popoverRef.current!.active = false;\n await showDialog({\n type: \"delete\",\n title: t(K.DELETE_STAGE),\n content: t(K.DELETE_STAGE_TIPS, { name: stage.name }),\n });\n onDelete(stage);\n }}\n >\n {t(K.DELETE)}\n </button>\n </div>\n </WrappedPopover>\n </li>\n );\n}\n","import * as React from \"react\";\nconst SvgStage = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"currentColor\" stroke=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 20 26\" {...props}><g fillRule=\"evenodd\"><path d=\"M12 9H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1zm0 10H8a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1zM10 7v9\" /><path strokeLinecap=\"round\" d=\"M17.112 16.112h-4.224\" /></g></svg>;\nexport default SvgStage;","import React, { useEffect, useState } from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport {\n GeneralIcon,\n type GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport styleText from \"./styles.shadow.css\";\nimport type { JobState, TaskState } from \"../shared/interfaces.js\";\nimport StageIcon from \"./images/stage.svg\";\nimport classNames from \"classnames\";\nimport { getFlowOrActivityIcon } from \"../shared/getFlowOrActivityIcon\";\nimport { formatDuration } from \"./formatDuration\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface RunningFlowProps {\n spec?: FlowStage[];\n}\n\nexport interface FlowStage {\n name: string;\n serviceFlowActivities?: FlowActivity[];\n}\n\nexport interface FlowActivity {\n name: string;\n taskId?: string;\n state?: TaskState | JobState;\n startTime?: number;\n endTime?: number;\n}\n\nexport interface RunningFlowEvents {\n \"activity.click\": CustomEvent<string>;\n}\n\nexport interface RunningFlowMapEvents {\n onActivityClick: \"activity.click\";\n}\n\n/**\n * 构件 `ai-portal.running-flow`\n *\n * 运行中的流程视图构件,以泳道方式展示各阶段的活动及其运行状态(completed、working、input-required 等)。\n */\nexport\n@defineElement(\"ai-portal.running-flow\", {\n styleTexts: [styleText],\n})\nclass RunningFlow extends ReactNextElement implements RunningFlowProps {\n /** 流程阶段配置数据,每个阶段包含名称和活动列表 */\n @property({ attribute: false })\n accessor spec: FlowStage[] | undefined;\n\n /**\n * @description 点击活动时触发,仅当活动有 taskId 时可触发\n * @detail 活动的 taskId\n */\n @event({ type: \"activity.click\" })\n accessor #activityClick!: EventEmitter<string>;\n\n #handleActivityClick = (activityId: string) => {\n this.#activityClick?.emit(activityId);\n };\n\n render() {\n return (\n <RunningFlowComponent\n spec={this.spec}\n onActivityClick={this.#handleActivityClick}\n />\n );\n }\n}\n\ninterface RunningFlowComponentProps extends RunningFlowProps {\n onActivityClick: (activityId: string) => void;\n}\n\nfunction RunningFlowComponent({\n spec: stages,\n onActivityClick,\n}: RunningFlowComponentProps) {\n return (\n <div className=\"container\">\n <ul className=\"nav\">\n {stages?.map((stage, index) => (\n <li key={index} className=\"nav-item\">\n <div className=\"nav-content\">\n <span className=\"icon\">\n <StageIcon />\n </span>\n <div className=\"title\">{stage.name}</div>\n </div>\n </li>\n ))}\n </ul>\n <div className=\"lanes\">\n {stages?.map((stage, index) => (\n <ul className=\"lane\" key={index}>\n {stage.serviceFlowActivities?.map((activity, activityIndex) => (\n <li key={activityIndex}>\n <div\n className={classNames(\n \"activity\",\n getActivityStateClassName(activity.state)\n )}\n onClick={() => {\n if (activity.taskId) {\n onActivityClick(activity.taskId);\n }\n }}\n >\n <WrappedIcon\n {...getFlowOrActivityIcon(activity.state)}\n className=\"icon\"\n />\n <div className=\"title\">{activity.name}</div>\n {activity.startTime != null && activity.endTime != null && (\n <Duration\n startTime={activity.startTime}\n endTime={activity.endTime}\n state={activity.state}\n />\n )}\n </div>\n </li>\n ))}\n </ul>\n ))}\n </div>\n </div>\n );\n}\n\nfunction getActivityStateClassName(state: TaskState | JobState | undefined) {\n switch (state) {\n case \"input-required\":\n return \"paused\";\n case \"completed\":\n return \"completed\";\n case \"failed\":\n return \"failed\";\n case \"working\":\n return \"working\";\n default:\n return \"default\";\n }\n}\n\ninterface DurationProps {\n startTime: number | undefined;\n endTime: number | undefined;\n state: TaskState | JobState | undefined;\n}\n\nfunction Duration({ startTime, endTime, state }: DurationProps) {\n const [end, setEnd] = useState(endTime);\n const countTime = startTime != null && endTime == null && state === \"working\";\n\n useEffect(() => {\n if (endTime != null) {\n setEnd(endTime);\n }\n }, [endTime]);\n\n useEffect(() => {\n if (countTime) {\n const setEndTime = () => {\n setEnd(Date.now() / 1e3);\n };\n setEndTime();\n const interval = setInterval(setEndTime, 1e3);\n return () => clearInterval(interval);\n }\n }, [countTime]);\n\n if (startTime == null || end == null) {\n return null;\n }\n\n return <div className=\"duration\">{formatDuration(end - startTime)}</div>;\n}\n","/**\n * Format duration as \"00:12\"\n *\n * @param duration in seconds\n */\nexport function formatDuration(duration: number): string {\n const ceilDuration = Math.ceil(duration);\n const minutes = Math.floor(ceilDuration / 60);\n const seconds = ceilDuration % 60;\n return `${String(minutes).padStart(2, \"0\")}:${String(seconds).padStart(2, \"0\")}`;\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n MESSAGE_LIST = \"MESSAGE_LIST\",\n NO_NEW_MESSAGE = \"NO_NEW_MESSAGE\",\n MARK_ALL_READ = \"MARK_ALL_READ\",\n ENTER_MESSAGE_CENTER = \"ENTER_MESSAGE_CENTER\",\n}\n\nconst en: Locale = {\n MESSAGE_LIST: \"Message List\",\n NO_NEW_MESSAGE: \"No new messages for now\",\n MARK_ALL_READ: \"Mark all as read\",\n ENTER_MESSAGE_CENTER: \"Enter Message Center\",\n};\n\nconst zh: Locale = {\n MESSAGE_LIST: \"消息列表\",\n NO_NEW_MESSAGE: \"暂无新消息\",\n MARK_ALL_READ: \"全部已读\",\n ENTER_MESSAGE_CENTER: \"进入消息中心\",\n};\n\nexport const NS = \"bricks/ai-portal/notice-dropdown\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, { useState, useCallback, useEffect, useRef } from \"react\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport {\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping,\n Placement,\n} from \"@next-bricks/basic/popover\";\nimport { GeneralIcon, GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport { Link, LinkProps, Target } from \"@next-bricks/basic/link\";\nimport { Button, ButtonProps } from \"@next-bricks/basic/button\";\nimport { EoCounterBadge, BadgeProps } from \"@next-bricks/basic/counter-badge\";\nimport { IconButton, IconButtonProps } from \"../icon-button/index.js\";\n\nimport { parseTemplate } from \"../shared/parseTemplate.js\";\nimport projectNotifySvg from \"./images/project-notify.svg?url\";\nimport accountNotifySvg from \"./images/account-notify.svg?url\";\nimport systemNotifySvg from \"./images/system-notify.svg?url\";\nimport spaceNotifySvg from \"./images/space-notify.svg?url\";\n\ninitializeI18n(NS, locales);\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedPopover = wrapBrick<\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping\n>(\"eo-popover\", {\n onVisibleChange: \"visible.change\",\n onBeforeVisibleChange: \"before.visible.change\",\n});\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedButton = wrapBrick<Button, ButtonProps>(\"eo-button\");\nconst WrapperCounterBadge = wrapBrick<EoCounterBadge, BadgeProps>(\n \"eo-counter-badge\"\n);\nconst WrapperIconButton = wrapBrick<IconButton, IconButtonProps>(\n \"ai-portal.icon-button\"\n);\n\nexport interface NoticeItem {\n id: string;\n type: string;\n isRead: boolean;\n title: string;\n description?: string;\n time: number;\n /** 单个消息详情链接,优先级高于 urlTemplate */\n url?: string;\n}\n\nexport interface NoticeDropdownProps {\n /** 消息数据列表 */\n dataSource?: NoticeItem[];\n /** 弹窗位置 */\n popoverPlacement?: Placement;\n /** 空状态文案 */\n emptyText?: string;\n /** 通知中心URL */\n notifyCenterUrl?: string;\n /** 详情链接 */\n urlTemplate?: string;\n /** 下拉框最大宽度 */\n dropdownMaxWidth?: string | number;\n /** 下拉框内容样式 */\n dropdownContentStyle?: React.CSSProperties;\n /** 是否隐藏进入消息中心按钮 */\n hideNotifyCenterButton?: boolean;\n /** 详情链接目标 */\n urlTarget?: Target;\n}\n\n/**\n * 构件 `ai-portal.notice-dropdown`\n *\n * 消息通知下拉框构件,用于展示消息列表\n */\nexport\n@defineElement(\"ai-portal.notice-dropdown\", {\n styleTexts: [styleText],\n})\nclass NoticeDropdown extends ReactNextElement implements NoticeDropdownProps {\n /** 消息数据列表 */\n @property({ attribute: false })\n accessor dataSource: NoticeItem[] | undefined;\n\n /**\n * 弹窗位置\n */\n @property()\n accessor popoverPlacement: Placement | undefined;\n\n /** 空状态文案 */\n @property()\n accessor emptyText: string | undefined;\n\n /** 通知中心URL */\n @property()\n accessor notifyCenterUrl: string | undefined;\n\n /** 详情链接 */\n @property()\n accessor urlTemplate: string | undefined;\n\n /** 详情链接目标 */\n @property()\n accessor urlTarget: Target | undefined;\n\n /** 下拉框最大宽度 */\n @property()\n accessor dropdownMaxWidth: string | number | undefined;\n\n /** 下拉框内容样式 */\n @property({ attribute: false })\n accessor dropdownContentStyle: React.CSSProperties | undefined;\n\n /** 是否隐藏进入消息中心按钮 */\n @property({ type: Boolean })\n accessor hideNotifyCenterButton: boolean | undefined;\n\n /**\n * @description 消息项点击事件\n * @detail { id: 消息ID, type: 消息类型, isRead: 是否已读, title: 标题, description: 描述, time: 时间戳, url: 详情链接 }\n */\n @event({ type: \"notice.click\" })\n accessor #noticeClickEvent!: EventEmitter<NoticeItem>;\n\n /**\n * @description 全部已读点击事件\n */\n @event({ type: \"mark.all.read\" })\n accessor #markAllReadEvent!: EventEmitter<void>;\n\n #handleNoticeClick = (item: NoticeItem) => {\n this.#noticeClickEvent.emit(item);\n };\n\n #handleMarkAllRead = () => {\n this.#markAllReadEvent.emit();\n };\n\n render() {\n return (\n <NoticeDropdownComponent\n dataSource={this.dataSource}\n popoverPlacement={this.popoverPlacement}\n emptyText={this.emptyText}\n onNoticeClick={this.#handleNoticeClick}\n urlTemplate={this.urlTemplate}\n dropdownMaxWidth={this.dropdownMaxWidth}\n notifyCenterUrl={this.notifyCenterUrl}\n dropdownContentStyle={this.dropdownContentStyle}\n onMarkAllRead={this.#handleMarkAllRead}\n hideNotifyCenterButton={this.hideNotifyCenterButton}\n urlTarget={this.urlTarget}\n />\n );\n }\n}\n\ninterface NoticeDropdownComponentProps extends NoticeDropdownProps {\n onNoticeClick: (item: NoticeItem) => void;\n onMarkAllRead: () => void;\n}\n\nfunction NoticeDropdownComponent({\n dataSource = [],\n popoverPlacement,\n emptyText,\n notifyCenterUrl,\n urlTemplate,\n dropdownMaxWidth,\n dropdownContentStyle,\n onNoticeClick,\n onMarkAllRead,\n hideNotifyCenterButton,\n urlTarget,\n}: NoticeDropdownComponentProps) {\n const [open, setOpen] = useState(false);\n const popoverRef = useRef(null);\n const handleBeforeVisibleChange = useCallback((e: CustomEvent<boolean>) => {\n setOpen(e.detail);\n }, []);\n\n const handleClose = useCallback(() => {\n setOpen(false);\n }, []);\n\n const handleNoticeItemClick = useCallback(\n (item: NoticeItem) => {\n onNoticeClick(item);\n },\n [onNoticeClick]\n );\n\n const handleMarkAllReadClick = useCallback(() => {\n onMarkAllRead();\n }, [onMarkAllRead]);\n\n // 添加外部点击检测,兼容在某些场景下没有触发关闭浮层的问题\n /* istanbul ignore next */\n useEffect(() => {\n if (!open) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n const path = event.composedPath?.() || [];\n\n const isInsideNoticeDropdown = path.some((element) => {\n if (element instanceof HTMLElement) {\n return element === popoverRef.current;\n }\n return false;\n });\n\n if (!isInsideNoticeDropdown) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"click\", handleClickOutside, true);\n\n return () => {\n document.removeEventListener(\"click\", handleClickOutside, true);\n };\n }, [open]);\n\n return (\n <WrappedPopover\n className=\"popover\"\n placement={popoverPlacement}\n trigger=\"click\"\n active={open}\n arrow={false}\n distance={8}\n ref={popoverRef}\n onBeforeVisibleChange={handleBeforeVisibleChange}\n >\n <span slot=\"anchor\">\n <slot name=\"trigger\">\n <WrapperCounterBadge\n showZero={false}\n dot={true}\n count={dataSource?.length ?? 0}\n offset={[-5, 0]}\n >\n <WrapperIconButton icon={{ lib: \"antd\", icon: \"bell\" }} />\n </WrapperCounterBadge>\n </slot>\n </span>\n <div\n className=\"notice-dropdown-content\"\n style={{ maxWidth: dropdownMaxWidth }}\n >\n <div className=\"header\">\n <div className=\"title\">{t(K.MESSAGE_LIST)}</div>\n <div className=\"close-btn\" onClick={handleClose}>\n <WrappedIcon lib=\"antd\" icon=\"close\" />\n </div>\n </div>\n\n <div className=\"content\" style={dropdownContentStyle}>\n {dataSource?.length > 0 ? (\n <ul className=\"message-list\">\n {dataSource.map((item) => (\n <li key={item.id}>\n <WrappedLink\n className=\"link\"\n url={item.url ?? parseTemplate(urlTemplate, item)}\n target={urlTarget}\n onClick={() => handleNoticeItemClick(item)}\n >\n <div className=\"icon-wrapper\">\n <WrappedIcon\n imgSrc={getNotifyIcon(item.type)}\n keepSvgOriginalColor={true}\n />\n </div>\n <div className=\"message-content\">\n <div className=\"primary-text\">{item.title}</div>\n {item.description && (\n <div className=\"secondary-text\">{item.description}</div>\n )}\n </div>\n </WrappedLink>\n </li>\n ))}\n </ul>\n ) : (\n <div className=\"empty-state\">\n {emptyText || t(K.NO_NEW_MESSAGE)}\n </div>\n )}\n </div>\n\n <div className=\"footer\">\n <WrappedButton\n disabled={!dataSource?.length}\n type=\"text\"\n className=\"footer-button\"\n onClick={handleMarkAllReadClick}\n >\n {t(K.MARK_ALL_READ)}\n </WrappedButton>\n {!hideNotifyCenterButton && (\n <WrappedButton\n target=\"_blank\"\n href={notifyCenterUrl}\n type=\"text\"\n className=\"footer-button\"\n >\n {t(K.ENTER_MESSAGE_CENTER)} &gt;\n </WrappedButton>\n )}\n </div>\n </div>\n </WrappedPopover>\n );\n}\n\nexport function getNotifyIcon(type: string): string {\n switch (type) {\n case \"project\":\n return projectNotifySvg;\n case \"account\":\n return accountNotifySvg;\n case \"system\":\n return systemNotifySvg;\n case \"space\":\n return spaceNotifySvg;\n default:\n return projectNotifySvg;\n }\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n MARK_READ = \"MARK_READ\",\n MARK_ALL_READ = \"MARK_ALL_READ\",\n NO_MESSAGE = \"NO_MESSAGE\",\n}\n\nconst en: Locale = {\n MARK_READ: \"Mark as read\",\n MARK_ALL_READ: \"Mark all as read\",\n NO_MESSAGE: \"No messages\",\n};\n\nconst zh: Locale = {\n MARK_READ: \"标记已读\",\n MARK_ALL_READ: \"全部已读\",\n NO_MESSAGE: \"暂无消息\",\n};\n\nexport const NS = \"bricks/ai-portal/notice-list\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, {\n useState,\n useCallback,\n useMemo,\n useEffect,\n useRef,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\n\nimport { GeneralIcon, GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport { Link, LinkProps, Target } from \"@next-bricks/basic/link\";\nimport type {\n Checkbox,\n CheckboxProps,\n CheckboxValueType,\n} from \"@next-bricks/form/checkbox\";\nimport { parseTemplate } from \"../shared/parseTemplate.js\";\nimport { humanizeTime, HumanizeTimeFormat } from \"@next-shared/datetime\";\nimport { getNotifyIcon, NoticeItem } from \"../notice-dropdown/index.js\";\nimport { Button, ButtonProps } from \"@next-bricks/basic/button\";\n\ninitializeI18n(NS, locales);\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface CheckboxEvents {\n change: CustomEvent<CheckboxValueType[]>;\n}\n\nexport interface CheckboxMapping {\n onValuesChange: \"change\";\n}\n\nconst WrappedButton = wrapBrick<Button, ButtonProps>(\"eo-button\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedCheckbox = wrapBrick<\n Checkbox,\n CheckboxProps,\n CheckboxEvents,\n CheckboxMapping\n>(\"eo-checkbox\", {\n onValuesChange: \"change\",\n});\n\nexport interface NoticeListProps {\n /** 消息数据列表 */\n dataSource?: NoticeItem[];\n /** 空状态文案 */\n emptyText?: string;\n /** 详情链接 */\n urlTemplate?: string;\n /** 详情链接目标 */\n urlTarget?: Target;\n /** 选中的消息 ID 数组 */\n selectedIds?: string[];\n}\n\n/**\n * 构件 `ai-portal.notice-list`\n *\n * 消息通知列表构件,用于展示消息列表,支持批量操作\n */\nexport\n@defineElement(\"ai-portal.notice-list\", {\n styleTexts: [styleText],\n})\nclass NoticeList extends ReactNextElement implements NoticeListProps {\n /** 消息数据列表 */\n @property({ attribute: false })\n accessor dataSource: NoticeItem[] | undefined;\n\n /** 空状态文案 */\n @property()\n accessor emptyText: string | undefined;\n\n /** 详情链接 */\n @property()\n accessor urlTemplate: string | undefined;\n\n /** 详情链接目标 */\n @property()\n accessor urlTarget: Target | undefined;\n\n /** 选中的消息 ID 数组 */\n @property({ attribute: false })\n accessor selectedIds: string[] | undefined;\n\n /**\n * 消息项点击事件\n * @detail 消息项数据\n */\n @event({ type: \"notice.click\" })\n accessor #noticeClickEvent!: EventEmitter<NoticeItem>;\n\n /**\n * 标记消息项已读事件\n * @detail 选中的消息 ID 数组\n */\n @event({ type: \"mark.items.read\" })\n accessor #markItemsReadEvent!: EventEmitter<NoticeItem[]>;\n\n /**\n * 全部已读事件\n */\n @event({ type: \"mark.all.read\" })\n accessor #markAllReadEvent!: EventEmitter<void>;\n\n #handleNoticeClick = (item: NoticeItem) => {\n this.#noticeClickEvent.emit(item);\n };\n\n #handleMarkItemsRead = (items: NoticeItem[]) => {\n this.#markItemsReadEvent.emit(items);\n };\n\n #handleMarkAllRead = () => {\n this.#markAllReadEvent.emit();\n };\n\n render() {\n return (\n <NoticeListComponent\n dataSource={this.dataSource}\n emptyText={this.emptyText}\n onNoticeClick={this.#handleNoticeClick}\n onMarkItemsRead={this.#handleMarkItemsRead}\n onMarkAllRead={this.#handleMarkAllRead}\n selectedIds={this.selectedIds}\n urlTemplate={this.urlTemplate}\n urlTarget={this.urlTarget}\n />\n );\n }\n}\n\ninterface NoticeListComponentProps extends NoticeListProps {\n onNoticeClick: (item: NoticeItem) => void;\n onMarkItemsRead: (items: NoticeItem[]) => void;\n onMarkAllRead: () => void;\n}\n\ninterface NoticeListItemProps {\n item: NoticeItem;\n selected: boolean;\n urlTemplate?: string;\n urlTarget?: Target;\n onSelectItem: (id: string, checked: boolean) => void;\n onNoticeClick: (item: NoticeItem) => void;\n}\n\nfunction NoticeListComponent({\n dataSource = [],\n emptyText,\n onNoticeClick,\n onMarkItemsRead,\n onMarkAllRead,\n urlTemplate,\n urlTarget,\n selectedIds: _selectedIds,\n}: NoticeListComponentProps) {\n const [selectedIds, setSelectedIds] = useState<Set<string>>(\n new Set(_selectedIds || [])\n );\n\n const currentAllIds = useMemo(() => {\n // 过滤当前已读的项目,只有未读的项目可以选中\n return (\n dataSource?.filter((item) => !item.isRead).map((item) => item.id) || []\n );\n }, [dataSource]);\n\n const isAllSelected = useMemo(() => {\n return (\n currentAllIds.length > 0 &&\n currentAllIds.every((id) => selectedIds.has(id))\n );\n }, [currentAllIds, selectedIds]);\n\n const handleSelectAll = useCallback(\n (checked: boolean) => {\n const newSelectedIds = new Set(checked ? currentAllIds : []);\n setSelectedIds(newSelectedIds);\n },\n [currentAllIds]\n );\n\n const handleSelectItem = useCallback(\n (id: string, checked: boolean) => {\n const newSelectedIds = checked\n ? new Set([...selectedIds, id])\n : new Set(\n Array.from(selectedIds).filter((selectedId) => selectedId !== id)\n );\n\n setSelectedIds(newSelectedIds);\n },\n [selectedIds]\n );\n\n const handleNoticeItemClick = useCallback(\n (item: NoticeItem) => {\n onNoticeClick(item);\n },\n [onNoticeClick]\n );\n\n useEffect(() => {\n setSelectedIds(new Set(_selectedIds || []));\n }, [_selectedIds]);\n\n return (\n <div>\n <div className=\"toolbar\">\n <WrappedCheckbox\n disabled={currentAllIds?.length === 0}\n themeVariant=\"elevo\"\n className=\"all-checkbox\"\n options={[{ label: \"\", value: \"selectAll\" }]}\n value={isAllSelected ? [\"selectAll\"] : []}\n onValuesChange={(e) => handleSelectAll(!!e.detail?.length)}\n />\n\n <WrappedButton\n className=\"read-link\"\n type=\"link\"\n themeVariant=\"elevo\"\n disabled={selectedIds.size === 0}\n onClick={() =>\n onMarkItemsRead(\n dataSource.filter((item) => selectedIds.has(item.id))\n )\n }\n >\n {t(K.MARK_READ)}\n </WrappedButton>\n <WrappedButton\n className=\"read-link\"\n type=\"link\"\n onClick={onMarkAllRead}\n themeVariant=\"elevo\"\n >\n {t(K.MARK_ALL_READ)}\n </WrappedButton>\n </div>\n\n <div className=\"content\">\n {dataSource?.length > 0 ? (\n <ul className=\"message-list\">\n {dataSource.map((item) => (\n <li key={item.id}>\n <NoticeListItem\n item={item}\n selected={selectedIds.has(item.id)}\n urlTemplate={urlTemplate}\n urlTarget={urlTarget}\n onSelectItem={handleSelectItem}\n onNoticeClick={handleNoticeItemClick}\n />\n </li>\n ))}\n </ul>\n ) : (\n <div className=\"empty-state\">{emptyText || t(K.NO_MESSAGE)}</div>\n )}\n </div>\n </div>\n );\n}\n\nfunction NoticeListItem({\n item,\n selected,\n urlTemplate,\n urlTarget,\n onSelectItem,\n onNoticeClick,\n}: NoticeListItemProps) {\n const checkboxRef = useRef<Checkbox>(null);\n\n // stop propagation and prevent default manually in eo-link\n useEffect(() => {\n const el = checkboxRef.current;\n if (!el) return;\n const handleClick = (e: MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n };\n el.addEventListener(\"click\", handleClick);\n return () => {\n el.removeEventListener(\"click\", handleClick);\n };\n }, []);\n\n return (\n <WrappedLink\n className={classNames(\"message-item-link\", {\n \"has-read\": item.isRead,\n })}\n url={item.url ?? parseTemplate(urlTemplate, item)}\n target={urlTarget}\n onClick={() => onNoticeClick(item)}\n >\n <div className=\"left\">\n <WrappedCheckbox\n ref={checkboxRef}\n disabled={item.isRead}\n themeVariant=\"elevo\"\n className=\"item-checkbox\"\n options={[{ label: \"\", value: item.id }]}\n value={selected ? [item.id] : []}\n onValuesChange={(e) => {\n onSelectItem(item.id, !!e.detail?.length);\n }}\n />\n <div className=\"icon-wrapper\">\n <WrappedIcon\n imgSrc={getNotifyIcon(item.type)}\n keepSvgOriginalColor={true}\n />\n </div>\n <div className=\"title\" title={item.title}>\n {item.title}\n </div>\n </div>\n\n <div className=\"right\">\n <div className=\"message-time\">\n {humanizeTime(item.time, HumanizeTimeFormat.relative)}\n </div>\n </div>\n </WrappedLink>\n );\n}\n","// istanbul ignore file\nimport React, {\n createRef,\n forwardRef,\n useCallback,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport type {\n Modal,\n ModalProps,\n ModalEvents,\n ModalMapEvents,\n} from \"@next-bricks/containers/modal\";\nimport { http } from \"@next-core/http\";\nimport type { UseBrickConfOrRenderFunction } from \"@next-core/react-runtime\";\nimport type {\n ChatPayload,\n CommandPayload,\n FileInfo,\n RequestStore,\n UploadOptions,\n} from \"../shared/interfaces\";\nimport { handleHttpError } from \"@next-core/runtime\";\nimport backgroundImage from \"../home-container/images/background.png\";\nimport { ChatPanelContent, type ChatPanelContentRef } from \"./ChatPanelContent\";\n\nconst WrappedModal = wrapBrick<\n Modal,\n ModalProps & {\n themeVariant?: \"default\" | \"elevo\";\n height?: string | number;\n noFooter?: boolean;\n headerBordered?: boolean;\n background?: string;\n fullscreenButton?: boolean;\n },\n ModalEvents,\n ModalMapEvents\n>(\"eo-modal\", {\n onClose: \"close\",\n onConfirm: \"confirm\",\n onCancel: \"cancel\",\n onOpen: \"open\",\n});\n\nconst { defineElement, property, method } = createDecorators();\n\nexport interface ChatPanelProps {\n panelTitle?: string;\n aiEmployeeId?: string;\n cmd?: CommandPayload;\n width?: string | number;\n height?: string | number;\n placeholder?: string;\n uploadOptions?: UploadOptions;\n help?: { useBrick: UseBrickConfOrRenderFunction };\n maskClosable?: boolean;\n}\n\nconst ChatPanelComponent = forwardRef(LegacyChatPanelComponent);\n\n/**\n * 弹出式 AI 对话面板,以模态框形式展示对话界面,支持与 AI 助手进行多轮对话。\n *\n * @description 弹出式 AI 对话面板,以模态框形式展示对话界面,支持与 AI 助手进行多轮对话。\n * @category ai-portal\n */\nexport\n@defineElement(\"ai-portal.chat-panel\", {\n shadowOptions: false,\n})\nclass ChatPanel extends ReactNextElement implements ChatPanelProps {\n /**\n * 面板标题\n */\n @property()\n accessor panelTitle: string | undefined;\n\n /**\n * 预设数字人 ID,对话提交时会携带该 ID\n */\n @property()\n accessor aiEmployeeId: string | undefined;\n\n /**\n * 预设命令载荷,对话提交时会携带该命令\n */\n @property({ attribute: false })\n accessor cmd: CommandPayload | undefined;\n\n /**\n * 面板宽度\n */\n @property({ attribute: false }) accessor width: string | number | undefined;\n\n /**\n * 面板高度\n */\n @property({ attribute: false }) accessor height: string | number | undefined;\n\n /**\n * 输入框占位文字\n */\n @property()\n accessor placeholder: string | undefined;\n\n /**\n * 文件上传配置\n */\n @property({ attribute: false })\n accessor uploadOptions: UploadOptions | undefined;\n\n /**\n * 无对话时显示的帮助内容配置\n */\n @property({ attribute: false })\n accessor help: { useBrick: UseBrickConfOrRenderFunction } | undefined;\n\n /**\n * 是否点击遮罩关闭面板\n *\n * @default false\n */\n @property({ type: Boolean })\n accessor maskClosable: boolean | undefined;\n\n #ref = createRef<ChatPanelRef>();\n\n /**\n * 打开对话面板\n */\n @method()\n open() {\n this.#ref.current?.open();\n }\n\n /**\n * 关闭对话面板\n */\n @method()\n close() {\n this.#ref.current?.close();\n }\n\n /**\n * 设置输入框的内容\n * @param content 要设置的文本内容\n */\n @method()\n setInputValue(content: string) {\n this.#ref.current?.setInputValue(content);\n }\n\n /**\n * 直接发送一条消息\n * @param payload 消息载荷,包含文本内容及可选的文件、命令等\n */\n @method()\n send(payload: ChatPayload) {\n this.#ref.current?.send(payload);\n }\n\n /**\n * 在面板中显示文件预览\n * @param file 要预览的文件信息\n */\n @method()\n showFile(file: FileInfo) {\n this.#ref.current?.showFile(file);\n }\n\n render() {\n return (\n <ChatPanelComponent\n ref={this.#ref}\n panelTitle={this.panelTitle}\n aiEmployeeId={this.aiEmployeeId}\n cmd={this.cmd}\n width={this.width}\n height={this.height}\n placeholder={this.placeholder}\n uploadOptions={this.uploadOptions}\n help={this.help}\n maskClosable={this.maskClosable}\n />\n );\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ninterface ChatPanelComponentProps extends ChatPanelProps {\n // Define react event handlers here.\n}\n\ninterface ChatPanelRef {\n open: () => void;\n close: () => void;\n setInputValue: (content: string) => void;\n send: (payload: ChatPayload) => void;\n showFile: (file: FileInfo) => void;\n}\n\nfunction LegacyChatPanelComponent(\n {\n panelTitle,\n aiEmployeeId,\n cmd,\n width,\n height,\n placeholder,\n uploadOptions,\n help,\n maskClosable,\n }: ChatPanelComponentProps,\n ref: React.Ref<ChatPanelRef>\n) {\n const modalRef = useRef<Modal>(null);\n const contentRef = useRef<ChatPanelContentRef>(null);\n\n const [submitDisabled, setSubmitDisabled] = useState(false);\n\n const [conversationId, setConversationId] = useState<string | null>(null);\n const [initialRequest, setInitialRequest] = useState<RequestStore | null>(\n null\n );\n\n const handleChatSubmit = useCallback(\n async (payload: ChatPayload) => {\n setSubmitDisabled(true);\n try {\n const res = await http.post<{\n data: { conversationId: string };\n }>(\n \"api/gateway/logic.llm.aiops_service/api/v1/elevo/conversations\",\n {}\n );\n const conversationId = res.data.conversationId;\n setConversationId(conversationId);\n setInitialRequest({\n ...payload,\n ...(aiEmployeeId ? { aiEmployeeId } : null),\n ...(cmd ? { cmd } : null),\n conversationId: conversationId,\n });\n } catch (e) {\n handleHttpError(e);\n } finally {\n setSubmitDisabled(false);\n }\n },\n [aiEmployeeId, cmd]\n );\n\n useImperativeHandle(\n ref,\n () => ({\n open: () => {\n modalRef.current?.open();\n },\n close: () => {\n modalRef.current?.close();\n },\n setInputValue: (content: string) => {\n contentRef.current?.setInputValue(content);\n },\n send: (payload: ChatPayload) => {\n handleChatSubmit(payload);\n },\n showFile: (file: FileInfo) => {\n contentRef.current?.showFile(file);\n },\n }),\n [handleChatSubmit]\n );\n\n return (\n <WrappedModal\n modalTitle={panelTitle}\n width={width}\n height={height}\n themeVariant=\"elevo\"\n maskClosable={maskClosable}\n noFooter\n headerBordered\n fullscreenButton\n background={`fixed url(${backgroundImage}) center center / cover no-repeat`}\n onOpen={() => {\n setTimeout(() => {\n contentRef.current?.focus();\n }, 100);\n }}\n ref={modalRef}\n >\n <ChatPanelContent\n fromModal\n ref={contentRef}\n conversationId={conversationId}\n initialRequest={initialRequest}\n placeholder={placeholder}\n uploadOptions={uploadOptions}\n help={help}\n submitDisabled={submitDisabled}\n onChatSubmit={handleChatSubmit}\n />\n </WrappedModal>\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport spaceLogoSvg from \"../images/space-logo.svg?url\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface SpaceLogoProps {\n size?: number;\n}\n\n/**\n * 构件 `ai-portal.space-logo`\n *\n * 协作空间的 Logo 展示组件\n */\nexport\n@defineElement(\"ai-portal.space-logo\", {\n styleTexts: [styleText],\n})\nclass SpaceLogo extends ReactNextElement implements SpaceLogoProps {\n /** Logo 容器尺寸(px),图标为容器的 87.5%,圆角为容器的 25%,默认 48 */\n @property({ type: Number })\n accessor size: number | undefined;\n\n render() {\n return <SpaceLogoComponent size={this.size} />;\n }\n}\n\nfunction SpaceLogoComponent({ size = 48 }: SpaceLogoProps) {\n const iconSize = Math.round(size * 0.875); // 图标为容器的 87.5%\n const borderRadius = Math.round(size * 0.25); // 圆角为容器的 25%\n\n return (\n <div\n className=\"space-logo\"\n style={{\n width: `${size}px`,\n height: `${size}px`,\n borderRadius: `${borderRadius}px`,\n }}\n >\n <img\n src={spaceLogoSvg}\n alt=\"Space Logo\"\n style={{\n width: `${iconSize}px`,\n height: `${iconSize}px`,\n }}\n />\n </div>\n );\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {}\n// HELLO = \"HELLO\",\n\nconst en: Locale = {\n // HELLO: \"Hello\",\n};\n\nconst zh: Locale = {\n // HELLO: \"你好\",\n};\n\nexport const NS = \"bricks/ai-portal/chat-panel-welcome\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { NS, locales } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\n\ninitializeI18n(NS, locales);\n\nconst { defineElement, property } = createDecorators();\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface ChatPanelWelcomeProps {\n text?: string;\n}\n\n/**\n * 构件 `ai-portal.chat-panel-welcome`\n *\n * 聊天面板欢迎语构件,展示带有 Elevo 头像的欢迎消息。\n */\nexport\n@defineElement(\"ai-portal.chat-panel-welcome\", {\n styleTexts: [styleText],\n})\nclass ChatPanelWelcome\n extends ReactNextElement\n implements ChatPanelWelcomeProps\n{\n /** 欢迎语文本内容 */\n @property()\n accessor text: string | undefined;\n\n render() {\n return <ChatPanelWelcomeComponent text={this.text} />;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ninterface ChatPanelWelcomeComponentProps extends ChatPanelWelcomeProps {}\n\nfunction ChatPanelWelcomeComponent({ text }: ChatPanelWelcomeComponentProps) {\n return (\n <div className=\"welcome-container\">\n <div className=\"header\">\n <WrappedIcon\n icon=\"elevo-avatar-png\"\n lib=\"easyops\"\n category=\"image\"\n className=\"avatar\"\n />\n <span className=\"title\">Elevo</span>\n </div>\n <div className=\"content\">{text}</div>\n </div>\n );\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {}\n// HELLO = \"HELLO\",\n\nconst en: Locale = {\n // HELLO: \"Hello\",\n};\n\nconst zh: Locale = {\n // HELLO: \"你好\",\n};\n\nexport const NS = \"bricks/ai-portal/space-chat-guide\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import * as React from \"react\";\nconst SvgMagic = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={16} height={16} fill=\"none\" viewBox=\"0 0 16 16\" {...props}><g strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.333} clipPath=\"url(#a)\"><path stroke=\"url(#b)\" d=\"M7.344 1.876a.667.667 0 0 1 1.311 0l.7 3.705a1.33 1.33 0 0 0 1.063 1.063l3.706.7a.667.667 0 0 1 0 1.311l-3.706.701a1.33 1.33 0 0 0-1.062 1.063l-.7 3.705a.667.667 0 0 1-1.312 0l-.7-3.705A1.33 1.33 0 0 0 5.58 9.356l-3.705-.7a.667.667 0 0 1 0-1.311l3.705-.701a1.33 1.33 0 0 0 1.063-1.063z\" /><path stroke=\"#2540FF\" d=\"M13.334 1.333V4M14.667 2.667H12M2.667 14.667a1.333 1.333 0 1 0 0-2.667 1.333 1.333 0 0 0 0 2.667\" /></g><defs><linearGradient id=\"b\" x1={1} x2={19.5} y1={15} y2={1} gradientUnits=\"userSpaceOnUse\"><stop stopColor=\"#2540FF\" /><stop offset={1} stopColor=\"#DC90FF\" /></linearGradient><clipPath id=\"a\"><path fill=\"#fff\" d=\"M0 0h16v16H0z\" /></clipPath></defs></svg>;\nexport default SvgMagic;","import React, { useEffect, useState } from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport {\n ElevoSpaceApi_GenerateSpaceCapabilitiesResponseBody,\n ElevoSpaceApi_generateSpaceCapabilities,\n} from \"@next-api-sdk/llm-sdk\";\nimport type { SpaceLogo, SpaceLogoProps } from \"../space-logo/index.js\";\nimport { SpaceDetail } from \"../interfaces.js\";\nimport MagicSvg from \"../images/magic.svg\";\nimport layerSvg from \"../images/layer.svg?url\";\nimport layerBg from \"../images/layer-bg.png\";\nimport lightningSvg from \"../images/lightning.svg?url\";\nimport lightningBg from \"../images/lightning-bg.png\";\nimport bookSvg from \"../images/book.svg?url\";\nimport bookBg from \"../images/book-bg.png\";\nimport { K, t } from \"../i18n.js\";\nimport { handleHttpError } from \"@next-core/runtime\";\n\nconst WrappedSpaceLogo = wrapBrick<SpaceLogo, SpaceLogoProps>(\n \"ai-portal.space-logo\"\n);\n\nexport interface GuideCard {\n key: string;\n icon: string;\n background: string;\n title: string;\n description?: string;\n iconContainerColor: \"blue\" | \"orange\" | \"green\";\n}\n\nexport interface SpaceGuideProps {\n onCardClick?: (cardIndex: number) => void;\n spaceDetail: SpaceDetail;\n generateSpaceSummary?: boolean;\n}\n\nexport function SpaceGuide(props: SpaceGuideProps) {\n const { spaceDetail, onCardClick, generateSpaceSummary } = props;\n const [spaceCapabilities, setSpaceCapabilities] =\n useState<ElevoSpaceApi_GenerateSpaceCapabilitiesResponseBody | null>(null);\n const [loading, setLoading] = useState(true);\n\n const cards: GuideCard[] = [\n {\n key: \"manageInstancesCapability\",\n icon: layerSvg,\n background: layerBg,\n title: t(K.SPACE_GUIDE_CARD_1_TITLE),\n iconContainerColor: \"blue\",\n },\n {\n key: \"initiateFlowCapability\",\n icon: lightningSvg,\n background: lightningBg,\n title: t(K.SPACE_GUIDE_CARD_2_TITLE),\n iconContainerColor: \"orange\",\n },\n {\n key: \"searchKnowledgeCapability\",\n icon: bookSvg,\n background: bookBg,\n title: t(K.SPACE_GUIDE_CARD_3_TITLE),\n iconContainerColor: \"green\",\n },\n ];\n\n const handleCardClick = (index: number) => {\n onCardClick?.(index);\n };\n\n useEffect(() => {\n const fetchSpaceCapabilities = async () => {\n setLoading(true);\n try {\n const res = await ElevoSpaceApi_generateSpaceCapabilities(\n spaceDetail.instanceId,\n {\n forceRefresh: !!generateSpaceSummary,\n },\n {\n interceptorParams: {\n ignoreLoadingBar: true,\n },\n }\n );\n setSpaceCapabilities(res);\n } catch (error) {\n handleHttpError(error);\n } finally {\n setLoading(false);\n }\n };\n\n if (spaceDetail?.instanceId) {\n fetchSpaceCapabilities();\n }\n }, [spaceDetail?.instanceId, generateSpaceSummary]);\n\n return (\n <div className=\"space-guide-container\">\n <div className=\"guide-header\">\n <div className=\"space-logo\">\n <WrappedSpaceLogo size={48} />\n </div>\n <h1 className=\"guide-title\">{spaceDetail?.name}</h1>\n <p className=\"guide-description\">{spaceDetail?.description}</p>\n </div>\n\n <div className=\"guide-content\">\n <div className=\"section-title\">\n <MagicSvg className=\"section-icon\" />\n <span>{t(K.SPACE_GUIDE_SECTION_TITLE)}</span>\n </div>\n\n <div className=\"cards-grid\">\n {cards.map((card, index) => (\n <div\n key={index}\n className=\"guide-card\"\n style={{ backgroundImage: `url(${card.background})` }}\n onClick={() => handleCardClick(index)}\n >\n <div className=\"card-content\">\n <div\n className={`card-icon-container ${card.iconContainerColor}`}\n >\n <img src={card.icon} alt={card.title} className=\"card-icon\" />\n </div>\n <h3 className=\"card-title\">{card.title}</h3>\n <p className=\"card-description\">\n {loading ? (\n <span className=\"loading-dots\">\n <span></span>\n <span></span>\n <span></span>\n </span>\n ) : (\n spaceCapabilities?.[\n card.key as keyof ElevoSpaceApi_GenerateSpaceCapabilitiesResponseBody\n ]\n )}\n </p>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}\n","import { http } from \"@next-core/http\";\n/**\n * @description 生成协作空间核心能力说明\n * @endpoint POST /api/v1/elevo/spaces/:spaceId/capabilities/generate\n */\nexport const ElevoSpaceApi_generateSpaceCapabilities = async (spaceId, data, options) => /**! @contract easyops.api.llm.elevo_space.GenerateSpaceCapabilities@1.0.0 */(await http.post(`api/gateway/logic.llm.aiops_service/api/v1/elevo/spaces/${spaceId}/capabilities/generate`, data, options)).data;\n//# sourceMappingURL=generateSpaceCapabilities.js.map","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { NS, locales } from \"./i18n.js\";\nimport { SpaceGuide } from \"./SpaceGuide.js\";\nimport styleText from \"./styles.shadow.css\";\n\nimport { SpaceDetail } from \"../interfaces.js\";\n\ninitializeI18n(NS, locales);\n\nconst { defineElement, property } = createDecorators();\n\nexport interface SpaceChatGuideProps {\n spaceDetail: SpaceDetail;\n}\n\n/**\n * 构件 `ai-portal.space-chat-guide`\n *\n * 空间聊天引导构件,根据空间详情展示引导信息,帮助用户快速开始聊天。\n */\nexport\n@defineElement(\"ai-portal.space-chat-guide\", {\n styleTexts: [styleText],\n})\nclass SpaceChatGuide extends ReactNextElement implements SpaceChatGuideProps {\n /** 空间详情信息,必填,用于展示空间相关的引导内容 */\n @property({ attribute: false })\n accessor spaceDetail!: SpaceDetail;\n\n render() {\n return <SpaceGuide spaceDetail={this.spaceDetail} />;\n }\n}\n","// istanbul ignore file\nimport React, { useState, useCallback, useEffect } from \"react\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { ElevoSpaceApi_listServiceFlow } from \"@next-api-sdk/llm-sdk\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { NS, locales } from \"./i18n.js\";\nimport {\n NS as ChatStreamNS,\n locales as ChatStreamLocales,\n} from \"../chat-stream/i18n.js\";\nimport styles from \"./styles.module.css\";\nimport type { NoticeItem } from \"../notice-dropdown/index.js\";\nimport {\n SpaceDetail,\n BusinessInstance,\n BusinessObject,\n InstanceUpdateTrigger,\n} from \"./interfaces.js\";\nimport type { UploadOptions, RequestStore } from \"../shared/interfaces.js\";\nimport { SpaceNav } from \"./components/SpaceNav.js\";\nimport { SpaceSidebar } from \"./components/SpaceSidebar.js\";\nimport { ChatArea, ChatAreaRef } from \"./components/ChatArea/ChatArea.js\";\n\nimport { WorkbenchContext } from \"./workbenchContext.js\";\nimport type { BusinessFlow, KnowledgeItem } from \"./interfaces.js\";\nimport { InstDetailManagement } from \"./components/InstDetailManagement/InstDetailManagement.js\";\nimport { ServiceFlows } from \"./components/ServiceFlows.js\";\nimport { K, t } from \"./i18n.js\";\n\ninitializeI18n(NS, locales);\ninitializeI18n(ChatStreamNS, ChatStreamLocales);\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface SpaceWorkbenchProps {\n notifyCenterUrl: string;\n spaceDetail: SpaceDetail;\n notices?: NoticeItem[];\n knowledges?: KnowledgeItem[];\n uploadOptions?: UploadOptions;\n}\n\n/**\n * 构件 `ai-portal.space-workbench`\n *\n * 协作空间工作台,集成顶部导航、侧边栏(知识库、业务实例)、聊天区域和服务流等核心功能的一体化工作台构件。\n */\nexport\n@defineElement(\"ai-portal.space-workbench\", {\n shadowOptions: false,\n})\nclass SpaceWorkbench extends ReactNextElement implements SpaceWorkbenchProps {\n /** 消息通知列表 */\n @property({ attribute: false })\n accessor notices: NoticeItem[] | undefined;\n\n /** 知识库列表 */\n @property({ attribute: false })\n accessor knowledges: KnowledgeItem[] | undefined;\n\n /** 空间详情信息,必填 */\n @property({ attribute: false })\n accessor spaceDetail!: SpaceDetail;\n\n /** 消息中心跳转链接,必填 */\n @property()\n accessor notifyCenterUrl!: string;\n\n /** 文件上传配置选项 */\n @property({ attribute: false })\n accessor uploadOptions: UploadOptions | undefined;\n\n /**\n * @description 点击返回按钮时触发\n */\n @event({ type: \"go.back\" })\n accessor #_goBackEvent!: EventEmitter<void>;\n\n /**\n * @description 点击成员按钮时触发\n */\n @event({ type: \"members.click\" })\n accessor #_membersClickEvent!: EventEmitter<void>;\n\n /**\n * @description 点击消息通知项时触发\n * @detail { id: 消息ID, type: 消息类型, isRead: 是否已读, title: 标题, time: 时间戳 }\n */\n @event({ type: \"notice.click\" })\n accessor #_noticeClickEvent!: EventEmitter<NoticeItem>;\n\n /**\n * @description 点击全部已读按钮时触发\n */\n @event({ type: \"mark.all.read\" })\n accessor #_markAllReadEvent!: EventEmitter<void>;\n\n /**\n * @description 点击编辑空间按钮时触发\n */\n @event({ type: \"space.edit\" })\n accessor #_spaceEditEvent!: EventEmitter<void>;\n\n /**\n * @description 点击知识条目时触发\n * @detail 知识条目数据\n */\n @event({ type: \"knowledge.click\" })\n accessor #_knowledgeClickEvent!: EventEmitter<KnowledgeItem>;\n\n /**\n * @description 点击添加知识按钮时触发\n */\n @event({ type: \"knowledge.add\" })\n accessor #_knowledgeAddEvent!: EventEmitter<void>;\n\n render() {\n return (\n <SpaceWorkbenchComponent\n spaceDetail={this.spaceDetail}\n knowledges={this.knowledges}\n notices={this.notices}\n uploadOptions={this.uploadOptions}\n notifyCenterUrl={this.notifyCenterUrl}\n onBack={() => this.#_goBackEvent.emit()}\n onMembersClick={() => this.#_membersClickEvent.emit()}\n onNoticeClick={(notice) => this.#_noticeClickEvent.emit(notice)}\n onMarkAllRead={() => this.#_markAllReadEvent.emit()}\n onSpaceEdit={() => this.#_spaceEditEvent.emit()}\n onKnowledgeClick={(knowledge) =>\n this.#_knowledgeClickEvent.emit(knowledge)\n }\n onKnowledgeAdd={() => this.#_knowledgeAddEvent.emit()}\n />\n );\n }\n}\n\ninterface SpaceWorkbenchComponentProps extends SpaceWorkbenchProps {\n onBack: () => void;\n onMembersClick: () => void;\n onMarkAllRead: () => void;\n onNoticeClick: (notice: NoticeItem) => void;\n onSpaceEdit: () => void;\n onKnowledgeClick: (knowledge: KnowledgeItem) => void;\n onKnowledgeAdd: () => void;\n}\n\nfunction SpaceWorkbenchComponent(props: SpaceWorkbenchComponentProps) {\n const {\n spaceDetail,\n knowledges,\n notices = [],\n notifyCenterUrl,\n uploadOptions,\n onBack,\n onMembersClick,\n onMarkAllRead,\n onNoticeClick,\n onSpaceEdit,\n onKnowledgeClick,\n onKnowledgeAdd,\n } = props;\n\n // 视图状态管理: 'chat' | 'instance-detail'\n const [currentView, setCurrentView] = useState<\"chat\" | \"instance-detail\">(\n \"chat\"\n );\n const [selectedInstance, setSelectedInstance] =\n useState<BusinessInstance | null>(null);\n const [selectedBusinessObject, setSelectedBusinessObject] =\n useState<BusinessObject | null>(null);\n\n // 实例更新触发器\n const [instanceUpdateTrigger, setInstanceUpdateTrigger] = useState<\n InstanceUpdateTrigger | undefined\n >(undefined);\n\n const [businessFlows, setBusinessFlows] = useState<\n BusinessFlow[] | undefined\n >(undefined);\n\n // 添加一个用于触发新会话的回调引用\n const chatAreaRef = React.useRef<ChatAreaRef>(null);\n\n // 处理点击实例卡片\n const handleInstanceClick = useCallback(\n (instance: BusinessInstance, businessObject: BusinessObject) => {\n setSelectedInstance(instance);\n setSelectedBusinessObject(businessObject);\n setCurrentView(\"instance-detail\");\n },\n []\n );\n\n // 处理关闭实例详情\n const handleCloseInstanceDetail = useCallback(() => {\n setCurrentView(\"chat\");\n setSelectedInstance(null);\n setSelectedBusinessObject(null);\n }, []);\n\n // 处理从实例详情页新建会话\n const handleNewConversation = useCallback((initialRequest: RequestStore) => {\n // 先切换回聊天视图\n setCurrentView(\"chat\");\n setSelectedInstance(null);\n setSelectedBusinessObject(null);\n\n // 通知 ChatArea 创建新 tab\n // ChatArea 会根据 initialRequest.content 判断是新建会话还是加载已有会话\n setTimeout(() => {\n chatAreaRef.current?.addNewSession(initialRequest);\n });\n }, []);\n\n // 处理实例数据更新\n const handleInstanceUpdate = useCallback(\n (updatedInstance: BusinessInstance) => {\n if (!selectedBusinessObject) return;\n\n // 更新当前选中的实例\n setSelectedInstance(updatedInstance);\n\n // 触发 BusinessCategoryPanel 更新 objectInstancesMap\n setInstanceUpdateTrigger({\n objectId: selectedBusinessObject.objectId,\n instanceId: updatedInstance.instanceId,\n updatedData: updatedInstance,\n timestamp: Date.now(),\n });\n },\n [selectedBusinessObject]\n );\n\n // 处理业务流卡片点击\n const handleFlowClick = useCallback((flow: BusinessFlow) => {\n const message = t(K.INITIATING_SERVICE_FLOW, { name: flow.name });\n chatAreaRef.current?.sendMessage({ content: message });\n }, []);\n\n useEffect(() => {\n const fetchBusinessFlows = async () => {\n const res = await ElevoSpaceApi_listServiceFlow(spaceDetail.instanceId, {\n page: 1,\n pageSize: 1000,\n });\n setBusinessFlows(res.list as BusinessFlow[]);\n };\n fetchBusinessFlows();\n }, [spaceDetail.instanceId]);\n\n return (\n <WorkbenchContext.Provider value={{ spaceDetail, uploadOptions }}>\n <div className={styles.container}>\n <div className={styles.spaceWorkbenchContainer}>\n <SpaceNav\n spaceDetail={spaceDetail}\n notifyCenterUrl={notifyCenterUrl}\n notices={notices}\n onBack={onBack}\n onMembersClick={onMembersClick}\n onMarkAllRead={onMarkAllRead}\n onNoticeClick={onNoticeClick}\n onSpaceEdit={onSpaceEdit}\n />\n <div className={styles.spaceWorkbenchContent}>\n <SpaceSidebar\n knowledgeList={knowledges}\n onKnowledgeClick={onKnowledgeClick}\n onKnowledgeAdd={onKnowledgeAdd}\n onInstanceClick={handleInstanceClick}\n instanceUpdateTrigger={instanceUpdateTrigger}\n />\n {currentView === \"chat\" ? (\n <>\n <ChatArea ref={chatAreaRef} />\n <ServiceFlows\n businessFlows={businessFlows}\n onFlowClick={handleFlowClick}\n />\n </>\n ) : (\n selectedInstance &&\n selectedBusinessObject && (\n <InstDetailManagement\n instance={selectedInstance}\n businessObject={selectedBusinessObject}\n onClose={handleCloseInstanceDetail}\n onNewConversation={handleNewConversation}\n onInstanceUpdate={handleInstanceUpdate}\n />\n )\n )}\n </div>\n </div>\n </div>\n </WorkbenchContext.Provider>\n );\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;white-space:nowrap}.container{border-radius:var(--elevo-border-radius)}:host([hidden]){display:none}*{box-sizing:border-box}.label{font-weight:500;overflow:hidden;text-overflow:ellipsis}.stat{font-weight:600}.chart{min-width:0}.chart > *{display:block}:host(:not([size=\"small\"])) .container{background:linear-gradient(164deg,rgba(105,153,253,0) 40%,rgba(105,153,253,0.05) 60%,rgba(105,153,253,0.32) 100%),#fff;padding:22px}:host(:not([size=\"small\"])) .label{font-size:14px;height:22px;margin-bottom:16px}:host(:not([size=\"small\"])) .stat-and-chart{display:flex;align-items:center;justify-content:end;position:relative}:host(:not([size=\"small\"])) .stat{font-size:36px;color:#1d212a;position:absolute;left:0}:host(:not([size=\"small\"])) .chart{width:calc(100% - 160px)}:host([size=\"small\"]) .container{padding:11px 15px;display:flex;align-items:center;justify-content:end;position:relative;background:var(--elevo-component-background);-webkit-backdrop-filter:var(--elevo-component-backdrop-filter);backdrop-filter:var(--elevo-component-backdrop-filter)}:host([size=\"small\"]) .label-and-stat{position:absolute;left:15px}:host([size=\"small\"]) .label{font-size:12px;color:#8c8c8c;line-height:17px;height:17px;margin-bottom:7px}:host([size=\"small\"]) .stat{font-size:20px;color:#262626;line-height:24px}:host([size=\"small\"]) .chart{width:calc(100% - 90px)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./images/bg.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block}:host([hidden]){display:none}.popover::part(popup){border-radius:12px}.notice-dropdown-content{max-width:500px;border-radius:12px;display:flex;flex-direction:column;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:cover}.header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px}.title{font-size:18px;font-weight:500;color:var(--text-color-title)}.close-btn{cursor:pointer;display:flex;align-items:center;justify-content:center;width:16px;height:16px;color:#000}ul{list-style:none;margin:0;padding:4px}.content{flex:1;max-height:500px;overflow-y:auto}.link{display:block}.link::part(link){display:flex;align-items:start;gap:12px;padding:10px 16px}.link:hover::part(link):hover{background-color:rgba(0,0,0,0.04);border-radius:8px}.link:last-child{border-bottom:none}.icon-wrapper{position:relative;flex-shrink:0;width:18px;height:18px;padding:2px 0;display:flex;align-items:center;justify-content:center;font-size:18px}.message-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.primary-text{font-size:14px;font-weight:400;line-height:20px;color:var(--text-color-title)}.secondary-text{color:rgba(0,0,0,0.45)}.empty-state{padding:60px 20px;text-align:center;font-size:14px;color:var(--text-color-secondary)}.footer{display:flex;gap:10px;justify-content:space-between;align-items:center;padding:9px 10px;box-shadow:0px -12px 16px -8px rgba(0,0,0,0.08);border-radius:0px 0px 12px 12px}.footer .footer-button::part(button){color:var(--text-color-secondary)}.footer .footer-button::part(button):hover{color:var(--text-color-default)!important}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block}:host([hidden]){display:none}.goal-container{display:flex;flex-direction:column;gap:3px}.loading{display:flex;align-items:center;justify-content:center;padding:24px;font-size:20px;color:#595959}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block}:host([hidden]){display:none}.button-container{display:flex;gap:6px}.action{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.action::part(button){height:28px;font-size:13px;padding:5px 10px}.action.active::part(button){color:var(--elevo-color-brand);background-color:rgba(var(--elevo-color-brand-rgb-channel),0.04);border-color:#c9d7ff}.icon{font-size:16px;margin-right:4px}.remove{padding:1px;font-size:14px;margin-left:10px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;color:#262626}:host([hidden]){display:none}*{box-sizing:border-box}ul{list-style:none;margin:0;padding:0}.activity{position:relative;padding-left:27px}.activity + .activity{margin-top:20px}.main{display:flex;align-items:flex-start}.action{flex:1;min-width:0;display:flex;align-items:center;margin-left:6px;word-break:break-word}.time{color:#8c8c8c;margin-left:12px}.action,\n.time{padding:1px 0}.guide-line{position:absolute;left:8px;top:0;bottom:-20px;width:0;background-color:#d8d8d8}.guide-line::before{content:\"\";position:absolute;top:0;bottom:0;left:3.5px;width:1px;background-color:#d8d8d8}.guide-line::after{content:\"\";position:absolute;top:8px;left:0;width:8px;height:8px;border-radius:8px;background-color:#d8d8d8}.activity:first-child .guide-line::before{top:12px}.activity:last-child .guide-line::before{height:12px;bottom:auto}.activity:first-child:last-child .guide-line::before{height:0}.comment{position:relative;font-size:13px;color:#595959;background-color:#f3f3f3;border-radius:8px;padding:8px 12px;margin-top:10px}.comment::before{content:\"\";position:absolute;top:-6px;left:36px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #f3f3f3}.conversation{margin:0 7px 0 10px}.conversation::part(link){background:#f9f0ff;border-radius:3px;font-weight:500;font-size:12px;color:#aa64f5;display:flex;align-items:center;height:24px;padding:0 8px}.external-link-icon{color:#8c8c8c}.loading{display:flex;align-items:center;justify-content:center;padding:24px;font-size:20px;color:#595959}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.card{display:block}.card::part(link){display:flex;flex-direction:column;gap:12px;background:rgba(255,255,255,0.6);box-shadow:0px 2px 5px 0px rgba(0,0,0,0.04);border-radius:12px;border:1px solid #fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:16px;color:#262626}.card:not(.clickable)::part(link){cursor:auto}.card::part(link):hover{background:#fff}.header,\n.body,\n.footer{width:100%}.header{display:flex;gap:12px}.heading{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.avatar{width:42px;height:42px;border-radius:50%;border:1px solid rgba(0,0,0,0.15);font-size:24px;display:flex;align-items:center;justify-content:center}.title{font-weight:500;font-size:16px;color:#262626;line-height:22px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.actions{margin:-8px -8px 0 0}.body{font-size:12px;color:rgba(0,0,0,0.45);line-height:17px;height:51px;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.footer{align-items:center;justify-content:flex-end;gap:8px}.footer:not([hidden]){display:flex}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:flex;flex-direction:column;align-items:center;gap:16px}:host([hidden]){display:none}p{color:rgba(0,0,0,0.45);margin:10px 0 0}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.tabs{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:32px;row-gap:10px;font-size:16px}.tabs a{color:rgba(38,38,38,0.65);cursor:pointer;padding:0 0 4px;display:block;position:relative}.tabs .active a{color:#262626;font-weight:500}.tabs .active a::after{content:\"\";position:absolute;bottom:0;left:0;right:0;height:4px;background-color:currentColor;border-radius:2px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block}:host([hidden]){display:none}.space-logo{display:flex;align-items:center;justify-content:center;background:#2540ff;border-radius:16px;box-shadow:0px 10px 15px -3px rgba(37,64,255,0.2),0px 4px 6px -4px rgba(37,64,255,0.2)}.space-logo img{width:100%;height:100%;object-fit:contain}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.toolbar{display:flex;gap:8px;align-items:center;padding:12px 16px}.toolbar .read-link::part(button){padding:4px 8px}.all-checkbox,\n.item-checkbox{margin-right:10px}.all-checkbox::part(checkbox-option):hover,\n.item-checkbox::part(checkbox-option):hover{background-color:transparent}ul{list-style:none;margin:0;padding:0}.message-item-link{display:block}.message-item-link::part(link){display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;color:var(--text-color-title);border-bottom:1px solid rgba(0,0,0,0.1);transition:all 0.2s}.message-item-link.has-read::part(link){opacity:0.65}.message-item-link::part(link):hover{background-color:rgba(0,0,0,0.04)}.left{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.left .icon-wrapper{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:24px}.left .title{flex:1;min-width:0;font-size:14px;font-weight:500;color:var(--text-color-title);line-height:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.right{flex-shrink:0;display:flex;align-items:center}.right .message-time{flex-shrink:0;line-height:22px;color:rgba(0,0,0,0.45)}.empty-state{display:flex;align-items:center;justify-content:center;padding:60px 20px;font-size:14px;color:var(--text-color-secondary)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block}:host([hidden]){display:none}.welcome-container{display:flex;flex-direction:column;gap:12px}.header{display:flex;align-items:center;gap:13px}.avatar{width:32px;height:32px;font-size:32px;flex-shrink:0}.title{font-size:16px;color:#1d293d;font-weight:500;line-height:22.75px;letter-spacing:-0.1504px}.content{font-size:14px;color:rgba(0,0,0,0.85);line-height:22.75px;letter-spacing:-0.1504px;white-space:pre-wrap;margin-left:45px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}ul{list-style:none;margin:0;padding:0}.link{display:block}.link::part(link){display:flex;align-items:center;padding:12px 24px;color:#262626;background:rgba(255,255,255,0.6);border-radius:8px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.item:not(:last-child){margin-bottom:4px}.link.actions-active::part(link),\n.link::part(link):hover{background:rgba(0,0,0,0.05);-webkit-backdrop-filter:none;backdrop-filter:none}.icon{font-size:20px;margin-right:8px}.title{font-weight:500;font-size:16px}.title,\n.description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment{color:#1a7aff;margin-left:8px}.header{display:flex;align-items:center}.description{color:#595959;padding-left:28px;line-height:20px}.time{color:rgba(0,0,0,0.45);margin:0 16px}.main{flex:1;min-width:0}.operations{display:flex;align-items:center;justify-content:center;width:32px;height:32px}.link.actions-active .avatar,\n.link:hover .avatar,\n.link:hover .time,\n.link:not(:hover):not(.actions-active) .actions{display:none}.loading{display:flex;align-items:center;justify-content:center;padding:24px;font-size:20px;color:#595959}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.container{position:relative}.bg{position:absolute;top:0;left:0;z-index:-1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.header{display:flex;align-items:center;justify-content:space-between}.tabs{list-style:none;padding:0;margin:0;display:flex;min-width:0}.tabs .tab{padding:0 18px;min-width:0}.tabs a{display:block;padding:9px 10px;color:rgba(0,0,0,0.55);line-height:20px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:300px}.tabs .active a{font-weight:500;color:#262626}.body{padding:23px 27px;overflow-x:auto}.toolbar{display:flex;align-items:center;gap:8px;white-space:nowrap}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block}:host([hidden]){display:none}img{vertical-align:middle}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}h2{font-weight:500;margin:0;font-size:16px;line-height:22px}.groups,\n.list{list-style:none;margin:0;padding:0}.groups{margin-top:17px}.group + .group{margin-top:32px}.list{margin-top:16px;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px}.list .item{background:rgba(255,255,255,0.9);box-shadow:0px 2px 5px 0px rgba(0,0,0,0.08);border-radius:12px;padding:20px 26px}.heading{display:flex;align-items:center}.icon{font-size:24px;color:#333;margin-right:8px}.title{font-size:15px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.description{margin-top:13px;font-size:13px;color:rgba(0,0,0,0.45);line-height:18px;height:54px;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.sticky-tabs{margin:0 -24px;padding:0 24px 10px}.non-sticky-tabs{padding:0 0 10px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block}:host([hidden]){display:none}*{box-sizing:border-box}.trigger{display:flex;align-items:center;font-size:14px;cursor:pointer;position:relative;padding:4px 12px;border-radius:15px;color:var(--elevo-color-brand)}.trigger:hover{background-color:rgba(37,64,255,0.06)}.trigger::before{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0;padding:1px;background:linear-gradient(145deg,rgba(37,64,255,1),rgba(180,95,248,1));border-radius:15px;-webkit-mask:linear-gradient(#fff 0,#fff 0) content-box,linear-gradient(#fff 0,#fff 0);mask:linear-gradient(#fff 0,#fff 0) content-box,linear-gradient(#fff 0,#fff 0);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:xor;-webkit-mask:linear-gradient(#fff 0,#fff 0) content-box,linear-gradient(#fff 0,#fff 0);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor}.trigger .label{margin-right:0}.label{max-width:650px;margin-right:0.5em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown{max-width:500px;border-radius:4px;background:var(--antd-dropdown-menu-bg);box-shadow:var(--antd-box-shadow-base)}.dropdown-inner{padding:9px 4px}.search-container{padding:3px;border-bottom:1px solid rgba(0,0,0,0.08)}.search::part(affix-wrapper){box-shadow:none;border:none}eo-menu{border:0;padding:0;background:none;border-radius:0}eo-menu-item::part(menu-item){padding:5px 8px;line-height:22px;border-radius:var(--medius-border-radius)}eo-menu-item:not([disabled]):hover::part(menu-item){background-color:var(--left-sidebar-item-hover-bg)}.active::part(menu-item){font-weight:600;background-color:var(--left-sidebar-item-hover-bg)}.empty{display:flex;justify-content:center;align-items:center;color:var(--color-secondary-text)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:flex;flex-direction:column;align-items:center;max-width:1020px;width:100%}:host([hidden]){display:none}*{box-sizing:border-box}.tips{color:rgba(0,0,0,0.45);margin-bottom:27px}.cases{list-style:none;padding:0;margin:0;display:grid;width:100%;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:20px;margin-top:36px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./images/purple@2x.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"./images/green@2x.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"./images/pink@2x.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.link{display:block;background:rgba(255,255,255,0.6);border-radius:12px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-size:cover;background-position:center;background-repeat:no-repeat;background-clip:padding-box;overflow:hidden}.purple{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}.green{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_1___})}.pink{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_2___})}.link::part(link){display:flex;flex-direction:column;gap:0;box-sizing:border-box;height:128px;padding:20px;position:relative}.title{width:100%;margin-bottom:8px;color:#262626;font-weight:500;font-size:14px;line-height:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.description{width:100%;height:60px;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;font-size:13px;color:#18212f;line-height:20px}.link::part(link):hover{box-shadow:0px 4px 12px 0px rgba(96,96,138,0.15),0px 2px 4px 0px rgba(96,96,138,0.06)}.button{display:none;position:absolute;bottom:12px;left:20px;right:20px;height:32px;background:rgba(0,0,0,0.04);border-radius:8px;align-items:center;justify-content:center;gap:4px;color:#262626}.button:hover{background:rgba(0,0,0,0.08)}.link:hover .button{display:flex}.link:hover .description{-webkit-mask-image:linear-gradient(to bottom,rgba(0,0,0,0.65) 0%,rgba(0,0,0,0.11) 51%,rgba(0,0,0,0) 100%);mask-image:linear-gradient(to bottom,rgba(0,0,0,0.65) 0%,rgba(0,0,0,0.11) 51%,rgba(0,0,0,0) 100%);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 60%;mask-size:100% 60%}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.goal-item{display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;padding:12px 24px;background-color:rgba(255,255,255,0.6);border-radius:8px;-webkit-user-select:none;user-select:none;border:1px solid transparent}.goal-item:hover,.goal-item:has(.title:focus){background-color:rgba(0,0,0,0.05)}.goal-item:has(.title:focus) .end .operation{display:flex}.goal-item:hover:not(.does-not-exist) .end .operation{display:flex}.goal-item:has(.title:focus) .end .info{display:none}.goal-item:hover:not(.does-not-exist) .end .info{display:none}.goal-item.completed .serial-number,.goal-item.completed .title{color:#bfbfbf}.goal-item.active{background:rgba(37,64,255,0.1);border:1px solid #2540ff}.goal-item > *{-webkit-user-select:auto;user-select:auto}.goal-item .start,.goal-item .end{display:flex;align-items:center}.goal-item .start{flex:1;min-width:0;column-gap:16px;min-width:0}.goal-item .end{flex-shrink:0;column-gap:30px}.goal-item .end .operation{display:none;align-items:center;gap:8px}.goal-item .end .operation eo-button::part(button){height:28px}.goal-item .end .operation .new-chat::part(button){padding:5px 10px;font-size:13px}.goal-item .end .operation .append-child::part(button){padding:5px 8px;font-size:14px}.goal-item .end .info{display:inline-flex;align-items:center;column-gap:24px}.goal-item .serial-number{font-weight:400;color:var(--palette-gray-7);font-size:16px;overflow:visible}.goal-item .title{font-weight:500;padding:2px 4px;font-size:16px;color:var(--palette-gray-10);border:1px solid transparent;border-radius:8px;cursor:pointer;min-width:80px}.goal-item .title:hover{background-color:rgba(255,255,255,0.6);border:1px solid var(--palette-gray-5);cursor:text}.goal-item .title:focus{outline:none;background-color:rgba(255,255,255,0.6);border:1px solid var(--elevo-color-brand)}.goal-item .icon{border-radius:8px;padding:6px;position:relative;top:2px}.goal-item .icon:hover{background-color:rgba(0,0,0,0.04)}.goal-item .message{color:var(--palette-gray-7);display:inline-flex;align-items:center;column-gap:6px}.goal-item .message .count{font-weight:500;color:var(--palette-gray-10)}.goal-item:not(.editing) .title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./images/bg.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.root{color:#262626;background:url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat center bottom;background-size:100% 104px;padding:12px 12px 29px;margin:0 -12px}.container{position:relative;background:#ffffff;box-shadow:0px 2px 4px 0px rgba(38,45,65,0.1);border-radius:16px;border:1px solid #dadfe8}.container:has(textarea:focus){border-color:#b7c3d8}textarea{display:block;width:100%;padding:10px 16px 50px;color:var(--antd-input-color);border-radius:16px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,0.5);font:inherit;font-size:14px;line-height:22px;height:120px}textarea::placeholder{color:rgba(0,0,0,0.4)}button:focus,\ntextarea:focus{outline:none}button{margin:0;padding:0;font:inherit;background:none;border:none}.actions-bar{position:absolute;bottom:12px;left:14px;right:14px;display:flex;align-items:flex-end;justify-content:space-between;gap:6px}.btn-send{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--elevo-color-brand);border:none;border-radius:8px;color:#fff;flex-shrink:0}.btn-send[disabled]{background:rgba(0,0,0,0.15)}.btn-send:not([disabled]){cursor:pointer}.btn-send:not([disabled]):hover{background:#5166ff}.btn-send:not([disabled]):active{background:#1e33cc}.mention-overlay{position:absolute;border-radius:4px;pointer-events:none;background:rgba(38,45,65,0.1)}.buttons{display:flex;align-items:center;gap:12px}.btn-divider{width:1px;height:16px;background:rgba(0,0,0,0.1)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block;--elevo-icon-button-icon-size:18px}:host([hidden]){display:none}:host,\neo-tooltip{vertical-align:middle}button{height:28px;padding:0 5px;font-size:14px;border-radius:8px;display:flex;align-items:center;justify-content:center;border:none;background:none;color:#333}.icon{font-size:var(--elevo-icon-button-icon-size)}button:disabled{color:#8c8c8c}button:not(:disabled){cursor:pointer}button:focus{outline:none}:host([active]) button:not(:disabled),\nbutton:not(:disabled):hover{background:rgba(0,0,0,0.04)}button:not(:disabled):active{background:rgba(0,0,0,0.08)}.has-slotted .icon{margin-right:8px}:host([reduce-icon-size]) button{--elevo-icon-button-icon-size:16px;padding:0 6px}:host([variant=\"light\"]) button{color:#595959}:host([variant=\"mini\"]) button{height:24px;--elevo-icon-button-icon-size:16px;padding:0 4px;border-radius:4px}:host([variant=\"mini-light\"]) button{color:#8c8c8c;height:20px;--elevo-icon-button-icon-size:14px;padding:0 3px;border-radius:4px}:host([variant=\"bordered\"]) button{background:#ffffff;border-radius:8px;border:1px solid rgba(0,0,0,0.1);color:#595959;height:32px;--elevo-icon-button-icon-size:18px;padding:0 7px}button.has-slotted{padding:0 8px}:host([variant=\"bordered\"]) button:not(:disabled):hover{background:rgba(0,0,0,0.04)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../home-container/images/background.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;position:relative;width:100%;height:100%;color:#262626;padding:48px 54px;overflow:hidden;overflow-y:auto}:host::before{content:\"\";position:fixed;z-index:-1;top:0;right:0;bottom:0;left:0;background-color:rgb(205,206,207);background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-position:center;background-size:cover;background-repeat:no-repeat;background-attachment:fixed}:host([sticky]){padding-top:0}:host([hidden]){display:none}:host([variant=\"form\"])::before{background:#fff}*{box-sizing:border-box}.container{max-width:1400px;margin:0 auto}:host([size=\"small\"]) .container{max-width:1000px}:host([size=\"full\"]) .container{max-width:100%}.sticky-header{margin:0 -24px;padding:65px 24px 30px}.non-sticky-header{padding:17px 0 30px}.header{display:flex;justify-content:space-between;align-items:center}nav{font-size:28px;line-height:40px;font-weight:600;display:flex;min-width:0;white-space:nowrap;flex-wrap:wrap}nav.with-breadcrumbs{font-weight:500;font-size:20px;line-height:28px}h1{margin:0;font-size:inherit;line-height:inherit;font-weight:inherit}.breadcrumbs{list-style:none;padding:0;margin:0;color:#bfbfbf}.breadcrumbs eo-link::part(link){color:inherit}.breadcrumbs eo-link::part(link):hover{color:#595959}.breadcrumbs li::after{content:\"/\";margin:0 8px}.toolbar{display:flex;align-items:center;gap:8px;white-space:nowrap}@media (max-width: 719px){:host{padding-left:24px;padding-right:24px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `ai-portal\\\\.preview-container{display:block;background:rgba(247,248,250,1)}.loading--uD2jY9vX{position:absolute;top:50%;left:50%;font-size:48px;color:var(--palette-gray-5);margin:0 -24px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"loading\": `loading--uD2jY9vX`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;color:#262626;--running-flow-lane-width:234px;--running-flow-status-color:#aeb3bc}:host([hidden]){display:none}*{box-sizing:border-box}ul{list-style:none;margin:0;padding:0}.nav,\n.lanes{display:flex;gap:40px}.nav-item,\n.lane{width:var(--running-flow-lane-width);flex-shrink:0}.nav-item{position:relative;background-color:#e3e4e5;border-top-left-radius:8px;border-bottom-left-radius:8px}.nav-item::after{content:\"\";position:absolute;top:0;right:-24px;border-color:transparent;border-style:solid;border-width:24px 0 24px 24px;border-left-color:#e3e4e5}.nav-content{height:48px;display:flex;align-items:center;padding-left:22px}.nav-content .icon{color:#8c8c8c;font-size:22px;display:contents}.nav-content .title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 8px}.lanes{margin-top:16px}.lane{display:flex;flex-direction:column;gap:8px}.lane > li{padding-left:4px}.activity{background:#fff;border-radius:8px;border:1px solid #d9d9d9;height:42px;display:flex;align-items:center;position:relative;padding-left:16px;cursor:pointer}.activity .icon{color:var(--running-flow-status-color);font-size:20px}.activity .title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#595959;padding:0 7px}.activity .duration{font-size:12px;color:#8c8c8c;background:#fafafa;border-radius:6px;padding:0 8px;height:100%;display:flex;align-items:center}.activity::before{content:\"\";position:absolute;top:50%;left:-1px;transform:translateY(-50%);width:3px;height:18px;background:var(--running-flow-status-color);border-radius:0 3px 3px 0}.activity:hover{box-shadow:0px 2px 5px 0px rgba(0,0,0,0.08)}.activity.paused{--running-flow-status-color:#f0a22e}.activity.working{--running-flow-status-color:#4f69ff}.activity.completed{--running-flow-status-color:#08bf33}.activity.failed{--running-flow-status-color:var(--color-error)}.activity:not(.active) .icon{color:var(--running-flow-status-color)}.activity:not(.active)::before{background:var(--running-flow-status-color)}.activity.active{background:var(--running-flow-status-color);border-color:var(--running-flow-status-color)}.activity.active .icon,.activity.active .title,.activity.active .duration{color:#fff}.activity.active .duration{background:rgba(250,250,250,0.2)}.activity.active::before{display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./images/add-stage.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"./images/add-stage-hover.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;--stage-flow-lane-width:268px}:host([hidden]){display:none}*{box-sizing:border-box}ul{list-style:none;margin:0;padding:0}button{background:none;border:none;cursor:pointer;padding:0}.button:focus{outline:none}.nav,\n.lanes{display:flex;gap:40px}.nav-item,\n.nav-add,\n.lane{width:var(--stage-flow-lane-width);flex-shrink:0}.nav-item{position:relative;background-color:var(--stage-flow-nav-bg);--stage-flow-nav-bg:rgba(37,64,255,0.1)}.nav-item:first-child{border-top-left-radius:20px;border-bottom-left-radius:20px}.nav-item.pending{--stage-flow-nav-bg:rgba(0,0,0,0.04)}.nav-item::after{content:\"\";position:absolute;top:0;right:-20px;border-color:transparent;border-style:solid;border-width:20px 0 20px 20px;border-left-color:var(--stage-flow-nav-bg)}.nav-item:not(:first-child)::before{content:\"\";position:absolute;top:0;left:-30px;width:30px;height:40px;background-color:var(--stage-flow-nav-bg);-webkit-clip-path:polygon(0 0,100% 0,100% 100%,0 100%,20px 50%);clip-path:polygon(0 0,100% 0,100% 100%,0 100%,20px 50%)}.nav-link,\n.btn-add-stage{width:100%;display:flex;align-items:center;justify-content:center;height:40px;font-size:16px}.nav-item.pending:first-child .input-new-stage{padding-left:20px}.nav-link{font-weight:600;color:#000}.nav-link span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-add-stage{font-weight:500;color:rgba(0,0,0,0.65);gap:8px;position:relative}.btn-add-stage .plus{margin-right:8px;font-size:14px}.nav-add:first-child .btn-add-stage{border-radius:20px;border:1px dashed rgba(0,0,0,0.1)}.nav-add:first-child .btn-add-stage:hover{background:rgba(0,0,0,0.04)}.nav-add:not(:first-child) .btn-add-stage::before{content:\"\";position:absolute;top:0;bottom:0;left:-30px;right:-20px;pointer-events:none;background:url(${___CSS_LOADER_URL_REPLACEMENT_0___}) center center no-repeat}.nav-add:not(:first-child) .btn-add-stage:hover::before{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_1___})}.input-new-stage{width:100%;border:none;background:none;display:flex;align-items:center;height:40px;font-weight:600;font-size:16px;color:#000}.input-new-stage::placeholder{color:#8c8c8c;font-weight:400}.input-new-stage:focus{outline:none}.lanes{margin-top:16px}.lane{display:flex;flex-direction:column;gap:8px}.activity{background:#ffffff;box-shadow:0px 1px 2px 0px rgba(0,0,0,0.1);border-radius:8px;padding:12px 14px 10px}.activity .title{font-weight:600;color:#000000;line-height:20px;text-shadow:0px 1px 2px rgba(0,0,0,0.1)}:host(:not([read-only])) .activity{cursor:pointer}.assignee{display:flex;align-items:center;gap:4px;font-size:12px;color:#000000;line-height:17px;margin-top:10px}.assignee-icon{font-size:14px;color:rgba(0,0,0,0.45)}.btn-add-activity{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;height:34px;border:1px dashed rgba(0,0,0,0.1);border-radius:8px;color:rgba(0,0,0,0.45)}.btn-add-activity:hover{background:rgba(0,0,0,0.04);color:rgba(0,0,0,0.65)}.stage-settings{padding:4px;display:flex;flex-direction:column;align-items:stretch;gap:4px}.stage-settings eo-input{margin-bottom:5px}.stage-settings .divider{height:1px;background-color:rgba(0,0,0,0.1)}.stage-settings button{color:var(--color-error);border-radius:6px;padding:5px 8px;font-size:14px;line-height:22px;text-align:left}.stage-settings button:hover{background-color:var(--left-sidebar-item-hover-bg)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}ul{list-style:none;margin:0;padding:0}.link{display:block}.link::part(link){display:flex;align-items:center;gap:16px;padding:12px 24px;color:#262626;background:rgba(255,255,255,0.6);border-radius:8px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.link.actions-active::part(link),\n.link::part(link):hover{background:rgba(0,0,0,0.05);-webkit-backdrop-filter:none;backdrop-filter:none}.item:not(:last-child){margin-bottom:4px}.icon{font-size:18px;margin-right:8px}.title{font-weight:500;font-size:16px}.title,\n.description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.goal{background:#f0fff8;border-radius:4px;font-weight:500;font-size:12px;color:#1dc897;line-height:20px;padding:2px 8px;white-space:nowrap}.goal.global{background:#e6f4ff;color:#1a7aff}.header{display:flex;align-items:center}.description{color:#595959;margin-top:6px;padding-left:28px;line-height:20px}.time{color:rgba(0,0,0,0.45);white-space:nowrap}.main{flex:1;min-width:0}.operations{display:flex;align-items:center;justify-content:right;width:100px}.operations.lang-zh{width:64px}.link.actions-active .time,\n.link:hover .time,\n.link:not(:hover):not(.actions-active) .actions{display:none}.loading{display:flex;align-items:center;justify-content:center;padding:24px;font-size:20px;color:#595959}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../home-container/images/background.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;position:sticky;top:0}:host([hidden]){display:none}:host::before{content:\"\";display:block;position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background-color:rgb(205,206,207);background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-position:center;background-size:cover;background-repeat:no-repeat;background-attachment:fixed;pointer-events:none}:host([variant=\"home\"])::before{background-color:#f1f1f1}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./images/background.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;padding:72px 54px 72px}:host([sticky]){padding-top:0}:host([hidden]){display:none}:host::before{content:\"\";position:fixed;z-index:-1;top:0;right:0;bottom:0;left:0;background-color:#f1f1f1;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-position:center;background-size:cover;background-repeat:no-repeat;background-attachment:fixed}@media (max-width: 719px){:host{padding-left:24px;padding-right:24px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../home-container/images/background.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}:host([with-container]){position:relative;width:100%;height:100%;overflow:hidden;background-color:rgb(205,206,207);background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:cover;background-repeat:no-repeat;background-position:center;background-attachment:fixed;color:#262626;padding:48px 24px;overflow-y:auto}*{box-sizing:border-box}.container{max-width:1400px;margin:0 auto}h1{font-weight:500;margin:0;font-size:20px;line-height:28px;margin-bottom:17px}.list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px}.link{display:block;height:100%}.link::part(link){display:block;height:100%;color:#262626;background:rgba(255,255,255,0.9);box-shadow:0px 2px 5px 0px rgba(0,0,0,0.08);border-radius:12px;padding:20px 26px;box-sizing:border-box}.link:not(.clickable)::part(link){cursor:auto}.clickable::part(link):hover{box-shadow:0px 4px 10px 0px rgba(0,0,0,0.1)}.heading{display:flex;align-items:center}.icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:#ffffff;border-radius:12px;border:1px solid #e8e9ec;font-size:32px;color:#595959;margin-right:16px}.title{font-size:16px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.clickable::part(link):hover .title{color:var(--elevo-color-brand)}.description{margin-top:13px;font-size:13px;color:rgba(0,0,0,0.45);line-height:18px;height:54px;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tags{display:flex;gap:6px;margin:16px 0 -3px}.tag{display:block;background:rgba(0,0,0,0.04);border-radius:4px;font-size:12px;line-height:22px;padding:0 7px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;width:100%}:host([hidden]){display:none}.space-guide-container{display:flex;flex-direction:column;align-items:center;margin:0 auto;padding-top:103px}.guide-header{display:flex;flex-direction:column;align-items:center;text-align:center;margin-bottom:24px}.space-logo{width:64px;height:64px;margin-bottom:24px;background:#2540ff;border-radius:16px;box-shadow:0px 10px 15px -3px rgba(37,64,255,0.2),0px 4px 6px -4px rgba(37,64,255,0.2);display:flex;align-items:center;justify-content:center}.guide-title{font-size:24px;font-weight:600;line-height:32px;color:rgba(0,0,0,0.88);margin:0 0 24px 0;letter-spacing:0.0703px}.guide-description{font-size:16px;line-height:26px;color:rgba(0,0,0,0.65);margin:0;max-width:448px;text-align:center;letter-spacing:-0.3125px}.guide-content{width:100%;max-width:672px;background:rgba(248,250,252,0.5);border-radius:16px;padding:25px;margin-top:24px}.section-title{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500;line-height:20px;color:#0f172b;margin-bottom:16px;letter-spacing:-0.1504px}.section-icon{width:16px;height:16px}.cards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;width:100%}@media (min-width: 640px){.cards-grid{grid-template-columns:repeat(3,1fr)}}.guide-card{height:161px;border-radius:16px;padding:0;overflow:hidden;transition:transform 0.2s ease,box-shadow 0.2s ease;border:1px solid rgba(0,0,0,0.1);background-color:white;background-size:cover;background-repeat:no-repeat;background-position:center;position:relative;cursor:pointer}.guide-card:hover{transform:translateY(-4px);box-shadow:0 8px 24px rgba(0,0,0,0.08)}.card-content{position:relative;z-index:1;height:100%;display:flex;flex-direction:column;padding:16px 15px 15px 15px}.card-icon-container{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;margin-bottom:12px}.card-icon-container.blue{background:rgba(37,64,255,0.1)}.card-icon-container.orange{background:rgba(255,152,0,0.1)}.card-icon-container.green{background:rgba(52,199,89,0.1)}.card-icon{width:16px;height:16px}.card-title{font-size:14px;font-weight:500;line-height:20px;color:rgba(0,0,0,0.88);margin:0 0 8px 0;letter-spacing:-0.1504px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-description{font-size:12px;line-height:18px;color:rgba(0,0,0,0.45);margin:0;flex:1;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;max-height:54px;word-break:break-word}.loading-dots{display:inline-flex;align-items:center;gap:2px}.loading-dots span{width:4px;height:4px;border-radius:50%;background-color:rgba(0,0,0,0.45);animation:loading-dot-blink 1.4s infinite}.loading-dots span:nth-child(1){animation-delay:0s}.loading-dots span:nth-child(2){animation-delay:0.2s}.loading-dots span:nth-child(3){animation-delay:0.4s}@keyframes loading-dot-blink{0%,\n 60%,\n 100%{opacity:0.2}30%{opacity:1}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}button:focus,\ntextarea:focus{outline:none}button{margin:0;padding:0;font:inherit;background:none;border:none}.container{position:relative;background-color:#fff;border:2px solid transparent;border-radius:12px;background-image:linear-gradient(#fff,#fff),linear-gradient(338deg,rgba(198,183,247,1),rgba(157,198,255,1),rgba(153,196,255,1));background-origin:border-box;background-clip:padding-box,border-box;box-shadow:0px 9px 28px 8px rgba(0,0,0,0.05),0px 6px 16px 0px rgba(0,0,0,0.08),0px 3px 6px -4px rgba(0,0,0,0.12);cursor:text}:host([auto-fade]) .container:not(:has(textarea:focus)){background:rgba(255,255,255,0.5);border-color:#99c4ff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.box{display:flex;flex-wrap:wrap;border-radius:10px;padding:8px}.input{position:relative;min-width:0;flex:1}.wrap .input{flex-basis:100%}.input textarea{display:block;width:100%;padding:8px;font:inherit;font-size:16px;line-height:24px;color:var(--antd-input-color);border:none;background:none;height:24px;color:#262626}.input textarea::placeholder{color:#bfbfbf}.toolbar{padding:6px 0 6px 8px;margin-left:auto;display:flex;align-items:center;gap:12px}.btn-send{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--elevo-color-brand);border-radius:8px;color:#fff}.btn-send:disabled{background:rgba(0,0,0,0.15)}.btn-send:not(:disabled){cursor:pointer}.btn-send:not(:disabled):hover{background:#5166ff}.btn-send:not(:disabled):active{background:#1e33cc}.btn-divider{width:1px;height:16px;background:rgba(0,0,0,0.1)}.files.condensed{top:2px;left:8px;right:8px}.mention-overlay{position:absolute;border-radius:4px;pointer-events:none;background:rgba(38,45,65,0.1)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../home-container/images/background.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}:host([with-container]){position:relative;width:100%;height:100%;overflow:hidden;background-color:rgb(205,206,207);background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:cover;background-repeat:no-repeat;background-position:center;background-attachment:fixed;color:#262626;padding:48px 24px;overflow-y:auto}*{box-sizing:border-box}h2{font-weight:500;margin:0;font-size:16px;line-height:22px}.groups,\n.list{list-style:none;margin:0;padding:0}.groups{margin-top:27px}.group + .group{margin-top:32px}.list{margin-top:16px;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px}.link{display:block;height:100%}.link::part(link){display:block;height:100%;color:#262626;background:rgba(255,255,255,0.9);box-shadow:0px 2px 5px 0px rgba(0,0,0,0.08);border-radius:12px;padding:20px 26px;box-sizing:border-box}.link:not(.clickable)::part(link){cursor:auto}.clickable::part(link):hover{box-shadow:0px 4px 10px 0px rgba(0,0,0,0.1)}.heading{display:flex;align-items:center}.avatar{width:48px;height:48px;border-radius:12px;margin-right:16px;background-color:#d5d6e6;display:flex;align-items:center;justify-content:center;font-size:24px;overflow:hidden}.avatar img{width:100%;height:100%}.title{font-size:16px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.clickable::part(link):hover .title{color:var(--elevo-color-brand)}.description{margin-top:13px;font-size:13px;color:rgba(0,0,0,0.45);line-height:18px;height:54px;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.sticky-tabs{margin:0 -24px;padding:0 24px 10px}.non-sticky-tabs{padding:0 0 10px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n"],"names":["initializeI18n","NS","locales","defineElement","property","event","method","createDecorators","ForwardedCruiseCanvasComponent","forwardRef","CruiseCanvasComponent","_CruiseCanvas","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_T","_U","_V","_CruiseCanvas_brand","WeakSet","_onShare","_W","_onTerminate","_X","_onSubmitFeedback","_Y","_onFeedbackOnView","_Z","_onSwitchToChat","_a","_onDetailChange","_ref","CruiseCanvas","ReactNextElement","constructor","arguments","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_initProto","_init_conversationId","_init_extra_conversationId","_init_initialRequest","_init_extra_initialRequest","_init_replay","_init_extra_replay","_init_replayDelay","_init_extra_replayDelay","_init_supports","_init_extra_supports","_init_showHiddenJobs","_init_extra_showHiddenJobs","_init_showHumanActions","_init_extra_showHumanActions","_init_showFeedback","_init_extra_showFeedback","_init_showFeedbackAfterFailed","_init_extra_showFeedbackAfterFailed","_init_showFeedbackOnView","_init_extra_showFeedbackOnView","_init_showUiSwitch","_init_extra_showUiSwitch","_init_hideMermaid","_init_extra_hideMermaid","_init_showJsxEditor","_init_extra_showJsxEditor","_init_previewUrlTemplate","_init_extra_previewUrlTemplate","_init_showCases","_init_extra_showCases","_init_exampleProjects","_init_extra_exampleProjects","_init_tryItOutUrl","_init_extra_tryItOutUrl","_init_separateInstructions","_init_extra_separateInstructions","_init_aiEmployees","_init_extra_aiEmployees","_init_commands","_init_extra_commands","_init_uploadOptions","_init_extra_uploadOptions","_init_shareEvent","_init_extra_shareEvent","_classPrivateGetter","this","_get_shareEvent","emit","_init_terminateEvent","_init_extra_terminateEvent","_get_terminateEvent","_init_feedbackSubmitEvent","_init_extra_feedbackSubmitEvent","detail","_get_feedbackSubmitEvent","_init_feedbackOnViewEvent","_init_extra_feedbackOnViewEvent","viewId","_get_feedbackOnViewEvent","_init_switch","_init_extra_switch","_get_switch","_init_detailChange","_init_extra_detailChange","_get_detailChange","createRef","conversationId","_classPrivateFieldGet","v","_classPrivateFieldSet","initialRequest","replay","replayDelay","supports","showHiddenJobs","showHumanActions","showFeedback","showFeedbackAfterFailed","showFeedbackOnView","showUiSwitch","hideMermaid","showJsxEditor","previewUrlTemplate","showCases","exampleProjects","tryItOutUrl","separateInstructions","aiEmployees","commands","uploadOptions","resumed","_classPrivateFieldGet2","_classPrivateFieldGet3","current","call","feedbackSubmitDone","_classPrivateFieldGet4","feedbackSubmitFailed","_classPrivateFieldGet5","feedbackOnViewDone","_classPrivateFieldGet6","render","React","onShare","onTerminate","onSubmitFeedback","onSwitchToChat","onFeedbackOnView","onDetailChange","ref","_CruiseCanvas2","e","_set_shareEvent","_set_terminateEvent","_set_feedbackSubmitEvent","_set_feedbackOnViewEvent","_set_switch","_set_detailChange","c","_initClass","_applyDecs","shadowOptions","attribute","type","Boolean","Number","o","_","has","_checkInRHS","K","en","ASK_ANY_THING","COMMON_TASKS","COMMAND_TIPS","SEARCH_COMMANDS_TIPS","zh","t","i18n","getFixedT","chatCommand","setChatCommand","command","customElements","define","createProviderClass","chatEmployee","setChatMentionedEmployee","chatMentionedEmployee","WrappedIcon","wrapBrick","WrappedActions","onActionClick","onItemDragEnd","onItemDragStart","ChatBoxComponent","LegacyChatBoxComponent","_ChatBox","_ChatBox_brand","_handleMessageSubmit","_handleChatSubmit","ChatBox","_defineProperty","_init_disabled","_init_extra_disabled","_init_placeholder","_init_extra_placeholder","_init_autoFocus","_init_extra_autoFocus","_init_messageSubmit","_init_extra_messageSubmit","value","_get_messageSubmit","_init_chatSubmit","_init_extra_chatSubmit","payload","_get_chatSubmit","disabled","placeholder","autoFocus","setValue","_this$ref$current","getValue","_this$ref$current2","focusOnInput","_this$ref$current3","onMessageSubmit","onChatSubmit","root","containerRef","useRef","uploadEnabled","enabled","uploadAccept","accept","files","resetFiles","appendFiles","removeFile","hasFiles","allFilesDone","fileInfos","exceeded","paste","useFilesUploading","useEffect","textareaRef","valueRef","selectionRef","mentioned","mentionedText","mentionPopover","mentionOverlay","mentionActiveKeys","setInitialMention","handleMention","commandText","commandPrefix","commandPopover","commandOverlay","commandActiveKeys","setInitialCommand","handleSelectCommand","handleChange","handleKeyDown","useChatCompletions","employee","employeeId","store","window","__elevo_try_it_out","content","cmd","getInitialContent","slice","mentionedAiEmployeeId","useImperativeHandle","_textareaRef$current","focus","sendDisabled","length","doSubmit","useCallback","aiEmployeeId","handleSubmit","currentTarget","handleSubmitClick","Promise","resolve","then","_textareaRef$current2","uploadButtonRef","onFilesDropped","_textareaRef$current3","className","TextareaAutoResize","minRows","paddingSize","autoResize","submitWhen","desiredSelectionRef","onSubmit","onChange","onKeyDown","onPaste","style","paddingTop","UploadedFiles","onRemove","uid","abortController","abort","onAdd","_uploadButtonRef$curr","requestUpload","name","UploadButton","_textareaRef$current4","onClick","lib","prefix","icon","map","overlay","index","key","createPortal","actions","activeKeys","footerTips","document","body","count","GlobalDragOverlay","_ChatBox2","_set_messageSubmit","_set_chatSubmit","styleTexts","styleText","UploadedFilesStyleText","delegatesFocus","_HomeContainer","HomeContainer","_init_sticky","_init_extra_sticky","sticky","HomeContainerComponent","_HomeContainer2","WrappedMiniLineChart","_StatWithMiniChart","StatWithMiniChart","_init_label","_init_extra_label","_init_value","_init_extra_value","_init_size","_init_extra_size","_init_lineColor","_init_extra_lineColor","_init_showArea","_init_extra_showArea","_init_min","_init_extra_min","_init_max","_init_extra_max","_init_xField","_init_extra_xField","_init_yField","_init_extra_yField","_init_data","_init_extra_data","label","size","lineColor","showArea","min","max","xField","yField","data","StatWithMiniChartComponent","chartProps","_extends","lineWidth","width","height","_StatWithMiniChart2","SIDEBAR_ICON","WrappedElevoLogo","ElevoSidebarComponent","LegacyElevoSidebarComponent","_ElevoSidebar","_ElevoSidebar_brand","_handleLogout","_handleActionClick","_handleProjectActionClick","_handleAddProject","_handleAddServiceflow","_handlePersonalActionClick","ElevoSidebar","_init_userInstanceId","_init_extra_userInstanceId","_init_behavior","_init_extra_behavior","_init_logoUrl","_init_extra_logoUrl","_init_newChatUrl","_init_extra_newChatUrl","_init_newChatLinkWhenCollapsed","_init_extra_newChatLinkWhenCollapsed","_init_historyUrlTemplate","_init_extra_historyUrlTemplate","_init_historyActions","_init_extra_historyActions","_init_showProjects","_init_extra_showProjects","_init_projectUrlTemplate","_init_extra_projectUrlTemplate","_init_projectActions","_init_extra_projectActions","_init_personalActions","_init_extra_personalActions","_init_links","_init_extra_links","_init_canAddProject","_init_extra_canAddProject","_init_myLinks","_init_extra_myLinks","_init_scope","_init_extra_scope","_init_spaceNav","_init_extra_spaceNav","_init_logout","_init_extra_logout","_get_logout","_init_actionClick","_init_extra_actionClick","_get_actionClick","_init_projectActionClick","_init_extra_projectActionClick","_get_projectActionClick","_init_addProject","_init_extra_addProject","_get_addProject","_init_addServiceflow","_init_extra_addServiceflow","_get_addServiceflow","_init_personalActionClick","_init_extra_personalActionClick","_get_personalActionClick","userInstanceId","behavior","logoUrl","newChatUrl","newChatLinkWhenCollapsed","historyUrlTemplate","historyActions","showProjects","projectUrlTemplate","projectActions","personalActions","links","canAddProject","myLinks","scope","spaceNav","pullHistory","delay","setTimeout","pull","open","close","removeProject","projectId","addProject","project","_classPrivateFieldGet7","_classPrivateFieldGet8","moveConversation","_classPrivateFieldGet9","_classPrivateFieldGet0","onLogout","onProjectActionClick","onAddProject","onAddServiceflow","onPersonalActionClick","_ref2","collapsed","setCollapsed","useState","handleCollapse","handleExpand","handleClickMask","handleHistoryClick","dropdownActions","useMemo","text","LOGOUT","SWITCH_LANGUAGE","historyRef","_historyRef$current","_historyRef$current2","_historyRef$current2$","_historyRef$current3","_historyRef$current3$","_historyRef$current4","_historyRef$current4$","classNames","WrappedIconButton","variant","WrappedLink","url","NEW_CHAT","SpaceNav","link","NavLink","activeIncludes","_ref3","active","title","ChatHistory","onHistoryClick","WrappedDropdownActions","themeVariant","async","action","changeLanguage","language","split","getHistory","reload","WrappedEasyopsAvatar","nameOrInstanceId","showName","_ElevoSidebar2","_set_logout","_set_actionClick","_set_projectActionClick","_set_addProject","_set_addServiceflow","_set_personalActionClick","useHasAssignedNodes","slotRef","hasAssignedNodes","setHasAssignedNodes","slotElement","listener","assignedNodes","addEventListener","removeEventListener","WrappedTooltip","_IconButton","IconButton","_init_icon","_init_extra_icon","_init_tooltip","_init_extra_tooltip","_init_tooltipHoist","_init_extra_tooltipHoist","_init_active","_init_extra_active","_init_variant","_init_extra_variant","_init_reduceIconSize","_init_extra_reduceIconSize","tooltip","tooltipHoist","reduceIconSize","IconButtonComponent","hasSlotted","btn","hoist","_IconButton2","ALL","EXPLORE_EXCELLENT_CASES","WrappedShowCase","WrappedTabList","onTabClick","_ShowCases","ShowCases","_init_list","_init_extra_list","_init_limit","_init_extra_limit","list","limit","ShowCasesComponent","groups","Set","item","scenario","filter","activeGroup","setActiveGroup","filteredList","filtered","tabs","group","id","activeTab","caseTitle","summary","_ShowCases2","MCP_HUB","SERVER_cmdb","SERVER_cmdb_product_helper","SERVER_alert","SERVER_web_builder","SERVER_web_builder2","SERVER_host_troubleshooting","SERVER_system_inspection","SERVER_grafana","SERVER_kubernetes","SERVER_llm","DEFAULT_TOOL_ICON","PLATFORM_CONFIG","Map","servers","WrappedStickyContainer","_McpTools","McpTools","_init_stickyTop","_init_extra_stickyTop","stickyTop","McpToolsComponent","groupMap","platformMap","forEach","groupName","server","replaceAll","get","set","push","platform","entries","find","_name","includes","platformName","orderedNames","sort","_ref4","nameA","nameB","indexA","indexOf","indexB","platforms","keys","names","a","b","aIndex","bIndex","activePlatform","setActivePlatform","filteredGroups","groupedList","platformGroups","_ref5","tabsNode","top","_ref6","items","_item$icon","fallback","description","_McpTools2","ForwardedChatStreamComponent","ChatStreamComponent","_ChatStream","_ChatStream_brand","_onSwitchToCanvas","_onSplitChange","ChatStream","_init_splitChange","_init_extra_splitChange","splitted","_get_splitChange","onSwitchToCanvas","onSplitChange","_ChatStream2","_set_splitChange","AI_EMPLOYEES","UNTITLED","_AIEmployees","AIEmployees","_init_industries","_init_extra_industries","_init_urlTemplate","_init_extra_urlTemplate","industries","urlTemplate","AIEmployeesComponent","_industries","industry","activeIndustry","setActiveIndustry","array","role","clickable","parseTemplate","avatar","src","_AIEmployees2","AGENTS","_AIAgents","AIAgents","_init_withContainer","_init_extra_withContainer","withContainer","AIAgentsComponent","node","_item$tags","tags","tag","tagIndex","_AIAgents2","_PageContainer","PageContainer","_init_pageTitle","_init_extra_pageTitle","_init_breadcrumbs","_init_extra_breadcrumbs","pageTitle","breadcrumbs","PageContainerComponent","getRuntime","applyPageTitle","header","_PageContainer2","_TabList","_TabList_brand","_handleTabClick","TabList","_init_tabs","_init_extra_tabs","_init_activeTab","_init_extra_activeTab","_init_tabClick","_init_extra_tabClick","tab","_get_tabClick","TabListComponent","part","_TabList2","_set_tabClick","PLEASE_SELECT","SEARCH_PLACEHOLDER","SEARCH_NO_DATA","WrappedPopover","onVisibleChange","onBeforeVisibleChange","WrappedLoadingContainer","WrappedMenu","WrappedMenuItem","WrappedInput","onValueChange","_DropdownSelect","_DropdownSelect_brand","_handleChange","DropdownSelect","_init_options","_init_extra_options","_init_labelMaxWidth","_init_extra_labelMaxWidth","_init_loading","_init_extra_loading","_init_searchPlaceholder","_init_extra_searchPlaceholder","_init_dropdownContentStyle","_init_extra_dropdownContentStyle","_init_dropdownMaxWidth","_init_extra_dropdownMaxWidth","_init_showSearch","_init_extra_showSearch","_init_changeEvent","_init_extra_changeEvent","option","_get_changeEvent","options","labelMaxWidth","loading","searchPlaceholder","dropdownContentStyle","dropdownMaxWidth","showSearch","DropdownSelectComponent","_value","_options","setOpen","q","setQ","setOptions","activeOption","opt","filteredOptions","ops","toLowerCase","handleBeforeVisibleChange","handleSearchChange","debounce","evt","placement","trigger","arrow","distance","slot","maxWidth","undefined","preventDefault","stopPropagation","_DropdownSelect2","_set_changeEvent","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","WrappedPageTitle","WrappedMainView","WrappedNarrowView","_PreviewContainer","_rootId","PreviewContainer","_init_source","_init_extra_source","_init_url","_init_extra_url","uniqueId","source","Suspense","spinning","styles","PreviewContainerComponent","rootId","parsedResultPromise","worker","getRemoteTsxParserWorker","parseView","parse","catch","error","console","parsedResult","use","convertedResultPromise","convertView","expanded","convertedResult","viewTitle","_parsedResult$entry","entry","defaultExport","RenderComponent","rootRef","container","portal","unstable_createRoot","supportsUseChildren","unmount","remove","_rootRef$current","brick","context","functions","templates","main","_PreviewContainer2","WrapperIcon","WrapperButton","_ActionButtons","_ActionButtons_brand","ActionButtons","_init_items","_init_extra_items","_init_activeKey","_init_extra_activeKey","_init_change","_init_extra_change","activeKey","_get_change","ActionButtonsComponent","propActiveKey","setActiveKey","initializedRef","_items$find","hidden","filteredItems","_ActionButtons2","_set_change","UN_START_STATUS","RUNNING_STATUS","COMPLETED_STATUS","_supports","WrappedButton","iconMap","ready","working","completed","iconActions","category","GoalCardItem","goalItem","idWidth","cardStyle","onStatusChange","onTitleChange","onNewChat","onAppendChild","onRevokeAppendChild","isActive","state","serialNumber","conversations","owner","pending","compositionRef","handleCompositionStart","handleCompositionEnd","editing","setEditing","handleFocus","handleBlur","textContent","trim","blur","titleRef","_titleRef$current","paddingLeft","level","onFocus","onBlur","onCompositionStart","onCompositionEnd","contentEditable","editable","div","createElement","setAttribute","supportsContentEditablePlaintextOnly","suppressContentEditableWarning","instanceId","GoalCardListComponent","LegacyGoalCardListComponent","_GoalCardList","_GoalCardList_brand","_handleItemClick","_handleItemStatusChange","_handleTitleChange","_handleNewChat","GoalCardList","_init_goalList","_init_extra_goalList","_init_cardStyle","_init_extra_cardStyle","_init_itemClickEvent","_init_extra_itemClickEvent","_get_itemClickEvent","_init_itemStatusChangeEvent","_init_extra_itemStatusChangeEvent","_get_itemStatusChangeEvent","_init_itemTitleChangeEvent","_init_extra_itemTitleChangeEvent","_get_itemTitleChangeEvent","_init_itemNewChatEvent","_init_extra_itemNewChatEvent","_get_itemNewChatEvent","goalList","appendChildDone","pendingId","newItem","onItemClick","_goalList","setGoalList","updateGoalItem","field","callback","updatedItem","prevList","goal","_goalList$reduce","reduce","Math","toString","handleTitleChange","newTitle","handleStatusChange","newStatus","newChild","pendingParentId","_prevList$findIndex","findIndex","offsetIndex","handleAppendChild","_GoalCardList2","_set_itemClickEvent","_set_itemStatusChangeEvent","_set_itemTitleChangeEvent","_set_itemNewChatEvent","CardItemStyleText","PROJECT_OVERALL","WrappedAvatar","WrappedMiniActions","_ProjectConversations","_ProjectConversations_brand","_handleGoalClick","ProjectConversations","_init_actions","_init_extra_actions","_init_goals","_init_extra_goals","_init_goalClick","_init_extra_goalClick","conversation","_get_goalClick","goals","ProjectConversationsComponent","onGoalClick","ConversationLink","_goals$find","goalRef","el","handleClick","actionsVisible","setActionsVisible","global","goalInstanceId","g","username","humanizeTime","startTime","HumanizeTimeFormat","full","relative","_ProjectConversations2","_set_goalClick","_ProjectKnowledges","_ProjectKnowledges_brand","ProjectKnowledges","_init_itemClick","_init_extra_itemClick","_get_itemClick","ProjectKnowledgesComponent","KnowledgeLink","knowledge","time","user","_ProjectKnowledges2","_set_itemClick","STARTED_A_CHAT","CREATED_THIS_GOAL","CHANGED_THE_GOAL_TITLE","CHANGED_THE_GOAL_DESCRIPTION","CHANGED_THE_GOAL","DELETED_THIS_GOAL","DECOMPOSED_THIS_GOAL","DECOMPOSED_THIS_GOAL_plural","SET_OWNER","REMOVED_GOAL_PARTICIPANTS","REMOVED_GOAL_PARTICIPANTS_plural","ADDED_GOAL_PARTICIPANTS","ADDED_GOAL_PARTICIPANTS_plural","COMMENTED","COMMA","SEMICOLON","_ActivityTimeline","ActivityTimeline","_init_chatUrlTemplate","_init_extra_chatUrlTemplate","chatUrlTemplate","ActivityTimelineComponent","activity","_activity$metadata","_activity$metadata2","user_id","user_name","action_type","target","metadata","conversation_title","after","sub_goals_count","sub_goals","join","removed","added","beforeUserIds","before","users","afterUserIds","descriptions","getAlterPARTICIPANTsActivityDescription","comment_content","_ActivityTimeline2","TERMINATE_THE_TASK","ICON_LOADING","ICON_STOP","ChatInputComponent","LegacyChatInputComponent","_ChatInput","_ChatInput_brand","_handleTerminate","ChatInput","_init_submitDisabled","_init_extra_submitDisabled","_init_supportsTerminate","_init_extra_supportsTerminate","_init_terminating","_init_extra_terminating","_init_autoFade","_init_extra_autoFade","_init_suggestionsPlacement","_init_extra_suggestionsPlacement","_init_terminate","_init_extra_terminate","_get_terminate","submitDisabled","supportsTerminate","terminating","autoFade","suggestionsPlacement","wrap","setWrap","observer","ResizeObserver","contentBoxSize","blockSize","contentRect","observe","disconnect","handleContainerClick","nativeEvent","composedPath","HTMLTextAreaElement","HTMLButtonElement","maxRows","borderSize","MAX_SHOWN_COMMANDS","_textareaRef$current5","dragDisabled","_ChatInput2","_set_terminate","_ElevoLogo","ElevoLogo","alt","Logo","_ElevoLogo2","WATCH_REPLAY","bgClasses","_ShowCase","ShowCase","_init_caseTitle","_init_extra_caseTitle","_init_summary","_init_extra_summary","ShowCaseComponent","bgClass","hash","i","charCodeAt","abs","_ShowCase2","tool","params","http","post","stepId","_BlankState","BlankState","_init_illustration","_init_extra_illustration","_init_description","_init_extra_description","illustration","BlankStateComponent","getIllustrationSrc","imageGoals","imageSpaces","imageServiceflows","imageActivities","_BlankState2","_StickyContainer","StickyContainer","StickyContainerComponent","_StickyContainer2","_ElevoCard","ElevoCard","_init_cardTitle","_init_extra_cardTitle","_init_avatar","_init_extra_avatar","_init_avatarType","_init_extra_avatarType","cardTitle","avatarType","ElevoCardComponent","footerRef","hasFooter","actionsRef","hasActions","IconAvatar","color","iconProps","borderColor","_ElevoCard2","dpr","devicePixelRatio","TAB_HEIGHT","BORDER_RADIUS","slopeAngle","PI","deltaY","sin","deltaX","cos","slopeWidth","tan","offsetX","_FlowTabs","_FlowTabs_brand","FlowTabs","FlowTabsComponent","bgRef","tabsRef","canvas","nav","ctx","getContext","rootSize","requestId","getContentBoxSize","tabElements","Array","from","querySelectorAll","activeTabElement","classList","contains","tabWidth","getBoundingClientRect","isFirstTab","tabOffset","tabsOffset","left","activeTabOffset","cancelAnimationFrame","requestAnimationFrame","scale","clearRect","fillStyle","borderGradient","createLinearGradient","addColorStop","strokeStyle","actualWidth","actualHeight","translate","beginPath","moveTo","arcTo","upStartX","lineTo","arc","downStartX","closePath","fill","stroke","drawBg","boxSizeType","_FlowTabs2","ADD_STAGE","PLEASE_ENTER_NAME","UNASSIGNED","DELETE_STAGE","DELETE_STAGE_TIPS","DELETE","ADD_ACTIVITY","STAGE_NAME_EXISTS","ACTIVITY_NAME_EXISTS","showDialog","unwrapProvider","StageFlowComponent","LegacyStageFlowComponent","_StageFlow","_StageFlow_brand","_handleAddActivity","_handleEditActivity","StageFlow","_init_spec","_init_extra_spec","_init_readOnly","_init_extra_readOnly","spec","_init_addActivity","_init_extra_addActivity","stage","_get_addActivity","_init_editActivity","_init_extra_editActivity","_get_editActivity","readOnly","addActivity","editActivity","activityIndex","deleteActivity","onAddActivity","onEditActivity","stages","setStages","addingStage","setAddingStage","initialRef","getAIEmployeeName","prev","_updatedStage$service","stageIndex","s","updatedStage","prevActivities","serviceFlowActivities","updatedActivities","newStages","_updatedStage$service2","_updatedStage$service3","splice","StageNavItem","otherStageNames","onNameChange","newName","updatedStages","onDelete","StageNameInput","onDone","stageName","_stage$serviceFlowAct","popoverRef","sync","newValue","_StageFlow2","_set_addActivity","_set_editActivity","props","xmlns","viewBox","fillRule","d","strokeLinecap","_RunningFlow","_RunningFlow_brand","_handleActivityClick","RunningFlow","_init_activityClick","_init_extra_activityClick","activityId","_classPrivateGetter2","_get_activityClick","RunningFlowComponent","onActivityClick","StageIcon","getActivityStateClassName","taskId","getFlowOrActivityIcon","endTime","Duration","end","setEnd","countTime","setEndTime","Date","now","interval","setInterval","clearInterval","duration","ceilDuration","ceil","minutes","floor","seconds","String","padStart","formatDuration","_RunningFlow2","_set_activityClick","MESSAGE_LIST","NO_NEW_MESSAGE","MARK_ALL_READ","ENTER_MESSAGE_CENTER","WrapperCounterBadge","WrapperIconButton","_NoticeDropdown","_NoticeDropdown_brand","_handleNoticeClick","_handleMarkAllRead","NoticeDropdown","_init_dataSource","_init_extra_dataSource","_init_popoverPlacement","_init_extra_popoverPlacement","_init_emptyText","_init_extra_emptyText","_init_notifyCenterUrl","_init_extra_notifyCenterUrl","_init_urlTarget","_init_extra_urlTarget","_init_hideNotifyCenterButton","_init_extra_hideNotifyCenterButton","_init_noticeClickEvent","_init_extra_noticeClickEvent","_init_markAllReadEvent","_init_extra_markAllReadEvent","_get_noticeClickEvent","_get_markAllReadEvent","dataSource","popoverPlacement","emptyText","notifyCenterUrl","urlTarget","hideNotifyCenterButton","NoticeDropdownComponent","onNoticeClick","onMarkAllRead","_dataSource$length","handleClose","handleNoticeItemClick","handleMarkAllReadClick","handleClickOutside","_event$composedPath","some","element","HTMLElement","showZero","dot","offset","_item$url","imgSrc","getNotifyIcon","keepSvgOriginalColor","href","projectNotifySvg","accountNotifySvg","systemNotifySvg","spaceNotifySvg","_NoticeDropdown2","_set_noticeClickEvent","_set_markAllReadEvent","MARK_READ","NO_MESSAGE","WrappedCheckbox","onValuesChange","_NoticeList","_NoticeList_brand","_handleMarkItemsRead","NoticeList","_init_selectedIds","_init_extra_selectedIds","_init_markItemsReadEvent","_init_extra_markItemsReadEvent","_get_markItemsReadEvent","selectedIds","NoticeListComponent","onMarkItemsRead","_selectedIds","setSelectedIds","currentAllIds","isRead","isAllSelected","every","handleSelectAll","checked","newSelectedIds","handleSelectItem","selectedId","_e$detail","NoticeListItem","selected","onSelectItem","checkboxRef","_e$detail2","_NoticeList2","_set_markItemsReadEvent","WrappedModal","onClose","onConfirm","onCancel","onOpen","ChatPanelComponent","LegacyChatPanelComponent","_ChatPanel","ChatPanel","_init_panelTitle","_init_extra_panelTitle","_init_aiEmployeeId","_init_extra_aiEmployeeId","_init_cmd","_init_extra_cmd","_init_width","_init_extra_width","_init_height","_init_extra_height","_init_help","_init_extra_help","_init_maskClosable","_init_extra_maskClosable","panelTitle","help","maskClosable","setInputValue","send","showFile","file","modalRef","contentRef","setSubmitDisabled","setConversationId","setInitialRequest","handleChatSubmit","handleHttpError","_modalRef$current","_modalRef$current2","_contentRef$current","_contentRef$current2","modalTitle","noFooter","headerBordered","fullscreenButton","background","backgroundImage","_contentRef$current3","ChatPanelContent","fromModal","_ChatPanel2","_SpaceLogo","SpaceLogo","SpaceLogoComponent","iconSize","round","borderRadius","spaceLogoSvg","_SpaceLogo2","_ChatPanelWelcome","ChatPanelWelcome","_init_text","_init_extra_text","ChatPanelWelcomeComponent","_ChatPanelWelcome2","strokeLinejoin","strokeWidth","clipPath","x1","x2","y1","y2","gradientUnits","stopColor","WrappedSpaceLogo","SpaceGuide","spaceDetail","onCardClick","generateSpaceSummary","spaceCapabilities","setSpaceCapabilities","setLoading","cards","layerSvg","layerBg","SPACE_GUIDE_CARD_1_TITLE","iconContainerColor","lightningSvg","lightningBg","SPACE_GUIDE_CARD_2_TITLE","bookSvg","bookBg","SPACE_GUIDE_CARD_3_TITLE","res","spaceId","interceptorParams","ignoreLoadingBar","ElevoSpaceApi_generateSpaceCapabilities","forceRefresh","fetchSpaceCapabilities","MagicSvg","SPACE_GUIDE_SECTION_TITLE","card","handleCardClick","_SpaceChatGuide","SpaceChatGuide","_init_spaceDetail","_init_extra_spaceDetail","_SpaceChatGuide2","ChatStreamNS","ChatStreamLocales","_SpaceWorkbench","_SpaceWorkbench_brand","SpaceWorkbench","_init_notices","_init_extra_notices","_init_knowledges","_init_extra_knowledges","_init__goBackEvent","_init_extra__goBackEvent","_init__membersClickEvent","_init_extra__membersClickEvent","_init__noticeClickEvent","_init_extra__noticeClickEvent","_init__markAllReadEvent","_init_extra__markAllReadEvent","_init__spaceEditEvent","_init_extra__spaceEditEvent","_init__knowledgeClickEvent","_init_extra__knowledgeClickEvent","_init__knowledgeAddEvent","_init_extra__knowledgeAddEvent","notices","knowledges","SpaceWorkbenchComponent","onBack","_get__goBackEvent","onMembersClick","_get__membersClickEvent","notice","_get__noticeClickEvent","_get__markAllReadEvent","onSpaceEdit","_get__spaceEditEvent","onKnowledgeClick","_get__knowledgeClickEvent","onKnowledgeAdd","_get__knowledgeAddEvent","currentView","setCurrentView","selectedInstance","setSelectedInstance","selectedBusinessObject","setSelectedBusinessObject","instanceUpdateTrigger","setInstanceUpdateTrigger","businessFlows","setBusinessFlows","chatAreaRef","handleInstanceClick","instance","businessObject","handleCloseInstanceDetail","handleNewConversation","_chatAreaRef$current","addNewSession","handleInstanceUpdate","updatedInstance","objectId","updatedData","timestamp","handleFlowClick","flow","_chatAreaRef$current2","message","INITIATING_SERVICE_FLOW","sendMessage","ElevoSpaceApi_listServiceFlow","page","pageSize","fetchBusinessFlows","WorkbenchContext","Provider","spaceWorkbenchContainer","spaceWorkbenchContent","SpaceSidebar","knowledgeList","onInstanceClick","ChatArea","ServiceFlows","onFlowClick","InstDetailManagement","onNewConversation","onInstanceUpdate","_SpaceWorkbench2","_set__goBackEvent","_set__membersClickEvent","_set__noticeClickEvent","_set__markAllReadEvent","_set__spaceEditEvent","_set__knowledgeClickEvent","_set__knowledgeAddEvent","___CSS_LOADER_EXPORT___","module","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___"],"sourceRoot":""}
1
+ {"version":3,"file":"chunks/7669.6f177bf2.js","mappings":"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","sources":["webpack:///./src/cruise-canvas/index.tsx","webpack:///./src/chat-box/i18n.ts","webpack:///./src/data-providers/set-chat-command.ts","webpack:///./src/data-providers/set-chat-mentioned-employee.ts","webpack:///./src/chat-box/bricks.ts","webpack:///./src/chat-box/index.tsx","webpack:///./src/home-container/index.tsx","webpack:///./src/stat-with-mini-chart/index.tsx","webpack:///./src/elevo-sidebar/index.tsx","webpack:///../../src/useHasAssignedNodes.ts","webpack:///./src/icon-button/index.tsx","webpack:///./src/show-cases/i18n.ts","webpack:///./src/show-cases/index.tsx","webpack:///./src/mcp-tools/i18n.ts","webpack:///./src/mcp-tools/index.tsx","webpack:///./src/chat-stream/index.tsx","webpack:///./src/ai-employees/i18n.ts","webpack:///./src/ai-employees/index.tsx","webpack:///./src/ai-agents/i18n.ts","webpack:///./src/ai-agents/index.tsx","webpack:///./src/data-providers/request-store.ts","webpack:///./src/page-container/index.tsx","webpack:///./src/tab-list/index.tsx","webpack:///./src/dropdown-select/i18n.ts","webpack:///./src/dropdown-select/index.tsx","webpack:///./src/preview-container/i18n.ts","webpack:///./src/preview-container/styles.module.css?836e","webpack:///./src/preview-container/index.tsx","webpack:///./src/action-buttons/i18n.ts","webpack:///./src/action-buttons/index.tsx","webpack:///./src/goal-card-list/i18n.ts","webpack:///./src/shared/getContentEditable.ts","webpack:///./src/goal-card-list/CardItem/CardItem.tsx","webpack:///./src/goal-card-list/index.tsx","webpack:///./src/project-conversations/i18n.ts","webpack:///./src/project-conversations/index.tsx","webpack:///./src/project-knowledges/index.tsx","webpack:///./src/activity-timeline/i18n.ts","webpack:///./src/activity-timeline/index.tsx","webpack:///./src/chat-input/i18n.ts","webpack:///./src/chat-input/index.tsx","webpack:///./src/elevo-logo/index.tsx","webpack:///./src/show-case/i18n.ts","webpack:///./src/show-case/index.tsx","webpack:///./src/data-providers/call-tool.ts","webpack:///./src/blank-state/index.tsx","webpack:///./src/sticky-container/index.tsx","webpack:///./src/elevo-card/index.tsx","webpack:///./src/flow-tabs/drawBg.ts","webpack:///./src/flow-tabs/index.tsx","webpack:///./src/stage-flow/i18n.ts","webpack:///./src/stage-flow/index.tsx","webpack:///./src/running-flow/images/stage.svg","webpack:///./src/running-flow/index.tsx","webpack:///./src/running-flow/formatDuration.ts","webpack:///./src/notice-dropdown/i18n.ts","webpack:///./src/notice-dropdown/index.tsx","webpack:///./src/notice-list/i18n.ts","webpack:///./src/notice-list/index.tsx","webpack:///./src/chat-panel/index.tsx","webpack:///./src/space-workbench/space-logo/index.tsx","webpack:///./src/space-workbench/chat-panel-welcome/i18n.ts","webpack:///./src/space-workbench/chat-panel-welcome/index.tsx","webpack:///./src/space-workbench/space-chat-guide/i18n.ts","webpack:///./src/space-workbench/images/magic.svg","webpack:///./src/space-workbench/space-chat-guide/SpaceGuide.tsx","webpack:///../../node_modules/@next-api-sdk/llm-sdk/dist/esm/api/llm/elevo_space/generateSpaceCapabilities.js","webpack:///./src/space-workbench/space-chat-guide/index.tsx","webpack:///./src/space-workbench/index.tsx","webpack:///./src/stat-with-mini-chart/styles.shadow.css","webpack:///./src/notice-dropdown/styles.shadow.css","webpack:///./src/goal-card-list/styles.shadow.css","webpack:///./src/action-buttons/styles.shadow.css","webpack:///./src/activity-timeline/styles.shadow.css","webpack:///./src/elevo-card/styles.shadow.css","webpack:///./src/blank-state/styles.shadow.css","webpack:///./src/tab-list/styles.shadow.css","webpack:///./src/space-workbench/space-logo/styles.shadow.css","webpack:///./src/notice-list/styles.shadow.css","webpack:///./src/space-workbench/chat-panel-welcome/styles.shadow.css","webpack:///./src/project-knowledges/styles.shadow.css","webpack:///./src/flow-tabs/styles.shadow.css","webpack:///./src/elevo-logo/styles.shadow.css","webpack:///./src/mcp-tools/styles.shadow.css","webpack:///./src/dropdown-select/styles.shadow.css","webpack:///./src/show-cases/styles.shadow.css","webpack:///./src/show-case/styles.shadow.css","webpack:///./src/goal-card-list/CardItem/CardItem.shadow.css","webpack:///./src/chat-box/styles.shadow.css","webpack:///./src/icon-button/styles.shadow.css","webpack:///./src/page-container/styles.shadow.css","webpack:///./src/preview-container/styles.module.css","webpack:///./src/running-flow/styles.shadow.css","webpack:///./src/stage-flow/styles.shadow.css","webpack:///./src/project-conversations/styles.shadow.css","webpack:///./src/sticky-container/styles.shadow.css","webpack:///./src/home-container/styles.shadow.css","webpack:///./src/ai-agents/styles.shadow.css","webpack:///./src/space-workbench/space-chat-guide/styles.shadow.css","webpack:///./src/chat-input/styles.shadow.css","webpack:///./src/ai-employees/styles.shadow.css"],"sourcesContent":["// istanbul ignore file: experimental\nimport React, { createRef, forwardRef } from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { NS, locales } from \"./i18n.js\";\nimport type { FeedbackDetail } from \"./interfaces.js\";\nimport { CruiseCanvasComponent, type CruiseCanvasRef } from \"./CruiseCanvas.js\";\nimport type {\n ExampleProject,\n RequestStore,\n ShowCaseType,\n UploadOptions,\n} from \"../shared/interfaces.js\";\nimport type {\n AIEmployee,\n Command,\n} from \"../shared/ChatCompletions/useChatCompletions.js\";\n\nexport type * from \"./interfaces.js\";\n\ninitializeI18n(NS, locales);\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport interface CruiseCanvasProps {\n conversationId?: string;\n initialRequest?: RequestStore | null;\n replay?: boolean;\n replayDelay?: number;\n supports?: Record<string, boolean>;\n showHiddenJobs?: boolean;\n showHumanActions?: boolean;\n showFeedback?: boolean;\n showFeedbackAfterFailed?: boolean;\n showUiSwitch?: boolean;\n showFeedbackOnView?: boolean;\n showJsxEditor?: boolean;\n previewUrlTemplate?: string;\n showCases?: ShowCaseType[];\n exampleProjects?: ExampleProject[];\n tryItOutUrl?: string;\n separateInstructions?: boolean;\n aiEmployees?: AIEmployee[];\n commands?: Command[];\n uploadOptions?: UploadOptions;\n hideMermaid?: boolean;\n}\n\nexport interface ConversationDetail {\n projectId?: string;\n}\n\nconst ForwardedCruiseCanvasComponent = forwardRef(CruiseCanvasComponent);\n\n/**\n * AI 任务执行画布,以节点图形式展示任务的执行过程,支持任务回放、反馈及 UI 切换等功能。\n *\n * @description AI 任务执行画布,以节点图形式展示任务的执行过程,支持任务回放、反馈及 UI 切换等功能。\n * @category ai-portal\n */\nexport\n@defineElement(\"ai-portal.cruise-canvas\", {\n // Will wrap v2 bricks which don't support in shadow DOM.\n shadowOptions: false,\n})\nclass CruiseCanvas extends ReactNextElement implements CruiseCanvasProps {\n /**\n * 对话 ID\n */\n @property()\n accessor conversationId: string | undefined;\n\n /** 初始请求数据。仅初始设置有效。 */\n @property({ attribute: false, render: false })\n accessor initialRequest: RequestStore | undefined | null;\n\n /** 是否启用回放。仅初始设置有效。 */\n @property({ type: Boolean, render: false })\n accessor replay: boolean | undefined;\n\n /**\n * 设置回放时消息之间的时间间隔,单位为秒。仅初始设置有效。\n *\n * @default 2\n */\n @property({ type: Number, render: false })\n accessor replayDelay: number | undefined;\n\n /**\n * 功能开关配置,键为功能名,值为是否启用\n */\n @property({ attribute: false })\n accessor supports: Record<string, boolean> | undefined;\n\n /**\n * 是否显示隐藏的 Job 节点\n */\n @property({ type: Boolean })\n accessor showHiddenJobs: boolean | undefined;\n\n /**\n * 是否显示 Human-in-the-loop 操作按钮\n */\n @property({ type: Boolean })\n accessor showHumanActions: boolean | undefined;\n\n /**\n * 是否显示反馈按钮\n */\n @property({ type: Boolean })\n accessor showFeedback: boolean | undefined;\n\n /**\n * 是否在任务失败时也显示反馈按钮\n */\n @property({ type: Boolean })\n accessor showFeedbackAfterFailed: boolean | undefined;\n\n /**\n * 是否在查看生成视图时显示反馈按钮\n */\n @property({ type: Boolean })\n accessor showFeedbackOnView: boolean | undefined;\n\n /**\n * 是否显示切换到对话流视图的按钮\n */\n @property({ type: Boolean })\n accessor showUiSwitch: boolean | undefined;\n\n /**\n * 是否隐藏 Mermaid 图表渲染,通过 CSS 属性选择器控制样式\n */\n @property({ type: Boolean, render: false })\n accessor hideMermaid: boolean | undefined;\n\n /**\n * 是否显示 JSX 编辑器按钮\n */\n @property({ type: Boolean })\n accessor showJsxEditor: boolean | undefined;\n\n /**\n * 生成视图预览页的 URL 模板,支持 {viewId} 等字段插值\n */\n @property()\n accessor previewUrlTemplate: string | undefined;\n\n /**\n * 示例场景列表,用于在空对话时展示快速入口\n */\n @property({ attribute: false })\n accessor showCases: ShowCaseType[] | undefined;\n\n /**\n * 示例项目列表,用于展示可参考的已有项目\n */\n @property({ attribute: false })\n accessor exampleProjects: ExampleProject[] | undefined;\n\n /**\n * \"试一试\"跳转 URL\n */\n @property()\n accessor tryItOutUrl: string | undefined;\n\n /**\n * 是否将任务说明独立展示,而非内联在节点中\n */\n @property({ type: Boolean })\n accessor separateInstructions: boolean | undefined;\n\n /**\n * 可 @ 提及的数字人列表\n */\n @property({ attribute: false })\n accessor aiEmployees: AIEmployee[] | undefined;\n\n /**\n * 命令列表,支持通过 / 或搜索触发联想\n */\n @property({ attribute: false })\n accessor commands: Command[] | undefined;\n\n /**\n * 文件上传配置\n */\n @property({ attribute: false })\n accessor uploadOptions: UploadOptions | undefined;\n\n /**\n * @detail void\n * @description 用户点击分享时触发\n */\n @event({ type: \"share\" })\n accessor #shareEvent!: EventEmitter<void>;\n\n #onShare = () => {\n this.#shareEvent.emit();\n };\n\n /**\n * @detail void\n * @description 用户点击终止任务时触发\n */\n @event({ type: \"terminate\" })\n accessor #terminateEvent!: EventEmitter<void>;\n\n #onTerminate = () => {\n this.#terminateEvent.emit();\n };\n\n /**\n * @detail { plan: 计划步骤列表, result: 结果列表, feedback: 反馈文本 }\n * @description 用户提交反馈时触发\n */\n @event({ type: \"feedback.submit\" })\n accessor #feedbackSubmitEvent!: EventEmitter<FeedbackDetail>;\n\n #onSubmitFeedback = (detail: FeedbackDetail) => {\n this.#feedbackSubmitEvent.emit(detail);\n };\n\n /**\n * @detail 生成视图的 viewId\n * @description 用户查看生成视图时的反馈事件触发\n */\n @event({ type: \"feedback.on.view\" })\n accessor #feedbackOnViewEvent!: EventEmitter<string>;\n\n #onFeedbackOnView = (viewId: string) => {\n this.#feedbackOnViewEvent.emit(viewId);\n };\n\n /**\n * @detail 切换目标 UI 模式,值为 \"chat\"\n * @description 用户点击切换到对话流视图按钮时触发\n */\n @event({ type: \"ui.switch\" })\n accessor #switch!: EventEmitter<\"chat\">;\n\n #onSwitchToChat = () => {\n this.#switch.emit(\"chat\");\n };\n\n /**\n * @detail { projectId: 关联的项目 ID }\n * @description 对话详情信息变化时触发\n */\n @event({ type: \"detail.change\" })\n accessor #detailChange!: EventEmitter<ConversationDetail>;\n\n #onDetailChange = (detail: ConversationDetail) => {\n this.#detailChange.emit(detail);\n };\n\n #ref = createRef<CruiseCanvasRef>();\n\n /**\n * 通知组件任务已恢复,用于继续中断的对话\n */\n @method()\n resumed() {\n this.#ref.current?.resumed?.();\n }\n\n /**\n * 通知组件反馈提交成功\n */\n @method()\n feedbackSubmitDone() {\n this.#ref.current?.feedbackSubmitDone();\n }\n\n /**\n * 通知组件反馈提交失败\n */\n @method()\n feedbackSubmitFailed() {\n this.#ref.current?.feedbackSubmitFailed();\n }\n\n /**\n * 通知组件查看视图的反馈处理完成\n * @param viewId 对应的视图 ID\n */\n @method()\n feedbackOnViewDone(viewId: string) {\n this.#ref.current?.feedbackOnViewDone(viewId);\n }\n\n render() {\n return (\n <ForwardedCruiseCanvasComponent\n conversationId={this.conversationId!}\n initialRequest={this.initialRequest}\n replay={this.replay}\n replayDelay={this.replayDelay}\n supports={this.supports}\n showHiddenJobs={this.showHiddenJobs}\n showHumanActions={this.showHumanActions}\n showFeedback={this.showFeedback}\n showFeedbackAfterFailed={this.showFeedbackAfterFailed}\n showUiSwitch={this.showUiSwitch}\n showFeedbackOnView={this.showFeedbackOnView}\n showJsxEditor={this.showJsxEditor}\n previewUrlTemplate={this.previewUrlTemplate}\n showCases={this.showCases}\n exampleProjects={this.exampleProjects}\n tryItOutUrl={this.tryItOutUrl}\n separateInstructions={this.separateInstructions}\n aiEmployees={this.aiEmployees}\n commands={this.commands}\n uploadOptions={this.uploadOptions}\n onShare={this.#onShare}\n onTerminate={this.#onTerminate}\n onSubmitFeedback={this.#onSubmitFeedback}\n onSwitchToChat={this.#onSwitchToChat}\n onFeedbackOnView={this.#onFeedbackOnView}\n onDetailChange={this.#onDetailChange}\n ref={this.#ref}\n />\n );\n }\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n ASK_ANY_THING = \"ASK_ANYTHING\",\n COMMON_TASKS = \"COMMON_TASKS\",\n COMMAND_TIPS = \"COMMAND_TIPS\",\n SEARCH_COMMANDS_TIPS = \"SEARCH_COMMANDS_TIPS\",\n}\n\nconst en: Locale = {\n [K.ASK_ANY_THING]: \"Ask anything\",\n [K.COMMON_TASKS]: \"Common tasks\",\n [K.COMMAND_TIPS]: \"‘@’ AI Employee | ‘/’ Command\",\n [K.SEARCH_COMMANDS_TIPS]:\n \"Showing up to {{count}} items, type keywords to search\",\n};\n\nconst zh: Locale = {\n [K.ASK_ANY_THING]: \"询问任何问题\",\n [K.COMMON_TASKS]: \"常用任务\",\n [K.COMMAND_TIPS]: \"‘@’ 数字人 | ‘/’ 命令\",\n [K.SEARCH_COMMANDS_TIPS]: \"最多显示 {{count}} 条数据,输入关键字搜索\",\n};\n\nexport const NS = \"bricks/ai-portal/chat-box\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import { createProviderClass } from \"@next-core/utils/general\";\nimport type { CommandPayload } from \"../shared/interfaces.js\";\n\nexport interface ChatCommand {\n command: string;\n payload: CommandPayload;\n}\n\nlet chatCommand: ChatCommand | null = null;\n\nexport function setChatCommand(command: ChatCommand | null): void {\n chatCommand = command;\n}\n\nexport function getChatCommand(): ChatCommand | null {\n return chatCommand;\n}\n\ncustomElements.define(\n \"ai-portal.set-chat-command\",\n createProviderClass(setChatCommand)\n);\n","import { createProviderClass } from \"@next-core/utils/general\";\n\nlet chatEmployee: ChatMentionedEmployee | null = null;\n\ninterface ChatMentionedEmployee {\n name: string;\n employeeId: string;\n}\n\nexport function setChatMentionedEmployee(\n chatMentionedEmployee: ChatMentionedEmployee | null\n): void {\n chatEmployee = chatMentionedEmployee;\n}\n\nexport function getChatMentionedEmployee(): ChatMentionedEmployee | null {\n return chatEmployee;\n}\n\ncustomElements.define(\n \"ai-portal.set-chat-mentioned-employee\",\n createProviderClass(setChatMentionedEmployee)\n);\n","import { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type {\n ActionsEvents,\n ActionsEventsMapping,\n ActionsProps,\n EoActions,\n} from \"@next-bricks/basic/actions\";\nimport type { IconButton, IconButtonProps } from \"../icon-button\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedActions = wrapBrick<\n EoActions,\n ActionsProps & { activeKeys?: (string | number)[]; footerTips?: string },\n ActionsEvents,\n ActionsEventsMapping\n>(\"eo-actions\", {\n onActionClick: \"action.click\",\n onItemDragEnd: \"item.drag.end\",\n onItemDragStart: \"item.drag.start\",\n});\nexport const WrappedIconButton = wrapBrick<IconButton, IconButtonProps>(\n \"ai-portal.icon-button\"\n);\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useImperativeHandle,\n createRef,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { TextareaAutoResize } from \"@next-shared/form\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport {\n getChatCommand,\n setChatCommand,\n} from \"../data-providers/set-chat-command.js\";\nimport {\n getChatMentionedEmployee,\n setChatMentionedEmployee,\n} from \"../data-providers/set-chat-mentioned-employee.js\";\nimport type { ChatPayload, UploadOptions } from \"../shared/interfaces.js\";\nimport {\n UploadButton,\n type UploadButtonRef,\n} from \"../shared/FileUpload/UploadButton.js\";\nimport { UploadedFiles } from \"../shared/FileUpload/UploadedFiles.js\";\nimport UploadedFilesStyleText from \"../shared/FileUpload/UploadedFiles.shadow.css\";\nimport { WrappedActions, WrappedIcon } from \"./bricks.js\";\nimport { useFilesUploading } from \"../shared/useFilesUploading.js\";\nimport GlobalDragOverlay from \"../shared/FileUpload/GlobalDragOverlay.js\";\nimport { getInitialContent } from \"../shared/ReadableCommand/ReadableCommand.js\";\nimport {\n useChatCompletions,\n type ActionWithSubCommands,\n type Command,\n} from \"../shared/ChatCompletions/useChatCompletions.js\";\n\ninitializeI18n(NS, locales);\n\nconst MAX_SHOWN_COMMANDS = 10;\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport const ChatBoxComponent = forwardRef(LegacyChatBoxComponent);\n\nexport interface ChatBoxProps {\n disabled?: boolean;\n placeholder?: string;\n autoFocus?: boolean;\n aiEmployees?: AIEmployee[];\n commands?: Command[];\n uploadOptions?: UploadOptions;\n}\n\nexport interface AIEmployee {\n employeeId: string;\n name: string;\n}\n\nexport interface ChatBoxRef {\n setValue: (value: string) => void;\n getValue: () => string;\n focusOnInput: () => void;\n}\n\n/**\n * 大型聊天输入框,用于首页\n */\nexport\n@defineElement(\"ai-portal.chat-box\", {\n styleTexts: [styleText, UploadedFilesStyleText],\n shadowOptions: {\n delegatesFocus: true,\n },\n})\nclass ChatBox extends ReactNextElement implements ChatBoxProps {\n ref = createRef<ChatBoxRef>();\n\n @property({ type: Boolean })\n accessor disabled: boolean | undefined;\n\n @property()\n accessor placeholder: string | undefined;\n\n @property({ type: Boolean })\n accessor autoFocus: boolean | undefined;\n\n @property({ attribute: false })\n accessor aiEmployees: AIEmployee[] | undefined;\n\n @property({ attribute: false })\n accessor commands: Command[] | undefined;\n\n @property({ attribute: false })\n accessor uploadOptions: UploadOptions | undefined;\n\n /**\n * @deprecated Use `chat.submit` event instead\n */\n @event({ type: \"message.submit\" })\n accessor #messageSubmit!: EventEmitter<string>;\n\n #handleMessageSubmit = (value: string) => {\n this.#messageSubmit.emit(value);\n };\n\n @event({ type: \"chat.submit\" })\n accessor #chatSubmit!: EventEmitter<ChatPayload>;\n\n #handleChatSubmit = (payload: ChatPayload) => {\n this.#chatSubmit.emit(payload);\n };\n\n @method()\n setValue(value: string) {\n this.ref.current?.setValue(value);\n }\n\n @method()\n getValue() {\n return this.ref.current?.getValue();\n }\n\n @method()\n focusOnInput() {\n return this.ref.current?.focusOnInput();\n }\n\n render() {\n return (\n <ChatBoxComponent\n disabled={this.disabled}\n placeholder={this.placeholder}\n autoFocus={this.autoFocus}\n aiEmployees={this.aiEmployees}\n commands={this.commands}\n uploadOptions={this.uploadOptions}\n onMessageSubmit={this.#handleMessageSubmit}\n onChatSubmit={this.#handleChatSubmit}\n root={this}\n ref={this.ref}\n />\n );\n }\n}\n\ninterface ChatBoxComponentProps extends ChatBoxProps {\n root: HTMLElement;\n onMessageSubmit: (value: string) => void;\n onChatSubmit: (payload: ChatPayload) => void;\n ref?: React.Ref<ChatBoxRef>;\n}\n\nfunction LegacyChatBoxComponent(\n {\n root,\n disabled,\n placeholder,\n autoFocus,\n aiEmployees,\n commands,\n uploadOptions,\n onMessageSubmit,\n onChatSubmit,\n }: ChatBoxComponentProps,\n ref: React.Ref<ChatBoxRef>\n) {\n const containerRef = useRef<HTMLDivElement>(null);\n\n const uploadEnabled = uploadOptions?.enabled;\n const uploadAccept = uploadOptions?.accept;\n const {\n files,\n resetFiles,\n appendFiles,\n removeFile,\n hasFiles,\n allFilesDone,\n fileInfos,\n exceeded,\n paste,\n } = useFilesUploading(uploadOptions);\n\n useEffect(() => {\n if (!uploadEnabled) {\n resetFiles();\n }\n }, [uploadEnabled, resetFiles]);\n\n const {\n textareaRef,\n valueRef,\n value,\n setValue,\n selectionRef,\n\n mentioned,\n mentionedText,\n mentionPopover,\n mentionOverlay,\n mentionActiveKeys,\n setInitialMention,\n handleMention,\n\n command,\n commandText,\n commandPrefix,\n commandPopover,\n commandOverlay,\n commandActiveKeys,\n setInitialCommand,\n handleSelectCommand,\n\n handleChange,\n handleKeyDown,\n } = useChatCompletions({\n aiEmployees,\n commands,\n root,\n hasFiles,\n });\n\n useEffect(() => {\n const command = getChatCommand();\n if (command) {\n setChatCommand(null);\n }\n setInitialCommand(command);\n }, [setInitialCommand]);\n\n useEffect(() => {\n const employee = getChatMentionedEmployee();\n if (employee) {\n setChatMentionedEmployee(null);\n setInitialMention(employee.employeeId);\n }\n }, []);\n\n useEffect(() => {\n const store = window.__elevo_try_it_out;\n if (store) {\n delete window.__elevo_try_it_out;\n }\n if (typeof store?.content === \"string\") {\n valueRef.current = store.content;\n setValue(store.content);\n if (store?.cmd) {\n setInitialCommand({\n command: getInitialContent(store.cmd).slice(1),\n payload: store.cmd,\n });\n } else if (store?.mentionedAiEmployeeId) {\n setInitialMention(store.mentionedAiEmployeeId);\n }\n }\n }, [setInitialCommand, setInitialMention, setValue, valueRef]);\n\n useImperativeHandle(ref, () => ({\n setValue: (value: string) => {\n valueRef.current = value;\n setValue(value);\n },\n getValue: () => {\n return valueRef.current;\n },\n focusOnInput: () => {\n textareaRef.current?.focus();\n },\n }));\n\n const sendDisabled =\n !value ||\n !allFilesDone ||\n (!!mentionedText && value.length <= mentionedText.length) ||\n (!!commandText && value.length <= commandText.length);\n\n const doSubmit = useCallback(\n (value: string) => {\n if (sendDisabled) {\n return;\n }\n const content = value.slice(commandText.length || mentionedText.length);\n onMessageSubmit(content);\n onChatSubmit({\n content,\n files: fileInfos,\n cmd: command,\n aiEmployeeId: mentioned,\n });\n },\n [\n sendDisabled,\n commandText.length,\n mentionedText.length,\n command,\n fileInfos,\n mentioned,\n onChatSubmit,\n onMessageSubmit,\n ]\n );\n\n const handleSubmit = useCallback(\n (e: React.FormEvent<HTMLTextAreaElement>) => {\n if (e.currentTarget.value) {\n doSubmit(e.currentTarget.value);\n }\n },\n [doSubmit]\n );\n\n const handleSubmitClick = useCallback(() => {\n doSubmit(valueRef.current);\n }, [doSubmit, valueRef]);\n\n useEffect(\n () => {\n if (autoFocus) {\n Promise.resolve().then(() => {\n textareaRef.current?.focus();\n });\n }\n },\n // One-time focus\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n const uploadButtonRef = useRef<UploadButtonRef>(null);\n\n const onFilesDropped = useCallback(\n (files: File[]) => {\n appendFiles(files);\n textareaRef.current?.focus();\n },\n [appendFiles, textareaRef]\n );\n\n return (\n <>\n <div className=\"root\">\n <div className=\"container\" ref={containerRef}>\n <TextareaAutoResize\n containerRef={containerRef}\n ref={textareaRef}\n value={value}\n minRows={58 / 22}\n paddingSize={hasFiles ? 144 : 60}\n autoResize\n disabled={disabled}\n placeholder={placeholder ?? t(K.ASK_ANY_THING)}\n submitWhen=\"enter-without-shift\"\n desiredSelectionRef={selectionRef}\n onSubmit={handleSubmit}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onPaste={paste}\n style={{\n paddingTop: hasFiles ? 94 : 10,\n }}\n />\n {hasFiles && (\n <UploadedFiles\n files={files!}\n onRemove={(uid, abortController) => {\n removeFile(uid);\n abortController?.abort();\n }}\n onAdd={() => {\n uploadButtonRef.current?.requestUpload();\n }}\n />\n )}\n <div className=\"actions-bar\">\n <div>\n <slot name=\"actions\" />\n </div>\n <div className=\"buttons\">\n {uploadEnabled ? (\n <>\n <UploadButton\n ref={uploadButtonRef}\n accept={uploadAccept}\n disabled={exceeded}\n onChange={(files) => {\n appendFiles(files);\n textareaRef.current?.focus();\n }}\n />\n <div className=\"btn-divider\"></div>\n </>\n ) : null}\n <button\n className=\"btn-send\"\n disabled={sendDisabled}\n onClick={handleSubmitClick}\n >\n <WrappedIcon lib=\"fa\" prefix=\"fas\" icon=\"arrow-up\" />\n </button>\n </div>\n </div>\n {mentionOverlay?.map((overlay, index) => (\n <div key={index} className=\"mention-overlay\" style={overlay} />\n ))}\n {commandOverlay?.map((overlay, index) => (\n <div key={index} className=\"mention-overlay\" style={overlay} />\n ))}\n {mentionPopover &&\n createPortal(\n <WrappedActions\n actions={mentionPopover.actions}\n style={mentionPopover.style}\n activeKeys={mentionActiveKeys!}\n footerTips={t(K.COMMAND_TIPS)}\n onActionClick={(e) => handleMention(e.detail)}\n />,\n document.body\n )}\n {commandPopover &&\n createPortal(\n <WrappedActions\n actions={commandPopover.actions}\n style={commandPopover.style}\n activeKeys={commandActiveKeys!}\n footerTips={\n commandPrefix === \"/\"\n ? t(K.COMMAND_TIPS)\n : t(K.SEARCH_COMMANDS_TIPS, { count: MAX_SHOWN_COMMANDS })\n }\n onActionClick={(e) =>\n handleSelectCommand(e.detail as ActionWithSubCommands)\n }\n />,\n document.body\n )}\n </div>\n </div>\n <GlobalDragOverlay\n disabled={!uploadEnabled || exceeded}\n uploadOptions={uploadOptions}\n onFilesDropped={onFilesDropped}\n />\n </>\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface HomeContainerProps {\n sticky?: boolean;\n}\n\n/**\n * AI Portal 首页容器,通过 sticky 属性控制顶部吸附行为,内容通过默认插槽传入。\n *\n * @category layout-component\n * @slot default - 页面内容区域\n */\nexport\n@defineElement(\"ai-portal.home-container\", {\n styleTexts: [styleText],\n})\nclass HomeContainer extends ReactNextElement implements HomeContainerProps {\n @property({ type: Boolean, render: false })\n accessor sticky: boolean | undefined;\n\n render() {\n return <HomeContainerComponent />;\n }\n}\n\nexport function HomeContainerComponent() {\n return <slot />;\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport type {\n MiniLineChart,\n MiniLineChartProps,\n} from \"@next-bricks/mini-chart/mini-line-chart\";\n\nconst WrappedMiniLineChart = wrapBrick<MiniLineChart, MiniLineChartProps>(\n \"eo-mini-line-chart\"\n);\n\nconst { defineElement, property } = createDecorators();\n\nexport interface StatWithMiniChartProps\n extends Pick<\n MiniLineChartProps,\n \"data\" | \"xField\" | \"yField\" | \"lineColor\" | \"showArea\" | \"min\" | \"max\"\n > {\n label?: string;\n value?: string;\n size?: \"medium\" | \"small\";\n}\n\n/**\n * 构件 `ai-portal.stat-with-mini-chart`\n *\n * 带迷你折线图的统计数据展示构件,在统计数值旁边渲染一个迷你折线图。\n */\nexport\n@defineElement(\"ai-portal.stat-with-mini-chart\", {\n styleTexts: [styleText],\n})\nclass StatWithMiniChart\n extends ReactNextElement\n implements StatWithMiniChartProps\n{\n /** 统计指标标签名称 */\n @property()\n accessor label: string | undefined;\n\n /** 统计数值文本 */\n @property()\n accessor value: string | undefined;\n\n /**\n * 展示尺寸,medium 时图表高度为 92px,small 时为 55px\n * @default \"medium\"\n */\n @property()\n accessor size: \"medium\" | \"small\" | undefined;\n\n /**\n * 折线颜色\n * @default \"var(--color-brand)\"\n */\n @property()\n accessor lineColor: string | undefined;\n\n /** 是否在折线下方显示渐变填充区域 */\n @property({ type: Boolean })\n accessor showArea: boolean | undefined;\n\n /**\n * Specify the minimum value of the y-axis.\n * If not specified, the minimum value will be calculated from the data.\n */\n @property({ type: Number })\n accessor min: number | undefined;\n\n /**\n * Specify the maximum value of the y-axis.\n * If not specified, the maximum value will be calculated from the data.\n */\n @property({ type: Number })\n accessor max: number | undefined;\n\n /**\n * x 轴字段名(数据中时间字段的 key)\n * @default \"0\"\n */\n @property()\n accessor xField: string | undefined;\n\n /**\n * y 轴字段名(数据中数值字段的 key)\n * @default \"1\"\n */\n @property()\n accessor yField: string | undefined;\n\n /** 图表数据源,每项为包含 xField 和 yField 字段的对象 */\n @property({ attribute: false })\n accessor data: Record<string, number>[] | undefined;\n\n render() {\n return (\n <StatWithMiniChartComponent\n label={this.label}\n value={this.value}\n size={this.size}\n lineColor={this.lineColor}\n showArea={this.showArea}\n min={this.min}\n max={this.max}\n xField={this.xField}\n yField={this.yField}\n data={this.data}\n />\n );\n }\n}\n\nfunction StatWithMiniChartComponent({\n label,\n value,\n size,\n ...chartProps\n}: StatWithMiniChartProps) {\n if (size === \"small\") {\n return (\n <div className=\"container\">\n <div className=\"label-and-stat\">\n <div className=\"label\">{label}</div>\n <div className=\"stat\">{value}</div>\n </div>\n <div className=\"chart\">\n <WrappedMiniLineChart\n {...chartProps}\n lineWidth={1.5}\n width=\"auto\"\n height=\"55\"\n />\n </div>\n </div>\n );\n }\n return (\n <div className=\"container\">\n <div className=\"label\">{label}</div>\n <div className=\"stat-and-chart\">\n <div className=\"chart\">\n <WrappedMiniLineChart\n {...chartProps}\n lineWidth={2}\n width=\"auto\"\n height=\"92\"\n />\n </div>\n <div className=\"stat\">{value}</div>\n </div>\n </div>\n );\n}\n","import React, {\n createRef,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { i18n, initializeI18n } from \"@next-core/i18n\";\nimport { getHistory } from \"@next-core/runtime\";\nimport classNames from \"classnames\";\nimport type { DropdownActionsProps } from \"@next-bricks/basic/dropdown-actions\";\nimport type { ActionType } from \"@next-bricks/basic/mini-actions\";\nimport type { GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport {\n WrappedDropdownActions,\n WrappedEasyopsAvatar,\n WrappedIcon,\n WrappedIconButton,\n WrappedLink,\n} from \"./bricks.js\";\nimport {\n ChatHistory,\n type ActionClickDetail,\n type ChatHistoryRef,\n type PersonalActionClickDetail,\n type Project,\n type ProjectActionClickDetail,\n} from \"./ChatHistory.js\";\nimport { NavLink } from \"./NavLink.js\";\nimport type { SidebarLink } from \"./interfaces.js\";\nimport { SpaceNav, type SpaceNavProps } from \"./SpaceNav.js\";\n\nexport type { SidebarLink, SpaceNavProps };\n\ninitializeI18n(NS, locales);\n\nconst SIDEBAR_ICON: GeneralIconProps = {\n lib: \"easyops\",\n icon: \"sidebar\",\n};\n\nconst WrappedElevoLogo = wrapBrick(\"ai-portal.elevo-logo\");\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport interface ElevoSidebarProps {\n userInstanceId?: string;\n behavior?: \"default\" | \"drawer\";\n logoUrl?: string;\n newChatUrl?: string;\n newChatLinkWhenCollapsed?: boolean;\n historyActiveId?: string;\n historyUrlTemplate?: string;\n historyActions?: ActionType[];\n showProjects?: boolean;\n projectActiveId?: string;\n projectUrlTemplate?: string;\n projectActions?: ActionType[];\n personalActions?: ActionType[];\n links?: SidebarLink[];\n canAddProject?: boolean;\n myLinks?: SidebarLink[];\n scope?: \"default\" | \"space\";\n spaceNav?: SpaceNavProps;\n}\n\nexport type {\n ActionClickDetail,\n PersonalActionClickDetail,\n Project,\n ProjectActionClickDetail,\n};\n\nconst ElevoSidebarComponent = forwardRef(LegacyElevoSidebarComponent);\n\ninterface ElevoSidebarRef extends ChatHistoryRef {\n open: () => void;\n close: () => void;\n}\n\n/**\n * Elevo AI 侧边栏,包含 Logo 导航、新建对话、历史记录、项目列表及个人账户操作,支持折叠和抽屉两种行为模式。\n *\n * @category layout-component\n */\nexport\n@defineElement(\"ai-portal.elevo-sidebar\", {\n styleTexts: [styleText],\n})\nclass ElevoSidebar extends ReactNextElement implements ElevoSidebarProps {\n @property()\n accessor userInstanceId: string | undefined;\n\n @property()\n accessor behavior: \"default\" | \"drawer\" | undefined;\n\n @property()\n accessor logoUrl: string | undefined;\n\n @property()\n accessor newChatUrl: string | undefined;\n\n @property({ type: Boolean })\n accessor newChatLinkWhenCollapsed: boolean | undefined;\n\n @property()\n accessor historyUrlTemplate: string | undefined;\n\n @property({ attribute: false })\n accessor historyActions: ActionType[] | undefined;\n\n @property({ type: Boolean })\n accessor showProjects: boolean | undefined;\n\n @property()\n accessor projectUrlTemplate: string | undefined;\n\n @property({ attribute: false })\n accessor projectActions: ActionType[] | undefined;\n\n @property({ attribute: false })\n accessor personalActions: ActionType[] | undefined;\n\n @property({ attribute: false })\n accessor links: SidebarLink[] | undefined;\n\n @property({ type: Boolean })\n accessor canAddProject: boolean | undefined = true;\n\n @property({ attribute: false })\n accessor myLinks: SidebarLink[] | undefined;\n\n /**\n * @default \"default\"\n */\n @property()\n accessor scope: \"default\" | \"space\" | undefined;\n\n @property({ attribute: false })\n accessor spaceNav: SpaceNavProps | undefined;\n\n /**\n * @detail void\n * @description 点击退出登录时触发\n */\n @event({ type: \"logout\" })\n accessor #logout!: EventEmitter<void>;\n\n #handleLogout = () => {\n this.#logout.emit();\n };\n\n /**\n * 点击对话历史操作按钮时触发\n * @detail { action: 点击的操作项(含 project 等扩展字段), item: 当前对话历史记录项, project: 关联的项目(可选) }\n * @description 点击对话历史操作按钮时触发\n */\n @event({ type: \"action.click\" })\n accessor #actionClick!: EventEmitter<ActionClickDetail>;\n\n #handleActionClick = (detail: ActionClickDetail) => {\n this.#actionClick.emit(detail);\n };\n\n /**\n * 点击项目操作按钮时触发\n * @detail { action: 点击的操作项, project: 当前项目对象 }\n * @description 点击项目操作按钮时触发\n */\n @event({ type: \"project.action.click\" })\n accessor #projectActionClick!: EventEmitter<ProjectActionClickDetail>;\n\n #handleProjectActionClick = (detail: ProjectActionClickDetail) => {\n this.#projectActionClick.emit(detail);\n };\n\n /**\n * @detail void\n * @description 点击新建项目按钮时触发\n */\n @event({ type: \"add.project\" })\n accessor #addProject!: EventEmitter<void>;\n\n #handleAddProject = () => {\n this.#addProject.emit();\n };\n\n /**\n * @detail void\n * @description 点击新建服务流按钮时触发(scope 为 space 时有效)\n */\n @event({ type: \"add.serviceflow\" })\n accessor #addServiceflow!: EventEmitter<void>;\n\n #handleAddServiceflow = () => {\n this.#addServiceflow.emit();\n };\n\n /**\n * 点击个人操作按钮时触发\n * @detail { action: 点击的操作项 }\n * @description 点击个人操作按钮时触发\n */\n @event({ type: \"personal.action.click\" })\n accessor #personalActionClick!: EventEmitter<PersonalActionClickDetail>;\n\n #handlePersonalActionClick = (detail: PersonalActionClickDetail) => {\n this.#personalActionClick.emit(detail);\n };\n\n #ref = createRef<ElevoSidebarRef>();\n\n /**\n * 延迟一段时间后拉取最新对话历史\n * @param delay 拉取前的等待时长(毫秒),用于等待任务标题生成完成\n */\n @method()\n pullHistory(delay: number) {\n // Wait several seconds to let the task title to be summarized.\n setTimeout(() => {\n this.#ref.current?.pull();\n }, delay);\n }\n\n /** 展开侧边栏(behavior 为 drawer 时有效) */\n @method()\n open() {\n this.#ref.current?.open();\n }\n\n /** 折叠侧边栏(behavior 为 drawer 时有效) */\n @method()\n close() {\n this.#ref.current?.close();\n }\n\n /**\n * 从历史列表中移除指定项目及其对话\n * @param projectId 要移除的项目 instanceId\n */\n @method()\n removeProject(projectId: string) {\n this.#ref.current?.removeProject?.(projectId);\n }\n\n /**\n * 向项目列表中追加一个新项目\n * @param project 要追加的项目对象\n */\n @method()\n addProject(project: Project) {\n this.#ref.current?.addProject?.(project);\n }\n\n /**\n * 将指定对话标记为已移入项目,从历史列表中隐藏\n * @param conversationId 要移动的对话 ID\n */\n @method()\n moveConversation(conversationId: string) {\n this.#ref.current?.moveConversation?.(conversationId);\n }\n\n render() {\n return (\n <ElevoSidebarComponent\n ref={this.#ref}\n userInstanceId={this.userInstanceId}\n behavior={this.behavior}\n logoUrl={this.logoUrl}\n newChatUrl={this.newChatUrl}\n newChatLinkWhenCollapsed={this.newChatLinkWhenCollapsed}\n historyUrlTemplate={this.historyUrlTemplate}\n historyActions={this.historyActions}\n showProjects={this.showProjects}\n projectUrlTemplate={this.projectUrlTemplate}\n projectActions={this.projectActions}\n personalActions={this.personalActions}\n links={this.links}\n canAddProject={this.canAddProject}\n myLinks={this.myLinks}\n scope={this.scope}\n spaceNav={this.spaceNav}\n onLogout={this.#handleLogout}\n onActionClick={this.#handleActionClick}\n onProjectActionClick={this.#handleProjectActionClick}\n onAddProject={this.#handleAddProject}\n onAddServiceflow={this.#handleAddServiceflow}\n onPersonalActionClick={this.#handlePersonalActionClick}\n />\n );\n }\n}\n\ninterface ElevoSidebarComponentProps extends ElevoSidebarProps {\n onLogout: () => void;\n onActionClick: (detail: ActionClickDetail) => void;\n onProjectActionClick: (detail: ProjectActionClickDetail) => void;\n onAddProject: () => void;\n onAddServiceflow: () => void;\n onPersonalActionClick: (detail: PersonalActionClickDetail) => void;\n}\n\nfunction LegacyElevoSidebarComponent(\n {\n userInstanceId,\n behavior,\n logoUrl,\n newChatUrl,\n newChatLinkWhenCollapsed,\n historyUrlTemplate,\n historyActions,\n showProjects,\n projectUrlTemplate,\n projectActions,\n links,\n canAddProject,\n myLinks,\n scope,\n spaceNav,\n personalActions,\n onLogout,\n onActionClick,\n onProjectActionClick,\n onAddProject,\n onAddServiceflow,\n onPersonalActionClick,\n }: ElevoSidebarComponentProps,\n ref: React.Ref<ElevoSidebarRef>\n) {\n const [collapsed, setCollapsed] = useState(behavior === \"drawer\");\n const handleCollapse = useCallback(() => {\n setCollapsed(true);\n }, []);\n const handleExpand = useCallback(() => {\n setCollapsed(false);\n }, []);\n\n useEffect(() => {\n if (behavior === \"drawer\") {\n setCollapsed(true);\n }\n }, [behavior]);\n\n const handleClickMask = useCallback(() => {\n setCollapsed(true);\n }, []);\n\n const handleHistoryClick = useCallback(() => {\n if (behavior === \"drawer\") {\n setCollapsed(true);\n }\n }, [behavior]);\n\n const dropdownActions = useMemo<DropdownActionsProps[\"actions\"]>(\n () => [\n {\n key: \"logout\",\n icon: {\n lib: \"fa\",\n prefix: \"fas\",\n icon: \"arrow-right-from-bracket\",\n },\n text: t(K.LOGOUT),\n },\n {\n key: \"switch-language\",\n icon: {\n lib: \"lucide\",\n icon: \"languages\",\n },\n text: t(K.SWITCH_LANGUAGE),\n },\n ],\n []\n );\n\n const historyRef = useRef<ChatHistoryRef>(null);\n\n useImperativeHandle(\n ref,\n () => ({\n close: () => {\n setCollapsed(true);\n },\n pull: () => {\n historyRef.current?.pull();\n },\n removeProject: (projectId: string) => {\n historyRef.current?.removeProject?.(projectId);\n },\n addProject: (project: Project) => {\n historyRef.current?.addProject?.(project);\n },\n moveConversation: (conversationId: string) => {\n historyRef.current?.moveConversation?.(conversationId);\n },\n open: () => {\n setCollapsed(false);\n },\n }),\n []\n );\n\n return (\n <div className={classNames(\"container\", { collapsed })}>\n {behavior === \"drawer\" && !collapsed && (\n <div className=\"mask\" onClick={handleClickMask} />\n )}\n <div className=\"alternative\">\n <WrappedIconButton\n icon={SIDEBAR_ICON}\n variant=\"light\"\n onClick={handleExpand}\n />\n {newChatLinkWhenCollapsed && (\n <WrappedLink className=\"new-chat\" url={newChatUrl}>\n <WrappedIcon\n className=\"new-chat-icon\"\n lib=\"easyops\"\n icon=\"new-chat\"\n />\n {t(K.NEW_CHAT)}\n </WrappedLink>\n )}\n </div>\n <div className=\"sidebar\">\n <div className=\"logo-bar\">\n <WrappedLink url={logoUrl} className=\"logo-link\">\n <WrappedElevoLogo />\n </WrappedLink>\n <WrappedIconButton\n icon={SIDEBAR_ICON}\n variant=\"light\"\n onClick={handleCollapse}\n />\n </div>\n <div className=\"main\">\n {scope === \"space\" ? (\n <SpaceNav onAddServiceflow={onAddServiceflow} {...spaceNav!} />\n ) : (\n <>\n <WrappedLink className=\"new-chat\" url={newChatUrl}>\n <WrappedIcon\n className=\"new-chat-icon\"\n lib=\"easyops\"\n icon=\"new-chat\"\n />\n {t(K.NEW_CHAT)}\n </WrappedLink>\n {links?.length ? (\n <>\n {links.map((link, index) => (\n <NavLink\n key={index}\n url={link.url}\n activeIncludes={link.activeIncludes}\n render={({ active }) => (\n <WrappedLink\n key={index}\n className={classNames(\"link\", { active })}\n url={link.url}\n >\n <WrappedIcon className=\"icon\" {...link.icon} />\n <span className=\"title\">{link.title}</span>\n </WrappedLink>\n )}\n />\n ))}\n <div className=\"divider\" />\n </>\n ) : null}\n <ChatHistory\n ref={historyRef}\n showProjects={showProjects}\n canAddProject={canAddProject}\n historyUrlTemplate={historyUrlTemplate}\n historyActions={historyActions}\n projectUrlTemplate={projectUrlTemplate}\n projectActions={projectActions}\n myLinks={myLinks}\n onActionClick={onActionClick}\n onHistoryClick={handleHistoryClick}\n onProjectActionClick={onProjectActionClick}\n onAddProject={onAddProject}\n />\n </>\n )}\n </div>\n <div className=\"footer\">\n <WrappedDropdownActions\n className=\"dropdown\"\n themeVariant=\"elevo\"\n actions={personalActions || dropdownActions}\n onActionClick={async (e) => {\n if (personalActions) {\n onPersonalActionClick({ action: e.detail });\n } else if (e.detail.key === \"logout\") {\n onLogout();\n } else {\n await i18n.changeLanguage(\n i18n.language && i18n.language.split(\"-\")[0] === \"en\"\n ? \"zh\"\n : \"en\"\n );\n getHistory().reload();\n }\n }}\n >\n <button className=\"account\">\n <WrappedEasyopsAvatar\n nameOrInstanceId={userInstanceId}\n showName\n size=\"xs\"\n />\n </button>\n </WrappedDropdownActions>\n </div>\n </div>\n </div>\n );\n}\n","import { useEffect, useState, type RefObject } from \"react\";\n\nexport function useHasAssignedNodes(slotRef: RefObject<HTMLSlotElement>) {\n const [hasAssignedNodes, setHasAssignedNodes] = useState(false);\n\n useEffect(() => {\n const slotElement = slotRef.current;\n\n if (!slotElement) {\n return;\n }\n\n const listener = () => {\n setHasAssignedNodes(slotElement.assignedNodes().length > 0);\n };\n\n listener();\n slotElement.addEventListener(\"slotchange\", listener);\n\n return () => {\n slotElement.removeEventListener(\"slotchange\", listener);\n };\n }, [slotRef]);\n\n return hasAssignedNodes;\n}\n","import React, { useRef, type HTMLAttributes } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport styleText from \"./styles.shadow.css\";\nimport { useHasAssignedNodes } from \"@next-shared/hooks\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\n\nconst { defineElement, property } = createDecorators();\n\nexport interface IconButtonProps {\n icon?: GeneralIconProps & HTMLAttributes<GeneralIcon>;\n tooltip?: string;\n tooltipHoist?: boolean;\n active?: boolean;\n disabled?: boolean;\n variant?: IconButtonVariant;\n reduceIconSize?: boolean;\n}\n\nexport type IconButtonVariant =\n | \"default\"\n | \"light\"\n | \"mini\"\n | \"mini-light\"\n | \"bordered\";\n\n/**\n * 图标按钮,支持多种视觉变体、禁用状态、Tooltip 提示及文字插槽。\n *\n * @category interact-basic\n * @slot default - 图标旁边的文字内容(可选)\n */\nexport\n@defineElement(\"ai-portal.icon-button\", {\n styleTexts: [styleText],\n})\nclass IconButton extends ReactNextElement implements IconButtonProps {\n @property({ attribute: false })\n accessor icon: (GeneralIconProps & HTMLAttributes<GeneralIcon>) | undefined;\n\n @property()\n accessor tooltip: string | undefined;\n\n @property({ type: Boolean })\n accessor tooltipHoist: boolean | undefined;\n\n @property({ type: Boolean, render: false })\n accessor active: boolean | undefined;\n\n @property({ type: Boolean })\n accessor disabled: boolean | undefined;\n\n @property({ render: false })\n accessor variant: IconButtonVariant | undefined;\n\n /** 是否缩小图标尺寸(部分 easyops 图标过大) */\n @property({ render: false, type: Boolean })\n accessor reduceIconSize: boolean | undefined;\n\n render() {\n return (\n <IconButtonComponent\n icon={this.icon}\n tooltip={this.tooltip}\n tooltipHoist={this.tooltipHoist}\n disabled={this.disabled}\n />\n );\n }\n}\n\nfunction IconButtonComponent({\n icon,\n tooltip,\n tooltipHoist,\n disabled,\n}: IconButtonProps) {\n const slotRef = useRef<HTMLSlotElement>(null);\n const hasSlotted = useHasAssignedNodes(slotRef);\n\n const btn = (\n <button disabled={disabled} className={hasSlotted ? \"has-slotted\" : \"\"}>\n <WrappedIcon className=\"icon\" {...icon} />\n <slot ref={slotRef} />\n </button>\n );\n\n if (tooltip) {\n return (\n <WrappedTooltip content={tooltip} hoist={tooltipHoist}>\n {btn}\n </WrappedTooltip>\n );\n }\n\n return btn;\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n ALL = \"ALL\",\n EXPLORE_EXCELLENT_CASES = \"EXPLORE_EXCELLENT_CASES\",\n}\n\nconst en: Locale = {\n [K.ALL]: \"All\",\n [K.EXPLORE_EXCELLENT_CASES]: \"Explore excellent cases\",\n};\n\nconst zh: Locale = {\n [K.ALL]: \"全部\",\n [K.EXPLORE_EXCELLENT_CASES]: \"探索优秀案例\",\n};\n\nexport const NS = \"bricks/ai-portal/show-cases\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, { useMemo, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport type {\n Tab,\n TabList,\n TabListEvents,\n TabListMapping,\n TabListProps,\n} from \"../tab-list/index.js\";\nimport type { ShowCase, ShowCaseProps } from \"../show-case/index.js\";\nimport type { ShowCaseType } from \"../shared/interfaces.js\";\n\ninitializeI18n(NS, locales);\n\nconst WrappedShowCase = wrapBrick<ShowCase, ShowCaseProps>(\n \"ai-portal.show-case\"\n);\nconst WrappedTabList = wrapBrick<\n TabList,\n TabListProps,\n TabListEvents,\n TabListMapping\n>(\"ai-portal.tab-list\", {\n onTabClick: \"tab.click\",\n});\n\nconst { defineElement, property } = createDecorators();\n\nexport interface ShowCasesProps {\n list?: ShowCaseType[];\n limit?: number;\n}\n\n/**\n * 构件 `ai-portal.show-cases`\n *\n * 案例列表展示构件,支持按场景分组筛选,展示多个优秀案例卡片。\n */\nexport\n@defineElement(\"ai-portal.show-cases\", {\n styleTexts: [styleText],\n})\nclass ShowCases extends ReactNextElement implements ShowCasesProps {\n /** 案例数据列表,每项可包含 scenario 字段用于分组筛选 */\n @property({ attribute: false })\n accessor list: ShowCaseType[] | undefined;\n\n /** 每个场景分组下最多显示的案例数量 */\n @property({ type: Number })\n accessor limit: number | undefined;\n\n render() {\n return <ShowCasesComponent list={this.list} limit={this.limit} />;\n }\n}\n\nfunction ShowCasesComponent({ list, limit }: ShowCasesProps) {\n // Grouping the list by scenario\n const groups = useMemo<string[]>(() => {\n return [\"\", ...new Set(list?.map((item) => item.scenario).filter(Boolean))];\n }, [list]);\n\n const [activeGroup, setActiveGroup] = useState(\"\");\n\n const filteredList = useMemo(() => {\n if (!list) {\n return;\n }\n let filtered = list;\n if (activeGroup) {\n filtered = filtered.filter((item) => item.scenario === activeGroup);\n }\n if (limit) {\n filtered = filtered.slice(0, limit);\n }\n return filtered;\n }, [activeGroup, list, limit]);\n\n const tabs = useMemo<Tab[]>(() => {\n return groups.map((group) => ({\n id: group,\n label: group === \"\" ? t(K.ALL) : group,\n }));\n }, [groups]);\n\n if (!list?.length) {\n return null;\n }\n\n return (\n <>\n <div className=\"tips\">{`${t(K.EXPLORE_EXCELLENT_CASES)} ↓`}</div>\n <WrappedTabList\n tabs={tabs}\n activeTab={activeGroup}\n onTabClick={(event) => setActiveGroup(event.detail.id)}\n />\n <ul className=\"cases\">\n {filteredList?.map((item) => (\n <li key={item.conversationId}>\n <WrappedShowCase\n caseTitle={item.title}\n summary={item.summary}\n url={item.url}\n />\n </li>\n ))}\n </ul>\n </>\n );\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n MCP_HUB = \"MCP_HUB\",\n ALL = \"ALL\",\n\n SERVER_cmdb = \"SERVER_cmdb\",\n SERVER_cmdb_product_helper = \"SERVER_cmdb_product_helper\",\n SERVER_alert = \"SERVER_alert\",\n SERVER_web_builder = \"SERVER_web_builder\",\n SERVER_web_builder2 = \"SERVER_web_builder2\",\n SERVER_host_troubleshooting = \"SERVER_host_troubleshooting\",\n SERVER_system_inspection = \"SERVER_system_inspection\",\n SERVER_grafana = \"SERVER_grafana\",\n SERVER_kubernetes = \"SERVER_kubernetes\",\n SERVER_llm = \"SERVER_llm\",\n}\n\nconst en: Locale = {\n [K.MCP_HUB]: \"MCP Hub\",\n [K.ALL]: \"All\",\n\n [K.SERVER_cmdb]: \"CMDB\",\n [K.SERVER_cmdb_product_helper]: \"CMDB\",\n [K.SERVER_alert]: \"Alert\",\n [K.SERVER_web_builder]: \"View\",\n [K.SERVER_web_builder2]: \"View\",\n [K.SERVER_host_troubleshooting]: \"Host Troubleshooting\",\n [K.SERVER_system_inspection]: \"System Inspection\",\n [K.SERVER_grafana]: \"Grafana\",\n [K.SERVER_kubernetes]: \"Kubernetes\",\n [K.SERVER_llm]: \"LLM\",\n};\n\nconst zh: Locale = {\n [K.MCP_HUB]: \"MCP 中心\",\n [K.ALL]: \"全部\",\n\n [K.SERVER_cmdb]: \"CMDB\",\n [K.SERVER_cmdb_product_helper]: \"CMDB\",\n [K.SERVER_alert]: \"告警\",\n [K.SERVER_web_builder]: \"视图\",\n [K.SERVER_web_builder2]: \"视图\",\n [K.SERVER_host_troubleshooting]: \"主机故障排查\",\n [K.SERVER_system_inspection]: \"系统巡检\",\n [K.SERVER_grafana]: \"Grafana\",\n [K.SERVER_kubernetes]: \"Kubernetes\",\n [K.SERVER_llm]: \"大模型\",\n};\n\nexport const NS = \"bricks/ai-portal/mcp-tools\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, { useMemo, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport type {\n Tab,\n TabList,\n TabListEvents,\n TabListMapping,\n TabListProps,\n} from \"../tab-list/index.js\";\nimport type {\n StickyContainer,\n StickyContainerProps,\n} from \"../sticky-container/index.js\";\n\ninitializeI18n(NS, locales);\n\nconst DEFAULT_TOOL_ICON: GeneralIconProps = {\n lib: \"antd\",\n icon: \"tool\",\n};\n\nconst PLATFORM_CONFIG = new Map([\n [\n \"EasyOps平台\",\n {\n servers: [\"cmdb\", \"cmdb_product_helper\"],\n },\n ],\n [\n \"Grafana\",\n {\n servers: [\"grafana\"],\n },\n ],\n [\n \"Kubernetes\",\n {\n servers: [\"kubernetes\"],\n },\n ],\n [\n \"监控事件\",\n {\n servers: [\"alert\"],\n },\n ],\n [\n \"浏览器\",\n {\n servers: [\"playwright\"],\n },\n ],\n [\n \"低代码\",\n {\n servers: [\"web-builder\", \"web-builder2\"],\n },\n ],\n [\n \"大模型\",\n {\n servers: [\"llm\"],\n },\n ],\n [\n \"故障排查\",\n {\n servers: [\"host-troubleshooting\"],\n },\n ],\n]);\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedTabList = wrapBrick<\n TabList,\n TabListProps,\n TabListEvents,\n TabListMapping\n>(\"ai-portal.tab-list\", {\n onTabClick: \"tab.click\",\n});\nconst WrappedStickyContainer = wrapBrick<StickyContainer, StickyContainerProps>(\n \"ai-portal.sticky-container\"\n);\n\nconst { defineElement, property } = createDecorators();\n\nexport interface McpToolsProps {\n list?: McpTool[];\n stickyTop?: number;\n}\n\nexport interface McpTool {\n name: string;\n title: string;\n description: string;\n icon?: GeneralIconProps;\n server: McpServer;\n}\n\nexport interface McpServer {\n id: string;\n name: string;\n}\n\n/**\n * MCP 工具列表组件,按服务分组展示工具信息,支持按平台分类过滤和吸顶标签栏。\n *\n * @category display-component\n */\nexport\n@defineElement(\"ai-portal.mcp-tools\", {\n styleTexts: [styleText],\n})\nclass McpTools extends ReactNextElement implements McpToolsProps {\n @property({ attribute: false })\n accessor list: McpTool[] | undefined;\n\n @property({ type: Number })\n accessor stickyTop: number | undefined;\n\n render() {\n return <McpToolsComponent list={this.list} stickyTop={this.stickyTop} />;\n }\n}\n\nfunction McpToolsComponent({ list, stickyTop }: McpToolsProps) {\n // Grouping the list by server name\n const [groupMap, platformMap] = useMemo(() => {\n const map = new Map<string, McpTool[]>();\n const platformMap = new Map<string, string[]>();\n list?.forEach((item) => {\n const groupName = t(\n `SERVER_${item.server.id.replaceAll(\"-\", \"_\")}`,\n item.server.name\n );\n let list = map.get(groupName);\n if (!list) {\n map.set(groupName, (list = []));\n }\n list.push(item);\n\n const platform = [...PLATFORM_CONFIG.entries()].find(\n ([_name, { servers }]) => servers.includes(item.server.id)\n );\n const platformName = platform ? platform[0] : \"其他\";\n let groups = platformMap.get(platformName);\n if (!groups) {\n platformMap.set(platformName, (groups = []));\n }\n groups.push(groupName);\n });\n\n const orderedNames = [\"CMDB\"];\n const orderedMap = new Map<string, McpTool[]>(\n [...map.entries()].sort(([nameA], [nameB]) => {\n const indexA = orderedNames.indexOf(nameA);\n const indexB = orderedNames.indexOf(nameB);\n return (\n (indexA < 0 ? orderedNames.length : indexA) -\n (indexB < 0 ? orderedNames.length : indexB)\n );\n })\n );\n\n return [orderedMap, platformMap];\n }, [list]);\n\n const platforms = useMemo(() => {\n const orderedNames = [...PLATFORM_CONFIG.keys()];\n const names = [...platformMap.keys()];\n names.sort((a, b) => {\n const aIndex = orderedNames.indexOf(a);\n const bIndex = orderedNames.indexOf(b);\n return (\n (aIndex < 0 ? orderedNames.length : aIndex) -\n (bIndex < 0 ? orderedNames.length : bIndex)\n );\n });\n return [\"\", ...names];\n }, [platformMap]);\n\n const [activePlatform, setActivePlatform] = useState(\"\");\n\n const filteredGroups = useMemo(() => {\n const groupedList = [...groupMap];\n if (!activePlatform) {\n return groupedList;\n }\n const platformGroups = platformMap.get(activePlatform);\n return groupedList.filter(([group]) => platformGroups?.includes(group));\n }, [activePlatform, groupMap, platformMap]);\n\n const tabs = useMemo<Tab[]>(() => {\n return platforms.map((platform) => ({\n id: platform,\n label: platform === \"\" ? t(K.ALL) : platform,\n }));\n }, [platforms]);\n\n const tabsNode = (\n <WrappedTabList\n tabs={tabs}\n activeTab={activePlatform}\n onTabClick={(event) => setActivePlatform(event.detail.id)}\n />\n );\n\n return (\n <>\n {stickyTop == null ? (\n <div className=\"non-sticky-tabs\">{tabsNode}</div>\n ) : (\n <WrappedStickyContainer\n className=\"sticky-tabs\"\n style={{ top: stickyTop }}\n >\n {tabsNode}\n </WrappedStickyContainer>\n )}\n <ul className=\"groups\">\n {filteredGroups?.map(([groupName, items]) => (\n <li key={groupName} className=\"group\">\n <h2>{groupName}</h2>\n <ul className=\"list\">\n {items.map((item, index) => (\n <li key={index} className=\"item\">\n <div className=\"heading\">\n <WrappedIcon\n className=\"icon\"\n {...(item.icon ?? DEFAULT_TOOL_ICON)}\n fallback={DEFAULT_TOOL_ICON}\n />\n <div className=\"title\">{item.title}</div>\n </div>\n <div className=\"description\">{item.description}</div>\n </li>\n ))}\n </ul>\n </li>\n ))}\n </ul>\n </>\n );\n}\n","// istanbul ignore file: experimental\nimport React, { createRef, forwardRef } from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { NS, locales } from \"./i18n.js\";\nimport type { FeedbackDetail } from \"../cruise-canvas/interfaces.js\";\nimport { ChatStreamComponent } from \"./ChatStream.js\";\nimport type {\n ExampleProject,\n RequestStore,\n ShowCaseType,\n UploadOptions,\n} from \"../shared/interfaces.js\";\nimport type {\n AIEmployee,\n Command,\n} from \"../shared/ChatCompletions/useChatCompletions.js\";\n\ninitializeI18n(NS, locales);\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport interface ChatStreamProps {\n conversationId?: string;\n initialRequest?: RequestStore | null;\n replay?: boolean;\n replayDelay?: number;\n supports?: Record<string, boolean>;\n showHumanActions?: boolean;\n showFeedback?: boolean;\n showFeedbackAfterFailed?: boolean;\n showFeedbackOnView?: boolean;\n showUiSwitch?: boolean;\n previewUrlTemplate?: string;\n showCases?: ShowCaseType[];\n exampleProjects?: ExampleProject[];\n tryItOutUrl?: string;\n aiEmployees?: AIEmployee[];\n commands?: Command[];\n uploadOptions?: UploadOptions;\n hideMermaid?: boolean;\n}\n\nexport interface ConversationDetail {\n projectId?: string;\n}\n\nconst ForwardedChatStreamComponent = forwardRef(ChatStreamComponent);\n\n/**\n * AI 对话流视图,以聊天气泡形式展示对话过程,支持文件上传、命令联想、回放及用户反馈等功能。\n *\n * @description AI 对话流视图,以聊天气泡形式展示对话过程,支持文件上传、命令联想、回放及用户反馈等功能。\n * @category ai-portal\n */\nexport\n@defineElement(\"ai-portal.chat-stream\", {\n // Will wrap v2 bricks which don't support in shadow DOM.\n shadowOptions: false,\n})\nclass ChatStream extends ReactNextElement implements ChatStreamProps {\n /**\n * 对话 ID\n */\n @property()\n accessor conversationId: string | undefined;\n\n /** 初始请求数据。仅初始设置有效。 */\n @property({ attribute: false, render: false })\n accessor initialRequest: RequestStore | undefined | null;\n\n /** 是否启用回放。仅初始设置有效。 */\n @property({ type: Boolean })\n accessor replay: boolean | undefined;\n\n /**\n * 设置回放时消息之间的时间间隔,单位为秒。仅初始设置有效。\n *\n * @default 2\n */\n @property({ type: Number })\n accessor replayDelay: number | undefined;\n\n /**\n * 功能开关配置,键为功能名,值为是否启用\n */\n @property({ attribute: false })\n accessor supports: Record<string, boolean> | undefined;\n\n /**\n * 是否显示 Human-in-the-loop 操作按钮\n */\n @property({ type: Boolean })\n accessor showHumanActions: boolean | undefined;\n\n /**\n * 是否显示反馈按钮\n */\n @property({ type: Boolean })\n accessor showFeedback: boolean | undefined;\n\n /**\n * 是否在任务失败时也显示反馈按钮\n */\n @property({ type: Boolean })\n accessor showFeedbackAfterFailed: boolean | undefined;\n\n /**\n * 是否在查看生成视图时显示反馈按钮\n */\n @property({ type: Boolean })\n accessor showFeedbackOnView: boolean | undefined;\n\n /**\n * 是否显示切换到画布视图的按钮\n */\n @property({ type: Boolean })\n accessor showUiSwitch: boolean | undefined;\n\n /**\n * 是否隐藏 Mermaid 图表渲染,通过 CSS 属性选择器控制样式\n */\n @property({ type: Boolean, render: false })\n accessor hideMermaid: boolean | undefined;\n\n /**\n * 生成视图预览页的 URL 模板,支持 {viewId} 等字段插值\n */\n @property()\n accessor previewUrlTemplate: string | undefined;\n\n /**\n * 示例场景列表,用于在空对话时展示快速入口\n */\n @property({ attribute: false })\n accessor showCases: ShowCaseType[] | undefined;\n\n /**\n * 示例项目列表,用于展示可参考的已有项目\n */\n @property({ attribute: false })\n accessor exampleProjects: ExampleProject[] | undefined;\n\n /**\n * \"试一试\"跳转 URL\n */\n @property()\n accessor tryItOutUrl: string | undefined;\n\n /**\n * 可 @ 提及的数字人列表\n */\n @property({ attribute: false })\n accessor aiEmployees: AIEmployee[] | undefined;\n\n /**\n * 命令列表,支持通过 / 或搜索触发联想\n */\n @property({ attribute: false })\n accessor commands: Command[] | undefined;\n\n /**\n * 文件上传配置\n */\n @property({ attribute: false })\n accessor uploadOptions: UploadOptions | undefined;\n\n /**\n * @detail void\n * @description 用户点击分享时触发\n */\n @event({ type: \"share\" })\n accessor #shareEvent!: EventEmitter<void>;\n\n #onShare = () => {\n this.#shareEvent.emit();\n };\n\n /**\n * @detail void\n * @description 用户点击终止任务时触发\n */\n @event({ type: \"terminate\" })\n accessor #terminateEvent!: EventEmitter<void>;\n\n #onTerminate = () => {\n this.#terminateEvent.emit();\n };\n\n /**\n * @detail { plan: 计划步骤列表, result: 结果列表, feedback: 反馈文本 }\n * @description 用户提交反馈时触发\n */\n @event({ type: \"feedback.submit\" })\n accessor #feedbackSubmitEvent!: EventEmitter<FeedbackDetail>;\n\n #onSubmitFeedback = (detail: FeedbackDetail) => {\n this.#feedbackSubmitEvent.emit(detail);\n };\n\n /**\n * @detail 生成视图的 viewId\n * @description 用户查看生成视图时的反馈事件触发\n */\n @event({ type: \"feedback.on.view\" })\n accessor #feedbackOnViewEvent!: EventEmitter<string>;\n\n #onFeedbackOnView = (viewId: string) => {\n this.#feedbackOnViewEvent.emit(viewId);\n };\n\n /**\n * @detail 切换目标 UI 模式,值为 \"canvas\"\n * @description 用户点击切换到画布视图按钮时触发\n */\n @event({ type: \"ui.switch\" })\n accessor #switch!: EventEmitter<\"canvas\">;\n\n #onSwitchToCanvas = () => {\n this.#switch.emit(\"canvas\");\n };\n\n /**\n * @detail { projectId: 关联的项目 ID }\n * @description 对话详情信息变化时触发\n */\n @event({ type: \"detail.change\" })\n accessor #detailChange!: EventEmitter<ConversationDetail>;\n\n #onDetailChange = (detail: ConversationDetail) => {\n this.#detailChange.emit(detail);\n };\n\n /**\n * @detail 是否已切换到分屏模式\n * @description 分屏状态切换时触发\n */\n @event({ type: \"split.change\" })\n accessor #splitChange!: EventEmitter<boolean>;\n\n #onSplitChange = (splitted: boolean) => {\n this.#splitChange.emit(splitted);\n };\n\n #ref = createRef<ChatStreamRef>();\n\n /**\n * 通知组件任务已恢复,用于继续中断的对话\n */\n @method()\n resumed() {\n this.#ref.current?.resumed?.();\n }\n\n /**\n * 通知组件反馈提交成功\n */\n @method()\n feedbackSubmitDone() {\n this.#ref.current?.feedbackSubmitDone();\n }\n\n /**\n * 通知组件反馈提交失败\n */\n @method()\n feedbackSubmitFailed() {\n this.#ref.current?.feedbackSubmitFailed();\n }\n\n /**\n * 通知组件查看视图的反馈处理完成\n * @param viewId 对应的视图 ID\n */\n @method()\n feedbackOnViewDone(viewId: string) {\n this.#ref.current?.feedbackOnViewDone(viewId);\n }\n\n render() {\n return (\n <ForwardedChatStreamComponent\n conversationId={this.conversationId!}\n initialRequest={this.initialRequest}\n replay={this.replay}\n replayDelay={this.replayDelay}\n supports={this.supports}\n showHumanActions={this.showHumanActions}\n showFeedback={this.showFeedback}\n showFeedbackAfterFailed={this.showFeedbackAfterFailed}\n showFeedbackOnView={this.showFeedbackOnView}\n showUiSwitch={this.showUiSwitch}\n previewUrlTemplate={this.previewUrlTemplate}\n showCases={this.showCases}\n exampleProjects={this.exampleProjects}\n tryItOutUrl={this.tryItOutUrl}\n aiEmployees={this.aiEmployees}\n commands={this.commands}\n uploadOptions={this.uploadOptions}\n onShare={this.#onShare}\n onTerminate={this.#onTerminate}\n onSubmitFeedback={this.#onSubmitFeedback}\n onSwitchToCanvas={this.#onSwitchToCanvas}\n onFeedbackOnView={this.#onFeedbackOnView}\n onDetailChange={this.#onDetailChange}\n onSplitChange={this.#onSplitChange}\n ref={this.#ref}\n />\n );\n }\n}\n\nexport interface ChatStreamRef {\n resumed?: () => void;\n feedbackSubmitDone: () => void;\n feedbackSubmitFailed: () => void;\n feedbackOnViewDone: (viewId: string) => void;\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n AI_EMPLOYEES = \"AI_EMPLOYEES\",\n UNTITLED = \"UNTITLED\",\n}\n\nconst en: Locale = {\n AI_EMPLOYEES: \"AI Employees\",\n UNTITLED: \"Untitled\",\n};\n\nconst zh: Locale = {\n AI_EMPLOYEES: \"Ai 数字人\",\n UNTITLED: \"未命名\",\n};\n\nexport const NS = \"bricks/ai-portal/ai-employees\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, { useMemo, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport classNames from \"classnames\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport { parseTemplate } from \"../shared/parseTemplate.js\";\nimport type {\n Tab,\n TabList,\n TabListEvents,\n TabListMapping,\n TabListProps,\n} from \"../tab-list/index.js\";\nimport type {\n StickyContainer,\n StickyContainerProps,\n} from \"../sticky-container/index.js\";\n\ninitializeI18n(NS, locales);\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedTabList = wrapBrick<\n TabList,\n TabListProps,\n TabListEvents,\n TabListMapping\n>(\"ai-portal.tab-list\", {\n onTabClick: \"tab.click\",\n});\nconst WrappedStickyContainer = wrapBrick<StickyContainer, StickyContainerProps>(\n \"ai-portal.sticky-container\"\n);\n\nconst { defineElement, property } = createDecorators();\n\nexport interface AIEmployeesProps {\n list?: Employee[];\n industries?: string[];\n // roles?: string[];\n urlTemplate?: string;\n stickyTop?: number;\n}\n\nexport interface Employee {\n name: string;\n industry: string;\n role: string;\n description: string;\n avatar?: string;\n}\n\n/**\n * AI 数字人卡片列表,按行业和角色分组展示,支持 Tab 切换行业和点击跳转。\n *\n * @description AI 数字人卡片列表,按行业和角色分组展示,支持 Tab 切换行业和点击跳转。\n * @category ai-portal\n */\nexport\n@defineElement(\"ai-portal.ai-employees\", {\n styleTexts: [styleText],\n})\nclass AIEmployees extends ReactNextElement implements AIEmployeesProps {\n /**\n * 数字人列表数据\n */\n @property({ attribute: false })\n accessor list: Employee[] | undefined;\n\n /**\n * 行业列表,用于指定 Tab 的顺序,未在此列表中的行业将按出现顺序附加在末尾\n */\n @property({ attribute: false })\n accessor industries: string[] | undefined;\n\n /**\n * 跳转到数字人详情页的 URL 模板,支持 {name} 等数字人字段插值\n */\n @property()\n accessor urlTemplate: string | undefined;\n\n /**\n * 行业 Tab 栏吸顶时距顶部的距离(px),不设置则不吸顶\n */\n @property({ type: Number })\n accessor stickyTop: number | undefined;\n\n render() {\n return (\n <AIEmployeesComponent\n list={this.list}\n industries={this.industries}\n urlTemplate={this.urlTemplate}\n stickyTop={this.stickyTop}\n />\n );\n }\n}\n\nfunction AIEmployeesComponent({\n list,\n industries: _industries,\n urlTemplate,\n stickyTop,\n}: AIEmployeesProps) {\n const industries = useMemo(() => {\n return [\n ...new Set([\n ...(_industries ?? []),\n ...(list ?? []).map((item) => item.industry),\n ]),\n ];\n }, [_industries, list]);\n\n const [activeIndustry, setActiveIndustry] = useState(industries[0]);\n\n // Grouping the list by role\n const groups = useMemo(() => {\n const map = new Map<string, Employee[]>();\n list?.forEach((item) => {\n if (item.industry !== activeIndustry) {\n return;\n }\n let array = map.get(item.role);\n if (!array) {\n map.set(item.role, (array = []));\n }\n array.push(item);\n });\n return [...map.entries()];\n }, [activeIndustry, list]);\n\n const tabs = useMemo<Tab[]>(() => {\n return industries.map((industry) => ({\n id: industry,\n label: industry || t(K.UNTITLED),\n }));\n }, [industries]);\n\n const tabsNode = (\n <WrappedTabList\n tabs={tabs}\n activeTab={activeIndustry}\n onTabClick={(event) => setActiveIndustry(event.detail.id)}\n />\n );\n\n return (\n <>\n {stickyTop == null ? (\n <div className=\"non-sticky-tabs\">{tabsNode}</div>\n ) : (\n <WrappedStickyContainer\n className=\"sticky-tabs\"\n style={{ top: stickyTop }}\n >\n {tabsNode}\n </WrappedStickyContainer>\n )}\n <ul className=\"groups\">\n {groups.map(([groupName, items]) => (\n <li key={groupName} className=\"group\">\n <h2>{groupName}</h2>\n <ul className=\"list\">\n {items.map((item, index) => (\n <li key={index}>\n <WrappedLink\n className={classNames(\"link\", { clickable: !!urlTemplate })}\n {...(urlTemplate\n ? { url: parseTemplate(urlTemplate, item) }\n : null)}\n >\n <div className=\"heading\">\n <div className=\"avatar\">\n {item.avatar ? (\n <img src={item.avatar} />\n ) : (\n <WrappedIcon lib=\"antd\" icon=\"user\" />\n )}\n </div>\n <div className=\"title\">{item.name}</div>\n </div>\n <div className=\"description\">{item.description}</div>\n </WrappedLink>\n </li>\n ))}\n </ul>\n </li>\n ))}\n </ul>\n </>\n );\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n AGENTS = \"AGENTS\",\n}\n\nconst en: Locale = {\n AGENTS: \"Agents\",\n};\n\nconst zh: Locale = {\n AGENTS: \"智能体\",\n};\n\nexport const NS = \"bricks/ai-portal/ai-agents\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport classNames from \"classnames\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport { parseTemplate } from \"../shared/parseTemplate.js\";\n\nconst DEFAULT_TOOL_ICON: GeneralIconProps = {\n lib: \"antd\",\n icon: \"tool\",\n};\n\ninitializeI18n(NS, locales);\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nconst { defineElement, property } = createDecorators();\n\nexport interface AIAgentsProps {\n list?: Agent[];\n urlTemplate?: string;\n /** @deprecated */\n withContainer?: boolean;\n}\n\nexport interface Agent {\n name: string;\n description: string;\n icon?: GeneralIconProps;\n tags?: string[];\n}\n\n/**\n * AI Agents 卡片列表,展示可用的 AI 智能体,支持点击跳转到对应详情页。\n *\n * @description AI Agents 卡片列表,展示可用的 AI 智能体,支持点击跳转到对应详情页。\n * @category ai-portal\n */\nexport\n@defineElement(\"ai-portal.ai-agents\", {\n styleTexts: [styleText],\n})\nclass AIAgents extends ReactNextElement implements AIAgentsProps {\n /**\n * AI Agent 列表数据\n */\n @property({ attribute: false })\n accessor list: Agent[] | undefined;\n\n /**\n * 跳转到 Agent 详情页的 URL 模板,支持 {name} 等 Agent 字段插值\n */\n @property()\n accessor urlTemplate: string | undefined;\n\n /** @deprecated */\n @property({ type: Boolean })\n accessor withContainer = true;\n\n render() {\n return (\n <AIAgentsComponent\n list={this.list}\n urlTemplate={this.urlTemplate}\n withContainer={this.withContainer}\n />\n );\n }\n}\n\nfunction AIAgentsComponent({\n list,\n urlTemplate,\n withContainer,\n}: AIAgentsProps) {\n const node = (\n <>\n <ul className=\"list\">\n {list?.map((item, index) => (\n <li key={index}>\n <WrappedLink\n className={classNames(\"link\", { clickable: !!urlTemplate })}\n {...(urlTemplate\n ? { url: parseTemplate(urlTemplate, item) }\n : null)}\n >\n <div className=\"heading\">\n <div className=\"icon\">\n <WrappedIcon\n {...(item.icon ?? DEFAULT_TOOL_ICON)}\n fallback={DEFAULT_TOOL_ICON}\n />\n </div>\n <div className=\"title\">{item.name}</div>\n </div>\n <div className=\"tags\">\n {item.tags?.map((tag, tagIndex) => (\n <span key={tagIndex} className=\"tag\">\n {tag}\n </span>\n ))}\n </div>\n <div className=\"description\">{item.description}</div>\n </WrappedLink>\n </li>\n ))}\n </ul>\n </>\n );\n\n if (!withContainer) {\n return node;\n }\n\n return (\n <div className=\"container\">\n <h1>{t(K.AGENTS)}</h1>\n {node}\n </div>\n );\n}\n","import { createProviderClass } from \"@next-core/utils/general\";\nimport type { RequestStore } from \"../shared/interfaces\";\n\nlet store: RequestStore | null = null;\n\nexport function saveRequestStore(value: RequestStore): void {\n store = value;\n}\n\nexport function loadRequestStore(): RequestStore | null {\n const value = store;\n store = null;\n return value;\n}\n\nexport function clearRequestStore(): void {\n store = null;\n}\n\ncustomElements.define(\n \"ai-portal.save-request-store\",\n createProviderClass(saveRequestStore)\n);\n\ncustomElements.define(\n \"ai-portal.load-request-store\",\n createProviderClass(loadRequestStore)\n);\n\ncustomElements.define(\n \"ai-portal.clear-request-store\",\n createProviderClass(clearRequestStore)\n);\n","import React, { useEffect } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { getRuntime } from \"@next-core/runtime\";\nimport \"@next-core/theme\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport styleText from \"./styles.shadow.css\";\nimport type {\n StickyContainer,\n StickyContainerProps,\n} from \"../sticky-container/index.js\";\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedStickyContainer = wrapBrick<StickyContainer, StickyContainerProps>(\n \"ai-portal.sticky-container\"\n);\n\nconst { defineElement, property } = createDecorators();\n\nexport interface PageContainerProps {\n pageTitle?: string;\n breadcrumbs?: Breadcrumb[];\n size?: \"medium\" | \"small\" | \"full\";\n variant?: \"default\" | \"form\";\n sticky?: boolean;\n}\n\nexport interface Breadcrumb {\n text: string;\n url: string;\n}\n\n/**\n * 构件 `ai-portal.page-container`\n *\n * 页面容器构件,提供统一的页面布局,包含面包屑导航、页面标题和内容区域。\n *\n * @slot - 内容\n * @slot toolbar - 工具栏\n */\nexport\n@defineElement(\"ai-portal.page-container\", {\n styleTexts: [styleText],\n})\nclass PageContainer extends ReactNextElement implements PageContainerProps {\n /** 页面标题,同时会调用 applyPageTitle 更新浏览器标签页标题 */\n @property()\n accessor pageTitle: string | undefined;\n\n /** 面包屑导航配置,每项包含 text 和 url */\n @property({ attribute: false })\n accessor breadcrumbs: Breadcrumb[] | undefined;\n\n /** 内容区域宽度模式,通过 CSS attribute selector 控制样式,不触发重新渲染 */\n @property({ render: false })\n accessor size: \"medium\" | \"small\" | \"full\" | undefined;\n\n /** 页面变体,通过 CSS attribute selector 控制样式,不触发重新渲染 */\n @property({ render: false })\n accessor variant: \"default\" | \"form\" | undefined;\n\n /** 是否固定头部(含面包屑和标题)到页面顶部 */\n @property({ type: Boolean })\n accessor sticky: boolean | undefined;\n\n render() {\n return (\n <PageContainerComponent\n pageTitle={this.pageTitle}\n breadcrumbs={this.breadcrumbs}\n sticky={this.sticky}\n />\n );\n }\n}\n\nfunction PageContainerComponent({\n breadcrumbs,\n pageTitle,\n sticky,\n}: PageContainerProps) {\n useEffect(() => {\n if (typeof pageTitle === \"string\") {\n getRuntime().applyPageTitle(pageTitle);\n }\n }, [pageTitle]);\n\n const header =\n pageTitle || breadcrumbs?.length ? (\n <div className=\"header\">\n <nav className={breadcrumbs?.length ? \"with-breadcrumbs\" : \"\"}>\n {breadcrumbs?.length ? (\n <ul className=\"breadcrumbs\">\n {breadcrumbs.map((item, index) => (\n <li key={index}>\n <WrappedLink url={item.url}>{item.text}</WrappedLink>\n </li>\n ))}\n </ul>\n ) : null}\n {pageTitle ? <h1>{pageTitle}</h1> : null}\n </nav>\n <div className=\"toolbar\">\n <slot name=\"toolbar\" />\n </div>\n </div>\n ) : null;\n\n return (\n <div className=\"container\">\n {header && sticky ? (\n <WrappedStickyContainer className=\"sticky-header\">\n {header}\n </WrappedStickyContainer>\n ) : (\n <div className=\"non-sticky-header\">{header}</div>\n )}\n <slot />\n </div>\n );\n}\n","import React from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport classNames from \"classnames\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface TabListProps {\n tabs?: Tab[];\n activeTab?: string;\n}\n\nexport interface Tab {\n id: string;\n label: string;\n}\n\nexport interface TabListEvents {\n \"tab.click\": CustomEvent<Tab>;\n}\n\nexport interface TabListMapping {\n onTabClick: \"tab.click\";\n}\n\n/**\n * 构件 `ai-portal.tab-list`\n *\n * 标签页列表构件,展示可切换的标签页,点击后触发事件并自动更新选中状态。\n *\n * @part tabs - The tab list container\n * @part tab - The individual tab\n */\nexport\n@defineElement(\"ai-portal.tab-list\", {\n styleTexts: [styleText],\n})\nclass TabList extends ReactNextElement implements TabListProps {\n /** 标签页配置列表,每项包含 id 和 label */\n @property({ attribute: false })\n accessor tabs: Tab[] | undefined;\n\n /** 当前激活的标签页 id */\n @property({ attribute: false })\n accessor activeTab: string | undefined;\n\n /**\n * @description 点击标签页时触发,同时自动更新 activeTab\n * @detail { id: 标签页ID, label: 标签页标题 }\n */\n @event({ type: \"tab.click\" })\n accessor #tabClick!: EventEmitter<Tab>;\n\n #handleTabClick = (tab: Tab) => {\n this.activeTab = tab.id;\n this.#tabClick.emit(tab);\n };\n\n render() {\n return (\n <TabListComponent\n tabs={this.tabs}\n activeTab={this.activeTab}\n onTabClick={this.#handleTabClick}\n />\n );\n }\n}\n\ninterface TabListComponentProps extends TabListProps {\n onTabClick: (tab: Tab) => void;\n}\n\nfunction TabListComponent({\n tabs,\n activeTab,\n onTabClick,\n}: TabListComponentProps) {\n return (\n <ul className=\"tabs\" part=\"tabs\">\n {tabs?.map((tab) => (\n <li\n key={tab.id}\n part=\"tab\"\n className={classNames(\"tab\", { active: tab.id === activeTab })}\n >\n <a onClick={() => onTabClick(tab)}>{tab.label}</a>\n </li>\n ))}\n </ul>\n );\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n PLEASE_SELECT = \"PLEASE_SELECT\",\n SEARCH_PLACEHOLDER = \"SEARCH_PLACEHOLDER\",\n SEARCH_NO_DATA = \"SEARCH_NO_DATA\",\n}\n\nconst en: Locale = {\n PLEASE_SELECT: \"Please Select\",\n SEARCH_PLACEHOLDER: \"Search\",\n SEARCH_NO_DATA: \"No Data\",\n};\n\nconst zh: Locale = {\n PLEASE_SELECT: \"请选择\",\n SEARCH_PLACEHOLDER: \"搜索\",\n SEARCH_NO_DATA: \"暂无结果\",\n};\n\nexport const NS = \"bricks/ai-portal/dropdown-select\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, { useState, useEffect, useCallback, useMemo } from \"react\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { debounce } from \"lodash\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport {\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping,\n} from \"@next-bricks/basic/popover\";\nimport { Menu } from \"@next-bricks/basic/menu\";\nimport { MenuItem, MenuComponentProps } from \"@next-bricks/basic/menu-item\";\nimport { GeneralIcon, GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport {\n LoadingContainer,\n LoadingContainerProps,\n} from \"@next-bricks/basic/loading-container\";\nimport { Input, InputEvents, InputProps } from \"@next-bricks/form/input\";\n\ninitializeI18n(NS, locales);\n\nconst { defineElement, property, event } = createDecorators();\nconst WrappedPopover = wrapBrick<\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping\n>(\"eo-popover\", {\n onVisibleChange: \"visible.change\",\n onBeforeVisibleChange: \"before.visible.change\",\n});\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedLoadingContainer = wrapBrick<\n LoadingContainer,\n LoadingContainerProps\n>(\"eo-loading-container\");\n\nconst WrappedMenu = wrapBrick<Menu, unknown>(\"eo-menu\");\nconst WrappedMenuItem = wrapBrick<MenuItem, MenuComponentProps>(\"eo-menu-item\");\n\nexport interface InputEventsMap {\n onValueChange: \"change\";\n}\n\nconst WrappedInput = wrapBrick<Input, InputProps, InputEvents, InputEventsMap>(\n \"eo-input\",\n {\n onValueChange: \"change\",\n }\n);\n\nexport interface DropdownSelectProps {\n value?: string;\n options?: DropdownOptions[];\n labelMaxWidth?: string | number;\n dropdownMaxWidth?: string | number;\n dropdownContentStyle?: React.CSSProperties;\n showSearch?: boolean;\n searchPlaceholder?: string;\n loading?: boolean;\n}\n\nexport interface DropdownOptions {\n label: string;\n value: string;\n disabled?: boolean;\n [key: string]: unknown;\n}\n\n/**\n * 下拉选择器,提供选项列表供用户选择,支持搜索过滤功能。\n *\n * @category interact-basic\n */\nexport\n@defineElement(\"ai-portal.dropdown-select\", {\n styleTexts: [styleText],\n})\nclass DropdownSelect extends ReactNextElement implements DropdownSelectProps {\n @property()\n accessor value: string | undefined;\n\n @property({ attribute: false })\n accessor options: DropdownOptions[] | undefined;\n\n @property({ attribute: false })\n accessor labelMaxWidth: string | number | undefined;\n\n @property({ type: Boolean })\n accessor loading: boolean | undefined;\n\n @property({ attribute: false })\n accessor searchPlaceholder: string | undefined;\n\n @property({ attribute: false })\n accessor dropdownContentStyle: React.CSSProperties | undefined;\n\n /**\n * @default \"500px\"\n */\n @property({ attribute: false })\n accessor dropdownMaxWidth: string | number | undefined;\n\n /** 是否展示搜索框 */\n @property({ type: Boolean })\n accessor showSearch: boolean | undefined;\n\n /**\n * @detail { label: 选项标签, value: 选项值 }\n * @description 选项选中时触发\n */\n @event({ type: \"change\" })\n accessor #changeEvent!: EventEmitter<DropdownOptions>;\n\n #handleChange = (option: DropdownOptions) => {\n this.#changeEvent.emit(option);\n };\n\n render() {\n return (\n <DropdownSelectComponent\n value={this.value}\n options={this.options}\n onChange={this.#handleChange}\n loading={this.loading}\n labelMaxWidth={this.labelMaxWidth}\n dropdownMaxWidth={this.dropdownMaxWidth}\n showSearch={this.showSearch}\n searchPlaceholder={this.searchPlaceholder}\n dropdownContentStyle={this.dropdownContentStyle}\n />\n );\n }\n}\n\ninterface DropdownSelectComponentProps extends DropdownSelectProps {\n onChange: (option: DropdownOptions) => void;\n}\n\nfunction DropdownSelectComponent({\n value: _value,\n options: _options,\n labelMaxWidth,\n dropdownMaxWidth,\n showSearch,\n loading,\n searchPlaceholder,\n dropdownContentStyle,\n onChange,\n}: DropdownSelectComponentProps) {\n const [open, setOpen] = useState(false);\n const [value, setValue] = useState(_value);\n const [q, setQ] = useState(\"\");\n const [options, setOptions] = useState<DropdownOptions[] | undefined>(\n _options\n );\n\n useEffect(() => {\n setOptions(_options);\n }, [_options]);\n\n const activeOption = useMemo(() => {\n return options?.find((opt) => opt.value === value);\n }, [options, value]);\n\n const filteredOptions = useMemo(() => {\n if (!q || !options) {\n return options;\n }\n return options?.filter((ops) =>\n ops.label.toLowerCase().includes(q.toLowerCase())\n );\n }, [options, q]);\n\n const handleBeforeVisibleChange = useCallback((e: CustomEvent<boolean>) => {\n setOpen(e.detail);\n if (!e.detail) {\n setQ(\"\");\n }\n }, []);\n\n const handleSearchChange = useMemo(\n () =>\n debounce((evt: CustomEvent<string>) => {\n setQ(evt.detail);\n }, 300),\n []\n );\n\n return (\n <WrappedPopover\n placement=\"bottom-start\"\n trigger=\"click\"\n active={open}\n arrow={false}\n distance={5}\n onBeforeVisibleChange={handleBeforeVisibleChange}\n >\n <span slot=\"anchor\" className=\"trigger\">\n <span className=\"label\" style={{ maxWidth: labelMaxWidth }}>\n {activeOption ? activeOption?.label : t(K.PLEASE_SELECT)}\n </span>\n <WrappedIcon lib=\"lucide\" icon={open ? \"chevron-up\" : \"chevron-down\"} />\n </span>\n <div className=\"dropdown\" style={{ maxWidth: dropdownMaxWidth }}>\n {showSearch && (\n <div className=\"search-container\">\n <WrappedInput\n className=\"search\"\n value={q}\n placeholder={searchPlaceholder || t(K.SEARCH_PLACEHOLDER)}\n onValueChange={handleSearchChange}\n >\n <WrappedIcon slot=\"prefix\" lib=\"antd\" icon=\"search\" />\n </WrappedInput>\n </div>\n )}\n <WrappedLoadingContainer\n loading={loading}\n delay={500}\n style={{ width: \"100%\" }}\n >\n <div className=\"dropdown-inner\" style={dropdownContentStyle}>\n <slot name=\"prefix\" />\n {!!filteredOptions?.length && (\n <WrappedMenu>\n {filteredOptions?.map((opt) => (\n <WrappedMenuItem\n key={opt.value}\n disabled={opt.disabled}\n className={value === opt.value ? \"active\" : undefined}\n onClick={(e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setOpen(false);\n if (value !== opt.value) {\n setValue(opt.value);\n onChange(opt);\n }\n }}\n >\n {opt.label}\n </WrappedMenuItem>\n ))}\n </WrappedMenu>\n )}\n {!filteredOptions?.length && (\n <div className=\"empty\">{t(K.SEARCH_NO_DATA)}</div>\n )}\n </div>\n </WrappedLoadingContainer>\n </div>\n </WrappedPopover>\n );\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n UNTITLED = \"UNTITLED\",\n}\n\nconst en: Locale = {\n UNTITLED: \"Untitled\",\n};\n\nconst zh: Locale = {\n UNTITLED: \"无标题\",\n};\n\nexport const NS = \"bricks/ai-portal/preview-container\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./styles.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./styles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { Suspense, use, useEffect, useMemo, useRef } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { unstable_createRoot } from \"@next-core/runtime\";\nimport type { ModulePartOfComponent, ParsedApp } from \"@next-tsx/parser\";\nimport { convertView, type ConvertResult } from \"@next-tsx/converter\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type {\n EoPageTitle,\n PageTitleProps,\n} from \"@next-bricks/basic/page-title\";\nimport type {\n EoMainView,\n MainViewProps,\n} from \"@next-bricks/containers/main-view\";\nimport type {\n EoNarrowView,\n NarrowViewProps,\n} from \"@next-bricks/containers/narrow-view\";\nimport { uniqueId } from \"lodash\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styles from \"./styles.module.css\";\nimport { getRemoteTsxParserWorker } from \"../shared/workers/tsxParser.js\";\nimport { createPortal } from \"../cruise-canvas/utils/createPortal.js\";\n\ninitializeI18n(NS, locales);\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedPageTitle = wrapBrick<EoPageTitle, PageTitleProps>(\n \"eo-page-title\"\n);\nconst WrappedMainView = wrapBrick<EoMainView, MainViewProps>(\"eo-main-view\");\nconst WrappedNarrowView = wrapBrick<EoNarrowView, NarrowViewProps>(\n \"eo-narrow-view\"\n);\n\nconst { defineElement, property } = createDecorators();\n\nexport interface PreviewContainerProps {\n source?: string;\n url?: string;\n}\n\n/**\n * 构件 `ai-portal.preview-container`\n *\n * TSX 源码预览容器,将 TSX 源码字符串解析并渲染为完整的页面视图。\n */\nexport\n@defineElement(\"ai-portal.preview-container\", {\n shadowOptions: false,\n})\nclass PreviewContainer\n extends ReactNextElement\n implements PreviewContainerProps\n{\n /** TSX 源码字符串,将被解析并渲染为页面视图 */\n @property({ attribute: false })\n accessor source: string | undefined;\n\n /** 渲染上下文中可访问的 URL,传入后可在视图内通过路由相关 API 使用 */\n @property()\n accessor url: string | undefined;\n\n #rootId = uniqueId();\n\n render() {\n return (\n <Suspense\n fallback={\n <WrappedIcon\n lib=\"antd\"\n icon=\"loading-3-quarters\"\n spinning\n className={styles.loading}\n />\n }\n >\n <PreviewContainerComponent\n rootId={this.#rootId}\n source={this.source}\n url={this.url}\n />\n </Suspense>\n );\n }\n}\n\ninterface PreviewContainerComponentProps extends PreviewContainerProps {\n rootId: string;\n}\n\nfunction PreviewContainerComponent({\n rootId,\n source,\n url,\n}: PreviewContainerComponentProps) {\n const parsedResultPromise = useMemo(() => {\n if (!source) {\n return Promise.resolve(null);\n }\n return parse(source).catch((error) => {\n // eslint-disable-next-line no-console\n console.error(\"Failed to parse view:\", error);\n return null;\n });\n }, [source]);\n\n const parsedResult = use(parsedResultPromise);\n\n const convertedResultPromise = useMemo(() => {\n if (!parsedResult) {\n return Promise.resolve(null);\n }\n return convertView(parsedResult, {\n rootId,\n expanded: true,\n }).catch((error) => {\n // eslint-disable-next-line no-console\n console.error(\"Failed to convert view:\", error);\n return null;\n });\n }, [parsedResult, rootId]);\n\n const convertedResult = use(convertedResultPromise);\n\n const viewTitle = useMemo(\n () => (parsedResult?.entry?.defaultExport as ModulePartOfComponent)?.title,\n [parsedResult]\n );\n\n return (\n <RenderComponent\n rootId={rootId}\n pageTitle={viewTitle}\n convertedResult={convertedResult}\n url={url}\n />\n );\n}\n\ninterface RenderComponentProps {\n rootId: string;\n pageTitle?: string;\n convertedResult: ConvertResult | null;\n url?: string;\n}\n\nfunction RenderComponent({\n rootId,\n pageTitle,\n convertedResult,\n url,\n}: RenderComponentProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const rootRef = useRef<Awaited<\n ReturnType<typeof unstable_createRoot>\n > | null>(null);\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) {\n return;\n }\n const portal = createPortal(rootId);\n const root = unstable_createRoot(container, {\n portal,\n supportsUseChildren: true,\n } as any);\n rootRef.current = root;\n return () => {\n root.unmount();\n portal.remove();\n rootRef.current = null;\n };\n }, [rootId]);\n\n useEffect(() => {\n if (!convertedResult) {\n return;\n }\n const { brick, context, functions, templates } = convertedResult;\n rootRef.current?.render(brick, { context, functions, templates, url });\n }, [convertedResult, url]);\n\n return (\n <WrappedNarrowView size=\"large\" className={styles.container}>\n <WrappedMainView>\n <WrappedPageTitle\n slot=\"pageTitle\"\n pageTitle={pageTitle || t(K.UNTITLED)}\n />\n <div className={styles.main} ref={containerRef} data-root-id={rootId} />\n </WrappedMainView>\n </WrappedNarrowView>\n );\n}\n\nasync function parse(source: string): Promise<ParsedApp> {\n const worker = await getRemoteTsxParserWorker();\n const result = await worker.parseView(source);\n return result;\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {}\n// HELLO = \"HELLO\",\n\nconst en: Locale = {\n // HELLO: \"Hello\",\n};\n\nconst zh: Locale = {\n // HELLO: \"你好\",\n};\n\nexport const NS = \"bricks/ai-portal/action-buttons\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { Button, ButtonProps } from \"@next-bricks/basic/button\";\nimport { NS, locales } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\n\ninitializeI18n(NS, locales);\n\nconst WrapperIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrapperButton = wrapBrick<Button, ButtonProps>(\"eo-button\");\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface ActionItem {\n text: string;\n key: string;\n icon?: GeneralIconProps;\n hidden?: boolean;\n}\n\nexport interface ActionButtonsProps {\n items?: ActionItem[];\n activeKey?: string | null;\n}\n\n/**\n * 动作按钮组,支持选中状态切换,用于聊天框的功能入口。\n *\n * @description 动作按钮组,支持选中状态切换,用于聊天框的功能入口。\n * @category ai-portal\n */\nexport\n@defineElement(\"ai-portal.action-buttons\", {\n styleTexts: [styleText],\n})\nclass ActionButtons extends ReactNextElement implements ActionButtonsProps {\n /**\n * 按钮列表配置,每项包含文本、唯一键值及可选图标\n */\n @property({\n attribute: false,\n })\n accessor items: ActionItem[] | undefined;\n\n /**\n * 当前选中按钮的键值,选中后显示删除图标,再次点击可取消选中\n */\n @property()\n accessor activeKey: string | null | undefined;\n\n /**\n * @detail { key: 按钮键值, text: 按钮文本, icon: 按钮图标 } | null — 选中时为选中的 ActionItem,取消选中时为 null\n * @description 选中或取消选中动作按钮时触发\n */\n @event({ type: \"change\" })\n accessor #change!: EventEmitter<ActionItem | null>;\n\n #handleChange = (action: ActionItem | null) => {\n this.activeKey = action ? action.key : null;\n this.#change.emit(action);\n };\n\n render() {\n return (\n <ActionButtonsComponent\n items={this.items}\n activeKey={this.activeKey}\n onChange={this.#handleChange}\n />\n );\n }\n}\n\ninterface ActionButtonsComponentProps extends ActionButtonsProps {\n onChange: (action: ActionItem | null) => void;\n}\n\nfunction ActionButtonsComponent({\n items,\n activeKey: propActiveKey,\n onChange,\n}: ActionButtonsComponentProps) {\n const [activeKey, setActiveKey] = useState<string | null>(\n propActiveKey ?? null\n );\n const initializedRef = useRef(false);\n\n useEffect(() => {\n setActiveKey(propActiveKey ?? null);\n }, [propActiveKey]);\n\n useEffect(() => {\n if (!initializedRef.current) {\n initializedRef.current = true;\n return;\n }\n onChange(\n activeKey\n ? (items?.find((item) => !item.hidden && item.key === activeKey) ??\n null)\n : null\n );\n }, [activeKey, items, onChange]);\n\n const filteredItems = useMemo(() => {\n return items?.filter(\n (item) => (!item.hidden && !activeKey) || item.key === activeKey\n );\n }, [items, activeKey]);\n\n return (\n <div className=\"button-container\">\n {filteredItems?.map((item) => {\n const { text, icon, key } = item;\n return (\n <WrapperButton\n key={key}\n className={`action${activeKey ? \" active\" : \"\"}`}\n themeVariant=\"elevo\"\n type=\"neutral\"\n onClick={() => {\n if (!activeKey) {\n setActiveKey(key);\n }\n }}\n >\n {icon ? <WrapperIcon className=\"icon\" {...icon} /> : null}\n {text}\n {activeKey ? (\n <WrapperIcon\n className=\"remove\"\n lib=\"lucide\"\n icon=\"x\"\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n setActiveKey(null);\n }}\n />\n ) : null}\n </WrapperButton>\n );\n })}\n </div>\n );\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n UN_START_STATUS = \"UN_START_STATUS\",\n RUNNING_STATUS = \"RUNNING_STATUS\",\n COMPLETED_STATUS = \"COMPLETED_STATUS\",\n NEW_CHAT = \"NEW_CHAT\",\n}\n\nconst en: Locale = {\n UN_START_STATUS: \"Not Start\",\n RUNNING_STATUS: \"Running\",\n COMPLETED_STATUS: \"Completed\",\n NEW_CHAT: \"New chat\",\n};\n\nconst zh: Locale = {\n UN_START_STATUS: \"未开始\",\n RUNNING_STATUS: \"运行中\",\n COMPLETED_STATUS: \"已完成\",\n NEW_CHAT: \"新对话\",\n};\n\nexport const NS = \"bricks/ai-portal/goal-card-list\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","// istanbul ignore file: compatibility workaround\nimport type { HTMLAttributes } from \"react\";\n\nlet _supports: boolean | undefined;\n\nfunction supportsContentEditablePlaintextOnly(): boolean {\n if (typeof _supports !== \"boolean\") {\n const div = document.createElement(\"div\");\n div.setAttribute(\"contenteditable\", \"PLAINTEXT-ONLY\");\n _supports = div.contentEditable === \"plaintext-only\";\n }\n return _supports;\n}\n\nexport function getContentEditable(\n editable: boolean\n): HTMLAttributes<HTMLDivElement>[\"contentEditable\"] {\n return editable\n ? supportsContentEditablePlaintextOnly()\n ? \"plaintext-only\"\n : \"true\"\n : \"false\";\n}\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type {\n EoDropdownActions,\n DropdownActionsProps,\n DropdownActionsEvents,\n DropdownActionsEventsMapping,\n} from \"@next-bricks/basic/dropdown-actions\";\nimport type {\n EoEasyopsAvatar,\n EoEasyopsAvatarProps,\n} from \"@next-bricks/basic/easyops-avatar\";\nimport type { Button, ButtonProps } from \"@next-bricks/basic/button\";\nimport type { Action, SimpleAction } from \"@next-bricks/basic/actions\";\nimport classNames from \"classnames\";\nimport { K, NS, locales, t } from \"../i18n.js\";\nimport { getContentEditable } from \"../../shared/getContentEditable.js\";\ninitializeI18n(NS, locales);\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedDropdownActions = wrapBrick<\n EoDropdownActions,\n DropdownActionsProps,\n DropdownActionsEvents,\n DropdownActionsEventsMapping\n>(\"eo-dropdown-actions\", {\n onActionClick: \"action.click\",\n onVisibleChange: \"visible.change\",\n});\nconst WrappedEasyopsAvatar = wrapBrick<EoEasyopsAvatar, EoEasyopsAvatarProps>(\n \"eo-easyops-avatar\"\n);\nconst WrappedButton = wrapBrick<Button, ButtonProps>(\"eo-button\");\n\nexport interface InputEventsMap {\n onValueChange: \"change\";\n}\n\nexport type GoalState = \"ready\" | \"working\" | \"completed\";\n\ninterface GoalMember {\n instanceId: string;\n}\n\nexport interface GoalItem {\n title: string;\n description?: string;\n state: GoalState;\n id: number;\n conversations?: number;\n owner?: GoalMember;\n users?: GoalMember[];\n instanceId: string;\n level: number;\n pending?: boolean;\n pendingParentId?: string;\n}\n\ninterface GoalCardItemProps {\n goalItem: GoalItem;\n idWidth?: number;\n cardStyle?: React.CSSProperties;\n isActive?: boolean;\n onTitleChange?: (newTitle: string) => void;\n onStatusChange?: (newStatus: GoalState) => void;\n onNewChat?: () => void;\n onClick?: () => void;\n onAppendChild?: () => void;\n onRevokeAppendChild?: () => void;\n}\n\nconst iconMap = {\n ready: \"uncheck-status\",\n working: \"active-status\",\n completed: \"check-status\",\n};\n\nconst iconActions: Action[] = [\n {\n key: \"ready\",\n icon: {\n icon: \"uncheck-status\",\n lib: \"easyops\",\n category: \"colored-common\",\n },\n text: t(K.UN_START_STATUS),\n },\n {\n key: \"working\",\n icon: {\n icon: \"active-status\",\n lib: \"easyops\",\n category: \"colored-common\",\n },\n text: t(K.RUNNING_STATUS),\n },\n {\n key: \"completed\",\n icon: {\n icon: \"check-status\",\n lib: \"easyops\",\n category: \"colored-common\",\n },\n text: t(K.COMPLETED_STATUS),\n },\n];\n\nexport function GoalCardItem({\n goalItem,\n idWidth,\n cardStyle,\n onStatusChange,\n onTitleChange,\n onClick,\n onNewChat,\n onAppendChild,\n onRevokeAppendChild,\n isActive,\n}: GoalCardItemProps) {\n const {\n state,\n id: serialNumber,\n title,\n conversations,\n owner,\n pending,\n } = goalItem;\n\n const handleStatusChange = (action: SimpleAction) => {\n onStatusChange?.(action.key as GoalState);\n };\n\n const compositionRef = useRef(false);\n\n const handleCompositionStart = useCallback(() => {\n compositionRef.current = true;\n }, []);\n\n const handleCompositionEnd = useCallback(() => {\n compositionRef.current = false;\n }, []);\n\n const [editing, setEditing] = useState(false);\n\n const handleFocus = useCallback(() => {\n setEditing(true);\n }, []);\n\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLSpanElement>) => {\n setEditing(false);\n const value = e.currentTarget.textContent;\n\n if (pending && !value?.trim()) {\n onRevokeAppendChild?.();\n return;\n }\n\n if (value !== null && title !== value) {\n onTitleChange?.(value);\n }\n },\n [pending, title, onRevokeAppendChild, onTitleChange]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLSpanElement>) => {\n if (compositionRef.current) {\n // Ignore key events during composition\n return;\n }\n if (e.key === \"Enter\") {\n e.preventDefault();\n e.currentTarget.blur();\n }\n },\n []\n );\n\n const titleRef = useRef<HTMLSpanElement>(null);\n\n useEffect(() => {\n if (pending) {\n titleRef.current?.focus();\n }\n }, [pending]);\n\n return (\n <div\n className={classNames(\n \"goal-item\",\n goalItem.state,\n { editing },\n { active: isActive }\n )}\n style={{\n paddingLeft: `${(goalItem.level + 1) * 24}px`,\n ...cardStyle,\n }}\n onClick={pending ? undefined : onClick}\n >\n <div className=\"start\">\n <WrappedDropdownActions\n actions={iconActions}\n disabled={pending}\n onActionClick={(e) => {\n handleStatusChange(e.detail);\n }}\n >\n <WrappedIcon\n className=\"icon\"\n lib=\"easyops\"\n category=\"colored-common\"\n icon={iconMap[state]}\n onClick={(e) => e.stopPropagation()}\n />\n </WrappedDropdownActions>\n\n <span className=\"serial-number\" style={{ width: idWidth }}>\n #{pending ? \"\" : serialNumber}\n </span>\n <span\n className=\"title\"\n ref={titleRef}\n onClick={(e) => e.stopPropagation()}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onCompositionStart={handleCompositionStart}\n onCompositionEnd={handleCompositionEnd}\n contentEditable={getContentEditable(true)}\n suppressContentEditableWarning\n >\n {title}\n </span>\n </div>\n <div className=\"end\">\n <div className=\"info\">\n <div className=\"message\">\n <WrappedIcon lib=\"easyops\" category=\"common\" icon=\"message\" />\n <span className=\"count\">{conversations || 0}</span>\n </div>\n <WrappedEasyopsAvatar\n nameOrInstanceId={owner?.instanceId}\n size=\"small\"\n />\n </div>\n <div className=\"operation\" onClick={(e) => e.stopPropagation()}>\n {goalItem.level === 0 && (\n <WrappedButton\n className=\"append-child\"\n themeVariant=\"elevo\"\n type=\"neutral\"\n size=\"small\"\n onClick={onAppendChild}\n >\n <WrappedIcon lib=\"lucide\" icon=\"plus\" />\n </WrappedButton>\n )}\n {!pending && (\n <WrappedButton\n className=\"new-chat\"\n themeVariant=\"elevo\"\n type=\"neutral\"\n size=\"small\"\n onClick={onNewChat}\n >\n {t(K.NEW_CHAT)}\n </WrappedButton>\n )}\n </div>\n </div>\n </div>\n );\n}\n","import React, {\n useState,\n useEffect,\n forwardRef,\n createRef,\n useImperativeHandle,\n useMemo,\n} from \"react\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { NS, locales } from \"./i18n.js\";\nimport CardItemStyleText from \"./CardItem/CardItem.shadow.css\";\nimport styleText from \"./styles.shadow.css\";\nimport { GoalCardItem, GoalItem, GoalState } from \"./CardItem/CardItem.js\";\nimport { GeneralIcon, GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport { uniqueId } from \"lodash\";\n\nexport type { GoalItem };\n\ninitializeI18n(NS, locales);\n\nconst { defineElement, property, event, method } = createDecorators();\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface GoalCardListProps {\n goalList?: GoalItem[];\n cardStyle?: React.CSSProperties;\n activeKey?: string;\n}\n\nconst GoalCardListComponent = forwardRef(LegacyGoalCardListComponent);\n\n/**\n * 目标卡片列表,以分层卡片形式展示目标项,支持内联编辑标题、状态切换、新建对话及追加子目标。\n *\n * @category display-component\n */\nexport\n@defineElement(\"ai-portal.goal-card-list\", {\n styleTexts: [styleText, CardItemStyleText],\n})\nclass GoalCardList extends ReactNextElement implements GoalCardListProps {\n @property({\n attribute: false,\n })\n accessor goalList: GoalItem[] | undefined;\n\n @property({\n attribute: false,\n })\n accessor cardStyle: React.CSSProperties | undefined;\n\n @property()\n accessor activeKey: string | undefined;\n\n /**\n * @detail { title: 目标标题, state: 目标状态, id: 序号, instanceId: 实例ID, level: 层级 }\n * @description 点击目标卡片时触发\n */\n @event({ type: \"item.click\" })\n accessor #itemClickEvent!: EventEmitter<GoalItem>;\n #handleItemClick = (item: GoalItem) => {\n this.#itemClickEvent.emit(item);\n };\n\n /**\n * @detail { title: 目标标题, state: 更新后的目标状态, id: 序号, instanceId: 实例ID, level: 层级 }\n * @description 目标状态切换时触发\n */\n @event({ type: \"item.status.change\" })\n accessor #itemStatusChangeEvent!: EventEmitter<GoalItem>;\n #handleItemStatusChange = (item: GoalItem) => {\n this.#itemStatusChangeEvent.emit(item);\n };\n\n /**\n * @detail { title: 更新后的标题, state: 目标状态, id: 序号, instanceId: 实例ID, level: 层级 }\n * @description 目标标题内联编辑完成时触发\n */\n @event({ type: \"item.title.change\" })\n accessor #itemTitleChangeEvent!: EventEmitter<GoalItem>;\n #handleTitleChange = (item: GoalItem) => {\n this.#itemTitleChangeEvent.emit(item);\n };\n\n /**\n * @detail { title: 目标标题, state: 目标状态, id: 序号, instanceId: 实例ID, level: 层级 }\n * @description 点击目标卡片的新建对话按钮时触发\n */\n @event({ type: \"item.new.chat\" })\n accessor #itemNewChatEvent!: EventEmitter<GoalItem>;\n #handleNewChat = (item: GoalItem) => {\n this.#itemNewChatEvent.emit(item);\n };\n\n #ref = createRef<GoalListRef>();\n\n /**\n * 将待定子目标提交为正式目标项\n * @param pendingId 待定子目标的临时 instanceId\n * @param newItem 创建完成后的真实目标数据\n */\n @method()\n appendChildDone(pendingId: string, newItem: GoalItem) {\n this.#ref.current?.appendChildDone(pendingId, newItem);\n }\n\n render() {\n return (\n <GoalCardListComponent\n ref={this.#ref}\n goalList={this.goalList}\n cardStyle={this.cardStyle}\n onTitleChange={this.#handleTitleChange}\n onStatusChange={this.#handleItemStatusChange}\n onItemClick={this.#handleItemClick}\n onNewChat={this.#handleNewChat}\n activeKey={this.activeKey}\n />\n );\n }\n}\n\ninterface GoalCardListComponentProps extends GoalCardListProps {\n onTitleChange?: (item: GoalItem) => void;\n onStatusChange?: (item: GoalItem) => void;\n onItemClick?: (item: GoalItem) => void;\n onNewChat?: (item: GoalItem) => void;\n}\n\ninterface GoalListRef {\n appendChildDone: (pendingId: string, newItem: GoalItem) => void;\n}\n\nfunction LegacyGoalCardListComponent(\n {\n goalList: _goalList,\n cardStyle,\n onTitleChange,\n onStatusChange,\n onItemClick,\n onNewChat,\n activeKey,\n }: GoalCardListComponentProps,\n ref: React.Ref<GoalListRef>\n) {\n const [goalList, setGoalList] = useState(_goalList);\n\n useEffect(() => {\n setGoalList(_goalList);\n }, [_goalList]);\n\n const updateGoalItem = <T extends keyof GoalItem>(\n item: GoalItem,\n field: T,\n value: GoalItem[T],\n callback?: (updatedItem: GoalItem) => void\n ) => {\n const updatedItem = {\n ...item,\n [field]: value,\n };\n\n setGoalList(\n goalList?.map((goalItem) =>\n goalItem.instanceId === updatedItem.instanceId ? updatedItem : goalItem\n )\n );\n\n callback?.(updatedItem);\n };\n\n const handleTitleChange = (newTitle: string, item: GoalItem) => {\n updateGoalItem(item, \"title\", newTitle, onTitleChange);\n };\n\n const handleStatusChange = (newStatus: GoalState, item: GoalItem) => {\n updateGoalItem(item, \"state\", newStatus, onStatusChange);\n };\n\n const handleAppendChild = (item: GoalItem) => {\n const newChild: GoalItem = {\n instanceId:\n process.env.NODE_ENV === \"test\"\n ? \"test-pending-id\"\n : uniqueId(\"pending-\"),\n pending: true,\n id: 0,\n title: \"\",\n state: \"ready\",\n level: 1,\n pendingParentId: item.instanceId,\n };\n setGoalList((prevList) => {\n const index =\n prevList?.findIndex((goal) => goal.instanceId === item.instanceId) ??\n -1;\n if (index === -1) return prevList;\n const offsetIndex =\n prevList!.slice(index + 1).findIndex((goal) => goal.level === 0) + 1;\n if (offsetIndex === 0) {\n return [...prevList!, newChild];\n }\n return [\n ...prevList!.slice(0, index + offsetIndex),\n newChild,\n ...prevList!.slice(index + offsetIndex),\n ];\n });\n };\n\n useImperativeHandle(\n ref,\n () => ({\n appendChildDone: (pendingId: string, newItem: GoalItem) => {\n setGoalList((prevList) =>\n prevList?.map((goal) =>\n goal.instanceId === pendingId\n ? { ...newItem, level: goal.level }\n : goal\n )\n );\n },\n }),\n []\n );\n\n const idWidth = useMemo(() => {\n const maxId =\n goalList?.reduce((max, item) => Math.max(max, item.id), 0) ?? 0;\n return 10 * (maxId.toString().length + 1);\n }, [goalList]);\n\n if (!goalList) {\n return (\n <div className=\"loading\">\n <WrappedIcon lib=\"antd\" icon=\"loading-3-quarters\" spinning />\n </div>\n );\n }\n\n return (\n <div className=\"goal-container\">\n {goalList?.map((item) => (\n <GoalCardItem\n key={item.instanceId}\n isActive={activeKey === item.instanceId}\n goalItem={item}\n idWidth={idWidth}\n cardStyle={cardStyle}\n onTitleChange={(v) => handleTitleChange(v, item)}\n onStatusChange={(v) => handleStatusChange(v, item)}\n onNewChat={() => onNewChat?.(item)}\n onClick={() => onItemClick?.(item)}\n onAppendChild={() => handleAppendChild(item)}\n onRevokeAppendChild={() => {\n setGoalList((prevList) =>\n prevList?.filter((goal) => goal.instanceId !== item.instanceId)\n );\n }}\n />\n ))}\n </div>\n );\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n PROJECT_OVERALL = \"PROJECT_OVERALL\",\n}\n\nconst en: Locale = {\n PROJECT_OVERALL: \"Project overall\",\n};\n\nconst zh: Locale = {\n PROJECT_OVERALL: \"项目整体\",\n};\n\nexport const NS = \"bricks/ai-portal/project-conversations\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n, i18n } from \"@next-core/i18n\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type {\n EoEasyopsAvatar,\n EoEasyopsAvatarProps,\n} from \"@next-bricks/basic/easyops-avatar\";\nimport type {\n ActionType,\n EoMiniActions,\n EoMiniActionsEvents,\n EoMiniActionsEventsMapping,\n EoMiniActionsProps,\n SimpleActionType,\n} from \"@next-bricks/basic/mini-actions\";\nimport { humanizeTime, HumanizeTimeFormat } from \"@next-shared/datetime\";\nimport classNames from \"classnames\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport { parseTemplate } from \"../shared/parseTemplate.js\";\n\ninitializeI18n(NS, locales);\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedAvatar = wrapBrick<EoEasyopsAvatar, EoEasyopsAvatarProps>(\n \"eo-easyops-avatar\"\n);\nconst WrappedMiniActions = wrapBrick<\n EoMiniActions,\n EoMiniActionsProps,\n EoMiniActionsEvents,\n EoMiniActionsEventsMapping\n>(\"eo-mini-actions\", {\n onActionClick: \"action.click\",\n onVisibleChange: \"visible.change\",\n});\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface ProjectConversationsProps {\n list?: Conversation[];\n urlTemplate?: string;\n actions?: ActionType[];\n goals?: Goal[];\n}\n\nexport interface Conversation {\n conversationId: string;\n title: string;\n startTime: number;\n description?: string;\n goalInstanceId?: string;\n username?: string;\n}\n\nexport interface ActionClickDetail {\n action: SimpleActionType;\n item: Conversation;\n}\n\nexport interface Goal {\n instanceId: string;\n title: string;\n}\n\n/**\n * 构件 `ai-portal.project-conversations`\n */\nexport\n@defineElement(\"ai-portal.project-conversations\", {\n styleTexts: [styleText],\n})\nclass ProjectConversations\n extends ReactNextElement\n implements ProjectConversationsProps\n{\n @property({ attribute: false })\n accessor list: Conversation[] | undefined;\n\n @property()\n accessor urlTemplate: string | undefined;\n\n @property({ attribute: false })\n accessor actions: ActionType[] | undefined;\n\n @property({ attribute: false })\n accessor goals: Goal[] | undefined;\n\n @event({ type: \"goal.click\" })\n accessor #goalClick!: EventEmitter<Conversation>;\n\n #handleGoalClick = (conversation: Conversation) => {\n this.#goalClick.emit(conversation);\n };\n\n @event({ type: \"action.click\" })\n accessor #actionClick!: EventEmitter<ActionClickDetail>;\n\n #handleActionClick = (detail: ActionClickDetail) => {\n this.#actionClick.emit(detail);\n };\n\n render() {\n return (\n <ProjectConversationsComponent\n list={this.list}\n urlTemplate={this.urlTemplate}\n actions={this.actions}\n goals={this.goals}\n onGoalClick={this.#handleGoalClick}\n onActionClick={this.#handleActionClick}\n />\n );\n }\n}\n\ninterface ProjectConversationsComponentProps extends ProjectConversationsProps {\n onGoalClick: (conversation: Conversation) => void;\n onActionClick: (detail: ActionClickDetail) => void;\n}\n\nfunction ProjectConversationsComponent({\n list,\n urlTemplate,\n actions,\n goals,\n onGoalClick,\n onActionClick,\n}: ProjectConversationsComponentProps) {\n if (!list) {\n return (\n <div className=\"loading\">\n <WrappedIcon lib=\"antd\" icon=\"loading-3-quarters\" spinning />\n </div>\n );\n }\n\n return (\n <ul>\n {list.map((item) => (\n <li className=\"item\" key={item.conversationId}>\n <ConversationLink\n conversation={item}\n urlTemplate={urlTemplate}\n actions={actions}\n goals={goals}\n onGoalClick={onGoalClick}\n onActionClick={onActionClick}\n />\n </li>\n ))}\n </ul>\n );\n}\n\ninterface ConversationLinkProps\n extends Pick<\n ProjectConversationsComponentProps,\n \"urlTemplate\" | \"actions\" | \"goals\" | \"onGoalClick\" | \"onActionClick\"\n > {\n conversation: Conversation;\n}\n\nfunction ConversationLink({\n conversation,\n urlTemplate,\n actions,\n goals,\n onGoalClick,\n onActionClick,\n}: ConversationLinkProps) {\n const goalRef = useRef<HTMLDivElement>(null);\n const language = i18n.language.split(\"-\")[0];\n\n // <eo-link> handles click manually,\n // so we need to stop propagation and prevent default manually.\n useEffect(() => {\n const el = goalRef.current;\n if (!el) return;\n const handleClick = (e: MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n onGoalClick(conversation);\n };\n el.addEventListener(\"click\", handleClick);\n return () => {\n el.removeEventListener(\"click\", handleClick);\n };\n }, [conversation, onGoalClick]);\n\n const [actionsVisible, setActionsVisible] = useState(false);\n\n return (\n <WrappedLink\n className={classNames(\"link\", { \"actions-active\": actionsVisible })}\n url={parseTemplate(urlTemplate, conversation)}\n >\n <div className=\"main\">\n <div className=\"header\">\n <WrappedIcon\n className=\"icon\"\n lib=\"easyops\"\n category=\"common\"\n icon=\"clock\"\n />\n <div className=\"title\">{conversation.title}</div>\n </div>\n {conversation.description && (\n <div className=\"description\">{conversation.description}</div>\n )}\n </div>\n {goals && (\n <div\n className={classNames(\"goal\", {\n global: !conversation.goalInstanceId,\n })}\n ref={goalRef}\n >\n {conversation.goalInstanceId\n ? goals.find((g) => g.instanceId === conversation.goalInstanceId)\n ?.title\n : t(K.PROJECT_OVERALL)}\n </div>\n )}\n <WrappedAvatar\n className=\"avatar\"\n size=\"small\"\n nameOrInstanceId={conversation.username}\n />\n <div className={`operations lang-${language}`}>\n <WrappedMiniActions\n className=\"actions\"\n actions={actions}\n onActionClick={(e) => {\n onActionClick({ action: e.detail, item: conversation });\n }}\n onVisibleChange={(e) => {\n setActionsVisible(e.detail);\n }}\n />\n <div\n className=\"time\"\n title={\n humanizeTime(\n conversation.startTime * 1000,\n HumanizeTimeFormat.full\n )!\n }\n >\n {humanizeTime(\n conversation.startTime * 1000,\n HumanizeTimeFormat.relative\n )}\n </div>\n </div>\n </WrappedLink>\n );\n}\n","import React, { useState } from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\n// import { initializeI18n } from \"@next-core/i18n\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type {\n ActionType,\n EoMiniActions,\n EoMiniActionsEvents,\n EoMiniActionsEventsMapping,\n EoMiniActionsProps,\n SimpleActionType,\n} from \"@next-bricks/basic/mini-actions\";\nimport { humanizeTime, HumanizeTimeFormat } from \"@next-shared/datetime\";\nimport classNames from \"classnames\";\n// import { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport { parseTemplate } from \"../shared/parseTemplate.js\";\nimport {\n EoEasyopsAvatar,\n EoEasyopsAvatarProps,\n} from \"@next-bricks/basic/easyops-avatar\";\n\n// initializeI18n(NS, locales);\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst WrappedAvatar = wrapBrick<EoEasyopsAvatar, EoEasyopsAvatarProps>(\n \"eo-easyops-avatar\"\n);\nconst WrappedMiniActions = wrapBrick<\n EoMiniActions,\n EoMiniActionsProps,\n EoMiniActionsEvents,\n EoMiniActionsEventsMapping\n>(\"eo-mini-actions\", {\n onActionClick: \"action.click\",\n onVisibleChange: \"visible.change\",\n});\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface ProjectKnowledgesProps {\n list?: Knowledge[];\n urlTemplate?: string;\n actions?: ActionType[];\n}\n\nexport interface Knowledge {\n instanceId: string;\n name: string;\n description?: string;\n time: number;\n user?: string;\n}\n\nexport interface ActionClickDetail {\n action: SimpleActionType;\n item: Knowledge;\n}\n\n/**\n * 构件 `ai-portal.project-knowledges`\n *\n * 项目知识库列表构件,展示项目中的知识条目,支持操作菜单和点击跳转。\n */\nexport\n@defineElement(\"ai-portal.project-knowledges\", {\n styleTexts: [styleText],\n})\nclass ProjectKnowledges\n extends ReactNextElement\n implements ProjectKnowledgesProps\n{\n /** 知识列表数据,为 undefined 时显示加载状态 */\n @property({ attribute: false })\n accessor list: Knowledge[] | undefined;\n\n /** 知识详情链接模板,支持使用知识字段插值 */\n @property()\n accessor urlTemplate: string | undefined;\n\n /** 操作菜单配置,每条知识行尾显示可操作的菜单项 */\n @property({ attribute: false })\n accessor actions: ActionType[] | undefined;\n\n /**\n * @description 点击操作菜单项时触发\n * @detail { action: 操作项配置, item: 所属知识数据 }\n */\n @event({ type: \"action.click\" })\n accessor #actionClick!: EventEmitter<ActionClickDetail>;\n\n /**\n * @description 点击知识条目时触发\n * @detail { instanceId: 知识ID, name: 知识名称, description: 描述, time: 时间戳, user: 创建人 }\n */\n @event({ type: \"item.click\" })\n accessor #itemClick!: EventEmitter<Knowledge>;\n\n #handleActionClick = (detail: ActionClickDetail) => {\n this.#actionClick.emit(detail);\n };\n\n #handleItemClick = (item: Knowledge) => {\n this.#itemClick.emit(item);\n };\n\n render() {\n return (\n <ProjectKnowledgesComponent\n list={this.list}\n urlTemplate={this.urlTemplate}\n actions={this.actions}\n onActionClick={this.#handleActionClick}\n onItemClick={this.#handleItemClick}\n />\n );\n }\n}\n\ninterface ProjectKnowledgesComponentProps extends ProjectKnowledgesProps {\n onActionClick: (detail: ActionClickDetail) => void;\n onItemClick?: (item: Knowledge) => void;\n}\n\nfunction ProjectKnowledgesComponent({\n list,\n urlTemplate,\n actions,\n onActionClick,\n onItemClick,\n}: ProjectKnowledgesComponentProps) {\n if (!list) {\n return (\n <div className=\"loading\">\n <WrappedIcon lib=\"antd\" icon=\"loading-3-quarters\" spinning />\n </div>\n );\n }\n\n return (\n <ul>\n {list?.map((item) => (\n <li className=\"item\" key={item.instanceId}>\n <KnowledgeLink\n knowledge={item}\n urlTemplate={urlTemplate}\n actions={actions}\n onActionClick={onActionClick}\n onItemClick={onItemClick}\n />\n </li>\n ))}\n </ul>\n );\n}\n\ninterface KnowledgeLinkProps\n extends Pick<\n ProjectKnowledgesComponentProps,\n \"urlTemplate\" | \"actions\" | \"onActionClick\" | \"onItemClick\"\n > {\n knowledge: Knowledge;\n}\n\nfunction KnowledgeLink({\n knowledge,\n urlTemplate,\n actions,\n onActionClick,\n onItemClick,\n}: KnowledgeLinkProps) {\n const [actionsVisible, setActionsVisible] = useState(false);\n\n return (\n <WrappedLink\n className={classNames(\"link\", { \"actions-active\": actionsVisible })}\n url={parseTemplate(urlTemplate, knowledge)}\n onClick={() => onItemClick?.(knowledge)}\n >\n <div className=\"main\">\n <div className=\"header\">\n <WrappedIcon\n className=\"icon\"\n lib=\"easyops\"\n icon=\"lightbulb\"\n category=\"common\"\n />\n <span className=\"title\">{knowledge.name}</span>\n <WrappedIcon className=\"attachment\" lib=\"lucide\" icon=\"paperclip\" />\n </div>\n {knowledge.description && (\n <div className=\"description\">{knowledge.description}</div>\n )}\n </div>\n <div className=\"time\">\n {humanizeTime(knowledge.time * 1000, HumanizeTimeFormat.relative)}\n </div>\n <div className=\"operations\">\n <WrappedMiniActions\n className=\"actions\"\n actions={actions}\n onActionClick={(e) => {\n onActionClick({ action: e.detail, item: knowledge });\n }}\n onVisibleChange={(e) => {\n setActionsVisible(e.detail);\n }}\n />\n <WrappedAvatar\n className=\"avatar\"\n size=\"small\"\n nameOrInstanceId={knowledge.user}\n />\n </div>\n </WrappedLink>\n );\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n STARTED_A_CHAT = \"STARTED_A_CHAT\",\n CREATED_THIS_GOAL = \"CREATED_THIS_GOAL\",\n CHANGED_THE_GOAL_TITLE = \"CHANGED_THE_GOAL_TITLE\",\n CHANGED_THE_GOAL_DESCRIPTION = \"CHANGED_THE_GOAL_DESCRIPTION\",\n CHANGED_THE_GOAL = \"CHANGED_THE_GOAL\",\n DELETED_THIS_GOAL = \"DELETED_THIS_GOAL\",\n DECOMPOSED_THIS_GOAL = \"DECOMPOSED_THIS_GOAL\",\n SET_OWNER = \"SET_OWNER\",\n REMOVED_GOAL_PARTICIPANTS = \"REMOVED_GOAL_PARTICIPANTS\",\n ADDED_GOAL_PARTICIPANTS = \"ADDED_GOAL_PARTICIPANTS\",\n COMMENTED = \"COMMENTED\",\n COMMA = \"COMMA\",\n SEMICOLON = \"SEMICOLON\",\n}\n\nconst en: Locale = {\n STARTED_A_CHAT: \"started a chat\",\n CREATED_THIS_GOAL: \"created this goal\",\n CHANGED_THE_GOAL_TITLE: 'changed the goal title to \"{{ title }}\"',\n CHANGED_THE_GOAL_DESCRIPTION:\n 'changed the goal description to \"{{ description }}\"',\n CHANGED_THE_GOAL: \"changed the goal\",\n DELETED_THIS_GOAL: \"deleted this goal\",\n DECOMPOSED_THIS_GOAL: \"decomposed this goal to {{ count }} sub-goal: \",\n DECOMPOSED_THIS_GOAL_plural:\n \"decomposed this goal to {{ count }} sub-goals: \",\n SET_OWNER: \"set {{ user }} as the owner\",\n REMOVED_GOAL_PARTICIPANTS: \"removed a goal participant: \",\n REMOVED_GOAL_PARTICIPANTS_plural: \"removed {{ count }} goal participants: \",\n ADDED_GOAL_PARTICIPANTS: \"added a goal participant: \",\n ADDED_GOAL_PARTICIPANTS_plural: \"added {{ count }} goal participants: \",\n COMMENTED: \"commented\",\n COMMA: \", \",\n SEMICOLON: \"; \",\n};\n\nconst zh: Locale = {\n STARTED_A_CHAT: \"发起了对话\",\n CREATED_THIS_GOAL: \"创建了此目标\",\n CHANGED_THE_GOAL_TITLE: \"修改目标标题为 “{{ title }}”\",\n CHANGED_THE_GOAL_DESCRIPTION: \"修改目标描述为 “{{ description }}”\",\n CHANGED_THE_GOAL: \"修改了此目标\",\n DELETED_THIS_GOAL: \"删除了此目标\",\n DECOMPOSED_THIS_GOAL: \"将此目标分解为 {{ count }} 个子目标:\",\n DECOMPOSED_THIS_GOAL_plural: \"将此目标分解为 {{ count }} 个子目标:\",\n SET_OWNER: \"设定负责人为 {{ user }}\",\n REMOVED_GOAL_PARTICIPANTS: \"移除了目标参与成员:\",\n ADDED_GOAL_PARTICIPANTS: \"添加了目标参与成员:\",\n COMMENTED: \"评论\",\n COMMA: \",\",\n SEMICOLON: \";\",\n};\n\nexport const NS = \"bricks/ai-portal/activity-timeline\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type {\n EoEasyopsAvatar,\n EoEasyopsAvatarProps,\n} from \"@next-bricks/basic/easyops-avatar\";\nimport { humanizeTime, HumanizeTimeFormat } from \"@next-shared/datetime\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport { parseTemplate } from \"../shared/parseTemplate.js\";\nimport type { Activity, ActivityOfAlterUser } from \"./interfaces.js\";\n\ninitializeI18n(NS, locales);\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedAvatar = wrapBrick<EoEasyopsAvatar, EoEasyopsAvatarProps>(\n \"eo-easyops-avatar\"\n);\nconst { defineElement, property } = createDecorators();\n\nexport interface ActivityTimelineProps {\n list?: Activity[];\n chatUrlTemplate?: string;\n}\n\n/**\n * 活动时间线,展示目标的操作历史记录,支持多种动作类型的可视化展示。\n *\n * @description 活动时间线,展示目标的操作历史记录,支持多种动作类型的可视化展示。\n * @category ai-portal\n */\nexport\n@defineElement(\"ai-portal.activity-timeline\", {\n styleTexts: [styleText],\n})\nclass ActivityTimeline\n extends ReactNextElement\n implements ActivityTimelineProps\n{\n /**\n * 活动记录列表\n */\n @property({ attribute: false })\n accessor list: Activity[] | undefined;\n\n /**\n * 跳转到对话详情页的 URL 模板,支持 {conversation_id} 等活动记录字段插值\n */\n @property()\n accessor chatUrlTemplate: string | undefined;\n\n render() {\n return (\n <ActivityTimelineComponent\n list={this.list}\n chatUrlTemplate={this.chatUrlTemplate}\n />\n );\n }\n}\n\nfunction ActivityTimelineComponent({\n list,\n chatUrlTemplate,\n}: ActivityTimelineProps) {\n if (!list) {\n return (\n <div className=\"loading\">\n <WrappedIcon lib=\"antd\" icon=\"loading-3-quarters\" spinning />\n </div>\n );\n }\n\n return (\n <ul>\n {list.map((activity, index) => (\n <li className=\"activity\" key={index}>\n <div className=\"guide-line\" />\n <div className=\"main\">\n <WrappedAvatar\n className=\"avatar\"\n nameOrInstanceId={activity.user_id}\n size=\"xs\"\n />\n <span className=\"action\">\n {activity.user_name}\n &nbsp;\n {activity.action_type === \"start_conversation\" ? (\n <>\n <span>{t(K.STARTED_A_CHAT)}</span>\n <WrappedLink\n className=\"conversation\"\n url={parseTemplate(chatUrlTemplate, activity)}\n target=\"_blank\"\n >\n {activity.metadata?.conversation_title}\n </WrappedLink>\n <WrappedIcon\n className=\"external-link-icon\"\n lib=\"lucide\"\n icon=\"external-link\"\n />\n </>\n ) : activity.action_type === \"create_goal\" ? (\n t(K.CREATED_THIS_GOAL)\n ) : activity.action_type === \"edit_goal\" ? (\n activity.metadata.after.title ? (\n t(K.CHANGED_THE_GOAL_TITLE, activity.metadata.after)\n ) : activity.metadata.after.description ? (\n t(K.CHANGED_THE_GOAL_DESCRIPTION, activity.metadata.after)\n ) : (\n t(K.CHANGED_THE_GOAL)\n )\n ) : activity.action_type === \"delete_goal\" ? (\n t(K.DELETED_THIS_GOAL)\n ) : activity.action_type === \"decompose_goals\" ? (\n `${t(K.DECOMPOSED_THIS_GOAL, {\n count: activity.metadata.sub_goals_count,\n })}${activity.metadata.sub_goals\n .map((g) => g.title)\n .join(t(K.COMMA))}`\n ) : activity.action_type === \"alter_owner\" ? (\n t(K.SET_OWNER, {\n user: activity.metadata.after.owner.user_name,\n })\n ) : activity.action_type === \"alter_user\" ? (\n getAlterPARTICIPANTsActivityDescription(activity)\n ) : activity.action_type === \"add_comment\" ? (\n t(K.COMMENTED)\n ) : (\n // Defense for future action types\n (activity as { action_type: string }).action_type\n )}\n </span>\n <span\n className=\"time\"\n title={humanizeTime(activity.time, HumanizeTimeFormat.full)!}\n >\n {humanizeTime(activity.time, HumanizeTimeFormat.relative)}\n </span>\n </div>\n {activity.action_type === \"add_comment\" && (\n <div className=\"comment\">{activity.metadata?.comment_content}</div>\n )}\n </li>\n ))}\n </ul>\n );\n}\n\nfunction getAlterPARTICIPANTsActivityDescription(\n activity: ActivityOfAlterUser\n) {\n const removed: string[] = [];\n const added: string[] = [];\n const beforeUserIds = new Set(\n activity.metadata.before.users.map((user) => user.user_name)\n );\n for (const user of activity.metadata.after.users) {\n if (!beforeUserIds.has(user.user_name)) {\n added.push(user.user_name);\n }\n }\n const afterUserIds = new Set(\n activity.metadata.after.users.map((user) => user.user_name)\n );\n for (const user of activity.metadata.before.users) {\n if (!afterUserIds.has(user.user_name)) {\n removed.push(user.user_name);\n }\n }\n\n const descriptions: string[] = [];\n if (removed.length > 0) {\n descriptions.push(\n t(K.REMOVED_GOAL_PARTICIPANTS, { count: removed.length }) +\n removed.join(t(K.COMMA))\n );\n }\n if (added.length > 0) {\n descriptions.push(\n t(K.ADDED_GOAL_PARTICIPANTS, { count: added.length }) +\n added.join(t(K.COMMA))\n );\n }\n\n return descriptions.join(t(K.SEMICOLON));\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n TERMINATE_THE_TASK = \"TERMINATE_THE_TASK\",\n COMMAND_TIPS = \"COMMAND_TIPS\",\n SEARCH_COMMANDS_TIPS = \"SEARCH_COMMANDS_TIPS\",\n}\n\nconst en: Locale = {\n [K.TERMINATE_THE_TASK]: \"Terminate the task\",\n [K.COMMAND_TIPS]: \"‘@’ AI Employee | ‘/’ Command\",\n [K.SEARCH_COMMANDS_TIPS]:\n \"Showing up to {{count}} items, type keywords to search\",\n};\n\nconst zh: Locale = {\n [K.TERMINATE_THE_TASK]: \"终止任务\",\n [K.COMMAND_TIPS]: \"‘@’ 数字人 | ‘/’ 命令\",\n [K.SEARCH_COMMANDS_TIPS]: \"最多显示 {{count}} 条数据,输入关键字搜索\",\n};\n\nexport const NS = \"bricks/ai-portal/chat-input\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, {\n createRef,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { TextareaAutoResize } from \"@next-shared/form\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport ResizeObserver from \"resize-observer-polyfill\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type {\n ActionsEvents,\n ActionsEventsMapping,\n ActionsProps,\n EoActions,\n} from \"@next-bricks/basic/actions\";\nimport classNames from \"classnames\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport type { IconButton, IconButtonProps } from \"../icon-button\";\nimport styleText from \"./styles.shadow.css\";\nimport { UploadedFiles } from \"../shared/FileUpload/UploadedFiles.js\";\nimport UploadedFilesStyleText from \"../shared/FileUpload/UploadedFiles.shadow.css\";\nimport { useFilesUploading } from \"../shared/useFilesUploading.js\";\nimport {\n UploadButton,\n type UploadButtonRef,\n} from \"../shared/FileUpload/UploadButton.js\";\nimport type { ChatPayload, UploadOptions } from \"../shared/interfaces.js\";\nimport GlobalDragOverlay from \"../shared/FileUpload/GlobalDragOverlay.js\";\nimport {\n MAX_SHOWN_COMMANDS,\n useChatCompletions,\n type ActionWithSubCommands,\n type AIEmployee,\n type Command,\n} from \"../shared/ChatCompletions/useChatCompletions.js\";\nimport { createPortal } from \"react-dom\";\n\ninitializeI18n(NS, locales);\n\nconst ICON_LOADING: GeneralIconProps = {\n lib: \"antd\",\n icon: \"loading-3-quarters\",\n spinning: true,\n};\n\nconst ICON_STOP: GeneralIconProps = {\n lib: \"fa\",\n prefix: \"far\",\n icon: \"circle-stop\",\n};\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedIconButton = wrapBrick<IconButton, IconButtonProps>(\n \"ai-portal.icon-button\"\n);\n\nexport const WrappedActions = wrapBrick<\n EoActions,\n ActionsProps & { activeKeys?: (string | number)[]; footerTips?: string },\n ActionsEvents,\n ActionsEventsMapping\n>(\"eo-actions\", {\n onActionClick: \"action.click\",\n onItemDragEnd: \"item.drag.end\",\n onItemDragStart: \"item.drag.start\",\n});\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport interface ChatInputProps {\n placeholder?: string;\n autoFocus?: boolean;\n submitDisabled?: boolean;\n supportsTerminate?: boolean;\n terminating?: boolean;\n autoFade?: boolean;\n uploadOptions?: UploadOptions;\n aiEmployees?: AIEmployee[];\n commands?: Command[];\n suggestionsPlacement?: \"top\" | \"bottom\";\n}\n\nexport interface ChatInputEvents {\n \"chat.submit\": CustomEvent<ChatPayload>;\n terminate: Event;\n}\n\nexport interface ChatInputMapEvents {\n onChatSubmit: \"chat.submit\";\n onTerminate: \"terminate\";\n}\n\nconst ChatInputComponent = forwardRef(LegacyChatInputComponent);\n\n/**\n * 小型聊天输入框,用于对话等页面,支持命令联想、@提及数字人、文件上传及终止任务等功能。\n *\n * @description 小型聊天输入框,用于对话等页面,支持命令联想、@提及数字人、文件上传及终止任务等功能。\n * @category ai-portal\n */\nexport\n@defineElement(\"ai-portal.chat-input\", {\n styleTexts: [styleText, UploadedFilesStyleText],\n shadowOptions: {\n delegatesFocus: true,\n },\n})\nclass ChatInput extends ReactNextElement implements ChatInputProps {\n /**\n * 输入框占位文字\n */\n @property()\n accessor placeholder: string | undefined;\n\n /**\n * 是否自动聚焦\n */\n @property({ type: Boolean })\n accessor autoFocus: boolean | undefined;\n\n /**\n * 是否禁用发送按钮,通常在 AI 正在处理时设为 true\n */\n @property({ type: Boolean })\n accessor submitDisabled: boolean | undefined;\n\n /**\n * 是否显示终止任务按钮,需与 submitDisabled 配合使用\n */\n @property({ type: Boolean })\n accessor supportsTerminate: boolean | undefined;\n\n /**\n * 是否正在终止任务,为 true 时显示加载状态\n */\n @property({ type: Boolean })\n accessor terminating: boolean | undefined;\n\n /**\n * 是否在输入框为空时自动淡出,通过 CSS 属性选择器控制样式\n */\n @property({ type: Boolean, render: false })\n accessor autoFade: boolean | undefined;\n\n /**\n * 文件上传配置\n */\n @property({ attribute: false })\n accessor uploadOptions: UploadOptions | undefined;\n\n /**\n * 可 @ 提及的数字人列表\n */\n @property({ attribute: false })\n accessor aiEmployees: AIEmployee[] | undefined;\n\n /**\n * 命令列表,支持通过 / 或搜索触发联想\n */\n @property({ attribute: false })\n accessor commands: Command[] | undefined;\n\n /**\n * 命令/提及联想弹出层的显示位置\n *\n * @default \"bottom\"\n */\n @property()\n accessor suggestionsPlacement: \"top\" | \"bottom\" | undefined;\n\n /**\n * @deprecated Use `chat.submit` event instead\n * @detail 用户输入的消息文本内容\n * @description 用户提交消息时触发(已废弃,请使用 chat.submit 事件)\n */\n @event({ type: \"message.submit\" })\n accessor #messageSubmit!: EventEmitter<string>;\n\n #handleMessageSubmit = (value: string) => {\n this.#messageSubmit.emit(value);\n };\n\n /**\n * @detail { content: 消息内容, files: 上传的文件列表, cmd: 命令载荷, aiEmployeeId: @提及的数字人 ID }\n * @description 用户提交聊天消息时触发\n */\n @event({ type: \"chat.submit\" })\n accessor #chatSubmit!: EventEmitter<ChatPayload>;\n\n #handleChatSubmit = (payload: ChatPayload) => {\n this.#chatSubmit.emit(payload);\n };\n\n /**\n * @detail void\n * @description 点击终止按钮时触发\n */\n @event({ type: \"terminate\" })\n accessor #terminate!: EventEmitter<void>;\n\n #handleTerminate = () => {\n this.#terminate.emit();\n };\n\n #ref = createRef<ChatInputRef>();\n\n /**\n * 设置输入框的值并聚焦\n * @param value 要设置的文本内容\n */\n @method()\n setValue(value: string) {\n this.#ref.current?.setValue(value);\n }\n\n render() {\n return (\n <ChatInputComponent\n ref={this.#ref}\n placeholder={this.placeholder}\n autoFocus={this.autoFocus}\n submitDisabled={this.submitDisabled}\n supportsTerminate={this.supportsTerminate}\n terminating={this.terminating}\n uploadOptions={this.uploadOptions}\n aiEmployees={this.aiEmployees}\n commands={this.commands}\n suggestionsPlacement={this.suggestionsPlacement}\n onMessageSubmit={this.#handleMessageSubmit}\n onChatSubmit={this.#handleChatSubmit}\n onTerminate={this.#handleTerminate}\n root={this}\n />\n );\n }\n}\n\ninterface ChatInputRef {\n setValue: (value: string) => void;\n}\n\ninterface ChatInputComponentProps extends ChatInputProps {\n root: HTMLElement;\n onMessageSubmit: (value: string) => void;\n onChatSubmit: (payload: ChatPayload) => void;\n onTerminate: () => void;\n}\n\nfunction LegacyChatInputComponent(\n {\n root,\n placeholder,\n autoFocus,\n submitDisabled,\n supportsTerminate,\n terminating,\n uploadOptions,\n aiEmployees,\n commands,\n suggestionsPlacement,\n onMessageSubmit,\n onChatSubmit,\n onTerminate,\n }: ChatInputComponentProps,\n ref: React.Ref<ChatInputRef>\n) {\n const containerRef = useRef<HTMLDivElement>(null);\n\n const [wrap, setWrap] = useState(false);\n const uploadEnabled = uploadOptions?.enabled;\n const uploadAccept = uploadOptions?.accept;\n const {\n files,\n resetFiles,\n appendFiles,\n removeFile,\n hasFiles,\n allFilesDone,\n fileInfos,\n exceeded,\n paste,\n } = useFilesUploading(uploadOptions);\n const uploadButtonRef = useRef<UploadButtonRef>(null);\n\n const {\n textareaRef,\n valueRef,\n value,\n setValue,\n selectionRef,\n\n mentioned,\n mentionedText,\n mentionPopover,\n mentionOverlay,\n mentionActiveKeys,\n handleMention,\n\n command,\n commandText,\n commandPrefix,\n commandPopover,\n commandOverlay,\n commandActiveKeys,\n handleSelectCommand,\n\n handleChange,\n handleKeyDown,\n } = useChatCompletions({\n aiEmployees,\n commands,\n root,\n hasFiles,\n placement: suggestionsPlacement,\n });\n\n useImperativeHandle(\n ref,\n () => ({\n setValue: (value: string) => {\n valueRef.current = value;\n setValue(value);\n setTimeout(() => {\n textareaRef.current?.focus();\n }, 100);\n },\n }),\n [setValue, textareaRef, valueRef]\n );\n\n useEffect(() => {\n if (!uploadEnabled) {\n resetFiles();\n }\n }, [uploadEnabled, resetFiles]);\n\n useEffect(() => {\n if (autoFocus && !submitDisabled) {\n textareaRef.current?.focus();\n }\n }, [autoFocus, submitDisabled, textareaRef]);\n\n const sendDisabled =\n !value ||\n !allFilesDone ||\n (!!mentionedText && value.length <= mentionedText.length) ||\n (!!commandText && value.length <= commandText.length);\n\n const doSubmit = useCallback(\n (value: string) => {\n if (sendDisabled) {\n return;\n }\n const content = value.slice(commandText.length || mentionedText.length);\n onMessageSubmit(content);\n onChatSubmit({\n content,\n files: fileInfos,\n cmd: command,\n aiEmployeeId: mentioned,\n });\n valueRef.current = \"\";\n setValue(\"\");\n resetFiles();\n },\n [\n sendDisabled,\n onMessageSubmit,\n onChatSubmit,\n fileInfos,\n resetFiles,\n valueRef,\n setValue,\n mentioned,\n mentionedText,\n command,\n commandText,\n ]\n );\n\n const handleSubmit = useCallback(\n (e: React.FormEvent<HTMLTextAreaElement>) => {\n if (e.currentTarget.value) {\n doSubmit(e.currentTarget.value);\n }\n },\n [doSubmit]\n );\n\n const handleSubmitClick = useCallback(() => {\n doSubmit(valueRef.current);\n }, [doSubmit, valueRef]);\n\n // istanbul ignore next\n useEffect(() => {\n if (hasFiles) {\n setWrap(true);\n return;\n }\n const container = containerRef?.current;\n if (!container) {\n return;\n }\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === container) {\n const currentBlockSize = entry.contentBoxSize\n ? entry.contentBoxSize[0]\n ? entry.contentBoxSize[0].blockSize\n : (entry.contentBoxSize as unknown as ResizeObserverSize)\n .blockSize\n : entry.contentRect.height;\n if (currentBlockSize > 52) {\n setWrap(true);\n }\n }\n }\n });\n observer.observe(container);\n return () => {\n observer.disconnect();\n };\n }, [hasFiles]);\n\n useEffect(() => {\n if (!value && !hasFiles) {\n setWrap(false);\n }\n }, [value, hasFiles]);\n\n const handleContainerClick = useCallback(\n (e: React.MouseEvent) => {\n for (const item of e.nativeEvent.composedPath()) {\n if (\n item instanceof HTMLTextAreaElement ||\n item instanceof HTMLButtonElement\n ) {\n return;\n }\n }\n textareaRef.current?.focus();\n },\n [textareaRef]\n );\n\n const onFilesDropped = useCallback(\n (files: File[]) => {\n appendFiles(files);\n textareaRef.current?.focus();\n },\n [appendFiles, textareaRef]\n );\n\n return (\n <>\n <div className=\"container\" onClick={handleContainerClick}>\n <div className={classNames(\"box\", { wrap })}>\n <div className=\"input\" ref={containerRef}>\n <TextareaAutoResize\n containerRef={containerRef}\n ref={textareaRef}\n value={value}\n minRows={1}\n maxRows={4}\n borderSize={0}\n paddingSize={hasFiles ? 86 : 16}\n autoResize\n placeholder={placeholder}\n submitWhen=\"enter-without-shift\"\n desiredSelectionRef={selectionRef}\n onSubmit={handleSubmit}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onPaste={paste}\n style={{\n paddingTop: hasFiles ? 78 : 8,\n }}\n />\n {hasFiles && (\n <UploadedFiles\n files={files!}\n className=\"condensed\"\n onRemove={(uid, abortController) => {\n removeFile(uid);\n abortController?.abort();\n }}\n onAdd={() => {\n uploadButtonRef.current?.requestUpload();\n }}\n />\n )}\n {mentionOverlay?.map((overlay, index) => (\n <div key={index} className=\"mention-overlay\" style={overlay} />\n ))}\n {commandOverlay?.map((overlay, index) => (\n <div key={index} className=\"mention-overlay\" style={overlay} />\n ))}\n {mentionPopover &&\n createPortal(\n <WrappedActions\n actions={mentionPopover.actions}\n style={mentionPopover.style}\n activeKeys={mentionActiveKeys!}\n footerTips={t(K.COMMAND_TIPS)}\n onActionClick={(e) => handleMention(e.detail)}\n />,\n document.body\n )}\n {commandPopover &&\n createPortal(\n <WrappedActions\n actions={commandPopover.actions}\n style={commandPopover.style}\n activeKeys={commandActiveKeys!}\n footerTips={\n commandPrefix === \"/\"\n ? t(K.COMMAND_TIPS)\n : t(K.SEARCH_COMMANDS_TIPS, { count: MAX_SHOWN_COMMANDS })\n }\n onActionClick={(e) =>\n handleSelectCommand(e.detail as ActionWithSubCommands)\n }\n />,\n document.body\n )}\n </div>\n <div className=\"toolbar\">\n {uploadEnabled ? (\n <>\n <UploadButton\n ref={uploadButtonRef}\n accept={uploadAccept}\n disabled={exceeded}\n onChange={(files) => {\n appendFiles(files);\n textareaRef.current?.focus();\n }}\n />\n <div className=\"btn-divider\"></div>\n </>\n ) : null}\n {!submitDisabled || !supportsTerminate ? (\n <button\n className=\"btn-send\"\n disabled={submitDisabled || !value || !allFilesDone}\n onClick={handleSubmitClick}\n >\n <WrappedIcon lib=\"fa\" icon=\"arrow-up\" />\n </button>\n ) : (\n <>\n {terminating ? (\n <WrappedIconButton icon={ICON_LOADING} disabled />\n ) : (\n <WrappedIconButton\n icon={ICON_STOP}\n tooltip={t(K.TERMINATE_THE_TASK)}\n onClick={onTerminate}\n />\n )}\n </>\n )}\n </div>\n </div>\n </div>\n <GlobalDragOverlay\n disabled={!uploadEnabled || exceeded || uploadOptions?.dragDisabled}\n uploadOptions={uploadOptions}\n onFilesDropped={onFilesDropped}\n />\n </>\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport Logo from \"./images/logo@2x.png\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement } = createDecorators();\n\n/**\n * Elevo 品牌 Logo 图片组件,固定展示 Elevo logo(95×28px)。\n *\n * @category display-component\n */\nexport\n@defineElement(\"ai-portal.elevo-logo\", {\n styleTexts: [styleText],\n})\nclass ElevoLogo extends ReactNextElement {\n render() {\n return (\n <img className=\"logo\" alt=\"Elevo\" src={Logo} width={95} height={28} />\n );\n }\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n WATCH_REPLAY = \"WATCH_REPLAY\",\n}\n\nconst en: Locale = {\n [K.WATCH_REPLAY]: \"Watch replay\",\n};\n\nconst zh: Locale = {\n [K.WATCH_REPLAY]: \"查看回放\",\n};\n\nexport const NS = \"bricks/ai-portal/show-case\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, { useMemo } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\n\ninitializeI18n(NS, locales);\n\nconst bgClasses = [\"purple\", \"green\", \"pink\"];\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst { defineElement, property } = createDecorators();\n\nexport interface ShowCaseProps {\n caseTitle?: string;\n summary?: string;\n url?: string;\n}\n\n/**\n * 构件 `ai-portal.show-case`\n *\n * 案例展示卡片构件,以彩色背景卡片展示单个优秀案例,点击可跳转到案例详情。\n */\nexport\n@defineElement(\"ai-portal.show-case\", {\n styleTexts: [styleText],\n})\nclass ShowCase extends ReactNextElement implements ShowCaseProps {\n /** 案例标题,同时用于计算卡片背景色 */\n @property()\n accessor caseTitle: string | undefined;\n\n /** 案例摘要描述 */\n @property()\n accessor summary: string | undefined;\n\n /** 点击卡片跳转的目标链接 */\n @property()\n accessor url: string | undefined;\n\n render() {\n return (\n <ShowCaseComponent\n caseTitle={this.caseTitle}\n summary={this.summary}\n url={this.url}\n />\n );\n }\n}\n\nfunction ShowCaseComponent({ caseTitle, summary, url }: ShowCaseProps) {\n const bgClass = useMemo(() => {\n // Get a deterministic class based on the caseTitle\n if (!caseTitle) return bgClasses[0];\n let hash = 0;\n for (let i = 0; i < caseTitle.length; i++) {\n hash = caseTitle.charCodeAt(i) + ((hash << 5) - hash);\n }\n const index = Math.abs(hash) % bgClasses.length;\n return bgClasses[index];\n }, [caseTitle]);\n\n return (\n <WrappedLink className={`link ${bgClass}`} url={url}>\n <span className=\"title\">{caseTitle}</span>\n <span className=\"description\">{summary}</span>\n <span className=\"mask\" />\n <span className=\"button\">\n <WrappedIcon lib=\"easyops\" icon=\"replay\" />\n {t(K.WATCH_REPLAY)}\n </span>\n </WrappedLink>\n );\n}\n","import { http } from \"@next-core/http\";\nimport { createProviderClass } from \"@next-core/utils/general\";\nimport type { ToolInfo } from \"@next-tsx/parser\";\n\nexport async function callTool(\n tool: ToolInfo,\n params: Record<string, unknown>\n): Promise<unknown> {\n const response = await http.post<{ data: unknown }>(\n `api/gateway/logic.llm.aiops_service/api/v1/elevo/conversation/${\n tool.conversationId\n }/step/${tool.stepId}/view`,\n {\n params,\n }\n );\n\n return response.data;\n}\n\ncustomElements.define(\"ai-portal.call-tool\", createProviderClass(callTool));\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport imageGoals from \"./images/goals@2x.png\";\nimport imageActivities from \"./images/activities@2x.png\";\nimport imageSpaces from \"./images/spaces@2x.png\";\nimport imageServiceflows from \"./images/serviceflows@2x.png\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface BlankStateProps {\n illustration?: BlankStateIllustration;\n description?: string;\n}\n\nexport type BlankStateIllustration =\n | \"goals\"\n | \"activities\"\n | \"collaboration-spaces\"\n | \"serviceflows\";\n\n/**\n * 空状态展示组件,提供预置插画和描述文字,并支持通过默认插槽插入自定义内容。\n *\n * @description 空状态展示组件,提供预置插画和描述文字,并支持通过默认插槽插入自定义内容。\n * @category ai-portal\n */\nexport\n@defineElement(\"ai-portal.blank-state\", {\n styleTexts: [styleText],\n})\nclass BlankState extends ReactNextElement implements BlankStateProps {\n /**\n * 插画类型,可选 \"goals\"、\"activities\"、\"collaboration-spaces\"、\"serviceflows\",默认使用 activities 插画\n */\n @property()\n accessor illustration: BlankStateIllustration | undefined;\n\n /**\n * 描述文字\n */\n @property()\n accessor description: string | undefined;\n\n render() {\n return (\n <BlankStateComponent\n illustration={this.illustration}\n description={this.description}\n />\n );\n }\n}\n\nfunction BlankStateComponent({ illustration, description }: BlankStateProps) {\n return (\n <>\n <img src={getIllustrationSrc(illustration)} width={184} height={138} />\n <p>{description}</p>\n <slot />\n </>\n );\n}\n\nfunction getIllustrationSrc(illustration?: BlankStateIllustration) {\n switch (illustration) {\n case \"goals\":\n return imageGoals;\n case \"collaboration-spaces\":\n return imageSpaces;\n case \"serviceflows\":\n return imageServiceflows;\n default:\n return imageActivities;\n }\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface StickyContainerProps {\n variant?: StickyContainerVariant;\n}\n\nexport type StickyContainerVariant = \"default\" | \"home\";\n\n/**\n * 构件 `ai-portal.sticky-container`\n *\n * 粘性容器构件,使内容在页面滚动时固定在顶部。\n *\n * @slot - 内容\n * @slot header - 头部\n * @slot toolbar - 工具栏\n */\nexport\n@defineElement(\"ai-portal.sticky-container\", {\n styleTexts: [styleText],\n})\nclass StickyContainer extends ReactNextElement implements StickyContainerProps {\n /**\n * 变体风格,通过 CSS attribute selector 控制样式,不触发重新渲染\n * @default \"default\"\n */\n @property({ render: false })\n accessor variant: StickyContainerVariant | undefined;\n\n render() {\n return <StickyContainerComponent />;\n }\n}\n\nfunction StickyContainerComponent() {\n return <slot />;\n}\n","import React, { useRef } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport classNames from \"classnames\";\nimport { useHasAssignedNodes } from \"@next-shared/hooks\";\nimport styleText from \"./styles.shadow.css\";\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst { defineElement, property } = createDecorators();\n\nexport interface ElevoCardProps {\n cardTitle?: string;\n description?: string;\n url?: string;\n avatar?: string | IconWithColor;\n avatarType?: \"icon\" | \"image\";\n}\n\nexport type IconWithColor = GeneralIconProps & {\n color?: string;\n};\n\n/**\n * Elevo 风格的卡片组件,支持图标或图片头像、标题、描述、操作按钮及底部插槽。\n *\n * @category display-component\n * @slot actions - 卡片右上角操作区域\n * @slot footer - 卡片底部操作区域\n */\nexport\n@defineElement(\"ai-portal.elevo-card\", {\n styleTexts: [styleText],\n})\nclass ElevoCard extends ReactNextElement implements ElevoCardProps {\n @property()\n accessor cardTitle: string | undefined;\n\n @property()\n accessor description: string | undefined;\n\n @property()\n accessor url: string | undefined;\n\n @property({ attribute: false })\n accessor avatar: string | GeneralIconProps | undefined;\n\n @property()\n accessor avatarType: \"icon\" | \"image\" | undefined;\n\n render() {\n return (\n <ElevoCardComponent\n cardTitle={this.cardTitle}\n description={this.description}\n url={this.url}\n avatar={this.avatar}\n avatarType={this.avatarType}\n />\n );\n }\n}\n\nfunction ElevoCardComponent({\n cardTitle,\n description,\n url,\n avatar,\n avatarType,\n}: ElevoCardProps) {\n const footerRef = useRef<HTMLSlotElement>(null);\n const hasFooter = useHasAssignedNodes(footerRef);\n\n const actionsRef = useRef<HTMLSlotElement>(null);\n const hasActions = useHasAssignedNodes(actionsRef);\n\n return (\n <WrappedLink className={classNames(\"card\", { clickable: !!url })} url={url}>\n <div className=\"header\">\n <div className=\"heading\">\n {avatarType !== \"image\" && avatar ? (\n <IconAvatar {...(avatar as IconWithColor)} />\n ) : (\n <div className=\"avatar\" />\n )}\n <div className=\"title\">{cardTitle}</div>\n </div>\n <div className=\"actions\" hidden={!hasActions}>\n <slot name=\"actions\" ref={actionsRef} />\n </div>\n </div>\n <div className=\"body\">{description}</div>\n <div className=\"footer\" hidden={!hasFooter}>\n <slot name=\"footer\" ref={footerRef} />\n </div>\n </WrappedLink>\n );\n}\n\nfunction IconAvatar({ color, ...iconProps }: IconWithColor) {\n return (\n <div\n className=\"avatar\"\n style={\n color\n ? {\n borderColor: `rgba(var(--theme-${color}-color-rgb-channel), 0.15)`,\n color: `var(--theme-${color}-color)`,\n }\n : undefined\n }\n >\n <WrappedIcon {...iconProps} />\n </div>\n );\n}\n","const dpr = window.devicePixelRatio || 1;\n\nconst TAB_HEIGHT = 40;\nconst BORDER_RADIUS = 12;\nconst slopeAngle = (Math.PI * 36) / 180; // 36度角\nconst deltaY = BORDER_RADIUS * (1 - Math.sin(slopeAngle));\nconst deltaX = BORDER_RADIUS * Math.cos(slopeAngle);\nconst slopeHeight = TAB_HEIGHT - deltaY * 2;\nconst slopeWidth = slopeHeight * Math.tan(slopeAngle);\nconst offsetX = deltaX + slopeWidth / 2;\n\nexport default function drawBg(\n canvas: HTMLCanvasElement,\n ctx: CanvasRenderingContext2D,\n width: number,\n height: number,\n isFirstTab: boolean,\n tabOffset: number,\n tabWidth: number\n) {\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n canvas.style.width = `${width}px`;\n canvas.style.height = `${height}px`;\n\n ctx.scale(dpr, dpr);\n\n ctx.clearRect(0, 0, width, height);\n\n ctx.fillStyle = \"rgba(255,255,255,0.5)\";\n\n // 创建渐变边框\n const borderGradient = ctx.createLinearGradient(0, 0, 0, height);\n borderGradient.addColorStop(0, \"rgba(255,255,255,0.9)\");\n borderGradient.addColorStop(1, \"rgba(255,255,255,0.4)\");\n\n ctx.lineWidth = 1;\n ctx.strokeStyle = borderGradient;\n\n const actualWidth = width - 1;\n const actualHeight = height - 1;\n\n ctx.translate(0.5, 0.5);\n ctx.beginPath();\n\n if (isFirstTab) {\n ctx.moveTo(0, BORDER_RADIUS);\n ctx.arcTo(0, 0, BORDER_RADIUS, 0, BORDER_RADIUS);\n } else {\n ctx.moveTo(0, BORDER_RADIUS + TAB_HEIGHT);\n ctx.arcTo(0, TAB_HEIGHT, BORDER_RADIUS, TAB_HEIGHT, BORDER_RADIUS);\n\n const upStartX = tabOffset - offsetX;\n ctx.lineTo(upStartX, TAB_HEIGHT);\n ctx.arc(\n upStartX,\n TAB_HEIGHT - BORDER_RADIUS,\n BORDER_RADIUS,\n Math.PI / 2,\n slopeAngle,\n true\n );\n\n ctx.lineTo(upStartX + deltaX + slopeWidth, deltaY);\n ctx.arc(\n upStartX + offsetX * 2,\n BORDER_RADIUS,\n BORDER_RADIUS,\n Math.PI + slopeAngle,\n Math.PI * 1.5,\n false\n );\n }\n\n const downStartX = tabOffset + tabWidth - offsetX;\n ctx.lineTo(downStartX, 0);\n ctx.arc(\n downStartX,\n BORDER_RADIUS,\n BORDER_RADIUS,\n Math.PI * 1.5,\n Math.PI * 2 - slopeAngle,\n false\n );\n\n ctx.lineTo(downStartX + deltaX + slopeWidth, TAB_HEIGHT - deltaY);\n ctx.arc(\n downStartX + offsetX * 2,\n TAB_HEIGHT - BORDER_RADIUS,\n BORDER_RADIUS,\n Math.PI - slopeAngle,\n Math.PI / 2,\n true\n );\n\n ctx.lineTo(actualWidth - BORDER_RADIUS, TAB_HEIGHT);\n ctx.arcTo(\n actualWidth,\n TAB_HEIGHT,\n actualWidth,\n TAB_HEIGHT + BORDER_RADIUS,\n BORDER_RADIUS\n );\n\n ctx.lineTo(actualWidth, actualHeight - BORDER_RADIUS);\n ctx.arcTo(\n actualWidth,\n actualHeight,\n actualWidth - BORDER_RADIUS,\n actualHeight,\n BORDER_RADIUS\n );\n\n ctx.lineTo(BORDER_RADIUS, actualHeight);\n ctx.arcTo(0, actualHeight, 0, actualHeight - BORDER_RADIUS, BORDER_RADIUS);\n\n ctx.closePath();\n\n ctx.fill();\n ctx.stroke();\n}\n","import React, { useEffect, useRef } from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport classNames from \"classnames\";\nimport ResizeObserver from \"resize-observer-polyfill\";\nimport drawBg from \"./drawBg\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface FlowTabsProps {\n tabs?: Tab[];\n activeTab?: string;\n}\n\nexport interface Tab {\n id: string;\n label: string;\n}\n\ntype SizeTuple = [width: number, height: number];\n\n/**\n * 流程标签页组件,提供带背景画布动效的标签导航,支持工具栏插槽和默认内容插槽。\n *\n * @category navigate\n * @slot toolbar - 标签栏右侧工具栏区域\n * @slot default - 标签页内容区域\n */\nexport\n@defineElement(\"ai-portal.flow-tabs\", {\n styleTexts: [styleText],\n})\nclass FlowTabs extends ReactNextElement implements FlowTabsProps {\n @property({ attribute: false })\n accessor tabs: Tab[] | undefined;\n\n @property({ attribute: false })\n accessor activeTab: string | undefined;\n\n /**\n * @detail { id: 标签 ID, label: 标签显示文本 }\n * @description 点击标签项时触发,同时更新 activeTab 属性\n */\n @event({ type: \"tab.click\" })\n accessor #tabClick!: EventEmitter<Tab>;\n\n #handleTabClick = (tab: Tab) => {\n this.activeTab = tab.id;\n this.#tabClick.emit(tab);\n };\n\n render() {\n return (\n <FlowTabsComponent\n tabs={this.tabs}\n activeTab={this.activeTab}\n onTabClick={this.#handleTabClick}\n />\n );\n }\n}\n\ninterface FlowTabsComponentProps extends FlowTabsProps {\n onTabClick: (tab: Tab) => void;\n}\n\nfunction FlowTabsComponent({\n tabs,\n activeTab,\n onTabClick,\n}: FlowTabsComponentProps) {\n const rootRef = useRef<HTMLDivElement>(null);\n const bgRef = useRef<HTMLCanvasElement>(null);\n const tabsRef = useRef<HTMLUListElement>(null);\n\n useEffect(() => {\n const root = rootRef.current;\n const canvas = bgRef.current;\n const nav = tabsRef.current;\n if (!root || !canvas || !nav || !tabs?.length) return;\n\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return;\n\n let rootSize: SizeTuple | undefined;\n\n let requestId: number | undefined;\n\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === root) {\n const width = getContentBoxSize(entry, \"width\");\n const height = getContentBoxSize(entry, \"height\");\n rootSize = [width, height];\n }\n }\n\n const tabElements = Array.from(nav.querySelectorAll(\".tab\"));\n const activeTabElement = tabElements.find((tab) =>\n tab.classList.contains(\"active\")\n );\n if (!activeTabElement) return;\n\n const tabWidth = activeTabElement.getBoundingClientRect().width;\n const activeTabIndex = tabElements.indexOf(activeTabElement);\n const isFirstTab = activeTabIndex === 0;\n let tabOffset = 0;\n if (!isFirstTab) {\n const tabsOffset = nav.getBoundingClientRect().left;\n const activeTabOffset = activeTabElement!.getBoundingClientRect().left;\n tabOffset = activeTabOffset - tabsOffset;\n }\n\n if (requestId) {\n cancelAnimationFrame(requestId);\n }\n requestId = requestAnimationFrame(() => {\n if (rootSize) {\n drawBg(\n canvas,\n ctx,\n rootSize[0],\n rootSize[1],\n isFirstTab,\n tabOffset,\n tabWidth\n );\n }\n });\n });\n observer.observe(root);\n observer.observe(nav);\n return () => {\n observer.disconnect();\n if (requestId) {\n cancelAnimationFrame(requestId);\n }\n };\n }, [tabs, activeTab]);\n\n return (\n <div className=\"container\" ref={rootRef}>\n <canvas className=\"bg\" ref={bgRef} />\n <div className=\"header\">\n <ul className=\"tabs\" ref={tabsRef}>\n {tabs?.map((tab) => (\n <li\n key={tab.id}\n part=\"tab\"\n className={classNames(\"tab\", { active: tab.id === activeTab })}\n >\n <a onClick={() => onTabClick(tab)} title={tab.label}>\n {tab.label}\n </a>\n </li>\n ))}\n </ul>\n <div className=\"toolbar\">\n <slot name=\"toolbar\" />\n </div>\n </div>\n <div className=\"body\">\n <slot />\n </div>\n </div>\n );\n}\n\n// istanbul ignore next: compatibility code\nfunction getContentBoxSize(\n entry: ResizeObserverEntry,\n type: \"width\" | \"height\"\n): number {\n const boxSizeType = type === \"height\" ? \"blockSize\" : \"inlineSize\";\n const size = entry.contentBoxSize\n ? entry.contentBoxSize[0]\n ? entry.contentBoxSize[0][boxSizeType]\n : (entry.contentBoxSize as unknown as ResizeObserverSize)[boxSizeType]\n : entry.contentRect[type];\n return size;\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n ADD_STAGE = \"ADD_STAGE\",\n PLEASE_ENTER_NAME = \"PLEASE_ENTER_NAME\",\n UNASSIGNED = \"UNASSIGNED\",\n DELETE_STAGE = \"DELETE_STAGE\",\n DELETE_STAGE_TIPS = \"DELETE_STAGE_TIPS\",\n DELETE = \"DELETE\",\n ADD_ACTIVITY = \"ADD_ACTIVITY\",\n STAGE_NAME_EXISTS = \"STAGE_NAME_EXISTS\",\n ACTIVITY_NAME_EXISTS = \"ACTIVITY_NAME_EXISTS\",\n}\n\nconst en: Locale = {\n [K.ADD_STAGE]: \"Add stage\",\n [K.PLEASE_ENTER_NAME]: \"Please enter name\",\n [K.UNASSIGNED]: \"Unassigned\",\n [K.DELETE_STAGE]: \"Delete stage\",\n [K.DELETE_STAGE_TIPS]: 'Are you sure you want to delete stage \"{{ name }}\"?',\n [K.DELETE]: \"Delete\",\n [K.ADD_ACTIVITY]: \"Add activity\",\n [K.STAGE_NAME_EXISTS]: 'Stage with name \"{{ name }}\" already exists.',\n [K.ACTIVITY_NAME_EXISTS]: 'Activity with name \"{{ name }}\" already exists.',\n};\n\nconst zh: Locale = {\n [K.ADD_STAGE]: \"添加阶段\",\n [K.PLEASE_ENTER_NAME]: \"请输入名称\",\n [K.UNASSIGNED]: \"未设置\",\n [K.DELETE_STAGE]: \"删除阶段\",\n [K.DELETE_STAGE_TIPS]: \"您确定要删除阶段 “{{ name }}” 吗?\",\n [K.DELETE]: \"删除\",\n [K.ADD_ACTIVITY]: \"添加活动\",\n [K.STAGE_NAME_EXISTS]: '阶段名称 \"{{ name }}\" 已存在。',\n [K.ACTIVITY_NAME_EXISTS]: '活动名称 \"{{ name }}\" 已存在。',\n};\n\nexport const NS = \"bricks/ai-portal/stage-flow\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, {\n createRef,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n type Ref,\n} from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport {\n GeneralIcon,\n type GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type {\n Popover,\n PopoverEvents,\n PopoverEventsMapping,\n PopoverProps,\n} from \"@next-bricks/basic/popover\";\nimport type {\n Input,\n InputEvents,\n InputEventsMap,\n InputProps,\n} from \"@next-bricks/form/input\";\nimport type { showDialog as _showDialog } from \"@next-bricks/basic/data-providers/show-dialog/show-dialog\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\n\ninitializeI18n(NS, locales);\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedPopover = wrapBrick<\n Popover,\n PopoverProps & {\n themeVariant?: \"default\" | \"elevo\";\n },\n PopoverEvents,\n PopoverEventsMapping\n>(\"eo-popover\", {\n onVisibleChange: \"visible.change\",\n onBeforeVisibleChange: \"before.visible.change\",\n});\nconst WrappedInput = wrapBrick<Input, InputProps, InputEvents, InputEventsMap>(\n \"eo-input\",\n {\n onChange: \"change\",\n }\n);\nconst showDialog = unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport interface StageFlowProps {\n spec?: Stage[];\n aiEmployees?: AIEmployee[];\n readOnly?: boolean;\n}\n\nexport interface Stage {\n name: string;\n serviceFlowActivities?: FlowActivity[];\n}\n\nexport interface FlowActivity {\n name: string;\n description?: string;\n aiEmployeeId?: string;\n hilRules?: string;\n hilUser?: string;\n}\n\nexport interface AIEmployee {\n employeeId: string;\n name: string;\n}\n\nexport interface EditActivityDetail {\n stage: Stage;\n activity: FlowActivity;\n activityIndex: number;\n}\n\nconst StageFlowComponent = forwardRef(LegacyStageFlowComponent);\n\n/**\n * 构件 `ai-portal.stage-flow`\n *\n * 阶段流程编辑器构件,支持以泳道方式展示和编辑服务流的阶段与活动。\n */\nexport\n@defineElement(\"ai-portal.stage-flow\", {\n styleTexts: [styleText],\n})\nclass StageFlow extends ReactNextElement implements StageFlowProps {\n /** 阶段流程配置数据,每个阶段包含名称和活动列表 */\n @property({ attribute: false })\n accessor spec: Stage[] | undefined;\n\n /** AI 员工列表,用于在活动中显示分配的员工名称 */\n @property({ attribute: false })\n accessor aiEmployees: AIEmployee[] | undefined;\n\n /** 是否为只读模式,只读时不显示编辑、添加、删除操作 */\n @property({ type: Boolean })\n accessor readOnly: boolean | undefined;\n\n /**\n * @description 流程阶段数据发生变化时触发\n * @detail 更新后的阶段列表\n */\n @event({ type: \"change\" })\n accessor #change!: EventEmitter<Stage[]>;\n\n #handleChange = (spec: Stage[]) => {\n this.#change.emit(spec);\n };\n\n /**\n * @description 点击添加活动按钮时触发\n * @detail { stage: 所属阶段数据 }\n */\n @event({ type: \"add.activity\" })\n accessor #addActivity!: EventEmitter<{ stage: Stage }>;\n\n #handleAddActivity = (stage: Stage) => {\n this.#addActivity.emit({ stage });\n };\n\n /**\n * @description 点击活动进行编辑时触发\n * @detail { stage: 所属阶段, activity: 活动数据, activityIndex: 活动索引 }\n */\n @event({ type: \"edit.activity\" })\n accessor #editActivity!: EventEmitter<EditActivityDetail>;\n\n #handleEditActivity = (detail: EditActivityDetail) => {\n this.#editActivity.emit(detail);\n };\n\n #ref = createRef<StageFlowRef>();\n\n /**\n * 向指定阶段添加活动\n * @param stage 目标阶段\n * @param activity 要添加的活动数据\n */\n @method()\n addActivity(stage: Stage, activity: FlowActivity) {\n this.#ref.current?.addActivity(stage, activity);\n }\n\n /**\n * 编辑指定阶段中的某个活动\n * @param stage 目标阶段\n * @param activity 更新后的活动数据\n * @param activityIndex 活动在阶段中的索引\n */\n @method()\n editActivity(stage: Stage, activity: FlowActivity, activityIndex: number) {\n this.#ref.current?.editActivity(stage, activity, activityIndex);\n }\n\n /**\n * 删除指定阶段中的某个活动\n * @param stage 目标阶段\n * @param activityIndex 活动在阶段中的索引\n */\n @method()\n deleteActivity(stage: Stage, activityIndex: number) {\n this.#ref.current?.deleteActivity(stage, activityIndex);\n }\n\n render() {\n return (\n <StageFlowComponent\n ref={this.#ref}\n spec={this.spec}\n aiEmployees={this.aiEmployees}\n readOnly={this.readOnly}\n onChange={this.#handleChange}\n onAddActivity={this.#handleAddActivity}\n onEditActivity={this.#handleEditActivity}\n />\n );\n }\n}\n\ninterface StageFlowRef {\n addActivity(stage: Stage, activity: FlowActivity): void;\n editActivity(\n stage: Stage,\n activity: FlowActivity,\n activityIndex: number\n ): void;\n deleteActivity(stage: Stage, activityIndex: number): void;\n}\n\ninterface StageFlowComponentProps extends StageFlowProps {\n onChange: (spec: Stage[]) => void;\n onAddActivity: (stage: Stage) => void;\n onEditActivity(detail: EditActivityDetail): void;\n}\n\nfunction LegacyStageFlowComponent(\n {\n spec,\n aiEmployees,\n readOnly,\n onChange,\n onAddActivity,\n onEditActivity,\n }: StageFlowComponentProps,\n ref: Ref<StageFlowRef>\n) {\n const [stages, setStages] = useState(spec);\n const [addingStage, setAddingStage] = useState(false);\n const initialRef = useRef(true);\n\n useEffect(() => {\n setStages(spec);\n }, [spec]);\n\n useEffect(() => {\n if (initialRef.current) {\n initialRef.current = false;\n return;\n }\n if (stages) {\n onChange(stages);\n }\n }, [stages, onChange]);\n\n const getAIEmployeeName = useCallback(\n (employeeId: string | undefined) => {\n if (!employeeId) {\n return t(K.UNASSIGNED);\n }\n const employee = aiEmployees?.find((e) => e.employeeId === employeeId);\n return employee ? employee.name : employeeId;\n },\n [aiEmployees]\n );\n\n useImperativeHandle(\n ref,\n () => ({\n addActivity(stage: Stage, activity: FlowActivity) {\n setStages((prev) => {\n const prevList = prev ?? [];\n const stageIndex = prevList.findIndex((s) => s.name === stage.name);\n if (stageIndex === -1) {\n // Stage not found, return previous state\n return prevList;\n }\n const updatedStage = { ...prevList[stageIndex] };\n const prevActivities = updatedStage.serviceFlowActivities ?? [];\n\n if (prevActivities.find((a) => a.name === activity.name)) {\n // Activity with the same name already exists, return previous state\n showDialog({\n type: \"warn\",\n content: t(K.ACTIVITY_NAME_EXISTS, { name: activity.name }),\n });\n return prevList;\n }\n\n const updatedActivities = [...prevActivities, activity];\n updatedStage.serviceFlowActivities = updatedActivities;\n const newStages = [...prevList];\n newStages[stageIndex] = updatedStage;\n return newStages;\n });\n },\n editActivity(\n stage: Stage,\n activity: FlowActivity,\n activityIndex: number\n ) {\n setStages((prev) => {\n const prevList = prev ?? [];\n const stageIndex = prevList.findIndex((s) => s.name === stage.name);\n if (stageIndex === -1) {\n // Stage not found, return previous state\n return prevList;\n }\n const updatedStage = { ...prevList[stageIndex] };\n const prevActivities = updatedStage.serviceFlowActivities ?? [];\n\n if (\n prevActivities.find(\n (a, index) => a.name === activity.name && index !== activityIndex\n )\n ) {\n // Activity with the same name already exists, return previous state\n showDialog({\n type: \"warn\",\n content: t(K.ACTIVITY_NAME_EXISTS, { name: activity.name }),\n });\n return prevList;\n }\n\n const updatedActivities = [...prevActivities];\n if (activityIndex < 0 || activityIndex >= updatedActivities.length) {\n // Activity index out of bounds, return previous state\n return prevList;\n }\n updatedActivities[activityIndex] = activity;\n updatedStage.serviceFlowActivities = updatedActivities;\n const newStages = [...prevList];\n newStages[stageIndex] = updatedStage;\n return newStages;\n });\n },\n deleteActivity(stage: Stage, activityIndex: number) {\n setStages((prev) => {\n const prevList = prev ?? [];\n const stageIndex = prevList.findIndex((s) => s.name === stage.name);\n if (stageIndex === -1) {\n // Stage not found, return previous state\n return prevList;\n }\n const updatedStage = { ...prevList[stageIndex] };\n const updatedActivities = [\n ...(updatedStage.serviceFlowActivities ?? []),\n ];\n if (activityIndex < 0 || activityIndex >= updatedActivities.length) {\n // Activity index out of bounds, return previous state\n return prevList;\n }\n updatedActivities.splice(activityIndex, 1);\n updatedStage.serviceFlowActivities = updatedActivities;\n const newStages = [...prevList];\n newStages[stageIndex] = updatedStage;\n return newStages;\n });\n },\n }),\n []\n );\n\n return (\n <div className=\"container\">\n <ul className=\"nav\">\n {stages?.map((stage, index) => (\n <StageNavItem\n key={index}\n stage={stage}\n readOnly={readOnly}\n otherStageNames={stages\n .filter((s) => s !== stage)\n .map((s) => s.name)}\n onNameChange={(newName) => {\n setStages((prev) => {\n const prevList = prev ?? [];\n const updatedStages = [...prevList];\n updatedStages[index] = {\n ...stage,\n name: newName,\n };\n return updatedStages;\n });\n }}\n onDelete={() => {\n setStages((prev) => {\n const prevList = prev ?? [];\n const updatedStages = prevList.filter((_, i) => i !== index);\n return updatedStages;\n });\n }}\n />\n ))}\n {addingStage && (\n <li className=\"nav-item pending\">\n <StageNameInput\n onDone={(stageName) => {\n setAddingStage(false);\n if (stageName) {\n setStages((prev) => {\n const prevList = prev ?? [];\n if (prevList.find((s) => s.name === stageName)) {\n // Stage with the same name already exists\n showDialog({\n type: \"warn\",\n content: t(K.STAGE_NAME_EXISTS, { name: stageName }),\n });\n return prevList;\n }\n return [...prevList, { name: stageName }];\n });\n }\n }}\n />\n </li>\n )}\n {!readOnly && (\n <li className=\"nav-add\">\n <button\n className=\"btn-add-stage\"\n onClick={() => setAddingStage(true)}\n >\n <WrappedIcon lib=\"antd\" icon=\"plus\" className=\"plus\" />\n {t(K.ADD_STAGE)}\n </button>\n </li>\n )}\n </ul>\n <div className=\"lanes\">\n {stages?.map((stage, index) => (\n <ul className=\"lane\" key={index}>\n {stage.serviceFlowActivities?.map((activity, activityIndex) => (\n <li key={activityIndex}>\n <div\n className=\"activity\"\n onClick={() => {\n if (!readOnly) {\n onEditActivity({ stage, activity, activityIndex });\n }\n }}\n >\n <div className=\"title\">{activity.name}</div>\n <div className=\"assignee\">\n <WrappedIcon\n lib=\"antd\"\n icon=\"user\"\n className=\"assignee-icon\"\n />\n {getAIEmployeeName(activity.aiEmployeeId)}\n </div>\n </div>\n </li>\n ))}\n {!readOnly && (\n <li>\n <button\n className=\"btn-add-activity\"\n onClick={() => onAddActivity(stage)}\n >\n <WrappedIcon lib=\"antd\" icon=\"plus\" />\n {t(K.ADD_ACTIVITY)}\n </button>\n </li>\n )}\n </ul>\n ))}\n </div>\n </div>\n );\n}\n\ninterface StageNameInputProps {\n onDone: (name: string) => void;\n}\n\nfunction StageNameInput({ onDone }: StageNameInputProps) {\n const compositionRef = useRef(false);\n\n return (\n <input\n className=\"input-new-stage\"\n type=\"text\"\n placeholder={t(K.PLEASE_ENTER_NAME)}\n autoFocus\n onCompositionStart={() => {\n compositionRef.current = true;\n }}\n onCompositionEnd={() => {\n compositionRef.current = false;\n }}\n onKeyDown={(e) => {\n if (compositionRef.current) {\n // Ignore key events during composition\n return;\n }\n if (e.key === \"Enter\") {\n e.preventDefault();\n const stageName = (e.target as HTMLInputElement).value.trim();\n onDone(stageName);\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n onDone(\"\");\n }\n }}\n onBlur={(e) => {\n const stageName = e.target.value.trim();\n onDone(stageName);\n }}\n />\n );\n}\n\ninterface StageNavItemProps {\n stage: Stage;\n otherStageNames: string[];\n readOnly?: boolean;\n onNameChange: (name: string) => void;\n onDelete: (stage: Stage) => void;\n}\n\nfunction StageNavItem({\n stage,\n otherStageNames,\n readOnly,\n onNameChange,\n onDelete,\n}: StageNavItemProps) {\n const compositionRef = useRef(false);\n const popoverRef = useRef<Popover>(null);\n\n if (readOnly) {\n return (\n <li className=\"nav-item\">\n <span className=\"nav-link\">\n <span>{stage.name}</span>\n </span>\n </li>\n );\n }\n\n return (\n <li className=\"nav-item\">\n <WrappedPopover\n trigger=\"click\"\n placement=\"bottom\"\n sync=\"width\"\n arrow={false}\n distance={8}\n themeVariant=\"elevo\"\n ref={popoverRef}\n >\n <button className=\"nav-link\" slot=\"anchor\" title={stage.name}>\n <span>{stage.name}</span>\n </button>\n <div className=\"stage-settings\">\n <WrappedInput\n value={stage.name}\n themeVariant=\"elevo\"\n onCompositionStart={() => {\n compositionRef.current = true;\n }}\n onCompositionEnd={() => {\n compositionRef.current = false;\n }}\n onBlur={(e) => {\n const newValue = (e.currentTarget as Input).value?.trim();\n if (newValue && newValue !== stage.name) {\n if (otherStageNames.includes(newValue)) {\n // Stage with the same name already exists\n showDialog({\n type: \"warn\",\n content: t(K.STAGE_NAME_EXISTS, { name: newValue }),\n });\n (e.currentTarget as Input).value = stage.name;\n } else {\n onNameChange(newValue);\n }\n } else if (!newValue) {\n (e.currentTarget as Input).value = stage.name;\n }\n }}\n onKeyDown={(e) => {\n if (compositionRef.current) {\n // Ignore key events during composition\n return;\n }\n if (e.key === \"Enter\") {\n e.preventDefault();\n popoverRef.current!.active = false;\n }\n }}\n />\n <div className=\"divider\" />\n <button\n onClick={async () => {\n popoverRef.current!.active = false;\n await showDialog({\n type: \"delete\",\n title: t(K.DELETE_STAGE),\n content: t(K.DELETE_STAGE_TIPS, { name: stage.name }),\n });\n onDelete(stage);\n }}\n >\n {t(K.DELETE)}\n </button>\n </div>\n </WrappedPopover>\n </li>\n );\n}\n","import * as React from \"react\";\nconst SvgStage = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"currentColor\" stroke=\"currentColor\" aria-hidden=\"true\" viewBox=\"0 0 20 26\" {...props}><g fillRule=\"evenodd\"><path d=\"M12 9H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1zm0 10H8a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1zM10 7v9\" /><path strokeLinecap=\"round\" d=\"M17.112 16.112h-4.224\" /></g></svg>;\nexport default SvgStage;","import React, { useEffect, useState } from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport {\n GeneralIcon,\n type GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport styleText from \"./styles.shadow.css\";\nimport type { JobState, TaskState } from \"../shared/interfaces.js\";\nimport StageIcon from \"./images/stage.svg\";\nimport classNames from \"classnames\";\nimport { getFlowOrActivityIcon } from \"../shared/getFlowOrActivityIcon\";\nimport { formatDuration } from \"./formatDuration\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface RunningFlowProps {\n spec?: FlowStage[];\n}\n\nexport interface FlowStage {\n name: string;\n serviceFlowActivities?: FlowActivity[];\n}\n\nexport interface FlowActivity {\n name: string;\n taskId?: string;\n state?: TaskState | JobState;\n startTime?: number;\n endTime?: number;\n}\n\nexport interface RunningFlowEvents {\n \"activity.click\": CustomEvent<string>;\n}\n\nexport interface RunningFlowMapEvents {\n onActivityClick: \"activity.click\";\n}\n\n/**\n * 构件 `ai-portal.running-flow`\n *\n * 运行中的流程视图构件,以泳道方式展示各阶段的活动及其运行状态(completed、working、input-required 等)。\n */\nexport\n@defineElement(\"ai-portal.running-flow\", {\n styleTexts: [styleText],\n})\nclass RunningFlow extends ReactNextElement implements RunningFlowProps {\n /** 流程阶段配置数据,每个阶段包含名称和活动列表 */\n @property({ attribute: false })\n accessor spec: FlowStage[] | undefined;\n\n /**\n * @description 点击活动时触发,仅当活动有 taskId 时可触发\n * @detail 活动的 taskId\n */\n @event({ type: \"activity.click\" })\n accessor #activityClick!: EventEmitter<string>;\n\n #handleActivityClick = (activityId: string) => {\n this.#activityClick?.emit(activityId);\n };\n\n render() {\n return (\n <RunningFlowComponent\n spec={this.spec}\n onActivityClick={this.#handleActivityClick}\n />\n );\n }\n}\n\ninterface RunningFlowComponentProps extends RunningFlowProps {\n onActivityClick: (activityId: string) => void;\n}\n\nfunction RunningFlowComponent({\n spec: stages,\n onActivityClick,\n}: RunningFlowComponentProps) {\n return (\n <div className=\"container\">\n <ul className=\"nav\">\n {stages?.map((stage, index) => (\n <li key={index} className=\"nav-item\">\n <div className=\"nav-content\">\n <span className=\"icon\">\n <StageIcon />\n </span>\n <div className=\"title\">{stage.name}</div>\n </div>\n </li>\n ))}\n </ul>\n <div className=\"lanes\">\n {stages?.map((stage, index) => (\n <ul className=\"lane\" key={index}>\n {stage.serviceFlowActivities?.map((activity, activityIndex) => (\n <li key={activityIndex}>\n <div\n className={classNames(\n \"activity\",\n getActivityStateClassName(activity.state)\n )}\n onClick={() => {\n if (activity.taskId) {\n onActivityClick(activity.taskId);\n }\n }}\n >\n <WrappedIcon\n {...getFlowOrActivityIcon(activity.state)}\n className=\"icon\"\n />\n <div className=\"title\">{activity.name}</div>\n {activity.startTime != null && activity.endTime != null && (\n <Duration\n startTime={activity.startTime}\n endTime={activity.endTime}\n state={activity.state}\n />\n )}\n </div>\n </li>\n ))}\n </ul>\n ))}\n </div>\n </div>\n );\n}\n\nfunction getActivityStateClassName(state: TaskState | JobState | undefined) {\n switch (state) {\n case \"input-required\":\n return \"paused\";\n case \"completed\":\n return \"completed\";\n case \"failed\":\n return \"failed\";\n case \"working\":\n return \"working\";\n default:\n return \"default\";\n }\n}\n\ninterface DurationProps {\n startTime: number | undefined;\n endTime: number | undefined;\n state: TaskState | JobState | undefined;\n}\n\nfunction Duration({ startTime, endTime, state }: DurationProps) {\n const [end, setEnd] = useState(endTime);\n const countTime = startTime != null && endTime == null && state === \"working\";\n\n useEffect(() => {\n if (endTime != null) {\n setEnd(endTime);\n }\n }, [endTime]);\n\n useEffect(() => {\n if (countTime) {\n const setEndTime = () => {\n setEnd(Date.now() / 1e3);\n };\n setEndTime();\n const interval = setInterval(setEndTime, 1e3);\n return () => clearInterval(interval);\n }\n }, [countTime]);\n\n if (startTime == null || end == null) {\n return null;\n }\n\n return <div className=\"duration\">{formatDuration(end - startTime)}</div>;\n}\n","/**\n * Format duration as \"00:12\"\n *\n * @param duration in seconds\n */\nexport function formatDuration(duration: number): string {\n const ceilDuration = Math.ceil(duration);\n const minutes = Math.floor(ceilDuration / 60);\n const seconds = ceilDuration % 60;\n return `${String(minutes).padStart(2, \"0\")}:${String(seconds).padStart(2, \"0\")}`;\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n MESSAGE_LIST = \"MESSAGE_LIST\",\n NO_NEW_MESSAGE = \"NO_NEW_MESSAGE\",\n MARK_ALL_READ = \"MARK_ALL_READ\",\n ENTER_MESSAGE_CENTER = \"ENTER_MESSAGE_CENTER\",\n}\n\nconst en: Locale = {\n MESSAGE_LIST: \"Message List\",\n NO_NEW_MESSAGE: \"No new messages for now\",\n MARK_ALL_READ: \"Mark all as read\",\n ENTER_MESSAGE_CENTER: \"Enter Message Center\",\n};\n\nconst zh: Locale = {\n MESSAGE_LIST: \"消息列表\",\n NO_NEW_MESSAGE: \"暂无新消息\",\n MARK_ALL_READ: \"全部已读\",\n ENTER_MESSAGE_CENTER: \"进入消息中心\",\n};\n\nexport const NS = \"bricks/ai-portal/notice-dropdown\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, { useState, useCallback, useEffect, useRef } from \"react\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport {\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping,\n Placement,\n} from \"@next-bricks/basic/popover\";\nimport { GeneralIcon, GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport { Link, LinkProps, Target } from \"@next-bricks/basic/link\";\nimport { Button, ButtonProps } from \"@next-bricks/basic/button\";\nimport { EoCounterBadge, BadgeProps } from \"@next-bricks/basic/counter-badge\";\nimport { IconButton, IconButtonProps } from \"../icon-button/index.js\";\n\nimport { parseTemplate } from \"../shared/parseTemplate.js\";\nimport projectNotifySvg from \"./images/project-notify.svg?url\";\nimport accountNotifySvg from \"./images/account-notify.svg?url\";\nimport systemNotifySvg from \"./images/system-notify.svg?url\";\nimport spaceNotifySvg from \"./images/space-notify.svg?url\";\n\ninitializeI18n(NS, locales);\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedPopover = wrapBrick<\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping\n>(\"eo-popover\", {\n onVisibleChange: \"visible.change\",\n onBeforeVisibleChange: \"before.visible.change\",\n});\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedButton = wrapBrick<Button, ButtonProps>(\"eo-button\");\nconst WrapperCounterBadge = wrapBrick<EoCounterBadge, BadgeProps>(\n \"eo-counter-badge\"\n);\nconst WrapperIconButton = wrapBrick<IconButton, IconButtonProps>(\n \"ai-portal.icon-button\"\n);\n\nexport interface NoticeItem {\n id: string;\n type: string;\n isRead: boolean;\n title: string;\n description?: string;\n time: number;\n /** 单个消息详情链接,优先级高于 urlTemplate */\n url?: string;\n}\n\nexport interface NoticeDropdownProps {\n /** 消息数据列表 */\n dataSource?: NoticeItem[];\n /** 弹窗位置 */\n popoverPlacement?: Placement;\n /** 空状态文案 */\n emptyText?: string;\n /** 通知中心URL */\n notifyCenterUrl?: string;\n /** 详情链接 */\n urlTemplate?: string;\n /** 下拉框最大宽度 */\n dropdownMaxWidth?: string | number;\n /** 下拉框内容样式 */\n dropdownContentStyle?: React.CSSProperties;\n /** 是否隐藏进入消息中心按钮 */\n hideNotifyCenterButton?: boolean;\n /** 详情链接目标 */\n urlTarget?: Target;\n}\n\n/**\n * 构件 `ai-portal.notice-dropdown`\n *\n * 消息通知下拉框构件,用于展示消息列表\n */\nexport\n@defineElement(\"ai-portal.notice-dropdown\", {\n styleTexts: [styleText],\n})\nclass NoticeDropdown extends ReactNextElement implements NoticeDropdownProps {\n /** 消息数据列表 */\n @property({ attribute: false })\n accessor dataSource: NoticeItem[] | undefined;\n\n /**\n * 弹窗位置\n */\n @property()\n accessor popoverPlacement: Placement | undefined;\n\n /** 空状态文案 */\n @property()\n accessor emptyText: string | undefined;\n\n /** 通知中心URL */\n @property()\n accessor notifyCenterUrl: string | undefined;\n\n /** 详情链接 */\n @property()\n accessor urlTemplate: string | undefined;\n\n /** 详情链接目标 */\n @property()\n accessor urlTarget: Target | undefined;\n\n /** 下拉框最大宽度 */\n @property()\n accessor dropdownMaxWidth: string | number | undefined;\n\n /** 下拉框内容样式 */\n @property({ attribute: false })\n accessor dropdownContentStyle: React.CSSProperties | undefined;\n\n /** 是否隐藏进入消息中心按钮 */\n @property({ type: Boolean })\n accessor hideNotifyCenterButton: boolean | undefined;\n\n /**\n * @description 消息项点击事件\n * @detail { id: 消息ID, type: 消息类型, isRead: 是否已读, title: 标题, description: 描述, time: 时间戳, url: 详情链接 }\n */\n @event({ type: \"notice.click\" })\n accessor #noticeClickEvent!: EventEmitter<NoticeItem>;\n\n /**\n * @description 全部已读点击事件\n */\n @event({ type: \"mark.all.read\" })\n accessor #markAllReadEvent!: EventEmitter<void>;\n\n #handleNoticeClick = (item: NoticeItem) => {\n this.#noticeClickEvent.emit(item);\n };\n\n #handleMarkAllRead = () => {\n this.#markAllReadEvent.emit();\n };\n\n render() {\n return (\n <NoticeDropdownComponent\n dataSource={this.dataSource}\n popoverPlacement={this.popoverPlacement}\n emptyText={this.emptyText}\n onNoticeClick={this.#handleNoticeClick}\n urlTemplate={this.urlTemplate}\n dropdownMaxWidth={this.dropdownMaxWidth}\n notifyCenterUrl={this.notifyCenterUrl}\n dropdownContentStyle={this.dropdownContentStyle}\n onMarkAllRead={this.#handleMarkAllRead}\n hideNotifyCenterButton={this.hideNotifyCenterButton}\n urlTarget={this.urlTarget}\n />\n );\n }\n}\n\ninterface NoticeDropdownComponentProps extends NoticeDropdownProps {\n onNoticeClick: (item: NoticeItem) => void;\n onMarkAllRead: () => void;\n}\n\nfunction NoticeDropdownComponent({\n dataSource = [],\n popoverPlacement,\n emptyText,\n notifyCenterUrl,\n urlTemplate,\n dropdownMaxWidth,\n dropdownContentStyle,\n onNoticeClick,\n onMarkAllRead,\n hideNotifyCenterButton,\n urlTarget,\n}: NoticeDropdownComponentProps) {\n const [open, setOpen] = useState(false);\n const popoverRef = useRef(null);\n const handleBeforeVisibleChange = useCallback((e: CustomEvent<boolean>) => {\n setOpen(e.detail);\n }, []);\n\n const handleClose = useCallback(() => {\n setOpen(false);\n }, []);\n\n const handleNoticeItemClick = useCallback(\n (item: NoticeItem) => {\n onNoticeClick(item);\n },\n [onNoticeClick]\n );\n\n const handleMarkAllReadClick = useCallback(() => {\n onMarkAllRead();\n }, [onMarkAllRead]);\n\n // 添加外部点击检测,兼容在某些场景下没有触发关闭浮层的问题\n /* istanbul ignore next */\n useEffect(() => {\n if (!open) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n const path = event.composedPath?.() || [];\n\n const isInsideNoticeDropdown = path.some((element) => {\n if (element instanceof HTMLElement) {\n return element === popoverRef.current;\n }\n return false;\n });\n\n if (!isInsideNoticeDropdown) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"click\", handleClickOutside, true);\n\n return () => {\n document.removeEventListener(\"click\", handleClickOutside, true);\n };\n }, [open]);\n\n return (\n <WrappedPopover\n className=\"popover\"\n placement={popoverPlacement}\n trigger=\"click\"\n active={open}\n arrow={false}\n distance={8}\n ref={popoverRef}\n onBeforeVisibleChange={handleBeforeVisibleChange}\n >\n <span slot=\"anchor\">\n <slot name=\"trigger\">\n <WrapperCounterBadge\n showZero={false}\n dot={true}\n count={dataSource?.length ?? 0}\n offset={[-5, 0]}\n >\n <WrapperIconButton icon={{ lib: \"antd\", icon: \"bell\" }} />\n </WrapperCounterBadge>\n </slot>\n </span>\n <div\n className=\"notice-dropdown-content\"\n style={{ maxWidth: dropdownMaxWidth }}\n >\n <div className=\"header\">\n <div className=\"title\">{t(K.MESSAGE_LIST)}</div>\n <div className=\"close-btn\" onClick={handleClose}>\n <WrappedIcon lib=\"antd\" icon=\"close\" />\n </div>\n </div>\n\n <div className=\"content\" style={dropdownContentStyle}>\n {dataSource?.length > 0 ? (\n <ul className=\"message-list\">\n {dataSource.map((item) => (\n <li key={item.id}>\n <WrappedLink\n className=\"link\"\n url={item.url ?? parseTemplate(urlTemplate, item)}\n target={urlTarget}\n onClick={() => handleNoticeItemClick(item)}\n >\n <div className=\"icon-wrapper\">\n <WrappedIcon\n imgSrc={getNotifyIcon(item.type)}\n keepSvgOriginalColor={true}\n />\n </div>\n <div className=\"message-content\">\n <div className=\"primary-text\">{item.title}</div>\n {item.description && (\n <div className=\"secondary-text\">{item.description}</div>\n )}\n </div>\n </WrappedLink>\n </li>\n ))}\n </ul>\n ) : (\n <div className=\"empty-state\">\n {emptyText || t(K.NO_NEW_MESSAGE)}\n </div>\n )}\n </div>\n\n <div className=\"footer\">\n <WrappedButton\n disabled={!dataSource?.length}\n type=\"text\"\n className=\"footer-button\"\n onClick={handleMarkAllReadClick}\n >\n {t(K.MARK_ALL_READ)}\n </WrappedButton>\n {!hideNotifyCenterButton && (\n <WrappedButton\n target=\"_blank\"\n href={notifyCenterUrl}\n type=\"text\"\n className=\"footer-button\"\n >\n {t(K.ENTER_MESSAGE_CENTER)} &gt;\n </WrappedButton>\n )}\n </div>\n </div>\n </WrappedPopover>\n );\n}\n\nexport function getNotifyIcon(type: string): string {\n switch (type) {\n case \"project\":\n return projectNotifySvg;\n case \"account\":\n return accountNotifySvg;\n case \"system\":\n return systemNotifySvg;\n case \"space\":\n return spaceNotifySvg;\n default:\n return projectNotifySvg;\n }\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n MARK_READ = \"MARK_READ\",\n MARK_ALL_READ = \"MARK_ALL_READ\",\n NO_MESSAGE = \"NO_MESSAGE\",\n}\n\nconst en: Locale = {\n MARK_READ: \"Mark as read\",\n MARK_ALL_READ: \"Mark all as read\",\n NO_MESSAGE: \"No messages\",\n};\n\nconst zh: Locale = {\n MARK_READ: \"标记已读\",\n MARK_ALL_READ: \"全部已读\",\n NO_MESSAGE: \"暂无消息\",\n};\n\nexport const NS = \"bricks/ai-portal/notice-list\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, {\n useState,\n useCallback,\n useMemo,\n useEffect,\n useRef,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\n\nimport { GeneralIcon, GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport { Link, LinkProps, Target } from \"@next-bricks/basic/link\";\nimport type {\n Checkbox,\n CheckboxProps,\n CheckboxValueType,\n} from \"@next-bricks/form/checkbox\";\nimport { parseTemplate } from \"../shared/parseTemplate.js\";\nimport { humanizeTime, HumanizeTimeFormat } from \"@next-shared/datetime\";\nimport { getNotifyIcon, NoticeItem } from \"../notice-dropdown/index.js\";\nimport { Button, ButtonProps } from \"@next-bricks/basic/button\";\n\ninitializeI18n(NS, locales);\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface CheckboxEvents {\n change: CustomEvent<CheckboxValueType[]>;\n}\n\nexport interface CheckboxMapping {\n onValuesChange: \"change\";\n}\n\nconst WrappedButton = wrapBrick<Button, ButtonProps>(\"eo-button\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedCheckbox = wrapBrick<\n Checkbox,\n CheckboxProps,\n CheckboxEvents,\n CheckboxMapping\n>(\"eo-checkbox\", {\n onValuesChange: \"change\",\n});\n\nexport interface NoticeListProps {\n /** 消息数据列表 */\n dataSource?: NoticeItem[];\n /** 空状态文案 */\n emptyText?: string;\n /** 详情链接 */\n urlTemplate?: string;\n /** 详情链接目标 */\n urlTarget?: Target;\n /** 选中的消息 ID 数组 */\n selectedIds?: string[];\n}\n\n/**\n * 构件 `ai-portal.notice-list`\n *\n * 消息通知列表构件,用于展示消息列表,支持批量操作\n */\nexport\n@defineElement(\"ai-portal.notice-list\", {\n styleTexts: [styleText],\n})\nclass NoticeList extends ReactNextElement implements NoticeListProps {\n /** 消息数据列表 */\n @property({ attribute: false })\n accessor dataSource: NoticeItem[] | undefined;\n\n /** 空状态文案 */\n @property()\n accessor emptyText: string | undefined;\n\n /** 详情链接 */\n @property()\n accessor urlTemplate: string | undefined;\n\n /** 详情链接目标 */\n @property()\n accessor urlTarget: Target | undefined;\n\n /** 选中的消息 ID 数组 */\n @property({ attribute: false })\n accessor selectedIds: string[] | undefined;\n\n /**\n * 消息项点击事件\n * @detail 消息项数据\n */\n @event({ type: \"notice.click\" })\n accessor #noticeClickEvent!: EventEmitter<NoticeItem>;\n\n /**\n * 标记消息项已读事件\n * @detail 选中的消息 ID 数组\n */\n @event({ type: \"mark.items.read\" })\n accessor #markItemsReadEvent!: EventEmitter<NoticeItem[]>;\n\n /**\n * 全部已读事件\n */\n @event({ type: \"mark.all.read\" })\n accessor #markAllReadEvent!: EventEmitter<void>;\n\n #handleNoticeClick = (item: NoticeItem) => {\n this.#noticeClickEvent.emit(item);\n };\n\n #handleMarkItemsRead = (items: NoticeItem[]) => {\n this.#markItemsReadEvent.emit(items);\n };\n\n #handleMarkAllRead = () => {\n this.#markAllReadEvent.emit();\n };\n\n render() {\n return (\n <NoticeListComponent\n dataSource={this.dataSource}\n emptyText={this.emptyText}\n onNoticeClick={this.#handleNoticeClick}\n onMarkItemsRead={this.#handleMarkItemsRead}\n onMarkAllRead={this.#handleMarkAllRead}\n selectedIds={this.selectedIds}\n urlTemplate={this.urlTemplate}\n urlTarget={this.urlTarget}\n />\n );\n }\n}\n\ninterface NoticeListComponentProps extends NoticeListProps {\n onNoticeClick: (item: NoticeItem) => void;\n onMarkItemsRead: (items: NoticeItem[]) => void;\n onMarkAllRead: () => void;\n}\n\ninterface NoticeListItemProps {\n item: NoticeItem;\n selected: boolean;\n urlTemplate?: string;\n urlTarget?: Target;\n onSelectItem: (id: string, checked: boolean) => void;\n onNoticeClick: (item: NoticeItem) => void;\n}\n\nfunction NoticeListComponent({\n dataSource = [],\n emptyText,\n onNoticeClick,\n onMarkItemsRead,\n onMarkAllRead,\n urlTemplate,\n urlTarget,\n selectedIds: _selectedIds,\n}: NoticeListComponentProps) {\n const [selectedIds, setSelectedIds] = useState<Set<string>>(\n new Set(_selectedIds || [])\n );\n\n const currentAllIds = useMemo(() => {\n // 过滤当前已读的项目,只有未读的项目可以选中\n return (\n dataSource?.filter((item) => !item.isRead).map((item) => item.id) || []\n );\n }, [dataSource]);\n\n const isAllSelected = useMemo(() => {\n return (\n currentAllIds.length > 0 &&\n currentAllIds.every((id) => selectedIds.has(id))\n );\n }, [currentAllIds, selectedIds]);\n\n const handleSelectAll = useCallback(\n (checked: boolean) => {\n const newSelectedIds = new Set(checked ? currentAllIds : []);\n setSelectedIds(newSelectedIds);\n },\n [currentAllIds]\n );\n\n const handleSelectItem = useCallback(\n (id: string, checked: boolean) => {\n const newSelectedIds = checked\n ? new Set([...selectedIds, id])\n : new Set(\n Array.from(selectedIds).filter((selectedId) => selectedId !== id)\n );\n\n setSelectedIds(newSelectedIds);\n },\n [selectedIds]\n );\n\n const handleNoticeItemClick = useCallback(\n (item: NoticeItem) => {\n onNoticeClick(item);\n },\n [onNoticeClick]\n );\n\n useEffect(() => {\n setSelectedIds(new Set(_selectedIds || []));\n }, [_selectedIds]);\n\n return (\n <div>\n <div className=\"toolbar\">\n <WrappedCheckbox\n disabled={currentAllIds?.length === 0}\n themeVariant=\"elevo\"\n className=\"all-checkbox\"\n options={[{ label: \"\", value: \"selectAll\" }]}\n value={isAllSelected ? [\"selectAll\"] : []}\n onValuesChange={(e) => handleSelectAll(!!e.detail?.length)}\n />\n\n <WrappedButton\n className=\"read-link\"\n type=\"link\"\n themeVariant=\"elevo\"\n disabled={selectedIds.size === 0}\n onClick={() =>\n onMarkItemsRead(\n dataSource.filter((item) => selectedIds.has(item.id))\n )\n }\n >\n {t(K.MARK_READ)}\n </WrappedButton>\n <WrappedButton\n className=\"read-link\"\n type=\"link\"\n onClick={onMarkAllRead}\n themeVariant=\"elevo\"\n >\n {t(K.MARK_ALL_READ)}\n </WrappedButton>\n </div>\n\n <div className=\"content\">\n {dataSource?.length > 0 ? (\n <ul className=\"message-list\">\n {dataSource.map((item) => (\n <li key={item.id}>\n <NoticeListItem\n item={item}\n selected={selectedIds.has(item.id)}\n urlTemplate={urlTemplate}\n urlTarget={urlTarget}\n onSelectItem={handleSelectItem}\n onNoticeClick={handleNoticeItemClick}\n />\n </li>\n ))}\n </ul>\n ) : (\n <div className=\"empty-state\">{emptyText || t(K.NO_MESSAGE)}</div>\n )}\n </div>\n </div>\n );\n}\n\nfunction NoticeListItem({\n item,\n selected,\n urlTemplate,\n urlTarget,\n onSelectItem,\n onNoticeClick,\n}: NoticeListItemProps) {\n const checkboxRef = useRef<Checkbox>(null);\n\n // stop propagation and prevent default manually in eo-link\n useEffect(() => {\n const el = checkboxRef.current;\n if (!el) return;\n const handleClick = (e: MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n };\n el.addEventListener(\"click\", handleClick);\n return () => {\n el.removeEventListener(\"click\", handleClick);\n };\n }, []);\n\n return (\n <WrappedLink\n className={classNames(\"message-item-link\", {\n \"has-read\": item.isRead,\n })}\n url={item.url ?? parseTemplate(urlTemplate, item)}\n target={urlTarget}\n onClick={() => onNoticeClick(item)}\n >\n <div className=\"left\">\n <WrappedCheckbox\n ref={checkboxRef}\n disabled={item.isRead}\n themeVariant=\"elevo\"\n className=\"item-checkbox\"\n options={[{ label: \"\", value: item.id }]}\n value={selected ? [item.id] : []}\n onValuesChange={(e) => {\n onSelectItem(item.id, !!e.detail?.length);\n }}\n />\n <div className=\"icon-wrapper\">\n <WrappedIcon\n imgSrc={getNotifyIcon(item.type)}\n keepSvgOriginalColor={true}\n />\n </div>\n <div className=\"title\" title={item.title}>\n {item.title}\n </div>\n </div>\n\n <div className=\"right\">\n <div className=\"message-time\">\n {humanizeTime(item.time, HumanizeTimeFormat.relative)}\n </div>\n </div>\n </WrappedLink>\n );\n}\n","// istanbul ignore file\nimport React, {\n createRef,\n forwardRef,\n useCallback,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport type {\n Modal,\n ModalProps,\n ModalEvents,\n ModalMapEvents,\n} from \"@next-bricks/containers/modal\";\nimport { http } from \"@next-core/http\";\nimport type { UseBrickConfOrRenderFunction } from \"@next-core/react-runtime\";\nimport type {\n ChatPayload,\n CommandPayload,\n FileInfo,\n RequestStore,\n UploadOptions,\n} from \"../shared/interfaces\";\nimport { handleHttpError } from \"@next-core/runtime\";\nimport backgroundImage from \"../home-container/images/background.png\";\nimport { ChatPanelContent, type ChatPanelContentRef } from \"./ChatPanelContent\";\n\nconst WrappedModal = wrapBrick<\n Modal,\n ModalProps & {\n themeVariant?: \"default\" | \"elevo\";\n height?: string | number;\n noFooter?: boolean;\n headerBordered?: boolean;\n background?: string;\n fullscreenButton?: boolean;\n },\n ModalEvents,\n ModalMapEvents\n>(\"eo-modal\", {\n onClose: \"close\",\n onConfirm: \"confirm\",\n onCancel: \"cancel\",\n onOpen: \"open\",\n});\n\nconst { defineElement, property, method } = createDecorators();\n\nexport interface ChatPanelProps {\n panelTitle?: string;\n aiEmployeeId?: string;\n cmd?: CommandPayload;\n width?: string | number;\n height?: string | number;\n placeholder?: string;\n uploadOptions?: UploadOptions;\n help?: { useBrick: UseBrickConfOrRenderFunction };\n maskClosable?: boolean;\n}\n\nconst ChatPanelComponent = forwardRef(LegacyChatPanelComponent);\n\n/**\n * 弹出式 AI 对话面板,以模态框形式展示对话界面,支持与 AI 助手进行多轮对话。\n *\n * @description 弹出式 AI 对话面板,以模态框形式展示对话界面,支持与 AI 助手进行多轮对话。\n * @category ai-portal\n */\nexport\n@defineElement(\"ai-portal.chat-panel\", {\n shadowOptions: false,\n})\nclass ChatPanel extends ReactNextElement implements ChatPanelProps {\n /**\n * 面板标题\n */\n @property()\n accessor panelTitle: string | undefined;\n\n /**\n * 预设数字人 ID,对话提交时会携带该 ID\n */\n @property()\n accessor aiEmployeeId: string | undefined;\n\n /**\n * 预设命令载荷,对话提交时会携带该命令\n */\n @property({ attribute: false })\n accessor cmd: CommandPayload | undefined;\n\n /**\n * 面板宽度\n */\n @property({ attribute: false }) accessor width: string | number | undefined;\n\n /**\n * 面板高度\n */\n @property({ attribute: false }) accessor height: string | number | undefined;\n\n /**\n * 输入框占位文字\n */\n @property()\n accessor placeholder: string | undefined;\n\n /**\n * 文件上传配置\n */\n @property({ attribute: false })\n accessor uploadOptions: UploadOptions | undefined;\n\n /**\n * 无对话时显示的帮助内容配置\n */\n @property({ attribute: false })\n accessor help: { useBrick: UseBrickConfOrRenderFunction } | undefined;\n\n /**\n * 是否点击遮罩关闭面板\n *\n * @default false\n */\n @property({ type: Boolean })\n accessor maskClosable: boolean | undefined;\n\n #ref = createRef<ChatPanelRef>();\n\n /**\n * 打开对话面板\n */\n @method()\n open() {\n this.#ref.current?.open();\n }\n\n /**\n * 关闭对话面板\n */\n @method()\n close() {\n this.#ref.current?.close();\n }\n\n /**\n * 设置输入框的内容\n * @param content 要设置的文本内容\n */\n @method()\n setInputValue(content: string) {\n this.#ref.current?.setInputValue(content);\n }\n\n /**\n * 直接发送一条消息\n * @param payload 消息载荷,包含文本内容及可选的文件、命令等\n */\n @method()\n send(payload: ChatPayload) {\n this.#ref.current?.send(payload);\n }\n\n /**\n * 在面板中显示文件预览\n * @param file 要预览的文件信息\n */\n @method()\n showFile(file: FileInfo) {\n this.#ref.current?.showFile(file);\n }\n\n render() {\n return (\n <ChatPanelComponent\n ref={this.#ref}\n panelTitle={this.panelTitle}\n aiEmployeeId={this.aiEmployeeId}\n cmd={this.cmd}\n width={this.width}\n height={this.height}\n placeholder={this.placeholder}\n uploadOptions={this.uploadOptions}\n help={this.help}\n maskClosable={this.maskClosable}\n />\n );\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ninterface ChatPanelComponentProps extends ChatPanelProps {\n // Define react event handlers here.\n}\n\ninterface ChatPanelRef {\n open: () => void;\n close: () => void;\n setInputValue: (content: string) => void;\n send: (payload: ChatPayload) => void;\n showFile: (file: FileInfo) => void;\n}\n\nfunction LegacyChatPanelComponent(\n {\n panelTitle,\n aiEmployeeId,\n cmd,\n width,\n height,\n placeholder,\n uploadOptions,\n help,\n maskClosable,\n }: ChatPanelComponentProps,\n ref: React.Ref<ChatPanelRef>\n) {\n const modalRef = useRef<Modal>(null);\n const contentRef = useRef<ChatPanelContentRef>(null);\n\n const [submitDisabled, setSubmitDisabled] = useState(false);\n\n const [conversationId, setConversationId] = useState<string | null>(null);\n const [initialRequest, setInitialRequest] = useState<RequestStore | null>(\n null\n );\n\n const handleChatSubmit = useCallback(\n async (payload: ChatPayload) => {\n setSubmitDisabled(true);\n try {\n const res = await http.post<{\n data: { conversationId: string };\n }>(\n \"api/gateway/logic.llm.aiops_service/api/v1/elevo/conversations\",\n {}\n );\n const conversationId = res.data.conversationId;\n setConversationId(conversationId);\n setInitialRequest({\n ...payload,\n ...(aiEmployeeId ? { aiEmployeeId } : null),\n ...(cmd ? { cmd } : null),\n conversationId: conversationId,\n });\n } catch (e) {\n handleHttpError(e);\n } finally {\n setSubmitDisabled(false);\n }\n },\n [aiEmployeeId, cmd]\n );\n\n useImperativeHandle(\n ref,\n () => ({\n open: () => {\n modalRef.current?.open();\n },\n close: () => {\n modalRef.current?.close();\n },\n setInputValue: (content: string) => {\n contentRef.current?.setInputValue(content);\n },\n send: (payload: ChatPayload) => {\n handleChatSubmit(payload);\n },\n showFile: (file: FileInfo) => {\n contentRef.current?.showFile(file);\n },\n }),\n [handleChatSubmit]\n );\n\n return (\n <WrappedModal\n modalTitle={panelTitle}\n width={width}\n height={height}\n themeVariant=\"elevo\"\n maskClosable={maskClosable}\n noFooter\n headerBordered\n fullscreenButton\n background={`fixed url(${backgroundImage}) center center / cover no-repeat`}\n onOpen={() => {\n setTimeout(() => {\n contentRef.current?.focus();\n }, 100);\n }}\n ref={modalRef}\n >\n <ChatPanelContent\n fromModal\n ref={contentRef}\n conversationId={conversationId}\n initialRequest={initialRequest}\n placeholder={placeholder}\n uploadOptions={uploadOptions}\n help={help}\n submitDisabled={submitDisabled}\n onChatSubmit={handleChatSubmit}\n />\n </WrappedModal>\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport spaceLogoSvg from \"../images/space-logo.svg?url\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface SpaceLogoProps {\n size?: number;\n}\n\n/**\n * 构件 `ai-portal.space-logo`\n *\n * 协作空间的 Logo 展示组件\n */\nexport\n@defineElement(\"ai-portal.space-logo\", {\n styleTexts: [styleText],\n})\nclass SpaceLogo extends ReactNextElement implements SpaceLogoProps {\n /** Logo 容器尺寸(px),图标为容器的 87.5%,圆角为容器的 25%,默认 48 */\n @property({ type: Number })\n accessor size: number | undefined;\n\n render() {\n return <SpaceLogoComponent size={this.size} />;\n }\n}\n\nfunction SpaceLogoComponent({ size = 48 }: SpaceLogoProps) {\n const iconSize = Math.round(size * 0.875); // 图标为容器的 87.5%\n const borderRadius = Math.round(size * 0.25); // 圆角为容器的 25%\n\n return (\n <div\n className=\"space-logo\"\n style={{\n width: `${size}px`,\n height: `${size}px`,\n borderRadius: `${borderRadius}px`,\n }}\n >\n <img\n src={spaceLogoSvg}\n alt=\"Space Logo\"\n style={{\n width: `${iconSize}px`,\n height: `${iconSize}px`,\n }}\n />\n </div>\n );\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {}\n// HELLO = \"HELLO\",\n\nconst en: Locale = {\n // HELLO: \"Hello\",\n};\n\nconst zh: Locale = {\n // HELLO: \"你好\",\n};\n\nexport const NS = \"bricks/ai-portal/chat-panel-welcome\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { NS, locales } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\n\ninitializeI18n(NS, locales);\n\nconst { defineElement, property } = createDecorators();\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface ChatPanelWelcomeProps {\n text?: string;\n}\n\n/**\n * 构件 `ai-portal.chat-panel-welcome`\n *\n * 聊天面板欢迎语构件,展示带有 Elevo 头像的欢迎消息。\n */\nexport\n@defineElement(\"ai-portal.chat-panel-welcome\", {\n styleTexts: [styleText],\n})\nclass ChatPanelWelcome\n extends ReactNextElement\n implements ChatPanelWelcomeProps\n{\n /** 欢迎语文本内容 */\n @property()\n accessor text: string | undefined;\n\n render() {\n return <ChatPanelWelcomeComponent text={this.text} />;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ninterface ChatPanelWelcomeComponentProps extends ChatPanelWelcomeProps {}\n\nfunction ChatPanelWelcomeComponent({ text }: ChatPanelWelcomeComponentProps) {\n return (\n <div className=\"welcome-container\">\n <div className=\"header\">\n <WrappedIcon\n icon=\"elevo-avatar-png\"\n lib=\"easyops\"\n category=\"image\"\n className=\"avatar\"\n />\n <span className=\"title\">Elevo</span>\n </div>\n <div className=\"content\">{text}</div>\n </div>\n );\n}\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {}\n// HELLO = \"HELLO\",\n\nconst en: Locale = {\n // HELLO: \"Hello\",\n};\n\nconst zh: Locale = {\n // HELLO: \"你好\",\n};\n\nexport const NS = \"bricks/ai-portal/space-chat-guide\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import * as React from \"react\";\nconst SvgMagic = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={16} height={16} fill=\"none\" viewBox=\"0 0 16 16\" {...props}><g strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.333} clipPath=\"url(#a)\"><path stroke=\"url(#b)\" d=\"M7.344 1.876a.667.667 0 0 1 1.311 0l.7 3.705a1.33 1.33 0 0 0 1.063 1.063l3.706.7a.667.667 0 0 1 0 1.311l-3.706.701a1.33 1.33 0 0 0-1.062 1.063l-.7 3.705a.667.667 0 0 1-1.312 0l-.7-3.705A1.33 1.33 0 0 0 5.58 9.356l-3.705-.7a.667.667 0 0 1 0-1.311l3.705-.701a1.33 1.33 0 0 0 1.063-1.063z\" /><path stroke=\"#2540FF\" d=\"M13.334 1.333V4M14.667 2.667H12M2.667 14.667a1.333 1.333 0 1 0 0-2.667 1.333 1.333 0 0 0 0 2.667\" /></g><defs><linearGradient id=\"b\" x1={1} x2={19.5} y1={15} y2={1} gradientUnits=\"userSpaceOnUse\"><stop stopColor=\"#2540FF\" /><stop offset={1} stopColor=\"#DC90FF\" /></linearGradient><clipPath id=\"a\"><path fill=\"#fff\" d=\"M0 0h16v16H0z\" /></clipPath></defs></svg>;\nexport default SvgMagic;","import React, { useEffect, useState } from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport {\n ElevoSpaceApi_GenerateSpaceCapabilitiesResponseBody,\n ElevoSpaceApi_generateSpaceCapabilities,\n} from \"@next-api-sdk/llm-sdk\";\nimport type { SpaceLogo, SpaceLogoProps } from \"../space-logo/index.js\";\nimport { SpaceDetail } from \"../interfaces.js\";\nimport MagicSvg from \"../images/magic.svg\";\nimport layerSvg from \"../images/layer.svg?url\";\nimport layerBg from \"../images/layer-bg.png\";\nimport lightningSvg from \"../images/lightning.svg?url\";\nimport lightningBg from \"../images/lightning-bg.png\";\nimport bookSvg from \"../images/book.svg?url\";\nimport bookBg from \"../images/book-bg.png\";\nimport { K, t } from \"../i18n.js\";\nimport { handleHttpError } from \"@next-core/runtime\";\n\nconst WrappedSpaceLogo = wrapBrick<SpaceLogo, SpaceLogoProps>(\n \"ai-portal.space-logo\"\n);\n\nexport interface GuideCard {\n key: string;\n icon: string;\n background: string;\n title: string;\n description?: string;\n iconContainerColor: \"blue\" | \"orange\" | \"green\";\n}\n\nexport interface SpaceGuideProps {\n onCardClick?: (cardIndex: number) => void;\n spaceDetail: SpaceDetail;\n generateSpaceSummary?: boolean;\n}\n\nexport function SpaceGuide(props: SpaceGuideProps) {\n const { spaceDetail, onCardClick, generateSpaceSummary } = props;\n const [spaceCapabilities, setSpaceCapabilities] =\n useState<ElevoSpaceApi_GenerateSpaceCapabilitiesResponseBody | null>(null);\n const [loading, setLoading] = useState(true);\n\n const cards: GuideCard[] = [\n {\n key: \"manageInstancesCapability\",\n icon: layerSvg,\n background: layerBg,\n title: t(K.SPACE_GUIDE_CARD_1_TITLE),\n iconContainerColor: \"blue\",\n },\n {\n key: \"initiateFlowCapability\",\n icon: lightningSvg,\n background: lightningBg,\n title: t(K.SPACE_GUIDE_CARD_2_TITLE),\n iconContainerColor: \"orange\",\n },\n {\n key: \"searchKnowledgeCapability\",\n icon: bookSvg,\n background: bookBg,\n title: t(K.SPACE_GUIDE_CARD_3_TITLE),\n iconContainerColor: \"green\",\n },\n ];\n\n const handleCardClick = (index: number) => {\n onCardClick?.(index);\n };\n\n useEffect(() => {\n const fetchSpaceCapabilities = async () => {\n setLoading(true);\n try {\n const res = await ElevoSpaceApi_generateSpaceCapabilities(\n spaceDetail.instanceId,\n {\n forceRefresh: !!generateSpaceSummary,\n },\n {\n interceptorParams: {\n ignoreLoadingBar: true,\n },\n }\n );\n setSpaceCapabilities(res);\n } catch (error) {\n handleHttpError(error);\n } finally {\n setLoading(false);\n }\n };\n\n if (spaceDetail?.instanceId) {\n fetchSpaceCapabilities();\n }\n }, [spaceDetail?.instanceId, generateSpaceSummary]);\n\n return (\n <div className=\"space-guide-container\">\n <div className=\"guide-header\">\n <div className=\"space-logo\">\n <WrappedSpaceLogo size={48} />\n </div>\n <h1 className=\"guide-title\">{spaceDetail?.name}</h1>\n <p className=\"guide-description\">{spaceDetail?.description}</p>\n </div>\n\n <div className=\"guide-content\">\n <div className=\"section-title\">\n <MagicSvg className=\"section-icon\" />\n <span>{t(K.SPACE_GUIDE_SECTION_TITLE)}</span>\n </div>\n\n <div className=\"cards-grid\">\n {cards.map((card, index) => (\n <div\n key={index}\n className=\"guide-card\"\n style={{ backgroundImage: `url(${card.background})` }}\n onClick={() => handleCardClick(index)}\n >\n <div className=\"card-content\">\n <div\n className={`card-icon-container ${card.iconContainerColor}`}\n >\n <img src={card.icon} alt={card.title} className=\"card-icon\" />\n </div>\n <h3 className=\"card-title\">{card.title}</h3>\n <p className=\"card-description\">\n {loading ? (\n <span className=\"loading-dots\">\n <span></span>\n <span></span>\n <span></span>\n </span>\n ) : (\n spaceCapabilities?.[\n card.key as keyof ElevoSpaceApi_GenerateSpaceCapabilitiesResponseBody\n ]\n )}\n </p>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}\n","import { http } from \"@next-core/http\";\n/**\n * @description 生成协作空间核心能力说明\n * @endpoint POST /api/v1/elevo/spaces/:spaceId/capabilities/generate\n */\nexport const ElevoSpaceApi_generateSpaceCapabilities = async (spaceId, data, options) => /**! @contract easyops.api.llm.elevo_space.GenerateSpaceCapabilities@1.0.0 */(await http.post(`api/gateway/logic.llm.aiops_service/api/v1/elevo/spaces/${spaceId}/capabilities/generate`, data, options)).data;\n//# sourceMappingURL=generateSpaceCapabilities.js.map","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { NS, locales } from \"./i18n.js\";\nimport { SpaceGuide } from \"./SpaceGuide.js\";\nimport styleText from \"./styles.shadow.css\";\n\nimport { SpaceDetail } from \"../interfaces.js\";\n\ninitializeI18n(NS, locales);\n\nconst { defineElement, property } = createDecorators();\n\nexport interface SpaceChatGuideProps {\n spaceDetail: SpaceDetail;\n}\n\n/**\n * 构件 `ai-portal.space-chat-guide`\n *\n * 空间聊天引导构件,根据空间详情展示引导信息,帮助用户快速开始聊天。\n */\nexport\n@defineElement(\"ai-portal.space-chat-guide\", {\n styleTexts: [styleText],\n})\nclass SpaceChatGuide extends ReactNextElement implements SpaceChatGuideProps {\n /** 空间详情信息,必填,用于展示空间相关的引导内容 */\n @property({ attribute: false })\n accessor spaceDetail!: SpaceDetail;\n\n render() {\n return <SpaceGuide spaceDetail={this.spaceDetail} />;\n }\n}\n","// istanbul ignore file\nimport React, { useState, useCallback, useEffect } from \"react\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { ElevoSpaceApi_listServiceFlow } from \"@next-api-sdk/llm-sdk\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { NS, locales } from \"./i18n.js\";\nimport {\n NS as ChatStreamNS,\n locales as ChatStreamLocales,\n} from \"../chat-stream/i18n.js\";\nimport styles from \"./styles.module.css\";\nimport type { NoticeItem } from \"../notice-dropdown/index.js\";\nimport {\n SpaceDetail,\n BusinessInstance,\n BusinessObject,\n InstanceUpdateTrigger,\n} from \"./interfaces.js\";\nimport type { UploadOptions, RequestStore } from \"../shared/interfaces.js\";\nimport { SpaceNav } from \"./components/SpaceNav.js\";\nimport { SpaceSidebar } from \"./components/SpaceSidebar.js\";\nimport { ChatArea, ChatAreaRef } from \"./components/ChatArea/ChatArea.js\";\n\nimport { WorkbenchContext } from \"./workbenchContext.js\";\nimport type { BusinessFlow, KnowledgeItem } from \"./interfaces.js\";\nimport { InstDetailManagement } from \"./components/InstDetailManagement/InstDetailManagement.js\";\nimport { ServiceFlows } from \"./components/ServiceFlows.js\";\nimport { K, t } from \"./i18n.js\";\n\ninitializeI18n(NS, locales);\ninitializeI18n(ChatStreamNS, ChatStreamLocales);\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface SpaceWorkbenchProps {\n notifyCenterUrl: string;\n spaceDetail: SpaceDetail;\n notices?: NoticeItem[];\n knowledges?: KnowledgeItem[];\n uploadOptions?: UploadOptions;\n}\n\n/**\n * 构件 `ai-portal.space-workbench`\n *\n * 协作空间工作台,集成顶部导航、侧边栏(知识库、业务实例)、聊天区域和服务流等核心功能的一体化工作台构件。\n */\nexport\n@defineElement(\"ai-portal.space-workbench\", {\n shadowOptions: false,\n})\nclass SpaceWorkbench extends ReactNextElement implements SpaceWorkbenchProps {\n /** 消息通知列表 */\n @property({ attribute: false })\n accessor notices: NoticeItem[] | undefined;\n\n /** 知识库列表 */\n @property({ attribute: false })\n accessor knowledges: KnowledgeItem[] | undefined;\n\n /** 空间详情信息,必填 */\n @property({ attribute: false })\n accessor spaceDetail!: SpaceDetail;\n\n /** 消息中心跳转链接,必填 */\n @property()\n accessor notifyCenterUrl!: string;\n\n /** 文件上传配置选项 */\n @property({ attribute: false })\n accessor uploadOptions: UploadOptions | undefined;\n\n /**\n * @description 点击返回按钮时触发\n */\n @event({ type: \"go.back\" })\n accessor #_goBackEvent!: EventEmitter<void>;\n\n /**\n * @description 点击成员按钮时触发\n */\n @event({ type: \"members.click\" })\n accessor #_membersClickEvent!: EventEmitter<void>;\n\n /**\n * @description 点击消息通知项时触发\n * @detail { id: 消息ID, type: 消息类型, isRead: 是否已读, title: 标题, time: 时间戳 }\n */\n @event({ type: \"notice.click\" })\n accessor #_noticeClickEvent!: EventEmitter<NoticeItem>;\n\n /**\n * @description 点击全部已读按钮时触发\n */\n @event({ type: \"mark.all.read\" })\n accessor #_markAllReadEvent!: EventEmitter<void>;\n\n /**\n * @description 点击编辑空间按钮时触发\n */\n @event({ type: \"space.edit\" })\n accessor #_spaceEditEvent!: EventEmitter<void>;\n\n /**\n * @description 点击知识条目时触发\n * @detail 知识条目数据\n */\n @event({ type: \"knowledge.click\" })\n accessor #_knowledgeClickEvent!: EventEmitter<KnowledgeItem>;\n\n /**\n * @description 点击添加知识按钮时触发\n */\n @event({ type: \"knowledge.add\" })\n accessor #_knowledgeAddEvent!: EventEmitter<void>;\n\n render() {\n return (\n <SpaceWorkbenchComponent\n spaceDetail={this.spaceDetail}\n knowledges={this.knowledges}\n notices={this.notices}\n uploadOptions={this.uploadOptions}\n notifyCenterUrl={this.notifyCenterUrl}\n onBack={() => this.#_goBackEvent.emit()}\n onMembersClick={() => this.#_membersClickEvent.emit()}\n onNoticeClick={(notice) => this.#_noticeClickEvent.emit(notice)}\n onMarkAllRead={() => this.#_markAllReadEvent.emit()}\n onSpaceEdit={() => this.#_spaceEditEvent.emit()}\n onKnowledgeClick={(knowledge) =>\n this.#_knowledgeClickEvent.emit(knowledge)\n }\n onKnowledgeAdd={() => this.#_knowledgeAddEvent.emit()}\n />\n );\n }\n}\n\ninterface SpaceWorkbenchComponentProps extends SpaceWorkbenchProps {\n onBack: () => void;\n onMembersClick: () => void;\n onMarkAllRead: () => void;\n onNoticeClick: (notice: NoticeItem) => void;\n onSpaceEdit: () => void;\n onKnowledgeClick: (knowledge: KnowledgeItem) => void;\n onKnowledgeAdd: () => void;\n}\n\nfunction SpaceWorkbenchComponent(props: SpaceWorkbenchComponentProps) {\n const {\n spaceDetail,\n knowledges,\n notices = [],\n notifyCenterUrl,\n uploadOptions,\n onBack,\n onMembersClick,\n onMarkAllRead,\n onNoticeClick,\n onSpaceEdit,\n onKnowledgeClick,\n onKnowledgeAdd,\n } = props;\n\n // 视图状态管理: 'chat' | 'instance-detail'\n const [currentView, setCurrentView] = useState<\"chat\" | \"instance-detail\">(\n \"chat\"\n );\n const [selectedInstance, setSelectedInstance] =\n useState<BusinessInstance | null>(null);\n const [selectedBusinessObject, setSelectedBusinessObject] =\n useState<BusinessObject | null>(null);\n\n // 实例更新触发器\n const [instanceUpdateTrigger, setInstanceUpdateTrigger] = useState<\n InstanceUpdateTrigger | undefined\n >(undefined);\n\n const [businessFlows, setBusinessFlows] = useState<\n BusinessFlow[] | undefined\n >(undefined);\n\n // 添加一个用于触发新会话的回调引用\n const chatAreaRef = React.useRef<ChatAreaRef>(null);\n\n // 处理点击实例卡片\n const handleInstanceClick = useCallback(\n (instance: BusinessInstance, businessObject: BusinessObject) => {\n setSelectedInstance(instance);\n setSelectedBusinessObject(businessObject);\n setCurrentView(\"instance-detail\");\n },\n []\n );\n\n // 处理关闭实例详情\n const handleCloseInstanceDetail = useCallback(() => {\n setCurrentView(\"chat\");\n setSelectedInstance(null);\n setSelectedBusinessObject(null);\n }, []);\n\n // 处理从实例详情页新建会话\n const handleNewConversation = useCallback((initialRequest: RequestStore) => {\n // 先切换回聊天视图\n setCurrentView(\"chat\");\n setSelectedInstance(null);\n setSelectedBusinessObject(null);\n\n // 通知 ChatArea 创建新 tab\n // ChatArea 会根据 initialRequest.content 判断是新建会话还是加载已有会话\n setTimeout(() => {\n chatAreaRef.current?.addNewSession(initialRequest);\n });\n }, []);\n\n // 处理实例数据更新\n const handleInstanceUpdate = useCallback(\n (updatedInstance: BusinessInstance) => {\n if (!selectedBusinessObject) return;\n\n // 更新当前选中的实例\n setSelectedInstance(updatedInstance);\n\n // 触发 BusinessCategoryPanel 更新 objectInstancesMap\n setInstanceUpdateTrigger({\n objectId: selectedBusinessObject.objectId,\n instanceId: updatedInstance.instanceId,\n updatedData: updatedInstance,\n timestamp: Date.now(),\n });\n },\n [selectedBusinessObject]\n );\n\n // 处理业务流卡片点击\n const handleFlowClick = useCallback((flow: BusinessFlow) => {\n const message = t(K.INITIATING_SERVICE_FLOW, { name: flow.name });\n chatAreaRef.current?.sendMessage({ content: message });\n }, []);\n\n useEffect(() => {\n const fetchBusinessFlows = async () => {\n const res = await ElevoSpaceApi_listServiceFlow(spaceDetail.instanceId, {\n page: 1,\n pageSize: 1000,\n });\n setBusinessFlows(res.list as BusinessFlow[]);\n };\n fetchBusinessFlows();\n }, [spaceDetail.instanceId]);\n\n return (\n <WorkbenchContext.Provider value={{ spaceDetail, uploadOptions }}>\n <div className={styles.container}>\n <div className={styles.spaceWorkbenchContainer}>\n <SpaceNav\n spaceDetail={spaceDetail}\n notifyCenterUrl={notifyCenterUrl}\n notices={notices}\n onBack={onBack}\n onMembersClick={onMembersClick}\n onMarkAllRead={onMarkAllRead}\n onNoticeClick={onNoticeClick}\n onSpaceEdit={onSpaceEdit}\n />\n <div className={styles.spaceWorkbenchContent}>\n <SpaceSidebar\n knowledgeList={knowledges}\n onKnowledgeClick={onKnowledgeClick}\n onKnowledgeAdd={onKnowledgeAdd}\n onInstanceClick={handleInstanceClick}\n instanceUpdateTrigger={instanceUpdateTrigger}\n />\n {currentView === \"chat\" ? (\n <>\n <ChatArea ref={chatAreaRef} />\n <ServiceFlows\n businessFlows={businessFlows}\n onFlowClick={handleFlowClick}\n />\n </>\n ) : (\n selectedInstance &&\n selectedBusinessObject && (\n <InstDetailManagement\n instance={selectedInstance}\n businessObject={selectedBusinessObject}\n onClose={handleCloseInstanceDetail}\n onNewConversation={handleNewConversation}\n onInstanceUpdate={handleInstanceUpdate}\n />\n )\n )}\n </div>\n </div>\n </div>\n </WorkbenchContext.Provider>\n );\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;white-space:nowrap}.container{border-radius:var(--elevo-border-radius)}:host([hidden]){display:none}*{box-sizing:border-box}.label{font-weight:500;overflow:hidden;text-overflow:ellipsis}.stat{font-weight:600}.chart{min-width:0}.chart > *{display:block}:host(:not([size=\"small\"])) .container{background:linear-gradient(164deg,rgba(105,153,253,0) 40%,rgba(105,153,253,0.05) 60%,rgba(105,153,253,0.32) 100%),#fff;padding:22px}:host(:not([size=\"small\"])) .label{font-size:14px;height:22px;margin-bottom:16px}:host(:not([size=\"small\"])) .stat-and-chart{display:flex;align-items:center;justify-content:end;position:relative}:host(:not([size=\"small\"])) .stat{font-size:36px;color:#1d212a;position:absolute;left:0}:host(:not([size=\"small\"])) .chart{width:calc(100% - 160px)}:host([size=\"small\"]) .container{padding:11px 15px;display:flex;align-items:center;justify-content:end;position:relative;background:var(--elevo-component-background);-webkit-backdrop-filter:var(--elevo-component-backdrop-filter);backdrop-filter:var(--elevo-component-backdrop-filter)}:host([size=\"small\"]) .label-and-stat{position:absolute;left:15px}:host([size=\"small\"]) .label{font-size:12px;color:#8c8c8c;line-height:17px;height:17px;margin-bottom:7px}:host([size=\"small\"]) .stat{font-size:20px;color:#262626;line-height:24px}:host([size=\"small\"]) .chart{width:calc(100% - 90px)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./images/bg.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block}:host([hidden]){display:none}.popover::part(popup){border-radius:12px}.notice-dropdown-content{max-width:500px;border-radius:12px;display:flex;flex-direction:column;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:cover}.header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px}.title{font-size:18px;font-weight:500;color:var(--text-color-title)}.close-btn{cursor:pointer;display:flex;align-items:center;justify-content:center;width:16px;height:16px;color:#000}ul{list-style:none;margin:0;padding:4px}.content{flex:1;max-height:500px;overflow-y:auto}.link{display:block}.link::part(link){display:flex;align-items:start;gap:12px;padding:10px 16px}.link:hover::part(link):hover{background-color:rgba(0,0,0,0.04);border-radius:8px}.link:last-child{border-bottom:none}.icon-wrapper{position:relative;flex-shrink:0;width:18px;height:18px;padding:2px 0;display:flex;align-items:center;justify-content:center;font-size:18px}.message-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.primary-text{font-size:14px;font-weight:400;line-height:20px;color:var(--text-color-title)}.secondary-text{color:rgba(0,0,0,0.45)}.empty-state{padding:60px 20px;text-align:center;font-size:14px;color:var(--text-color-secondary)}.footer{display:flex;gap:10px;justify-content:space-between;align-items:center;padding:9px 10px;box-shadow:0px -12px 16px -8px rgba(0,0,0,0.08);border-radius:0px 0px 12px 12px}.footer .footer-button::part(button){color:var(--text-color-secondary)}.footer .footer-button::part(button):hover{color:var(--text-color-default)!important}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block}:host([hidden]){display:none}.goal-container{display:flex;flex-direction:column;gap:3px}.loading{display:flex;align-items:center;justify-content:center;padding:24px;font-size:20px;color:#595959}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block}:host([hidden]){display:none}.button-container{display:flex;gap:6px}.action{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.action::part(button){height:28px;font-size:13px;padding:5px 10px}.action.active::part(button){color:var(--elevo-color-brand);background-color:rgba(var(--elevo-color-brand-rgb-channel),0.04);border-color:#c9d7ff}.icon{font-size:16px;margin-right:4px}.remove{padding:1px;font-size:14px;margin-left:10px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;color:#262626}:host([hidden]){display:none}*{box-sizing:border-box}ul{list-style:none;margin:0;padding:0}.activity{position:relative;padding-left:27px}.activity + .activity{margin-top:20px}.main{display:flex;align-items:flex-start}.action{flex:1;min-width:0;display:flex;align-items:center;margin-left:6px;word-break:break-word}.time{color:#8c8c8c;margin-left:12px}.action,\n.time{padding:1px 0}.guide-line{position:absolute;left:8px;top:0;bottom:-20px;width:0;background-color:#d8d8d8}.guide-line::before{content:\"\";position:absolute;top:0;bottom:0;left:3.5px;width:1px;background-color:#d8d8d8}.guide-line::after{content:\"\";position:absolute;top:8px;left:0;width:8px;height:8px;border-radius:8px;background-color:#d8d8d8}.activity:first-child .guide-line::before{top:12px}.activity:last-child .guide-line::before{height:12px;bottom:auto}.activity:first-child:last-child .guide-line::before{height:0}.comment{position:relative;font-size:13px;color:#595959;background-color:#f3f3f3;border-radius:8px;padding:8px 12px;margin-top:10px}.comment::before{content:\"\";position:absolute;top:-6px;left:36px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #f3f3f3}.conversation{margin:0 7px 0 10px}.conversation::part(link){background:#f9f0ff;border-radius:3px;font-weight:500;font-size:12px;color:#aa64f5;display:flex;align-items:center;height:24px;padding:0 8px}.external-link-icon{color:#8c8c8c}.loading{display:flex;align-items:center;justify-content:center;padding:24px;font-size:20px;color:#595959}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.card{display:block}.card::part(link){display:flex;flex-direction:column;gap:12px;background:rgba(255,255,255,0.6);box-shadow:0px 2px 5px 0px rgba(0,0,0,0.04);border-radius:12px;border:1px solid #fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:16px;color:#262626}.card:not(.clickable)::part(link){cursor:auto}.card::part(link):hover{background:#fff}.header,\n.body,\n.footer{width:100%}.header{display:flex;gap:12px}.heading{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.avatar{width:42px;height:42px;border-radius:50%;border:1px solid rgba(0,0,0,0.15);font-size:24px;display:flex;align-items:center;justify-content:center}.title{font-weight:500;font-size:16px;color:#262626;line-height:22px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.actions{margin:-8px -8px 0 0}.body{font-size:12px;color:rgba(0,0,0,0.45);line-height:17px;height:51px;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.footer{align-items:center;justify-content:flex-end;gap:8px}.footer:not([hidden]){display:flex}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:flex;flex-direction:column;align-items:center;gap:16px}:host([hidden]){display:none}p{color:rgba(0,0,0,0.45);margin:10px 0 0}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.tabs{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:32px;row-gap:10px;font-size:16px}.tabs a{color:rgba(38,38,38,0.65);cursor:pointer;padding:0 0 4px;display:block;position:relative}.tabs .active a{color:#262626;font-weight:500}.tabs .active a::after{content:\"\";position:absolute;bottom:0;left:0;right:0;height:4px;background-color:currentColor;border-radius:2px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block}:host([hidden]){display:none}.space-logo{display:flex;align-items:center;justify-content:center;background:#2540ff;border-radius:16px;box-shadow:0px 10px 15px -3px rgba(37,64,255,0.2),0px 4px 6px -4px rgba(37,64,255,0.2)}.space-logo img{width:100%;height:100%;object-fit:contain}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.toolbar{display:flex;gap:8px;align-items:center;padding:12px 16px}.toolbar .read-link::part(button){padding:4px 8px}.all-checkbox,\n.item-checkbox{margin-right:10px}.all-checkbox::part(checkbox-option):hover,\n.item-checkbox::part(checkbox-option):hover{background-color:transparent}ul{list-style:none;margin:0;padding:0}.message-item-link{display:block}.message-item-link::part(link){display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;color:var(--text-color-title);border-bottom:1px solid rgba(0,0,0,0.1);transition:all 0.2s}.message-item-link.has-read::part(link){opacity:0.65}.message-item-link::part(link):hover{background-color:rgba(0,0,0,0.04)}.left{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.left .icon-wrapper{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:24px}.left .title{flex:1;min-width:0;font-size:14px;font-weight:500;color:var(--text-color-title);line-height:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.right{flex-shrink:0;display:flex;align-items:center}.right .message-time{flex-shrink:0;line-height:22px;color:rgba(0,0,0,0.45)}.empty-state{display:flex;align-items:center;justify-content:center;padding:60px 20px;font-size:14px;color:var(--text-color-secondary)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block}:host([hidden]){display:none}.welcome-container{display:flex;flex-direction:column;gap:12px}.header{display:flex;align-items:center;gap:13px}.avatar{width:32px;height:32px;font-size:32px;flex-shrink:0}.title{font-size:16px;color:#1d293d;font-weight:500;line-height:22.75px;letter-spacing:-0.1504px}.content{font-size:14px;color:rgba(0,0,0,0.85);line-height:22.75px;letter-spacing:-0.1504px;white-space:pre-wrap;margin-left:45px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}ul{list-style:none;margin:0;padding:0}.link{display:block}.link::part(link){display:flex;align-items:center;padding:12px 24px;color:#262626;background:rgba(255,255,255,0.6);border-radius:8px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.item:not(:last-child){margin-bottom:4px}.link.actions-active::part(link),\n.link::part(link):hover{background:rgba(0,0,0,0.05);-webkit-backdrop-filter:none;backdrop-filter:none}.icon{font-size:20px;margin-right:8px}.title{font-weight:500;font-size:16px}.title,\n.description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment{color:#1a7aff;margin-left:8px}.header{display:flex;align-items:center}.description{color:#595959;padding-left:28px;line-height:20px}.time{color:rgba(0,0,0,0.45);margin:0 16px}.main{flex:1;min-width:0}.operations{display:flex;align-items:center;justify-content:center;width:32px;height:32px}.link.actions-active .avatar,\n.link:hover .avatar,\n.link:hover .time,\n.link:not(:hover):not(.actions-active) .actions{display:none}.loading{display:flex;align-items:center;justify-content:center;padding:24px;font-size:20px;color:#595959}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.container{position:relative}.bg{position:absolute;top:0;left:0;z-index:-1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.header{display:flex;align-items:center;justify-content:space-between}.tabs{list-style:none;padding:0;margin:0;display:flex;min-width:0}.tabs .tab{padding:0 18px;min-width:0}.tabs a{display:block;padding:9px 10px;color:rgba(0,0,0,0.55);line-height:20px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:300px}.tabs .active a{font-weight:500;color:#262626}.body{padding:23px 27px;overflow-x:auto}.toolbar{display:flex;align-items:center;gap:8px;white-space:nowrap}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block}:host([hidden]){display:none}img{vertical-align:middle}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}h2{font-weight:500;margin:0;font-size:16px;line-height:22px}.groups,\n.list{list-style:none;margin:0;padding:0}.groups{margin-top:17px}.group + .group{margin-top:32px}.list{margin-top:16px;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px}.list .item{background:rgba(255,255,255,0.9);box-shadow:0px 2px 5px 0px rgba(0,0,0,0.08);border-radius:12px;padding:20px 26px}.heading{display:flex;align-items:center}.icon{font-size:24px;color:#333;margin-right:8px}.title{font-size:15px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.description{margin-top:13px;font-size:13px;color:rgba(0,0,0,0.45);line-height:18px;height:54px;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.sticky-tabs{margin:0 -24px;padding:0 24px 10px}.non-sticky-tabs{padding:0 0 10px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block}:host([hidden]){display:none}*{box-sizing:border-box}.trigger{display:flex;align-items:center;font-size:14px;cursor:pointer;position:relative;padding:4px 12px;border-radius:15px;color:var(--elevo-color-brand)}.trigger:hover{background-color:rgba(37,64,255,0.06)}.trigger::before{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0;padding:1px;background:linear-gradient(145deg,rgba(37,64,255,1),rgba(180,95,248,1));border-radius:15px;-webkit-mask:linear-gradient(#fff 0,#fff 0) content-box,linear-gradient(#fff 0,#fff 0);mask:linear-gradient(#fff 0,#fff 0) content-box,linear-gradient(#fff 0,#fff 0);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:xor;-webkit-mask:linear-gradient(#fff 0,#fff 0) content-box,linear-gradient(#fff 0,#fff 0);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor}.trigger .label{margin-right:0}.label{max-width:650px;margin-right:0.5em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown{max-width:500px;border-radius:4px;background:var(--antd-dropdown-menu-bg);box-shadow:var(--antd-box-shadow-base)}.dropdown-inner{padding:9px 4px}.search-container{padding:3px;border-bottom:1px solid rgba(0,0,0,0.08)}.search::part(affix-wrapper){box-shadow:none;border:none}eo-menu{border:0;padding:0;background:none;border-radius:0}eo-menu-item::part(menu-item){padding:5px 8px;line-height:22px;border-radius:var(--medius-border-radius)}eo-menu-item:not([disabled]):hover::part(menu-item){background-color:var(--left-sidebar-item-hover-bg)}.active::part(menu-item){font-weight:600;background-color:var(--left-sidebar-item-hover-bg)}.empty{display:flex;justify-content:center;align-items:center;color:var(--color-secondary-text)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:flex;flex-direction:column;align-items:center;max-width:1020px;width:100%}:host([hidden]){display:none}*{box-sizing:border-box}.tips{color:rgba(0,0,0,0.45);margin-bottom:27px}.cases{list-style:none;padding:0;margin:0;display:grid;width:100%;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:20px;margin-top:36px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./images/purple@2x.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"./images/green@2x.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"./images/pink@2x.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.link{display:block;background:rgba(255,255,255,0.6);border-radius:12px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-size:cover;background-position:center;background-repeat:no-repeat;background-clip:padding-box;overflow:hidden}.purple{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}.green{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_1___})}.pink{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_2___})}.link::part(link){display:flex;flex-direction:column;gap:0;box-sizing:border-box;height:128px;padding:20px;position:relative}.title{width:100%;margin-bottom:8px;color:#262626;font-weight:500;font-size:14px;line-height:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.description{width:100%;height:60px;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;font-size:13px;color:#18212f;line-height:20px}.link::part(link):hover{box-shadow:0px 4px 12px 0px rgba(96,96,138,0.15),0px 2px 4px 0px rgba(96,96,138,0.06)}.button{display:none;position:absolute;bottom:12px;left:20px;right:20px;height:32px;background:rgba(0,0,0,0.04);border-radius:8px;align-items:center;justify-content:center;gap:4px;color:#262626}.button:hover{background:rgba(0,0,0,0.08)}.link:hover .button{display:flex}.link:hover .description{-webkit-mask-image:linear-gradient(to bottom,rgba(0,0,0,0.65) 0%,rgba(0,0,0,0.11) 51%,rgba(0,0,0,0) 100%);mask-image:linear-gradient(to bottom,rgba(0,0,0,0.65) 0%,rgba(0,0,0,0.11) 51%,rgba(0,0,0,0) 100%);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 60%;mask-size:100% 60%}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.goal-item{display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;padding:12px 24px;background-color:rgba(255,255,255,0.6);border-radius:8px;-webkit-user-select:none;user-select:none;border:1px solid transparent}.goal-item:hover,.goal-item:has(.title:focus){background-color:rgba(0,0,0,0.05)}.goal-item:has(.title:focus) .end .operation{display:flex}.goal-item:hover:not(.does-not-exist) .end .operation{display:flex}.goal-item:has(.title:focus) .end .info{display:none}.goal-item:hover:not(.does-not-exist) .end .info{display:none}.goal-item.completed .serial-number,.goal-item.completed .title{color:#bfbfbf}.goal-item.active{background:rgba(37,64,255,0.1);border:1px solid #2540ff}.goal-item > *{-webkit-user-select:auto;user-select:auto}.goal-item .start,.goal-item .end{display:flex;align-items:center}.goal-item .start{flex:1;min-width:0;column-gap:16px;min-width:0}.goal-item .end{flex-shrink:0;column-gap:30px}.goal-item .end .operation{display:none;align-items:center;gap:8px}.goal-item .end .operation eo-button::part(button){height:28px}.goal-item .end .operation .new-chat::part(button){padding:5px 10px;font-size:13px}.goal-item .end .operation .append-child::part(button){padding:5px 8px;font-size:14px}.goal-item .end .info{display:inline-flex;align-items:center;column-gap:24px}.goal-item .serial-number{font-weight:400;color:var(--palette-gray-7);font-size:16px;overflow:visible}.goal-item .title{font-weight:500;padding:2px 4px;font-size:16px;color:var(--palette-gray-10);border:1px solid transparent;border-radius:8px;cursor:pointer;min-width:80px}.goal-item .title:hover{background-color:rgba(255,255,255,0.6);border:1px solid var(--palette-gray-5);cursor:text}.goal-item .title:focus{outline:none;background-color:rgba(255,255,255,0.6);border:1px solid var(--elevo-color-brand)}.goal-item .icon{border-radius:8px;padding:6px;position:relative;top:2px}.goal-item .icon:hover{background-color:rgba(0,0,0,0.04)}.goal-item .message{color:var(--palette-gray-7);display:inline-flex;align-items:center;column-gap:6px}.goal-item .message .count{font-weight:500;color:var(--palette-gray-10)}.goal-item:not(.editing) .title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./images/bg.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.root{color:#262626;background:url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat center bottom;background-size:100% 104px;padding:12px 12px 29px;margin:0 -12px}.container{position:relative;background:#ffffff;box-shadow:0px 2px 4px 0px rgba(38,45,65,0.1);border-radius:16px;border:1px solid #dadfe8}.container:has(textarea:focus){border-color:#b7c3d8}textarea{display:block;width:100%;padding:10px 16px 50px;color:var(--antd-input-color);border-radius:16px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,0.5);font:inherit;font-size:14px;line-height:22px;height:120px}textarea::placeholder{color:rgba(0,0,0,0.4)}button:focus,\ntextarea:focus{outline:none}button{margin:0;padding:0;font:inherit;background:none;border:none}.actions-bar{position:absolute;bottom:12px;left:14px;right:14px;display:flex;align-items:flex-end;justify-content:space-between;gap:6px}.btn-send{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--elevo-color-brand);border:none;border-radius:8px;color:#fff;flex-shrink:0}.btn-send[disabled]{background:rgba(0,0,0,0.15)}.btn-send:not([disabled]){cursor:pointer}.btn-send:not([disabled]):hover{background:#5166ff}.btn-send:not([disabled]):active{background:#1e33cc}.mention-overlay{position:absolute;border-radius:4px;pointer-events:none;background:rgba(38,45,65,0.1)}.buttons{display:flex;align-items:center;gap:12px}.btn-divider{width:1px;height:16px;background:rgba(0,0,0,0.1)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block;--elevo-icon-button-icon-size:18px}:host([hidden]){display:none}:host,\neo-tooltip{vertical-align:middle}button{height:28px;padding:0 5px;font-size:14px;border-radius:8px;display:flex;align-items:center;justify-content:center;border:none;background:none;color:#333}.icon{font-size:var(--elevo-icon-button-icon-size)}button:disabled{color:#8c8c8c}button:not(:disabled){cursor:pointer}button:focus{outline:none}:host([active]) button:not(:disabled),\nbutton:not(:disabled):hover{background:rgba(0,0,0,0.04)}button:not(:disabled):active{background:rgba(0,0,0,0.08)}.has-slotted .icon{margin-right:8px}:host([reduce-icon-size]) button{--elevo-icon-button-icon-size:16px;padding:0 6px}:host([variant=\"light\"]) button{color:#595959}:host([variant=\"mini\"]) button{height:24px;--elevo-icon-button-icon-size:16px;padding:0 4px;border-radius:4px}:host([variant=\"mini-light\"]) button{color:#8c8c8c;height:20px;--elevo-icon-button-icon-size:14px;padding:0 3px;border-radius:4px}:host([variant=\"bordered\"]) button{background:#ffffff;border-radius:8px;border:1px solid rgba(0,0,0,0.1);color:#595959;height:32px;--elevo-icon-button-icon-size:18px;padding:0 7px}button.has-slotted{padding:0 8px}:host([variant=\"bordered\"]) button:not(:disabled):hover{background:rgba(0,0,0,0.04)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../home-container/images/background.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;position:relative;width:100%;height:100%;color:#262626;padding:48px 54px;overflow:hidden;overflow-y:auto}:host::before{content:\"\";position:fixed;z-index:-1;top:0;right:0;bottom:0;left:0;background-color:rgb(205,206,207);background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-position:center;background-size:cover;background-repeat:no-repeat;background-attachment:fixed}:host([sticky]){padding-top:0}:host([hidden]){display:none}:host([variant=\"form\"])::before{background:#fff}*{box-sizing:border-box}.container{max-width:1400px;margin:0 auto}:host([size=\"small\"]) .container{max-width:1000px}:host([size=\"full\"]) .container{max-width:100%}.sticky-header{margin:0 -24px;padding:65px 24px 30px}.non-sticky-header{padding:17px 0 30px}.header{display:flex;justify-content:space-between;align-items:center}nav{font-size:28px;line-height:40px;font-weight:600;display:flex;min-width:0;white-space:nowrap;flex-wrap:wrap}nav.with-breadcrumbs{font-weight:500;font-size:20px;line-height:28px}h1{margin:0;font-size:inherit;line-height:inherit;font-weight:inherit}.breadcrumbs{list-style:none;padding:0;margin:0;color:#bfbfbf}.breadcrumbs eo-link::part(link){color:inherit}.breadcrumbs eo-link::part(link):hover{color:#595959}.breadcrumbs li::after{content:\"/\";margin:0 8px}.toolbar{display:flex;align-items:center;gap:8px;white-space:nowrap}@media (max-width: 719px){:host{padding-left:24px;padding-right:24px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `ai-portal\\\\.preview-container{display:block;background:rgba(247,248,250,1)}.loading--uD2jY9vX{position:absolute;top:50%;left:50%;font-size:48px;color:var(--palette-gray-5);margin:0 -24px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"loading\": `loading--uD2jY9vX`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;color:#262626;--running-flow-lane-width:234px;--running-flow-status-color:#aeb3bc}:host([hidden]){display:none}*{box-sizing:border-box}ul{list-style:none;margin:0;padding:0}.nav,\n.lanes{display:flex;gap:40px}.nav-item,\n.lane{width:var(--running-flow-lane-width);flex-shrink:0}.nav-item{position:relative;background-color:#e3e4e5;border-top-left-radius:8px;border-bottom-left-radius:8px}.nav-item::after{content:\"\";position:absolute;top:0;right:-24px;border-color:transparent;border-style:solid;border-width:24px 0 24px 24px;border-left-color:#e3e4e5}.nav-content{height:48px;display:flex;align-items:center;padding-left:22px}.nav-content .icon{color:#8c8c8c;font-size:22px;display:contents}.nav-content .title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 8px}.lanes{margin-top:16px}.lane{display:flex;flex-direction:column;gap:8px}.lane > li{padding-left:4px}.activity{background:#fff;border-radius:8px;border:1px solid #d9d9d9;height:42px;display:flex;align-items:center;position:relative;padding-left:16px;cursor:pointer}.activity .icon{color:var(--running-flow-status-color);font-size:20px}.activity .title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#595959;padding:0 7px}.activity .duration{font-size:12px;color:#8c8c8c;background:#fafafa;border-radius:6px;padding:0 8px;height:100%;display:flex;align-items:center}.activity::before{content:\"\";position:absolute;top:50%;left:-1px;transform:translateY(-50%);width:3px;height:18px;background:var(--running-flow-status-color);border-radius:0 3px 3px 0}.activity:hover{box-shadow:0px 2px 5px 0px rgba(0,0,0,0.08)}.activity.paused{--running-flow-status-color:#f0a22e}.activity.working{--running-flow-status-color:#4f69ff}.activity.completed{--running-flow-status-color:#08bf33}.activity.failed{--running-flow-status-color:var(--color-error)}.activity:not(.active) .icon{color:var(--running-flow-status-color)}.activity:not(.active)::before{background:var(--running-flow-status-color)}.activity.active{background:var(--running-flow-status-color);border-color:var(--running-flow-status-color)}.activity.active .icon,.activity.active .title,.activity.active .duration{color:#fff}.activity.active .duration{background:rgba(250,250,250,0.2)}.activity.active::before{display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./images/add-stage.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"./images/add-stage-hover.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;--stage-flow-lane-width:268px}:host([hidden]){display:none}*{box-sizing:border-box}ul{list-style:none;margin:0;padding:0}button{background:none;border:none;cursor:pointer;padding:0}.button:focus{outline:none}.nav,\n.lanes{display:flex;gap:40px}.nav-item,\n.nav-add,\n.lane{width:var(--stage-flow-lane-width);flex-shrink:0}.nav-item{position:relative;background-color:var(--stage-flow-nav-bg);--stage-flow-nav-bg:rgba(37,64,255,0.1)}.nav-item:first-child{border-top-left-radius:20px;border-bottom-left-radius:20px}.nav-item.pending{--stage-flow-nav-bg:rgba(0,0,0,0.04)}.nav-item::after{content:\"\";position:absolute;top:0;right:-20px;border-color:transparent;border-style:solid;border-width:20px 0 20px 20px;border-left-color:var(--stage-flow-nav-bg)}.nav-item:not(:first-child)::before{content:\"\";position:absolute;top:0;left:-30px;width:30px;height:40px;background-color:var(--stage-flow-nav-bg);-webkit-clip-path:polygon(0 0,100% 0,100% 100%,0 100%,20px 50%);clip-path:polygon(0 0,100% 0,100% 100%,0 100%,20px 50%)}.nav-link,\n.btn-add-stage{width:100%;display:flex;align-items:center;justify-content:center;height:40px;font-size:16px}.nav-item.pending:first-child .input-new-stage{padding-left:20px}.nav-link{font-weight:600;color:#000}.nav-link span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-add-stage{font-weight:500;color:rgba(0,0,0,0.65);gap:8px;position:relative}.btn-add-stage .plus{margin-right:8px;font-size:14px}.nav-add:first-child .btn-add-stage{border-radius:20px;border:1px dashed rgba(0,0,0,0.1)}.nav-add:first-child .btn-add-stage:hover{background:rgba(0,0,0,0.04)}.nav-add:not(:first-child) .btn-add-stage::before{content:\"\";position:absolute;top:0;bottom:0;left:-30px;right:-20px;pointer-events:none;background:url(${___CSS_LOADER_URL_REPLACEMENT_0___}) center center no-repeat}.nav-add:not(:first-child) .btn-add-stage:hover::before{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_1___})}.input-new-stage{width:100%;border:none;background:none;display:flex;align-items:center;height:40px;font-weight:600;font-size:16px;color:#000}.input-new-stage::placeholder{color:#8c8c8c;font-weight:400}.input-new-stage:focus{outline:none}.lanes{margin-top:16px}.lane{display:flex;flex-direction:column;gap:8px}.activity{background:#ffffff;box-shadow:0px 1px 2px 0px rgba(0,0,0,0.1);border-radius:8px;padding:12px 14px 10px}.activity .title{font-weight:600;color:#000000;line-height:20px;text-shadow:0px 1px 2px rgba(0,0,0,0.1)}:host(:not([read-only])) .activity{cursor:pointer}.assignee{display:flex;align-items:center;gap:4px;font-size:12px;color:#000000;line-height:17px;margin-top:10px}.assignee-icon{font-size:14px;color:rgba(0,0,0,0.45)}.btn-add-activity{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;height:34px;border:1px dashed rgba(0,0,0,0.1);border-radius:8px;color:rgba(0,0,0,0.45)}.btn-add-activity:hover{background:rgba(0,0,0,0.04);color:rgba(0,0,0,0.65)}.stage-settings{padding:4px;display:flex;flex-direction:column;align-items:stretch;gap:4px}.stage-settings eo-input{margin-bottom:5px}.stage-settings .divider{height:1px;background-color:rgba(0,0,0,0.1)}.stage-settings button{color:var(--color-error);border-radius:6px;padding:5px 8px;font-size:14px;line-height:22px;text-align:left}.stage-settings button:hover{background-color:var(--left-sidebar-item-hover-bg)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}ul{list-style:none;margin:0;padding:0}.link{display:block}.link::part(link){display:flex;align-items:center;gap:16px;padding:12px 24px;color:#262626;background:rgba(255,255,255,0.6);border-radius:8px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.link.actions-active::part(link),\n.link::part(link):hover{background:rgba(0,0,0,0.05);-webkit-backdrop-filter:none;backdrop-filter:none}.item:not(:last-child){margin-bottom:4px}.icon{font-size:18px;margin-right:8px}.title{font-weight:500;font-size:16px}.title,\n.description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.goal{background:#f0fff8;border-radius:4px;font-weight:500;font-size:12px;color:#1dc897;line-height:20px;padding:2px 8px;white-space:nowrap}.goal.global{background:#e6f4ff;color:#1a7aff}.header{display:flex;align-items:center}.description{color:#595959;margin-top:6px;padding-left:28px;line-height:20px}.time{color:rgba(0,0,0,0.45);white-space:nowrap}.main{flex:1;min-width:0}.operations{display:flex;align-items:center;justify-content:right;width:100px}.operations.lang-zh{width:64px}.link.actions-active .time,\n.link:hover .time,\n.link:not(:hover):not(.actions-active) .actions{display:none}.loading{display:flex;align-items:center;justify-content:center;padding:24px;font-size:20px;color:#595959}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../home-container/images/background.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;position:sticky;top:0}:host([hidden]){display:none}:host::before{content:\"\";display:block;position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background-color:rgb(205,206,207);background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-position:center;background-size:cover;background-repeat:no-repeat;background-attachment:fixed;pointer-events:none}:host([variant=\"home\"])::before{background-color:#f1f1f1}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./images/background.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;padding:72px 54px 72px}:host([sticky]){padding-top:0}:host([hidden]){display:none}:host::before{content:\"\";position:fixed;z-index:-1;top:0;right:0;bottom:0;left:0;background-color:#f1f1f1;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-position:center;background-size:cover;background-repeat:no-repeat;background-attachment:fixed}@media (max-width: 719px){:host{padding-left:24px;padding-right:24px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../home-container/images/background.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}:host([with-container]){position:relative;width:100%;height:100%;overflow:hidden;background-color:rgb(205,206,207);background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:cover;background-repeat:no-repeat;background-position:center;background-attachment:fixed;color:#262626;padding:48px 24px;overflow-y:auto}*{box-sizing:border-box}.container{max-width:1400px;margin:0 auto}h1{font-weight:500;margin:0;font-size:20px;line-height:28px;margin-bottom:17px}.list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px}.link{display:block;height:100%}.link::part(link){display:block;height:100%;color:#262626;background:rgba(255,255,255,0.9);box-shadow:0px 2px 5px 0px rgba(0,0,0,0.08);border-radius:12px;padding:20px 26px;box-sizing:border-box}.link:not(.clickable)::part(link){cursor:auto}.clickable::part(link):hover{box-shadow:0px 4px 10px 0px rgba(0,0,0,0.1)}.heading{display:flex;align-items:center}.icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:#ffffff;border-radius:12px;border:1px solid #e8e9ec;font-size:32px;color:#595959;margin-right:16px}.title{font-size:16px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.clickable::part(link):hover .title{color:var(--elevo-color-brand)}.description{margin-top:13px;font-size:13px;color:rgba(0,0,0,0.45);line-height:18px;height:54px;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tags{display:flex;gap:6px;margin:16px 0 -3px}.tag{display:block;background:rgba(0,0,0,0.04);border-radius:4px;font-size:12px;line-height:22px;padding:0 7px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;width:100%}:host([hidden]){display:none}.space-guide-container{display:flex;flex-direction:column;align-items:center;margin:0 auto;padding-top:103px}.guide-header{display:flex;flex-direction:column;align-items:center;text-align:center;margin-bottom:24px}.space-logo{width:64px;height:64px;margin-bottom:24px;background:#2540ff;border-radius:16px;box-shadow:0px 10px 15px -3px rgba(37,64,255,0.2),0px 4px 6px -4px rgba(37,64,255,0.2);display:flex;align-items:center;justify-content:center}.guide-title{font-size:24px;font-weight:600;line-height:32px;color:rgba(0,0,0,0.88);margin:0 0 24px 0;letter-spacing:0.0703px}.guide-description{font-size:16px;line-height:26px;color:rgba(0,0,0,0.65);margin:0;max-width:448px;text-align:center;letter-spacing:-0.3125px}.guide-content{width:100%;max-width:672px;background:rgba(248,250,252,0.5);border-radius:16px;padding:25px;margin-top:24px}.section-title{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500;line-height:20px;color:#0f172b;margin-bottom:16px;letter-spacing:-0.1504px}.section-icon{width:16px;height:16px}.cards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;width:100%}@media (min-width: 640px){.cards-grid{grid-template-columns:repeat(3,1fr)}}.guide-card{height:161px;border-radius:16px;padding:0;overflow:hidden;transition:transform 0.2s ease,box-shadow 0.2s ease;border:1px solid rgba(0,0,0,0.1);background-color:white;background-size:cover;background-repeat:no-repeat;background-position:center;position:relative;cursor:pointer}.guide-card:hover{transform:translateY(-4px);box-shadow:0 8px 24px rgba(0,0,0,0.08)}.card-content{position:relative;z-index:1;height:100%;display:flex;flex-direction:column;padding:16px 15px 15px 15px}.card-icon-container{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;margin-bottom:12px}.card-icon-container.blue{background:rgba(37,64,255,0.1)}.card-icon-container.orange{background:rgba(255,152,0,0.1)}.card-icon-container.green{background:rgba(52,199,89,0.1)}.card-icon{width:16px;height:16px}.card-title{font-size:14px;font-weight:500;line-height:20px;color:rgba(0,0,0,0.88);margin:0 0 8px 0;letter-spacing:-0.1504px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-description{font-size:12px;line-height:18px;color:rgba(0,0,0,0.45);margin:0;flex:1;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;max-height:54px;word-break:break-word}.loading-dots{display:inline-flex;align-items:center;gap:2px}.loading-dots span{width:4px;height:4px;border-radius:50%;background-color:rgba(0,0,0,0.45);animation:loading-dot-blink 1.4s infinite}.loading-dots span:nth-child(1){animation-delay:0s}.loading-dots span:nth-child(2){animation-delay:0.2s}.loading-dots span:nth-child(3){animation-delay:0.4s}@keyframes loading-dot-blink{0%,\n 60%,\n 100%{opacity:0.2}30%{opacity:1}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}button:focus,\ntextarea:focus{outline:none}button{margin:0;padding:0;font:inherit;background:none;border:none}.container{position:relative;background-color:#fff;border:2px solid transparent;border-radius:12px;background-image:linear-gradient(#fff,#fff),linear-gradient(338deg,rgba(198,183,247,1),rgba(157,198,255,1),rgba(153,196,255,1));background-origin:border-box;background-clip:padding-box,border-box;box-shadow:0px 9px 28px 8px rgba(0,0,0,0.05),0px 6px 16px 0px rgba(0,0,0,0.08),0px 3px 6px -4px rgba(0,0,0,0.12);cursor:text}:host([auto-fade]) .container:not(:has(textarea:focus)){background:rgba(255,255,255,0.5);border-color:#99c4ff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.box{display:flex;flex-wrap:wrap;border-radius:10px;padding:8px}.input{position:relative;min-width:0;flex:1}.wrap .input{flex-basis:100%}.input textarea{display:block;width:100%;padding:8px;font:inherit;font-size:16px;line-height:24px;color:var(--antd-input-color);border:none;background:none;height:24px;color:#262626}.input textarea::placeholder{color:#bfbfbf}.toolbar{padding:6px 0 6px 8px;margin-left:auto;display:flex;align-items:center;gap:12px}.btn-send{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--elevo-color-brand);border-radius:8px;color:#fff}.btn-send:disabled{background:rgba(0,0,0,0.15)}.btn-send:not(:disabled){cursor:pointer}.btn-send:not(:disabled):hover{background:#5166ff}.btn-send:not(:disabled):active{background:#1e33cc}.btn-divider{width:1px;height:16px;background:rgba(0,0,0,0.1)}.files.condensed{top:2px;left:8px;right:8px}.mention-overlay{position:absolute;border-radius:4px;pointer-events:none;background:rgba(38,45,65,0.1)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../home-container/images/background.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}:host([with-container]){position:relative;width:100%;height:100%;overflow:hidden;background-color:rgb(205,206,207);background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:cover;background-repeat:no-repeat;background-position:center;background-attachment:fixed;color:#262626;padding:48px 24px;overflow-y:auto}*{box-sizing:border-box}h2{font-weight:500;margin:0;font-size:16px;line-height:22px}.groups,\n.list{list-style:none;margin:0;padding:0}.groups{margin-top:27px}.group + .group{margin-top:32px}.list{margin-top:16px;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px}.link{display:block;height:100%}.link::part(link){display:block;height:100%;color:#262626;background:rgba(255,255,255,0.9);box-shadow:0px 2px 5px 0px rgba(0,0,0,0.08);border-radius:12px;padding:20px 26px;box-sizing:border-box}.link:not(.clickable)::part(link){cursor:auto}.clickable::part(link):hover{box-shadow:0px 4px 10px 0px rgba(0,0,0,0.1)}.heading{display:flex;align-items:center}.avatar{width:48px;height:48px;border-radius:12px;margin-right:16px;background-color:#d5d6e6;display:flex;align-items:center;justify-content:center;font-size:24px;overflow:hidden}.avatar img{width:100%;height:100%}.title{font-size:16px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.clickable::part(link):hover .title{color:var(--elevo-color-brand)}.description{margin-top:13px;font-size:13px;color:rgba(0,0,0,0.45);line-height:18px;height:54px;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.sticky-tabs{margin:0 -24px;padding:0 24px 10px}.non-sticky-tabs{padding:0 0 10px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n"],"names":["initializeI18n","NS","locales","defineElement","property","event","method","createDecorators","ForwardedCruiseCanvasComponent","forwardRef","CruiseCanvasComponent","_CruiseCanvas","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_T","_U","_V","_CruiseCanvas_brand","WeakSet","_onShare","_W","_onTerminate","_X","_onSubmitFeedback","_Y","_onFeedbackOnView","_Z","_onSwitchToChat","_a","_onDetailChange","_ref","CruiseCanvas","ReactNextElement","constructor","arguments","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_initProto","_init_conversationId","_init_extra_conversationId","_init_initialRequest","_init_extra_initialRequest","_init_replay","_init_extra_replay","_init_replayDelay","_init_extra_replayDelay","_init_supports","_init_extra_supports","_init_showHiddenJobs","_init_extra_showHiddenJobs","_init_showHumanActions","_init_extra_showHumanActions","_init_showFeedback","_init_extra_showFeedback","_init_showFeedbackAfterFailed","_init_extra_showFeedbackAfterFailed","_init_showFeedbackOnView","_init_extra_showFeedbackOnView","_init_showUiSwitch","_init_extra_showUiSwitch","_init_hideMermaid","_init_extra_hideMermaid","_init_showJsxEditor","_init_extra_showJsxEditor","_init_previewUrlTemplate","_init_extra_previewUrlTemplate","_init_showCases","_init_extra_showCases","_init_exampleProjects","_init_extra_exampleProjects","_init_tryItOutUrl","_init_extra_tryItOutUrl","_init_separateInstructions","_init_extra_separateInstructions","_init_aiEmployees","_init_extra_aiEmployees","_init_commands","_init_extra_commands","_init_uploadOptions","_init_extra_uploadOptions","_init_shareEvent","_init_extra_shareEvent","_classPrivateGetter","this","_get_shareEvent","emit","_init_terminateEvent","_init_extra_terminateEvent","_get_terminateEvent","_init_feedbackSubmitEvent","_init_extra_feedbackSubmitEvent","detail","_get_feedbackSubmitEvent","_init_feedbackOnViewEvent","_init_extra_feedbackOnViewEvent","viewId","_get_feedbackOnViewEvent","_init_switch","_init_extra_switch","_get_switch","_init_detailChange","_init_extra_detailChange","_get_detailChange","createRef","conversationId","_classPrivateFieldGet","v","_classPrivateFieldSet","initialRequest","replay","replayDelay","supports","showHiddenJobs","showHumanActions","showFeedback","showFeedbackAfterFailed","showFeedbackOnView","showUiSwitch","hideMermaid","showJsxEditor","previewUrlTemplate","showCases","exampleProjects","tryItOutUrl","separateInstructions","aiEmployees","commands","uploadOptions","resumed","_classPrivateFieldGet2","_classPrivateFieldGet3","current","call","feedbackSubmitDone","_classPrivateFieldGet4","feedbackSubmitFailed","_classPrivateFieldGet5","feedbackOnViewDone","_classPrivateFieldGet6","render","React","onShare","onTerminate","onSubmitFeedback","onSwitchToChat","onFeedbackOnView","onDetailChange","ref","_CruiseCanvas2","e","_set_shareEvent","_set_terminateEvent","_set_feedbackSubmitEvent","_set_feedbackOnViewEvent","_set_switch","_set_detailChange","c","_initClass","_applyDecs","shadowOptions","attribute","type","Boolean","Number","o","_","has","_checkInRHS","K","en","ASK_ANY_THING","COMMON_TASKS","COMMAND_TIPS","SEARCH_COMMANDS_TIPS","zh","t","i18n","getFixedT","chatCommand","setChatCommand","command","customElements","define","createProviderClass","chatEmployee","setChatMentionedEmployee","chatMentionedEmployee","WrappedIcon","wrapBrick","WrappedActions","onActionClick","onItemDragEnd","onItemDragStart","ChatBoxComponent","LegacyChatBoxComponent","_ChatBox","_ChatBox_brand","_handleMessageSubmit","_handleChatSubmit","ChatBox","_defineProperty","_init_disabled","_init_extra_disabled","_init_placeholder","_init_extra_placeholder","_init_autoFocus","_init_extra_autoFocus","_init_messageSubmit","_init_extra_messageSubmit","value","_get_messageSubmit","_init_chatSubmit","_init_extra_chatSubmit","payload","_get_chatSubmit","disabled","placeholder","autoFocus","setValue","_this$ref$current","getValue","_this$ref$current2","focusOnInput","_this$ref$current3","onMessageSubmit","onChatSubmit","root","containerRef","useRef","uploadEnabled","enabled","uploadAccept","accept","files","resetFiles","appendFiles","removeFile","hasFiles","allFilesDone","fileInfos","exceeded","paste","useFilesUploading","useEffect","textareaRef","valueRef","selectionRef","mentioned","mentionedText","mentionPopover","mentionOverlay","mentionActiveKeys","setInitialMention","handleMention","commandText","commandPrefix","commandPopover","commandOverlay","commandActiveKeys","setInitialCommand","handleSelectCommand","handleChange","handleKeyDown","useChatCompletions","employee","employeeId","store","window","__elevo_try_it_out","content","cmd","getInitialContent","slice","mentionedAiEmployeeId","useImperativeHandle","_textareaRef$current","focus","sendDisabled","length","doSubmit","useCallback","aiEmployeeId","handleSubmit","currentTarget","handleSubmitClick","Promise","resolve","then","_textareaRef$current2","uploadButtonRef","onFilesDropped","_textareaRef$current3","className","TextareaAutoResize","minRows","paddingSize","autoResize","submitWhen","desiredSelectionRef","onSubmit","onChange","onKeyDown","onPaste","style","paddingTop","UploadedFiles","onRemove","uid","abortController","abort","onAdd","_uploadButtonRef$curr","requestUpload","name","UploadButton","_textareaRef$current4","onClick","lib","prefix","icon","map","overlay","index","key","createPortal","actions","activeKeys","footerTips","document","body","count","GlobalDragOverlay","_ChatBox2","_set_messageSubmit","_set_chatSubmit","styleTexts","styleText","UploadedFilesStyleText","delegatesFocus","_HomeContainer","HomeContainer","_init_sticky","_init_extra_sticky","sticky","HomeContainerComponent","_HomeContainer2","WrappedMiniLineChart","_StatWithMiniChart","StatWithMiniChart","_init_label","_init_extra_label","_init_value","_init_extra_value","_init_size","_init_extra_size","_init_lineColor","_init_extra_lineColor","_init_showArea","_init_extra_showArea","_init_min","_init_extra_min","_init_max","_init_extra_max","_init_xField","_init_extra_xField","_init_yField","_init_extra_yField","_init_data","_init_extra_data","label","size","lineColor","showArea","min","max","xField","yField","data","StatWithMiniChartComponent","chartProps","_extends","lineWidth","width","height","_StatWithMiniChart2","SIDEBAR_ICON","WrappedElevoLogo","ElevoSidebarComponent","LegacyElevoSidebarComponent","_ElevoSidebar","_ElevoSidebar_brand","_handleLogout","_handleActionClick","_handleProjectActionClick","_handleAddProject","_handleAddServiceflow","_handlePersonalActionClick","ElevoSidebar","_init_userInstanceId","_init_extra_userInstanceId","_init_behavior","_init_extra_behavior","_init_logoUrl","_init_extra_logoUrl","_init_newChatUrl","_init_extra_newChatUrl","_init_newChatLinkWhenCollapsed","_init_extra_newChatLinkWhenCollapsed","_init_historyUrlTemplate","_init_extra_historyUrlTemplate","_init_historyActions","_init_extra_historyActions","_init_showProjects","_init_extra_showProjects","_init_projectUrlTemplate","_init_extra_projectUrlTemplate","_init_projectActions","_init_extra_projectActions","_init_personalActions","_init_extra_personalActions","_init_links","_init_extra_links","_init_canAddProject","_init_extra_canAddProject","_init_myLinks","_init_extra_myLinks","_init_scope","_init_extra_scope","_init_spaceNav","_init_extra_spaceNav","_init_logout","_init_extra_logout","_get_logout","_init_actionClick","_init_extra_actionClick","_get_actionClick","_init_projectActionClick","_init_extra_projectActionClick","_get_projectActionClick","_init_addProject","_init_extra_addProject","_get_addProject","_init_addServiceflow","_init_extra_addServiceflow","_get_addServiceflow","_init_personalActionClick","_init_extra_personalActionClick","_get_personalActionClick","userInstanceId","behavior","logoUrl","newChatUrl","newChatLinkWhenCollapsed","historyUrlTemplate","historyActions","showProjects","projectUrlTemplate","projectActions","personalActions","links","canAddProject","myLinks","scope","spaceNav","pullHistory","delay","setTimeout","pull","open","close","removeProject","projectId","addProject","project","_classPrivateFieldGet7","_classPrivateFieldGet8","moveConversation","_classPrivateFieldGet9","_classPrivateFieldGet0","onLogout","onProjectActionClick","onAddProject","onAddServiceflow","onPersonalActionClick","_ref2","collapsed","setCollapsed","useState","handleCollapse","handleExpand","handleClickMask","handleHistoryClick","dropdownActions","useMemo","text","LOGOUT","SWITCH_LANGUAGE","historyRef","_historyRef$current","_historyRef$current2","_historyRef$current2$","_historyRef$current3","_historyRef$current3$","_historyRef$current4","_historyRef$current4$","classNames","WrappedIconButton","variant","WrappedLink","url","NEW_CHAT","SpaceNav","link","NavLink","activeIncludes","_ref3","active","title","ChatHistory","onHistoryClick","WrappedDropdownActions","themeVariant","async","action","changeLanguage","language","split","getHistory","reload","WrappedEasyopsAvatar","nameOrInstanceId","showName","_ElevoSidebar2","_set_logout","_set_actionClick","_set_projectActionClick","_set_addProject","_set_addServiceflow","_set_personalActionClick","useHasAssignedNodes","slotRef","hasAssignedNodes","setHasAssignedNodes","slotElement","listener","assignedNodes","addEventListener","removeEventListener","WrappedTooltip","_IconButton","IconButton","_init_icon","_init_extra_icon","_init_tooltip","_init_extra_tooltip","_init_tooltipHoist","_init_extra_tooltipHoist","_init_active","_init_extra_active","_init_variant","_init_extra_variant","_init_reduceIconSize","_init_extra_reduceIconSize","tooltip","tooltipHoist","reduceIconSize","IconButtonComponent","hasSlotted","btn","hoist","_IconButton2","ALL","EXPLORE_EXCELLENT_CASES","WrappedShowCase","WrappedTabList","onTabClick","_ShowCases","ShowCases","_init_list","_init_extra_list","_init_limit","_init_extra_limit","list","limit","ShowCasesComponent","groups","Set","item","scenario","filter","activeGroup","setActiveGroup","filteredList","filtered","tabs","group","id","activeTab","caseTitle","summary","_ShowCases2","MCP_HUB","SERVER_cmdb","SERVER_cmdb_product_helper","SERVER_alert","SERVER_web_builder","SERVER_web_builder2","SERVER_host_troubleshooting","SERVER_system_inspection","SERVER_grafana","SERVER_kubernetes","SERVER_llm","DEFAULT_TOOL_ICON","PLATFORM_CONFIG","Map","servers","WrappedStickyContainer","_McpTools","McpTools","_init_stickyTop","_init_extra_stickyTop","stickyTop","McpToolsComponent","groupMap","platformMap","forEach","groupName","server","replaceAll","get","set","push","platform","entries","find","_name","includes","platformName","orderedNames","sort","_ref4","nameA","nameB","indexA","indexOf","indexB","platforms","keys","names","a","b","aIndex","bIndex","activePlatform","setActivePlatform","filteredGroups","groupedList","platformGroups","_ref5","tabsNode","top","_ref6","items","_item$icon","fallback","description","_McpTools2","ForwardedChatStreamComponent","ChatStreamComponent","_ChatStream","_ChatStream_brand","_onSwitchToCanvas","_onSplitChange","ChatStream","_init_splitChange","_init_extra_splitChange","splitted","_get_splitChange","onSwitchToCanvas","onSplitChange","_ChatStream2","_set_splitChange","AI_EMPLOYEES","UNTITLED","_AIEmployees","AIEmployees","_init_industries","_init_extra_industries","_init_urlTemplate","_init_extra_urlTemplate","industries","urlTemplate","AIEmployeesComponent","_industries","industry","activeIndustry","setActiveIndustry","array","role","clickable","parseTemplate","avatar","src","_AIEmployees2","AGENTS","_AIAgents","AIAgents","_init_withContainer","_init_extra_withContainer","withContainer","AIAgentsComponent","node","_item$tags","tags","tag","tagIndex","_AIAgents2","_PageContainer","PageContainer","_init_pageTitle","_init_extra_pageTitle","_init_breadcrumbs","_init_extra_breadcrumbs","pageTitle","breadcrumbs","PageContainerComponent","getRuntime","applyPageTitle","header","_PageContainer2","_TabList","_TabList_brand","_handleTabClick","TabList","_init_tabs","_init_extra_tabs","_init_activeTab","_init_extra_activeTab","_init_tabClick","_init_extra_tabClick","tab","_get_tabClick","TabListComponent","part","_TabList2","_set_tabClick","PLEASE_SELECT","SEARCH_PLACEHOLDER","SEARCH_NO_DATA","WrappedPopover","onVisibleChange","onBeforeVisibleChange","WrappedLoadingContainer","WrappedMenu","WrappedMenuItem","WrappedInput","onValueChange","_DropdownSelect","_DropdownSelect_brand","_handleChange","DropdownSelect","_init_options","_init_extra_options","_init_labelMaxWidth","_init_extra_labelMaxWidth","_init_loading","_init_extra_loading","_init_searchPlaceholder","_init_extra_searchPlaceholder","_init_dropdownContentStyle","_init_extra_dropdownContentStyle","_init_dropdownMaxWidth","_init_extra_dropdownMaxWidth","_init_showSearch","_init_extra_showSearch","_init_changeEvent","_init_extra_changeEvent","option","_get_changeEvent","options","labelMaxWidth","loading","searchPlaceholder","dropdownContentStyle","dropdownMaxWidth","showSearch","DropdownSelectComponent","_value","_options","setOpen","q","setQ","setOptions","activeOption","opt","filteredOptions","ops","toLowerCase","handleBeforeVisibleChange","handleSearchChange","debounce","evt","placement","trigger","arrow","distance","slot","maxWidth","undefined","preventDefault","stopPropagation","_DropdownSelect2","_set_changeEvent","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","WrappedPageTitle","WrappedMainView","WrappedNarrowView","_PreviewContainer","_rootId","PreviewContainer","_init_source","_init_extra_source","_init_url","_init_extra_url","uniqueId","source","Suspense","spinning","styles","PreviewContainerComponent","rootId","parsedResultPromise","worker","getRemoteTsxParserWorker","parseView","parse","catch","error","console","parsedResult","use","convertedResultPromise","convertView","expanded","convertedResult","viewTitle","_parsedResult$entry","entry","defaultExport","RenderComponent","rootRef","container","portal","unstable_createRoot","supportsUseChildren","unmount","remove","_rootRef$current","brick","context","functions","templates","main","_PreviewContainer2","WrapperIcon","WrapperButton","_ActionButtons","_ActionButtons_brand","ActionButtons","_init_items","_init_extra_items","_init_activeKey","_init_extra_activeKey","_init_change","_init_extra_change","activeKey","_get_change","ActionButtonsComponent","propActiveKey","setActiveKey","initializedRef","_items$find","hidden","filteredItems","_ActionButtons2","_set_change","UN_START_STATUS","RUNNING_STATUS","COMPLETED_STATUS","_supports","WrappedButton","iconMap","ready","working","completed","iconActions","category","GoalCardItem","goalItem","idWidth","cardStyle","onStatusChange","onTitleChange","onNewChat","onAppendChild","onRevokeAppendChild","isActive","state","serialNumber","conversations","owner","pending","compositionRef","handleCompositionStart","handleCompositionEnd","editing","setEditing","handleFocus","handleBlur","textContent","trim","blur","titleRef","_titleRef$current","paddingLeft","level","onFocus","onBlur","onCompositionStart","onCompositionEnd","contentEditable","editable","div","createElement","setAttribute","supportsContentEditablePlaintextOnly","suppressContentEditableWarning","instanceId","GoalCardListComponent","LegacyGoalCardListComponent","_GoalCardList","_GoalCardList_brand","_handleItemClick","_handleItemStatusChange","_handleTitleChange","_handleNewChat","GoalCardList","_init_goalList","_init_extra_goalList","_init_cardStyle","_init_extra_cardStyle","_init_itemClickEvent","_init_extra_itemClickEvent","_get_itemClickEvent","_init_itemStatusChangeEvent","_init_extra_itemStatusChangeEvent","_get_itemStatusChangeEvent","_init_itemTitleChangeEvent","_init_extra_itemTitleChangeEvent","_get_itemTitleChangeEvent","_init_itemNewChatEvent","_init_extra_itemNewChatEvent","_get_itemNewChatEvent","goalList","appendChildDone","pendingId","newItem","onItemClick","_goalList","setGoalList","updateGoalItem","field","callback","updatedItem","prevList","goal","_goalList$reduce","reduce","Math","toString","handleTitleChange","newTitle","handleStatusChange","newStatus","newChild","pendingParentId","_prevList$findIndex","findIndex","offsetIndex","handleAppendChild","_GoalCardList2","_set_itemClickEvent","_set_itemStatusChangeEvent","_set_itemTitleChangeEvent","_set_itemNewChatEvent","CardItemStyleText","PROJECT_OVERALL","WrappedAvatar","WrappedMiniActions","_ProjectConversations","_ProjectConversations_brand","_handleGoalClick","ProjectConversations","_init_actions","_init_extra_actions","_init_goals","_init_extra_goals","_init_goalClick","_init_extra_goalClick","conversation","_get_goalClick","goals","ProjectConversationsComponent","onGoalClick","ConversationLink","_goals$find","goalRef","el","handleClick","actionsVisible","setActionsVisible","global","goalInstanceId","g","username","humanizeTime","startTime","HumanizeTimeFormat","full","relative","_ProjectConversations2","_set_goalClick","_ProjectKnowledges","_ProjectKnowledges_brand","ProjectKnowledges","_init_itemClick","_init_extra_itemClick","_get_itemClick","ProjectKnowledgesComponent","KnowledgeLink","knowledge","time","user","_ProjectKnowledges2","_set_itemClick","STARTED_A_CHAT","CREATED_THIS_GOAL","CHANGED_THE_GOAL_TITLE","CHANGED_THE_GOAL_DESCRIPTION","CHANGED_THE_GOAL","DELETED_THIS_GOAL","DECOMPOSED_THIS_GOAL","DECOMPOSED_THIS_GOAL_plural","SET_OWNER","REMOVED_GOAL_PARTICIPANTS","REMOVED_GOAL_PARTICIPANTS_plural","ADDED_GOAL_PARTICIPANTS","ADDED_GOAL_PARTICIPANTS_plural","COMMENTED","COMMA","SEMICOLON","_ActivityTimeline","ActivityTimeline","_init_chatUrlTemplate","_init_extra_chatUrlTemplate","chatUrlTemplate","ActivityTimelineComponent","activity","_activity$metadata","_activity$metadata2","user_id","user_name","action_type","target","metadata","conversation_title","after","sub_goals_count","sub_goals","join","removed","added","beforeUserIds","before","users","afterUserIds","descriptions","getAlterPARTICIPANTsActivityDescription","comment_content","_ActivityTimeline2","TERMINATE_THE_TASK","ICON_LOADING","ICON_STOP","ChatInputComponent","LegacyChatInputComponent","_ChatInput","_ChatInput_brand","_handleTerminate","ChatInput","_init_submitDisabled","_init_extra_submitDisabled","_init_supportsTerminate","_init_extra_supportsTerminate","_init_terminating","_init_extra_terminating","_init_autoFade","_init_extra_autoFade","_init_suggestionsPlacement","_init_extra_suggestionsPlacement","_init_terminate","_init_extra_terminate","_get_terminate","submitDisabled","supportsTerminate","terminating","autoFade","suggestionsPlacement","wrap","setWrap","observer","ResizeObserver","contentBoxSize","blockSize","contentRect","observe","disconnect","handleContainerClick","nativeEvent","composedPath","HTMLTextAreaElement","HTMLButtonElement","maxRows","borderSize","MAX_SHOWN_COMMANDS","_textareaRef$current5","dragDisabled","_ChatInput2","_set_terminate","_ElevoLogo","ElevoLogo","alt","Logo","_ElevoLogo2","WATCH_REPLAY","bgClasses","_ShowCase","ShowCase","_init_caseTitle","_init_extra_caseTitle","_init_summary","_init_extra_summary","ShowCaseComponent","bgClass","hash","i","charCodeAt","abs","_ShowCase2","tool","params","http","post","stepId","_BlankState","BlankState","_init_illustration","_init_extra_illustration","_init_description","_init_extra_description","illustration","BlankStateComponent","getIllustrationSrc","imageGoals","imageSpaces","imageServiceflows","imageActivities","_BlankState2","_StickyContainer","StickyContainer","StickyContainerComponent","_StickyContainer2","_ElevoCard","ElevoCard","_init_cardTitle","_init_extra_cardTitle","_init_avatar","_init_extra_avatar","_init_avatarType","_init_extra_avatarType","cardTitle","avatarType","ElevoCardComponent","footerRef","hasFooter","actionsRef","hasActions","IconAvatar","color","iconProps","borderColor","_ElevoCard2","dpr","devicePixelRatio","TAB_HEIGHT","BORDER_RADIUS","slopeAngle","PI","deltaY","sin","deltaX","cos","slopeWidth","tan","offsetX","_FlowTabs","_FlowTabs_brand","FlowTabs","FlowTabsComponent","bgRef","tabsRef","canvas","nav","ctx","getContext","rootSize","requestId","getContentBoxSize","tabElements","Array","from","querySelectorAll","activeTabElement","classList","contains","tabWidth","getBoundingClientRect","isFirstTab","tabOffset","tabsOffset","left","activeTabOffset","cancelAnimationFrame","requestAnimationFrame","scale","clearRect","fillStyle","borderGradient","createLinearGradient","addColorStop","strokeStyle","actualWidth","actualHeight","translate","beginPath","moveTo","arcTo","upStartX","lineTo","arc","downStartX","closePath","fill","stroke","drawBg","boxSizeType","_FlowTabs2","ADD_STAGE","PLEASE_ENTER_NAME","UNASSIGNED","DELETE_STAGE","DELETE_STAGE_TIPS","DELETE","ADD_ACTIVITY","STAGE_NAME_EXISTS","ACTIVITY_NAME_EXISTS","showDialog","unwrapProvider","StageFlowComponent","LegacyStageFlowComponent","_StageFlow","_StageFlow_brand","_handleAddActivity","_handleEditActivity","StageFlow","_init_spec","_init_extra_spec","_init_readOnly","_init_extra_readOnly","spec","_init_addActivity","_init_extra_addActivity","stage","_get_addActivity","_init_editActivity","_init_extra_editActivity","_get_editActivity","readOnly","addActivity","editActivity","activityIndex","deleteActivity","onAddActivity","onEditActivity","stages","setStages","addingStage","setAddingStage","initialRef","getAIEmployeeName","prev","_updatedStage$service","stageIndex","s","updatedStage","prevActivities","serviceFlowActivities","updatedActivities","newStages","_updatedStage$service2","_updatedStage$service3","splice","StageNavItem","otherStageNames","onNameChange","newName","updatedStages","onDelete","StageNameInput","onDone","stageName","_stage$serviceFlowAct","popoverRef","sync","newValue","_StageFlow2","_set_addActivity","_set_editActivity","props","xmlns","viewBox","fillRule","d","strokeLinecap","_RunningFlow","_RunningFlow_brand","_handleActivityClick","RunningFlow","_init_activityClick","_init_extra_activityClick","activityId","_classPrivateGetter2","_get_activityClick","RunningFlowComponent","onActivityClick","StageIcon","getActivityStateClassName","taskId","getFlowOrActivityIcon","endTime","Duration","end","setEnd","countTime","setEndTime","Date","now","interval","setInterval","clearInterval","duration","ceilDuration","ceil","minutes","floor","seconds","String","padStart","formatDuration","_RunningFlow2","_set_activityClick","MESSAGE_LIST","NO_NEW_MESSAGE","MARK_ALL_READ","ENTER_MESSAGE_CENTER","WrapperCounterBadge","WrapperIconButton","_NoticeDropdown","_NoticeDropdown_brand","_handleNoticeClick","_handleMarkAllRead","NoticeDropdown","_init_dataSource","_init_extra_dataSource","_init_popoverPlacement","_init_extra_popoverPlacement","_init_emptyText","_init_extra_emptyText","_init_notifyCenterUrl","_init_extra_notifyCenterUrl","_init_urlTarget","_init_extra_urlTarget","_init_hideNotifyCenterButton","_init_extra_hideNotifyCenterButton","_init_noticeClickEvent","_init_extra_noticeClickEvent","_init_markAllReadEvent","_init_extra_markAllReadEvent","_get_noticeClickEvent","_get_markAllReadEvent","dataSource","popoverPlacement","emptyText","notifyCenterUrl","urlTarget","hideNotifyCenterButton","NoticeDropdownComponent","onNoticeClick","onMarkAllRead","_dataSource$length","handleClose","handleNoticeItemClick","handleMarkAllReadClick","handleClickOutside","_event$composedPath","some","element","HTMLElement","showZero","dot","offset","_item$url","imgSrc","getNotifyIcon","keepSvgOriginalColor","href","projectNotifySvg","accountNotifySvg","systemNotifySvg","spaceNotifySvg","_NoticeDropdown2","_set_noticeClickEvent","_set_markAllReadEvent","MARK_READ","NO_MESSAGE","WrappedCheckbox","onValuesChange","_NoticeList","_NoticeList_brand","_handleMarkItemsRead","NoticeList","_init_selectedIds","_init_extra_selectedIds","_init_markItemsReadEvent","_init_extra_markItemsReadEvent","_get_markItemsReadEvent","selectedIds","NoticeListComponent","onMarkItemsRead","_selectedIds","setSelectedIds","currentAllIds","isRead","isAllSelected","every","handleSelectAll","checked","newSelectedIds","handleSelectItem","selectedId","_e$detail","NoticeListItem","selected","onSelectItem","checkboxRef","_e$detail2","_NoticeList2","_set_markItemsReadEvent","WrappedModal","onClose","onConfirm","onCancel","onOpen","ChatPanelComponent","LegacyChatPanelComponent","_ChatPanel","ChatPanel","_init_panelTitle","_init_extra_panelTitle","_init_aiEmployeeId","_init_extra_aiEmployeeId","_init_cmd","_init_extra_cmd","_init_width","_init_extra_width","_init_height","_init_extra_height","_init_help","_init_extra_help","_init_maskClosable","_init_extra_maskClosable","panelTitle","help","maskClosable","setInputValue","send","showFile","file","modalRef","contentRef","setSubmitDisabled","setConversationId","setInitialRequest","handleChatSubmit","handleHttpError","_modalRef$current","_modalRef$current2","_contentRef$current","_contentRef$current2","modalTitle","noFooter","headerBordered","fullscreenButton","background","backgroundImage","_contentRef$current3","ChatPanelContent","fromModal","_ChatPanel2","_SpaceLogo","SpaceLogo","SpaceLogoComponent","iconSize","round","borderRadius","spaceLogoSvg","_SpaceLogo2","_ChatPanelWelcome","ChatPanelWelcome","_init_text","_init_extra_text","ChatPanelWelcomeComponent","_ChatPanelWelcome2","strokeLinejoin","strokeWidth","clipPath","x1","x2","y1","y2","gradientUnits","stopColor","WrappedSpaceLogo","SpaceGuide","spaceDetail","onCardClick","generateSpaceSummary","spaceCapabilities","setSpaceCapabilities","setLoading","cards","layerSvg","layerBg","SPACE_GUIDE_CARD_1_TITLE","iconContainerColor","lightningSvg","lightningBg","SPACE_GUIDE_CARD_2_TITLE","bookSvg","bookBg","SPACE_GUIDE_CARD_3_TITLE","res","spaceId","interceptorParams","ignoreLoadingBar","ElevoSpaceApi_generateSpaceCapabilities","forceRefresh","fetchSpaceCapabilities","MagicSvg","SPACE_GUIDE_SECTION_TITLE","card","handleCardClick","_SpaceChatGuide","SpaceChatGuide","_init_spaceDetail","_init_extra_spaceDetail","_SpaceChatGuide2","ChatStreamNS","ChatStreamLocales","_SpaceWorkbench","_SpaceWorkbench_brand","SpaceWorkbench","_init_notices","_init_extra_notices","_init_knowledges","_init_extra_knowledges","_init__goBackEvent","_init_extra__goBackEvent","_init__membersClickEvent","_init_extra__membersClickEvent","_init__noticeClickEvent","_init_extra__noticeClickEvent","_init__markAllReadEvent","_init_extra__markAllReadEvent","_init__spaceEditEvent","_init_extra__spaceEditEvent","_init__knowledgeClickEvent","_init_extra__knowledgeClickEvent","_init__knowledgeAddEvent","_init_extra__knowledgeAddEvent","notices","knowledges","SpaceWorkbenchComponent","onBack","_get__goBackEvent","onMembersClick","_get__membersClickEvent","notice","_get__noticeClickEvent","_get__markAllReadEvent","onSpaceEdit","_get__spaceEditEvent","onKnowledgeClick","_get__knowledgeClickEvent","onKnowledgeAdd","_get__knowledgeAddEvent","currentView","setCurrentView","selectedInstance","setSelectedInstance","selectedBusinessObject","setSelectedBusinessObject","instanceUpdateTrigger","setInstanceUpdateTrigger","businessFlows","setBusinessFlows","chatAreaRef","handleInstanceClick","instance","businessObject","handleCloseInstanceDetail","handleNewConversation","_chatAreaRef$current","addNewSession","handleInstanceUpdate","updatedInstance","objectId","updatedData","timestamp","handleFlowClick","flow","_chatAreaRef$current2","message","INITIATING_SERVICE_FLOW","sendMessage","ElevoSpaceApi_listServiceFlow","page","pageSize","fetchBusinessFlows","WorkbenchContext","Provider","spaceWorkbenchContainer","spaceWorkbenchContent","SpaceSidebar","knowledgeList","onInstanceClick","ChatArea","ServiceFlows","onFlowClick","InstDetailManagement","onNewConversation","onInstanceUpdate","_SpaceWorkbench2","_set__goBackEvent","_set__membersClickEvent","_set__noticeClickEvent","_set__markAllReadEvent","_set__spaceEditEvent","_set__knowledgeClickEvent","_set__knowledgeAddEvent","___CSS_LOADER_EXPORT___","module","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___"],"sourceRoot":""}