@next-bricks/ai-portal 0.46.3 → 0.47.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 +26 -22
- package/dist/chunks/114.af61e48a.js +2 -0
- package/dist/chunks/{114.86e10cdd.js.map → 114.af61e48a.js.map} +1 -1
- package/dist/chunks/{161.a114c103.js → 161.6c50f07c.js} +3 -3
- package/dist/chunks/{161.a114c103.js.map → 161.6c50f07c.js.map} +1 -1
- package/dist/chunks/1692.fc5b8118.js +2 -0
- package/dist/chunks/1692.fc5b8118.js.map +1 -0
- package/dist/chunks/1889.b7766f77.js +2 -0
- package/dist/chunks/1889.b7766f77.js.map +1 -0
- package/dist/chunks/3151.d1fdecfb.js +3 -0
- package/dist/chunks/3151.d1fdecfb.js.map +1 -0
- package/dist/chunks/{3171.f486ac82.js → 3171.a4a34e43.js} +2 -2
- package/dist/chunks/{3171.f486ac82.js.map → 3171.a4a34e43.js.map} +1 -1
- package/dist/chunks/{3744.327905d1.js → 3744.8d040aaa.js} +2 -2
- package/dist/chunks/{3744.327905d1.js.map → 3744.8d040aaa.js.map} +1 -1
- package/dist/chunks/{4228.fb9278c3.js → 4228.ea602510.js} +2 -2
- package/dist/chunks/{4228.fb9278c3.js.map → 4228.ea602510.js.map} +1 -1
- package/dist/chunks/4306.9e8251b7.js +2 -0
- package/dist/chunks/4306.9e8251b7.js.map +1 -0
- package/dist/chunks/{7146.c0ae3b12.js → 4765.f5f33140.js} +2 -2
- package/dist/chunks/{7146.c0ae3b12.js.map → 4765.f5f33140.js.map} +1 -1
- package/dist/chunks/{4837.e8c87fc9.js → 4837.d70e4d5f.js} +2 -2
- package/dist/chunks/{9599.ffd509c6.js.map → 4837.d70e4d5f.js.map} +1 -1
- package/dist/chunks/495.8b4a1756.js +2 -0
- package/dist/chunks/495.8b4a1756.js.map +1 -0
- package/dist/chunks/{5552.57a9edba.js → 5552.39ed2457.js} +2 -2
- package/dist/chunks/{5552.57a9edba.js.map → 5552.39ed2457.js.map} +1 -1
- package/dist/chunks/{6530.dd7ab536.js → 6530.3c295a95.js} +2 -2
- package/dist/chunks/6530.3c295a95.js.map +1 -0
- package/dist/chunks/{4765.ae81ae59.js → 7146.6cc7fa79.js} +2 -2
- package/dist/chunks/{4765.ae81ae59.js.map → 7146.6cc7fa79.js.map} +1 -1
- package/dist/chunks/7431.9dd045ca.js +3 -0
- package/dist/chunks/{7431.23127b05.js.map → 7431.9dd045ca.js.map} +1 -1
- package/dist/chunks/7570.62513e32.js +2 -0
- package/dist/chunks/{7570.708bdafd.js.map → 7570.62513e32.js.map} +1 -1
- package/dist/chunks/7733.dbb66cbc.js +2 -0
- package/dist/chunks/{7733.0615ed85.js.map → 7733.dbb66cbc.js.map} +1 -1
- package/dist/chunks/{8882.30a26232.js → 8882.1dd288fd.js} +3 -3
- package/dist/chunks/{8882.30a26232.js.map → 8882.1dd288fd.js.map} +1 -1
- package/dist/chunks/9328.b23938c7.js +2 -0
- package/dist/chunks/9328.b23938c7.js.map +1 -0
- package/dist/chunks/948.85b663ec.js +3 -0
- package/dist/chunks/948.85b663ec.js.map +1 -0
- package/dist/chunks/{9599.ffd509c6.js → 9599.8bf50b3b.js} +2 -2
- package/dist/chunks/{4837.e8c87fc9.js.map → 9599.8bf50b3b.js.map} +1 -1
- package/dist/chunks/action-buttons.52180d20.js +2 -0
- package/dist/chunks/{action-buttons.e4dbe352.js.map → action-buttons.52180d20.js.map} +1 -1
- package/dist/chunks/{activity-timeline.5ea5526f.js → activity-timeline.0c683db9.js} +2 -2
- package/dist/chunks/{activity-timeline.5ea5526f.js.map → activity-timeline.0c683db9.js.map} +1 -1
- package/dist/chunks/{ai-agents.8bc0db39.js → ai-agents.4b5985d1.js} +3 -3
- package/dist/chunks/{ai-agents.8bc0db39.js.map → ai-agents.4b5985d1.js.map} +1 -1
- package/dist/chunks/ai-employees.10893372.js +3 -0
- package/dist/chunks/{ai-employees.b4cfaf9c.js.map → ai-employees.10893372.js.map} +1 -1
- package/dist/chunks/{call-tool.45c76c9a.js → call-tool.1be50464.js} +2 -2
- package/dist/chunks/{call-tool.45c76c9a.js.map → call-tool.1be50464.js.map} +1 -1
- package/dist/chunks/chat-box.57a9d3ec.js +2 -0
- package/dist/chunks/{chat-box.0e8ed3b2.js.map → chat-box.57a9d3ec.js.map} +1 -1
- package/dist/chunks/chat-input.6e8da9e5.js +3 -0
- package/dist/chunks/{chat-input.2bf76ff7.js.map → chat-input.6e8da9e5.js.map} +1 -1
- package/dist/chunks/chat-stream.596a9cf9.js +2 -0
- package/dist/chunks/{chat-stream.40fc8941.js.map → chat-stream.596a9cf9.js.map} +1 -1
- package/dist/chunks/cruise-canvas.5cd0f774.js +2 -0
- package/dist/chunks/{cruise-canvas.f84b9094.js.map → cruise-canvas.5cd0f774.js.map} +1 -1
- package/dist/chunks/{dropdown-select.3c0cd96d.js → dropdown-select.3b1915db.js} +2 -2
- package/dist/chunks/{dropdown-select.3c0cd96d.js.map → dropdown-select.3b1915db.js.map} +1 -1
- package/dist/chunks/{elevo-logo.dc137a3c.js → elevo-logo.93d0f4ab.js} +2 -2
- package/dist/chunks/{elevo-logo.dc137a3c.js.map → elevo-logo.93d0f4ab.js.map} +1 -1
- package/dist/chunks/{elevo-sidebar.6f74b954.js → elevo-sidebar.877ac231.js} +3 -3
- package/dist/chunks/{elevo-sidebar.6f74b954.js.map → elevo-sidebar.877ac231.js.map} +1 -1
- package/dist/chunks/goal-card-list.7b4a6342.js +3 -0
- package/dist/chunks/{goal-card-list.a9057f02.js.map → goal-card-list.7b4a6342.js.map} +1 -1
- package/dist/chunks/{home-container.211ba989.js → home-container.1866b2fa.js} +2 -2
- package/dist/chunks/{home-container.211ba989.js.map → home-container.1866b2fa.js.map} +1 -1
- package/dist/chunks/{icon-button.1f657055.js → icon-button.1ac30b57.js} +2 -2
- package/dist/chunks/{icon-button.1f657055.js.map → icon-button.1ac30b57.js.map} +1 -1
- package/dist/chunks/{load-request-store.eb92f754.js → load-request-store.0229141e.js} +2 -2
- package/dist/chunks/{load-request-store.eb92f754.js.map → load-request-store.0229141e.js.map} +1 -1
- package/dist/chunks/main.83b93022.js +2 -0
- package/dist/chunks/{main.4b1fba76.js.map → main.83b93022.js.map} +1 -1
- package/dist/chunks/{mcp-tools.457ff64a.js → mcp-tools.028e5150.js} +2 -2
- package/dist/chunks/{mcp-tools.457ff64a.js.map → mcp-tools.028e5150.js.map} +1 -1
- package/dist/chunks/{page-container.099db5b9.js → page-container.5da7bbb4.js} +2 -2
- package/dist/chunks/{page-container.099db5b9.js.map → page-container.5da7bbb4.js.map} +1 -1
- package/dist/chunks/{preview-container.bbde74aa.js → preview-container.6aa7058b.js} +2 -2
- package/dist/chunks/{preview-container.bbde74aa.js.map → preview-container.6aa7058b.js.map} +1 -1
- package/dist/chunks/project-conversations.5326be22.js +3 -0
- package/dist/chunks/{project-conversations.e525349e.js.map → project-conversations.5326be22.js.map} +1 -1
- package/dist/chunks/{project-knowledges.e5845df3.js → project-knowledges.7c8e9b0c.js} +3 -3
- package/dist/chunks/{project-knowledges.e5845df3.js.map → project-knowledges.7c8e9b0c.js.map} +1 -1
- package/dist/chunks/show-case.47b40ba3.js +2 -0
- package/dist/chunks/{show-case.e7d8f1a7.js.map → show-case.47b40ba3.js.map} +1 -1
- package/dist/chunks/show-cases.5dcf60c0.js +2 -0
- package/dist/chunks/{show-cases.b26fafd9.js.map → show-cases.5dcf60c0.js.map} +1 -1
- package/dist/chunks/stat-with-mini-chart.c9fde80c.js +2 -0
- package/dist/chunks/{stat-with-mini-chart.0c308dd8.js.map → stat-with-mini-chart.c9fde80c.js.map} +1 -1
- package/dist/chunks/tab-list.2cbcb36a.js +3 -0
- package/dist/chunks/{tab-list.acfe1ff4.js.map → tab-list.2cbcb36a.js.map} +1 -1
- package/dist/examples.json +9 -9
- package/dist/index.5606be01.js +2 -0
- package/dist/index.5606be01.js.map +1 -0
- package/dist/manifest.json +188 -188
- package/dist/types.json +5 -5
- package/dist-types/shared/MarkdownPre.d.ts +5 -0
- package/dist-types/shared/bricks.d.ts +2 -0
- package/package.json +3 -3
- package/dist/chunks/103.8b767f50.js +0 -3
- package/dist/chunks/103.8b767f50.js.map +0 -1
- package/dist/chunks/114.86e10cdd.js +0 -2
- package/dist/chunks/1889.218ea7ea.js +0 -2
- package/dist/chunks/1889.218ea7ea.js.map +0 -1
- package/dist/chunks/4306.bae21d5d.js +0 -2
- package/dist/chunks/4306.bae21d5d.js.map +0 -1
- package/dist/chunks/495.ab513dc5.js +0 -2
- package/dist/chunks/495.ab513dc5.js.map +0 -1
- package/dist/chunks/6530.dd7ab536.js.map +0 -1
- package/dist/chunks/7431.23127b05.js +0 -3
- package/dist/chunks/7570.708bdafd.js +0 -2
- package/dist/chunks/7733.0615ed85.js +0 -2
- package/dist/chunks/7954.c1753f33.js +0 -2
- package/dist/chunks/7954.c1753f33.js.map +0 -1
- package/dist/chunks/9140.8e69fcb4.js +0 -3
- package/dist/chunks/9140.8e69fcb4.js.map +0 -1
- package/dist/chunks/9328.c93d9ac1.js +0 -2
- package/dist/chunks/9328.c93d9ac1.js.map +0 -1
- package/dist/chunks/action-buttons.e4dbe352.js +0 -2
- package/dist/chunks/ai-employees.b4cfaf9c.js +0 -3
- package/dist/chunks/chat-box.0e8ed3b2.js +0 -2
- package/dist/chunks/chat-input.2bf76ff7.js +0 -3
- package/dist/chunks/chat-stream.40fc8941.js +0 -2
- package/dist/chunks/cruise-canvas.f84b9094.js +0 -2
- package/dist/chunks/goal-card-list.a9057f02.js +0 -3
- package/dist/chunks/main.4b1fba76.js +0 -2
- package/dist/chunks/project-conversations.e525349e.js +0 -3
- package/dist/chunks/show-case.e7d8f1a7.js +0 -2
- package/dist/chunks/show-cases.b26fafd9.js +0 -2
- package/dist/chunks/stat-with-mini-chart.0c308dd8.js +0 -2
- package/dist/chunks/tab-list.acfe1ff4.js +0 -3
- package/dist/index.56b83bc9.js +0 -2
- package/dist/index.56b83bc9.js.map +0 -1
- package/dist-types/cruise-canvas/CodeBlock/CodeBlock.d.ts +0 -5
- package/dist-types/shared/CodeDisplay.d.ts +0 -12
- /package/dist/chunks/{161.a114c103.js.LICENSE.txt → 161.6c50f07c.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{103.8b767f50.js.LICENSE.txt → 3151.d1fdecfb.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{7431.23127b05.js.LICENSE.txt → 7431.9dd045ca.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{8882.30a26232.js.LICENSE.txt → 8882.1dd288fd.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{9140.8e69fcb4.js.LICENSE.txt → 948.85b663ec.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{ai-agents.8bc0db39.js.LICENSE.txt → ai-agents.4b5985d1.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{ai-employees.b4cfaf9c.js.LICENSE.txt → ai-employees.10893372.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{chat-input.2bf76ff7.js.LICENSE.txt → chat-input.6e8da9e5.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{elevo-sidebar.6f74b954.js.LICENSE.txt → elevo-sidebar.877ac231.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{goal-card-list.a9057f02.js.LICENSE.txt → goal-card-list.7b4a6342.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{project-conversations.e525349e.js.LICENSE.txt → project-conversations.5326be22.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{project-knowledges.e5845df3.js.LICENSE.txt → project-knowledges.7c8e9b0c.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{tab-list.acfe1ff4.js.LICENSE.txt → tab-list.2cbcb36a.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunks/1692.fc5b8118.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/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?1d0e","webpack:///./src/cruise-canvas/ToolProgressLine/ToolProgressLine.tsx","webpack:///./src/shared/MarkdownPre.module.css?da10","webpack:///./src/shared/MarkdownPre.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/useViewFeedbackDone.ts","webpack:///./src/shared/MarkdownPre.module.css","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/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/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/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","import { visit } from \"unist-util-visit\";\nimport { toString } from \"hast-util-to-string\";\nimport type { Element } from \"hast\";\nimport type Mermaid from \"mermaid\";\nimport { fromHtmlIsomorphic } from \"hast-util-from-html-isomorphic\";\nimport { getCodeLanguage } from \"./utils.js\";\n\nlet mermaidPromise: Promise<typeof Mermaid> | undefined;\n\nfunction loadMermaid() {\n if (mermaidPromise) {\n return mermaidPromise;\n }\n mermaidPromise = doLoadMermaid();\n return mermaidPromise;\n}\n\nasync function doLoadMermaid() {\n const mermaid = (await import(\"mermaid\")).default;\n mermaid.initialize({\n startOnLoad: false,\n theme: \"base\",\n themeVariables: {\n fontSize: \"14px\",\n lineColor: \"#979797\",\n primaryColor: \"#DCD2F3\",\n primaryBorderColor: \"#0000001A\",\n },\n });\n return mermaid;\n}\n\nlet count = 0;\n\nconst parser = new DOMParser();\nconst serializer = new XMLSerializer();\n\n// Reference https://github.com/remcohaszing/rehype-mermaid\nexport function rehypeMermaid() {\n return async (tree: Element) => {\n const promises: Promise<void>[] = [];\n\n visit(tree, \"element\", (node, index, parent) => {\n if (\n !parent ||\n parent.type !== \"element\" ||\n parent.tagName !== \"pre\" ||\n node.tagName !== \"code\"\n ) {\n return;\n }\n\n const lang = getCodeLanguage(node);\n\n if (lang !== \"mermaid\") {\n return;\n }\n\n promises.push(\n (async () => {\n const id = `mermaid-${count++}`;\n let svg: string;\n try {\n const mermaid = await loadMermaid();\n const result = await mermaid.render(id, toString(node));\n svg = result.svg;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Error rendering mermaid diagram:\", error);\n document.getElementById(id)?.remove();\n return;\n }\n const root = parser.parseFromString(svg, \"text/html\");\n const svgElement = root.querySelector(\"svg\") as SVGSVGElement;\n\n const defs = root.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"defs\"\n );\n defs.innerHTML = `<linearGradient id=\"linear-gradient-${id}\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">\n <stop offset=\"0%\" stop-color=\"#F0EBFA\" />\n <stop offset=\"75%\" stop-color=\"#DED4F4\" />\n <stop offset=\"100%\" stop-color=\"#C5C7FA\" />\n</linearGradient>`;\n svgElement.prepend(defs);\n\n const style = root.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"style\"\n );\n style.textContent = `\n#${id} .node rect,\n#${id} .node circle,\n#${id} .node ellipse,\n#${id} .node polygon,\n#${id} .node path {\n fill: url(#linear-gradient-${id});\n}\n#${id} .node rect {\n rx: 4;\n ry: 4;\n}\n#${id} .labelBkg {\n background-color: #f5f8ff;\n}\n#${id} .edgeLabel,\n#${id} .edgeLabel p {\n background-color: transparent;\n}\n#${id} .edgeLabel {\n color: #8c8c8c;\n font-size: 12px;\n}\n`;\n svgElement.appendChild(style);\n\n const modifiedSvg = serializer.serializeToString(svgElement);\n\n const replacements = fromHtmlIsomorphic(modifiedSvg, {\n fragment: true,\n }).children as Element[];\n parent.children.splice(index!, 1, ...replacements);\n parent.properties.className = (\n (parent.properties.className as string[]) || []\n ).concat(\"mermaid\");\n })()\n );\n });\n\n await Promise.all(promises);\n };\n}\n","import type { Element } from \"hast\";\n\nexport function getCodeLanguage(node: Element) {\n const className = (node.properties.className as string[]) || [];\n\n for (const classListItem of className) {\n if (classListItem.slice(0, 9) === \"language-\") {\n return classListItem.slice(9).toLowerCase();\n }\n }\n\n return null;\n}\n","import { useEffect, useState } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nimport { unified } from \"unified\";\nimport remarkParse from \"remark-parse\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkToRehype from \"remark-rehype\";\nimport rehypeReact, { Options as RehypeReactOptions } from \"rehype-react\";\nimport type { Components } from \"hast-util-to-jsx-runtime\";\nimport rehypeShikiFromHighlighter from \"@shikijs/rehype/core\";\nimport { getSingletonHighlighter } from \"@next-shared/shiki\";\nimport { rehypeMermaid } from \"./rehypeMermaid.js\";\n\nconst production = { Fragment, jsx, jsxs };\n\nexport interface MarkdownComponentProps {\n content?: string;\n components?: Partial<Components>;\n shiki?: {\n /** @default \"dark-plus\" */\n theme?: \"light-plus\" | \"dark-plus\";\n };\n}\n\n// Reference https://github.com/remarkjs/react-remark/blob/39553e5f5c9e9b903bebf261788ff45130668de0/src/index.ts\nexport function MarkdownComponent({\n content,\n components,\n shiki,\n}: MarkdownComponentProps): JSX.Element | null {\n const [reactContent, setReactContent] = useState<JSX.Element | null>(null);\n const theme = shiki?.theme ?? \"dark-plus\";\n\n useEffect(() => {\n let ignore = false;\n (async () => {\n try {\n const highlighter = await getSingletonHighlighter({\n themes: [theme],\n });\n if (ignore) {\n return;\n }\n const vFile = await unified()\n .use(remarkParse)\n .use(remarkGfm)\n .use(remarkToRehype)\n .use(rehypeMermaid)\n .use(rehypeShikiFromHighlighter, highlighter as any, {\n theme,\n lazy: true,\n defaultLanguage: \"text\",\n })\n .use(rehypeReact, {\n ...production,\n passNode: true,\n components,\n } as RehypeReactOptions)\n .process(content);\n if (!ignore) {\n setReactContent(vFile.result);\n }\n } catch (error) {\n if (!ignore) {\n // eslint-disable-next-line no-console\n console.error(\"Convert markdown failed:\", error);\n setReactContent(null);\n }\n }\n })();\n return () => {\n ignore = true;\n };\n }, [components, content, theme]);\n\n return reactContent;\n}\n","import React, { useCallback, useContext, useRef } from \"react\";\nimport {\n MarkdownComponent,\n type MarkdownComponentProps,\n} from \"@next-shared/markdown\";\nimport { CanvasContext } from \"../CanvasContext\";\nimport { MarkdownPre } from \"../../shared/MarkdownPre\";\n\nconst components: MarkdownComponentProps[\"components\"] = {\n pre: MarkdownPre,\n};\n\nconst shikiOptions: MarkdownComponentProps[\"shiki\"] = {\n theme: \"light-plus\",\n};\n\nexport interface EnhancedMarkdownProps extends MarkdownComponentProps {\n className?: string;\n}\n\nexport function EnhancedMarkdown({\n className,\n ...props\n}: EnhancedMarkdownProps) {\n const ref = useRef<HTMLDivElement>(null);\n const { setHoverOnScrollableContent } = useContext(CanvasContext);\n\n const handleMouseMove = useCallback(\n (e: React.MouseEvent) => {\n let found = false;\n for (const el of e.nativeEvent.composedPath()) {\n if (el === ref.current) {\n break;\n }\n if (\n (el instanceof HTMLTableElement || el instanceof HTMLPreElement) &&\n el.scrollWidth > el.clientWidth\n ) {\n found = true;\n break;\n }\n }\n setHoverOnScrollableContent(found);\n },\n [setHoverOnScrollableContent]\n );\n\n const handleMouseLeave = useCallback(() => {\n setHoverOnScrollableContent(false);\n }, [setHoverOnScrollableContent]);\n\n return (\n <div\n className={className}\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n >\n <MarkdownComponent\n {...props}\n components={components}\n shiki={shikiOptions}\n />\n </div>\n );\n}\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./ToolProgressLine.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./ToolProgressLine.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport styles from \"./ToolProgressLine.module.css\";\nimport { DataPart } from \"../../shared/interfaces\";\n\nexport interface ToolProgressLineProps {\n progress: DataPart;\n /**\n * 暂定失败肯定是最后一个\n */\n failed?: boolean;\n}\n\nexport function ToolProgressLine({\n progress,\n failed,\n}: ToolProgressLineProps): JSX.Element {\n const data = progress.data;\n\n return (\n <div\n className={classNames(styles[\"progress-line\"], {\n [styles[\"failed\"]]: failed,\n })}\n >\n <div className={classNames(styles.step)} key={data.progress}>\n <div className={styles.axis}>\n <div className={styles.line} />\n <div className={styles.dot} />\n </div>\n <div className={styles.progress}>\n <span className={styles.count}>{data.progress}</span>\n <span>/</span>\n <span className={styles.total}>{data.total}</span>\n </div>\n <div className={styles.description}>{data.message}</div>\n </div>\n </div>\n );\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./MarkdownPre.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./MarkdownPre.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport {\n CodeWrapper,\n type CodeWrapperProps,\n} from \"@next-bricks/presentational/code-wrapper\";\nimport styles from \"./MarkdownPre.module.css\";\n\nconst WrappedCodeWrapper = wrapBrick<CodeWrapper, CodeWrapperProps>(\n \"presentational.code-wrapper\"\n);\n\nexport type MarkdownComponentProps = JSX.IntrinsicElements[\"pre\"] & {\n node?: unknown;\n};\n\nexport function MarkdownPre({ node, ...props }: MarkdownComponentProps) {\n return (\n <WrappedCodeWrapper\n className={styles[\"code-wrapper\"]}\n preProps={props}\n showCopyButton={!!props.className?.includes(\"shiki\")}\n themeVariant=\"elevo\"\n />\n );\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.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 { InstanceApi_getDetail } from \"@next-api-sdk/cmdb-sdk\";\nimport { useEffect, useState } from \"react\";\n\nconst cache = new Map<string, Promise<boolean>>();\n\nexport function useViewFeedbackDone(\n viewId: string | undefined,\n showFeedbackOnView?: boolean\n) {\n const [done, setDone] = useState(true);\n\n useEffect(() => {\n if (!viewId || !showFeedbackOnView) {\n setDone(true);\n return;\n }\n let promise = cache.get(viewId);\n if (promise === undefined) {\n promise = fetchViewFeedbackDone(viewId);\n cache.set(viewId, promise);\n }\n let ignore = false;\n promise.then((value) => {\n if (!ignore) {\n setDone(value);\n }\n });\n return () => {\n ignore = true;\n };\n }, [viewId, showFeedbackOnView]);\n\n return done;\n}\n\nasync function fetchViewFeedbackDone(viewId: string): Promise<boolean> {\n const response = await InstanceApi_getDetail(\n \"LLM_WEB_VIEW_INFO@EASYOPS\",\n viewId,\n {\n fields: \"feedback.instanceId\",\n },\n {\n priority: \"low\",\n }\n );\n return !!response?.feedback?.length;\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.code-wrapper--jieEbxla::part(pre){border:1px solid #ccd1de}.code-wrapper--jieEbxla::part(mermaid){border:none;background:none}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"code-wrapper\": `code-wrapper--jieEbxla`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./CreatedView.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./CreatedView.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n FULLSCREEN = \"FULLSCREEN\",\n FEEDBACK = \"FEEDBACK\",\n OPEN_PREVIEW = \"OPEN_PREVIEW\",\n}\n\nconst en: Locale = {\n FULLSCREEN: \"Fullscreen\",\n FEEDBACK: \"Feedback\",\n OPEN_PREVIEW: \"Open preview\",\n};\n\nconst zh: Locale = {\n FULLSCREEN: \"全屏\",\n FEEDBACK: \"反馈\",\n OPEN_PREVIEW: \"打开预览\",\n};\n\nexport const NS = \"bricks/ai-portal/CreatedView\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","// istanbul ignore file: experimental\nimport React, {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { getBasePath, unstable_createRoot } from \"@next-core/runtime\";\nimport classNames from \"classnames\";\nimport { uniqueId } from \"lodash\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { convertTsx, getViewTitle } from \"@next-shared/tsx-converter\";\nimport type { Component } from \"@next-shared/tsx-parser\";\nimport styles from \"./CreatedView.module.css\";\nimport sharedStyles from \"../../cruise-canvas/shared.module.css\";\nimport type { Job, ParsedView } from \"../../shared/interfaces\";\nimport { WrappedIcon } from \"../../shared/bricks\";\nimport { K, locales, NS, t } from \"./i18n\";\nimport { createPortal } from \"../../cruise-canvas/utils/createPortal\";\nimport { TaskContext } from \"../TaskContext\";\nimport { ICON_FEEDBACK, ICON_LOADING } from \"../constants\";\nimport { useViewFeedbackDone } from \"../useViewFeedbackDone\";\nimport { parseTemplate } from \"../parseTemplate\";\n\ninitializeI18n(NS, locales);\n\nexport interface CreatedViewProps {\n job: Job;\n onSizeChange?: (size: \"medium\" | \"large\") => void;\n}\n\nexport function CreatedView({\n job,\n onSizeChange,\n}: CreatedViewProps): JSX.Element {\n const rootId = useMemo(() => uniqueId(), []);\n const {\n workspace,\n previewUrlTemplate,\n showJsxEditor,\n setActiveExpandedViewJobId,\n setActiveJsxEditorJob,\n manuallyUpdatedViews,\n showFeedbackOnView,\n onFeedbackOnView,\n feedbackDoneViews,\n } = useContext(TaskContext);\n const ref = useRef<HTMLDivElement>(null);\n const rootRef = useRef<Awaited<\n ReturnType<typeof unstable_createRoot>\n > | null>(null);\n const generatedView = manuallyUpdatedViews?.get(job.id) ?? job.generatedView!;\n const feedbackDone =\n useViewFeedbackDone(generatedView.viewId, showFeedbackOnView) ||\n feedbackDoneViews?.has(generatedView.viewId);\n const [view, setView] = useState<ParsedView | null>(null);\n const canFeedback =\n !!view && !!generatedView.viewId && generatedView.from !== \"config\";\n\n useEffect(() => {\n setView(null);\n let ignore = false;\n generatedView.asyncConstructedView?.then((view) => {\n if (!ignore) {\n setView(view);\n }\n });\n return () => {\n ignore = true;\n };\n }, [generatedView]);\n\n useEffect(() => {\n const container = ref.current;\n if (!container) {\n return;\n }\n const portal = createPortal(rootId);\n const root = unstable_createRoot(container, {\n portal,\n supportsUseChildren: true,\n } as any);\n rootRef.current = root;\n\n return () => {\n root.unmount();\n portal.remove();\n rootRef.current = null;\n };\n }, [rootId]);\n\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n setLoading(true);\n if (!view) {\n return;\n }\n let ignore = false;\n (async () => {\n try {\n const convertedView = await convertTsx(view, {\n rootId,\n workspace,\n withContexts: view.withContexts,\n });\n if (ignore) {\n return;\n }\n const { brick, context, functions, templates } = convertedView;\n await rootRef.current?.render(brick, { context, functions, templates });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to render view:\", error);\n }\n if (!ignore) {\n setLoading(false);\n }\n })();\n\n return () => {\n ignore = true;\n };\n }, [rootId, workspace, view]);\n\n const sizeLarge = useMemo(() => {\n let large = false;\n traverseComponents(view?.components ?? [], (component) => {\n if (large) {\n return;\n }\n if (component.name === \"Table\" || component.name === \"eo-table\") {\n large = true;\n } else if (\n component.name === \"Dashboard\" ||\n component.name === \"eo-dashboard\"\n ) {\n const widgets = component?.properties?.widgets;\n if (\n Array.isArray(widgets) &&\n widgets.length >= (component.properties!.groupField ? 3 : 7)\n ) {\n large = true;\n }\n }\n });\n return large;\n }, [view]);\n\n useEffect(() => {\n onSizeChange?.(sizeLarge ? \"large\" : \"medium\");\n }, [onSizeChange, sizeLarge]);\n\n const handleExpandClick = useCallback(() => {\n setActiveExpandedViewJobId(job.id);\n }, [job.id, setActiveExpandedViewJobId]);\n\n const viewTitle = useMemo(() => getViewTitle(view), [view]);\n\n return (\n <div>\n <div className={styles.heading}>\n <div\n className={classNames(styles.title, {\n [sharedStyles[\"shine-text\"]]: view && loading,\n })}\n >\n {view ? viewTitle : <WrappedIcon {...ICON_LOADING} />}\n </div>\n <div className={styles.buttons}>\n {showJsxEditor && (\n <button\n className={styles.button}\n onClick={() => {\n setActiveJsxEditorJob?.(job);\n }}\n >\n <WrappedIcon lib=\"antd\" icon=\"bug\" />\n </button>\n )}\n {showFeedbackOnView && !feedbackDone && canFeedback && (\n <button\n className={`${styles.button} ${styles[\"button-lucide\"]}`}\n title={t(K.FEEDBACK)}\n onClick={() => onFeedbackOnView?.(generatedView.viewId)}\n >\n <WrappedIcon {...ICON_FEEDBACK} />\n </button>\n )}\n {!!(\n generatedView.viewId &&\n !generatedView.withContexts &&\n previewUrlTemplate\n ) && (\n <button\n className={`${styles.button} ${styles[\"button-lucide\"]}`}\n title={t(K.OPEN_PREVIEW)}\n onClick={() => {\n window.open(\n `${getBasePath().slice(0, -1)}${parseTemplate(\n previewUrlTemplate,\n {\n viewId: generatedView.viewId,\n }\n )}`,\n \"_blank\"\n );\n }}\n >\n <WrappedIcon lib=\"lucide\" icon=\"external-link\" />\n </button>\n )}\n <button\n className={styles.button}\n title={t(K.FULLSCREEN)}\n onClick={handleExpandClick}\n >\n <WrappedIcon lib=\"easyops\" icon=\"expand\" />\n </button>\n </div>\n </div>\n <div data-root-id={rootId} ref={ref} />\n </div>\n );\n}\n\nfunction traverseComponents(\n components: Component[],\n callback: (component: Component) => void\n) {\n for (const component of components) {\n callback(component);\n traverseComponents(component.children ?? [], callback);\n }\n}\n","import { 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, ParsedView } from \"./interfaces.js\";\n\nexport async function getAsyncConstructedView(\n generatedView: GeneratedView,\n workspace: string | undefined\n): Promise<ParsedView | null> {\n try {\n const worker = await getRemoteTsxParserWorker();\n const result = await worker.parse(generatedView.code, {\n workspace,\n withContexts: generatedView.withContexts\n ? Object.keys(generatedView.withContexts)\n : undefined,\n });\n return {\n ...result,\n viewId: generatedView.viewId,\n withContexts: generatedView.withContexts,\n };\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to parse generated view:\", error);\n return null;\n }\n}\n","\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 {\n CodeBlock,\n CodeBlockProps,\n} from \"@next-bricks/presentational/code-block\";\nimport type { IconButton, IconButtonProps } from \"../icon-button\";\nimport type {\n ChatInput,\n ChatInputEvents,\n ChatInputMapEvents,\n ChatInputProps,\n} from \"../chat-input\";\nimport type { ShowCase, ShowCaseProps } from \"../show-case\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport const WrappedButton = wrapBrick<Button, ButtonProps>(\"eo-button\");\n\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nexport const WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\n\nexport const WrappedPopover = wrapBrick<Popover, PopoverProps>(\"eo-popover\");\n\nexport const WrappedDrawer = wrapBrick<\n Drawer,\n DrawerProps & { keyboard?: boolean },\n DrawerEvents,\n DrawerMapEvents\n>(\"eo-drawer\", {\n onClose: \"close\",\n onOpen: \"open\",\n});\n\nexport const WrappedIconButton = wrapBrick<IconButton, IconButtonProps>(\n \"ai-portal.icon-button\"\n);\n\nexport const WrappedChatInput = wrapBrick<\n ChatInput,\n ChatInputProps,\n ChatInputEvents,\n ChatInputMapEvents\n>(\"ai-portal.chat-input\", {\n onMessageSubmit: \"message.submit\",\n onTerminate: \"terminate\",\n});\n\nexport const WrappedShowCase = wrapBrick<ShowCase, ShowCaseProps>(\n \"ai-portal.show-case\"\n);\n\nexport const WrappedCodeBlock = wrapBrick<CodeBlock, CodeBlockProps>(\n \"eo-code-block\"\n);\n\nexport const showDialog =\n unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\n\nexport const copyToClipboard = unwrapProvider<typeof _copyToClipboard>(\n \"basic.copy-to-clipboard\"\n);\n\nexport const AsyncWrappedTable = React.lazy(async () => ({\n default: await asyncWrapBrick<EoNextTable, NextTableProps>(\"eo-next-table\"),\n}));\n","// 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","// 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","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./ExpandedView.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./ExpandedView.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { getBasePath, unstable_createRoot } from \"@next-core/runtime\";\nimport { uniqueId } from \"lodash\";\nimport { convertTsx, getViewTitle } from \"@next-shared/tsx-converter\";\nimport type { GraphGeneratedView } from \"../../cruise-canvas/interfaces\";\nimport styles from \"./ExpandedView.module.css\";\nimport { WrappedIcon, WrappedIconButton } from \"../../shared/bricks\";\nimport { createPortal } from \"../../cruise-canvas/utils/createPortal\";\nimport { ICON_CLOSE, ICON_EXTERNAL_LINK, ICON_FEEDBACK } from \"../constants\";\nimport { TaskContext } from \"../TaskContext\";\nimport { useViewFeedbackDone } from \"../useViewFeedbackDone\";\nimport { parseTemplate } from \"../parseTemplate\";\nimport type { ParsedView } from \"../interfaces\";\n\nexport interface ExpandedViewProps {\n views: GraphGeneratedView[];\n}\n\nexport function ExpandedView({ views }: ExpandedViewProps) {\n const rootId = useMemo(() => uniqueId(), []);\n const {\n workspace,\n previewUrlTemplate,\n activeExpandedViewJobId,\n setActiveExpandedViewJobId,\n manuallyUpdatedViews,\n showFeedbackOnView,\n onFeedbackOnView,\n feedbackDoneViews,\n } = useContext(TaskContext);\n const viewportRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const rootRef = useRef<Awaited<\n ReturnType<typeof unstable_createRoot>\n > | null>(null);\n const generatedView = activeExpandedViewJobId\n ? (manuallyUpdatedViews?.get(activeExpandedViewJobId) ??\n views.find((v) => v.id === activeExpandedViewJobId)?.view)\n : null;\n const feedbackDone =\n useViewFeedbackDone(generatedView?.viewId, showFeedbackOnView) ||\n (generatedView && feedbackDoneViews?.has(generatedView.viewId));\n const [view, setView] = useState<ParsedView | null>(null);\n const canFeedback =\n !!view && !!generatedView?.viewId && generatedView.from !== \"config\";\n const [viewsWithTitle, setViewsWithTitle] = useState<\n Array<\n GraphGeneratedView & {\n title?: string;\n }\n >\n >(views);\n\n useEffect(() => {\n setView(null);\n let ignore = false;\n generatedView?.asyncConstructedView?.then((view) => {\n if (!ignore) {\n setView(view);\n }\n });\n return () => {\n ignore = true;\n };\n }, [generatedView]);\n\n useEffect(() => {\n Promise.all(\n views.map(async (v) => {\n const view = await v.view.asyncConstructedView;\n return {\n ...v,\n title: getViewTitle(view),\n };\n })\n ).then((result) => {\n setViewsWithTitle(result);\n });\n }, [views]);\n\n const sizeSmall = useMemo(() => {\n let hasForm = false;\n if (view) {\n for (const component of view?.components ?? []) {\n switch (component.name) {\n case \"Form\":\n case \"eo-form\":\n case \"Button\":\n case \"eo-button\":\n hasForm = true;\n break;\n default:\n return false;\n }\n }\n }\n return hasForm;\n }, [view]);\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) {\n return;\n }\n const portal = createPortal(rootId);\n const root = unstable_createRoot(container, {\n portal,\n supportsUseChildren: true,\n } as any);\n rootRef.current = root;\n\n return () => {\n root.unmount();\n portal.remove();\n rootRef.current = null;\n };\n }, [rootId]);\n\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n setLoading(true);\n if (!view) {\n return;\n }\n let ignore = false;\n (async () => {\n try {\n const convertedView = await convertTsx(view, {\n rootId,\n workspace,\n expanded: true,\n withContexts: view.withContexts,\n });\n if (ignore) {\n return;\n }\n const { brick, context, functions, templates } = convertedView;\n await rootRef.current?.render(brick, { context, functions, templates });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to render view:\", error);\n }\n if (!ignore) {\n setLoading(false);\n }\n })();\n\n return () => {\n ignore = true;\n };\n }, [rootId, workspace, view]);\n\n const handleClose = useCallback(() => {\n setActiveExpandedViewJobId(null);\n }, [setActiveExpandedViewJobId]);\n\n useEffect(() => {\n setTimeout(() => {\n viewportRef.current?.focus();\n }, 0);\n }, []);\n\n const handleKeydown = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.stopPropagation();\n handleClose();\n }\n },\n [handleClose]\n );\n\n return (\n <div\n className={styles[\"expanded-view\"]}\n tabIndex={-1}\n ref={viewportRef}\n onKeyDown={handleKeydown}\n >\n {loading && (\n <div className={styles.loading}>\n <WrappedIcon lib=\"antd\" icon=\"loading-3-quarters\" spinning />\n </div>\n )}\n <div\n className={classNames(styles.body, {\n [styles.small]: sizeSmall,\n })}\n ref={containerRef}\n data-root-id={rootId}\n />\n <ul className={styles.nav}>\n {viewsWithTitle.map((view) => (\n <li key={view.id}>\n <button\n className={classNames(styles[\"nav-button\"], {\n [styles.active]: activeExpandedViewJobId === view.id,\n })}\n onClick={() => setActiveExpandedViewJobId(view.id)}\n >\n {view.title ?? \"…\"}\n </button>\n </li>\n ))}\n </ul>\n <div className={styles.buttons}>\n {showFeedbackOnView && !feedbackDone && canFeedback && (\n <WrappedIconButton\n icon={ICON_FEEDBACK}\n onClick={() => onFeedbackOnView?.(generatedView.viewId)}\n />\n )}\n {!!(\n generatedView?.viewId &&\n !generatedView.withContexts &&\n previewUrlTemplate\n ) && (\n <WrappedIconButton\n icon={ICON_EXTERNAL_LINK}\n onClick={() => {\n window.open(\n `${getBasePath().slice(0, -1)}${parseTemplate(\n previewUrlTemplate,\n {\n viewId: generatedView.viewId,\n }\n )}`,\n \"_blank\"\n );\n }}\n />\n )}\n <WrappedIconButton icon={ICON_CLOSE} onClick={handleClose} />\n </div>\n </div>\n );\n}\n","// 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]!./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 \"username\",\n ]);\n if (aiEmployeeId !== undefined) {\n restMessagesPatch.aiEmployeeId = aiEmployeeId;\n }\n if (Array.isArray(messagesPatch) && messagesPatch.length > 0) {\n restMessagesPatch.messages = mergeMessages([\n ...(previousJob.messages ?? []),\n ...messagesPatch,\n ]);\n }\n\n if (\n !previousJob.generatedView &&\n ([\"create_view\"] as (string | undefined)[]).includes(\n restMessagesPatch.toolCall?.name ?? previousJob.toolCall?.name\n ) &&\n (restMessagesPatch.state ?? previousJob.state) === \"completed\"\n ) {\n const generatedView = getJobGeneratedView(messagesPatch, workspace);\n if (generatedView) {\n restMessagesPatch.generatedView = generatedView;\n }\n }\n\n if (!previousJob.generatedView && !restMessagesPatch.generatedView) {\n const view = getJobStaticDataView(messagesPatch);\n if (view) {\n view.withContexts = {\n RESPONSE: getJobStaticDataResponse(restMessagesPatch.messages!),\n };\n view.asyncConstructedView = getAsyncConstructedView(view, workspace);\n restMessagesPatch.generatedView = view;\n }\n }\n\n if (!isMatch(previousJob, restMessagesPatch)) {\n jobs = [\n ...jobs.slice(0, previousJobIndex),\n {\n ...previousJob,\n ...restMessagesPatch,\n },\n ...jobs.slice(previousJobIndex + 1),\n ];\n }\n }\n }\n return jobs;\n}\n\nfunction mergeMessages(messages: Message[]): Message[] {\n const merged: Message[] = [];\n let previousRole: Message[\"role\"] | undefined;\n for (const message of messages) {\n if (!previousRole || previousRole !== message.role) {\n merged.push({ ...message });\n } else {\n const lastMessage = merged[merged.length - 1];\n lastMessage.parts = [...lastMessage.parts, ...message.parts];\n }\n previousRole = message.role;\n }\n\n for (const message of merged) {\n message.parts = mergeMessageParts(message.parts);\n }\n\n return merged;\n}\n\nfunction mergeMessageParts(parts: Part[]): Part[] {\n const merged: Part[] = [];\n let previousType: Part[\"type\"] | undefined;\n let previousDataType: string | undefined;\n for (const part of parts) {\n if (previousType === \"text\" && part.type === \"text\") {\n const lastPart = merged[merged.length - 1] as TextPart;\n lastPart.text += part.text;\n } else if (\n // Assert: previousType is data when previousDataType is defined\n previousDataType === \"stream\" &&\n part.type === \"data\" &&\n part.data?.type === \"stream\"\n ) {\n const lastPart = merged[merged.length - 1] as DataPart;\n lastPart.data.message += part.data.message;\n } else {\n merged.push({ ...part });\n }\n\n previousType = part.type;\n previousDataType = part.type === \"data\" ? part.data?.type : undefined;\n }\n return merged;\n}\n\nfunction getJobGeneratedView(\n messages: Message[] | undefined,\n workspace: string\n): GeneratedView | undefined {\n if (!messages) {\n return;\n }\n\n for (const message of messages) {\n if (message.role === \"tool\") {\n for (const part of message.parts) {\n if (part.type === \"text\") {\n try {\n const view = JSON.parse(part.text) as GeneratedView;\n view.asyncConstructedView = getAsyncConstructedView(\n view,\n workspace\n );\n return view;\n } catch {\n // Do nothing, continue to next part\n }\n }\n }\n }\n }\n}\n\nfunction getJobStaticDataView(\n messages: Message[] | undefined\n): GeneratedView | undefined {\n if (!messages) {\n return;\n }\n\n for (const message of messages) {\n if (message.role === \"tool\") {\n for (const part of message.parts) {\n if (part.type === \"data\" && part.data?.type === \"static_data_view\") {\n const view: GeneratedView = {\n viewId: part.data.viewId,\n code: part.data.code,\n from: part.data.from,\n isStaticData: true,\n };\n return view;\n }\n }\n }\n }\n}\n\nfunction getJobStaticDataResponse(messages: Message[]) {\n for (const message of messages) {\n if (message.role === \"tool\") {\n for (const part of message.parts) {\n if (part.type === \"text\") {\n try {\n return JSON.parse(part.text);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to parse static data response as JSON:\", e);\n }\n }\n }\n }\n }\n\n return null;\n}\n","import { Reducer } from \"react\";\nimport type { CruiseCanvasAction, CruiseCanvasState } from \"./interfaces\";\nimport { tasks } from \"./tasks\";\nimport { conversation } from \"./conversation\";\nimport { errors } from \"./errors\";\n\ntype ReducersMapObject<S, A> = {\n [K in keyof S]: Reducer<S[K], A>;\n};\n\nfunction combineReducers<S, A>(\n reducers: ReducersMapObject<S, A>\n): Reducer<S, A> {\n return ((state, action) =>\n Object.fromEntries(\n Object.entries<Reducer<any, A>>(reducers).map(([key, value]) => [\n key,\n value(state[key as keyof S], action),\n ])\n )) as Reducer<S, A>;\n}\n\nexport const rootReducer = combineReducers<\n CruiseCanvasState,\n CruiseCanvasAction\n>({\n conversation,\n tasks,\n errors,\n});\n","import type { Reducer } from \"react\";\nimport { isMatch, pick } from \"lodash\";\nimport type { CruiseCanvasAction } from \"./interfaces\";\nimport type { ConversationBaseDetail } from \"../../shared/interfaces\";\n\nexport const conversation: Reducer<\n ConversationBaseDetail | null,\n CruiseCanvasAction\n> = (state, action) => {\n switch (action.type) {\n case \"sse\": {\n const patch = pick(action.payload, [\n \"id\",\n \"state\",\n \"title\",\n \"startTime\",\n \"endTime\",\n \"projectId\",\n ]);\n\n return (\n state && isMatch(state, patch) ? state : { ...state, ...patch }\n ) as ConversationBaseDetail;\n }\n\n case \"reset\":\n return null;\n\n case \"finished\":\n if (state) {\n return { ...state, finished: true };\n }\n return state;\n }\n return state;\n};\n","import type { Reducer } from \"react\";\nimport type { CruiseCanvasAction } from \"./interfaces\";\nimport type { ConversationError } from \"../../shared/interfaces\";\n\nexport const errors: Reducer<ConversationError[], CruiseCanvasAction> = (\n state,\n action\n) => {\n switch (action.type) {\n case \"sse\": {\n const { error, tasks } = action.payload;\n const lastError = state[state.length - 1];\n\n if (typeof error === \"string\" && error) {\n if (lastError) {\n return state.slice(0, -1).concat(\n {\n ...lastError,\n error,\n },\n { jobs: [] }\n );\n }\n return [{ jobs: [], error }, { jobs: [] }];\n }\n\n const previousJobs = new Set(state.flatMap((e) => Array.from(e.jobs)));\n const jobs = new Set<string>();\n for (const task of tasks ?? []) {\n for (const job of task.jobs ?? []) {\n if (!previousJobs.has(job.id)) {\n jobs.add(job.id);\n }\n }\n }\n\n const newJobs = Array.from(jobs);\n\n if (newJobs.length === 0) {\n return state;\n }\n\n if (lastError) {\n return state.slice(0, -1).concat({\n ...lastError,\n jobs: [...lastError.jobs, ...newJobs],\n });\n }\n\n return [{ jobs: newJobs }];\n }\n\n case \"reset\": {\n return state.length === 0 ? state : [];\n }\n }\n\n return state;\n};\n","// istanbul ignore file\nimport { useCallback, useEffect, useReducer, useRef } from \"react\";\nimport { createSSEStream } from \"@next-core/utils/general\";\nimport { getBasePath, handleHttpError } from \"@next-core/runtime\";\nimport { rootReducer } from \"./reducers\";\nimport type { ConversationPatch, RequestStore } from \"../shared/interfaces\";\n\nconst MINIMAL_DELAY = 500;\n\nexport function useConversationDetail(\n conversationId: string,\n initialRequest?: RequestStore | null,\n replay?: boolean,\n replayDelay?: number\n) {\n const [{ conversation, tasks, errors }, dispatch] = useReducer(\n rootReducer,\n null,\n () => ({\n conversation: null,\n tasks: [],\n errors: [],\n })\n );\n\n const humanInputRef =\n useRef<(jobId: string, input: string | null, action?: string) => void>();\n\n const replayListRef = useRef<ConversationPatch[]>([]);\n const replayRef = useRef(replay);\n const replayDelayRef = useRef((replayDelay ?? 2) * 1000);\n const replayResolveRef = useRef<(() => void) | null>(null);\n\n const skipToResults = useCallback(() => {\n replayRef.current = false;\n if (replayResolveRef.current) {\n replayResolveRef.current();\n replayResolveRef.current = null;\n }\n }, []);\n\n const watchAgain = useCallback(async () => {\n replayRef.current = true;\n dispatch({ type: \"reset\" });\n\n let isInitial = true;\n let previousTime: number | undefined;\n for (const value of replayListRef.current) {\n if (replayRef.current) {\n let delay = replayDelayRef.current;\n if (value.time && previousTime) {\n delay = Math.min(\n Math.max(MINIMAL_DELAY, (value.time - previousTime) * 1000),\n delay\n );\n }\n previousTime = value.time;\n if (!isInitial) {\n await new Promise<void>((resolve) => {\n replayResolveRef.current = resolve;\n setTimeout(resolve, delay);\n });\n replayResolveRef.current = null;\n }\n }\n\n dispatch({ type: \"sse\", payload: value, workspace: conversationId });\n isInitial = false;\n }\n dispatch({ type: \"finished\" });\n }, [conversationId]);\n\n useEffect(() => {\n dispatch({ type: \"reset\" });\n replayListRef.current = [];\n humanInputRef.current = undefined;\n\n let ignore = false;\n let requesting = false;\n let ctrl: AbortController | undefined;\n\n const makeRequest = async (content: string | null, action?: string) => {\n if (requesting) {\n return;\n }\n\n requesting = true;\n ctrl = new AbortController();\n try {\n const sseRequest = await (content === null && !action\n ? createSSEStream<ConversationPatch>(\n `${getBasePath()}api/gateway/logic.llm.aiops_service/api/v1/elevo/conversations/${conversationId}/stream`,\n {\n signal: ctrl.signal,\n }\n )\n : createSSEStream<ConversationPatch>(\n `${getBasePath()}api/gateway/logic.llm.aiops_service/api/v1/elevo/conversations/${conversationId}/messages`,\n {\n signal: ctrl.signal,\n method: \"POST\",\n body: JSON.stringify(action ? { action } : { content }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n ));\n const stream = await sseRequest;\n let isInitial = true;\n let previousTime: number | undefined;\n for await (const value of stream) {\n if (ignore) {\n requesting = false;\n return;\n }\n\n if (replayRef.current) {\n let delay = replayDelayRef.current;\n if (value.time && previousTime) {\n delay = Math.min(\n Math.max(MINIMAL_DELAY, (value.time - previousTime) * 1000),\n delay\n );\n }\n previousTime = value.time;\n\n if (!isInitial) {\n await new Promise<void>((resolve) => {\n replayResolveRef.current = resolve;\n setTimeout(resolve, delay);\n });\n replayResolveRef.current = null;\n }\n }\n\n replayListRef.current.push(value);\n dispatch({ type: \"sse\", payload: value, workspace: conversationId });\n isInitial = false;\n }\n dispatch({ type: \"finished\" });\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"sse failed\", e);\n handleHttpError(e);\n } finally {\n requesting = false;\n }\n };\n\n humanInputRef.current = async (\n jobId: string,\n content: string | null,\n action?: string\n ) => {\n makeRequest(content, action);\n };\n\n makeRequest(\n initialRequest?.conversationId === conversationId\n ? initialRequest.content\n : null\n );\n\n return () => {\n ignore = true;\n ctrl?.abort();\n };\n }, [conversationId, initialRequest]);\n\n return {\n conversation,\n tasks,\n errors,\n humanInputRef,\n skipToResults,\n watchAgain,\n };\n}\n","// 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","mermaidPromise","count","parser","DOMParser","serializer","XMLSerializer","rehypeMermaid","async","promises","visit","tree","node","index","parent","tagName","className","properties","classListItem","slice","toLowerCase","getCodeLanguage","push","id","svg","initialize","startOnLoad","theme","themeVariables","fontSize","lineColor","primaryColor","primaryBorderColor","doLoadMermaid","render","toString","error","_document$getElementB","console","document","getElementById","remove","root","parseFromString","svgElement","querySelector","defs","createElementNS","innerHTML","prepend","style","textContent","appendChild","modifiedSvg","serializeToString","replacements","fromHtmlIsomorphic","fragment","children","splice","concat","Promise","all","production","Fragment","jsxs","MarkdownComponent","_ref","_shiki$theme","content","components","shiki","reactContent","setReactContent","useState","useEffect","ignore","highlighter","vFile","unified","use","remarkParse","remarkGfm","remarkToRehype","rehypeShikiFromHighlighter","lazy","defaultLanguage","rehypeReact","passNode","process","result","pre","MarkdownPre","shikiOptions","EnhancedMarkdown","props","ref","useRef","setHoverOnScrollableContent","useContext","CanvasContext","handleMouseMove","useCallback","e","found","el","nativeEvent","composedPath","current","HTMLTableElement","HTMLPreElement","scrollWidth","clientWidth","handleMouseLeave","React","onMouseMove","onMouseLeave","_extends","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","ToolProgressLine","progress","failed","data","classNames","styles","step","key","axis","line","dot","total","description","message","WrappedCodeWrapper","wrapBrick","_props$className","preProps","showCopyButton","includes","themeVariant","___CSS_LOADER_EXPORT___","module","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","TaskContext","formRef","triedSubmit","setTriedSubmit","handleSubmit","_formRef$current","_formData$get","preventDefault","reportValidity","formData","FormData","plan","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","map","check","horizontal","radio","required","name","YES","NO","vertical","htmlFor","PROBLEM_FEEDBACK","placeholder","PROBLEM_FEEDBACK_PLACEHOLDER","rows","submit","WrappedButton","RESET","shape","disabled","SUBMIT","ChatBox","state","canChat","humanInput","onTerminate","supports","terminating","setTerminating","handleTerminate","showDialog","CONFIRM_TO_TERMINATE_THE_TASK_TITLE","WrappedChatInput","SEND_MESSAGE","autoFocus","submitDisabled","supportsTerminate","intercept","onMessageSubmit","detail","getOrderedNodes","nodes","fixedNodes","Map","childrenMap","downstreamMap","roots","rootChildren","levels","hiddenNodeIds","Set","showHiddenNodes","set","hidden","_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","downstreamTasks","downstreamTaskId","downstreamTaskRoots","leaf","jobsWithFollowingErrors","jobId","findLast","job","every","d","cache","useViewFeedbackDone","viewId","showFeedbackOnView","done","setDone","promise","_response$feedback","response","InstanceApi_getDetail","fields","priority","fetchViewFeedbackDone","then","CreatedView","_manuallyUpdatedViews","onSizeChange","rootId","useMemo","uniqueId","workspace","previewUrlTemplate","showJsxEditor","setActiveExpandedViewJobId","setActiveJsxEditorJob","manuallyUpdatedViews","onFeedbackOnView","feedbackDoneViews","rootRef","generatedView","feedbackDone","view","setView","canFeedback","from","_generatedView$asyncC","asyncConstructedView","container","portal","createPortal","unstable_createRoot","supportsUseChildren","unmount","loading","setLoading","_rootRef$current","convertedView","convertTsx","withContexts","brick","context","functions","templates","sizeLarge","_view$components","large","traverseComponents","component","_component$properties","widgets","Array","isArray","groupField","handleExpandClick","viewTitle","getViewTitle","sharedStyles","WrappedIcon","ICON_LOADING","buttons","button","lib","FEEDBACK","ICON_FEEDBACK","OPEN_PREVIEW","window","open","getBasePath","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","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","WrappedDrawer","onClose","onOpen","WrappedCodeBlock","unwrapProvider","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","find","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","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":""}
|