@next-bricks/ai-portal 0.50.2 → 0.50.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bricks.json +31 -31
- package/dist/chunks/1334.aae33a33.js +2 -0
- package/dist/chunks/1334.aae33a33.js.map +1 -0
- package/dist/chunks/3199.0220cf6e.js +3 -0
- package/dist/chunks/3199.0220cf6e.js.map +1 -0
- package/dist/chunks/3735.8c1d82e7.js +15 -0
- package/dist/chunks/3735.8c1d82e7.js.LICENSE.txt +5 -0
- package/dist/chunks/3735.8c1d82e7.js.map +1 -0
- package/dist/chunks/4317.d0f5904b.js +3 -0
- package/dist/chunks/{3151.d1fdecfb.js.LICENSE.txt → 4317.d0f5904b.js.LICENSE.txt} +8 -0
- package/dist/chunks/4317.d0f5904b.js.map +1 -0
- package/dist/chunks/6201.993201cb.js +2 -0
- package/dist/chunks/6201.993201cb.js.map +1 -0
- package/dist/chunks/6593.f25cfd6b.js +2 -0
- package/dist/chunks/6593.f25cfd6b.js.map +1 -0
- package/dist/chunks/8135.3255c5ba.js +2 -0
- package/dist/chunks/8135.3255c5ba.js.map +1 -0
- package/dist/chunks/8717.feabd75d.js +2 -0
- package/dist/chunks/8717.feabd75d.js.map +1 -0
- package/dist/chunks/8889.bcfc6cab.js +3 -0
- package/dist/chunks/8889.bcfc6cab.js.map +1 -0
- package/dist/chunks/{ai-employees.941aaa1b.js → ai-employees.b8e937d4.js} +3 -3
- package/dist/chunks/{ai-employees.941aaa1b.js.map → ai-employees.b8e937d4.js.map} +1 -1
- package/dist/chunks/elevo-sidebar.e53ce03a.js +3 -0
- package/dist/chunks/elevo-sidebar.e53ce03a.js.map +1 -0
- package/dist/chunks/{main.bd40fdc0.js → main.c5d23a2b.js} +2 -2
- package/dist/chunks/{main.bd40fdc0.js.map → main.c5d23a2b.js.map} +1 -1
- package/dist/chunks/page-container.bfb9337e.js +2 -0
- package/dist/chunks/page-container.bfb9337e.js.map +1 -0
- package/dist/chunks/preview-container.6b29ee97.js +2 -0
- package/dist/chunks/preview-container.6b29ee97.js.map +1 -0
- package/dist/examples.json +9 -9
- package/dist/index.e0156b47.js +2 -0
- package/dist/index.e0156b47.js.map +1 -0
- package/dist/manifest.json +247 -247
- package/dist/types.json +153 -144
- package/dist-types/elevo-sidebar/index.d.ts +0 -2
- package/dist-types/page-container/index.d.ts +2 -0
- package/dist-types/shared/interfaces.d.ts +2 -2
- package/dist-types/shared/workers/tsxParser.d.ts +2 -2
- package/package.json +2 -2
- package/dist/chunks/3151.d1fdecfb.js +0 -3
- package/dist/chunks/3151.d1fdecfb.js.map +0 -1
- package/dist/chunks/3735.0389cba2.js +0 -15
- package/dist/chunks/3735.0389cba2.js.map +0 -1
- package/dist/chunks/3832.9b48b5f5.js +0 -2
- package/dist/chunks/3832.9b48b5f5.js.map +0 -1
- package/dist/chunks/6201.01557568.js +0 -2
- package/dist/chunks/6201.01557568.js.map +0 -1
- package/dist/chunks/7580.5dca4f97.js +0 -3
- package/dist/chunks/7580.5dca4f97.js.LICENSE.txt +0 -9
- package/dist/chunks/7580.5dca4f97.js.map +0 -1
- package/dist/chunks/8414.8b8390cb.js +0 -2
- package/dist/chunks/8414.8b8390cb.js.map +0 -1
- package/dist/chunks/8717.4f49d4f6.js +0 -2
- package/dist/chunks/8717.4f49d4f6.js.map +0 -1
- package/dist/chunks/8889.746f8129.js +0 -3
- package/dist/chunks/8889.746f8129.js.map +0 -1
- package/dist/chunks/elevo-sidebar.cbec3024.js +0 -3
- package/dist/chunks/elevo-sidebar.cbec3024.js.map +0 -1
- package/dist/chunks/page-container.e187d00a.js +0 -2
- package/dist/chunks/page-container.e187d00a.js.map +0 -1
- package/dist/chunks/preview-container.631389f7.js +0 -2
- package/dist/chunks/preview-container.631389f7.js.map +0 -1
- package/dist/index.546d6b1e.js +0 -2
- package/dist/index.546d6b1e.js.map +0 -1
- /package/dist/chunks/{3735.0389cba2.js.LICENSE.txt → 3199.0220cf6e.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{8889.746f8129.js.LICENSE.txt → 8889.bcfc6cab.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{ai-employees.941aaa1b.js.LICENSE.txt → ai-employees.b8e937d4.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{elevo-sidebar.cbec3024.js.LICENSE.txt → elevo-sidebar.e53ce03a.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunks/6201.993201cb.js","mappings":"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","sources":["webpack:///./src/shared/NodeFeedback/NodeFeedback.module.css","webpack:///./src/shared/CreatedView/CreatedView.module.css","webpack:///./src/cruise-canvas/getOrderedNodes.ts","webpack:///./src/cruise-canvas/getFlatOrderedJobs.ts","webpack:///./src/shared/MarkdownPre.module.css?da10","webpack:///./src/shared/MarkdownPre.tsx","webpack:///./src/shared/MarkdownPre.module.css","webpack:///./src/shared/bricks.ts","webpack:///./src/cruise-canvas/CanvasContext.ts","webpack:///./src/cruise-canvas/reducers/tasks.ts","webpack:///./src/cruise-canvas/reducers/index.ts","webpack:///./src/cruise-canvas/reducers/conversation.ts","webpack:///./src/cruise-canvas/reducers/errors.ts","webpack:///./src/cruise-canvas/useConversationDetail.ts","webpack:///./src/cruise-canvas/shared.module.css?c988","webpack:///./src/cruise-canvas/ToolProgressLine/ToolProgressLine.module.css?1d0e","webpack:///./src/cruise-canvas/ToolProgressLine/ToolProgressLine.tsx","webpack:///./src/cruise-canvas/ToolCallStatus/ToolCallStatus.module.css?6208","webpack:///./src/cruise-canvas/utils/getToolDataProgress.ts","webpack:///./src/cruise-canvas/ToolCallStatus/ToolCallStatus.tsx","webpack:///./src/shared/constants.ts","webpack:///./src/cruise-canvas/ToolCallStatus/ToolCallStatus.module.css","webpack:///./src/cruise-canvas/CmdbInstanceDetail/CmdbInstanceDetail.module.css?7513","webpack:///./src/cruise-canvas/CmdbInstanceDetail/CmdbInstanceDetail.tsx","webpack:///./src/cruise-canvas/CmdbInstanceDetail/CmdbInstanceDetail.module.css","webpack:///./src/shared/ExpandedView/ExpandedView.module.css?985a","webpack:///./src/shared/ExpandedView/ExpandedView.tsx","webpack:///../../../src/i18n/constants.ts","webpack:///../../../../src/i18n/locales/en.ts","webpack:///../../../../src/i18n/locales/zh.ts","webpack:///../../../src/i18n/index.ts","webpack:///../../src/humanizeTime.ts","webpack:///./src/shared/parseTemplate.ts","webpack:///./src/cruise-canvas/ToolProgressLine/ToolProgressLine.module.css","webpack:///../../src/index.ts","webpack:///../../src/rehypeMermaid.ts","webpack:///../../src/utils.ts","webpack:///../../src/MarkdownComponent.tsx","webpack:///./src/cruise-canvas/EnhancedMarkdown/EnhancedMarkdown.tsx","webpack:///./src/shared/ChatBox/i18n.ts","webpack:///./src/shared/ChatBox/ChatBox.tsx","webpack:///./src/shared/getAsyncConstructedView.ts","webpack:///./src/shared/TaskContext.ts","webpack:///./src/cruise-canvas/NodeReplay/NodeReplay.module.css","webpack:///./src/cruise-canvas/toolbar.module.css","webpack:///./src/shared/ExpandedView/ExpandedView.module.css","webpack:///./src/shared/CreatedView/ViewToolbar.module.css","webpack:///./src/cruise-canvas/toolbar.module.css?a4b4","webpack:///./src/shared/CreatedView/CreatedView.module.css?fa62","webpack:///./src/shared/CreatedView/CreatedView.tsx","webpack:///./src/shared/CreatedView/ViewToolbar.module.css?4751","webpack:///./src/shared/CreatedView/i18n.ts","webpack:///./src/shared/CreatedView/ViewToolbar.tsx","webpack:///./src/cruise-canvas/shared.module.css","webpack:///./src/shared/useViewFeedbackDone.ts","webpack:///./src/shared/NodeFeedback/NodeFeedback.module.css?99d4","webpack:///./src/shared/NodeFeedback/i18n.ts","webpack:///./src/shared/NodeFeedback/NodeFeedback.tsx","webpack:///./src/cruise-canvas/NodeReplay/NodeReplay.module.css?d0bd","webpack:///./src/cruise-canvas/NodeReplay/i18n.ts","webpack:///./src/cruise-canvas/NodeReplay/NodeReplay.tsx"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.node-feedback--qSAvjvCa{width:var(--cruise-canvas-node-width-medium);background:rgba(255,255,255,0.2);border-radius:12px;border:1px solid rgba(255,255,255,0.3);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:20px 28px}.heading--zbbPDsFk{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.title--l9cmJRhB{font-weight:500}.form-item--wtgYuM1v{font-size:12px;line-height:17px;color:rgba(0,0,0,0.88)}.form-item--wtgYuM1v.horizontal--zqc5U1Jh{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:1em}.form-item--wtgYuM1v.vertical--i26lXOiT{margin-top:16px}.form-item--wtgYuM1v.vertical--i26lXOiT label{display:block;color:rgba(0,0,0,0.45);margin-bottom:8px}.form-item--wtgYuM1v textarea{width:100%;background:none;border-radius:8px;border:1px solid rgba(0,0,0,0.15);padding:8px;color:#262626}.form-item--wtgYuM1v textarea:focus{outline:none;border-color:rgba(0,0,0,0.25)}.options--Cak4FPTk{display:flex;align-items:center}.radio--P5Vo_D45{position:relative;cursor:pointer}.radio--P5Vo_D45 input{width:0px;height:0px;position:absolute;-webkit-appearance:none;-moz-appearance:none;appearance:none}.radio--P5Vo_D45 span{display:flex;align-items:center;justify-content:center;width:64px;height:28px;border-radius:8px;background:none;border:1px solid rgba(0,0,0,0.15)}.radio--P5Vo_D45 input:checked + span{background:rgba(255,255,255,0.5);border:none}.radio--P5Vo_D45 input:not(:checked) + span:hover{background:rgba(255,255,255,0.3);border:none}.radio--P5Vo_D45 + .radio--P5Vo_D45{margin-left:8px}.submit--eCyA49Nq{display:flex;justify-content:end;margin-top:18px;gap:8px}.validate--krlXob4C .form-item--wtgYuM1v:has(input:invalid) .label--U8YsN4Mm{color:#f24c25}.submitted--XxktB9y5{background:#d0e7d6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:none;font-weight:500;color:#009929;padding:17px;text-align:center}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"node-feedback\": `node-feedback--qSAvjvCa`,\n\t\"heading\": `heading--zbbPDsFk`,\n\t\"title\": `title--l9cmJRhB`,\n\t\"form-item\": `form-item--wtgYuM1v`,\n\t\"horizontal\": `horizontal--zqc5U1Jh`,\n\t\"vertical\": `vertical--i26lXOiT`,\n\t\"options\": `options--Cak4FPTk`,\n\t\"radio\": `radio--P5Vo_D45`,\n\t\"submit\": `submit--eCyA49Nq`,\n\t\"validate\": `validate--krlXob4C`,\n\t\"label\": `label--U8YsN4Mm`,\n\t\"submitted\": `submitted--XxktB9y5`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.heading--Mi2u66PA{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.title--t7OpwWbH{font-size:12px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;--shine-text-color:rgba(38,38,38,0.65);--shine-text-highlight-color:#dcdcdc}ai-portal\\\\.cruise-canvas .title--t7OpwWbH{text-indent:4px}ai-portal\\\\.cruise-canvas .heading--Mi2u66PA{margin-bottom:10px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"heading\": `heading--Mi2u66PA`,\n\t\"title\": `title--t7OpwWbH`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","export interface GeneralNode {\n id: string;\n upstream?: string[];\n parent?: string;\n hidden?: boolean;\n}\n\nexport interface GetOrderedNodesOptions {\n showHiddenNodes?: boolean;\n}\n\nexport function getOrderedNodes<T extends GeneralNode>(\n nodes: T[] | null | undefined,\n options?: GetOrderedNodesOptions\n) {\n const fixedNodes = nodes ?? [];\n const map = new Map<string, T>();\n const childrenMap = new Map<string, string[]>();\n let downstreamMap = new Map<string, string[]>();\n let roots: string[] = [];\n const rootChildren: string[] = [];\n const levels = new Map<string, number>();\n const hiddenNodeIds = new Set<string>();\n const showHiddenNodes = options?.showHiddenNodes;\n\n // Setup children relations\n for (const node of fixedNodes) {\n map.set(node.id, node);\n // TODO: remove mock\n if (!showHiddenNodes && node.hidden) {\n hiddenNodeIds.add(node.id);\n }\n if (node.parent) {\n let children = childrenMap.get(node.parent);\n if (!children) {\n childrenMap.set(node.parent, (children = []));\n }\n children.push(node.id);\n } else {\n rootChildren.push(node.id);\n }\n }\n\n // Setup downstream relations\n for (const node of fixedNodes) {\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 // Convert children to flat downstream\n const alignDownstreamMap = (children: string[], level: number) => {\n for (const nodeId of children) {\n levels.set(nodeId, level);\n const subChildren = childrenMap.get(nodeId);\n const downstream = downstreamMap.get(nodeId);\n\n if (subChildren) {\n const directSubChildren = subChildren.filter((child) => {\n const childNode = map.get(child)!;\n return !childNode.upstream?.length;\n });\n\n const leafSubChildren = downstream\n ? subChildren.filter((child) => {\n return !downstreamMap.has(child);\n })\n : [];\n\n downstreamMap.set(nodeId, directSubChildren);\n\n for (const child of leafSubChildren) {\n downstreamMap.set(child, [...downstream!]);\n }\n\n alignDownstreamMap(subChildren, level + 1);\n }\n }\n };\n\n alignDownstreamMap(rootChildren, 0);\n\n // Remove hidden nodes, and reconnect related downstream connections.\n let fullDownstreamMap: Map<string, string[]> | undefined;\n if (!showHiddenNodes && hiddenNodeIds.size > 0) {\n const findVisibleDownstreams = (downstreams: string[]): string[] => {\n return downstreams.flatMap((nodeId) => {\n const node = map.get(nodeId)!;\n if (node.hidden) {\n const nextDownstreams = downstreamMap.get(nodeId);\n return nextDownstreams ? findVisibleDownstreams(nextDownstreams) : [];\n }\n return nodeId;\n });\n };\n\n const newDownstreamMap = new Map<string, string[]>();\n\n const fixDownstreams = (visibleDownstreams: string[]) => {\n for (const id of visibleDownstreams) {\n const downstreams = downstreamMap.get(id);\n if (downstreams) {\n const visibleDownstreams = findVisibleDownstreams(downstreams);\n newDownstreamMap.set(id, visibleDownstreams);\n fixDownstreams(visibleDownstreams);\n }\n }\n };\n\n roots = findVisibleDownstreams(roots);\n fixDownstreams(roots);\n fullDownstreamMap = downstreamMap;\n downstreamMap = newDownstreamMap;\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, levels, roots, leaves, downstreamMap, fullDownstreamMap };\n}\n","import type { Task, Job, ConversationError } from \"../shared/interfaces\";\nimport { getOrderedNodes } from \"./getOrderedNodes\";\n\nexport function getFlatOrderedJobs(\n tasks: Task[] | null | undefined,\n errors: ConversationError[],\n options?: {\n showHiddenJobs?: boolean;\n }\n) {\n const {\n list: taskIds,\n map: taskMap,\n roots: taskRoots,\n downstreamMap: taskDownstreamMap,\n } = getOrderedNodes(tasks);\n\n const jobOptions = {\n showHiddenNodes: options?.showHiddenJobs,\n };\n\n // Job ID list\n const list: string[] = [];\n const mapEntries: [string, Job][] = [];\n const levelEntries: [string, number][] = [];\n const downstreamMapEntries: [string, string[]][] = [];\n const roots: string[] = [];\n\n const orderedTasks = new Map(\n taskIds.map((taskId) => {\n const task = taskMap.get(taskId)!;\n return [taskId, getOrderedNodes(task.jobs, jobOptions)];\n })\n );\n\n for (const [taskId, orderedTask] of orderedTasks) {\n const {\n list: jobIds,\n map: jobMap,\n levels: jobLevels,\n roots: jobRoots,\n leaves: jobLeaves,\n downstreamMap: jobDownstreamMap,\n } = orderedTask;\n\n list.push(...jobIds);\n mapEntries.push(...jobMap);\n levelEntries.push(...jobLevels);\n downstreamMapEntries.push(...jobDownstreamMap);\n if (taskRoots.includes(taskId)) {\n roots.push(...jobRoots);\n }\n\n const downstreamTasks = taskDownstreamMap.get(taskId);\n if (downstreamTasks?.length) {\n for (const downstreamTaskId of downstreamTasks) {\n const { roots: downstreamTaskRoots } =\n orderedTasks.get(downstreamTaskId)!;\n for (const leaf of jobLeaves) {\n downstreamMapEntries.push([leaf, downstreamTaskRoots]);\n }\n }\n }\n }\n\n const downstreamMap = new Map(downstreamMapEntries);\n\n const jobsWithFollowingErrors = new Map<string, string>();\n for (const error of errors) {\n if (error.error) {\n const jobId = error.jobs.findLast((job) => {\n const downstreams = downstreamMap.get(job);\n return (\n !downstreams || downstreams.every((d) => !error.jobs.includes(d))\n );\n });\n if (jobId) {\n jobsWithFollowingErrors.set(jobId, error.error);\n }\n }\n }\n\n return {\n list,\n map: new Map(mapEntries),\n roots,\n levels: new Map(levelEntries),\n downstreamMap,\n jobsWithFollowingErrors,\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]!./MarkdownPre.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./MarkdownPre.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport {\n CodeWrapper,\n type CodeWrapperProps,\n} from \"@next-bricks/presentational/code-wrapper\";\nimport styles from \"./MarkdownPre.module.css\";\n\nconst WrappedCodeWrapper = wrapBrick<CodeWrapper, CodeWrapperProps>(\n \"presentational.code-wrapper\"\n);\n\nexport type MarkdownComponentProps = JSX.IntrinsicElements[\"pre\"] & {\n node?: unknown;\n};\n\nexport function MarkdownPre({ node, ...props }: MarkdownComponentProps) {\n return (\n <WrappedCodeWrapper\n className={styles[\"code-wrapper\"]}\n preProps={props}\n showCopyButton={!!props.className?.includes(\"shiki\")}\n themeVariant=\"elevo\"\n />\n );\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.code-wrapper--jieEbxla::part(pre){border:1px solid #ccd1de}.code-wrapper--jieEbxla::part(mermaid){border:none;background:none}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"code-wrapper\": `code-wrapper--jieEbxla`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import React from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport { asyncWrapBrick } from \"@next-core/react-runtime\";\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 { PopoverProps, Popover } from \"@next-bricks/basic/popover\";\nimport { EoNextTable, NextTableProps } from \"@next-bricks/advanced/next-table\";\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\";\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 WrappedPopover = wrapBrick<Popover, PopoverProps>(\"eo-popover\");\n\nexport const WrappedDrawer = wrapBrick<\n Drawer,\n DrawerProps & { keyboard?: boolean },\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 onMessageSubmit: \"message.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 showDialog =\n unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\n\nexport const copyToClipboard = unwrapProvider<typeof _copyToClipboard>(\n \"basic.copy-to-clipboard\"\n);\n\nexport const AsyncWrappedTable = React.lazy(async () => ({\n default: await asyncWrapBrick<EoNextTable, NextTableProps>(\"eo-next-table\"),\n}));\n","import { createContext, type Dispatch } from \"react\";\nimport type { SizeTuple } from \"./interfaces\";\nimport type { FileInfo } from \"../shared/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 setActiveFile: Dispatch<React.SetStateAction<FileInfo | null>>;\n}\n\nexport const CanvasContext = createContext<CanvasContextValue>({\n onNodeResize: () => {},\n setActiveNodeId: () => {},\n hoverOnScrollableContent: false,\n setHoverOnScrollableContent: () => {},\n setActiveFile: () => {},\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 ]);\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 { Reducer } from \"react\";\nimport type { CruiseCanvasAction, CruiseCanvasState } from \"./interfaces\";\nimport { tasks } from \"./tasks\";\nimport { conversation } from \"./conversation\";\nimport { errors } from \"./errors\";\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});\n","import type { Reducer } from \"react\";\nimport { isMatch, pick } from \"lodash\";\nimport type { CruiseCanvasAction } from \"./interfaces\";\nimport type { ConversationBaseDetail } from \"../../shared/interfaces\";\n\nexport const conversation: Reducer<\n ConversationBaseDetail | null,\n CruiseCanvasAction\n> = (state, action) => {\n switch (action.type) {\n case \"sse\": {\n const patch = pick(action.payload, [\n \"id\",\n \"state\",\n \"title\",\n \"startTime\",\n \"endTime\",\n \"projectId\",\n ]);\n\n return (\n state && isMatch(state, patch) ? state : { ...state, ...patch }\n ) as ConversationBaseDetail;\n }\n\n case \"reset\":\n return null;\n\n case \"finished\":\n if (state) {\n return { ...state, finished: true };\n }\n return state;\n }\n return state;\n};\n","import type { Reducer } from \"react\";\nimport type { CruiseCanvasAction } from \"./interfaces\";\nimport type { ConversationError } from \"../../shared/interfaces\";\n\nexport const errors: Reducer<ConversationError[], CruiseCanvasAction> = (\n state,\n action\n) => {\n switch (action.type) {\n case \"sse\": {\n const { error, tasks } = action.payload;\n const lastError = state[state.length - 1];\n\n if (typeof error === \"string\" && error) {\n if (lastError) {\n return state.slice(0, -1).concat(\n {\n ...lastError,\n error,\n },\n { jobs: [] }\n );\n }\n return [{ jobs: [], error }, { jobs: [] }];\n }\n\n const previousJobs = new Set(state.flatMap((e) => Array.from(e.jobs)));\n const jobs = new Set<string>();\n for (const task of tasks ?? []) {\n for (const job of task.jobs ?? []) {\n if (!previousJobs.has(job.id)) {\n jobs.add(job.id);\n }\n }\n }\n\n const newJobs = Array.from(jobs);\n\n if (newJobs.length === 0) {\n return state;\n }\n\n if (lastError) {\n return state.slice(0, -1).concat({\n ...lastError,\n jobs: [...lastError.jobs, ...newJobs],\n });\n }\n\n return [{ jobs: newJobs }];\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 { ConversationPatch, RequestStore } from \"../shared/interfaces\";\n\nconst MINIMAL_DELAY = 500;\n\nexport function useConversationDetail(\n conversationId: string,\n initialRequest?: RequestStore | null,\n replay?: boolean,\n replayDelay?: number\n) {\n const [{ conversation, tasks, errors }, dispatch] = useReducer(\n rootReducer,\n null,\n () => ({\n conversation: null,\n tasks: [],\n errors: [],\n })\n );\n\n const humanInputRef =\n useRef<(jobId: string, input: string | null, action?: string) => void>();\n\n const replayListRef = useRef<ConversationPatch[]>([]);\n const replayRef = useRef(replay);\n const replayDelayRef = useRef((replayDelay ?? 2) * 1000);\n const replayResolveRef = useRef<(() => void) | null>(null);\n\n const skipToResults = useCallback(() => {\n replayRef.current = false;\n if (replayResolveRef.current) {\n replayResolveRef.current();\n replayResolveRef.current = null;\n }\n }, []);\n\n const watchAgain = useCallback(async () => {\n replayRef.current = true;\n dispatch({ type: \"reset\" });\n\n let isInitial = true;\n let previousTime: number | undefined;\n for (const value of replayListRef.current) {\n if (replayRef.current) {\n let delay = replayDelayRef.current;\n if (value.time && previousTime) {\n delay = Math.min(\n Math.max(MINIMAL_DELAY, (value.time - previousTime) * 1000),\n delay\n );\n }\n previousTime = value.time;\n if (!isInitial) {\n await new Promise<void>((resolve) => {\n replayResolveRef.current = resolve;\n setTimeout(resolve, delay);\n });\n replayResolveRef.current = null;\n }\n }\n\n dispatch({ type: \"sse\", payload: value, workspace: conversationId });\n isInitial = false;\n }\n dispatch({ type: \"finished\" });\n }, [conversationId]);\n\n useEffect(() => {\n dispatch({ type: \"reset\" });\n replayListRef.current = [];\n humanInputRef.current = undefined;\n\n let ignore = false;\n let requesting = false;\n let ctrl: AbortController | undefined;\n\n const makeRequest = async (content: string | null, action?: string) => {\n if (requesting) {\n return;\n }\n\n requesting = true;\n ctrl = new AbortController();\n try {\n const sseRequest = await (content === null && !action\n ? createSSEStream<ConversationPatch>(\n `${getBasePath()}api/gateway/logic.llm.aiops_service/api/v1/elevo/conversations/${conversationId}/stream`,\n {\n signal: ctrl.signal,\n }\n )\n : createSSEStream<ConversationPatch>(\n `${getBasePath()}api/gateway/logic.llm.aiops_service/api/v1/elevo/conversations/${conversationId}/messages`,\n {\n signal: ctrl.signal,\n method: \"POST\",\n body: JSON.stringify(action ? { action } : { content }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n ));\n const stream = await sseRequest;\n let isInitial = true;\n let previousTime: number | undefined;\n for await (const value of stream) {\n if (ignore) {\n requesting = false;\n return;\n }\n\n if (replayRef.current) {\n let delay = replayDelayRef.current;\n if (value.time && previousTime) {\n delay = Math.min(\n Math.max(MINIMAL_DELAY, (value.time - previousTime) * 1000),\n delay\n );\n }\n previousTime = value.time;\n\n if (!isInitial) {\n await new Promise<void>((resolve) => {\n replayResolveRef.current = resolve;\n setTimeout(resolve, delay);\n });\n replayResolveRef.current = null;\n }\n }\n\n replayListRef.current.push(value);\n dispatch({ type: \"sse\", payload: value, workspace: conversationId });\n isInitial = false;\n }\n dispatch({ type: \"finished\" });\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"sse failed\", e);\n handleHttpError(e);\n } finally {\n requesting = false;\n }\n };\n\n humanInputRef.current = async (\n jobId: string,\n content: string | null,\n action?: string\n ) => {\n makeRequest(content, action);\n };\n\n makeRequest(\n initialRequest?.conversationId === conversationId\n ? initialRequest.content\n : null\n );\n\n return () => {\n ignore = true;\n ctrl?.abort();\n };\n }, [conversationId, initialRequest]);\n\n return {\n conversation,\n tasks,\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]!./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","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./ToolProgressLine.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./ToolProgressLine.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport styles from \"./ToolProgressLine.module.css\";\nimport { DataPart } from \"../../shared/interfaces\";\n\nexport interface ToolProgressLineProps {\n progress: DataPart;\n /**\n * 暂定失败肯定是最后一个\n */\n failed?: boolean;\n}\n\nexport function ToolProgressLine({\n progress,\n failed,\n}: ToolProgressLineProps): JSX.Element {\n const data = progress.data;\n\n return (\n <div\n className={classNames(styles[\"progress-line\"], {\n [styles[\"failed\"]]: failed,\n })}\n >\n <div className={classNames(styles.step)} key={data.progress}>\n <div className={styles.axis}>\n <div className={styles.line} />\n <div className={styles.dot} />\n </div>\n <div className={styles.progress}>\n <span className={styles.count}>{data.progress}</span>\n <span>/</span>\n <span className={styles.total}>{data.total}</span>\n </div>\n <div className={styles.description}>{data.message}</div>\n </div>\n </div>\n );\n}\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./ToolCallStatus.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./ToolCallStatus.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import type { DataPart, Message } from \"../../shared/interfaces\";\n\nexport const getToolDataProgress = (\n toolCallMessages: Message[] | undefined\n): DataPart | undefined => {\n let progressPart: DataPart | undefined;\n toolCallMessages?.findLast((message) => {\n progressPart = message.parts?.findLast((part) => {\n return part.type === \"data\" && part.data?.type === \"progress\";\n }) as DataPart | undefined;\n return !!progressPart;\n });\n return progressPart;\n};\n","import React, { useCallback, useContext, useMemo } from \"react\";\nimport classNames from \"classnames\";\nimport moment from \"moment\";\nimport { humanizeTime, HumanizeTimeFormat } from \"@next-shared/datetime\";\nimport styles from \"./ToolCallStatus.module.css\";\nimport { WrappedIcon } from \"../../shared/bricks\";\nimport { TaskContext } from \"../../shared/TaskContext\";\nimport { ToolProgressLine } from \"../ToolProgressLine/ToolProgressLine\";\nimport { getToolDataProgress } from \"../utils/getToolDataProgress\";\nimport type { Job, JobState } from \"../../shared/interfaces\";\n\nexport interface NodeJobToolCallProps {\n job: Job;\n variant?: \"default\" | \"read-only\";\n}\n\nexport function ToolCallStatus({\n job,\n variant,\n}: NodeJobToolCallProps): JSX.Element {\n const { setActiveToolCallJobId, separateInstructions } =\n useContext(TaskContext);\n const toolCall = job.toolCall!;\n const toolTitle = toolCall.annotations?.title || toolCall.name;\n const jobTitle = separateInstructions\n ? toolTitle\n : job.instruction || toolTitle;\n const [progress, hasToolCallResponse] = useMemo(() => {\n const toolCallMessages = job.messages?.filter((msg) => msg.role === \"tool\");\n return [\n getToolDataProgress(toolCallMessages),\n toolCallMessages?.some((msg) =>\n msg.parts.some((part) => part.type === \"text\")\n ),\n ];\n }, [job.messages]);\n\n const readOnly = useMemo(() => {\n return variant === \"read-only\";\n }, [variant]);\n\n const handleClick = useCallback(() => {\n if (variant === \"read-only\") {\n return;\n }\n setActiveToolCallJobId(job.id);\n }, [job.id, variant, setActiveToolCallJobId]);\n\n const toolState =\n [\"working\", \"input-required\"].includes(job.state) && hasToolCallResponse\n ? \"completed\"\n : job.state;\n\n const failed = job.isError || toolState === \"failed\";\n\n return (\n <div\n className={classNames(styles[\"tool-call\"], {\n [styles.failed]: failed,\n [styles[\"read-only\"]]: readOnly,\n })}\n onClick={handleClick}\n >\n <div className={classNames(styles.status)}>\n {job.isError || toolState === \"failed\" ? (\n <WrappedIcon\n className={styles.icon}\n lib=\"fa\"\n prefix=\"fas\"\n icon=\"xmark\"\n />\n ) : toolState === \"completed\" ? (\n <WrappedIcon\n className={styles.icon}\n lib=\"fa\"\n prefix=\"fas\"\n icon=\"check\"\n />\n ) : toolState === \"working\" ? (\n <WrappedIcon\n className={styles.icon}\n lib=\"antd\"\n theme=\"outlined\"\n icon=\"loading-3-quarters\"\n spinning\n />\n ) : toolState === \"input-required\" ? (\n <WrappedIcon\n className={styles.icon}\n lib=\"fa\"\n prefix=\"far\"\n icon=\"circle-user\"\n />\n ) : toolState === \"canceled\" ||\n toolState === (\"terminated\" as JobState) ? (\n <WrappedIcon\n className={styles.icon}\n lib=\"fa\"\n prefix=\"far\"\n icon=\"circle-stop\"\n />\n ) : (\n <WrappedIcon\n className={styles.icon}\n lib=\"fa\"\n prefix=\"far\"\n icon=\"clock\"\n />\n )}\n <span className={styles.name}>\n {variant === \"read-only\" ? toolTitle : jobTitle}\n </span>\n {job.startTime ? (\n <span className={styles.timing}>\n {`${humanizeTime(job.startTime * 1000, HumanizeTimeFormat.accurate)}${\n job.endTime\n ? ` (${moment.duration(job.endTime * 1000 - job.startTime * 1000).humanize({ ss: -1 })})`\n : \"\"\n }`}\n </span>\n ) : null}\n </div>\n {!!progress && !readOnly && (\n <ToolProgressLine progress={progress} failed={failed} />\n )}\n </div>\n );\n}\n","import type { GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport type { ConversationState, JobState, TaskState } from \"./interfaces.js\";\n\nexport const DONE_STATES = [\n \"completed\",\n \"failed\",\n \"canceled\",\n \"terminated\",\n] as (ConversationState | TaskState | JobState | undefined)[];\n\nexport const GENERAL_DONE_STATES = [...DONE_STATES, \"paused\"] as (\n | ConversationState\n | TaskState\n | JobState\n | undefined\n)[];\n\nexport const NON_WORKING_STATES = [...GENERAL_DONE_STATES, \"input-required\"];\n\nexport const ICON_CLOSE: GeneralIconProps = {\n lib: \"lucide\",\n icon: \"x\",\n};\n\nexport const ICON_LOADING: GeneralIconProps = {\n lib: \"antd\",\n icon: \"loading-3-quarters\",\n spinning: true,\n};\n\nexport const ICON_CANVAS: GeneralIconProps = {\n lib: \"lucide\",\n icon: \"network\",\n} as GeneralIconProps;\n\nexport const ICON_CHAT: GeneralIconProps = {\n lib: \"lucide\",\n icon: \"messages-square\",\n} as GeneralIconProps;\n\nexport const ICON_FEEDBACK: GeneralIconProps = {\n lib: \"lucide\",\n icon: \"message-square\",\n};\n\nexport const ICON_EXTERNAL_LINK: GeneralIconProps = {\n lib: \"lucide\",\n icon: \"external-link\",\n};\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.tool-call--aTh276av{--failed-color:#f24c25;--border-color:#e2e2ec;--status-border-color:rgba(226,226,236,0.8);font-size:13px;color:#595959;border-radius:10px;border:1px solid var(--border-color);background:#e6e9f3}.tool-call--aTh276av:not(.read-only--xWUswNds):hover{background:#e4e9fb;border:1px solid #b8c1ff}.tool-call--aTh276av:not(:last-child){margin-bottom:10px}.tool-call--aTh276av:not(.read-only--xWUswNds){cursor:pointer}.tool-call--aTh276av .status--V5ZXGYOG:not(:last-child){border-bottom:1px solid var(--status-border-color)}.read-only--xWUswNds{font-size:14px;padding:4px}.failed--sz70SlSa{background:#fef5f3}.failed--sz70SlSa:not(.read-only--xWUswNds):hover{background:#fee7e1;border:1px solid #ffc3b5}.failed--sz70SlSa .status--V5ZXGYOG:not(:last-child){border-bottom:1px solid rgba(253,225,218,0.8)}.status--V5ZXGYOG{height:24px;display:flex;align-items:center;padding:0 12px;color:#262626}.timing--GjuZkMuV{display:none;color:#8c8c8c}.read-only--xWUswNds .timing--GjuZkMuV,\n[class^=\"node-job--\"]:hover .timing--GjuZkMuV,\n.status--V5ZXGYOG:hover .timing--GjuZkMuV{display:block}.icon--LTp5Jjna{margin-right:8px;color:#8c8c8c}.failed--sz70SlSa .icon--LTp5Jjna{color:var(--failed-color)}.name--FwiqyIlQ{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"tool-call\": `tool-call--aTh276av`,\n\t\"read-only\": `read-only--xWUswNds`,\n\t\"status\": `status--V5ZXGYOG`,\n\t\"failed\": `failed--sz70SlSa`,\n\t\"timing\": `timing--GjuZkMuV`,\n\t\"icon\": `icon--LTp5Jjna`,\n\t\"name\": `name--FwiqyIlQ`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./CmdbInstanceDetail.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./CmdbInstanceDetail.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { orderBy, uniqueId, upperFirst } from \"lodash\";\nimport { unstable_createRoot } from \"@next-core/runtime\";\nimport {\n // UseBrickConf,\n type BrickConf,\n type BrickEventHandler,\n type ContextConf,\n type UseSingleBrickConf,\n} from \"@next-core/types\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport type { DescriptionItem } from \"@next-bricks/presentational/descriptions\";\nimport type { CmdbInstanceDetailData } from \"../interfaces\";\n// import { getPreGeneratedAttrViews } from \"../utils/converters/getPreGeneratedAttrViews\";\n// import { convertToStoryboard } from \"../utils/converters/raw-data-generate/convert\";\nimport type { JSONSchema, JSONSchemaObject } from \"../json-schema\";\nimport styles from \"./CmdbInstanceDetail.module.css\";\nimport { createPortal } from \"../utils/createPortal\";\nimport { WrappedIcon } from \"../../shared/bricks\";\nimport { ICON_LOADING } from \"../../shared/constants\";\n\n/**\n * 如果属性数量超过阈值,则使用两列布局\n */\nconst LIST_SPLIT_THRESHOLD = 6;\n\n/**\n * 如果条目数量超过阈值,则使用表格显示\n */\nconst SHOW_AS_TABLE_THRESHOLD = 2;\n\nconst BUILTIN_FN_STRINGIFY = \"__builtin_fn_stringify\";\n\nexport function CmdbInstanceDetail({\n objectId,\n detail,\n outputSchema,\n}: CmdbInstanceDetailData) {\n const rootId = useMemo(() => uniqueId(), []);\n const ref = useRef<HTMLDivElement>(null);\n const rootRef = useRef<Awaited<\n ReturnType<typeof unstable_createRoot>\n > | null>(null);\n\n useEffect(() => {\n const container = ref.current;\n if (!container) {\n return;\n }\n const portal = createPortal(rootId);\n const root = unstable_createRoot(container, {\n portal,\n supportsUseChildren: true,\n } as any);\n rootRef.current = root;\n\n return () => {\n root.unmount();\n portal.remove();\n rootRef.current = null;\n };\n }, [rootId]);\n\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n let ignore = false;\n (async () => {\n setLoading(true);\n try {\n const { bricks, context } = await convertCmdbInstanceDetail(\n detail,\n objectId,\n outputSchema,\n rootId\n );\n if (ignore) {\n return;\n }\n await rootRef.current?.render(bricks, { context });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to render view:\", error);\n }\n if (!ignore) {\n setLoading(false);\n }\n })();\n\n return () => {\n ignore = true;\n };\n }, [detail, objectId, outputSchema, rootId]);\n\n return (\n <div className={styles.container}>\n {loading && <WrappedIcon className={styles.loading} {...ICON_LOADING} />}\n <div data-root-id={rootId} ref={ref} />\n </div>\n );\n}\n\nfunction isComplexType(type: JSONSchema[\"type\"] | undefined): boolean {\n return !type || type === \"object\" || type === \"array\";\n}\n\nfunction isEmptyValue(detail: Record<string, any>, key: string) {\n return (\n !hasOwnProperty(detail, key) ||\n detail[key] == null ||\n detail[key] === \"\" ||\n (Array.isArray(detail[key]) && detail[key].length === 0)\n );\n}\n\nasync function convertCmdbInstanceDetail(\n detail: Record<string, any>,\n objectId: string,\n outputSchema: JSONSchema | string | undefined,\n rootId: string\n): Promise<{ bricks: BrickConf[]; context: ContextConf[] }> {\n // const attrViews = await getPreGeneratedAttrViews(objectId, 1);\n\n let schema: JSONSchema | undefined;\n if (typeof outputSchema === \"string\") {\n try {\n schema = JSON.parse(outputSchema) as JSONSchema;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to parse outputSchema as JSON\", e);\n }\n } else {\n schema = outputSchema;\n }\n\n let list: DescriptionItem[];\n const modals: BrickConf[] = [];\n const context: ContextConf[] = [\n {\n name: BUILTIN_FN_STRINGIFY,\n value: builtinFnStringify,\n },\n ];\n\n function convertArrayOfObjects(\n valueAccessor: string,\n schema: JSONSchemaObject,\n label: string,\n idPrefix: string,\n needContext?: boolean\n ): UseSingleBrickConf {\n const props = getOrderedProps(schema);\n const key = props.length > 0 ? props[0][0] : null;\n const modalId = normalizeIdentifier(`modal__${idPrefix}`);\n const contextId = normalizeIdentifier(`context__${idPrefix}`);\n if (needContext) {\n context.push({\n name: contextId,\n });\n }\n\n const modal: BrickConf = {\n brick: \"eo-modal\",\n portal: true,\n properties: {\n dataset: {\n modalId,\n },\n width: \"800px\",\n themeVariant: \"elevo\",\n modalTitle: label,\n hideCancelButton: true,\n maskClosable: true,\n keyboard: true,\n },\n };\n\n modals.push(modal);\n\n const columns: {\n key: string;\n dataIndex: string;\n title: string;\n useChildren?: string;\n }[] = [];\n const tableChildren: UseSingleBrickConf[] = [];\n\n for (const [k, v] of props) {\n let useChildren: string | undefined;\n if (v.type === \"array\" && v.items.type === \"object\") {\n useChildren = `[${k}]`;\n tableChildren.push({\n ...convertArrayOfObjects(\n \"DATA.cellData\",\n v.items,\n v.description || upperFirst(k),\n `${idPrefix}__${k}`,\n true\n ),\n slot: useChildren,\n });\n } else if (v.type === \"object\") {\n useChildren = `[${k}]`;\n tableChildren.push({\n ...convertObject(\n \"DATA.cellData\",\n v,\n v.description || upperFirst(k),\n `${idPrefix}__${k}`,\n true\n ),\n slot: useChildren,\n });\n }\n\n columns.push({\n key: k,\n dataIndex: k,\n title: v.description || upperFirst(k),\n useChildren,\n });\n }\n\n modal.children = [\n {\n brick: \"eo-next-table\",\n properties: {\n dataSource: needContext\n ? `<%= { list: CTX.${contextId} } %>`\n : `<% { list: (${valueAccessor}) } %>`,\n columns,\n themeVariant: \"elevo\",\n pagination: false,\n bordered: true,\n },\n children: tableChildren,\n },\n ];\n\n const clickHandler: BrickEventHandler[] = [\n ...((needContext\n ? [\n {\n action: \"context.replace\",\n args: [\n {\n name: contextId,\n value: `<% ${valueAccessor} %>`,\n },\n ],\n },\n ]\n : []) as BrickEventHandler[]),\n {\n target: `[data-root-id=\"${rootId}\"] [data-modal-id=\"${modalId}\"]`,\n method: \"open\",\n },\n ];\n\n return {\n brick: \"span\",\n if: `<% !!(${valueAccessor}) %>`,\n properties: {\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"0.5em\",\n },\n },\n children: [\n {\n brick: \":forEach\",\n dataSource: `<% (${valueAccessor}).slice(0, ${SHOW_AS_TABLE_THRESHOLD}) %>`,\n children: [\n {\n brick: \"eo-tag\",\n properties: {\n textContent: `<% CTX.${BUILTIN_FN_STRINGIFY}(ITEM, ${JSON.stringify(key)}, ${JSON.stringify(props[0]?.[1].type)}) %>`,\n outline: true,\n style: {\n cursor: \"pointer\",\n },\n },\n events: {\n click: clickHandler,\n },\n },\n ],\n },\n {\n brick: \"eo-link\",\n if: `<% (${valueAccessor}).length > ${SHOW_AS_TABLE_THRESHOLD} %>`,\n properties: {\n textContent: `<% \\`+\\${(${valueAccessor}).length - ${SHOW_AS_TABLE_THRESHOLD}}\\` %>`,\n },\n events: {\n click: clickHandler,\n },\n },\n ],\n };\n }\n\n function convertObject(\n valueAccessor: string,\n schema: JSONSchemaObject,\n label: string,\n idPrefix: string,\n needContext?: boolean\n ): UseSingleBrickConf {\n const props = getOrderedProps(schema);\n const key = props.length > 0 ? props[0][0] : null;\n const modalId = normalizeIdentifier(`modal__${idPrefix}`);\n const contextId = normalizeIdentifier(`context__${idPrefix}`);\n if (needContext) {\n context.push({\n name: contextId,\n });\n }\n\n modals.push({\n brick: \"eo-modal\",\n portal: true,\n properties: {\n dataset: {\n modalId,\n },\n themeVariant: \"elevo\",\n modalTitle: label,\n hideCancelButton: true,\n maskClosable: true,\n keyboard: true,\n },\n children: [\n {\n brick: \"eo-descriptions\",\n properties: {\n themeVariant: \"elevo\",\n column: 1,\n dataSource: needContext\n ? `<%= CTX.${contextId} %>`\n : `<% ${valueAccessor} %> `,\n list: props.map(([k, v]) => ({\n label: v.description || upperFirst(k),\n field: k,\n })),\n },\n },\n ],\n });\n\n return {\n brick: \"span\",\n if: `<% !!(${valueAccessor}) %>`,\n properties: {\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"0.5em\",\n },\n },\n children: [\n {\n brick: \"eo-tag\",\n properties: {\n textContent: `<% CTX.${BUILTIN_FN_STRINGIFY}(${valueAccessor}, ${JSON.stringify(key)}, ${JSON.stringify(props[0]?.[1].type)}) %>`,\n outline: true,\n style: {\n cursor: \"pointer\",\n },\n },\n events: {\n click: [\n ...((needContext\n ? [\n {\n action: \"context.replace\",\n args: [\n {\n name: contextId,\n value: `<% ${valueAccessor} %>`,\n },\n ],\n },\n ]\n : []) as BrickEventHandler[]),\n {\n target: `[data-root-id=\"${rootId}\"] [data-modal-id=\"${modalId}\"]`,\n method: \"open\",\n },\n ],\n },\n },\n ],\n };\n }\n\n if (schema?.type === \"object\") {\n const entries = Object.entries<JSONSchema>(schema.properties);\n list = entries.map<DescriptionItem>(([key, def]) => {\n const { description, type } = def;\n const label = description || upperFirst(key);\n\n if (isEmptyValue(detail, key)) {\n return {\n label,\n text: \"\",\n };\n }\n\n if (type === \"array\" && Array.isArray(detail[key])) {\n const { items } = def;\n if (items?.type === \"object\") {\n const contextName = normalizeIdentifier(`context__${key}`);\n context.push({\n name: contextName,\n value: detail[key],\n });\n\n return {\n label,\n useBrick: convertArrayOfObjects(\n `CTX.${contextName}`,\n items,\n label,\n key\n ),\n };\n }\n\n if (!isComplexType(items?.type)) {\n return {\n label,\n text: detail[key].join(\", \"),\n };\n }\n }\n\n if (type === \"object\" && isObject(detail[key])) {\n const contextName = normalizeIdentifier(`context__${key}`);\n context.push({\n name: contextName,\n value: detail[key],\n });\n\n return {\n label,\n useBrick: convertObject(`CTX.${contextName}`, def, label, key),\n };\n }\n\n if (isComplexType(type)) {\n return {\n label,\n text: JSON.stringify(detail[key], null, 2),\n };\n }\n\n // const candidate = attrViews?.get(key);\n // if (candidate) {\n // const brick = convertToStoryboard(candidate, key, {\n // ignoreStyle: true,\n // });\n // if (brick) {\n // return {\n // label,\n // useBrick: brick as UseBrickConf,\n // };\n // }\n // }\n\n return {\n label,\n field: key,\n };\n });\n } else {\n list = Object.keys(detail).map((key) => ({\n label: upperFirst(key),\n field: key,\n }));\n }\n\n return {\n bricks: [\n {\n brick: \"eo-descriptions\",\n properties: {\n themeVariant: \"elevo\",\n column: list.length > LIST_SPLIT_THRESHOLD ? 2 : 1,\n dataSource: detail,\n list,\n },\n },\n ...modals,\n ],\n context,\n };\n}\n\nfunction normalizeIdentifier(identifier: string): string {\n return identifier.replace(/[^a-zA-Z0-9_]+/g, \"_\");\n}\n\nfunction builtinFnStringify(\n value: Record<string, unknown>,\n key: string | null,\n type: JSONSchema[\"type\"] | undefined\n): string {\n if (key === null || isEmptyValue(value, key)) {\n return \"\";\n }\n const v = value[key];\n if (isComplexType(type) && isObject(v)) {\n return JSON.stringify(v, null, 2);\n }\n return String(v);\n}\n\nfunction getOrderedProps(schema: JSONSchemaObject) {\n const props = Object.entries(schema.properties);\n if (!schema.required?.length) {\n return props;\n }\n const propKeys = Object.keys(schema.properties);\n return orderBy(\n props,\n [\n ([k]) => {\n const requiredIndex = schema.required!.indexOf(k);\n if (requiredIndex === -1) {\n return schema.required!.length + propKeys.indexOf(k);\n }\n return requiredIndex;\n },\n ],\n [\"asc\"]\n );\n}\n","// 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","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./ExpandedView.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./ExpandedView.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { getBasePath, unstable_createRoot } from \"@next-core/runtime\";\nimport { uniqueId } from \"lodash\";\nimport { convertView } from \"@next-shared/tsx-converter\";\nimport type { GraphGeneratedView } from \"../../cruise-canvas/interfaces\";\nimport styles from \"./ExpandedView.module.css\";\nimport { WrappedIcon, WrappedIconButton } from \"../../shared/bricks\";\nimport { createPortal } from \"../../cruise-canvas/utils/createPortal\";\nimport { ICON_CLOSE, ICON_EXTERNAL_LINK, ICON_FEEDBACK } from \"../constants\";\nimport { TaskContext } from \"../TaskContext\";\nimport { useViewFeedbackDone } from \"../useViewFeedbackDone\";\nimport { parseTemplate } from \"../parseTemplate\";\nimport type { ParsedView } from \"../interfaces\";\nimport type { ModulePartOfComponent } from \"@next-shared/tsx-parser\";\n\nexport interface ExpandedViewProps {\n views: GraphGeneratedView[];\n}\n\nexport function ExpandedView({ views }: ExpandedViewProps) {\n const rootId = useMemo(() => uniqueId(), []);\n const {\n workspace,\n previewUrlTemplate,\n activeExpandedViewJobId,\n setActiveExpandedViewJobId,\n manuallyUpdatedViews,\n showFeedbackOnView,\n onFeedbackOnView,\n feedbackDoneViews,\n } = useContext(TaskContext);\n const viewportRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const rootRef = useRef<Awaited<\n ReturnType<typeof unstable_createRoot>\n > | null>(null);\n const generatedView = activeExpandedViewJobId\n ? (manuallyUpdatedViews?.get(activeExpandedViewJobId) ??\n views.find((v) => v.id === activeExpandedViewJobId)?.view)\n : null;\n const feedbackDone =\n useViewFeedbackDone(generatedView?.viewId, showFeedbackOnView) ||\n (generatedView && feedbackDoneViews?.has(generatedView.viewId));\n const [view, setView] = useState<ParsedView | null>(null);\n const canFeedback =\n !!view && !!generatedView?.viewId && generatedView.from !== \"config\";\n const [viewsWithTitle, setViewsWithTitle] = useState<\n Array<\n GraphGeneratedView & {\n title?: string;\n }\n >\n >(views);\n\n useEffect(() => {\n setView(null);\n let ignore = false;\n generatedView?.asyncConstructedView?.then((view) => {\n if (!ignore) {\n setView(view);\n }\n });\n return () => {\n ignore = true;\n };\n }, [generatedView]);\n\n useEffect(() => {\n Promise.all(\n views.map(async (v) => {\n const view = await v.view.asyncConstructedView;\n return {\n ...v,\n title: (view?.entry?.defaultExport as ModulePartOfComponent)?.title,\n };\n })\n ).then((result) => {\n setViewsWithTitle(result);\n });\n }, [views]);\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) {\n return;\n }\n const portal = createPortal(rootId);\n const root = unstable_createRoot(container, {\n portal,\n supportsUseChildren: true,\n } as any);\n rootRef.current = root;\n\n return () => {\n root.unmount();\n portal.remove();\n rootRef.current = null;\n };\n }, [rootId]);\n\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n setLoading(true);\n if (!view) {\n return;\n }\n let ignore = false;\n (async () => {\n try {\n const convertedView = await convertView(view, {\n rootId,\n workspace,\n expanded: true,\n withContexts: view.withContexts,\n });\n if (ignore) {\n return;\n }\n const { brick, context, functions, templates } = convertedView;\n await rootRef.current?.render(brick, { context, functions, templates });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to render view:\", error);\n }\n if (!ignore) {\n setLoading(false);\n }\n })();\n\n return () => {\n ignore = true;\n };\n }, [rootId, workspace, view]);\n\n const handleClose = useCallback(() => {\n setActiveExpandedViewJobId(null);\n }, [setActiveExpandedViewJobId]);\n\n useEffect(() => {\n setTimeout(() => {\n viewportRef.current?.focus();\n }, 0);\n }, []);\n\n const handleKeydown = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.stopPropagation();\n handleClose();\n }\n },\n [handleClose]\n );\n\n return (\n <div\n className={styles[\"expanded-view\"]}\n tabIndex={-1}\n ref={viewportRef}\n onKeyDown={handleKeydown}\n >\n {loading && (\n <div className={styles.loading}>\n <WrappedIcon lib=\"antd\" icon=\"loading-3-quarters\" spinning />\n </div>\n )}\n <div\n className={classNames(styles.body, {\n // [styles.small]: sizeSmall,\n })}\n ref={containerRef}\n data-root-id={rootId}\n />\n <ul className={styles.nav}>\n {viewsWithTitle.map((view) => (\n <li key={view.id}>\n <button\n className={classNames(styles[\"nav-button\"], {\n [styles.active]: activeExpandedViewJobId === view.id,\n })}\n onClick={() => setActiveExpandedViewJobId(view.id)}\n >\n {view.title ?? \"…\"}\n </button>\n </li>\n ))}\n </ul>\n <div className={styles.buttons}>\n {showFeedbackOnView && !feedbackDone && canFeedback && (\n <WrappedIconButton\n icon={ICON_FEEDBACK}\n onClick={() => onFeedbackOnView?.(generatedView.viewId)}\n />\n )}\n {!!(\n generatedView?.viewId &&\n !generatedView.withContexts &&\n previewUrlTemplate\n ) && (\n <WrappedIconButton\n icon={ICON_EXTERNAL_LINK}\n onClick={() => {\n window.open(\n `${getBasePath().slice(0, -1)}${parseTemplate(\n previewUrlTemplate,\n {\n viewId: generatedView.viewId,\n }\n )}`,\n \"_blank\"\n );\n }}\n />\n )}\n <WrappedIconButton icon={ICON_CLOSE} onClick={handleClose} />\n </div>\n </div>\n );\n}\n","export const NS_LIBS_DATETIME = \"libs-datetime\";\n\nexport enum K {\n TODAY = \"TODAY\",\n YESTERDAY = \"YESTERDAY\",\n FUTURE_AFTER = \"FUTURE_AFTER\",\n FORMAT_MEDIUM_DATETIME = \"FORMAT_MEDIUM_DATETIME\",\n FORMAT_MEDIUM_DATE = \"FORMAT_MEDIUM_DATE\",\n FORMAT_SHORT_DATETIME = \"FORMAT_SHORT_DATETIME\",\n FORMAT_SHORT_DATE = \"FORMAT_SHORT_DATE\",\n FORMAT_SHORT_DAY_DATETIME = \"FORMAT_SHORT_DAY_DATETIME\",\n FORMAT_SHORT_DAY_DATE = \"FORMAT_SHORT_DAY_DATE\",\n SECONDS = \"SECONDS\",\n MILL_SECONDS = \"MILL_SECONDS\",\n MINUTES = \"MINUTES\",\n HOURS = \"HOURS\",\n DAYS = \"DARS\",\n MONTHS = \"MONTHS\",\n}\n\nexport type Locale = { [key in K]: string };\n","import { Locale, K } from \"../constants.js\";\n\nconst locale: Locale = {\n [K.YESTERDAY]: \"Yesterday\",\n [K.TODAY]: \"Today\",\n [K.FUTURE_AFTER]: \"After {{time}}\",\n [K.FORMAT_MEDIUM_DATETIME]: \"LLL\",\n [K.FORMAT_MEDIUM_DATE]: \"LL\",\n [K.FORMAT_SHORT_DATETIME]: \"MMM D ah:mm\",\n [K.FORMAT_SHORT_DATE]: \"MMM D\",\n [K.FORMAT_SHORT_DAY_DATETIME]: \"MMM D HH:mm\",\n [K.FORMAT_SHORT_DAY_DATE]: \"MMM D\",\n [K.MONTHS]: \"months\",\n [K.HOURS]: \"hours\",\n [K.SECONDS]: \"seconds\",\n [K.MILL_SECONDS]: \"millseconds\",\n [K.DAYS]: \"days\",\n [K.MINUTES]: \"minutes\",\n};\n\nexport default locale;\n","import { Locale, K } from \"../constants.js\";\n\nconst locale: Locale = {\n [K.YESTERDAY]: \"昨天\",\n [K.TODAY]: \"今天\",\n [K.FUTURE_AFTER]: \"{{time}}后\",\n [K.FORMAT_MEDIUM_DATETIME]: \"LL ah:mm\",\n [K.FORMAT_MEDIUM_DATE]: \"LL\",\n [K.FORMAT_SHORT_DATETIME]: \"MMMD日 ah:mm\",\n [K.FORMAT_SHORT_DATE]: \"MMMD日\",\n [K.FORMAT_SHORT_DAY_DATETIME]: \"MMMD日 HH:mm\",\n [K.FORMAT_SHORT_DAY_DATE]: \"MMMD日\",\n [K.MONTHS]: \"个月\",\n [K.HOURS]: \"小时\",\n [K.SECONDS]: \"秒\",\n [K.MILL_SECONDS]: \"毫秒\",\n [K.DAYS]: \"天\",\n [K.MINUTES]: \"分钟\",\n};\n\nexport default locale;\n","import { initializeI18n } from \"@next-core/i18n\";\nimport { NS_LIBS_DATETIME } from \"./constants.js\";\nimport en from \"./locales/en.js\";\nimport zh from \"./locales/zh.js\";\n\nexport function addResourceBundle(): void {\n initializeI18n(NS_LIBS_DATETIME, { en, zh });\n}\n","import moment from \"moment\";\nimport { i18n } from \"@next-core/i18n\";\nimport { NS_LIBS_DATETIME, K } from \"./i18n/constants.js\";\nimport { addResourceBundle } from \"./i18n/index.js\";\n\naddResourceBundle();\n\nconst TIME_OFFSET = 0;\n\nexport enum HumanizeTimeFormat {\n full = \"full\",\n default = \"default\",\n relative = \"relative\",\n past = \"past\",\n future = \"future\",\n accurate = \"accurate\",\n auto = \"auto\",\n}\n\nexport const humanizeTime = (\n time: moment.MomentInput,\n format: HumanizeTimeFormat = HumanizeTimeFormat.auto,\n /** 默认为 \"datetime\" */\n type?: \"datetime\" | \"date\"\n): string | null => {\n if (\n time === undefined ||\n time === null ||\n time === -Infinity ||\n time === Infinity\n ) {\n return null;\n }\n const m = moment(time);\n const now = moment().add(TIME_OFFSET);\n const fFull = type === \"date\" ? \"LL\" : \"LL HH:mm\";\n const fMedium = i18n.t(\n `${NS_LIBS_DATETIME}:${type === \"date\" ? K.FORMAT_MEDIUM_DATE : K.FORMAT_MEDIUM_DATETIME}`\n );\n const fShort = i18n.t(\n `${NS_LIBS_DATETIME}:${type === \"date\" ? K.FORMAT_SHORT_DATE : K.FORMAT_SHORT_DATETIME}`\n );\n const fShort24 = i18n.t(\n `${NS_LIBS_DATETIME}:${type === \"date\" ? K.FORMAT_SHORT_DAY_DATE : K.FORMAT_SHORT_DAY_DATETIME}`\n );\n const fDefault = type === \"date\" ? \"LL\" : \"LL HH:mm:ss\";\n const fHourMinute = \"HH:mm\";\n let text;\n\n /* 用于精确显示时间的参数\n * 今天与昨天,显示:今天(昨天)x:x的格式,如:今天12:21、昨天16:33\n * 昨天以前的时间,显示:x月x日x时:x分,如:11月23日11:22\n * 今年以前的时间,显示:x年x月x日x时:x分,如:2016年11月11日11:11\n */\n const getAccurateTime = () => {\n const diff = +m.diff(now, \"days\", true).toFixed(1);\n let _text = \"\";\n const retVal =\n m.year() < now.year()\n ? \"lastYear\"\n : diff < -2 || m.isBefore(now.clone().add(-1, \"day\"), \"day\")\n ? \"twoDaysBefore\"\n : m.isSame(now.clone().add(-1, \"day\"), \"day\")\n ? \"yesterday\"\n : m.isSame(now, \"day\")\n ? \"sameDay\"\n : diff < 2 && m.isSame(now.clone().add(1, \"day\"), \"day\")\n ? \"nextDay\"\n : diff < 7\n ? \"nextWeek\"\n : \"default\";\n switch (retVal) {\n case \"sameDay\":\n case \"yesterday\":\n _text = `${i18n.t(`${NS_LIBS_DATETIME}:${retVal === \"yesterday\" ? K.YESTERDAY : K.TODAY}`)}${\n type === \"date\" ? \"\" : ` ${m.format(fHourMinute)}`\n }`;\n break;\n case \"lastYear\":\n _text = m.format(fFull);\n break;\n case \"twoDaysBefore\":\n _text = m.format(fShort24);\n break;\n default:\n _text = m.format(fFull);\n }\n\n return _text;\n };\n\n switch (format) {\n case HumanizeTimeFormat.full:\n text = m.format(fFull);\n break;\n case HumanizeTimeFormat.default:\n text = m.format(fDefault);\n break;\n case HumanizeTimeFormat.relative: {\n const diff = +m - +now;\n text =\n diff <= 0\n ? moment.duration(diff).humanize(true)\n : i18n.t(`${NS_LIBS_DATETIME}:${K.FUTURE_AFTER}`, {\n time: moment.duration(diff).humanize(),\n });\n break;\n }\n case HumanizeTimeFormat.past:\n text = moment.duration(Math.min(+m - +now, 0)).humanize(true);\n break;\n case HumanizeTimeFormat.future:\n text = i18n.t(`${NS_LIBS_DATETIME}:${K.FUTURE_AFTER}`, {\n time: moment.duration(Math.max(+m - +now, 0)).humanize(),\n });\n break;\n case HumanizeTimeFormat.accurate:\n text = getAccurateTime();\n break;\n default:\n text = m.format(m.year() === now.year() ? fShort : fMedium);\n }\n return text;\n};\n","import { get } from \"lodash\";\n\nexport function parseTemplate(\n template: string | undefined,\n context: Record<string, any>\n) {\n return template?.replace(/{{(.*?)}}/g, (_match: string, key: string) => {\n const value = get(context, key.trim());\n return value;\n });\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.progress-line--CX_xuAHC{--breathing-color:rgba(205,205,217,0.7);--breathing-color-2:rgba(205,205,217,0);display:flex;flex-direction:column}.progress-line--CX_xuAHC .step--YXd66tSR{position:relative;display:flex;align-items:center;padding:10px 4px 10px 16px;color:rgba(0,0,0,0.5)}.progress-line--CX_xuAHC .step--YXd66tSR .axis--T4nVxQt5{position:absolute;top:0;bottom:0;left:14px;width:1px}.progress-line--CX_xuAHC .step--YXd66tSR .axis--T4nVxQt5 .line--BUSBjzxD{width:1px;height:100%;background:linear-gradient(172deg,rgba(205,205,217,0) 0%,#cdcdd9 46%,rgba(205,205,217,0) 100%)}.progress-line--CX_xuAHC .step--YXd66tSR .axis--T4nVxQt5 .dot--TPMEta87{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:5px;height:5px;background:rgba(205,205,217,1);border-radius:50%}.progress-line--CX_xuAHC .step--YXd66tSR .progress--alc7SspF{padding:3px;margin:0 8px 0 12px;border-radius:10px;line-height:1;background:#ffffff}.progress-line--CX_xuAHC .step--YXd66tSR .progress--alc7SspF .count--RdZcMYhZ{font-weight:400}.progress-line--CX_xuAHC .step--YXd66tSR .progress--alc7SspF .total--BKoLTm8c{opacity:0.6}.progress-line--CX_xuAHC .step--YXd66tSR .description--AyfMh1_M{flex:1;color:#999}.progress-line--CX_xuAHC .step--YXd66tSR:last-child .progress--alc7SspF .count--RdZcMYhZ{font-weight:600}.failed--Q9TADo_k .step--YXd66tSR:last-child .axis--T4nVxQt5 .line--BUSBjzxD{background:linear-gradient(172deg,rgba(242,76,37,0) 0%,rgba(242,76,37,0.3) 47%,rgba(242,76,37,0) 100%)}.failed--Q9TADo_k .step--YXd66tSR:last-child .axis--T4nVxQt5 .dot--TPMEta87{background:rgba(255,154,120,1)}.failed--Q9TADo_k .step--YXd66tSR:last-child .progress--alc7SspF{background:#ffd6d6}.failed--Q9TADo_k .step--YXd66tSR:last-child .progress--alc7SspF .count--RdZcMYhZ{color:#f44336}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"progress-line\": `progress-line--CX_xuAHC`,\n\t\"step\": `step--YXd66tSR`,\n\t\"axis\": `axis--T4nVxQt5`,\n\t\"line\": `line--BUSBjzxD`,\n\t\"dot\": `dot--TPMEta87`,\n\t\"progress\": `progress--alc7SspF`,\n\t\"count\": `count--RdZcMYhZ`,\n\t\"total\": `total--BKoLTm8c`,\n\t\"description\": `description--AyfMh1_M`,\n\t\"failed\": `failed--Q9TADo_k`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// istanbul ignore file\n\n/*\nnpx shiki-codegen \\\n --langs json,javascript,typescript,html,html-derivative,xml,css,markdown,mermaid,jsx,tsx,shellscript,python,go,sql \\\n --themes light-plus,dark-plus \\\n --engine oniguruma \\\n ./shared/shiki/src/bundle.ts\n*/\n\nimport lightPlus from \"@shikijs/themes/light-plus\";\nimport darkPlus from \"@shikijs/themes/dark-plus\";\n\n/* Generate by @shikijs/codegen */\nimport type {\n DynamicImportLanguageRegistration,\n HighlighterGeneric,\n ThemeInput,\n} from \"@shikijs/types\";\nimport {\n createSingletonShorthands,\n createdBundledHighlighter,\n} from \"@shikijs/core\";\nimport { createOnigurumaEngine } from \"@shikijs/engine-oniguruma\";\n\ntype BundledLanguage =\n | \"json\"\n | \"javascript\"\n | \"js\"\n | \"typescript\"\n | \"ts\"\n | \"html\"\n | \"html-derivative\"\n | \"xml\"\n | \"css\"\n | \"markdown\"\n | \"md\"\n | \"mermaid\"\n | \"mmd\"\n | \"jsx\"\n | \"tsx\"\n | \"shellscript\"\n | \"bash\"\n | \"sh\"\n | \"shell\"\n | \"zsh\"\n | \"python\"\n | \"py\"\n | \"go\"\n | \"sql\";\ntype BundledTheme = \"light-plus\" | \"dark-plus\";\ntype Highlighter = HighlighterGeneric<BundledLanguage, BundledTheme>;\n\nconst bundledLanguages = {\n json: () => import(\"@shikijs/langs/json\"),\n javascript: () => import(\"@shikijs/langs/javascript\"),\n js: () => import(\"@shikijs/langs/javascript\"),\n typescript: () => import(\"@shikijs/langs/typescript\"),\n ts: () => import(\"@shikijs/langs/typescript\"),\n html: () => import(\"@shikijs/langs/html\"),\n \"html-derivative\": () => import(\"@shikijs/langs/html-derivative\"),\n xml: () => import(\"@shikijs/langs/xml\"),\n css: () => import(\"@shikijs/langs/css\"),\n markdown: () => import(\"@shikijs/langs/markdown\"),\n md: () => import(\"@shikijs/langs/markdown\"),\n mermaid: () => import(\"@shikijs/langs/mermaid\"),\n mmd: () => import(\"@shikijs/langs/mermaid\"),\n jsx: () => import(\"@shikijs/langs/jsx\"),\n tsx: () => import(\"@shikijs/langs/tsx\"),\n shellscript: () => import(\"@shikijs/langs/shellscript\"),\n bash: () => import(\"@shikijs/langs/shellscript\"),\n sh: () => import(\"@shikijs/langs/shellscript\"),\n shell: () => import(\"@shikijs/langs/shellscript\"),\n zsh: () => import(\"@shikijs/langs/shellscript\"),\n python: () => import(\"@shikijs/langs/python\"),\n py: () => import(\"@shikijs/langs/python\"),\n go: () => import(\"@shikijs/langs/go\"),\n sql: () => import(\"@shikijs/langs/sql\"),\n} as Record<BundledLanguage, DynamicImportLanguageRegistration>;\n\nconst bundledThemes = {\n \"light-plus\": lightPlus,\n \"dark-plus\": darkPlus,\n} as Record<BundledTheme, ThemeInput>;\n\nconst createHighlighter = /* @__PURE__ */ createdBundledHighlighter<\n BundledLanguage,\n BundledTheme\n>({\n langs: bundledLanguages,\n themes: bundledThemes,\n engine: () => createOnigurumaEngine(import(\"shiki/wasm\")),\n});\n\nconst {\n codeToHtml,\n codeToHast,\n codeToTokensBase,\n codeToTokens,\n codeToTokensWithThemes,\n getSingletonHighlighter,\n getLastGrammarState,\n} = /* @__PURE__ */ createSingletonShorthands<BundledLanguage, BundledTheme>(\n createHighlighter,\n {\n guessEmbeddedLanguages(code, lang) {\n if (lang === \"markdown\" || lang === \"md\") {\n return [\"mermaid\"];\n }\n },\n }\n);\n\nexport {\n bundledLanguages,\n bundledThemes,\n codeToHast,\n codeToHtml,\n codeToTokens,\n codeToTokensBase,\n codeToTokensWithThemes,\n getLastGrammarState,\n getSingletonHighlighter,\n};\nexport type { BundledLanguage, BundledTheme, Highlighter };\n","import { visit } from \"unist-util-visit\";\nimport { toString } from \"hast-util-to-string\";\nimport type { Element } from \"hast\";\nimport type Mermaid from \"mermaid\";\nimport { fromHtmlIsomorphic } from \"hast-util-from-html-isomorphic\";\nimport { getCodeLanguage } from \"./utils.js\";\n\nlet mermaidPromise: Promise<typeof Mermaid> | undefined;\n\nfunction loadMermaid() {\n if (mermaidPromise) {\n return mermaidPromise;\n }\n mermaidPromise = doLoadMermaid();\n return mermaidPromise;\n}\n\nasync function doLoadMermaid() {\n const mermaid = (await import(\"mermaid\")).default;\n mermaid.initialize({\n startOnLoad: false,\n theme: \"base\",\n themeVariables: {\n fontSize: \"14px\",\n lineColor: \"#979797\",\n primaryColor: \"#DCD2F3\",\n primaryBorderColor: \"#0000001A\",\n },\n });\n return mermaid;\n}\n\nlet count = 0;\n\nconst parser = new DOMParser();\nconst serializer = new XMLSerializer();\n\n// Reference https://github.com/remcohaszing/rehype-mermaid\nexport function rehypeMermaid() {\n return async (tree: Element) => {\n const promises: Promise<void>[] = [];\n\n visit(tree, \"element\", (node, index, parent) => {\n if (\n !parent ||\n parent.type !== \"element\" ||\n parent.tagName !== \"pre\" ||\n node.tagName !== \"code\"\n ) {\n return;\n }\n\n const lang = getCodeLanguage(node);\n\n if (lang !== \"mermaid\") {\n return;\n }\n\n promises.push(\n (async () => {\n const id = `mermaid-${count++}`;\n let svg: string;\n try {\n const mermaid = await loadMermaid();\n const result = await mermaid.render(id, toString(node));\n svg = result.svg;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Error rendering mermaid diagram:\", error);\n document.getElementById(id)?.remove();\n return;\n }\n const root = parser.parseFromString(svg, \"text/html\");\n const svgElement = root.querySelector(\"svg\") as SVGSVGElement;\n\n const defs = root.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"defs\"\n );\n defs.innerHTML = `<linearGradient id=\"linear-gradient-${id}\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">\n <stop offset=\"0%\" stop-color=\"#F0EBFA\" />\n <stop offset=\"75%\" stop-color=\"#DED4F4\" />\n <stop offset=\"100%\" stop-color=\"#C5C7FA\" />\n</linearGradient>`;\n svgElement.prepend(defs);\n\n const style = root.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"style\"\n );\n style.textContent = `\n#${id} .node rect,\n#${id} .node circle,\n#${id} .node ellipse,\n#${id} .node polygon,\n#${id} .node path {\n fill: url(#linear-gradient-${id});\n}\n#${id} .node rect {\n rx: 4;\n ry: 4;\n}\n#${id} .labelBkg {\n background-color: #f5f8ff;\n}\n#${id} .edgeLabel,\n#${id} .edgeLabel p {\n background-color: transparent;\n}\n#${id} .edgeLabel {\n color: #8c8c8c;\n font-size: 12px;\n}\n`;\n svgElement.appendChild(style);\n\n const modifiedSvg = serializer.serializeToString(svgElement);\n\n const replacements = fromHtmlIsomorphic(modifiedSvg, {\n fragment: true,\n }).children as Element[];\n parent.children.splice(index!, 1, ...replacements);\n parent.properties.className = (\n (parent.properties.className as string[]) || []\n ).concat(\"mermaid\");\n })()\n );\n });\n\n await Promise.all(promises);\n };\n}\n","import type { Element } from \"hast\";\n\nexport function getCodeLanguage(node: Element) {\n const className = (node.properties.className as string[]) || [];\n\n for (const classListItem of className) {\n if (classListItem.slice(0, 9) === \"language-\") {\n return classListItem.slice(9).toLowerCase();\n }\n }\n\n return null;\n}\n","import { useEffect, useState } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nimport { unified } from \"unified\";\nimport remarkParse from \"remark-parse\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkToRehype from \"remark-rehype\";\nimport rehypeReact, { Options as RehypeReactOptions } from \"rehype-react\";\nimport type { Components } from \"hast-util-to-jsx-runtime\";\nimport rehypeShikiFromHighlighter from \"@shikijs/rehype/core\";\nimport { getSingletonHighlighter } from \"@next-shared/shiki\";\nimport { rehypeMermaid } from \"./rehypeMermaid.js\";\n\nconst production = { Fragment, jsx, jsxs };\n\nexport interface MarkdownComponentProps {\n content?: string;\n components?: Partial<Components>;\n shiki?: {\n /** @default \"dark-plus\" */\n theme?: \"light-plus\" | \"dark-plus\";\n };\n}\n\n// Reference https://github.com/remarkjs/react-remark/blob/39553e5f5c9e9b903bebf261788ff45130668de0/src/index.ts\nexport function MarkdownComponent({\n content,\n components,\n shiki,\n}: MarkdownComponentProps): JSX.Element | null {\n const [reactContent, setReactContent] = useState<JSX.Element | null>(null);\n const theme = shiki?.theme ?? \"dark-plus\";\n\n useEffect(() => {\n let ignore = false;\n (async () => {\n try {\n const highlighter = await getSingletonHighlighter({\n themes: [theme],\n });\n if (ignore) {\n return;\n }\n const vFile = await unified()\n .use(remarkParse)\n .use(remarkGfm)\n .use(remarkToRehype)\n .use(rehypeMermaid)\n .use(rehypeShikiFromHighlighter, highlighter as any, {\n theme,\n lazy: true,\n defaultLanguage: \"text\",\n })\n .use(rehypeReact, {\n ...production,\n passNode: true,\n components,\n } as RehypeReactOptions)\n .process(content);\n if (!ignore) {\n setReactContent(vFile.result);\n }\n } catch (error) {\n if (!ignore) {\n // eslint-disable-next-line no-console\n console.error(\"Convert markdown failed:\", error);\n setReactContent(null);\n }\n }\n })();\n return () => {\n ignore = true;\n };\n }, [components, content, theme]);\n\n return reactContent;\n}\n","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 { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n SEND_MESSAGE = \"SEND_MESSAGE\",\n CONFIRM_TO_TERMINATE_THE_TASK_TITLE = \"CONFIRM_TO_TERMINATE_THE_TASK_TITLE\",\n}\n\nconst en: Locale = {\n SEND_MESSAGE: \"Send message\",\n CONFIRM_TO_TERMINATE_THE_TASK_TITLE: \"Are you sure to terminate the task?\",\n};\n\nconst zh: Locale = {\n SEND_MESSAGE: \"发送消息\",\n CONFIRM_TO_TERMINATE_THE_TASK_TITLE: \"确定终止任务吗?\",\n};\n\nexport const NS = \"bricks/ai-portal/ChatBox\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, { useCallback, useContext, useEffect, useState } from \"react\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { showDialog, WrappedChatInput } from \"../bricks\";\nimport { K, locales, NS, t } from \"./i18n\";\nimport { TaskContext } from \"../TaskContext\";\nimport type { ConversationState } from \"../interfaces\";\n\ninitializeI18n(NS, locales);\n\nexport interface ChatBoxProps {\n state: ConversationState | undefined;\n canChat: boolean;\n}\n\nexport function ChatBox({ state, canChat }: ChatBoxProps): JSX.Element {\n const { humanInput, onTerminate, supports } = useContext(TaskContext);\n\n const [terminating, setTerminating] = useState(false);\n\n useEffect(() => {\n setTerminating(false);\n }, [state]);\n\n const handleTerminate = useCallback(async () => {\n try {\n await showDialog({\n type: \"confirm\",\n title: t(K.CONFIRM_TO_TERMINATE_THE_TASK_TITLE),\n content: \"\",\n });\n } catch {\n return;\n }\n onTerminate();\n setTerminating(true);\n }, [onTerminate]);\n\n return (\n <WrappedChatInput\n placeholder={t(K.SEND_MESSAGE)}\n autoFocus\n submitDisabled={!canChat}\n supportsTerminate={supports?.intercept}\n terminating={terminating}\n onMessageSubmit={(e) => {\n humanInput(\"\", e.detail);\n }}\n onTerminate={handleTerminate}\n />\n );\n}\n","import { getRemoteTsxParserWorker } from \"./workers/tsxParser.js\";\nimport type { GeneratedView, ParsedView } from \"./interfaces.js\";\n\nexport async function getAsyncConstructedView(\n generatedView: GeneratedView,\n workspace: string | undefined\n): Promise<ParsedView | null> {\n try {\n const worker = await getRemoteTsxParserWorker();\n const result = await worker.parseView(generatedView.code, {\n workspace,\n withContexts: generatedView.withContexts\n ? Object.keys(generatedView.withContexts)\n : undefined,\n });\n return {\n ...result,\n viewId: generatedView.viewId,\n withContexts: generatedView.withContexts,\n };\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to parse generated view:\", error);\n return null;\n }\n}\n","import { createContext, type Dispatch } from \"react\";\nimport type { FeedbackDetail } from \"../cruise-canvas/interfaces\";\nimport type {\n ExampleProject,\n GeneratedView,\n Job,\n ShowCaseType,\n} from \"./interfaces\";\n\nexport interface TaskContextValue {\n conversationId?: string;\n workspace?: string;\n previewUrlTemplate?: string;\n replay?: boolean;\n showCases?: ShowCaseType[];\n exampleProjects?: ExampleProject[];\n\n humanInput: (jobId: string, input: string | null, action?: string) => 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 activeToolCallJobId: string | null;\n setActiveToolCallJobId: Dispatch<React.SetStateAction<string | 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}\n\nexport const TaskContext = createContext<TaskContextValue>({\n humanInput: () => {},\n onShare: () => {},\n onTerminate: () => {},\n activeExpandedViewJobId: null,\n setActiveExpandedViewJobId: () => {},\n activeToolCallJobId: null,\n setActiveToolCallJobId: () => {},\n submittingFeedback: false,\n submittedFeedback: false,\n onSubmitFeedback: () => {},\n setShowFeedback: () => {},\n});\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.node-replay--RJPyOwC6{width:var(--cruise-canvas-node-width-large);max-width:100%;background:rgba(255,255,255,0.5);border-radius:12px;border:1px solid rgba(255,255,255,0.4);padding:4px}.finished--DCI6ewIN:not(.chat--YJT4RmwA){max-width:90vw}.node-replay--RJPyOwC6.chat--YJT4RmwA{margin-top:14px}.bar--Pae7qP58{background:rgba(184,187,205,0.3);border-radius:8px;border:1px solid rgba(255,255,255,0.4);-webkit-backdrop-filter:blur(100px);backdrop-filter:blur(100px);height:54px;display:flex;align-items:center;justify-content:space-between;padding:0 16px}.buttons--m0009sdd{display:flex;align-items:center;gap:8px}.label--VlLhkZeC{font-weight:500}.cases--czpvOoLX,\n.projects--W1KI5fUu{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.content--rFWHJyEy{padding:0 16px 16px}.heading--jlFUCX5n{margin:26px 0 10px;color:rgba(0,0,0,0.6);line-height:20px}.tips--FzM5aSiq{font-size:12px;line-height:20px;color:rgba(0,0,0,0.35);margin:-3px 0 10px}.project--BSu5VIGZ{width:100%}.project--BSu5VIGZ::part(link){height:48px;background:rgba(255,255,255,0.5);border-radius:12px;border:1px solid rgba(255,255,255,0.4);display:flex;align-items:center;padding:0 16px;gap:6px;font-weight:500;color:#262626}.project--BSu5VIGZ::part(link):hover{color:var(--elevo-color-brand)}.tag--Hp8eFjie{display:inline-block;padding:0 4px;background:rgba(37,64,255,0.1);border-radius:4px;color:var(--elevo-color-brand)}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"node-replay\": `node-replay--RJPyOwC6`,\n\t\"finished\": `finished--DCI6ewIN`,\n\t\"chat\": `chat--YJT4RmwA`,\n\t\"bar\": `bar--Pae7qP58`,\n\t\"buttons\": `buttons--m0009sdd`,\n\t\"label\": `label--VlLhkZeC`,\n\t\"cases\": `cases--czpvOoLX`,\n\t\"projects\": `projects--W1KI5fUu`,\n\t\"content\": `content--rFWHJyEy`,\n\t\"heading\": `heading--jlFUCX5n`,\n\t\"tips\": `tips--FzM5aSiq`,\n\t\"project\": `project--BSu5VIGZ`,\n\t\"tag\": `tag--Hp8eFjie`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.toolbar--ELlNUAti{position:absolute;display:flex;align-items:center;padding:3px 5px;-webkit-user-select:none;user-select:none;background:rgba(255,255,255,0.7);box-shadow:0px 3px 14px 0px rgba(0,0,0,0.1),0px 1px 4px 0px rgba(0,0,0,0.06);border-radius:8px;border:1px solid rgba(255,255,255,0.3)}.divider--JeH8feaX{background:rgba(0,0,0,0.15);width:1px;height:16px}.toolbar--ELlNUAti > :not(:last-child){margin-right:6px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"toolbar\": `toolbar--ELlNUAti`,\n\t\"divider\": `divider--JeH8feaX`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.expanded-view--Pl3PL2nR{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2;background:rgba(247,248,250,0.5);-webkit-backdrop-filter:blur(74px);backdrop-filter:blur(74px);padding:106px var(--page-padding-right) 40px var(--page-padding-left);overflow-y:auto;display:flex;flex-direction:column;align-items:center}.nav--dLWwzH3E{position:absolute;top:39px;left:50%;transform:translate(-50%,0);list-style:none;margin:0 0 25px;padding:4px;display:flex;justify-content:start;align-items:center;background:rgba(2,0,102,0.05);box-shadow:inset 0px 1px 2px 0px #cdd1d7;border-radius:21px;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px)}.nav-button--zv2Yj10m{display:flex;align-items:center;height:34px;padding:0 26px;background:none;border:none;color:#595959;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.nav-button--zv2Yj10m:not(:last-child){margin-right:12px}.nav-button--zv2Yj10m.active--MHyqtaKu{background:rgba(255,255,255,0.6);border-radius:20px;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);color:var(--elevo-color-brand);text-shadow:-0.02ex 0 0 currentColor,0.02ex 0 0 currentColor}.nav-button--zv2Yj10m:hover{color:var(--elevo-color-brand)}.body--edodw95r{width:100%;max-width:1556px}.body--edodw95r.small--Y90AL_bt{max-width:804px}.loading--UxfFogUY{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:48px;color:#fff}.buttons--ZZYyY2LU{position:absolute;top:24px;right:24px;display:flex;gap:12px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"expanded-view\": `expanded-view--Pl3PL2nR`,\n\t\"nav\": `nav--dLWwzH3E`,\n\t\"nav-button\": `nav-button--zv2Yj10m`,\n\t\"active\": `active--MHyqtaKu`,\n\t\"body\": `body--edodw95r`,\n\t\"small\": `small--Y90AL_bt`,\n\t\"loading\": `loading--UxfFogUY`,\n\t\"buttons\": `buttons--ZZYyY2LU`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.view-toolbar--kVhd3X5H{display:flex;align-items:center;gap:8px}.button--f3fGXpYl{display:flex;background:none;border:none;padding:3px;cursor:pointer;color:#595959}.button-lucide--J7U9FEo_{font-size:16px;padding:2px}.button--f3fGXpYl:hover{color:var(--elevo-color-brand)}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"view-toolbar\": `view-toolbar--kVhd3X5H`,\n\t\"button\": `button--f3fGXpYl`,\n\t\"button-lucide\": `button-lucide--J7U9FEo_`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./toolbar.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./toolbar.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./CreatedView.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./CreatedView.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React, { useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { unstable_createRoot } from \"@next-core/runtime\";\nimport classNames from \"classnames\";\nimport { uniqueId } from \"lodash\";\nimport { convertView } from \"@next-shared/tsx-converter\";\nimport type { ModulePartOfComponent } from \"@next-shared/tsx-parser\";\nimport styles from \"./CreatedView.module.css\";\nimport sharedStyles from \"../../cruise-canvas/shared.module.css\";\nimport type { Job, ParsedView } from \"../../shared/interfaces\";\nimport { WrappedIcon } from \"../../shared/bricks\";\nimport { createPortal } from \"../../cruise-canvas/utils/createPortal\";\nimport { TaskContext } from \"../TaskContext\";\nimport { ICON_LOADING } from \"../constants\";\nimport { ViewToolbar } from \"./ViewToolbar\";\nimport type { BrickConf } from \"@next-core/types\";\n\nexport interface CreatedViewProps {\n job: Job;\n noHeading?: boolean;\n onSizeChange?: (size: \"medium\" | \"large\") => void;\n}\n\nexport function CreatedView({\n job,\n noHeading,\n onSizeChange,\n}: CreatedViewProps): JSX.Element {\n const rootId = useMemo(() => uniqueId(), []);\n const { workspace, manuallyUpdatedViews } = useContext(TaskContext);\n const ref = useRef<HTMLDivElement>(null);\n const rootRef = useRef<Awaited<\n ReturnType<typeof unstable_createRoot>\n > | null>(null);\n const generatedView = manuallyUpdatedViews?.get(job.id) ?? job.generatedView!;\n const [view, setView] = useState<ParsedView | null>(null);\n const canFeedback =\n !!view && !!generatedView.viewId && generatedView.from !== \"config\";\n\n useEffect(() => {\n setView(null);\n let ignore = false;\n generatedView.asyncConstructedView?.then((view) => {\n if (!ignore) {\n setView(view);\n }\n });\n return () => {\n ignore = true;\n };\n }, [generatedView]);\n\n useEffect(() => {\n const container = ref.current;\n if (!container) {\n return;\n }\n const portal = createPortal(rootId);\n const root = unstable_createRoot(container, {\n portal,\n supportsUseChildren: true,\n } as any);\n rootRef.current = root;\n\n return () => {\n root.unmount();\n portal.remove();\n rootRef.current = null;\n };\n }, [rootId]);\n\n const [loading, setLoading] = useState(true);\n const [sizeLarge, setSizeLarge] = useState(false);\n\n useEffect(() => {\n setLoading(true);\n if (!view) {\n return;\n }\n let ignore = false;\n (async () => {\n try {\n const convertedView = await convertView(view, {\n rootId,\n workspace,\n withContexts: view.withContexts,\n });\n if (ignore) {\n return;\n }\n const { brick, context, functions, templates } = convertedView;\n\n setSizeLarge(preferSizeLarge(brick));\n\n await rootRef.current?.render(brick, { context, functions, templates });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to render view:\", error);\n }\n if (!ignore) {\n setLoading(false);\n }\n })();\n\n return () => {\n ignore = true;\n };\n }, [rootId, workspace, view]);\n\n useEffect(() => {\n onSizeChange?.(sizeLarge ? \"large\" : \"medium\");\n }, [onSizeChange, sizeLarge]);\n\n const viewTitle = useMemo(\n () => (view?.entry?.defaultExport as ModulePartOfComponent)?.title,\n [view]\n );\n\n return (\n <>\n {noHeading ? null : (\n <div className={styles.heading}>\n <div\n className={classNames(styles.title, {\n [sharedStyles[\"shine-text\"]]: view && loading,\n })}\n >\n {view ? viewTitle : <WrappedIcon {...ICON_LOADING} />}\n </div>\n <ViewToolbar job={job} canFeedback={canFeedback} />\n </div>\n )}\n <div data-root-id={rootId} ref={ref} />\n </>\n );\n}\n\nfunction traverseBricks(\n bricks: BrickConf[],\n callback: (bricks: BrickConf) => boolean\n) {\n for (const brick of bricks) {\n if (callback(brick)) {\n break;\n }\n if (Array.isArray(brick.children)) {\n traverseBricks(brick.children, callback);\n }\n }\n}\n\nfunction preferSizeLarge(brick: BrickConf): boolean {\n let large = false;\n traverseBricks([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, `.shine-text--t2t9tIJp{color:transparent;background:linear-gradient(to right,var(--shine-text-color) 0%,var(--shine-text-color) 40%,var(--shine-text-highlight-color) 50%,var(--shine-text-color) 60%,var(--shine-text-color) 100%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;animation:shineText--ycIJ4nxc 2s infinite linear}@keyframes shineText--ycIJ4nxc{0%{background-position:-50% 50%}100%{background-position:-250% 50%}}.markdown--t5EHw6k4 a{color:var(--elevo-color-brand)}.markdown--t5EHw6k4 a:hover{color:var(--elevo-color-brand-hover)}.markdown--t5EHw6k4 a:active{color:var(--elevo-color-brand-active)}.markdown--t5EHw6k4 .shiki{font-family:\"Fira Code\",\"Fira Mono\",Menlo,Consolas,\"DejaVu Sans Mono\",monospace;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none;font-size:13px;padding:1em;margin:0.5em 0;overflow-x:auto;border-radius:9px}.markdown--t5EHw6k4 .shiki.light-plus{background:hsl(230,1%,98%)!important}.markdown--t5EHw6k4 table{width:100%;overflow-x:auto;border-collapse:collapse}.markdown--t5EHw6k4 tr{border-top:1px solid #ccd1de}.markdown--t5EHw6k4 td,.markdown--t5EHw6k4 th{border:1px solid #ccd1de;padding:6px 13px}.markdown--t5EHw6k4{overflow-wrap:break-word}.markdown--t5EHw6k4:not(:first-child){margin-top:6px}.markdown--t5EHw6k4 p{margin:1em 0}.markdown--t5EHw6k4 > :first-child,\n.markdown-wrapper--TGg3xHyX > :first-child{margin-top:0}.markdown--t5EHw6k4 > :last-child,\n.markdown-wrapper--TGg3xHyX > :last-child{margin-bottom:0}.table-container--hekbaxrD{padding:8px 8px 10px;border-radius:12px;border:1px solid #e2e2ec;background:#ffffff}.table-container--hekbaxrD:not(:first-child){margin-top:6px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"shine-text\": `shine-text--t2t9tIJp`,\n\t\"shineText\": `shineText--ycIJ4nxc`,\n\t\"markdown\": `markdown--t5EHw6k4`,\n\t\"markdown-wrapper\": `markdown-wrapper--TGg3xHyX`,\n\t\"table-container\": `table-container--hekbaxrD`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { InstanceApi_getDetail } from \"@next-api-sdk/cmdb-sdk\";\nimport { useEffect, useState } from \"react\";\n\nconst cache = new Map<string, Promise<boolean>>();\n\nexport function useViewFeedbackDone(\n viewId: string | undefined,\n showFeedbackOnView?: boolean\n) {\n const [done, setDone] = useState(true);\n\n useEffect(() => {\n if (!viewId || !showFeedbackOnView) {\n setDone(true);\n return;\n }\n let promise = cache.get(viewId);\n if (promise === undefined) {\n promise = fetchViewFeedbackDone(viewId);\n cache.set(viewId, promise);\n }\n let ignore = false;\n promise.then((value) => {\n if (!ignore) {\n setDone(value);\n }\n });\n return () => {\n ignore = true;\n };\n }, [viewId, showFeedbackOnView]);\n\n return done;\n}\n\nasync function fetchViewFeedbackDone(viewId: string): Promise<boolean> {\n const response = await InstanceApi_getDetail(\n \"LLM_WEB_VIEW_INFO@EASYOPS\",\n viewId,\n {\n fields: \"feedback.instanceId\",\n },\n {\n priority: \"low\",\n }\n );\n return !!response?.feedback?.length;\n}\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./NodeFeedback.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./NodeFeedback.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n YES = \"YES\",\n NO = \"NO\",\n SUBMIT = \"SUBMIT\",\n RESET = \"RESET\",\n FEEDBACK_NODE_TITLE = \"FEEDBACK_NODE_TITLE\",\n PROBLEM_FEEDBACK = \"PROBLEM_FEEDBACK\",\n PROBLEM_FEEDBACK_PLACEHOLDER = \"PROBLEM_FEEDBACK_PLACEHOLDER\",\n IS_THE_TASK_PLAN_COMPLETE = \"IS_THE_TASK_PLAN_COMPLETE\",\n IS_THE_TASK_PLAN_LOGICALLY_CORRECT = \"IS_THE_TASK_PLAN_LOGICALLY_CORRECT\",\n ARE_THE_TASK_PLAN_STEPS_CONCISE = \"ARE_THE_TASK_PLAN_STEPS_CONCISE\",\n ARE_THE_ANALYTICAL_CONCLUSIONS_ACCURATE = \"ARE_THE_ANALYTICAL_CONCLUSIONS_ACCURATE\",\n IS_THE_EVIDENCE_SUPPORTING_THE_CONCLUSIONS_SUFFICIENT = \"IS_THE_EVIDENCE_SUPPORTING_THE_CONCLUSIONS_SUFFICIENT\",\n THANKS_FOR_YOUR_FEEDBACK = \"THANKS_FOR_YOUR_FEEDBACK\",\n}\n\nconst en: Locale = {\n YES: \"Yes\",\n NO: \"No\",\n SUBMIT: \"Submit\",\n RESET: \"Reset\",\n FEEDBACK_NODE_TITLE: \"How do you think Elevo has done this task?\",\n PROBLEM_FEEDBACK: \"Problem feedback\",\n PROBLEM_FEEDBACK_PLACEHOLDER: \"Please describe the problem you encountered.\",\n IS_THE_TASK_PLAN_COMPLETE: \"Is the task plan complete:\",\n IS_THE_TASK_PLAN_LOGICALLY_CORRECT: \"Is the task plan logically correct:\",\n ARE_THE_TASK_PLAN_STEPS_CONCISE: \"Are the task plan steps concise:\",\n ARE_THE_ANALYTICAL_CONCLUSIONS_ACCURATE:\n \"Are the analytical conclusions accurate:\",\n IS_THE_EVIDENCE_SUPPORTING_THE_CONCLUSIONS_SUFFICIENT:\n \"Is the evidence supporting the conclusions sufficient:\",\n THANKS_FOR_YOUR_FEEDBACK: \"Thank you for helping us become better.\",\n};\n\nconst zh: Locale = {\n YES: \"是\",\n NO: \"否\",\n SUBMIT: \"提交\",\n RESET: \"重置\",\n FEEDBACK_NODE_TITLE: \"Elevo 完成这项任务的效果如何?\",\n PROBLEM_FEEDBACK: \"问题反馈\",\n PROBLEM_FEEDBACK_PLACEHOLDER: \"欢迎留下您的意见\",\n IS_THE_TASK_PLAN_COMPLETE: \"任务计划是否完备:\",\n IS_THE_TASK_PLAN_LOGICALLY_CORRECT: \"任务计划是否逻辑正确:\",\n ARE_THE_TASK_PLAN_STEPS_CONCISE: \"任务计划步骤是否精简:\",\n ARE_THE_ANALYTICAL_CONCLUSIONS_ACCURATE: \"分析结论是否准确:\",\n IS_THE_EVIDENCE_SUPPORTING_THE_CONCLUSIONS_SUFFICIENT:\n \"结论的支撑证据是否充足:\",\n THANKS_FOR_YOUR_FEEDBACK: \"感谢你帮我们变得更好。\",\n};\n\nexport const NS = \"bricks/ai-portal/NodeFeedback\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","// istanbul ignore file: experimental\nimport React, { useCallback, useContext, useRef, useState } from \"react\";\nimport classNames from \"classnames\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport styles from \"./NodeFeedback.module.css\";\nimport { K, locales, NS, t } from \"./i18n\";\nimport { WrappedButton, WrappedIconButton } from \"../bricks\";\nimport { ICON_CLOSE } from \"../constants\";\nimport { TaskContext } from \"../TaskContext\";\n\ninitializeI18n(NS, locales);\n\nlet checks:\n | Array<{\n label: string;\n value: string;\n group: \"plan\" | \"result\";\n }>\n | undefined;\n\nfunction getChecks() {\n if (!checks) {\n checks = [\n {\n label: `1. ${t(K.IS_THE_TASK_PLAN_COMPLETE)}`,\n value: \"计划完备\",\n group: \"plan\",\n },\n {\n label: `2. ${t(K.IS_THE_TASK_PLAN_LOGICALLY_CORRECT)}`,\n value: \"逻辑正确\",\n group: \"plan\",\n },\n {\n label: `3. ${t(K.ARE_THE_TASK_PLAN_STEPS_CONCISE)}`,\n value: \"步骤精简\",\n group: \"plan\",\n },\n {\n label: `4. ${t(K.ARE_THE_ANALYTICAL_CONCLUSIONS_ACCURATE)}`,\n value: \"结论准确\",\n group: \"result\",\n },\n {\n label: `5. ${t(K.IS_THE_EVIDENCE_SUPPORTING_THE_CONCLUSIONS_SUFFICIENT)}`,\n value: \"支撑证据充足\",\n group: \"result\",\n },\n ];\n }\n return checks;\n}\n\nexport interface NodeFeedbackProps {\n className?: string;\n}\n\nexport function NodeFeedback({ className }: NodeFeedbackProps): JSX.Element {\n const {\n submittingFeedback,\n submittedFeedback,\n setShowFeedback,\n onSubmitFeedback,\n } = useContext(TaskContext);\n const formRef = useRef<HTMLFormElement>(null);\n const checks = getChecks();\n const [triedSubmit, setTriedSubmit] = useState(false);\n\n const handleSubmit = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n setTriedSubmit(true);\n if (!formRef.current?.reportValidity()) {\n return;\n }\n const formData = new FormData(formRef.current!);\n const plan: string[] = [];\n const result: string[] = [];\n for (let i = 0; i < checks.length; i++) {\n const value = formData.get(`feedback-check-${i}`);\n if (value) {\n if (checks[i].group === \"plan\") {\n plan.push(value as string);\n } else {\n result.push(value as string);\n }\n }\n }\n onSubmitFeedback({\n plan,\n result,\n feedback: (formData.get(\"feedback\") ?? \"\") as string,\n });\n },\n [checks, onSubmitFeedback]\n );\n\n const handleReset = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n setTriedSubmit(false);\n formRef.current?.reset();\n }, []);\n\n if (submittedFeedback) {\n return (\n <div className={`${styles[\"node-feedback\"]} ${styles.submitted}`}>\n {t(K.THANKS_FOR_YOUR_FEEDBACK)}\n </div>\n );\n }\n\n return (\n <div className={classNames(styles[\"node-feedback\"], className)}>\n <div className={styles.heading}>\n <div className={styles.title}>{t(K.FEEDBACK_NODE_TITLE)}</div>\n <WrappedIconButton\n icon={ICON_CLOSE}\n variant=\"mini\"\n onClick={() => setShowFeedback(false)}\n />\n </div>\n <form\n className={classNames(styles.form, { [styles.validate]: triedSubmit })}\n ref={formRef}\n >\n {checks.map((check, index) => (\n <div\n key={index}\n className={`${styles[\"form-item\"]} ${styles.horizontal}`}\n >\n <div className={styles.label}>{check.label}</div>\n <div className={styles.options}>\n <label className={styles.radio}>\n <input\n type=\"radio\"\n required\n name={`feedback-check-${index}`}\n value={check.value}\n />\n <span>{t(K.YES)}</span>\n </label>\n <label className={styles.radio}>\n <input\n type=\"radio\"\n required\n name={`feedback-check-${index}`}\n value=\"\"\n />\n <span>{t(K.NO)}</span>\n </label>\n </div>\n </div>\n ))}\n <div className={`${styles[\"form-item\"]} ${styles.vertical}`}>\n <label htmlFor=\"feedback-content\">{t(K.PROBLEM_FEEDBACK)}</label>\n <textarea\n id=\"feedback-content\"\n name=\"feedback\"\n placeholder={t(K.PROBLEM_FEEDBACK_PLACEHOLDER)}\n rows={2}\n />\n </div>\n <div className={styles.submit}>\n <WrappedButton themeVariant=\"elevo\" type=\"text\" onClick={handleReset}>\n {t(K.RESET)}\n </WrappedButton>\n <WrappedButton\n themeVariant=\"elevo\"\n type=\"primary\"\n shape=\"round\"\n onClick={handleSubmit}\n disabled={submittingFeedback}\n >\n {t(K.SUBMIT)}\n </WrappedButton>\n </div>\n </form>\n </div>\n );\n}\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./NodeReplay.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./NodeReplay.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n WATCH_AGAIN = \"WATCH_AGAIN\",\n TRY_IT_OUT = \"TRY_IT_OUT\",\n CASE_REPLAYING = \"CASE_REPLAYING\",\n CASE_REPLAY_FINISHED = \"CASE_REPLAY_FINISHED\",\n SKIP_TO_RESULTS = \"SKIP_TO_RESULTS\",\n OTHER_CASES = \"OTHER_CASES\",\n PROJECT_TIPS = \"PROJECT_TIPS\",\n GET_STARTED_WITH_PROJECTS_PREFIX = \"GET_STARTED_WITH_PROJECTS_PREFIX\",\n PROJECTS = \"PROJECTS\",\n GET_STARTED_WITH_PROJECTS_SUFFIX = \"GET_STARTED_WITH_PROJECTS_SUFFIX\",\n}\n\nconst en: Locale = {\n WATCH_AGAIN: \"Watch again\",\n TRY_IT_OUT: \"Try it out\",\n CASE_REPLAYING: \"The case is replaying...\",\n CASE_REPLAY_FINISHED: \"The case replay has finished.\",\n SKIP_TO_RESULTS: \"Skip to results\",\n OTHER_CASES: \"Other cases\",\n PROJECT_TIPS:\n \"Start your project collaboration journey and achieve shared goals with team members and AI employees.\",\n GET_STARTED_WITH_PROJECTS_PREFIX: \"Get started with \",\n PROJECTS: \"Projects\",\n GET_STARTED_WITH_PROJECTS_SUFFIX: \"\",\n};\n\nconst zh: Locale = {\n WATCH_AGAIN: \"再次观看\",\n TRY_IT_OUT: \"尝试同款\",\n CASE_REPLAYING: \"案例回放中...\",\n CASE_REPLAY_FINISHED: \"案例回放完成\",\n SKIP_TO_RESULTS: \"跳转到结果\",\n OTHER_CASES: \"其他案例\",\n PROJECT_TIPS:\n \"开启项目协作之旅,和团队成员及多位AI数字人一起实现共同制定的目标。\",\n GET_STARTED_WITH_PROJECTS_PREFIX: \"开启 \",\n PROJECTS: \"项目\",\n GET_STARTED_WITH_PROJECTS_SUFFIX: \" 体验\",\n};\n\nexport const NS = \"bricks/ai-portal/NodeReplay\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, { useContext } from \"react\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport styles from \"./NodeReplay.module.css\";\nimport {\n WrappedButton,\n WrappedIcon,\n WrappedLink,\n WrappedShowCase,\n} from \"../../shared/bricks\";\nimport { TaskContext } from \"../../shared/TaskContext\";\nimport { ICON_LOADING } from \"../../shared/constants\";\nimport { K, locales, NS, t } from \"./i18n\";\nimport projectIcon from \"./project@2x.png\";\nimport classNames from \"classnames\";\n\ninitializeI18n(NS, locales);\n\nexport interface NodeReplayProps {\n finished?: boolean;\n ui?: \"chat\" | \"canvas\";\n}\n\nexport function NodeReplay({ finished, ui }: NodeReplayProps) {\n const {\n conversationId,\n showCases,\n exampleProjects,\n skipToResults,\n watchAgain,\n tryItOut,\n } = useContext(TaskContext);\n\n return (\n <div\n className={classNames(styles[\"node-replay\"], {\n [styles.finished]: finished,\n [styles.chat]: ui === \"chat\",\n })}\n >\n <div className={styles.bar}>\n <div className={styles.label}>\n {finished ? t(K.CASE_REPLAY_FINISHED) : t(K.CASE_REPLAYING)}\n </div>\n <div className={styles.buttons}>\n {finished ? (\n <WrappedButton themeVariant=\"elevo\" onClick={watchAgain}>\n {t(K.WATCH_AGAIN)}\n </WrappedButton>\n ) : (\n <WrappedButton themeVariant=\"elevo\" onClick={skipToResults}>\n {t(K.SKIP_TO_RESULTS)}\n </WrappedButton>\n )}\n <WrappedButton type=\"primary\" themeVariant=\"elevo\" onClick={tryItOut}>\n {t(K.TRY_IT_OUT)}\n </WrappedButton>\n </div>\n </div>\n {finished && (\n <div className={styles.content}>\n {!showCases ||\n (showCases.length > 0 && (\n <>\n <div className={styles.heading}>{t(K.OTHER_CASES)}</div>\n {showCases ? (\n <ul className={styles.cases}>\n {showCases\n .filter((item) => item.conversationId !== conversationId)\n .slice(0, 3)\n .map((item) => (\n <li key={item.conversationId}>\n <WrappedShowCase\n caseTitle={item.title}\n summary={item.summary}\n url={item.url}\n />\n </li>\n ))}\n </ul>\n ) : (\n <WrappedIcon className={styles.loading} {...ICON_LOADING} />\n )}\n </>\n ))}\n {!exampleProjects ||\n (exampleProjects.length > 0 && (\n <>\n <div className={styles.heading}>\n {t(K.GET_STARTED_WITH_PROJECTS_PREFIX)}\n <span className={styles.tag}>{t(K.PROJECTS)}</span>\n {t(K.GET_STARTED_WITH_PROJECTS_SUFFIX)}\n </div>\n <div className={styles.tips}>{t(K.PROJECT_TIPS)}</div>\n {exampleProjects ? (\n <ul className={styles.projects}>\n {exampleProjects.slice(0, 2).map((item) => (\n <li key={item.instanceId}>\n <WrappedLink className={styles.project} url={item.url}>\n <img src={projectIcon} width={16} height={16} />\n {item.name}\n </WrappedLink>\n </li>\n ))}\n </ul>\n ) : (\n <WrappedIcon className={styles.loading} {...ICON_LOADING} />\n )}\n </>\n ))}\n </div>\n )}\n </div>\n );\n}\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","locals","getOrderedNodes","nodes","options","fixedNodes","map","Map","childrenMap","downstreamMap","roots","rootChildren","levels","hiddenNodeIds","Set","showHiddenNodes","node","set","hidden","add","parent","children","get","_node$upstream2","up","_node$upstream","upstream","downstream","length","alignDownstreamMap","level","nodeId","subChildren","directSubChildren","filter","child","_childNode$upstream","leafSubChildren","has","fullDownstreamMap","size","findVisibleDownstreams","downstreams","flatMap","nextDownstreams","newDownstreamMap","fixDownstreams","visibleDownstreams","list","visitedNodes","queue","leaves","shift","getFlatOrderedJobs","tasks","errors","taskIds","taskMap","taskRoots","taskDownstreamMap","jobOptions","showHiddenJobs","mapEntries","levelEntries","downstreamMapEntries","orderedTasks","taskId","jobs","orderedTask","jobIds","jobMap","jobLevels","jobRoots","jobLeaves","jobDownstreamMap","includes","downstreamTasks","downstreamTaskId","downstreamTaskRoots","leaf","jobsWithFollowingErrors","error","jobId","findLast","job","every","d","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","undefined","WrappedCodeWrapper","wrapBrick","MarkdownPre","_ref","_props$className","props","React","className","styles","preProps","showCopyButton","themeVariant","WrappedIcon","WrappedButton","WrappedLink","WrappedDrawer","onClose","onOpen","WrappedIconButton","WrappedChatInput","onMessageSubmit","onTerminate","WrappedShowCase","WrappedCodeBlock","showDialog","unwrapProvider","CanvasContext","createContext","onNodeResize","setActiveNodeId","hoverOnScrollableContent","setHoverOnScrollableContent","setActiveFile","mergeJobs","previousJobs","jobsPatch","workspace","aiEmployeeId","jobPatch","_jobs$findIndex","_jobs","previousJobIndex","findIndex","messages","messagesPatch","toolCall","arguments","originalArguments","JSON","parse","e","argumentsParseFailed","argumentsParseError","_patch$toolCall","patch","name","state","generatedView","getJobGeneratedView","Array","isArray","mergeMessages","_restMessagesPatch$to","_restMessagesPatch$to2","_previousJob$toolCall","_restMessagesPatch$st","previousJob","restMessagesPatch","pick","_previousJob$messages","view","getJobStaticDataView","withContexts","RESPONSE","getJobStaticDataResponse","asyncConstructedView","getAsyncConstructedView","isMatch","slice","merged","previousRole","message","role","lastMessage","parts","mergeMessageParts","previousType","previousDataType","part","_part$data","_part$data2","type","text","data","_part$data3","viewId","code","from","isStaticData","console","rootReducer","reducers","conversation","action","payload","finished","tasksPatch","task","_taskPatch$aiEmployee","taskPatch","previousTaskIndex","previousTask","lastError","concat","_task$jobs","newJobs","Object","fromEntries","entries","key","value","MINIMAL_DELAY","useConversationDetail","conversationId","initialRequest","replay","replayDelay","dispatch","useReducer","humanInputRef","useRef","replayListRef","replayRef","replayDelayRef","replayResolveRef","skipToResults","useCallback","current","watchAgain","async","previousTime","isInitial","delay","time","Math","min","max","Promise","resolve","setTimeout","useEffect","ctrl","ignore","requesting","makeRequest","content","AbortController","sseRequest","createSSEStream","getBasePath","signal","method","body","stringify","headers","stream","handleHttpError","_ctrl","abort","ToolProgressLine","progress","failed","classNames","step","axis","line","dot","count","total","description","getToolDataProgress","toolCallMessages","progressPart","_message$parts","ToolCallStatus","_toolCall$annotations","variant","setActiveToolCallJobId","separateInstructions","useContext","TaskContext","toolTitle","annotations","title","jobTitle","instruction","hasToolCallResponse","useMemo","_job$messages","msg","some","readOnly","handleClick","toolState","isError","onClick","status","icon","lib","prefix","theme","spinning","startTime","timing","humanizeTime","HumanizeTimeFormat","accurate","endTime","moment","humanize","ss","DONE_STATES","GENERAL_DONE_STATES","NON_WORKING_STATES","ICON_CLOSE","ICON_LOADING","ICON_CANVAS","ICON_CHAT","ICON_FEEDBACK","ICON_EXTERNAL_LINK","LIST_SPLIT_THRESHOLD","SHOW_AS_TABLE_THRESHOLD","BUILTIN_FN_STRINGIFY","CmdbInstanceDetail","objectId","detail","outputSchema","rootId","uniqueId","ref","rootRef","container","portal","createPortal","root","unstable_createRoot","supportsUseChildren","unmount","remove","loading","setLoading","useState","_rootRef$current","bricks","context","_schema","schema","modals","builtinFnStringify","convertArrayOfObjects","valueAccessor","label","idPrefix","needContext","_props$","getOrderedProps","modalId","normalizeIdentifier","contextId","modal","brick","properties","dataset","width","modalTitle","hideCancelButton","maskClosable","keyboard","columns","tableChildren","k","v","useChildren","items","upperFirst","slot","convertObject","dataIndex","dataSource","pagination","bordered","clickHandler","args","target","if","style","display","alignItems","gap","textContent","outline","cursor","events","click","_props$2","column","_ref2","field","_ref3","def","isEmptyValue","contextName","useBrick","isComplexType","join","isObject","keys","convertCmdbInstanceDetail","render","_extends","hasOwnProperty","identifier","replace","String","_schema$required","required","propKeys","orderBy","_ref4","requiredIndex","indexOf","ExpandedView","_manuallyUpdatedViews","_views$find","views","previewUrlTemplate","activeExpandedViewJobId","setActiveExpandedViewJobId","manuallyUpdatedViews","showFeedbackOnView","onFeedbackOnView","feedbackDoneViews","viewportRef","containerRef","find","feedbackDone","useViewFeedbackDone","setView","canFeedback","viewsWithTitle","setViewsWithTitle","_generatedView$asyncC","then","all","_view$entry","entry","defaultExport","result","convertedView","convertView","expanded","functions","templates","handleClose","_viewportRef$current","focus","handleKeydown","event","stopPropagation","tabIndex","onKeyDown","nav","_view$title","active","buttons","window","open","parseTemplate","NS_LIBS_DATETIME","K","YESTERDAY","TODAY","FUTURE_AFTER","FORMAT_MEDIUM_DATETIME","FORMAT_MEDIUM_DATE","FORMAT_SHORT_DATETIME","FORMAT_SHORT_DATE","FORMAT_SHORT_DAY_DATETIME","FORMAT_SHORT_DAY_DATE","MONTHS","HOURS","SECONDS","MILL_SECONDS","DAYS","MINUTES","initializeI18n","en","zh","format","auto","Infinity","m","now","fFull","fMedium","i18n","t","fShort","fShort24","fDefault","full","default","relative","diff","past","future","getAccurateTime","toFixed","_text","retVal","year","isBefore","clone","isSame","template","_match","trim","bundledLanguages","json","javascript","js","typescript","ts","html","html-derivative","xml","css","markdown","md","mermaid","mmd","jsx","tsx","shellscript","bash","sh","shell","zsh","python","py","go","sql","bundledThemes","lightPlus","darkPlus","createHighlighter","createdBundledHighlighter","langs","themes","engine","createOnigurumaEngine","codeToHtml","codeToHast","codeToTokensBase","codeToTokens","codeToTokensWithThemes","getSingletonHighlighter","getLastGrammarState","createSingletonShorthands","guessEmbeddedLanguages","lang","mermaidPromise","parser","DOMParser","serializer","XMLSerializer","rehypeMermaid","promises","visit","tree","index","tagName","classListItem","toLowerCase","getCodeLanguage","svg","initialize","startOnLoad","themeVariables","fontSize","lineColor","primaryColor","primaryBorderColor","doLoadMermaid","toString","_document$getElementB","document","getElementById","parseFromString","svgElement","querySelector","defs","createElementNS","innerHTML","prepend","appendChild","modifiedSvg","serializeToString","replacements","fromHtmlIsomorphic","fragment","splice","production","Fragment","jsxs","MarkdownComponent","_shiki$theme","components","shiki","reactContent","setReactContent","highlighter","vFile","unified","use","remarkParse","remarkGfm","remarkToRehype","rehypeShikiFromHighlighter","lazy","defaultLanguage","rehypeReact","passNode","process","pre","shikiOptions","EnhancedMarkdown","handleMouseMove","found","el","nativeEvent","composedPath","HTMLTableElement","HTMLPreElement","scrollWidth","clientWidth","handleMouseLeave","onMouseMove","onMouseLeave","NS","getFixedT","ChatBox","canChat","humanInput","supports","terminating","setTerminating","handleTerminate","CONFIRM_TO_TERMINATE_THE_TASK_TITLE","placeholder","SEND_MESSAGE","autoFocus","submitDisabled","supportsTerminate","intercept","worker","getRemoteTsxParserWorker","parseView","onShare","activeToolCallJobId","submittingFeedback","submittedFeedback","onSubmitFeedback","setShowFeedback","CreatedView","noHeading","onSizeChange","sizeLarge","setSizeLarge","large","traverseBricks","b","_b$properties","component","widgets","preferSizeLarge","viewTitle","heading","sharedStyles","ViewToolbar","callback","propCanFeedback","showJsxEditor","setActiveJsxEditorJob","handleExpandClick","button","FEEDBACK","OPEN_PREVIEW","FULLSCREEN","cache","done","setDone","promise","_response$feedback","response","InstanceApi_getDetail","fields","priority","feedback","fetchViewFeedbackDone","checks","getChecks","IS_THE_TASK_PLAN_COMPLETE","group","IS_THE_TASK_PLAN_LOGICALLY_CORRECT","ARE_THE_TASK_PLAN_STEPS_CONCISE","ARE_THE_ANALYTICAL_CONCLUSIONS_ACCURATE","IS_THE_EVIDENCE_SUPPORTING_THE_CONCLUSIONS_SUFFICIENT","NodeFeedback","formRef","triedSubmit","setTriedSubmit","handleSubmit","_formRef$current","_formData$get","preventDefault","reportValidity","formData","FormData","plan","i","handleReset","_formRef$current2","reset","submitted","THANKS_FOR_YOUR_FEEDBACK","FEEDBACK_NODE_TITLE","form","validate","check","horizontal","radio","YES","NO","vertical","htmlFor","PROBLEM_FEEDBACK","PROBLEM_FEEDBACK_PLACEHOLDER","rows","submit","RESET","shape","disabled","SUBMIT","NodeReplay","ui","showCases","exampleProjects","tryItOut","chat","bar","CASE_REPLAY_FINISHED","CASE_REPLAYING","WATCH_AGAIN","SKIP_TO_RESULTS","TRY_IT_OUT","OTHER_CASES","cases","item","caseTitle","summary","url","GET_STARTED_WITH_PROJECTS_PREFIX","tag","PROJECTS","GET_STARTED_WITH_PROJECTS_SUFFIX","tips","PROJECT_TIPS","projects","instanceId","project","src","projectIcon","height"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(globalThis.webpackChunk_next_bricks_ai_portal=globalThis.webpackChunk_next_bricks_ai_portal||[]).push([[6593],{23241:(e,t,r)=>{function n(e){const t=document.createElement("div");return t.dataset.rootId=e,t.style.position="absolute",t.style.width=t.style.height="0",document.body.append(t),t}r.d(t,{d:()=>n})},43100:(e,t,r)=>{r.d(t,{f:()=>o});var n=r(47695);let a,i;function o(){return a||(a=(async()=>{const e=(0,n.LV)((i||(i=new Worker(new URL(r.p+r.u(1334),r.b))),i));return await new e})()),a}},71568:(e,t,r)=>{r.d(t,{z:()=>P}),r(58135);const n="next-tsx",a=/^<%=?\s/,i=/\s%>$/;function o(e){return!e.reference||"imported"===e.reference.type&&e.reference.importSource===n}var s=r(49936);function l(e){const{name:t,http:r,api:n,params:a,tool:i,transform:o,rejectTransform:l,config:c,scope:p}=e,u=c&&Object.prototype.hasOwnProperty.call(c,"enabled");return{name:t,resolve:{...r?{useProvider:"basic.http-request",args:[n,a]}:i?{useProvider:"ai-portal.call-tool",args:[i,a]}:{useProvider:`${n}:*`,params:a,..."easyops.api.data_exchange.olap@Query"===n&&(0,s.isObject)(a)?{params:{...a,translate:["#showKey"],limit:void 0,limitBy:void 0,order:void 0,displayName:!0}}:null},...o?{transform:{value:o}}:null,...l?{onReject:{transform:{value:l}}}:null,...u?{if:c.enabled}:null},track:!0,...u?{value:c.fallback}:null,..."template"===p?{expose:!1}:null}}function c(e,t){if(!e)return;const r=(Array.isArray(e)?e:[e]).map((e=>function(e,t){var r;switch(null==e?void 0:e.action){case"update_variable":return{action:"template"===e.payload.scope?"state.update":"context.replace",args:[e.payload.name,e.payload.value]};case"refresh_data_source":return{action:"template"===e.payload.scope?"state.refresh":"context.refresh",args:[e.payload.name]};case"call_api":{var n;const{api:r,http:a,tool:i,params:o}=e.payload,s=null!==(n=e.callback)&&void 0!==n&&n.success?c(e.callback.success,t):void 0;return{...a?{useProvider:"basic.http-request",args:[r,o]}:i?{useProvider:"ai-portal.call-tool",args:[i,o]}:{useProvider:`${r}:*`,params:o},callback:{...s&&{success:s},error:{action:"handleHttpError"}}}}case"call_ref":return{..."template"===e.payload.scope?{targetRef:e.payload.ref}:{target:`[data-root-id="${t.rootId}"] [data-ref="${e.payload.ref}"]`},method:e.payload.method,args:e.payload.args};case"update_query":return{action:"replace"===e.payload.method?"history.replaceQuery":"history.pushQuery",args:e.payload.args};case"show_message":return{action:`message.${e.payload.type}`,args:[e.payload.content]};case"dispatch_event":return{action:"tpl.dispatchEvent",args:[e.payload.type,{detail:e.payload.detail}]};case"conditional":return{if:e.payload.test,then:null!==(r=c(e.payload.consequent,t))&&void 0!==r?r:[],else:c(e.payload.alternate,t)}}}(e,t))).filter(Boolean);return r.length>0?r:void 0}var p=r(36890);const u=/^<%=?\s/,d=/\s%>$/;function m(e){if("string"!=typeof e)return{isString:!1};let t;const r=e.trim();var n;return n=r,u.test(n)&&d.test(n)?t=r.replace(u,"").replace(d,"").trim():(console.warn("Invalid expression:",JSON.stringify(e)),t="null"),{isString:!0,embedded:e,expression:t,usedContexts:(0,p.strictCollectMemberUsage)(e,"CTX")}}var f=r(71321);function h(e,t){return null!=t&&t.size?Array.isArray(e)?e.map((e=>h(e,t))):"object"==typeof e&&null!==e?Object.fromEntries(Object.entries(e).map((e=>{let[r,n]=e;return[r,h(n,t)]}))):"string"==typeof e&&function(e){if("string"!=typeof e)return!1;const t=e.trim();return a.test(t)&&i.test(t)}(e)?function(e,t){if(null==t||!t.size)return e;if([...t.keys()].some((t=>e.includes(t)))){const r=[];let n;try{n=(0,f.preevaluate)(e,{withParent:!0,hooks:{beforeVisitGlobal(e,n){if(t.has(e.name)){var a;const t=null===(a=n[n.length-1])||void 0===a?void 0:a.node;let i;t&&"Property"===t.type&&!t.computed&&t.shorthand&&(i=!0),r.push({id:e,shorthand:i})}}}})}catch(e){console.error("Parse expression failed:",e)}if(r.length>0&&n){const{prefix:e,source:a,suffix:i}=n,o=[];let s=0;for(let e=0;e<r.length;e++){const{id:n,shorthand:i}=r[e],{name:l,start:c,end:p}=n;o.push(a.substring(s,c),`${i?`${l}: `:""}${t.get(l)}`),s=p}return o.push(a.substring(s)),`${e}${o.join("")}${i}`}}return e}(e,t):e:e}const g=["cellData","rowData"],b=["#336EF4","#45CAFF","#41CDCF","#8146F3","#F8A075","#94E65E","#57689C","#C285EF","#FAC60B","#E4551F","#8984FF","#2540FF","#08BF33","#F7811C","#AC7CFF","#1BA5DC","#E89716","#76A6F5","#4F69FF"];function y(e,t){const r=e.slice(1),n=parseInt(r,16);return`rgba(${n>>16&255}, ${n>>8&255}, ${255&n}, ${t})`}let v=0;const x=new Map;function k(e,t){return`${function(e){return x.has(e)||x.set(e,"isolated-tpl-"+v++),x.get(e)}(t)}${_(e)}`}function w(e){return`tpl-${_(e)}`}function _(e){return e.replace(/([A-Z])/g,"-$1").toLowerCase()}async function F(e,t,r,n,a){var i;let s=null;if(o(e))switch(e.reference?e.reference.name:e.name){case"List":s=await function(e){let{properties:t}=e;const r=t,{dataSource:n,fields:a,variant:i}=r,o=m(n);return{brick:"eo-list",properties:{variant:i,dataSource:o.isString?o.embedded:n,fields:a,themeVariant:"elevo"}}}(e);break;case"Table":s=await async function(e,t,r,n,a){var i;const{properties:o}=e,{dataSource:s,size:l,columns:c,rowKey:p,pagination:u,...d}=o,f=m(s),b=new Map,y=Array.isArray(c)?await Promise.all(c.map((async e=>{let{render:i,...o}=e;if(i){const e=new Map;for(let t=0;t<i.params.length&&t<g.length;t++)e.set(i.params[t],`DATA.${g[t]}`);const s=(await Promise.all(i.children.map((e=>F(e,t,r,n,a))))).flatMap((t=>h(t,e)));return{...o,useBrick:s.map((e=>e.brick.startsWith(":")?{brick:"div",children:[e]}:e))}}return"string"==typeof o.dataIndex&&b.has(o.dataIndex)?{...o,useChildren:`[${o.dataIndex}]`}:o}))):c;return{brick:"eo-next-table",properties:{dataSource:f.isString?f.embedded:s,...d,rowKey:null!=p?p:Array.isArray(c)?null===(i=c[0])||void 0===i?void 0:i.key:void 0,columns:y,themeVariant:"elevo",scrollConfig:{x:"max-content"},...n.expanded?{bordered:!0,pagination:u,size:"large"}:{size:"middle",pagination:!1}},children:b.size>0?Array.from(b.values()):[]}}(e,t,r,n,a);break;case"Descriptions":s=await async function(e,t,r,n,a){let{properties:i}=e;const{dataSource:o,title:s,list:l,columns:c,...p}=i,u=m(o),d=new Map,f=Array.isArray(l)?await Promise.all(l.map((async e=>{let{render:i,...o}=e;if(i){const e=new Map;i.params.length>0&&e.set(i.params[0],"DATA");const s=(await Promise.all(i.children.map((e=>F(e,t,r,n,a))))).flatMap((t=>h(t,e)));return{label:o.label,useBrick:s}}return(o.field?d.get(o.field):void 0)?{label:o.label,useChildren:`[${o.field}]`}:o}))):l;return{brick:"eo-descriptions",properties:{...p,dataSource:u.isString?u.embedded:o,list:f,...null==c?{column:n.expanded?3:1,templateColumns:"repeat(auto-fill,minmax(360px,1fr))"}:{column:c},themeVariant:"elevo"},children:d.size>0?Array.from(d.values()):[]}}(e,t,r,n,a);break;case"Card":s=await function(e){const{properties:t}=e,{title:r,textContent:n}=t;return{brick:"eo-card",properties:{themeVariant:"elevo",cardTitle:r,background:"#fff",outline:"background",...n?{textContent:n}:null}}}(e);break;case"Dashboard":s=await async function(e,t,r,n){let{properties:a}=e;const{dataSource:i,groupField:o,widgets:s}=a;r.usedHelpers.add("_helper_getLatestMetricValue"),r.usedHelpers.add("_helper_extractList"),r.usedHelpers.add("_helper_groupMetricData"),r.usedHelpers.add("_helper_getMetricDisplayNames");const l=o?"#showKey":void 0,{isString:c,expression:p}=m(i),u=c?`<%= FN._helper_extractList((${p})) %>`:i;if(n.expanded){let e=s;const t=[];if(t.length>0){e=[];const r=new Set,n=new Set(s.map((e=>e.metric.id)));for(const a of s){if(r.has(a.metric.id))continue;const i={...a};e.push(i);const o=t.find((e=>e.metrics.includes(a.metric.id)));if(o){const e=o.metrics.filter((e=>n.has(e)));if(e.length>1){i.relevantMetrics=e,i.counterMetric=o.counter,i.groupTitle=o.group;for(const t of e)r.add(t),n.delete(t)}}}}let r=0;return{brick:"div",properties:{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(500px, 1fr))",gap:"16px"},dataset:{component:"dashboard"}},children:e.map((e=>{var t,n;const{title:a,metric:i,size:o,precision:s}=e,c=null!==(t=null===(n=e.relevantMetrics)||void 0===n?void 0:n.length)&&void 0!==t?t:l?2:1,d=Array.from({length:c},((e,t)=>b[(r+t)%b.length]));r+=c;const m="load"===i.unit?"":i.unit,f={brick:"chart-v2.time-series-chart",properties:{data:u,xField:"time",...e.relevantMetrics?{yFields:`<% FN._helper_getMetricDisplayNames((${p}).displayNameList, ${JSON.stringify(e.relevantMetrics)}) %>`}:{yField:`<% FN._helper_getMetricDisplayNames((${p}).displayNameList, [${JSON.stringify(i.id)}])[0] %>`},...e.counterMetric?{forceAbsoluteNumbers:!0,series:{[e.counterMetric]:{isNegative:!0}}}:null,height:"large"===o?230:200,timeFormat:"HH:mm",...e.relevantMetrics||l?null:{areaOptions:{style:{fill:`l(90) 0:${d[0]} 1:#ffffff`}}},axis:{yAxis:{unit:m,precision:s,...e.counterMetric?null:"percent(1)"===m?{min:0,max:1}:"percent(100)"===m||"%"===m?{min:0,max:100}:{min:0},shape:"smooth"}},groupField:l,areaShape:"smooth",legends:!(!e.relevantMetrics&&!l),colors:d,tooltip:{marker:{fill:d[0],stroke:"#fff",lineWidth:2,shadowColor:d[0],shadowBlur:8,shadowOffsetX:0,shadowOffsetY:4},domStyles:{"g2-tooltip":{background:[`radial-gradient( farthest-corner at -20px 150px, ${d[0]} 0%, rgba(238,238,238,0) 60%)`,"linear-gradient( 180deg, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0.8) 100%)"].join(", "),boxShadow:`0px 4px 8px 0px ${y(d[0],.08)}`,borderRadius:"8px",border:"1px solid rgba(255,255,255,1)",backdropFilter:"blur(3px)"}}}}};return{brick:"div",properties:{style:{background:"rgba(255,255,255,0.8)",boxShadow:"0px 2px 4px 0px rgba(0,0,0,0.06)",borderRadius:"8px",padding:"16px 20px 20px"}},children:[{brick:"div",properties:{style:{fontSize:"16px",fontWeight:"500",marginBottom:"20px"},textContent:e.groupTitle||a||i.id}},f]}}))}}return l?{brick:"div",properties:{style:{display:"flex",flexDirection:"column",gap:"8px"}},children:[{brick:":forEach",dataSource:`<%= FN._helper_groupMetricData(FN._helper_extractList((${p})), ${JSON.stringify(l)}) %>`,children:[{brick:"div",properties:{textContent:"<% `${ITEM.group}:` %>",style:{fontWeight:"500"}}},{brick:"div",properties:{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(200px, 1fr))",gap:"10px",marginBottom:"8px"},dataset:{component:"dashboard"}},children:s.map(((e,t)=>{const{title:r,metric:n,precision:a}=e;return{brick:"ai-portal.stat-with-mini-chart",properties:{size:"small",label:r||n.id,data:"<% ITEM.list %>",xField:"time",yField:n.id,lineColor:b[t%b.length],showArea:!0,..."percent(1)"===n.unit?{min:0,max:1}:"percent(100)"===n.unit||"%"===n.unit?{min:0,max:100}:{min:0},value:`<%= FN._helper_getLatestMetricValue(ITEM.list, ${JSON.stringify({metric:n,precision:a})}) %>`}}}))}]}]}:{brick:"div",properties:{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(200px, 1fr))",gap:"10px"},dataset:{component:"dashboard"}},children:s.map(((e,t)=>{const{title:r,metric:n,precision:a}=e;return{brick:"ai-portal.stat-with-mini-chart",properties:{size:"small",label:r||n.id,data:u,xField:"time",yField:n.id,lineColor:b[t%b.length],showArea:!0,..."percent(1)"===n.unit?{min:0,max:1}:"percent(100)"===n.unit||"%"===n.unit?{min:0,max:100}:{min:0},value:`<%= FN._helper_getLatestMetricValue((${c?`FN._helper_extractList((${p}))`:JSON.stringify(null!=i?i:null)}), ${JSON.stringify({metric:n,precision:a})}) %>`}}}))}}(e,0,r,n);break;case"Button":s=await function(e){const{properties:t}=e;return{brick:"eo-button",properties:{...t,themeVariant:"elevo"}}}(e);break;case"Form":s=await function(e){const{properties:t}=e,{values:r}=null!=t?t:{};return{brick:"eo-form",properties:{values:null!=r?r:{},themeVariant:"elevo"}}}(e);break;case"Toolbar":s=await{brick:"eo-flex-layout",properties:{gap:"0.5em",alignItems:"center"}};break;case"Modal":s=await function(e){const{properties:t}=e,{title:r,confirmText:n,cancelText:a,...i}=t;return{brick:"eo-modal",portal:!0,properties:{themeVariant:"elevo",modalTitle:r,confirmText:n,cancelText:a,keyboard:!0,...i}}}(e);break;case"Plaintext":s=await function(e){const{properties:t}=e;return{brick:"span",properties:{...t}}}(e);break;case"Link":s=await function(e,t,r){const{properties:n}=e;return{brick:"eo-link",properties:{...n,inApp:"app"===r.app.appType,themeVariant:"elevo"}}}(e,0,r);break;case"Output":s=await function(e){const{properties:t}=e,{style:r,...n}=t;return{brick:"pre",properties:{style:{background:"hsl(230, 1%, 98%)",color:"hsl(230, 8%, 24%)",fontFamily:'"Fira Code", "Fira Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",tabSize:"2",hyphens:"none",fontSize:"13px",padding:"1em",margin:"0",overflowX:"auto",borderRadius:"9px",...r},...n}}}(e);break;case"Tag":s=await function(e){const{properties:t}=e;return{brick:"eo-tag",properties:{...t,themeVariant:"elevo"}}}(e);break;case"Avatar":s=await function(e){const{properties:t}=e;return{brick:"eo-avatar",properties:{...t,themeVariant:"elevo"}}}(e);break;case"AvatarGroup":s=await function(e){const{properties:t}=e;return{brick:"eo-avatar-group",properties:{...t,themeVariant:"elevo"}}}(e);break;case"CodeBlock":s=await function(e){const{properties:t}=e;return{brick:"eo-code-block",properties:{...t,themeVariant:"elevo"}}}(e);break;case"Search":case"Input":case"NumberInput":case"Textarea":case"Select":case"Radio":case"Checkbox":case"Switch":case"DatePicker":case"TimePicker":s=await function(e,t){const{properties:r}=e;let n=t,a={...r,themeVariant:"elevo"};switch(n){case"eo-search":a={...a,trim:!0};break;case"eo-number-input":n="eo-input",a={type:"number",...a}}return{brick:n,properties:a}}(e,(p=e.name,p.includes("-")?p:`eo${p.replace(/([A-Z])/g,"-$1").toLowerCase()}`));break;case"ForEach":s=await function(e){const{properties:t}=e,{dataSource:r}=t;return{brick:":forEach",dataSource:r}}(e);break;case"If":s=await function(e){const{properties:t}=e,{dataSource:r}=t;return{brick:":if",dataSource:r}}(e);break;default:"app"===r.app.appType&&e.name.toLowerCase()===e.name?s={brick:e.name,properties:e.properties}:console.error("Unknown component:",e.name)}else{var l;const{type:a,importSource:i,name:o}=e.reference;let c;if("imported"===a){const e=r.app.modules.get(i);c=o?null==e?void 0:e.namedExports.get(o):null==e?void 0:e.defaultExport}else c=[...t.internals,...t.namedExports.values()].find((e=>{var t;return"template"===e.type&&(null===(t=e.component.id)||void 0===t?void 0:t.name)===o}));if("template"===(null===(l=c)||void 0===l?void 0:l.type)){const t=c.component.id.name;s={brick:"app"===r.app.appType?w(t):k(t,n.rootId),properties:e.properties}}else console.error(`Cannot find the component "${e.reference.name}".`)}var p,u,d,f,v;return s?(e.ref&&("template"===a?s.ref=e.ref:(null!==(d=(u=s).properties)&&void 0!==d||(u.properties={}),null!==(v=(f=s.properties).dataset)&&void 0!==v||(f.dataset={}),s.properties.dataset.ref=e.ref)),e.slot&&(s.slot=e.slot),s.events=function(e,t){const r={};for(const[a,i]of Object.entries(null!==(n=e.events)&&void 0!==n?n:{})){var n;switch(e.name){case"Table":switch(a){case"select":{const e=c(i,t);e&&(r["row.select.v2"]=e);break}case"sort":{const e=c(i,t);e&&(r["sort.change"]=e);break}case"paginate":{const e=c(i,t);e&&(r["page.change"]=e);break}}break;case"Button":if("click"===a){const e=c(i,t);e&&(r.click=e)}break;case"Search":if("search"===a){const e=c(i,t);e&&(r.search=e)}break;case"Select":if("change"===a){const e=c(i,t);e&&(r["change.v2"]=e)}break;default:{const e=c(i,t);e&&(r[a]=e)}}}return Object.keys(r).length>0?r:void 0}(e,n),null!==(i=e.children)&&void 0!==i&&i.length&&(s.children=(await Promise.all(e.children.map((e=>F(e,t,r,n,a))))).flat(),("Card"===e.name||"Modal"===e.name)&&s.children.length>0&&(s.children=[{brick:"eo-content-layout",children:s.children}])),s):[]}async function S(e,t,r,n){var a,i;if("function"===e.type)return e;const s=[],{component:c}=e;for(const e of c.bindingMap.values())"resource"===e.kind?s.push(l(e.resource)):"state"!==e.kind&&"constant"!==e.kind&&"param"!==e.kind||s.push({name:e.id.name,value:e.initialValue,expose:"param"===e.kind,track:!0});let p;if("view"===e.type){var u;const e=null===(u=c.children)||void 0===u?void 0:u.find((e=>function(e,t){return o(e)&&(e.reference?e.reference.name===t:e.name===t)}(e,"View")));e&&(p=e.children)}else p=c.children;const d=null!==(a=p)&&void 0!==a&&a.length?(await Promise.all(p.map((a=>F(a,t,r,n,e.type))))).flat():[];return{type:e.type,bricks:d,context:s,name:null===(i=c.id)||void 0===i?void 0:i.name,title:e.title}}const A='export function mergeTexts(\n ...items: (\n | { type: "text"; text: string }\n | { type: "expression"; value: unknown }\n )[]\n): string {\n function mergeValuesAsText(value: unknown): string {\n if (Array.isArray(value)) {\n return value.map(mergeValuesAsText).join("");\n }\n const type = typeof value;\n if (type === "string" || type === "number") {\n return String(value);\n }\n if (type === "object" && value !== null) {\n throw new Error("Can not render object as text");\n }\n return "";\n }\n\n const texts: string[] = [];\n for (const item of items) {\n if (item.type === "text") {\n texts.push(item.text.trim());\n } else {\n texts.push(mergeValuesAsText(item.value));\n }\n }\n return texts.join("");\n}\n',M='import { pipes as PIPES } from "@easyops-cn/brick-next-pipes";\n\nexport function getLatestMetricValue(\n list: Record<string, any>[] | undefined,\n {\n metric,\n precision,\n }: { metric: { id: string; unit: string }; precision?: number }\n) {\n const value = list?.findLast?.((item) => item[metric.id] != null)?.[\n metric.id\n ];\n const unit = metric.unit === "load" ? "" : metric.unit;\n return PIPES.unitFormat(value, unit, precision).join("");\n}\n',$="export function extractList<T = unknown>(data: T[] | { list: T[] }): T[] {\n if (Array.isArray(data)) {\n return data;\n }\n return data?.list;\n}\n",C="export function groupMetricData(\n list: Record<string, any>[],\n groupField: string\n) {\n if (!list || !Array.isArray(list) || list.length === 0) {\n return [];\n }\n const grouped = new Map<\n string,\n { group: string; list: Record<string, any>[] }\n >();\n for (const item of list) {\n const key = item[groupField];\n let groupedList = grouped.get(key);\n if (!groupedList) {\n grouped.set(key, (groupedList = { group: key, list: [] }));\n }\n groupedList.list.push(item);\n }\n return Array.from(grouped.values());\n}\n",T="export function getMetricDisplayNames(\n displayNameList:\n | { metric_name: string; metric_display_name: string }[]\n | undefined,\n metricNames: string[]\n): string[] {\n return metricNames.map(\n (metricName) =>\n displayNameList?.find((item) => item.metric_name === metricName)\n ?.metric_display_name ?? metricName\n );\n}\n";let N;function E(e){return e.replace(/^export /m,"").replace(/^import [^\n]+\n/gm,"")}function L(e,t){return{brick:"div",properties:{style:t.expanded?{background:"rgba(255, 255, 255, 0.9)",backdropFilter:"blur(10px)",borderRadius:"16px",padding:"24px"}:{background:"var(--elevo-component-background)",backdropFilter:"var(--elevo-component-backdrop-filter)",borderRadius:"var(--elevo-border-radius)",padding:"16px"}},children:e}}async function P(e,t){const{entry:r}=e;if(!r)throw new Error("No entry module found in the view.");const n={usedHelpers:new Set,app:e},a=await async function(e,t,r){if(e.usedHelpers.size>0)for(const r of e.usedHelpers)t.usedHelpers.add(r);const[n,a,i]=await Promise.all([e.defaultExport?S(e.defaultExport,e,t,r):null,Promise.all(Array.from(e.namedExports.entries()).map((async n=>{let[a,i]=n;return[a,await S(i,e,t,r)]}))).then((e=>new Map(e))),Promise.all(e.internals.map((n=>S(n,e,t,r))))]);return{sourceModule:e,defaultExport:n,namedExports:a,internals:i}}(r,n,t),{defaultExport:i,internals:o,namedExports:s}=a;if(!i)throw new Error("No view found in the entry module.");const l=[],c=[];for(const e of[...o,...s.values()])"function"===e.type?l.push(e.function):"template"===e.type&&c.push({name:k(e.name,t.rootId),bricks:e.bricks,state:e.context});const p=Array.from(n.usedHelpers).map((e=>{const t=(N||(N=new Map([["_helper_mergeTexts",E(A)],["_helper_getLatestMetricValue",E(M)],["_helper_extractList",E($)],["_helper_groupMetricData",E(C)],["_helper_getMetricDisplayNames",E(T)]])),N).get(e);if(!t)throw new Error(`Helper function ${e} not found`);return{name:e,source:t,typescript:!0}})),{title:u,bricks:d,context:m}=i;return{title:u,brick:{brick:"eo-content-layout",children:d.every((e=>["eo-form","eo-descriptions","eo-button"].includes(e.brick)))?[L(d,t)]:d},context:[...m,...t.withContexts?Object.entries(t.withContexts).map((e=>{let[t,r]=e;return{name:t,value:r}})):[]],functions:[...l,...p],templates:c}}}}]);
|
|
2
|
+
//# sourceMappingURL=6593.f25cfd6b.js.map
|