@next-bricks/ai-portal 0.64.6 → 0.64.8

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 (33) hide show
  1. package/dist/bricks.json +34 -34
  2. package/dist/chunks/{4208.90f96600.js → 4208.54a5a7dd.js} +2 -2
  3. package/dist/chunks/4208.54a5a7dd.js.map +1 -0
  4. package/dist/chunks/{4820.d3be9b94.js → 4820.51e9c918.js} +2 -2
  5. package/dist/chunks/4820.51e9c918.js.map +1 -0
  6. package/dist/chunks/5411.095a6093.js +3 -0
  7. package/dist/chunks/5411.095a6093.js.map +1 -0
  8. package/dist/chunks/{778.850294cf.js → 778.1a43bbd5.js} +2 -2
  9. package/dist/chunks/778.1a43bbd5.js.map +1 -0
  10. package/dist/chunks/chat-panel.abf4cbf4.js +2 -0
  11. package/dist/chunks/chat-panel.abf4cbf4.js.map +1 -0
  12. package/dist/chunks/{elevo-sidebar.78a35f1d.js → elevo-sidebar.4aa42ab3.js} +3 -3
  13. package/dist/chunks/{elevo-sidebar.78a35f1d.js.map → elevo-sidebar.4aa42ab3.js.map} +1 -1
  14. package/dist/chunks/{main.87744001.js → main.f7f23cfb.js} +2 -2
  15. package/dist/chunks/{main.87744001.js.map → main.f7f23cfb.js.map} +1 -1
  16. package/dist/examples.json +20 -20
  17. package/dist/{index.00f609de.js → index.6af15770.js} +2 -2
  18. package/dist/{index.00f609de.js.map → index.6af15770.js.map} +1 -1
  19. package/dist/manifest.json +179 -179
  20. package/dist/types.json +713 -713
  21. package/dist-types/cruise-canvas/reducers/interfaces.d.ts +1 -0
  22. package/dist-types/elevo-sidebar/NavLinkWithActions.d.ts +11 -0
  23. package/dist-types/shared/interfaces.d.ts +1 -0
  24. package/package.json +2 -2
  25. package/dist/chunks/4208.90f96600.js.map +0 -1
  26. package/dist/chunks/4820.d3be9b94.js.map +0 -1
  27. package/dist/chunks/7059.912e3307.js +0 -3
  28. package/dist/chunks/7059.912e3307.js.map +0 -1
  29. package/dist/chunks/778.850294cf.js.map +0 -1
  30. package/dist/chunks/chat-panel.a3dafde9.js +0 -2
  31. package/dist/chunks/chat-panel.a3dafde9.js.map +0 -1
  32. /package/dist/chunks/{7059.912e3307.js.LICENSE.txt → 5411.095a6093.js.LICENSE.txt} +0 -0
  33. /package/dist/chunks/{elevo-sidebar.78a35f1d.js.LICENSE.txt → elevo-sidebar.4aa42ab3.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunks/4208.54a5a7dd.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\";\nimport type { BlankState, BlankStateProps } from \"../blank-state\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport const WrappedButton = wrapBrick<Button, ButtonProps>(\"eo-button\");\n\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nexport const WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\n\nexport const WrappedDrawer = wrapBrick<\n Drawer,\n DrawerProps & {\n keyboard?: boolean;\n themeVariant?: \"default\" | \"elevo\";\n },\n DrawerEvents,\n DrawerMapEvents\n>(\"eo-drawer\", {\n onClose: \"close\",\n onOpen: \"open\",\n});\n\nexport const WrappedIconButton = wrapBrick<IconButton, IconButtonProps>(\n \"ai-portal.icon-button\"\n);\n\nexport const WrappedChatInput = wrapBrick<\n ChatInput,\n ChatInputProps,\n ChatInputEvents,\n ChatInputMapEvents\n>(\"ai-portal.chat-input\", {\n onChatSubmit: \"chat.submit\",\n onTerminate: \"terminate\",\n});\n\nexport const WrappedShowCase = wrapBrick<ShowCase, ShowCaseProps>(\n \"ai-portal.show-case\"\n);\n\nexport const WrappedCodeBlock = wrapBrick<CodeBlock, CodeBlockProps>(\n \"eo-code-block\"\n);\n\nexport const WrappedBlankState = wrapBrick<BlankState, BlankStateProps>(\n \"ai-portal.blank-state\"\n);\n\nexport const WrappedRunningFlow = wrapBrick<\n RunningFlow,\n RunningFlowProps,\n RunningFlowEvents,\n RunningFlowMapEvents\n>(\"ai-portal.running-flow\", {\n onActiveChange: \"active.change\",\n});\n\nexport const showDialog =\n unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\n\nexport const copyToClipboard = unwrapProvider<typeof _copyToClipboard>(\n \"basic.copy-to-clipboard\"\n);\n","import { createContext, type Dispatch } from \"react\";\nimport type { SizeTuple } from \"./interfaces\";\n\nexport interface CanvasContextValue {\n onNodeResize: (id: string, size: SizeTuple | null) => void;\n setActiveNodeId: Dispatch<React.SetStateAction<string | null>>;\n hoverOnScrollableContent: boolean;\n setHoverOnScrollableContent: Dispatch<React.SetStateAction<boolean>>;\n supports?: Record<string, boolean>;\n}\n\nexport const CanvasContext = createContext<CanvasContextValue>({\n onNodeResize: () => {},\n setActiveNodeId: () => {},\n hoverOnScrollableContent: false,\n setHoverOnScrollableContent: () => {},\n});\n","// 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: \"fa\",\n icon: \"angle-up\",\n};\n\nexport const ICON_DOWNLOAD: GeneralIconProps = {\n lib: \"antd\",\n icon: \"download\",\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>(nodes: T[]) {\n const map = new Map<string, T>();\n const downstreamMap = new Map<string, string[]>();\n const roots: string[] = [];\n const rootChildren: string[] = [];\n const childMap: Map<string, string> = new Map();\n\n // Ignore sub nodes\n for (const node of nodes) {\n map.set(node.id, node);\n if (node.parent) {\n childMap.set(node.parent, node.id);\n } else {\n rootChildren.push(node.id);\n }\n }\n\n // Setup downstream relations\n for (const node of nodes) {\n for (const up of node.upstream ?? []) {\n let downstream = downstreamMap.get(up);\n if (!downstream) {\n downstreamMap.set(up, (downstream = []));\n }\n downstream.push(node.id);\n }\n\n if (\n !node.parent &&\n !node.upstream?.length /* &&\n (showHiddenNodes || !node.hidden) */\n ) {\n roots.push(node.id);\n }\n }\n\n // Get BFS order of nodes\n const list: string[] = [];\n const visitedNodes = new Set<string>();\n const queue: string[] = [...roots];\n const leaves: string[] = [];\n while (queue.length > 0) {\n const id = queue.shift()!;\n if (visitedNodes.has(id)) {\n continue;\n }\n visitedNodes.add(id);\n list.push(id);\n const downstream = downstreamMap.get(id);\n if (downstream?.length) {\n queue.push(...downstream);\n } else {\n leaves.push(id);\n }\n }\n\n return { list, map, roots, leaves, childMap, downstreamMap };\n}\n","import type { MessageChunk } from \"../chat-stream/interfaces\";\nimport type {\n Task,\n ServiceFlowRun,\n ActivityWithFlow,\n ConversationError,\n Job,\n} from \"../shared/interfaces\";\nimport { getTaskTree, type TaskTreeNode } from \"./getTaskTree\";\n\nexport function getFlatChunks(\n tasks: Task[],\n errors: ConversationError[],\n flowMap?: Map<string, ServiceFlowRun>,\n activityMap?: Map<string, ActivityWithFlow>,\n skipActivitySubTasks?: boolean\n) {\n const taskTree = getTaskTree(tasks);\n const chunks: MessageChunk[] = [];\n const jobMap = new Map<string, Job>();\n\n const collectChunks = (taskNode: TaskTreeNode, level: number) => {\n const flow = flowMap?.get(taskNode.task.id);\n\n const activityWithFlow = activityMap?.get(taskNode.task.id);\n if (activityWithFlow) {\n chunks.push({\n type: \"activity\",\n activity: activityWithFlow.activity,\n flow: activityWithFlow.flow,\n task: taskNode.task,\n });\n }\n\n const shouldSkip = activityWithFlow && skipActivitySubTasks;\n\n for (const { job, subTask } of taskNode.children) {\n if (shouldSkip) {\n if (\n (job.state === \"completed\" &&\n job.messages?.length &&\n job.messages.every((msg) => msg.role === \"user\")) ||\n job.hil\n ) {\n chunks.push({\n type: \"job\",\n job,\n level,\n fromSkippedSubTask: true,\n });\n }\n continue;\n }\n\n if (job.type === \"serviceFlow\") {\n if (flow) {\n chunks.push({\n type: \"flow\",\n flow,\n task: taskNode.task,\n });\n }\n } else if (subTask) {\n collectChunks(subTask, level + 1);\n } else {\n chunks.push({\n type: \"job\",\n job,\n level,\n });\n }\n }\n\n const taskErrors = errors.filter(\n (error) => error.taskId === taskNode.task.id && error.error\n );\n for (const error of taskErrors) {\n chunks.push({\n type: \"error\",\n error: error.error!,\n });\n }\n };\n\n const collectJobs = (taskNode: TaskTreeNode) => {\n for (const { job, subTask } of taskNode.children) {\n jobMap.set(job.id, job);\n if (subTask) {\n collectJobs(subTask);\n }\n }\n };\n\n // Get flattened jobs\n for (const taskNode of taskTree) {\n collectChunks(taskNode, 0);\n collectJobs(taskNode);\n }\n\n for (const error of errors) {\n if (!error.taskId && error.error) {\n chunks.push({\n type: \"error\",\n error: error.error,\n });\n }\n }\n\n return { chunks, jobMap };\n}\n","import type { Task, Job } from \"../shared/interfaces\";\nimport { getOrderedNodes } from \"./getOrderedNodes\";\n\nexport interface TaskTreeNode {\n task: Task;\n children: JobTreeNode[];\n}\n\nexport interface JobTreeNode {\n job: Job;\n subTask?: TaskTreeNode;\n}\n\nexport function getTaskTree(tasks: Task[]): TaskTreeNode[] {\n const { list: taskIds, map: taskMap, childMap } = getOrderedNodes(tasks);\n\n const processedTaskMap = new Map(\n [...taskMap.entries()].map(([taskId, task]) => {\n return [taskId, getOrderedNodes(task.jobs)];\n })\n );\n\n const buildTaskTreeNode = (taskId: string): TaskTreeNode => {\n const task = taskMap.get(taskId)!;\n const processedTask = processedTaskMap.get(taskId)!;\n const { list: jobIds, map: jobMap } = processedTask;\n\n const children: JobTreeNode[] = jobIds.map((jobId) => {\n const job = jobMap.get(jobId)!;\n const subTaskId = childMap.get(job.id);\n if (subTaskId) {\n return {\n job,\n subTask: buildTaskTreeNode(subTaskId),\n };\n }\n return { job };\n });\n\n return {\n task,\n children,\n };\n };\n\n return taskIds.map((taskId) => buildTaskTreeNode(taskId));\n}\n","// istanbul ignore file\n\n/*\nnpx shiki-codegen \\\n --langs json,javascript,typescript,html,html-derivative,xml,css,markdown,mermaid,jsx,tsx,shellscript,python,go,sql \\\n --themes light-plus,dark-plus \\\n --engine oniguruma \\\n ./shared/shiki/src/bundle.ts\n*/\n\nimport lightPlus from \"@shikijs/themes/light-plus\";\nimport darkPlus from \"@shikijs/themes/dark-plus\";\n\n/* Generate by @shikijs/codegen */\nimport type {\n DynamicImportLanguageRegistration,\n HighlighterGeneric,\n ThemeInput,\n} from \"@shikijs/types\";\nimport {\n createSingletonShorthands,\n createdBundledHighlighter,\n} from \"@shikijs/core\";\nimport { createOnigurumaEngine } from \"@shikijs/engine-oniguruma\";\n\ntype BundledLanguage =\n | \"json\"\n | \"javascript\"\n | \"js\"\n | \"typescript\"\n | \"ts\"\n | \"html\"\n | \"html-derivative\"\n | \"xml\"\n | \"css\"\n | \"markdown\"\n | \"md\"\n | \"mermaid\"\n | \"mmd\"\n | \"jsx\"\n | \"tsx\"\n | \"shellscript\"\n | \"bash\"\n | \"sh\"\n | \"shell\"\n | \"zsh\"\n | \"python\"\n | \"py\"\n | \"go\"\n | \"sql\"\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 ConversationError,\n ConversationState,\n ExampleProject,\n ExtraChatPayload,\n FileInfo,\n GeneratedView,\n Job,\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 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","WrappedBlankState","WrappedRunningFlow","onActiveChange","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","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","rootChildren","childMap","parent","_node$upstream2","up","_node$upstream","upstream","downstream","visitedNodes","Set","queue","leaves","shift","has","add","getFlatChunks","tasks","errors","flowMap","activityMap","skipActivitySubTasks","taskTree","taskIds","taskMap","processedTaskMap","taskId","task","jobs","buildTaskTreeNode","processedTask","jobIds","jobMap","jobId","job","subTaskId","subTask","getTaskTree","chunks","collectChunks","taskNode","level","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":""}