@next-bricks/ai-portal 0.65.3 → 0.65.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/bricks.json +30 -28
  2. package/dist/chunks/1999.f9846bc3.js +2 -0
  3. package/dist/chunks/1999.f9846bc3.js.map +1 -0
  4. package/dist/chunks/{2742.3340a00e.js → 2742.64fa013f.js} +2 -2
  5. package/dist/chunks/2742.64fa013f.js.map +1 -0
  6. package/dist/chunks/3186.f231329a.js +2 -0
  7. package/dist/chunks/3186.f231329a.js.map +1 -0
  8. package/dist/chunks/4208.a1a0dfdd.js +2 -0
  9. package/dist/chunks/4208.a1a0dfdd.js.map +1 -0
  10. package/dist/chunks/4864.a9badd21.js +2 -0
  11. package/dist/chunks/4864.a9badd21.js.map +1 -0
  12. package/dist/chunks/{5452.e451b025.js → 5452.bb5140b0.js} +2 -2
  13. package/dist/chunks/5452.bb5140b0.js.map +1 -0
  14. package/dist/chunks/{chat-panel.e8afa537.js → chat-panel.3b7afbd5.js} +2 -2
  15. package/dist/chunks/chat-panel.3b7afbd5.js.map +1 -0
  16. package/dist/chunks/{chat-stream.cef88ead.js → chat-stream.393c8241.js} +2 -2
  17. package/dist/chunks/{chat-stream.cef88ead.js.map → chat-stream.393c8241.js.map} +1 -1
  18. package/dist/chunks/{main.abe54caf.js → main.ccf4635e.js} +2 -2
  19. package/dist/chunks/{main.abe54caf.js.map → main.ccf4635e.js.map} +1 -1
  20. package/dist/examples.json +12 -12
  21. package/dist/index.b10ed910.js +2 -0
  22. package/dist/{index.d03181ae.js.map → index.b10ed910.js.map} +1 -1
  23. package/dist/manifest.json +288 -288
  24. package/dist/types.json +1330 -1330
  25. package/dist-types/chat-stream/StreamContext.d.ts +1 -0
  26. package/dist-types/chat-stream/useConversationStream.d.ts +4 -1
  27. package/dist-types/shared/AskUser/AskUser.d.ts +4 -2
  28. package/dist-types/shared/AskUser/i18n.d.ts +15 -0
  29. package/dist-types/shared/getFlatChunks.d.ts +11 -3
  30. package/package.json +2 -2
  31. package/dist/chunks/2742.3340a00e.js.map +0 -1
  32. package/dist/chunks/3186.81f0a2f0.js +0 -2
  33. package/dist/chunks/3186.81f0a2f0.js.map +0 -1
  34. package/dist/chunks/4208.002ac189.js +0 -2
  35. package/dist/chunks/4208.002ac189.js.map +0 -1
  36. package/dist/chunks/4577.66294512.js +0 -2
  37. package/dist/chunks/4577.66294512.js.map +0 -1
  38. package/dist/chunks/4864.03882076.js +0 -2
  39. package/dist/chunks/4864.03882076.js.map +0 -1
  40. package/dist/chunks/5452.e451b025.js.map +0 -1
  41. package/dist/chunks/chat-panel.e8afa537.js.map +0 -1
  42. package/dist/index.d03181ae.js +0 -2
