@next-bricks/ai-portal 0.60.0 → 0.60.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bricks.json +22 -22
- package/dist/chunks/1480.0de951a3.js +2 -0
- package/dist/chunks/1480.0de951a3.js.map +1 -0
- package/dist/chunks/{2084.ddaad7cc.js → 2084.aae5392b.js} +3 -3
- package/dist/chunks/2084.aae5392b.js.map +1 -0
- package/dist/chunks/{2232.02cd2bbc.js → 2232.085b8abd.js} +2 -2
- package/dist/chunks/{2232.02cd2bbc.js.map → 2232.085b8abd.js.map} +1 -1
- package/dist/chunks/{2324.d6932d39.js → 2324.a4a90c77.js} +2 -2
- package/dist/chunks/{2324.d6932d39.js.map → 2324.a4a90c77.js.map} +1 -1
- package/dist/chunks/2357.b6f1e719.js +2 -0
- package/dist/chunks/2357.b6f1e719.js.map +1 -0
- package/dist/chunks/{3171.a0251432.js → 3171.45ef4669.js} +2 -2
- package/dist/chunks/{3171.a0251432.js.map → 3171.45ef4669.js.map} +1 -1
- package/dist/chunks/3793.03162dd0.js +2 -0
- package/dist/chunks/3793.03162dd0.js.map +1 -0
- package/dist/chunks/{7146.1af0c62e.js → 4765.03d9c7c5.js} +2 -2
- package/dist/chunks/{7146.1af0c62e.js.map → 4765.03d9c7c5.js.map} +1 -1
- package/dist/chunks/{4837.c7f9a784.js → 4837.570099ad.js} +2 -2
- package/dist/chunks/{4837.c7f9a784.js.map → 4837.570099ad.js.map} +1 -1
- package/dist/chunks/{5552.84bdc597.js → 5552.09658542.js} +2 -2
- package/dist/chunks/{5552.84bdc597.js.map → 5552.09658542.js.map} +1 -1
- package/dist/chunks/5712.827c2e04.js +2 -0
- package/dist/chunks/5712.827c2e04.js.map +1 -0
- package/dist/chunks/6450.ade6ef3e.js +2 -0
- package/dist/chunks/6450.ade6ef3e.js.map +1 -0
- package/dist/chunks/6792.03e66697.js +2 -0
- package/dist/chunks/6792.03e66697.js.map +1 -0
- package/dist/chunks/{4765.e2813cac.js → 7146.b327120d.js} +2 -2
- package/dist/chunks/{4765.e2813cac.js.map → 7146.b327120d.js.map} +1 -1
- package/dist/chunks/7888.61a7cdf2.js +3 -0
- package/dist/chunks/7888.61a7cdf2.js.LICENSE.txt +7 -0
- package/dist/chunks/7888.61a7cdf2.js.map +1 -0
- package/dist/chunks/7955.0c92eb57.js +3 -0
- package/dist/chunks/{7238.9abe2a64.js.LICENSE.txt → 7955.0c92eb57.js.LICENSE.txt} +0 -6
- package/dist/chunks/7955.0c92eb57.js.map +1 -0
- package/dist/chunks/948.e601f18c.js +3 -0
- package/dist/chunks/948.e601f18c.js.map +1 -0
- package/dist/chunks/9525.9e5140be.js +15 -0
- package/dist/chunks/9525.9e5140be.js.map +1 -0
- package/dist/chunks/{9599.1f04dd1f.js → 9599.02a5e6e3.js} +2 -2
- package/dist/chunks/{9599.1f04dd1f.js.map → 9599.02a5e6e3.js.map} +1 -1
- package/dist/chunks/9979.44f64896.js +2 -0
- package/dist/chunks/9979.44f64896.js.map +1 -0
- package/dist/chunks/{action-buttons.989fd1c9.js → action-buttons.68666920.js} +2 -2
- package/dist/chunks/{action-buttons.989fd1c9.js.map → action-buttons.68666920.js.map} +1 -1
- package/dist/chunks/{activity-timeline.60adaa84.js → activity-timeline.96e7aaea.js} +2 -2
- package/dist/chunks/{activity-timeline.60adaa84.js.map → activity-timeline.96e7aaea.js.map} +1 -1
- package/dist/chunks/{ai-agents.92ed0274.js → ai-agents.cffd08a0.js} +3 -3
- package/dist/chunks/{ai-agents.92ed0274.js.map → ai-agents.cffd08a0.js.map} +1 -1
- package/dist/chunks/{ai-employees.52fe4443.js → ai-employees.267c3626.js} +3 -3
- package/dist/chunks/{ai-employees.52fe4443.js.map → ai-employees.267c3626.js.map} +1 -1
- package/dist/chunks/{call-tool.89a848e0.js → call-tool.a3219d5e.js} +2 -2
- package/dist/chunks/call-tool.a3219d5e.js.map +1 -0
- package/dist/chunks/{chat-box.991e397f.js → chat-box.ca4c62c9.js} +3 -3
- package/dist/chunks/{chat-box.991e397f.js.map → chat-box.ca4c62c9.js.map} +1 -1
- package/dist/chunks/{chat-input.fce2d021.js → chat-input.e999f79c.js} +2 -2
- package/dist/chunks/{chat-input.fce2d021.js.map → chat-input.e999f79c.js.map} +1 -1
- package/dist/chunks/{chat-stream.362a2292.js → chat-stream.8d8dc5a0.js} +2 -2
- package/dist/chunks/{chat-stream.362a2292.js.map → chat-stream.8d8dc5a0.js.map} +1 -1
- package/dist/chunks/{cruise-canvas.b444c4ca.js → cruise-canvas.4a0692fb.js} +2 -2
- package/dist/chunks/{cruise-canvas.b444c4ca.js.map → cruise-canvas.4a0692fb.js.map} +1 -1
- package/dist/chunks/{dropdown-select.1140bf2b.js → dropdown-select.336442ba.js} +2 -2
- package/dist/chunks/{dropdown-select.1140bf2b.js.map → dropdown-select.336442ba.js.map} +1 -1
- package/dist/chunks/{elevo-sidebar.0d1f76dd.js → elevo-sidebar.68648b33.js} +3 -3
- package/dist/chunks/elevo-sidebar.68648b33.js.map +1 -0
- package/dist/chunks/{gantt-chart.c8cdcd66.js → gantt-chart.42c7f514.js} +2 -2
- package/dist/chunks/{gantt-chart.c8cdcd66.js.map → gantt-chart.42c7f514.js.map} +1 -1
- package/dist/chunks/{goal-card-list.44c21cf2.js → goal-card-list.74ab5767.js} +3 -3
- package/dist/chunks/{goal-card-list.44c21cf2.js.map → goal-card-list.74ab5767.js.map} +1 -1
- package/dist/chunks/{load-request-store.b4cf045b.js → load-request-store.a6effafd.js} +2 -2
- package/dist/chunks/{load-request-store.b4cf045b.js.map → load-request-store.a6effafd.js.map} +1 -1
- package/dist/chunks/main.65f1d0be.js +2 -0
- package/dist/chunks/{main.87ffc00f.js.map → main.65f1d0be.js.map} +1 -1
- package/dist/chunks/{mcp-tools.0acb474a.js → mcp-tools.f132c502.js} +2 -2
- package/dist/chunks/{mcp-tools.0acb474a.js.map → mcp-tools.f132c502.js.map} +1 -1
- package/dist/chunks/{notice-dropdown.365134e6.js → notice-dropdown.63cb2415.js} +2 -2
- package/dist/chunks/{notice-dropdown.365134e6.js.map → notice-dropdown.63cb2415.js.map} +1 -1
- package/dist/chunks/{notice-list.d51c0103.js → notice-list.9a78cc87.js} +3 -3
- package/dist/chunks/{notice-list.d51c0103.js.map → notice-list.9a78cc87.js.map} +1 -1
- package/dist/chunks/{page-container.570e7c6d.js → page-container.08e26095.js} +2 -2
- package/dist/chunks/{page-container.570e7c6d.js.map → page-container.08e26095.js.map} +1 -1
- package/dist/chunks/preview-container.a0ca6e2f.js +2 -0
- package/dist/chunks/preview-container.a0ca6e2f.js.map +1 -0
- package/dist/chunks/{project-conversations.3f559e57.js → project-conversations.4cc72f40.js} +3 -3
- package/dist/chunks/{project-conversations.3f559e57.js.map → project-conversations.4cc72f40.js.map} +1 -1
- package/dist/chunks/{project-knowledges.24611263.js → project-knowledges.51731410.js} +3 -3
- package/dist/chunks/{project-knowledges.24611263.js.map → project-knowledges.51731410.js.map} +1 -1
- package/dist/chunks/{set-chat-command.367b9c88.js → set-chat-command.182747cc.js} +2 -2
- package/dist/chunks/{set-chat-command.367b9c88.js.map → set-chat-command.182747cc.js.map} +1 -1
- package/dist/chunks/{show-case.7bc5fc9e.js → show-case.44e995fc.js} +2 -2
- package/dist/chunks/{show-case.7bc5fc9e.js.map → show-case.44e995fc.js.map} +1 -1
- package/dist/chunks/{show-cases.85fe99d4.js → show-cases.c3921ea0.js} +2 -2
- package/dist/chunks/{show-cases.85fe99d4.js.map → show-cases.c3921ea0.js.map} +1 -1
- package/dist/chunks/{stage-flow.22610ca5.js → stage-flow.9b6fad93.js} +2 -2
- package/dist/chunks/{stage-flow.22610ca5.js.map → stage-flow.9b6fad93.js.map} +1 -1
- package/dist/examples.json +13 -13
- package/dist/index.9833ba26.js +2 -0
- package/dist/index.9833ba26.js.map +1 -0
- package/dist/manifest.json +146 -146
- package/dist/types.json +193 -167
- package/dist-types/data-providers/call-tool.d.ts +1 -1
- package/dist-types/elevo-sidebar/ChatHistory.d.ts +3 -1
- package/dist-types/elevo-sidebar/index.d.ts +2 -1
- package/dist-types/jsx.d.ts +77 -0
- package/dist-types/shared/interfaces.d.ts +1 -1
- package/dist-types/shared/workers/tsxParser.d.ts +1 -1
- package/package.json +5 -3
- package/dist/chunks/2084.ddaad7cc.js.map +0 -1
- package/dist/chunks/3199.0220cf6e.js +0 -3
- package/dist/chunks/3199.0220cf6e.js.map +0 -1
- package/dist/chunks/3735.8c1d82e7.js +0 -15
- package/dist/chunks/3735.8c1d82e7.js.LICENSE.txt +0 -5
- package/dist/chunks/3735.8c1d82e7.js.map +0 -1
- package/dist/chunks/5712.c566ad78.js +0 -2
- package/dist/chunks/5712.c566ad78.js.map +0 -1
- package/dist/chunks/6593.58eda50f.js +0 -2
- package/dist/chunks/6593.58eda50f.js.map +0 -1
- package/dist/chunks/6792.0efb2d00.js +0 -2
- package/dist/chunks/6792.0efb2d00.js.map +0 -1
- package/dist/chunks/7238.9abe2a64.js +0 -3
- package/dist/chunks/7238.9abe2a64.js.map +0 -1
- package/dist/chunks/7586.b406d4bf.js +0 -2
- package/dist/chunks/7586.b406d4bf.js.map +0 -1
- package/dist/chunks/8135.3255c5ba.js +0 -2
- package/dist/chunks/8135.3255c5ba.js.map +0 -1
- package/dist/chunks/843.9b7325c3.js +0 -2
- package/dist/chunks/843.9b7325c3.js.map +0 -1
- package/dist/chunks/9388.e48bb229.js +0 -2
- package/dist/chunks/9388.e48bb229.js.map +0 -1
- package/dist/chunks/948.d125d58c.js +0 -3
- package/dist/chunks/948.d125d58c.js.map +0 -1
- package/dist/chunks/9496.1d7ebb7f.js +0 -2
- package/dist/chunks/9496.1d7ebb7f.js.map +0 -1
- package/dist/chunks/call-tool.89a848e0.js.map +0 -1
- package/dist/chunks/elevo-sidebar.0d1f76dd.js.map +0 -1
- package/dist/chunks/main.87ffc00f.js +0 -2
- package/dist/chunks/preview-container.19631a7b.js +0 -2
- package/dist/chunks/preview-container.19631a7b.js.map +0 -1
- package/dist/index.a91518b7.js +0 -2
- package/dist/index.a91518b7.js.map +0 -1
- /package/dist/chunks/{2084.ddaad7cc.js.LICENSE.txt → 2084.aae5392b.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{948.d125d58c.js.LICENSE.txt → 948.e601f18c.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{3199.0220cf6e.js.LICENSE.txt → 9525.9e5140be.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{ai-agents.92ed0274.js.LICENSE.txt → ai-agents.cffd08a0.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{ai-employees.52fe4443.js.LICENSE.txt → ai-employees.267c3626.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{chat-box.991e397f.js.LICENSE.txt → chat-box.ca4c62c9.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{elevo-sidebar.0d1f76dd.js.LICENSE.txt → elevo-sidebar.68648b33.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{goal-card-list.44c21cf2.js.LICENSE.txt → goal-card-list.74ab5767.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{notice-list.d51c0103.js.LICENSE.txt → notice-list.9a78cc87.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{project-conversations.3f559e57.js.LICENSE.txt → project-conversations.4cc72f40.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{project-knowledges.24611263.js.LICENSE.txt → project-knowledges.51731410.js.LICENSE.txt} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/5712.c566ad78.js","mappings":"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","sources":["webpack:///./src/shared/useFulfilledActiveDetail.ts","webpack:///./src/shared/FilePreview/downloadFile.ts","webpack:///./src/shared/FilePreview/ImagesPreview.module.css?b629","webpack:///./src/shared/FilePreview/ImagesPreview.tsx","webpack:///./src/shared/NodeFeedback/NodeFeedback.module.css","webpack:///./src/shared/CreatedView/CreatedView.module.css","webpack:///./src/shared/MarkdownPre.module.css?da10","webpack:///./src/shared/MarkdownPre.tsx","webpack:///./src/shared/MarkdownPre.module.css","webpack:///./src/shared/fetchEmployee.ts","webpack:///./src/cruise-canvas/EnhancedMarkdown/EnhancedMarkdown.tsx","webpack:///./src/shared/bricks.ts","webpack:///./src/cruise-canvas/CanvasContext.ts","webpack:///./src/shared/useHandleEscape.ts","webpack:///./src/shared/FloatingButton.module.css","webpack:///./src/shared/RequestHumanAction/RequestHumanAction.module.css?91ef","webpack:///./src/shared/RequestHumanAction/RequestHumanAction.tsx","webpack:///./src/cruise-canvas/shared.module.css?c988","webpack:///./src/shared/FilePreview/FilePreview.module.css","webpack:///./src/shared/FilePreview/FilePreview.module.css?db00","webpack:///./src/shared/FilePreview/FilePreview.tsx","webpack:///./src/cruise-canvas/ToolProgressLine/ToolProgressLine.module.css?1d0e","webpack:///./src/cruise-canvas/ToolProgressLine/ToolProgressLine.tsx","webpack:///./src/cruise-canvas/ToolCallStatus/ToolCallStatus.module.css?6208","webpack:///./src/cruise-canvas/utils/getToolDataProgress.ts","webpack:///./src/cruise-canvas/ToolCallStatus/ToolCallStatus.tsx","webpack:///./src/shared/constants.ts","webpack:///./src/cruise-canvas/ToolCallStatus/ToolCallStatus.module.css","webpack:///./src/cruise-canvas/CmdbInstanceDetail/CmdbInstanceDetail.module.css?7513","webpack:///./src/cruise-canvas/CmdbInstanceDetail/CmdbInstanceDetail.tsx","webpack:///./src/shared/FilePreview/FileList.module.css?3ed2","webpack:///./src/shared/FilePreview/FileList.tsx","webpack:///./src/shared/getOrderedNodes.ts","webpack:///./src/shared/getFlatChunks.ts","webpack:///./src/shared/getTaskTree.ts","webpack:///../../src/index.ts","webpack:///../../src/rehypeMermaid.ts","webpack:///../../src/utils.ts","webpack:///../../src/MarkdownComponent.tsx","webpack:///./src/cruise-canvas/CmdbInstanceDetail/CmdbInstanceDetail.module.css","webpack:///./src/cruise-canvas/utils/file.ts","webpack:///./src/shared/ExpandedView/ExpandedView.module.css?985a","webpack:///./src/shared/ExpandedView/ExpandedView.tsx","webpack:///../../../src/i18n/constants.ts","webpack:///../../../../src/i18n/locales/en.ts","webpack:///../../../../src/i18n/locales/zh.ts","webpack:///../../../src/i18n/index.ts","webpack:///../../src/humanizeTime.ts","webpack:///./src/shared/parseTemplate.ts","webpack:///./src/cruise-canvas/reducers/tasks.ts","webpack:///./src/cruise-canvas/reducers/serviceFlows.ts","webpack:///./src/cruise-canvas/reducers/index.ts","webpack:///./src/cruise-canvas/reducers/conversation.ts","webpack:///./src/cruise-canvas/reducers/errors.ts","webpack:///./src/cruise-canvas/useConversationDetail.ts","webpack:///./src/cruise-canvas/ToolProgressLine/ToolProgressLine.module.css","webpack:///./src/shared/FloatingButton.module.css?87dc","webpack:///./src/shared/ChatBox/i18n.ts","webpack:///./src/shared/ChatBox/ChatBox.tsx","webpack:///./src/shared/getAsyncConstructedView.ts","webpack:///./src/shared/TaskContext.ts","webpack:///./src/shared/ReadableCommand/ReadableCommand.module.css?7a0c","webpack:///./src/shared/ReadableCommand/ReadableCommand.tsx","webpack:///./src/cruise-canvas/NodeReplay/NodeReplay.module.css","webpack:///./src/cruise-canvas/toolbar.module.css","webpack:///./src/shared/ReadableCommand/ReadableCommand.module.css","webpack:///./src/shared/FilePreview/ImagesPreview.module.css","webpack:///./src/shared/FilePreview/i18n.ts","webpack:///./src/shared/ExpandedView/ExpandedView.module.css","webpack:///./src/shared/CreatedView/ViewToolbar.module.css","webpack:///./src/cruise-canvas/toolbar.module.css?a4b4","webpack:///./src/shared/CreatedView/CreatedView.module.css?fa62","webpack:///./src/shared/CreatedView/CreatedView.tsx","webpack:///./src/shared/useFlowAndActivityMap.ts","webpack:///./src/shared/CreatedView/ViewToolbar.module.css?4751","webpack:///./src/shared/CreatedView/i18n.ts","webpack:///./src/shared/CreatedView/ViewToolbar.tsx","webpack:///./src/shared/RequestHumanAction/RequestHumanAction.module.css","webpack:///./src/cruise-canvas/shared.module.css","webpack:///./src/shared/useViewFeedbackDone.ts","webpack:///./src/shared/NodeFeedback/NodeFeedback.module.css?99d4","webpack:///./src/shared/NodeFeedback/i18n.ts","webpack:///./src/shared/NodeFeedback/NodeFeedback.tsx","webpack:///./src/shared/FilePreview/FileList.module.css","webpack:///./src/shared/FilePreview/getImageUrl.ts","webpack:///./src/cruise-canvas/NodeReplay/NodeReplay.module.css?d0bd","webpack:///./src/cruise-canvas/NodeReplay/i18n.ts","webpack:///./src/cruise-canvas/NodeReplay/NodeReplay.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport type {\n ActiveDetail,\n ActivityWithFlow,\n FulfilledActiveDetail,\n Job,\n ServiceFlowRun,\n} from \"./interfaces\";\n\nexport function useFulfilledActiveDetail(\n activeDetail: ActiveDetail | null,\n jobMap: Map<string, Job> | undefined,\n flowMap: Map<string, ServiceFlowRun>,\n activityMap: Map<string, ActivityWithFlow>\n) {\n return useMemo<FulfilledActiveDetail | null>(() => {\n if (!activeDetail) {\n return null;\n }\n switch (activeDetail.type) {\n case \"job\": {\n const job = jobMap?.get(activeDetail.id);\n if (job) {\n return {\n type: \"job\",\n job,\n };\n }\n break;\n }\n case \"flow\": {\n const flow = flowMap?.get(activeDetail.id);\n if (flow) {\n return {\n type: \"flow\",\n flow,\n };\n }\n break;\n }\n case \"activity\": {\n const activityWithFlow = activityMap?.get(activeDetail.id);\n if (activityWithFlow) {\n return {\n type: \"activity\",\n flow: activityWithFlow.flow,\n activity: activityWithFlow.activity,\n };\n }\n break;\n }\n }\n return null;\n }, [activeDetail, activityMap, flowMap, jobMap]);\n}\n","import { saveAs } from \"file-saver\";\nimport type { FileInfo } from \"../interfaces\";\nimport { K, t } from \"./i18n\";\nimport { getImageUrl } from \"./getImageUrl\";\n\nexport function downloadFile(file: FileInfo): void {\n const { bytes, uri, mimeType, name } = file;\n const filename = name || t(K.UNTITLED);\n if (bytes) {\n saveAs(\n new Blob([Uint8Array.from(atob(bytes), (c) => c.charCodeAt(0))], {\n type: mimeType,\n }),\n filename\n );\n } else if (uri) {\n const link = document.createElement(\"a\");\n link.href = getImageUrl(uri);\n link.download = filename;\n link.target = \"_blank\";\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\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]!./ImagesPreview.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]!./ImagesPreview.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useCallback, useContext, useEffect, useState } from \"react\";\nimport type { ActiveImages, FileInfo } from \"../interfaces\";\nimport styles from \"./ImagesPreview.module.css\";\nimport { WrappedIcon, WrappedIconButton } from \"../bricks\";\nimport { ICON_CLOSE, ICON_DOWNLOAD } from \"../constants\";\nimport { downloadFile } from \"./downloadFile\";\nimport { getImageUrl } from \"./getImageUrl\";\nimport { TaskContext } from \"../TaskContext\";\nimport { K, t } from \"./i18n\";\nimport floatingStyles from \"../FloatingButton.module.css\";\n\nexport interface ImagesPreviewProps {\n images: ActiveImages;\n}\n\nexport function ImagesPreview({ images: { files, file } }: ImagesPreviewProps) {\n const [currentFile, setCurrentFile] = useState<FileInfo>(file);\n const { setActiveImages } = useContext(TaskContext);\n\n useEffect(() => {\n setCurrentFile(file);\n }, [file]);\n\n const go = useCallback(\n (diff: number) => {\n const currentIndex = files.indexOf(currentFile);\n let newIndex = currentIndex + diff;\n if (newIndex < 0) {\n newIndex = files.length - 1;\n } else if (newIndex >= files.length) {\n newIndex = 0;\n }\n setCurrentFile(files[newIndex]);\n },\n [currentFile, files]\n );\n\n useEffect(() => {\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"ArrowLeft\") {\n go(-1);\n } else if (e.key === \"ArrowRight\") {\n go(1);\n } else {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n };\n\n document.addEventListener(\"keydown\", onKeyDown);\n return () => {\n document.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [go, setActiveImages]);\n\n return (\n <div className={styles.preview}>\n <div className={styles.header}>\n <WrappedIconButton\n icon={ICON_DOWNLOAD}\n onClick={() => {\n downloadFile(currentFile);\n }}\n >\n {t(K.DOWNLOAD)}\n </WrappedIconButton>\n </div>\n <div className={styles.body}>\n <div className={styles.aside}>\n <button\n className={floatingStyles[\"floating-button\"]}\n onClick={() => {\n go(-1);\n }}\n >\n <WrappedIcon lib=\"antd\" icon=\"left\" />\n </button>\n </div>\n <div className={styles.content}>\n <img src={getImageUrl(currentFile.uri!)} alt={currentFile.name} />\n </div>\n <div className={styles.aside}>\n <button\n className={floatingStyles[\"floating-button\"]}\n onClick={() => {\n go(1);\n }}\n >\n <WrappedIcon lib=\"antd\" icon=\"right\" />\n </button>\n </div>\n </div>\n <div className={styles.footer}>\n <ul className={styles.images}>\n {files.map((f, index) => {\n const isActive = f === currentFile;\n return (\n <li\n key={index}\n className={isActive ? styles.active : undefined}\n onClick={() => setCurrentFile(f)}\n >\n <img\n src={getImageUrl(f.uri!)}\n alt={f.name}\n fetchPriority=\"low\"\n />\n </li>\n );\n })}\n </ul>\n </div>\n <WrappedIconButton\n className={styles.close}\n icon={ICON_CLOSE}\n onClick={() => {\n setActiveImages(null);\n }}\n />\n </div>\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, `.node-feedback--qSAvjvCa{width:var(--cruise-canvas-node-width-medium);background:rgba(255,255,255,0.2);border-radius:12px;border:1px solid rgba(255,255,255,0.3);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:20px 28px}.heading--zbbPDsFk{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.title--l9cmJRhB{font-weight:500}.form-item--wtgYuM1v{font-size:12px;line-height:17px;color:rgba(0,0,0,0.88)}.form-item--wtgYuM1v.horizontal--zqc5U1Jh{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:1em}.form-item--wtgYuM1v.vertical--i26lXOiT{margin-top:16px}.form-item--wtgYuM1v.vertical--i26lXOiT label{display:block;color:rgba(0,0,0,0.45);margin-bottom:8px}.form-item--wtgYuM1v textarea{width:100%;background:none;border-radius:8px;border:1px solid rgba(0,0,0,0.15);padding:8px;color:#262626}.form-item--wtgYuM1v textarea:focus{outline:none;border-color:rgba(0,0,0,0.25)}.options--Cak4FPTk{display:flex;align-items:center}.radio--P5Vo_D45{position:relative;cursor:pointer}.radio--P5Vo_D45 input{width:0px;height:0px;position:absolute;-webkit-appearance:none;-moz-appearance:none;appearance:none}.radio--P5Vo_D45 span{display:flex;align-items:center;justify-content:center;width:64px;height:28px;border-radius:8px;background:none;border:1px solid rgba(0,0,0,0.15)}.radio--P5Vo_D45 input:checked + span{background:rgba(255,255,255,0.5);border:none}.radio--P5Vo_D45 input:not(:checked) + span:hover{background:rgba(255,255,255,0.3);border:none}.radio--P5Vo_D45 + .radio--P5Vo_D45{margin-left:8px}.submit--eCyA49Nq{display:flex;justify-content:end;margin-top:18px;gap:8px}.validate--krlXob4C .form-item--wtgYuM1v:has(input:invalid) .label--U8YsN4Mm{color:#f24c25}.submitted--XxktB9y5{background:#d0e7d6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:none;font-weight:500;color:#009929;padding:17px;text-align:center}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"node-feedback\": `node-feedback--qSAvjvCa`,\n\t\"heading\": `heading--zbbPDsFk`,\n\t\"title\": `title--l9cmJRhB`,\n\t\"form-item\": `form-item--wtgYuM1v`,\n\t\"horizontal\": `horizontal--zqc5U1Jh`,\n\t\"vertical\": `vertical--i26lXOiT`,\n\t\"options\": `options--Cak4FPTk`,\n\t\"radio\": `radio--P5Vo_D45`,\n\t\"submit\": `submit--eCyA49Nq`,\n\t\"validate\": `validate--krlXob4C`,\n\t\"label\": `label--U8YsN4Mm`,\n\t\"submitted\": `submitted--XxktB9y5`\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, `.heading--Mi2u66PA{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.title--t7OpwWbH{font-size:12px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;--shine-text-color:rgba(38,38,38,0.65);--shine-text-highlight-color:#dcdcdc}ai-portal\\\\.cruise-canvas .title--t7OpwWbH{text-indent:4px}ai-portal\\\\.cruise-canvas .heading--Mi2u66PA{margin-bottom:10px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"heading\": `heading--Mi2u66PA`,\n\t\"title\": `title--t7OpwWbH`\n};\nexport default ___CSS_LOADER_EXPORT___;\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]!./MarkdownPre.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]!./MarkdownPre.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport {\n CodeWrapper,\n type CodeWrapperProps,\n} from \"@next-bricks/presentational/code-wrapper\";\nimport styles from \"./MarkdownPre.module.css\";\n\nconst WrappedCodeWrapper = wrapBrick<CodeWrapper, CodeWrapperProps>(\n \"presentational.code-wrapper\"\n);\n\nexport type MarkdownComponentProps = JSX.IntrinsicElements[\"pre\"] & {\n node?: unknown;\n};\n\nexport function MarkdownPre({ node, ...props }: MarkdownComponentProps) {\n return (\n <WrappedCodeWrapper\n className={styles[\"code-wrapper\"]}\n preProps={props}\n showCopyButton={!!props.className?.includes(\"shiki\")}\n themeVariant=\"elevo\"\n />\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, `.code-wrapper--jieEbxla::part(pre){border:1px solid #ccd1de}.code-wrapper--jieEbxla::part(mermaid){border:none;background:none}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"code-wrapper\": `code-wrapper--jieEbxla`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import {\n ElevoApi_listElevoAiEmployees,\n type ElevoApi_ListElevoAiEmployeesResponseItem,\n} from \"@next-api-sdk/llm-sdk\";\n\nconst cache = new Map<\n string,\n Promise<ElevoApi_ListElevoAiEmployeesResponseItem | undefined>\n>();\n\nexport function fetchEmployee(\n aiEmployeeId: string\n): Promise<ElevoApi_ListElevoAiEmployeesResponseItem | undefined> {\n const cached = cache.get(aiEmployeeId);\n if (cached) {\n return cached;\n }\n const promise = doFetchEmployee(aiEmployeeId);\n cache.set(aiEmployeeId, promise);\n return promise;\n}\n\nasync function doFetchEmployee(aiEmployeeId: string) {\n const response = await ElevoApi_listElevoAiEmployees({\n employeeId: aiEmployeeId,\n } as any);\n const employee = response.list?.[0];\n return employee?.employeeId === aiEmployeeId ? employee : undefined;\n}\n\nexport function clearCache() {\n cache.clear();\n}\n","import React, { useCallback, useContext, useRef } from \"react\";\nimport {\n MarkdownComponent,\n type MarkdownComponentProps,\n} from \"@next-shared/markdown\";\nimport { CanvasContext } from \"../CanvasContext\";\nimport { MarkdownPre } from \"../../shared/MarkdownPre\";\n\nconst components: MarkdownComponentProps[\"components\"] = {\n pre: MarkdownPre,\n};\n\nconst shikiOptions: MarkdownComponentProps[\"shiki\"] = {\n theme: \"light-plus\",\n};\n\nexport interface EnhancedMarkdownProps extends MarkdownComponentProps {\n className?: string;\n}\n\nexport function EnhancedMarkdown({\n className,\n ...props\n}: EnhancedMarkdownProps) {\n const ref = useRef<HTMLDivElement>(null);\n const { setHoverOnScrollableContent } = useContext(CanvasContext);\n\n const handleMouseMove = useCallback(\n (e: React.MouseEvent) => {\n let found = false;\n for (const el of e.nativeEvent.composedPath()) {\n if (el === ref.current) {\n break;\n }\n if (\n (el instanceof HTMLTableElement || el instanceof HTMLPreElement) &&\n el.scrollWidth > el.clientWidth\n ) {\n found = true;\n break;\n }\n }\n setHoverOnScrollableContent(found);\n },\n [setHoverOnScrollableContent]\n );\n\n const handleMouseLeave = useCallback(() => {\n setHoverOnScrollableContent(false);\n }, [setHoverOnScrollableContent]);\n\n return (\n <div\n className={className}\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n >\n <MarkdownComponent\n {...props}\n components={components}\n shiki={shikiOptions}\n />\n </div>\n );\n}\n","import { wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Button, ButtonProps } from \"@next-bricks/basic/button\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport type {\n Drawer,\n DrawerProps,\n DrawerEvents,\n DrawerMapEvents,\n} from \"@next-bricks/containers/drawer\";\nimport type { showDialog as _showDialog } from \"@next-bricks/basic/data-providers/show-dialog/show-dialog\";\nimport type { copyToClipboard as _copyToClipboard } from \"@next-bricks/basic/data-providers/copy-to-clipboard\";\nimport {\n CodeBlock,\n CodeBlockProps,\n} from \"@next-bricks/presentational/code-block\";\nimport type { IconButton, IconButtonProps } from \"../icon-button\";\nimport type {\n ChatInput,\n ChatInputEvents,\n ChatInputMapEvents,\n ChatInputProps,\n} from \"../chat-input\";\nimport type { ShowCase, ShowCaseProps } from \"../show-case\";\nimport type {\n RunningFlow,\n RunningFlowEvents,\n RunningFlowMapEvents,\n RunningFlowProps,\n} from \"../running-flow\";\nimport type { BlankState, BlankStateProps } from \"../blank-state\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport const WrappedButton = wrapBrick<Button, ButtonProps>(\"eo-button\");\n\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nexport const WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\n\nexport const WrappedDrawer = wrapBrick<\n Drawer,\n DrawerProps & {\n keyboard?: boolean;\n themeVariant?: \"default\" | \"elevo\";\n },\n DrawerEvents,\n DrawerMapEvents\n>(\"eo-drawer\", {\n onClose: \"close\",\n onOpen: \"open\",\n});\n\nexport const WrappedIconButton = wrapBrick<IconButton, IconButtonProps>(\n \"ai-portal.icon-button\"\n);\n\nexport const WrappedChatInput = wrapBrick<\n ChatInput,\n ChatInputProps,\n ChatInputEvents,\n ChatInputMapEvents\n>(\"ai-portal.chat-input\", {\n onChatSubmit: \"chat.submit\",\n onTerminate: \"terminate\",\n});\n\nexport const WrappedShowCase = wrapBrick<ShowCase, ShowCaseProps>(\n \"ai-portal.show-case\"\n);\n\nexport const WrappedCodeBlock = wrapBrick<CodeBlock, CodeBlockProps>(\n \"eo-code-block\"\n);\n\nexport const WrappedBlankState = wrapBrick<BlankState, BlankStateProps>(\n \"ai-portal.blank-state\"\n);\n\nexport const WrappedRunningFlow = wrapBrick<\n RunningFlow,\n RunningFlowProps,\n RunningFlowEvents,\n RunningFlowMapEvents\n>(\"ai-portal.running-flow\", {\n onActiveChange: \"active.change\",\n});\n\nexport const showDialog =\n unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\n\nexport const copyToClipboard = unwrapProvider<typeof _copyToClipboard>(\n \"basic.copy-to-clipboard\"\n);\n","import { createContext, type Dispatch } from \"react\";\nimport type { SizeTuple } from \"./interfaces\";\n\nexport interface CanvasContextValue {\n onNodeResize: (id: string, size: SizeTuple | null) => void;\n setActiveNodeId: Dispatch<React.SetStateAction<string | null>>;\n hoverOnScrollableContent: boolean;\n setHoverOnScrollableContent: Dispatch<React.SetStateAction<boolean>>;\n supports?: Record<string, boolean>;\n}\n\nexport const CanvasContext = createContext<CanvasContextValue>({\n onNodeResize: () => {},\n setActiveNodeId: () => {},\n hoverOnScrollableContent: false,\n setHoverOnScrollableContent: () => {},\n});\n","import { useEffect, useRef } from \"react\";\nimport type { TaskContextValue } from \"./TaskContext\";\n\nexport function useHandleEscape({\n activeDetail,\n activeExpandedViewJobId,\n activeFile,\n activeImages,\n subActiveDetail,\n setActiveFile,\n setActiveImages,\n setActiveExpandedViewJobId,\n setActiveDetail,\n setSubActiveDetail,\n}: TaskContextValue) {\n const compositionRef = useRef(false);\n\n useEffect(() => {\n const onCompositionStart = () => {\n compositionRef.current = true;\n };\n const onCompositionEnd = () => {\n compositionRef.current = false;\n };\n document.addEventListener(\"compositionstart\", onCompositionStart);\n document.addEventListener(\"compositionend\", onCompositionEnd);\n return () => {\n document.removeEventListener(\"compositionstart\", onCompositionStart);\n document.removeEventListener(\"compositionend\", onCompositionEnd);\n };\n }, []);\n\n useEffect(() => {\n const onKeyDown = (e: KeyboardEvent) => {\n if (compositionRef.current) {\n // Ignore key events during composition\n return;\n }\n if (e.key === \"Escape\") {\n if (activeFile) {\n setActiveFile(null);\n } else if (activeImages) {\n setActiveImages(null);\n } else if (activeExpandedViewJobId) {\n setActiveExpandedViewJobId(null);\n } else if (subActiveDetail) {\n setSubActiveDetail(null);\n } else if (activeDetail) {\n setActiveDetail(null);\n }\n }\n };\n\n document.addEventListener(\"keydown\", onKeyDown);\n return () => {\n document.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [\n activeDetail,\n activeExpandedViewJobId,\n activeFile,\n activeImages,\n subActiveDetail,\n setActiveFile,\n setActiveImages,\n setActiveExpandedViewJobId,\n setActiveDetail,\n setSubActiveDetail,\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, `.floating-button--s8FIucxe{display:flex;align-items:center;justify-content:center;padding:0;background:#fff;box-shadow:0px 4px 8px 0px rgba(0,0,0,0.06);border:1px solid rgba(0,0,0,0.02);border-radius:999px;cursor:pointer}.floating-button--s8FIucxe:hover{box-shadow:0px 6px 12px 0px rgba(0,0,0,0.1);border-color:rgba(0,0,0,0.08)}.floating-button--s8FIucxe:focus{outline:none}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"floating-button\": `floating-button--s8FIucxe`\n};\nexport default ___CSS_LOADER_EXPORT___;\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]!./RequestHumanAction.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]!./RequestHumanAction.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React, { useContext, useState } from \"react\";\nimport styles from \"./RequestHumanAction.module.css\";\n// import { K, t } from \"../i18n.js\";\nimport { WrappedButton } from \"../bricks\";\nimport { TaskContext } from \"../TaskContext\";\nimport type { HumanAction } from \"../interfaces\";\nimport classNames from \"classnames\";\n\nexport function RequestHumanAction({\n action,\n ui,\n}: {\n action: HumanAction;\n ui?: \"canvas\" | \"chat\";\n}): JSX.Element | null {\n const { humanInput, replay } = useContext(TaskContext);\n const [disabled, setDisabled] = useState(false);\n\n if (action.type === \"select\") {\n return null;\n }\n\n return (\n <div\n className={classNames(styles[\"human-action\"], {\n [styles.canvas]: ui !== \"chat\",\n })}\n >\n <WrappedButton\n type=\"primary\"\n themeVariant=\"elevo\"\n shape={ui === \"chat\" ? undefined : \"round\"}\n disabled={disabled}\n onClick={() => {\n if (replay) {\n return;\n }\n humanInput(null, action.confirmText || \"确认\");\n setDisabled(true);\n }}\n >\n {action.confirmText || \"确认\"}\n </WrappedButton>\n </div>\n );\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]!./shared.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]!./shared.module.css\";\n export default content && content.locals ? content.locals : undefined;\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, `.preview--F7764WOO{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2;background:#fff;display:flex;flex-direction:column;align-items:center}.header--EVmpMZbh{width:100%;height:56px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 16px 0 28px;border:1px solid rgba(0,0,0,0.15)}.title--tp251JEp{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toolbar--aQsOJ8rv{display:flex;align-items:center;gap:8px}.body--KvpRjkhv{flex:1;width:100%;min-height:0;overflow-y:auto}.markdown--CmPqEPJK{margin:0 auto;padding:36px;max-width:800px}.loading--MekXOCp8{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:48px;color:var(--text-color-secondary)}.error--SkRwiReO{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);padding-bottom:20%;display:flex;flex-direction:column;align-items:center;color:#8c8c8c}.error--SkRwiReO eo-button{margin:0 14px}.embed--vYmQk5XW{display:block}.image--hQpy_1OM{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.image--hQpy_1OM img{max-width:100%;max-height:100%;object-fit:contain}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"preview\": `preview--F7764WOO`,\n\t\"header\": `header--EVmpMZbh`,\n\t\"title\": `title--tp251JEp`,\n\t\"toolbar\": `toolbar--aQsOJ8rv`,\n\t\"body\": `body--KvpRjkhv`,\n\t\"markdown\": `markdown--CmPqEPJK`,\n\t\"loading\": `loading--MekXOCp8`,\n\t\"error\": `error--SkRwiReO`,\n\t\"embed\": `embed--vYmQk5XW`,\n\t\"image\": `image--hQpy_1OM`\n};\nexport default ___CSS_LOADER_EXPORT___;\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]!./FilePreview.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]!./FilePreview.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useCallback, useContext, useEffect, useState } from \"react\";\nimport classNames from \"classnames\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport type { FileInfo } from \"../../shared/interfaces\";\nimport {\n WrappedIcon,\n WrappedButton,\n WrappedIconButton,\n} from \"../../shared/bricks\";\nimport styles from \"./FilePreview.module.css\";\nimport shareStyles from \"../../cruise-canvas/shared.module.css\";\nimport { EnhancedMarkdown } from \"../../cruise-canvas/EnhancedMarkdown/EnhancedMarkdown\";\nimport { K, locales, NS, t } from \"./i18n\";\nimport {\n ICON_CLOSE,\n ICON_DOWNLOAD,\n ICON_LOADING,\n} from \"../../shared/constants\";\nimport { getMimeTypeByFilename } from \"../../cruise-canvas/utils/file\";\nimport imageUnpreviewable from \"./unpreviewable.png\";\nimport { downloadFile } from \"./downloadFile\";\nimport { getImageUrl } from \"./getImageUrl\";\nimport toolbarStyles from \"../../cruise-canvas/toolbar.module.css\";\nimport { TaskContext } from \"../TaskContext\";\n\ninitializeI18n(NS, locales);\n\nexport interface FilePreviewProps {\n file: FileInfo;\n}\n\nexport function FilePreview({ file }: FilePreviewProps) {\n const { setActiveFile } = useContext(TaskContext);\n const { bytes, uri, mimeType, name } = file;\n const type = mimeType || getMimeTypeByFilename(name);\n const [status, setStatus] = useState<\"loading\" | \"loaded\" | \"error\">(\n \"loading\"\n );\n\n // For PDF, content is the object URL or data URL\n // For markdown, content is the content text\n const [content, setContent] = useState<string | undefined>();\n\n const isMarkdown = type === \"text/markdown\" || type === \"text/x-markdown\";\n const embeddable = type === \"application/pdf\";\n const isImage = type.startsWith(\"image/\");\n\n useEffect(() => {\n // When using `<embed>` to display PDF from a URL, which responses with\n // `Content-Disposition: attachment`, the PDF will be downloaded instead of\n // being displayed by the browser. So we need to fetch the file and create an object URL.\n setStatus(\"loading\");\n\n if (!isMarkdown && !embeddable && !isImage) {\n setStatus(\"error\");\n return;\n }\n\n if (bytes) {\n if (isMarkdown) {\n setContent(atob(bytes));\n } else {\n setContent(`data:application/pdf;base64,${bytes}`);\n }\n setStatus(\"loaded\");\n return;\n }\n\n if (uri) {\n let ignore = false;\n let revokeUrl: string | undefined;\n (async () => {\n try {\n const response = await fetch(getImageUrl(uri));\n if (!response.ok) {\n throw new Error(`Failed to fetch file: ${response.statusText}`);\n }\n let text: string;\n if (isMarkdown) {\n text = await response.text();\n } else {\n const blob = await response.blob();\n revokeUrl = text = URL.createObjectURL(blob);\n }\n if (ignore) {\n return;\n }\n setContent(text);\n setStatus(\"loaded\");\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Error fetching file:\", error);\n setStatus(\"error\");\n }\n })();\n return () => {\n ignore = true;\n if (revokeUrl) {\n URL.revokeObjectURL(revokeUrl);\n }\n };\n }\n }, [bytes, isImage, isMarkdown, embeddable, uri]);\n\n const download = useCallback(() => {\n downloadFile(file);\n }, [file]);\n\n return (\n <div className={styles.preview}>\n <div className={styles.header}>\n <div className={styles.title}>{file.name || t(K.UNTITLED)}</div>\n <div className={styles.toolbar}>\n <WrappedIconButton\n icon={ICON_DOWNLOAD}\n onClick={() => {\n download();\n }}\n />\n <div className={toolbarStyles.divider} />\n <WrappedIconButton\n icon={ICON_CLOSE}\n onClick={() => {\n setActiveFile(null);\n }}\n />\n </div>\n </div>\n <div className={styles.body}>\n {status === \"loading\" ? (\n <div className={styles.loading}>\n <WrappedIcon {...ICON_LOADING} />\n </div>\n ) : status === \"error\" ? (\n <div className={styles.error}>\n <img\n src={imageUnpreviewable}\n alt=\"Unpreviewable\"\n width={591}\n height={249}\n />\n <p>\n {t(K.FILE_PREVIEW_UNPREVIEWABLE_TIP_PREFIX)}\n <WrappedButton\n themeVariant=\"elevo\"\n type=\"primary\"\n onClick={download}\n >\n {t(K.DOWNLOAD)}\n </WrappedButton>\n {t(K.FILE_PREVIEW_UNPREVIEWABLE_TIP_SUFFIX)}\n </p>\n </div>\n ) : isImage ? (\n <div className={styles.image}>\n <img src={content} alt={name} />\n </div>\n ) : embeddable ? (\n <embed\n className={styles.embed}\n src={content}\n type={type}\n title={name}\n width=\"100%\"\n height=\"100%\"\n />\n ) : (\n <div className={classNames(styles.markdown, shareStyles.markdown)}>\n <EnhancedMarkdown content={content} />\n </div>\n )}\n </div>\n </div>\n );\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]!./ToolProgressLine.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]!./ToolProgressLine.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport styles from \"./ToolProgressLine.module.css\";\nimport { DataPart } from \"../../shared/interfaces\";\n\nexport interface ToolProgressLineProps {\n progress: DataPart;\n /**\n * 暂定失败肯定是最后一个\n */\n failed?: boolean;\n}\n\nexport function ToolProgressLine({\n progress,\n failed,\n}: ToolProgressLineProps): JSX.Element {\n const data = progress.data;\n\n return (\n <div\n className={classNames(styles[\"progress-line\"], {\n [styles[\"failed\"]]: failed,\n })}\n >\n <div className={classNames(styles.step)} key={data.progress}>\n <div className={styles.axis}>\n <div className={styles.line} />\n <div className={styles.dot} />\n </div>\n <div className={styles.progress}>\n <span className={styles.count}>{data.progress}</span>\n <span>/</span>\n <span className={styles.total}>{data.total}</span>\n </div>\n <div className={styles.description}>{data.message}</div>\n </div>\n </div>\n );\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]!./ToolCallStatus.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]!./ToolCallStatus.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import type { DataPart, Message } from \"../../shared/interfaces\";\n\nexport const getToolDataProgress = (\n toolCallMessages: Message[] | undefined\n): DataPart | undefined => {\n let progressPart: DataPart | undefined;\n toolCallMessages?.findLast((message) => {\n progressPart = message.parts?.findLast((part) => {\n return part.type === \"data\" && part.data?.type === \"progress\";\n }) as DataPart | undefined;\n return !!progressPart;\n });\n return progressPart;\n};\n","import React, { useCallback, useContext, useMemo } from \"react\";\nimport classNames from \"classnames\";\nimport moment from \"moment\";\nimport { isEqual } from \"lodash\";\nimport { humanizeTime, HumanizeTimeFormat } from \"@next-shared/datetime\";\nimport styles from \"./ToolCallStatus.module.css\";\nimport { WrappedIcon } from \"../../shared/bricks\";\nimport { TaskContext } from \"../../shared/TaskContext\";\nimport { ToolProgressLine } from \"../ToolProgressLine/ToolProgressLine\";\nimport { getToolDataProgress } from \"../utils/getToolDataProgress\";\nimport type { ActiveDetail, Job, JobState } from \"../../shared/interfaces\";\n\nexport interface NodeJobToolCallProps {\n job: Job;\n variant?: \"default\" | \"read-only\";\n}\n\nexport function ToolCallStatus({\n job,\n variant,\n}: NodeJobToolCallProps): JSX.Element {\n const { setActiveDetail, separateInstructions } = useContext(TaskContext);\n const toolCall = job.toolCall!;\n const toolTitle = toolCall.annotations?.title || toolCall.name;\n const jobTitle = separateInstructions\n ? toolTitle\n : job.instruction || toolTitle;\n const [progress, hasToolCallResponse] = useMemo(() => {\n const toolCallMessages = job.messages?.filter((msg) => msg.role === \"tool\");\n return [\n getToolDataProgress(toolCallMessages),\n toolCallMessages?.some((msg) =>\n msg.parts.some((part) => part.type === \"text\")\n ),\n ];\n }, [job.messages]);\n\n const readOnly = useMemo(() => {\n return variant === \"read-only\";\n }, [variant]);\n\n const handleClick = useCallback(() => {\n if (variant === \"read-only\") {\n return;\n }\n const newActiveDetail: ActiveDetail = {\n type: \"job\",\n id: job.id,\n };\n setActiveDetail((prev) =>\n isEqual(prev, newActiveDetail) ? prev : newActiveDetail\n );\n }, [job.id, variant, setActiveDetail]);\n\n const toolState =\n [\"working\", \"input-required\"].includes(job.state) && hasToolCallResponse\n ? \"completed\"\n : job.state;\n\n const failed = job.isError || toolState === \"failed\";\n\n return (\n <div\n className={classNames(styles[\"tool-call\"], {\n [styles.failed]: failed,\n [styles[\"read-only\"]]: readOnly,\n })}\n onClick={handleClick}\n >\n <div className={classNames(styles.status)}>\n {job.isError || toolState === \"failed\" ? (\n <WrappedIcon\n className={styles.icon}\n lib=\"fa\"\n prefix=\"fas\"\n icon=\"xmark\"\n />\n ) : toolState === \"completed\" ? (\n <WrappedIcon\n className={styles.icon}\n lib=\"fa\"\n prefix=\"fas\"\n icon=\"check\"\n />\n ) : toolState === \"working\" ? (\n <WrappedIcon\n className={styles.icon}\n lib=\"antd\"\n theme=\"outlined\"\n icon=\"loading-3-quarters\"\n spinning\n />\n ) : toolState === \"input-required\" ? (\n <WrappedIcon\n className={styles.icon}\n lib=\"fa\"\n prefix=\"far\"\n icon=\"circle-user\"\n />\n ) : toolState === \"canceled\" ||\n toolState === (\"terminated\" as JobState) ? (\n <WrappedIcon\n className={styles.icon}\n lib=\"fa\"\n prefix=\"far\"\n icon=\"circle-stop\"\n />\n ) : (\n <WrappedIcon\n className={styles.icon}\n lib=\"fa\"\n prefix=\"far\"\n icon=\"clock\"\n />\n )}\n <span className={styles.name}>\n {variant === \"read-only\" ? toolTitle : jobTitle}\n </span>\n {job.startTime ? (\n <span className={styles.timing}>\n {`${humanizeTime(job.startTime * 1000, HumanizeTimeFormat.accurate)}${\n job.endTime\n ? ` (${moment.duration(job.endTime * 1000 - job.startTime * 1000).humanize({ ss: -1 })})`\n : \"\"\n }`}\n </span>\n ) : null}\n </div>\n {!!progress && !readOnly && (\n <ToolProgressLine progress={progress} failed={failed} />\n )}\n </div>\n );\n}\n","import type { GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport type { ConversationState, JobState, TaskState } from \"./interfaces.js\";\n\nexport const DONE_STATES = [\n \"completed\",\n \"failed\",\n \"canceled\",\n \"terminated\",\n] as (ConversationState | TaskState | JobState | undefined)[];\n\nexport const GENERAL_DONE_STATES = [...DONE_STATES, \"paused\"] as (\n | ConversationState\n | TaskState\n | JobState\n | undefined\n)[];\n\nexport const NON_WORKING_STATES = [...GENERAL_DONE_STATES, \"input-required\"];\n\nexport const ICON_CLOSE: GeneralIconProps = {\n lib: \"lucide\",\n icon: \"x\",\n};\n\nexport const ICON_LOADING: GeneralIconProps = {\n lib: \"antd\",\n icon: \"loading-3-quarters\",\n spinning: true,\n};\n\nexport const ICON_CANVAS: GeneralIconProps = {\n lib: \"lucide\",\n icon: \"network\",\n} as GeneralIconProps;\n\nexport const ICON_CHAT: GeneralIconProps = {\n lib: \"lucide\",\n icon: \"messages-square\",\n} as GeneralIconProps;\n\nexport const ICON_FEEDBACK: GeneralIconProps = {\n lib: \"lucide\",\n icon: \"message-square\",\n};\n\nexport const ICON_EXTERNAL_LINK: GeneralIconProps = {\n lib: \"lucide\",\n icon: \"external-link\",\n};\n\nexport const ICON_UP: GeneralIconProps = {\n lib: \"fa\",\n icon: \"angle-up\",\n};\n\nexport const ICON_DOWNLOAD: GeneralIconProps = {\n lib: \"antd\",\n icon: \"download\",\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, `.tool-call--aTh276av{--failed-color:#f24c25;--border-color:#e2e2ec;--status-border-color:rgba(226,226,236,0.8);font-size:13px;color:#595959;border-radius:10px;border:1px solid var(--border-color);background:#e6e9f3}.tool-call--aTh276av:not(.read-only--xWUswNds):hover{background:#e4e9fb;border:1px solid #b8c1ff}.tool-call--aTh276av:not(:last-child){margin-bottom:10px}.tool-call--aTh276av:not(.read-only--xWUswNds){cursor:pointer}.tool-call--aTh276av .status--V5ZXGYOG:not(:last-child){border-bottom:1px solid var(--status-border-color)}.read-only--xWUswNds{font-size:14px;padding:4px}.failed--sz70SlSa{background:#fef5f3}.failed--sz70SlSa:not(.read-only--xWUswNds):hover{background:#fee7e1;border:1px solid #ffc3b5}.failed--sz70SlSa .status--V5ZXGYOG:not(:last-child){border-bottom:1px solid rgba(253,225,218,0.8)}.status--V5ZXGYOG{height:24px;display:flex;align-items:center;padding:0 12px;color:#262626}.timing--GjuZkMuV{display:none;color:#8c8c8c}.read-only--xWUswNds .timing--GjuZkMuV,\n[class^=\"node-job--\"]:hover .timing--GjuZkMuV,\n.status--V5ZXGYOG:hover .timing--GjuZkMuV{display:block}.icon--LTp5Jjna{margin-right:8px;color:#8c8c8c}.failed--sz70SlSa .icon--LTp5Jjna{color:var(--failed-color)}.name--FwiqyIlQ{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"tool-call\": `tool-call--aTh276av`,\n\t\"read-only\": `read-only--xWUswNds`,\n\t\"status\": `status--V5ZXGYOG`,\n\t\"failed\": `failed--sz70SlSa`,\n\t\"timing\": `timing--GjuZkMuV`,\n\t\"icon\": `icon--LTp5Jjna`,\n\t\"name\": `name--FwiqyIlQ`\n};\nexport default ___CSS_LOADER_EXPORT___;\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]!./CmdbInstanceDetail.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]!./CmdbInstanceDetail.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { orderBy, uniqueId, upperFirst } from \"lodash\";\nimport { unstable_createRoot } from \"@next-core/runtime\";\nimport {\n // UseBrickConf,\n type BrickConf,\n type BrickEventHandler,\n type ContextConf,\n type UseSingleBrickConf,\n} from \"@next-core/types\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport type { DescriptionItem } from \"@next-bricks/presentational/descriptions\";\nimport type { CmdbInstanceDetailData } from \"../interfaces\";\n// import { getPreGeneratedAttrViews } from \"../utils/converters/getPreGeneratedAttrViews\";\n// import { convertToStoryboard } from \"../utils/converters/raw-data-generate/convert\";\nimport type { JSONSchema, JSONSchemaObject } from \"../json-schema\";\nimport styles from \"./CmdbInstanceDetail.module.css\";\nimport { createPortal } from \"../utils/createPortal\";\nimport { WrappedIcon } from \"../../shared/bricks\";\nimport { ICON_LOADING } from \"../../shared/constants\";\n\n/**\n * 如果属性数量超过阈值,则使用两列布局\n */\nconst LIST_SPLIT_THRESHOLD = 6;\n\n/**\n * 如果条目数量超过阈值,则使用表格显示\n */\nconst SHOW_AS_TABLE_THRESHOLD = 2;\n\nconst BUILTIN_FN_STRINGIFY = \"__builtin_fn_stringify\";\n\nexport function CmdbInstanceDetail({\n objectId,\n detail,\n outputSchema,\n}: CmdbInstanceDetailData) {\n const rootId = useMemo(() => uniqueId(), []);\n const ref = useRef<HTMLDivElement>(null);\n const rootRef = useRef<Awaited<\n ReturnType<typeof unstable_createRoot>\n > | null>(null);\n\n useEffect(() => {\n const container = ref.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\n return () => {\n root.unmount();\n portal.remove();\n rootRef.current = null;\n };\n }, [rootId]);\n\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n let ignore = false;\n (async () => {\n setLoading(true);\n try {\n const { bricks, context } = await convertCmdbInstanceDetail(\n detail,\n objectId,\n outputSchema,\n rootId\n );\n if (ignore) {\n return;\n }\n await rootRef.current?.render(bricks, { context });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to render view:\", error);\n }\n if (!ignore) {\n setLoading(false);\n }\n })();\n\n return () => {\n ignore = true;\n };\n }, [detail, objectId, outputSchema, rootId]);\n\n return (\n <div className={styles.container}>\n {loading && <WrappedIcon className={styles.loading} {...ICON_LOADING} />}\n <div data-root-id={rootId} ref={ref} />\n </div>\n );\n}\n\nfunction isComplexType(type: JSONSchema[\"type\"] | undefined): boolean {\n return !type || type === \"object\" || type === \"array\";\n}\n\nfunction isEmptyValue(detail: Record<string, any>, key: string) {\n return (\n !hasOwnProperty(detail, key) ||\n detail[key] == null ||\n detail[key] === \"\" ||\n (Array.isArray(detail[key]) && detail[key].length === 0)\n );\n}\n\nasync function convertCmdbInstanceDetail(\n detail: Record<string, any>,\n objectId: string,\n outputSchema: JSONSchema | string | undefined,\n rootId: string\n): Promise<{ bricks: BrickConf[]; context: ContextConf[] }> {\n // const attrViews = await getPreGeneratedAttrViews(objectId, 1);\n\n let schema: JSONSchema | undefined;\n if (typeof outputSchema === \"string\") {\n try {\n schema = JSON.parse(outputSchema) as JSONSchema;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to parse outputSchema as JSON\", e);\n }\n } else {\n schema = outputSchema;\n }\n\n let list: DescriptionItem[];\n const modals: BrickConf[] = [];\n const context: ContextConf[] = [\n {\n name: BUILTIN_FN_STRINGIFY,\n value: builtinFnStringify,\n },\n ];\n\n function convertArrayOfObjects(\n valueAccessor: string,\n schema: JSONSchemaObject,\n label: string,\n idPrefix: string,\n needContext?: boolean\n ): UseSingleBrickConf {\n const props = getOrderedProps(schema);\n const key = props.length > 0 ? props[0][0] : null;\n const modalId = normalizeIdentifier(`modal__${idPrefix}`);\n const contextId = normalizeIdentifier(`context__${idPrefix}`);\n if (needContext) {\n context.push({\n name: contextId,\n });\n }\n\n const modal: BrickConf = {\n brick: \"eo-modal\",\n portal: true,\n properties: {\n dataset: {\n modalId,\n },\n width: \"800px\",\n themeVariant: \"elevo\",\n modalTitle: label,\n hideCancelButton: true,\n maskClosable: true,\n keyboard: true,\n },\n };\n\n modals.push(modal);\n\n const columns: {\n key: string;\n dataIndex: string;\n title: string;\n useChildren?: string;\n }[] = [];\n const tableChildren: UseSingleBrickConf[] = [];\n\n for (const [k, v] of props) {\n let useChildren: string | undefined;\n if (v.type === \"array\" && v.items.type === \"object\") {\n useChildren = `[${k}]`;\n tableChildren.push({\n ...convertArrayOfObjects(\n \"DATA.cellData\",\n v.items,\n v.description || upperFirst(k),\n `${idPrefix}__${k}`,\n true\n ),\n slot: useChildren,\n });\n } else if (v.type === \"object\") {\n useChildren = `[${k}]`;\n tableChildren.push({\n ...convertObject(\n \"DATA.cellData\",\n v,\n v.description || upperFirst(k),\n `${idPrefix}__${k}`,\n true\n ),\n slot: useChildren,\n });\n }\n\n columns.push({\n key: k,\n dataIndex: k,\n title: v.description || upperFirst(k),\n useChildren,\n });\n }\n\n modal.children = [\n {\n brick: \"eo-next-table\",\n properties: {\n dataSource: needContext\n ? `<%= { list: CTX.${contextId} } %>`\n : `<% { list: (${valueAccessor}) } %>`,\n columns,\n themeVariant: \"elevo\",\n pagination: false,\n bordered: true,\n },\n children: tableChildren,\n },\n ];\n\n const clickHandler: BrickEventHandler[] = [\n ...((needContext\n ? [\n {\n action: \"context.replace\",\n args: [\n {\n name: contextId,\n value: `<% ${valueAccessor} %>`,\n },\n ],\n },\n ]\n : []) as BrickEventHandler[]),\n {\n target: `[data-root-id=\"${rootId}\"] [data-modal-id=\"${modalId}\"]`,\n method: \"open\",\n },\n ];\n\n return {\n brick: \"span\",\n if: `<% !!(${valueAccessor}) %>`,\n properties: {\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"0.5em\",\n },\n },\n children: [\n {\n brick: \":forEach\",\n dataSource: `<% (${valueAccessor}).slice(0, ${SHOW_AS_TABLE_THRESHOLD}) %>`,\n children: [\n {\n brick: \"eo-tag\",\n properties: {\n textContent: `<% CTX.${BUILTIN_FN_STRINGIFY}(ITEM, ${JSON.stringify(key)}, ${JSON.stringify(props[0]?.[1].type)}) %>`,\n outline: true,\n style: {\n cursor: \"pointer\",\n },\n },\n events: {\n click: clickHandler,\n },\n },\n ],\n },\n {\n brick: \"eo-link\",\n if: `<% (${valueAccessor}).length > ${SHOW_AS_TABLE_THRESHOLD} %>`,\n properties: {\n textContent: `<% \\`+\\${(${valueAccessor}).length - ${SHOW_AS_TABLE_THRESHOLD}}\\` %>`,\n },\n events: {\n click: clickHandler,\n },\n },\n ],\n };\n }\n\n function convertObject(\n valueAccessor: string,\n schema: JSONSchemaObject,\n label: string,\n idPrefix: string,\n needContext?: boolean\n ): UseSingleBrickConf {\n const props = getOrderedProps(schema);\n const key = props.length > 0 ? props[0][0] : null;\n const modalId = normalizeIdentifier(`modal__${idPrefix}`);\n const contextId = normalizeIdentifier(`context__${idPrefix}`);\n if (needContext) {\n context.push({\n name: contextId,\n });\n }\n\n modals.push({\n brick: \"eo-modal\",\n portal: true,\n properties: {\n dataset: {\n modalId,\n },\n themeVariant: \"elevo\",\n modalTitle: label,\n hideCancelButton: true,\n maskClosable: true,\n keyboard: true,\n },\n children: [\n {\n brick: \"eo-descriptions\",\n properties: {\n themeVariant: \"elevo\",\n column: 1,\n dataSource: needContext\n ? `<%= CTX.${contextId} %>`\n : `<% ${valueAccessor} %> `,\n list: props.map(([k, v]) => ({\n label: v.description || upperFirst(k),\n field: k,\n })),\n },\n },\n ],\n });\n\n return {\n brick: \"span\",\n if: `<% !!(${valueAccessor}) %>`,\n properties: {\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"0.5em\",\n },\n },\n children: [\n {\n brick: \"eo-tag\",\n properties: {\n textContent: `<% CTX.${BUILTIN_FN_STRINGIFY}(${valueAccessor}, ${JSON.stringify(key)}, ${JSON.stringify(props[0]?.[1].type)}) %>`,\n outline: true,\n style: {\n cursor: \"pointer\",\n },\n },\n events: {\n click: [\n ...((needContext\n ? [\n {\n action: \"context.replace\",\n args: [\n {\n name: contextId,\n value: `<% ${valueAccessor} %>`,\n },\n ],\n },\n ]\n : []) as BrickEventHandler[]),\n {\n target: `[data-root-id=\"${rootId}\"] [data-modal-id=\"${modalId}\"]`,\n method: \"open\",\n },\n ],\n },\n },\n ],\n };\n }\n\n if (schema?.type === \"object\") {\n const entries = Object.entries<JSONSchema>(schema.properties);\n list = entries.map<DescriptionItem>(([key, def]) => {\n const { description, type } = def;\n const label = description || upperFirst(key);\n\n if (isEmptyValue(detail, key)) {\n return {\n label,\n text: \"\",\n };\n }\n\n if (type === \"array\" && Array.isArray(detail[key])) {\n const { items } = def;\n if (items?.type === \"object\") {\n const contextName = normalizeIdentifier(`context__${key}`);\n context.push({\n name: contextName,\n value: detail[key],\n });\n\n return {\n label,\n useBrick: convertArrayOfObjects(\n `CTX.${contextName}`,\n items,\n label,\n key\n ),\n };\n }\n\n if (!isComplexType(items?.type)) {\n return {\n label,\n text: detail[key].join(\", \"),\n };\n }\n }\n\n if (type === \"object\" && isObject(detail[key])) {\n const contextName = normalizeIdentifier(`context__${key}`);\n context.push({\n name: contextName,\n value: detail[key],\n });\n\n return {\n label,\n useBrick: convertObject(`CTX.${contextName}`, def, label, key),\n };\n }\n\n if (isComplexType(type)) {\n return {\n label,\n text: JSON.stringify(detail[key], null, 2),\n };\n }\n\n // const candidate = attrViews?.get(key);\n // if (candidate) {\n // const brick = convertToStoryboard(candidate, key, {\n // ignoreStyle: true,\n // });\n // if (brick) {\n // return {\n // label,\n // useBrick: brick as UseBrickConf,\n // };\n // }\n // }\n\n return {\n label,\n field: key,\n };\n });\n } else {\n list = Object.keys(detail).map((key) => ({\n label: upperFirst(key),\n field: key,\n }));\n }\n\n return {\n bricks: [\n {\n brick: \"eo-descriptions\",\n properties: {\n themeVariant: \"elevo\",\n column: list.length > LIST_SPLIT_THRESHOLD ? 2 : 1,\n dataSource: detail,\n list,\n },\n },\n ...modals,\n ],\n context,\n };\n}\n\nfunction normalizeIdentifier(identifier: string): string {\n return identifier.replace(/[^a-zA-Z0-9_]+/g, \"_\");\n}\n\nfunction builtinFnStringify(\n value: Record<string, unknown>,\n key: string | null,\n type: JSONSchema[\"type\"] | undefined\n): string {\n if (key === null || isEmptyValue(value, key)) {\n return \"\";\n }\n const v = value[key];\n if (isComplexType(type) && isObject(v)) {\n return JSON.stringify(v, null, 2);\n }\n return String(v);\n}\n\nfunction getOrderedProps(schema: JSONSchemaObject) {\n const props = Object.entries(schema.properties);\n if (!schema.required?.length) {\n return props;\n }\n const propKeys = Object.keys(schema.properties);\n return orderBy(\n props,\n [\n ([k]) => {\n const requiredIndex = schema.required!.indexOf(k);\n if (requiredIndex === -1) {\n return schema.required!.length + propKeys.indexOf(k);\n }\n return requiredIndex;\n },\n ],\n [\"asc\"]\n );\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]!./FileList.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]!./FileList.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useContext, useMemo, useState } from \"react\";\nimport classNames from \"classnames\";\nimport type { FileInfo } from \"../interfaces\";\nimport styles from \"./FileList.module.css\";\nimport { K, t } from \"./i18n\";\nimport {\n formatFileSize,\n getFileTypeAndIcon,\n} from \"../../cruise-canvas/utils/file\";\nimport { getImageUrl } from \"../FilePreview/getImageUrl\";\nimport { TaskContext } from \"../TaskContext\";\nimport { WrappedIcon } from \"../bricks\";\nimport { ICON_UP } from \"../constants\";\n\nexport interface FileListProps {\n files: FileInfo[];\n large?: boolean;\n ui?: \"canvas\" | \"chat\";\n}\n\nexport function FileList({ files, large, ui }: FileListProps) {\n const { setActiveFile, setActiveImages } = useContext(TaskContext);\n\n const filesWithDisplayInfo = useMemo(() => {\n return files.map((file) => {\n const [displayType, icon] = getFileTypeAndIcon(file.mimeType, file.name);\n return {\n file,\n displayType,\n icon,\n };\n });\n }, [files]);\n\n const imageFiles = filesWithDisplayInfo\n .filter((file) => file.displayType === \"Image\" && file.file.uri)\n .map((f) => f.file);\n const allImages = imageFiles.length === files.length;\n // 超出数量,多余的收起来\n const limit = allImages ? 8 : 6;\n const exceeded = files.length > limit;\n const [expanded, setExpanded] = useState(false);\n const filteredList = expanded\n ? filesWithDisplayInfo\n : filesWithDisplayInfo.slice(0, limit);\n\n return (\n <>\n <ul\n className={classNames(styles.files, {\n [styles.large]: large,\n [styles.images]: allImages,\n [styles.single]: filesWithDisplayInfo.length === 1,\n [styles.chat]: ui === \"chat\",\n })}\n >\n {filteredList.map(({ file, displayType, icon }, index) => {\n return (\n <li key={index}>\n <a\n className={allImages ? styles.image : styles.file}\n onClick={() => {\n if (displayType === \"Image\" && file.uri) {\n setActiveImages({\n files: imageFiles,\n file,\n });\n } else {\n setActiveFile(file);\n }\n }}\n >\n {allImages ? (\n <>\n <img src={getImageUrl(file.uri!)} fetchPriority=\"low\" />\n {exceeded && index === limit - 1 && (\n <>\n <div className={styles.mask} />\n <div className={styles.overlay}>\n {`+${files.length - limit + 1}`}\n </div>\n </>\n )}\n </>\n ) : (\n <>\n <img\n className={styles.icon}\n src={icon}\n width={26}\n height={32}\n />\n <div className={styles.content}>\n <div className={styles.name}>\n {file.name || t(K.UNTITLED)}\n </div>\n <div className={styles.metadata}>\n {`${displayType}${file.size ? ` · ${formatFileSize(file.size)}` : \"\"}`}\n </div>\n </div>\n </>\n )}\n </a>\n </li>\n );\n })}\n </ul>\n {exceeded && !allImages && (\n <button\n className={classNames(styles.expand, {\n [styles.collapsed]: !expanded,\n })}\n onClick={() => setExpanded((prev) => !prev)}\n >\n <WrappedIcon {...ICON_UP} />\n {expanded ? t(K.COLLAPSE) : t(K.SHOW_ALL_FILES)}\n </button>\n )}\n </>\n );\n}\n","export interface GeneralNode {\n id: string;\n upstream?: string[];\n parent?: string;\n hidden?: boolean;\n}\n\nexport function getOrderedNodes<T extends GeneralNode>(nodes: T[]) {\n const map = new Map<string, T>();\n const downstreamMap = new Map<string, string[]>();\n const roots: string[] = [];\n const rootChildren: string[] = [];\n const childMap: Map<string, string> = new Map();\n\n // Ignore sub nodes\n for (const node of nodes) {\n map.set(node.id, node);\n if (node.parent) {\n childMap.set(node.parent, node.id);\n } else {\n rootChildren.push(node.id);\n }\n }\n\n // Setup downstream relations\n for (const node of nodes) {\n for (const up of node.upstream ?? []) {\n let downstream = downstreamMap.get(up);\n if (!downstream) {\n downstreamMap.set(up, (downstream = []));\n }\n downstream.push(node.id);\n }\n\n if (\n !node.parent &&\n !node.upstream?.length /* &&\n (showHiddenNodes || !node.hidden) */\n ) {\n roots.push(node.id);\n }\n }\n\n // Get BFS order of nodes\n const list: string[] = [];\n const visitedNodes = new Set<string>();\n const queue: string[] = [...roots];\n const leaves: string[] = [];\n while (queue.length > 0) {\n const id = queue.shift()!;\n if (visitedNodes.has(id)) {\n continue;\n }\n visitedNodes.add(id);\n list.push(id);\n const downstream = downstreamMap.get(id);\n if (downstream?.length) {\n queue.push(...downstream);\n } else {\n leaves.push(id);\n }\n }\n\n return { list, map, roots, leaves, childMap, downstreamMap };\n}\n","import type { MessageChunk } from \"../chat-stream/interfaces\";\nimport type {\n Task,\n ServiceFlowRun,\n ActivityWithFlow,\n ConversationError,\n Job,\n} from \"../shared/interfaces\";\nimport { getTaskTree, type TaskTreeNode } from \"./getTaskTree\";\n\nexport function getFlatChunks(\n tasks: Task[],\n errors: ConversationError[],\n flowMap?: Map<string, ServiceFlowRun>,\n activityMap?: Map<string, ActivityWithFlow>,\n skipActivitySubTasks?: boolean\n) {\n const taskTree = getTaskTree(tasks);\n const chunks: MessageChunk[] = [];\n const jobMap = new Map<string, Job>();\n\n const collectChunks = (taskNode: TaskTreeNode, level: number) => {\n const flow = flowMap?.get(taskNode.task.id);\n\n const activityWithFlow = activityMap?.get(taskNode.task.id);\n if (activityWithFlow) {\n chunks.push({\n type: \"activity\",\n activity: activityWithFlow.activity,\n flow: activityWithFlow.flow,\n task: taskNode.task,\n });\n }\n\n const shouldSkip = activityWithFlow && skipActivitySubTasks;\n\n for (const { job, subTask } of taskNode.children) {\n if (shouldSkip) {\n if (\n (job.state === \"completed\" &&\n job.messages?.length &&\n job.messages.every((msg) => msg.role === \"user\")) ||\n job.hil\n ) {\n chunks.push({\n type: \"job\",\n job,\n level,\n fromSkippedSubTask: true,\n });\n }\n continue;\n }\n\n if (job.type === \"serviceFlow\") {\n if (flow) {\n chunks.push({\n type: \"flow\",\n flow,\n task: taskNode.task,\n });\n }\n } else if (subTask) {\n collectChunks(subTask, level + 1);\n } else {\n chunks.push({\n type: \"job\",\n job,\n level,\n });\n }\n }\n\n const taskErrors = errors.filter(\n (error) => error.taskId === taskNode.task.id && error.error\n );\n for (const error of taskErrors) {\n chunks.push({\n type: \"error\",\n error: error.error!,\n });\n }\n };\n\n const collectJobs = (taskNode: TaskTreeNode) => {\n for (const { job, subTask } of taskNode.children) {\n jobMap.set(job.id, job);\n if (subTask) {\n collectJobs(subTask);\n }\n }\n };\n\n // Get flattened jobs\n for (const taskNode of taskTree) {\n collectChunks(taskNode, 0);\n collectJobs(taskNode);\n }\n\n for (const error of errors) {\n if (!error.taskId && error.error) {\n chunks.push({\n type: \"error\",\n error: error.error,\n });\n }\n }\n\n return { chunks, jobMap };\n}\n","import type { Task, Job } from \"../shared/interfaces\";\nimport { getOrderedNodes } from \"./getOrderedNodes\";\n\nexport interface TaskTreeNode {\n task: Task;\n children: JobTreeNode[];\n}\n\nexport interface JobTreeNode {\n job: Job;\n subTask?: TaskTreeNode;\n}\n\nexport function getTaskTree(tasks: Task[]): TaskTreeNode[] {\n const { list: taskIds, map: taskMap, childMap } = getOrderedNodes(tasks);\n\n const processedTaskMap = new Map(\n [...taskMap.entries()].map(([taskId, task]) => {\n return [taskId, getOrderedNodes(task.jobs)];\n })\n );\n\n const buildTaskTreeNode = (taskId: string): TaskTreeNode => {\n const task = taskMap.get(taskId)!;\n const processedTask = processedTaskMap.get(taskId)!;\n const { list: jobIds, map: jobMap } = processedTask;\n\n const children: JobTreeNode[] = jobIds.map((jobId) => {\n const job = jobMap.get(jobId)!;\n const subTaskId = childMap.get(job.id);\n if (subTaskId) {\n return {\n job,\n subTask: buildTaskTreeNode(subTaskId),\n };\n }\n return { job };\n });\n\n return {\n task,\n children,\n };\n };\n\n return taskIds.map((taskId) => buildTaskTreeNode(taskId));\n}\n","// istanbul ignore file\n\n/*\nnpx shiki-codegen \\\n --langs json,javascript,typescript,html,html-derivative,xml,css,markdown,mermaid,jsx,tsx,shellscript,python,go,sql \\\n --themes light-plus,dark-plus \\\n --engine oniguruma \\\n ./shared/shiki/src/bundle.ts\n*/\n\nimport lightPlus from \"@shikijs/themes/light-plus\";\nimport darkPlus from \"@shikijs/themes/dark-plus\";\n\n/* Generate by @shikijs/codegen */\nimport type {\n DynamicImportLanguageRegistration,\n HighlighterGeneric,\n ThemeInput,\n} from \"@shikijs/types\";\nimport {\n createSingletonShorthands,\n createdBundledHighlighter,\n} from \"@shikijs/core\";\nimport { createOnigurumaEngine } from \"@shikijs/engine-oniguruma\";\n\ntype BundledLanguage =\n | \"json\"\n | \"javascript\"\n | \"js\"\n | \"typescript\"\n | \"ts\"\n | \"html\"\n | \"html-derivative\"\n | \"xml\"\n | \"css\"\n | \"markdown\"\n | \"md\"\n | \"mermaid\"\n | \"mmd\"\n | \"jsx\"\n | \"tsx\"\n | \"shellscript\"\n | \"bash\"\n | \"sh\"\n | \"shell\"\n | \"zsh\"\n | \"python\"\n | \"py\"\n | \"go\"\n | \"sql\";\ntype BundledTheme = \"light-plus\" | \"dark-plus\";\ntype Highlighter = HighlighterGeneric<BundledLanguage, BundledTheme>;\n\nconst bundledLanguages = {\n json: () => import(\"@shikijs/langs/json\"),\n javascript: () => import(\"@shikijs/langs/javascript\"),\n js: () => import(\"@shikijs/langs/javascript\"),\n typescript: () => import(\"@shikijs/langs/typescript\"),\n ts: () => import(\"@shikijs/langs/typescript\"),\n html: () => import(\"@shikijs/langs/html\"),\n \"html-derivative\": () => import(\"@shikijs/langs/html-derivative\"),\n xml: () => import(\"@shikijs/langs/xml\"),\n css: () => import(\"@shikijs/langs/css\"),\n markdown: () => import(\"@shikijs/langs/markdown\"),\n md: () => import(\"@shikijs/langs/markdown\"),\n mermaid: () => import(\"@shikijs/langs/mermaid\"),\n mmd: () => import(\"@shikijs/langs/mermaid\"),\n jsx: () => import(\"@shikijs/langs/jsx\"),\n tsx: () => import(\"@shikijs/langs/tsx\"),\n shellscript: () => import(\"@shikijs/langs/shellscript\"),\n bash: () => import(\"@shikijs/langs/shellscript\"),\n sh: () => import(\"@shikijs/langs/shellscript\"),\n shell: () => import(\"@shikijs/langs/shellscript\"),\n zsh: () => import(\"@shikijs/langs/shellscript\"),\n python: () => import(\"@shikijs/langs/python\"),\n py: () => import(\"@shikijs/langs/python\"),\n go: () => import(\"@shikijs/langs/go\"),\n sql: () => import(\"@shikijs/langs/sql\"),\n} as Record<BundledLanguage, DynamicImportLanguageRegistration>;\n\nconst bundledThemes = {\n \"light-plus\": lightPlus,\n \"dark-plus\": darkPlus,\n} as Record<BundledTheme, ThemeInput>;\n\nconst createHighlighter = /* @__PURE__ */ createdBundledHighlighter<\n BundledLanguage,\n BundledTheme\n>({\n langs: bundledLanguages,\n themes: bundledThemes,\n engine: () => createOnigurumaEngine(import(\"shiki/wasm\")),\n});\n\nconst {\n codeToHtml,\n codeToHast,\n codeToTokensBase,\n codeToTokens,\n codeToTokensWithThemes,\n getSingletonHighlighter,\n getLastGrammarState,\n} = /* @__PURE__ */ createSingletonShorthands<BundledLanguage, BundledTheme>(\n createHighlighter,\n {\n guessEmbeddedLanguages(code, lang) {\n if (lang === \"markdown\" || lang === \"md\") {\n return [\"mermaid\"];\n }\n },\n }\n);\n\nexport {\n bundledLanguages,\n bundledThemes,\n codeToHast,\n codeToHtml,\n codeToTokens,\n codeToTokensBase,\n codeToTokensWithThemes,\n getLastGrammarState,\n getSingletonHighlighter,\n};\nexport type { BundledLanguage, BundledTheme, Highlighter };\n","import { visit } from \"unist-util-visit\";\nimport { toString } from \"hast-util-to-string\";\nimport type { Element } from \"hast\";\nimport type Mermaid from \"mermaid\";\nimport { fromHtmlIsomorphic } from \"hast-util-from-html-isomorphic\";\nimport { getCodeLanguage } from \"./utils.js\";\n\nlet mermaidPromise: Promise<typeof Mermaid> | undefined;\n\nfunction loadMermaid() {\n if (mermaidPromise) {\n return mermaidPromise;\n }\n mermaidPromise = doLoadMermaid();\n return mermaidPromise;\n}\n\nasync function doLoadMermaid() {\n const mermaid = (await import(\"mermaid\")).default;\n mermaid.initialize({\n startOnLoad: false,\n theme: \"base\",\n themeVariables: {\n fontSize: \"14px\",\n lineColor: \"#979797\",\n primaryColor: \"#DCD2F3\",\n primaryBorderColor: \"#0000001A\",\n },\n });\n return mermaid;\n}\n\nlet count = 0;\n\nconst parser = new DOMParser();\nconst serializer = new XMLSerializer();\n\n// Reference https://github.com/remcohaszing/rehype-mermaid\nexport function rehypeMermaid() {\n return async (tree: Element) => {\n const promises: Promise<void>[] = [];\n\n visit(tree, \"element\", (node, index, parent) => {\n if (\n !parent ||\n parent.type !== \"element\" ||\n parent.tagName !== \"pre\" ||\n node.tagName !== \"code\"\n ) {\n return;\n }\n\n const lang = getCodeLanguage(node);\n\n if (lang !== \"mermaid\") {\n return;\n }\n\n promises.push(\n (async () => {\n const id = `mermaid-${count++}`;\n let svg: string;\n try {\n const mermaid = await loadMermaid();\n const result = await mermaid.render(id, toString(node));\n svg = result.svg;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Error rendering mermaid diagram:\", error);\n document.getElementById(id)?.remove();\n return;\n }\n const root = parser.parseFromString(svg, \"text/html\");\n const svgElement = root.querySelector(\"svg\") as SVGSVGElement;\n\n const defs = root.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"defs\"\n );\n defs.innerHTML = `<linearGradient id=\"linear-gradient-${id}\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">\n <stop offset=\"0%\" stop-color=\"#F0EBFA\" />\n <stop offset=\"75%\" stop-color=\"#DED4F4\" />\n <stop offset=\"100%\" stop-color=\"#C5C7FA\" />\n</linearGradient>`;\n svgElement.prepend(defs);\n\n const style = root.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"style\"\n );\n style.textContent = `\n#${id} .node rect,\n#${id} .node circle,\n#${id} .node ellipse,\n#${id} .node polygon,\n#${id} .node path {\n fill: url(#linear-gradient-${id});\n}\n#${id} .node rect {\n rx: 4;\n ry: 4;\n}\n#${id} .labelBkg {\n background-color: #f5f8ff;\n}\n#${id} .edgeLabel,\n#${id} .edgeLabel p {\n background-color: transparent;\n}\n#${id} .edgeLabel {\n color: #8c8c8c;\n font-size: 12px;\n}\n`;\n svgElement.appendChild(style);\n\n const modifiedSvg = serializer.serializeToString(svgElement);\n\n const replacements = fromHtmlIsomorphic(modifiedSvg, {\n fragment: true,\n }).children as Element[];\n parent.children.splice(index!, 1, ...replacements);\n parent.properties.className = (\n (parent.properties.className as string[]) || []\n ).concat(\"mermaid\");\n })()\n );\n });\n\n await Promise.all(promises);\n };\n}\n","import type { Element } from \"hast\";\n\nexport function getCodeLanguage(node: Element) {\n const className = (node.properties.className as string[]) || [];\n\n for (const classListItem of className) {\n if (classListItem.slice(0, 9) === \"language-\") {\n return classListItem.slice(9).toLowerCase();\n }\n }\n\n return null;\n}\n","import { useEffect, useState } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nimport { unified } from \"unified\";\nimport remarkParse from \"remark-parse\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkToRehype from \"remark-rehype\";\nimport rehypeReact, { Options as RehypeReactOptions } from \"rehype-react\";\nimport type { Components } from \"hast-util-to-jsx-runtime\";\nimport rehypeShikiFromHighlighter from \"@shikijs/rehype/core\";\nimport { getSingletonHighlighter } from \"@next-shared/shiki\";\nimport { rehypeMermaid } from \"./rehypeMermaid.js\";\n\nconst production = { Fragment, jsx, jsxs };\n\nexport interface MarkdownComponentProps {\n content?: string;\n components?: Partial<Components>;\n shiki?: {\n /** @default \"dark-plus\" */\n theme?: \"light-plus\" | \"dark-plus\";\n };\n}\n\nexport async function preloadHighlighter(\n theme: \"light-plus\" | \"dark-plus\"\n): Promise<void> {\n await getSingletonHighlighter({\n themes: [theme],\n });\n}\n\n// Reference https://github.com/remarkjs/react-remark/blob/39553e5f5c9e9b903bebf261788ff45130668de0/src/index.ts\nexport function MarkdownComponent({\n content,\n components,\n shiki,\n}: MarkdownComponentProps): JSX.Element | null {\n const [reactContent, setReactContent] = useState<JSX.Element | null>(null);\n const theme = shiki?.theme ?? \"dark-plus\";\n\n useEffect(() => {\n let ignore = false;\n (async () => {\n try {\n const highlighter = await getSingletonHighlighter({\n themes: [theme],\n });\n if (ignore) {\n return;\n }\n const vFile = await unified()\n .use(remarkParse)\n .use(remarkGfm)\n .use(remarkToRehype)\n .use(rehypeMermaid)\n .use(rehypeShikiFromHighlighter, highlighter as any, {\n theme,\n lazy: true,\n defaultLanguage: \"text\",\n })\n .use(rehypeReact, {\n ...production,\n passNode: true,\n components,\n } as RehypeReactOptions)\n .process(content);\n if (!ignore) {\n setReactContent(vFile.result);\n }\n } catch (error) {\n if (!ignore) {\n // eslint-disable-next-line no-console\n console.error(\"Convert markdown failed:\", error);\n setReactContent(null);\n }\n }\n })();\n return () => {\n ignore = true;\n };\n }, [components, content, theme]);\n\n return reactContent;\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, `.container--YostHfxu{background:var(--elevo-component-background);-webkit-backdrop-filter:var(--elevo-component-backdrop-filter);backdrop-filter:var(--elevo-component-backdrop-filter);border-radius:var(--elevo-border-radius);padding:16px}.container--YostHfxu:not(:first-child){margin-top:10px}ai-portal\\\\.chat-stream .container--YostHfxu{background:rgba(255,255,255,0.6);border-radius:8px;border:1px solid rgba(0,0,0,0.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:12px 20px}.loading--FzSrGTPm{position:absolute;top:calc(50% - 7px);left:calc(50% - 7px)}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": `container--YostHfxu`,\n\t\"loading\": `loading--FzSrGTPm`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { pipes } from \"@easyops-cn/brick-next-pipes\";\nimport fileText from \"../images/file-text@2x.png\";\nimport filePdf from \"../images/file-pdf@2x.png\";\nimport fileDoc from \"../images/file-doc@2x.png\";\nimport filePpt from \"../images/file-ppt@2x.png\";\nimport fileXls from \"../images/file-xls@2x.png\";\nimport fileOther from \"../images/file-other@2x.png\";\n\nconst MIME_TYPES = new Map<string, string>([\n [\"md\", \"text/markdown\"],\n [\"pdf\", \"application/pdf\"],\n [\"doc\", \"application/msword\"],\n [\n \"docx\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n ],\n [\"txt\", \"text/plain\"],\n [\"csv\", \"text/csv\"],\n [\"xls\", \"application/vnd.ms-excel\"],\n [\"xlsx\", \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"],\n [\"ppt\", \"application/vnd.ms-powerpoint\"],\n [\n \"pptx\",\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n ],\n [\"jpg\", \"image/jpeg\"],\n [\"jpeg\", \"image/jpeg\"],\n [\"png\", \"image/png\"],\n [\"gif\", \"image/gif\"],\n [\"bmp\", \"image/bmp\"],\n [\"webp\", \"image/webp\"],\n [\"svg\", \"image/svg+xml\"],\n]);\n\nexport function formatFileSize(size: number) {\n const [value, unit] = pipes.unitFormat(size, \"bytes\", 1);\n const number = +value;\n return `${number > 100 ? Math.round(number) : number} ${unit}`;\n}\n\nexport function getFileTypeAndIcon(\n mimeType: string | undefined,\n filename: string | undefined\n): [type: string, icon: string] {\n const type = mimeType || getMimeTypeByFilename(filename);\n\n if (type.startsWith(\"image/\")) {\n return [\"Image\", fileOther];\n }\n\n switch (type) {\n case \"text/markdown\":\n case \"text/x-markdown\":\n return [\"Markdown\", fileText];\n case \"application/pdf\":\n return [\"PDF\", filePdf];\n case \"application/msword\":\n case \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\":\n return [\"Word\", fileDoc];\n case \"application/vnd.ms-excel\":\n case \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\":\n return [\"Excel\", fileXls];\n case \"application/vnd.ms-powerpoint\":\n case \"application/vnd.openxmlformats-officedocument.presentationml.presentation\":\n return [\"PowerPoint\", filePpt];\n }\n\n if (type.startsWith(\"text/\")) {\n return [\"Text\", fileText];\n }\n\n return [\"File\", fileOther];\n}\n\nexport function getMimeTypeByFilename(filename: string | undefined): string {\n let ext = \"\";\n const matches = filename?.match(/\\.([^.]+)$/);\n if (matches) {\n ext = matches[1].toLowerCase();\n }\n return MIME_TYPES.get(ext) ?? \"unknown\";\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]!./ExpandedView.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]!./ExpandedView.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { getBasePath, unstable_createRoot } from \"@next-core/runtime\";\nimport { uniqueId } from \"lodash\";\nimport { convertView } from \"@next-shared/tsx-converter\";\nimport type { GraphGeneratedView } from \"../../cruise-canvas/interfaces\";\nimport styles from \"./ExpandedView.module.css\";\nimport { WrappedIcon, WrappedIconButton } from \"../../shared/bricks\";\nimport { createPortal } from \"../../cruise-canvas/utils/createPortal\";\nimport { ICON_CLOSE, ICON_EXTERNAL_LINK, ICON_FEEDBACK } from \"../constants\";\nimport { TaskContext } from \"../TaskContext\";\nimport { useViewFeedbackDone } from \"../useViewFeedbackDone\";\nimport { parseTemplate } from \"../parseTemplate\";\nimport type { ParsedView } from \"../interfaces\";\nimport type { ModulePartOfComponent } from \"@next-shared/tsx-parser\";\n\nexport interface ExpandedViewProps {\n views: GraphGeneratedView[];\n}\n\nexport function ExpandedView({ views }: ExpandedViewProps) {\n const rootId = useMemo(() => uniqueId(), []);\n const {\n workspace,\n previewUrlTemplate,\n activeExpandedViewJobId,\n setActiveExpandedViewJobId,\n manuallyUpdatedViews,\n showFeedbackOnView,\n onFeedbackOnView,\n feedbackDoneViews,\n } = useContext(TaskContext);\n const containerRef = useRef<HTMLDivElement>(null);\n const rootRef = useRef<Awaited<\n ReturnType<typeof unstable_createRoot>\n > | null>(null);\n const generatedView = activeExpandedViewJobId\n ? (manuallyUpdatedViews?.get(activeExpandedViewJobId) ??\n views.find((v) => v.id === activeExpandedViewJobId)?.view)\n : null;\n const feedbackDone =\n useViewFeedbackDone(generatedView?.viewId, showFeedbackOnView) ||\n (generatedView && feedbackDoneViews?.has(generatedView.viewId));\n const [view, setView] = useState<ParsedView | null>(null);\n const canFeedback =\n !!view && !!generatedView?.viewId && generatedView.from !== \"config\";\n const [viewsWithTitle, setViewsWithTitle] = useState<\n Array<\n GraphGeneratedView & {\n title?: string;\n }\n >\n >(views);\n\n useEffect(() => {\n setView(null);\n let ignore = false;\n generatedView?.asyncConstructedView?.then((view) => {\n if (!ignore) {\n setView(view);\n }\n });\n return () => {\n ignore = true;\n };\n }, [generatedView]);\n\n useEffect(() => {\n Promise.all(\n views.map(async (v) => {\n const view = await v.view.asyncConstructedView;\n return {\n ...v,\n title: (view?.entry?.defaultExport as ModulePartOfComponent)?.title,\n };\n })\n ).then((result) => {\n setViewsWithTitle(result);\n });\n }, [views]);\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\n return () => {\n root.unmount();\n portal.remove();\n rootRef.current = null;\n };\n }, [rootId]);\n\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n setLoading(true);\n if (!view) {\n return;\n }\n let ignore = false;\n (async () => {\n try {\n const convertedView = await convertView(view, {\n rootId,\n workspace,\n expanded: true,\n withContexts: view.withContexts,\n });\n if (ignore) {\n return;\n }\n const { brick, context, functions, templates } = convertedView;\n await rootRef.current?.render(brick, { context, functions, templates });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to render view:\", error);\n }\n if (!ignore) {\n setLoading(false);\n }\n })();\n\n return () => {\n ignore = true;\n };\n }, [rootId, workspace, view]);\n\n const handleClose = useCallback(() => {\n setActiveExpandedViewJobId(null);\n }, [setActiveExpandedViewJobId]);\n\n return (\n <div className={styles[\"expanded-view\"]}>\n {loading && (\n <div className={styles.loading}>\n <WrappedIcon lib=\"antd\" icon=\"loading-3-quarters\" spinning />\n </div>\n )}\n <div\n className={classNames(styles.body, {\n // [styles.small]: sizeSmall,\n })}\n ref={containerRef}\n data-root-id={rootId}\n />\n <ul className={styles.nav}>\n {viewsWithTitle.map((view) => (\n <li key={view.id}>\n <button\n className={classNames(styles[\"nav-button\"], {\n [styles.active]: activeExpandedViewJobId === view.id,\n })}\n onClick={() => setActiveExpandedViewJobId(view.id)}\n >\n {view.title ?? \"…\"}\n </button>\n </li>\n ))}\n </ul>\n <div className={styles.buttons}>\n {showFeedbackOnView && !feedbackDone && canFeedback && (\n <WrappedIconButton\n icon={ICON_FEEDBACK}\n onClick={() => onFeedbackOnView?.(generatedView.viewId)}\n />\n )}\n {!!(\n generatedView?.viewId &&\n !generatedView.withContexts &&\n previewUrlTemplate\n ) && (\n <WrappedIconButton\n icon={ICON_EXTERNAL_LINK}\n onClick={() => {\n window.open(\n `${getBasePath().slice(0, -1)}${parseTemplate(\n previewUrlTemplate,\n {\n viewId: generatedView.viewId,\n }\n )}`,\n \"_blank\"\n );\n }}\n />\n )}\n <WrappedIconButton icon={ICON_CLOSE} onClick={handleClose} />\n </div>\n </div>\n );\n}\n","export const NS_LIBS_DATETIME = \"libs-datetime\";\n\nexport enum K {\n TODAY = \"TODAY\",\n YESTERDAY = \"YESTERDAY\",\n FUTURE_AFTER = \"FUTURE_AFTER\",\n FORMAT_MEDIUM_DATETIME = \"FORMAT_MEDIUM_DATETIME\",\n FORMAT_MEDIUM_DATE = \"FORMAT_MEDIUM_DATE\",\n FORMAT_SHORT_DATETIME = \"FORMAT_SHORT_DATETIME\",\n FORMAT_SHORT_DATE = \"FORMAT_SHORT_DATE\",\n FORMAT_SHORT_DAY_DATETIME = \"FORMAT_SHORT_DAY_DATETIME\",\n FORMAT_SHORT_DAY_DATE = \"FORMAT_SHORT_DAY_DATE\",\n SECONDS = \"SECONDS\",\n MILL_SECONDS = \"MILL_SECONDS\",\n MINUTES = \"MINUTES\",\n HOURS = \"HOURS\",\n DAYS = \"DARS\",\n MONTHS = \"MONTHS\",\n}\n\nexport type Locale = { [key in K]: string };\n","import { Locale, K } from \"../constants.js\";\n\nconst locale: Locale = {\n [K.YESTERDAY]: \"Yesterday\",\n [K.TODAY]: \"Today\",\n [K.FUTURE_AFTER]: \"After {{time}}\",\n [K.FORMAT_MEDIUM_DATETIME]: \"LLL\",\n [K.FORMAT_MEDIUM_DATE]: \"LL\",\n [K.FORMAT_SHORT_DATETIME]: \"MMM D ah:mm\",\n [K.FORMAT_SHORT_DATE]: \"MMM D\",\n [K.FORMAT_SHORT_DAY_DATETIME]: \"MMM D HH:mm\",\n [K.FORMAT_SHORT_DAY_DATE]: \"MMM D\",\n [K.MONTHS]: \"months\",\n [K.HOURS]: \"hours\",\n [K.SECONDS]: \"seconds\",\n [K.MILL_SECONDS]: \"millseconds\",\n [K.DAYS]: \"days\",\n [K.MINUTES]: \"minutes\",\n};\n\nexport default locale;\n","import { Locale, K } from \"../constants.js\";\n\nconst locale: Locale = {\n [K.YESTERDAY]: \"昨天\",\n [K.TODAY]: \"今天\",\n [K.FUTURE_AFTER]: \"{{time}}后\",\n [K.FORMAT_MEDIUM_DATETIME]: \"LL ah:mm\",\n [K.FORMAT_MEDIUM_DATE]: \"LL\",\n [K.FORMAT_SHORT_DATETIME]: \"MMMD日 ah:mm\",\n [K.FORMAT_SHORT_DATE]: \"MMMD日\",\n [K.FORMAT_SHORT_DAY_DATETIME]: \"MMMD日 HH:mm\",\n [K.FORMAT_SHORT_DAY_DATE]: \"MMMD日\",\n [K.MONTHS]: \"个月\",\n [K.HOURS]: \"小时\",\n [K.SECONDS]: \"秒\",\n [K.MILL_SECONDS]: \"毫秒\",\n [K.DAYS]: \"天\",\n [K.MINUTES]: \"分钟\",\n};\n\nexport default locale;\n","import { initializeI18n } from \"@next-core/i18n\";\nimport { NS_LIBS_DATETIME } from \"./constants.js\";\nimport en from \"./locales/en.js\";\nimport zh from \"./locales/zh.js\";\n\nexport function addResourceBundle(): void {\n initializeI18n(NS_LIBS_DATETIME, { en, zh });\n}\n","import moment from \"moment\";\nimport { i18n } from \"@next-core/i18n\";\nimport { NS_LIBS_DATETIME, K } from \"./i18n/constants.js\";\nimport { addResourceBundle } from \"./i18n/index.js\";\n\naddResourceBundle();\n\nconst TIME_OFFSET = 0;\n\nexport enum HumanizeTimeFormat {\n full = \"full\",\n default = \"default\",\n relative = \"relative\",\n past = \"past\",\n future = \"future\",\n accurate = \"accurate\",\n auto = \"auto\",\n}\n\nexport const humanizeTime = (\n time: moment.MomentInput,\n format: HumanizeTimeFormat = HumanizeTimeFormat.auto,\n /** 默认为 \"datetime\" */\n type?: \"datetime\" | \"date\"\n): string | null => {\n if (\n time === undefined ||\n time === null ||\n time === -Infinity ||\n time === Infinity\n ) {\n return null;\n }\n const m = moment(time);\n const now = moment().add(TIME_OFFSET);\n const fFull = type === \"date\" ? \"LL\" : \"LL HH:mm\";\n const fMedium = i18n.t(\n `${NS_LIBS_DATETIME}:${type === \"date\" ? K.FORMAT_MEDIUM_DATE : K.FORMAT_MEDIUM_DATETIME}`\n );\n const fShort = i18n.t(\n `${NS_LIBS_DATETIME}:${type === \"date\" ? K.FORMAT_SHORT_DATE : K.FORMAT_SHORT_DATETIME}`\n );\n const fShort24 = i18n.t(\n `${NS_LIBS_DATETIME}:${type === \"date\" ? K.FORMAT_SHORT_DAY_DATE : K.FORMAT_SHORT_DAY_DATETIME}`\n );\n const fDefault = type === \"date\" ? \"LL\" : \"LL HH:mm:ss\";\n const fHourMinute = \"HH:mm\";\n let text;\n\n /* 用于精确显示时间的参数\n * 今天与昨天,显示:今天(昨天)x:x的格式,如:今天12:21、昨天16:33\n * 昨天以前的时间,显示:x月x日x时:x分,如:11月23日11:22\n * 今年以前的时间,显示:x年x月x日x时:x分,如:2016年11月11日11:11\n */\n const getAccurateTime = () => {\n const diff = +m.diff(now, \"days\", true).toFixed(1);\n let _text = \"\";\n const retVal =\n m.year() < now.year()\n ? \"lastYear\"\n : diff < -2 || m.isBefore(now.clone().add(-1, \"day\"), \"day\")\n ? \"twoDaysBefore\"\n : m.isSame(now.clone().add(-1, \"day\"), \"day\")\n ? \"yesterday\"\n : m.isSame(now, \"day\")\n ? \"sameDay\"\n : diff < 2 && m.isSame(now.clone().add(1, \"day\"), \"day\")\n ? \"nextDay\"\n : diff < 7\n ? \"nextWeek\"\n : \"default\";\n switch (retVal) {\n case \"sameDay\":\n case \"yesterday\":\n _text = `${i18n.t(`${NS_LIBS_DATETIME}:${retVal === \"yesterday\" ? K.YESTERDAY : K.TODAY}`)}${\n type === \"date\" ? \"\" : ` ${m.format(fHourMinute)}`\n }`;\n break;\n case \"lastYear\":\n _text = m.format(fFull);\n break;\n case \"twoDaysBefore\":\n _text = m.format(fShort24);\n break;\n default:\n _text = m.format(fFull);\n }\n\n return _text;\n };\n\n switch (format) {\n case HumanizeTimeFormat.full:\n text = m.format(fFull);\n break;\n case HumanizeTimeFormat.default:\n text = m.format(fDefault);\n break;\n case HumanizeTimeFormat.relative: {\n const diff = +m - +now;\n text =\n diff <= 0\n ? moment.duration(diff).humanize(true)\n : i18n.t(`${NS_LIBS_DATETIME}:${K.FUTURE_AFTER}`, {\n time: moment.duration(diff).humanize(),\n });\n break;\n }\n case HumanizeTimeFormat.past:\n text = moment.duration(Math.min(+m - +now, 0)).humanize(true);\n break;\n case HumanizeTimeFormat.future:\n text = i18n.t(`${NS_LIBS_DATETIME}:${K.FUTURE_AFTER}`, {\n time: moment.duration(Math.max(+m - +now, 0)).humanize(),\n });\n break;\n case HumanizeTimeFormat.accurate:\n text = getAccurateTime();\n break;\n default:\n text = m.format(m.year() === now.year() ? fShort : fMedium);\n }\n return text;\n};\n","import { get } from \"lodash\";\n\nexport function parseTemplate(\n template: string | undefined,\n context: Record<string, any>\n) {\n return template?.replace(/{{(.*?)}}/g, (_match: string, key: string) => {\n const value = get(context, key.trim());\n return value;\n });\n}\n","import type { Reducer } from \"react\";\nimport { isMatch, pick } from \"lodash\";\nimport type {\n DataPart,\n GeneratedView,\n Job,\n JobPatch,\n Message,\n Part,\n Task,\n TextPart,\n} from \"../../shared/interfaces\";\nimport type { CruiseCanvasAction } from \"./interfaces\";\nimport { getAsyncConstructedView } from \"../../shared/getAsyncConstructedView\";\n\nexport const tasks: Reducer<Task[], CruiseCanvasAction> = (state, action) => {\n switch (action.type) {\n case \"sse\": {\n const tasksPatch = action.payload.tasks;\n let tasks = state;\n\n if (!Array.isArray(tasksPatch) || tasksPatch.length === 0) {\n return state;\n }\n\n for (const task of tasksPatch) {\n const taskPatch = pick(task, [\n \"id\",\n \"upstream\",\n \"parent\",\n \"state\",\n \"plan\",\n \"startTime\",\n \"endTime\",\n \"jobs\",\n \"aiEmployeeId\",\n ]);\n const previousTaskIndex = tasks.findIndex(\n (task) => task.id === taskPatch.id\n );\n const previousTask = tasks[previousTaskIndex];\n taskPatch.jobs = mergeJobs(\n previousTask?.jobs,\n taskPatch.jobs,\n action.workspace,\n taskPatch.aiEmployeeId ?? previousTask?.aiEmployeeId\n );\n\n if (previousTaskIndex === -1) {\n tasks = [...tasks, taskPatch as Task];\n } else {\n if (!isMatch(previousTask, taskPatch)) {\n tasks = [\n ...tasks.slice(0, previousTaskIndex),\n { ...previousTask, ...taskPatch } as Task,\n ...tasks.slice(previousTaskIndex + 1),\n ];\n }\n }\n }\n\n return tasks;\n }\n\n case \"reset\": {\n return state.length === 0 ? state : [];\n }\n }\n\n return state;\n};\n\nfunction mergeJobs(\n previousJobs: Job[] | undefined,\n jobsPatch: JobPatch[] | undefined,\n workspace: string,\n aiEmployeeId: string | undefined\n): Job[] {\n let jobs = previousJobs ?? [];\n for (const jobPatch of jobsPatch ?? []) {\n const previousJobIndex =\n jobs?.findIndex((job) => job.id === jobPatch.id) ?? -1;\n const { messages: messagesPatch, toolCall } = jobPatch;\n\n if (typeof toolCall?.arguments === \"string\") {\n toolCall.originalArguments = toolCall.arguments;\n try {\n toolCall.arguments = JSON.parse(toolCall.arguments);\n } catch (e) {\n // Failed to parse toolCall arguments\n toolCall.arguments = {};\n toolCall.argumentsParseFailed = true;\n toolCall.argumentsParseError = e;\n }\n }\n\n if (previousJobIndex === -1) {\n const patch = {\n ...jobPatch,\n };\n if (aiEmployeeId !== undefined) {\n patch.aiEmployeeId = aiEmployeeId;\n }\n\n if (\n patch.toolCall?.name === \"create_view\" &&\n patch.state === \"completed\"\n ) {\n const generatedView = getJobGeneratedView(messagesPatch, workspace);\n if (generatedView) {\n patch.generatedView = generatedView;\n }\n }\n if (Array.isArray(messagesPatch) && messagesPatch.length > 0) {\n jobs = [\n ...jobs,\n {\n ...patch,\n messages: mergeMessages(messagesPatch),\n } as Job,\n ];\n } else {\n jobs = [...jobs, patch as Job];\n }\n } else {\n const previousJob = jobs[previousJobIndex];\n const restMessagesPatch: JobPatch = pick(jobPatch, [\n \"id\",\n \"upstream\",\n \"parent\",\n \"state\",\n \"instruction\",\n \"toolCall\",\n \"isError\",\n \"hidden\",\n \"startTime\",\n \"endTime\",\n \"requestHumanAction\",\n \"humanAction\",\n \"username\",\n \"cmd\",\n \"mentionedAiEmployeeId\",\n \"hil\",\n ]);\n if (aiEmployeeId !== undefined) {\n restMessagesPatch.aiEmployeeId = aiEmployeeId;\n }\n if (Array.isArray(messagesPatch) && messagesPatch.length > 0) {\n restMessagesPatch.messages = mergeMessages([\n ...(previousJob.messages ?? []),\n ...messagesPatch,\n ]);\n }\n\n if (\n !previousJob.generatedView &&\n ([\"create_view\"] as (string | undefined)[]).includes(\n restMessagesPatch.toolCall?.name ?? previousJob.toolCall?.name\n ) &&\n (restMessagesPatch.state ?? previousJob.state) === \"completed\"\n ) {\n const generatedView = getJobGeneratedView(messagesPatch, workspace);\n if (generatedView) {\n restMessagesPatch.generatedView = generatedView;\n }\n }\n\n if (!previousJob.generatedView && !restMessagesPatch.generatedView) {\n const view = getJobStaticDataView(messagesPatch);\n if (view) {\n view.withContexts = {\n RESPONSE: getJobStaticDataResponse(restMessagesPatch.messages!),\n };\n view.asyncConstructedView = getAsyncConstructedView(view, workspace);\n restMessagesPatch.generatedView = view;\n }\n }\n\n if (!isMatch(previousJob, restMessagesPatch)) {\n jobs = [\n ...jobs.slice(0, previousJobIndex),\n {\n ...previousJob,\n ...restMessagesPatch,\n },\n ...jobs.slice(previousJobIndex + 1),\n ];\n }\n }\n }\n return jobs;\n}\n\nfunction mergeMessages(messages: Message[]): Message[] {\n const merged: Message[] = [];\n let previousRole: Message[\"role\"] | undefined;\n for (const message of messages) {\n if (!previousRole || previousRole !== message.role) {\n merged.push({ ...message });\n } else {\n const lastMessage = merged[merged.length - 1];\n lastMessage.parts = [...lastMessage.parts, ...message.parts];\n }\n previousRole = message.role;\n }\n\n for (const message of merged) {\n message.parts = mergeMessageParts(message.parts);\n }\n\n return merged;\n}\n\nfunction mergeMessageParts(parts: Part[]): Part[] {\n const merged: Part[] = [];\n let previousType: Part[\"type\"] | undefined;\n let previousDataType: string | undefined;\n for (const part of parts) {\n if (previousType === \"text\" && part.type === \"text\") {\n const lastPart = merged[merged.length - 1] as TextPart;\n lastPart.text += part.text;\n } else if (\n // Assert: previousType is data when previousDataType is defined\n previousDataType === \"stream\" &&\n part.type === \"data\" &&\n part.data?.type === \"stream\"\n ) {\n const lastPart = merged[merged.length - 1] as DataPart;\n lastPart.data.message += part.data.message;\n } else {\n merged.push({ ...part });\n }\n\n previousType = part.type;\n previousDataType = part.type === \"data\" ? part.data?.type : undefined;\n }\n return merged;\n}\n\nfunction getJobGeneratedView(\n messages: Message[] | undefined,\n workspace: string\n): GeneratedView | undefined {\n if (!messages) {\n return;\n }\n\n for (const message of messages) {\n if (message.role === \"tool\") {\n for (const part of message.parts) {\n if (part.type === \"text\") {\n try {\n const view = JSON.parse(part.text) as GeneratedView;\n view.asyncConstructedView = getAsyncConstructedView(\n view,\n workspace\n );\n return view;\n } catch {\n // Do nothing, continue to next part\n }\n }\n }\n }\n }\n}\n\nfunction getJobStaticDataView(\n messages: Message[] | undefined\n): GeneratedView | undefined {\n if (!messages) {\n return;\n }\n\n for (const message of messages) {\n if (message.role === \"tool\") {\n for (const part of message.parts) {\n if (part.type === \"data\" && part.data?.type === \"static_data_view\") {\n const view: GeneratedView = {\n viewId: part.data.viewId,\n code: part.data.code,\n from: part.data.from,\n isStaticData: true,\n };\n return view;\n }\n }\n }\n }\n}\n\nfunction getJobStaticDataResponse(messages: Message[]) {\n for (const message of messages) {\n if (message.role === \"tool\") {\n for (const part of message.parts) {\n if (part.type === \"text\") {\n try {\n return JSON.parse(part.text);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to parse static data response as JSON:\", e);\n }\n }\n }\n }\n }\n\n return null;\n}\n","import type { Reducer } from \"react\";\nimport { isMatch, pick } from \"lodash\";\nimport type {\n ActivityRun,\n ServiceFlowPatch,\n ServiceFlowRun,\n StageRun,\n} from \"../../shared/interfaces\";\nimport type { CruiseCanvasAction } from \"./interfaces\";\n\nexport const serviceFlows: Reducer<ServiceFlowRun[], CruiseCanvasAction> = (\n state,\n action\n) => {\n switch (action.type) {\n case \"sse\": {\n const serviceFlowsPatch = action.payload.serviceFlows;\n let serviceFlows = state;\n\n if (!Array.isArray(serviceFlowsPatch) || serviceFlowsPatch.length === 0) {\n return state;\n }\n\n for (const flow of serviceFlowsPatch) {\n const flowPatch = pick(flow, [\n \"taskId\",\n \"flowInstanceId\",\n \"name\",\n \"spec\",\n \"space\",\n ]) as Omit<ServiceFlowPatch, \"fullSpec\">;\n const previousFlowIndex = serviceFlows.findIndex(\n (f) => f.taskId === flowPatch.taskId\n );\n const previousFlow = serviceFlows[previousFlowIndex];\n flowPatch.spec = mergeSpec(\n previousFlow?.spec,\n flowPatch,\n flow.fullSpec\n );\n\n if (previousFlowIndex === -1) {\n serviceFlows = [...serviceFlows, flowPatch as ServiceFlowRun];\n } else {\n if (!isMatch(previousFlow, flowPatch)) {\n serviceFlows = [\n ...serviceFlows.slice(0, previousFlowIndex),\n { ...previousFlow, ...flowPatch } as ServiceFlowRun,\n ...serviceFlows.slice(previousFlowIndex + 1),\n ];\n }\n }\n }\n\n return serviceFlows;\n }\n\n case \"reset\": {\n return state.length === 0 ? state : [];\n }\n }\n\n return state;\n};\n\nfunction mergeSpec(\n previousSpec: StageRun[] | undefined,\n flowPatch: ServiceFlowPatch,\n fullSpec: StageRun[] | undefined\n): StageRun[] {\n if (Array.isArray(fullSpec)) {\n return fullSpec;\n }\n if (!Array.isArray(flowPatch.spec)) {\n return previousSpec ?? [];\n }\n const mergedSpec: StageRun[] = previousSpec ? [...previousSpec] : [];\n\n for (const stagePatch of flowPatch.spec) {\n const stageIndex = mergedSpec.findIndex((s) => s.name === stagePatch.name);\n if (stageIndex === -1) {\n const stage = { ...stagePatch };\n stage.serviceFlowActivities ??= [];\n mergedSpec.push(stage as StageRun);\n } else {\n const activities = mergeActivities(\n mergedSpec[stageIndex].serviceFlowActivities,\n stagePatch.serviceFlowActivities\n );\n\n mergedSpec[stageIndex] = {\n ...mergedSpec[stageIndex],\n ...stagePatch,\n serviceFlowActivities: activities,\n };\n }\n }\n\n return mergedSpec;\n}\n\nfunction mergeActivities(\n previousActivities: ActivityRun[] | undefined,\n activitiesPatch: ActivityRun[] | undefined\n): ActivityRun[] {\n let activities = previousActivities ?? [];\n\n if (!Array.isArray(activitiesPatch) || activitiesPatch.length === 0) {\n return activities;\n }\n\n for (const activityPatch of activitiesPatch) {\n const activityIndex = activities.findIndex((activity) =>\n activity.taskId\n ? activity.taskId === activityPatch.taskId\n : activity.name === activityPatch.name\n );\n\n if (activityIndex === -1) {\n activities = [...activities, activityPatch];\n } else {\n activities = [\n ...activities.slice(0, activityIndex),\n { ...activities[activityIndex], ...activityPatch },\n ...activities.slice(activityIndex + 1),\n ];\n }\n }\n\n return activities;\n}\n","import { Reducer } from \"react\";\nimport type { CruiseCanvasAction, CruiseCanvasState } from \"./interfaces\";\nimport { tasks } from \"./tasks\";\nimport { conversation } from \"./conversation\";\nimport { errors } from \"./errors\";\nimport { serviceFlows } from \"./serviceFlows\";\n\ntype ReducersMapObject<S, A> = {\n [K in keyof S]: Reducer<S[K], A>;\n};\n\nfunction combineReducers<S, A>(\n reducers: ReducersMapObject<S, A>\n): Reducer<S, A> {\n return ((state, action) =>\n Object.fromEntries(\n Object.entries<Reducer<any, A>>(reducers).map(([key, value]) => [\n key,\n value(state[key as keyof S], action),\n ])\n )) as Reducer<S, A>;\n}\n\nexport const rootReducer = combineReducers<\n CruiseCanvasState,\n CruiseCanvasAction\n>({\n conversation,\n tasks,\n errors,\n serviceFlows,\n});\n","import type { Reducer } from \"react\";\nimport { isMatch, pick } from \"lodash\";\nimport type { CruiseCanvasAction } from \"./interfaces\";\nimport type { ConversationBaseDetail } from \"../../shared/interfaces\";\n\nexport const conversation: Reducer<\n ConversationBaseDetail | null,\n CruiseCanvasAction\n> = (state, action) => {\n switch (action.type) {\n case \"sse\": {\n const patch = pick(action.payload, [\n \"id\",\n \"state\",\n \"title\",\n \"startTime\",\n \"endTime\",\n \"projectId\",\n ]);\n\n return (\n state && isMatch(state, patch) ? state : { ...state, ...patch }\n ) as ConversationBaseDetail;\n }\n\n case \"reset\":\n return null;\n\n case \"finished\":\n if (state) {\n return { ...state, finished: true };\n }\n return state;\n }\n return state;\n};\n","import type { Reducer } from \"react\";\nimport type { CruiseCanvasAction } from \"./interfaces\";\nimport type { ConversationError } from \"../../shared/interfaces\";\n\nexport const errors: Reducer<ConversationError[], CruiseCanvasAction> = (\n state,\n action\n) => {\n switch (action.type) {\n case \"sse\": {\n const { error, tasks } = action.payload;\n const lastError = state[state.length - 1];\n\n let taskId: string | undefined;\n if (tasks?.length) {\n taskId = tasks[tasks.length - 1].id;\n } else {\n taskId = lastError?.taskId;\n }\n\n if (typeof error === \"string\" && error) {\n return state.slice(0, -1).concat(\n {\n taskId,\n error,\n },\n { taskId }\n );\n }\n\n if (lastError) {\n if (lastError.error) {\n return state.concat({ taskId });\n }\n if (lastError.taskId !== taskId) {\n return state.slice(0, -1).concat({ taskId });\n }\n return state;\n }\n\n return taskId ? [{ taskId }] : state;\n }\n\n case \"reset\": {\n return state.length === 0 ? state : [];\n }\n }\n\n return state;\n};\n","// istanbul ignore file\nimport { useCallback, useEffect, useReducer, useRef } from \"react\";\nimport { createSSEStream } from \"@next-core/utils/general\";\nimport { getBasePath, handleHttpError } from \"@next-core/runtime\";\nimport { rootReducer } from \"./reducers\";\nimport type {\n ConversationPatch,\n ExtraChatPayload,\n RequestStore,\n} from \"../shared/interfaces\";\n\nconst MINIMAL_DELAY = 500;\n\nexport function useConversationDetail(\n conversationId: string,\n initialRequest?: RequestStore | null,\n replay?: boolean,\n replayDelay?: number\n) {\n const [{ conversation, tasks, serviceFlows, errors }, dispatch] = useReducer(\n rootReducer,\n null,\n () => ({\n conversation: null,\n tasks: [],\n serviceFlows: [],\n errors: [],\n })\n );\n\n const humanInputRef =\n useRef<\n (input: string | null, action?: string, extra?: ExtraChatPayload) => void\n >();\n\n const replayListRef = useRef<ConversationPatch[]>([]);\n const replayRef = useRef(replay);\n const replayDelayRef = useRef((replayDelay ?? 2) * 1000);\n const replayResolveRef = useRef<(() => void) | null>(null);\n\n const skipToResults = useCallback(() => {\n replayRef.current = false;\n if (replayResolveRef.current) {\n replayResolveRef.current();\n replayResolveRef.current = null;\n }\n }, []);\n\n const watchAgain = useCallback(async () => {\n replayRef.current = true;\n dispatch({ type: \"reset\" });\n\n let isInitial = true;\n let previousTime: number | undefined;\n for (const value of replayListRef.current) {\n if (replayRef.current) {\n let delay = replayDelayRef.current;\n if (value.time && previousTime) {\n delay = Math.min(\n Math.max(MINIMAL_DELAY, (value.time - previousTime) * 1000),\n delay\n );\n }\n previousTime = value.time;\n if (!isInitial) {\n await new Promise<void>((resolve) => {\n replayResolveRef.current = resolve;\n setTimeout(resolve, delay);\n });\n replayResolveRef.current = null;\n }\n }\n\n dispatch({ type: \"sse\", payload: value, workspace: conversationId });\n isInitial = false;\n }\n dispatch({ type: \"finished\" });\n }, [conversationId]);\n\n useEffect(() => {\n dispatch({ type: \"reset\" });\n replayListRef.current = [];\n humanInputRef.current = undefined;\n\n let ignore = false;\n let requesting = false;\n let ctrl: AbortController | undefined;\n\n const makeRequest = async (\n content: string | null,\n action?: string,\n extra?: ExtraChatPayload\n ) => {\n if (requesting) {\n return;\n }\n\n requesting = true;\n ctrl = new AbortController();\n try {\n const sseRequest = await (content === null && !action\n ? createSSEStream<ConversationPatch>(\n `${getBasePath()}api/gateway/logic.llm.aiops_service/api/v1/elevo/conversations/${conversationId}/stream`,\n {\n signal: ctrl.signal,\n }\n )\n : createSSEStream<ConversationPatch>(\n `${getBasePath()}api/gateway/logic.llm.aiops_service/api/v1/elevo/conversations/${conversationId}/messages`,\n {\n signal: ctrl.signal,\n method: \"POST\",\n body: JSON.stringify(\n action ? { action } : { content, ...extra }\n ),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n ));\n const stream = await sseRequest;\n let isInitial = true;\n let previousTime: number | undefined;\n for await (const value of stream) {\n if (ignore) {\n requesting = false;\n return;\n }\n\n if (replayRef.current) {\n let delay = replayDelayRef.current;\n if (value.time && previousTime) {\n delay = Math.min(\n Math.max(MINIMAL_DELAY, (value.time - previousTime) * 1000),\n delay\n );\n }\n previousTime = value.time;\n\n if (!isInitial) {\n await new Promise<void>((resolve) => {\n replayResolveRef.current = resolve;\n setTimeout(resolve, delay);\n });\n replayResolveRef.current = null;\n }\n }\n\n replayListRef.current.push(value);\n dispatch({ type: \"sse\", payload: value, workspace: conversationId });\n isInitial = false;\n }\n dispatch({ type: \"finished\" });\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"sse failed\", e);\n handleHttpError(e);\n } finally {\n requesting = false;\n }\n };\n\n humanInputRef.current = async (\n content: string | null,\n action?: string,\n extra?: ExtraChatPayload\n ) => {\n makeRequest(content, action, extra);\n };\n\n if (initialRequest?.conversationId === conversationId) {\n makeRequest(initialRequest.content, undefined, {\n cmd: initialRequest.cmd,\n files: initialRequest.files,\n aiEmployeeId: initialRequest.aiEmployeeId,\n });\n } else {\n makeRequest(null);\n }\n\n return () => {\n ignore = true;\n ctrl?.abort();\n };\n }, [conversationId, initialRequest]);\n\n return {\n conversation,\n tasks,\n serviceFlows,\n errors,\n humanInputRef,\n skipToResults,\n watchAgain,\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, `.progress-line--CX_xuAHC{--breathing-color:rgba(205,205,217,0.7);--breathing-color-2:rgba(205,205,217,0);display:flex;flex-direction:column}.progress-line--CX_xuAHC .step--YXd66tSR{position:relative;display:flex;align-items:center;padding:10px 4px 10px 16px;color:rgba(0,0,0,0.5)}.progress-line--CX_xuAHC .step--YXd66tSR .axis--T4nVxQt5{position:absolute;top:0;bottom:0;left:14px;width:1px}.progress-line--CX_xuAHC .step--YXd66tSR .axis--T4nVxQt5 .line--BUSBjzxD{width:1px;height:100%;background:linear-gradient(172deg,rgba(205,205,217,0) 0%,#cdcdd9 46%,rgba(205,205,217,0) 100%)}.progress-line--CX_xuAHC .step--YXd66tSR .axis--T4nVxQt5 .dot--TPMEta87{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:5px;height:5px;background:rgba(205,205,217,1);border-radius:50%}.progress-line--CX_xuAHC .step--YXd66tSR .progress--alc7SspF{padding:3px;margin:0 8px 0 12px;border-radius:10px;line-height:1;background:#ffffff}.progress-line--CX_xuAHC .step--YXd66tSR .progress--alc7SspF .count--RdZcMYhZ{font-weight:400}.progress-line--CX_xuAHC .step--YXd66tSR .progress--alc7SspF .total--BKoLTm8c{opacity:0.6}.progress-line--CX_xuAHC .step--YXd66tSR .description--AyfMh1_M{flex:1;color:#999}.progress-line--CX_xuAHC .step--YXd66tSR:last-child .progress--alc7SspF .count--RdZcMYhZ{font-weight:600}.failed--Q9TADo_k .step--YXd66tSR:last-child .axis--T4nVxQt5 .line--BUSBjzxD{background:linear-gradient(172deg,rgba(242,76,37,0) 0%,rgba(242,76,37,0.3) 47%,rgba(242,76,37,0) 100%)}.failed--Q9TADo_k .step--YXd66tSR:last-child .axis--T4nVxQt5 .dot--TPMEta87{background:rgba(255,154,120,1)}.failed--Q9TADo_k .step--YXd66tSR:last-child .progress--alc7SspF{background:#ffd6d6}.failed--Q9TADo_k .step--YXd66tSR:last-child .progress--alc7SspF .count--RdZcMYhZ{color:#f44336}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"progress-line\": `progress-line--CX_xuAHC`,\n\t\"step\": `step--YXd66tSR`,\n\t\"axis\": `axis--T4nVxQt5`,\n\t\"line\": `line--BUSBjzxD`,\n\t\"dot\": `dot--TPMEta87`,\n\t\"progress\": `progress--alc7SspF`,\n\t\"count\": `count--RdZcMYhZ`,\n\t\"total\": `total--BKoLTm8c`,\n\t\"description\": `description--AyfMh1_M`,\n\t\"failed\": `failed--Q9TADo_k`\n};\nexport default ___CSS_LOADER_EXPORT___;\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]!./FloatingButton.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]!./FloatingButton.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n SEND_MESSAGE = \"SEND_MESSAGE\",\n CONFIRM_TO_TERMINATE_THE_TASK_TITLE = \"CONFIRM_TO_TERMINATE_THE_TASK_TITLE\",\n}\n\nconst en: Locale = {\n SEND_MESSAGE: \"Send message\",\n CONFIRM_TO_TERMINATE_THE_TASK_TITLE: \"Are you sure to terminate the task?\",\n};\n\nconst zh: Locale = {\n SEND_MESSAGE: \"发送消息\",\n CONFIRM_TO_TERMINATE_THE_TASK_TITLE: \"确定终止任务吗?\",\n};\n\nexport const NS = \"bricks/ai-portal/ChatBox\";\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, { useCallback, useContext, useEffect, useState } from \"react\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { showDialog, WrappedChatInput } from \"../bricks\";\nimport { K, locales, NS, t } from \"./i18n\";\nimport { TaskContext } from \"../TaskContext\";\nimport type { ConversationState } from \"../interfaces\";\n\ninitializeI18n(NS, locales);\n\nexport interface ChatBoxProps {\n state: ConversationState | undefined;\n canChat: boolean;\n}\n\nexport function ChatBox({ state, canChat }: ChatBoxProps): JSX.Element {\n const { humanInput, onTerminate, supports, uploadOptions } =\n useContext(TaskContext);\n\n const [terminating, setTerminating] = useState(false);\n\n useEffect(() => {\n setTerminating(false);\n }, [state]);\n\n const handleTerminate = useCallback(async () => {\n try {\n await showDialog({\n type: \"confirm\",\n title: t(K.CONFIRM_TO_TERMINATE_THE_TASK_TITLE),\n content: \"\",\n });\n } catch {\n return;\n }\n onTerminate();\n setTerminating(true);\n }, [onTerminate]);\n\n return (\n <WrappedChatInput\n placeholder={t(K.SEND_MESSAGE)}\n autoFocus\n submitDisabled={!canChat}\n supportsTerminate={supports?.intercept}\n terminating={terminating}\n uploadOptions={uploadOptions}\n onChatSubmit={(e) => {\n const { content, ...extra } = e.detail;\n humanInput(content, undefined, extra);\n }}\n onTerminate={handleTerminate}\n />\n );\n}\n","import { getRemoteTsxParserWorker } from \"./workers/tsxParser.js\";\nimport type { GeneratedView, ParsedView } from \"./interfaces.js\";\n\nexport async function getAsyncConstructedView(\n generatedView: GeneratedView,\n workspace: string | undefined\n): Promise<ParsedView | null> {\n try {\n const worker = await getRemoteTsxParserWorker();\n const result = await worker.parseView(generatedView.code, {\n workspace,\n withContexts: generatedView.withContexts\n ? Object.keys(generatedView.withContexts)\n : undefined,\n });\n return {\n ...result,\n viewId: generatedView.viewId,\n withContexts: generatedView.withContexts,\n };\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to parse generated view:\", error);\n return null;\n }\n}\n","import { createContext, type Dispatch } from \"react\";\nimport type { FeedbackDetail } from \"../cruise-canvas/interfaces\";\nimport type {\n ActiveDetail,\n ActiveImages,\n ConversationError,\n ConversationState,\n ExampleProject,\n ExtraChatPayload,\n FileInfo,\n GeneratedView,\n Job,\n ShowCaseType,\n Task,\n UploadOptions,\n} from \"./interfaces\";\n\nexport interface TaskContextValue {\n conversationId?: string;\n conversationState?: ConversationState;\n tasks: Task[];\n errors: ConversationError[];\n workspace?: string;\n previewUrlTemplate?: string;\n replay?: boolean;\n showCases?: ShowCaseType[];\n exampleProjects?: ExampleProject[];\n uploadOptions?: UploadOptions;\n\n humanInput: (\n input: string | null,\n action?: string,\n extra?: ExtraChatPayload\n ) => void;\n onShare: () => void;\n onTerminate: () => void;\n supports?: Record<string, boolean>;\n\n activeExpandedViewJobId: string | null;\n setActiveExpandedViewJobId: Dispatch<React.SetStateAction<string | null>>;\n activeDetail: ActiveDetail | null;\n setActiveDetail: Dispatch<React.SetStateAction<ActiveDetail | null>>;\n subActiveDetail: ActiveDetail | null;\n setSubActiveDetail: Dispatch<React.SetStateAction<ActiveDetail | null>>;\n\n submittingFeedback: boolean;\n submittedFeedback: boolean;\n onSubmitFeedback: (detail: FeedbackDetail) => void;\n setShowFeedback: Dispatch<React.SetStateAction<boolean>>;\n\n showJsxEditor?: boolean;\n activeJsxEditorJob?: Job;\n setActiveJsxEditorJob?: Dispatch<React.SetStateAction<Job | undefined>>;\n manuallyUpdatedViews?: Map<string, GeneratedView>;\n updateView?: (jobId: string, view: GeneratedView) => void;\n showFeedbackOnView?: boolean;\n onFeedbackOnView?: (viewId: string) => void;\n feedbackDoneViews?: Set<string>;\n\n skipToResults?: () => void;\n watchAgain?: () => void;\n tryItOut?: () => void;\n separateInstructions?: boolean;\n activeFile: FileInfo | null;\n setActiveFile: Dispatch<React.SetStateAction<FileInfo | null>>;\n activeImages: ActiveImages | null;\n setActiveImages: Dispatch<React.SetStateAction<ActiveImages | null>>;\n}\n\nexport const TaskContext = createContext<TaskContextValue>({\n tasks: [],\n errors: [],\n humanInput: () => {},\n onShare: () => {},\n onTerminate: () => {},\n activeExpandedViewJobId: null,\n setActiveExpandedViewJobId: () => {},\n activeDetail: null,\n setActiveDetail: () => {},\n subActiveDetail: null,\n setSubActiveDetail: () => {},\n submittingFeedback: false,\n submittedFeedback: false,\n onSubmitFeedback: () => {},\n setShowFeedback: () => {},\n activeFile: null,\n setActiveFile: () => {},\n activeImages: null,\n setActiveImages: () => {},\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]!./ReadableCommand.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]!./ReadableCommand.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useEffect, useState } from \"react\";\nimport classNames from \"classnames\";\nimport type { CommandPayload } from \"../interfaces\";\nimport styles from \"./ReadableCommand.module.css\";\nimport { fetchEmployee } from \"../fetchEmployee\";\n\nexport interface ReadableCommandProps {\n cmd?: CommandPayload;\n mentionedAiEmployeeId?: string;\n size?: \"medium\" | \"small\";\n}\n\nexport function ReadableCommand({\n cmd,\n mentionedAiEmployeeId /* , size */,\n}: ReadableCommandProps) {\n const [content, setContent] = useState(() =>\n getInitialContent(cmd, mentionedAiEmployeeId)\n );\n\n useEffect(() => {\n setContent(getInitialContent(cmd, mentionedAiEmployeeId));\n if (!cmd) {\n let ignore = false;\n (async () => {\n const employee = await fetchEmployee(mentionedAiEmployeeId!);\n if (ignore || !employee) return;\n setContent(`@${employee.name}`);\n })();\n return () => {\n ignore = true;\n };\n }\n }, [cmd, mentionedAiEmployeeId]);\n\n return (\n <>\n <span\n className={classNames(styles.command, {\n [styles.small]: true,\n })}\n >\n {content}\n </span>{\" \"}\n </>\n );\n}\n\nexport function getInitialContent(\n cmd?: CommandPayload,\n mentionedAiEmployeeId?: string\n): string {\n if (cmd) {\n switch (cmd.type) {\n case \"serviceFlowStarting\":\n return `/start service flow${[\n cmd.serviceFlowStarting.flowName,\n cmd.serviceFlowStarting.spaceName,\n ]\n .filter(Boolean)\n .slice(0, 1)\n .map((name) => `: ${name}`)\n .join(\"\")}`;\n default:\n return `/${cmd.type}`;\n }\n }\n return `@${mentionedAiEmployeeId!}`;\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, `.node-replay--RJPyOwC6{width:var(--cruise-canvas-node-width-large);max-width:100%;background:rgba(255,255,255,0.5);border-radius:12px;border:1px solid rgba(255,255,255,0.4);padding:4px}.finished--DCI6ewIN:not(.chat--YJT4RmwA){max-width:90vw}.node-replay--RJPyOwC6.chat--YJT4RmwA{margin-top:14px}.bar--Pae7qP58{background:rgba(184,187,205,0.3);border-radius:8px;border:1px solid rgba(255,255,255,0.4);-webkit-backdrop-filter:blur(100px);backdrop-filter:blur(100px);height:54px;display:flex;align-items:center;justify-content:space-between;padding:0 16px}.buttons--m0009sdd{display:flex;align-items:center;gap:8px}.label--VlLhkZeC{font-weight:500}.cases--czpvOoLX,\n.projects--W1KI5fUu{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.content--rFWHJyEy{padding:0 16px 16px}.heading--jlFUCX5n{margin:26px 0 10px;color:rgba(0,0,0,0.6);line-height:20px}.tips--FzM5aSiq{font-size:12px;line-height:20px;color:rgba(0,0,0,0.35);margin:-3px 0 10px}.project--BSu5VIGZ{width:100%}.project--BSu5VIGZ::part(link){height:48px;background:rgba(255,255,255,0.5);border-radius:12px;border:1px solid rgba(255,255,255,0.4);display:flex;align-items:center;padding:0 16px;gap:6px;font-weight:500;color:#262626}.project--BSu5VIGZ::part(link):hover{color:var(--elevo-color-brand)}.tag--Hp8eFjie{display:inline-block;padding:0 4px;background:rgba(37,64,255,0.1);border-radius:4px;color:var(--elevo-color-brand)}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"node-replay\": `node-replay--RJPyOwC6`,\n\t\"finished\": `finished--DCI6ewIN`,\n\t\"chat\": `chat--YJT4RmwA`,\n\t\"bar\": `bar--Pae7qP58`,\n\t\"buttons\": `buttons--m0009sdd`,\n\t\"label\": `label--VlLhkZeC`,\n\t\"cases\": `cases--czpvOoLX`,\n\t\"projects\": `projects--W1KI5fUu`,\n\t\"content\": `content--rFWHJyEy`,\n\t\"heading\": `heading--jlFUCX5n`,\n\t\"tips\": `tips--FzM5aSiq`,\n\t\"project\": `project--BSu5VIGZ`,\n\t\"tag\": `tag--Hp8eFjie`\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, `.toolbar--ELlNUAti{position:absolute;display:flex;align-items:center;padding:3px 5px;-webkit-user-select:none;user-select:none;background:rgba(255,255,255,0.7);box-shadow:0px 3px 14px 0px rgba(0,0,0,0.1),0px 1px 4px 0px rgba(0,0,0,0.06);border-radius:8px;border:1px solid rgba(255,255,255,0.3)}.divider--JeH8feaX{background:rgba(0,0,0,0.15);width:1px;height:16px}.toolbar--ELlNUAti > :not(:last-child){margin-right:6px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"toolbar\": `toolbar--ELlNUAti`,\n\t\"divider\": `divider--JeH8feaX`\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, `.command--PjYZ4uqH{display:inline-block;background:rgba(37,64,255,0.06);border-radius:8px;color:#2540ff;padding:4px 6px;line-height:22px}.small--dUc9qGKv{padding:2px 6px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"command\": `command--PjYZ4uqH`,\n\t\"small\": `small--dUc9qGKv`\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, `.preview--sJLzdFVa{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2;background:#f9fafb;display:flex;flex-direction:column;align-items:center}.header--TIurJRMB{display:flex;align-items:center;justify-content:center;padding:16px 16px 80px}.body--DbDekAy2{display:flex;align-items:center;flex:1;min-height:0;width:100%;padding:0 16px}.aside--H9sLGJQ1{padding:0 16px}.aside--H9sLGJQ1 button{width:36px;height:36px;color:#595959}.content--x9hjJT92{flex:1;min-width:0;height:100%;overflow:hidden;display:flex;align-items:center;justify-content:center}.content--x9hjJT92 img{max-width:100%;max-height:100%;object-fit:contain}.footer--pNM7uUz2{display:flex;justify-content:center;overflow-x:auto;width:100%}.images--Aro5zeU2{list-style:none;margin:0;padding:38px 0;display:flex;align-items:center;height:154px;gap:8px}.images--Aro5zeU2 li{height:60px;width:60px;border:1px solid #e8e8e8;display:flex;align-items:center;justify-content:center;border-radius:8px;overflow:hidden;opacity:0.5;cursor:pointer;transition:width 0.15s ease-in-out,height 0.15s ease-in-out}.images--Aro5zeU2 li.active--zWUDZJUd{opacity:1;height:78px;width:78px}.images--Aro5zeU2 li:not(.active--zWUDZJUd):hover{opacity:0.7}.images--Aro5zeU2 img{max-height:100%;max-width:100%;object-fit:contain}.close--pVovgmNU{position:absolute;top:16px;right:16px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"preview\": `preview--sJLzdFVa`,\n\t\"header\": `header--TIurJRMB`,\n\t\"body\": `body--DbDekAy2`,\n\t\"aside\": `aside--H9sLGJQ1`,\n\t\"content\": `content--x9hjJT92`,\n\t\"footer\": `footer--pNM7uUz2`,\n\t\"images\": `images--Aro5zeU2`,\n\t\"active\": `active--zWUDZJUd`,\n\t\"close\": `close--pVovgmNU`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n UNTITLED = \"UNTITLED\",\n FILE_PREVIEW_UNPREVIEWABLE_TIP_PREFIX = \"FILE_PREVIEW_UNPREVIEWABLE_TIP_PREFIX\",\n FILE_PREVIEW_UNPREVIEWABLE_TIP_SUFFIX = \"FILE_PREVIEW_UNPREVIEWABLE_TIP_SUFFIX\",\n DOWNLOAD = \"DOWNLOAD\",\n SHOW_ALL_FILES = \"SHOW_ALL_FILES\",\n COLLAPSE = \"COLLAPSE\",\n}\n\nconst en: Locale = {\n UNTITLED: \"Untitled\",\n FILE_PREVIEW_UNPREVIEWABLE_TIP_PREFIX:\n \"This file is unpreviewable currently, you can\",\n FILE_PREVIEW_UNPREVIEWABLE_TIP_SUFFIX: \"and view it locally.\",\n DOWNLOAD: \"Download\",\n SHOW_ALL_FILES: \"Show all files\",\n COLLAPSE: \"Collapse\",\n};\n\nconst zh: Locale = {\n UNTITLED: \"未命名\",\n FILE_PREVIEW_UNPREVIEWABLE_TIP_PREFIX: \"该类型文件暂不支持预览,您可以\",\n FILE_PREVIEW_UNPREVIEWABLE_TIP_SUFFIX: \"查看。\",\n DOWNLOAD: \"下载\",\n SHOW_ALL_FILES: \"显示所有文件\",\n COLLAPSE: \"收起\",\n};\n\nexport const NS = \"bricks/ai-portal/FilePreview\";\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","// 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, `.expanded-view--Pl3PL2nR{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2;background:rgba(247,248,250,0.5);-webkit-backdrop-filter:blur(74px);backdrop-filter:blur(74px);padding:106px var(--page-padding-right) 40px var(--page-padding-left);overflow-y:auto;display:flex;flex-direction:column;align-items:center}.nav--dLWwzH3E{position:absolute;top:39px;left:50%;transform:translate(-50%,0);list-style:none;margin:0 0 25px;padding:4px;display:flex;justify-content:start;align-items:center;background:rgba(2,0,102,0.05);box-shadow:inset 0px 1px 2px 0px #cdd1d7;border-radius:21px;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px)}.nav-button--zv2Yj10m{display:flex;align-items:center;height:34px;padding:0 26px;background:none;border:none;color:#595959;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.nav-button--zv2Yj10m:not(:last-child){margin-right:12px}.nav-button--zv2Yj10m.active--MHyqtaKu{background:rgba(255,255,255,0.6);border-radius:20px;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);color:var(--elevo-color-brand);text-shadow:-0.02ex 0 0 currentColor,0.02ex 0 0 currentColor}.nav-button--zv2Yj10m:hover{color:var(--elevo-color-brand)}.body--edodw95r{width:100%;max-width:1556px}.body--edodw95r.small--Y90AL_bt{max-width:804px}.loading--UxfFogUY{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:48px;color:#fff}.buttons--ZZYyY2LU{position:absolute;top:24px;right:24px;display:flex;gap:12px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"expanded-view\": `expanded-view--Pl3PL2nR`,\n\t\"nav\": `nav--dLWwzH3E`,\n\t\"nav-button\": `nav-button--zv2Yj10m`,\n\t\"active\": `active--MHyqtaKu`,\n\t\"body\": `body--edodw95r`,\n\t\"small\": `small--Y90AL_bt`,\n\t\"loading\": `loading--UxfFogUY`,\n\t\"buttons\": `buttons--ZZYyY2LU`\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, `.view-toolbar--kVhd3X5H{display:flex;align-items:center;gap:8px}.button--f3fGXpYl{display:flex;background:none;border:none;padding:3px;cursor:pointer;color:#595959}.button-lucide--J7U9FEo_{font-size:16px;padding:2px}.button--f3fGXpYl:hover{color:var(--elevo-color-brand)}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"view-toolbar\": `view-toolbar--kVhd3X5H`,\n\t\"button\": `button--f3fGXpYl`,\n\t\"button-lucide\": `button-lucide--J7U9FEo_`\n};\nexport default ___CSS_LOADER_EXPORT___;\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]!./toolbar.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]!./toolbar.module.css\";\n export default content && content.locals ? content.locals : undefined;\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]!./CreatedView.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]!./CreatedView.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React, { useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { unstable_createRoot } from \"@next-core/runtime\";\nimport classNames from \"classnames\";\nimport { uniqueId } from \"lodash\";\nimport { convertView } from \"@next-shared/tsx-converter\";\nimport type { ModulePartOfComponent } from \"@next-shared/tsx-parser\";\nimport styles from \"./CreatedView.module.css\";\nimport sharedStyles from \"../../cruise-canvas/shared.module.css\";\nimport type { Job, ParsedView } from \"../../shared/interfaces\";\nimport { WrappedIcon } from \"../../shared/bricks\";\nimport { createPortal } from \"../../cruise-canvas/utils/createPortal\";\nimport { TaskContext } from \"../TaskContext\";\nimport { ICON_LOADING } from \"../constants\";\nimport { ViewToolbar } from \"./ViewToolbar\";\nimport type { BrickConf } from \"@next-core/types\";\n\nexport interface CreatedViewProps {\n job: Job;\n noHeading?: boolean;\n onSizeChange?: (size: \"medium\" | \"large\") => void;\n}\n\nexport function CreatedView({\n job,\n noHeading,\n onSizeChange,\n}: CreatedViewProps): JSX.Element {\n const rootId = useMemo(() => uniqueId(), []);\n const { workspace, manuallyUpdatedViews } = useContext(TaskContext);\n const ref = useRef<HTMLDivElement>(null);\n const rootRef = useRef<Awaited<\n ReturnType<typeof unstable_createRoot>\n > | null>(null);\n const generatedView = manuallyUpdatedViews?.get(job.id) ?? job.generatedView!;\n const [view, setView] = useState<ParsedView | null>(null);\n const canFeedback =\n !!view && !!generatedView.viewId && generatedView.from !== \"config\";\n\n useEffect(() => {\n setView(null);\n let ignore = false;\n generatedView.asyncConstructedView?.then((view) => {\n if (!ignore) {\n setView(view);\n }\n });\n return () => {\n ignore = true;\n };\n }, [generatedView]);\n\n useEffect(() => {\n const container = ref.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\n return () => {\n root.unmount();\n portal.remove();\n rootRef.current = null;\n };\n }, [rootId]);\n\n const [loading, setLoading] = useState(true);\n const [sizeLarge, setSizeLarge] = useState(false);\n\n useEffect(() => {\n setLoading(true);\n if (!view) {\n return;\n }\n let ignore = false;\n (async () => {\n try {\n const convertedView = await convertView(view, {\n rootId,\n workspace,\n withContexts: view.withContexts,\n });\n if (ignore) {\n return;\n }\n const { brick, context, functions, templates } = convertedView;\n\n setSizeLarge(preferSizeLarge(brick));\n\n await rootRef.current?.render(brick, { context, functions, templates });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to render view:\", error);\n }\n if (!ignore) {\n setLoading(false);\n }\n })();\n\n return () => {\n ignore = true;\n };\n }, [rootId, workspace, view]);\n\n useEffect(() => {\n onSizeChange?.(sizeLarge ? \"large\" : \"medium\");\n }, [onSizeChange, sizeLarge]);\n\n const viewTitle = useMemo(\n () => (view?.entry?.defaultExport as ModulePartOfComponent)?.title,\n [view]\n );\n\n return (\n <>\n {noHeading ? null : (\n <div className={styles.heading}>\n <div\n className={classNames(styles.title, {\n [sharedStyles[\"shine-text\"]]: view && loading,\n })}\n >\n {view ? viewTitle : <WrappedIcon {...ICON_LOADING} />}\n </div>\n <ViewToolbar job={job} canFeedback={canFeedback} />\n </div>\n )}\n <div data-root-id={rootId} ref={ref} />\n </>\n );\n}\n\nfunction traverseBricks(\n bricks: BrickConf[],\n callback: (bricks: BrickConf) => boolean\n) {\n for (const brick of bricks) {\n if (callback(brick)) {\n break;\n }\n if (Array.isArray(brick.children)) {\n traverseBricks(brick.children, callback);\n }\n }\n}\n\nfunction preferSizeLarge(brick: BrickConf | BrickConf[]): boolean {\n let large = false;\n traverseBricks(([] as BrickConf[]).concat(brick), (b) => {\n if (b.brick === \"eo-next-table\") {\n large = true;\n return true;\n }\n if (\n b.brick === \"div\" &&\n (b.properties?.dataset as Record<string, string>)?.component ===\n \"dashboard\"\n ) {\n const widgets = b.children;\n if (Array.isArray(widgets) && widgets.length >= 7) {\n large = true;\n return true;\n }\n }\n return false;\n });\n return large;\n}\n","import { useMemo } from \"react\";\nimport type { ActivityWithFlow, ServiceFlowRun } from \"./interfaces\";\n\nexport function useFlowAndActivityMap(serviceFlows: ServiceFlowRun[]) {\n return useMemo(() => {\n const flowMap = new Map<string, ServiceFlowRun>();\n const activityMap = new Map<string, ActivityWithFlow>();\n\n for (const flow of serviceFlows) {\n if (flow.taskId) {\n flowMap.set(flow.taskId, flow);\n }\n for (const stage of flow.spec) {\n for (const activity of stage.serviceFlowActivities) {\n if (activity.taskId) {\n activityMap.set(activity.taskId, { activity, flow });\n }\n }\n }\n }\n\n return { flowMap, activityMap };\n }, [serviceFlows]);\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]!./ViewToolbar.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]!./ViewToolbar.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n FULLSCREEN = \"FULLSCREEN\",\n FEEDBACK = \"FEEDBACK\",\n OPEN_PREVIEW = \"OPEN_PREVIEW\",\n}\n\nconst en: Locale = {\n FULLSCREEN: \"Fullscreen\",\n FEEDBACK: \"Feedback\",\n OPEN_PREVIEW: \"Open preview\",\n};\n\nconst zh: Locale = {\n FULLSCREEN: \"全屏\",\n FEEDBACK: \"反馈\",\n OPEN_PREVIEW: \"打开预览\",\n};\n\nexport const NS = \"bricks/ai-portal/CreatedView\";\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: experimental\nimport React, { useCallback, useContext } from \"react\";\nimport { getBasePath } from \"@next-core/runtime\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport styles from \"./ViewToolbar.module.css\";\nimport { WrappedIcon } from \"../../shared/bricks\";\nimport { K, locales, NS, t } from \"./i18n\";\nimport { TaskContext } from \"../TaskContext\";\nimport { ICON_FEEDBACK } from \"../constants\";\nimport { useViewFeedbackDone } from \"../useViewFeedbackDone\";\nimport { parseTemplate } from \"../parseTemplate\";\nimport type { Job } from \"../interfaces\";\n\ninitializeI18n(NS, locales);\n\nexport interface ViewToolbarProps {\n job: Job;\n canFeedback?: boolean;\n}\n\nexport function ViewToolbar({\n job,\n canFeedback: propCanFeedback,\n}: ViewToolbarProps) {\n const {\n previewUrlTemplate,\n showJsxEditor,\n setActiveExpandedViewJobId,\n setActiveJsxEditorJob,\n manuallyUpdatedViews,\n showFeedbackOnView,\n onFeedbackOnView,\n feedbackDoneViews,\n } = useContext(TaskContext);\n\n const generatedView = manuallyUpdatedViews?.get(job.id) ?? job.generatedView!;\n const feedbackDone =\n useViewFeedbackDone(generatedView.viewId, showFeedbackOnView) ||\n feedbackDoneViews?.has(generatedView.viewId);\n const canFeedback =\n propCanFeedback &&\n !!generatedView.viewId &&\n generatedView.from !== \"config\";\n\n const handleExpandClick = useCallback(() => {\n setActiveExpandedViewJobId(job.id);\n }, [job.id, setActiveExpandedViewJobId]);\n\n return (\n <div className={styles[\"view-toolbar\"]}>\n {showJsxEditor && (\n <button\n className={styles.button}\n onClick={() => {\n setActiveJsxEditorJob?.(job);\n }}\n >\n <WrappedIcon lib=\"antd\" icon=\"bug\" />\n </button>\n )}\n {showFeedbackOnView && !feedbackDone && canFeedback && (\n <button\n className={`${styles.button} ${styles[\"button-lucide\"]}`}\n title={t(K.FEEDBACK)}\n onClick={() => onFeedbackOnView?.(generatedView.viewId)}\n >\n <WrappedIcon {...ICON_FEEDBACK} />\n </button>\n )}\n {!!(\n generatedView.viewId &&\n !generatedView.withContexts &&\n previewUrlTemplate\n ) && (\n <button\n className={`${styles.button} ${styles[\"button-lucide\"]}`}\n title={t(K.OPEN_PREVIEW)}\n onClick={() => {\n window.open(\n `${getBasePath().slice(0, -1)}${parseTemplate(\n previewUrlTemplate,\n {\n viewId: generatedView.viewId,\n }\n )}`,\n \"_blank\"\n );\n }}\n >\n <WrappedIcon lib=\"lucide\" icon=\"external-link\" />\n </button>\n )}\n <button\n className={styles.button}\n title={t(K.FULLSCREEN)}\n onClick={handleExpandClick}\n >\n <WrappedIcon lib=\"easyops\" icon=\"expand\" />\n </button>\n </div>\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, `.human-action--WMMvJhMD{margin-top:22px}.canvas--mQCtCDkd{display:flex;justify-content:center;align-items:center;padding:24px 12px;background:rgba(62,67,102,0.05);box-shadow:0px 1px 0px 0px rgba(255,255,255,0.5);border-radius:9px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"human-action\": `human-action--WMMvJhMD`,\n\t\"canvas\": `canvas--mQCtCDkd`\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, `.shine-text--t2t9tIJp{color:transparent;background:linear-gradient(to right,var(--shine-text-color) 0%,var(--shine-text-color) 40%,var(--shine-text-highlight-color) 50%,var(--shine-text-color) 60%,var(--shine-text-color) 100%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;animation:shineText--ycIJ4nxc 2s infinite linear}@keyframes shineText--ycIJ4nxc{0%{background-position:-50% 50%}100%{background-position:-250% 50%}}.markdown--t5EHw6k4 a{color:var(--elevo-color-brand)}.markdown--t5EHw6k4 a:hover{color:var(--elevo-color-brand-hover)}.markdown--t5EHw6k4 a:active{color:var(--elevo-color-brand-active)}.markdown--t5EHw6k4 .shiki{font-family:\"Fira Code\",\"Fira Mono\",Menlo,Consolas,\"DejaVu Sans Mono\",monospace;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none;font-size:13px;padding:1em;margin:0.5em 0;overflow-x:auto;border-radius:9px}.markdown--t5EHw6k4 .shiki.light-plus{background:hsl(230,1%,98%)!important}.markdown--t5EHw6k4 table{width:100%;overflow-x:auto;border-collapse:collapse}.markdown--t5EHw6k4 tr{border-top:1px solid #ccd1de}.markdown--t5EHw6k4 td,.markdown--t5EHw6k4 th{border:1px solid #ccd1de;padding:6px 13px}.markdown--t5EHw6k4{overflow-wrap:break-word}.markdown--t5EHw6k4:not(:first-child){margin-top:6px}.markdown--t5EHw6k4 p{margin:1em 0}.markdown--t5EHw6k4 > :first-child,\n.markdown-wrapper--TGg3xHyX > :first-child{margin-top:0}.markdown--t5EHw6k4 > :last-child,\n.markdown-wrapper--TGg3xHyX > :last-child{margin-bottom:0}.table-container--hekbaxrD{padding:8px 8px 10px;border-radius:12px;border:1px solid #e2e2ec;background:#ffffff}.table-container--hekbaxrD:not(:first-child){margin-top:6px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"shine-text\": `shine-text--t2t9tIJp`,\n\t\"shineText\": `shineText--ycIJ4nxc`,\n\t\"markdown\": `markdown--t5EHw6k4`,\n\t\"markdown-wrapper\": `markdown-wrapper--TGg3xHyX`,\n\t\"table-container\": `table-container--hekbaxrD`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { InstanceApi_getDetail } from \"@next-api-sdk/cmdb-sdk\";\nimport { useEffect, useState } from \"react\";\n\nconst cache = new Map<string, Promise<boolean>>();\n\nexport function useViewFeedbackDone(\n viewId: string | undefined,\n showFeedbackOnView?: boolean\n) {\n const [done, setDone] = useState(true);\n\n useEffect(() => {\n if (!viewId || !showFeedbackOnView) {\n setDone(true);\n return;\n }\n let promise = cache.get(viewId);\n if (promise === undefined) {\n promise = fetchViewFeedbackDone(viewId);\n cache.set(viewId, promise);\n }\n let ignore = false;\n promise.then((value) => {\n if (!ignore) {\n setDone(value);\n }\n });\n return () => {\n ignore = true;\n };\n }, [viewId, showFeedbackOnView]);\n\n return done;\n}\n\nasync function fetchViewFeedbackDone(viewId: string): Promise<boolean> {\n const response = await InstanceApi_getDetail(\n \"LLM_WEB_VIEW_INFO@EASYOPS\",\n viewId,\n {\n fields: \"feedback.instanceId\",\n },\n {\n priority: \"low\",\n }\n );\n return !!response?.feedback?.length;\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]!./NodeFeedback.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]!./NodeFeedback.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n YES = \"YES\",\n NO = \"NO\",\n SUBMIT = \"SUBMIT\",\n RESET = \"RESET\",\n FEEDBACK_NODE_TITLE = \"FEEDBACK_NODE_TITLE\",\n PROBLEM_FEEDBACK = \"PROBLEM_FEEDBACK\",\n PROBLEM_FEEDBACK_PLACEHOLDER = \"PROBLEM_FEEDBACK_PLACEHOLDER\",\n IS_THE_TASK_PLAN_COMPLETE = \"IS_THE_TASK_PLAN_COMPLETE\",\n IS_THE_TASK_PLAN_LOGICALLY_CORRECT = \"IS_THE_TASK_PLAN_LOGICALLY_CORRECT\",\n ARE_THE_TASK_PLAN_STEPS_CONCISE = \"ARE_THE_TASK_PLAN_STEPS_CONCISE\",\n ARE_THE_ANALYTICAL_CONCLUSIONS_ACCURATE = \"ARE_THE_ANALYTICAL_CONCLUSIONS_ACCURATE\",\n IS_THE_EVIDENCE_SUPPORTING_THE_CONCLUSIONS_SUFFICIENT = \"IS_THE_EVIDENCE_SUPPORTING_THE_CONCLUSIONS_SUFFICIENT\",\n THANKS_FOR_YOUR_FEEDBACK = \"THANKS_FOR_YOUR_FEEDBACK\",\n}\n\nconst en: Locale = {\n YES: \"Yes\",\n NO: \"No\",\n SUBMIT: \"Submit\",\n RESET: \"Reset\",\n FEEDBACK_NODE_TITLE: \"How do you think Elevo has done this task?\",\n PROBLEM_FEEDBACK: \"Problem feedback\",\n PROBLEM_FEEDBACK_PLACEHOLDER: \"Please describe the problem you encountered.\",\n IS_THE_TASK_PLAN_COMPLETE: \"Is the task plan complete:\",\n IS_THE_TASK_PLAN_LOGICALLY_CORRECT: \"Is the task plan logically correct:\",\n ARE_THE_TASK_PLAN_STEPS_CONCISE: \"Are the task plan steps concise:\",\n ARE_THE_ANALYTICAL_CONCLUSIONS_ACCURATE:\n \"Are the analytical conclusions accurate:\",\n IS_THE_EVIDENCE_SUPPORTING_THE_CONCLUSIONS_SUFFICIENT:\n \"Is the evidence supporting the conclusions sufficient:\",\n THANKS_FOR_YOUR_FEEDBACK: \"Thank you for helping us become better.\",\n};\n\nconst zh: Locale = {\n YES: \"是\",\n NO: \"否\",\n SUBMIT: \"提交\",\n RESET: \"重置\",\n FEEDBACK_NODE_TITLE: \"Elevo 完成这项任务的效果如何?\",\n PROBLEM_FEEDBACK: \"问题反馈\",\n PROBLEM_FEEDBACK_PLACEHOLDER: \"欢迎留下您的意见\",\n IS_THE_TASK_PLAN_COMPLETE: \"任务计划是否完备:\",\n IS_THE_TASK_PLAN_LOGICALLY_CORRECT: \"任务计划是否逻辑正确:\",\n ARE_THE_TASK_PLAN_STEPS_CONCISE: \"任务计划步骤是否精简:\",\n ARE_THE_ANALYTICAL_CONCLUSIONS_ACCURATE: \"分析结论是否准确:\",\n IS_THE_EVIDENCE_SUPPORTING_THE_CONCLUSIONS_SUFFICIENT:\n \"结论的支撑证据是否充足:\",\n THANKS_FOR_YOUR_FEEDBACK: \"感谢你帮我们变得更好。\",\n};\n\nexport const NS = \"bricks/ai-portal/NodeFeedback\";\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: experimental\nimport React, { useCallback, useContext, useRef, useState } from \"react\";\nimport classNames from \"classnames\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport styles from \"./NodeFeedback.module.css\";\nimport { K, locales, NS, t } from \"./i18n\";\nimport { WrappedButton, WrappedIconButton } from \"../bricks\";\nimport { ICON_CLOSE } from \"../constants\";\nimport { TaskContext } from \"../TaskContext\";\n\ninitializeI18n(NS, locales);\n\nlet checks:\n | Array<{\n label: string;\n value: string;\n group: \"plan\" | \"result\";\n }>\n | undefined;\n\nfunction getChecks() {\n if (!checks) {\n checks = [\n {\n label: `1. ${t(K.IS_THE_TASK_PLAN_COMPLETE)}`,\n value: \"计划完备\",\n group: \"plan\",\n },\n {\n label: `2. ${t(K.IS_THE_TASK_PLAN_LOGICALLY_CORRECT)}`,\n value: \"逻辑正确\",\n group: \"plan\",\n },\n {\n label: `3. ${t(K.ARE_THE_TASK_PLAN_STEPS_CONCISE)}`,\n value: \"步骤精简\",\n group: \"plan\",\n },\n {\n label: `4. ${t(K.ARE_THE_ANALYTICAL_CONCLUSIONS_ACCURATE)}`,\n value: \"结论准确\",\n group: \"result\",\n },\n {\n label: `5. ${t(K.IS_THE_EVIDENCE_SUPPORTING_THE_CONCLUSIONS_SUFFICIENT)}`,\n value: \"支撑证据充足\",\n group: \"result\",\n },\n ];\n }\n return checks;\n}\n\nexport interface NodeFeedbackProps {\n className?: string;\n}\n\nexport function NodeFeedback({ className }: NodeFeedbackProps): JSX.Element {\n const {\n submittingFeedback,\n submittedFeedback,\n setShowFeedback,\n onSubmitFeedback,\n } = useContext(TaskContext);\n const formRef = useRef<HTMLFormElement>(null);\n const checks = getChecks();\n const [triedSubmit, setTriedSubmit] = useState(false);\n\n const handleSubmit = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n setTriedSubmit(true);\n if (!formRef.current?.reportValidity()) {\n return;\n }\n const formData = new FormData(formRef.current!);\n const plan: string[] = [];\n const result: string[] = [];\n for (let i = 0; i < checks.length; i++) {\n const value = formData.get(`feedback-check-${i}`);\n if (value) {\n if (checks[i].group === \"plan\") {\n plan.push(value as string);\n } else {\n result.push(value as string);\n }\n }\n }\n onSubmitFeedback({\n plan,\n result,\n feedback: (formData.get(\"feedback\") ?? \"\") as string,\n });\n },\n [checks, onSubmitFeedback]\n );\n\n const handleReset = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n setTriedSubmit(false);\n formRef.current?.reset();\n }, []);\n\n if (submittedFeedback) {\n return (\n <div\n className={classNames(\n styles[\"node-feedback\"],\n styles.submitted,\n className\n )}\n >\n {t(K.THANKS_FOR_YOUR_FEEDBACK)}\n </div>\n );\n }\n\n return (\n <div className={classNames(styles[\"node-feedback\"], className)}>\n <div className={styles.heading}>\n <div className={styles.title}>{t(K.FEEDBACK_NODE_TITLE)}</div>\n <WrappedIconButton\n icon={ICON_CLOSE}\n variant=\"mini\"\n onClick={() => setShowFeedback(false)}\n />\n </div>\n <form\n className={classNames(styles.form, { [styles.validate]: triedSubmit })}\n ref={formRef}\n >\n {checks.map((check, index) => (\n <div\n key={index}\n className={`${styles[\"form-item\"]} ${styles.horizontal}`}\n >\n <div className={styles.label}>{check.label}</div>\n <div className={styles.options}>\n <label className={styles.radio}>\n <input\n type=\"radio\"\n required\n name={`feedback-check-${index}`}\n value={check.value}\n />\n <span>{t(K.YES)}</span>\n </label>\n <label className={styles.radio}>\n <input\n type=\"radio\"\n required\n name={`feedback-check-${index}`}\n value=\"\"\n />\n <span>{t(K.NO)}</span>\n </label>\n </div>\n </div>\n ))}\n <div className={`${styles[\"form-item\"]} ${styles.vertical}`}>\n <label htmlFor=\"feedback-content\">{t(K.PROBLEM_FEEDBACK)}</label>\n <textarea\n id=\"feedback-content\"\n name=\"feedback\"\n placeholder={t(K.PROBLEM_FEEDBACK_PLACEHOLDER)}\n rows={2}\n />\n </div>\n <div className={styles.submit}>\n <WrappedButton themeVariant=\"elevo\" type=\"text\" onClick={handleReset}>\n {t(K.RESET)}\n </WrappedButton>\n <WrappedButton\n themeVariant=\"elevo\"\n type=\"primary\"\n shape=\"round\"\n onClick={handleSubmit}\n disabled={submittingFeedback}\n >\n {t(K.SUBMIT)}\n </WrappedButton>\n </div>\n </form>\n </div>\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, `.files--CibolWoq{display:grid;grid-template-columns:repeat(auto-fit,minmax(204px,1fr));gap:4px;list-style:none;margin:12px 0 0;padding:0}.large--ucsZMWES{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.file--VpyjvXGt{background:rgba(0,0,0,0.04);border-radius:6px;display:flex;height:60px;align-items:center;padding:0 14px}.file--VpyjvXGt,\n.file--VpyjvXGt:hover{color:var(--elevo-color-brand)}.file--VpyjvXGt:hover{background:rgba(0,0,0,0.08)}.content--aY05qnew{min-width:0;flex:1}.icon--TVyjPp5x{margin-right:11px}.name--FehravZW,\n.metadata--ntXgq62x{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.name--FehravZW{color:rgba(0,0,0,0.88)}.metadata--ntXgq62x{color:rgba(0,0,0,0.45);font-size:12px;margin-top:3px}.chat--Vk4IEN60{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-left:auto;margin-top:12px;width:-moz-fit-content;width:fit-content}.chat--Vk4IEN60.images--k6XJWVhb{max-width:412px}.chat--Vk4IEN60:not(.images--k6XJWVhb){gap:8px;max-width:766px}.chat--Vk4IEN60 .file--VpyjvXGt{width:250px}.images--k6XJWVhb{display:flex;flex-wrap:wrap}.images--k6XJWVhb > li{width:100px;height:100px}.images--k6XJWVhb.single--cqRGD9YQ > li{width:200px;height:200px}.image--fvQwfADO{border:1px solid rgba(0,0,0,0.1);border-radius:6px;width:100%;height:100%;display:flex;align-items:center;justify-content:center;cursor:zoom-in;position:relative}.image--fvQwfADO img{max-width:100%;max-height:100%;object-fit:contain}.mask--K81A9CNt{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,0.18);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:6px}.overlay--g3Xz6kGg{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;cursor:pointer;font-weight:500;font-size:20px;color:#fff}.expand--JhudzGgf{font-size:12px;color:rgba(0,0,0,0.45);display:flex;align-items:center;gap:6px;margin:12px auto 0;background:none;border:none;cursor:pointer}.chat--Vk4IEN60 + .expand--JhudzGgf{margin-right:0}.files--CibolWoq:not(.chat--Vk4IEN60) + .expand--JhudzGgf eo-icon{display:none}.expand--JhudzGgf:hover{color:rgba(0,0,0,0.65)}.expand--JhudzGgf:focus{outline:none}.expand--JhudzGgf.collapsed--rqhtueyy eo-icon{transform:rotate(180deg)}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"files\": `files--CibolWoq`,\n\t\"large\": `large--ucsZMWES`,\n\t\"file\": `file--VpyjvXGt`,\n\t\"content\": `content--aY05qnew`,\n\t\"icon\": `icon--TVyjPp5x`,\n\t\"name\": `name--FehravZW`,\n\t\"metadata\": `metadata--ntXgq62x`,\n\t\"chat\": `chat--Vk4IEN60`,\n\t\"images\": `images--k6XJWVhb`,\n\t\"single\": `single--cqRGD9YQ`,\n\t\"image\": `image--fvQwfADO`,\n\t\"mask\": `mask--K81A9CNt`,\n\t\"overlay\": `overlay--g3Xz6kGg`,\n\t\"expand\": `expand--JhudzGgf`,\n\t\"collapsed\": `collapsed--rqhtueyy`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { getBasePath } from \"@next-core/runtime\";\n\nexport function getImageUrl(uri: string): string {\n return new URL(uri, `${location.origin}${getBasePath()}`).toString();\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]!./NodeReplay.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]!./NodeReplay.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n WATCH_AGAIN = \"WATCH_AGAIN\",\n TRY_IT_OUT = \"TRY_IT_OUT\",\n CASE_REPLAYING = \"CASE_REPLAYING\",\n CASE_REPLAY_FINISHED = \"CASE_REPLAY_FINISHED\",\n SKIP_TO_RESULTS = \"SKIP_TO_RESULTS\",\n OTHER_CASES = \"OTHER_CASES\",\n PROJECT_TIPS = \"PROJECT_TIPS\",\n GET_STARTED_WITH_PROJECTS_PREFIX = \"GET_STARTED_WITH_PROJECTS_PREFIX\",\n PROJECTS = \"PROJECTS\",\n GET_STARTED_WITH_PROJECTS_SUFFIX = \"GET_STARTED_WITH_PROJECTS_SUFFIX\",\n}\n\nconst en: Locale = {\n WATCH_AGAIN: \"Watch again\",\n TRY_IT_OUT: \"Try it out\",\n CASE_REPLAYING: \"The case is replaying...\",\n CASE_REPLAY_FINISHED: \"The case replay has finished.\",\n SKIP_TO_RESULTS: \"Skip to results\",\n OTHER_CASES: \"Other cases\",\n PROJECT_TIPS:\n \"Start your project collaboration journey and achieve shared goals with team members and AI employees.\",\n GET_STARTED_WITH_PROJECTS_PREFIX: \"Get started with \",\n PROJECTS: \"Projects\",\n GET_STARTED_WITH_PROJECTS_SUFFIX: \"\",\n};\n\nconst zh: Locale = {\n WATCH_AGAIN: \"再次观看\",\n TRY_IT_OUT: \"尝试同款\",\n CASE_REPLAYING: \"案例回放中...\",\n CASE_REPLAY_FINISHED: \"案例回放完成\",\n SKIP_TO_RESULTS: \"跳转到结果\",\n OTHER_CASES: \"其他案例\",\n PROJECT_TIPS:\n \"开启项目协作之旅,和团队成员及多位AI数字人一起实现共同制定的目标。\",\n GET_STARTED_WITH_PROJECTS_PREFIX: \"开启 \",\n PROJECTS: \"项目\",\n GET_STARTED_WITH_PROJECTS_SUFFIX: \" 体验\",\n};\n\nexport const NS = \"bricks/ai-portal/NodeReplay\";\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, { useContext } from \"react\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport styles from \"./NodeReplay.module.css\";\nimport {\n WrappedButton,\n WrappedIcon,\n WrappedLink,\n WrappedShowCase,\n} from \"../../shared/bricks\";\nimport { TaskContext } from \"../../shared/TaskContext\";\nimport { ICON_LOADING } from \"../../shared/constants\";\nimport { K, locales, NS, t } from \"./i18n\";\nimport projectIcon from \"./project@2x.png\";\nimport classNames from \"classnames\";\n\ninitializeI18n(NS, locales);\n\nexport interface NodeReplayProps {\n finished?: boolean;\n ui?: \"chat\" | \"canvas\";\n}\n\nexport function NodeReplay({ finished, ui }: NodeReplayProps) {\n const {\n conversationId,\n showCases,\n exampleProjects,\n skipToResults,\n watchAgain,\n tryItOut,\n } = useContext(TaskContext);\n\n return (\n <div\n className={classNames(styles[\"node-replay\"], {\n [styles.finished]: finished,\n [styles.chat]: ui === \"chat\",\n })}\n >\n <div className={styles.bar}>\n <div className={styles.label}>\n {finished ? t(K.CASE_REPLAY_FINISHED) : t(K.CASE_REPLAYING)}\n </div>\n <div className={styles.buttons}>\n {finished ? (\n <WrappedButton themeVariant=\"elevo\" onClick={watchAgain}>\n {t(K.WATCH_AGAIN)}\n </WrappedButton>\n ) : (\n <WrappedButton themeVariant=\"elevo\" onClick={skipToResults}>\n {t(K.SKIP_TO_RESULTS)}\n </WrappedButton>\n )}\n <WrappedButton type=\"primary\" themeVariant=\"elevo\" onClick={tryItOut}>\n {t(K.TRY_IT_OUT)}\n </WrappedButton>\n </div>\n </div>\n {finished && (\n <div className={styles.content}>\n {!showCases ||\n (showCases.length > 0 && (\n <>\n <div className={styles.heading}>{t(K.OTHER_CASES)}</div>\n {showCases ? (\n <ul className={styles.cases}>\n {showCases\n .filter((item) => item.conversationId !== conversationId)\n .slice(0, 3)\n .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 <WrappedIcon className={styles.loading} {...ICON_LOADING} />\n )}\n </>\n ))}\n {!exampleProjects ||\n (exampleProjects.length > 0 && (\n <>\n <div className={styles.heading}>\n {t(K.GET_STARTED_WITH_PROJECTS_PREFIX)}\n <span className={styles.tag}>{t(K.PROJECTS)}</span>\n {t(K.GET_STARTED_WITH_PROJECTS_SUFFIX)}\n </div>\n <div className={styles.tips}>{t(K.PROJECT_TIPS)}</div>\n {exampleProjects ? (\n <ul className={styles.projects}>\n {exampleProjects.slice(0, 2).map((item) => (\n <li key={item.instanceId}>\n <WrappedLink className={styles.project} url={item.url}>\n <img src={projectIcon} width={16} height={16} />\n {item.name}\n </WrappedLink>\n </li>\n ))}\n </ul>\n ) : (\n <WrappedIcon className={styles.loading} {...ICON_LOADING} />\n )}\n </>\n ))}\n </div>\n )}\n </div>\n );\n}\n"],"names":["useFulfilledActiveDetail","activeDetail","jobMap","flowMap","activityMap","useMemo","type","job","get","id","flow","activityWithFlow","activity","downloadFile","file","bytes","uri","mimeType","name","filename","t","K","UNTITLED","saveAs","Blob","Uint8Array","from","atob","c","charCodeAt","link","document","createElement","href","getImageUrl","download","target","body","appendChild","click","removeChild","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","undefined","ImagesPreview","_ref","images","files","currentFile","setCurrentFile","useState","setActiveImages","useContext","TaskContext","useEffect","go","useCallback","diff","newIndex","indexOf","length","onKeyDown","e","key","preventDefault","stopPropagation","addEventListener","removeEventListener","React","className","styles","preview","header","WrappedIconButton","icon","ICON_DOWNLOAD","onClick","DOWNLOAD","aside","floatingStyles","WrappedIcon","lib","content","src","alt","footer","map","f","index","isActive","active","fetchPriority","close","ICON_CLOSE","___CSS_LOADER_EXPORT___","push","module","WrappedCodeWrapper","wrapBrick","MarkdownPre","_props$className","node","props","preProps","showCopyButton","includes","themeVariant","cache","Map","fetchEmployee","aiEmployeeId","cached","promise","async","_response$list","employee","ElevoApi_listElevoAiEmployees","employeeId","list","doFetchEmployee","set","components","pre","shikiOptions","theme","EnhancedMarkdown","ref","useRef","setHoverOnScrollableContent","CanvasContext","handleMouseMove","found","el","nativeEvent","composedPath","current","HTMLTableElement","HTMLPreElement","scrollWidth","clientWidth","handleMouseLeave","onMouseMove","onMouseLeave","MarkdownComponent","_extends","shiki","WrappedButton","WrappedLink","WrappedDrawer","onClose","onOpen","WrappedChatInput","onChatSubmit","onTerminate","WrappedShowCase","WrappedCodeBlock","WrappedBlankState","WrappedRunningFlow","onActiveChange","showDialog","unwrapProvider","createContext","onNodeResize","setActiveNodeId","hoverOnScrollableContent","useHandleEscape","activeExpandedViewJobId","activeFile","activeImages","subActiveDetail","setActiveFile","setActiveExpandedViewJobId","setActiveDetail","setSubActiveDetail","compositionRef","onCompositionStart","onCompositionEnd","RequestHumanAction","action","ui","humanInput","replay","disabled","setDisabled","classNames","canvas","shape","confirmText","FilePreview","getMimeTypeByFilename","status","setStatus","setContent","isMarkdown","embeddable","isImage","startsWith","revokeUrl","ignore","response","fetch","ok","Error","statusText","text","blob","URL","createObjectURL","error","console","revokeObjectURL","title","toolbar","toolbarStyles","divider","loading","ICON_LOADING","imageUnpreviewable","width","height","FILE_PREVIEW_UNPREVIEWABLE_TIP_PREFIX","FILE_PREVIEW_UNPREVIEWABLE_TIP_SUFFIX","image","embed","markdown","shareStyles","initializeI18n","NS","locales","ToolProgressLine","progress","failed","data","step","axis","line","dot","count","total","description","message","getToolDataProgress","toolCallMessages","progressPart","findLast","_message$parts","parts","part","_part$data","ToolCallStatus","_toolCall$annotations","variant","separateInstructions","toolCall","toolTitle","annotations","jobTitle","instruction","hasToolCallResponse","_job$messages","messages","filter","msg","role","some","readOnly","handleClick","newActiveDetail","prev","isEqual","toolState","state","isError","prefix","spinning","startTime","timing","humanizeTime","HumanizeTimeFormat","accurate","endTime","moment","humanize","ss","DONE_STATES","GENERAL_DONE_STATES","NON_WORKING_STATES","ICON_CANVAS","ICON_CHAT","ICON_FEEDBACK","ICON_EXTERNAL_LINK","ICON_UP","LIST_SPLIT_THRESHOLD","SHOW_AS_TABLE_THRESHOLD","BUILTIN_FN_STRINGIFY","CmdbInstanceDetail","objectId","detail","outputSchema","rootId","uniqueId","rootRef","container","portal","createPortal","root","unstable_createRoot","supportsUseChildren","unmount","remove","setLoading","_rootRef$current","bricks","context","_schema","schema","JSON","parse","modals","value","builtinFnStringify","convertArrayOfObjects","valueAccessor","label","idPrefix","needContext","_props$","getOrderedProps","modalId","normalizeIdentifier","contextId","modal","brick","properties","dataset","modalTitle","hideCancelButton","maskClosable","keyboard","columns","tableChildren","k","v","useChildren","items","upperFirst","slot","convertObject","dataIndex","children","dataSource","pagination","bordered","clickHandler","args","method","if","style","display","alignItems","gap","textContent","stringify","outline","cursor","events","_props$2","column","_ref2","field","Object","entries","_ref3","def","isEmptyValue","Array","isArray","contextName","useBrick","isComplexType","join","isObject","keys","convertCmdbInstanceDetail","render","hasOwnProperty","identifier","replace","String","_schema$required","required","propKeys","orderBy","_ref4","requiredIndex","FileList","large","filesWithDisplayInfo","displayType","getFileTypeAndIcon","imageFiles","allImages","limit","exceeded","expanded","setExpanded","filteredList","slice","single","chat","mask","overlay","metadata","size","formatFileSize","expand","collapsed","COLLAPSE","SHOW_ALL_FILES","getOrderedNodes","nodes","downstreamMap","roots","rootChildren","childMap","parent","_node$upstream2","up","_node$upstream","upstream","downstream","visitedNodes","Set","queue","leaves","shift","has","add","getFlatChunks","tasks","errors","skipActivitySubTasks","taskTree","taskIds","taskMap","processedTaskMap","taskId","task","jobs","buildTaskTreeNode","processedTask","jobIds","jobId","subTaskId","subTask","getTaskTree","chunks","collectChunks","taskNode","level","shouldSkip","every","hil","fromSkippedSubTask","taskErrors","collectJobs","bundledLanguages","json","javascript","js","typescript","ts","html","html-derivative","xml","css","md","mermaid","mmd","jsx","tsx","shellscript","bash","sh","shell","zsh","python","py","sql","bundledThemes","lightPlus","darkPlus","createHighlighter","createdBundledHighlighter","langs","themes","engine","createOnigurumaEngine","codeToHtml","codeToHast","codeToTokensBase","codeToTokens","codeToTokensWithThemes","getSingletonHighlighter","getLastGrammarState","createSingletonShorthands","guessEmbeddedLanguages","code","lang","mermaidPromise","parser","DOMParser","serializer","XMLSerializer","rehypeMermaid","promises","visit","tree","tagName","classListItem","toLowerCase","getCodeLanguage","svg","default","initialize","startOnLoad","themeVariables","fontSize","lineColor","primaryColor","primaryBorderColor","doLoadMermaid","toString","_document$getElementB","getElementById","parseFromString","svgElement","querySelector","defs","createElementNS","innerHTML","prepend","modifiedSvg","serializeToString","replacements","fromHtmlIsomorphic","fragment","splice","concat","Promise","all","production","Fragment","jsxs","preloadHighlighter","_shiki$theme","reactContent","setReactContent","highlighter","vFile","unified","use","remarkParse","remarkGfm","remarkToRehype","rehypeShikiFromHighlighter","lazy","defaultLanguage","rehypeReact","passNode","process","result","MIME_TYPES","unit","pipes","unitFormat","number","Math","round","fileOther","fileText","filePdf","fileDoc","fileXls","filePpt","_MIME_TYPES$get","ext","matches","match","ExpandedView","_manuallyUpdatedViews","_views$find","views","workspace","previewUrlTemplate","manuallyUpdatedViews","showFeedbackOnView","onFeedbackOnView","feedbackDoneViews","containerRef","generatedView","find","view","feedbackDone","useViewFeedbackDone","viewId","setView","canFeedback","viewsWithTitle","setViewsWithTitle","_generatedView$asyncC","asyncConstructedView","then","_view$entry","entry","defaultExport","convertedView","convertView","withContexts","functions","templates","handleClose","nav","_view$title","buttons","window","open","getBasePath","parseTemplate","NS_LIBS_DATETIME","YESTERDAY","TODAY","FUTURE_AFTER","FORMAT_MEDIUM_DATETIME","FORMAT_MEDIUM_DATE","FORMAT_SHORT_DATETIME","FORMAT_SHORT_DATE","FORMAT_SHORT_DAY_DATETIME","FORMAT_SHORT_DAY_DATE","MONTHS","HOURS","SECONDS","MILL_SECONDS","DAYS","MINUTES","en","zh","time","format","arguments","auto","Infinity","m","now","fFull","fMedium","i18n","fShort","fShort24","fDefault","full","relative","past","min","future","max","getAccurateTime","toFixed","_text","retVal","year","isBefore","clone","isSame","template","_match","trim","mergeJobs","previousJobs","jobsPatch","jobPatch","_jobs$findIndex","_jobs","previousJobIndex","findIndex","messagesPatch","originalArguments","argumentsParseFailed","argumentsParseError","_patch$toolCall","patch","getJobGeneratedView","mergeMessages","_restMessagesPatch$to","_restMessagesPatch$to2","_previousJob$toolCall","_restMessagesPatch$st","previousJob","restMessagesPatch","pick","_previousJob$messages","getJobStaticDataView","RESPONSE","getJobStaticDataResponse","getAsyncConstructedView","isMatch","merged","previousRole","lastMessage","mergeMessageParts","previousType","previousDataType","_part$data2","_part$data3","isStaticData","mergeSpec","previousSpec","flowPatch","fullSpec","spec","mergedSpec","stagePatch","stageIndex","s","_stage$serviceFlowAct","stage","serviceFlowActivities","activities","mergeActivities","previousActivities","activitiesPatch","activityPatch","activityIndex","rootReducer","reducers","conversation","payload","finished","tasksPatch","_taskPatch$aiEmployee","taskPatch","previousTaskIndex","previousTask","lastError","serviceFlows","serviceFlowsPatch","previousFlowIndex","previousFlow","fromEntries","MINIMAL_DELAY","useConversationDetail","conversationId","initialRequest","replayDelay","dispatch","useReducer","humanInputRef","replayListRef","replayRef","replayDelayRef","replayResolveRef","skipToResults","watchAgain","previousTime","isInitial","delay","resolve","setTimeout","ctrl","requesting","makeRequest","extra","AbortController","sseRequest","createSSEStream","signal","headers","stream","handleHttpError","cmd","_ctrl","abort","getFixedT","ChatBox","canChat","supports","uploadOptions","terminating","setTerminating","handleTerminate","CONFIRM_TO_TERMINATE_THE_TASK_TITLE","placeholder","SEND_MESSAGE","autoFocus","submitDisabled","supportsTerminate","intercept","worker","getRemoteTsxParserWorker","parseView","onShare","submittingFeedback","submittedFeedback","onSubmitFeedback","setShowFeedback","ReadableCommand","mentionedAiEmployeeId","getInitialContent","command","small","serviceFlowStarting","flowName","spaceName","Boolean","CreatedView","noHeading","onSizeChange","sizeLarge","setSizeLarge","traverseBricks","b","_b$properties","component","widgets","preferSizeLarge","viewTitle","heading","sharedStyles","ViewToolbar","callback","useFlowAndActivityMap","propCanFeedback","showJsxEditor","setActiveJsxEditorJob","handleExpandClick","button","FEEDBACK","OPEN_PREVIEW","FULLSCREEN","done","setDone","_response$feedback","InstanceApi_getDetail","fields","priority","feedback","fetchViewFeedbackDone","checks","getChecks","IS_THE_TASK_PLAN_COMPLETE","group","IS_THE_TASK_PLAN_LOGICALLY_CORRECT","ARE_THE_TASK_PLAN_STEPS_CONCISE","ARE_THE_ANALYTICAL_CONCLUSIONS_ACCURATE","IS_THE_EVIDENCE_SUPPORTING_THE_CONCLUSIONS_SUFFICIENT","NodeFeedback","formRef","triedSubmit","setTriedSubmit","handleSubmit","_formRef$current","_formData$get","reportValidity","formData","FormData","plan","i","handleReset","_formRef$current2","reset","submitted","THANKS_FOR_YOUR_FEEDBACK","FEEDBACK_NODE_TITLE","form","validate","check","horizontal","radio","YES","NO","vertical","htmlFor","PROBLEM_FEEDBACK","PROBLEM_FEEDBACK_PLACEHOLDER","rows","submit","RESET","SUBMIT","location","origin","NodeReplay","showCases","exampleProjects","tryItOut","bar","CASE_REPLAY_FINISHED","CASE_REPLAYING","WATCH_AGAIN","SKIP_TO_RESULTS","TRY_IT_OUT","OTHER_CASES","cases","item","caseTitle","summary","url","GET_STARTED_WITH_PROJECTS_PREFIX","tag","PROJECTS","GET_STARTED_WITH_PROJECTS_SUFFIX","tips","PROJECT_TIPS","projects","instanceId","project","projectIcon"],"sourceRoot":""}
|