@next-bricks/ai-portal 0.44.0 → 0.45.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 +39 -39
- package/dist/chunks/161.a114c103.js +3 -0
- package/dist/chunks/161.a114c103.js.LICENSE.txt +1 -0
- package/dist/chunks/161.a114c103.js.map +1 -0
- package/dist/chunks/1906.3467f870.js +3 -0
- package/dist/chunks/1906.3467f870.js.map +1 -0
- package/dist/chunks/495.ab513dc5.js +2 -0
- package/dist/chunks/495.ab513dc5.js.map +1 -0
- package/dist/chunks/7570.a411e1f2.js +2 -0
- package/dist/chunks/7570.a411e1f2.js.map +1 -0
- package/dist/chunks/{7954.a92311a2.js → 7954.73c9ac93.js} +2 -2
- package/dist/chunks/7954.73c9ac93.js.map +1 -0
- package/dist/chunks/9328.4ac010e3.js +2 -0
- package/dist/chunks/9328.4ac010e3.js.map +1 -0
- package/dist/chunks/9474.094511f1.js +2 -0
- package/dist/chunks/9474.094511f1.js.map +1 -0
- package/dist/chunks/action-buttons.e4dbe352.js +2 -0
- package/dist/chunks/action-buttons.e4dbe352.js.map +1 -0
- package/dist/chunks/call-tool.45c76c9a.js +2 -0
- package/dist/chunks/call-tool.45c76c9a.js.map +1 -0
- package/dist/chunks/{cruise-canvas.f9ae5c01.js → cruise-canvas.f84b9094.js} +2 -2
- package/dist/chunks/{cruise-canvas.f9ae5c01.js.map → cruise-canvas.f84b9094.js.map} +1 -1
- package/dist/chunks/goal-card-list.2ab94b5f.js +3 -0
- package/dist/chunks/{goal-card-list.fcce68bd.js.map → goal-card-list.2ab94b5f.js.map} +1 -1
- package/dist/chunks/main.ffe7b336.js +2 -0
- package/dist/chunks/{main.c4e180ef.js.map → main.ffe7b336.js.map} +1 -1
- package/dist/examples.json +22 -22
- package/dist/images/8834094d.png +0 -0
- package/dist/index.759b2a0a.js +2 -0
- package/dist/index.759b2a0a.js.map +1 -0
- package/dist/manifest.json +153 -147
- package/dist/types.json +573 -579
- package/dist-types/action-buttons/index.d.ts +4 -2
- package/dist-types/bootstrap.d.ts +1 -2
- package/dist-types/cruise-canvas/AIEmployeeAvatar/AIEmployeeAvatar.d.ts +5 -0
- package/dist-types/cruise-canvas/NodeJob/NodeJob.d.ts +2 -3
- package/dist-types/data-providers/call-tool.d.ts +2 -0
- package/dist-types/data-providers/call-tool.spec.d.ts +1 -0
- package/package.json +2 -2
- package/dist/chunks/1306.b74e72b7.js +0 -3
- package/dist/chunks/1306.b74e72b7.js.map +0 -1
- package/dist/chunks/3971.8fbc97d3.js +0 -2
- package/dist/chunks/3971.8fbc97d3.js.map +0 -1
- package/dist/chunks/495.27e0d477.js +0 -2
- package/dist/chunks/495.27e0d477.js.map +0 -1
- package/dist/chunks/7570.ae14a465.js +0 -2
- package/dist/chunks/7570.ae14a465.js.map +0 -1
- package/dist/chunks/7954.a92311a2.js.map +0 -1
- package/dist/chunks/9146.40d628b8.js +0 -2
- package/dist/chunks/9146.40d628b8.js.map +0 -1
- package/dist/chunks/9474.eb2019f3.js +0 -2
- package/dist/chunks/9474.eb2019f3.js.map +0 -1
- package/dist/chunks/action-buttons.bc5e9334.js +0 -2
- package/dist/chunks/action-buttons.bc5e9334.js.map +0 -1
- package/dist/chunks/entity-sdk-get.37c62d5f.js +0 -3
- package/dist/chunks/entity-sdk-get.37c62d5f.js.LICENSE.txt +0 -1
- package/dist/chunks/entity-sdk-get.37c62d5f.js.map +0 -1
- package/dist/chunks/entity-sdk-list.0b8120ce.js +0 -3
- package/dist/chunks/entity-sdk-list.0b8120ce.js.LICENSE.txt +0 -1
- package/dist/chunks/entity-sdk-list.0b8120ce.js.map +0 -1
- package/dist/chunks/goal-card-list.fcce68bd.js +0 -3
- package/dist/chunks/main.c4e180ef.js +0 -2
- package/dist/index.340c5e1d.js +0 -2
- package/dist/index.340c5e1d.js.map +0 -1
- package/dist-types/data-providers/entity-sdk-get.d.ts +0 -1
- package/dist-types/data-providers/entity-sdk-list.d.ts +0 -1
- /package/dist/chunks/{1306.b74e72b7.js.LICENSE.txt → 1906.3467f870.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{goal-card-list.fcce68bd.js.LICENSE.txt → goal-card-list.2ab94b5f.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunks/7954.73c9ac93.js","mappings":"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","sources":["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/index.ts","webpack:///./src/cruise-canvas/ToolProgressLine/ToolProgressLine.module.css?1d0e","webpack:///./src/cruise-canvas/ToolProgressLine/ToolProgressLine.tsx","webpack:///./src/shared/NodeFeedback/NodeFeedback.module.css","webpack:///./src/shared/CreatedView/CreatedView.module.css","webpack:///./src/shared/NodeFeedback/NodeFeedback.module.css?99d4","webpack:///./src/shared/NodeFeedback/i18n.ts","webpack:///./src/shared/NodeFeedback/NodeFeedback.tsx","webpack:///./src/shared/ChatBox/i18n.ts","webpack:///./src/shared/ChatBox/ChatBox.tsx","webpack:///./src/cruise-canvas/getOrderedNodes.ts","webpack:///./src/cruise-canvas/getFlatOrderedJobs.ts","webpack:///./src/shared/CodeDisplay.tsx","webpack:///./src/shared/useViewFeedbackDone.ts","webpack:///./src/shared/CreatedView/CreatedView.module.css?fa62","webpack:///./src/shared/CreatedView/i18n.ts","webpack:///./src/shared/CreatedView/CreatedView.tsx","webpack:///./src/shared/TaskContext.ts","webpack:///./src/shared/getAsyncConstructedView.ts","webpack:///./src/cruise-canvas/shared.module.css?c988","webpack:///./src/cruise-canvas/NodeReplay/NodeReplay.module.css?d0bd","webpack:///./src/cruise-canvas/NodeReplay/i18n.ts","webpack:///./src/cruise-canvas/NodeReplay/NodeReplay.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/cruise-canvas/ToolCallStatus/ToolCallStatus.module.css","webpack:///./src/shared/bricks.ts","webpack:///./src/cruise-canvas/CmdbInstanceDetail/CmdbInstanceDetail.module.css","webpack:///../../src/rehypeMermaid.ts","webpack:///../../src/utils.ts","webpack:///../../src/MarkdownComponent.tsx","webpack:///./src/cruise-canvas/EnhancedMarkdown/EnhancedMarkdown.tsx","webpack:///./src/cruise-canvas/ToolProgressLine/ToolProgressLine.module.css","webpack:///./src/cruise-canvas/CmdbInstanceDetail/CmdbInstanceDetail.module.css?7513","webpack:///./src/cruise-canvas/CmdbInstanceDetail/CmdbInstanceDetail.tsx","webpack:///./src/cruise-canvas/NodeReplay/NodeReplay.module.css","webpack:///./src/cruise-canvas/toolbar.module.css","webpack:///./src/cruise-canvas/CodeBlock/CodeBlock.module.css","webpack:///./src/shared/ExpandedView/ExpandedView.module.css?985a","webpack:///./src/shared/ExpandedView/ExpandedView.tsx","webpack:///./src/shared/ExpandedView/ExpandedView.module.css","webpack:///./src/cruise-canvas/CanvasContext.ts","webpack:///./src/cruise-canvas/CodeBlock/CodeBlock.module.css?37c1","webpack:///./src/cruise-canvas/CodeBlock/CodeBlock.tsx","webpack:///./src/cruise-canvas/toolbar.module.css?a4b4","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","webpack:///./src/shared/constants.ts","webpack:///./src/shared/parseTemplate.ts"],"sourcesContent":["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","// 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","\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","// 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","\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","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","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","import React, { use, useMemo } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nimport { toJsxRuntime, type Options } from \"hast-util-to-jsx-runtime\";\nimport { toString } from \"hast-util-to-string\";\nimport type { Element } from \"hast\";\nimport { codeToHast } from \"@next-shared/shiki\";\nimport { httpErrorToString } from \"@next-core/runtime\";\nimport { CodeBlock } from \"../cruise-canvas/CodeBlock/CodeBlock\";\n\nconst production = { Fragment, jsx, jsxs } as Options;\n\nconst THEME = \"light-plus\";\n\nexport interface CodeDisplayProps {\n language: string;\n source: string;\n disabled?: boolean;\n}\n\n/**\n * NOTE: This component uses React's experimental `use` hook to handle async rendering.\n *\n * Ensure wrapping it with <Suspense> in the parent component.\n */\nexport function CodeDisplay({ source, language }: CodeDisplayProps) {\n const renderPromise = useMemo(\n () =>\n renderCodeBlock(source, language).catch((error) => (\n <div style={{ color: \"var(--color-error)\" }}>\n {httpErrorToString(error)}\n </div>\n )),\n [language, source]\n );\n\n return use(renderPromise);\n}\n\nasync function renderCodeBlock(source: string, language: string) {\n const isMarkdown = language === \"markdown\" || language === \"md\";\n const hast = await codeToHast(source, {\n lang: language,\n theme: THEME,\n transformers: isMarkdown\n ? [\n {\n pre(node) {\n const string = toString(node);\n if (/^(?:`{3,})mermaid\\b/.test(string)) {\n const root = this.codeToHast(string, {\n lang: \"mermaid\",\n theme: THEME,\n });\n const pre = root.children.find(\n (child) => child.type === \"element\" && child.tagName === \"pre\"\n ) as Element;\n return pre;\n }\n },\n },\n ]\n : undefined,\n });\n return toJsxRuntime(hast, {\n ...production,\n components: {\n pre: CodeBlock,\n },\n });\n}\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]!./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, ParseResult } from \"@next-shared/tsx-parser\";\nimport styles from \"./CreatedView.module.css\";\nimport sharedStyles from \"../../cruise-canvas/shared.module.css\";\nimport type { Job } 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<ParseResult | null>(null);\n const canFeedback =\n !!view && !!generatedView.viewId && generatedView.from !== \"config\";\n\n useEffect(() => {\n generatedView.asyncConstructedView?.then((view) => {\n setView(view);\n });\n }, [generatedView, workspace]);\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: generatedView.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, generatedView]);\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 { 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}\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","import { getRemoteTsxParserWorker } from \"./workers/tsxParser.js\";\nimport type { GeneratedView } from \"./interfaces.js\";\n\nexport async function getAsyncConstructedView(\n generatedView: GeneratedView,\n workspace: string | undefined\n) {\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 result;\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","\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]!./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","\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 } = useContext(TaskContext);\n const toolCall = job.toolCall!;\n const toolTitle = toolCall.annotations?.title;\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\" ? toolCall.name : toolTitle || toolCall.name}\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","// 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","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 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 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","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.container--YostHfxu{background:var(--elevo-component-background);-webkit-backdrop-filter:var(--elevo-component-backdrop-filter);backdrop-filter:var(--elevo-component-backdrop-filter);border-radius:var(--elevo-border-radius);padding:16px}.container--YostHfxu:not(:first-child){margin-top:10px}ai-portal\\\\.chat-stream .container--YostHfxu{background:rgba(255,255,255,0.6);border-radius:8px;border:1px solid rgba(0,0,0,0.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:12px 20px}.loading--FzSrGTPm{position:absolute;top:calc(50% - 7px);left:calc(50% - 7px)}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": `container--YostHfxu`,\n\t\"loading\": `loading--FzSrGTPm`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { 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 { CodeBlock } from \"../CodeBlock/CodeBlock\";\nimport { CanvasContext } from \"../CanvasContext\";\n\nconst components: MarkdownComponentProps[\"components\"] = {\n pre: CodeBlock,\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","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.progress-line--CX_xuAHC{--breathing-color:rgba(205,205,217,0.7);--breathing-color-2:rgba(205,205,217,0);display:flex;flex-direction:column}.progress-line--CX_xuAHC .step--YXd66tSR{position:relative;display:flex;align-items:center;padding:10px 4px 10px 16px;color:rgba(0,0,0,0.5)}.progress-line--CX_xuAHC .step--YXd66tSR .axis--T4nVxQt5{position:absolute;top:0;bottom:0;left:14px;width:1px}.progress-line--CX_xuAHC .step--YXd66tSR .axis--T4nVxQt5 .line--BUSBjzxD{width:1px;height:100%;background:linear-gradient(172deg,rgba(205,205,217,0) 0%,#cdcdd9 46%,rgba(205,205,217,0) 100%)}.progress-line--CX_xuAHC .step--YXd66tSR .axis--T4nVxQt5 .dot--TPMEta87{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:5px;height:5px;background:rgba(205,205,217,1);border-radius:50%}.progress-line--CX_xuAHC .step--YXd66tSR .progress--alc7SspF{padding:3px;margin:0 8px 0 12px;border-radius:10px;line-height:1;background:#ffffff}.progress-line--CX_xuAHC .step--YXd66tSR .progress--alc7SspF .count--RdZcMYhZ{font-weight:400}.progress-line--CX_xuAHC .step--YXd66tSR .progress--alc7SspF .total--BKoLTm8c{opacity:0.6}.progress-line--CX_xuAHC .step--YXd66tSR .description--AyfMh1_M{flex:1;color:#999}.progress-line--CX_xuAHC .step--YXd66tSR:last-child .progress--alc7SspF .count--RdZcMYhZ{font-weight:600}.failed--Q9TADo_k .step--YXd66tSR:last-child .axis--T4nVxQt5 .line--BUSBjzxD{background:linear-gradient(172deg,rgba(242,76,37,0) 0%,rgba(242,76,37,0.3) 47%,rgba(242,76,37,0) 100%)}.failed--Q9TADo_k .step--YXd66tSR:last-child .axis--T4nVxQt5 .dot--TPMEta87{background:rgba(255,154,120,1)}.failed--Q9TADo_k .step--YXd66tSR:last-child .progress--alc7SspF{background:#ffd6d6}.failed--Q9TADo_k .step--YXd66tSR:last-child .progress--alc7SspF .count--RdZcMYhZ{color:#f44336}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"progress-line\": `progress-line--CX_xuAHC`,\n\t\"step\": `step--YXd66tSR`,\n\t\"axis\": `axis--T4nVxQt5`,\n\t\"line\": `line--BUSBjzxD`,\n\t\"dot\": `dot--TPMEta87`,\n\t\"progress\": `progress--alc7SspF`,\n\t\"count\": `count--RdZcMYhZ`,\n\t\"total\": `total--BKoLTm8c`,\n\t\"description\": `description--AyfMh1_M`,\n\t\"failed\": `failed--Q9TADo_k`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./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, `.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, `.code-block--B8VszXyv{position:relative}.copy--xhIT7aTz{position:absolute;top:8px;right:8px}.code-block--B8VszXyv:not(:hover) .copy--xhIT7aTz{display:none}.success--y_M0QrXy::part(button){color:var(--color-success)}.failed--WtJHXSP6::part(button){color:var(--color-error)}.code-block--B8VszXyv .mermaid{display:flex;justify-content:center}ai-portal\\\\.cruise-canvas[hide-mermaid] .code-block--B8VszXyv .mermaid{display:none}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"code-block\": `code-block--B8VszXyv`,\n\t\"copy\": `copy--xhIT7aTz`,\n\t\"success\": `success--y_M0QrXy`,\n\t\"failed\": `failed--WtJHXSP6`\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 { ParseResult } from \"@next-shared/tsx-parser\";\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\";\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<ParseResult | 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 generatedView?.asyncConstructedView?.then((view) => {\n setView(view);\n });\n }, [generatedView, workspace]);\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 || !generatedView) {\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: generatedView.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, generatedView]);\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","// 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","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","\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]!./CodeBlock.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]!./CodeBlock.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport classNames from \"classnames\";\nimport { copyToClipboard, WrappedButton } from \"../../shared/bricks\";\nimport styles from \"./CodeBlock.module.css\";\n\nconst COPY_BUTTON_ICON = {\n lib: \"fa\",\n prefix: \"far\",\n icon: \"copy\",\n} as const;\n\nconst COPY_BUTTON_ICON_SUCCESS = {\n lib: \"fa\",\n prefix: \"fas\",\n icon: \"check\",\n} as const;\n\nconst COPY_BUTTON_ICON_FAILED = {\n lib: \"fa\",\n prefix: \"fas\",\n icon: \"triangle-exclamation\",\n} as const;\n\nexport type CodeBlockProps = JSX.IntrinsicElements[\"pre\"] & {\n node?: unknown;\n};\n\nexport function CodeBlock({ children, node, ...props }: CodeBlockProps) {\n const ref = useRef<HTMLPreElement>(null);\n const isCodeBlock = props.className?.includes(\"shiki\");\n const [state, setState] = useState<\"idle\" | \"success\" | \"failed\">(\"idle\");\n const timerRef = useRef<ReturnType<typeof setTimeout> | undefined>();\n\n const handleCopy = useCallback(async () => {\n clearTimeout(timerRef.current);\n setState(\"idle\");\n const content = ref.current?.querySelector(\"code\")?.textContent;\n if (content) {\n try {\n await copyToClipboard(content);\n setState(\"success\");\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to copy code block content to clipboard.\", error);\n setState(\"failed\");\n }\n\n timerRef.current = setTimeout(() => {\n setState(\"idle\");\n }, 2000);\n }\n }, []);\n\n useEffect(() => {\n return () => {\n clearTimeout(timerRef.current);\n };\n }, []);\n\n return (\n <div className={styles[\"code-block\"]}>\n <pre {...props} className={props.className} ref={ref}>\n {children}\n {isCodeBlock && (\n <WrappedButton\n themeVariant=\"elevo\"\n className={classNames(styles.copy, {\n [styles.success]: state === \"success\",\n [styles.failed]: state === \"failed\",\n })}\n onClick={handleCopy}\n icon={\n state === \"success\"\n ? COPY_BUTTON_ICON_SUCCESS\n : state === \"failed\"\n ? COPY_BUTTON_ICON_FAILED\n : COPY_BUTTON_ICON\n }\n />\n )}\n </pre>\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]!./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","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 ]);\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","// 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 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","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"],"names":["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","HumanizeTimeFormat","humanizeTime","time","format","arguments","length","undefined","auto","type","Infinity","m","moment","now","add","fFull","fMedium","i18n","t","fShort","fShort24","fDefault","text","full","default","relative","diff","humanize","past","Math","min","future","max","accurate","getAccurateTime","toFixed","_text","retVal","year","isBefore","clone","isSame","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","code","lang","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","ToolProgressLine","_ref","progress","failed","data","React","className","classNames","styles","step","key","axis","line","dot","count","total","description","message","___CSS_LOADER_EXPORT___","push","module","id","NS","getFixedT","checks","getChecks","label","IS_THE_TASK_PLAN_COMPLETE","value","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","submittingFeedback","submittedFeedback","setShowFeedback","onSubmitFeedback","useContext","TaskContext","formRef","useRef","triedSubmit","setTriedSubmit","useState","handleSubmit","useCallback","e","_formRef$current","_formData$get","preventDefault","current","reportValidity","formData","FormData","plan","result","i","get","feedback","handleReset","_formRef$current2","reset","submitted","THANKS_FOR_YOUR_FEEDBACK","heading","title","FEEDBACK_NODE_TITLE","WrappedIconButton","icon","ICON_CLOSE","variant","onClick","form","validate","ref","map","check","index","horizontal","radio","required","name","YES","NO","vertical","htmlFor","PROBLEM_FEEDBACK","placeholder","PROBLEM_FEEDBACK_PLACEHOLDER","rows","submit","WrappedButton","themeVariant","RESET","shape","disabled","SUBMIT","ChatBox","state","canChat","humanInput","onTerminate","supports","terminating","setTerminating","useEffect","handleTerminate","async","showDialog","CONFIRM_TO_TERMINATE_THE_TASK_TITLE","content","WrappedChatInput","SEND_MESSAGE","autoFocus","submitDisabled","supportsTerminate","intercept","onMessageSubmit","detail","getOrderedNodes","nodes","fixedNodes","Map","childrenMap","downstreamMap","roots","rootChildren","levels","hiddenNodeIds","Set","showHiddenNodes","node","set","hidden","parent","children","_node$upstream2","up","_node$upstream","upstream","downstream","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","production","Fragment","jsxs","THEME","CodeDisplay","source","language","renderPromise","useMemo","isMarkdown","hast","theme","transformers","pre","string","toString","test","this","find","tagName","toJsxRuntime","components","CodeBlock","renderCodeBlock","catch","style","color","httpErrorToString","use","cache","useViewFeedbackDone","viewId","showFeedbackOnView","done","setDone","promise","_response$feedback","response","InstanceApi_getDetail","fields","priority","fetchViewFeedbackDone","ignore","then","CreatedView","_manuallyUpdatedViews","onSizeChange","rootId","uniqueId","workspace","previewUrlTemplate","showJsxEditor","setActiveExpandedViewJobId","setActiveJsxEditorJob","manuallyUpdatedViews","onFeedbackOnView","feedbackDoneViews","rootRef","generatedView","feedbackDone","view","setView","canFeedback","from","_generatedView$asyncC","asyncConstructedView","container","portal","createPortal","root","unstable_createRoot","supportsUseChildren","unmount","remove","loading","setLoading","_rootRef$current","convertedView","convertTsx","withContexts","brick","context","functions","templates","render","console","sizeLarge","_view$components","large","traverseComponents","component","_component$properties","widgets","properties","Array","isArray","groupField","handleExpandClick","viewTitle","getViewTitle","sharedStyles","WrappedIcon","ICON_LOADING","buttons","button","lib","FEEDBACK","ICON_FEEDBACK","OPEN_PREVIEW","window","open","getBasePath","slice","parseTemplate","FULLSCREEN","callback","_component$children","createContext","onShare","activeExpandedViewJobId","activeToolCallJobId","setActiveToolCallJobId","getAsyncConstructedView","worker","getRemoteTsxParserWorker","parse","Object","keys","NodeReplay","finished","ui","conversationId","showCases","exampleProjects","skipToResults","watchAgain","tryItOut","chat","bar","CASE_REPLAY_FINISHED","CASE_REPLAYING","WATCH_AGAIN","SKIP_TO_RESULTS","TRY_IT_OUT","OTHER_CASES","cases","item","WrappedShowCase","caseTitle","summary","url","_extends","GET_STARTED_WITH_PROJECTS_PREFIX","tag","PROJECTS","GET_STARTED_WITH_PROJECTS_SUFFIX","tips","PROJECT_TIPS","projects","instanceId","WrappedLink","project","src","projectIcon","width","height","getToolDataProgress","toolCallMessages","progressPart","_message$parts","parts","part","_part$data","ToolCallStatus","_toolCall$annotations","toolCall","toolTitle","annotations","hasToolCallResponse","_job$messages","messages","msg","role","some","readOnly","handleClick","toolState","isError","status","prefix","spinning","startTime","timing","endTime","ss","wrapBrick","WrappedDrawer","onClose","onOpen","unwrapProvider","copyToClipboard","mermaidPromise","parser","DOMParser","serializer","XMLSerializer","rehypeMermaid","promises","visit","tree","classListItem","toLowerCase","getCodeLanguage","svg","initialize","startOnLoad","themeVariables","fontSize","lineColor","primaryColor","primaryBorderColor","doLoadMermaid","_document$getElementB","document","getElementById","parseFromString","svgElement","querySelector","defs","createElementNS","innerHTML","prepend","textContent","appendChild","modifiedSvg","serializeToString","replacements","fromHtmlIsomorphic","fragment","splice","concat","Promise","all","MarkdownComponent","_shiki$theme","shiki","reactContent","setReactContent","highlighter","vFile","unified","remarkParse","remarkGfm","remarkToRehype","rehypeShikiFromHighlighter","lazy","defaultLanguage","rehypeReact","passNode","process","shikiOptions","EnhancedMarkdown","props","setHoverOnScrollableContent","CanvasContext","handleMouseMove","found","el","nativeEvent","composedPath","HTMLTableElement","HTMLPreElement","scrollWidth","clientWidth","handleMouseLeave","onMouseMove","onMouseLeave","LIST_SPLIT_THRESHOLD","SHOW_AS_TABLE_THRESHOLD","BUILTIN_FN_STRINGIFY","CmdbInstanceDetail","objectId","outputSchema","bricks","_schema","schema","JSON","modals","builtinFnStringify","convertArrayOfObjects","valueAccessor","idPrefix","needContext","_props$","getOrderedProps","modalId","normalizeIdentifier","contextId","modal","dataset","modalTitle","hideCancelButton","maskClosable","keyboard","columns","tableChildren","k","v","useChildren","items","upperFirst","slot","convertObject","dataIndex","dataSource","pagination","bordered","clickHandler","action","args","target","method","if","display","alignItems","gap","stringify","outline","cursor","events","click","_props$2","column","_ref2","field","entries","_ref3","def","isEmptyValue","contextName","useBrick","isComplexType","join","isObject","convertCmdbInstanceDetail","hasOwnProperty","identifier","replace","String","_schema$required","propKeys","orderBy","_ref4","requiredIndex","indexOf","ExpandedView","_views$find","views","viewportRef","containerRef","viewsWithTitle","setViewsWithTitle","sizeSmall","hasForm","expanded","handleClose","setTimeout","_viewportRef$current","focus","handleKeydown","event","stopPropagation","tabIndex","onKeyDown","body","small","nav","_view$title","active","ICON_EXTERNAL_LINK","onNodeResize","setActiveNodeId","hoverOnScrollableContent","setActiveFile","COPY_BUTTON_ICON","COPY_BUTTON_ICON_SUCCESS","COPY_BUTTON_ICON_FAILED","_props$className","isCodeBlock","setState","timerRef","handleCopy","_ref$current","clearTimeout","copy","success","mergeJobs","previousJobs","jobsPatch","aiEmployeeId","jobPatch","_jobs$findIndex","_jobs","previousJobIndex","findIndex","messagesPatch","originalArguments","argumentsParseFailed","argumentsParseError","_patch$toolCall","patch","getJobGeneratedView","mergeMessages","_restMessagesPatch$to","_restMessagesPatch$to2","_previousJob$toolCall","_restMessagesPatch$st","previousJob","restMessagesPatch","pick","_previousJob$messages","getJobStaticDataView","RESPONSE","getJobStaticDataResponse","isMatch","merged","previousRole","lastMessage","mergeMessageParts","previousType","previousDataType","_part$data2","_part$data3","isStaticData","rootReducer","reducers","conversation","payload","tasksPatch","task","_taskPatch$aiEmployee","taskPatch","previousTaskIndex","previousTask","lastError","_task$jobs","newJobs","fromEntries","MINIMAL_DELAY","useConversationDetail","initialRequest","replay","replayDelay","dispatch","useReducer","humanInputRef","replayListRef","replayRef","replayDelayRef","replayResolveRef","previousTime","isInitial","delay","resolve","ctrl","requesting","makeRequest","AbortController","sseRequest","createSSEStream","signal","headers","stream","handleHttpError","_ctrl","abort","DONE_STATES","GENERAL_DONE_STATES","NON_WORKING_STATES","ICON_CANVAS","ICON_CHAT","template","_match","trim"],"sourceRoot":""}
|