@@ -1 +0,0 @@
1
- {"version":3,"file":"chunks/4208.002ac189.js","mappings":"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","sources":["webpack:///./src/shared/FilePreview/downloadFile.ts","webpack:///./src/shared/FilePreview/ImagesPreview.module.css?b629","webpack:///./src/shared/FilePreview/ImagesPreview.tsx","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/cruise-canvas/utils/createPortal.ts","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/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/shared/constants.ts","webpack:///./src/cruise-canvas/CmdbInstanceDetail/CmdbInstanceDetail.module.css?7513","webpack:///./src/cruise-canvas/CmdbInstanceDetail/CmdbInstanceDetail.tsx","webpack:///./src/shared/workers/tsxParser.ts","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/utils.ts","webpack:///../../src/rehypeMermaid.ts","webpack:///../../src/MarkdownComponent.tsx","webpack:///./src/cruise-canvas/CmdbInstanceDetail/CmdbInstanceDetail.module.css","webpack:///./src/cruise-canvas/utils/file.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/shared/FloatingButton.module.css?87dc","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/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/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/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/FilePreview/FileList.module.css","webpack:///./src/shared/FilePreview/getImageUrl.ts"],"sourcesContent":["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 fromModal?: boolean;\n}\n\nexport function ImagesPreview({\n images: { files, file },\n fromModal,\n}: 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} style={fromModal ? { zIndex: 1000 } : {}}>\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, `.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","export function createPortal(rootId: string) {\n const portal = document.createElement(\"div\");\n portal.dataset.rootId = rootId;\n portal.style.position = \"absolute\";\n portal.style.width = portal.style.height = \"0\";\n document.body.append(portal);\n return portal;\n}\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\";\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 WrappedRunningFlow = wrapBrick<\n RunningFlow,\n RunningFlowProps,\n RunningFlowEvents,\n RunningFlowMapEvents\n>(\"ai-portal.running-flow\", {\n onActivityClick: \"activity.click\",\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","// 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:3;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 fromModal?: boolean;\n}\n\nexport function FilePreview({ file, fromModal }: 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} style={fromModal ? { zIndex: 1000 } : {}}>\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","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: \"lucide\",\n icon: \"chevron-up\",\n};\n\nexport const ICON_DOWNLOAD: GeneralIconProps = {\n lib: \"antd\",\n icon: \"download\",\n};\n\nexport const ICON_STOP: GeneralIconProps = {\n lib: \"fa\",\n prefix: \"far\",\n icon: \"circle-stop\",\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]!./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","// istanbul ignore file\nimport type { ParsedApp, ParseOptions } from \"@next-tsx/parser\";\nimport { wrap } from \"comlink\";\n\nexport interface RemoteTsxParserWorker {\n parseView(source: string, options?: ParseOptions): Promise<ParsedApp>;\n}\n\nlet remoteWorkerPromise: Promise<RemoteTsxParserWorker> | undefined;\n\nlet worker: Worker | undefined;\n\nexport function getRemoteTsxParserWorker() {\n if (!remoteWorkerPromise) {\n remoteWorkerPromise = (async () => {\n const Remote = wrap<{ new (): RemoteTsxParserWorker }>(getWorker());\n return await new Remote();\n })();\n }\n return remoteWorkerPromise;\n}\n\nfunction getWorker() {\n if (!worker) {\n worker = new Worker(new URL(\"./tsxParser.worker.ts\", import.meta.url));\n }\n return worker;\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>(\n nodes: T[],\n rootId?: string\n) {\n const map = new Map<string, T>();\n const downstreamMap = new Map<string, string[]>();\n const roots: 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 && node.id !== rootId) {\n childMap.set(node.parent, 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 (rootId ? node.id === rootId : !node.parent && !node.upstream?.length) {\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 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 }\n }\n\n return { list, map, childMap };\n}\n","import type {\n MessageChunk,\n MessageChunkOfAskUser,\n} 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 interface FlatChunkOptions {\n flowMap?: Map<string, ServiceFlowRun>;\n activityMap?: Map<string, ActivityWithFlow>;\n skipActivitySubTasks?: boolean;\n enablePlan?: boolean;\n rootTaskId?: string;\n}\n\nexport function getFlatChunks(\n tasks: Task[],\n errors: ConversationError[],\n options?: FlatChunkOptions\n): {\n /** Message chunks, excluding those from skipped subtasks */\n chunks: MessageChunk[];\n /** All jobs including those nested within subtasks */\n jobMap: Map<string, Job>;\n /** The active askUser chunk, if any */\n activeAskUser: MessageChunkOfAskUser | null;\n} {\n const { flowMap, activityMap, skipActivitySubTasks, enablePlan, rootTaskId } =\n options || {};\n\n const taskTree = getTaskTree(tasks, rootTaskId);\n const chunks: MessageChunk[] = [];\n const jobMap = new Map<string, Job>();\n let activeAskUser: MessageChunkOfAskUser | null = null;\n\n const collectChunks = (taskNode: TaskTreeNode, level: number) => {\n if (enablePlan && taskNode.task.plan) {\n chunks.push({\n type: \"plan\",\n task: taskNode.task,\n });\n return;\n }\n\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 === \"askUser\") {\n chunks.push({\n type: \"askUser\",\n job,\n task: subTask?.task,\n });\n } else 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 if (job.type === \"askUser\") {\n activeAskUser = {\n type: \"askUser\",\n job,\n task: subTask.task,\n };\n }\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, activeAskUser };\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(\n tasks: Task[],\n rootTaskId?: string\n): TaskTreeNode[] {\n const {\n list: taskIds,\n map: taskMap,\n childMap,\n } = getOrderedNodes(tasks, rootTaskId);\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 { list: jobIds, map: jobMap } = processedTaskMap.get(taskId)!;\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\"\n | \"yaml\";\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 yaml: () => import(\"@shikijs/langs/yaml\"),\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 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 { 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 React, { 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 rehypeExternalLinks, {\n type Options as RehypeExternalLinksOptions,\n} from \"rehype-external-links\";\nimport rehypeReact, { Options as RehypeReactOptions } from \"rehype-react\";\nimport type { Components } from \"hast-util-to-jsx-runtime\";\nimport rehypeShikiFromHighlighter from \"@shikijs/rehype/core\";\nimport type { Element } from \"hast\";\nimport { visit } from \"unist-util-visit\";\nimport { getSingletonHighlighter, bundledLanguages } from \"@next-shared/shiki\";\nimport { rehypeMermaid } from \"./rehypeMermaid.js\";\nimport { getCodeLanguage } from \"./utils.js\";\n\nconst production = { Fragment, jsx, jsxs };\n\nexport type { RehypeExternalLinksOptions, Element };\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 externalLinks?: RehypeExternalLinksOptions;\n}\n\nexport async function preloadHighlighter(\n theme: \"light-plus\" | \"dark-plus\"\n): Promise<void> {\n await getSingletonHighlighter({\n themes: [theme],\n });\n}\n\nfunction rehypeFallbackLanguage() {\n return (tree: Element) => {\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 if (\n lang &&\n !Object.prototype.hasOwnProperty.call(bundledLanguages, lang)\n ) {\n node.properties.className = (node.properties.className as string[]).map(\n (c) => (c.startsWith(\"language-\") ? \"language-text\" : c)\n );\n }\n });\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 externalLinks,\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(rehypeExternalLinks, externalLinks)\n .use(rehypeMermaid)\n .use(rehypeFallbackLanguage)\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(\n <div style={{ color: \"var(--color-error)\" }}>\n Convert markdown failed: {String(error)}\n </div>\n );\n }\n }\n })();\n return () => {\n ignore = true;\n };\n }, [components, content, externalLinks, 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","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 ]) as Partial<ConversationBaseDetail>;\n patch.mode = action.mode;\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 \"started\":\n if (state) {\n return { ...state, finished: false };\n }\n return state;\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 | null,\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 if (!conversationId) {\n return;\n }\n\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({\n type: \"sse\",\n mode: \"resume\",\n payload: value,\n workspace: conversationId,\n });\n isInitial = false;\n }\n dispatch({ type: \"finished\" });\n }, [conversationId]);\n\n useEffect(() => {\n if (!conversationId) {\n return;\n }\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 const mode = content === null && !action ? \"resume\" : \"new\";\n dispatch({ type: \"started\" });\n try {\n const sseRequest = await (mode === \"resume\"\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({\n type: \"sse\",\n mode,\n payload: value,\n workspace: conversationId,\n });\n isInitial = false;\n }\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 dispatch({ type: \"finished\" });\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","\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 { 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 ActivityWithFlow,\n ConversationError,\n ConversationState,\n ExampleProject,\n ExtraChatPayload,\n FileInfo,\n GeneratedView,\n Job,\n ServiceFlowRun,\n ShowCaseType,\n Task,\n UploadOptions,\n} from \"./interfaces\";\nimport type { AIEmployee, Command } from \"./ChatCompletions/useChatCompletions\";\n\nexport interface TaskContextValue {\n conversationId?: string;\n conversationState?: ConversationState;\n tasks: Task[];\n errors: ConversationError[];\n finished?: boolean;\n earlyFinished?: boolean;\n jobMap?: Map<string, Job>;\n flowMap?: Map<string, ServiceFlowRun>;\n activityMap?: Map<string, ActivityWithFlow>;\n workspace?: string;\n previewUrlTemplate?: string;\n replay?: boolean;\n showCases?: ShowCaseType[];\n exampleProjects?: ExampleProject[];\n aiEmployees?: AIEmployee[];\n commands?: Command[];\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 serviceflow${[\n cmd.serviceFlowStarting.flowName,\n cmd.serviceFlowStarting.spaceName,\n ]\n .filter(Boolean)\n .slice(0, 1)\n .map((name) => `: ${name}`)\n .join(\"\")}`;\n case \"serviceflow-start\":\n return `/start serviceflow${[\n cmd.payload.flowName,\n cmd.payload.spaceName,\n ]\n .filter(Boolean)\n .slice(0, 1)\n .map((name) => `: ${name}`)\n .join(\"\")}`;\n case \"serviceflow-edit\":\n return `/edit serviceflow${[cmd.payload.flowName, cmd.payload.spaceName]\n .filter(Boolean)\n .slice(0, 1)\n .map((name) => `: ${name}`)\n .join(\"\")}`;\n case \"serviceflow-create\":\n return `/create serviceflow${[cmd.payload.spaceName]\n .filter(Boolean)\n .slice(0, 1)\n .map((name) => `: ${name}`)\n .join(\"\")}`;\n case \"serviceObject-createOrEdit\":\n return `/manage business object`;\n case \"serviceObjectInstance-createOrEdit\":\n return `/manage business object instance`;\n default:\n // unknown command type\n return `/${(cmd as CommandPayload).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, `.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:3;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, `.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-tsx/converter\";\nimport type { ModulePartOfComponent } from \"@next-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 as BrickConf[], 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","\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","// 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"],"names":["downloadFile","file","bytes","uri","mimeType","name","filename","t","K","UNTITLED","saveAs","Blob","Uint8Array","from","atob","c","charCodeAt","type","link","document","createElement","href","getImageUrl","download","target","body","appendChild","click","removeChild","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","undefined","ImagesPreview","_ref","images","files","fromModal","currentFile","setCurrentFile","useState","setActiveImages","useContext","TaskContext","useEffect","go","useCallback","diff","newIndex","indexOf","length","onKeyDown","e","key","preventDefault","stopPropagation","addEventListener","removeEventListener","React","className","styles","preview","style","zIndex","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","id","WrappedCodeWrapper","wrapBrick","MarkdownPre","_props$className","node","props","preProps","showCopyButton","includes","themeVariant","createPortal","rootId","portal","dataset","position","width","height","append","cache","Map","fetchEmployee","aiEmployeeId","cached","get","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","WrappedRunningFlow","onActivityClick","showDialog","unwrapProvider","createContext","onNodeResize","setActiveNodeId","hoverOnScrollableContent","RequestHumanAction","action","ui","humanInput","replay","disabled","setDisabled","classNames","canvas","shape","confirmText","FilePreview","setActiveFile","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","FILE_PREVIEW_UNPREVIEWABLE_TIP_PREFIX","FILE_PREVIEW_UNPREVIEWABLE_TIP_SUFFIX","image","embed","markdown","shareStyles","initializeI18n","NS","locales","DONE_STATES","GENERAL_DONE_STATES","NON_WORKING_STATES","spinning","ICON_CANVAS","ICON_CHAT","ICON_FEEDBACK","ICON_EXTERNAL_LINK","ICON_UP","ICON_STOP","prefix","LIST_SPLIT_THRESHOLD","SHOW_AS_TABLE_THRESHOLD","BUILTIN_FN_STRINGIFY","CmdbInstanceDetail","objectId","detail","outputSchema","useMemo","uniqueId","rootRef","container","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","modalTitle","hideCancelButton","maskClosable","keyboard","columns","tableChildren","k","v","useChildren","items","description","upperFirst","slot","convertObject","dataIndex","children","dataSource","pagination","bordered","clickHandler","args","method","if","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","remoteWorkerPromise","worker","getRemoteTsxParserWorker","Remote","wrap","Worker","FileList","large","filesWithDisplayInfo","displayType","getFileTypeAndIcon","imageFiles","filter","allImages","limit","exceeded","expanded","setExpanded","filteredList","slice","single","chat","mask","overlay","metadata","size","formatFileSize","expand","collapsed","prev","COLLAPSE","SHOW_ALL_FILES","getOrderedNodes","nodes","downstreamMap","roots","childMap","parent","_node$upstream2","up","_node$upstream","upstream","downstream","visitedNodes","Set","queue","shift","has","add","getFlatChunks","tasks","errors","flowMap","activityMap","skipActivitySubTasks","enablePlan","rootTaskId","taskTree","taskIds","taskMap","processedTaskMap","taskId","task","jobs","buildTaskTreeNode","jobIds","jobMap","jobId","job","subTaskId","subTask","getTaskTree","chunks","activeAskUser","collectChunks","taskNode","level","plan","flow","activityWithFlow","activity","shouldSkip","_job$messages","state","messages","every","msg","role","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","yaml","bundledThemes","lightPlus","darkPlus","createHighlighter","createdBundledHighlighter","langs","themes","engine","createOnigurumaEngine","codeToHtml","codeToHast","codeToTokensBase","codeToTokens","codeToTokensWithThemes","getSingletonHighlighter","getLastGrammarState","createSingletonShorthands","guessEmbeddedLanguages","code","lang","getCodeLanguage","classListItem","toLowerCase","mermaidPromise","count","parser","DOMParser","serializer","XMLSerializer","rehypeMermaid","promises","visit","tree","tagName","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","rehypeFallbackLanguage","prototype","call","_shiki$theme","externalLinks","reactContent","setReactContent","highlighter","vFile","unified","use","remarkParse","remarkGfm","remarkToRehype","rehypeExternalLinks","rehypeShikiFromHighlighter","lazy","defaultLanguage","rehypeReact","passNode","process","result","color","MIME_TYPES","unit","pipes","unitFormat","number","Math","round","fileOther","fileText","filePdf","fileDoc","fileXls","filePpt","_MIME_TYPES$get","ext","matches","match","parseTemplate","template","_match","trim","mergeJobs","previousJobs","jobsPatch","workspace","jobPatch","_jobs$findIndex","_jobs","previousJobIndex","findIndex","messagesPatch","toolCall","arguments","originalArguments","argumentsParseFailed","argumentsParseError","_patch$toolCall","patch","generatedView","getJobGeneratedView","mergeMessages","_restMessagesPatch$to","_restMessagesPatch$to2","_previousJob$toolCall","_restMessagesPatch$st","previousJob","restMessagesPatch","pick","_previousJob$messages","view","getJobStaticDataView","withContexts","RESPONSE","getJobStaticDataResponse","asyncConstructedView","getAsyncConstructedView","isMatch","merged","previousRole","message","lastMessage","parts","mergeMessageParts","previousType","previousDataType","part","_part$data","_part$data2","data","_part$data3","viewId","isStaticData","mergeSpec","previousSpec","flowPatch","fullSpec","spec","mergedSpec","stagePatch","stageIndex","s","_stage$serviceFlowAct","stage","serviceFlowActivities","activities","mergeActivities","previousActivities","activitiesPatch","activityPatch","activityIndex","rootReducer","reducers","conversation","payload","mode","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","time","min","max","resolve","setTimeout","ctrl","requesting","makeRequest","extra","AbortController","sseRequest","createSSEStream","getBasePath","signal","headers","stream","handleHttpError","cmd","_ctrl","abort","parseView","onShare","activeExpandedViewJobId","setActiveExpandedViewJobId","activeDetail","setActiveDetail","subActiveDetail","setSubActiveDetail","submittingFeedback","submittedFeedback","onSubmitFeedback","setShowFeedback","activeFile","activeImages","ReadableCommand","mentionedAiEmployeeId","getInitialContent","command","small","serviceFlowStarting","flowName","spaceName","Boolean","en","zh","i18n","getFixedT","CreatedView","_manuallyUpdatedViews","noHeading","onSizeChange","manuallyUpdatedViews","setView","canFeedback","_generatedView$asyncC","then","sizeLarge","setSizeLarge","convertedView","convertView","functions","templates","traverseBricks","b","_b$properties","component","widgets","preferSizeLarge","viewTitle","_view$entry","entry","defaultExport","heading","sharedStyles","ViewToolbar","callback","propCanFeedback","previewUrlTemplate","showJsxEditor","setActiveJsxEditorJob","showFeedbackOnView","onFeedbackOnView","feedbackDoneViews","feedbackDone","useViewFeedbackDone","handleExpandClick","button","FEEDBACK","OPEN_PREVIEW","window","open","FULLSCREEN","done","setDone","_response$feedback","InstanceApi_getDetail","fields","priority","feedback","fetchViewFeedbackDone","location","origin"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(globalThis.webpackChunk_next_bricks_ai_portal=globalThis.webpackChunk_next_bricks_ai_portal||[]).push([[4577],{625:(e,t,a)=>{function n(e){switch(e){case"input-required":return{lib:"antd",theme:"filled",icon:"pause-circle"};case"completed":return{lib:"antd",theme:"filled",icon:"check-circle"};case"failed":return{lib:"antd",theme:"filled",icon:"close-circle"};case"terminated":return{lib:"antd",theme:"filled",icon:"stop"};case"working":return{lib:"antd",icon:"loading-3-quarters",spinning:!0};default:return{lib:"antd",theme:"filled",icon:"clock-circle"}}}a.d(t,{W:()=>n})},14577:(e,t,a)=>{a.d(t,{C:()=>Ee});var n=a(18769),i=a.n(n),s=a(60128),l=a(53373),o=a.n(l),r=a(52208),c=a(67101),d=a(13330),m=a(30672),u=a(30621),p=a(30925),f=a(76720),b=a(96923),g=a(40177),v=a(62309),h=a(72591),x=a.n(h),E=a(1740),k=a.n(E),w=a(88128),y=a.n(w),A=a(30855),I=a.n(A),N=a(93051),T=a.n(N),S=a(73656),D=a.n(S),C=a(83090),F={};F.styleTagTransform=D(),F.setAttributes=I(),F.insert=y().bind(null,"head"),F.domAPI=k(),F.insertStyleElement=T(),x()(C.A,F);const U=C.A&&C.A.locals?C.A.locals:void 0;var j=a(36903),R=a(39649),G=a(51069),M=a(67177),P=a(83685),B={};B.styleTagTransform=D(),B.setAttributes=I(),B.insert=y().bind(null,"head"),B.domAPI=k(),B.insertStyleElement=T(),x()(P.A,B);const _=P.A&&P.A.locals?P.A.locals:void 0;var z=a(625);let L=function(e){return e.WAITING="WAITING",e.EXECUTING="EXECUTING",e.PAUSED="PAUSED",e.SUCCEEDED="SUCCEEDED",e.FAILED="FAILED",e.TERMINATED="TERMINATED",e}({});const O="bricks/ai-portal/FlowApp",V=M.i18n.getFixedT(null,O);var q=a(40563),J=a(9442),X=a(69493);(0,M.initializeI18n)(O,{en:{WAITING:"Waiting",EXECUTING:"Executing",PAUSED:"Paused",SUCCEEDED:"Succeeded",FAILED:"Failed",TERMINATED:"Terminated"},zh:{WAITING:"等待中",EXECUTING:"执行中",PAUSED:"暂停",SUCCEEDED:"成功",FAILED:"失败",TERMINATED:"已终止"}});const W=(0,n.forwardRef)(K);function H(e){var t;let{flow:a,activity:s}=e;const{tasks:l}=(0,n.useContext)(f.j),r=(0,n.useMemo)((()=>l.find((e=>e.id===a.taskId))),[l,a.taskId]),c=(0,n.useMemo)((()=>a.spec.map((e=>{var t;return{...e,serviceFlowActivities:null===(t=e.serviceFlowActivities)||void 0===t?void 0:t.map((e=>{const t=l.find((t=>t.id===e.taskId));return{name:e.name,taskId:e.taskId,state:null==t?void 0:t.state,startTime:null==t?void 0:t.startTime,endTime:null==t?void 0:t.endTime}}))}}))),[a.spec,l]),d=(0,n.useMemo)((()=>c.flatMap((e=>{var t;return(null===(t=e.serviceFlowActivities)||void 0===t?void 0:t.filter((e=>e.taskId)))||[]}))),[c]),u=(0,n.useMemo)((()=>function(e){const t=(0,z.W)(e);let a,n;switch(e){case"working":a=V(L.EXECUTING),n=_.working;break;case"completed":a=V(L.SUCCEEDED),n=_.completed;break;case"failed":a=V(L.FAILED),n=_.failed;break;case"input-required":a=V(L.PAUSED),n=_.paused;break;case"terminated":a=V(L.TERMINATED);break;default:a=V(e?L.EXECUTING:L.WAITING)}return{icon:t,text:a,className:n}}(r.state)),[r.state]),p=(0,n.useRef)(null),b=(0,n.useRef)(null),{scrollable:g,scrollToBottom:v,toggleAutoScroll:h}=(0,q.i)(!0,p,b),x=(0,n.useRef)(new Map);return(0,n.useEffect)((()=>{if(null!=s&&s.taskId){const e=x.current.get(s.taskId);e&&(e.scrollIntoView(),h(!1))}}),[s,h]),i().createElement(i().Fragment,null,i().createElement("div",{className:_.heading},i().createElement("div",{className:_.header},i().createElement("div",{className:o()(_.status,u.className)},i().createElement(m.Bj,u.icon),u.text),i().createElement("div",{className:_.title},`${null!==(t=a.space)&&void 0!==t&&t.name?`${a.space.name} / `:""}${a.name}`)),i().createElement("div",{className:_.chart},i().createElement(m.n$,{spec:c,onActivityClick:e=>{const t=x.current.get(e.detail);t&&(t.scrollIntoView(),h(!1))}}))),i().createElement("div",{className:_.body},i().createElement("div",{className:_.chat,ref:p},i().createElement("div",{className:_.messages,ref:b},d.map((e=>i().createElement(W,{key:e.taskId,activity:e,ref:t=>{x.current.set(e.taskId,t)}}))))),i().createElement("button",{className:`${J.A["scroll-down"]} ${X.A["floating-button"]}`,style:{bottom:"30px"},hidden:!g,onClick:v},i().createElement(m.Bj,{lib:"antd",icon:"down"}))))}function K(e,t){let{activity:a}=e;const s=(0,n.useRef)(null),{tasks:l,errors:o}=(0,n.useContext)(f.j),r=(0,n.useMemo)((()=>l.find((e=>e.id===a.taskId))),[l,a.taskId]),c=(0,n.useMemo)((()=>[{...r,parent:void 0}]),[r]),{messages:m}=(0,d.p)(!0,r.state,c,o);return(0,n.useImperativeHandle)(t,(()=>({scrollIntoView:()=>{var e;null===(e=s.current)||void 0===e||e.scrollIntoView({behavior:"smooth",block:"nearest"})}}))),i().createElement("div",{className:_.activity,ref:s},m.map(((e,t,a)=>i().createElement("div",{className:_.message,key:t},"user"===e.role?i().createElement(u.R,{content:e.content,mentionedAiEmployeeId:e.mentionedAiEmployeeId,cmd:e.cmd,files:e.files}):i().createElement(p.G,{chunks:e.chunks,scopeState:r.state,isLatest:t===a.length-1,isSubTask:!0})))))}var $=a(6115),Q=a(76697),Y={};Y.styleTagTransform=D(),Y.setAttributes=I(),Y.insert=y().bind(null,"head"),Y.domAPI=k(),Y.insertStyleElement=T(),x()(Q.A,Y);const Z=Q.A&&Q.A.locals?Q.A.locals:void 0;function ee(e){let{task:t}=e;const{tasks:a,errors:s,flowMap:l,activityMap:o}=(0,n.useContext)(f.j),{messages:r}=(0,d.p)(!!t,t.state,a,s,{flowMap:l,activityMap:o,rootTaskId:t.id}),c=(0,n.useRef)(null),b=(0,n.useRef)(null),{scrollable:g,scrollToBottom:v}=(0,q.i)(!0,c,b);return i().createElement("div",{className:Z.body},i().createElement("div",{className:Z.chat,ref:c},i().createElement("div",{className:Z.messages,ref:b},r.map(((e,a,n)=>i().createElement("div",{className:Z.message,key:a},"user"===e.role?i().createElement(u.R,{content:e.content,mentionedAiEmployeeId:e.mentionedAiEmployeeId,cmd:e.cmd,files:e.files}):i().createElement(p.G,{chunks:e.chunks,scopeState:t.state,isLatest:a===n.length-1,isSubTask:!0})))))),i().createElement("button",{className:`${J.A["scroll-down"]} ${X.A["floating-button"]}`,style:{bottom:"30px"},hidden:!g,onClick:v},i().createElement(m.Bj,{lib:"antd",icon:"down"})))}const te={lib:"easyops",icon:"shrink"};function ae(e){let{detail:t,isSubTask:a,faded:s}=e;const{setActiveDetail:l,setSubActiveDetail:r}=(0,n.useContext)(f.j),{setUserClosedAside:c}=(0,n.useContext)(G.W);return i().createElement("div",{className:o()(U.aside,{[U.sub]:a,[U.faded]:s})},i().createElement("div",{className:U.box},i().createElement("div",{className:U.header},i().createElement("div",{className:U.title},"Elevo's Computer"),i().createElement(m.Py,{icon:te,variant:"mini",onClick:()=>{a?r(null):(l(null),c(!0))}})),i().createElement("div",{className:o()(U.body,{[U.scrollable]:"task"!==t.type&&("job"!==t.type||!t.job.generatedView)})},"job"===t.type?i().createElement(i().Fragment,null,i().createElement(R.t,{job:t.job,variant:"read-only"}),t.job.generatedView?i().createElement(ne,{name:"View",source:t.job.generatedView.code,language:"jsx"}):i().createElement($.M,{job:t.job})):"task"===t.type?i().createElement(ee,{task:t.task}):i().createElement(H,{flow:t.flow,activity:t.activity}))))}function ne(e){let{name:t,source:a,language:n}=e;return i().createElement("div",{className:o()(U.app,U.editor)},i().createElement("div",{className:U.heading},`${t}.${n}`),i().createElement("div",{className:o()(U.content,j.A.markdown)},i().createElement("div",{className:U.scroller},i().createElement(m.yQ,{className:U["code-block"],source:a,language:n,themeVariant:"elevo"}))))}var ie=a(94625),se=a(76239),le={};le.styleTagTransform=D(),le.setAttributes=I(),le.insert=y().bind(null,"head"),le.domAPI=k(),le.insertStyleElement=T(),x()(se.A,le);const oe=se.A&&se.A.locals?se.A.locals:void 0;var re=a(86767),ce=a(48952),de=a(98153),me=a(88253),ue=a(2367),pe=a(38717),fe=a(6671),be=a(32146),ge=a(39590),ve={};ve.styleTagTransform=D(),ve.setAttributes=I(),ve.insert=y().bind(null,"head"),ve.domAPI=k(),ve.insertStyleElement=T(),x()(ge.A,ve);const he=ge.A&&ge.A.locals?ge.A.locals:void 0;function xe(e){let{task:t}=e;const{conversationState:a,tasks:s,errors:l,finished:o,earlyFinished:r,replay:c}=(0,n.useContext)(f.j),m=g.QB.includes(a)||"input-required"===a,{messages:v}=(0,d.p)(!!t,null==t?void 0:t.state,s,l,{skipActivitySubTasks:!0,rootTaskId:null==t?void 0:t.id});return g.QB.includes(null==t?void 0:t.state)?i().createElement("div",{className:he.container},v.map(((e,a,n)=>i().createElement("div",{className:he.message,key:a},"user"===e.role?i().createElement(u.R,{content:e.content,files:e.files}):i().createElement(p.G,{chunks:e.chunks,scopeState:null==t?void 0:t.state,isLatest:a===n.length-1&&!r,finished:o})))),!c&&i().createElement(b.s,{state:a,canChat:m,showInput:"always",className:he.input})):null}function Ee(e,t){var a;let{conversationId:l,initialRequest:h,replay:x,replayDelay:E,supports:k,showHumanActions:w,showFeedback:y,showFeedbackAfterFailed:A,showFeedbackOnView:I,showUiSwitch:N,previewUrlTemplate:T,showCases:S,exampleProjects:D,tryItOutUrl:C,aiEmployees:F,commands:U,uploadOptions:j,onShare:R,onTerminate:M,onSubmitFeedback:P,onSwitchToCanvas:B,onFeedbackOnView:_,onDetailChange:z,onSplitChange:L}=e;const{conversation:O,tasks:V,serviceFlows:W,errors:H,humanInputRef:K,skipToResults:$,watchAgain:Q}=(0,c.u)(l,h,x,E),Y=!!O,Z=null!==(a=null==O?void 0:O.title)&&void 0!==a?a:"",ee=null==O?void 0:O.state,te=g.QB.includes(ee),ne=null==O?void 0:O.finished,se=!x&&(null==O?void 0:O.finished)&&"resume"!==O.mode&&!g.Z5.includes(ee),le=te||"input-required"===ee,{flowMap:ge,activityMap:ve}=(0,me.o)(W),{messages:he,jobMap:Ee,lastDetail:ke,activeAskUser:we}=(0,d.p)(Y,null==O?void 0:O.state,V,H,{flowMap:ge,activityMap:ve,showHumanActions:w,skipActivitySubTasks:!0});(0,n.useEffect)((()=>{z({projectId:null==O?void 0:O.projectId})}),[z,null==O?void 0:O.projectId]);const ye=(0,n.useMemo)((()=>Ee?[...Ee.values()].flatMap((e=>e.generatedView?{id:e.id,view:e.generatedView}:[])):[]),[Ee]),[Ae,Ie]=(0,n.useState)(!1),[Ne,Te]=(0,n.useState)(!1),[Se,De]=(0,n.useState)(!!y);(0,n.useEffect)((()=>{De(!!y)}),[y]);const[Ce,Fe]=(0,n.useState)(),Ue=(0,n.useCallback)((e=>{Ie(!0),P(e)}),[P]);(0,n.useImperativeHandle)(t,(()=>({feedbackSubmitDone:()=>{Te(!0),setTimeout((()=>{De(!1)}),3e3)},feedbackSubmitFailed:()=>{Ie(!1)},feedbackOnViewDone:e=>{Fe((t=>{const a=new Set(t);return a.add(e),a}))}})),[]);const[je,Re]=(0,n.useState)(null),[Ge,Me]=(0,n.useState)(null),[Pe,Be]=(0,n.useState)(null),[_e,ze]=(0,n.useState)(!1),Le=(0,n.useRef)(!1);(0,n.useEffect)((()=>{if(Y){const e=setTimeout((()=>{Le.current=!0}),1e3);return()=>{clearTimeout(e)}}}),[Y]);const Oe=!!h;(0,n.useEffect)((()=>{(Le.current||Oe)&&ke&&!_e&&Me(ke)}),[ke,_e,Oe]),(0,n.useEffect)((()=>{(0,s.getRuntime)().applyPageTitle(Z)}),[Z]);const Ve=(0,n.useCallback)(((e,t,a)=>{var n;null===(n=K.current)||void 0===n||n.call(K,e,t,a)}),[K]),qe=he[0],Je="user"===(null==qe?void 0:qe.role)?qe:null,[Xe,We]=(0,n.useState)(null),[He,Ke]=(0,n.useState)(null),$e=l,Qe=(0,n.useMemo)((()=>({conversationId:l,conversationState:ee,finished:ne,earlyFinished:se,tasks:V,errors:H,jobMap:Ee,flowMap:ge,activityMap:ve,workspace:$e,previewUrlTemplate:T,replay:x,showCases:S,exampleProjects:D,aiEmployees:F,commands:U,uploadOptions:j,humanInput:Ve,onShare:R,onTerminate:M,supports:k,activeExpandedViewJobId:je,setActiveExpandedViewJobId:Re,activeDetail:Ge,setActiveDetail:Me,subActiveDetail:Pe,setSubActiveDetail:Be,submittingFeedback:Ae,submittedFeedback:Ne,onSubmitFeedback:Ue,setShowFeedback:De,showFeedbackOnView:I,onFeedbackOnView:_,feedbackDoneViews:Ce,skipToResults:$,watchAgain:Q,tryItOut(){const e=window.open(`${(0,s.getBasePath)().slice(0,-1)}${null!=C?C:"/elevo"}`,"_blank");e&&(e.__elevo_try_it_out=Je?{content:Je.content,cmd:Je.cmd,mentionedAiEmployeeId:Je.mentionedAiEmployeeId}:{})},activeFile:Xe,setActiveFile:We,activeImages:He,setActiveImages:Ke})),[l,ee,ne,se,V,H,Ee,ge,ve,$e,T,x,S,D,F,U,j,Ve,R,M,k,je,Ge,Pe,Ae,Ne,Ue,I,_,Ce,$,Q,Je,C,Xe,He]),[Ye,Ze]=(0,n.useState)(!1);(0,n.useEffect)((()=>{let e=!1;return Promise.race([(0,r.L)("light-plus"),new Promise((e=>setTimeout(e,5e3)))]).finally((()=>{e||Ze(!0)})),()=>{e=!0}}),[]);const et=(0,n.useRef)(null),tt=(0,n.useRef)(null),{scrollable:at,scrollToBottom:nt,toggleAutoScroll:it}=(0,q.i)(Y&&Ye,et,tt),st=(0,ue.U)(Ge,V,Ee,ge,ve),lt=(0,ue.U)(Pe,V,Ee,ge,ve);(0,be.d)(Qe);const ot=!(!Ge&&!Pe);(0,n.useEffect)((()=>{L(ot)}),[L,ot]),(0,n.useEffect)((()=>{var e;null===(e=et.current)||void 0===e||e.focus()}),[Y,Ye]);const rt=(0,n.useMemo)((()=>({lastDetail:ke,setUserClosedAside:ze,toggleAutoScroll:it})),[ke,it]);return i().createElement(f.j.Provider,{value:Qe},i().createElement(G.W.Provider,{value:rt},i().createElement("div",{className:oe.container},i().createElement("div",{className:oe.header},i().createElement("h1",null,Z)),Y&&Ye?i().createElement(i().Fragment,null,i().createElement("div",{className:oe.main,tabIndex:-1,ref:et},i().createElement("div",{className:oe.narrow,ref:tt},he.map(((e,t,a)=>i().createElement("div",{className:oe.message,key:t},"user"===e.role?i().createElement(u.R,{content:e.content,cmd:e.cmd,mentionedAiEmployeeId:e.mentionedAiEmployeeId,files:e.files}):i().createElement(p.G,{chunks:e.chunks,scopeState:ee,isLatest:t===a.length-1&&!se,finished:O.finished})))),we&&i().createElement(xe,{task:we.task}),se&&i().createElement("div",{className:oe.message},i().createElement(p.G,{earlyFinished:!0})),x?(null==O?void 0:O.finished)&&i().createElement(de.A,{finished:!0,ui:"chat"}):Se&&("completed"===ee||"failed"===ee&&A)&&V.length>0&&i().createElement(ie.k,{className:oe.feedback}))),i().createElement("button",{className:`${J.A["scroll-down"]} ${X.A["floating-button"]}`,hidden:!at,onClick:nt},i().createElement(m.Bj,{lib:"antd",icon:"down"})),x&&null!=O&&O.finished?null:i().createElement("div",{className:oe.footer},i().createElement("div",{className:oe.narrow},x?i().createElement(de.A,null):i().createElement(b.s,{state:ee,canChat:le,showInput:we?"never":"auto"})))):i().createElement("div",{className:oe["loading-icon"]},i().createElement(m.Bj,{lib:"antd",theme:"outlined",icon:"loading-3-quarters",spinning:!0}))),i().createElement("div",{className:o()(oe.aside,{[oe.expanded]:!!st})},st&&i().createElement(ae,{detail:st,faded:!!lt}),lt&&i().createElement(ae,{detail:lt,isSubTask:!0})),je&&i().createElement(v.f,{views:ye}),N&&i().createElement("div",{className:o()(re.A.toolbar,oe.toolbar)},i().createElement(m.Py,{icon:g.Rq,variant:"mini",title:(0,ce.t)(ce.K.SWITCH_TO_CANVAS),onClick:B})),Xe&&i().createElement(pe.d,{file:Xe}),He&&i().createElement(fe.f,{images:He})))}},39590:(e,t,a)=>{a.d(t,{A:()=>o});var n=a(36758),i=a.n(n),s=a(40935),l=a.n(s)()(i());l.push([e.id,".container--sUPsOvDf{background:rgba(184,187,205,0.2);border-radius:12px;border:1px solid rgba(255,255,255,0.3);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:16px 26px}.container--sUPsOvDf:not(:first-child){margin-top:40px}.input--sHBtAfAH{margin-top:20px}",""]),l.locals={container:"container--sUPsOvDf",input:"input--sHBtAfAH"};const o=l},76239:(e,t,a)=>{a.d(t,{A:()=>u});var n=a(36758),i=a.n(n),s=a(40935),l=a.n(s),o=a(20062),r=a.n(o),c=new URL(a(32360),a.b),d=l()(i()),m=r()(c);d.push([e.id,`ai-portal\\.chat-stream{display:flex;position:relative;width:100%;height:100%;overflow:hidden;background-color:#f3f3f4;background-image:url(${m});background-size:cover;background-repeat:no-repeat;background-position:center;background-attachment:fixed;color:rgba(0,0,0,0.88);--cruise-canvas-node-width-small:330px;--cruise-canvas-node-width-medium:453px;--cruise-canvas-node-width-large:800px;--cruise-canvas-primary-color:var(--elevo-color-brand);--cruise-canvas-input-background:rgba(255,255,255,0.8);--cruise-canvas-input-box-shadow:0px 1px 0px 0px #ffffff,inset 0px 2px 4px 0px #b3bcf9}.container--IOwk4fR1{display:flex;flex-direction:column;position:relative;flex:1;min-width:0}.header--O9c4lNA3{height:54px;padding:0 72px;display:flex;align-items:center;justify-content:space-between}.header--O9c4lNA3 h1{font-weight:500;font-size:14px;margin:0;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}.main--KDIjetJs{overflow-y:auto;flex:1;padding:20px 24px}.narrow--xWih9UIb{width:100%;max-width:800px;margin:0 auto}.message--YIXGDQNi + .message--YIXGDQNi{margin-top:40px}.loading-icon--lagcmORP{flex:1;display:flex;align-items:center;justify-content:center;font-size:48px;color:#fff}.footer--aLZ8UWjM{padding:0 20px 24px}.aside--Xjd6To2A{width:0%;height:100%;transition:width 0.2s ease-in-out;position:relative}.expanded--xZgk3uBF{width:50%}.feedback--YbYylTcK{margin:24px auto 0}.toolbar--uiLshJmw{left:20px;bottom:20px}@media (max-width: 1123px){div.toolbar--uiLshJmw{display:none}}`,""]),d.locals={container:"container--IOwk4fR1",header:"header--O9c4lNA3",main:"main--KDIjetJs",narrow:"narrow--xWih9UIb",message:"message--YIXGDQNi","loading-icon":"loading-icon--lagcmORP",footer:"footer--aLZ8UWjM",aside:"aside--Xjd6To2A",expanded:"expanded--xZgk3uBF",feedback:"feedback--YbYylTcK",toolbar:"toolbar--uiLshJmw"};const u=d},76697:(e,t,a)=>{a.d(t,{A:()=>o});var n=a(36758),i=a.n(n),s=a(40935),l=a.n(s)()(i());l.push([e.id,".body--NgvmAsX4{position:relative;flex:1;min-height:0}.chat--Dd_Y5vKy{background:rgba(227,228,229,0.4);border:1px solid rgba(0,0,0,0.1);border-radius:8px;padding:16px 20px;height:100%;overflow-y:auto}.messages--XFimmqyO{width:100%;margin:0 auto}.message--R4_9LFJq + .message--R4_9LFJq{margin-top:40px}",""]),l.locals={body:"body--NgvmAsX4",chat:"chat--Dd_Y5vKy",messages:"messages--XFimmqyO",message:"message--R4_9LFJq"};const o=l},83090:(e,t,a)=>{a.d(t,{A:()=>o});var n=a(36758),i=a.n(n),s=a(40935),l=a.n(s)()(i());l.push([e.id,".aside--DDIdDtkt{padding:12px 12px 12px 0;height:100%}.faded--AsNxuT2v{opacity:0.4}.sub--d8EpebQt{position:absolute;top:16px;right:16px;left:-16px;height:calc(100% - 16px)}.box--niuFBiiQ{background:#ffffff;box-shadow:1px 1px 10px 0px rgba(0,10,26,0.1);border-radius:12px;height:100%;display:flex;flex-direction:column}.header--DPl_hrTp{height:52px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(0,0,0,0.15);padding:0 20px}.title--HlE9yRcJ{font-weight:500;font-size:16px;color:#262626}.body--OLKz1zeC{flex:1;min-height:0;padding:20px;display:flex;flex-direction:column}.body--OLKz1zeC.scrollable--JydKNhBJ{overflow-y:auto}.app--UanK0TGf{flex:1;min-height:0;background:#ffffff;border-radius:9px;border:1px solid #ccd1de;margin-top:16px;overflow:hidden;display:flex;flex-direction:column}.heading--ngRi_rQ4{background:#e6e9f3;color:#5e6472;padding:5px 14px}.content--I2i0y65v{font-size:12px;flex:1;min-height:0;position:relative}.scroller--mLfznC_I{height:100%;overflow-x:hidden;overflow-y:auto;overflow:hidden auto;padding:10px}.scroller--mLfznC_I.loading--U1GWHEp9{display:flex;align-items:center;justify-content:center}.editor--p_Sqs1os .content--I2i0y65v .code-block--XiUVX7st::part(wrapper){position:static;margin:0}.editor--p_Sqs1os .content--I2i0y65v .code-block--XiUVX7st::part(pre){background:none!important;padding:0;border-radius:0;border:0}",""]),l.locals={aside:"aside--DDIdDtkt",faded:"faded--AsNxuT2v",sub:"sub--d8EpebQt",box:"box--niuFBiiQ",header:"header--DPl_hrTp",title:"title--HlE9yRcJ",body:"body--OLKz1zeC",scrollable:"scrollable--JydKNhBJ",app:"app--UanK0TGf",heading:"heading--ngRi_rQ4",content:"content--I2i0y65v",scroller:"scroller--mLfznC_I",loading:"loading--U1GWHEp9",editor:"editor--p_Sqs1os","code-block":"code-block--XiUVX7st"};const o=l},83685:(e,t,a)=>{a.d(t,{A:()=>o});var n=a(36758),i=a.n(n),s=a(40935),l=a.n(s)()(i());l.push([e.id,".heading--SbCRupnn{border-radius:9px;border:1px solid #ccd1de;background-image:radial-gradient(circle at 1px 1px,#ddd 1px,transparent 0px);background-size:25px 25px;background-position:12px}.header--LGXNxV5J{display:flex;align-items:center;padding:16px 30px}.status--aqbJGBcl{background:#aeb3bc;border-radius:100px;height:40px;padding:9px 16px;display:flex;align-items:center;gap:8px;font-size:18px;color:#ffffff}.status--aqbJGBcl eo-icon{font-size:22px}.status--aqbJGBcl.paused--U1cc3Ksn{background:#f0a22e}.status--aqbJGBcl.working--f2PYqFo7{background:#4f69ff}.status--aqbJGBcl.completed--Ihiekkve{background:#08bf33}.status--aqbJGBcl.failed--kB8wxIZ0{background:var(--color-error)}.title--IRvB2t7z{font-weight:500;font-size:16px;margin-left:40px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chart--mypbn8pI{padding:8px 22px 18px;overflow-x:auto}.body--jnk1EIz0{margin-top:16px;position:relative}.chat--nEzTEXbV{background:rgba(227,228,229,0.4);border:1px solid rgba(0,0,0,0.1);border-radius:8px;padding:16px 20px;flex:1;min-height:0;overflow-y:auto}.messages--vLiwUYSP{width:100%;margin:0 auto}.message--Okzj6NDx + .message--Okzj6NDx,\n.activity--ACHv4xek + .activity--ACHv4xek{margin-top:40px}",""]),l.locals={heading:"heading--SbCRupnn",header:"header--LGXNxV5J",status:"status--aqbJGBcl",paused:"paused--U1cc3Ksn",working:"working--f2PYqFo7",completed:"completed--Ihiekkve",failed:"failed--kB8wxIZ0",title:"title--IRvB2t7z",chart:"chart--mypbn8pI",body:"body--jnk1EIz0",chat:"chat--nEzTEXbV",messages:"messages--vLiwUYSP",message:"message--Okzj6NDx",activity:"activity--ACHv4xek"};const o=l}}]);
2
- //# sourceMappingURL=4577.66294512.js.map