@next-bricks/ai-portal 0.63.0 → 0.63.2

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 (69) hide show
  1. package/dist/bricks.json +50 -50
  2. package/dist/chunks/1447.1763ddd6.js +2 -0
  3. package/dist/chunks/1447.1763ddd6.js.map +1 -0
  4. package/dist/chunks/2028.81962baa.js +3 -0
  5. package/dist/chunks/2028.81962baa.js.map +1 -0
  6. package/dist/chunks/3363.d64d8e2a.js +2 -0
  7. package/dist/chunks/3363.d64d8e2a.js.map +1 -0
  8. package/dist/chunks/4208.f9256bec.js +2 -0
  9. package/dist/chunks/4208.f9256bec.js.map +1 -0
  10. package/dist/chunks/4820.16e00935.js +2 -0
  11. package/dist/chunks/4820.16e00935.js.map +1 -0
  12. package/dist/chunks/7059.e3cef2d5.js +3 -0
  13. package/dist/chunks/7059.e3cef2d5.js.map +1 -0
  14. package/dist/chunks/778.85eedde5.js +2 -0
  15. package/dist/chunks/778.85eedde5.js.map +1 -0
  16. package/dist/chunks/9273.fbb69eb2.js +2 -0
  17. package/dist/chunks/{9273.3d1a73c8.js.map → 9273.fbb69eb2.js.map} +1 -1
  18. package/dist/chunks/chat-panel.9a58a43d.js +2 -0
  19. package/dist/chunks/chat-panel.9a58a43d.js.map +1 -0
  20. package/dist/chunks/chat-stream.c13cfc3f.js +2 -0
  21. package/dist/chunks/chat-stream.c13cfc3f.js.map +1 -0
  22. package/dist/chunks/elevo-sidebar.78a35f1d.js.map +1 -1
  23. package/dist/chunks/icon-button.545ffb24.js +2 -0
  24. package/dist/chunks/icon-button.545ffb24.js.map +1 -0
  25. package/dist/chunks/main.7105f876.js +2 -0
  26. package/dist/chunks/{main.3021b8e8.js.map → main.7105f876.js.map} +1 -1
  27. package/dist/examples.json +23 -23
  28. package/dist/index.4db426c8.js +2 -0
  29. package/dist/index.4db426c8.js.map +1 -0
  30. package/dist/manifest.json +383 -352
  31. package/dist/types.json +3269 -2531
  32. package/dist-types/chat-panel/index.d.ts +8 -3
  33. package/dist-types/elevo-sidebar/SpaceNav.d.ts +2 -1
  34. package/dist-types/elevo-sidebar/constants.d.ts +1 -0
  35. package/dist-types/elevo-sidebar/i18n.d.ts +2 -1
  36. package/dist-types/elevo-sidebar/index.d.ts +1 -0
  37. package/dist-types/elevo-sidebar/useNavLinkActive.d.ts +1 -0
  38. package/dist-types/icon-button/index.d.ts +2 -0
  39. package/dist-types/jsx.d.ts +1 -0
  40. package/dist-types/shared/FilePreview/FilePreview.d.ts +2 -1
  41. package/dist-types/shared/FilePreview/ImagesPreview.d.ts +2 -1
  42. package/docs/chat-panel.md +19 -3
  43. package/package.json +2 -2
  44. package/dist/chunks/4820.15145a03.js +0 -2
  45. package/dist/chunks/4820.15145a03.js.map +0 -1
  46. package/dist/chunks/6665.b5b39ef8.js +0 -2
  47. package/dist/chunks/6665.b5b39ef8.js.map +0 -1
  48. package/dist/chunks/689.11701509.js +0 -3
  49. package/dist/chunks/689.11701509.js.map +0 -1
  50. package/dist/chunks/7059.ee6fc15b.js +0 -3
  51. package/dist/chunks/7059.ee6fc15b.js.map +0 -1
  52. package/dist/chunks/7609.13366989.js +0 -2
  53. package/dist/chunks/7609.13366989.js.map +0 -1
  54. package/dist/chunks/778.b1fd7b4c.js +0 -2
  55. package/dist/chunks/778.b1fd7b4c.js.map +0 -1
  56. package/dist/chunks/8730.509db084.js +0 -2
  57. package/dist/chunks/8730.509db084.js.map +0 -1
  58. package/dist/chunks/9273.3d1a73c8.js +0 -2
  59. package/dist/chunks/chat-panel.a64e0e43.js +0 -2
  60. package/dist/chunks/chat-panel.a64e0e43.js.map +0 -1
  61. package/dist/chunks/chat-stream.a35fa156.js +0 -2
  62. package/dist/chunks/chat-stream.a35fa156.js.map +0 -1
  63. package/dist/chunks/icon-button.66d6d83a.js +0 -2
  64. package/dist/chunks/icon-button.66d6d83a.js.map +0 -1
  65. package/dist/chunks/main.3021b8e8.js +0 -2
  66. package/dist/index.eb7fcf13.js +0 -2
  67. package/dist/index.eb7fcf13.js.map +0 -1
  68. /package/dist/chunks/{689.11701509.js.LICENSE.txt → 2028.81962baa.js.LICENSE.txt} +0 -0
  69. /package/dist/chunks/{7059.ee6fc15b.js.LICENSE.txt → 7059.e3cef2d5.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"chunks/7609.13366989.js","mappings":"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","sources":["webpack:///./src/shared/CreatedView/CreatedView.module.css","webpack:///./src/shared/MarkdownPre.module.css?da10","webpack:///./src/shared/MarkdownPre.tsx","webpack:///./src/shared/MarkdownPre.module.css","webpack:///./src/cruise-canvas/utils/createPortal.ts","webpack:///./src/shared/fetchEmployee.ts","webpack:///./src/cruise-canvas/EnhancedMarkdown/EnhancedMarkdown.tsx","webpack:///./src/shared/bricks.ts","webpack:///./src/cruise-canvas/CanvasContext.ts","webpack:///./src/shared/FloatingButton.module.css","webpack:///./src/shared/RequestHumanAction/RequestHumanAction.module.css?91ef","webpack:///./src/shared/RequestHumanAction/RequestHumanAction.tsx","webpack:///./src/cruise-canvas/shared.module.css?c988","webpack:///./src/shared/constants.ts","webpack:///./src/cruise-canvas/CmdbInstanceDetail/CmdbInstanceDetail.module.css?7513","webpack:///./src/cruise-canvas/CmdbInstanceDetail/CmdbInstanceDetail.tsx","webpack:///./src/shared/workers/tsxParser.ts","webpack:///./src/shared/FilePreview/FileList.module.css?3ed2","webpack:///./src/shared/FilePreview/FileList.tsx","webpack:///./src/shared/getOrderedNodes.ts","webpack:///./src/shared/getFlatChunks.ts","webpack:///./src/shared/getTaskTree.ts","webpack:///../../src/index.ts","webpack:///../../src/utils.ts","webpack:///../../src/rehypeMermaid.ts","webpack:///../../src/MarkdownComponent.tsx","webpack:///./src/cruise-canvas/CmdbInstanceDetail/CmdbInstanceDetail.module.css","webpack:///./src/cruise-canvas/utils/file.ts","webpack:///./src/shared/parseTemplate.ts","webpack:///./src/cruise-canvas/reducers/tasks.ts","webpack:///./src/cruise-canvas/reducers/serviceFlows.ts","webpack:///./src/cruise-canvas/reducers/index.ts","webpack:///./src/cruise-canvas/reducers/conversation.ts","webpack:///./src/cruise-canvas/reducers/errors.ts","webpack:///./src/cruise-canvas/useConversationDetail.ts","webpack:///./src/shared/FloatingButton.module.css?87dc","webpack:///./src/shared/getAsyncConstructedView.ts","webpack:///./src/shared/TaskContext.ts","webpack:///./src/shared/ReadableCommand/ReadableCommand.module.css?7a0c","webpack:///./src/shared/ReadableCommand/ReadableCommand.tsx","webpack:///./src/shared/ReadableCommand/ReadableCommand.module.css","webpack:///./src/shared/FilePreview/i18n.ts","webpack:///./src/shared/CreatedView/ViewToolbar.module.css","webpack:///./src/shared/CreatedView/CreatedView.module.css?fa62","webpack:///./src/shared/CreatedView/CreatedView.tsx","webpack:///./src/shared/CreatedView/ViewToolbar.module.css?4751","webpack:///./src/shared/CreatedView/i18n.ts","webpack:///./src/shared/CreatedView/ViewToolbar.tsx","webpack:///./src/shared/RequestHumanAction/RequestHumanAction.module.css","webpack:///./src/cruise-canvas/shared.module.css","webpack:///./src/shared/useViewFeedbackDone.ts","webpack:///./src/shared/FilePreview/FileList.module.css","webpack:///./src/shared/FilePreview/getImageUrl.ts"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.heading--Mi2u66PA{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.title--t7OpwWbH{font-size:12px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;--shine-text-color:rgba(38,38,38,0.65);--shine-text-highlight-color:#dcdcdc}ai-portal\\\\.cruise-canvas .title--t7OpwWbH{text-indent:4px}ai-portal\\\\.cruise-canvas .heading--Mi2u66PA{margin-bottom:10px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"heading\": `heading--Mi2u66PA`,\n\t\"title\": `title--t7OpwWbH`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./MarkdownPre.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./MarkdownPre.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport {\n CodeWrapper,\n type CodeWrapperProps,\n} from \"@next-bricks/presentational/code-wrapper\";\nimport styles from \"./MarkdownPre.module.css\";\n\nconst WrappedCodeWrapper = wrapBrick<CodeWrapper, CodeWrapperProps>(\n \"presentational.code-wrapper\"\n);\n\nexport type MarkdownComponentProps = JSX.IntrinsicElements[\"pre\"] & {\n node?: unknown;\n};\n\nexport function MarkdownPre({ node, ...props }: MarkdownComponentProps) {\n return (\n <WrappedCodeWrapper\n className={styles[\"code-wrapper\"]}\n preProps={props}\n showCopyButton={!!props.className?.includes(\"shiki\")}\n themeVariant=\"elevo\"\n />\n );\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.code-wrapper--jieEbxla::part(pre){border:1px solid #ccd1de}.code-wrapper--jieEbxla::part(mermaid){border:none;background:none}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"code-wrapper\": `code-wrapper--jieEbxla`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","export function createPortal(rootId: string) {\n const portal = document.createElement(\"div\");\n portal.dataset.rootId = rootId;\n portal.style.position = \"absolute\";\n portal.style.width = portal.style.height = \"0\";\n document.body.append(portal);\n return portal;\n}\n","import {\n ElevoApi_listElevoAiEmployees,\n type ElevoApi_ListElevoAiEmployeesResponseItem,\n} from \"@next-api-sdk/llm-sdk\";\n\nconst cache = new Map<\n string,\n Promise<ElevoApi_ListElevoAiEmployeesResponseItem | undefined>\n>();\n\nexport function fetchEmployee(\n aiEmployeeId: string\n): Promise<ElevoApi_ListElevoAiEmployeesResponseItem | undefined> {\n const cached = cache.get(aiEmployeeId);\n if (cached) {\n return cached;\n }\n const promise = doFetchEmployee(aiEmployeeId);\n cache.set(aiEmployeeId, promise);\n return promise;\n}\n\nasync function doFetchEmployee(aiEmployeeId: string) {\n const response = await ElevoApi_listElevoAiEmployees({\n employeeId: aiEmployeeId,\n } as any);\n const employee = response.list?.[0];\n return employee?.employeeId === aiEmployeeId ? employee : undefined;\n}\n\nexport function clearCache() {\n cache.clear();\n}\n","import React, { useCallback, useContext, useRef } from \"react\";\nimport {\n MarkdownComponent,\n type MarkdownComponentProps,\n} from \"@next-shared/markdown\";\nimport { CanvasContext } from \"../CanvasContext\";\nimport { MarkdownPre } from \"../../shared/MarkdownPre\";\n\nconst components: MarkdownComponentProps[\"components\"] = {\n pre: MarkdownPre,\n};\n\nconst shikiOptions: MarkdownComponentProps[\"shiki\"] = {\n theme: \"light-plus\",\n};\n\nexport interface EnhancedMarkdownProps extends MarkdownComponentProps {\n className?: string;\n}\n\nexport function EnhancedMarkdown({\n className,\n ...props\n}: EnhancedMarkdownProps) {\n const ref = useRef<HTMLDivElement>(null);\n const { setHoverOnScrollableContent } = useContext(CanvasContext);\n\n const handleMouseMove = useCallback(\n (e: React.MouseEvent) => {\n let found = false;\n for (const el of e.nativeEvent.composedPath()) {\n if (el === ref.current) {\n break;\n }\n if (\n (el instanceof HTMLTableElement || el instanceof HTMLPreElement) &&\n el.scrollWidth > el.clientWidth\n ) {\n found = true;\n break;\n }\n }\n setHoverOnScrollableContent(found);\n },\n [setHoverOnScrollableContent]\n );\n\n const handleMouseLeave = useCallback(() => {\n setHoverOnScrollableContent(false);\n }, [setHoverOnScrollableContent]);\n\n return (\n <div\n className={className}\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n >\n <MarkdownComponent\n {...props}\n components={components}\n shiki={shikiOptions}\n />\n </div>\n );\n}\n","import { wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Button, ButtonProps } from \"@next-bricks/basic/button\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport type {\n Drawer,\n DrawerProps,\n DrawerEvents,\n DrawerMapEvents,\n} from \"@next-bricks/containers/drawer\";\nimport type { showDialog as _showDialog } from \"@next-bricks/basic/data-providers/show-dialog/show-dialog\";\nimport type { copyToClipboard as _copyToClipboard } from \"@next-bricks/basic/data-providers/copy-to-clipboard\";\nimport {\n CodeBlock,\n CodeBlockProps,\n} from \"@next-bricks/presentational/code-block\";\nimport type { IconButton, IconButtonProps } from \"../icon-button\";\nimport type {\n ChatInput,\n ChatInputEvents,\n ChatInputMapEvents,\n ChatInputProps,\n} from \"../chat-input\";\nimport type { ShowCase, ShowCaseProps } from \"../show-case\";\nimport type {\n RunningFlow,\n RunningFlowEvents,\n RunningFlowMapEvents,\n RunningFlowProps,\n} from \"../running-flow\";\nimport type { BlankState, BlankStateProps } from \"../blank-state\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport const WrappedButton = wrapBrick<Button, ButtonProps>(\"eo-button\");\n\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nexport const WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\n\nexport const WrappedDrawer = wrapBrick<\n Drawer,\n DrawerProps & {\n keyboard?: boolean;\n themeVariant?: \"default\" | \"elevo\";\n },\n DrawerEvents,\n DrawerMapEvents\n>(\"eo-drawer\", {\n onClose: \"close\",\n onOpen: \"open\",\n});\n\nexport const WrappedIconButton = wrapBrick<IconButton, IconButtonProps>(\n \"ai-portal.icon-button\"\n);\n\nexport const WrappedChatInput = wrapBrick<\n ChatInput,\n ChatInputProps,\n ChatInputEvents,\n ChatInputMapEvents\n>(\"ai-portal.chat-input\", {\n onChatSubmit: \"chat.submit\",\n onTerminate: \"terminate\",\n});\n\nexport const WrappedShowCase = wrapBrick<ShowCase, ShowCaseProps>(\n \"ai-portal.show-case\"\n);\n\nexport const WrappedCodeBlock = wrapBrick<CodeBlock, CodeBlockProps>(\n \"eo-code-block\"\n);\n\nexport const WrappedBlankState = wrapBrick<BlankState, BlankStateProps>(\n \"ai-portal.blank-state\"\n);\n\nexport const WrappedRunningFlow = wrapBrick<\n RunningFlow,\n RunningFlowProps,\n RunningFlowEvents,\n RunningFlowMapEvents\n>(\"ai-portal.running-flow\", {\n onActiveChange: \"active.change\",\n});\n\nexport const showDialog =\n unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\n\nexport const copyToClipboard = unwrapProvider<typeof _copyToClipboard>(\n \"basic.copy-to-clipboard\"\n);\n","import { createContext, type Dispatch } from \"react\";\nimport type { SizeTuple } from \"./interfaces\";\n\nexport interface CanvasContextValue {\n onNodeResize: (id: string, size: SizeTuple | null) => void;\n setActiveNodeId: Dispatch<React.SetStateAction<string | null>>;\n hoverOnScrollableContent: boolean;\n setHoverOnScrollableContent: Dispatch<React.SetStateAction<boolean>>;\n supports?: Record<string, boolean>;\n}\n\nexport const CanvasContext = createContext<CanvasContextValue>({\n onNodeResize: () => {},\n setActiveNodeId: () => {},\n hoverOnScrollableContent: false,\n setHoverOnScrollableContent: () => {},\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, `.floating-button--s8FIucxe{display:flex;align-items:center;justify-content:center;padding:0;background:#fff;box-shadow:0px 4px 8px 0px rgba(0,0,0,0.06);border:1px solid rgba(0,0,0,0.02);border-radius:999px;cursor:pointer}.floating-button--s8FIucxe:hover{box-shadow:0px 6px 12px 0px rgba(0,0,0,0.1);border-color:rgba(0,0,0,0.08)}.floating-button--s8FIucxe:focus{outline:none}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"floating-button\": `floating-button--s8FIucxe`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./RequestHumanAction.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]!./RequestHumanAction.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React, { useContext, useState } from \"react\";\nimport styles from \"./RequestHumanAction.module.css\";\n// import { K, t } from \"../i18n.js\";\nimport { WrappedButton } from \"../bricks\";\nimport { TaskContext } from \"../TaskContext\";\nimport type { HumanAction } from \"../interfaces\";\nimport classNames from \"classnames\";\n\nexport function RequestHumanAction({\n action,\n ui,\n}: {\n action: HumanAction;\n ui?: \"canvas\" | \"chat\";\n}): JSX.Element | null {\n const { humanInput, replay } = useContext(TaskContext);\n const [disabled, setDisabled] = useState(false);\n\n if (action.type === \"select\") {\n return null;\n }\n\n return (\n <div\n className={classNames(styles[\"human-action\"], {\n [styles.canvas]: ui !== \"chat\",\n })}\n >\n <WrappedButton\n type=\"primary\"\n themeVariant=\"elevo\"\n shape={ui === \"chat\" ? undefined : \"round\"}\n disabled={disabled}\n onClick={() => {\n if (replay) {\n return;\n }\n humanInput(null, action.confirmText || \"确认\");\n setDisabled(true);\n }}\n >\n {action.confirmText || \"确认\"}\n </WrappedButton>\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]!./shared.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./shared.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import type { GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport type { ConversationState, JobState, TaskState } from \"./interfaces.js\";\n\nexport const DONE_STATES = [\n \"completed\",\n \"failed\",\n \"canceled\",\n \"terminated\",\n] as (ConversationState | TaskState | JobState | undefined)[];\n\nexport const GENERAL_DONE_STATES = [...DONE_STATES, \"paused\"] as (\n | ConversationState\n | TaskState\n | JobState\n | undefined\n)[];\n\nexport const NON_WORKING_STATES = [...GENERAL_DONE_STATES, \"input-required\"];\n\nexport const ICON_CLOSE: GeneralIconProps = {\n lib: \"lucide\",\n icon: \"x\",\n};\n\nexport const ICON_LOADING: GeneralIconProps = {\n lib: \"antd\",\n icon: \"loading-3-quarters\",\n spinning: true,\n};\n\nexport const ICON_CANVAS: GeneralIconProps = {\n lib: \"lucide\",\n icon: \"network\",\n} as GeneralIconProps;\n\nexport const ICON_CHAT: GeneralIconProps = {\n lib: \"lucide\",\n icon: \"messages-square\",\n} as GeneralIconProps;\n\nexport const ICON_FEEDBACK: GeneralIconProps = {\n lib: \"lucide\",\n icon: \"message-square\",\n};\n\nexport const ICON_EXTERNAL_LINK: GeneralIconProps = {\n lib: \"lucide\",\n icon: \"external-link\",\n};\n\nexport const ICON_UP: GeneralIconProps = {\n lib: \"fa\",\n icon: \"angle-up\",\n};\n\nexport const ICON_DOWNLOAD: GeneralIconProps = {\n lib: \"antd\",\n icon: \"download\",\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]!./CmdbInstanceDetail.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./CmdbInstanceDetail.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { orderBy, uniqueId, upperFirst } from \"lodash\";\nimport { unstable_createRoot } from \"@next-core/runtime\";\nimport {\n // UseBrickConf,\n type BrickConf,\n type BrickEventHandler,\n type ContextConf,\n type UseSingleBrickConf,\n} from \"@next-core/types\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport type { DescriptionItem } from \"@next-bricks/presentational/descriptions\";\nimport type { CmdbInstanceDetailData } from \"../interfaces\";\n// import { getPreGeneratedAttrViews } from \"../utils/converters/getPreGeneratedAttrViews\";\n// import { convertToStoryboard } from \"../utils/converters/raw-data-generate/convert\";\nimport type { JSONSchema, JSONSchemaObject } from \"../json-schema\";\nimport styles from \"./CmdbInstanceDetail.module.css\";\nimport { createPortal } from \"../utils/createPortal\";\nimport { WrappedIcon } from \"../../shared/bricks\";\nimport { ICON_LOADING } from \"../../shared/constants\";\n\n/**\n * 如果属性数量超过阈值,则使用两列布局\n */\nconst LIST_SPLIT_THRESHOLD = 6;\n\n/**\n * 如果条目数量超过阈值,则使用表格显示\n */\nconst SHOW_AS_TABLE_THRESHOLD = 2;\n\nconst BUILTIN_FN_STRINGIFY = \"__builtin_fn_stringify\";\n\nexport function CmdbInstanceDetail({\n objectId,\n detail,\n outputSchema,\n}: CmdbInstanceDetailData) {\n const rootId = useMemo(() => uniqueId(), []);\n const ref = useRef<HTMLDivElement>(null);\n const rootRef = useRef<Awaited<\n ReturnType<typeof unstable_createRoot>\n > | null>(null);\n\n useEffect(() => {\n const container = ref.current;\n if (!container) {\n return;\n }\n const portal = createPortal(rootId);\n const root = unstable_createRoot(container, {\n portal,\n supportsUseChildren: true,\n } as any);\n rootRef.current = root;\n\n return () => {\n root.unmount();\n portal.remove();\n rootRef.current = null;\n };\n }, [rootId]);\n\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n let ignore = false;\n (async () => {\n setLoading(true);\n try {\n const { bricks, context } = await convertCmdbInstanceDetail(\n detail,\n objectId,\n outputSchema,\n rootId\n );\n if (ignore) {\n return;\n }\n await rootRef.current?.render(bricks, { context });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to render view:\", error);\n }\n if (!ignore) {\n setLoading(false);\n }\n })();\n\n return () => {\n ignore = true;\n };\n }, [detail, objectId, outputSchema, rootId]);\n\n return (\n <div className={styles.container}>\n {loading && <WrappedIcon className={styles.loading} {...ICON_LOADING} />}\n <div data-root-id={rootId} ref={ref} />\n </div>\n );\n}\n\nfunction isComplexType(type: JSONSchema[\"type\"] | undefined): boolean {\n return !type || type === \"object\" || type === \"array\";\n}\n\nfunction isEmptyValue(detail: Record<string, any>, key: string) {\n return (\n !hasOwnProperty(detail, key) ||\n detail[key] == null ||\n detail[key] === \"\" ||\n (Array.isArray(detail[key]) && detail[key].length === 0)\n );\n}\n\nasync function convertCmdbInstanceDetail(\n detail: Record<string, any>,\n objectId: string,\n outputSchema: JSONSchema | string | undefined,\n rootId: string\n): Promise<{ bricks: BrickConf[]; context: ContextConf[] }> {\n // const attrViews = await getPreGeneratedAttrViews(objectId, 1);\n\n let schema: JSONSchema | undefined;\n if (typeof outputSchema === \"string\") {\n try {\n schema = JSON.parse(outputSchema) as JSONSchema;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to parse outputSchema as JSON\", e);\n }\n } else {\n schema = outputSchema;\n }\n\n let list: DescriptionItem[];\n const modals: BrickConf[] = [];\n const context: ContextConf[] = [\n {\n name: BUILTIN_FN_STRINGIFY,\n value: builtinFnStringify,\n },\n ];\n\n function convertArrayOfObjects(\n valueAccessor: string,\n schema: JSONSchemaObject,\n label: string,\n idPrefix: string,\n needContext?: boolean\n ): UseSingleBrickConf {\n const props = getOrderedProps(schema);\n const key = props.length > 0 ? props[0][0] : null;\n const modalId = normalizeIdentifier(`modal__${idPrefix}`);\n const contextId = normalizeIdentifier(`context__${idPrefix}`);\n if (needContext) {\n context.push({\n name: contextId,\n });\n }\n\n const modal: BrickConf = {\n brick: \"eo-modal\",\n portal: true,\n properties: {\n dataset: {\n modalId,\n },\n width: \"800px\",\n themeVariant: \"elevo\",\n modalTitle: label,\n hideCancelButton: true,\n maskClosable: true,\n keyboard: true,\n },\n };\n\n modals.push(modal);\n\n const columns: {\n key: string;\n dataIndex: string;\n title: string;\n useChildren?: string;\n }[] = [];\n const tableChildren: UseSingleBrickConf[] = [];\n\n for (const [k, v] of props) {\n let useChildren: string | undefined;\n if (v.type === \"array\" && v.items.type === \"object\") {\n useChildren = `[${k}]`;\n tableChildren.push({\n ...convertArrayOfObjects(\n \"DATA.cellData\",\n v.items,\n v.description || upperFirst(k),\n `${idPrefix}__${k}`,\n true\n ),\n slot: useChildren,\n });\n } else if (v.type === \"object\") {\n useChildren = `[${k}]`;\n tableChildren.push({\n ...convertObject(\n \"DATA.cellData\",\n v,\n v.description || upperFirst(k),\n `${idPrefix}__${k}`,\n true\n ),\n slot: useChildren,\n });\n }\n\n columns.push({\n key: k,\n dataIndex: k,\n title: v.description || upperFirst(k),\n useChildren,\n });\n }\n\n modal.children = [\n {\n brick: \"eo-next-table\",\n properties: {\n dataSource: needContext\n ? `<%= { list: CTX.${contextId} } %>`\n : `<% { list: (${valueAccessor}) } %>`,\n columns,\n themeVariant: \"elevo\",\n pagination: false,\n bordered: true,\n },\n children: tableChildren,\n },\n ];\n\n const clickHandler: BrickEventHandler[] = [\n ...((needContext\n ? [\n {\n action: \"context.replace\",\n args: [\n {\n name: contextId,\n value: `<% ${valueAccessor} %>`,\n },\n ],\n },\n ]\n : []) as BrickEventHandler[]),\n {\n target: `[data-root-id=\"${rootId}\"] [data-modal-id=\"${modalId}\"]`,\n method: \"open\",\n },\n ];\n\n return {\n brick: \"span\",\n if: `<% !!(${valueAccessor}) %>`,\n properties: {\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"0.5em\",\n },\n },\n children: [\n {\n brick: \":forEach\",\n dataSource: `<% (${valueAccessor}).slice(0, ${SHOW_AS_TABLE_THRESHOLD}) %>`,\n children: [\n {\n brick: \"eo-tag\",\n properties: {\n textContent: `<% CTX.${BUILTIN_FN_STRINGIFY}(ITEM, ${JSON.stringify(key)}, ${JSON.stringify(props[0]?.[1].type)}) %>`,\n outline: true,\n style: {\n cursor: \"pointer\",\n },\n },\n events: {\n click: clickHandler,\n },\n },\n ],\n },\n {\n brick: \"eo-link\",\n if: `<% (${valueAccessor}).length > ${SHOW_AS_TABLE_THRESHOLD} %>`,\n properties: {\n textContent: `<% \\`+\\${(${valueAccessor}).length - ${SHOW_AS_TABLE_THRESHOLD}}\\` %>`,\n },\n events: {\n click: clickHandler,\n },\n },\n ],\n };\n }\n\n function convertObject(\n valueAccessor: string,\n schema: JSONSchemaObject,\n label: string,\n idPrefix: string,\n needContext?: boolean\n ): UseSingleBrickConf {\n const props = getOrderedProps(schema);\n const key = props.length > 0 ? props[0][0] : null;\n const modalId = normalizeIdentifier(`modal__${idPrefix}`);\n const contextId = normalizeIdentifier(`context__${idPrefix}`);\n if (needContext) {\n context.push({\n name: contextId,\n });\n }\n\n modals.push({\n brick: \"eo-modal\",\n portal: true,\n properties: {\n dataset: {\n modalId,\n },\n themeVariant: \"elevo\",\n modalTitle: label,\n hideCancelButton: true,\n maskClosable: true,\n keyboard: true,\n },\n children: [\n {\n brick: \"eo-descriptions\",\n properties: {\n themeVariant: \"elevo\",\n column: 1,\n dataSource: needContext\n ? `<%= CTX.${contextId} %>`\n : `<% ${valueAccessor} %> `,\n list: props.map(([k, v]) => ({\n label: v.description || upperFirst(k),\n field: k,\n })),\n },\n },\n ],\n });\n\n return {\n brick: \"span\",\n if: `<% !!(${valueAccessor}) %>`,\n properties: {\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"0.5em\",\n },\n },\n children: [\n {\n brick: \"eo-tag\",\n properties: {\n textContent: `<% CTX.${BUILTIN_FN_STRINGIFY}(${valueAccessor}, ${JSON.stringify(key)}, ${JSON.stringify(props[0]?.[1].type)}) %>`,\n outline: true,\n style: {\n cursor: \"pointer\",\n },\n },\n events: {\n click: [\n ...((needContext\n ? [\n {\n action: \"context.replace\",\n args: [\n {\n name: contextId,\n value: `<% ${valueAccessor} %>`,\n },\n ],\n },\n ]\n : []) as BrickEventHandler[]),\n {\n target: `[data-root-id=\"${rootId}\"] [data-modal-id=\"${modalId}\"]`,\n method: \"open\",\n },\n ],\n },\n },\n ],\n };\n }\n\n if (schema?.type === \"object\") {\n const entries = Object.entries<JSONSchema>(schema.properties);\n list = entries.map<DescriptionItem>(([key, def]) => {\n const { description, type } = def;\n const label = description || upperFirst(key);\n\n if (isEmptyValue(detail, key)) {\n return {\n label,\n text: \"\",\n };\n }\n\n if (type === \"array\" && Array.isArray(detail[key])) {\n const { items } = def;\n if (items?.type === \"object\") {\n const contextName = normalizeIdentifier(`context__${key}`);\n context.push({\n name: contextName,\n value: detail[key],\n });\n\n return {\n label,\n useBrick: convertArrayOfObjects(\n `CTX.${contextName}`,\n items,\n label,\n key\n ),\n };\n }\n\n if (!isComplexType(items?.type)) {\n return {\n label,\n text: detail[key].join(\", \"),\n };\n }\n }\n\n if (type === \"object\" && isObject(detail[key])) {\n const contextName = normalizeIdentifier(`context__${key}`);\n context.push({\n name: contextName,\n value: detail[key],\n });\n\n return {\n label,\n useBrick: convertObject(`CTX.${contextName}`, def, label, key),\n };\n }\n\n if (isComplexType(type)) {\n return {\n label,\n text: JSON.stringify(detail[key], null, 2),\n };\n }\n\n // const candidate = attrViews?.get(key);\n // if (candidate) {\n // const brick = convertToStoryboard(candidate, key, {\n // ignoreStyle: true,\n // });\n // if (brick) {\n // return {\n // label,\n // useBrick: brick as UseBrickConf,\n // };\n // }\n // }\n\n return {\n label,\n field: key,\n };\n });\n } else {\n list = Object.keys(detail).map((key) => ({\n label: upperFirst(key),\n field: key,\n }));\n }\n\n return {\n bricks: [\n {\n brick: \"eo-descriptions\",\n properties: {\n themeVariant: \"elevo\",\n column: list.length > LIST_SPLIT_THRESHOLD ? 2 : 1,\n dataSource: detail,\n list,\n },\n },\n ...modals,\n ],\n context,\n };\n}\n\nfunction normalizeIdentifier(identifier: string): string {\n return identifier.replace(/[^a-zA-Z0-9_]+/g, \"_\");\n}\n\nfunction builtinFnStringify(\n value: Record<string, unknown>,\n key: string | null,\n type: JSONSchema[\"type\"] | undefined\n): string {\n if (key === null || isEmptyValue(value, key)) {\n return \"\";\n }\n const v = value[key];\n if (isComplexType(type) && isObject(v)) {\n return JSON.stringify(v, null, 2);\n }\n return String(v);\n}\n\nfunction getOrderedProps(schema: JSONSchemaObject) {\n const props = Object.entries(schema.properties);\n if (!schema.required?.length) {\n return props;\n }\n const propKeys = Object.keys(schema.properties);\n return orderBy(\n props,\n [\n ([k]) => {\n const requiredIndex = schema.required!.indexOf(k);\n if (requiredIndex === -1) {\n return schema.required!.length + propKeys.indexOf(k);\n }\n return requiredIndex;\n },\n ],\n [\"asc\"]\n );\n}\n","// istanbul ignore file\nimport type { ParsedApp, ParseOptions } from \"@next-tsx/parser\";\nimport { wrap } from \"comlink\";\n\nexport interface RemoteTsxParserWorker {\n parseView(source: string, options?: ParseOptions): Promise<ParsedApp>;\n}\n\nlet remoteWorkerPromise: Promise<RemoteTsxParserWorker> | undefined;\n\nlet worker: Worker | undefined;\n\nexport function getRemoteTsxParserWorker() {\n if (!remoteWorkerPromise) {\n remoteWorkerPromise = (async () => {\n const Remote = wrap<{ new (): RemoteTsxParserWorker }>(getWorker());\n return await new Remote();\n })();\n }\n return remoteWorkerPromise;\n}\n\nfunction getWorker() {\n if (!worker) {\n worker = new Worker(new URL(\"./tsxParser.worker.ts\", import.meta.url));\n }\n return worker;\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]!./FileList.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]!./FileList.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useContext, useMemo, useState } from \"react\";\nimport classNames from \"classnames\";\nimport type { FileInfo } from \"../interfaces\";\nimport styles from \"./FileList.module.css\";\nimport { K, t } from \"./i18n\";\nimport {\n formatFileSize,\n getFileTypeAndIcon,\n} from \"../../cruise-canvas/utils/file\";\nimport { getImageUrl } from \"../FilePreview/getImageUrl\";\nimport { TaskContext } from \"../TaskContext\";\nimport { WrappedIcon } from \"../bricks\";\nimport { ICON_UP } from \"../constants\";\n\nexport interface FileListProps {\n files: FileInfo[];\n large?: boolean;\n ui?: \"canvas\" | \"chat\";\n}\n\nexport function FileList({ files, large, ui }: FileListProps) {\n const { setActiveFile, setActiveImages } = useContext(TaskContext);\n\n const filesWithDisplayInfo = useMemo(() => {\n return files.map((file) => {\n const [displayType, icon] = getFileTypeAndIcon(file.mimeType, file.name);\n return {\n file,\n displayType,\n icon,\n };\n });\n }, [files]);\n\n const imageFiles = filesWithDisplayInfo\n .filter((file) => file.displayType === \"Image\" && file.file.uri)\n .map((f) => f.file);\n const allImages = imageFiles.length === files.length;\n // 超出数量,多余的收起来\n const limit = allImages ? 8 : 6;\n const exceeded = files.length > limit;\n const [expanded, setExpanded] = useState(false);\n const filteredList = expanded\n ? filesWithDisplayInfo\n : filesWithDisplayInfo.slice(0, limit);\n\n return (\n <>\n <ul\n className={classNames(styles.files, {\n [styles.large]: large,\n [styles.images]: allImages,\n [styles.single]: filesWithDisplayInfo.length === 1,\n [styles.chat]: ui === \"chat\",\n })}\n >\n {filteredList.map(({ file, displayType, icon }, index) => {\n return (\n <li key={index}>\n <a\n className={allImages ? styles.image : styles.file}\n onClick={() => {\n if (displayType === \"Image\" && file.uri) {\n setActiveImages({\n files: imageFiles,\n file,\n });\n } else {\n setActiveFile(file);\n }\n }}\n >\n {allImages ? (\n <>\n <img src={getImageUrl(file.uri!)} fetchPriority=\"low\" />\n {exceeded && index === limit - 1 && (\n <>\n <div className={styles.mask} />\n <div className={styles.overlay}>\n {`+${files.length - limit + 1}`}\n </div>\n </>\n )}\n </>\n ) : (\n <>\n <img\n className={styles.icon}\n src={icon}\n width={26}\n height={32}\n />\n <div className={styles.content}>\n <div className={styles.name}>\n {file.name || t(K.UNTITLED)}\n </div>\n <div className={styles.metadata}>\n {`${displayType}${file.size ? ` · ${formatFileSize(file.size)}` : \"\"}`}\n </div>\n </div>\n </>\n )}\n </a>\n </li>\n );\n })}\n </ul>\n {exceeded && !allImages && (\n <button\n className={classNames(styles.expand, {\n [styles.collapsed]: !expanded,\n })}\n onClick={() => setExpanded((prev) => !prev)}\n >\n <WrappedIcon {...ICON_UP} />\n {expanded ? t(K.COLLAPSE) : t(K.SHOW_ALL_FILES)}\n </button>\n )}\n </>\n );\n}\n","export interface GeneralNode {\n id: string;\n upstream?: string[];\n parent?: string;\n hidden?: boolean;\n}\n\nexport function getOrderedNodes<T extends GeneralNode>(nodes: T[]) {\n const map = new Map<string, T>();\n const downstreamMap = new Map<string, string[]>();\n const roots: string[] = [];\n const rootChildren: string[] = [];\n const childMap: Map<string, string> = new Map();\n\n // Ignore sub nodes\n for (const node of nodes) {\n map.set(node.id, node);\n if (node.parent) {\n childMap.set(node.parent, node.id);\n } else {\n rootChildren.push(node.id);\n }\n }\n\n // Setup downstream relations\n for (const node of nodes) {\n for (const up of node.upstream ?? []) {\n let downstream = downstreamMap.get(up);\n if (!downstream) {\n downstreamMap.set(up, (downstream = []));\n }\n downstream.push(node.id);\n }\n\n if (\n !node.parent &&\n !node.upstream?.length /* &&\n (showHiddenNodes || !node.hidden) */\n ) {\n roots.push(node.id);\n }\n }\n\n // Get BFS order of nodes\n const list: string[] = [];\n const visitedNodes = new Set<string>();\n const queue: string[] = [...roots];\n const leaves: string[] = [];\n while (queue.length > 0) {\n const id = queue.shift()!;\n if (visitedNodes.has(id)) {\n continue;\n }\n visitedNodes.add(id);\n list.push(id);\n const downstream = downstreamMap.get(id);\n if (downstream?.length) {\n queue.push(...downstream);\n } else {\n leaves.push(id);\n }\n }\n\n return { list, map, roots, leaves, childMap, downstreamMap };\n}\n","import type { MessageChunk } from \"../chat-stream/interfaces\";\nimport type {\n Task,\n ServiceFlowRun,\n ActivityWithFlow,\n ConversationError,\n Job,\n} from \"../shared/interfaces\";\nimport { getTaskTree, type TaskTreeNode } from \"./getTaskTree\";\n\nexport function getFlatChunks(\n tasks: Task[],\n errors: ConversationError[],\n flowMap?: Map<string, ServiceFlowRun>,\n activityMap?: Map<string, ActivityWithFlow>,\n skipActivitySubTasks?: boolean\n) {\n const taskTree = getTaskTree(tasks);\n const chunks: MessageChunk[] = [];\n const jobMap = new Map<string, Job>();\n\n const collectChunks = (taskNode: TaskTreeNode, level: number) => {\n const flow = flowMap?.get(taskNode.task.id);\n\n const activityWithFlow = activityMap?.get(taskNode.task.id);\n if (activityWithFlow) {\n chunks.push({\n type: \"activity\",\n activity: activityWithFlow.activity,\n flow: activityWithFlow.flow,\n task: taskNode.task,\n });\n }\n\n const shouldSkip = activityWithFlow && skipActivitySubTasks;\n\n for (const { job, subTask } of taskNode.children) {\n if (shouldSkip) {\n if (\n (job.state === \"completed\" &&\n job.messages?.length &&\n job.messages.every((msg) => msg.role === \"user\")) ||\n job.hil\n ) {\n chunks.push({\n type: \"job\",\n job,\n level,\n fromSkippedSubTask: true,\n });\n }\n continue;\n }\n\n if (job.type === \"serviceFlow\") {\n if (flow) {\n chunks.push({\n type: \"flow\",\n flow,\n task: taskNode.task,\n });\n }\n } else if (subTask) {\n collectChunks(subTask, level + 1);\n } else {\n chunks.push({\n type: \"job\",\n job,\n level,\n });\n }\n }\n\n const taskErrors = errors.filter(\n (error) => error.taskId === taskNode.task.id && error.error\n );\n for (const error of taskErrors) {\n chunks.push({\n type: \"error\",\n error: error.error!,\n });\n }\n };\n\n const collectJobs = (taskNode: TaskTreeNode) => {\n for (const { job, subTask } of taskNode.children) {\n jobMap.set(job.id, job);\n if (subTask) {\n collectJobs(subTask);\n }\n }\n };\n\n // Get flattened jobs\n for (const taskNode of taskTree) {\n collectChunks(taskNode, 0);\n collectJobs(taskNode);\n }\n\n for (const error of errors) {\n if (!error.taskId && error.error) {\n chunks.push({\n type: \"error\",\n error: error.error,\n });\n }\n }\n\n return { chunks, jobMap };\n}\n","import type { Task, Job } from \"../shared/interfaces\";\nimport { getOrderedNodes } from \"./getOrderedNodes\";\n\nexport interface TaskTreeNode {\n task: Task;\n children: JobTreeNode[];\n}\n\nexport interface JobTreeNode {\n job: Job;\n subTask?: TaskTreeNode;\n}\n\nexport function getTaskTree(tasks: Task[]): TaskTreeNode[] {\n const { list: taskIds, map: taskMap, childMap } = getOrderedNodes(tasks);\n\n const processedTaskMap = new Map(\n [...taskMap.entries()].map(([taskId, task]) => {\n return [taskId, getOrderedNodes(task.jobs)];\n })\n );\n\n const buildTaskTreeNode = (taskId: string): TaskTreeNode => {\n const task = taskMap.get(taskId)!;\n const processedTask = processedTaskMap.get(taskId)!;\n const { list: jobIds, map: jobMap } = processedTask;\n\n const children: JobTreeNode[] = jobIds.map((jobId) => {\n const job = jobMap.get(jobId)!;\n const subTaskId = childMap.get(job.id);\n if (subTaskId) {\n return {\n job,\n subTask: buildTaskTreeNode(subTaskId),\n };\n }\n return { job };\n });\n\n return {\n task,\n children,\n };\n };\n\n return taskIds.map((taskId) => buildTaskTreeNode(taskId));\n}\n","// istanbul ignore file\n\n/*\nnpx shiki-codegen \\\n --langs json,javascript,typescript,html,html-derivative,xml,css,markdown,mermaid,jsx,tsx,shellscript,python,go,sql \\\n --themes light-plus,dark-plus \\\n --engine oniguruma \\\n ./shared/shiki/src/bundle.ts\n*/\n\nimport lightPlus from \"@shikijs/themes/light-plus\";\nimport darkPlus from \"@shikijs/themes/dark-plus\";\n\n/* Generate by @shikijs/codegen */\nimport type {\n DynamicImportLanguageRegistration,\n HighlighterGeneric,\n ThemeInput,\n} from \"@shikijs/types\";\nimport {\n createSingletonShorthands,\n createdBundledHighlighter,\n} from \"@shikijs/core\";\nimport { createOnigurumaEngine } from \"@shikijs/engine-oniguruma\";\n\ntype BundledLanguage =\n | \"json\"\n | \"javascript\"\n | \"js\"\n | \"typescript\"\n | \"ts\"\n | \"html\"\n | \"html-derivative\"\n | \"xml\"\n | \"css\"\n | \"markdown\"\n | \"md\"\n | \"mermaid\"\n | \"mmd\"\n | \"jsx\"\n | \"tsx\"\n | \"shellscript\"\n | \"bash\"\n | \"sh\"\n | \"shell\"\n | \"zsh\"\n | \"python\"\n | \"py\"\n | \"go\"\n | \"sql\"\n | \"yaml\";\ntype BundledTheme = \"light-plus\" | \"dark-plus\";\ntype Highlighter = HighlighterGeneric<BundledLanguage, BundledTheme>;\n\nconst bundledLanguages = {\n json: () => import(\"@shikijs/langs/json\"),\n javascript: () => import(\"@shikijs/langs/javascript\"),\n js: () => import(\"@shikijs/langs/javascript\"),\n typescript: () => import(\"@shikijs/langs/typescript\"),\n ts: () => import(\"@shikijs/langs/typescript\"),\n html: () => import(\"@shikijs/langs/html\"),\n \"html-derivative\": () => import(\"@shikijs/langs/html-derivative\"),\n xml: () => import(\"@shikijs/langs/xml\"),\n css: () => import(\"@shikijs/langs/css\"),\n markdown: () => import(\"@shikijs/langs/markdown\"),\n md: () => import(\"@shikijs/langs/markdown\"),\n mermaid: () => import(\"@shikijs/langs/mermaid\"),\n mmd: () => import(\"@shikijs/langs/mermaid\"),\n jsx: () => import(\"@shikijs/langs/jsx\"),\n tsx: () => import(\"@shikijs/langs/tsx\"),\n shellscript: () => import(\"@shikijs/langs/shellscript\"),\n bash: () => import(\"@shikijs/langs/shellscript\"),\n sh: () => import(\"@shikijs/langs/shellscript\"),\n shell: () => import(\"@shikijs/langs/shellscript\"),\n zsh: () => import(\"@shikijs/langs/shellscript\"),\n python: () => import(\"@shikijs/langs/python\"),\n py: () => import(\"@shikijs/langs/python\"),\n go: () => import(\"@shikijs/langs/go\"),\n sql: () => import(\"@shikijs/langs/sql\"),\n yaml: () => import(\"@shikijs/langs/yaml\"),\n} as Record<BundledLanguage, DynamicImportLanguageRegistration>;\n\nconst bundledThemes = {\n \"light-plus\": lightPlus,\n \"dark-plus\": darkPlus,\n} as Record<BundledTheme, ThemeInput>;\n\nconst createHighlighter = /* @__PURE__ */ createdBundledHighlighter<\n BundledLanguage,\n BundledTheme\n>({\n langs: bundledLanguages,\n themes: bundledThemes,\n engine: () => createOnigurumaEngine(import(\"shiki/wasm\")),\n});\n\nconst {\n codeToHtml,\n codeToHast,\n codeToTokensBase,\n codeToTokens,\n codeToTokensWithThemes,\n getSingletonHighlighter,\n getLastGrammarState,\n} = /* @__PURE__ */ createSingletonShorthands<BundledLanguage, BundledTheme>(\n createHighlighter,\n {\n guessEmbeddedLanguages(code, lang) {\n if (lang === \"markdown\" || lang === \"md\") {\n return [\"mermaid\"];\n }\n },\n }\n);\n\nexport {\n bundledLanguages,\n bundledThemes,\n codeToHast,\n codeToHtml,\n codeToTokens,\n codeToTokensBase,\n codeToTokensWithThemes,\n getLastGrammarState,\n getSingletonHighlighter,\n};\nexport type { BundledLanguage, BundledTheme, Highlighter };\n","import type { Element } from \"hast\";\n\nexport function getCodeLanguage(node: Element) {\n const className = (node.properties.className as string[]) || [];\n\n for (const classListItem of className) {\n if (classListItem.slice(0, 9) === \"language-\") {\n return classListItem.slice(9).toLowerCase();\n }\n }\n\n return null;\n}\n","import { visit } from \"unist-util-visit\";\nimport { toString } from \"hast-util-to-string\";\nimport type { Element } from \"hast\";\nimport type Mermaid from \"mermaid\";\nimport { fromHtmlIsomorphic } from \"hast-util-from-html-isomorphic\";\nimport { getCodeLanguage } from \"./utils.js\";\n\nlet mermaidPromise: Promise<typeof Mermaid> | undefined;\n\nfunction loadMermaid() {\n if (mermaidPromise) {\n return mermaidPromise;\n }\n mermaidPromise = doLoadMermaid();\n return mermaidPromise;\n}\n\nasync function doLoadMermaid() {\n const mermaid = (await import(\"mermaid\")).default;\n mermaid.initialize({\n startOnLoad: false,\n theme: \"base\",\n themeVariables: {\n fontSize: \"14px\",\n lineColor: \"#979797\",\n primaryColor: \"#DCD2F3\",\n primaryBorderColor: \"#0000001A\",\n },\n });\n return mermaid;\n}\n\nlet count = 0;\n\nconst parser = new DOMParser();\nconst serializer = new XMLSerializer();\n\n// Reference https://github.com/remcohaszing/rehype-mermaid\nexport function rehypeMermaid() {\n return async (tree: Element) => {\n const promises: Promise<void>[] = [];\n\n visit(tree, \"element\", (node, index, parent) => {\n if (\n !parent ||\n parent.type !== \"element\" ||\n parent.tagName !== \"pre\" ||\n node.tagName !== \"code\"\n ) {\n return;\n }\n\n const lang = getCodeLanguage(node);\n\n if (lang !== \"mermaid\") {\n return;\n }\n\n promises.push(\n (async () => {\n const id = `mermaid-${count++}`;\n let svg: string;\n try {\n const mermaid = await loadMermaid();\n const result = await mermaid.render(id, toString(node));\n svg = result.svg;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Error rendering mermaid diagram:\", error);\n document.getElementById(id)?.remove();\n return;\n }\n const root = parser.parseFromString(svg, \"text/html\");\n const svgElement = root.querySelector(\"svg\") as SVGSVGElement;\n\n const defs = root.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"defs\"\n );\n defs.innerHTML = `<linearGradient id=\"linear-gradient-${id}\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">\n <stop offset=\"0%\" stop-color=\"#F0EBFA\" />\n <stop offset=\"75%\" stop-color=\"#DED4F4\" />\n <stop offset=\"100%\" stop-color=\"#C5C7FA\" />\n</linearGradient>`;\n svgElement.prepend(defs);\n\n const style = root.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"style\"\n );\n style.textContent = `\n#${id} .node rect,\n#${id} .node circle,\n#${id} .node ellipse,\n#${id} .node polygon,\n#${id} .node path {\n fill: url(#linear-gradient-${id});\n}\n#${id} .node rect {\n rx: 4;\n ry: 4;\n}\n#${id} .labelBkg {\n background-color: #f5f8ff;\n}\n#${id} .edgeLabel,\n#${id} .edgeLabel p {\n background-color: transparent;\n}\n#${id} .edgeLabel {\n color: #8c8c8c;\n font-size: 12px;\n}\n`;\n svgElement.appendChild(style);\n\n const modifiedSvg = serializer.serializeToString(svgElement);\n\n const replacements = fromHtmlIsomorphic(modifiedSvg, {\n fragment: true,\n }).children as Element[];\n parent.children.splice(index!, 1, ...replacements);\n parent.properties.className = (\n (parent.properties.className as string[]) || []\n ).concat(\"mermaid\");\n })()\n );\n });\n\n await Promise.all(promises);\n };\n}\n","import React, { useEffect, useState } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nimport { unified } from \"unified\";\nimport remarkParse from \"remark-parse\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkToRehype from \"remark-rehype\";\nimport rehypeReact, { Options as RehypeReactOptions } from \"rehype-react\";\nimport type { Components } from \"hast-util-to-jsx-runtime\";\nimport rehypeShikiFromHighlighter from \"@shikijs/rehype/core\";\nimport type { Element } from \"hast\";\nimport { visit } from \"unist-util-visit\";\nimport { getSingletonHighlighter, bundledLanguages } from \"@next-shared/shiki\";\nimport { rehypeMermaid } from \"./rehypeMermaid.js\";\nimport { getCodeLanguage } from \"./utils.js\";\n\nconst production = { Fragment, jsx, jsxs };\n\nexport interface MarkdownComponentProps {\n content?: string;\n components?: Partial<Components>;\n shiki?: {\n /** @default \"dark-plus\" */\n theme?: \"light-plus\" | \"dark-plus\";\n };\n}\n\nexport async function preloadHighlighter(\n theme: \"light-plus\" | \"dark-plus\"\n): Promise<void> {\n await getSingletonHighlighter({\n themes: [theme],\n });\n}\n\nfunction rehypeFallbackLanguage() {\n return (tree: Element) => {\n visit(tree, \"element\", (node, index, parent) => {\n if (\n !parent ||\n parent.type !== \"element\" ||\n parent.tagName !== \"pre\" ||\n node.tagName !== \"code\"\n ) {\n return;\n }\n\n const lang = getCodeLanguage(node);\n if (\n lang &&\n !Object.prototype.hasOwnProperty.call(bundledLanguages, lang)\n ) {\n node.properties.className = (node.properties.className as string[]).map(\n (c) => (c.startsWith(\"language-\") ? \"language-text\" : c)\n );\n }\n });\n };\n}\n\n// Reference https://github.com/remarkjs/react-remark/blob/39553e5f5c9e9b903bebf261788ff45130668de0/src/index.ts\nexport function MarkdownComponent({\n content,\n components,\n shiki,\n}: MarkdownComponentProps): JSX.Element | null {\n const [reactContent, setReactContent] = useState<JSX.Element | null>(null);\n const theme = shiki?.theme ?? \"dark-plus\";\n\n useEffect(() => {\n let ignore = false;\n (async () => {\n try {\n const highlighter = await getSingletonHighlighter({\n themes: [theme],\n });\n if (ignore) {\n return;\n }\n const vFile = await unified()\n .use(remarkParse)\n .use(remarkGfm)\n .use(remarkToRehype)\n .use(rehypeMermaid)\n .use(rehypeFallbackLanguage)\n .use(rehypeShikiFromHighlighter, highlighter as any, {\n theme,\n lazy: true,\n defaultLanguage: \"text\",\n })\n .use(rehypeReact, {\n ...production,\n passNode: true,\n components,\n } as RehypeReactOptions)\n .process(content);\n if (!ignore) {\n setReactContent(vFile.result);\n }\n } catch (error) {\n if (!ignore) {\n // eslint-disable-next-line no-console\n console.error(\"Convert markdown failed:\", error);\n setReactContent(\n <div style={{ color: \"var(--color-error)\" }}>\n Convert markdown failed: {String(error)}\n </div>\n );\n }\n }\n })();\n return () => {\n ignore = true;\n };\n }, [components, content, theme]);\n\n return reactContent;\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.container--YostHfxu{background:var(--elevo-component-background);-webkit-backdrop-filter:var(--elevo-component-backdrop-filter);backdrop-filter:var(--elevo-component-backdrop-filter);border-radius:var(--elevo-border-radius);padding:16px}.container--YostHfxu:not(:first-child){margin-top:10px}ai-portal\\\\.chat-stream .container--YostHfxu{background:rgba(255,255,255,0.6);border-radius:8px;border:1px solid rgba(0,0,0,0.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:12px 20px}.loading--FzSrGTPm{position:absolute;top:calc(50% - 7px);left:calc(50% - 7px)}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": `container--YostHfxu`,\n\t\"loading\": `loading--FzSrGTPm`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { pipes } from \"@easyops-cn/brick-next-pipes\";\nimport fileText from \"../images/file-text@2x.png\";\nimport filePdf from \"../images/file-pdf@2x.png\";\nimport fileDoc from \"../images/file-doc@2x.png\";\nimport filePpt from \"../images/file-ppt@2x.png\";\nimport fileXls from \"../images/file-xls@2x.png\";\nimport fileOther from \"../images/file-other@2x.png\";\n\nconst MIME_TYPES = new Map<string, string>([\n [\"md\", \"text/markdown\"],\n [\"pdf\", \"application/pdf\"],\n [\"doc\", \"application/msword\"],\n [\n \"docx\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n ],\n [\"txt\", \"text/plain\"],\n [\"csv\", \"text/csv\"],\n [\"xls\", \"application/vnd.ms-excel\"],\n [\"xlsx\", \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"],\n [\"ppt\", \"application/vnd.ms-powerpoint\"],\n [\n \"pptx\",\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n ],\n [\"jpg\", \"image/jpeg\"],\n [\"jpeg\", \"image/jpeg\"],\n [\"png\", \"image/png\"],\n [\"gif\", \"image/gif\"],\n [\"bmp\", \"image/bmp\"],\n [\"webp\", \"image/webp\"],\n [\"svg\", \"image/svg+xml\"],\n]);\n\nexport function formatFileSize(size: number) {\n const [value, unit] = pipes.unitFormat(size, \"bytes\", 1);\n const number = +value;\n return `${number > 100 ? Math.round(number) : number} ${unit}`;\n}\n\nexport function getFileTypeAndIcon(\n mimeType: string | undefined,\n filename: string | undefined\n): [type: string, icon: string] {\n const type = mimeType || getMimeTypeByFilename(filename);\n\n if (type.startsWith(\"image/\")) {\n return [\"Image\", fileOther];\n }\n\n switch (type) {\n case \"text/markdown\":\n case \"text/x-markdown\":\n return [\"Markdown\", fileText];\n case \"application/pdf\":\n return [\"PDF\", filePdf];\n case \"application/msword\":\n case \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\":\n return [\"Word\", fileDoc];\n case \"application/vnd.ms-excel\":\n case \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\":\n return [\"Excel\", fileXls];\n case \"application/vnd.ms-powerpoint\":\n case \"application/vnd.openxmlformats-officedocument.presentationml.presentation\":\n return [\"PowerPoint\", filePpt];\n }\n\n if (type.startsWith(\"text/\")) {\n return [\"Text\", fileText];\n }\n\n return [\"File\", fileOther];\n}\n\nexport function getMimeTypeByFilename(filename: string | undefined): string {\n let ext = \"\";\n const matches = filename?.match(/\\.([^.]+)$/);\n if (matches) {\n ext = matches[1].toLowerCase();\n }\n return MIME_TYPES.get(ext) ?? \"unknown\";\n}\n","import { get } from \"lodash\";\n\nexport function parseTemplate(\n template: string | undefined,\n context: Record<string, any>\n) {\n return template?.replace(/{{(.*?)}}/g, (_match: string, key: string) => {\n const value = get(context, key.trim());\n return value;\n });\n}\n","import type { Reducer } from \"react\";\nimport { isMatch, pick } from \"lodash\";\nimport type {\n DataPart,\n GeneratedView,\n Job,\n JobPatch,\n Message,\n Part,\n Task,\n TextPart,\n} from \"../../shared/interfaces\";\nimport type { CruiseCanvasAction } from \"./interfaces\";\nimport { getAsyncConstructedView } from \"../../shared/getAsyncConstructedView\";\n\nexport const tasks: Reducer<Task[], CruiseCanvasAction> = (state, action) => {\n switch (action.type) {\n case \"sse\": {\n const tasksPatch = action.payload.tasks;\n let tasks = state;\n\n if (!Array.isArray(tasksPatch) || tasksPatch.length === 0) {\n return state;\n }\n\n for (const task of tasksPatch) {\n const taskPatch = pick(task, [\n \"id\",\n \"upstream\",\n \"parent\",\n \"state\",\n \"plan\",\n \"startTime\",\n \"endTime\",\n \"jobs\",\n \"aiEmployeeId\",\n ]);\n const previousTaskIndex = tasks.findIndex(\n (task) => task.id === taskPatch.id\n );\n const previousTask = tasks[previousTaskIndex];\n taskPatch.jobs = mergeJobs(\n previousTask?.jobs,\n taskPatch.jobs,\n action.workspace,\n taskPatch.aiEmployeeId ?? previousTask?.aiEmployeeId\n );\n\n if (previousTaskIndex === -1) {\n tasks = [...tasks, taskPatch as Task];\n } else {\n if (!isMatch(previousTask, taskPatch)) {\n tasks = [\n ...tasks.slice(0, previousTaskIndex),\n { ...previousTask, ...taskPatch } as Task,\n ...tasks.slice(previousTaskIndex + 1),\n ];\n }\n }\n }\n\n return tasks;\n }\n\n case \"reset\": {\n return state.length === 0 ? state : [];\n }\n }\n\n return state;\n};\n\nfunction mergeJobs(\n previousJobs: Job[] | undefined,\n jobsPatch: JobPatch[] | undefined,\n workspace: string,\n aiEmployeeId: string | undefined\n): Job[] {\n let jobs = previousJobs ?? [];\n for (const jobPatch of jobsPatch ?? []) {\n const previousJobIndex =\n jobs?.findIndex((job) => job.id === jobPatch.id) ?? -1;\n const { messages: messagesPatch, toolCall } = jobPatch;\n\n if (typeof toolCall?.arguments === \"string\") {\n toolCall.originalArguments = toolCall.arguments;\n try {\n toolCall.arguments = JSON.parse(toolCall.arguments);\n } catch (e) {\n // Failed to parse toolCall arguments\n toolCall.arguments = {};\n toolCall.argumentsParseFailed = true;\n toolCall.argumentsParseError = e;\n }\n }\n\n if (previousJobIndex === -1) {\n const patch = {\n ...jobPatch,\n };\n if (aiEmployeeId !== undefined) {\n patch.aiEmployeeId = aiEmployeeId;\n }\n\n if (\n patch.toolCall?.name === \"create_view\" &&\n patch.state === \"completed\"\n ) {\n const generatedView = getJobGeneratedView(messagesPatch, workspace);\n if (generatedView) {\n patch.generatedView = generatedView;\n }\n }\n if (Array.isArray(messagesPatch) && messagesPatch.length > 0) {\n jobs = [\n ...jobs,\n {\n ...patch,\n messages: mergeMessages(messagesPatch),\n } as Job,\n ];\n } else {\n jobs = [...jobs, patch as Job];\n }\n } else {\n const previousJob = jobs[previousJobIndex];\n const restMessagesPatch: JobPatch = pick(jobPatch, [\n \"id\",\n \"upstream\",\n \"parent\",\n \"state\",\n \"instruction\",\n \"toolCall\",\n \"isError\",\n \"hidden\",\n \"startTime\",\n \"endTime\",\n \"requestHumanAction\",\n \"humanAction\",\n \"username\",\n \"cmd\",\n \"mentionedAiEmployeeId\",\n \"hil\",\n ]);\n if (aiEmployeeId !== undefined) {\n restMessagesPatch.aiEmployeeId = aiEmployeeId;\n }\n if (Array.isArray(messagesPatch) && messagesPatch.length > 0) {\n restMessagesPatch.messages = mergeMessages([\n ...(previousJob.messages ?? []),\n ...messagesPatch,\n ]);\n }\n\n if (\n !previousJob.generatedView &&\n ([\"create_view\"] as (string | undefined)[]).includes(\n restMessagesPatch.toolCall?.name ?? previousJob.toolCall?.name\n ) &&\n (restMessagesPatch.state ?? previousJob.state) === \"completed\"\n ) {\n const generatedView = getJobGeneratedView(messagesPatch, workspace);\n if (generatedView) {\n restMessagesPatch.generatedView = generatedView;\n }\n }\n\n if (!previousJob.generatedView && !restMessagesPatch.generatedView) {\n const view = getJobStaticDataView(messagesPatch);\n if (view) {\n view.withContexts = {\n RESPONSE: getJobStaticDataResponse(restMessagesPatch.messages!),\n };\n view.asyncConstructedView = getAsyncConstructedView(view, workspace);\n restMessagesPatch.generatedView = view;\n }\n }\n\n if (!isMatch(previousJob, restMessagesPatch)) {\n jobs = [\n ...jobs.slice(0, previousJobIndex),\n {\n ...previousJob,\n ...restMessagesPatch,\n },\n ...jobs.slice(previousJobIndex + 1),\n ];\n }\n }\n }\n return jobs;\n}\n\nfunction mergeMessages(messages: Message[]): Message[] {\n const merged: Message[] = [];\n let previousRole: Message[\"role\"] | undefined;\n for (const message of messages) {\n if (!previousRole || previousRole !== message.role) {\n merged.push({ ...message });\n } else {\n const lastMessage = merged[merged.length - 1];\n lastMessage.parts = [...lastMessage.parts, ...message.parts];\n }\n previousRole = message.role;\n }\n\n for (const message of merged) {\n message.parts = mergeMessageParts(message.parts);\n }\n\n return merged;\n}\n\nfunction mergeMessageParts(parts: Part[]): Part[] {\n const merged: Part[] = [];\n let previousType: Part[\"type\"] | undefined;\n let previousDataType: string | undefined;\n for (const part of parts) {\n if (previousType === \"text\" && part.type === \"text\") {\n const lastPart = merged[merged.length - 1] as TextPart;\n lastPart.text += part.text;\n } else if (\n // Assert: previousType is data when previousDataType is defined\n previousDataType === \"stream\" &&\n part.type === \"data\" &&\n part.data?.type === \"stream\"\n ) {\n const lastPart = merged[merged.length - 1] as DataPart;\n lastPart.data.message += part.data.message;\n } else {\n merged.push({ ...part });\n }\n\n previousType = part.type;\n previousDataType = part.type === \"data\" ? part.data?.type : undefined;\n }\n return merged;\n}\n\nfunction getJobGeneratedView(\n messages: Message[] | undefined,\n workspace: string\n): GeneratedView | undefined {\n if (!messages) {\n return;\n }\n\n for (const message of messages) {\n if (message.role === \"tool\") {\n for (const part of message.parts) {\n if (part.type === \"text\") {\n try {\n const view = JSON.parse(part.text) as GeneratedView;\n view.asyncConstructedView = getAsyncConstructedView(\n view,\n workspace\n );\n return view;\n } catch {\n // Do nothing, continue to next part\n }\n }\n }\n }\n }\n}\n\nfunction getJobStaticDataView(\n messages: Message[] | undefined\n): GeneratedView | undefined {\n if (!messages) {\n return;\n }\n\n for (const message of messages) {\n if (message.role === \"tool\") {\n for (const part of message.parts) {\n if (part.type === \"data\" && part.data?.type === \"static_data_view\") {\n const view: GeneratedView = {\n viewId: part.data.viewId,\n code: part.data.code,\n from: part.data.from,\n isStaticData: true,\n };\n return view;\n }\n }\n }\n }\n}\n\nfunction getJobStaticDataResponse(messages: Message[]) {\n for (const message of messages) {\n if (message.role === \"tool\") {\n for (const part of message.parts) {\n if (part.type === \"text\") {\n try {\n return JSON.parse(part.text);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to parse static data response as JSON:\", e);\n }\n }\n }\n }\n }\n\n return null;\n}\n","import type { Reducer } from \"react\";\nimport { isMatch, pick } from \"lodash\";\nimport type {\n ActivityRun,\n ServiceFlowPatch,\n ServiceFlowRun,\n StageRun,\n} from \"../../shared/interfaces\";\nimport type { CruiseCanvasAction } from \"./interfaces\";\n\nexport const serviceFlows: Reducer<ServiceFlowRun[], CruiseCanvasAction> = (\n state,\n action\n) => {\n switch (action.type) {\n case \"sse\": {\n const serviceFlowsPatch = action.payload.serviceFlows;\n let serviceFlows = state;\n\n if (!Array.isArray(serviceFlowsPatch) || serviceFlowsPatch.length === 0) {\n return state;\n }\n\n for (const flow of serviceFlowsPatch) {\n const flowPatch = pick(flow, [\n \"taskId\",\n \"flowInstanceId\",\n \"name\",\n \"spec\",\n \"space\",\n ]) as Omit<ServiceFlowPatch, \"fullSpec\">;\n const previousFlowIndex = serviceFlows.findIndex(\n (f) => f.taskId === flowPatch.taskId\n );\n const previousFlow = serviceFlows[previousFlowIndex];\n flowPatch.spec = mergeSpec(\n previousFlow?.spec,\n flowPatch,\n flow.fullSpec\n );\n\n if (previousFlowIndex === -1) {\n serviceFlows = [...serviceFlows, flowPatch as ServiceFlowRun];\n } else {\n if (!isMatch(previousFlow, flowPatch)) {\n serviceFlows = [\n ...serviceFlows.slice(0, previousFlowIndex),\n { ...previousFlow, ...flowPatch } as ServiceFlowRun,\n ...serviceFlows.slice(previousFlowIndex + 1),\n ];\n }\n }\n }\n\n return serviceFlows;\n }\n\n case \"reset\": {\n return state.length === 0 ? state : [];\n }\n }\n\n return state;\n};\n\nfunction mergeSpec(\n previousSpec: StageRun[] | undefined,\n flowPatch: ServiceFlowPatch,\n fullSpec: StageRun[] | undefined\n): StageRun[] {\n if (Array.isArray(fullSpec)) {\n return fullSpec;\n }\n if (!Array.isArray(flowPatch.spec)) {\n return previousSpec ?? [];\n }\n const mergedSpec: StageRun[] = previousSpec ? [...previousSpec] : [];\n\n for (const stagePatch of flowPatch.spec) {\n const stageIndex = mergedSpec.findIndex((s) => s.name === stagePatch.name);\n if (stageIndex === -1) {\n const stage = { ...stagePatch };\n stage.serviceFlowActivities ??= [];\n mergedSpec.push(stage as StageRun);\n } else {\n const activities = mergeActivities(\n mergedSpec[stageIndex].serviceFlowActivities,\n stagePatch.serviceFlowActivities\n );\n\n mergedSpec[stageIndex] = {\n ...mergedSpec[stageIndex],\n ...stagePatch,\n serviceFlowActivities: activities,\n };\n }\n }\n\n return mergedSpec;\n}\n\nfunction mergeActivities(\n previousActivities: ActivityRun[] | undefined,\n activitiesPatch: ActivityRun[] | undefined\n): ActivityRun[] {\n let activities = previousActivities ?? [];\n\n if (!Array.isArray(activitiesPatch) || activitiesPatch.length === 0) {\n return activities;\n }\n\n for (const activityPatch of activitiesPatch) {\n const activityIndex = activities.findIndex((activity) =>\n activity.taskId\n ? activity.taskId === activityPatch.taskId\n : activity.name === activityPatch.name\n );\n\n if (activityIndex === -1) {\n activities = [...activities, activityPatch];\n } else {\n activities = [\n ...activities.slice(0, activityIndex),\n { ...activities[activityIndex], ...activityPatch },\n ...activities.slice(activityIndex + 1),\n ];\n }\n }\n\n return activities;\n}\n","import { Reducer } from \"react\";\nimport type { CruiseCanvasAction, CruiseCanvasState } from \"./interfaces\";\nimport { tasks } from \"./tasks\";\nimport { conversation } from \"./conversation\";\nimport { errors } from \"./errors\";\nimport { serviceFlows } from \"./serviceFlows\";\n\ntype ReducersMapObject<S, A> = {\n [K in keyof S]: Reducer<S[K], A>;\n};\n\nfunction combineReducers<S, A>(\n reducers: ReducersMapObject<S, A>\n): Reducer<S, A> {\n return ((state, action) =>\n Object.fromEntries(\n Object.entries<Reducer<any, A>>(reducers).map(([key, value]) => [\n key,\n value(state[key as keyof S], action),\n ])\n )) as Reducer<S, A>;\n}\n\nexport const rootReducer = combineReducers<\n CruiseCanvasState,\n CruiseCanvasAction\n>({\n conversation,\n tasks,\n errors,\n serviceFlows,\n});\n","import type { Reducer } from \"react\";\nimport { isMatch, pick } from \"lodash\";\nimport type { CruiseCanvasAction } from \"./interfaces\";\nimport type { ConversationBaseDetail } from \"../../shared/interfaces\";\n\nexport const conversation: Reducer<\n ConversationBaseDetail | null,\n CruiseCanvasAction\n> = (state, action) => {\n switch (action.type) {\n case \"sse\": {\n const patch = pick(action.payload, [\n \"id\",\n \"state\",\n \"title\",\n \"startTime\",\n \"endTime\",\n \"projectId\",\n ]);\n\n return (\n state && isMatch(state, patch) ? state : { ...state, ...patch }\n ) as ConversationBaseDetail;\n }\n\n case \"reset\":\n return null;\n\n case \"finished\":\n if (state) {\n return { ...state, finished: true };\n }\n return state;\n }\n return state;\n};\n","import type { Reducer } from \"react\";\nimport type { CruiseCanvasAction } from \"./interfaces\";\nimport type { ConversationError } from \"../../shared/interfaces\";\n\nexport const errors: Reducer<ConversationError[], CruiseCanvasAction> = (\n state,\n action\n) => {\n switch (action.type) {\n case \"sse\": {\n const { error, tasks } = action.payload;\n const lastError = state[state.length - 1];\n\n let taskId: string | undefined;\n if (tasks?.length) {\n taskId = tasks[tasks.length - 1].id;\n } else {\n taskId = lastError?.taskId;\n }\n\n if (typeof error === \"string\" && error) {\n return state.slice(0, -1).concat(\n {\n taskId,\n error,\n },\n { taskId }\n );\n }\n\n if (lastError) {\n if (lastError.error) {\n return state.concat({ taskId });\n }\n if (lastError.taskId !== taskId) {\n return state.slice(0, -1).concat({ taskId });\n }\n return state;\n }\n\n return taskId ? [{ taskId }] : state;\n }\n\n case \"reset\": {\n return state.length === 0 ? state : [];\n }\n }\n\n return state;\n};\n","// istanbul ignore file\nimport { useCallback, useEffect, useReducer, useRef } from \"react\";\nimport { createSSEStream } from \"@next-core/utils/general\";\nimport { getBasePath, handleHttpError } from \"@next-core/runtime\";\nimport { rootReducer } from \"./reducers\";\nimport type {\n ConversationPatch,\n ExtraChatPayload,\n RequestStore,\n} from \"../shared/interfaces\";\n\nconst MINIMAL_DELAY = 500;\n\nexport function useConversationDetail(\n conversationId: string | null,\n initialRequest?: RequestStore | null,\n replay?: boolean,\n replayDelay?: number\n) {\n const [{ conversation, tasks, serviceFlows, errors }, dispatch] = useReducer(\n rootReducer,\n null,\n () => ({\n conversation: null,\n tasks: [],\n serviceFlows: [],\n errors: [],\n })\n );\n\n const humanInputRef =\n useRef<\n (input: string | null, action?: string, extra?: ExtraChatPayload) => void\n >();\n\n const replayListRef = useRef<ConversationPatch[]>([]);\n const replayRef = useRef(replay);\n const replayDelayRef = useRef((replayDelay ?? 2) * 1000);\n const replayResolveRef = useRef<(() => void) | null>(null);\n\n const skipToResults = useCallback(() => {\n replayRef.current = false;\n if (replayResolveRef.current) {\n replayResolveRef.current();\n replayResolveRef.current = null;\n }\n }, []);\n\n const watchAgain = useCallback(async () => {\n if (!conversationId) {\n return;\n }\n\n replayRef.current = true;\n dispatch({ type: \"reset\" });\n\n let isInitial = true;\n let previousTime: number | undefined;\n for (const value of replayListRef.current) {\n if (replayRef.current) {\n let delay = replayDelayRef.current;\n if (value.time && previousTime) {\n delay = Math.min(\n Math.max(MINIMAL_DELAY, (value.time - previousTime) * 1000),\n delay\n );\n }\n previousTime = value.time;\n if (!isInitial) {\n await new Promise<void>((resolve) => {\n replayResolveRef.current = resolve;\n setTimeout(resolve, delay);\n });\n replayResolveRef.current = null;\n }\n }\n\n dispatch({ type: \"sse\", payload: value, workspace: conversationId });\n isInitial = false;\n }\n dispatch({ type: \"finished\" });\n }, [conversationId]);\n\n useEffect(() => {\n if (!conversationId) {\n return;\n }\n dispatch({ type: \"reset\" });\n replayListRef.current = [];\n humanInputRef.current = undefined;\n\n let ignore = false;\n let requesting = false;\n let ctrl: AbortController | undefined;\n\n const makeRequest = async (\n content: string | null,\n action?: string,\n extra?: ExtraChatPayload\n ) => {\n if (requesting) {\n return;\n }\n\n requesting = true;\n ctrl = new AbortController();\n try {\n const sseRequest = await (content === null && !action\n ? createSSEStream<ConversationPatch>(\n `${getBasePath()}api/gateway/logic.llm.aiops_service/api/v1/elevo/conversations/${conversationId}/stream`,\n {\n signal: ctrl.signal,\n }\n )\n : createSSEStream<ConversationPatch>(\n `${getBasePath()}api/gateway/logic.llm.aiops_service/api/v1/elevo/conversations/${conversationId}/messages`,\n {\n signal: ctrl.signal,\n method: \"POST\",\n body: JSON.stringify(\n action ? { action } : { content, ...extra }\n ),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n ));\n const stream = await sseRequest;\n let isInitial = true;\n let previousTime: number | undefined;\n for await (const value of stream) {\n if (ignore) {\n requesting = false;\n return;\n }\n\n if (replayRef.current) {\n let delay = replayDelayRef.current;\n if (value.time && previousTime) {\n delay = Math.min(\n Math.max(MINIMAL_DELAY, (value.time - previousTime) * 1000),\n delay\n );\n }\n previousTime = value.time;\n\n if (!isInitial) {\n await new Promise<void>((resolve) => {\n replayResolveRef.current = resolve;\n setTimeout(resolve, delay);\n });\n replayResolveRef.current = null;\n }\n }\n\n replayListRef.current.push(value);\n dispatch({ type: \"sse\", payload: value, workspace: conversationId });\n isInitial = false;\n }\n dispatch({ type: \"finished\" });\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"sse failed\", e);\n handleHttpError(e);\n } finally {\n requesting = false;\n }\n };\n\n humanInputRef.current = async (\n content: string | null,\n action?: string,\n extra?: ExtraChatPayload\n ) => {\n makeRequest(content, action, extra);\n };\n\n if (initialRequest?.conversationId === conversationId) {\n makeRequest(initialRequest.content, undefined, {\n cmd: initialRequest.cmd,\n files: initialRequest.files,\n aiEmployeeId: initialRequest.aiEmployeeId,\n });\n } else {\n makeRequest(null);\n }\n\n return () => {\n ignore = true;\n ctrl?.abort();\n };\n }, [conversationId, initialRequest]);\n\n return {\n conversation,\n tasks,\n serviceFlows,\n errors,\n humanInputRef,\n skipToResults,\n watchAgain,\n };\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./FloatingButton.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]!./FloatingButton.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { getRemoteTsxParserWorker } from \"./workers/tsxParser.js\";\nimport type { GeneratedView, ParsedView } from \"./interfaces.js\";\n\nexport async function getAsyncConstructedView(\n generatedView: GeneratedView,\n workspace: string | undefined\n): Promise<ParsedView | null> {\n try {\n const worker = await getRemoteTsxParserWorker();\n const result = await worker.parseView(generatedView.code, {\n workspace,\n withContexts: generatedView.withContexts\n ? Object.keys(generatedView.withContexts)\n : undefined,\n });\n return {\n ...result,\n viewId: generatedView.viewId,\n withContexts: generatedView.withContexts,\n };\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to parse generated view:\", error);\n return null;\n }\n}\n","import { createContext, type Dispatch } from \"react\";\nimport type { FeedbackDetail } from \"../cruise-canvas/interfaces\";\nimport type {\n ActiveDetail,\n ActiveImages,\n ConversationError,\n ConversationState,\n ExampleProject,\n ExtraChatPayload,\n FileInfo,\n GeneratedView,\n Job,\n ShowCaseType,\n Task,\n UploadOptions,\n} from \"./interfaces\";\nimport type { AIEmployee, Command } from \"./ChatCompletions/useChatCompletions\";\n\nexport interface TaskContextValue {\n conversationId?: string;\n conversationState?: ConversationState;\n tasks: Task[];\n errors: ConversationError[];\n workspace?: string;\n previewUrlTemplate?: string;\n replay?: boolean;\n showCases?: ShowCaseType[];\n exampleProjects?: ExampleProject[];\n aiEmployees?: AIEmployee[];\n commands?: Command[];\n uploadOptions?: UploadOptions;\n\n humanInput: (\n input: string | null,\n action?: string,\n extra?: ExtraChatPayload\n ) => void;\n onShare: () => void;\n onTerminate: () => void;\n supports?: Record<string, boolean>;\n\n activeExpandedViewJobId: string | null;\n setActiveExpandedViewJobId: Dispatch<React.SetStateAction<string | null>>;\n activeDetail: ActiveDetail | null;\n setActiveDetail: Dispatch<React.SetStateAction<ActiveDetail | null>>;\n subActiveDetail: ActiveDetail | null;\n setSubActiveDetail: Dispatch<React.SetStateAction<ActiveDetail | null>>;\n\n submittingFeedback: boolean;\n submittedFeedback: boolean;\n onSubmitFeedback: (detail: FeedbackDetail) => void;\n setShowFeedback: Dispatch<React.SetStateAction<boolean>>;\n\n showJsxEditor?: boolean;\n activeJsxEditorJob?: Job;\n setActiveJsxEditorJob?: Dispatch<React.SetStateAction<Job | undefined>>;\n manuallyUpdatedViews?: Map<string, GeneratedView>;\n updateView?: (jobId: string, view: GeneratedView) => void;\n showFeedbackOnView?: boolean;\n onFeedbackOnView?: (viewId: string) => void;\n feedbackDoneViews?: Set<string>;\n\n skipToResults?: () => void;\n watchAgain?: () => void;\n tryItOut?: () => void;\n separateInstructions?: boolean;\n activeFile: FileInfo | null;\n setActiveFile: Dispatch<React.SetStateAction<FileInfo | null>>;\n activeImages: ActiveImages | null;\n setActiveImages: Dispatch<React.SetStateAction<ActiveImages | null>>;\n}\n\nexport const TaskContext = createContext<TaskContextValue>({\n tasks: [],\n errors: [],\n humanInput: () => {},\n onShare: () => {},\n onTerminate: () => {},\n activeExpandedViewJobId: null,\n setActiveExpandedViewJobId: () => {},\n activeDetail: null,\n setActiveDetail: () => {},\n subActiveDetail: null,\n setSubActiveDetail: () => {},\n submittingFeedback: false,\n submittedFeedback: false,\n onSubmitFeedback: () => {},\n setShowFeedback: () => {},\n activeFile: null,\n setActiveFile: () => {},\n activeImages: null,\n setActiveImages: () => {},\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]!./ReadableCommand.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]!./ReadableCommand.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useEffect, useState } from \"react\";\nimport classNames from \"classnames\";\nimport type { CommandPayload } from \"../interfaces\";\nimport styles from \"./ReadableCommand.module.css\";\nimport { fetchEmployee } from \"../fetchEmployee\";\n\nexport interface ReadableCommandProps {\n cmd?: CommandPayload;\n mentionedAiEmployeeId?: string;\n size?: \"medium\" | \"small\";\n}\n\nexport function ReadableCommand({\n cmd,\n mentionedAiEmployeeId /* , size */,\n}: ReadableCommandProps) {\n const [content, setContent] = useState(() =>\n getInitialContent(cmd, mentionedAiEmployeeId)\n );\n\n useEffect(() => {\n setContent(getInitialContent(cmd, mentionedAiEmployeeId));\n if (!cmd) {\n let ignore = false;\n (async () => {\n const employee = await fetchEmployee(mentionedAiEmployeeId!);\n if (ignore || !employee) return;\n setContent(`@${employee.name}`);\n })();\n return () => {\n ignore = true;\n };\n }\n }, [cmd, mentionedAiEmployeeId]);\n\n return (\n <>\n <span\n className={classNames(styles.command, {\n [styles.small]: true,\n })}\n >\n {content}\n </span>{\" \"}\n </>\n );\n}\n\nexport function getInitialContent(\n cmd?: CommandPayload,\n mentionedAiEmployeeId?: string\n): string {\n if (cmd) {\n switch (cmd.type) {\n case \"serviceFlowStarting\":\n return `/start serviceflow${[\n cmd.serviceFlowStarting.flowName,\n cmd.serviceFlowStarting.spaceName,\n ]\n .filter(Boolean)\n .slice(0, 1)\n .map((name) => `: ${name}`)\n .join(\"\")}`;\n case \"serviceflow-start\":\n return `/start serviceflow${[\n cmd.payload.flowName,\n cmd.payload.spaceName,\n ]\n .filter(Boolean)\n .slice(0, 1)\n .map((name) => `: ${name}`)\n .join(\"\")}`;\n case \"serviceflow-edit\":\n return `/edit serviceflow${[cmd.payload.flowName, cmd.payload.spaceName]\n .filter(Boolean)\n .slice(0, 1)\n .map((name) => `: ${name}`)\n .join(\"\")}`;\n case \"serviceflow-create\":\n return `/create serviceflow${[cmd.payload.spaceName]\n .filter(Boolean)\n .slice(0, 1)\n .map((name) => `: ${name}`)\n .join(\"\")}`;\n default:\n // unknown command type\n return `/${(cmd as CommandPayload).type}`;\n }\n }\n return `@${mentionedAiEmployeeId!}`;\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, `.command--PjYZ4uqH{display:inline-block;background:rgba(37,64,255,0.06);border-radius:8px;color:#2540ff;padding:4px 6px;line-height:22px}.small--dUc9qGKv{padding:2px 6px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"command\": `command--PjYZ4uqH`,\n\t\"small\": `small--dUc9qGKv`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n UNTITLED = \"UNTITLED\",\n FILE_PREVIEW_UNPREVIEWABLE_TIP_PREFIX = \"FILE_PREVIEW_UNPREVIEWABLE_TIP_PREFIX\",\n FILE_PREVIEW_UNPREVIEWABLE_TIP_SUFFIX = \"FILE_PREVIEW_UNPREVIEWABLE_TIP_SUFFIX\",\n DOWNLOAD = \"DOWNLOAD\",\n SHOW_ALL_FILES = \"SHOW_ALL_FILES\",\n COLLAPSE = \"COLLAPSE\",\n}\n\nconst en: Locale = {\n UNTITLED: \"Untitled\",\n FILE_PREVIEW_UNPREVIEWABLE_TIP_PREFIX:\n \"This file is unpreviewable currently, you can\",\n FILE_PREVIEW_UNPREVIEWABLE_TIP_SUFFIX: \"and view it locally.\",\n DOWNLOAD: \"Download\",\n SHOW_ALL_FILES: \"Show all files\",\n COLLAPSE: \"Collapse\",\n};\n\nconst zh: Locale = {\n UNTITLED: \"未命名\",\n FILE_PREVIEW_UNPREVIEWABLE_TIP_PREFIX: \"该类型文件暂不支持预览,您可以\",\n FILE_PREVIEW_UNPREVIEWABLE_TIP_SUFFIX: \"查看。\",\n DOWNLOAD: \"下载\",\n SHOW_ALL_FILES: \"显示所有文件\",\n COLLAPSE: \"收起\",\n};\n\nexport const NS = \"bricks/ai-portal/FilePreview\";\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, `.view-toolbar--kVhd3X5H{display:flex;align-items:center;gap:8px}.button--f3fGXpYl{display:flex;background:none;border:none;padding:3px;cursor:pointer;color:#595959}.button-lucide--J7U9FEo_{font-size:16px;padding:2px}.button--f3fGXpYl:hover{color:var(--elevo-color-brand)}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"view-toolbar\": `view-toolbar--kVhd3X5H`,\n\t\"button\": `button--f3fGXpYl`,\n\t\"button-lucide\": `button-lucide--J7U9FEo_`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./CreatedView.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./CreatedView.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React, { useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { unstable_createRoot } from \"@next-core/runtime\";\nimport classNames from \"classnames\";\nimport { uniqueId } from \"lodash\";\nimport { convertView } from \"@next-tsx/converter\";\nimport type { ModulePartOfComponent } from \"@next-tsx/parser\";\nimport styles from \"./CreatedView.module.css\";\nimport sharedStyles from \"../../cruise-canvas/shared.module.css\";\nimport type { Job, ParsedView } from \"../../shared/interfaces\";\nimport { WrappedIcon } from \"../../shared/bricks\";\nimport { createPortal } from \"../../cruise-canvas/utils/createPortal\";\nimport { TaskContext } from \"../TaskContext\";\nimport { ICON_LOADING } from \"../constants\";\nimport { ViewToolbar } from \"./ViewToolbar\";\nimport type { BrickConf } from \"@next-core/types\";\n\nexport interface CreatedViewProps {\n job: Job;\n noHeading?: boolean;\n onSizeChange?: (size: \"medium\" | \"large\") => void;\n}\n\nexport function CreatedView({\n job,\n noHeading,\n onSizeChange,\n}: CreatedViewProps): JSX.Element {\n const rootId = useMemo(() => uniqueId(), []);\n const { workspace, manuallyUpdatedViews } = useContext(TaskContext);\n const ref = useRef<HTMLDivElement>(null);\n const rootRef = useRef<Awaited<\n ReturnType<typeof unstable_createRoot>\n > | null>(null);\n const generatedView = manuallyUpdatedViews?.get(job.id) ?? job.generatedView!;\n const [view, setView] = useState<ParsedView | null>(null);\n const canFeedback =\n !!view && !!generatedView.viewId && generatedView.from !== \"config\";\n\n useEffect(() => {\n setView(null);\n let ignore = false;\n generatedView.asyncConstructedView?.then((view) => {\n if (!ignore) {\n setView(view);\n }\n });\n return () => {\n ignore = true;\n };\n }, [generatedView]);\n\n useEffect(() => {\n const container = ref.current;\n if (!container) {\n return;\n }\n const portal = createPortal(rootId);\n const root = unstable_createRoot(container, {\n portal,\n supportsUseChildren: true,\n } as any);\n rootRef.current = root;\n\n return () => {\n root.unmount();\n portal.remove();\n rootRef.current = null;\n };\n }, [rootId]);\n\n const [loading, setLoading] = useState(true);\n const [sizeLarge, setSizeLarge] = useState(false);\n\n useEffect(() => {\n setLoading(true);\n if (!view) {\n return;\n }\n let ignore = false;\n (async () => {\n try {\n const convertedView = await convertView(view, {\n rootId,\n workspace,\n withContexts: view.withContexts,\n });\n if (ignore) {\n return;\n }\n const { brick, context, functions, templates } = convertedView;\n\n setSizeLarge(preferSizeLarge(brick));\n\n await rootRef.current?.render(brick, { context, functions, templates });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to render view:\", error);\n }\n if (!ignore) {\n setLoading(false);\n }\n })();\n\n return () => {\n ignore = true;\n };\n }, [rootId, workspace, view]);\n\n useEffect(() => {\n onSizeChange?.(sizeLarge ? \"large\" : \"medium\");\n }, [onSizeChange, sizeLarge]);\n\n const viewTitle = useMemo(\n () => (view?.entry?.defaultExport as ModulePartOfComponent)?.title,\n [view]\n );\n\n return (\n <>\n {noHeading ? null : (\n <div className={styles.heading}>\n <div\n className={classNames(styles.title, {\n [sharedStyles[\"shine-text\"]]: view && loading,\n })}\n >\n {view ? viewTitle : <WrappedIcon {...ICON_LOADING} />}\n </div>\n <ViewToolbar job={job} canFeedback={canFeedback} />\n </div>\n )}\n <div data-root-id={rootId} ref={ref} />\n </>\n );\n}\n\nfunction traverseBricks(\n bricks: BrickConf[],\n callback: (bricks: BrickConf) => boolean\n) {\n for (const brick of bricks) {\n if (callback(brick)) {\n break;\n }\n if (Array.isArray(brick.children)) {\n traverseBricks(brick.children as BrickConf[], callback);\n }\n }\n}\n\nfunction preferSizeLarge(brick: BrickConf | BrickConf[]): boolean {\n let large = false;\n traverseBricks(([] as BrickConf[]).concat(brick), (b) => {\n if (b.brick === \"eo-next-table\") {\n large = true;\n return true;\n }\n if (\n b.brick === \"div\" &&\n (b.properties?.dataset as Record<string, string>)?.component ===\n \"dashboard\"\n ) {\n const widgets = b.children;\n if (Array.isArray(widgets) && widgets.length >= 7) {\n large = true;\n return true;\n }\n }\n return false;\n });\n return large;\n}\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./ViewToolbar.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./ViewToolbar.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n FULLSCREEN = \"FULLSCREEN\",\n FEEDBACK = \"FEEDBACK\",\n OPEN_PREVIEW = \"OPEN_PREVIEW\",\n}\n\nconst en: Locale = {\n FULLSCREEN: \"Fullscreen\",\n FEEDBACK: \"Feedback\",\n OPEN_PREVIEW: \"Open preview\",\n};\n\nconst zh: Locale = {\n FULLSCREEN: \"全屏\",\n FEEDBACK: \"反馈\",\n OPEN_PREVIEW: \"打开预览\",\n};\n\nexport const NS = \"bricks/ai-portal/CreatedView\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","// istanbul ignore file: experimental\nimport React, { useCallback, useContext } from \"react\";\nimport { getBasePath } from \"@next-core/runtime\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport styles from \"./ViewToolbar.module.css\";\nimport { WrappedIcon } from \"../../shared/bricks\";\nimport { K, locales, NS, t } from \"./i18n\";\nimport { TaskContext } from \"../TaskContext\";\nimport { ICON_FEEDBACK } from \"../constants\";\nimport { useViewFeedbackDone } from \"../useViewFeedbackDone\";\nimport { parseTemplate } from \"../parseTemplate\";\nimport type { Job } from \"../interfaces\";\n\ninitializeI18n(NS, locales);\n\nexport interface ViewToolbarProps {\n job: Job;\n canFeedback?: boolean;\n}\n\nexport function ViewToolbar({\n job,\n canFeedback: propCanFeedback,\n}: ViewToolbarProps) {\n const {\n previewUrlTemplate,\n showJsxEditor,\n setActiveExpandedViewJobId,\n setActiveJsxEditorJob,\n manuallyUpdatedViews,\n showFeedbackOnView,\n onFeedbackOnView,\n feedbackDoneViews,\n } = useContext(TaskContext);\n\n const generatedView = manuallyUpdatedViews?.get(job.id) ?? job.generatedView!;\n const feedbackDone =\n useViewFeedbackDone(generatedView.viewId, showFeedbackOnView) ||\n feedbackDoneViews?.has(generatedView.viewId);\n const canFeedback =\n propCanFeedback &&\n !!generatedView.viewId &&\n generatedView.from !== \"config\";\n\n const handleExpandClick = useCallback(() => {\n setActiveExpandedViewJobId(job.id);\n }, [job.id, setActiveExpandedViewJobId]);\n\n return (\n <div className={styles[\"view-toolbar\"]}>\n {showJsxEditor && (\n <button\n className={styles.button}\n onClick={() => {\n setActiveJsxEditorJob?.(job);\n }}\n >\n <WrappedIcon lib=\"antd\" icon=\"bug\" />\n </button>\n )}\n {showFeedbackOnView && !feedbackDone && canFeedback && (\n <button\n className={`${styles.button} ${styles[\"button-lucide\"]}`}\n title={t(K.FEEDBACK)}\n onClick={() => onFeedbackOnView?.(generatedView.viewId)}\n >\n <WrappedIcon {...ICON_FEEDBACK} />\n </button>\n )}\n {!!(\n generatedView.viewId &&\n !generatedView.withContexts &&\n previewUrlTemplate\n ) && (\n <button\n className={`${styles.button} ${styles[\"button-lucide\"]}`}\n title={t(K.OPEN_PREVIEW)}\n onClick={() => {\n window.open(\n `${getBasePath().slice(0, -1)}${parseTemplate(\n previewUrlTemplate,\n {\n viewId: generatedView.viewId,\n }\n )}`,\n \"_blank\"\n );\n }}\n >\n <WrappedIcon lib=\"lucide\" icon=\"external-link\" />\n </button>\n )}\n <button\n className={styles.button}\n title={t(K.FULLSCREEN)}\n onClick={handleExpandClick}\n >\n <WrappedIcon lib=\"easyops\" icon=\"expand\" />\n </button>\n </div>\n );\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.human-action--WMMvJhMD{margin-top:22px}.canvas--mQCtCDkd{display:flex;justify-content:center;align-items:center;padding:24px 12px;background:rgba(62,67,102,0.05);box-shadow:0px 1px 0px 0px rgba(255,255,255,0.5);border-radius:9px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"human-action\": `human-action--WMMvJhMD`,\n\t\"canvas\": `canvas--mQCtCDkd`\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, `.shine-text--t2t9tIJp{color:transparent;background:linear-gradient(to right,var(--shine-text-color) 0%,var(--shine-text-color) 40%,var(--shine-text-highlight-color) 50%,var(--shine-text-color) 60%,var(--shine-text-color) 100%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;animation:shineText--ycIJ4nxc 2s infinite linear}@keyframes shineText--ycIJ4nxc{0%{background-position:-50% 50%}100%{background-position:-250% 50%}}.markdown--t5EHw6k4 a{color:var(--elevo-color-brand)}.markdown--t5EHw6k4 a:hover{color:var(--elevo-color-brand-hover)}.markdown--t5EHw6k4 a:active{color:var(--elevo-color-brand-active)}.markdown--t5EHw6k4 .shiki{font-family:\"Fira Code\",\"Fira Mono\",Menlo,Consolas,\"DejaVu Sans Mono\",monospace;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none;font-size:13px;padding:1em;margin:0.5em 0;overflow-x:auto;border-radius:9px}.markdown--t5EHw6k4 .shiki.light-plus{background:hsl(230,1%,98%)!important}.markdown--t5EHw6k4 table{width:100%;overflow-x:auto;border-collapse:collapse}.markdown--t5EHw6k4 tr{border-top:1px solid #ccd1de}.markdown--t5EHw6k4 td,.markdown--t5EHw6k4 th{border:1px solid #ccd1de;padding:6px 13px}.markdown--t5EHw6k4{overflow-wrap:break-word}.markdown--t5EHw6k4:not(:first-child){margin-top:6px}.markdown--t5EHw6k4 p{margin:1em 0}.markdown--t5EHw6k4 > :first-child,\n.markdown-wrapper--TGg3xHyX > :first-child{margin-top:0}.markdown--t5EHw6k4 > :last-child,\n.markdown-wrapper--TGg3xHyX > :last-child{margin-bottom:0}.table-container--hekbaxrD{padding:8px 8px 10px;border-radius:12px;border:1px solid #e2e2ec;background:#ffffff}.table-container--hekbaxrD:not(:first-child){margin-top:6px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"shine-text\": `shine-text--t2t9tIJp`,\n\t\"shineText\": `shineText--ycIJ4nxc`,\n\t\"markdown\": `markdown--t5EHw6k4`,\n\t\"markdown-wrapper\": `markdown-wrapper--TGg3xHyX`,\n\t\"table-container\": `table-container--hekbaxrD`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { InstanceApi_getDetail } from \"@next-api-sdk/cmdb-sdk\";\nimport { useEffect, useState } from \"react\";\n\nconst cache = new Map<string, Promise<boolean>>();\n\nexport function useViewFeedbackDone(\n viewId: string | undefined,\n showFeedbackOnView?: boolean\n) {\n const [done, setDone] = useState(true);\n\n useEffect(() => {\n if (!viewId || !showFeedbackOnView) {\n setDone(true);\n return;\n }\n let promise = cache.get(viewId);\n if (promise === undefined) {\n promise = fetchViewFeedbackDone(viewId);\n cache.set(viewId, promise);\n }\n let ignore = false;\n promise.then((value) => {\n if (!ignore) {\n setDone(value);\n }\n });\n return () => {\n ignore = true;\n };\n }, [viewId, showFeedbackOnView]);\n\n return done;\n}\n\nasync function fetchViewFeedbackDone(viewId: string): Promise<boolean> {\n const response = await InstanceApi_getDetail(\n \"LLM_WEB_VIEW_INFO@EASYOPS\",\n viewId,\n {\n fields: \"feedback.instanceId\",\n },\n {\n priority: \"low\",\n }\n );\n return !!response?.feedback?.length;\n}\n","// 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, `.files--CibolWoq{display:grid;grid-template-columns:repeat(auto-fit,minmax(204px,1fr));gap:4px;list-style:none;margin:12px 0 0;padding:0}.large--ucsZMWES{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.file--VpyjvXGt{background:rgba(0,0,0,0.04);border-radius:6px;display:flex;height:60px;align-items:center;padding:0 14px}.file--VpyjvXGt,\n.file--VpyjvXGt:hover{color:var(--elevo-color-brand)}.file--VpyjvXGt:hover{background:rgba(0,0,0,0.08)}.content--aY05qnew{min-width:0;flex:1}.icon--TVyjPp5x{margin-right:11px}.name--FehravZW,\n.metadata--ntXgq62x{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.name--FehravZW{color:rgba(0,0,0,0.88)}.metadata--ntXgq62x{color:rgba(0,0,0,0.45);font-size:12px;margin-top:3px}.chat--Vk4IEN60{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-left:auto;margin-top:12px;width:-moz-fit-content;width:fit-content}.chat--Vk4IEN60.images--k6XJWVhb{max-width:412px}.chat--Vk4IEN60:not(.images--k6XJWVhb){gap:8px;max-width:766px}.chat--Vk4IEN60 .file--VpyjvXGt{width:250px}.images--k6XJWVhb{display:flex;flex-wrap:wrap}.images--k6XJWVhb > li{width:100px;height:100px}.images--k6XJWVhb.single--cqRGD9YQ > li{width:200px;height:200px}.image--fvQwfADO{border:1px solid rgba(0,0,0,0.1);border-radius:6px;width:100%;height:100%;display:flex;align-items:center;justify-content:center;cursor:zoom-in;position:relative}.image--fvQwfADO img{max-width:100%;max-height:100%;object-fit:contain}.mask--K81A9CNt{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,0.18);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:6px}.overlay--g3Xz6kGg{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;cursor:pointer;font-weight:500;font-size:20px;color:#fff}.expand--JhudzGgf{font-size:12px;color:rgba(0,0,0,0.45);display:flex;align-items:center;gap:6px;margin:12px auto 0;background:none;border:none;cursor:pointer}.chat--Vk4IEN60 + .expand--JhudzGgf{margin-right:0}.files--CibolWoq:not(.chat--Vk4IEN60) + .expand--JhudzGgf eo-icon{display:none}.expand--JhudzGgf:hover{color:rgba(0,0,0,0.65)}.expand--JhudzGgf:focus{outline:none}.expand--JhudzGgf.collapsed--rqhtueyy eo-icon{transform:rotate(180deg)}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"files\": `files--CibolWoq`,\n\t\"large\": `large--ucsZMWES`,\n\t\"file\": `file--VpyjvXGt`,\n\t\"content\": `content--aY05qnew`,\n\t\"icon\": `icon--TVyjPp5x`,\n\t\"name\": `name--FehravZW`,\n\t\"metadata\": `metadata--ntXgq62x`,\n\t\"chat\": `chat--Vk4IEN60`,\n\t\"images\": `images--k6XJWVhb`,\n\t\"single\": `single--cqRGD9YQ`,\n\t\"image\": `image--fvQwfADO`,\n\t\"mask\": `mask--K81A9CNt`,\n\t\"overlay\": `overlay--g3Xz6kGg`,\n\t\"expand\": `expand--JhudzGgf`,\n\t\"collapsed\": `collapsed--rqhtueyy`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { getBasePath } from \"@next-core/runtime\";\n\nexport function getImageUrl(uri: string): string {\n return new URL(uri, `${location.origin}${getBasePath()}`).toString();\n}\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","locals","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","undefined","WrappedCodeWrapper","wrapBrick","MarkdownPre","_ref","_props$className","node","props","React","className","styles","preProps","showCopyButton","includes","themeVariant","createPortal","rootId","portal","document","createElement","dataset","style","position","width","height","body","append","cache","Map","fetchEmployee","aiEmployeeId","cached","get","promise","async","_response$list","employee","ElevoApi_listElevoAiEmployees","employeeId","list","doFetchEmployee","set","components","pre","shikiOptions","theme","EnhancedMarkdown","ref","useRef","setHoverOnScrollableContent","useContext","CanvasContext","handleMouseMove","useCallback","e","found","el","nativeEvent","composedPath","current","HTMLTableElement","HTMLPreElement","scrollWidth","clientWidth","handleMouseLeave","onMouseMove","onMouseLeave","MarkdownComponent","_extends","shiki","WrappedIcon","WrappedButton","WrappedLink","WrappedDrawer","onClose","onOpen","WrappedIconButton","WrappedChatInput","onChatSubmit","onTerminate","WrappedShowCase","WrappedCodeBlock","WrappedBlankState","WrappedRunningFlow","onActiveChange","showDialog","unwrapProvider","createContext","onNodeResize","setActiveNodeId","hoverOnScrollableContent","RequestHumanAction","action","ui","humanInput","replay","TaskContext","disabled","setDisabled","useState","type","classNames","canvas","shape","onClick","confirmText","DONE_STATES","GENERAL_DONE_STATES","NON_WORKING_STATES","ICON_CLOSE","lib","icon","ICON_LOADING","spinning","ICON_CANVAS","ICON_CHAT","ICON_FEEDBACK","ICON_EXTERNAL_LINK","ICON_UP","ICON_DOWNLOAD","LIST_SPLIT_THRESHOLD","SHOW_AS_TABLE_THRESHOLD","BUILTIN_FN_STRINGIFY","CmdbInstanceDetail","objectId","detail","outputSchema","useMemo","uniqueId","rootRef","useEffect","container","root","unstable_createRoot","supportsUseChildren","unmount","remove","loading","setLoading","ignore","_rootRef$current","bricks","context","_schema","schema","JSON","parse","console","error","modals","name","value","builtinFnStringify","convertArrayOfObjects","valueAccessor","label","idPrefix","needContext","_props$","getOrderedProps","key","length","modalId","normalizeIdentifier","contextId","modal","brick","properties","modalTitle","hideCancelButton","maskClosable","keyboard","columns","tableChildren","k","v","useChildren","items","description","upperFirst","slot","convertObject","dataIndex","title","children","dataSource","pagination","bordered","clickHandler","args","target","method","if","display","alignItems","gap","textContent","stringify","outline","cursor","events","click","_props$2","column","map","_ref2","field","Object","entries","_ref3","def","isEmptyValue","text","Array","isArray","contextName","useBrick","isComplexType","join","isObject","keys","convertCmdbInstanceDetail","render","hasOwnProperty","identifier","replace","String","_schema$required","required","propKeys","orderBy","_ref4","requiredIndex","indexOf","remoteWorkerPromise","worker","getRemoteTsxParserWorker","Remote","wrap","Worker","URL","FileList","files","large","setActiveFile","setActiveImages","filesWithDisplayInfo","file","displayType","getFileTypeAndIcon","mimeType","imageFiles","filter","uri","f","allImages","limit","exceeded","expanded","setExpanded","filteredList","slice","images","single","chat","index","image","src","getImageUrl","fetchPriority","mask","overlay","content","t","K","UNTITLED","metadata","size","formatFileSize","expand","collapsed","prev","COLLAPSE","SHOW_ALL_FILES","getOrderedNodes","nodes","downstreamMap","roots","rootChildren","childMap","parent","_node$upstream2","up","_node$upstream","upstream","downstream","visitedNodes","Set","queue","leaves","shift","has","add","getFlatChunks","tasks","errors","flowMap","activityMap","skipActivitySubTasks","taskTree","taskIds","taskMap","processedTaskMap","taskId","task","jobs","buildTaskTreeNode","processedTask","jobIds","jobMap","jobId","job","subTaskId","subTask","getTaskTree","chunks","collectChunks","taskNode","level","flow","activityWithFlow","activity","shouldSkip","_job$messages","state","messages","every","msg","role","hil","fromSkippedSubTask","taskErrors","collectJobs","bundledLanguages","json","javascript","js","typescript","ts","html","html-derivative","xml","css","markdown","md","mermaid","mmd","jsx","tsx","shellscript","bash","sh","shell","zsh","python","py","go","sql","yaml","bundledThemes","lightPlus","darkPlus","createHighlighter","createdBundledHighlighter","langs","themes","engine","createOnigurumaEngine","codeToHtml","codeToHast","codeToTokensBase","codeToTokens","codeToTokensWithThemes","getSingletonHighlighter","getLastGrammarState","createSingletonShorthands","guessEmbeddedLanguages","code","lang","getCodeLanguage","classListItem","toLowerCase","mermaidPromise","count","parser","DOMParser","serializer","XMLSerializer","rehypeMermaid","promises","visit","tree","tagName","svg","default","initialize","startOnLoad","themeVariables","fontSize","lineColor","primaryColor","primaryBorderColor","doLoadMermaid","toString","_document$getElementB","getElementById","parseFromString","svgElement","querySelector","defs","createElementNS","innerHTML","prepend","appendChild","modifiedSvg","serializeToString","replacements","fromHtmlIsomorphic","fragment","splice","concat","Promise","all","production","Fragment","jsxs","preloadHighlighter","rehypeFallbackLanguage","prototype","call","c","startsWith","_shiki$theme","reactContent","setReactContent","highlighter","vFile","unified","use","remarkParse","remarkGfm","remarkToRehype","rehypeShikiFromHighlighter","lazy","defaultLanguage","rehypeReact","passNode","process","result","color","MIME_TYPES","unit","pipes","unitFormat","number","Math","round","filename","getMimeTypeByFilename","fileOther","fileText","filePdf","fileDoc","fileXls","filePpt","_MIME_TYPES$get","ext","matches","match","parseTemplate","template","_match","trim","mergeJobs","previousJobs","jobsPatch","workspace","jobPatch","_jobs$findIndex","_jobs","previousJobIndex","findIndex","messagesPatch","toolCall","arguments","originalArguments","argumentsParseFailed","argumentsParseError","_patch$toolCall","patch","generatedView","getJobGeneratedView","mergeMessages","_restMessagesPatch$to","_restMessagesPatch$to2","_previousJob$toolCall","_restMessagesPatch$st","previousJob","restMessagesPatch","pick","_previousJob$messages","view","getJobStaticDataView","withContexts","RESPONSE","getJobStaticDataResponse","asyncConstructedView","getAsyncConstructedView","isMatch","merged","previousRole","message","lastMessage","parts","mergeMessageParts","previousType","previousDataType","part","_part$data","_part$data2","data","_part$data3","viewId","from","isStaticData","mergeSpec","previousSpec","flowPatch","fullSpec","spec","mergedSpec","stagePatch","stageIndex","s","_stage$serviceFlowAct","stage","serviceFlowActivities","activities","mergeActivities","previousActivities","activitiesPatch","activityPatch","activityIndex","rootReducer","reducers","conversation","payload","finished","tasksPatch","_taskPatch$aiEmployee","taskPatch","previousTaskIndex","previousTask","lastError","serviceFlows","serviceFlowsPatch","previousFlowIndex","previousFlow","fromEntries","MINIMAL_DELAY","useConversationDetail","conversationId","initialRequest","replayDelay","dispatch","useReducer","humanInputRef","replayListRef","replayRef","replayDelayRef","replayResolveRef","skipToResults","watchAgain","previousTime","isInitial","delay","time","min","max","resolve","setTimeout","ctrl","requesting","makeRequest","extra","AbortController","sseRequest","createSSEStream","getBasePath","signal","headers","stream","handleHttpError","cmd","_ctrl","abort","parseView","onShare","activeExpandedViewJobId","setActiveExpandedViewJobId","activeDetail","setActiveDetail","subActiveDetail","setSubActiveDetail","submittingFeedback","submittedFeedback","onSubmitFeedback","setShowFeedback","activeFile","activeImages","ReadableCommand","mentionedAiEmployeeId","setContent","getInitialContent","command","small","serviceFlowStarting","flowName","spaceName","Boolean","NS","locales","en","FILE_PREVIEW_UNPREVIEWABLE_TIP_PREFIX","FILE_PREVIEW_UNPREVIEWABLE_TIP_SUFFIX","DOWNLOAD","zh","i18n","getFixedT","CreatedView","_manuallyUpdatedViews","noHeading","onSizeChange","manuallyUpdatedViews","setView","canFeedback","_generatedView$asyncC","then","sizeLarge","setSizeLarge","convertedView","convertView","functions","templates","traverseBricks","b","_b$properties","component","widgets","preferSizeLarge","viewTitle","_view$entry","entry","defaultExport","heading","sharedStyles","ViewToolbar","callback","propCanFeedback","previewUrlTemplate","showJsxEditor","setActiveJsxEditorJob","showFeedbackOnView","onFeedbackOnView","feedbackDoneViews","feedbackDone","useViewFeedbackDone","handleExpandClick","button","FEEDBACK","OPEN_PREVIEW","window","open","FULLSCREEN","initializeI18n","done","setDone","_response$feedback","response","InstanceApi_getDetail","fields","priority","feedback","fetchViewFeedbackDone","location","origin"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(globalThis.webpackChunk_next_bricks_ai_portal=globalThis.webpackChunk_next_bricks_ai_portal||[]).push([[778],{625:(e,t,a)=>{function n(e){switch(e){case"input-required":return{lib:"antd",theme:"filled",icon:"pause-circle"};case"completed":return{lib:"antd",theme:"filled",icon:"check-circle"};case"failed":return{lib:"antd",theme:"filled",icon:"close-circle"};case"terminated":return{lib:"antd",theme:"filled",icon:"stop"};case"working":return{lib:"antd",icon:"loading-3-quarters",spinning:!0};default:return{lib:"antd",theme:"filled",icon:"clock-circle"}}}a.d(t,{W:()=>n})},18768:(e,t,a)=>{a.d(t,{A:()=>s});var n=a(36758),i=a.n(n),l=a(40935),o=a.n(l)()(i());o.push([e.id,".progress--lx8TY1CA{margin-bottom:10px;position:relative}.bar--ApxcfDGj,\n.details--YLrChHBK{background:rgba(255,255,255,0.6);border:1px solid rgba(255,255,255,0.6);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.bar--ApxcfDGj{cursor:pointer;display:flex;align-items:center;height:32px;box-shadow:0px 2px 6px 0px rgba(0,0,0,0.04);border-radius:16px;font-size:12px;padding:0 14px}.icon--tQcIUG1N{margin-right:6px;width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:linear-gradient(222deg,#abaab7 25%,#fff 75%);color:#4e4d56;font-size:10px;text-shadow:0px 1px 1px #fff}.progress--lx8TY1CA.completed--CRSVMXSS .icon--tQcIUG1N{background:linear-gradient(222deg,#16c661 25%,#fff 75%);color:#055527}.progress--lx8TY1CA.failed--uYq638ML .icon--tQcIUG1N{background:linear-gradient(222deg,#f24c25 25%,#fff 75%);color:#5b1504}.progress--lx8TY1CA.working--vSiJEm6I .icon--tQcIUG1N{background:linear-gradient(222deg,#3e56ff 25%,#fff 75%);color:#0c165d}.progress--lx8TY1CA.input-required--fub8PAf3 .icon--tQcIUG1N{background:linear-gradient(222deg,#12aacc 25%,#fff 75%);color:#0c353e}.progress--lx8TY1CA.canceled--Ew8Xed4m .icon--tQcIUG1N{background:linear-gradient(222deg,#fcaa07 25%,#fff 75%);color:#302206}.text--xtCVQl6G,\n.name--GCO4oNl4{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:0;flex:1}.stat--vXcz2KIB{margin-left:6px}.expand--euAPifdF{margin-left:6px}.stat--vXcz2KIB,\n.expand--euAPifdF{color:rgba(0,0,0,0.45)}.details--YLrChHBK{position:absolute;left:0;right:0;bottom:40px;box-shadow:0px 3px 6px -4px rgba(0,0,0,0.12);border-radius:12px;list-style:none;margin:0;padding:20px;cursor:auto}.step--WdWDE_I7{--state-color:initial;display:flex;align-items:center;color:var(--state-color,var(--text-color-secondary))}.name--GCO4oNl4{color:var(--state-color,#262626)}.step--WdWDE_I7:not(:last-child){margin-bottom:16px}.step--WdWDE_I7.completed--CRSVMXSS{--state-color:var(--color-success)}.step--WdWDE_I7.failed--uYq638ML{--state-color:var(--color-error)}.step--WdWDE_I7.working--vSiJEm6I{--state-color:var(--color-info)}.step--WdWDE_I7.input-required--fub8PAf3{--state-color:var(--palette-cyan-7)}.step--WdWDE_I7.canceled--Ew8Xed4m{--state-color:#fcaa07}.state--Flb6ddfB{margin-right:10px}.mask--nL2DoW2Q{position:fixed;top:0;right:0;bottom:0;left:0}",""]),o.locals={progress:"progress--lx8TY1CA",bar:"bar--ApxcfDGj",details:"details--YLrChHBK",icon:"icon--tQcIUG1N",completed:"completed--CRSVMXSS",failed:"failed--uYq638ML",working:"working--vSiJEm6I","input-required":"input-required--fub8PAf3",canceled:"canceled--Ew8Xed4m",text:"text--xtCVQl6G",name:"name--GCO4oNl4",stat:"stat--vXcz2KIB",expand:"expand--euAPifdF",step:"step--WdWDE_I7",state:"state--Flb6ddfB",mask:"mask--nL2DoW2Q"};const s=o},70778:(e,t,a)=>{a.d(t,{C:()=>we});var n=a(18769),i=a.n(n),l=a(60128),o=a(53373),s=a.n(o),r=a(52208),c=a(67101),d=a(13330),m=a(30672),p=a(30621),u=a(84766),f=a(76720),b=a(70046),x=a(40177),g=a(62309),h=a(72591),v=a.n(h),E=a(1740),k=a.n(E),w=a(88128),A=a.n(w),I=a(30855),y=a.n(I),N=a(93051),T=a.n(N),C=a(73656),D=a.n(C),S=a(83090),F={};F.styleTagTransform=D(),F.setAttributes=y(),F.insert=A().bind(null,"head"),F.domAPI=k(),F.insertStyleElement=T(),v()(S.A,F);const U=S.A&&S.A.locals?S.A.locals:void 0;var j=a(36903),P=a(39649),G=a(51069),L=a(89575),_=a(67177),z=a(83685),B={};B.styleTagTransform=D(),B.setAttributes=y(),B.insert=A().bind(null,"head"),B.domAPI=k(),B.insertStyleElement=T(),v()(z.A,B);const M=z.A&&z.A.locals?z.A.locals:void 0;var W=a(625);let R=function(e){return e.WAITING="WAITING",e.EXECUTING="EXECUTING",e.PAUSED="PAUSED",e.SUCCEEDED="SUCCEEDED",e.FAILED="FAILED",e.TERMINATED="TERMINATED",e}({});const q="bricks/ai-portal/FlowApp",O=_.i18n.getFixedT(null,q);var X=a(40563),V=a(9442),J=a(69493);function Y(e){var t;let{flow:a,activity:l}=e;const{tasks:o,setActiveDetail:r}=(0,n.useContext)(f.j),c=(0,n.useMemo)((()=>o.find((e=>e.id===a.taskId))),[o,a.taskId]),d=(0,n.useMemo)((()=>a.spec.map((e=>{var t;return{...e,serviceFlowActivities:null===(t=e.serviceFlowActivities)||void 0===t?void 0:t.map((e=>{const t=o.find((t=>t.id===e.taskId));return{name:e.name,taskId:e.taskId,state:null==t?void 0:t.state,startTime:null==t?void 0:t.startTime,endTime:null==t?void 0:t.endTime}}))}}))),[a.spec,o]),p=(0,n.useMemo)((()=>K(c.state)),[c.state]);return i().createElement("div",{className:M.app},i().createElement("div",{className:M.heading},i().createElement("div",{className:M.header},i().createElement("div",{className:s()(M.status,p.className)},i().createElement(m.Bj,p.icon),p.text),i().createElement("div",{className:M.title},`${null!==(t=a.space)&&void 0!==t&&t.name?`${a.space.name} / `:""}${a.name}`)),i().createElement("div",{className:M.chart},i().createElement(m.n$,{spec:d,activeActivityId:null==l?void 0:l.taskId,onActiveChange:e=>{e.detail&&r({type:"activity",id:e.detail})}}))),i().createElement("div",{className:M.body},l?i().createElement(Q,{activity:l}):i().createElement(m.F_,{className:M.blank,description:"您还未选择活动",illustration:"serviceflows"})))}function Q(e){let{activity:t}=e;const{tasks:a,errors:l}=(0,n.useContext)(f.j),o=(0,n.useMemo)((()=>a.find((e=>e.id===t.taskId))),[a,t.taskId]),s=o.state,{icon:r,className:c}=(0,n.useMemo)((()=>K(s)),[s]),b=(0,n.useMemo)((()=>[{...o,parent:void 0}]),[o]),{messages:x}=(0,d.p)(!0,o.state,b,l),g=(0,n.useRef)(null),h=(0,n.useRef)(null),{scrollable:v,scrollToBottom:E}=(0,X.i)(!0,g,h);return i().createElement(i().Fragment,null,i().createElement("div",{className:M["activity-title"]},i().createElement(m.Bj,(0,L.A)({},r,{className:c})),t.name),i().createElement("div",{className:M.chat,ref:g},i().createElement("div",{className:M.messages,ref:h},x.map(((e,t,a)=>i().createElement("div",{className:M.message,key:t},"user"===e.role?i().createElement(p.R,{content:e.content,cmd:e.cmd,files:e.files}):i().createElement(u.G,{chunks:e.chunks,scopeState:o.state,isLatest:t===a.length-1,isSubTask:!0})))))),i().createElement("button",{className:`${V.A["scroll-down"]} ${J.A["floating-button"]}`,style:{bottom:"30px"},hidden:!v,onClick:E},i().createElement(m.Bj,{lib:"antd",icon:"down"})))}function K(e){const t=(0,W.W)(e);let a,n;switch(e){case"working":a=O(R.EXECUTING),n=M.working;break;case"completed":a=O(R.SUCCEEDED),n=M.completed;break;case"failed":a=O(R.FAILED),n=M.failed;break;case"input-required":a=O(R.PAUSED),n=M.paused;break;case"terminated":a=O(R.TERMINATED);break;default:a=O(e?R.EXECUTING:R.WAITING)}return{icon:t,text:a,className:n}}(0,_.initializeI18n)(q,{en:{WAITING:"Waiting",EXECUTING:"Executing",PAUSED:"Paused",SUCCEEDED:"Succeeded",FAILED:"Failed",TERMINATED:"Terminated"},zh:{WAITING:"等待中",EXECUTING:"执行中",PAUSED:"暂停",SUCCEEDED:"成功",FAILED:"失败",TERMINATED:"已终止"}});var $=a(6115);const H={lib:"easyops",icon:"shrink"};function Z(e){let{detail:t,isSubTask:a,faded:l}=e;const{setActiveDetail:o,setSubActiveDetail:r}=(0,n.useContext)(f.j),{setUserClosedAside:c}=(0,n.useContext)(G.W);return i().createElement("div",{className:s()(U.aside,{[U.sub]:a,[U.faded]:l})},i().createElement("div",{className:U.box},i().createElement("div",{className:U.header},i().createElement("div",{className:U.title},"Elevo's Computer"),i().createElement(m.Py,{icon:H,variant:"mini",onClick:()=>{a?r(null):(o(null),c(!0))}})),i().createElement("div",{className:s()(U.body,{[U.scrollable]:"job"===t.type&&!t.job.generatedView})},"job"===t.type?i().createElement(i().Fragment,null,i().createElement(P.t,{job:t.job,variant:"read-only"}),t.job.generatedView?i().createElement(ee,{name:"View",source:t.job.generatedView.code,language:"jsx"}):i().createElement($.M,{job:t.job})):i().createElement(Y,{flow:t.flow,activity:t.activity}))))}function ee(e){let{name:t,source:a,language:n}=e;return i().createElement("div",{className:s()(U.app,U.editor)},i().createElement("div",{className:U.heading},`${t}.${n}`),i().createElement("div",{className:s()(U.content,j.A.markdown)},i().createElement("div",{className:U.scroller},i().createElement(m.yQ,{className:U["code-block"],source:a,language:n,themeVariant:"elevo"}))))}var te=a(94625),ae=a(76239),ne={};ne.styleTagTransform=D(),ne.setAttributes=y(),ne.insert=A().bind(null,"head"),ne.domAPI=k(),ne.insertStyleElement=T(),v()(ae.A,ne);const ie=ae.A&&ae.A.locals?ae.A.locals:void 0;var le=a(86767),oe=a(48952),se=a(98153),re=a(88253),ce=a(2367),de=a(18768),me={};me.styleTagTransform=D(),me.setAttributes=y(),me.insert=A().bind(null,"head"),me.domAPI=k(),me.insertStyleElement=T(),v()(de.A,me);const pe=de.A&&de.A.locals?de.A.locals:void 0;let ue=function(e){return e.PLAN_COMPLETED="PLAN_COMPLETED",e}({});const fe="bricks/ai-portal/PlanProgress",be=_.i18n.getFixedT(null,fe);function xe(e){let{plan:t,conversationState:a,style:l}=e;const[o,r]=(0,n.useState)(!1),{doneCount:c,state:d,name:p}=(0,n.useMemo)((()=>t.reduce(((e,t)=>"completed"===t.state?{...e,state:t.state,name:t.name,doneCount:e.doneCount+1}:!e.name||t.state?{...e,state:t.state,name:t.name}:e),{doneCount:0,name:"",state:void 0})),[t]),{className:u,icon:f}=(0,n.useMemo)((()=>he(d,a)),[d,a]),b=(0,n.useCallback)((()=>{r((e=>!e))}),[]);if(null==t||!t.length)return null;const x=c===t.length&&"completed"===a;return i().createElement(i().Fragment,null,o&&i().createElement("div",{className:pe.mask,onClick:b}),i().createElement("div",{className:s()(pe.progress,u),style:l},i().createElement("div",{className:pe.bar,onClick:b},i().createElement("div",{className:pe.icon},i().createElement(m.Bj,f)),i().createElement("span",{className:pe.text,title:x?"":p},x?be(ue.PLAN_COMPLETED):p),i().createElement("span",{className:pe.stat},c,"/",t.length),i().createElement(m.Bj,{className:pe.expand,lib:"antd",theme:"outlined",icon:o?"down":"up"})),o&&i().createElement("ul",{className:pe.details},t.map(((e,t)=>i().createElement(ge,{key:t,state:e.state,conversationState:a,name:e.name}))))))}function ge(e){let{state:t,conversationState:a,name:l}=e;const{className:o,icon:r}=(0,n.useMemo)((()=>he(t,a)),[t,a]);return i().createElement("li",{className:s()(pe.step,o)},i().createElement(m.Bj,(0,L.A)({},r,{className:pe.state})),i().createElement("span",{className:pe.name,title:l},l))}function he(e,t){switch(e){case"completed":return{className:pe.completed,icon:{lib:"fa",prefix:"fas",icon:"check"}};case"submitted":case"working":return"terminated"===t?{className:void 0,icon:{lib:"fa",prefix:"far",icon:"circle-stop"}}:{className:pe.working,icon:{lib:"antd",theme:"outlined",icon:"loading-3-quarters",spinning:!0}};case"input-required":return{className:pe["input-required"],icon:{lib:"fa",prefix:"far",icon:"circle-user"}};case"failed":return{className:pe.failed,icon:{lib:"fa",prefix:"fas",icon:"xmark"}};case"canceled":return{className:pe.canceled,icon:{lib:"fa",prefix:"far",icon:"circle-stop"}};default:return{icon:{lib:"fa",prefix:"far",icon:"clock"}}}}(0,_.initializeI18n)(fe,{en:{PLAN_COMPLETED:"All tasks are completed"},zh:{PLAN_COMPLETED:"所有任务已全部完成"}});var ve=a(38717),Ee=a(6671),ke=a(32146);function we(e,t){var a;let{conversationId:o,initialRequest:h,replay:v,replayDelay:E,supports:k,showHumanActions:w,showFeedback:A,showFeedbackAfterFailed:I,showFeedbackOnView:y,showUiSwitch:N,previewUrlTemplate:T,showCases:C,exampleProjects:D,tryItOutUrl:S,aiEmployees:F,commands:U,uploadOptions:j,onShare:P,onTerminate:L,onSubmitFeedback:_,onSwitchToCanvas:z,onFeedbackOnView:B,onDetailChange:M,onSplitChange:W}=e;const{conversation:R,tasks:q,serviceFlows:O,errors:Y,humanInputRef:Q,skipToResults:K,watchAgain:$}=(0,c.u)(o,h,v,E),H=!!R,ee=null!==(a=null==R?void 0:R.title)&&void 0!==a?a:"",ae=null==R?void 0:R.state,ne=x.QB.includes(ae)||"input-required"===ae,de=function(e,t){return(0,n.useMemo)((()=>{const a=[];for(const n of e)for(const e of n.spec)for(const n of e.serviceFlowActivities)if(n.taskId){const e=t.find((e=>e.id===n.taskId));a.push({name:n.name,taskId:n.taskId,state:null==e?void 0:e.state})}else a.push({name:n.name});return a}),[e,t])}(O,q),{flowMap:me,activityMap:pe}=(0,re.o)(O),{messages:ue,jobMap:fe,lastDetail:be}=(0,d.p)(H,null==R?void 0:R.state,q,Y,me,pe,{showHumanActions:w,skipActivitySubTasks:!0});(0,n.useEffect)((()=>{M({projectId:null==R?void 0:R.projectId})}),[M,null==R?void 0:R.projectId]);const ge=(0,n.useMemo)((()=>fe?[...fe.values()].flatMap((e=>e.generatedView?{id:e.id,view:e.generatedView}:[])):[]),[fe]),[he,we]=(0,n.useState)(!1),[Ae,Ie]=(0,n.useState)(!1),[ye,Ne]=(0,n.useState)(!!A);(0,n.useEffect)((()=>{Ne(!!A)}),[A]);const[Te,Ce]=(0,n.useState)(),De=(0,n.useCallback)((e=>{we(!0),_(e)}),[_]);(0,n.useImperativeHandle)(t,(()=>({feedbackSubmitDone:()=>{Ie(!0),setTimeout((()=>{Ne(!1)}),3e3)},feedbackSubmitFailed:()=>{we(!1)},feedbackOnViewDone:e=>{Ce((t=>{const a=new Set(t);return a.add(e),a}))}})),[]);const[Se,Fe]=(0,n.useState)(null),[Ue,je]=(0,n.useState)(null),[Pe,Ge]=(0,n.useState)(null),[Le,_e]=(0,n.useState)(!1),ze=(0,n.useRef)(!1);(0,n.useEffect)((()=>{if(H){const e=setTimeout((()=>{ze.current=!0}),1e3);return()=>{clearTimeout(e)}}}),[H]);const Be=!!h;(0,n.useEffect)((()=>{(ze.current||Be)&&be&&!Le&&je(be)}),[be,Le,Be]),(0,n.useEffect)((()=>{(0,l.getRuntime)().applyPageTitle(ee)}),[ee]);const Me=(0,n.useCallback)(((e,t,a)=>{var n;null===(n=Q.current)||void 0===n||n.call(Q,e,t,a)}),[Q]),We=ue[0],Re="user"===(null==We?void 0:We.role)?We:null,[qe,Oe]=(0,n.useState)(null),Xe=o,[Ve,Je]=(0,n.useState)(null),Ye=(0,n.useMemo)((()=>({conversationId:o,conversationState:ae,tasks:q,errors:Y,workspace:Xe,previewUrlTemplate:T,replay:v,showCases:C,exampleProjects:D,aiEmployees:F,commands:U,uploadOptions:j,humanInput:Me,onShare:P,onTerminate:L,supports:k,activeExpandedViewJobId:Se,setActiveExpandedViewJobId:Fe,activeDetail:Ue,setActiveDetail:je,subActiveDetail:Pe,setSubActiveDetail:Ge,submittingFeedback:he,submittedFeedback:Ae,onSubmitFeedback:De,setShowFeedback:Ne,showFeedbackOnView:y,onFeedbackOnView:B,feedbackDoneViews:Te,skipToResults:K,watchAgain:$,tryItOut(){const e=window.open(`${(0,l.getBasePath)().slice(0,-1)}${null!=S?S:"/elevo"}`,"_blank");e&&(e.__elevo_try_it_out=Re?{content:Re.content,cmd:Re.cmd,mentionedAiEmployeeId:Re.mentionedAiEmployeeId}:{})},activeFile:Ve,setActiveFile:Je,activeImages:qe,setActiveImages:Oe})),[o,ae,q,Y,Xe,T,v,C,D,F,U,j,Me,P,L,k,Se,Ue,Pe,he,Ae,De,y,B,Te,K,$,Re,S,Ve,qe]),Qe=(0,n.useMemo)((()=>({lastDetail:be,setUserClosedAside:_e})),[be]),[Ke,$e]=(0,n.useState)(!1);(0,n.useEffect)((()=>{let e=!1;return Promise.race([(0,r.L)("light-plus"),new Promise((e=>setTimeout(e,5e3)))]).finally((()=>{e||$e(!0)})),()=>{e=!0}}),[]);const He=(0,n.useRef)(null),Ze=(0,n.useRef)(null),{scrollable:et,scrollToBottom:tt}=(0,X.i)(H&&Ke,He,Ze),at=(0,ce.U)(Ue,fe,me,pe),nt=(0,ce.U)(Pe,fe,me,pe);(0,ke.d)(Ye);const it=!(!Ue&&!Pe);return(0,n.useEffect)((()=>{W(it)}),[W,it]),(0,n.useEffect)((()=>{var e;null===(e=He.current)||void 0===e||e.focus()}),[H,Ke]),i().createElement(f.j.Provider,{value:Ye},i().createElement(G.W.Provider,{value:Qe},i().createElement("div",{className:ie.container},i().createElement("div",{className:ie.header},i().createElement("h1",null,ee)),H&&Ke?i().createElement(i().Fragment,null,i().createElement("div",{className:ie.main,tabIndex:-1,ref:He},i().createElement("div",{className:ie.narrow,ref:Ze},ue.map(((e,t,a)=>i().createElement("div",{className:ie.message,key:t},"user"===e.role?i().createElement(p.R,{content:e.content,cmd:e.cmd,mentionedAiEmployeeId:e.mentionedAiEmployeeId,files:e.files}):i().createElement(u.G,{chunks:e.chunks,scopeState:ae,isLatest:t===a.length-1})))),v?(null==R?void 0:R.finished)&&i().createElement(i().Fragment,null,i().createElement(xe,{plan:de,conversationState:ae,style:{marginTop:14}}),i().createElement(se.A,{finished:!0,ui:"chat"})):ye&&("completed"===ae||"failed"===ae&&I)&&q.length>0&&i().createElement(te.k,{className:ie.feedback}))),i().createElement("button",{className:`${V.A["scroll-down"]} ${J.A["floating-button"]}`,hidden:!et,onClick:tt},i().createElement(m.Bj,{lib:"antd",icon:"down"})),(v?null==R||!R.finished:null==k?void 0:k.chat)?i().createElement("div",{className:ie.footer},i().createElement("div",{className:ie.narrow},i().createElement(xe,{plan:de,conversationState:ae}),v?i().createElement(se.A,null):i().createElement(b.s,{state:ae,canChat:ne}))):null):i().createElement("div",{className:ie["loading-icon"]},i().createElement(m.Bj,{lib:"antd",theme:"outlined",icon:"loading-3-quarters",spinning:!0}))),i().createElement("div",{className:s()(ie.aside,{[ie.expanded]:!!at})},at&&i().createElement(Z,{detail:at,faded:!!nt}),nt&&i().createElement(Z,{detail:nt,isSubTask:!0})),Se&&i().createElement(g.f,{views:ge}),N&&i().createElement("div",{className:s()(le.A.toolbar,ie.toolbar)},i().createElement(m.Py,{icon:x.Rq,variant:"mini",title:(0,oe.t)(oe.K.SWITCH_TO_CANVAS),onClick:z})),Ve&&i().createElement(ve.d,{file:Ve}),qe&&i().createElement(Ee.f,{images:qe})))}},76239:(e,t,a)=>{a.d(t,{A:()=>p});var n=a(36758),i=a.n(n),l=a(40935),o=a.n(l),s=a(20062),r=a.n(s),c=new URL(a(32360),a.b),d=o()(i()),m=r()(c);d.push([e.id,`ai-portal\\.chat-stream{display:flex;position:relative;width:100%;height:100%;overflow:hidden;background-color:#f3f3f4;background-image:url(${m});background-size:cover;background-repeat:no-repeat;background-position:center;background-attachment:fixed;color:rgba(0,0,0,0.88);--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}.container--IOwk4fR1{display:flex;flex-direction:column;position:relative;flex:1;min-width:0}.header--O9c4lNA3{height:54px;padding:0 72px;display:flex;align-items:center;justify-content:space-between}.header--O9c4lNA3 h1{font-weight:500;font-size:14px;margin:0;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}.main--KDIjetJs{overflow-y:auto;flex:1;padding:20px 24px}.narrow--xWih9UIb{width:100%;max-width:800px;margin:0 auto}.message--YIXGDQNi + .message--YIXGDQNi{margin-top:40px}.loading-icon--lagcmORP{flex:1;display:flex;align-items:center;justify-content:center;font-size:48px;color:#fff}.footer--aLZ8UWjM{padding:0 20px 24px}.aside--Xjd6To2A{width:0%;height:100%;transition:width 0.2s ease-in-out;position:relative}.expanded--xZgk3uBF{width:50%}.feedback--YbYylTcK{margin:24px auto 0}.toolbar--uiLshJmw{left:20px;bottom:20px}@media (max-width: 1123px){div.toolbar--uiLshJmw{display:none}}`,""]),d.locals={container:"container--IOwk4fR1",header:"header--O9c4lNA3",main:"main--KDIjetJs",narrow:"narrow--xWih9UIb",message:"message--YIXGDQNi","loading-icon":"loading-icon--lagcmORP",footer:"footer--aLZ8UWjM",aside:"aside--Xjd6To2A",expanded:"expanded--xZgk3uBF",feedback:"feedback--YbYylTcK",toolbar:"toolbar--uiLshJmw"};const p=d},83090:(e,t,a)=>{a.d(t,{A:()=>s});var n=a(36758),i=a.n(n),l=a(40935),o=a.n(l)()(i());o.push([e.id,".aside--DDIdDtkt{padding:12px 12px 12px 0;height:100%}.faded--AsNxuT2v{opacity:0.4}.sub--d8EpebQt{position:absolute;top:16px;right:16px;left:-16px;height:calc(100% - 16px)}.box--niuFBiiQ{background:#ffffff;box-shadow:1px 1px 10px 0px rgba(0,10,26,0.1);border-radius:12px;height:100%;display:flex;flex-direction:column}.header--DPl_hrTp{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--HlE9yRcJ{font-weight:500;font-size:16px;color:#262626}.body--OLKz1zeC{flex:1;min-height:0;padding:20px;display:flex;flex-direction:column}.body--OLKz1zeC.scrollable--JydKNhBJ{overflow-y:auto}.app--UanK0TGf{flex:1;min-height:0;background:#ffffff;border-radius:9px;border:1px solid #ccd1de;margin-top:16px;overflow:hidden;display:flex;flex-direction:column}.heading--ngRi_rQ4{background:#e6e9f3;color:#5e6472;padding:5px 14px}.content--I2i0y65v{font-size:12px;flex:1;min-height:0;position:relative}.scroller--mLfznC_I{height:100%;overflow-x:hidden;overflow-y:auto;overflow:hidden auto;padding:10px}.scroller--mLfznC_I.loading--U1GWHEp9{display:flex;align-items:center;justify-content:center}.editor--p_Sqs1os .content--I2i0y65v .code-block--XiUVX7st::part(wrapper){position:static;margin:0}.editor--p_Sqs1os .content--I2i0y65v .code-block--XiUVX7st::part(pre){background:none!important;padding:0;border-radius:0;border:0}",""]),o.locals={aside:"aside--DDIdDtkt",faded:"faded--AsNxuT2v",sub:"sub--d8EpebQt",box:"box--niuFBiiQ",header:"header--DPl_hrTp",title:"title--HlE9yRcJ",body:"body--OLKz1zeC",scrollable:"scrollable--JydKNhBJ",app:"app--UanK0TGf",heading:"heading--ngRi_rQ4",content:"content--I2i0y65v",scroller:"scroller--mLfznC_I",loading:"loading--U1GWHEp9",editor:"editor--p_Sqs1os","code-block":"code-block--XiUVX7st"};const s=o},83685:(e,t,a)=>{a.d(t,{A:()=>s});var n=a(36758),i=a.n(n),l=a(40935),o=a.n(l)()(i());o.push([e.id,".app--qxnx6yuG{border-radius:9px;border:1px solid #ccd1de;flex:1;min-height:0;display:flex;flex-direction:column}.heading--SbCRupnn{border-bottom:1px solid #ccd1de;border-radius:9px 9px 0 0;background-image:radial-gradient(circle at 1px 1px,#ddd 1px,transparent 0px);background-size:25px 25px;background-position:12px;max-height:30%;display:flex;flex-direction:column}.header--LGXNxV5J{display:flex;align-items:center;padding:16px 30px}.status--aqbJGBcl{background:#aeb3bc;border-radius:100px;height:40px;padding:9px 16px;display:flex;align-items:center;gap:8px;font-size:18px;color:#ffffff}.status--aqbJGBcl eo-icon{font-size:22px}.status--aqbJGBcl.paused--U1cc3Ksn{background:#f0a22e}.status--aqbJGBcl.working--f2PYqFo7{background:#4f69ff}.status--aqbJGBcl.completed--Ihiekkve{background:#08bf33}.status--aqbJGBcl.failed--kB8wxIZ0{background:var(--color-error)}.title--IRvB2t7z{font-weight:500;font-size:16px;margin-left:40px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chart--mypbn8pI{padding:8px 22px 18px;overflow:auto;min-height:0}.body--jnk1EIz0{padding:16px 12px 12px;display:flex;flex:1;min-height:0;flex-direction:column;position:relative}.activity-title--hF6stwmT{font-weight:500;font-size:16px;display:flex;align-items:center;gap:6px;margin-bottom:16px}.activity-title--hF6stwmT eo-icon{font-size:20px;color:#8c8c8c}.activity-title--hF6stwmT .paused--U1cc3Ksn{color:#f0a22e}.activity-title--hF6stwmT .working--f2PYqFo7{color:#4f69ff}.activity-title--hF6stwmT .completed--Ihiekkve{color:#08bf33}.activity-title--hF6stwmT .failed--kB8wxIZ0{color:var(--color-error)}.chat--nEzTEXbV{background:rgba(227,228,229,0.4);border:1px solid rgba(0,0,0,0.1);border-radius:8px;padding:16px 20px;flex:1;min-height:0;overflow-y:auto}.messages--vLiwUYSP{width:100%;margin:0 auto}.message--Okzj6NDx + .message--Okzj6NDx{margin-top:40px}",""]),o.locals={app:"app--qxnx6yuG",heading:"heading--SbCRupnn",header:"header--LGXNxV5J",status:"status--aqbJGBcl",paused:"paused--U1cc3Ksn",working:"working--f2PYqFo7",completed:"completed--Ihiekkve",failed:"failed--kB8wxIZ0",title:"title--IRvB2t7z",chart:"chart--mypbn8pI",body:"body--jnk1EIz0","activity-title":"activity-title--hF6stwmT",chat:"chat--nEzTEXbV",messages:"messages--vLiwUYSP",message:"message--Okzj6NDx"};const s=o}}]);
2
- //# sourceMappingURL=778.b1fd7b4c.js.map