@next-bricks/ai-portal 0.48.4 → 0.49.0
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 +32 -31
- package/dist/chunks/6725.024b973c.js +2 -0
- package/dist/chunks/6725.024b973c.js.map +1 -0
- package/dist/chunks/7245.597bf395.js +2 -0
- package/dist/chunks/7245.597bf395.js.map +1 -0
- package/dist/chunks/{7367.26e21493.js → 7367.d389861e.js} +3 -3
- package/dist/chunks/{7367.26e21493.js.map → 7367.d389861e.js.map} +1 -1
- package/dist/chunks/7589.a2830718.js +2 -0
- package/dist/chunks/7589.a2830718.js.map +1 -0
- package/dist/chunks/8324.5ac013ff.js +2 -0
- package/dist/chunks/8324.5ac013ff.js.map +1 -0
- package/dist/chunks/8551.af6f8818.js +3 -0
- package/dist/chunks/8551.af6f8818.js.map +1 -0
- package/dist/chunks/8717.debf076f.js +2 -0
- package/dist/chunks/8717.debf076f.js.map +1 -0
- package/dist/chunks/9360.96ec6cfa.js +2 -0
- package/dist/chunks/{9474.dca1f47c.js.map → 9360.96ec6cfa.js.map} +1 -1
- package/dist/chunks/{action-buttons.3a72e5a4.js → action-buttons.c8899284.js} +2 -2
- package/dist/chunks/action-buttons.c8899284.js.map +1 -0
- package/dist/chunks/activity-timeline.60e516fd.js +2 -0
- package/dist/chunks/activity-timeline.60e516fd.js.map +1 -0
- package/dist/chunks/ai-agents.59e23ea3.js +3 -0
- package/dist/chunks/ai-agents.59e23ea3.js.map +1 -0
- package/dist/chunks/ai-employees.941aaa1b.js +3 -0
- package/dist/chunks/ai-employees.941aaa1b.js.map +1 -0
- package/dist/chunks/blank-state.3a537adc.js +2 -0
- package/dist/chunks/blank-state.3a537adc.js.map +1 -0
- package/dist/chunks/{call-tool.1be50464.js → call-tool.28aa1c47.js} +2 -2
- package/dist/chunks/{call-tool.1be50464.js.map → call-tool.28aa1c47.js.map} +1 -1
- package/dist/chunks/chat-box.690cfe37.js +2 -0
- package/dist/chunks/chat-box.690cfe37.js.map +1 -0
- package/dist/chunks/chat-input.720e6130.js +3 -0
- package/dist/chunks/chat-input.720e6130.js.map +1 -0
- package/dist/chunks/{chat-stream.596a9cf9.js → chat-stream.052c4869.js} +2 -2
- package/dist/chunks/{chat-stream.596a9cf9.js.map → chat-stream.052c4869.js.map} +1 -1
- package/dist/chunks/cruise-canvas.f4b9384f.js +2 -0
- package/dist/chunks/cruise-canvas.f4b9384f.js.map +1 -0
- package/dist/chunks/dropdown-select.11c89c58.js +2 -0
- package/dist/chunks/dropdown-select.11c89c58.js.map +1 -0
- package/dist/chunks/elevo-logo.25e3b889.js +2 -0
- package/dist/chunks/elevo-logo.25e3b889.js.map +1 -0
- package/dist/chunks/elevo-sidebar.dd588b6e.js +3 -0
- package/dist/chunks/elevo-sidebar.dd588b6e.js.map +1 -0
- package/dist/chunks/goal-card-list.11057103.js +3 -0
- package/dist/chunks/goal-card-list.11057103.js.map +1 -0
- package/dist/chunks/home-container.d2c68b4a.js +2 -0
- package/dist/chunks/home-container.d2c68b4a.js.map +1 -0
- package/dist/chunks/{icon-button.1ac30b57.js → icon-button.1014fc6a.js} +2 -2
- package/dist/chunks/{icon-button.1ac30b57.js.map → icon-button.1014fc6a.js.map} +1 -1
- package/dist/chunks/{load-request-store.0229141e.js → load-request-store.843b9a8c.js} +2 -2
- package/dist/chunks/{load-request-store.0229141e.js.map → load-request-store.843b9a8c.js.map} +1 -1
- package/dist/chunks/main.c18035c3.js +2 -0
- package/dist/chunks/{main.a271ddd5.js.map → main.c18035c3.js.map} +1 -1
- package/dist/chunks/mcp-tools.64f00038.js +2 -0
- package/dist/chunks/mcp-tools.64f00038.js.map +1 -0
- package/dist/chunks/page-container.fe4474cb.js +2 -0
- package/dist/chunks/page-container.fe4474cb.js.map +1 -0
- package/dist/chunks/preview-container.8e831edb.js +2 -0
- package/dist/chunks/preview-container.8e831edb.js.map +1 -0
- package/dist/chunks/project-conversations.9bd710bf.js +3 -0
- package/dist/chunks/project-conversations.9bd710bf.js.map +1 -0
- package/dist/chunks/project-knowledges.14b07366.js +3 -0
- package/dist/chunks/project-knowledges.14b07366.js.map +1 -0
- package/dist/chunks/show-case.22cdff4b.js +2 -0
- package/dist/chunks/show-case.22cdff4b.js.map +1 -0
- package/dist/chunks/{show-cases.afdbbee3.js → show-cases.e3d47e29.js} +2 -2
- package/dist/chunks/show-cases.e3d47e29.js.map +1 -0
- package/dist/chunks/{stat-with-mini-chart.c9fde80c.js → stat-with-mini-chart.1509cf8c.js} +2 -2
- package/dist/chunks/{stat-with-mini-chart.c9fde80c.js.map → stat-with-mini-chart.1509cf8c.js.map} +1 -1
- package/dist/chunks/tab-list.7c595ef3.js +3 -0
- package/dist/chunks/tab-list.7c595ef3.js.map +1 -0
- package/dist/examples.json +17 -14
- package/dist/images/449e2e64.png +0 -0
- package/dist/images/fc2c99bb.png +0 -0
- package/dist/index.4517c026.js +2 -0
- package/dist/index.4517c026.js.map +1 -0
- package/dist/manifest.json +237 -211
- package/dist/types.json +298 -244
- package/dist-types/blank-state/index.d.ts +16 -0
- package/dist-types/blank-state/index.spec.d.ts +1 -0
- package/dist-types/bootstrap.d.ts +1 -0
- package/dist-types/cruise-canvas/CruiseCanvas.d.ts +1 -1
- package/dist-types/cruise-canvas/index.d.ts +2 -0
- package/dist-types/cruise-canvas/useConversationGraph.d.ts +1 -0
- package/dist-types/elevo-sidebar/index.d.ts +1 -0
- package/dist-types/shared/TaskContext.d.ts +1 -0
- package/docs/blank-state.md +12 -0
- package/package.json +3 -3
- package/dist/chunks/1026.a0469066.js +0 -2
- package/dist/chunks/1026.a0469066.js.map +0 -1
- package/dist/chunks/1692.01919eaa.js +0 -2
- package/dist/chunks/1692.01919eaa.js.map +0 -1
- package/dist/chunks/495.06800ca3.js +0 -2
- package/dist/chunks/495.06800ca3.js.map +0 -1
- package/dist/chunks/7431.6b6bb81a.js +0 -3
- package/dist/chunks/7431.6b6bb81a.js.map +0 -1
- package/dist/chunks/8324.71f13678.js +0 -2
- package/dist/chunks/8324.71f13678.js.map +0 -1
- package/dist/chunks/9328.794ecf59.js +0 -2
- package/dist/chunks/9328.794ecf59.js.map +0 -1
- package/dist/chunks/9474.dca1f47c.js +0 -2
- package/dist/chunks/action-buttons.3a72e5a4.js.map +0 -1
- package/dist/chunks/activity-timeline.0c683db9.js +0 -2
- package/dist/chunks/activity-timeline.0c683db9.js.map +0 -1
- package/dist/chunks/ai-agents.4b5985d1.js +0 -3
- package/dist/chunks/ai-agents.4b5985d1.js.map +0 -1
- package/dist/chunks/ai-employees.10893372.js +0 -3
- package/dist/chunks/ai-employees.10893372.js.map +0 -1
- package/dist/chunks/chat-box.0fd70952.js +0 -2
- package/dist/chunks/chat-box.0fd70952.js.map +0 -1
- package/dist/chunks/chat-input.6e8da9e5.js +0 -3
- package/dist/chunks/chat-input.6e8da9e5.js.map +0 -1
- package/dist/chunks/cruise-canvas.5cd0f774.js +0 -2
- package/dist/chunks/cruise-canvas.5cd0f774.js.map +0 -1
- package/dist/chunks/dropdown-select.3b1915db.js +0 -2
- package/dist/chunks/dropdown-select.3b1915db.js.map +0 -1
- package/dist/chunks/elevo-logo.93d0f4ab.js +0 -2
- package/dist/chunks/elevo-logo.93d0f4ab.js.map +0 -1
- package/dist/chunks/elevo-sidebar.aa3aa869.js +0 -3
- package/dist/chunks/elevo-sidebar.aa3aa869.js.map +0 -1
- package/dist/chunks/goal-card-list.7b4a6342.js +0 -3
- package/dist/chunks/goal-card-list.7b4a6342.js.map +0 -1
- package/dist/chunks/home-container.1866b2fa.js +0 -2
- package/dist/chunks/home-container.1866b2fa.js.map +0 -1
- package/dist/chunks/main.a271ddd5.js +0 -2
- package/dist/chunks/mcp-tools.028e5150.js +0 -2
- package/dist/chunks/mcp-tools.028e5150.js.map +0 -1
- package/dist/chunks/page-container.8bf6e607.js +0 -2
- package/dist/chunks/page-container.8bf6e607.js.map +0 -1
- package/dist/chunks/preview-container.89b082ac.js +0 -2
- package/dist/chunks/preview-container.89b082ac.js.map +0 -1
- package/dist/chunks/project-conversations.5326be22.js +0 -3
- package/dist/chunks/project-conversations.5326be22.js.map +0 -1
- package/dist/chunks/project-knowledges.7c8e9b0c.js +0 -3
- package/dist/chunks/project-knowledges.7c8e9b0c.js.map +0 -1
- package/dist/chunks/show-case.47b40ba3.js +0 -2
- package/dist/chunks/show-case.47b40ba3.js.map +0 -1
- package/dist/chunks/show-cases.afdbbee3.js.map +0 -1
- package/dist/chunks/tab-list.2cbcb36a.js +0 -3
- package/dist/chunks/tab-list.2cbcb36a.js.map +0 -1
- package/dist/index.5e116c8d.js +0 -2
- package/dist/index.5e116c8d.js.map +0 -1
- /package/dist/chunks/{7367.26e21493.js.LICENSE.txt → 7367.d389861e.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{7431.6b6bb81a.js.LICENSE.txt → 8551.af6f8818.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{ai-agents.4b5985d1.js.LICENSE.txt → ai-agents.59e23ea3.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{ai-employees.10893372.js.LICENSE.txt → ai-employees.941aaa1b.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{chat-input.6e8da9e5.js.LICENSE.txt → chat-input.720e6130.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{elevo-sidebar.aa3aa869.js.LICENSE.txt → elevo-sidebar.dd588b6e.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{goal-card-list.7b4a6342.js.LICENSE.txt → goal-card-list.11057103.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{project-conversations.5326be22.js.LICENSE.txt → project-conversations.9bd710bf.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{project-knowledges.7c8e9b0c.js.LICENSE.txt → project-knowledges.14b07366.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{tab-list.2cbcb36a.js.LICENSE.txt → tab-list.7c595ef3.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunks/7589.a2830718.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/CreatedView/CreatedView.module.css?fa62","webpack:///./src/shared/CreatedView/i18n.ts","webpack:///./src/shared/CreatedView/CreatedView.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/cruise-canvas/toolbar.module.css?a4b4","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}.buttons--s1Vtr06S{display:flex;align-items:center;gap:8px}.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}.button--ulIeUcT5{display:flex;background:none;border:none;padding:3px;cursor:pointer;color:#595959}.button-lucide--x2cvdtL_{font-size:16px;padding:2px}.button--ulIeUcT5:hover{color:var(--elevo-color-brand)}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"heading\": `heading--Mi2u66PA`,\n\t\"buttons\": `buttons--s1Vtr06S`,\n\t\"title\": `title--t7OpwWbH`,\n\t\"button\": `button--ulIeUcT5`,\n\t\"button-lucide\": `button-lucide--x2cvdtL_`\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 { convertTsx, getViewTitle } 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\";\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: getViewTitle(view),\n };\n })\n ).then((result) => {\n setViewsWithTitle(result);\n });\n }, [views]);\n\n const sizeSmall = useMemo(() => {\n let hasForm = false;\n if (view) {\n for (const component of view?.components ?? []) {\n switch (component.name) {\n case \"Form\":\n case \"eo-form\":\n case \"Button\":\n case \"eo-button\":\n hasForm = true;\n break;\n default:\n return false;\n }\n }\n }\n return hasForm;\n }, [view]);\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 convertTsx(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","\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","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, {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { getBasePath, unstable_createRoot } from \"@next-core/runtime\";\nimport classNames from \"classnames\";\nimport { uniqueId } from \"lodash\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { convertTsx, getViewTitle } from \"@next-shared/tsx-converter\";\nimport type { Component } 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 { K, locales, NS, t } from \"./i18n\";\nimport { createPortal } from \"../../cruise-canvas/utils/createPortal\";\nimport { TaskContext } from \"../TaskContext\";\nimport { ICON_FEEDBACK, ICON_LOADING } from \"../constants\";\nimport { useViewFeedbackDone } from \"../useViewFeedbackDone\";\nimport { parseTemplate } from \"../parseTemplate\";\n\ninitializeI18n(NS, locales);\n\nexport interface CreatedViewProps {\n job: Job;\n onSizeChange?: (size: \"medium\" | \"large\") => void;\n}\n\nexport function CreatedView({\n job,\n onSizeChange,\n}: CreatedViewProps): JSX.Element {\n const rootId = useMemo(() => uniqueId(), []);\n const {\n workspace,\n previewUrlTemplate,\n showJsxEditor,\n setActiveExpandedViewJobId,\n setActiveJsxEditorJob,\n manuallyUpdatedViews,\n showFeedbackOnView,\n onFeedbackOnView,\n feedbackDoneViews,\n } = 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 feedbackDone =\n useViewFeedbackDone(generatedView.viewId, showFeedbackOnView) ||\n feedbackDoneViews?.has(generatedView.viewId);\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\n useEffect(() => {\n setLoading(true);\n if (!view) {\n return;\n }\n let ignore = false;\n (async () => {\n try {\n const convertedView = await convertTsx(view, {\n rootId,\n workspace,\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 sizeLarge = useMemo(() => {\n let large = false;\n traverseComponents(view?.components ?? [], (component) => {\n if (large) {\n return;\n }\n if (component.name === \"Table\" || component.name === \"eo-table\") {\n large = true;\n } else if (\n component.name === \"Dashboard\" ||\n component.name === \"eo-dashboard\"\n ) {\n const widgets = component?.properties?.widgets;\n if (\n Array.isArray(widgets) &&\n widgets.length >= (component.properties!.groupField ? 3 : 7)\n ) {\n large = true;\n }\n }\n });\n return large;\n }, [view]);\n\n useEffect(() => {\n onSizeChange?.(sizeLarge ? \"large\" : \"medium\");\n }, [onSizeChange, sizeLarge]);\n\n const handleExpandClick = useCallback(() => {\n setActiveExpandedViewJobId(job.id);\n }, [job.id, setActiveExpandedViewJobId]);\n\n const viewTitle = useMemo(() => getViewTitle(view), [view]);\n\n return (\n <div>\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 <div className={styles.buttons}>\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 </div>\n <div data-root-id={rootId} ref={ref} />\n </div>\n );\n}\n\nfunction traverseComponents(\n components: Component[],\n callback: (component: Component) => void\n) {\n for (const component of components) {\n callback(component);\n traverseComponents(component.children ?? [], callback);\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.parse(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}.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:1;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","\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","// 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","getViewTitle","result","sizeSmall","hasForm","component","_view$components","components","convertedView","convertTsx","expanded","functions","templates","handleClose","_viewportRef$current","focus","handleKeydown","event","stopPropagation","tabIndex","onKeyDown","small","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","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","CreatedView","onSizeChange","showJsxEditor","setActiveJsxEditorJob","sizeLarge","large","traverseComponents","_component$properties","widgets","groupField","handleExpandClick","viewTitle","heading","sharedStyles","button","FEEDBACK","OPEN_PREVIEW","FULLSCREEN","callback","_component$children","worker","getRemoteTsxParserWorker","onShare","activeToolCallJobId","submittingFeedback","submittedFeedback","onSubmitFeedback","setShowFeedback","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":""}
|