@next-bricks/ai-portal 0.59.5 → 0.60.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/bricks.json +25 -21
  2. package/dist/chunks/1480.ec45b604.js +2 -0
  3. package/dist/chunks/1480.ec45b604.js.map +1 -0
  4. package/dist/chunks/2232.02cd2bbc.js.map +1 -1
  5. package/dist/chunks/2357.b6f1e719.js +2 -0
  6. package/dist/chunks/2357.b6f1e719.js.map +1 -0
  7. package/dist/chunks/3793.03162dd0.js +2 -0
  8. package/dist/chunks/3793.03162dd0.js.map +1 -0
  9. package/dist/chunks/5712.4f691939.js +2 -0
  10. package/dist/chunks/5712.4f691939.js.map +1 -0
  11. package/dist/chunks/6450.ade6ef3e.js +2 -0
  12. package/dist/chunks/6450.ade6ef3e.js.map +1 -0
  13. package/dist/chunks/6792.26bcd166.js +2 -0
  14. package/dist/chunks/6792.26bcd166.js.map +1 -0
  15. package/dist/chunks/7888.c0645842.js +3 -0
  16. package/dist/chunks/7888.c0645842.js.LICENSE.txt +7 -0
  17. package/dist/chunks/7888.c0645842.js.map +1 -0
  18. package/dist/chunks/7955.0c92eb57.js +3 -0
  19. package/dist/chunks/{7238.9abe2a64.js.LICENSE.txt → 7955.0c92eb57.js.LICENSE.txt} +0 -6
  20. package/dist/chunks/7955.0c92eb57.js.map +1 -0
  21. package/dist/chunks/9525.9e5140be.js +15 -0
  22. package/dist/chunks/9525.9e5140be.js.map +1 -0
  23. package/dist/chunks/9979.44f64896.js +2 -0
  24. package/dist/chunks/9979.44f64896.js.map +1 -0
  25. package/dist/chunks/call-tool.89a848e0.js.map +1 -1
  26. package/dist/chunks/chat-box.991e397f.js.map +1 -1
  27. package/dist/chunks/{cruise-canvas.b444c4ca.js → cruise-canvas.426be93e.js} +2 -2
  28. package/dist/chunks/{cruise-canvas.b444c4ca.js.map → cruise-canvas.426be93e.js.map} +1 -1
  29. package/dist/chunks/gantt-chart.0086539c.js +2 -0
  30. package/dist/chunks/gantt-chart.0086539c.js.map +1 -0
  31. package/dist/chunks/main.08db9bee.js +2 -0
  32. package/dist/chunks/{main.5ba2de01.js.map → main.08db9bee.js.map} +1 -1
  33. package/dist/chunks/preview-container.5793faee.js +2 -0
  34. package/dist/chunks/preview-container.5793faee.js.map +1 -0
  35. package/dist/chunks/set-chat-command.367b9c88.js.map +1 -1
  36. package/dist/examples.json +18 -15
  37. package/dist/index.8852dff5.js +2 -0
  38. package/dist/index.8852dff5.js.map +1 -0
  39. package/dist/manifest.json +210 -178
  40. package/dist/types.json +239 -99
  41. package/dist-types/bootstrap.d.ts +1 -0
  42. package/dist-types/chat-stream/useConversationStream.spec.d.ts +1 -0
  43. package/dist-types/data-providers/call-tool.d.ts +1 -1
  44. package/dist-types/data-providers/set-chat-command.d.ts +1 -1
  45. package/dist-types/gantt-chart/GanttBar.d.ts +2 -0
  46. package/dist-types/gantt-chart/GanttBar.spec.d.ts +1 -0
  47. package/dist-types/gantt-chart/constants.d.ts +5 -0
  48. package/dist-types/gantt-chart/getStateIcon.d.ts +6 -0
  49. package/dist-types/gantt-chart/i18n.d.ts +17 -0
  50. package/dist-types/gantt-chart/index.d.ts +23 -0
  51. package/dist-types/gantt-chart/index.spec.d.ts +1 -0
  52. package/dist-types/gantt-chart/interfaces.d.ts +12 -0
  53. package/dist-types/gantt-chart/utils.d.ts +6 -0
  54. package/dist-types/gantt-chart/utils.spec.d.ts +1 -0
  55. package/dist-types/shared/PlanProgress/PlanProgress.d.ts +3 -3
  56. package/dist-types/shared/getFlatChunks.spec.d.ts +1 -0
  57. package/dist-types/shared/getTaskTree.spec.d.ts +1 -0
  58. package/dist-types/shared/interfaces.d.ts +7 -6
  59. package/dist-types/shared/useServiceFlowPlan.d.ts +2 -2
  60. package/dist-types/shared/workers/tsxParser.d.ts +1 -1
  61. package/docs/gantt-chart.md +37 -0
  62. package/package.json +2 -2
  63. package/dist/chunks/2621.30041500.js +0 -2
  64. package/dist/chunks/2621.30041500.js.map +0 -1
  65. package/dist/chunks/3199.0220cf6e.js +0 -3
  66. package/dist/chunks/3199.0220cf6e.js.map +0 -1
  67. package/dist/chunks/3735.8c1d82e7.js +0 -15
  68. package/dist/chunks/3735.8c1d82e7.js.LICENSE.txt +0 -5
  69. package/dist/chunks/3735.8c1d82e7.js.map +0 -1
  70. package/dist/chunks/5712.c566ad78.js +0 -2
  71. package/dist/chunks/5712.c566ad78.js.map +0 -1
  72. package/dist/chunks/6593.58eda50f.js +0 -2
  73. package/dist/chunks/6593.58eda50f.js.map +0 -1
  74. package/dist/chunks/7238.9abe2a64.js +0 -3
  75. package/dist/chunks/7238.9abe2a64.js.map +0 -1
  76. package/dist/chunks/7586.b406d4bf.js +0 -2
  77. package/dist/chunks/7586.b406d4bf.js.map +0 -1
  78. package/dist/chunks/8135.3255c5ba.js +0 -2
  79. package/dist/chunks/8135.3255c5ba.js.map +0 -1
  80. package/dist/chunks/843.9b7325c3.js +0 -2
  81. package/dist/chunks/843.9b7325c3.js.map +0 -1
  82. package/dist/chunks/9388.e48bb229.js +0 -2
  83. package/dist/chunks/9388.e48bb229.js.map +0 -1
  84. package/dist/chunks/9496.1d7ebb7f.js +0 -2
  85. package/dist/chunks/9496.1d7ebb7f.js.map +0 -1
  86. package/dist/chunks/main.5ba2de01.js +0 -2
  87. package/dist/chunks/preview-container.19631a7b.js +0 -2
  88. package/dist/chunks/preview-container.19631a7b.js.map +0 -1
  89. package/dist/index.a425606e.js +0 -2
  90. package/dist/index.a425606e.js.map +0 -1
  91. /package/dist/chunks/{3199.0220cf6e.js.LICENSE.txt → 9525.9e5140be.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"chunks/9496.1d7ebb7f.js","mappings":"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","sources":["webpack:///./src/cruise-canvas/i18n.ts","webpack:///./src/cruise-canvas/Nav/Nav.module.css","webpack:///./src/cruise-canvas/NodeLoading/NodeLoading.module.css","webpack:///../../src/mergeRects.ts","webpack:///./src/cruise-canvas/styles.module.css?7c94","webpack:///./src/cruise-canvas/constants.ts","webpack:///./src/cruise-canvas/NodeJob/NodeJob.module.css?69ec","webpack:///./src/cruise-canvas/useZoom.ts","webpack:///./src/cruise-canvas/useLayout.ts","webpack:///./src/cruise-canvas/ZoomBar/ZoomBar.module.css?7d53","webpack:///./src/cruise-canvas/ZoomBar/ZoomBar.tsx","webpack:///./src/cruise-canvas/NodeStart/NodeStart.module.css?c135","webpack:///./src/cruise-canvas/NodeStart/NodeStart.tsx","webpack:///./src/cruise-canvas/NodeRequirement/NodeRequirement.module.css?7927","webpack:///./src/cruise-canvas/NodeRequirement/NodeRequirement.tsx","webpack:///./src/cruise-canvas/NodeInstruction/NodeInstruction.module.css?5e68","webpack:///./src/cruise-canvas/NodeInstruction/NodeInstruction.tsx","webpack:///./src/cruise-canvas/AIEmployeeAvatar/AIEmployeeAvatar.module.css?6f51","webpack:///./src/cruise-canvas/AIEmployeeAvatar/AIEmployeeAvatar.tsx","webpack:///./src/cruise-canvas/NodeJob/NodeJob.tsx","webpack:///./src/cruise-canvas/NodeEnd/NodeEnd.module.css?bd4b","webpack:///./src/cruise-canvas/NodeEnd/NodeEnd.tsx","webpack:///./src/cruise-canvas/ToolCallDetail/ToolCallDetail.module.css?7f00","webpack:///./src/cruise-canvas/ToolCallDetail/ToolCallDetail.tsx","webpack:///./src/cruise-canvas/utils/handleKeyboardNav.ts","webpack:///./src/cruise-canvas/Nav/Nav.module.css?7d2d","webpack:///./src/cruise-canvas/Nav/Nav.tsx","webpack:///./src/cruise-canvas/NodeLoading/NodeLoading.module.css?c803","webpack:///./src/cruise-canvas/NodeLoading/NodeLoading.tsx","webpack:///./src/shared/JsxEditor/JsxEditor.module.css?1c9c","webpack:///./src/shared/JsxEditor/JsxEditor.tsx","webpack:///./src/cruise-canvas/NodeError/NodeError.module.css?3e0b","webpack:///./src/cruise-canvas/NodeError/NodeError.tsx","webpack:///./src/cruise-canvas/NodeChunk/NodeChunk.tsx","webpack:///./src/cruise-canvas/CruiseCanvas.tsx","webpack:///./src/cruise-canvas/useConversationGraph.ts","webpack:///./src/cruise-canvas/useAutoCenter.ts","webpack:///./src/cruise-canvas/utils/getScrollTo.ts","webpack:///./src/cruise-canvas/AIEmployeeAvatar/AIEmployeeAvatar.module.css","webpack:///./src/cruise-canvas/styles.module.css","webpack:///./src/cruise-canvas/NodeRequirement/NodeRequirement.module.css","webpack:///./src/shared/JsxEditor/JsxEditor.module.css","webpack:///./src/cruise-canvas/NodeJob/NodeJob.module.css","webpack:///./src/cruise-canvas/NodeStart/NodeStart.module.css","webpack:///./src/cruise-canvas/NodeInstruction/NodeInstruction.module.css","webpack:///./src/cruise-canvas/NodeEnd/NodeEnd.module.css","webpack:///./src/cruise-canvas/ZoomBar/ZoomBar.module.css","webpack:///./src/cruise-canvas/ToolCallDetail/ToolCallDetail.module.css","webpack:///./src/cruise-canvas/NodeError/NodeError.module.css"],"sourcesContent":["import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n YES = \"YES\",\n NO = \"NO\",\n TASK_COMPLETED = \"TASK_COMPLETED\",\n SHARE = \"SHARE\",\n TYPE_YOUR_MESSAGE_HERE = \"TYPE_YOUR_MESSAGE_HERE\",\n ARGUMENTS = \"ARGUMENTS\",\n PROCESS = \"PROCESS\",\n RESPONSE = \"RESPONSE\",\n SWITCH_TO_CHAT = \"SWITCH_TO_CHAT\",\n BACK_TO_CENTER = \"BACK_TO_CENTER\",\n ZOOM_IN = \"ZOOM_IN\",\n ZOOM_OUT = \"ZOOM_OUT\",\n FULLSCREEN = \"FULLSCREEN\",\n SEND_MESSAGE = \"SEND_MESSAGE\",\n UNTITLED = \"UNTITLED\",\n DOWNLOAD = \"DOWNLOAD\",\n INITIATING_SERVICE_FLOW = \"INITIATING_SERVICE_FLOW\",\n STARTING_SERVICE_FLOW_ACTIVITY = \"STARTING_SERVICE_FLOW_ACTIVITY\",\n}\n\nconst en: Locale = {\n YES: \"Yes\",\n NO: \"No\",\n TASK_COMPLETED: \"Task completed\",\n SHARE: \"Share\",\n TYPE_YOUR_MESSAGE_HERE: \"Type your message here\",\n ARGUMENTS: \"Arguments\",\n PROCESS: \"Process\",\n RESPONSE: \"Response\",\n SWITCH_TO_CHAT: \"Switch to chat\",\n BACK_TO_CENTER: \"Back to center\",\n ZOOM_IN: \"Zoom in\",\n ZOOM_OUT: \"Zoom out\",\n FULLSCREEN: \"Fullscreen\",\n SEND_MESSAGE: \"Send message\",\n UNTITLED: \"Untitled\",\n DOWNLOAD: \"Download\",\n INITIATING_SERVICE_FLOW: \"Initiating service flow: {{ name }}\",\n STARTING_SERVICE_FLOW_ACTIVITY: \"Starting service flow activity: {{ name }}\",\n};\n\nconst zh: Locale = {\n YES: \"是\",\n NO: \"否\",\n TASK_COMPLETED: \"任务完成\",\n SHARE: \"分享\",\n TYPE_YOUR_MESSAGE_HERE: \"在这里输入信息\",\n ARGUMENTS: \"参数\",\n PROCESS: \"过程\",\n RESPONSE: \"响应\",\n SWITCH_TO_CHAT: \"切换为聊天\",\n BACK_TO_CENTER: \"回中\",\n ZOOM_IN: \"放大\",\n ZOOM_OUT: \"缩小\",\n FULLSCREEN: \"全屏\",\n SEND_MESSAGE: \"发送消息\",\n UNTITLED: \"未命名\",\n DOWNLOAD: \"下载\",\n INITIATING_SERVICE_FLOW: \"发起业务流:{{ name }}\",\n STARTING_SERVICE_FLOW_ACTIVITY: \"开始业务流活动:{{ name }}\",\n};\n\nexport const NS = \"bricks/ai-portal/cruise-canvas\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.container--nviLvTo4{position:absolute;right:0;top:72px;bottom:72px;padding:48px 0;overflow-y:auto;scrollbar-width:none;pointer-events:none}.nav--lm9zwHhG{list-style:none;margin:0;padding:20px 0;background:rgba(255,255,255,0);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);pointer-events:auto}.container--nviLvTo4,\n.nav--lm9zwHhG{border-radius:8px 0px 0px 8px}.link--sJDeRfjL{display:flex;align-items:center;width:170px;height:36px;border-radius:18px 0 0 18px;padding:0 24px 0 16px;font-size:13px}.link--sJDeRfjL,\n.link--sJDeRfjL:hover{color:rgba(93,105,126,0.7)}.link--sJDeRfjL.disabled--UpGab11N{cursor:default}.item--B4GvcxMx:not(:first-child){margin-top:12px}.icon--YLvYVRdC{margin-right:12px;font-size:14px;color:#abaab7}.text--PwKz_ODc{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link--sJDeRfjL:not(.disabled--UpGab11N):hover,\n.item--B4GvcxMx.active--DwuLIQY_ .link--sJDeRfjL{background-color:rgba(255,255,255,0.2)}.item--B4GvcxMx.active--DwuLIQY_ .link--sJDeRfjL{font-size:14px;color:#424a58;padding-right:16px}.completed--ZPZ8DEeN .icon--YLvYVRdC{color:#0fbe59}.failed--dxvB8UKT .icon--YLvYVRdC{color:#f24c25}.working--IbqFvpPm .icon--YLvYVRdC{color:var(--elevo-color-brand)}.input-required--zcO5ZufK .icon--YLvYVRdC{color:#12aacc}.canceled--GqvLm_YF .icon--YLvYVRdC{color:#fcaa07}@media (max-height: 639px){.container--nviLvTo4{padding:0}}@media (max-width: 719px){.container--nviLvTo4{display:none}}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": `container--nviLvTo4`,\n\t\"nav\": `nav--lm9zwHhG`,\n\t\"link\": `link--sJDeRfjL`,\n\t\"disabled\": `disabled--UpGab11N`,\n\t\"item\": `item--B4GvcxMx`,\n\t\"icon\": `icon--YLvYVRdC`,\n\t\"text\": `text--PwKz_ODc`,\n\t\"active\": `active--DwuLIQY_`,\n\t\"completed\": `completed--ZPZ8DEeN`,\n\t\"failed\": `failed--dxvB8UKT`,\n\t\"working\": `working--IbqFvpPm`,\n\t\"input-required\": `input-required--zcO5ZufK`,\n\t\"canceled\": `canceled--GqvLm_YF`\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, `.loading--LlSQxd6c{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:rgba(69,94,255,0.5);border-radius:24px;animation:loading--LlSQxd6c 1s infinite linear}.inner--I4b7rAPw{width:12px;height:12px;background:rgb(69,94,255);border-radius:12px}@keyframes loading--LlSQxd6c{0%{transform:scale(1);opacity:1}100%{transform:scale(1.5);opacity:0}}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"loading\": `loading--LlSQxd6c`,\n\t\"inner\": `inner--I4b7rAPw`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","export interface Rect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\n/**\n * Merges multiple rectangles into a single bounding rectangle.\n */\nexport function mergeRects(rects: Rect[]): Rect {\n let left = Infinity;\n let top = Infinity;\n let right = -Infinity;\n let bottom = -Infinity;\n for (const rect of rects) {\n const r = rect.x + rect.width;\n const b = rect.y + rect.height;\n if (rect.x < left) {\n left = rect.x;\n }\n if (r > right) {\n right = r;\n }\n if (rect.y < top) {\n top = rect.y;\n }\n if (b > bottom) {\n bottom = b;\n }\n }\n\n const width = right - left;\n const height = bottom - top;\n\n return { x: left, y: top, width, height };\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]!./styles.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]!./styles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","export const DEFAULT_SCALE_RANGE_MIN = 0.5;\nexport const DEFAULT_SCALE_RANGE_MAX = 2;\nexport const START_NODE_ID = \"<START>\";\nexport const END_NODE_ID = \"<END>\";\nexport const FEEDBACK_NODE_ID = \"<FEEDBACK>\";\nexport const REQUIREMENT_NODE_ID = \"<REQUIREMENT>\";\nexport const LOADING_NODE_ID = \"<LOADING>\";\nexport const ERROR_NODE_ID = \"<ERROR>\";\nexport const REPLAY_NODE_ID = \"<REPLAY>\";\nexport const CANVAS_PADDING_TOP = 20;\nexport const CANVAS_PADDING_RIGHT = 20;\n// 20 + 48 + 8 + 26 + 20\nexport const CANVAS_PADDING_BOTTOM = 122;\nexport const CANVAS_PADDING_LEFT = 160;\nexport const RANK_SEP = 40;\nexport const NODE_SEP = 42;\nexport const EDGE_SEP = 10;\n\n// istanbul ignore next\nexport const IS_MAC = /mac/i.test(\n (\n navigator as Navigator & {\n userAgentData?: {\n platform: string;\n };\n }\n ).userAgentData?.platform ??\n navigator.platform ??\n navigator.userAgent\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]!./NodeJob.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]!./NodeJob.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: hard to test with d3-zoom\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { select } from \"d3-selection\";\nimport { zoom, type ZoomBehavior } from \"d3-zoom\";\nimport type {\n RangeTuple,\n TransformLiteral /* , ActiveTarget */,\n} from \"./interfaces\";\nimport {\n DEFAULT_SCALE_RANGE_MIN,\n DEFAULT_SCALE_RANGE_MAX,\n IS_MAC,\n} from \"./constants\";\n// import type { ActiveTarget } from \"./interfaces\";\nimport jobStyles from \"./NodeJob/NodeJob.module.css\";\n\nexport interface UseZoomOptions {\n rootRef: React.RefObject<HTMLDivElement>;\n zoomable?: boolean;\n scrollable?: boolean;\n pannable?: boolean;\n pannableWithCtrl?: boolean;\n scaleRange?: RangeTuple;\n manualScrolledUpRef: React.MutableRefObject<boolean>;\n onSwitchActiveTarget?(target: unknown | null): void;\n}\n\nexport interface UseZoomResult {\n grabbing: boolean;\n transform: TransformLiteral;\n transformRef: React.MutableRefObject<TransformLiteral>;\n scaleRange: RangeTuple;\n zoomer: ZoomBehavior<HTMLDivElement, unknown>;\n}\n\n// istanbul ignore next\nfunction wheelData(event: WheelEvent) {\n // On Windows with normal mouse, deltaY is too big when scroll with ctrlKey pressed,\n // which cause the zooming too fast.\n // While on mac OS, we need to keep default behavior of d3-zoom.\n return (\n -event.deltaY *\n (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) *\n (event.ctrlKey && IS_MAC ? 10 : 1)\n );\n}\n\nexport function useZoom({\n rootRef,\n zoomable,\n scrollable,\n pannable,\n pannableWithCtrl,\n scaleRange: _scaleRange,\n manualScrolledUpRef,\n onSwitchActiveTarget,\n}: UseZoomOptions): UseZoomResult {\n const [grabbing, setGrabbing] = useState(false);\n const [transform, setTransform] = useState<TransformLiteral>({\n k: 1,\n x: 0,\n y: 0,\n });\n const transformRef = useRef(transform);\n\n const scaleRange = useMemo(\n () =>\n _scaleRange ??\n ([DEFAULT_SCALE_RANGE_MIN, DEFAULT_SCALE_RANGE_MAX] as RangeTuple),\n [_scaleRange]\n );\n\n const zoomer = useMemo(\n () => zoom<HTMLDivElement, unknown>().wheelDelta(wheelData),\n []\n );\n\n // istanbul ignore next: d3-zoom currently hard to test\n useEffect(() => {\n let moved = false;\n zoomer\n .scaleExtent(zoomable ? scaleRange : [1, 1])\n .on(\"start\", () => {\n moved = false;\n setGrabbing(true);\n })\n .on(\"zoom\", (e: { transform: TransformLiteral }) => {\n moved = true;\n setTransform(e.transform);\n transformRef.current = e.transform;\n })\n .on(\"end\", () => {\n setGrabbing(false);\n if (!moved) {\n onSwitchActiveTarget?.(null);\n }\n })\n .filter(\n (event) =>\n // For wheel event, ignore d3 default behavior, because we control it manually.\n // Except for the trackpad pinch event on Mac OS (with ctrlKey).\n (event.type === \"wheel\"\n ? event.ctrlKey\n : pannableWithCtrl\n ? pannable || event.ctrlKey\n : !event.ctrlKey) && !event.button\n );\n }, [\n onSwitchActiveTarget,\n scaleRange,\n zoomable,\n zoomer,\n pannableWithCtrl,\n pannable,\n ]);\n\n useEffect(() => {\n if (pannableWithCtrl) {\n const onContextMenu = (e: MouseEvent) => {\n if (e.ctrlKey) {\n e.preventDefault();\n }\n };\n document.addEventListener(\"contextmenu\", onContextMenu, true);\n return () => {\n document.removeEventListener(\"contextmenu\", onContextMenu, true);\n };\n }\n }, [pannableWithCtrl]);\n\n // istanbul ignore next: d3-zoom currently hard to test\n useEffect(() => {\n const root = rootRef.current;\n if (!root) {\n return;\n }\n\n const rootSelection = select(root);\n\n const unsetZoom = () => {\n rootSelection\n .on(\".zoom\", null)\n .on(\".zoom.custom\", null)\n .on(\"wheel\", null);\n };\n\n if (!(zoomable || scrollable || pannable)) {\n unsetZoom();\n return;\n }\n\n if (zoomable || scrollable) {\n // Do not override default d3 zoom handler.\n // Only handles *panning*\n rootSelection.on(\n \"wheel.zoom.custom\",\n (e: WheelEvent & { wheelDeltaX: number; wheelDeltaY: number }) => {\n // Mac OS trackpad pinch event is emitted as a wheel.zoom and d3.event.ctrlKey set to true\n if (!e.ctrlKey && scrollable) {\n const node = (e.target as HTMLElement).closest(\n `.${jobStyles.body}`\n );\n if (node) {\n if (checkScrollableY(node, e.deltaY)) {\n return;\n }\n }\n\n if (e.cancelable) {\n if (e.deltaY < 0) {\n manualScrolledUpRef.current = true;\n }\n e.preventDefault();\n zoomer.translateBy(\n rootSelection,\n e.wheelDeltaX / 5,\n e.wheelDeltaY / 5\n );\n }\n }\n // zoomer.scaleBy(rootSelection, Math.pow(2, defaultWheelDelta(e)))\n }\n );\n }\n\n rootSelection\n .call(zoomer)\n .on(\"wheel\", (e: WheelEvent) => {\n if (scrollable || (zoomable && e.ctrlKey)) {\n e.preventDefault();\n }\n })\n .on(\"dblclick.zoom\", null);\n\n if (!pannable && !pannableWithCtrl) {\n rootSelection.on(\"mousedown.zoom\", null);\n }\n\n if (!pannable) {\n rootSelection\n .on(\"touchstart.zoom\", null)\n .on(\"touchmove.zoom\", null)\n .on(\"touchend.zoom\", null);\n }\n\n return unsetZoom;\n }, [\n pannableWithCtrl,\n pannable,\n rootRef,\n manualScrolledUpRef,\n scrollable,\n zoomable,\n zoomer,\n ]);\n\n return { grabbing, transform, transformRef, zoomer, scaleRange };\n}\n\n// 检查元素是否还能滚动\nfunction checkScrollableY(element: Element, delta: number) {\n if (!delta) {\n return false;\n }\n const isScrollingDown = delta > 0;\n // 还能向下滚动 或 还能向上滚动\n if (isScrollingDown) {\n const maxScroll = element.scrollHeight - element.clientHeight;\n return element.scrollTop <= maxScroll - 1;\n }\n return element.scrollTop >= 1;\n}\n\n// 检查元素是否还能滚动\n// function checkScrollableX(element: Element, delta: number) {\n// if (!delta) {\n// return false;\n// }\n// const isScrollingRight = delta > 0; // Updated variable name for clarity\n// // 还能向右滚动 或 还能向左滚动\n// if (isScrollingRight) {\n// const maxScroll = element.scrollWidth - element.clientWidth; // Changed to scrollWidth and clientWidth\n// return element.scrollLeft <= maxScroll - 1; // Changed to scrollLeft\n// }\n// return element.scrollLeft >= 1;\n// }\n","import dagre from \"@dagrejs/dagre\";\nimport { useMemo, useRef } from \"react\";\nimport type {\n NodePosition,\n NodeRect,\n GraphEdge,\n GraphNode,\n SizeTuple,\n} from \"./interfaces\";\nimport {\n EDGE_SEP,\n END_NODE_ID,\n FEEDBACK_NODE_ID,\n NODE_SEP,\n RANK_SEP,\n REPLAY_NODE_ID,\n START_NODE_ID,\n} from \"./constants\";\n\nexport interface UseLayoutOptions {\n rawNodes: GraphNode[] | undefined;\n rawEdges: GraphEdge[] | undefined;\n sizeMap: Map<string, SizeTuple> | null;\n completed?: boolean;\n failed?: boolean;\n finished?: boolean;\n showFeedback?: boolean;\n showFeedbackAfterFailed?: boolean;\n replay?: boolean;\n noTasks?: boolean;\n}\n\nexport function useLayout({\n rawNodes: _rawNodes,\n rawEdges: _rawEdges,\n sizeMap,\n completed,\n failed,\n finished,\n showFeedback,\n showFeedbackAfterFailed,\n replay,\n noTasks,\n}: UseLayoutOptions) {\n const memoizedPositionsRef = useRef<Map<string, NodePosition> | null>(null);\n\n const { initialNodes, initialEdges } = useMemo(() => {\n const initialNodes: GraphNode[] = [\n {\n type: \"start\",\n id: START_NODE_ID,\n },\n ];\n const initialEdges: GraphEdge[] = [];\n const finishedNodeIds: string[] = [];\n const rawNodes = _rawNodes ?? [];\n const rawEdges = _rawEdges ?? [];\n\n const hasSource = new Set<string>(rawEdges.map((edge) => edge.target));\n const failedFeedback = failed && showFeedback && showFeedbackAfterFailed;\n const shouldAppend = replay\n ? finished\n : !noTasks && (completed || failedFeedback);\n const hasTarget = shouldAppend\n ? new Set<string>(rawEdges.map((edge) => edge.source))\n : null;\n\n for (const node of rawNodes) {\n if (!hasSource.has(node.id)) {\n initialEdges.push({\n source: START_NODE_ID,\n target: node.id,\n });\n }\n\n if (shouldAppend && !hasTarget!.has(node.id)) {\n finishedNodeIds.push(node.id);\n }\n }\n\n initialNodes.push(...rawNodes);\n initialEdges.push(...rawEdges);\n\n if (finishedNodeIds.length > 0) {\n let sourceIds = finishedNodeIds;\n\n if (replay && finished) {\n initialNodes.push({\n id: END_NODE_ID,\n type: \"end\",\n });\n initialEdges.push(\n ...sourceIds.map((id) => ({\n source: id,\n target: END_NODE_ID,\n }))\n );\n initialNodes.push({\n id: REPLAY_NODE_ID,\n type: \"replay\",\n });\n initialEdges.push({\n source: END_NODE_ID,\n target: REPLAY_NODE_ID,\n });\n } else {\n if (completed) {\n initialNodes.push({\n id: END_NODE_ID,\n type: \"end\",\n });\n initialEdges.push(\n ...sourceIds.map((id) => ({\n source: id,\n target: END_NODE_ID,\n }))\n );\n sourceIds = [END_NODE_ID];\n }\n\n if (showFeedback && !noTasks && (completed || failedFeedback)) {\n initialNodes.push({\n id: FEEDBACK_NODE_ID,\n type: \"feedback\",\n });\n for (const id of sourceIds) {\n initialEdges.push({\n source: id,\n target: FEEDBACK_NODE_ID,\n });\n }\n }\n }\n }\n\n const memoizedPositions = memoizedPositionsRef.current;\n if (memoizedPositions) {\n for (const node of initialNodes) {\n const view = memoizedPositions.get(node.id);\n if (view) {\n node.view = view as NodeRect;\n }\n }\n }\n\n return { initialNodes, initialEdges };\n }, [\n _rawNodes,\n _rawEdges,\n completed,\n failed,\n finished,\n showFeedback,\n showFeedbackAfterFailed,\n replay,\n ]);\n\n const startNodePositionRef = useRef<NodePosition | null>(null);\n\n return useMemo(() => {\n for (const node of initialNodes) {\n if (!sizeMap?.has(node.id)) {\n return { sizeReady: false, nodes: initialNodes, edges: [] };\n }\n }\n\n const graph = new dagre.graphlib.Graph();\n graph.setGraph({\n rankdir: \"TB\",\n nodesep: NODE_SEP,\n edgesep: EDGE_SEP,\n ranksep: RANK_SEP,\n });\n // Default to assigning a new object as a label for each new edge.\n graph.setDefaultEdgeLabel(function () {\n return {};\n });\n for (const edge of initialEdges) {\n graph.setEdge(edge.source, edge.target);\n }\n for (const node of initialNodes) {\n const [width, height] = sizeMap!.get(node.id)!;\n graph.setNode(node.id, {\n id: node.id,\n width,\n height,\n });\n }\n dagre.layout(graph);\n\n // Make the start node position unchanged\n let offsets: NodePosition | null = null;\n\n const nodes = initialNodes.map<GraphNode>((node) => {\n const nodeView = graph.node(node.id);\n const x = nodeView.x - nodeView.width / 2;\n const y = nodeView.y - nodeView.height / 2;\n\n if (node.type === \"start\") {\n if (startNodePositionRef.current) {\n offsets = {\n x: startNodePositionRef.current.x - x,\n y: startNodePositionRef.current.y - y,\n };\n } else {\n startNodePositionRef.current = { x, y };\n }\n }\n\n return {\n ...node,\n view: {\n x,\n y,\n width: nodeView.width,\n height: nodeView.height,\n },\n };\n });\n\n if (offsets) {\n for (const node of nodes) {\n Object.assign(node.view!, getPositionWithOffsets(node.view!, offsets));\n }\n }\n\n const memoizedPositions = (memoizedPositionsRef.current ??= new Map());\n for (const node of nodes) {\n const { x, y } = node.view!;\n memoizedPositions.set(node.id, { x, y });\n }\n\n const edges = initialEdges.map((edge) => {\n const source = graph.node(edge.source);\n const sourcePosition = getPositionWithOffsets(source, offsets);\n const target = graph.node(edge.target);\n const targetPosition = getPositionWithOffsets(target, offsets);\n // const turnY =\n // (sourcePosition.y +\n // source.height / 2 +\n // targetPosition.y -\n // target.height / 2) /\n // 2;\n const turnY = targetPosition.y - (target.height + RANK_SEP) / 2;\n const points: NodePosition[] = [\n { x: sourcePosition.x, y: sourcePosition.y + source.height / 2 },\n { x: sourcePosition.x, y: turnY },\n { x: targetPosition.x, y: turnY },\n { x: targetPosition.x, y: targetPosition.y - target.height / 2 },\n ];\n\n return {\n ...edge,\n points,\n };\n });\n\n return {\n sizeReady: true,\n nodes,\n edges,\n };\n }, [initialEdges, initialNodes, sizeMap]);\n}\n\nfunction getPositionWithOffsets<T extends NodePosition>(\n position: T,\n offsets: NodePosition | null\n): NodePosition {\n if (!offsets) {\n return {\n x: position.x,\n y: position.y,\n };\n }\n return {\n x: position.x + offsets.x,\n y: position.y + offsets.y,\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]!./ZoomBar.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]!./ZoomBar.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React, { useCallback } from \"react\";\nimport type { GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport styles from \"./ZoomBar.module.css\";\nimport toolbarStyles from \"../toolbar.module.css\";\nimport { WrappedIconButton } from \"../../shared/bricks\";\nimport { K, t } from \"../i18n\";\nimport { ICON_CHAT } from \"../../shared/constants\";\n\nconst ICON_BACK_TO_CENTER: GeneralIconProps = {\n lib: \"easyops\",\n icon: \"back-to-center\",\n};\nconst ICON_ZOOM_OUT: GeneralIconProps = {\n lib: \"antd\",\n icon: \"minus-circle\",\n};\nconst ICON_ZOOM_IN: GeneralIconProps = {\n lib: \"antd\",\n icon: \"plus-circle\",\n};\n\nexport interface ZoomBarProps {\n scale: number;\n showUiSwitch?: boolean;\n onScaleChange?: (scale: number) => void;\n onReCenter?: () => void;\n onSwitchToChat?: () => void;\n}\n\nexport function ZoomBar({\n scale,\n showUiSwitch,\n onScaleChange,\n onReCenter,\n onSwitchToChat,\n}: ZoomBarProps): JSX.Element {\n const handleZoomIn = useCallback(() => {\n onScaleChange?.(scale + 0.1);\n }, [onScaleChange, scale]);\n\n const handleZoomOut = useCallback(() => {\n onScaleChange?.(scale - 0.1);\n }, [onScaleChange, scale]);\n\n return (\n <div className={`${toolbarStyles.toolbar} ${styles[\"zoom-bar\"]}`}>\n {showUiSwitch && (\n <>\n <WrappedIconButton\n variant=\"mini\"\n icon={ICON_CHAT}\n onClick={onSwitchToChat}\n />\n <div className={toolbarStyles.divider}></div>\n </>\n )}\n <WrappedIconButton\n variant=\"mini\"\n icon={ICON_BACK_TO_CENTER}\n onClick={onReCenter}\n title={t(K.BACK_TO_CENTER)}\n />\n <div className={toolbarStyles.divider}></div>\n <WrappedIconButton\n variant=\"mini\"\n icon={ICON_ZOOM_OUT}\n onClick={handleZoomOut}\n title={t(K.ZOOM_OUT)}\n />\n <WrappedIconButton\n variant=\"mini\"\n icon={ICON_ZOOM_IN}\n onClick={handleZoomIn}\n title={t(K.ZOOM_IN)}\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]!./NodeStart.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]!./NodeStart.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React from \"react\";\nimport styles from \"./NodeStart.module.css\";\n\nexport function NodeStart(): JSX.Element {\n return (\n <div className={styles[\"node-start\"]}>\n <div className={styles.icon} />\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]!./NodeRequirement.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]!./NodeRequirement.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n EoEasyopsAvatar,\n EoEasyopsAvatarProps,\n} from \"@next-bricks/basic/easyops-avatar\";\nimport moment from \"moment\";\nimport classNames from \"classnames\";\nimport styles from \"./NodeRequirement.module.css\";\nimport type { CommandPayload, FileInfo } from \"../../shared/interfaces\";\nimport { ReadableCommand } from \"../../shared/ReadableCommand/ReadableCommand\";\nimport { FileList } from \"../../shared/FilePreview/FileList\";\n\nconst WrappedEasyOpsAvatar = wrapBrick<EoEasyopsAvatar, EoEasyopsAvatarProps>(\n \"eo-easyops-avatar\"\n);\n\nexport interface NodeRequirementProps {\n username?: string;\n content?: string;\n startTime?: number;\n active?: boolean;\n cmd?: CommandPayload;\n mentionedAiEmployeeId?: string;\n files?: FileInfo[];\n}\n\nexport function NodeRequirement({\n username,\n content,\n startTime,\n active,\n cmd,\n mentionedAiEmployeeId,\n files,\n}: NodeRequirementProps): JSX.Element {\n return (\n <div\n className={classNames(styles[\"node-requirement\"], {\n [styles.active]: active,\n })}\n >\n <div className={styles.heading}>\n <WrappedEasyOpsAvatar\n className={styles.avatar}\n nameOrInstanceId={username}\n showName\n size=\"xs\"\n />\n <div className={styles.time}>\n {startTime && moment(startTime * 1000).format(\"MM-DD HH:mm\")}\n </div>\n </div>\n <div className={styles.body}>\n {(cmd || mentionedAiEmployeeId) && (\n <ReadableCommand\n cmd={cmd}\n mentionedAiEmployeeId={mentionedAiEmployeeId}\n size=\"small\"\n />\n )}\n {content}\n {files?.length ? <FileList files={files} /> : null}\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]!./NodeInstruction.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]!./NodeInstruction.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React from \"react\";\nimport classNames from \"classnames\";\nimport styles from \"./NodeInstruction.module.css\";\nimport sharedStyles from \"../shared.module.css\";\n\nexport interface NodeInstructionProps {\n content?: string;\n loading?: boolean;\n}\n\nexport function NodeInstruction({\n content,\n loading,\n}: NodeInstructionProps): JSX.Element {\n return (\n <div className={styles[\"node-instruction\"]}>\n <div\n className={classNames(styles.text, {\n [sharedStyles[\"shine-text\"]]: loading,\n })}\n title={content}\n >\n {content}\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]!./AIEmployeeAvatar.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]!./AIEmployeeAvatar.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { Suspense, use, useMemo } from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type { AvatarProps, EoAvatar } from \"@next-bricks/basic/avatar\";\nimport type { ElevoApi_ListElevoAiEmployeesResponseItem } from \"@next-api-sdk/llm-sdk\";\nimport fallbackAvatar from \"./fallback-avatar.png\";\nimport styles from \"./AIEmployeeAvatar.module.css\";\nimport { fetchEmployee } from \"../../shared/fetchEmployee\";\n\nconst WrappedAvatar = wrapBrick<EoAvatar, AvatarProps>(\"eo-avatar\");\n\nexport interface AIEmployeeAvatarProps {\n aiEmployeeId: string;\n}\n\nexport function AIEmployeeAvatar({ aiEmployeeId }: AIEmployeeAvatarProps) {\n return (\n <Suspense\n fallback={\n <WrappedAvatar\n className={styles.avatar}\n showName\n size=\"xs\"\n name={aiEmployeeId}\n src={fallbackAvatar}\n />\n }\n >\n <LegacyAIEmployeeAvatar aiEmployeeId={aiEmployeeId} />\n </Suspense>\n );\n}\n\nfunction LegacyAIEmployeeAvatar({ aiEmployeeId }: AIEmployeeAvatarProps) {\n const employeePromise = useMemo(() => {\n return fetchEmployee(aiEmployeeId);\n }, [aiEmployeeId]);\n\n const employee = use(employeePromise);\n\n const props = useMemo(() => {\n if (!employee) {\n return {\n name: aiEmployeeId,\n src: fallbackAvatar,\n };\n }\n const { name, avatar } =\n employee as ElevoApi_ListElevoAiEmployeesResponseItem & {\n avatar?: string;\n };\n const src = avatar\n ? new URL(avatar, location.origin).toString()\n : fallbackAvatar;\n return {\n name,\n src,\n };\n }, [employee, aiEmployeeId]);\n\n return (\n <WrappedAvatar className={styles.avatar} showName size=\"xs\" {...props} />\n );\n}\n","// istanbul ignore file: experimental\nimport React, {\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport classNames from \"classnames\";\nimport styles from \"./NodeJob.module.css\";\nimport sharedStyles from \"../shared.module.css\";\nimport type { CmdbInstanceDetailData } from \"../interfaces\";\nimport { FileInfo, Job } from \"../../shared/interfaces\";\nimport { ToolCallStatus } from \"../ToolCallStatus/ToolCallStatus.js\";\nimport { EnhancedMarkdown } from \"../EnhancedMarkdown/EnhancedMarkdown\";\nimport { CmdbInstanceDetail } from \"../CmdbInstanceDetail/CmdbInstanceDetail\";\nimport { FileList } from \"../../shared/FilePreview/FileList\";\nimport { RequestHumanAction } from \"../../shared/RequestHumanAction/RequestHumanAction\";\nimport { AIEmployeeAvatar } from \"../AIEmployeeAvatar/AIEmployeeAvatar\";\nimport { CreatedView } from \"../../shared/CreatedView/CreatedView\";\nimport { CanvasContext } from \"../CanvasContext\";\nimport { ViewToolbar } from \"../../shared/CreatedView/ViewToolbar\";\n\n// 当 markdown 中包含超过 4 列的表格时,对节点使用大尺寸样式\nconst RegExpLargeTableInMarkdown = /^\\s*\\|(?:\\s*:?-+:?\\s*\\|){4,}\\s*$/m;\n\nexport interface NodeJobProps {\n job: Job;\n active?: boolean;\n isLeaf?: boolean;\n}\n\nexport function NodeJob({ job, active, isLeaf }: NodeJobProps): JSX.Element {\n const toolName = job.toolCall?.name;\n\n const [toolMarkdownContent, cmdbInstanceDetails, files, sizeLarge] =\n useMemo(() => {\n const contents: string[] = [];\n const instanceDetails: CmdbInstanceDetailData[] = [];\n const files: FileInfo[] = [];\n let large = toolName === \"llm_answer\";\n job.messages?.forEach((message) => {\n if (message.role === \"tool\") {\n for (const part of message.parts) {\n if (part.type === \"data\") {\n switch (part.data?.type) {\n case \"markdown\":\n contents.push(part.data.content);\n break;\n case \"cmdb_instance_detail\":\n instanceDetails.push(part.data as CmdbInstanceDetailData);\n if (!large) {\n large =\n Object.keys(\n part.data?.outputSchema?.type === \"object\"\n ? part.data.outputSchema.properties\n : part.data.detail\n ).length > 6;\n }\n break;\n }\n } else if (part.type === \"file\") {\n files.push(part.file);\n }\n }\n }\n });\n\n const markdownContent = contents.join(\"\");\n\n large = large || RegExpLargeTableInMarkdown.test(markdownContent);\n\n return [markdownContent, instanceDetails, files, large] as const;\n }, [job.messages, toolName]);\n\n const [viewSize, setViewSize] = useState<\"medium\" | \"large\">(\"medium\");\n\n const handleViewSizeChange = useCallback((value: \"medium\" | \"large\") => {\n setViewSize(value);\n }, []);\n\n return (\n <div\n className={classNames(styles[\"node-job\"], {\n [styles.error]: job.isError,\n [styles.active]: active,\n [styles.large]: sizeLarge || viewSize === \"large\",\n })}\n >\n <div className={styles.background} />\n {job.aiEmployeeId ? (\n <div className={styles.heading}>\n <AIEmployeeAvatar aiEmployeeId={job.aiEmployeeId} />\n {job.generatedView ? <ViewToolbar job={job} /> : null}\n </div>\n ) : null}\n <div className={styles.body}>\n {job.toolCall && <ToolCallStatus job={job} />}\n {job.messages?.map((message, index) =>\n message.role === \"tool\" ? null : (\n <div\n key={index}\n className={classNames(styles.message, sharedStyles.markdown, {\n [styles[\"role-user\"]]:\n message.role === \"tool\" || message.role === \"user\",\n })}\n >\n {message.parts?.map((part, partIndex) => (\n <React.Fragment key={partIndex}>\n {part.type === \"text\" && (\n <EnhancedMarkdown\n className={sharedStyles[\"markdown-wrapper\"]}\n content={part.text}\n />\n )}\n </React.Fragment>\n ))}\n </div>\n )\n )}\n {toolMarkdownContent && (\n <div\n className={classNames(styles.message, sharedStyles.markdown)}\n style={{ padding: \"0 8px\" }}\n >\n <EnhancedMarkdown\n className={sharedStyles[\"markdown-wrapper\"]}\n content={toolMarkdownContent}\n />\n </div>\n )}\n {cmdbInstanceDetails.map((detail, index) => (\n <CmdbInstanceDetail key={index} {...detail} />\n ))}\n {files.length > 0 && <FileList files={files} large={sizeLarge} />}\n {isLeaf &&\n !job.humanAction &&\n job.requestHumanAction &&\n (job.state === \"working\" || job.state === \"input-required\") && (\n <RequestHumanAction action={job.requestHumanAction} />\n )}\n </div>\n {job.generatedView ? (\n <ViewContainer job={job} onSizeChange={handleViewSizeChange} />\n ) : null}\n </div>\n );\n}\n\ninterface ViewContainerProps {\n job: Job;\n onSizeChange?: (value: \"medium\" | \"large\") => void;\n}\n\nfunction ViewContainer({ job, onSizeChange }: ViewContainerProps) {\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 let scrollableContent: HTMLElement | undefined;\n for (const el of e.nativeEvent.composedPath()) {\n if (el === ref.current) {\n break;\n }\n if (!(el instanceof HTMLElement)) {\n continue;\n }\n if (el.tagName === \"PRE\") {\n if (el.scrollWidth > el.clientWidth) {\n found = true;\n break;\n }\n } else if (el.classList.contains(\"ant-table-content\")) {\n scrollableContent = el;\n } else if (\n el.classList.contains(\"ant-table\") &&\n el.classList.contains(\"ant-table-scroll-horizontal\")\n ) {\n if (\n scrollableContent &&\n scrollableContent.scrollWidth > scrollableContent.clientWidth\n ) {\n found = true;\n break;\n }\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={styles[\"view-container\"]}\n ref={ref}\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n >\n <CreatedView job={job} noHeading onSizeChange={onSizeChange} />\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]!./NodeEnd.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]!./NodeEnd.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React, { useContext } from \"react\";\nimport styles from \"./NodeEnd.module.css\";\nimport { K, t } from \"../i18n\";\nimport { WrappedIcon } from \"../../shared/bricks\";\nimport { TaskContext } from \"../../shared/TaskContext\";\n\nexport function NodeEnd(): JSX.Element {\n const { onShare, replay, conversationState } = useContext(TaskContext);\n\n return (\n <div className={styles[\"node-end\"]}>\n {replay && conversationState === \"completed\" && (\n <div className={styles.content}>\n <span className={styles.icon}>\n <WrappedIcon lib=\"fa\" prefix=\"fas\" icon=\"check\" />\n </span>\n <span className={styles.text}>{t(K.TASK_COMPLETED)}</span>\n </div>\n )}\n {!replay && (\n <button className={styles.button} onClick={onShare}>\n {t(K.SHARE)}\n </button>\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]!./ToolCallDetail.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]!./ToolCallDetail.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 type { Drawer } from \"@next-bricks/containers/drawer\";\nimport classNames from \"classnames\";\nimport type { DataPart, Job, Part } from \"../../shared/interfaces\";\nimport { WrappedCodeBlock, WrappedDrawer } from \"../../shared/bricks\";\nimport styles from \"./ToolCallDetail.module.css\";\nimport sharedStyles from \"../shared.module.css\";\nimport { K, t } from \"../i18n\";\nimport { TaskContext } from \"../../shared/TaskContext\";\nimport { ToolCallStatus } from \"../ToolCallStatus/ToolCallStatus\";\nimport { ToolProgressLine } from \"../ToolProgressLine/ToolProgressLine\";\nimport { EnhancedMarkdown } from \"../EnhancedMarkdown/EnhancedMarkdown\";\nimport { MarkdownPre } from \"../../shared/MarkdownPre\";\n\nexport interface ToolCallDetailProps {\n job: Job;\n}\n\nfunction getDrawerWidth() {\n const { innerWidth } = window;\n return innerWidth < 800\n ? Math.min(500, innerWidth)\n : innerWidth < 1000\n ? innerWidth * 0.8\n : 800;\n}\n\nexport function ToolCallDetail({ job }: ToolCallDetailProps): JSX.Element {\n const { setActiveDetail } = useContext(TaskContext);\n const toolCall = job.toolCall!;\n const toolTitle = toolCall.annotations?.title;\n\n const [progress, intermediateParts, responseParts] = useMemo(() => {\n const toolCallMessages = job.messages?.filter((msg) => msg.role === \"tool\");\n const intermediateParts: DataPart[] = [];\n const responseParts: Part[] = [];\n let progress: DataPart | undefined;\n for (const message of toolCallMessages ?? []) {\n for (const part of message.parts) {\n if (part.type === \"data\") {\n switch (part.data?.type) {\n case \"progress\":\n // Take the last progress part\n progress = part;\n continue;\n case \"markdown\":\n case \"cmdb_instance_detail\":\n case \"static_data_view\":\n continue;\n default:\n intermediateParts.push(part);\n continue;\n }\n } else if (part.type === \"file\") {\n continue;\n }\n responseParts.push(part);\n }\n }\n return [progress, intermediateParts, responseParts];\n }, [job.messages]);\n\n const handleClose = useCallback(() => {\n setTimeout(() => {\n setActiveDetail(null);\n }, 300);\n }, [setActiveDetail]);\n\n const ref = useRef<Drawer>(null);\n\n useEffect(() => {\n setTimeout(() => {\n ref.current?.open();\n });\n }, []);\n\n const [width, setWidth] = useState(getDrawerWidth);\n\n useEffect(() => {\n const onResize = () => {\n setWidth(getDrawerWidth);\n };\n window.addEventListener(\"resize\", onResize);\n return () => {\n window.removeEventListener(\"resize\", onResize);\n };\n }, []);\n\n const hasProcessParts = intermediateParts.length > 0 || !!progress;\n const hasResponseParts = responseParts.length > 0;\n const toolState =\n ([\"working\", \"input-required\"].includes(job.state) && hasProcessParts) ||\n hasResponseParts\n ? \"completed\"\n : job.state;\n\n const failed = job.isError || toolState === \"failed\";\n\n return (\n <WrappedDrawer\n ref={ref}\n customTitle={toolTitle || toolCall.name}\n width={width}\n closable\n mask\n maskClosable\n keyboard\n themeVariant=\"elevo\"\n onClose={handleClose}\n >\n <ToolCallStatus job={job} variant=\"read-only\" />\n <div className={styles.detail}>\n <div className={styles.heading}>{t(K.ARGUMENTS)}:</div>\n <div className={`${styles.body} ${sharedStyles.markdown}`}>\n <PreComponent\n content={toolCall.originalArguments}\n maybeJson\n fallbackAsMarkdown\n />\n </div>\n </div>\n {hasProcessParts && (\n <div className={styles.detail}>\n <div className={styles.heading}>{t(K.PROCESS)}:</div>\n <div className={styles.body}>\n {intermediateParts.map((part, partIndex) =>\n part.data?.type === \"stream\" ? (\n <div\n key={partIndex}\n className={classNames(\n styles[\"stream-message\"],\n sharedStyles.markdown\n )}\n >\n <EnhancedMarkdown\n className={sharedStyles[\"markdown-wrapper\"]}\n content={part.data.message}\n />\n </div>\n ) : (\n <div key={partIndex} className={sharedStyles.markdown}>\n <PreComponent content={JSON.stringify(part)} />\n </div>\n )\n )}\n {!!progress && (\n <div\n className={classNames(styles[\"progress-container\"], {\n [styles[\"progress-fallback\"]]: failed,\n })}\n >\n <ToolProgressLine progress={progress} failed={failed} />\n </div>\n )}\n </div>\n </div>\n )}\n {hasResponseParts && (\n <div className={styles.detail}>\n <div className={styles.heading}>{t(K.RESPONSE)}:</div>\n <div className={`${styles.body} ${sharedStyles.markdown}`}>\n {responseParts.map((part, partIndex) =>\n part.type === \"data\" && part.data?.type === \"progress\" ? null : (\n <PreComponent\n key={partIndex}\n content={\n part.type === \"text\" ? part.text : JSON.stringify(part)\n }\n maybeJson={part.type === \"text\"}\n />\n )\n )}\n </div>\n </div>\n )}\n </WrappedDrawer>\n );\n}\n\nfunction PreComponent({\n content,\n maybeJson,\n fallbackAsMarkdown,\n}: {\n content?: string;\n maybeJson?: boolean;\n fallbackAsMarkdown?: boolean;\n}): JSX.Element | null {\n const [refinedContent, fallback, asMarkdown] = useMemo(() => {\n if (maybeJson && content) {\n try {\n const json = JSON.parse(content);\n return [JSON.stringify(json, null, 2), false, false];\n } catch {\n // Fallback to original content\n if (fallbackAsMarkdown) {\n return [content, false, true];\n }\n }\n }\n return [content, true, false];\n }, [content, fallbackAsMarkdown, maybeJson]);\n\n return asMarkdown ? (\n <div className={styles[\"markdown-block\"]}>\n <EnhancedMarkdown\n className={sharedStyles[\"markdown-wrapper\"]}\n content={refinedContent}\n />\n </div>\n ) : fallback ? (\n <div className={styles[\"code-fallback\"]}>\n <MarkdownPre>\n <code>{refinedContent}</code>\n </MarkdownPre>\n </div>\n ) : (\n <WrappedCodeBlock\n className={styles[\"code-block\"]}\n source={refinedContent!}\n language=\"json\"\n themeVariant=\"elevo\"\n />\n );\n}\n","import { maxBy, minBy } from \"lodash\";\nimport type { GraphNode, NodePosition, NodeRect } from \"../interfaces\";\nimport { IS_MAC } from \"../constants\";\n\nexport type KeyboardAction =\n | KeyboardActionSwitchActiveNode\n | KeyboardActionEnter\n | KeyboardActionScroll;\n\nexport interface KeyboardActionSwitchActiveNode {\n action: \"switch-active-node\";\n node: GraphNode | null;\n}\n\nexport interface KeyboardActionEnter {\n action: \"enter\";\n node: GraphNode;\n}\n\nexport interface KeyboardActionScroll {\n action: \"scroll\";\n direction: \"up\" | \"down\" | \"left\" | \"right\";\n range: \"line\" | \"page\" | \"document\";\n node?: undefined;\n}\n\n/**\n * Keyboard navigation:\n * - When no node is active, simulate browser page scrolling shortcuts:\n * - Space: scroll down (or up with shift) by page\n * - Arrow keys: scroll by line in the direction of the arrow\n * - Arrow up/down with ⌘ on Mac: scroll to top/bottom of document\n * - Home/end: scroll to top/bottom of document\n * - When a node is active:\n * - Arrow keys: switch active node in the direction of the arrow\n * - Arrow up/down with ⌘ on Mac: switch active node to the top/bottom most node\n * - Escape: clear active node\n * - Enter: Enter the detail of the active node\n */\nexport function handleKeyboardNav(\n event: KeyboardEvent,\n {\n activeNodeId,\n nodes,\n }: {\n activeNodeId: string | null;\n nodes: GraphNode[];\n }\n): KeyboardAction | undefined {\n if (event.ctrlKey || event.altKey) {\n return;\n }\n\n const activeNode = activeNodeId\n ? nodes.find((node) => node.id === activeNodeId)\n : null;\n\n const key = event.key;\n\n if (!activeNode) {\n if (key === \" \" && !event.metaKey) {\n return {\n action: \"scroll\",\n direction: event.shiftKey ? \"down\" : \"up\",\n range: \"page\",\n };\n }\n\n if (event.shiftKey || (!IS_MAC && event.metaKey)) {\n return;\n }\n\n switch (key) {\n case \"Home\":\n return {\n action: \"scroll\",\n direction: \"up\",\n range: \"document\",\n };\n case \"End\":\n return {\n action: \"scroll\",\n direction: \"down\",\n range: \"document\",\n };\n case \"ArrowUp\":\n case \"ArrowDown\": {\n const direction = key === \"ArrowUp\" ? \"up\" : \"down\";\n if (event.metaKey) {\n return {\n action: \"scroll\",\n direction,\n range: \"document\",\n };\n }\n return {\n action: \"scroll\",\n direction,\n range: \"line\",\n };\n }\n case \"ArrowLeft\":\n case \"ArrowRight\":\n if (!event.metaKey) {\n return {\n action: \"scroll\",\n direction: key === \"ArrowLeft\" ? \"left\" : \"right\",\n range: \"line\",\n };\n }\n }\n\n // Move up or down by arrow keys\n\n return;\n }\n\n if (event.shiftKey || (!IS_MAC && event.metaKey)) {\n return;\n }\n\n const moveOnAxis = (axis: \"x\" | \"y\", direction: 1 | -1) => {\n if (event.metaKey && axis === \"x\") {\n return;\n }\n const oppositeAxis = axis === \"x\" ? \"y\" : \"x\";\n const activePosition = getCenterPosition(activeNode.view!);\n const candidates = nodes.filter((node) => {\n let diff: number;\n let position: NodePosition;\n return (\n node !== activeNode &&\n node.type !== \"start\" &&\n node.type !== \"end\" &&\n node.type !== \"feedback\" &&\n node.type !== \"error\" &&\n node.type !== \"replay\" &&\n node.type !== \"instruction\" &&\n ((position = getCenterPosition(node.view!)),\n (diff = (position[axis] - activePosition[axis]) * direction),\n diff > 0) &&\n diff > Math.abs(activePosition[oppositeAxis] - position[oppositeAxis])\n );\n });\n return (event.metaKey ? maxBy : minBy)(candidates, (node) => {\n const position = getCenterPosition(node.view!);\n return (\n (activePosition[oppositeAxis] - position[oppositeAxis]) ** 2 +\n (activePosition[axis] - position[axis]) ** 2\n );\n });\n };\n\n let node: GraphNode | undefined | null;\n let action: \"switch-active-node\" | \"enter\" | undefined;\n\n switch (key) {\n case \"ArrowLeft\":\n action = \"switch-active-node\";\n node = moveOnAxis(\"x\", -1);\n break;\n case \"ArrowUp\":\n action = \"switch-active-node\";\n node = moveOnAxis(\"y\", -1);\n break;\n case \"ArrowRight\":\n action = \"switch-active-node\";\n node = moveOnAxis(\"x\", 1);\n break;\n case \"ArrowDown\":\n action = \"switch-active-node\";\n node = moveOnAxis(\"y\", 1);\n break;\n case \"Escape\":\n action = \"switch-active-node\";\n node = null;\n break;\n case \"Enter\":\n action = \"enter\";\n node = activeNode;\n break;\n }\n\n if (action && node !== undefined) {\n return { action, node: node! };\n }\n}\n\nfunction getCenterPosition(view: NodeRect): NodePosition {\n return {\n x: view.x + view.width / 2,\n y: view.y + view.height / 2,\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]!./Nav.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]!./Nav.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useEffect, useMemo, useRef } from \"react\";\nimport classNames from \"classnames\";\nimport styles from \"./Nav.module.css\";\nimport type { GraphNavItem } from \"../interfaces\";\nimport { WrappedIcon } from \"../../shared/bricks\";\nimport { DONE_STATES } from \"../../shared/constants\";\nimport type {\n ConversationState,\n JobState,\n TaskState,\n} from \"../../shared/interfaces\";\n\nexport interface NavProps {\n nav: GraphNavItem[] | undefined;\n currentNavId: string | null;\n taskState: TaskState | ConversationState | undefined;\n onClick: (jobId: string) => void;\n}\n\ninterface MergedNavItem extends Omit<GraphNavItem, \"state\"> {\n disabled?: boolean;\n state?: JobState;\n}\n\nexport function Nav({ nav, currentNavId, taskState, onClick }: NavProps) {\n const ref = useRef<HTMLUListElement>(null);\n useEffect(() => {\n const navElement = ref.current;\n if (!navElement || !currentNavId) {\n return;\n }\n navElement\n .querySelector(`[data-job-id=\"${currentNavId}\"]`)\n ?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n });\n }, [currentNavId]);\n\n useEffect(() => {\n const navElement = ref.current;\n if (!navElement || currentNavId) {\n return;\n }\n\n const lastActiveItem = nav?.findLast(\n (item) =>\n DONE_STATES.includes(item.state || \"unknown\") ||\n item.state === \"working\" ||\n item.state === \"input-required\"\n );\n if (lastActiveItem) {\n navElement\n .querySelector(`[data-job-id=\"${lastActiveItem.id}\"]`)\n ?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n });\n }\n }, [currentNavId, nav]);\n\n return (\n <div className={styles.container}>\n <ul className={styles.nav} ref={ref}>\n {nav?.map((item) => (\n <NavItem\n key={item.id}\n {...item}\n currentNavId={currentNavId}\n taskState={taskState}\n onClick={onClick}\n />\n ))}\n </ul>\n </div>\n );\n}\n\ninterface NavItemProps extends MergedNavItem {\n currentNavId: string | null;\n taskState: TaskState | ConversationState | undefined;\n onClick: (jobId: string) => void;\n}\n\nfunction NavItem({\n id,\n title,\n state,\n level,\n taskState,\n currentNavId,\n disabled,\n onClick,\n}: NavItemProps) {\n const { className, icon } = useMemo(() => {\n return getClassNameAndIconProps(state, taskState);\n }, [state, taskState]);\n\n return (\n <li\n className={classNames(styles.item, {\n [styles.active]: currentNavId === id,\n })}\n style={{ marginLeft: `${level * 20}px` }}\n >\n <a\n className={classNames(styles.link, className, {\n [styles.disabled]: disabled,\n })}\n data-job-id={id}\n title={title}\n onClick={() => {\n if (!disabled) {\n onClick(id);\n }\n }}\n >\n <WrappedIcon className={styles.icon} {...icon} />\n <span className={styles.text}>{title}</span>\n </a>\n </li>\n );\n}\n\nfunction getClassNameAndIconProps(\n state: JobState | undefined,\n taskState: TaskState | ConversationState | undefined\n) {\n switch (state) {\n case \"completed\":\n return {\n className: styles.completed,\n icon: {\n lib: \"fa\",\n prefix: \"fas\",\n icon: \"check\",\n },\n };\n case \"submitted\":\n case \"working\":\n if (taskState === \"terminated\") {\n return {\n icon: {\n lib: \"fa\",\n prefix: \"far\",\n icon: \"circle-stop\",\n },\n };\n }\n return {\n className: styles.working,\n icon: {\n lib: \"antd\",\n theme: \"outlined\",\n icon: \"loading-3-quarters\",\n spinning: true,\n },\n };\n case \"input-required\":\n return {\n className: styles[\"input-required\"],\n icon: {\n lib: \"fa\",\n prefix: \"far\",\n icon: \"circle-user\",\n },\n };\n case \"failed\":\n return {\n className: styles.failed,\n icon: {\n lib: \"fa\",\n prefix: \"fas\",\n icon: \"xmark\",\n },\n };\n case \"canceled\":\n case \"terminated\" as JobState:\n return {\n className: styles.canceled,\n icon: {\n lib: \"fa\",\n prefix: \"far\",\n icon: \"circle-stop\",\n },\n };\n case \"skipped\":\n return {\n icon: {\n lib: \"fa\",\n prefix: \"fas\",\n icon: \"ban\",\n },\n };\n default:\n return {\n icon: {\n lib: \"fa\",\n prefix: \"far\",\n icon: \"clock\",\n },\n };\n }\n}\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./NodeLoading.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]!./NodeLoading.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React from \"react\";\nimport styles from \"./NodeLoading.module.css\";\n\nexport function NodeLoading(): JSX.Element {\n return (\n <div className={styles.loading}>\n <div className={styles.inner} />\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]!./JsxEditor.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]!./JsxEditor.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { Suspense, useContext, useMemo, useState } from \"react\";\nimport { asyncWrapBrick } from \"@next-core/react-runtime\";\nimport type { CodeEditor, CodeEditorProps } from \"@next-bricks/vs/code-editor\";\nimport nextTsxDefinition from \"@next-shared/tsx-parser/lib/next-tsx.d.ts?raw\";\nimport componentsDefinition from \"@next-shared/tsx-converter/lib/components.d.ts?raw\";\nimport styles from \"./JsxEditor.module.css\";\nimport { WrappedButton, WrappedIconButton } from \"../bricks\";\nimport { ICON_CLOSE } from \"../constants\";\nimport { TaskContext } from \"../TaskContext\";\nimport { getAsyncConstructedView } from \"../getAsyncConstructedView\";\n\ninterface CodeEditorEvents {\n \"code.change\": CustomEvent<string>;\n}\n\ninterface CodeEditorMapEvents {\n onCodeChange: \"code.change\";\n}\n\nconst editorLibs: CodeEditorProps[\"extraLibs\"] = [\n {\n filePath: \"/node_modules/next-tsx/components.d.ts\",\n content: componentsDefinition.replaceAll(\"export interface\", \"interface\"),\n },\n {\n filePath: \"/node_modules/next-tsx/package.json\",\n content: JSON.stringify({\n name: \"next-tsx\",\n types: \"./index.d.ts\",\n }),\n },\n {\n filePath: \"/node_modules/next-tsx/index.d.ts\",\n content: nextTsxDefinition,\n },\n {\n filePath: \"/node_modules/next-tsx/contracts.d.ts\",\n content: `type ContractMap = Record<string, any>;`,\n },\n];\n\nconst AsyncWrappedCodeEditor = React.lazy(async () => ({\n default: await asyncWrapBrick<\n CodeEditor,\n CodeEditorProps,\n CodeEditorEvents,\n CodeEditorMapEvents\n >(\"vs.code-editor\", {\n onCodeChange: \"code.change\",\n }),\n}));\n\nexport function JsxEditor() {\n const {\n workspace,\n manuallyUpdatedViews,\n updateView,\n activeJsxEditorJob,\n setActiveJsxEditorJob,\n } = useContext(TaskContext);\n const view =\n manuallyUpdatedViews?.get(activeJsxEditorJob!.id) ??\n activeJsxEditorJob!.generatedView!;\n const source = view.code;\n const [code, setCode] = useState(source);\n\n const libs = useMemo(() => {\n const commonLibs = editorLibs!;\n if (view.withContexts?.RESPONSE) {\n return [\n ...commonLibs,\n {\n filePath: \"tsx-view/response.d.ts\",\n content: `const RESPONSE_VALUE = ${JSON.stringify(view.withContexts.RESPONSE, null, 2)};\n\ndeclare const RESPONSE: typeof RESPONSE_VALUE;`,\n },\n ];\n }\n return commonLibs;\n }, [view.withContexts?.RESPONSE]);\n\n return (\n <div className={styles.container}>\n <div className={styles.editor}>\n <div className={styles.header}>\n <span className={styles.title}>JSX Editor</span>\n <WrappedIconButton\n icon={ICON_CLOSE}\n onClick={() => {\n setActiveJsxEditorJob?.(undefined);\n }}\n />\n </div>\n <div className={styles.body}>\n <div className={styles.content}>\n <Suspense fallback=\"Loading...\">\n <AsyncWrappedCodeEditor\n value={source}\n onCodeChange={(e) => {\n setCode(e.detail);\n }}\n language=\"typescript\"\n uri=\"file:///view.tsx\"\n automaticLayout=\"fit-container\"\n theme=\"tm-vs-dark\"\n extraLibs={libs}\n data-override-theme=\"dark-v2\"\n />\n </Suspense>\n </div>\n </div>\n <div className={styles.footer}>\n <WrappedButton\n themeVariant=\"elevo\"\n type=\"primary\"\n onClick={() => {\n const newView = {\n ...view,\n code,\n };\n newView.asyncConstructedView = getAsyncConstructedView(\n newView,\n workspace\n );\n updateView?.(activeJsxEditorJob!.id, newView);\n setActiveJsxEditorJob?.(undefined);\n }}\n >\n Save\n </WrappedButton>\n </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]!./NodeError.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]!./NodeError.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from \"react\";\nimport styles from \"./NodeError.module.css\";\nimport jobStyles from \"../NodeJob/NodeJob.module.css\";\nimport classNames from \"classnames\";\n\nexport interface NodeErrorProps {\n content: string;\n}\n\nexport function NodeError({ content }: NodeErrorProps) {\n return (\n <div className={classNames(jobStyles[\"node-job\"], jobStyles.error)}>\n <div className={styles.error}>{content}</div>\n </div>\n );\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport styles from \"../NodeJob/NodeJob.module.css\";\nimport type { ActivityRun, ServiceFlowRun } from \"../../shared/interfaces\";\nimport { K, t } from \"../i18n\";\n\nexport interface NodeChunkProps {\n type: \"flow\" | \"activity\";\n active?: boolean;\n flow: ServiceFlowRun;\n activity?: ActivityRun;\n}\n\nexport function NodeChunk({ type, active, flow, activity }: NodeChunkProps) {\n return (\n <div\n className={classNames(styles[\"node-job\"], {\n [styles.active]: active,\n })}\n >\n <div className={styles.background} />\n <div className={styles.body}>\n {type === \"flow\"\n ? t(K.INITIATING_SERVICE_FLOW, { name: flow.name })\n : t(K.STARTING_SERVICE_FLOW_ACTIVITY, { name: activity!.name })}\n </div>\n </div>\n );\n}\n","// istanbul ignore file: experimental\nimport React, {\n memo,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { getBasePath, getRuntime } from \"@next-core/runtime\";\nimport \"@next-core/theme\";\nimport classNames from \"classnames\";\nimport ResizeObserver from \"resize-observer-polyfill\";\nimport { select, type Selection, type TransitionLike } from \"d3-selection\";\nimport { ZoomTransform } from \"d3-zoom\";\nimport { mergeRects } from \"@next-shared/diagram\";\nimport styles from \"./styles.module.css\";\nimport { useZoom } from \"./useZoom.js\";\nimport type {\n SizeTuple,\n GraphNode,\n RequirementGraphNode,\n JobGraphNode,\n ZoomAction,\n FeedbackDetail,\n FlowGraphNode,\n ActivityGraphNode,\n} from \"./interfaces.js\";\nimport { useAutoCenter } from \"./useAutoCenter.js\";\nimport { useLayout } from \"./useLayout.js\";\nimport { useConversationDetail } from \"./useConversationDetail\";\nimport { useConversationGraph } from \"./useConversationGraph\";\nimport { ZoomBar } from \"./ZoomBar/ZoomBar.js\";\nimport { NodeStart } from \"./NodeStart/NodeStart.js\";\nimport { NodeRequirement } from \"./NodeRequirement/NodeRequirement.js\";\nimport { NodeInstruction } from \"./NodeInstruction/NodeInstruction.js\";\nimport { NodeJob } from \"./NodeJob/NodeJob.js\";\nimport { NodeEnd } from \"./NodeEnd/NodeEnd.js\";\nimport {\n CANVAS_PADDING_BOTTOM,\n CANVAS_PADDING_LEFT,\n CANVAS_PADDING_RIGHT,\n CANVAS_PADDING_TOP,\n END_NODE_ID,\n FEEDBACK_NODE_ID,\n REPLAY_NODE_ID,\n} from \"./constants.js\";\nimport { DONE_STATES, GENERAL_DONE_STATES } from \"../shared/constants.js\";\nimport { WrappedIcon } from \"../shared/bricks\";\nimport { CanvasContext } from \"./CanvasContext.js\";\nimport { ToolCallDetail } from \"./ToolCallDetail/ToolCallDetail.js\";\nimport { getScrollTo } from \"./utils/getScrollTo.js\";\nimport { handleKeyboardNav } from \"./utils/handleKeyboardNav.js\";\nimport { ExpandedView } from \"../shared/ExpandedView/ExpandedView.js\";\nimport { Nav } from \"./Nav/Nav.js\";\nimport { ChatBox } from \"../shared/ChatBox/ChatBox.js\";\nimport { NodeFeedback } from \"../shared/NodeFeedback/NodeFeedback.js\";\nimport { TaskContext } from \"../shared/TaskContext.js\";\nimport { NodeLoading } from \"./NodeLoading/NodeLoading.js\";\nimport { JsxEditor } from \"../shared/JsxEditor/JsxEditor.js\";\nimport { NodeError } from \"./NodeError/NodeError.js\";\nimport type {\n GeneratedView,\n FileInfo,\n Job,\n CommandPayload,\n ActiveDetail,\n ServiceFlowRun,\n ActivityRun,\n ExtraChatPayload,\n ActiveImages,\n} from \"../shared/interfaces\";\nimport { NodeReplay } from \"./NodeReplay/NodeReplay.js\";\nimport type { ConversationDetail, CruiseCanvasProps } from \".\";\nimport { useFlowAndActivityMap } from \"../shared/useFlowAndActivityMap\";\nimport { useFulfilledActiveDetail } from \"../shared/useFulfilledActiveDetail\";\nimport { NodeChunk } from \"./NodeChunk/NodeChunk\";\nimport { FilePreview } from \"../shared/FilePreview/FilePreview\";\nimport { ImagesPreview } from \"../shared/FilePreview/ImagesPreview\";\nimport { useHandleEscape } from \"../shared/useHandleEscape\";\n\nconst MemoizedNodeComponent = memo(NodeComponent);\n\ninterface CruiseCanvasComponentProps extends CruiseCanvasProps {\n conversationId: string;\n onShare: () => void;\n onTerminate: () => void;\n onSubmitFeedback: (detail: FeedbackDetail) => void;\n onSwitchToChat: () => void;\n onFeedbackOnView: (viewId: string) => void;\n onDetailChange: (detail: ConversationDetail) => void;\n}\n\ninterface ScrollToOptions {\n nodeId?: string;\n jobId?: string;\n\n /**\n * @default \"auto\"\n */\n behavior?: \"smooth\" | \"instant\" | \"auto\";\n\n /**\n * When set to \"start\", force scroll even if the node is fully visible.\n *\n * @default \"nearest\"\n */\n block?: \"start\" | \"nearest\";\n}\n\nexport interface CruiseCanvasRef {\n resumed?: () => void;\n feedbackSubmitDone: () => void;\n feedbackSubmitFailed: () => void;\n feedbackOnViewDone: (viewId: string) => void;\n}\n\nexport function CruiseCanvasComponent(\n {\n conversationId,\n initialRequest,\n replay,\n replayDelay,\n supports,\n showHiddenJobs,\n showHumanActions,\n showFeedback: propShowFeedback,\n showFeedbackAfterFailed,\n showFeedbackOnView,\n showUiSwitch,\n showJsxEditor,\n previewUrlTemplate,\n showCases,\n exampleProjects,\n tryItOutUrl,\n separateInstructions,\n uploadOptions,\n onShare,\n onTerminate,\n onSubmitFeedback,\n onSwitchToChat,\n onFeedbackOnView,\n onDetailChange,\n }: CruiseCanvasComponentProps,\n ref: React.Ref<CruiseCanvasRef>\n) {\n const rootRef = useRef<HTMLDivElement>(null);\n const {\n conversation,\n tasks,\n serviceFlows,\n errors,\n humanInputRef,\n skipToResults,\n watchAgain,\n } = useConversationDetail(\n conversationId,\n initialRequest,\n replay,\n replayDelay\n );\n const { flowMap, activityMap } = useFlowAndActivityMap(serviceFlows);\n const graph = useConversationGraph(\n conversation,\n tasks,\n errors,\n flowMap,\n activityMap,\n {\n showHiddenJobs,\n showHumanActions,\n separateInstructions,\n }\n );\n const rawNodes = graph?.nodes;\n const rawEdges = graph?.edges;\n const nav = graph?.nav;\n const views = graph?.views;\n const jobMap = graph?.jobMap;\n const pageTitle = conversation?.title ?? \"\";\n const conversationState = conversation?.state;\n const [activeNodeId, setActiveNodeId] = useState<string | null>(null);\n const currentNavId = useMemo(() => {\n if (activeNodeId) {\n const [type, jobId] = activeNodeId.split(\":\");\n if (type === \"job\" || type === \"view\") {\n return jobId;\n }\n }\n return null;\n }, [activeNodeId]);\n\n useEffect(() => {\n onDetailChange({\n projectId: conversation?.projectId,\n });\n }, [onDetailChange, conversation?.projectId]);\n\n const [submittingFeedback, setSubmittingFeedback] = useState(false);\n const [submittedFeedback, setSubmittedFeedback] = useState(false);\n const [showFeedback, setShowFeedback] = useState<boolean>(!!propShowFeedback);\n useEffect(() => {\n setShowFeedback(!!propShowFeedback);\n }, [propShowFeedback]);\n const [feedbackDoneViews, setFeedbackDoneViews] = useState<\n Set<string> | undefined\n >();\n\n const handleSubmitFeedback = useCallback(\n (detail: FeedbackDetail) => {\n setSubmittingFeedback(true);\n onSubmitFeedback(detail);\n },\n [onSubmitFeedback]\n );\n\n useImperativeHandle(\n ref,\n () => ({\n feedbackSubmitDone: () => {\n setSubmittedFeedback(true);\n setTimeout(() => {\n setShowFeedback(false);\n }, 3000);\n },\n feedbackSubmitFailed: () => {\n setSubmittingFeedback(false);\n },\n feedbackOnViewDone: (viewId: string) => {\n setFeedbackDoneViews((prev) => {\n const newSet = new Set(prev);\n newSet.add(viewId);\n return newSet;\n });\n },\n }),\n []\n );\n\n // Enable transition after 3 seconds to avoid initial flicker\n const transitionEnabledRef = useRef(false);\n useEffect(() => {\n const timer = setTimeout(() => {\n transitionEnabledRef.current = true;\n }, 3e3);\n return () => {\n clearTimeout(timer);\n };\n }, []);\n\n useEffect(() => {\n getRuntime().applyPageTitle(pageTitle);\n }, [pageTitle]);\n\n const humanInput = useCallback(\n (input: string | null, action?: string, extra?: ExtraChatPayload) => {\n humanInputRef.current?.(input, action, extra);\n },\n [humanInputRef]\n );\n\n const [sizeMap, setSizeMap] = useState<Map<string, SizeTuple> | null>(null);\n const onNodeResize = useCallback((id: string, size: SizeTuple | null) => {\n // Handle resize logic here\n setSizeMap((prev) => {\n if (!size) {\n if (!prev) {\n return null;\n }\n const newMap = new Map(prev);\n const deleted = newMap.delete(id);\n return deleted ? newMap : prev;\n }\n return prev ? new Map(prev).set(id, size) : new Map([[id, size]]);\n });\n }, []);\n\n const { sizeReady, nodes, edges } = useLayout({\n rawNodes,\n rawEdges,\n completed: conversationState === \"completed\",\n failed: conversationState === \"failed\",\n finished: conversation?.finished,\n sizeMap,\n showFeedback,\n showFeedbackAfterFailed,\n replay,\n noTasks: tasks.length === 0,\n });\n\n // Disable auto scroll when the user manually scrolled up\n const detectScrolledUpRef = useRef(false);\n const manualScrolledUpRef = useRef(false);\n\n const [hoverOnScrollableContent, setHoverOnScrollableContent] =\n useState(false);\n\n const { grabbing, transform, transformRef, zoomer /* , scaleRange */ } =\n useZoom({\n rootRef,\n zoomable: sizeReady,\n scrollable: sizeReady && !hoverOnScrollableContent,\n pannable: sizeReady,\n manualScrolledUpRef,\n });\n\n const transitionRef = useRef(false);\n\n const pushZoomTransition = useMemo(() => {\n let nextAction: ZoomAction | null = null;\n\n const run = (action: ZoomAction) => {\n const current = transformRef.current;\n const target = typeof action === \"function\" ? action(current) : action;\n\n if (!target) {\n return;\n }\n\n const { transform, translateBy } = target;\n\n let selection:\n | Selection<HTMLDivElement, unknown, null, undefined>\n | TransitionLike<HTMLDivElement, unknown> = select(rootRef.current!);\n\n if (transitionEnabledRef.current && target.duration !== 0) {\n transitionRef.current = true;\n selection = selection\n .transition()\n .duration(target.duration ?? 300)\n .ease((t) => t * (2 - t)) // Ease in-out\n .on(\"end\", () => {\n transitionRef.current = false;\n if (nextAction) {\n const next = nextAction;\n nextAction = null;\n run(next);\n }\n });\n }\n\n if (transform) {\n zoomer.transform(\n selection,\n new ZoomTransform(\n transform.k ?? current.k,\n transform.x ?? current.x,\n transform.y ?? current.y\n )\n );\n } else {\n zoomer.translateBy(selection, translateBy[0] ?? 0, translateBy[1] ?? 0);\n }\n };\n\n return (action: ZoomAction) => {\n if (transitionRef.current) {\n nextAction = action;\n } else {\n run(action);\n }\n };\n }, [transformRef, zoomer]);\n\n const { centered, setCentered, reCenterRef } = useAutoCenter({\n nodes,\n sizeReady,\n zoomer,\n rootRef,\n pushZoomTransition,\n });\n\n const conversationDone = DONE_STATES.includes(conversationState);\n const canChat = conversationDone || conversationState === \"input-required\";\n\n const nonLeafNodes = useMemo(() => {\n return new Set<string>(edges.map((edge) => edge.source));\n }, [edges]);\n\n const bottom = useMemo(() => {\n if (!sizeReady) {\n return null;\n }\n\n const leafNodes: GraphNode[] = [];\n for (const node of nodes) {\n if (!nonLeafNodes.has(node.id)) {\n leafNodes.push(node);\n }\n }\n if (leafNodes.length > 0) {\n const y1 = Math.max(\n ...leafNodes.map((node) => node.view!.y + node.view!.height)\n );\n return y1;\n }\n\n return null;\n }, [nodes, nonLeafNodes, sizeReady]);\n\n const bottomRef = useRef<number | null>(null);\n useEffect(() => {\n bottomRef.current = bottom;\n }, [bottom]);\n\n // Make the latest (bottom most) node visible\n useEffect(() => {\n const root = rootRef.current;\n if (\n !root ||\n bottom === null ||\n (detectScrolledUpRef.current && manualScrolledUpRef.current)\n ) {\n return;\n }\n pushZoomTransition((current) => {\n const { offsetHeight } = root;\n const transformedBottom = bottom * current.k + current.y;\n const diffY = offsetHeight - CANVAS_PADDING_BOTTOM - transformedBottom;\n if (diffY < 0) {\n // Use `zoomer.transform()` which will not be restricted to its translate/scale extent\n return {\n transform: {\n y: current.y + diffY,\n },\n duration: diffY > -100 ? 100 : diffY < -500 ? 300 : 200,\n };\n }\n return null;\n });\n }, [bottom, pushZoomTransition]);\n\n // Detect if the user scrolled up manually\n useEffect(() => {\n const bottom = bottomRef.current;\n const root = rootRef.current;\n if (!root || bottom === null || transitionRef.current) {\n return;\n }\n const { offsetHeight } = root;\n const transformedBottom = bottom * transform.k + transform.y;\n\n const diffY = offsetHeight - CANVAS_PADDING_BOTTOM - transformedBottom;\n detectScrolledUpRef.current = diffY < 0;\n }, [transform, zoomer]);\n\n const handleReCenter = useCallback(() => {\n reCenterRef.current = true;\n setCentered(false);\n }, [reCenterRef, setCentered]);\n\n const handleScaleChange = useCallback(\n (scale: number) => {\n zoomer.scaleTo(select(rootRef.current!), scale);\n },\n [zoomer]\n );\n\n const fullRect = useMemo(() => {\n if (!sizeReady) {\n return null;\n }\n return mergeRects(nodes.map((node) => node.view!));\n }, [nodes, sizeReady]);\n\n useEffect(() => {\n if (!fullRect) {\n return;\n }\n const root = rootRef.current;\n if (!root) {\n return;\n }\n\n const distance = 20;\n const { offsetWidth, offsetHeight } = root;\n const viewportWidth = offsetWidth / transform.k;\n const viewportHeight = offsetHeight / transform.k;\n const minX = -(viewportWidth - distance - fullRect.x);\n const maxX = viewportWidth - distance + (fullRect.x + fullRect.width);\n const minY = -(viewportHeight - distance - fullRect.y);\n const maxY = viewportHeight - distance + (fullRect.y + fullRect.height);\n\n zoomer.translateExtent([\n [minX, minY],\n [maxX, maxY],\n ]);\n }, [zoomer, transform.k, fullRect]);\n\n const scrollTo = useCallback(\n ({ nodeId, jobId, behavior, block }: ScrollToOptions) => {\n /**\n * - When the node is fully visible, take no action.\n * - Otherwise, scroll to make it fully visible while make the scroll\n * distance as small as possible.\n * - Special cases:\n * - When the node is higher or wider than the viewport, scroll to\n * the top or left of the node.\n */\n const root = rootRef.current;\n const targets = nodes.filter((n) => {\n if (nodeId && n.id !== nodeId) {\n return false;\n }\n if (jobId && (n as JobGraphNode).job?.id !== jobId) {\n return false;\n }\n return true;\n });\n if (!root || targets.length === 0) {\n return;\n }\n const rect = mergeRects(targets.map((node) => node.view!));\n\n const { x, y } = getScrollTo(\n rect,\n [root.offsetWidth, root.offsetHeight],\n [\n CANVAS_PADDING_TOP,\n CANVAS_PADDING_RIGHT,\n CANVAS_PADDING_BOTTOM,\n CANVAS_PADDING_LEFT,\n ],\n transformRef.current,\n block\n );\n\n if (x || y) {\n pushZoomTransition({\n translateBy: [x, y],\n duration: behavior === \"instant\" ? 0 : undefined,\n });\n }\n },\n [nodes, pushZoomTransition, transformRef]\n );\n\n const scrollBy = useCallback(\n (\n direction: \"up\" | \"down\" | \"left\" | \"right\",\n range: \"line\" | \"page\" | \"document\"\n ) => {\n const root = rootRef.current;\n if (!root || !sizeReady) {\n return;\n }\n let x = 0;\n let y = 0;\n let duration = 300;\n let distance: number;\n const isHorizontal = direction === \"left\" || direction === \"right\";\n if (range === \"line\") {\n const lineHeight = 40;\n distance =\n lineHeight * (direction === \"up\" || direction === \"left\" ? 1 : -1);\n duration = 150;\n } else if (range === \"page\") {\n const pageHeight = root.offsetHeight - CANVAS_PADDING_BOTTOM;\n distance = pageHeight * (direction === \"up\" ? -1 : 1);\n } else {\n const { y: top, height } = mergeRects(nodes.map((node) => node.view!));\n\n if (direction === \"down\") {\n const bottom = top + height;\n const targetHeight = bottom - top + CANVAS_PADDING_BOTTOM;\n distance = root.offsetHeight - targetHeight - transformRef.current.y;\n } else {\n distance = top + CANVAS_PADDING_TOP - transformRef.current.y;\n }\n }\n\n if (isHorizontal) {\n x = distance;\n } else {\n y = distance;\n }\n\n if (x || y) {\n pushZoomTransition({\n translateBy: [x, y],\n duration,\n });\n }\n },\n [nodes, pushZoomTransition, sizeReady, transformRef]\n );\n\n const [activeDetail, setActiveDetail] = useState<ActiveDetail | null>(null);\n const [subActiveDetail, setSubActiveDetail] = useState<ActiveDetail | null>(\n null\n );\n\n const [activeExpandedViewJobId, setActiveExpandedViewJobId] = useState<\n string | null\n >(null);\n const [activeFile, setActiveFile] = React.useState<FileInfo | null>(null);\n const [activeJsxEditorJob, setActiveJsxEditorJob] = useState<\n Job | undefined\n >();\n const [manuallyUpdatedViews, setManuallyUpdatedViews] = useState<\n Map<string, GeneratedView> | undefined\n >();\n const updateView = useCallback((jobId: string, view: GeneratedView) => {\n setManuallyUpdatedViews((prev) => {\n const next = new Map(prev);\n next.set(jobId, view);\n return next;\n });\n }, []);\n\n const firstNode = rawNodes?.[0];\n const requirementNode = firstNode?.type === \"requirement\" ? firstNode : null;\n\n const [activeImages, setActiveImages] = useState<ActiveImages | null>(null);\n\n const workspace = conversationId;\n\n const taskContextValue = useMemo(\n () => ({\n conversationId,\n conversationState,\n tasks,\n errors,\n workspace,\n previewUrlTemplate,\n replay,\n showCases,\n exampleProjects,\n uploadOptions,\n\n humanInput,\n onShare,\n onTerminate,\n supports,\n\n activeExpandedViewJobId,\n setActiveExpandedViewJobId,\n activeDetail,\n setActiveDetail,\n subActiveDetail,\n setSubActiveDetail,\n\n submittingFeedback,\n submittedFeedback,\n onSubmitFeedback: handleSubmitFeedback,\n setShowFeedback,\n\n showJsxEditor,\n activeJsxEditorJob,\n setActiveJsxEditorJob,\n manuallyUpdatedViews,\n updateView,\n showFeedbackOnView,\n onFeedbackOnView,\n feedbackDoneViews,\n\n skipToResults,\n watchAgain() {\n watchAgain();\n setCentered(false);\n },\n tryItOut() {\n const win = window.open(\n `${getBasePath().slice(0, -1)}${tryItOutUrl ?? \"/elevo\"}`,\n \"_blank\"\n );\n if (win) {\n win.__elevo_try_it_out = requirementNode\n ? {\n content: requirementNode.content,\n cmd: requirementNode.cmd,\n mentionedAiEmployeeId: requirementNode.mentionedAiEmployeeId,\n }\n : {};\n }\n },\n separateInstructions,\n activeFile,\n setActiveFile,\n activeImages,\n setActiveImages,\n }),\n [\n conversationId,\n conversationState,\n tasks,\n errors,\n workspace,\n previewUrlTemplate,\n replay,\n showCases,\n exampleProjects,\n uploadOptions,\n\n humanInput,\n onTerminate,\n onShare,\n supports,\n\n activeExpandedViewJobId,\n activeDetail,\n subActiveDetail,\n\n submittingFeedback,\n submittedFeedback,\n handleSubmitFeedback,\n\n showJsxEditor,\n activeJsxEditorJob,\n manuallyUpdatedViews,\n updateView,\n showFeedbackOnView,\n onFeedbackOnView,\n feedbackDoneViews,\n\n skipToResults,\n watchAgain,\n setCentered,\n requirementNode,\n tryItOutUrl,\n separateInstructions,\n activeFile,\n activeImages,\n ]\n );\n\n const canvasContextValue = useMemo(\n () => ({\n onNodeResize,\n setActiveNodeId,\n hoverOnScrollableContent,\n setHoverOnScrollableContent,\n }),\n [hoverOnScrollableContent, onNodeResize]\n );\n\n const fulfilledActiveDetail = useFulfilledActiveDetail(\n activeDetail,\n jobMap,\n flowMap,\n activityMap\n );\n\n const handleRootClick = useCallback((e: React.MouseEvent) => {\n for (const element of e.nativeEvent.composedPath()) {\n if (\n element instanceof HTMLElement &&\n element.classList.contains(styles.node)\n ) {\n // If the click is on a node, do not reset active node\n return;\n }\n if (element === rootRef.current) {\n break;\n }\n }\n setActiveNodeId(null);\n }, []);\n\n useEffect(() => {\n const root = rootRef.current;\n if (\n !root ||\n fulfilledActiveDetail ||\n activeExpandedViewJobId ||\n activeFile\n ) {\n return;\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (\n document.activeElement &&\n document.activeElement !== document.body &&\n document.activeElement !== root\n ) {\n return;\n }\n\n const keyboardAction = handleKeyboardNav(e, { activeNodeId, nodes });\n if (!keyboardAction) {\n return;\n }\n const { action, node } = keyboardAction;\n\n if (action === \"scroll\") {\n scrollBy(keyboardAction.direction, keyboardAction.range);\n } else if (action === \"enter\") {\n if (\n node.type !== \"job\" /* &&\n node.type !== \"flow\" &&\n node.type !== \"activity\" */\n ) {\n return;\n }\n }\n e.preventDefault();\n e.stopPropagation();\n\n if (action === \"enter\") {\n if (node.type === \"job\") {\n setActiveDetail({\n type: node.type,\n id: (node as JobGraphNode).job.id,\n });\n } /* else {\n setActiveDetail({\n type: node.type as \"flow\",\n id: (node as FlowGraphNode).taskId,\n });\n } */\n } else if (action === \"switch-active-node\") {\n if (node) {\n setActiveNodeId(node.id);\n if (node.type === \"job\") {\n scrollTo({\n jobId: node.job.id,\n behavior: \"smooth\",\n });\n } else {\n scrollTo({\n nodeId: node.id,\n behavior: \"smooth\",\n });\n }\n } else {\n setActiveNodeId(null);\n }\n }\n };\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [\n activeDetail,\n fulfilledActiveDetail,\n activeNodeId,\n activeExpandedViewJobId,\n activeFile,\n nodes,\n scrollTo,\n scrollBy,\n ]);\n\n useHandleEscape(taskContextValue);\n\n return (\n <TaskContext.Provider value={taskContextValue}>\n <CanvasContext.Provider value={canvasContextValue}>\n <div\n className={classNames(styles.root, {\n [styles.loading]: !conversation,\n })}\n ref={rootRef}\n style={{\n cursor: grabbing ? \"grabbing\" : \"grab\",\n }}\n tabIndex={-1}\n onClick={handleRootClick}\n >\n {!conversation && (\n <div className={styles[\"loading-icon\"]}>\n <WrappedIcon\n lib=\"antd\"\n theme=\"outlined\"\n icon=\"loading-3-quarters\"\n spinning\n />\n </div>\n )}\n <div\n className={classNames(styles.canvas, {\n [styles.ready]: sizeReady && centered,\n })}\n style={{\n transform: `translate3d(${transform.x}px, ${transform.y}px, 0) scale(${transform.k})`,\n }}\n >\n <svg className={styles.edges}>\n {edges.map((edge) =>\n edge.target === END_NODE_ID ||\n edge.target === REPLAY_NODE_ID ||\n edge.target === FEEDBACK_NODE_ID ? null : (\n <path\n className={styles.edge}\n key={`${edge.source}-${edge.target}`}\n d={edge\n .points!.map(\n ({ x, y }, i) => `${i === 0 ? \"M\" : \"L\"}${x},${y}`\n )\n .join(\" \")}\n />\n )\n )}\n </svg>\n {nodes.map((node) => (\n <MemoizedNodeComponent\n key={node.id}\n id={node.id}\n type={node.type}\n username={(node as RequirementGraphNode).username}\n content={(node as RequirementGraphNode).content}\n cmd={(node as RequirementGraphNode).cmd}\n mentionedAiEmployeeId={\n (node as RequirementGraphNode).mentionedAiEmployeeId\n }\n files={(node as RequirementGraphNode).files}\n job={(node as JobGraphNode).job}\n flow={(node as FlowGraphNode).flow}\n activity={(node as ActivityGraphNode).activity}\n startTime={conversation?.startTime}\n instructionLoading={\n node.type === \"instruction\" &&\n !nonLeafNodes.has(node.id) &&\n !DONE_STATES.includes(node.state!) &&\n !GENERAL_DONE_STATES.includes(conversationState!)\n }\n isLeaf={!nonLeafNodes.has(node.id)}\n x={node.view?.x}\n y={node.view?.y}\n active={activeNodeId === node.id}\n />\n ))}\n </div>\n </div>\n <div className={styles.widgets}>\n <Nav\n nav={nav}\n currentNavId={currentNavId}\n taskState={conversationState}\n onClick={(jobId: string) => {\n setActiveNodeId(`job:${jobId}`);\n scrollTo({ jobId, block: \"start\" });\n }}\n />\n <ZoomBar\n scale={transform.k}\n showUiSwitch={showUiSwitch}\n onScaleChange={handleScaleChange}\n onReCenter={handleReCenter}\n onSwitchToChat={onSwitchToChat}\n />\n {replay ? (\n !conversation?.finished && (\n <div className={styles[\"footer-container\"]}>\n <NodeReplay />\n </div>\n )\n ) : supports?.chat ? (\n <div className={styles[\"footer-container\"]}>\n <ChatBox state={conversationState} canChat={canChat} />\n </div>\n ) : null}\n </div>\n {fulfilledActiveDetail?.type === \"job\" && (\n <ToolCallDetail job={fulfilledActiveDetail.job} />\n )}\n {activeExpandedViewJobId && <ExpandedView views={views!} />}\n {activeFile && <FilePreview file={activeFile} />}\n {activeImages && <ImagesPreview images={activeImages} />}\n {showJsxEditor && activeJsxEditorJob && <JsxEditor />}\n </CanvasContext.Provider>\n </TaskContext.Provider>\n );\n}\n\ninterface NodeComponentProps {\n id: string;\n type: GraphNode[\"type\"];\n username?: string;\n content?: string;\n job?: Job;\n flow?: ServiceFlowRun;\n activity?: ActivityRun;\n startTime?: number;\n instructionLoading?: boolean;\n isLeaf?: boolean;\n x?: number;\n y?: number;\n active?: boolean;\n cmd?: CommandPayload;\n mentionedAiEmployeeId?: string;\n files?: FileInfo[];\n}\n\nfunction NodeComponent({\n id,\n type,\n job,\n flow,\n activity,\n username,\n content,\n startTime,\n instructionLoading,\n isLeaf,\n x,\n y,\n active,\n cmd,\n mentionedAiEmployeeId,\n files,\n}: NodeComponentProps) {\n const nodeRef = useRef<HTMLDivElement>(null);\n const { onNodeResize, setActiveNodeId } = useContext(CanvasContext);\n\n useEffect(() => {\n const element = nodeRef.current;\n if (!element) {\n return;\n }\n const observer = new ResizeObserver(() => {\n onNodeResize(id, [element.offsetWidth, element.offsetHeight]);\n });\n observer.observe(element);\n return () => {\n observer.disconnect();\n onNodeResize(id, null);\n };\n }, [id, onNodeResize]);\n\n useEffect(() => {\n const element = nodeRef.current;\n if (!element) {\n return;\n }\n const handleMouseDown = (e: MouseEvent) => {\n e.stopPropagation();\n };\n element.addEventListener(\"mousedown\", handleMouseDown);\n return () => {\n element.removeEventListener(\"mousedown\", handleMouseDown);\n };\n }, []);\n\n const handleClick = useCallback(() => {\n if (type !== \"start\" && type !== \"instruction\") {\n setActiveNodeId(id);\n }\n }, [id, setActiveNodeId, type]);\n\n return (\n <div\n className={classNames(styles.node, {\n [styles.ready]: x != null && y != null,\n })}\n ref={nodeRef}\n style={{\n left: x,\n top: y,\n }}\n onClick={handleClick}\n >\n {type === \"start\" ? (\n <NodeStart />\n ) : type === \"end\" ? (\n <NodeEnd />\n ) : type === \"feedback\" ? (\n <NodeFeedback />\n ) : type === \"requirement\" ? (\n <NodeRequirement\n username={username}\n content={content}\n startTime={startTime}\n active={active}\n cmd={cmd}\n mentionedAiEmployeeId={mentionedAiEmployeeId}\n files={files}\n />\n ) : type === \"loading\" ? (\n <NodeLoading />\n ) : type === \"error\" ? (\n <NodeError content={content!} />\n ) : type === \"replay\" ? (\n <NodeReplay finished />\n ) : type === \"flow\" || type === \"activity\" ? (\n <NodeChunk\n type={type}\n active={active}\n flow={flow!}\n activity={activity}\n />\n ) : type === \"instruction\" ? (\n <NodeInstruction\n content={job!.instruction}\n loading={instructionLoading}\n />\n ) : (\n <NodeJob job={job!} active={active} isLeaf={isLeaf} />\n )}\n </div>\n );\n}\n","import { useMemo } from \"react\";\nimport type {\n GraphEdge,\n GraphNode,\n GraphNavItem,\n GraphGeneratedView,\n} from \"./interfaces\";\nimport { LOADING_NODE_ID } from \"./constants\";\nimport type {\n ActivityWithFlow,\n ConversationBaseDetail,\n ConversationError,\n ServiceFlowRun,\n Task,\n} from \"../shared/interfaces\";\nimport { getFlatChunks } from \"../shared/getFlatChunks\";\nimport { DONE_STATES } from \"../shared/constants\";\n\nexport function useConversationGraph(\n conversation: ConversationBaseDetail | null | undefined,\n tasks: Task[],\n errors: ConversationError[],\n flowMap?: Map<string, ServiceFlowRun>,\n activityMap?: Map<string, ActivityWithFlow>,\n options?: {\n showHiddenJobs?: boolean;\n showHumanActions?: boolean;\n separateInstructions?: boolean;\n }\n) {\n const { /* showHiddenJobs, */ showHumanActions, separateInstructions } =\n options ?? {};\n\n return useMemo(() => {\n if (!conversation) {\n return null;\n }\n\n const { chunks, jobMap } = getFlatChunks(\n tasks,\n errors,\n flowMap,\n activityMap\n );\n\n const nodes: GraphNode[] = [];\n const edges: GraphEdge[] = [];\n const nav: GraphNavItem[] = [];\n const views: GraphGeneratedView[] = [];\n const jobLevels = new Map<string, number>();\n\n const userInputNodes: string[] = [];\n let username: string | undefined;\n let previousNodeId: string | undefined;\n\n for (const chunk of chunks) {\n const nodeIds: string[] = [];\n\n if (chunk.type === \"job\") {\n const job = chunk.job;\n jobLevels.set(job.id, chunk.level);\n const { messages } = job;\n const hasMessages =\n (Array.isArray(messages) && messages.length > 0) || job.toolCall;\n\n const userInput = messages\n ?.find((msg) => msg.role === \"user\")\n ?.parts?.find((part) => part.type === \"text\")?.text;\n\n const isRequirementJob =\n userInput !== undefined &&\n (chunk === chunks[0] || messages!.length === 1);\n if (isRequirementJob) {\n const requirementId = `requirement:${job.id}`;\n username = job.username;\n nodes.push({\n type: \"requirement\",\n id: requirementId,\n content: userInput,\n username,\n cmd: job.cmd,\n mentionedAiEmployeeId: job.mentionedAiEmployeeId,\n files: messages\n ?.filter((msg) => msg.role === \"user\")\n .flatMap((msg) => msg.parts)\n .filter((part) => part.type === \"file\")\n .map((part) => part.file),\n });\n nodeIds.push(requirementId);\n userInputNodes.push(requirementId);\n } else {\n if (job.instruction) {\n if (separateInstructions || !job.toolCall) {\n const instructionNodeId = `instruction:${job.id}`;\n nodes.push({\n type: \"instruction\",\n id: instructionNodeId,\n job,\n state: job.state,\n });\n nodeIds.push(instructionNodeId);\n }\n\n nav.push({\n id: job.id,\n title: job.instruction,\n state: job.state,\n level: chunk.level,\n });\n } else if (job.toolCall?.annotations?.title) {\n nav.push({\n id: job.id,\n title: job.toolCall.annotations.title,\n state: job.state,\n level: chunk.level,\n });\n }\n\n const jobNodeId = `job:${job.id}`;\n if (hasMessages) {\n nodes.push({\n type: \"job\",\n id: jobNodeId,\n job,\n state: job.state,\n });\n nodeIds.push(jobNodeId);\n }\n\n const view = job.generatedView;\n if (view) {\n views.push({\n id: job.id,\n view,\n });\n }\n\n if (showHumanActions && job.humanAction) {\n const humanActionNodeId = `human-action:${job.id}`;\n nodes.push({\n type: \"requirement\",\n id: humanActionNodeId,\n content: job.humanAction,\n username,\n });\n nodeIds.push(humanActionNodeId);\n }\n\n // Make sure every job in the list has at least one corresponding node\n if (nodeIds.length === 0) {\n nodes.push({\n type: \"job\",\n id: jobNodeId,\n job,\n state: job.state,\n });\n nodeIds.push(jobNodeId);\n }\n\n if (userInput !== undefined && job.state === \"completed\") {\n userInputNodes.push(nodeIds[nodeIds.length - 1]);\n }\n }\n } else if (chunk.type === \"error\") {\n const errorNodeId = `error:${nodes.length}`;\n nodes.push({\n type: \"error\",\n id: errorNodeId,\n content: chunk.error,\n });\n nodeIds.push(errorNodeId);\n } else {\n const nodeId = `${chunk.type}:${chunk.task.id}`;\n nodes.push({\n type: chunk.type,\n id: nodeId,\n taskId: chunk.task.id,\n flow: chunk.flow,\n ...(chunk.type === \"activity\" ? { activity: chunk.activity } : null),\n } as GraphNode);\n nodeIds.push(nodeId);\n }\n\n for (let i = 1; i < nodeIds.length; i++) {\n edges.push({\n source: nodeIds[i - 1],\n target: nodeIds[i],\n });\n }\n if (nodeIds.length > 0) {\n if (previousNodeId) {\n edges.push({\n source: previousNodeId,\n target: nodeIds[0],\n });\n }\n previousNodeId = nodeIds[nodeIds.length - 1];\n }\n }\n\n if (!DONE_STATES.includes(conversation.state)) {\n if (nodes.length === 0) {\n nodes.push({\n type: \"loading\",\n id: LOADING_NODE_ID,\n });\n } else {\n let counter = 0;\n for (const nodeId of userInputNodes) {\n if (!edges.some((edge) => edge.source === nodeId)) {\n const loadingId = `${LOADING_NODE_ID}:${counter++}`;\n nodes.push({\n type: \"loading\",\n id: loadingId,\n });\n edges.push({\n source: nodeId,\n target: loadingId,\n });\n }\n }\n }\n }\n\n return {\n nodes,\n edges,\n nav,\n views,\n jobMap,\n };\n }, [\n conversation,\n errors,\n separateInstructions,\n // showHiddenJobs,\n showHumanActions,\n tasks,\n flowMap,\n activityMap,\n ]);\n}\n","import { useEffect, useRef, useState, type RefObject } from \"react\";\nimport type { ZoomBehavior } from \"d3-zoom\";\nimport { mergeRects } from \"@next-shared/diagram\";\nimport type { GraphNode, ZoomAction } from \"./interfaces\";\nimport { CANVAS_PADDING_BOTTOM } from \"./constants\";\n\nexport interface UseAutoCenterOptions {\n nodes: GraphNode[];\n sizeReady: boolean;\n zoomer: ZoomBehavior<HTMLDivElement, unknown>;\n rootRef: RefObject<HTMLDivElement>;\n pushZoomTransition: (action: ZoomAction) => void;\n}\n\nexport function useAutoCenter({\n nodes,\n sizeReady,\n zoomer,\n rootRef,\n pushZoomTransition,\n}: UseAutoCenterOptions) {\n const [centered, setCentered] = useState(false);\n const reCenterRef = useRef(false);\n\n // Transform to horizontal center once.\n useEffect(() => {\n const root = rootRef.current;\n if (sizeReady && root && !centered && nodes.length > 0) {\n const {\n x: left,\n y: top,\n width,\n height,\n } = mergeRects(nodes.map((node) => node.view!));\n const right = left + width;\n const bottom = top + height;\n\n const x = (root.clientWidth - (right + left)) / 2;\n let y = 30;\n if (reCenterRef.current) {\n const height = bottom - top + CANVAS_PADDING_BOTTOM;\n const diffY = height - root.clientHeight;\n if (diffY > 0) {\n y = -diffY - top;\n } else {\n y = (root.clientHeight - (bottom + top)) / 2;\n }\n }\n pushZoomTransition({\n transform: { k: 1, x, y },\n duration: reCenterRef.current ? undefined : 0,\n });\n setCentered(true);\n }\n\n reCenterRef.current = false;\n }, [centered, nodes, rootRef, sizeReady, zoomer, pushZoomTransition]);\n\n return { centered, setCentered, reCenterRef };\n}\n","import type { NodeRect, SizeTuple, TransformLiteral } from \"../interfaces\";\n\n/**\n * Get the scroll movement so that the given rectangle is visible in container.\n */\nexport function getScrollTo(\n rect: NodeRect,\n containerSize: SizeTuple,\n padding: [top: number, right: number, bottom: number, left: number],\n transform: TransformLiteral,\n block?: \"start\" | \"nearest\"\n) {\n const [containerWidth, containerHeight] = containerSize;\n const [paddingTop, paddingRight, paddingBottom, paddingLeft] = padding;\n const { x: left, y: top, width, height } = rect;\n const right = left + width;\n const bottom = top + height;\n\n const transformedTop = top * transform.k + transform.y;\n const transformedBottom = bottom * transform.k + transform.y;\n\n const diffYTop = paddingTop - transformedTop;\n const diffYBottom = containerHeight - paddingBottom - transformedBottom;\n const y =\n diffYTop > 0 || block === \"start\"\n ? diffYTop / transform.k\n : diffYBottom < 0\n ? diffYBottom / transform.k\n : 0;\n\n const transformedLeft = left * transform.k + transform.x;\n const transformedRight = right * transform.k + transform.x;\n\n const diffXLeft = paddingLeft - transformedLeft;\n const diffXRight = containerWidth - paddingRight - transformedRight;\n const x =\n diffXLeft > 0\n ? diffXLeft / transform.k\n : diffXRight < 0\n ? diffXRight / transform.k\n : 0;\n\n return { x, y };\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, `.avatar--v2FiKghW::part(avatar){background-color:rgb(213,214,230);padding:1px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"avatar\": `avatar--v2FiKghW`\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\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./images/background.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `ai-portal\\\\.cruise-canvas{display:block;position:relative;width:100%;height:100%;overflow:hidden;background-color:#fff;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:cover;background-repeat:no-repeat;background-position:center;background-attachment:fixed;color:#262626;--cruise-canvas-node-border:1px solid gray;--cruise-canvas-node-width-small:330px;--cruise-canvas-node-width-medium:453px;--cruise-canvas-node-width-large:800px;--cruise-canvas-primary-color:var(--elevo-color-brand);--cruise-canvas-input-background:rgba(255,255,255,0.8);--cruise-canvas-input-box-shadow:0px 1px 0px 0px #ffffff,inset 0px 2px 4px 0px #b3bcf9}.root--z6jdb_BU{width:100%;height:100%;position:relative}.widgets--r6lUPOu2{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;-webkit-user-select:none;user-select:none}.root--z6jdb_BU.loading--m5r507Hp .canvas--u6C26uH_,\n.root--z6jdb_BU.loading--m5r507Hp + .widgets--r6lUPOu2{visibility:hidden}.loading-icon--UkRBMlBy{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:48px;color:#fff}.widgets--r6lUPOu2 > *{pointer-events:auto;-webkit-user-select:text;user-select:text}.canvas--u6C26uH_,\n.edges--uNPQGWZg{width:100%;height:100%;position:absolute;transform-origin:0% 0%;-webkit-user-select:none;user-select:none}.node--IBGywwp4{position:absolute;-webkit-user-select:text;user-select:text;cursor:auto}.node--IBGywwp4:not(.ready--pmh440go),\n.canvas--u6C26uH_:not(.ready--pmh440go) > .edges--uNPQGWZg{visibility:hidden}svg.edges--uNPQGWZg{pointer-events:none;overflow:visible}.edge--muRUWYG1{fill:none;stroke-width:2px;stroke:rgba(255,255,255,0.6);stroke-dasharray:5,5}.go-back--myNmSpSv{position:absolute;top:20px;left:20px}.go-back--myNmSpSv::part(link){width:32px;height:32px;display:flex;justify-content:center;align-items:center;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);color:inherit;box-sizing:border-box}.go-back--myNmSpSv::part(link):hover{background:rgba(255,255,255,0.5)}.go-back--myNmSpSv::part(link):active{background:rgba(255,255,255,0.3)}.footer-container--sTjEGP7I{position:absolute;bottom:28px;left:50%;transform:translate(-50%,0);width:var(--cruise-canvas-node-width-large);max-width:80%}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"root\": `root--z6jdb_BU`,\n\t\"widgets\": `widgets--r6lUPOu2`,\n\t\"loading\": `loading--m5r507Hp`,\n\t\"canvas\": `canvas--u6C26uH_`,\n\t\"loading-icon\": `loading-icon--UkRBMlBy`,\n\t\"edges\": `edges--uNPQGWZg`,\n\t\"node\": `node--IBGywwp4`,\n\t\"ready\": `ready--pmh440go`,\n\t\"edge\": `edge--muRUWYG1`,\n\t\"go-back\": `go-back--myNmSpSv`,\n\t\"footer-container\": `footer-container--sTjEGP7I`\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\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../images/requirement@2x.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.node-requirement--aVjY3LFY{width:var(--cruise-canvas-node-width-medium);max-width:90vw;background-color:rgba(255,255,255,0.4);background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-position:center bottom;background-size:var(--cruise-canvas-node-width-medium) 128px;background-repeat:no-repeat;box-shadow:0px 4px 10px 0px rgba(54,64,80,0.18);border-radius:12px;-webkit-backdrop-filter:blur(28px);backdrop-filter:blur(28px);border:1px solid rgba(255,255,255,0.4);padding:8px;white-space:pre-wrap;position:relative}.node-requirement--aVjY3LFY.active--aEZLkOZe{border-color:#a1b5ff}.heading--F8b1aIJT{display:flex;align-items:center;margin-bottom:11px;font-size:13px}.avatar--BbtS9D46{flex:1;min-width:0}.avatar--BbtS9D46::part(avatar){border:1px solid #fff}.time--IRwoiblW{color:#8c8c8c}.body--JYv_r9n_{background:#f1f6ff;box-shadow:0px 1px 0px 0px #ffffff;border-radius:9px;padding:15px 10px;overflow-wrap:break-word}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"node-requirement\": `node-requirement--aVjY3LFY`,\n\t\"active\": `active--aEZLkOZe`,\n\t\"heading\": `heading--F8b1aIJT`,\n\t\"avatar\": `avatar--BbtS9D46`,\n\t\"time\": `time--IRwoiblW`,\n\t\"body\": `body--JYv_r9n_`\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, `.container--qJxxNcfJ{position:fixed;top:0;right:0;bottom:0;left:0;padding:20px;background-color:var(--mask-bg)}.editor--SCuHEqYM{height:100%;max-width:1200px;margin:0 auto;background:#ffffff;box-shadow:1px 1px 10px 0px rgba(0,10,26,0.1);border-radius:12px;display:flex;flex-direction:column}.header--nRP4oDyL{height:52px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(0,0,0,0.15);padding:0 20px}.title--Tq8TUpVz{font-weight:500;font-size:16px;color:#262626}.body--uTZ0qYhS{flex:1;min-height:0;padding:20px;display:flex;flex-direction:column}.content--_WNf_qJr{height:100%}.footer--cblnjGHn{padding:12px 20px;border-top:1px solid rgba(0,0,0,0.15)}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": `container--qJxxNcfJ`,\n\t\"editor\": `editor--SCuHEqYM`,\n\t\"header\": `header--nRP4oDyL`,\n\t\"title\": `title--Tq8TUpVz`,\n\t\"body\": `body--uTZ0qYhS`,\n\t\"content\": `content--_WNf_qJr`,\n\t\"footer\": `footer--cblnjGHn`\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\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../images/job-background.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.node-job--soTYrcA7{width:var(--cruise-canvas-node-width-medium);max-width:90vw;background:linear-gradient(180deg,#f5f8ff 0%,#edf0f9 100%);box-shadow:0px 4px 10px 0px rgba(177,149,207,0.4),0px 2px 4px 0px rgba(0,0,0,0.06);border-radius:12px;border:1px solid rgba(255,255,255,0.5);padding:8px;position:relative}.node-job--soTYrcA7.active--WIcgH7xW{border-color:#a1b5ff}.background--CKldFV7M{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:12px;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-repeat:no-repeat;background-position:top right;z-index:0;transition:opacity 0.15s;opacity:0}.node-job--soTYrcA7.active--WIcgH7xW .background--CKldFV7M,\n.node-job--soTYrcA7:hover .background--CKldFV7M{opacity:1}.background--CKldFV7M ~ *{position:relative;z-index:1}.fit-content--HuAZHd31{min-width:var(--cruise-canvas-node-width-medium);width:min-content}.node-job--soTYrcA7.large--bn_n8RL5{width:var(--cruise-canvas-node-width-large)}.error--IwtdD0T6{box-shadow:inset 0px 0px 8px 2px rgba(242,76,37,0.6);border-color:rgba(242,76,37,0.6)}.heading--GZqrhPqL{display:flex;align-items:center;justify-content:space-between;padding:0 5px 5px;font-size:13px;color:#8c8c8c}.body--V34MsV9R{padding:9px 4px 4px}.scrollable--LudR_5Pj{max-height:462px;overflow-y:auto}.message--iVQBlD6k:not(:first-child){margin-top:6px}.role-assistant--Y8vd9Oms,\n.role-user--nAW4Hzsu{background:var(--cruise-canvas-input-background);border-radius:9px;border:1px solid #ccd1de;padding:6px 16px}.role-user--nAW4Hzsu{white-space:pre-wrap}.role-user--nAW4Hzsu:empty{display:none}.human-input--wFc6ovnT{margin-top:1em;display:block;width:100%;padding:10px 16px;color:inherit;background:var(--cruise-canvas-input-background);box-shadow:var(--cruise-canvas-input-box-shadow);border-radius:9px;border:none;font-size:14px;line-height:22px;height:64px}.human-input--wFc6ovnT:focus{outline:none}.human-input--wFc6ovnT::placeholder{color:#bfbfbf}.node-job--soTYrcA7 *::-webkit-scrollbar{width:5px;height:5px;background:transparent}.node-job--soTYrcA7 *::-webkit-scrollbar-thumb{background-color:#d8d8d8;border-radius:3px}.node-job--soTYrcA7 *::-webkit-scrollbar-track{background:transparent}.view-container--ra1sVc4C{margin-top:10px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"node-job\": `node-job--soTYrcA7`,\n\t\"active\": `active--WIcgH7xW`,\n\t\"background\": `background--CKldFV7M`,\n\t\"fit-content\": `fit-content--HuAZHd31`,\n\t\"large\": `large--bn_n8RL5`,\n\t\"error\": `error--IwtdD0T6`,\n\t\"heading\": `heading--GZqrhPqL`,\n\t\"body\": `body--V34MsV9R`,\n\t\"scrollable\": `scrollable--LudR_5Pj`,\n\t\"message\": `message--iVQBlD6k`,\n\t\"role-assistant\": `role-assistant--Y8vd9Oms`,\n\t\"role-user\": `role-user--nAW4Hzsu`,\n\t\"human-input\": `human-input--wFc6ovnT`,\n\t\"view-container\": `view-container--ra1sVc4C`\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\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../images/start@2x.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.node-start--Mrh1iP5r{width:65px;height:65px;position:relative;overflow:visible}.icon--NxC4u6Wl{width:75px;height:75px;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:75px 75px;background-repeat:no-repeat;background-position:center;position:absolute;left:-5px;top:-1px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"node-start\": `node-start--Mrh1iP5r`,\n\t\"icon\": `icon--NxC4u6Wl`\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, `.node-instruction--Gu7k6RDs{max-width:437px;max-width:min(437px,90vw);background:rgba(255,255,255,0.2);box-shadow:0px 4px 10px 0px rgba(54,64,80,0.08);border-radius:9999px;border:1px solid rgba(255,255,255,0.284);padding:6px 16px;color:rgba(0,0,0,0.45)}.text--jsSeLl7B{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;--shine-text-color:rgba(0,0,0,0.45);--shine-text-highlight-color:#dcdcdc}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"node-instruction\": `node-instruction--Gu7k6RDs`,\n\t\"text\": `text--jsSeLl7B`\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, `.node-end--yzRaOZnC{display:flex;flex-direction:column;align-items:center;gap:20px}.content--iXSH199p{display:flex;align-items:center}.icon--IVcHjGFO{width:18px;height:18px;display:flex;align-items:center;justify-content:center;color:#fff;background:#29cc49;border-radius:18px;font-size:14px;margin-right:6px}.text--dW7Y74et{font-weight:500}.button--mkIwsPzt{width:120px;height:30px;background:rgba(0,0,0,0.04);border:none;border-radius:15px;text-align:center;cursor:pointer}.button--mkIwsPzt:hover{background:rgba(0,0,0,0.08)}.button--mkIwsPzt:active{background:rgba(0,0,0,0.15)}.button--mkIwsPzt:focus{outline:none}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"node-end\": `node-end--yzRaOZnC`,\n\t\"content\": `content--iXSH199p`,\n\t\"icon\": `icon--IVcHjGFO`,\n\t\"text\": `text--dW7Y74et`,\n\t\"button\": `button--mkIwsPzt`\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, `.zoom-bar--MTw5VGPl{left:20px;bottom:20px}@media (max-width: 1123px){.zoom-bar--MTw5VGPl{left:auto;bottom:auto;top:20px;right:80px}}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"zoom-bar\": `zoom-bar--MTw5VGPl`\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, `.detail--JiiWugxP{margin-top:20px;color:#595959;margin-bottom:7px}.code-block--wccWPbbW::part(pre){border:1px solid #ccd1de}.code-fallback--a8nCduaZ [class*=\"code-wrapper--\"]::part(pre){white-space:pre-wrap;background:#fef5f3!important}.progress-container--tFUAQo73,\n.stream-message--G0tAm9aa{border-radius:9px;border:1px solid #ccd1de;background:#fff}.progress-container--tFUAQo73{padding:6px 2px}.progress-fallback--Xto82BYu{background:#fef5f3}.stream-message--G0tAm9aa{padding:1em;margin:0.5em 0}.markdown-block--C3siNgW9{border:1px solid #ccd1de;border-radius:9px;padding:1em;background:#fff}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"detail\": `detail--JiiWugxP`,\n\t\"code-block\": `code-block--wccWPbbW`,\n\t\"code-fallback\": `code-fallback--a8nCduaZ`,\n\t\"progress-container\": `progress-container--tFUAQo73`,\n\t\"stream-message\": `stream-message--G0tAm9aa`,\n\t\"progress-fallback\": `progress-fallback--Xto82BYu`,\n\t\"markdown-block\": `markdown-block--C3siNgW9`\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, `.error--D_UJOZDA{color:var(--color-error);padding:8px;white-space:pre-wrap;word-break:break-word}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"error\": `error--D_UJOZDA`\n};\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["K","NS","locales","en","YES","NO","TASK_COMPLETED","SHARE","TYPE_YOUR_MESSAGE_HERE","ARGUMENTS","PROCESS","RESPONSE","SWITCH_TO_CHAT","BACK_TO_CENTER","ZOOM_IN","ZOOM_OUT","FULLSCREEN","SEND_MESSAGE","UNTITLED","DOWNLOAD","INITIATING_SERVICE_FLOW","STARTING_SERVICE_FLOW_ACTIVITY","zh","t","i18n","getFixedT","___CSS_LOADER_EXPORT___","push","module","id","locals","mergeRects","rects","left","Infinity","top","right","bottom","rect","r","x","width","b","y","height","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","undefined","DEFAULT_SCALE_RANGE_MIN","DEFAULT_SCALE_RANGE_MAX","START_NODE_ID","END_NODE_ID","FEEDBACK_NODE_ID","LOADING_NODE_ID","REPLAY_NODE_ID","CANVAS_PADDING_TOP","CANVAS_PADDING_RIGHT","CANVAS_PADDING_BOTTOM","CANVAS_PADDING_LEFT","RANK_SEP","NODE_SEP","EDGE_SEP","IS_MAC","test","_ref","_userAgentData$platfo","_userAgentData","navigator","userAgentData","platform","userAgent","wheelData","event","deltaY","deltaMode","ctrlKey","getPositionWithOffsets","position","offsets","ICON_BACK_TO_CENTER","lib","icon","ICON_ZOOM_OUT","ICON_ZOOM_IN","ZoomBar","scale","showUiSwitch","onScaleChange","onReCenter","onSwitchToChat","handleZoomIn","useCallback","handleZoomOut","React","className","toolbarStyles","toolbar","styles","WrappedIconButton","variant","ICON_CHAT","onClick","divider","title","NodeStart","WrappedEasyOpsAvatar","wrapBrick","NodeRequirement","username","content","startTime","active","cmd","mentionedAiEmployeeId","files","classNames","heading","avatar","nameOrInstanceId","showName","size","time","moment","format","body","ReadableCommand","length","FileList","NodeInstruction","loading","text","sharedStyles","WrappedAvatar","AIEmployeeAvatar","aiEmployeeId","Suspense","fallback","name","src","fallbackAvatar","LegacyAIEmployeeAvatar","_ref2","employeePromise","useMemo","fetchEmployee","employee","use","props","URL","location","origin","toString","_extends","RegExpLargeTableInMarkdown","NodeJob","_job$toolCall","_job$messages2","job","isLeaf","toolName","toolCall","toolMarkdownContent","cmdbInstanceDetails","sizeLarge","_job$messages","contents","instanceDetails","large","messages","forEach","message","role","part","parts","_part$data","type","data","_part$data2","Object","keys","outputSchema","properties","detail","file","markdownContent","join","viewSize","setViewSize","useState","handleViewSizeChange","value","error","isError","background","generatedView","ViewToolbar","ToolCallStatus","map","index","_message$parts","key","markdown","partIndex","EnhancedMarkdown","style","padding","CmdbInstanceDetail","humanAction","requestHumanAction","state","RequestHumanAction","action","ViewContainer","onSizeChange","ref","useRef","setHoverOnScrollableContent","useContext","CanvasContext","handleMouseMove","e","scrollableContent","found","el","nativeEvent","composedPath","current","HTMLElement","tagName","scrollWidth","clientWidth","classList","contains","handleMouseLeave","onMouseMove","onMouseLeave","CreatedView","noHeading","NodeEnd","onShare","replay","conversationState","TaskContext","WrappedIcon","prefix","button","getDrawerWidth","innerWidth","window","Math","min","ToolCallDetail","_toolCall$annotations","setActiveDetail","toolTitle","annotations","progress","intermediateParts","responseParts","toolCallMessages","filter","msg","handleClose","setTimeout","useEffect","_ref$current","open","setWidth","onResize","addEventListener","removeEventListener","hasProcessParts","hasResponseParts","toolState","includes","failed","WrappedDrawer","customTitle","closable","mask","maskClosable","keyboard","themeVariant","onClose","PreComponent","originalArguments","maybeJson","fallbackAsMarkdown","JSON","stringify","ToolProgressLine","_part$data3","refinedContent","asMarkdown","json","parse","MarkdownPre","WrappedCodeBlock","source","language","getCenterPosition","view","Nav","nav","currentNavId","taskState","_navElement$querySele","navElement","querySelector","scrollIntoView","behavior","block","lastActiveItem","findLast","item","DONE_STATES","_navElement$querySele2","container","NavItem","level","disabled","completed","working","theme","spinning","canceled","getClassNameAndIconProps","marginLeft","link","NodeLoading","inner","editorLibs","filePath","replaceAll","types","AsyncWrappedCodeEditor","async","default","asyncWrapBrick","onCodeChange","JsxEditor","_manuallyUpdatedViews","_view$withContexts2","workspace","manuallyUpdatedViews","updateView","activeJsxEditorJob","setActiveJsxEditorJob","get","code","setCode","libs","_view$withContexts","commonLibs","withContexts","editor","header","ICON_CLOSE","uri","automaticLayout","extraLibs","footer","WrappedButton","newView","asyncConstructedView","getAsyncConstructedView","NodeError","jobStyles","NodeChunk","flow","activity","MemoizedNodeComponent","memo","NodeComponent","CruiseCanvasComponent","_conversation$title","conversationId","initialRequest","replayDelay","supports","showHiddenJobs","showHumanActions","showFeedback","propShowFeedback","showFeedbackAfterFailed","showFeedbackOnView","showJsxEditor","previewUrlTemplate","showCases","exampleProjects","tryItOutUrl","separateInstructions","uploadOptions","onTerminate","onSubmitFeedback","onFeedbackOnView","onDetailChange","rootRef","conversation","tasks","serviceFlows","errors","humanInputRef","skipToResults","watchAgain","useConversationDetail","flowMap","activityMap","useFlowAndActivityMap","graph","chunks","jobMap","getFlatChunks","nodes","edges","views","jobLevels","Map","userInputNodes","previousNodeId","chunk","nodeIds","_messages$find","set","hasMessages","Array","isArray","userInput","find","instruction","instructionNodeId","jobNodeId","humanActionNodeId","requirementId","flatMap","errorNodeId","nodeId","task","taskId","i","target","counter","some","edge","loadingId","useConversationGraph","rawNodes","rawEdges","pageTitle","activeNodeId","setActiveNodeId","jobId","split","projectId","submittingFeedback","setSubmittingFeedback","submittedFeedback","setSubmittedFeedback","setShowFeedback","feedbackDoneViews","setFeedbackDoneViews","handleSubmitFeedback","useImperativeHandle","feedbackSubmitDone","feedbackSubmitFailed","feedbackOnViewDone","viewId","prev","newSet","Set","add","transitionEnabledRef","timer","clearTimeout","getRuntime","applyPageTitle","humanInput","input","extra","_humanInputRef$curren","call","sizeMap","setSizeMap","onNodeResize","newMap","delete","sizeReady","_rawNodes","_rawEdges","finished","noTasks","memoizedPositionsRef","initialNodes","initialEdges","finishedNodeIds","hasSource","failedFeedback","shouldAppend","hasTarget","node","has","sourceIds","memoizedPositions","startNodePositionRef","_memoizedPositionsRef","dagre","Graph","setGraph","rankdir","nodesep","edgesep","ranksep","setDefaultEdgeLabel","setEdge","setNode","nodeView","assign","sourcePosition","targetPosition","turnY","points","useLayout","detectScrolledUpRef","manualScrolledUpRef","hoverOnScrollableContent","grabbing","transform","transformRef","zoomer","zoomable","scrollable","pannable","pannableWithCtrl","scaleRange","_scaleRange","onSwitchActiveTarget","setGrabbing","setTransform","k","zoom","wheelDelta","moved","scaleExtent","on","onContextMenu","preventDefault","document","root","rootSelection","select","unsetZoom","closest","element","delta","maxScroll","scrollHeight","clientHeight","scrollTop","checkScrollableY","cancelable","translateBy","wheelDeltaX","wheelDeltaY","useZoom","transitionRef","pushZoomTransition","nextAction","run","selection","_target$duration","_transform$k","_transform$x","_transform$y","_translateBy$","_translateBy$2","duration","transition","ease","next","ZoomTransform","centered","setCentered","reCenterRef","diffY","useAutoCenter","canChat","nonLeafNodes","leafNodes","max","bottomRef","offsetHeight","transformedBottom","handleReCenter","handleScaleChange","scaleTo","fullRect","offsetWidth","viewportWidth","viewportHeight","minX","maxX","minY","maxY","translateExtent","scrollTo","targets","n","_job","containerSize","containerWidth","containerHeight","paddingTop","paddingRight","paddingBottom","paddingLeft","diffYTop","diffYBottom","diffXLeft","diffXRight","getScrollTo","scrollBy","direction","range","distance","isHorizontal","targetHeight","activeDetail","subActiveDetail","setSubActiveDetail","activeExpandedViewJobId","setActiveExpandedViewJobId","activeFile","setActiveFile","setManuallyUpdatedViews","firstNode","requirementNode","activeImages","setActiveImages","taskContextValue","tryItOut","win","getBasePath","slice","__elevo_try_it_out","canvasContextValue","fulfilledActiveDetail","useFulfilledActiveDetail","handleRootClick","handleKeyDown","activeElement","keyboardAction","altKey","activeNode","metaKey","shiftKey","moveOnAxis","axis","oppositeAxis","activePosition","candidates","diff","abs","maxBy","minBy","handleKeyboardNav","stopPropagation","useHandleEscape","Provider","cursor","tabIndex","canvas","ready","d","_ref3","_node$view","_node$view2","instructionLoading","GENERAL_DONE_STATES","widgets","NodeReplay","chat","ChatBox","ExpandedView","FilePreview","ImagesPreview","images","_ref4","nodeRef","observer","ResizeObserver","observe","disconnect","handleMouseDown","handleClick","NodeFeedback","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_URL_REPLACEMENT_0___"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- (()=>{var e,t,r,a,n,o,l,c,i,d,f,s,u,h,p,b,m,v,g,x,y,P,k,w={77736:(e,t,r)=>{Promise.all([r.e(4888),r.e(8135),r.e(7238),r.e(8324),r.e(7586),r.e(8769),r.e(870),r.e(981),r.e(4419),r.e(2616),r.e(1030),r.e(7019),r.e(1302),r.e(348),r.e(2919),r.e(1321),r.e(1919),r.e(9435),r.e(9655),r.e(6593),r.e(5712),r.e(2324),r.e(9496),r.e(2232),r.e(2084),r.e(2621)]).then(r.bind(r,42908))}},j={};function S(e){var t=j[e];if(void 0!==t)return t.exports;var r=j[e]={id:e,loaded:!1,exports:{}};return w[e].call(r.exports,r,r.exports,S),r.loaded=!0,r.exports}S.m=w,S.c=j,S.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return S.d(t,{a:t}),t},S.d=(e,t)=>{for(var r in t)S.o(t,r)&&!S.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},S.f={},S.e=e=>Promise.all(Object.keys(S.f).reduce(((t,r)=>(S.f[r](e,t),t)),[])),S.u=e=>"chunks/"+e+"."+{114:"af61e48a",721:"f43de0ef",726:"392de709",843:"9b7325c3",871:"42c14164",879:"a469d051",948:"d125d58c",1045:"0906fc23",1120:"fd177648",1122:"95231c39",1136:"456f1c68",1215:"78630d79",1889:"b7766f77",1931:"2abee15e",1940:"afcdea49",2052:"ef23d12a",2084:"ddaad7cc",2232:"02cd2bbc",2260:"9564eb16",2277:"b026624f",2324:"d6932d39",2432:"352ae272",2449:"b46fc22a",2508:"15c05669",2510:"91062655",2593:"783fb42e",2621:"30041500",3003:"a607b32b",3144:"4088b5d1",3171:"a0251432",3208:"0796f5be",3331:"bb7b4c1c",3419:"28287d23",3744:"ed6d0719",3816:"fc867cd4",3935:"3b6a2f5d",4041:"6b503155",4190:"7612613e",4228:"ea602510",4281:"ddad94d5",4306:"9e8251b7",4474:"5fd3e9c8",4491:"539d30f8",4609:"e21567a0",4658:"18d5ee4d",4735:"24157512",4765:"e2813cac",4837:"c7f9a784",4888:"42dd29a2",5032:"2e4fb116",5065:"9616e9d3",5191:"ce5dfec4",5250:"5294dc23",5307:"28ab7643",5384:"564ae2e4",5399:"501fc322",5498:"298984c7",5548:"498b312d",5552:"84bdc597",5712:"c566ad78",5727:"93a1388d",5807:"0b926b80",5936:"5bba7f2f",6023:"843ea4a1",6029:"6fe4c192",6161:"d7e3ea42",6519:"3ce478ef",6530:"3c295a95",6593:"58eda50f",6773:"afd27a30",7146:"1af0c62e",7238:"9abe2a64",7302:"3117acc5",7353:"02afd00b",7367:"d389861e",7586:"b406d4bf",7721:"c985db03",7733:"dbb66cbc",7842:"d5a94411",8135:"3255c5ba",8231:"89b65f56",8263:"d9eaafab",8311:"69ab488d",8324:"5ac013ff",8348:"2fbb3b7e",8588:"0bce58e7",8633:"1b8bb39e",8755:"1525c38d",8757:"5cde95c7",8936:"b9a73775",8989:"ddf83737",9034:"7ff08734",9251:"52df4857",9263:"affcdb7b",9388:"e48bb229",9496:"1d7ebb7f",9515:"468a8527",9559:"3db56cb0",9599:"1f04dd1f",9634:"71192f72",9831:"f659ce60",9844:"c3062a6b"}[e]+".js",S.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),S.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="@next-bricks/ai-portal:",S.l=(r,a,n,o)=>{if(e[r])e[r].push(a);else{var l,c;if(void 0!==n)for(var i=document.getElementsByTagName("script"),d=0;d<i.length;d++){var f=i[d];if(f.getAttribute("src")==r||f.getAttribute("data-webpack")==t+n){l=f;break}}l||(c=!0,(l=document.createElement("script")).charset="utf-8",l.timeout=120,S.nc&&l.setAttribute("nonce",S.nc),l.setAttribute("data-webpack",t+n),l.src=r),e[r]=[a];var s=(t,a)=>{l.onerror=l.onload=null,clearTimeout(u);var n=e[r];if(delete e[r],l.parentNode&&l.parentNode.removeChild(l),n&&n.forEach((e=>e(a))),t)return t(a)},u=setTimeout(s.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=s.bind(null,l.onerror),l.onload=s.bind(null,l.onload),c&&document.head.appendChild(l)}},S.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},S.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{S.S={};var e={},t={};S.I=(r,a)=>{a||(a=[]);var n=t[r];if(n||(n=t[r]={}),!(a.indexOf(n)>=0)){if(a.push(n),e[r])return e[r];S.o(S.S,r)||(S.S[r]={});var o=S.S[r],l="@next-bricks/ai-portal",c=(e,t,r,a)=>{var n=o[e]=o[e]||{},c=n[t];(!c||!c.loaded&&(!a!=!c.eager?a:l>c.from))&&(n[t]={get:r,from:l,eager:!!a})},i=[];return"default"===r&&(c("@babel/parser","7.27.2",(()=>S.e(6773).then((()=>()=>S(46773))))),c("@easyops-cn/brick-next-pipes","0.7.6",(()=>Promise.all([S.e(4306),S.e(1030),S.e(1302),S.e(5310)]).then((()=>()=>S(34306))))),c("@next-core/cook","2.5.12",(()=>Promise.all([S.e(1122),S.e(580)]).then((()=>()=>S(61122))))),c("@next-core/element","1.2.19",(()=>S.e(1045).then((()=>()=>S(21045))))),c("@next-core/http","1.2.14",(()=>S.e(8989).then((()=>()=>S(48989))))),c("@next-core/i18n","1.0.86",(()=>Promise.all([S.e(2616),S.e(7019),S.e(671),S.e(5552)]).then((()=>()=>S(75552))))),c("@next-core/inject","1.0.61",(()=>Promise.all([S.e(1030),S.e(9933),S.e(2277)]).then((()=>()=>S(72277))))),c("@next-core/loader","1.6.17",(()=>S.e(5399).then((()=>()=>S(35399))))),c("@next-core/pipes","2.0.36",(()=>Promise.all([S.e(1919),S.e(6519)]).then((()=>()=>S(76519))))),c("@next-core/react-element","1.0.38",(()=>Promise.all([S.e(8769),S.e(870),S.e(9435),S.e(114)]).then((()=>()=>S(20114))))),c("@next-core/react-runtime","1.7.39",(()=>Promise.all([S.e(8769),S.e(981),S.e(1030),S.e(348),S.e(4837)]).then((()=>()=>S(64837))))),c("@next-core/runtime","1.71.0",(()=>Promise.all([S.e(948),S.e(2616),S.e(1030),S.e(7019),S.e(1302),S.e(2919),S.e(1321),S.e(9655),S.e(5651)]).then((()=>()=>S(30948))))),c("@next-core/supply","2.3.9",(()=>Promise.all([S.e(1030),S.e(1302),S.e(9933),S.e(9559)]).then((()=>()=>S(49559))))),c("@next-core/theme","1.6.1",(()=>Promise.all([S.e(1889),S.e(2052)]).then((()=>()=>S(51889))))),c("@next-core/utils/general","1.8.7",(()=>S.e(871).then((()=>()=>S(40871))))),c("@next-core/utils/storyboard","1.8.7",(()=>Promise.all([S.e(1030),S.e(7019),S.e(1321),S.e(7146)]).then((()=>()=>S(97146))))),c("history","4.10.1",(()=>S.e(3003).then((()=>()=>S(65384))))),c("i18next-browser-languagedetector","7.2.2",(()=>S.e(726).then((()=>()=>S(50726))))),c("i18next","22.5.1",(()=>S.e(843).then((()=>()=>S(20843))))),c("js-yaml","3.14.1",(()=>S.e(9515).then((()=>()=>S(19515))))),c("lodash","4.17.21",(()=>S.e(5250).then((()=>()=>S(45250))))),c("moment/locale/zh-cn.js","2.30.1",(()=>Promise.all([S.e(7721),S.e(9844)]).then((()=>()=>S(61329))))),c("moment","2.30.1",(()=>Promise.all([S.e(7721),S.e(9844)]).then((()=>()=>S(99420))))),c("react-dom","0.0.0-experimental-ee8509801-20230117",(()=>Promise.all([S.e(3144),S.e(8769)]).then((()=>()=>S(43144))))),c("react","0.0.0-experimental-ee8509801-20230117",(()=>S.e(4041).then((()=>()=>S(14041)))))),e[r]=i.length?Promise.all(i).then((()=>e[r]=1)):1}}})(),(()=>{var e;S.g.importScripts&&(e=S.g.location+"");var t=S.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var a=r.length-1;a>-1&&(!e||!/^http(s?):/.test(e));)e=r[a--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),S.p=e+"../"})(),r=e=>{var t=e=>e.split(".").map((e=>+e==e?+e:e)),r=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),a=r[1]?t(r[1]):[];return r[2]&&(a.length++,a.push.apply(a,t(r[2]))),r[3]&&(a.push([]),a.push.apply(a,t(r[3]))),a},a=(e,t)=>{e=r(e),t=r(t);for(var a=0;;){if(a>=e.length)return a<t.length&&"u"!=(typeof t[a])[0];var n=e[a],o=(typeof n)[0];if(a>=t.length)return"u"==o;var l=t[a],c=(typeof l)[0];if(o!=c)return"o"==o&&"n"==c||"s"==c||"u"==o;if("o"!=o&&"u"!=o&&n!=l)return n<l;a++}},n=e=>{var t=e[0],r="";if(1===e.length)return"*";if(t+.5){r+=0==t?">=":-1==t?"<":1==t?"^":2==t?"~":t>0?"=":"!=";for(var a=1,o=1;o<e.length;o++)a--,r+="u"==(typeof(c=e[o]))[0]?"-":(a>0?".":"")+(a=2,c);return r}var l=[];for(o=1;o<e.length;o++){var c=e[o];l.push(0===c?"not("+i()+")":1===c?"("+i()+" || "+i()+")":2===c?l.pop()+" "+l.pop():n(c))}return i();function i(){return l.pop().replace(/^\((.+)\)$/,"$1")}},o=(e,t)=>{if(0 in e){t=r(t);var a=e[0],n=a<0;n&&(a=-a-1);for(var l=0,c=1,i=!0;;c++,l++){var d,f,s=c<e.length?(typeof e[c])[0]:"";if(l>=t.length||"o"==(f=(typeof(d=t[l]))[0]))return!i||("u"==s?c>a&&!n:""==s!=n);if("u"==f){if(!i||"u"!=s)return!1}else if(i)if(s==f)if(c<=a){if(d!=e[c])return!1}else{if(n?d>e[c]:d<e[c])return!1;d!=e[c]&&(i=!1)}else if("s"!=s&&"n"!=s){if(n||c<=a)return!1;i=!1,c--}else{if(c<=a||f<s!=n)return!1;i=!1}else"s"!=s&&"n"!=s&&(i=!1,c--)}}var u=[],h=u.pop.bind(u);for(l=1;l<e.length;l++){var p=e[l];u.push(1==p?h()|h():2==p?h()&h():p?o(p,t):!h())}return!!h()},l=(e,t)=>e&&S.o(e,t),c=e=>(e.loaded=1,e.get()),i=e=>Object.keys(e).reduce(((t,r)=>(e[r].eager&&(t[r]=e[r]),t)),{}),d=(e,t,r,n)=>{var l=n?i(e[t]):e[t];return(t=Object.keys(l).reduce(((e,t)=>!o(r,t)||e&&!a(e,t)?e:t),0))&&l[t]},f=(e,t,r)=>{var n=r?i(e[t]):e[t];return Object.keys(n).reduce(((e,t)=>!e||!n[e].loaded&&a(e,t)?t:e),0)},s=(e,t,r,a)=>"Unsatisfied version "+r+" from "+(r&&e[t][r].from)+" of shared singleton module "+t+" (required "+n(a)+")",u=(e,t,r,a,o)=>{var l=e[r];return"No satisfying version ("+n(a)+")"+(o?" for eager consumption":"")+" of shared module "+r+" found in shared scope "+t+".\nAvailable versions: "+Object.keys(l).map((e=>e+" from "+l[e].from)).join(", ")},h=e=>{throw new Error(e)},p=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},m=(e,t,r)=>r?r():((e,t)=>h("Shared module "+t+" doesn't exist in shared scope "+e))(e,t),v=(b=e=>function(t,r,a,n,o){var l=S.I(t);return l&&l.then&&!a?l.then(e.bind(e,t,S.S[t],r,!1,n,o)):e(t,S.S[t],r,a,n,o)})(((e,t,r,a,n,o)=>{if(!l(t,r))return m(e,r,o);var i=d(t,r,n,a);return i?c(i):o?o():void h(u(t,e,r,n,a))})),g=b(((e,t,r,a,n,i)=>{if(!l(t,r))return m(e,r,i);var d=f(t,r,a);return o(n,d)||p(s(t,r,d,n)),c(t[r][d])})),x={},y={18769:()=>v("default","react",!1,[6,0,0,0,,"experimental-ee8509801-20230117"],(()=>S.e(4041).then((()=>()=>S(14041))))),90870:()=>v("default","@next-core/element",!1,[1,1,2,19],(()=>S.e(1045).then((()=>()=>S(21045))))),30981:()=>v("default","@next-core/react-element",!1,[1,1,0,38],(()=>Promise.all([S.e(870),S.e(9435),S.e(7733)]).then((()=>()=>S(20114))))),34419:()=>g("default","@next-core/theme",!1,[1,1,6,1],(()=>S.e(1889).then((()=>()=>S(51889))))),52616:()=>g("default","@next-core/i18n",!1,[1,1,0,86],(()=>Promise.all([S.e(7019),S.e(671),S.e(3171)]).then((()=>()=>S(75552))))),41030:()=>g("default","lodash",!1,[1,4,17,21],(()=>S.e(5250).then((()=>()=>S(45250))))),77019:()=>g("default","@next-core/utils/general",!1,[1,1,8,7],(()=>S.e(871).then((()=>()=>S(40871))))),21302:()=>g("default","moment",!1,[1,2,30,1],(()=>Promise.all([S.e(7721),S.e(9844)]).then((()=>()=>S(99420))))),30348:()=>g("default","@next-core/runtime",!1,[1,1,71,0],(()=>Promise.all([S.e(948),S.e(2616),S.e(1030),S.e(7019),S.e(1302),S.e(2919),S.e(1321),S.e(9655),S.e(5651)]).then((()=>()=>S(30948))))),22919:()=>g("default","@next-core/http",!1,[1,1,2,14],(()=>S.e(8989).then((()=>()=>S(48989))))),71321:()=>g("default","@next-core/cook",!1,[0],(()=>Promise.all([S.e(1122),S.e(580)]).then((()=>()=>S(61122))))),61919:()=>g("default","@easyops-cn/brick-next-pipes",!1,[2,0,7,3],(()=>Promise.all([S.e(4306),S.e(1030),S.e(1302),S.e(5310)]).then((()=>()=>S(34306))))),59435:()=>v("default","react-dom",!1,[6,0,0,0,,"experimental-ee8509801-20230117"],(()=>S.e(3144).then((()=>()=>S(43144))))),69655:()=>g("default","@next-core/utils/storyboard",!1,[1,1,8,7],(()=>S.e(4765).then((()=>()=>S(97146))))),60709:()=>v("default","@next-core/react-runtime",!1,[1,1,7,39],(()=>S.e(9599).then((()=>()=>S(64837))))),55310:()=>g("default","js-yaml",!1,[0],(()=>S.e(9515).then((()=>()=>S(19515))))),40580:()=>g("default","@babel/parser",!1,[0],(()=>S.e(6773).then((()=>()=>S(46773))))),848:()=>g("default","i18next-browser-languagedetector",!1,[0],(()=>S.e(726).then((()=>()=>S(50726))))),75630:()=>g("default","i18next",!1,[0],(()=>S.e(843).then((()=>()=>S(20843))))),59933:()=>g("default","@next-core/pipes",!1,[0],(()=>Promise.all([S.e(1919),S.e(6519)]).then((()=>()=>S(76519))))),11732:()=>g("default","history",!1,[0],(()=>S.e(3003).then((()=>()=>S(65384))))),26036:()=>g("default","moment/locale/zh-cn.js",!1,[1,2,30,1],(()=>Promise.all([S.e(7721),S.e(9844)]).then((()=>()=>S(61329))))),29283:()=>g("default","@next-core/inject",!1,[0],(()=>Promise.all([S.e(9933),S.e(4658)]).then((()=>()=>S(72277))))),45599:()=>g("default","@next-core/loader",!1,[0],(()=>S.e(5399).then((()=>()=>S(35399))))),94167:()=>g("default","@next-core/supply",!1,[0],(()=>Promise.all([S.e(9933),S.e(1940)]).then((()=>()=>S(49559)))))},P={348:[30348],580:[40580],671:[848,75630],870:[90870],981:[30981],1030:[41030],1302:[21302],1321:[71321],1919:[61919],2616:[52616],2919:[22919],4419:[34419],5310:[55310],5651:[11732,26036,29283,45599,94167],7019:[77019],8769:[18769],9435:[59435],9496:[60709],9655:[69655],9933:[59933]},k={},S.f.consumes=(e,t)=>{S.o(P,e)&&P[e].forEach((e=>{if(S.o(x,e))return t.push(x[e]);if(!k[e]){var r=t=>{x[e]=0,S.m[e]=r=>{delete S.c[e],r.exports=t()}};k[e]=!0;var a=t=>{delete x[e],S.m[e]=r=>{throw delete S.c[e],t}};try{var n=y[e]();n.then?t.push(x[e]=n.then(r).catch(a)):r(n)}catch(e){a(e)}}}))},(()=>{S.b=document.baseURI||self.location.href;var e={8792:0};S.f.j=(t,r)=>{var a=S.o(e,t)?e[t]:void 0;if(0!==a)if(a)r.push(a[2]);else if(/^(1(030|302|321|919)|5(310|651|80)|87(0|69)|9(435|655|81|933)|(29|44|70)19|2616|348|671)$/.test(t))e[t]=0;else{var n=new Promise(((r,n)=>a=e[t]=[r,n]));r.push(a[2]=n);var o=S.p+S.u(t),l=new Error;S.l(o,(r=>{if(S.o(e,t)&&(0!==(a=e[t])&&(e[t]=void 0),a)){var n=r&&("load"===r.type?"missing":r.type),o=r&&r.target&&r.target.src;l.message="Loading chunk "+t+" failed.\n("+n+": "+o+")",l.name="ChunkLoadError",l.type=n,l.request=o,a[1](l)}}),"chunk-"+t,t)}};var t=(t,r)=>{var a,n,[o,l,c]=r,i=0;if(o.some((t=>0!==e[t]))){for(a in l)S.o(l,a)&&(S.m[a]=l[a]);c&&c(S)}for(t&&t(r);i<o.length;i++)n=o[i],S.o(e,n)&&e[n]&&e[n][0](),e[n]=0},r=globalThis.webpackChunk_next_bricks_ai_portal=globalThis.webpackChunk_next_bricks_ai_portal||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),S.nc=void 0,S(77736)})();
2
- //# sourceMappingURL=main.5ba2de01.js.map
@@ -1,2 +0,0 @@
1
- "use strict";(globalThis.webpackChunk_next_bricks_ai_portal=globalThis.webpackChunk_next_bricks_ai_portal||[]).push([[8775],{19464:(e,t,r)=>{r.d(t,{A:()=>g});var n=r(72591),l=r.n(n),o=r(1740),a=r.n(o),i=r(88128),s=r.n(i),c=r(30855),u=r.n(c),d=r(93051),p=r.n(d),v=r(73656),m=r.n(v),h=r(62522),f={};f.styleTagTransform=m(),f.setAttributes=u(),f.insert=s().bind(null,"head"),f.domAPI=a(),f.insertStyleElement=p(),l()(h.A,f);const g=h.A&&h.A.locals?h.A.locals:void 0},54519:(e,t,r)=>{r.r(t),r.d(t,{PreviewContainer:()=>U});var n,l=r(70918),o=r(86121),a=r(70829),i=r(62740),s=r(18769),c=r.n(s),u=r(90870),d=r(30981),p=(r(34419),r(52616)),v=r(30348),m=r(71568),h=r(41030),f=r(66477),g=r(19464),w=r(43100),A=r(23241);let E,T,b,k,I;(0,p.initializeI18n)(f.NS,f.I);const x=(0,d.wrapBrick)("eo-icon"),N=(0,d.wrapBrick)("eo-page-title"),_=(0,d.wrapBrick)("eo-main-view"),D=(0,d.wrapBrick)("eo-narrow-view"),{defineElement:y,property:R}=(0,u.createDecorators)();let U;var M=new WeakMap,z=new WeakMap,L=new WeakMap;class B extends d.ReactNextElement{constructor(){super(...arguments),(0,l.A)(this,M,T(this)),(0,l.A)(this,z,(b(this),k(this))),(0,l.A)(this,L,(I(this),(0,h.uniqueId)()))}get source(){return(0,a.A)(M,this)}set source(e){(0,o.A)(M,this,e)}get url(){return(0,a.A)(z,this)}set url(e){(0,o.A)(z,this,e)}render(){return c().createElement(s.Suspense,{fallback:c().createElement(x,{lib:"antd",icon:"loading-3-quarters",spinning:!0,className:g.A.loading})},c().createElement(C,{rootId:(0,a.A)(L,this),source:this.source,url:this.url}))}}function C(e){let{rootId:t,source:r,url:n}=e;const l=(0,s.useMemo)((()=>r?async function(e){const t=await(0,w.f)();return await t.parseView(e)}(r).catch((e=>(console.error("Failed to parse view:",e),null))):Promise.resolve(null)),[r]),o=(0,s.use)(l),a=(0,s.useMemo)((()=>o?(0,m.z)(o,{rootId:t,expanded:!0}).catch((e=>(console.error("Failed to convert view:",e),null))):Promise.resolve(null)),[o,t]),i=(0,s.use)(a),u=(0,s.useMemo)((()=>{var e;return null==o||null===(e=o.entry)||void 0===e||null===(e=e.defaultExport)||void 0===e?void 0:e.title}),[o]);return c().createElement(P,{rootId:t,pageTitle:u,convertedResult:i,url:n})}function P(e){let{rootId:t,pageTitle:r,convertedResult:n,url:l}=e;const o=(0,s.useRef)(null),a=(0,s.useRef)(null);return(0,s.useEffect)((()=>{const e=o.current;if(!e)return;const r=(0,A.d)(t),n=(0,v.unstable_createRoot)(e,{portal:r,supportsUseChildren:!0});return a.current=n,()=>{n.unmount(),r.remove(),a.current=null}}),[t]),(0,s.useEffect)((()=>{var e;if(!n)return;const{brick:t,context:r,functions:o,templates:i}=n;null===(e=a.current)||void 0===e||e.render(t,{context:r,functions:o,templates:i,url:l})}),[n,l]),c().createElement(D,{size:"large",className:g.A.container},c().createElement(_,null,c().createElement(N,{slot:"pageTitle",pageTitle:r||(0,f.t)(f.K.UNTITLED)}),c().createElement("div",{className:g.A.main,ref:o,"data-root-id":t})))}n=B,({e:[T,b,k,I],c:[U,E]}=(0,i.A)(n,[y("ai-portal.preview-container",{shadowOptions:!1})],[[R({attribute:!1}),1,"source"],[R(),1,"url"]],0,void 0,d.ReactNextElement)),E()},62522:(e,t,r)=>{r.d(t,{A:()=>i});var n=r(36758),l=r.n(n),o=r(40935),a=r.n(o)()(l());a.push([e.id,"ai-portal\\.preview-container{display:block;background:rgba(247,248,250,1)}.loading--uD2jY9vX{position:absolute;top:50%;left:50%;font-size:48px;color:var(--palette-gray-5);margin:0 -24px}",""]),a.locals={loading:"loading--uD2jY9vX"};const i=a},66477:(e,t,r)=>{r.d(t,{I:()=>a,K:()=>l,NS:()=>o,t:()=>i});var n=r(52616);let l=function(e){return e.UNTITLED="UNTITLED",e}({});const o="bricks/ai-portal/preview-container",a={en:{UNTITLED:"Untitled"},zh:{UNTITLED:"无标题"}},i=n.i18n.getFixedT(null,o)}}]);
2
- //# sourceMappingURL=preview-container.19631a7b.js.map