@next-bricks/ai-portal 0.70.2 → 0.70.3

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 (135) hide show
  1. package/dist/bricks.json +1 -1
  2. package/dist/chunks/1097.05983e91.js +3 -0
  3. package/dist/chunks/{1097.9e80dcca.js.LICENSE.txt → 1097.05983e91.js.LICENSE.txt} +2 -0
  4. package/dist/chunks/1097.05983e91.js.map +1 -0
  5. package/dist/chunks/{1889.b7766f77.js → 1889.803775eb.js} +2 -2
  6. package/dist/chunks/{1889.b7766f77.js.map → 1889.803775eb.js.map} +1 -1
  7. package/dist/chunks/3171.9d323cbe.js +2 -0
  8. package/dist/chunks/3171.9d323cbe.js.map +1 -0
  9. package/dist/chunks/{3186.f231329a.js → 3186.ca53075a.js} +2 -2
  10. package/dist/chunks/{3186.f231329a.js.map → 3186.ca53075a.js.map} +1 -1
  11. package/dist/chunks/3840.6080d56e.js +3 -0
  12. package/dist/chunks/3840.6080d56e.js.map +1 -0
  13. package/dist/chunks/{4864.bee3bb30.js → 4864.beefe6d5.js} +2 -2
  14. package/dist/chunks/{4864.bee3bb30.js.map → 4864.beefe6d5.js.map} +1 -1
  15. package/dist/chunks/5399.ef4bb3aa.js +2 -0
  16. package/dist/chunks/5399.ef4bb3aa.js.map +1 -0
  17. package/dist/chunks/551.ae5171a6.js +3 -0
  18. package/dist/chunks/551.ae5171a6.js.map +1 -0
  19. package/dist/chunks/5552.53024929.js +2 -0
  20. package/dist/chunks/5552.53024929.js.map +1 -0
  21. package/dist/chunks/6277.c8a6013f.js +2 -0
  22. package/dist/chunks/6277.c8a6013f.js.map +1 -0
  23. package/dist/chunks/6376.c35ff317.js +2 -0
  24. package/dist/chunks/6376.c35ff317.js.map +1 -0
  25. package/dist/chunks/7669.6f177bf2.js +3 -0
  26. package/dist/chunks/7669.6f177bf2.js.map +1 -0
  27. package/dist/chunks/794.214aa08f.js +3 -0
  28. package/dist/chunks/794.214aa08f.js.map +1 -0
  29. package/dist/chunks/948.c96c7036.js +3 -0
  30. package/dist/chunks/948.c96c7036.js.map +1 -0
  31. package/dist/chunks/chat-box.060b8727.js +3 -0
  32. package/dist/chunks/chat-box.060b8727.js.map +1 -0
  33. package/dist/chunks/chat-input.e913e9ed.js +3 -0
  34. package/dist/chunks/chat-input.e913e9ed.js.map +1 -0
  35. package/dist/chunks/{chat-panel.3160f2e8.js → chat-panel.63207d2f.js} +2 -2
  36. package/dist/chunks/chat-panel.63207d2f.js.map +1 -0
  37. package/dist/chunks/elevo-sidebar.dfaaf9d1.js +3 -0
  38. package/dist/chunks/elevo-sidebar.dfaaf9d1.js.map +1 -0
  39. package/dist/chunks/main.5e1b11a5.js +2 -0
  40. package/dist/chunks/main.5e1b11a5.js.map +1 -0
  41. package/dist/chunks/space-chat-guide.b9f77cb5.js +3 -0
  42. package/dist/chunks/space-chat-guide.b9f77cb5.js.map +1 -0
  43. package/dist/chunks/space-workbench.9d48eec0.js +2 -0
  44. package/dist/chunks/{space-workbench.8c064898.js.map → space-workbench.9d48eec0.js.map} +1 -1
  45. package/dist/index.34851313.js +2 -0
  46. package/dist/index.34851313.js.map +1 -0
  47. package/dist/manifest.json +1 -1
  48. package/dist/types.json +1 -1
  49. package/dist-types/action-buttons/i18n.d.ts +1 -1
  50. package/dist-types/activity-timeline/i18n.d.ts +1 -1
  51. package/dist-types/ai-agents/i18n.d.ts +1 -1
  52. package/dist-types/ai-employees/i18n.d.ts +1 -1
  53. package/dist-types/chat-box/i18n.d.ts +1 -1
  54. package/dist-types/chat-input/i18n.d.ts +1 -1
  55. package/dist-types/chat-panel/ChatPanelContent.d.ts +2 -2
  56. package/dist-types/chat-panel/index.d.ts +3 -3
  57. package/dist-types/chat-stream/Aside/FlowApp/i18n.d.ts +1 -1
  58. package/dist-types/chat-stream/i18n.d.ts +1 -1
  59. package/dist-types/cruise-canvas/NodeReplay/i18n.d.ts +1 -1
  60. package/dist-types/cruise-canvas/ToolCallDetail/i18n.d.ts +1 -1
  61. package/dist-types/cruise-canvas/i18n.d.ts +1 -1
  62. package/dist-types/dropdown-select/i18n.d.ts +1 -1
  63. package/dist-types/elevo-sidebar/i18n.d.ts +1 -1
  64. package/dist-types/gantt-chart/i18n.d.ts +1 -1
  65. package/dist-types/goal-card-list/i18n.d.ts +1 -1
  66. package/dist-types/mcp-tools/i18n.d.ts +1 -1
  67. package/dist-types/notice-dropdown/i18n.d.ts +1 -1
  68. package/dist-types/notice-list/i18n.d.ts +1 -1
  69. package/dist-types/preview-container/i18n.d.ts +1 -1
  70. package/dist-types/project-conversations/i18n.d.ts +1 -1
  71. package/dist-types/project-knowledges/i18n.d.ts +1 -1
  72. package/dist-types/shared/ActivityPlan/i18n.d.ts +1 -1
  73. package/dist-types/shared/AskUser/i18n.d.ts +1 -1
  74. package/dist-types/shared/ChatBox/i18n.d.ts +1 -1
  75. package/dist-types/shared/CreatedView/i18n.d.ts +1 -1
  76. package/dist-types/shared/FilePreview/i18n.d.ts +1 -1
  77. package/dist-types/shared/FileUpload/i18n.d.ts +1 -1
  78. package/dist-types/shared/NodeFeedback/i18n.d.ts +1 -1
  79. package/dist-types/show-case/i18n.d.ts +1 -1
  80. package/dist-types/show-cases/i18n.d.ts +1 -1
  81. package/dist-types/space-workbench/chat-panel-welcome/i18n.d.ts +1 -1
  82. package/dist-types/space-workbench/i18n.d.ts +1 -1
  83. package/dist-types/space-workbench/space-chat-guide/i18n.d.ts +1 -1
  84. package/dist-types/stage-flow/i18n.d.ts +1 -1
  85. package/package.json +2 -2
  86. package/dist/chunks/1097.9e80dcca.js +0 -3
  87. package/dist/chunks/1097.9e80dcca.js.map +0 -1
  88. package/dist/chunks/2341.0e70532b.js +0 -2
  89. package/dist/chunks/2341.0e70532b.js.map +0 -1
  90. package/dist/chunks/3171.45ef4669.js +0 -2
  91. package/dist/chunks/3171.45ef4669.js.map +0 -1
  92. package/dist/chunks/3573.7b0bb780.js +0 -3
  93. package/dist/chunks/3573.7b0bb780.js.map +0 -1
  94. package/dist/chunks/4459.dbfa8706.js +0 -3
  95. package/dist/chunks/4459.dbfa8706.js.map +0 -1
  96. package/dist/chunks/4837.570099ad.js +0 -2
  97. package/dist/chunks/4837.570099ad.js.map +0 -1
  98. package/dist/chunks/5399.501fc322.js +0 -2
  99. package/dist/chunks/5399.501fc322.js.map +0 -1
  100. package/dist/chunks/5552.09658542.js +0 -2
  101. package/dist/chunks/5552.09658542.js.map +0 -1
  102. package/dist/chunks/6380.b8610c4b.js +0 -3
  103. package/dist/chunks/6380.b8610c4b.js.map +0 -1
  104. package/dist/chunks/7202.a893b0e6.js +0 -3
  105. package/dist/chunks/7202.a893b0e6.js.map +0 -1
  106. package/dist/chunks/948.e601f18c.js +0 -3
  107. package/dist/chunks/948.e601f18c.js.map +0 -1
  108. package/dist/chunks/9599.02a5e6e3.js +0 -2
  109. package/dist/chunks/9599.02a5e6e3.js.map +0 -1
  110. package/dist/chunks/9848.4b1f38c9.js +0 -3
  111. package/dist/chunks/9848.4b1f38c9.js.LICENSE.txt +0 -1
  112. package/dist/chunks/9848.4b1f38c9.js.map +0 -1
  113. package/dist/chunks/chat-box.1ac7555a.js +0 -3
  114. package/dist/chunks/chat-box.1ac7555a.js.map +0 -1
  115. package/dist/chunks/chat-input.444c80bb.js +0 -3
  116. package/dist/chunks/chat-input.444c80bb.js.map +0 -1
  117. package/dist/chunks/chat-panel.3160f2e8.js.map +0 -1
  118. package/dist/chunks/elevo-sidebar.a197a77f.js +0 -3
  119. package/dist/chunks/elevo-sidebar.a197a77f.js.map +0 -1
  120. package/dist/chunks/main.9d171af9.js +0 -2
  121. package/dist/chunks/main.9d171af9.js.map +0 -1
  122. package/dist/chunks/space-chat-guide.84f4a1e7.js +0 -3
  123. package/dist/chunks/space-chat-guide.84f4a1e7.js.map +0 -1
  124. package/dist/chunks/space-workbench.8c064898.js +0 -2
  125. package/dist/index.94998c36.js +0 -2
  126. package/dist/index.94998c36.js.map +0 -1
  127. /package/dist/chunks/{3573.7b0bb780.js.LICENSE.txt → 3840.6080d56e.js.LICENSE.txt} +0 -0
  128. /package/dist/chunks/{4459.dbfa8706.js.LICENSE.txt → 551.ae5171a6.js.LICENSE.txt} +0 -0
  129. /package/dist/chunks/{7202.a893b0e6.js.LICENSE.txt → 7669.6f177bf2.js.LICENSE.txt} +0 -0
  130. /package/dist/chunks/{6380.b8610c4b.js.LICENSE.txt → 794.214aa08f.js.LICENSE.txt} +0 -0
  131. /package/dist/chunks/{948.e601f18c.js.LICENSE.txt → 948.c96c7036.js.LICENSE.txt} +0 -0
  132. /package/dist/chunks/{chat-box.1ac7555a.js.LICENSE.txt → chat-box.060b8727.js.LICENSE.txt} +0 -0
  133. /package/dist/chunks/{chat-input.444c80bb.js.LICENSE.txt → chat-input.e913e9ed.js.LICENSE.txt} +0 -0
  134. /package/dist/chunks/{elevo-sidebar.a197a77f.js.LICENSE.txt → elevo-sidebar.dfaaf9d1.js.LICENSE.txt} +0 -0
  135. /package/dist/chunks/{space-chat-guide.84f4a1e7.js.LICENSE.txt → space-chat-guide.b9f77cb5.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"chunks/4459.dbfa8706.js","mappings":"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","sources":["webpack:///./node_modules/@next-api-sdk/llm-sdk/dist/esm/api/llm/elevo_space/listServiceFlow.js","webpack:///./node_modules/@next-api-sdk/llm-sdk/dist/esm/api/llm/elevo_object/updateServiceObjectInstance.js","webpack:///./node_modules/@next-api-sdk/llm-sdk/dist/esm/api/llm/elevo_space/listActivityLogs.js","webpack:///./node_modules/@next-api-sdk/llm-sdk/dist/esm/api/llm/elevo_space/createActivityLog.js","webpack:///./src/space-workbench/components/InstDetailManagement/ActivityLogs.module.css?f523","webpack:///./src/space-workbench/components/InstDetailManagement/ActivityLogs.tsx","webpack:///./src/space-workbench/components/InstDetailManagement/InstDetailManagement.module.css?6a2f","webpack:///./src/space-workbench/components/InstDetailManagement/InstDetailManagement.tsx","webpack:///./src/space-workbench/components/BusinessManage.module.css","webpack:///./src/space-workbench/components/InstDetailManagement/InstDetailManagement.module.css","webpack:///./src/space-workbench/components/ActivityDetailModal.module.css","webpack:///./src/space-workbench/components/ActivityCard.module.css?b2b4","webpack:///./src/space-workbench/components/ActivityCard.tsx","webpack:///./src/space-workbench/components/BusinessFlowPreview.module.css?740d","webpack:///./src/space-workbench/components/ActivityDetailModal.module.css?8351","webpack:///./src/space-workbench/components/ActivityDetailModal.tsx","webpack:///./src/space-workbench/components/BusinessFlowPreview.tsx","webpack:///./src/space-workbench/workbenchContext.ts","webpack:///./src/chat-panel/styles.module.css?bf50","webpack:///./src/chat-panel/ChatPanelContent.tsx","webpack:///./src/space-workbench/styles.module.css?0049","webpack:///./src/space-workbench/components/ServiceFlows.module.css?b69c","webpack:///./src/space-workbench/components/ServiceFlows.tsx","webpack:///./src/space-workbench/components/SpaceSidebar.module.css","webpack:///./src/space-workbench/components/HistoryDrawer.module.css","webpack:///./src/space-workbench/components/knowLedgesList.module.css","webpack:///./src/space-workbench/components/EmptyState.module.css?35c2","webpack:///./src/space-workbench/images/empty.svg","webpack:///./src/space-workbench/components/EmptyState.tsx","webpack:///./src/space-workbench/components/BusinessObjectPreview.module.css","webpack:///./node_modules/@next-api-sdk/llm-sdk/dist/esm/api/llm/elevo_object/listServiceObjectInstances.js","webpack:///./node_modules/@next-api-sdk/llm-sdk/dist/esm/api/llm/elevo_object/listServiceObjects.js","webpack:///./src/space-workbench/components/SpaceSidebar.module.css?3c17","webpack:///./src/space-workbench/components/knowLedgesList.module.css?f569","webpack:///./src/space-workbench/components/knowLedgesList.tsx","webpack:///./node_modules/@next-api-sdk/llm-sdk/dist/esm/api/llm/elevo_object/importServiceObjectInstances.js","webpack:///./src/space-workbench/components/AddObjectInstModal/InstanceList.module.css?7ac9","webpack:///./src/space-workbench/components/AddObjectInstModal/InstanceList.tsx","webpack:///./src/space-workbench/components/AddObjectInstModal/AddObjectInstModal.module.css?36e6","webpack:///./src/space-workbench/components/AddObjectInstModal/utils.ts","webpack:///./src/space-workbench/components/AddObjectInstModal/AddObjectInstModal.tsx","webpack:///./src/space-workbench/components/SpaceSidebar.tsx","webpack:///./node_modules/@next-api-sdk/llm-sdk/dist/esm/api/llm/elevo/listElevoConversations.js","webpack:///./src/space-workbench/components/InstDetailManagement/ActivityLogs.module.css","webpack:///./src/space-workbench/bricks.ts","webpack:///./src/space-workbench/components/BusinessInstanceCard.module.css","webpack:///./src/space-workbench/components/SpaceConfigModal/ConfigContext.ts","webpack:///./src/space-workbench/components/SpaceNav.module.css","webpack:///./src/space-workbench/components/AddObjectInstModal/AddObjectInstModal.module.css","webpack:///./src/space-workbench/i18n.ts","webpack:///./src/chat-panel/styles.module.css","webpack:///./src/space-workbench/components/ChatArea/Tabs.module.css","webpack:///./src/space-workbench/components/EmptyState.module.css","webpack:///./src/space-workbench/components/BusinessInstanceCard.module.css?3d69","webpack:///./src/space-workbench/components/BusinessInstanceCard.tsx","webpack:///./src/space-workbench/components/SpaceConfigModal/SpaceConfigModal.module.css","webpack:///./src/space-workbench/components/AddObjectInstModal/InstanceList.module.css","webpack:///./src/space-workbench/components/ActivityCard.module.css","webpack:///./node_modules/@next-api-sdk/llm-sdk/dist/esm/api/llm/elevo_space/getSpaceSchema.js","webpack:///./node_modules/@next-api-sdk/llm-sdk/dist/esm/api/llm/elevo_space/importSpaceSchema.js","webpack:///./src/space-workbench/components/BusinessObjectPreview.module.css?0637","webpack:///./src/space-workbench/components/BusinessObjectPreview.tsx","webpack:///./src/space-workbench/components/ConfigPreview.module.css?5f01","webpack:///./src/space-workbench/components/ConfigPreview.tsx","webpack:///./src/space-workbench/components/BusinessManage.module.css?05cf","webpack:///./src/space-workbench/components/BusinessManage.tsx","webpack:///./src/space-workbench/components/SpaceConfigModal/SpaceConfigModal.module.css?8fd6","webpack:///./src/space-workbench/components/SpaceConfigModal/SpaceConfigModal.tsx","webpack:///./src/space-workbench/components/SpaceConfigModal/utils.ts","webpack:///./src/space-workbench/components/SpaceNav.module.css?4a81","webpack:///./src/space-workbench/components/SpaceNav.tsx","webpack:///../../node_modules/@next-shared/general/dist/esm/JsonStorage.js","webpack:///./src/space-workbench/components/ChatArea/ChatArea.module.css?5d87","webpack:///./src/space-workbench/components/ChatArea/Tabs.module.css?462d","webpack:///./src/space-workbench/components/ChatArea/Tabs.tsx","webpack:///./src/space-workbench/components/HistoryDrawer.module.css?0a51","webpack:///./src/space-workbench/components/HistoryDrawer.tsx","webpack:///./src/space-workbench/components/ChatArea/ChatArea.tsx","webpack:///./src/space-workbench/components/ServiceFlows.module.css","webpack:///./src/space-workbench/components/ConfigPreview.module.css","webpack:///./src/space-workbench/components/ChatArea/ChatArea.module.css","webpack:///./src/space-workbench/styles.module.css","webpack:///./src/space-workbench/components/BusinessFlowPreview.module.css"],"sourcesContent":["import { http } from \"@next-core/http\";\n/**\n * @description 查询协作空间业务流列表\n * @endpoint GET /api/v1/elevo/spaces/:spaceId/service-flows\n */\nexport const ElevoSpaceApi_listServiceFlow = async (spaceId, params, options) => /**! @contract easyops.api.llm.elevo_space.ListServiceFlow@1.0.0 */(await http.get(`api/gateway/logic.llm.aiops_service/api/v1/elevo/spaces/${spaceId}/service-flows`, {\n ...options,\n params\n})).data;\n//# sourceMappingURL=listServiceFlow.js.map","import { http } from \"@next-core/http\";\n/**\n * @description 更新服务对象实例\n * @endpoint PUT /api/v1/elevo/objects/:objectId/instances/:instanceId\n */\nexport const ElevoObjectApi_updateServiceObjectInstance = (objectId, instanceId, data, options) => /**! @contract easyops.api.llm.elevo_object.UpdateServiceObjectInstance@1.0.0 */http.put(`api/gateway/logic.llm.aiops_service/api/v1/elevo/objects/${objectId}/instances/${instanceId}`, data, options);\n//# sourceMappingURL=updateServiceObjectInstance.js.map","import { http } from \"@next-core/http\";\n/**\n * @description 查询活动记录列表\n * @endpoint GET /api/v1/elevo/spaces/:spaceId/activities\n */\nexport const ElevoSpaceApi_listActivityLogs = async (spaceId, params, options) => /**! @contract easyops.api.llm.elevo_space.ListActivityLogs@1.0.0 */(await http.get(`api/gateway/logic.llm.aiops_service/api/v1/elevo/spaces/${spaceId}/activities`, {\n ...options,\n params\n})).data;\n//# sourceMappingURL=listActivityLogs.js.map","import { http } from \"@next-core/http\";\n/**\n * @description 创建活动记录\n * @endpoint POST /api/v1/elevo/spaces/:spaceId/activities\n */\nexport const ElevoSpaceApi_createActivityLog = async (spaceId, data, options) => /**! @contract easyops.api.llm.elevo_space.CreateActivityLog@1.0.0 */(await http.post(`api/gateway/logic.llm.aiops_service/api/v1/elevo/spaces/${spaceId}/activities`, data, options)).data;\n//# sourceMappingURL=createActivityLog.js.map","\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]!./ActivityLogs.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]!./ActivityLogs.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useState, useEffect, useCallback, useRef } from \"react\";\nimport { handleHttpError } from \"@next-core/runtime\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport { humanizeTime, HumanizeTimeFormat } from \"@next-shared/datetime\";\nimport {\n ElevoSpaceApi_listActivityLogs,\n ElevoSpaceApi_createActivityLog,\n} from \"@next-api-sdk/llm-sdk\";\nimport { WrappedTextarea, WrappedIcon } from \"../../bricks\";\nimport { EmptyState } from \"../EmptyState\";\nimport type { RequestStore } from \"../../../shared/interfaces\";\nimport { K, t } from \"../../i18n\";\nimport styles from \"./ActivityLogs.module.css\";\n\nexport interface ActivityLogsProps {\n objectId: string;\n objectInstanceId: string;\n spaceId: string;\n onLinkConversation: (initialRequest: RequestStore) => void;\n}\n\ninterface ActivityLog {\n activityId: string;\n spaceId: string;\n objectId: string;\n objectInstanceId: string;\n conversationId: string;\n actionType:\n | \"create_instance\"\n | \"edit_instance\"\n | \"comment\"\n | \"start_conversation\"\n | \"status_change\";\n userName: string;\n payload: Record<string, any>;\n createTime: number;\n}\n\nexport function ActivityLogs({\n objectId,\n objectInstanceId,\n spaceId,\n onLinkConversation,\n}: ActivityLogsProps) {\n const [activities, setActivities] = useState<ActivityLog[]>([]);\n const [loading, setLoading] = useState(true);\n const [totalCount, setTotalCount] = useState(0);\n const [submitDisabled, setSubmitDisabled] = useState(false);\n const [commentValue, setCommentValue] = useState(\"\");\n\n const listContainerRef = useRef<HTMLDivElement>(null);\n const isSubmittingCommentRef = useRef(false);\n\n const fetchActivities = useCallback(async () => {\n setLoading(true);\n try {\n const res = await ElevoSpaceApi_listActivityLogs(spaceId, {\n objectId,\n objectInstanceId,\n limit: 200,\n });\n setActivities((res.list || []) as ActivityLog[]);\n setTotalCount(res.list?.length || 0);\n } catch (error) {\n handleHttpError(error);\n } finally {\n setLoading(false);\n }\n }, [spaceId, objectId, objectInstanceId]);\n\n useEffect(() => {\n fetchActivities();\n }, [fetchActivities]);\n\n useEffect(() => {\n if (isSubmittingCommentRef.current && listContainerRef.current) {\n listContainerRef.current.scrollTop = 0;\n isSubmittingCommentRef.current = false;\n }\n }, [activities]);\n\n const handleCommentSubmit = useCallback(async () => {\n if (!commentValue.trim()) {\n return;\n }\n\n setSubmitDisabled(true);\n isSubmittingCommentRef.current = true;\n try {\n const authInfo = auth.getAuth();\n const username = authInfo.username || \"Anonymous\";\n await ElevoSpaceApi_createActivityLog(spaceId, {\n objectId,\n objectInstanceId,\n actionType: \"comment\",\n userName: username,\n payload: { content: commentValue },\n });\n\n // 清空输入框\n setCommentValue(\"\");\n // 刷新列表\n await fetchActivities();\n } catch (error) {\n isSubmittingCommentRef.current = false;\n handleHttpError(error);\n } finally {\n setSubmitDisabled(false);\n }\n }, [spaceId, objectId, objectInstanceId, commentValue, fetchActivities]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleCommentSubmit();\n }\n },\n [handleCommentSubmit]\n );\n\n const formatTime = (timestamp: number): string => {\n const result = humanizeTime(timestamp * 1000, HumanizeTimeFormat.relative);\n return result || \"\";\n };\n\n const formatActivityText = (\n activity: ActivityLog\n ): { title: string; description: string; time: string } => {\n const { actionType, userName, payload } = activity;\n const time = formatTime(activity.createTime);\n\n switch (actionType) {\n case \"create_instance\":\n return {\n title: t(K.CREATED_INSTANCE),\n description: `${userName} ${t(K.CREATED_INSTANCE)}`,\n time,\n };\n\n case \"edit_instance\": {\n // 提取所有变更的字段名\n const changedFields = Object.keys(payload?.new || {});\n const fieldNames = changedFields.join(\",\");\n return {\n title: t(K.EDITED_INSTANCE),\n description: `${userName} ${t(K.EDITED_INSTANCE)}${fieldNames ? `-${fieldNames}` : \"\"}`,\n time,\n };\n }\n\n case \"comment\":\n return {\n title: t(K.COMMENTED),\n description: `${userName} ${t(K.COMMENTED)}: ${payload?.content || \"\"}`,\n time,\n };\n\n case \"start_conversation\":\n return {\n title: t(K.STARTED_CONVERSATION),\n description: `${userName} ${t(K.STARTED_CONVERSATION)}: ${payload?.title || \"\"}`,\n time,\n };\n\n case \"status_change\":\n return {\n title: t(K.STATUS_CHANGED),\n description: `${payload.conversationTitle || t(K.CONVERSATION)} ${t(K.CHANGED_STATUS_TO)}${payload.status || \"\"}`,\n time,\n };\n\n default:\n return { title: \"\", description: \"\", time: \"\" };\n }\n };\n\n const handleCardClick = (activity: ActivityLog) => {\n if (\n activity.actionType === \"start_conversation\" &&\n activity.conversationId\n ) {\n // 传递一个只有 conversationId 的对象,不包含 content\n // 这会让 ChatArea 以 null 作为 initialRequest,触发 resume 模式加载历史记录\n onLinkConversation({\n conversationId: activity.conversationId,\n } as RequestStore);\n }\n };\n\n const isClickable = (activity: ActivityLog): boolean => {\n return activity.actionType === \"start_conversation\";\n };\n\n const getIconType = (activity: ActivityLog): \"info\" | \"conversation\" => {\n return activity.actionType === \"start_conversation\"\n ? \"conversation\"\n : \"info\";\n };\n\n return (\n <div className={styles.container}>\n {/* 标题和计数 */}\n <div className={styles.header}>\n <h3 className={styles.title}>{t(K.ACTIVITY_RECORD)}</h3>\n {totalCount > 0 && (\n <span className={styles.countBadge}>{totalCount}</span>\n )}\n </div>\n\n {/* 活动记录列表 */}\n {loading ? (\n <div className={styles.loadingState}>{t(K.LOADING)}</div>\n ) : activities.length === 0 ? (\n <EmptyState className={styles.empty} title={t(K.NO_ACTIVITY_RECORD)} />\n ) : (\n <div className={styles.listContainer} ref={listContainerRef}>\n {activities.map((activity) => {\n const clickable = isClickable(activity);\n const iconType = getIconType(activity);\n const { title, description, time } = formatActivityText(activity);\n\n return (\n <div\n key={activity.activityId}\n className={`${styles.activityCard} ${\n clickable ? styles.clickable : styles.disabled\n }`}\n onClick={() => clickable && handleCardClick(activity)}\n >\n {/* 图标 */}\n <div className={`${styles.iconWrapper} ${styles[iconType]}`}>\n <WrappedIcon\n lib=\"lucide\"\n icon={\n iconType === \"conversation\" ? \"message-square\" : \"info\"\n }\n style={{ fontSize: \"18px\" }}\n />\n </div>\n\n {/* 内容 */}\n <div className={styles.content}>\n <div className={styles.titleRow}>\n <div className={styles.activityTitle}>{title}</div>\n <div className={styles.timeText}>{time}</div>\n </div>\n <div className={styles.activityDesc} title={description}>\n {description}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n\n {/* 评论输入框 */}\n <div className={styles.footer}>\n <WrappedTextarea\n themeVariant=\"elevo\"\n placeholder={t(K.ADD_COMMENT_PLACEHOLDER)}\n value={commentValue}\n disabled={submitDisabled}\n autoSize={{ minRows: 1, maxRows: 4 }}\n onValueChange={(e: CustomEvent<string>) => setCommentValue(e.detail)}\n onKeyDown={(e) =>\n handleKeyDown(\n e as unknown as React.KeyboardEvent<HTMLTextAreaElement>\n )\n }\n />\n </div>\n </div>\n );\n}\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./InstDetailManagement.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]!./InstDetailManagement.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useCallback, useContext, useState, useMemo } from \"react\";\nimport { ElevoObjectApi_updateServiceObjectInstance } from \"@next-api-sdk/llm-sdk\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type {\n ChatInput,\n ChatInputMapEvents,\n ChatInputEvents,\n ChatInputProps,\n} from \"../../../chat-input\";\nimport { http } from \"@next-core/http\";\nimport { handleHttpError } from \"@next-core/runtime\";\nimport { BusinessInstance, BusinessObject } from \"../../interfaces\";\nimport { InstFieldsView } from \"../BusinessInstanceCard\";\nimport { K, t } from \"../../i18n\";\nimport { WorkbenchContext } from \"../../workbenchContext\";\nimport type {\n ChatPayload,\n FileInfo,\n RequestStore,\n} from \"../../../shared/interfaces\";\nimport { ActivityLogs } from \"./ActivityLogs\";\nimport { FilePreview } from \"../../../shared/FilePreview/FilePreview.js\";\nimport {\n TaskContext,\n type TaskContextValue,\n} from \"../../../shared/TaskContext\";\n\nimport styles from \"./InstDetailManagement.module.css\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst 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 interface InstDetailManagementProps {\n instance: BusinessInstance;\n businessObject: BusinessObject;\n onClose: () => void;\n onNewConversation: (initialRequest: RequestStore) => void;\n onInstanceUpdate?: (updatedInstance: BusinessInstance) => void;\n}\n\nexport function InstDetailManagement({\n instance,\n businessObject,\n onClose,\n onNewConversation,\n onInstanceUpdate,\n}: InstDetailManagementProps) {\n const { uploadOptions, spaceDetail } = useContext(WorkbenchContext);\n const [submitDisabled, setSubmitDisabled] = useState(false);\n const [activeFile, setActiveFile] = useState<FileInfo | null>(null);\n\n const taskContextValue = useMemo(\n () =>\n ({\n setActiveFile,\n }) as unknown as TaskContextValue,\n []\n );\n\n const handleChatSubmit = useCallback(\n async (e: CustomEvent<ChatPayload>) => {\n setSubmitDisabled(true);\n try {\n const res = await http.post<{\n data: { conversationId: string };\n }>(\n \"api/gateway/logic.llm.aiops_service/api/v1/elevo/conversations\",\n {}\n );\n const newConversationId = res.data.conversationId;\n\n const requestPayload = {\n ...e.detail,\n agentId: \"elevo-service_object_instance_manager\",\n cmd: {\n type: \"serviceObjectInstance-createOrEdit\",\n payload: {\n spaceInstanceId: spaceDetail.instanceId,\n serviceObjectId: businessObject.objectId,\n instanceId: instance.instanceId,\n },\n },\n conversationId: newConversationId,\n } as RequestStore;\n\n // 触发新建 tab 并跳回 ChatArea\n onNewConversation(requestPayload);\n } catch (e) {\n handleHttpError(e);\n } finally {\n setSubmitDisabled(false);\n }\n },\n [\n businessObject.objectId,\n instance.instanceId,\n onNewConversation,\n spaceDetail.instanceId,\n ]\n );\n\n const handleAttrChange = useCallback(\n async (attrId: string, value: any) => {\n try {\n // 调用更新接口\n await ElevoObjectApi_updateServiceObjectInstance(\n businessObject.objectId,\n instance.instanceId,\n {\n data: {\n [attrId]: value,\n },\n } as any\n );\n\n // 更新成功后,创建更新后的实例对象并通知父组件\n const updatedInstance = {\n ...instance,\n [attrId]: value,\n };\n onInstanceUpdate?.(updatedInstance);\n } catch (error) {\n handleHttpError(error);\n }\n },\n [businessObject.objectId, instance, onInstanceUpdate]\n );\n\n const handleFileClick = useCallback((file: FileInfo) => {\n setActiveFile(file);\n }, []);\n\n return (\n <TaskContext.Provider value={taskContextValue}>\n <div className={styles.instanceDetailContainer}>\n {/* 头部区域 */}\n <div className={styles.instanceDetailHeader}>\n <h2 className={styles.instanceDetailTitle}>\n {businessObject.objectName}\n </h2>\n <button className={styles.closeButton} onClick={onClose}>\n <WrappedIcon lib=\"lucide\" icon=\"x\" />\n </button>\n </div>\n\n {/* 主体内容区域 */}\n <div className={styles.instanceDetailBody}>\n {/* 左侧: 实例详细字段信息 (70%) */}\n <div className={styles.instanceDetailLeft}>\n {/* 实例详情内容区域 - 可滚动 */}\n <div className={styles.instanceDetailLeftWrapper}>\n <div className={styles.instanceDetailContent}>\n <InstFieldsView\n instance={instance}\n attrs={businessObject.attributes || []}\n onAttrChange={handleAttrChange}\n onFileClick={handleFileClick}\n />\n </div>\n {/* 底部: 会话区域 - 固定在底部 */}\n <div className={styles.instanceDetailFooter}>\n <WrappedChatInput\n placeholder={t(K.INSTANCE_DETAIL_CHAT_PLACEHOLDER)}\n uploadOptions={uploadOptions}\n submitDisabled={submitDisabled}\n onChatSubmit={handleChatSubmit}\n />\n </div>\n </div>\n </div>\n\n {/* 右侧: 活动记录 (30%) */}\n <div className={styles.instanceDetailRight}>\n <ActivityLogs\n objectId={businessObject.objectId}\n objectInstanceId={instance.instanceId}\n spaceId={spaceDetail.instanceId}\n onLinkConversation={onNewConversation}\n />\n </div>\n </div>\n {activeFile && <FilePreview file={activeFile} />}\n </div>\n </TaskContext.Provider>\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, `.configListArea--cBQRLBI0{flex:0 0 260px;display:flex;flex-direction:column;background:rgba(184,187,205,0.15);box-shadow:1px 0 0 0 rgba(0,0,0,0.1);overflow:hidden}.configListTabs--r_ahrPl7{display:flex;padding:4px;background:rgba(0,0,0,0.02);border-radius:20px;margin:12px;gap:4px}.configListTab--hjD1AsUa{flex:1;padding:6px 12px;font-size:13px;color:rgba(0,0,0,0.65);background:transparent;border:none;border-radius:16px;cursor:pointer;transition:all 0.2s;font-weight:400;white-space:nowrap}.configListTab--hjD1AsUa:hover{color:#1d2129}.configListTab--hjD1AsUa.active--nMH4WLqM{background:#fff;color:#2540ff;font-weight:500;box-shadow:0 1px 2px rgba(0,0,0,0.08)}.cardList--T9oth7lT{flex:1;overflow-y:auto;padding:0 12px 12px;display:flex;flex-direction:column;gap:8px}.cardItem--zz0EMkNV{padding:12px;background:#fff;border:1px solid rgba(0,0,0,0.08);border-radius:8px;cursor:pointer;transition:all 0.2s}.cardItem--zz0EMkNV:hover{border-color:#a1b5ff;box-shadow:0 2px 6px rgba(37,64,255,0.1)}.cardItem--zz0EMkNV.active--nMH4WLqM{border-color:#2540ff;background:rgba(37,64,255,0.02)}.cardItemName--wsNGYzF9{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;color:rgba(0,0,0,0.85);margin-bottom:4px}.cardItemDesc--T678qa1w{font-size:12px;color:rgba(0,0,0,0.45);line-height:1.4;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.configPreviewArea--JSSCXMJ_{flex:1;min-width:0;background:rgba(184,187,205,0.15);overflow:hidden;display:flex;flex-direction:column}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"configListArea\": `configListArea--cBQRLBI0`,\n\t\"configListTabs\": `configListTabs--r_ahrPl7`,\n\t\"configListTab\": `configListTab--hjD1AsUa`,\n\t\"active\": `active--nMH4WLqM`,\n\t\"cardList\": `cardList--T9oth7lT`,\n\t\"cardItem\": `cardItem--zz0EMkNV`,\n\t\"cardItemName\": `cardItemName--wsNGYzF9`,\n\t\"cardItemDesc\": `cardItemDesc--T678qa1w`,\n\t\"configPreviewArea\": `configPreviewArea--JSSCXMJ_`\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, `.instanceDetailContainer--glV_Uq7z{display:flex;flex-direction:column;height:100%;width:100%;background-color:#fff;border-radius:16px}.instanceDetailHeader--VksGr0PJ{display:flex;justify-content:space-between;align-items:center;padding:9px 16px;flex-shrink:0;border-bottom:1px solid #dadadd}.instanceDetailTitle--zbguNp_x{margin:0;font-size:16px;font-weight:500;color:rgba(0,0,0,0.65)}.closeButton--ph07Px8Y{display:flex;align-items:center;justify-content:center;width:32px;height:32px;font-size:16px;border:none;background:transparent;cursor:pointer;border-radius:4px;color:#595959;transition:all 0.2s}.closeButton--ph07Px8Y:hover{color:rgba(0,0,0,0.85)}.instanceDetailBody--uFNFAgDa{display:flex;flex:1;overflow:hidden;min-height:0}.instanceDetailLeft--WpEgagvw{flex:0 0 70%;display:flex;flex-direction:column;overflow:hidden;min-height:0;background:rgba(184,187,205,0.15);border-bottom-left-radius:16px}.instanceDetailLeftWrapper--Y_sMuFsp{flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0;margin:30px;border-radius:12px;background:#fff;border:1px solid rgba(0,0,0,0.15)}.instanceDetailContent--yVsVpGkI{flex:1;overflow-y:auto;min-height:0}.fieldsView--z5eHFdgV{flex:1;overflow-y:auto;min-height:0}.instanceDetailFooter--vmLjbYYy{flex-shrink:0;padding:12px;border-top:1px solid #dadadd;display:flex;align-items:flex-end}.instanceDetailFooter--vmLjbYYy > *{width:100%}.instanceDetailRight--JnQ3yRUs{flex:0 0 30%;overflow:hidden;display:flex;flex-direction:column;border-left:1px solid #dadadd}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"instanceDetailContainer\": `instanceDetailContainer--glV_Uq7z`,\n\t\"instanceDetailHeader\": `instanceDetailHeader--VksGr0PJ`,\n\t\"instanceDetailTitle\": `instanceDetailTitle--zbguNp_x`,\n\t\"closeButton\": `closeButton--ph07Px8Y`,\n\t\"instanceDetailBody\": `instanceDetailBody--uFNFAgDa`,\n\t\"instanceDetailLeft\": `instanceDetailLeft--WpEgagvw`,\n\t\"instanceDetailLeftWrapper\": `instanceDetailLeftWrapper--Y_sMuFsp`,\n\t\"instanceDetailContent\": `instanceDetailContent--yVsVpGkI`,\n\t\"fieldsView\": `fieldsView--z5eHFdgV`,\n\t\"instanceDetailFooter\": `instanceDetailFooter--vmLjbYYy`,\n\t\"instanceDetailRight\": `instanceDetailRight--JnQ3yRUs`\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, `.content--OPWgCa1W{display:flex;flex-direction:column;gap:28px;padding:24px}.section--UC5jTEp5{display:flex;flex-direction:column;gap:12px}.sectionTitle--wDWNfvWy{font-size:16px;font-weight:600;color:rgba(0,0,0,0.85);line-height:24px}.descriptionContent--Z424tU5l{font-size:14px;color:rgba(0,0,0,0.85);line-height:24px;padding:12px;border:1px dashed rgba(0,0,0,0.15);border-radius:8px}.select--WRTs5uAH{width:100%}.hitlRuleItem--iIE0sfBi{padding:12px;background-color:#fffbe6;border-radius:8px;font-size:14px;font-weight:500;color:#d48806;line-height:24px}.emptyDescription--ZPVpkQJk{font-size:14px;color:rgba(0,0,0,0.5);line-height:24px;text-align:center}.readOnlyDisplay--GZwrrrx7{display:flex;align-items:center;gap:8px;padding:8px 4px}.readOnlyIcon--ZsfgXuYV{font-size:28px;color:#1890ff}.readOnlyText--E5bEKxnw{font-size:14px;color:rgba(0,0,0,0.65);line-height:22px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"content\": `content--OPWgCa1W`,\n\t\"section\": `section--UC5jTEp5`,\n\t\"sectionTitle\": `sectionTitle--wDWNfvWy`,\n\t\"descriptionContent\": `descriptionContent--Z424tU5l`,\n\t\"select\": `select--WRTs5uAH`,\n\t\"hitlRuleItem\": `hitlRuleItem--iIE0sfBi`,\n\t\"emptyDescription\": `emptyDescription--ZPVpkQJk`,\n\t\"readOnlyDisplay\": `readOnlyDisplay--GZwrrrx7`,\n\t\"readOnlyIcon\": `readOnlyIcon--ZsfgXuYV`,\n\t\"readOnlyText\": `readOnlyText--E5bEKxnw`\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]!./ActivityCard.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]!./ActivityCard.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport styles from \"./ActivityCard.module.css\";\n\nexport interface ActivityCardProps {\n title: string;\n description: string;\n assignee?: string;\n active?: boolean;\n onClick?: () => void;\n}\n\n/**\n * 活动卡片组件\n * 参考设计图: node-id=125-2527\n * 展示活动名称、描述和负责人标签\n */\nexport function ActivityCard({\n title,\n description,\n assignee,\n active = false,\n onClick,\n}: ActivityCardProps): React.ReactElement {\n return (\n <div\n className={classNames(styles.activityCard, {\n [styles.activityCardActive]: active,\n })}\n onClick={onClick}\n >\n <div className={styles.activityContent}>\n <div\n className={classNames(styles.activityName, {\n [styles.activityNameActive]: active,\n })}\n title={title}\n >\n {title}\n </div>\n <div className={styles.activityDescription} title={description}>\n {description}\n </div>\n </div>\n {assignee && <div className={styles.activityAssignee}>{assignee}</div>}\n </div>\n );\n}\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./BusinessFlowPreview.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]!./BusinessFlowPreview.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./ActivityDetailModal.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]!./ActivityDetailModal.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useState, useEffect, useMemo } from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { handleHttpError } from \"@next-core/runtime\";\nimport {\n ElevoApi_listElevoAiEmployees,\n ElevoApi_ListElevoAiEmployeesResponseItem,\n} from \"@next-api-sdk/llm-sdk\";\n\nimport type {\n Modal,\n ModalProps,\n ModalEvents,\n ModalMapEvents,\n} from \"@next-bricks/containers/modal\";\nimport {\n EoUserOrUserGroupSelect,\n EoUserOrUserGroupSelectProps,\n} from \"@next-bricks/form-platform/user-or-user-group-select\";\nimport { Select, SelectProps } from \"@next-bricks/form/select\";\nimport {\n MarkdownDisplay,\n MarkdownDisplayProps,\n} from \"@next-bricks/markdown/markdown-display\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type {\n EoEasyopsAvatar,\n EoEasyopsAvatarProps,\n} from \"@next-bricks/basic/easyops-avatar\";\nimport type { Activity } from \"../interfaces.js\";\nimport styles from \"./ActivityDetailModal.module.css\";\nimport { K, t } from \"../i18n.js\";\n\nconst WrappedModal = wrapBrick<\n Modal,\n ModalProps & { noFooter?: boolean },\n ModalEvents,\n ModalMapEvents\n>(\"eo-modal\", {\n onClose: \"close\",\n onConfirm: \"confirm\",\n onCancel: \"cancel\",\n onOpen: \"open\",\n});\n\ninterface EoUserOrUserGroupSelectEvents {\n change: CustomEvent<string>;\n}\n\ninterface EoUserOrUserGroupSelectMapEvents {\n onValueChange: \"change\";\n}\n\nconst WrappedUserOrUserGroupSelect = wrapBrick<\n EoUserOrUserGroupSelect,\n EoUserOrUserGroupSelectProps,\n EoUserOrUserGroupSelectEvents,\n EoUserOrUserGroupSelectMapEvents\n>(\"eo-user-or-user-group-select\", {\n onValueChange: \"change\",\n});\n\ninterface SelectEvents {\n change: CustomEvent<string>;\n}\n\ninterface SelectMapEvents {\n onValueChange: \"change\";\n}\n\nconst WrappedSelect = wrapBrick<\n Select,\n SelectProps,\n SelectEvents,\n SelectMapEvents\n>(\"eo-select\", {\n onValueChange: \"change\",\n});\n\n// 使用 any 类型来包装 eo-markdown-display,因为没有明确的类型定义\nconst WrappedMarkdownDisplay = wrapBrick<MarkdownDisplay, MarkdownDisplayProps>(\n \"eo-markdown-display\"\n);\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst WrappedEasyopsAvatar = wrapBrick<EoEasyopsAvatar, EoEasyopsAvatarProps>(\n \"eo-easyops-avatar\"\n);\n\nexport interface ActivityDetailModalProps {\n activity: Activity | null;\n visible: boolean;\n onClose: () => void;\n onChange?: (updates: Activity) => void;\n onlyRead?: boolean;\n}\n\n/**\n * 活动详情模态框组件\n * 展示活动的完整定义信息,部分字段可编辑(负责数字人、HITL介入用户)\n */\nexport function ActivityDetailModal({\n activity: _activity,\n visible,\n onClose,\n onChange,\n onlyRead = false,\n}: ActivityDetailModalProps): React.ReactElement | null {\n const [aiEmployees, setAiEmployees] = useState<\n ElevoApi_ListElevoAiEmployeesResponseItem[]\n >([]);\n const [activity, setActivity] = useState<Activity | null>(_activity);\n\n // 计算数字人名称\n const aiEmployeeName = useMemo(() => {\n if (!activity?.aiEmployeeId) return \"\";\n const employee = aiEmployees.find(\n (emp) => emp.employeeId === activity.aiEmployeeId\n );\n return employee?.name ?? \"\";\n }, [activity?.aiEmployeeId, aiEmployees]);\n\n // 获取数字人列表\n useEffect(() => {\n if (!visible) return;\n\n const fetchAssignees = async () => {\n try {\n // 调用实际的 API 获取数字人列表\n const employeesData = await ElevoApi_listElevoAiEmployees({\n page: 1,\n page_size: 100,\n });\n const options = employeesData.list.filter((item) => item.employeeId);\n setAiEmployees(options);\n } catch (error) {\n handleHttpError(error);\n }\n };\n\n fetchAssignees();\n }, [visible]);\n\n // 当 activity 变化时,更新选中的值\n useEffect(() => {\n setActivity(_activity);\n }, [_activity]);\n\n // 处理负责数字人变更\n const handleAssigneeChange = (event: CustomEvent) => {\n const value = event.detail.value;\n const newActivity = { ...activity, aiEmployeeId: value } as Activity;\n setActivity(newActivity);\n onChange?.(newActivity);\n };\n\n // 处理 HITL 用户变更\n const handleUserChange = (event: CustomEvent) => {\n const value = event.detail[0];\n const newActivity = { ...activity, hilUser: value } as Activity;\n setActivity(newActivity);\n onChange?.(newActivity);\n };\n\n if (!activity) return null;\n\n return (\n <WrappedModal\n modalTitle={activity.name}\n width={700}\n visible={visible}\n onCancel={onClose}\n onClose={onClose}\n noFooter\n maskClosable\n >\n <div className={styles.content}>\n {/* 活动描述区域 */}\n <div className={styles.section}>\n <div className={styles.sectionTitle}>{t(K.ACTIVITY_DESCRIPTION)}</div>\n <div className={styles.descriptionContent}>\n {activity.description ? (\n <WrappedMarkdownDisplay content={activity.description} />\n ) : (\n <div className={styles.emptyDescription}>\n {t(K.NO_DESCRIPTION)}\n </div>\n )}\n </div>\n </div>\n\n {/* 负责数字人 */}\n <div className={styles.section}>\n <div className={styles.sectionTitle}>\n {t(K.RESPONSIBLE_AI_EMPLOYEE)}\n </div>\n {onlyRead ? (\n <div className={styles.readOnlyDisplay}>\n <WrappedIcon\n lib=\"easyops\"\n category=\"image\"\n icon=\"employee-avatar-3-png\"\n className={styles.readOnlyIcon}\n />\n <span className={styles.readOnlyText}>\n {aiEmployeeName || t(K.NOT_SET)}\n </span>\n </div>\n ) : (\n <WrappedSelect\n value={activity.aiEmployeeId}\n themeVariant=\"elevo\"\n options={\n aiEmployees?.map((item) => ({\n label: item.name as string,\n value: item.employeeId as string,\n })) ?? []\n }\n placeholder={t(K.SELECT_AI_EMPLOYEE_PLACEHOLDER)}\n onValueChange={handleAssigneeChange}\n className={styles.select}\n />\n )}\n </div>\n\n {/* HITL 规则 */}\n {activity.hilRules && (\n <div className={styles.section}>\n <div className={styles.sectionTitle}>{t(K.HITL_RULES)}</div>\n <div className={styles.hitlRuleItem}>{activity.hilRules}</div>\n </div>\n )}\n\n {/* HITL 介入用户 */}\n <div className={styles.section}>\n <div className={styles.sectionTitle}>\n {t(K.HITL_INTERVENTION_USER)}\n </div>\n {onlyRead ? (\n <div className={styles.readOnlyDisplay}>\n {activity.hilUser ? (\n <WrappedEasyopsAvatar\n nameOrInstanceId={activity.hilUser}\n showName\n size=\"xs\"\n />\n ) : (\n <span className={styles.readOnlyText}>{t(K.NOT_SET)}</span>\n )}\n </div>\n ) : (\n <WrappedUserOrUserGroupSelect\n value={[activity.hilUser ?? \"\"]}\n placeholder={t(K.SELECT_HITL_USER_PLACEHOLDER)}\n optionsMode=\"user\"\n userKey=\"name\"\n isMultiple={false}\n themeVariant=\"elevo\"\n onValueChange={handleUserChange}\n />\n )}\n </div>\n </div>\n </WrappedModal>\n );\n}\n","import React, { useState, useContext, useRef } from \"react\";\n\nimport { ActivityCard } from \"./ActivityCard\";\nimport { WrappedIcon } from \"../../shared/bricks\";\nimport styles from \"./BusinessFlowPreview.module.css\";\nimport { BusinessFlow, Activity, ViewType } from \"../interfaces\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n MarkdownDisplayProps,\n MarkdownDisplay,\n} from \"@next-bricks/markdown/markdown-display\";\nimport { ActivityDetailModal } from \"./ActivityDetailModal\";\nimport { ConfigContext } from \"./SpaceConfigModal/ConfigContext\";\nimport { K, t } from \"../i18n.js\";\n\nconst WrappedMarkdownDisplay = wrapBrick<MarkdownDisplay, MarkdownDisplayProps>(\n \"eo-markdown-display\"\n);\n\nexport interface BusinessFlowPreviewProps {\n data?: BusinessFlow;\n viewType?: ViewType;\n onActivityClick?: (activity: Activity) => void;\n activityOnlyRead?: boolean;\n}\n\n/**\n * 业务流预览组件\n * 参考设计图: node-id=125-2527\n * 展示业务流的标题、先决条件和按阶段分组的活动列表\n */\nexport function BusinessFlowPreview({\n data,\n viewType = \"visual\",\n activityOnlyRead,\n}: BusinessFlowPreviewProps): React.ReactElement | null {\n // 活动详情模态框状态\n const [selectedActivity, setSelectedActivity] = useState<Activity | null>(\n null\n );\n const { modifyActivity } = useContext(ConfigContext);\n\n const currentStage = useRef<string>();\n\n const handleActivityClick = (activity: Activity, stageName: string) => {\n currentStage.current = stageName;\n setSelectedActivity(activity);\n };\n\n const handleCloseActivityDetail = () => {\n setSelectedActivity(null);\n };\n\n if (!data) {\n return null;\n }\n\n // JSON 视图\n if (viewType === \"json\") {\n return (\n <div className={styles.jsonView}>\n <pre>{JSON.stringify(data, null, 2)}</pre>\n </div>\n );\n }\n\n // Visual 视图\n return (\n <>\n <div className={styles.businessFlowPreview}>\n {/* 标题区域 */}\n <div className={styles.flowHeader}>\n <div className={styles.flowTitleArea}>\n <div className={styles.flowTitle}>{data.name}</div>\n <div className={styles.flowDescription}>{data.description}</div>\n </div>\n </div>\n\n {/* 先决条件 */}\n {data.prerequisite && (\n <div className={styles.flowSection}>\n <div className={styles.sectionTitle}>\n <WrappedIcon\n lib=\"antd\"\n icon=\"filter\"\n className={styles.prerequisitesIcon}\n />\n <span>{t(K.PREREQUISITES)}</span>\n </div>\n <div className={styles.prerequisitesSubtitle}>\n {t(K.PREREQUISITES_SUBTITLE)}\n </div>\n <div className={styles.prerequisitesList}>\n <WrappedMarkdownDisplay content={data.prerequisite} />\n </div>\n </div>\n )}\n\n {!!data.spec?.length && (\n <div className={styles.flowSection}>\n {/* 活动卡片区域(包含步骤条) */}\n <div className={styles.stagesContainer}>\n {data.spec.map((stage, index) => (\n <div key={index} className={styles.stageColumn}>\n {/* 步骤指示器 */}\n <div className={styles.stageIndicator}>\n <div className={styles.stageIndicatorNumber}>\n {index + 1}\n </div>\n <div className={styles.stageIndicatorName}>\n {stage.name}\n </div>\n\n {index < data.spec!.length - 1 && (\n <div className={styles.stageIndicatorLine} />\n )}\n </div>\n\n {/* 活动卡片列表 */}\n <div className={styles.stageActivities}>\n {stage.serviceFlowActivities?.map((activity, actIndex) => (\n <ActivityCard\n key={actIndex}\n title={activity.name}\n description={activity.description}\n assignee={activity.aiEmployeeId}\n onClick={() =>\n handleActivityClick(activity, stage.name)\n }\n />\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n {/* 活动详情模态框 */}\n <ActivityDetailModal\n onlyRead={activityOnlyRead}\n activity={selectedActivity}\n visible={!!selectedActivity}\n onClose={handleCloseActivityDetail}\n onChange={(activity) =>\n modifyActivity?.(currentStage.current!, activity)\n }\n />\n </>\n );\n}\n","import { createContext } from \"react\";\nimport { SpaceDetail } from \"./interfaces\";\nimport type { UploadOptions } from \"../shared/interfaces\";\n\ninterface WorkbenchContextProps {\n spaceDetail: SpaceDetail;\n uploadOptions?: UploadOptions;\n}\nexport const WorkbenchContext = createContext<WorkbenchContextProps>(\n {} as WorkbenchContextProps\n);\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./styles.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./styles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { UseBrickConf } from \"@next-core/types\";\nimport { ReactUseMultipleBricks } from \"@next-core/react-runtime\";\nimport styles from \"./styles.module.css\";\nimport type { ChatInput } from \"../chat-input\";\nimport type {\n ActiveImages,\n ChatPayload,\n ConversationPatch,\n ExtraChatPayload,\n FileInfo,\n RequestStore,\n UploadOptions,\n} from \"../shared/interfaces\";\nimport { useConversationDetail } from \"../cruise-canvas/useConversationDetail\";\nimport { useConversationStream } from \"../chat-stream/useConversationStream\";\nimport { preloadHighlighter } from \"@next-shared/markdown\";\nimport { useAutoScroll } from \"../chat-stream/useAutoScroll\";\nimport { UserMessage } from \"../chat-stream/UserMessage/UserMessage\";\nimport { AssistantMessage } from \"../chat-stream/AssistantMessage/AssistantMessage\";\nimport scrollStyles from \"../chat-stream/ScrollDownButton.module.css\";\nimport floatingStyles from \"../shared/FloatingButton.module.css\";\nimport { DONE_STATES, NON_WORKING_STATES } from \"../shared/constants\";\nimport { WrappedChatInput, WrappedIcon } from \"../shared/bricks\";\nimport { TaskContext, type TaskContextValue } from \"../shared/TaskContext\";\nimport { StreamContext } from \"../chat-stream/StreamContext\";\nimport { FilePreview } from \"../shared/FilePreview/FilePreview.js\";\nimport { ImagesPreview } from \"../shared/FilePreview/ImagesPreview.js\";\n\nexport interface ChatPanelContentProps {\n conversationId: string | null;\n initialRequest: RequestStore | null;\n placeholder?: string;\n uploadOptions?: UploadOptions;\n help?: { useBrick: UseBrickConf };\n fromModal?: boolean;\n submitDisabled?: boolean;\n onChatSubmit: (payload: ChatPayload) => void;\n onData?: (data: ConversationPatch) => void;\n}\n\nexport interface ChatPanelContentRef {\n setInputValue: (content: string) => void;\n focus: () => void;\n showFile: (file: FileInfo) => void;\n}\n\nexport const ChatPanelContent = forwardRef<\n ChatPanelContentRef,\n ChatPanelContentProps\n>(function ChatPanelContent(\n {\n conversationId,\n initialRequest,\n placeholder,\n uploadOptions,\n help,\n fromModal,\n submitDisabled,\n onChatSubmit,\n onData,\n },\n ref\n) {\n const inputRef = useRef<ChatInput>(null);\n\n const [activeFile, setActiveFile] = useState<FileInfo | null>(null);\n const [activeImages, setActiveImages] = useState<ActiveImages | null>(null);\n\n const { conversation, tasks, errors, humanInputRef } = useConversationDetail(\n conversationId,\n initialRequest,\n undefined,\n undefined,\n onData\n );\n const conversationAvailable = !!conversation;\n const conversationState = conversation?.state;\n const conversationDone = DONE_STATES.includes(conversationState!);\n const conversationFinished = conversation?.finished;\n const earlyFinished =\n conversation?.finished &&\n conversation.mode !== \"resume\" &&\n !NON_WORKING_STATES.includes(conversationState!);\n\n const canChat =\n !conversationId ||\n conversationDone ||\n conversationState === \"input-required\";\n\n const { messages, jobMap } = useConversationStream(\n conversationAvailable,\n conversationState,\n tasks,\n errors,\n { showHumanActions: true, skipActivitySubTasks: true }\n );\n\n const humanInput = useCallback(\n (input: string | null, action?: string, extra?: ExtraChatPayload) => {\n humanInputRef.current?.(input, action, extra);\n },\n [humanInputRef]\n );\n\n const [depsReady, setDepsReady] = useState(false);\n useEffect(() => {\n let ignore = false;\n Promise.race([\n preloadHighlighter(\"light-plus\"),\n // Wait at most 5s\n new Promise((resolve) => setTimeout(resolve, 5000)),\n ]).finally(() => {\n if (!ignore) {\n setDepsReady(true);\n }\n });\n return () => {\n ignore = true;\n };\n }, []);\n\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const scrollContentRef = useRef<HTMLDivElement>(null);\n\n const { scrollable, scrollToBottom, toggleAutoScroll } = useAutoScroll(\n conversationAvailable && depsReady,\n scrollContainerRef,\n scrollContentRef\n );\n\n const handleChatSubmit = useCallback(\n async (payload: ChatPayload) => {\n if (conversationId) {\n const { content, ...extra } = payload;\n // For follow-up messages, do not pass aiEmployeeId and cmd again,\n // unless passed explicitly.\n humanInput(content, undefined, extra);\n return;\n }\n onChatSubmit(payload);\n },\n [conversationId, humanInput, onChatSubmit]\n );\n\n const taskContextValue = useMemo(\n () =>\n ({\n conversationState,\n finished: conversationFinished,\n earlyFinished,\n tasks,\n jobMap,\n errors,\n setActiveFile,\n setActiveImages,\n humanInput,\n }) as TaskContextValue,\n [\n conversationState,\n humanInput,\n jobMap,\n tasks,\n errors,\n conversationFinished,\n earlyFinished,\n ]\n );\n\n useImperativeHandle(\n ref,\n () => ({\n setInputValue: (content: string) => {\n inputRef.current?.setValue(content);\n },\n focus: () => {\n inputRef.current?.focus();\n },\n showFile: (file: FileInfo) => {\n setActiveFile(file);\n },\n }),\n []\n );\n\n const streamContextValue = useMemo(\n () => ({\n lastDetail: null,\n planMap: null,\n toggleAutoScroll,\n setUserClosedAside: () => {},\n }),\n [toggleAutoScroll]\n );\n\n return (\n <>\n <TaskContext.Provider value={taskContextValue}>\n <StreamContext.Provider value={streamContextValue}>\n <div className={styles.panel}>\n {!conversationId ? (\n <div className={styles.main}>\n <div className={styles.chat}>\n <div className={styles.narrow}>\n {help ? (\n <ReactUseMultipleBricks useBrick={help.useBrick} />\n ) : null}\n </div>\n </div>\n </div>\n ) : conversationAvailable && depsReady ? (\n <div className={styles.main}>\n <div className={styles.chat} ref={scrollContainerRef}>\n <div className={styles.narrow}>\n <div className={styles.messages} ref={scrollContentRef}>\n {messages.map((msg, index, list) => (\n <div className={styles.message} key={index}>\n {msg.role === \"user\" ? (\n <UserMessage\n content={msg.content}\n files={msg.files}\n />\n ) : (\n <AssistantMessage\n chunks={msg.chunks}\n scopeState={conversation.state}\n isLatest={\n index === list.length - 1 && !earlyFinished\n }\n finished={conversation.finished}\n />\n )}\n </div>\n ))}\n {earlyFinished && (\n <div className={styles.message}>\n <AssistantMessage earlyFinished />\n </div>\n )}\n </div>\n </div>\n </div>\n <button\n className={`${scrollStyles[\"scroll-down\"]} ${floatingStyles[\"floating-button\"]}`}\n style={{ bottom: \"30px\" }}\n hidden={!scrollable}\n onClick={scrollToBottom}\n >\n <WrappedIcon lib=\"antd\" icon=\"down\" />\n </button>\n </div>\n ) : (\n <div className={styles[\"loading-icon\"]}>\n <WrappedIcon\n lib=\"antd\"\n theme=\"outlined\"\n icon=\"loading-3-quarters\"\n spinning\n />\n </div>\n )}\n <div className={styles.narrow}>\n <WrappedChatInput\n ref={inputRef}\n placeholder={placeholder}\n suggestionsPlacement=\"top\"\n submitDisabled={submitDisabled || !canChat}\n supportsTerminate\n uploadOptions={uploadOptions}\n onChatSubmit={(e) => handleChatSubmit(e.detail)}\n />\n </div>\n </div>\n {activeFile && (\n <FilePreview file={activeFile} fromModal={fromModal} />\n )}\n {activeImages && (\n <ImagesPreview images={activeImages} fromModal={fromModal} />\n )}\n </StreamContext.Provider>\n </TaskContext.Provider>\n </>\n );\n});\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./styles.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./styles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","\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]!./ServiceFlows.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]!./ServiceFlows.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useState } from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { EmptyState } from \"./EmptyState.js\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type {\n Modal,\n ModalProps,\n ModalEvents,\n ModalMapEvents,\n} from \"@next-bricks/containers/modal\";\nimport { BusinessFlowPreview } from \"./BusinessFlowPreview.js\";\nimport styles from \"./ServiceFlows.module.css\";\nimport { K, t } from \"../i18n.js\";\nimport { BusinessFlow } from \"../interfaces.js\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst WrappedModal = wrapBrick<\n Modal,\n ModalProps & { noFooter?: boolean },\n ModalEvents,\n ModalMapEvents\n>(\"eo-modal\", {\n onClose: \"close\",\n onConfirm: \"confirm\",\n onCancel: \"cancel\",\n onOpen: \"open\",\n});\n\nexport interface ServiceFlowsProps {\n businessFlows?: BusinessFlow[];\n onFlowClick?: (flow: BusinessFlow) => void;\n}\n\nexport function ServiceFlows(props: ServiceFlowsProps) {\n const { businessFlows = [], onFlowClick } = props;\n\n const [selectedFlow, setSelectedFlow] = useState<BusinessFlow | null>(null);\n const [isModalVisible, setIsModalVisible] = useState(false);\n\n const handleFlowClick = (flow: BusinessFlow) => {\n onFlowClick?.(flow);\n };\n\n const handleDetailClick = (flow: BusinessFlow, e: React.MouseEvent) => {\n e.stopPropagation();\n setSelectedFlow(flow);\n setIsModalVisible(true);\n };\n\n const handleCloseModal = () => {\n setIsModalVisible(false);\n setSelectedFlow(null);\n };\n\n return (\n <div className={styles.serviceFlows}>\n <div className={styles.header}>\n <div className={styles.titleContainer}>\n <h3 className={styles.title}>{t(K.FLOW_SIDEBAR_TITLE)}</h3>\n <p className={styles.subtitle}>{t(K.FLOW_SIDEBAR_SUBTITLE)}</p>\n </div>\n </div>\n\n {!businessFlows?.length ? (\n <EmptyState title={t(K.NO_SERVICE_FLOWS)} />\n ) : (\n <div className={styles.flowList}>\n {businessFlows.map((flow) => (\n <div\n key={flow.instanceId}\n className={styles.flowCard}\n onClick={() => handleFlowClick(flow)}\n >\n <div className={styles.cardHeader}>\n <span className={styles.flowName}>{flow.name}</span>\n <button\n className={styles.detailButton}\n onClick={(e) => handleDetailClick(flow, e)}\n title={t(K.NO_DESCRIPTION)}\n >\n <WrappedIcon lib=\"antd\" icon=\"eye\" theme=\"outlined\" />\n </button>\n </div>\n <p className={styles.flowDescription} title={flow.description}>\n {flow.description}\n </p>\n {/* 阶段进度条 - 根据业务流的 spec 展示 */}\n {flow.spec && flow.spec.length > 0 && (\n <div className={styles.stageProgress}>\n {flow.spec.map((stage, index) => (\n <div\n key={index}\n className={styles.progressBar}\n title={stage.name}\n />\n ))}\n </div>\n )}\n </div>\n ))}\n </div>\n )}\n\n {/* 业务流详情模态框 */}\n <WrappedModal\n modalTitle={selectedFlow?.name}\n width={700}\n visible={isModalVisible}\n onCancel={handleCloseModal}\n onClose={handleCloseModal}\n noFooter\n maskClosable\n >\n <BusinessFlowPreview\n activityOnlyRead\n data={selectedFlow ?? undefined}\n viewType=\"visual\"\n />\n </WrappedModal>\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, `.spaceSidebar--Qf51HGPz{display:flex;flex-direction:column;flex:0 0 320px;height:100%;min-height:0;background:rgba(248,250,252,0.5);border-right:1px solid #fff;border-radius:16px;overflow:hidden}.tabList--o5YhR52t{display:grid;grid-template-columns:1fr 1fr;padding:4px;margin:12px 16px 0;background:rgba(0,0,0,0.04);border-radius:20px;gap:0;height:40px;flex-shrink:0}.tabButton--oxOcKWEf{height:30px;border:none;background:transparent;border-radius:16px;font-size:14px;font-weight:400;color:rgba(0,0,0,0.65);cursor:pointer;transition:all 0.2s ease;padding:5px 9px;font-family:\"PingFang SC\",sans-serif}.tabButton--oxOcKWEf.active--S7LRZpni{background:#fff;color:#2540ff;font-weight:500;box-shadow:0px 2px 3px 0px rgba(0,0,0,0.08)}.tabButton--oxOcKWEf:hover:not(.active--S7LRZpni){color:rgba(0,0,0,0.85)}.sidebarContent--ZDMbDjAV{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:10px}.businessObjectList--dclDhq4t{display:flex;flex-direction:column;gap:10px;height:100%;min-height:0}.objectGroup--hAy6zNQc{display:flex;flex-direction:column;padding-bottom:1px;flex-shrink:0;transition:flex 0.2s ease}.objectGroup--hAy6zNQc.expanded--X3nyCtbS{flex:1;min-height:0}.objectHeader--uz8e0r3k{display:flex;align-items:center;justify-content:space-between;height:28px;padding:5px 12px;border-radius:8px;cursor:pointer;transition:background-color 0.2s ease}.objectHeader--uz8e0r3k:hover{background-color:rgba(0,0,0,0.04)}.objectHeader--uz8e0r3k:hover .addIcon--Bgq17yLF{display:inline-block}.objectName--rorssrQO{font-size:12px;font-weight:400;color:rgba(0,0,0,0.65);font-family:\"PingFang SC\",sans-serif;line-height:14px}.objectHeaderActions--ZHF3Pgj4{display:inline-flex;gap:8px}.addIcon--Bgq17yLF{display:none}.expandIcon--l14w8nMn,\n.addIcon--Bgq17yLF{font-size:16px;color:rgba(0,0,0,0.45);transition:transform 0.2s ease}.expandIcon--l14w8nMn:hover,.addIcon--Bgq17yLF:hover{color:#2540ff}.objectGroup--hAy6zNQc.expanded--X3nyCtbS .expandIcon--l14w8nMn{transform:rotate(0deg)}.objectGroup--hAy6zNQc:not(.expanded--X3nyCtbS) .expandIcon--l14w8nMn{transform:rotate(-90deg)}.instanceList--KYKhU86j{display:flex;flex-direction:column;padding:8px 8px;gap:8px;flex:1;min-height:0;overflow-y:auto;overflow-x:hidden}.instanceCard--lq1neePr{display:flex;flex-direction:column;gap:10px;padding:12px;background:#fff;border:1px solid rgba(0,0,0,0.1);border-radius:8px;cursor:pointer;transition:all 0.2s ease;width:100%;height:70px;-webkit-user-select:none;user-select:none}.instanceCard--lq1neePr:hover{border-color:#a1b5ff;box-shadow:0px 2px 4px rgba(37,64,255,0.1)}.instanceCard--lq1neePr.active--S7LRZpni{border-color:#a1b5ff;box-shadow:0px 2px 4px rgba(37,64,255,0.2)}.instanceHeader--FtMXJSoE{display:flex;align-items:center;justify-content:space-between;gap:11px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.instanceName--oymTy9t_{flex:1;font-size:14px;font-weight:500;color:rgba(0,0,0,0.85);font-family:\"PingFang SC\",sans-serif;line-height:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.instanceTime--yrpEWb2A{font-size:12px;font-weight:400;color:rgba(0,0,0,0.45);line-height:14.286px;letter-spacing:0.1172px;white-space:nowrap;flex-shrink:0}.instanceStatus--OULXzKfn{display:flex;align-items:center;width:100%}.statusTag--pLbk_t5R{display:inline-flex;align-items:center;justify-content:center;height:18.281px;padding:2px 8px;background:rgba(37,64,255,0.05);border-radius:33554400px;font-size:10px;font-weight:500;color:#1e30cc;font-family:\"PingFang SC\",sans-serif;line-height:14px;letter-spacing:0.1172px;box-shadow:inset 0px 0px 0px 1px rgba(37,64,255,0.2)}.knowledgeList--REBBSycS{padding:20px 0}.emptyState--pNehIzG5{text-align:center;font-size:14px;color:rgba(0,0,0,0.45);padding:20px}.loadingContainer--L97L8IBe{display:flex;align-items:center;justify-content:center;gap:8px;padding:20px;color:rgba(0,0,0,0.45)}.loadingIcon--yalSuncE{font-size:16px;animation:spin--mXbX9faI 1s linear infinite}@keyframes spin--mXbX9faI{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.loadingText--aBetQoy1{font-size:14px;font-family:\"PingFang SC\",sans-serif}.errorContainer--OC0vGsb1{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:20px;cursor:pointer;transition:background-color 0.2s ease;border-radius:8px}.errorContainer--OC0vGsb1:hover{background-color:rgba(0,0,0,0.02)}.errorText--p_LnOj3L{font-size:14px;color:rgba(0,0,0,0.65);font-family:\"PingFang SC\",sans-serif}.retryText--UGXineMl{font-size:12px;color:#2540ff;font-family:\"PingFang SC\",sans-serif}@keyframes fadeIn--RpaeLkxV{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.tabContent--Xua0CHmU{height:100%;display:none}.tabContentActive--v9ocoLtZ{display:block;animation:fadeIn--RpaeLkxV 0.3s ease-in-out}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"spaceSidebar\": `spaceSidebar--Qf51HGPz`,\n\t\"tabList\": `tabList--o5YhR52t`,\n\t\"tabButton\": `tabButton--oxOcKWEf`,\n\t\"active\": `active--S7LRZpni`,\n\t\"sidebarContent\": `sidebarContent--ZDMbDjAV`,\n\t\"businessObjectList\": `businessObjectList--dclDhq4t`,\n\t\"objectGroup\": `objectGroup--hAy6zNQc`,\n\t\"expanded\": `expanded--X3nyCtbS`,\n\t\"objectHeader\": `objectHeader--uz8e0r3k`,\n\t\"addIcon\": `addIcon--Bgq17yLF`,\n\t\"objectName\": `objectName--rorssrQO`,\n\t\"objectHeaderActions\": `objectHeaderActions--ZHF3Pgj4`,\n\t\"expandIcon\": `expandIcon--l14w8nMn`,\n\t\"instanceList\": `instanceList--KYKhU86j`,\n\t\"instanceCard\": `instanceCard--lq1neePr`,\n\t\"instanceHeader\": `instanceHeader--FtMXJSoE`,\n\t\"instanceName\": `instanceName--oymTy9t_`,\n\t\"instanceTime\": `instanceTime--yrpEWb2A`,\n\t\"instanceStatus\": `instanceStatus--OULXzKfn`,\n\t\"statusTag\": `statusTag--pLbk_t5R`,\n\t\"knowledgeList\": `knowledgeList--REBBSycS`,\n\t\"emptyState\": `emptyState--pNehIzG5`,\n\t\"loadingContainer\": `loadingContainer--L97L8IBe`,\n\t\"loadingIcon\": `loadingIcon--yalSuncE`,\n\t\"spin\": `spin--mXbX9faI`,\n\t\"loadingText\": `loadingText--aBetQoy1`,\n\t\"errorContainer\": `errorContainer--OC0vGsb1`,\n\t\"errorText\": `errorText--p_LnOj3L`,\n\t\"retryText\": `retryText--UGXineMl`,\n\t\"tabContent\": `tabContent--Xua0CHmU`,\n\t\"tabContentActive\": `tabContentActive--v9ocoLtZ`,\n\t\"fadeIn\": `fadeIn--RpaeLkxV`\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, `.drawer--Qk6EoNTj .ant-drawer-body{padding:0;display:flex;flex-direction:column}.historyList--JUm6bl7Q{flex:1;overflow-y:auto;overflow-x:hidden}.historyItem--VGQliAcy{display:flex;flex-direction:column;gap:8px;padding:12px 16px;background:#fff;border:1px solid rgba(0,0,0,0.1);border-radius:8px;cursor:pointer;transition:all 0.2s ease;margin-bottom:8px}.historyItem--VGQliAcy:hover{border-color:#a1b5ff;box-shadow:0px 2px 4px rgba(37,64,255,0.1)}.historyItemHeader--x8w4xVU5{display:flex;align-items:center;justify-content:space-between;gap:8px}.historyItemTitle--owmB_DVt{flex:1;font-size:14px;font-weight:500;color:rgba(0,0,0,0.85);font-family:\"PingFang SC\",sans-serif;line-height:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.historyItemPreview--D63i9Vni{margin:0;font-size:12px;font-weight:400;color:rgba(0,0,0,0.45);font-family:\"PingFang SC\",sans-serif;line-height:18px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.historyItemFooter--B3kUXkuf{display:flex;align-items:center;gap:4px;margin-top:4px}.timeIcon--nG5_Rlu7{font-size:12px;color:rgba(0,0,0,0.45)}.historyItemTime--ZJ5LMXy0{font-size:12px;font-weight:400;color:rgba(0,0,0,0.45);font-family:\"Inter\",\"Noto Sans JP\",\"Noto Sans SC\",sans-serif;line-height:15px}.loadMoreContainer--rzLIS8T1{display:flex;justify-content:center;padding:16px 0}.emptyState--DU6M3grO{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;color:rgba(0,0,0,0.45)}.emptyStateIcon--MxOYYUGV{font-size:48px;margin-bottom:16px;opacity:0.3}.emptyStateText--wumb7hGu{font-size:14px;font-family:\"PingFang SC\",sans-serif}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"drawer\": `drawer--Qk6EoNTj`,\n\t\"historyList\": `historyList--JUm6bl7Q`,\n\t\"historyItem\": `historyItem--VGQliAcy`,\n\t\"historyItemHeader\": `historyItemHeader--x8w4xVU5`,\n\t\"historyItemTitle\": `historyItemTitle--owmB_DVt`,\n\t\"historyItemPreview\": `historyItemPreview--D63i9Vni`,\n\t\"historyItemFooter\": `historyItemFooter--B3kUXkuf`,\n\t\"timeIcon\": `timeIcon--nG5_Rlu7`,\n\t\"historyItemTime\": `historyItemTime--ZJ5LMXy0`,\n\t\"loadMoreContainer\": `loadMoreContainer--rzLIS8T1`,\n\t\"emptyState\": `emptyState--DU6M3grO`,\n\t\"emptyStateIcon\": `emptyStateIcon--MxOYYUGV`,\n\t\"emptyStateText\": `emptyStateText--wumb7hGu`\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, `.knowledgesList--G3vEjNyL{display:flex;flex-direction:column;gap:8px;padding:4px 16px 0}.knowledgeCard--SewzgT45{display:flex;gap:12px;align-items:center;padding:12px 16px;background:#fff;border:1px solid rgba(0,0,0,0.1);border-radius:8px;cursor:pointer;transition:all 0.2s ease;width:100%}.knowledgeCard--SewzgT45:hover{border-color:#a1b5ff;box-shadow:0px 2px 4px rgba(37,64,255,0.1)}.fileIcon--AP9bfHxK{width:26px;height:32px;flex-shrink:0}.knowledgeInfo--RyILtgzJ{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.knowledgeName--MnKpkb6p{font-size:14px;font-weight:500;color:rgba(0,0,0,0.85);font-family:\"PingFang SC\",sans-serif;line-height:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.knowledgeMeta--tGibX0r9{font-size:12px;font-weight:400;color:rgba(0,0,0,0.45);font-family:\"PingFang SC\",sans-serif;line-height:16px}.loadingContainer--GXqWxmxZ{display:flex;align-items:center;justify-content:center;gap:8px;padding:40px 20px;color:rgba(0,0,0,0.45)}.loadingIcon--hdLHbm9J{font-size:16px;animation:spin--PtvQPLuM 1s linear infinite}@keyframes spin--PtvQPLuM{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.loadingText--JPUJyzvY{font-size:14px;font-family:\"PingFang SC\",sans-serif}.emptyState--jyRqW4K8{display:flex;align-items:center;justify-content:center;padding:40px 20px;font-size:14px;color:rgba(0,0,0,0.45);font-family:\"PingFang SC\",sans-serif}.addKnowledgeButton--I5Yzetyu{display:block;margin:0 10px}.addKnowledgeButton--I5Yzetyu::part(button){width:100%;margin-bottom:5px;background-color:transparent}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"knowledgesList\": `knowledgesList--G3vEjNyL`,\n\t\"knowledgeCard\": `knowledgeCard--SewzgT45`,\n\t\"fileIcon\": `fileIcon--AP9bfHxK`,\n\t\"knowledgeInfo\": `knowledgeInfo--RyILtgzJ`,\n\t\"knowledgeName\": `knowledgeName--MnKpkb6p`,\n\t\"knowledgeMeta\": `knowledgeMeta--tGibX0r9`,\n\t\"loadingContainer\": `loadingContainer--GXqWxmxZ`,\n\t\"loadingIcon\": `loadingIcon--hdLHbm9J`,\n\t\"spin\": `spin--PtvQPLuM`,\n\t\"loadingText\": `loadingText--JPUJyzvY`,\n\t\"emptyState\": `emptyState--jyRqW4K8`,\n\t\"addKnowledgeButton\": `addKnowledgeButton--I5Yzetyu`\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]!./EmptyState.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]!./EmptyState.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import * as React from \"react\";\nconst SvgEmpty = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={51} height={50} fill=\"none\" viewBox=\"0 0 51 50\" {...props}><path fill=\"#000\" fillOpacity={0.25} d=\"m27.219 9.02 13.779 8.087a4.4 4.4 0 0 1 2.16 3.805l-.02 16.13a4.4 4.4 0 0 1-2.166 3.798l-13.766 8.04a4.25 4.25 0 0 1-4.298-.006L9.132 40.788a4.4 4.4 0 0 1-2.155-3.793L6.951 20.9a4.4 4.4 0 0 1 2.164-3.809l13.802-8.074a4.25 4.25 0 0 1 4.301.004m-3.444 1.518-13.8 8.072a2.64 2.64 0 0 0-1.298 2.285l.02 16.098c0 .94.496 1.807 1.294 2.276l13.776 8.086c.796.469 1.784.47 2.58.002l13.766-8.038a2.64 2.64 0 0 0 1.299-2.28l.02-16.13c0-.942-.493-1.81-1.294-2.283L26.356 10.54a2.55 2.55 0 0 0-2.58 0zM14.22 22.162a.856.856 0 0 1 1.15-.412l9.666 4.9 9.51-4.814a.85.85 0 0 1 1.069.28l.08.136a.885.885 0 0 1-.407 1.169l-9.39 4.751.019 10.449c0 .43-.304.79-.707.865l-.155.014a.87.87 0 0 1-.862-.876l-.018-10.448-9.551-4.845a.88.88 0 0 1-.459-1.02zm.236-18.15.123.098 2.753 2.552c.35.332.37.881.047 1.238a.85.85 0 0 1-1.097.134l-.122-.096-2.754-2.552a.886.886 0 0 1-.046-1.24.85.85 0 0 1 1.096-.134m22.293.135a.886.886 0 0 1-.046 1.24l-2.754 2.55a.853.853 0 0 1-1.218-.037.886.886 0 0 1 .046-1.238l2.754-2.552a.853.853 0 0 1 1.218.037M25.039.333c.422 0 .775.31.848.719l.014.158v3.945a.87.87 0 0 1-.862.88.87.87 0 0 1-.849-.721l-.014-.159V1.21a.87.87 0 0 1 .863-.877\" /></svg>;\nexport default SvgEmpty;","import React from \"react\";\nimport styles from \"./EmptyState.module.css\";\n\nimport EmptyStateIcon from \"../images/empty.svg\";\nimport classNames from \"classnames\";\n\n/**\n * EmptyState 组件 Props\n */\nexport interface EmptyStateProps {\n icon?: React.ReactNode;\n title: string;\n description?: string;\n className?: string;\n}\n\n/**\n * 空状态组件\n * 用于展示无数据时的提示信息\n */\nexport function EmptyState({\n icon,\n title,\n description,\n className,\n}: EmptyStateProps): React.ReactElement {\n return (\n <div className={classNames(styles.emptyState, className)}>\n {icon ? icon : <EmptyStateIcon className={styles.emptyStateIcon} />}\n <div className={styles.emptyStateTitle}>{title}</div>\n {description && (\n <div className={styles.emptyStateDescription}>{description}</div>\n )}\n </div>\n );\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.businessObjectPreview--LAPk0Y9B{background:#fff;border-radius:12px;padding:24px;box-shadow:0 1px 3px rgba(0,0,0,0.04)}.objectHeader--NM6O6kt3{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:24px}.objectTitleArea--P3CiAz5R{display:flex;flex-direction:column;gap:4px}.objectTitle--RZsDy1mo{display:flex;align-items:center;gap:8px}.objectName--RLJVqunK{font-size:18px;font-weight:600;color:#1d2129}.objectNameEn--jyKDahH4{font-size:14px;color:rgba(0,0,0,0.45)}.objectDescription--NHhabBrz{font-size:13px;color:rgba(0,0,0,0.45)}.objectBadge--Rh4DV5J4{padding:4px 12px;font-size:12px;font-weight:500;color:#2540ff;background:rgba(37,64,255,0.08);border:1px solid rgba(37,64,255,0.2);border-radius:16px;white-space:nowrap}.objectSection--j5d1ncqN{margin-bottom:24px}.objectSection--j5d1ncqN:last-child{margin-bottom:0}.sectionTitle--AcHZ8EcX{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:500;color:#1d2129;margin-bottom:12px}.sectionIcon--JWh7zrUU{width:16px;height:16px;color:rgba(0,0,0,0.45)}.fieldGrid--kxszRZcD{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}.fieldItem--CD2Xs9gj{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:#f7f8fa;border-radius:8px}.fieldName--VmUsryx0{font-size:13px;font-weight:500;color:rgba(0,0,0,0.85)}.fieldType--dGVcWG8d{padding:2px 8px;font-size:11px;color:rgba(0,0,0,0.45);background:#fff;border-radius:4px}.linkIcon--kQjV3X_i{width:14px;height:14px;margin-left:6px;color:rgba(0,0,0,0.45);vertical-align:middle}.relationType--eeBsNBCg{padding:2px 8px;font-size:11px;color:#2540ff;background:rgba(37,64,255,0.08);border:1px solid rgba(37,64,255,0.2);border-radius:4px}.lifecycleContainer--UrOYnN33{padding:20px;background:#f7f8fa;border-radius:8px}.lifecycleStates--uWKrwvav{display:flex;align-items:center;gap:0;flex-wrap:wrap}.lifecycleState--ddOVvbrh{display:flex;align-items:center;padding:10px 20px;background:#fff;border:1px solid rgba(0,0,0,0.08);border-radius:8px;font-size:13px;color:#1d2129;white-space:nowrap}.lifecycleArrow--BsE3oEG7{display:flex;align-items:center;padding:0 8px;color:rgba(0,0,0,0.25)}.lifecycleArrowIcon--vZw0ZGA9{width:16px;height:16px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"businessObjectPreview\": `businessObjectPreview--LAPk0Y9B`,\n\t\"objectHeader\": `objectHeader--NM6O6kt3`,\n\t\"objectTitleArea\": `objectTitleArea--P3CiAz5R`,\n\t\"objectTitle\": `objectTitle--RZsDy1mo`,\n\t\"objectName\": `objectName--RLJVqunK`,\n\t\"objectNameEn\": `objectNameEn--jyKDahH4`,\n\t\"objectDescription\": `objectDescription--NHhabBrz`,\n\t\"objectBadge\": `objectBadge--Rh4DV5J4`,\n\t\"objectSection\": `objectSection--j5d1ncqN`,\n\t\"sectionTitle\": `sectionTitle--AcHZ8EcX`,\n\t\"sectionIcon\": `sectionIcon--JWh7zrUU`,\n\t\"fieldGrid\": `fieldGrid--kxszRZcD`,\n\t\"fieldItem\": `fieldItem--CD2Xs9gj`,\n\t\"fieldName\": `fieldName--VmUsryx0`,\n\t\"fieldType\": `fieldType--dGVcWG8d`,\n\t\"linkIcon\": `linkIcon--kQjV3X_i`,\n\t\"relationType\": `relationType--eeBsNBCg`,\n\t\"lifecycleContainer\": `lifecycleContainer--UrOYnN33`,\n\t\"lifecycleStates\": `lifecycleStates--uWKrwvav`,\n\t\"lifecycleState\": `lifecycleState--ddOVvbrh`,\n\t\"lifecycleArrow\": `lifecycleArrow--BsE3oEG7`,\n\t\"lifecycleArrowIcon\": `lifecycleArrowIcon--vZw0ZGA9`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { http } from \"@next-core/http\";\n\n/** 实例对象(动态字段,根据不同对象类型字段不同) */\n\n/**\n * @description 查询服务对象实例列表\n * @endpoint list /api/v1/elevo/objects/:objectId/instances\n */\nexport const ElevoObjectApi_listServiceObjectInstances = async (objectId, params, options) => /**! @contract easyops.api.llm.elevo_object.ListServiceObjectInstances@1.0.0 */(await http.get(`api/gateway/logic.llm.aiops_service/api/v1/elevo/objects/${objectId}/instances`, {\n ...options,\n params\n})).data;\n//# sourceMappingURL=listServiceObjectInstances.js.map","import { http } from \"@next-core/http\";\n/**\n * @description 获取协作空间内的服务对象列表\n * @endpoint list /api/v1/elevo/workspaces/:workspaceId/service-objects\n */\nexport const ElevoObjectApi_listServiceObjects = async (workspaceId, params, options) => /**! @contract easyops.api.llm.elevo_object.ListServiceObjects@1.0.0 */(await http.get(`api/gateway/logic.llm.aiops_service/api/v1/elevo/workspaces/${workspaceId}/service-objects`, {\n ...options,\n params\n})).data;\n//# sourceMappingURL=listServiceObjects.js.map","\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]!./SpaceSidebar.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]!./SpaceSidebar.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./knowLedgesList.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]!./knowLedgesList.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { K, t } from \"../i18n.js\";\nimport styles from \"./knowLedgesList.module.css\";\nimport type { Button, ButtonProps } from \"@next-bricks/basic/button\";\nimport { EmptyState } from \"./EmptyState.js\";\nimport moment from \"moment\";\nimport type { KnowledgeItem } from \"../interfaces.js\";\nimport { getFileTypeAndIcon } from \"../../cruise-canvas/utils/file.js\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedButton = wrapBrick<Button, ButtonProps>(\"eo-button\");\n\nexport interface KnowledgesListProps {\n knowledges?: KnowledgeItem[];\n onKnowledgeClick?: (knowledge: KnowledgeItem) => void;\n onAddKnowledge?: () => void;\n}\n\nexport function KnowledgesList(props: KnowledgesListProps) {\n const { knowledges, onKnowledgeClick, onAddKnowledge } = props;\n\n const handleKnowledgeClick = (knowledge: KnowledgeItem) => {\n onKnowledgeClick?.(knowledge);\n };\n\n const handleAddKnowledge = () => {\n onAddKnowledge?.();\n };\n\n if (!knowledges) {\n return (\n <div className={styles.loadingContainer}>\n <WrappedIcon\n lib=\"antd\"\n icon=\"loading\"\n theme=\"outlined\"\n className={styles.loadingIcon}\n />\n <span className={styles.loadingText}>{t(K.LOADING)}</span>\n </div>\n );\n }\n\n return (\n <>\n <WrappedButton\n className={styles.addKnowledgeButton}\n type=\"dashed\"\n onClick={() => handleAddKnowledge()}\n icon={{ lib: \"lucide\", icon: \"plus\" }}\n >\n {t(K.ADD_KNOWLEDGE)}\n </WrappedButton>\n {!knowledges.length ? (\n <EmptyState title={t(K.NO_KNOWLEDGE)} />\n ) : (\n <div className={styles.knowledgesList}>\n {knowledges.map((knowledge) => {\n const [type, icon] = getFileTypeAndIcon(undefined, knowledge.name);\n\n return (\n <div\n key={knowledge.instanceId}\n className={styles.knowledgeCard}\n onClick={() => handleKnowledgeClick(knowledge)}\n >\n <img src={icon} alt={type} className={styles.fileIcon} />\n <div className={styles.knowledgeInfo}>\n <div className={styles.knowledgeName}>{knowledge.name}</div>\n <div className={styles.knowledgeMeta}>\n {moment(knowledge.mtime || knowledge.ctime).format(\n \"YYYY-MM-DD\"\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n </>\n );\n}\n","import { http } from \"@next-core/http\";\n/**\n * @description 批量导入业务对象实例数据(支持新增、更新、删除)\n * @endpoint POST /api/v1/elevo/objects/:objectId/instances/import\n */\nexport const ElevoObjectApi_importServiceObjectInstances = async (objectId, data, options) => /**! @contract easyops.api.llm.elevo_object.ImportServiceObjectInstances@1.0.0 */(await http.post(`api/gateway/logic.llm.aiops_service/api/v1/elevo/objects/${objectId}/instances/import`, data, options)).data;\n//# sourceMappingURL=importServiceObjectInstances.js.map","\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]!./InstanceList.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]!./InstanceList.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from \"react\";\n\nimport type { InstanceItem, BusinessObject } from \"../../interfaces\";\nimport { K, t } from \"../../i18n.js\";\nimport { EmptyState } from \"../EmptyState\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\n\nimport styles from \"./InstanceList.module.css\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface InstanceListProps {\n instances: InstanceItem[];\n businessObject: BusinessObject;\n selectedInstanceId: string | null;\n onSelect: (id: string) => void;\n onDelete: (id: string) => void;\n}\n\nexport function InstanceList({\n instances,\n businessObject,\n selectedInstanceId,\n onSelect,\n onDelete,\n}: InstanceListProps): React.ReactElement {\n if (instances.length === 0) {\n return (\n <EmptyState\n title={t(K.NO_INSTANCES_IDENTIFIED)}\n description={t(K.NO_INSTANCES_IDENTIFIED_DESCRIPTION)}\n />\n );\n }\n\n return (\n <div className={styles.instanceList}>\n {instances.map((instance) => (\n <InstanceCard\n key={instance._id_}\n instance={instance}\n businessObject={businessObject}\n isSelected={selectedInstanceId === instance._id_}\n onSelect={() => onSelect(instance._id_)}\n onDelete={() => onDelete(instance._id_)}\n />\n ))}\n </div>\n );\n}\n\nexport interface InstanceCardProps {\n instance: InstanceItem;\n businessObject: BusinessObject;\n isSelected: boolean;\n onSelect: () => void;\n onDelete: () => void;\n}\n\nexport function InstanceCard({\n instance,\n businessObject,\n isSelected,\n onSelect,\n onDelete,\n}: InstanceCardProps): React.ReactElement {\n // 获取第一个属性作为主标题\n const firstAttr = businessObject.attributes?.[0];\n const title = firstAttr ? instance[firstAttr.id] : instance._id_;\n\n // 获取状态属性\n const statusAttr = businessObject.attributes?.find(\n (attr) => attr.id === \"status\"\n );\n const status = statusAttr ? instance[statusAttr.id] : null;\n\n const handleDelete = (e: React.MouseEvent) => {\n e.stopPropagation();\n onDelete();\n };\n\n return (\n <div\n className={`${styles.instanceCard} ${isSelected ? styles.selected : \"\"}`}\n onClick={onSelect}\n >\n <div className={styles.cardHeader}>\n <span className={styles.cardTitle}>{title}</span>\n <div className={styles.cardActions}>\n <button\n className={styles.deleteButton}\n onClick={handleDelete}\n title={t(K.DELETE_INSTANCE)}\n >\n <WrappedIcon lib=\"antd\" icon=\"delete\" theme=\"outlined\" />\n </button>\n </div>\n </div>\n {status && (\n <div className={styles.cardStatus}>\n <span className={styles.statusTag}>{status}</span>\n </div>\n )}\n </div>\n );\n}\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./AddObjectInstModal.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]!./AddObjectInstModal.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { InstanceSchema } from \"../../interfaces\";\n\n/**\n * 为实例生成唯一的 _id_ 标识\n * 优先使用 instanceId,如果没有则生成临时 ID\n */\nfunction generateInstanceId(instance: any): string {\n if (instance._id_) {\n return instance._id_;\n }\n if (instance.instanceId) {\n return instance.instanceId;\n }\n return `temp_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n}\n\nexport function mergeInstanceSchema(\n prevInstanceSchema: InstanceSchema | null,\n currentInstanceSchema: InstanceSchema\n): InstanceSchema {\n // 如果没有之前的 schema,直接返回当前的 schema(添加 _id_)\n if (!prevInstanceSchema) {\n return {\n ...currentInstanceSchema,\n imports: currentInstanceSchema.imports?.map((item) => ({\n ...item,\n _id_: generateInstanceId(item),\n })),\n };\n }\n\n // 获取要删除的实例ID集合\n const deleteIds = new Set(currentInstanceSchema.deletes || []);\n\n // 基于之前的 imports 创建映射表,key 为 _id_\n const importMap = new Map<string, any>();\n\n // 先将之前的 imports 加入映射表(排除需要删除的实例)\n prevInstanceSchema.imports?.forEach((item) => {\n if (item._id_ && !deleteIds.has(item.instanceId || \"\")) {\n importMap.set(item._id_, item);\n }\n });\n\n // 处理当前的 imports:新增或更新\n currentInstanceSchema.imports?.forEach((item) => {\n // 为实例生成或保留 _id_\n const instanceId = generateInstanceId(item);\n const instanceWithId = { ...item, _id_: instanceId };\n\n if (item.instanceId) {\n // 有 instanceId:更新现有实例\n // 查找是否已存在相同 instanceId 的实例\n const existingEntry = Array.from(importMap.entries()).find(\n ([_, existingItem]) => existingItem.instanceId === item.instanceId\n );\n if (existingEntry) {\n // 更新现有实例,保留原有的 _id_\n importMap.set(existingEntry[0], {\n ...instanceWithId,\n _id_: existingEntry[0],\n });\n } else {\n // 新的已存在实例\n importMap.set(instanceId, instanceWithId);\n }\n } else {\n // 没有 instanceId:新增实例\n importMap.set(instanceId, instanceWithId);\n }\n });\n\n // 合并 deletes 列表(去重)\n const mergedDeletes = new Set([\n ...(prevInstanceSchema.deletes || []),\n ...(currentInstanceSchema.deletes || []),\n ]);\n\n // 构建最终的结果\n return {\n objectId: currentInstanceSchema.objectId || prevInstanceSchema.objectId,\n imports: Array.from(importMap.values()),\n deletes: Array.from(mergedDeletes),\n };\n}\n","import React, { useState, useCallback, useEffect, useContext } from \"react\";\nimport { handleHttpError } from \"@next-core/runtime\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { ElevoObjectApi_importServiceObjectInstances } from \"@next-api-sdk/llm-sdk\";\nimport type {\n Modal,\n ModalProps,\n ModalEvents,\n ModalMapEvents,\n} from \"@next-bricks/containers/modal\";\nimport { http } from \"@next-core/http\";\nimport type {\n ChatPayload,\n ConversationPatch,\n RequestStore,\n} from \"../../../shared/interfaces\";\nimport { ChatPanelContent } from \"../../../chat-panel/ChatPanelContent\";\nimport { InstanceList } from \"./InstanceList\";\n\nimport styles from \"./AddObjectInstModal.module.css\";\nimport {\n SpaceDetail,\n BusinessObject,\n InstanceSchema,\n InstanceItem,\n} from \"../../interfaces\";\nimport { K, t } from \"../../i18n.js\";\nimport { WorkbenchContext } from \"../../workbenchContext\";\nimport { BusinessInstanceCard } from \"../BusinessInstanceCard\";\nimport { mergeInstanceSchema } from \"./utils\";\n\nconst WrappedModal = wrapBrick<\n Modal,\n ModalProps & {\n themeVariant?: \"default\" | \"elevo\";\n headerBordered?: boolean;\n },\n ModalEvents,\n ModalMapEvents\n>(\"eo-modal\", {\n onClose: \"close\",\n onConfirm: \"confirm\",\n onCancel: \"cancel\",\n onOpen: \"open\",\n});\n\nexport interface AddObjectInstModalProps {\n visible: boolean;\n spaceDetail: SpaceDetail;\n businessObject: BusinessObject;\n onSuccess?: () => void;\n onCancel?: () => void;\n}\n\nexport function AddObjectInstModal({\n visible,\n spaceDetail,\n businessObject,\n onSuccess,\n onCancel,\n}: AddObjectInstModalProps): React.ReactElement {\n const [submitDisabled, setSubmitDisabled] = useState(false);\n const [confirmLoading, setConfirmLoading] = useState(false);\n const [conversationId, setConversationId] = useState<string | null>(null);\n const [selectedInstanceId, setSelectedInstanceId] = useState<string | null>(\n null\n );\n const [initialRequest, setInitialRequest] = useState<RequestStore | null>(\n null\n );\n const [instanceSchema, setInstanceSchema] = useState<InstanceSchema | null>(\n null\n );\n\n const { uploadOptions } = useContext(WorkbenchContext);\n\n // 从 instanceSchema.imports 获取实例列表\n const instances: InstanceItem[] = instanceSchema?.imports || [];\n\n // 重置状态\n useEffect(() => {\n if (visible) {\n setSelectedInstanceId(null);\n setConversationId(null);\n setInstanceSchema(null);\n setConfirmLoading(false);\n }\n }, [visible]);\n\n // 处理取消\n const handleCancel = () => {\n onCancel?.();\n };\n\n // 处理确认创建\n const handleConfirm = async () => {\n if (instances.length === 0) {\n return;\n }\n\n setConfirmLoading(true);\n try {\n // 过滤掉前端生成的 _id_ 字段\n const imports = instanceSchema?.imports?.map((instance) => {\n const { _id_, ...rest } = instance;\n return rest;\n });\n\n await ElevoObjectApi_importServiceObjectInstances(\n businessObject.objectId,\n {\n imports: imports,\n deletes: instanceSchema?.deletes,\n }\n );\n\n // 只有成功时才调用 onSuccess 关闭弹窗\n onSuccess?.();\n } catch (error) {\n // 失败时不关闭弹窗\n handleHttpError(error);\n } finally {\n setConfirmLoading(false);\n }\n };\n\n const handleChatSubmit = useCallback(\n async (payload: ChatPayload) => {\n setSubmitDisabled(true);\n try {\n const res = await http.post<{\n data: { conversationId: string };\n }>(\n \"api/gateway/logic.llm.aiops_service/api/v1/elevo/conversations\",\n {}\n );\n const conversationId = res.data.conversationId;\n setConversationId(conversationId);\n setInitialRequest({\n ...payload,\n agentId: \"elevo-service_object_instance_schema\",\n cmd: {\n type: \"serviceObjectInstance-createOrEdit\",\n payload: {\n spaceInstanceId: spaceDetail.instanceId,\n serviceObjectId: businessObject.objectId,\n },\n },\n conversationId: conversationId,\n });\n } catch (e) {\n handleHttpError(e);\n } finally {\n setSubmitDisabled(false);\n }\n },\n [spaceDetail.instanceId, businessObject.objectId]\n );\n\n const handleData = useCallback((data: ConversationPatch) => {\n const firstPart = data?.tasks?.[0]?.jobs?.[0]?.messages?.[0]?.parts?.[0];\n\n // 检查是否是 DataPart 类型且 type 为 easy_cmd_instance\n if (\n firstPart?.type === \"data\" &&\n firstPart.data?.type === \"easy_cmd_business_instance\" &&\n firstPart.data?.content\n ) {\n const contentStr = firstPart.data.content;\n let currentInstanceSchema: InstanceSchema;\n try {\n currentInstanceSchema = JSON.parse(contentStr);\n } catch (error) {\n // 解析失败时静默返回,避免影响其他功能\n // eslint-disable-next-line no-console\n console.error(error);\n return;\n }\n\n setInstanceSchema((prevInstanceSchema) => {\n return mergeInstanceSchema(prevInstanceSchema, currentInstanceSchema);\n });\n }\n }, []);\n\n const handleDeleteInstance = useCallback((instanceId: string) => {\n setInstanceSchema((prev) => {\n if (!prev?.imports) return prev;\n return {\n ...prev,\n imports: prev.imports.filter((inst) => inst._id_ !== instanceId),\n };\n });\n setSelectedInstanceId((prev) => (prev === instanceId ? null : prev));\n }, []);\n\n const handleSelectInstance = useCallback((instanceId: string) => {\n setSelectedInstanceId(instanceId);\n }, []);\n\n // 根据 selectedInstanceId 获取选中的实例\n const selectedInstance = instances.find(\n (inst) => inst._id_ === selectedInstanceId\n );\n\n // 处理属性变更\n const handleAttrChange = useCallback(\n (attrId: string, value: any) => {\n if (!selectedInstanceId) return;\n\n setInstanceSchema((prev) => {\n if (!prev?.imports) return prev;\n return {\n ...prev,\n imports: prev.imports.map((inst) =>\n inst._id_ === selectedInstanceId\n ? { ...inst, [attrId]: value }\n : inst\n ),\n };\n });\n },\n [selectedInstanceId]\n );\n\n return (\n <WrappedModal\n themeVariant=\"elevo\"\n headerBordered\n modalTitle={t(K.ADD_INSTANCE_MODAL_TITLE, {\n objectName: businessObject.objectName,\n })}\n width=\"90%\"\n visible={visible}\n onCancel={handleCancel}\n onClose={handleCancel}\n closeWhenConfirm={false}\n onConfirm={handleConfirm}\n maskClosable={false}\n confirmText={t(K.CONFIRM_CREATE)}\n cancelText={t(K.CANCEL)}\n confirmDisabled={instances.length === 0 || confirmLoading}\n >\n <div className={styles.modalContent}>\n {/* 左侧: AI 助手对话区域 */}\n <div className={styles.aiAssistantArea}>\n <ChatPanelContent\n uploadOptions={uploadOptions}\n submitDisabled={submitDisabled}\n onChatSubmit={handleChatSubmit}\n conversationId={conversationId}\n initialRequest={initialRequest}\n onData={handleData}\n placeholder={t(K.ADD_INSTANCE_ASSISTANT_PLACEHOLDER)}\n help={{\n useBrick: {\n brick: \"ai-portal.chat-panel-welcome\",\n properties: {\n text: t(K.ADD_INSTANCE_ASSISTANT_WELCOME),\n },\n },\n }}\n />\n </div>\n\n {/* 中间: 已识别实例列表 */}\n <div className={styles.instanceListArea}>\n <div className={styles.instanceListHeader}>\n <span className={styles.headerTitle}>\n {t(K.IDENTIFIED_INSTANCES)}\n </span>\n <div className={styles.instanceCount}>{instances.length}</div>\n </div>\n <InstanceList\n instances={instances}\n businessObject={businessObject}\n selectedInstanceId={selectedInstanceId}\n onSelect={handleSelectInstance}\n onDelete={handleDeleteInstance}\n />\n </div>\n\n {/* 右侧: 实例详情预览 */}\n <div className={styles.detailArea}>\n <BusinessInstanceCard\n instance={selectedInstance}\n attrs={businessObject.attributes || []}\n title={t(K.INSTANCE_DETAIL)}\n onAttrChange={handleAttrChange}\n />\n </div>\n </div>\n </WrappedModal>\n );\n}\n","import React, {\n useContext,\n useEffect,\n useState,\n useCallback,\n useImperativeHandle,\n useRef,\n forwardRef,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport moment from \"moment\";\nimport {\n ElevoObjectApi_listServiceObjectInstances,\n ElevoObjectApi_listServiceObjects,\n} from \"@next-api-sdk/llm-sdk\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { humanizeTime, HumanizeTimeFormat } from \"@next-shared/datetime\";\n\nimport styles from \"./SpaceSidebar.module.css\";\nimport { K, t } from \"../i18n.js\";\nimport { WorkbenchContext } from \"../workbenchContext\";\nimport {\n BusinessObject,\n BusinessInstance,\n BusinessObjectGroup,\n KnowledgeItem,\n InstanceUpdateTrigger,\n} from \"../interfaces\";\nimport { KnowledgesList } from \"./knowLedgesList.js\";\nimport { EmptyState } from \"./EmptyState.js\";\nimport { AddObjectInstModal } from \"../components/AddObjectInstModal/AddObjectInstModal\";\nimport { handleHttpError } from \"@next-core/runtime\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface SpaceSidebarProps {\n businessObjects?: BusinessObjectGroup[];\n knowledgeList?: KnowledgeItem[];\n onInstanceClick?: (\n instance: BusinessInstance,\n businessObject: BusinessObject\n ) => void;\n onKnowledgeClick?: (knowledge: KnowledgeItem) => void;\n onKnowledgeAdd?: () => void;\n instanceUpdateTrigger?: InstanceUpdateTrigger;\n}\n\nexport function SpaceSidebar(props: SpaceSidebarProps) {\n const {\n knowledgeList,\n onInstanceClick,\n onKnowledgeClick,\n onKnowledgeAdd,\n instanceUpdateTrigger,\n } = props;\n const [activeTab, setActiveTab] = useState<\"business\" | \"knowledge\">(\n \"business\"\n );\n\n const handleTabChange = (tab: \"business\" | \"knowledge\") => {\n setActiveTab(tab);\n };\n\n return (\n <div className={styles.spaceSidebar}>\n <div className={styles.tabList}>\n <button\n className={classNames(styles.tabButton, {\n [styles.active]: activeTab === \"business\",\n })}\n onClick={() => handleTabChange(\"business\")}\n >\n {t(K.BUSINESS_OBJECTS)}\n </button>\n <button\n className={classNames(styles.tabButton, {\n [styles.active]: activeTab === \"knowledge\",\n })}\n onClick={() => handleTabChange(\"knowledge\")}\n >\n {t(K.KNOWLEDGE)}\n </button>\n </div>\n\n <div className={styles.sidebarContent}>\n <div\n className={classNames(styles.tabContent, {\n [styles.tabContentActive]: activeTab === \"business\",\n })}\n >\n <BusinessCategoryPanel\n onInstanceClick={onInstanceClick}\n instanceUpdateTrigger={instanceUpdateTrigger}\n />\n </div>\n <div\n className={classNames(styles.tabContent, {\n [styles.tabContentActive]: activeTab === \"knowledge\",\n })}\n >\n <KnowledgesList\n knowledges={knowledgeList}\n onKnowledgeClick={onKnowledgeClick}\n onAddKnowledge={onKnowledgeAdd}\n />\n </div>\n </div>\n </div>\n );\n}\n\ninterface BusinessObjectItemProps {\n businessObject: BusinessObject;\n activeInstanceId: string | null;\n isExpanded: boolean;\n onToggleExpand: (objectId: string) => void;\n onInstanceClick: (\n instance: BusinessInstance,\n businessObject: BusinessObject\n ) => void;\n onAddClick: (e: React.MouseEvent, objectId: string) => void;\n getShowAttrIds: (objectId: string) => string[];\n}\n\nexport interface BusinessObjectItemRef {\n refresh: () => Promise<void>;\n updateInstance: (\n instanceId: string,\n updatedData: Partial<BusinessInstance>\n ) => void;\n}\n\nconst BusinessObjectItem = forwardRef<\n BusinessObjectItemRef,\n BusinessObjectItemProps\n>(function BusinessObjectItem(\n {\n businessObject,\n activeInstanceId,\n isExpanded,\n onToggleExpand,\n onInstanceClick,\n onAddClick,\n getShowAttrIds,\n },\n ref\n) {\n const [isLoading, setIsLoading] = useState(false);\n const [hasError, setHasError] = useState(false);\n const [instances, setInstances] = useState<BusinessInstance[]>([]);\n\n // 加载实例列表的核心函数\n const loadInstances = useCallback(async () => {\n setIsLoading(true);\n setHasError(false);\n\n try {\n const res = await ElevoObjectApi_listServiceObjectInstances(\n businessObject.objectId,\n { page: 1, pageSize: 3000 }\n );\n const data = res.list as BusinessInstance[];\n setInstances(data);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to load instances:\", error);\n setHasError(true);\n } finally {\n setIsLoading(false);\n }\n }, [businessObject.objectId]);\n\n // 暴露给父组件的方法\n useImperativeHandle(\n ref,\n () => ({\n refresh: loadInstances,\n updateInstance: (\n instanceId: string,\n updatedData: Partial<BusinessInstance>\n ) => {\n setInstances((prevInstances) =>\n prevInstances.map((instance) =>\n instance.instanceId === instanceId\n ? { ...instance, ...updatedData }\n : instance\n )\n );\n },\n }),\n [loadInstances]\n );\n\n // 监听展开状态变化,展开时加载数据\n useEffect(() => {\n if (!isExpanded) return;\n\n // 如果已有数据(缓存),不重新加载\n if (instances.length > 0) {\n return;\n }\n\n // 首次展开,调用 API\n loadInstances();\n }, [isExpanded, instances.length, loadInstances]);\n\n // 切换展开/折叠\n const handleHeaderClick = () => {\n onToggleExpand(businessObject.objectId);\n };\n\n // 处理添加按钮点击\n const handleAddClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n onAddClick(e, businessObject.objectId);\n };\n\n // 处理实例点击\n const handleInstanceClick = (instance: BusinessInstance) => {\n onInstanceClick(instance, businessObject);\n };\n\n // 处理重试点击\n const handleRetryClick = () => {\n setHasError(false);\n loadInstances();\n };\n\n return (\n <div\n className={`${styles.objectGroup} ${isExpanded ? styles.expanded : \"\"}`}\n >\n <div className={styles.objectHeader} onClick={handleHeaderClick}>\n <span className={styles.objectName}>{businessObject.objectName}</span>\n <div className={styles.objectHeaderActions}>\n <WrappedIcon\n lib=\"lucide\"\n icon=\"plus\"\n className={styles.addIcon}\n onClick={handleAddClick}\n />\n <WrappedIcon\n lib=\"lucide\"\n icon={isExpanded ? \"chevron-down\" : \"chevron-right\"}\n className={styles.expandIcon}\n />\n </div>\n </div>\n {isExpanded && (\n <div className={styles.instanceList}>\n {isLoading ? (\n <div className={styles.loadingContainer}>\n <WrappedIcon\n lib=\"antd\"\n icon=\"loading\"\n theme=\"outlined\"\n className={styles.loadingIcon}\n />\n <span className={styles.loadingText}>{t(K.LOADING)}</span>\n </div>\n ) : hasError ? (\n <div className={styles.errorContainer} onClick={handleRetryClick}>\n <span className={styles.errorText}>{t(K.LOAD_FAILED)}</span>\n <span className={styles.retryText}>{t(K.CLICK_TO_RETRY)}</span>\n </div>\n ) : instances.length === 0 ? (\n <div className={styles.emptyState}>{t(K.NO_INSTANCES)}</div>\n ) : (\n instances.map((instance) => (\n <div\n key={instance.instanceId}\n className={`${styles.instanceCard} ${\n activeInstanceId === instance.instanceId ? styles.active : \"\"\n }`}\n onClick={() => handleInstanceClick(instance)}\n >\n <div className={styles.instanceHeader}>\n <span className={styles.instanceName}>\n {\n instance?.[\n getShowAttrIds(\n businessObject.objectId\n )?.[0] as keyof BusinessInstance\n ]\n }\n </span>\n <span className={styles.instanceTime}>\n {humanizeTime(\n moment(\n instance.ctime || instance.mtime,\n \"YYYY-MM-DD HH:mm:ss\"\n ).valueOf(),\n HumanizeTimeFormat.relative\n )}\n </span>\n </div>\n {getShowAttrIds(businessObject.objectId)?.[1] && (\n <div className={styles.instanceStatus}>\n <span className={styles.statusTag}>\n {\n instance?.[\n getShowAttrIds(\n businessObject.objectId\n )[1] as keyof BusinessInstance\n ]\n }\n </span>\n </div>\n )}\n </div>\n ))\n )}\n </div>\n )}\n </div>\n );\n});\n\ninterface BusinessCategoryPanelProps {\n onInstanceClick?: (\n instance: BusinessInstance,\n businessObject: BusinessObject\n ) => void;\n instanceUpdateTrigger?: InstanceUpdateTrigger;\n}\n\nfunction BusinessCategoryPanel({\n onInstanceClick,\n instanceUpdateTrigger,\n}: BusinessCategoryPanelProps) {\n const { spaceDetail } = useContext(WorkbenchContext);\n\n const [businessObjects, setBusinessObjects] = useState<BusinessObject[]>([]);\n\n const [isInitialLoading, setIsInitialLoading] = useState(true);\n\n const [activeInstanceId, setActiveInstanceId] = useState<string | null>(null);\n\n const [addModalVisible, setAddModalVisible] = useState(false);\n const [selectedObject, setSelectedObject] = useState<BusinessObject | null>(\n null\n );\n\n // 用于控制当前展开的分类\n const [expandedObjectId, setExpandedObjectId] = useState<string | null>(null);\n\n // 用于存储子组件的 ref\n const businessObjectItemRefs = useRef<\n Record<string, BusinessObjectItemRef | null>\n >({});\n\n const handleInstanceClick = useCallback(\n (instance: BusinessInstance, businessObject: BusinessObject) => {\n setActiveInstanceId(instance.instanceId);\n onInstanceClick?.(instance, businessObject);\n },\n [onInstanceClick]\n );\n\n useEffect(() => {\n const fetchBusinessFlows = async () => {\n setIsInitialLoading(true);\n try {\n const res = await ElevoObjectApi_listServiceObjects(\n spaceDetail.instanceId,\n {\n includeDetails: true,\n }\n );\n setBusinessObjects(res.list as BusinessObject[]);\n // 默认展开第一个分类\n if (res.list && res.list.length > 0) {\n setExpandedObjectId(res.list[0].objectId || null);\n }\n } catch (error) {\n handleHttpError(error);\n } finally {\n setIsInitialLoading(false);\n }\n };\n fetchBusinessFlows();\n }, [spaceDetail.instanceId]);\n\n const getShowAttrIds = useCallback(\n (objectId: string): string[] => {\n const attrs = businessObjects.find(\n (item) => item.objectId === objectId\n )?.attributes;\n\n if (attrs?.length) {\n return [\n attrs[0].id, // 拿第一个属性作为主展示名称\n attrs.find((item) => item.id === \"status\")?.id, // 拿状态列作为副展示信息\n ].filter(Boolean) as string[];\n }\n\n return [];\n },\n [businessObjects]\n );\n\n const handleAddInstance = useCallback(\n (e: React.MouseEvent, objectId: string) => {\n e.stopPropagation();\n const obj = businessObjects.find((o) => o.objectId === objectId);\n if (obj) {\n setSelectedObject(obj);\n setAddModalVisible(true);\n }\n },\n [businessObjects]\n );\n\n const handleModalSuccess = useCallback(() => {\n setAddModalVisible(false);\n if (selectedObject) {\n // 调用子组件的 refresh 方法刷新实例列表\n businessObjectItemRefs.current[selectedObject.objectId]?.refresh();\n }\n }, [selectedObject]);\n\n const handleModalCancel = () => {\n setAddModalVisible(false);\n setSelectedObject(null);\n };\n\n // 处理分类展开/折叠切换\n const handleToggleExpand = useCallback((objectId: string) => {\n setExpandedObjectId((prevId) => (prevId === objectId ? null : objectId));\n }, []);\n\n // 监听外部的 instanceUpdateTrigger,调用子组件的 updateInstance 方法\n useEffect(() => {\n if (!instanceUpdateTrigger) return;\n\n const { objectId, instanceId, updatedData } = instanceUpdateTrigger;\n\n // 调用对应子组件的 updateInstance 方法\n businessObjectItemRefs.current[objectId]?.updateInstance(\n instanceId,\n updatedData\n );\n }, [instanceUpdateTrigger]);\n\n if (isInitialLoading) {\n return (\n <div className={styles.knowledgeList}>\n <div className={styles.loadingContainer}>\n <WrappedIcon\n lib=\"antd\"\n icon=\"loading\"\n theme=\"outlined\"\n className={styles.loadingIcon}\n />\n <span className={styles.loadingText}>{t(K.LOADING)}</span>\n </div>\n </div>\n );\n }\n\n if (!businessObjects?.length) {\n return <EmptyState title={t(K.NO_BUSINESS_OBJECTS)} />;\n }\n\n return (\n <>\n <div className={styles.businessObjectList}>\n {businessObjects.map((obj) => (\n <BusinessObjectItem\n key={obj.objectId}\n ref={(ref) => (businessObjectItemRefs.current[obj.objectId] = ref)}\n businessObject={obj}\n activeInstanceId={activeInstanceId}\n isExpanded={expandedObjectId === obj.objectId}\n onToggleExpand={handleToggleExpand}\n onInstanceClick={handleInstanceClick}\n onAddClick={handleAddInstance}\n getShowAttrIds={getShowAttrIds}\n />\n ))}\n </div>\n\n {selectedObject && (\n <AddObjectInstModal\n visible={addModalVisible}\n spaceDetail={spaceDetail}\n businessObject={selectedObject}\n onSuccess={handleModalSuccess}\n onCancel={handleModalCancel}\n />\n )}\n </>\n );\n}\n","import { http } from \"@next-core/http\";\n/**\n * @description 获取elevo会话列表\n * @endpoint GET /api/v1/elevo/conversations\n */\nexport const ElevoApi_listElevoConversations = async (params, options) => /**! @contract easyops.api.llm.elevo.ListElevoConversations@1.0.0 */(await http.get(\"api/gateway/logic.llm.aiops_service/api/v1/elevo/conversations\", {\n ...options,\n params\n})).data;\n//# sourceMappingURL=listElevoConversations.js.map","// 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--_XAk9tox{display:flex;flex-direction:column;height:100%;padding:20px 24px 0}.header--bUDpPFJV{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.title--bqZw5mM0{margin:0;font-size:14px;font-weight:500;color:rgba(0,0,0,0.85)}.countBadge--_goWr0PL{display:inline-flex;align-items:center;justify-content:center;padding:2px 8px;background:rgba(0,0,0,0.04);border:1px solid rgba(0,0,0,0.15);border-radius:20px;font-size:10px;font-weight:500;color:rgba(0,0,0,0.45);line-height:14px}.listContainer--ItR1OH5U{flex:1;overflow-y:auto;margin-bottom:13px}.activityCard--dXzHU6n7{display:flex;gap:6px;align-items:center;padding:13px;margin-bottom:8px;border:1px solid rgba(0,0,0,0.1);border-radius:8px;min-height:70px;cursor:default}.activityCard--dXzHU6n7.clickable--UF4BKvhH{background:white;cursor:pointer;transition:all 0.2s}.activityCard--dXzHU6n7.clickable--UF4BKvhH:hover{box-shadow:0 2px 8px rgba(0,0,0,0.08)}.activityCard--dXzHU6n7.disabled--GXec_wcg{background:#fafafa;cursor:not-allowed}.iconWrapper--KprtgQe5{flex-shrink:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:8px}.iconWrapper--KprtgQe5.info--AqBwms_7{background:rgba(0,0,0,0.04)}.iconWrapper--KprtgQe5.conversation--wSUOmX1I{background:rgba(37,64,255,0.06)}.content--w4zmkz1Y{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.titleRow--JcAdyhON{display:flex;justify-content:space-between;align-items:center;gap:8px}.activityTitle--mw4GqHVz{font-size:14px;font-weight:500;color:rgba(0,0,0,0.85);line-height:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeText--dO8PiouH{flex-shrink:0;font-size:12px;color:rgba(0,0,0,0.45);line-height:16px}.activityDesc--Yx_FJsWI{font-size:12px;color:rgba(0,0,0,0.45);line-height:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.footer--DLjXXAjr{flex-shrink:0;border-top:1px solid #e2e8f0;padding:13px 0;margin:0 -24px;padding-left:24px;padding-right:24px}.loadingState--I56ZwUkL{flex:1;display:flex;align-items:center;justify-content:center;color:rgba(0,0,0,0.45);font-size:14px}.empty--EJ53z2xk{flex:1}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": `container--_XAk9tox`,\n\t\"header\": `header--bUDpPFJV`,\n\t\"title\": `title--bqZw5mM0`,\n\t\"countBadge\": `countBadge--_goWr0PL`,\n\t\"listContainer\": `listContainer--ItR1OH5U`,\n\t\"activityCard\": `activityCard--dXzHU6n7`,\n\t\"clickable\": `clickable--UF4BKvhH`,\n\t\"disabled\": `disabled--GXec_wcg`,\n\t\"iconWrapper\": `iconWrapper--KprtgQe5`,\n\t\"info\": `info--AqBwms_7`,\n\t\"conversation\": `conversation--wSUOmX1I`,\n\t\"content\": `content--w4zmkz1Y`,\n\t\"titleRow\": `titleRow--JcAdyhON`,\n\t\"activityTitle\": `activityTitle--mw4GqHVz`,\n\t\"timeText\": `timeText--dO8PiouH`,\n\t\"activityDesc\": `activityDesc--Yx_FJsWI`,\n\t\"footer\": `footer--DLjXXAjr`,\n\t\"loadingState\": `loadingState--I56ZwUkL`,\n\t\"empty\": `empty--EJ53z2xk`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { wrapBrick } from \"@next-core/react-element\";\n\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\";\n\nimport type {\n Drawer,\n DrawerProps,\n DrawerEvents,\n DrawerMapEvents,\n} from \"@next-bricks/containers/drawer\";\n\nimport type { IconButton, IconButtonProps } from \"../icon-button\";\nimport { TagProps, Tag } from \"@next-bricks/basic/tag\";\nimport { Input, InputProps } from \"@next-bricks/form/input\";\nimport { Textarea, TextareaProps } from \"@next-bricks/form/textarea\";\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 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 WrappedTag = wrapBrick<Tag, TagProps>(\"eo-tag\");\n\nexport interface InputEvents {\n change: CustomEvent<string>;\n}\nexport interface InputEventsMap {\n onValueChange: \"change\";\n}\n\nexport const WrappedInput = wrapBrick<\n Input,\n InputProps,\n InputEvents,\n InputEventsMap\n>(\"eo-input\", {\n onValueChange: \"change\",\n});\n\nexport interface TextareaEvents {\n change: CustomEvent<string>;\n}\nexport interface TextareaEventsMap {\n onValueChange: \"change\";\n}\nexport const WrappedTextarea = wrapBrick<\n Textarea,\n TextareaProps,\n TextareaEvents,\n TextareaEventsMap\n>(\"eo-textarea\", {\n onValueChange: \"change\",\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, `.instanceCardWrapper--YChTeaOL{display:flex;justify-content:center;align-items:flex-start;min-height:100%}.instanceCard--yimi55PI{width:100%;max-width:800px;background:#ffffff;border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,0.1)}.instanceCardTitle--nVx1BQrD{margin:0;padding:20px 24px;font-size:20px;font-weight:600;color:#0f172b;border-bottom:1px solid #e5e6eb}.fieldsViewContainer--PWVmcDKi{padding:24px}.fieldsViewList--woJ19V1a{display:grid;grid-template-columns:repeat(1,1fr);gap:24px 32px}@media (min-width: 768px){.fieldsViewList--woJ19V1a{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1200px){.fieldsViewList--woJ19V1a{grid-template-columns:repeat(3,1fr)}}.fieldsViewItem--BRU5ZIbs{display:flex;flex-direction:column;gap:8px;min-width:0}.fieldsViewLabelRow--dIoC1XV2{display:flex;align-items:center;gap:6px}.fieldsViewLabel--vMxg5D0I{color:rgba(0,0,0,0.65);font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:0.5px}.fieldsViewValue--rYHGRpv3{color:#1d2129;font-size:14px;min-height:32px;display:flex;align-items:center;min-width:0}.editButton--YivrmJbF{background:none;border:none;cursor:pointer;padding:2px;display:flex;align-items:center;justify-content:center;border-radius:4px;color:#86909c;transition:all 0.2s ease;flex-shrink:0;width:20px;height:20px;font-size:14px}.editButton--YivrmJbF:hover{background-color:#f2f3f5;color:#165dff}.editButton--YivrmJbF:active{background-color:#e5e6eb}.fieldTextValue--db3F5bRL{flex:1;color:#1d2129;font-size:14px;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.fieldTextValue--db3F5bRL:empty::before{content:\"-\";color:#c9cdd4}.fieldsViewItem--BRU5ZIbs.fullWidth--MqVqSrjc{grid-column:1/-1}.fieldsViewSection--I79QVQn7{margin-top:32px}.fieldsViewSectionHeader--gDcXAeu5{display:flex;align-items:center;gap:6px;margin-bottom:12px;color:#1d2129;font-weight:600;font-size:14px}.fieldsViewSectionIcon--IQluLpxP{font-size:16px}.fieldsViewFileList--oaUvHg2x{display:flex;flex-wrap:wrap;gap:16px}.fieldsViewFileItem--ypHwKR58{display:flex;align-items:center;gap:12px;padding:12px 16px;background-color:#f7f8fa;border-radius:8px;border:1px solid rgba(0,0,0,0.1);cursor:pointer;transition:background-color 0.2s;width:280px}.fieldsViewFileItem--ypHwKR58:hover{background-color:#ebedf0}.fieldsViewFileIcon--SAXAmkN_{width:26px;height:32px;flex-shrink:0}.fieldsViewFileContent--mrryMS8h{display:flex;flex-direction:column;flex:1;min-width:0}.fieldsViewFileName--LCQ6a28z{color:#1d2129;font-size:14px;line-height:22px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fieldsViewFileSize--DDada8cS{color:#86909c;font-size:12px;line-height:20px}.fieldsViewTextContent--P0uLMG_g{padding:16px;background:#f7f8fa;border-radius:4px;color:#1d2129;white-space:pre-wrap;word-break:break-word;font-size:14px}.emptyState--mBKl5jcR{margin-top:62px}.inputWrapper--gZ6qx476{width:100%}.inputWrapper--gZ6qx476 eo-input{width:100%}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"instanceCardWrapper\": `instanceCardWrapper--YChTeaOL`,\n\t\"instanceCard\": `instanceCard--yimi55PI`,\n\t\"instanceCardTitle\": `instanceCardTitle--nVx1BQrD`,\n\t\"fieldsViewContainer\": `fieldsViewContainer--PWVmcDKi`,\n\t\"fieldsViewList\": `fieldsViewList--woJ19V1a`,\n\t\"fieldsViewItem\": `fieldsViewItem--BRU5ZIbs`,\n\t\"fieldsViewLabelRow\": `fieldsViewLabelRow--dIoC1XV2`,\n\t\"fieldsViewLabel\": `fieldsViewLabel--vMxg5D0I`,\n\t\"fieldsViewValue\": `fieldsViewValue--rYHGRpv3`,\n\t\"editButton\": `editButton--YivrmJbF`,\n\t\"fieldTextValue\": `fieldTextValue--db3F5bRL`,\n\t\"fullWidth\": `fullWidth--MqVqSrjc`,\n\t\"fieldsViewSection\": `fieldsViewSection--I79QVQn7`,\n\t\"fieldsViewSectionHeader\": `fieldsViewSectionHeader--gDcXAeu5`,\n\t\"fieldsViewSectionIcon\": `fieldsViewSectionIcon--IQluLpxP`,\n\t\"fieldsViewFileList\": `fieldsViewFileList--oaUvHg2x`,\n\t\"fieldsViewFileItem\": `fieldsViewFileItem--ypHwKR58`,\n\t\"fieldsViewFileIcon\": `fieldsViewFileIcon--SAXAmkN_`,\n\t\"fieldsViewFileContent\": `fieldsViewFileContent--mrryMS8h`,\n\t\"fieldsViewFileName\": `fieldsViewFileName--LCQ6a28z`,\n\t\"fieldsViewFileSize\": `fieldsViewFileSize--DDada8cS`,\n\t\"fieldsViewTextContent\": `fieldsViewTextContent--P0uLMG_g`,\n\t\"emptyState\": `emptyState--mBKl5jcR`,\n\t\"inputWrapper\": `inputWrapper--gZ6qx476`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { createContext } from \"react\";\nimport type { Activity } from \"../../interfaces\";\n\ninterface ConfigContextType {\n modifyActivity?: (name: string, newActivity: Activity) => void;\n}\nexport const ConfigContext = createContext<ConfigContextType>({});\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, `.spaceWorkbenchHeader--NoSj8NLX{display:flex;align-items:center;justify-content:space-between;padding:12px 24px}.headerLeft--jWRjKNkz{display:flex;align-items:center;gap:12px;flex:1}.spaceIcon--_VeACn9l{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;background:#2540ff;box-shadow:0px 4px 4px 0px rgba(37,64,255,0.1);overflow:hidden;flex-shrink:0}.spaceIcon--_VeACn9l img{width:28px;height:28px;object-fit:cover}.spaceTitle--PPb6FXpz{margin:0;font-size:18px;font-weight:600;color:rgba(0,0,0,0.85);line-height:28px}.actionIcons--W4anjF4d{display:flex;align-items:center;gap:4px;margin-left:16px}.headerRight--PLLN5SYh{display:flex;align-items:center;gap:16px;position:relative}.divider--gSRDBGxh{width:1px;height:20px;background-color:rgba(0,0,0,0.15)}.iconButton--YlNsq3b3{display:flex;align-items:center;justify-content:center;font-size:18px;width:28px;height:28px;padding:0;border:none;border-radius:8px;background:none;cursor:pointer;color:inherit;flex-shrink:0;transition:background-color 0.2s ease}.iconButton--YlNsq3b3 eo-icon{font-size:16px;color:rgba(0,0,0,0.65);transition:color 0.2s ease}.iconButton--YlNsq3b3:hover{background:rgba(0,0,0,0.04)}.iconButton--YlNsq3b3:active{background:rgba(0,0,0,0.08)}.iconButton--YlNsq3b3:focus{outline:none}.iconButton--YlNsq3b3.active--rgCeXqMc{background:rgba(0,0,0,0.06)}.spaceDescription--ePhG2k53{background-color:rgba(184,187,205,0.2);border-radius:12px;display:flex;flex-direction:column;overflow:hidden;position:relative;max-height:0;opacity:0;margin:0 24px;padding:0 20px;gap:0;transform:translateY(-10px);transition:all 0.3s cubic-bezier(0.645,0.045,0.355,1)}.spaceDescriptionVisible--fnigGZCE{max-height:500px;opacity:1;margin:4px 24px 12px;padding:18px 20px;gap:11px;transform:translateY(0)}.descriptionHeader--j55xW95U{display:flex;align-items:center;justify-content:space-between}.descriptionTitle--oMCY5toR{font-size:14px;font-weight:500;line-height:15px;color:rgba(0,0,0,0.85);text-transform:uppercase;letter-spacing:0.6172px;margin:0}.descriptionEditButton--FTpj2u4B{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:6px;background:none;cursor:pointer;color:rgba(0,0,0,0.45);transition:all 0.2s ease;flex-shrink:0}.descriptionEditButton--FTpj2u4B eo-icon{font-size:14px;color:rgba(0,0,0,0.45);transition:color 0.2s ease}.descriptionEditButton--FTpj2u4B:hover{background:rgba(0,0,0,0.06)}.descriptionEditButton--FTpj2u4B:hover eo-icon{color:rgba(0,0,0,0.65)}.descriptionEditButton--FTpj2u4B:active{background:rgba(0,0,0,0.1)}.descriptionEditButton--FTpj2u4B:focus{outline:none}.descriptionContent--vNS05IGL{font-size:14px;font-weight:400;line-height:22.75px;color:rgba(0,0,0,0.45);margin:0}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"spaceWorkbenchHeader\": `spaceWorkbenchHeader--NoSj8NLX`,\n\t\"headerLeft\": `headerLeft--jWRjKNkz`,\n\t\"spaceIcon\": `spaceIcon--_VeACn9l`,\n\t\"spaceTitle\": `spaceTitle--PPb6FXpz`,\n\t\"actionIcons\": `actionIcons--W4anjF4d`,\n\t\"headerRight\": `headerRight--PLLN5SYh`,\n\t\"divider\": `divider--gSRDBGxh`,\n\t\"iconButton\": `iconButton--YlNsq3b3`,\n\t\"active\": `active--rgCeXqMc`,\n\t\"spaceDescription\": `spaceDescription--ePhG2k53`,\n\t\"spaceDescriptionVisible\": `spaceDescriptionVisible--fnigGZCE`,\n\t\"descriptionHeader\": `descriptionHeader--j55xW95U`,\n\t\"descriptionTitle\": `descriptionTitle--oMCY5toR`,\n\t\"descriptionEditButton\": `descriptionEditButton--FTpj2u4B`,\n\t\"descriptionContent\": `descriptionContent--vNS05IGL`\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, `.modalContent--dIoSJqb4{display:flex;height:calc(100vh - 200px);min-height:500px;max-height:700px;margin:-16px -20px;gap:0;overflow:hidden;border-bottom:1px solid rgba(0,0,0,0.06)}.aiAssistantArea--OO7TCUd8{flex:20;display:flex;flex-direction:column;border-right:1px solid rgba(0,0,0,0.1);padding:24px;background:white}.instanceListArea--ERaNqEwo{flex:14;display:flex;flex-direction:column;border-right:1px solid rgba(0,0,0,0.1);padding:24px 16px;background:rgba(184,187,205,0.15);overflow:hidden}.instanceListHeader--weSif_tm{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;padding:0 8px}.headerTitle--PWYXcuqF{font-size:14px;color:rgba(0,0,0,0.65);font-weight:400}.instanceCount--Php1Fz0f{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:18px;padding:2px 8px;background:rgba(0,0,0,0.04);border:1px solid rgba(0,0,0,0.15);border-radius:20px;font-size:10px;color:rgba(0,0,0,0.45);font-weight:500}.detailArea--Gbs1dNyR{flex:66;display:flex;padding:24px 16px;flex-direction:column;background:rgba(184,187,205,0.15);overflow-y:auto}.emptyDetail--HUuVAPkU{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}.emptyIcon--tnLBlsng{font-size:48px;opacity:0.3}.emptyText--sLGCrWlm{font-size:14px;color:rgba(0,0,0,0.45)}.emptyHint--x1N3M44U{font-size:12px;color:rgba(0,0,0,0.3)}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"modalContent\": `modalContent--dIoSJqb4`,\n\t\"aiAssistantArea\": `aiAssistantArea--OO7TCUd8`,\n\t\"instanceListArea\": `instanceListArea--ERaNqEwo`,\n\t\"instanceListHeader\": `instanceListHeader--weSif_tm`,\n\t\"headerTitle\": `headerTitle--PWYXcuqF`,\n\t\"instanceCount\": `instanceCount--Php1Fz0f`,\n\t\"detailArea\": `detailArea--Gbs1dNyR`,\n\t\"emptyDetail\": `emptyDetail--HUuVAPkU`,\n\t\"emptyIcon\": `emptyIcon--tnLBlsng`,\n\t\"emptyText\": `emptyText--sLGCrWlm`,\n\t\"emptyHint\": `emptyHint--x1N3M44U`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n DESCRIPTION = \"DESCRIPTION\",\n SPACE_GUIDE_SECTION_TITLE = \"SPACE_GUIDE_SECTION_TITLE\",\n SPACE_GUIDE_CARD_1_TITLE = \"SPACE_GUIDE_CARD_1_TITLE\",\n SPACE_GUIDE_CARD_2_TITLE = \"SPACE_GUIDE_CARD_2_TITLE\",\n SPACE_GUIDE_CARD_3_TITLE = \"SPACE_GUIDE_CARD_3_TITLE\",\n BUSINESS_OBJECTS = \"BUSINESS_OBJECTS\",\n BUSINESS_FLOWS = \"BUSINESS_FLOWS\",\n NO_BUSINESS_OBJECTS_FLOWS = \"NO_BUSINESS_OBJECTS_FLOWS\",\n GUIDE_AI_TO_GENERATE_CONFIG = \"GUIDE_AI_TO_GENERATE_CONFIG\",\n NO_CONFIGURATION_DATA = \"NO_CONFIGURATION_DATA\",\n FIELD_DEFINITIONS = \"FIELD_DEFINITIONS\",\n LIFECYCLE_STATUS = \"LIFECYCLE_STATUS\",\n PREREQUISITES = \"PREREQUISITES\",\n PREREQUISITES_SUBTITLE = \"PREREQUISITES_SUBTITLE\",\n ACTIVITY_DESCRIPTION = \"ACTIVITY_DESCRIPTION\",\n NO_DESCRIPTION = \"NO_DESCRIPTION\",\n RESPONSIBLE_AI_EMPLOYEE = \"RESPONSIBLE_AI_EMPLOYEE\",\n SELECT_AI_EMPLOYEE_PLACEHOLDER = \"SELECT_AI_EMPLOYEE_PLACEHOLDER\",\n HITL_RULES = \"HITL_RULES\",\n HITL_INTERVENTION_USER = \"HITL_INTERVENTION_USER\",\n SELECT_HITL_USER_PLACEHOLDER = \"SELECT_HITL_USER_PLACEHOLDER\",\n SPACE_CONFIGURATION = \"SPACE_CONFIGURATION\",\n SAVE_CONFIGURATION = \"SAVE_CONFIGURATION\",\n CANCEL = \"CANCEL\",\n PLEASE_ENTER = \"PLEASE_ENTER\",\n CONFIG_ASSISTANT_PLACEHOLDER = \"CONFIG_ASSISTANT_PLACEHOLDER\",\n ADD_INSTANCE_ASSISTANT_PLACEHOLDER = \"ADD_INSTANCE_ASSISTANT_PLACEHOLDER\",\n CONFIG_ASSISTANT_WELCOME = \"CONFIG_ASSISTANT_WELCOME\",\n KNOWLEDGE = \"KNOWLEDGE\",\n NO_KNOWLEDGE = \"NO_KNOWLEDGE\",\n MINUTES_AGO = \"MINUTES_AGO\",\n HOURS_AGO = \"HOURS_AGO\",\n DAYS_AGO = \"DAYS_AGO\",\n NEW_SESSION = \"NEW_SESSION\",\n HISTORY_SESSIONS = \"HISTORY_SESSIONS\",\n CLOSE_TAB = \"CLOSE_TAB\",\n FLOW_SIDEBAR_TITLE = \"FLOW_SIDEBAR_TITLE\",\n FLOW_SIDEBAR_SUBTITLE = \"FLOW_SIDEBAR_SUBTITLE\",\n NO_HISTORY = \"NO_HISTORY\",\n LOADING = \"LOADING\",\n LOAD_MORE = \"LOAD_MORE\",\n NO_BUSINESS_OBJECTS = \"NO_BUSINESS_OBJECTS\",\n LOAD_FAILED = \"LOAD_FAILED\",\n CLICK_TO_RETRY = \"CLICK_TO_RETRY\",\n NO_INSTANCES = \"NO_INSTANCES\",\n ADD_KNOWLEDGE = \"ADD_KNOWLEDGE\",\n ADD_INSTANCE_MODAL_TITLE = \"ADD_INSTANCE_MODAL_TITLE\",\n ADD_INSTANCE_ASSISTANT_WELCOME = \"ADD_INSTANCE_ASSISTANT_WELCOME\",\n IDENTIFIED_INSTANCES = \"IDENTIFIED_INSTANCES\",\n NO_INSTANCES_IDENTIFIED = \"NO_INSTANCES_IDENTIFIED\",\n NO_INSTANCES_IDENTIFIED_DESCRIPTION = \"NO_INSTANCES_IDENTIFIED_DESCRIPTION\",\n INSTANCE_DETAIL = \"INSTANCE_DETAIL\",\n NO_DETAIL = \"NO_DETAIL\",\n CONFIRM_CREATE = \"CONFIRM_CREATE\",\n EDIT_INSTANCE = \"EDIT_INSTANCE\",\n DELETE_INSTANCE = \"DELETE_INSTANCE\",\n NO_DETAIL_HINT = \"NO_DETAIL_HINT\",\n ACTIVITY_RECORD = \"ACTIVITY_RECORD\",\n NO_ACTIVITY_RECORD = \"NO_ACTIVITY_RECORD\",\n NO_ACTIVITY_RECORD_DESCRIPTION = \"NO_ACTIVITY_RECORD_DESCRIPTION\",\n INSTANCE_DETAIL_CHAT_PLACEHOLDER = \"INSTANCE_DETAIL_CHAT_PLACEHOLDER\",\n NO_SERVICE_FLOWS = \"NO_SERVICE_FLOWS\",\n INITIATING_SERVICE_FLOW = \"INITIATING_SERVICE_FLOW\",\n ADD_COMMENT_PLACEHOLDER = \"ADD_COMMENT_PLACEHOLDER\",\n CREATED_INSTANCE = \"CREATED_INSTANCE\",\n EDITED_INSTANCE = \"EDITED_INSTANCE\",\n COMMENTED = \"COMMENTED\",\n STARTED_CONVERSATION = \"STARTED_CONVERSATION\",\n CHANGED_STATUS_TO = \"CHANGED_STATUS_TO\",\n CONVERSATION = \"CONVERSATION\",\n STATUS_CHANGED = \"STATUS_CHANGED\",\n NOT_SET = \"NOT_SET\",\n}\n\nconst en: Locale = {\n DESCRIPTION: \"Description\",\n SPACE_GUIDE_SECTION_TITLE: \"I can help you with:\",\n SPACE_GUIDE_CARD_1_TITLE: \"Manage Business Cases\",\n SPACE_GUIDE_CARD_2_TITLE: \"Initiate Business Flow\",\n SPACE_GUIDE_CARD_3_TITLE: \"Manage Space Knowledge\",\n BUSINESS_OBJECTS: \"Business Objects\",\n BUSINESS_FLOWS: \"Business Flows\",\n NO_BUSINESS_OBJECTS_FLOWS: \"No Business Objects/Flows\",\n GUIDE_AI_TO_GENERATE_CONFIG:\n \"Please guide AI to generate configuration through the left conversation\",\n NO_CONFIGURATION_DATA: \"No Configuration Data\",\n FIELD_DEFINITIONS: \"Field Definitions\",\n LIFECYCLE_STATUS: \"Lifecycle Status\",\n PREREQUISITES: \"Prerequisites\",\n PREREQUISITES_SUBTITLE: \"The following conditions must be met:\",\n ACTIVITY_DESCRIPTION: \"Activity Description\",\n NO_DESCRIPTION: \"No Description\",\n RESPONSIBLE_AI_EMPLOYEE: \"Responsible AI Employee\",\n SELECT_AI_EMPLOYEE_PLACEHOLDER: \"Please select AI employee\",\n HITL_RULES: \"HITL Rules\",\n HITL_INTERVENTION_USER: \"HITL Intervention User\",\n SELECT_HITL_USER_PLACEHOLDER: \"Please select HITL intervention user\",\n SPACE_CONFIGURATION: \"Space Configuration\",\n SAVE_CONFIGURATION: \"Save Configuration\",\n CANCEL: \"Cancel\",\n PLEASE_ENTER: \"Please enter\",\n CONFIG_ASSISTANT_PLACEHOLDER: \"Enter command to adjust configuration...\",\n CONFIG_ASSISTANT_WELCOME:\n \"Hello! I am the space configuration assistant. You can describe your business process, and I will automatically generate related business objects and flows for you. You can also explicitly tell me which business object or flow to modify.\",\n KNOWLEDGE: \"Knowledge\",\n NO_KNOWLEDGE: \"No Knowledge\",\n MINUTES_AGO: \" minutes ago\",\n HOURS_AGO: \" hours ago\",\n DAYS_AGO: \" days ago\",\n NEW_SESSION: \"New Session\",\n HISTORY_SESSIONS: \"History Sessions\",\n CLOSE_TAB: \"Close Tab\",\n FLOW_SIDEBAR_TITLE: \"Business Flows\",\n FLOW_SIDEBAR_SUBTITLE: \"Click to start business flow\",\n NO_HISTORY: \"No History\",\n LOADING: \"Loading...\",\n LOAD_MORE: \"Load More\",\n NO_BUSINESS_OBJECTS: \"No Business Objects\",\n LOAD_FAILED: \"Load Failed\",\n CLICK_TO_RETRY: \"Click to Retry\",\n NO_INSTANCES: \"No Instances\",\n ADD_KNOWLEDGE: \"Add Knowledge\",\n ADD_INSTANCE_MODAL_TITLE: \"Smart Create {{objectName}}\",\n ADD_INSTANCE_ASSISTANT_WELCOME:\n \"Hello! I am your instance creation assistant. You can directly provide me with the relevant information or upload files (such as PDF or Excel), and I will automatically parse and generate the instance for you.\",\n IDENTIFIED_INSTANCES: \"Identified Instances\",\n NO_INSTANCES_IDENTIFIED: \"No Instances\",\n NO_INSTANCES_IDENTIFIED_DESCRIPTION:\n \"You can create instances in the left conversation\",\n INSTANCE_DETAIL: \"Instance Detail\",\n NO_DETAIL: \"No Detail\",\n CONFIRM_CREATE: \"Confirm Create\",\n EDIT_INSTANCE: \"Edit\",\n DELETE_INSTANCE: \"Delete\",\n NO_DETAIL_HINT: \"You can select an instance on the left to view details\",\n ADD_INSTANCE_ASSISTANT_PLACEHOLDER: \"Enter information to create instance...\",\n ACTIVITY_RECORD: \"Activity Record\",\n NO_ACTIVITY_RECORD: \"No Activity Record\",\n NO_ACTIVITY_RECORD_DESCRIPTION:\n \"Activity records will appear here after interactions\",\n INSTANCE_DETAIL_CHAT_PLACEHOLDER:\n \"Chat about this instance, ask questions or make updates...\",\n NO_SERVICE_FLOWS: \"No Service Flows\",\n INITIATING_SERVICE_FLOW: \"Starting serviceflow: {{ name }}\",\n ADD_COMMENT_PLACEHOLDER: \"Add comment...\",\n CREATED_INSTANCE: \"created instance\",\n EDITED_INSTANCE: \"edited instance\",\n COMMENTED: \"commented\",\n STARTED_CONVERSATION: \"started conversation\",\n CHANGED_STATUS_TO: \"changed status to \",\n CONVERSATION: \"Conversation\",\n STATUS_CHANGED: \"Status Changed\",\n NOT_SET: \"Not Set\",\n};\n\nconst zh: Locale = {\n DESCRIPTION: \"描述\",\n SPACE_GUIDE_SECTION_TITLE: \"我可以协助您完成:\",\n SPACE_GUIDE_CARD_1_TITLE: \"管理业务案例\",\n SPACE_GUIDE_CARD_2_TITLE: \"发起业务流\",\n SPACE_GUIDE_CARD_3_TITLE: \"管理空间知识\",\n BUSINESS_OBJECTS: \"业务对象\",\n BUSINESS_FLOWS: \"业务流\",\n NO_BUSINESS_OBJECTS_FLOWS: \"暂无业务对象/业务流\",\n GUIDE_AI_TO_GENERATE_CONFIG: \"请通过左侧对话引导 AI 生成配置\",\n NO_CONFIGURATION_DATA: \"暂无配置数据\",\n FIELD_DEFINITIONS: \"字段定义\",\n LIFECYCLE_STATUS: \"生命周期状态\",\n PREREQUISITES: \"先决条件\",\n PREREQUISITES_SUBTITLE: \"需要满足以下条件:\",\n ACTIVITY_DESCRIPTION: \"活动描述\",\n NO_DESCRIPTION: \"暂无描述\",\n RESPONSIBLE_AI_EMPLOYEE: \"负责数字人\",\n SELECT_AI_EMPLOYEE_PLACEHOLDER: \"请选择负责数字人\",\n HITL_RULES: \"HITL规则\",\n HITL_INTERVENTION_USER: \"HITL介入用户\",\n SELECT_HITL_USER_PLACEHOLDER: \"请选择HITL介入用户\",\n SPACE_CONFIGURATION: \"协作空间配置\",\n SAVE_CONFIGURATION: \"保存配置\",\n CANCEL: \"取消\",\n PLEASE_ENTER: \"请输入\",\n CONFIG_ASSISTANT_PLACEHOLDER: \"输入指令调整配置...\",\n ADD_INSTANCE_ASSISTANT_PLACEHOLDER: \"输入信息创建实例...\",\n CONFIG_ASSISTANT_WELCOME:\n \"您好!我是协作空间配置助手。您可以告诉我描述你的业务流程,我会为你自动生成相关的业务对象和业务流,你也可以明确让我修改哪个业务对象或业务流。\",\n KNOWLEDGE: \"知识\",\n NO_KNOWLEDGE: \"暂无知识\",\n MINUTES_AGO: \"分钟前\",\n HOURS_AGO: \"小时前\",\n DAYS_AGO: \"天前\",\n NEW_SESSION: \"新协作会话\",\n HISTORY_SESSIONS: \"历史会话列表\",\n CLOSE_TAB: \"关闭标签\",\n FLOW_SIDEBAR_TITLE: \"业务流\",\n FLOW_SIDEBAR_SUBTITLE: \"点击以启动业务流\",\n NO_HISTORY: \"暂无历史记录\",\n LOADING: \"加载中...\",\n LOAD_MORE: \"加载更多\",\n NO_BUSINESS_OBJECTS: \"暂无业务对象\",\n LOAD_FAILED: \"加载失败\",\n CLICK_TO_RETRY: \"点击重试\",\n NO_INSTANCES: \"暂无数据\",\n ADD_KNOWLEDGE: \"添加知识\",\n ADD_INSTANCE_MODAL_TITLE: \"智能创建{{objectName}}\",\n ADD_INSTANCE_ASSISTANT_WELCOME:\n \"您好!我是您的实例创建助手。您可以直接告诉我相关信息,或者上传文件(如PDF、Excel),我将自动为您解析并生成实例。\",\n IDENTIFIED_INSTANCES: \"已识别实例\",\n NO_INSTANCES_IDENTIFIED: \"暂无实例\",\n NO_INSTANCES_IDENTIFIED_DESCRIPTION: \"你可在左侧对话创建\",\n INSTANCE_DETAIL: \"详情预览\",\n NO_DETAIL: \"暂无详情\",\n CONFIRM_CREATE: \"确认创建\",\n EDIT_INSTANCE: \"编辑\",\n DELETE_INSTANCE: \"删除\",\n NO_DETAIL_HINT: \"你可在左侧选择实例查看详情\",\n ACTIVITY_RECORD: \"活动记录\",\n NO_ACTIVITY_RECORD: \"暂无活动记录\",\n NO_ACTIVITY_RECORD_DESCRIPTION: \"交互后的活动记录将显示在这里\",\n INSTANCE_DETAIL_CHAT_PLACEHOLDER: \"与此实例对话,提问或更新...\",\n NO_SERVICE_FLOWS: \"暂无业务流\",\n INITIATING_SERVICE_FLOW: \"发起业务流:{{ name }}\",\n ADD_COMMENT_PLACEHOLDER: \"添加评论...\",\n CREATED_INSTANCE: \"创建了实例\",\n EDITED_INSTANCE: \"编辑实例\",\n COMMENTED: \"评论\",\n STARTED_CONVERSATION: \"发起会话\",\n CHANGED_STATUS_TO: \"将状态改为\",\n CONVERSATION: \"会话\",\n STATUS_CHANGED: \"状态变更\",\n NOT_SET: \"未设置\",\n};\n\nexport const NS = \"bricks/ai-portal/space-workbench\";\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, `.panel--ukaGUcR2{display:flex;flex-direction:column;min-height:300px;height:100%}.narrow--NBtGp4vW{width:100%;max-width:800px;margin:0 auto}.main--K5R8dLH9{position:relative;flex:1;min-height:0}.chat--Drl2ThnZ{padding:0 0 20px;height:100%;overflow-y:auto}.messages--Bhaarj69{width:100%;margin:0 auto}.message--TP5bdFpZ + .message--TP5bdFpZ{margin-top:40px}.loading-icon--BjI0pCV1{flex:1;display:flex;align-items:center;justify-content:center;font-size:48px;color:#fff}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"panel\": `panel--ukaGUcR2`,\n\t\"narrow\": `narrow--NBtGp4vW`,\n\t\"main\": `main--K5R8dLH9`,\n\t\"chat\": `chat--Drl2ThnZ`,\n\t\"messages\": `messages--Bhaarj69`,\n\t\"message\": `message--TP5bdFpZ`,\n\t\"loading-icon\": `loading-icon--BjI0pCV1`\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, `.tabBar--_7stQAM5{display:flex;align-items:center;justify-content:space-between;gap:0;padding:8px 16px;border-bottom:none;min-height:48px;flex-shrink:0;position:relative;background:#f5f5f5}.tabList--Exlu8xQN{display:flex;align-items:center;gap:8px;overflow-x:auto;overflow-y:hidden;flex:1;min-width:0;margin-right:8px}.tabList--Exlu8xQN::-webkit-scrollbar{display:none}.tabList--Exlu8xQN{scrollbar-width:none}.tabList--Exlu8xQN{-ms-overflow-style:none}.tab--QYqy_eJM{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:8px;cursor:pointer;transition:all 0.2s ease;white-space:nowrap;flex-shrink:0;position:relative;background:transparent;border:none;min-height:28px}.tab--QYqy_eJM:not(:first-child)::before{content:\"\";position:absolute;left:-4px;top:50%;transform:translateY(-50%);width:1px;height:14px;background:rgba(0,0,0,0.1)}.tab--QYqy_eJM.active--fA_KgbOF::before{display:none}.tab--QYqy_eJM.active--fA_KgbOF + .tab--QYqy_eJM::before{display:none}.tab--QYqy_eJM:not(.active--fA_KgbOF){color:rgba(0,0,0,0.65)}.tab--QYqy_eJM:not(.active--fA_KgbOF):hover{background:rgba(0,0,0,0.04);padding:8px 12px}.tab--QYqy_eJM.active--fA_KgbOF{color:rgba(0,0,0,0.85);background:#ffffff;box-shadow:0 1px 4px rgba(0,0,0,0.08);padding:8px 12px}.tabIcon--h3Ld8TFP{font-size:14px;flex-shrink:0;display:flex;align-items:center;position:relative}.tabIcon--h3Ld8TFP::before{content:\"\";position:absolute;top:-2px;right:-2px;width:6px;height:6px;border-radius:50%;background:transparent}.tab--QYqy_eJM.hasStatus--WyEGppQr .tabIcon--h3Ld8TFP::before{background:#ff8c00}.tabTitle--jiAFXD4o{font-size:14px;font-weight:400;font-family:\"PingFang SC\",sans-serif;line-height:16px;max-width:200px;overflow:hidden;text-overflow:ellipsis}.closeButton--znOzOuKD{display:flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;border:none;background:none;cursor:pointer;color:rgba(0,0,0,0.45);opacity:1;transition:all 0.2s ease;flex-shrink:0}.closeButton--znOzOuKD:hover{color:rgba(0,0,0,0.85);background:transparent}.closeButton--znOzOuKD eo-icon{font-size:11px}.tabActions--Z_8Iq8Aj{display:flex;align-items:center;gap:0;flex-shrink:0;position:relative;z-index:1;padding-left:8px}.divider--krd_ZOMx{width:1px;height:17px;background:rgba(0,0,0,0.1);margin:0 5px}.actionButton--DvU8WJx0{display:flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;border:none;background:none;cursor:pointer;border-radius:4px;transition:background-color 0.2s ease;color:rgba(0,0,0,0.65)}.actionButton--DvU8WJx0:hover{background:rgba(0,0,0,0.04);color:rgba(0,0,0,0.85)}.actionButton--DvU8WJx0 eo-icon{font-size:14px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"tabBar\": `tabBar--_7stQAM5`,\n\t\"tabList\": `tabList--Exlu8xQN`,\n\t\"tab\": `tab--QYqy_eJM`,\n\t\"active\": `active--fA_KgbOF`,\n\t\"tabIcon\": `tabIcon--h3Ld8TFP`,\n\t\"hasStatus\": `hasStatus--WyEGppQr`,\n\t\"tabTitle\": `tabTitle--jiAFXD4o`,\n\t\"closeButton\": `closeButton--znOzOuKD`,\n\t\"tabActions\": `tabActions--Z_8Iq8Aj`,\n\t\"divider\": `divider--krd_ZOMx`,\n\t\"actionButton\": `actionButton--DvU8WJx0`\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, `.emptyState--bxuHEsgY{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:rgba(0,0,0,0.45)}.emptyStateIcon--lgiof8G0{width:50px;height:50px;margin-bottom:16px;opacity:0.6}.emptyStateTitle--aIHUcnqk{font-size:14px;font-weight:500;color:rgba(0,0,0,0.65);margin-bottom:4px}.emptyStateDescription--YiVHqQCZ{font-size:12px;color:rgba(0,0,0,0.45);text-align:center}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"emptyState\": `emptyState--bxuHEsgY`,\n\t\"emptyStateIcon\": `emptyStateIcon--lgiof8G0`,\n\t\"emptyStateTitle\": `emptyStateTitle--aIHUcnqk`,\n\t\"emptyStateDescription\": `emptyStateDescription--YiVHqQCZ`\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]!./BusinessInstanceCard.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]!./BusinessInstanceCard.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useState, useEffect, useRef } from \"react\";\nimport { Attribute } from \"../interfaces\";\nimport styles from \"./BusinessInstanceCard.module.css\";\nimport classNames from \"classnames\";\n\nimport { WrappedInput, WrappedIcon, WrappedTag } from \"../bricks\";\nimport { EmptyState } from \"./EmptyState\";\nimport { K, t } from \"../i18n\";\nimport {\n formatFileSize,\n getFileTypeAndIcon,\n} from \"../../cruise-canvas/utils/file\";\n\ninterface BusinessInstanceCardProps {\n instance: any;\n attrs: Attribute[];\n title?: string;\n onAttrChange?: (attrId: string, value: any) => void;\n onFileClick?: (file: FileInfo) => void;\n}\n\ninterface InstFieldsViewProps {\n className?: string;\n instance: any;\n attrs: Attribute[];\n onAttrChange?: (attrId: string, value: any) => void;\n onFileClick?: (file: FileInfo) => void;\n}\n\ninterface FileInfo {\n name: string;\n uri?: string;\n mimeType?: string;\n size?: number;\n}\n\n// 实例字段展示组件\nexport function InstFieldsView({\n instance,\n attrs,\n className,\n onAttrChange,\n onFileClick,\n}: InstFieldsViewProps) {\n // 管理每个字段的编辑状态\n const [editingFieldId, setEditingFieldId] = useState<string | null>(null);\n // 存储编辑中的临时值\n const [editingValue, setEditingValue] = useState<string>(\"\");\n // 存储编辑前的原始值,用于对比是否发生变化(使用 ref 避免不必要的重新渲染)\n const originalValueRef = useRef<string>(\"\");\n const editingContainerRef = useRef<HTMLDivElement | null>(null);\n\n // 按类型分组属性\n const fileAttrs = attrs?.filter((attr) => attr.type === \"file\");\n const textAttrs = attrs?.filter((attr) => attr.type === \"text\");\n const otherAttrs = attrs?.filter(\n (attr) => attr.type !== \"file\" && attr.type !== \"text\"\n );\n\n // 点击外部关闭编辑模式\n useEffect(() => {\n if (!editingFieldId) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n editingContainerRef.current &&\n !editingContainerRef.current.contains(event.target as Node)\n ) {\n // 点击外部时,检查值是否变化,如果变化则保存\n if (editingValue !== originalValueRef.current) {\n onAttrChange?.(editingFieldId, editingValue);\n }\n setEditingFieldId(null);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [editingFieldId, editingValue, onAttrChange]);\n\n const handleInputChange = (value: string) => {\n setEditingValue(value);\n };\n\n const handleEditClick = (attrId: string, currentValue: any) => {\n const stringValue = currentValue ?? \"\";\n setEditingFieldId(attrId);\n setEditingValue(stringValue);\n originalValueRef.current = stringValue;\n };\n\n const handleInputBlur = () => {\n // 失焦时,检查值是否变化,如果变化则保存\n if (editingFieldId && editingValue !== originalValueRef.current) {\n onAttrChange?.(editingFieldId, editingValue);\n }\n setEditingFieldId(null);\n };\n\n const renderAttrValue = (attr: Attribute, value: any) => {\n // string 类型使用可编辑的文本\n if (attr.type === \"string\" && !attr.isArray) {\n const isEditing = editingFieldId === attr.id;\n const displayValue = isEditing ? editingValue : (value ?? \"\");\n\n if (isEditing) {\n return (\n <div ref={editingContainerRef} className={styles.inputWrapper}>\n <WrappedInput\n value={displayValue}\n themeVariant=\"elevo\"\n autoFocus\n onValueChange={(e: CustomEvent) => handleInputChange(e.detail)}\n onBlur={() => handleInputBlur()}\n onKeyDown={(e: any) => {\n if (e.key === \"Enter\") {\n handleInputBlur();\n }\n }}\n />\n </div>\n );\n }\n\n return (\n <span className={styles.fieldTextValue} title={String(displayValue)}>\n {displayValue}\n </span>\n );\n }\n\n // 数组类型\n if (attr.isArray && Array.isArray(value)) {\n if (value.length === 0)\n return <span className={styles.fieldTextValue}></span>;\n\n if (attr.type === \"file\") {\n return (\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n <WrappedIcon lib=\"lucide\" icon=\"paperclip\" />\n {value.length}\n </span>\n );\n }\n\n return <span>{value.join(\", \")}</span>;\n }\n\n // 单个文件类型\n if (attr.type === \"file\") {\n if (value == null) return <span className={styles.fieldTextValue}></span>;\n return <WrappedIcon lib=\"lucide\" icon=\"paperclip\" />;\n }\n\n if (attr.type === \"enum\" && value != null) {\n if (Array.isArray(value)) {\n return (\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"4px\" }}>\n {value.map((item) => (\n <WrappedTag key={item}>{item}</WrappedTag>\n ))}\n </div>\n );\n }\n return <WrappedTag>{value}</WrappedTag>;\n }\n\n // 其他类型:文本展示,空值通过 CSS 显示占位符\n const displayValue = value ?? \"\";\n return (\n <span className={styles.fieldTextValue} title={String(displayValue)}>\n {displayValue}\n </span>\n );\n };\n\n return (\n <div className={classNames(styles.fieldsViewContainer, className)}>\n <div className={styles.fieldsViewList}>\n {otherAttrs.map((attr) => {\n const isFileType =\n attr.type === \"file\" ||\n (attr.isArray &&\n Array.isArray(instance[attr.id]) &&\n instance[attr.id].some((item: any) => item?.name));\n const isStringEditable = attr.type === \"string\" && !attr.isArray;\n\n return (\n <div\n key={attr.id}\n className={`${styles.fieldsViewItem} ${isFileType ? styles.fullWidth : \"\"}`}\n >\n <div className={styles.fieldsViewLabelRow}>\n <span className={styles.fieldsViewLabel}>{attr.name}</span>\n {isStringEditable && (\n <button\n className={styles.editButton}\n onClick={() => handleEditClick(attr.id, instance[attr.id])}\n >\n <WrappedIcon lib=\"lucide\" icon=\"edit\" />\n </button>\n )}\n </div>\n <div className={styles.fieldsViewValue}>\n {renderAttrValue(attr, instance[attr.id])}\n </div>\n </div>\n );\n })}\n </div>\n\n {fileAttrs.map((attr) =>\n !instance[attr.id] ||\n (Array.isArray(instance[attr.id]) &&\n instance[attr.id].length === 0) ? null : (\n <div key={attr.id} className={styles.fieldsViewSection}>\n <div className={styles.fieldsViewSectionHeader}>\n <WrappedIcon\n lib=\"lucide\"\n icon=\"paperclip\"\n className={styles.fieldsViewSectionIcon}\n />\n <span>{attr.name}</span>\n </div>\n <div className={styles.fieldsViewFileList}>\n {(Array.isArray(instance[attr.id])\n ? instance[attr.id]\n : [instance[attr.id]]\n ).map((file: FileInfo, idx: number) => {\n const [type, icon] = getFileTypeAndIcon(\n file.mimeType,\n file.name\n );\n return (\n <div\n key={idx}\n className={styles.fieldsViewFileItem}\n onClick={() => onFileClick?.(file)}\n >\n <img\n src={icon}\n alt={type}\n className={styles.fieldsViewFileIcon}\n />\n <div className={styles.fieldsViewFileContent}>\n <span\n className={styles.fieldsViewFileName}\n title={file.name}\n >\n {file.name}\n </span>\n {file.size ? (\n <span className={styles.fieldsViewFileSize}>\n {formatFileSize(file.size)}\n </span>\n ) : null}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n )\n )}\n\n {textAttrs.map((attr) =>\n !instance[attr.id] ? null : (\n <div key={attr.id} className={styles.fieldsViewSection}>\n <div className={styles.fieldsViewSectionHeader}>{attr.name}</div>\n <div className={styles.fieldsViewTextContent}>\n {instance[attr.id]}\n </div>\n </div>\n )\n )}\n </div>\n );\n}\n\nexport function BusinessInstanceCard({\n instance,\n attrs,\n title,\n onAttrChange,\n onFileClick,\n}: BusinessInstanceCardProps) {\n if (!instance || !attrs) {\n return (\n <EmptyState\n className={styles.emptyState}\n title={t(K.NO_DETAIL)}\n description={t(K.NO_DETAIL_HINT)}\n />\n );\n }\n\n return (\n <div className={styles.instanceCardWrapper}>\n <div className={styles.instanceCard}>\n {title && <h3 className={styles.instanceCardTitle}>{title}</h3>}\n <InstFieldsView\n instance={instance}\n attrs={attrs}\n onAttrChange={onAttrChange}\n onFileClick={onFileClick}\n />\n </div>\n </div>\n );\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.modalContent--xJ8Ui4Lp{display:flex;height:calc(100vh - 200px);min-height:500px;max-height:700px;margin:-16px -20px;gap:0;overflow:hidden;border-bottom:1px solid rgba(0,0,0,0.06)}.aiAssistantArea--S13sfbOF{flex:1 0 360px;max-width:550px;display:flex;flex-direction:column;border-right:1px solid rgba(0,0,0,0.1);border-radius:0 0 0 16px;padding:24px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"modalContent\": `modalContent--xJ8Ui4Lp`,\n\t\"aiAssistantArea\": `aiAssistantArea--S13sfbOF`\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, `.instanceList--P_1sgfxy{flex:1;display:flex;flex-direction:column;gap:8px;overflow-y:auto;padding:0 8px}.instanceCard--JXPltQWg{display:flex;flex-direction:column;gap:10px;padding:13px;background:white;border:1px solid rgba(0,0,0,0.1);border-radius:8px;cursor:pointer;transition:all 0.2s ease}.instanceCard--JXPltQWg:hover{border-color:rgba(37,64,255,0.3);box-shadow:0 2px 8px rgba(0,0,0,0.08)}.instanceCard--JXPltQWg.selected--BD70l6pV{border-color:#a1b5ff;background:rgba(37,64,255,0.02)}.cardHeader--Hz2_LOmU{display:flex;align-items:center;justify-content:space-between;gap:11px}.cardTitle--G0hHy6Kv{flex:1;font-size:14px;font-weight:500;color:rgba(0,0,0,0.85);line-height:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cardActions--XH71GYga{display:flex;align-items:center;gap:8px}.deleteButton--uqj_zx62{display:flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;background:transparent;border:none;border-radius:4px;cursor:pointer;color:rgba(0,0,0,0.45);opacity:0;transition:all 0.2s ease}.instanceCard--JXPltQWg:hover .deleteButton--uqj_zx62{opacity:1}.deleteButton--uqj_zx62:hover{background:rgba(255,77,79,0.1);color:#ff4d4f}.cardStatus--wM14FLdf{display:flex;align-items:center}.statusTag--t446V_ZM{display:inline-flex;align-items:center;justify-content:center;padding:2px 8px;background:rgba(37,64,255,0.05);border:1px solid rgba(37,64,255,0.2);border-radius:20px;font-size:10px;color:#1e30cc;font-weight:500;line-height:14px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"instanceList\": `instanceList--P_1sgfxy`,\n\t\"instanceCard\": `instanceCard--JXPltQWg`,\n\t\"selected\": `selected--BD70l6pV`,\n\t\"cardHeader\": `cardHeader--Hz2_LOmU`,\n\t\"cardTitle\": `cardTitle--G0hHy6Kv`,\n\t\"cardActions\": `cardActions--XH71GYga`,\n\t\"deleteButton\": `deleteButton--uqj_zx62`,\n\t\"cardStatus\": `cardStatus--wM14FLdf`,\n\t\"statusTag\": `statusTag--t446V_ZM`\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, `.activityCard--_cEfvEaB{display:flex;flex-direction:column;justify-content:space-between;gap:14px;padding:13px;background:#fff;border:1px solid rgba(0,0,0,0.1);border-radius:8px;cursor:pointer;z-index:1;transition:all 0.2s;min-width:236px;width:236px;height:120px}.activityCard--_cEfvEaB:hover{border-color:#a1b5ff;box-shadow:0 2px 8px rgba(37,64,255,0.1)}.activityCardActive--qdeGG8pw{border-color:#a1b5ff}.activityContent--jj94hGGW{display:flex;flex-direction:column;gap:8px}.activityName--Kzbe4gos{font-size:13px;font-weight:500;line-height:14px;color:rgba(0,0,0,0.85);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.activityNameActive--tWBatSPm{color:#2540ff}.activityDescription--uQc4FY15{font-family:\"PingFang SC\",sans-serif;font-size:12px;font-weight:400;line-height:12.5px;color:rgba(0,0,0,0.45);letter-spacing:0.1172px;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.activityAssignee--wmWlB6OF{align-items:center;padding:2px 8px;font-family:\"PingFang SC\",sans-serif;font-size:10px;font-weight:500;line-height:14px;letter-spacing:0.1172px;border-radius:20px;border:1px solid;width:-moz-fit-content;width:fit-content;background:rgba(37,64,255,0.05);border-color:rgba(30,48,204,0.3);color:#1e30cc;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"activityCard\": `activityCard--_cEfvEaB`,\n\t\"activityCardActive\": `activityCardActive--qdeGG8pw`,\n\t\"activityContent\": `activityContent--jj94hGGW`,\n\t\"activityName\": `activityName--Kzbe4gos`,\n\t\"activityNameActive\": `activityNameActive--tWBatSPm`,\n\t\"activityDescription\": `activityDescription--uQc4FY15`,\n\t\"activityAssignee\": `activityAssignee--wmWlB6OF`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { http } from \"@next-core/http\";\n\n/** 协作空间模式信息 */\n\n/**\n * @description 获取协作空间的模式定义(业务对象、关系、业务流)\n * @endpoint GET /api/v1/elevo/spaces/:spaceId/schema\n */\nexport const ElevoSpaceApi_getSpaceSchema = async (spaceId, options) => /**! @contract easyops.api.llm.elevo_space.GetSpaceSchema@1.0.0 */(await http.get(`api/gateway/logic.llm.aiops_service/api/v1/elevo/spaces/${spaceId}/schema`, options)).data;\n//# sourceMappingURL=getSpaceSchema.js.map","import { http } from \"@next-core/http\";\n/**\n * @description 导入协作空间模式定义(业务对象、关系、业务流)\n * @endpoint POST /api/v1/elevo/spaces/:spaceId/import\n */\nexport const ElevoSpaceApi_importSpaceSchema = (spaceId, data, options) => /**! @contract easyops.api.llm.elevo_space.ImportSpaceSchema@1.0.0 */http.post(`api/gateway/logic.llm.aiops_service/api/v1/elevo/spaces/${spaceId}/import`, data, options);\n//# sourceMappingURL=importSpaceSchema.js.map","\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]!./BusinessObjectPreview.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]!./BusinessObjectPreview.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from \"react\";\n\nimport { WrappedIcon } from \"../../shared/bricks\";\nimport styles from \"./BusinessObjectPreview.module.css\";\nimport { BusinessObject } from \"../interfaces\";\nimport { ViewType } from \"../interfaces\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n MarkdownDisplayProps,\n MarkdownDisplay,\n} from \"@next-bricks/markdown/markdown-display\";\nimport { K, t } from \"../i18n.js\";\n\nexport interface BusinessObjectPreviewProps {\n data?: BusinessObject;\n viewType?: ViewType;\n}\n\nconst WrappedMarkdownDisplay = wrapBrick<MarkdownDisplay, MarkdownDisplayProps>(\n \"eo-markdown-display\"\n);\n/**\n * 业务对象预览组件\n * 参考设计图: node-id=125-1132\n * 展示业务对象的标题、字段定义和生命周期状态\n */\nexport function BusinessObjectPreview({\n data,\n viewType = \"visual\",\n}: BusinessObjectPreviewProps): React.ReactElement | null {\n if (!data) {\n return null;\n }\n\n // JSON 视图\n if (viewType === \"json\") {\n return (\n <div className={styles.jsonView}>\n <pre>{JSON.stringify(data, null, 2)}</pre>\n </div>\n );\n }\n\n // Visual 视图\n return (\n <div className={styles.businessObjectPreview}>\n {/* 标题区域 */}\n <div className={styles.objectHeader}>\n <div className={styles.objectTitleArea}>\n <div className={styles.objectTitle}>\n <span className={styles.objectName}>{data.objectName}</span>\n </div>\n <div className={styles.objectDescription}>{data.description}</div>\n </div>\n </div>\n\n {/* 字段定义区域 */}\n <div className={styles.objectSection}>\n <div className={styles.sectionTitle}>\n <WrappedIcon\n lib=\"antd\"\n icon=\"database\"\n className={styles.sectionIcon}\n />\n <span>{t(K.FIELD_DEFINITIONS)}</span>\n </div>\n <div className={styles.fieldGrid}>\n {/* 展示 attributes */}\n {data?.attributes?.map((field) => (\n <div key={field.id} className={styles.fieldItem}>\n <span className={styles.fieldName}>{field.name}</span>\n <span className={styles.fieldType}>{field.type}</span>\n </div>\n ))}\n\n {/* 展示 relations */}\n {data?.relations?.map((relation) => (\n <div key={relation.relation_id} className={styles.fieldItem}>\n <span className={styles.fieldName}>\n {relation.name}\n <WrappedIcon\n lib=\"antd\"\n icon=\"link\"\n className={styles.linkIcon}\n />\n </span>\n <span className={styles.relationType}>Relation</span>\n </div>\n ))}\n </div>\n </div>\n\n {/* 生命周期状态区域 */}\n {data.lifecycle && (\n <div className={styles.objectSection}>\n <div className={styles.sectionTitle}>\n <WrappedIcon\n lib=\"antd\"\n icon=\"sync\"\n className={styles.sectionIcon}\n />\n <span>{t(K.LIFECYCLE_STATUS)}</span>\n </div>\n <div className={styles.lifecycleContainer}>\n <WrappedMarkdownDisplay\n content={`\\`\\`\\`mermaid\\n${data.lifecycle}\\n\\`\\`\\``}\n />\n </div>\n </div>\n )}\n </div>\n );\n}\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./ConfigPreview.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]!./ConfigPreview.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useState } from \"react\";\nimport { BusinessObjectPreview } from \"./BusinessObjectPreview\";\nimport { BusinessFlowPreview } from \"./BusinessFlowPreview\";\nimport { EmptyState } from \"./EmptyState\";\nimport { BusinessObject, BusinessFlow, ViewType } from \"../interfaces\";\nimport { WrappedIcon } from \"../../shared/bricks\";\nimport styles from \"./ConfigPreview.module.css\";\nimport { K, t } from \"../i18n.js\";\n\nexport interface ConfigPreviewProps {\n businessObject?: BusinessObject | null;\n businessFlow?: BusinessFlow | null;\n viewType?: ViewType;\n onViewTypeChange?: (viewType: ViewType) => void;\n}\n\n/**\n * 配置预览容器组件\n * 参考设计图: node-id=125-1132, node-id=125-2022\n * 提供 Visual/JSON 视图切换功能,显示业务对象或业务流详情\n */\nexport function ConfigPreview({\n businessObject,\n businessFlow,\n viewType: externalViewType,\n onViewTypeChange,\n}: ConfigPreviewProps): React.ReactElement {\n // 内部视图类型状态(当外部没有提供时使用)\n const [internalViewType, setInternalViewType] = useState<ViewType>(\"visual\");\n const viewType = externalViewType ?? internalViewType;\n\n const handleViewTypeChange = (type: ViewType) => {\n if (onViewTypeChange) {\n onViewTypeChange(type);\n } else {\n setInternalViewType(type);\n }\n };\n\n // 判断是显示业务对象还是业务流\n const showBusinessObject = !!businessObject;\n const showBusinessFlow = !!businessFlow;\n const hasData = showBusinessObject || showBusinessFlow;\n\n return (\n <div className={styles.configPreviewContainer}>\n {/* 头部: Visual/JSON 视图切换 */}\n <div className={styles.configPreviewHeader}>\n <div className={styles.viewSwitcher}>\n <button\n className={`${styles.viewButton} ${viewType === \"visual\" ? styles.active : \"\"}`}\n onClick={() => handleViewTypeChange(\"visual\")}\n >\n <WrappedIcon\n lib=\"antd\"\n icon=\"eye\"\n className={styles.viewButtonIcon}\n />\n Visual\n </button>\n <button\n className={`${styles.viewButton} ${viewType === \"json\" ? styles.active : \"\"}`}\n onClick={() => handleViewTypeChange(\"json\")}\n >\n <WrappedIcon\n lib=\"antd\"\n icon=\"code\"\n className={styles.viewButtonIcon}\n />\n JSON\n </button>\n </div>\n </div>\n\n {/* 预览内容区域 */}\n <div className={styles.configPreviewBody}>\n {!hasData ? (\n <EmptyState\n title={t(K.NO_CONFIGURATION_DATA)}\n description={t(K.GUIDE_AI_TO_GENERATE_CONFIG)}\n />\n ) : showBusinessObject ? (\n <BusinessObjectPreview data={businessObject} viewType={viewType} />\n ) : (\n <BusinessFlowPreview\n data={businessFlow ?? undefined}\n viewType={viewType}\n />\n )}\n </div>\n </div>\n );\n}\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./BusinessManage.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]!./BusinessManage.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useState, useEffect } from \"react\";\nimport classNames from \"classnames\";\nimport type { ViewType } from \"../interfaces\";\nimport { ConfigPreview } from \"./ConfigPreview\";\nimport { SpaceConfigSchema, BusinessObject, BusinessFlow } from \"../interfaces\";\nimport styles from \"./BusinessManage.module.css\";\nimport { EmptyState } from \"./EmptyState\";\nimport { K, t } from \"../i18n.js\";\n\ninterface CardItem {\n id: string;\n name: string;\n description: string;\n}\n\nexport enum TabType {\n BUSINESS_OBJECTS = \"businessObjects\",\n BUSINESS_FLOWS = \"businessFlows\",\n}\n\ninterface BusinessManageProps {\n configSchema: SpaceConfigSchema;\n}\n\n/**\n * 业务管理组件\n * 包含业务对象/业务流列表区域和配置详情预览区域\n */\nexport function BusinessManage({\n configSchema,\n}: BusinessManageProps): React.ReactElement {\n // 当前激活的 Tab\n const [activeTab, setActiveTab] = useState<TabType>(TabType.BUSINESS_OBJECTS);\n // 当前选中的配置项\n const [selectedItem, setSelectedItem] = useState<\n BusinessObject | BusinessFlow\n >();\n // 视图类型: visual 或 json\n const [viewType, setViewType] = useState<ViewType>(\"visual\");\n\n // 统一处理 selectedItem 的更新:当 configSchema 或 activeTab 变化时自动更新\n useEffect(() => {\n const currentList =\n activeTab === TabType.BUSINESS_OBJECTS\n ? configSchema?.businessObjects\n : configSchema?.businessFlows;\n\n if (!currentList || currentList.length === 0) {\n setSelectedItem(undefined);\n return;\n }\n\n // 使用函数式更新,避免循环依赖\n setSelectedItem((prevItem) => {\n // 如果当前有选中的项,尝试在新数据中找到对应的项\n if (prevItem) {\n const getItemId = (item: BusinessObject | BusinessFlow): string => {\n return activeTab === TabType.BUSINESS_OBJECTS\n ? (item as BusinessObject).objectId\n : (item as BusinessFlow).instanceId;\n };\n const currentId = getItemId(prevItem);\n const matchedItem = currentList.find(\n (item) => getItemId(item) === currentId\n );\n // 找到了对应的项,返回新数据中的项;否则返回第一项\n return matchedItem || currentList[0];\n }\n // 当前没有选中项,返回第一项\n return currentList[0];\n });\n }, [configSchema, activeTab]);\n\n // 处理 Tab 切换(selectedItem 的更新由 useEffect 自动处理)\n const handleTabChange = (tab: TabType) => {\n setActiveTab(tab);\n };\n\n // 处理列表项选中\n const handleItemSelect = (item: CardItem) => {\n const selectedItem = configSchema?.[activeTab as TabType]?.find(\n (row) =>\n item.id ===\n (activeTab === TabType.BUSINESS_OBJECTS\n ? (row as BusinessObject).objectId\n : (row as BusinessFlow).instanceId)\n );\n setSelectedItem(selectedItem);\n };\n\n // 判断是业务对象还是业务流\n const isBusinessObject = activeTab === TabType.BUSINESS_OBJECTS;\n\n return (\n <>\n {/* 中间: 业务对象/业务流列表区域 */}\n <div className={styles.configListArea}>\n <div className={styles.configListTabs}>\n <button\n className={classNames(styles.configListTab, {\n [styles.active]: activeTab === TabType.BUSINESS_OBJECTS,\n })}\n onClick={() => handleTabChange(TabType.BUSINESS_OBJECTS)}\n >\n {t(K.BUSINESS_OBJECTS)}\n </button>\n <button\n className={classNames(styles.configListTab, {\n [styles.active]: activeTab === TabType.BUSINESS_FLOWS,\n })}\n onClick={() => handleTabChange(TabType.BUSINESS_FLOWS)}\n >\n {t(K.BUSINESS_FLOWS)}\n </button>\n </div>\n\n {activeTab === TabType.BUSINESS_OBJECTS ? (\n <BusinessCardList\n itemList={configSchema?.businessObjects?.map((item) => ({\n id: item.objectId,\n name: item.objectName,\n description: item.description,\n }))}\n activeId={(selectedItem as BusinessObject)?.objectId}\n onItemClick={handleItemSelect}\n />\n ) : (\n <BusinessCardList\n itemList={configSchema?.businessFlows?.map((item) => ({\n id: item.instanceId,\n name: item.name,\n description: item.description,\n }))}\n activeId={(selectedItem as BusinessFlow)?.instanceId}\n onItemClick={handleItemSelect}\n />\n )}\n </div>\n\n {/* 右侧: 配置详情预览区域 */}\n <div className={styles.configPreviewArea}>\n <ConfigPreview\n businessObject={\n isBusinessObject ? (selectedItem as BusinessObject) : null\n }\n businessFlow={\n !isBusinessObject ? (selectedItem as BusinessFlow) : null\n }\n viewType={viewType}\n onViewTypeChange={setViewType}\n />\n </div>\n </>\n );\n}\n\ninterface BusinessCardListProps {\n itemList: CardItem[];\n activeId?: string;\n onItemClick?: (item: CardItem) => void;\n}\n\nfunction BusinessCardList({\n itemList,\n activeId,\n onItemClick,\n}: BusinessCardListProps): React.ReactElement {\n if (!itemList?.length) {\n return (\n <EmptyState\n title={t(K.NO_BUSINESS_OBJECTS_FLOWS)}\n description={t(K.GUIDE_AI_TO_GENERATE_CONFIG)}\n />\n );\n }\n return (\n <div className={styles.cardList}>\n {itemList?.map((item) => (\n <div\n key={item.id}\n className={classNames(styles.cardItem, {\n [styles.active]: activeId === item.id,\n })}\n onClick={() => onItemClick?.(item)}\n >\n <div className={styles.cardItemName} title={item.name}>\n {item.name}\n </div>\n <div className={styles.cardItemDesc} title={item.description}>\n {item.description}\n </div>\n </div>\n ))}\n </div>\n );\n}\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./SpaceConfigModal.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]!./SpaceConfigModal.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useState, useCallback, useEffect } from \"react\";\nimport { handleHttpError } from \"@next-core/runtime\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n Modal,\n ModalProps,\n ModalEvents,\n ModalMapEvents,\n} from \"@next-bricks/containers/modal\";\nimport { http } from \"@next-core/http\";\nimport { ElevoSpaceApi_importSpaceSchema } from \"@next-api-sdk/llm-sdk\";\nimport { ConfigContext } from \"./ConfigContext\";\nimport type {\n ChatPayload,\n ConversationPatch,\n RequestStore,\n} from \"../../../shared/interfaces\";\nimport { ChatPanelContent } from \"../../../chat-panel/ChatPanelContent\";\nimport { BusinessManage } from \"../BusinessManage\";\n\nimport styles from \"./SpaceConfigModal.module.css\";\nimport { Activity, SpaceConfigSchema, SpaceDetail } from \"../../interfaces\";\nimport { mergeConfigSchema, handleModifyActivity } from \"./utils\";\nimport { K, t } from \"../../i18n.js\";\n\nconst WrappedModal = wrapBrick<\n Modal,\n ModalProps & {\n themeVariant?: \"default\" | \"elevo\";\n headerBordered?: boolean;\n },\n ModalEvents,\n ModalMapEvents\n>(\"eo-modal\", {\n onClose: \"close\",\n onConfirm: \"confirm\",\n onCancel: \"cancel\",\n onOpen: \"open\",\n});\n\nexport interface SpaceConfigModalProps {\n visible: boolean;\n spaceDetail: SpaceDetail;\n configSchema: SpaceConfigSchema;\n aiEmployeeId?: string;\n conversationId?: string;\n onSave?: (data: SpaceConfigSchema) => void;\n onCancel?: () => void;\n}\n\nexport function SpaceConfigModal({\n visible,\n spaceDetail,\n configSchema: initialConfigSchema,\n aiEmployeeId,\n onSave,\n onCancel,\n}: SpaceConfigModalProps): React.ReactElement {\n const [submitDisabled, setSubmitDisabled] = useState(false);\n const [conversationId, setConversationId] = useState<string | null>(null);\n const [configSchema, setConfigSchema] =\n useState<SpaceConfigSchema>(initialConfigSchema);\n\n const [initialRequest, setInitialRequest] = useState<RequestStore | null>(\n null\n );\n\n // 当外部传入的 configSchema 变化时,同步更新内部状态\n useEffect(() => {\n setConfigSchema(initialConfigSchema);\n }, [initialConfigSchema]);\n\n // 处理取消\n const handleCancel = () => {\n onCancel?.();\n };\n\n // 处理保存\n const handleSave = async () => {\n try {\n await ElevoSpaceApi_importSpaceSchema(\n spaceDetail.instanceId,\n configSchema\n );\n onSave?.(configSchema);\n } catch (error) {\n handleHttpError(error);\n }\n };\n\n const handleChatSubmit = useCallback(\n async (payload: ChatPayload) => {\n setSubmitDisabled(true);\n try {\n const res = await http.post<{\n data: { conversationId: string };\n }>(\n \"api/gateway/logic.llm.aiops_service/api/v1/elevo/conversations\",\n {}\n );\n const conversationId = res.data.conversationId;\n setConversationId(conversationId);\n setInitialRequest({\n ...payload,\n agentId: \"elevo-service_object_schema\",\n cmd: {\n type: \"space-config\",\n payload: {\n spaceInstanceId: spaceDetail.instanceId,\n },\n },\n ...(aiEmployeeId ? { aiEmployeeId } : null),\n conversationId: conversationId,\n });\n } catch (e) {\n handleHttpError(e);\n } finally {\n setSubmitDisabled(false);\n }\n },\n [aiEmployeeId, spaceDetail.instanceId]\n );\n\n const handleData = useCallback(\n (data: ConversationPatch) => {\n // 检查数据结构是否存在且类型匹配\n\n const firstPart = data?.tasks?.[0]?.jobs?.[0]?.messages?.[0]?.parts?.[0];\n\n // 检查是否是 DataPart 类型且 type 为 easy_cmd_business_object\n if (\n firstPart?.type === \"data\" &&\n firstPart.data?.type === \"easy_cmd_business_object\" &&\n firstPart.data?.content\n ) {\n // 解析 content 字段\n const contentStr = firstPart.data.content;\n let currentEditSchema: SpaceConfigSchema;\n try {\n currentEditSchema = JSON.parse(contentStr);\n } catch (error) {\n // 解析失败时静默返回,避免影响其他功能\n // eslint-disable-next-line no-console\n console.error(error);\n return;\n }\n const mergedConfigSchema = mergeConfigSchema(\n configSchema,\n currentEditSchema\n );\n\n // 更新 configSchema\n setConfigSchema(mergedConfigSchema);\n }\n },\n [configSchema]\n );\n\n const modifyActivity = useCallback(\n (stageName: string, newActivity: Activity) => {\n setConfigSchema((prevConfigSchema) => {\n const newConfigSchema = handleModifyActivity(\n prevConfigSchema,\n stageName,\n newActivity\n );\n return newConfigSchema;\n });\n },\n []\n );\n\n return (\n <ConfigContext.Provider value={{ modifyActivity }}>\n <WrappedModal\n themeVariant=\"elevo\"\n headerBordered\n modalTitle={t(K.SPACE_CONFIGURATION)}\n width=\"90%\"\n visible={visible}\n onCancel={handleCancel}\n onClose={handleCancel}\n onConfirm={handleSave}\n maskClosable={false}\n confirmText={t(K.SAVE_CONFIGURATION)}\n cancelText={t(K.CANCEL)}\n >\n <div className={styles.modalContent}>\n {/* 左侧: AI 助手对话区域 */}\n <div className={styles.aiAssistantArea}>\n <ChatPanelContent\n submitDisabled={submitDisabled}\n onChatSubmit={handleChatSubmit}\n conversationId={conversationId}\n initialRequest={initialRequest}\n onData={handleData}\n placeholder={t(K.CONFIG_ASSISTANT_PLACEHOLDER)}\n help={{\n useBrick: {\n brick: \"ai-portal.chat-panel-welcome\",\n properties: {\n text: t(K.CONFIG_ASSISTANT_WELCOME),\n },\n },\n }}\n />\n </div>\n\n {/* 业务对象/业务流列表区域 和 配置详情预览区域 */}\n <BusinessManage configSchema={configSchema} />\n </div>\n </WrappedModal>\n </ConfigContext.Provider>\n );\n}\n","import { Activity, SpaceConfigSchema } from \"../../interfaces\";\n\nexport function mergeConfigSchema(\n prevSchema: SpaceConfigSchema,\n currentEditSchema: SpaceConfigSchema\n): SpaceConfigSchema {\n // 先处理删除操作,然后再合并新增/更新的项\n // 删除 businessObjects\n let mergedBusinessObjects = [...(prevSchema.businessObjects || [])];\n if (currentEditSchema.deleteObjects?.length) {\n mergedBusinessObjects = mergedBusinessObjects.filter(\n (obj) => !currentEditSchema.deleteObjects?.includes(obj.objectId)\n );\n }\n\n // 删除 objectRelations\n let mergedObjectRelations = [...(prevSchema.objectRelations || [])];\n if (currentEditSchema.deleteRelations?.length) {\n mergedObjectRelations = mergedObjectRelations.filter(\n (rel) => !currentEditSchema.deleteRelations?.includes(rel.name)\n );\n }\n\n // 删除 businessFlows\n let mergedBusinessFlows = [...(prevSchema.businessFlows || [])];\n if (currentEditSchema.deleteFlows?.length) {\n mergedBusinessFlows = mergedBusinessFlows.filter(\n (flow) => !currentEditSchema.deleteFlows?.includes(flow.name)\n );\n }\n\n // 合并 businessObjects(找到覆盖,找不到新增)\n if (currentEditSchema.businessObjects?.length) {\n const existingObjectMap = new Map(\n mergedBusinessObjects.map((obj) => [obj.objectId, obj])\n );\n currentEditSchema.businessObjects.forEach((obj) => {\n existingObjectMap.set(obj.objectId, obj);\n });\n mergedBusinessObjects = Array.from(existingObjectMap.values());\n }\n\n // 合并 objectRelations(找到覆盖,找不到新增)\n if (currentEditSchema.objectRelations?.length) {\n const existingRelationMap = new Map(\n mergedObjectRelations.map((rel) => [rel.name, rel])\n );\n currentEditSchema.objectRelations.forEach((rel) => {\n existingRelationMap.set(rel.name, rel);\n });\n mergedObjectRelations = Array.from(existingRelationMap.values());\n }\n\n // 合并 businessFlows(找到覆盖,找不到新增)\n if (currentEditSchema.businessFlows?.length) {\n const existingFlowMap = new Map(\n mergedBusinessFlows.map((flow) => [flow.name, flow])\n );\n currentEditSchema.businessFlows.forEach((flow) => {\n existingFlowMap.set(flow.name, flow);\n });\n mergedBusinessFlows = Array.from(existingFlowMap.values());\n }\n\n // 更新 configSchema\n return {\n businessObjects: mergedBusinessObjects,\n objectRelations: mergedObjectRelations,\n businessFlows: mergedBusinessFlows,\n deleteObjects: Array.from(\n new Set([\n ...(prevSchema.deleteObjects || []),\n ...(currentEditSchema.deleteObjects || []),\n ])\n ),\n deleteRelations: Array.from(\n new Set([\n ...(prevSchema.deleteRelations || []),\n ...(currentEditSchema.deleteRelations || []),\n ])\n ),\n deleteFlows: Array.from(\n new Set([\n ...(prevSchema.deleteFlows || []),\n ...(currentEditSchema.deleteFlows || []),\n ])\n ),\n };\n}\n\nexport function handleModifyActivity(\n prevSchema: SpaceConfigSchema,\n stageName: string,\n newActivity: Activity\n): SpaceConfigSchema {\n let hasModified = false;\n\n // 创建 businessFlows 的深拷贝\n const updatedBusinessFlows = prevSchema.businessFlows.map((flow) => {\n // 如果当前流程没有 spec,跳过\n if (!flow.spec || flow.spec.length === 0) {\n return flow;\n }\n\n // 查找匹配的 stage\n const stageIndex = flow.spec.findIndex((spec) => spec.name === stageName);\n if (stageIndex === -1) {\n // 当前流程中没有匹配的 stage,返回原流程\n return flow;\n }\n\n // 找到匹配的 stage,检查其中的 activities\n const targetStage = flow.spec[stageIndex];\n const activities = targetStage.serviceFlowActivities || [];\n\n // 查找同名的 activity\n const activityIndex = activities.findIndex(\n (activity) => activity.name === newActivity.name\n );\n\n if (activityIndex === -1) {\n // 没有找到同名 activity,返回原流程\n return flow;\n }\n\n // 找到了同名 activity,进行更新\n hasModified = true;\n const updatedActivities = [...activities];\n updatedActivities[activityIndex] = newActivity;\n\n // 更新 spec\n const updatedSpec = [...flow.spec];\n updatedSpec[stageIndex] = {\n ...targetStage,\n serviceFlowActivities: updatedActivities,\n };\n\n // 返回更新后的 flow\n return {\n ...flow,\n spec: updatedSpec,\n };\n });\n\n // 如果没有任何修改,打印警告并返回原 schema\n if (!hasModified) {\n // eslint-disable-next-line no-console\n console.warn(\n `Activity \"${newActivity.name}\" not found in stage \"${stageName}\" across all business flows.`\n );\n return prevSchema;\n }\n\n // 返回更新后的 schema\n return {\n ...prevSchema,\n businessFlows: updatedBusinessFlows,\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]!./SpaceNav.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]!./SpaceNav.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useEffect } from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { ElevoSpaceApi_getSpaceSchema } from \"@next-api-sdk/llm-sdk\";\nimport {\n NoticeDropdown,\n NoticeDropdownProps,\n NoticeItem,\n} from \"../../notice-dropdown/index.jsx\";\nimport type { SpaceLogo, SpaceLogoProps } from \"../space-logo/index.jsx\";\nimport { SpaceConfigModal } from \"./SpaceConfigModal/SpaceConfigModal\";\nimport { K, t } from \"../i18n.js\";\nimport styles from \"./SpaceNav.module.css\";\nimport { SpaceDetail } from \"../interfaces.js\";\nimport { handleHttpError } from \"@next-core/runtime\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport interface NoticeDropdownEvents {\n \"notice.click\": CustomEvent<NoticeItem>;\n \"mark.all.read\": CustomEvent<void>;\n}\n\nexport interface NoticeDropdownMapping {\n onNoticeClick: \"notice.click\";\n onMarkAllRead: \"mark.all.read\";\n}\n\nconst WrappedNoticeDropdown = wrapBrick<\n NoticeDropdown,\n NoticeDropdownProps,\n NoticeDropdownEvents,\n NoticeDropdownMapping\n>(\"ai-portal.notice-dropdown\", {\n onNoticeClick: \"notice.click\",\n onMarkAllRead: \"mark.all.read\",\n});\nconst WrappedSpaceLogo = wrapBrick<SpaceLogo, SpaceLogoProps>(\n \"ai-portal.space-logo\"\n);\n\nexport interface SpaceNavProps {\n spaceDetail: SpaceDetail;\n notices?: NoticeItem[];\n onBack: () => void;\n onMembersClick: () => void;\n notifyCenterUrl: string;\n onMarkAllRead: () => void;\n onNoticeClick: (notice: NoticeItem) => void;\n onSpaceEdit?: () => void;\n aiEmployeeId?: string;\n}\n\nexport function SpaceNav(props: SpaceNavProps) {\n const {\n spaceDetail,\n notices = [],\n notifyCenterUrl,\n onBack,\n onMarkAllRead,\n onNoticeClick,\n onSpaceEdit,\n aiEmployeeId,\n } = props;\n\n const [showDescription, setShowDescription] = React.useState(false);\n const [configModalVisible, setConfigModalVisible] = React.useState(false);\n const [configSchema, setConfigSchema] = React.useState<any>(null);\n\n const handleQuestionClick = () => {\n setShowDescription(!showDescription);\n };\n\n const handleSettingClick = async () => {\n setConfigModalVisible(true);\n };\n\n useEffect(() => {\n const fetchSchema = async () => {\n try {\n const schema = await ElevoSpaceApi_getSpaceSchema(\n spaceDetail.instanceId\n );\n setConfigSchema(schema);\n } catch (error) {\n handleHttpError(error);\n }\n };\n fetchSchema();\n }, [spaceDetail.instanceId]);\n\n return (\n <>\n <header className={styles.spaceWorkbenchHeader}>\n <div className={styles.headerLeft}>\n <button className={styles.iconButton} onClick={onBack}>\n <WrappedIcon lib=\"antd\" icon=\"arrow-left\" theme=\"outlined\" />\n </button>\n\n <WrappedSpaceLogo size={32} />\n\n <h1 className={styles.spaceTitle}>{spaceDetail.name}</h1>\n\n <div className={styles.actionIcons}>\n <button className={styles.iconButton} onClick={handleSettingClick}>\n <WrappedIcon lib=\"antd\" icon=\"setting\" theme=\"outlined\" />\n </button>\n <button\n className={`${styles.iconButton} ${showDescription ? styles.active : \"\"}`}\n onClick={handleQuestionClick}\n >\n <WrappedIcon lib=\"antd\" icon=\"question-circle\" theme=\"outlined\" />\n </button>\n </div>\n </div>\n\n <div className={styles.headerRight}>\n {/* 暂时隐藏成员添加按钮,先不使用 */}\n {/* <WrappedIcon\n className={styles.iconButton}\n lib=\"antd\"\n icon=\"usergroup-add\"\n onClick={onMembersClick}\n ></WrappedIcon>\n\n <div className={styles.divider} /> */}\n\n <WrappedNoticeDropdown\n dataSource={notices}\n dropdownContentStyle={{ minWidth: \"300px\" }}\n hideNotifyCenterButton\n urlTarget=\"_blank\"\n notifyCenterUrl={notifyCenterUrl}\n onMarkAllRead={() => onMarkAllRead()}\n onNoticeClick={(e) => onNoticeClick(e.detail)}\n />\n </div>\n </header>\n\n {spaceDetail?.description && (\n <div\n className={`${styles.spaceDescription} ${\n showDescription ? styles.spaceDescriptionVisible : \"\"\n }`}\n >\n <div className={styles.descriptionHeader}>\n <p className={styles.descriptionTitle}>{t(K.DESCRIPTION)}</p>\n <button\n className={styles.descriptionEditButton}\n onClick={onSpaceEdit}\n >\n <WrappedIcon lib=\"antd\" icon=\"edit\" theme=\"outlined\" />\n </button>\n </div>\n <p className={styles.descriptionContent}>{spaceDetail.description}</p>\n </div>\n )}\n\n <SpaceConfigModal\n visible={configModalVisible}\n configSchema={configSchema}\n spaceDetail={spaceDetail}\n aiEmployeeId={aiEmployeeId}\n onCancel={() => setConfigModalVisible(false)}\n />\n </>\n );\n}\n","export class JsonStorage {\n constructor(storage) {\n let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"brick-next-\";\n this.storage = storage;\n this.prefix = prefix;\n }\n setItem(name, value) {\n this.storage.setItem(this.prefix + name, JSON.stringify(value));\n }\n getItem(name) {\n return JSON.parse(this.storage.getItem(this.prefix + name));\n }\n removeItem(name) {\n return this.storage.removeItem(this.prefix + name);\n }\n clear() {\n return this.storage.clear();\n }\n}\n//# sourceMappingURL=JsonStorage.js.map","\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]!./ChatArea.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]!./ChatArea.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./Tabs.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]!./Tabs.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useEffect, useRef } from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { K, t } from \"../../i18n.js\";\nimport styles from \"./Tabs.module.css\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface TabItem {\n id: string;\n title: string;\n}\n\nexport interface TabProps {\n id: string;\n title: string;\n active: boolean;\n onClick: (id: string) => void;\n onClose: (id: string, e: React.MouseEvent) => void;\n}\n\nexport const Tab = ({ id, title, active, onClick, onClose }: TabProps) => {\n const tabRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (active && tabRef.current) {\n tabRef.current.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n }\n }, [active]);\n\n return (\n <div\n ref={tabRef}\n className={`${styles.tab} ${active ? styles.active : \"\"}`}\n onClick={() => onClick(id)}\n >\n <WrappedIcon\n lib=\"antd\"\n icon=\"message\"\n theme=\"outlined\"\n className={styles.tabIcon}\n />\n <span className={styles.tabTitle}>{title}</span>\n <button\n className={styles.closeButton}\n onClick={(e) => onClose(id, e)}\n title={t(K.CLOSE_TAB)}\n >\n <WrappedIcon lib=\"antd\" icon=\"close\" theme=\"outlined\" />\n </button>\n </div>\n );\n};\n\nexport interface TabsProps {\n tabs: TabItem[];\n activeTabId: string | null;\n onTabClick: (id: string) => void;\n onTabClose: (id: string, e: React.MouseEvent) => void;\n onAddSession: () => void;\n onHistoryClick?: () => void;\n}\n\nexport const Tabs = ({\n tabs,\n activeTabId,\n onTabClick,\n onTabClose,\n onAddSession,\n onHistoryClick,\n}: TabsProps) => {\n return (\n <div className={styles.tabBar}>\n <div className={styles.tabList}>\n {tabs.map((tab) => (\n <Tab\n key={tab.id}\n id={tab.id}\n title={tab.title}\n active={activeTabId === tab.id}\n onClick={onTabClick}\n onClose={onTabClose}\n />\n ))}\n </div>\n <div className={styles.tabActions}>\n <button\n className={styles.actionButton}\n onClick={onAddSession}\n title={t(K.NEW_SESSION)}\n >\n <WrappedIcon lib=\"antd\" icon=\"plus\" theme=\"outlined\" />\n </button>\n <div className={styles.divider} />\n <button\n className={styles.actionButton}\n onClick={onHistoryClick}\n title={t(K.HISTORY_SESSIONS)}\n >\n <WrappedIcon lib=\"antd\" icon=\"history\" theme=\"outlined\" />\n </button>\n </div>\n </div>\n );\n};\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./HistoryDrawer.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]!./HistoryDrawer.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useState, useEffect, useRef, useContext } from \"react\";\nimport {\n ElevoApi_listElevoConversations,\n type ElevoApi_ListElevoConversationsRequestParams,\n} from \"@next-api-sdk/llm-sdk\";\nimport moment from \"moment\";\nimport { WrappedDrawer, WrappedIcon, WrappedLink } from \"../bricks.js\";\nimport { ConversationItem } from \"../interfaces.js\";\nimport { WorkbenchContext } from \"../workbenchContext.js\";\n\nimport styles from \"./HistoryDrawer.module.css\";\nimport { K, t } from \"../i18n.js\";\n\nexport interface HistoryDrawerProps {\n visible: boolean;\n onClose: () => void;\n onConversationClick?: (conversation: ConversationItem) => void;\n}\n\nconst DEFAULT_PAGE_SIZE = 20;\n\nexport function HistoryDrawer(props: HistoryDrawerProps) {\n const { visible, onClose, onConversationClick } = props;\n const { spaceDetail } = useContext(WorkbenchContext);\n const [conversations, setConversations] = useState<ConversationItem[]>([]);\n const [loading, setLoading] = useState(false);\n const [hasMore, setHasMore] = useState(true);\n const [nextToken, setNextToken] = useState<string | undefined>();\n const listRef = useRef<HTMLDivElement>(null);\n const initialRef = useRef(true);\n\n const loadInitialHistory = async () => {\n setLoading(true);\n try {\n const data = await ElevoApi_listElevoConversations(\n {\n spaceInstanceId: spaceDetail?.instanceId,\n onlyOwner: true,\n limit: DEFAULT_PAGE_SIZE,\n } as ElevoApi_ListElevoConversationsRequestParams,\n {\n interceptorParams: {\n ignoreLoadingBar: true,\n },\n }\n );\n\n setConversations((data.conversations as ConversationItem[]) || []);\n setNextToken(data.nextToken);\n setHasMore(!!data.nextToken);\n initialRef.current = false;\n } catch (_error) {\n setConversations([]);\n setHasMore(false);\n } finally {\n setLoading(false);\n }\n };\n\n // 初始加载\n useEffect(() => {\n if (visible && initialRef.current) {\n loadInitialHistory();\n }\n }, [visible]);\n\n const loadMore = async () => {\n if (loading || !hasMore || !nextToken) return;\n\n setLoading(true);\n try {\n const data = await ElevoApi_listElevoConversations(\n {\n spaceInstanceId: spaceDetail?.instanceId,\n token: nextToken,\n onlyOwner: true,\n limit: DEFAULT_PAGE_SIZE,\n } as ElevoApi_ListElevoConversationsRequestParams,\n {\n interceptorParams: {\n ignoreLoadingBar: true,\n },\n }\n );\n\n setConversations((prev) => [\n ...prev,\n ...((data.conversations as ConversationItem[]) || []),\n ]);\n setNextToken(data.nextToken);\n setHasMore(!!data.nextToken);\n } catch (_error) {\n setHasMore(false);\n } finally {\n setLoading(false);\n }\n };\n\n const handleConversationClick = (conversation: ConversationItem) => {\n onConversationClick?.(conversation);\n onClose();\n };\n\n return (\n <WrappedDrawer\n visible={visible}\n width=\"400px\"\n themeVariant=\"elevo\"\n placement=\"right\"\n onClose={onClose}\n customTitle={t(K.HISTORY_SESSIONS)}\n className={styles.drawer}\n >\n <div className={styles.historyList} ref={listRef}>\n {conversations.length === 0 && !loading ? (\n <div className={styles.emptyState}>\n <WrappedIcon\n lib=\"antd\"\n icon=\"inbox\"\n theme=\"outlined\"\n className={styles.emptyStateIcon}\n />\n <p className={styles.emptyStateText}>{t(K.NO_HISTORY)}</p>\n </div>\n ) : (\n <>\n {conversations.map((conversation) => (\n <div\n key={conversation.conversationId}\n className={styles.historyItem}\n onClick={() => handleConversationClick(conversation)}\n >\n <div className={styles.historyItemHeader}>\n <span className={styles.historyItemTitle}>\n {conversation.title}\n </span>\n </div>\n {conversation.description && (\n <p className={styles.historyItemPreview}>\n {conversation.description}\n </p>\n )}\n <div className={styles.historyItemFooter}>\n <WrappedIcon\n lib=\"antd\"\n icon=\"clock-circle\"\n theme=\"outlined\"\n className={styles.timeIcon}\n />\n <span className={styles.historyItemTime}>\n {moment\n .unix(\n (conversation.updatedAt ||\n conversation.startTime) as number\n )\n .format(\"YYYY-MM-DD HH:mm:ss\")}\n </span>\n </div>\n </div>\n ))}\n\n {hasMore && (\n <div className={styles.loadMoreContainer}>\n <WrappedLink type=\"text\" disabled={loading} onClick={loadMore}>\n {loading ? t(K.LOADING) : t(K.LOAD_MORE)}\n </WrappedLink>\n </div>\n )}\n </>\n )}\n </div>\n </WrappedDrawer>\n );\n}\n","import React, {\n useState,\n useEffect,\n useRef,\n useMemo,\n useCallback,\n useContext,\n forwardRef,\n useImperativeHandle,\n} from \"react\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport { handleHttpError } from \"@next-core/runtime\";\nimport { http } from \"@next-core/http\";\nimport {\n ChatPanelContent,\n ChatPanelContentRef,\n} from \"../../../chat-panel/ChatPanelContent.js\";\nimport styles from \"./ChatArea.module.css\";\nimport { K, t } from \"../../i18n.js\";\nimport type {\n ChatPayload,\n ConversationPatch,\n RequestStore,\n} from \"../../../shared/interfaces.js\";\nimport { Tabs } from \"./Tabs.js\";\nimport { WorkbenchContext } from \"../../workbenchContext.js\";\nimport { HistoryDrawer } from \"../HistoryDrawer.js\";\nimport { ConversationItem } from \"../../interfaces.js\";\n\nexport interface SessionTab {\n id: string;\n title: string;\n conversationId: string | null;\n}\n\nexport interface ChatAreaProps {\n onChatSubmit?: (payload: ChatPayload) => void;\n}\n\nexport interface ChatAreaRef {\n addNewSession: (initialRequest: RequestStore) => void;\n sendMessage: (payload: ChatPayload) => void;\n}\n\nconst STORAGE_KEY_ACTIVE_TABS = \"space_workbench_active_tabs\";\nconst STORAGE_KEY_ACTIVE_TAB_ID = \"space_workbench_active_tab_id\";\n\nexport const ChatArea = forwardRef<ChatAreaRef, ChatAreaProps>(\n function ChatArea(_props, ref) {\n const [tabs, setTabs] = useState<SessionTab[]>([]);\n const [activeTabId, setActiveTabId] = useState<string | null>(null);\n const [submitDisabled, setSubmitDisabled] = useState(false);\n const chatPanelRef = useRef<ChatPanelContentRef>(null);\n const [historyDrawerVisible, setHistoryDrawerVisible] = useState(false);\n\n const processedConversationIdsRef = useRef<Set<string>>(new Set());\n\n const { uploadOptions, spaceDetail } = useContext(WorkbenchContext);\n const storage = useMemo(() => new JsonStorage(localStorage), []);\n const storageActiveTabsKey = `${STORAGE_KEY_ACTIVE_TABS}_${spaceDetail.instanceId}`;\n const storageActiveTabIdKey = `${STORAGE_KEY_ACTIVE_TAB_ID}_${spaceDetail.instanceId}`;\n\n // 存储每个 tab 对应的 conversationId 和 initialRequest\n const [tabsData, setTabsData] = useState<\n Map<\n string,\n { conversationId: string | null; initialRequest: RequestStore | null }\n >\n >(new Map());\n\n const handleAddSession = useCallback(() => {\n const newTab: SessionTab = {\n id: `session_${Date.now()}`,\n title: t(K.NEW_SESSION),\n conversationId: null,\n };\n setTabs((prev) => [...prev, newTab]);\n setActiveTabId(newTab.id);\n\n // 初始化新 tab 的数据\n setTabsData((prev) => {\n const newMap = new Map(prev);\n newMap.set(newTab.id, {\n conversationId: null,\n initialRequest: null,\n });\n return newMap;\n });\n\n return newTab.id;\n }, []);\n\n // 从 localStorage 加载 tabs\n useEffect(() => {\n const savedTabs = storage.getItem(storageActiveTabsKey);\n if (savedTabs?.length) {\n setTabs(savedTabs);\n\n // 尝试恢复之前激活的 tab\n const savedActiveTabId = storage.getItem(storageActiveTabIdKey);\n const tabExists = savedTabs.some(\n (tab: SessionTab) => tab.id === savedActiveTabId\n );\n\n // 如果保存的 tabId 存在于列表中则激活它,否则激活第一个\n setActiveTabId(tabExists ? savedActiveTabId : savedTabs[0].id);\n\n // 初始化 tabsData\n const newTabsData = new Map();\n savedTabs.forEach((tab: SessionTab) => {\n newTabsData.set(tab.id, {\n conversationId: tab.conversationId,\n initialRequest: null,\n });\n });\n setTabsData(newTabsData);\n } else {\n handleAddSession();\n }\n }, [\n storage,\n handleAddSession,\n storageActiveTabsKey,\n storageActiveTabIdKey,\n ]);\n\n // 保存 tabs 到 localStorage\n useEffect(() => {\n if (tabs.length > 0) {\n storage.setItem(storageActiveTabsKey, tabs);\n }\n }, [storage, tabs, storageActiveTabsKey]);\n\n // 保存当前激活的 tab id 到 localStorage\n useEffect(() => {\n if (activeTabId) {\n storage.setItem(storageActiveTabIdKey, activeTabId);\n }\n }, [storage, activeTabId, storageActiveTabIdKey]);\n\n const handleCloseTab = (tabId: string, e: React.MouseEvent) => {\n e.stopPropagation();\n\n const tabIndex = tabs.findIndex((tab) => tab.id === tabId);\n const closingTab = tabs.find((tab) => tab.id === tabId);\n const newTabs = tabs.filter((tab) => tab.id !== tabId);\n\n setTabs(newTabs);\n\n // 清理 tabsData\n setTabsData((prev) => {\n const newMap = new Map(prev);\n newMap.delete(tabId);\n return newMap;\n });\n\n // 清理 processedConversationIdsRef\n if (closingTab?.conversationId) {\n processedConversationIdsRef.current.delete(closingTab.conversationId);\n }\n\n // 如果关闭的是当前活跃的 tab,切换到相邻的 tab\n if (activeTabId === tabId && newTabs.length > 0) {\n const nextIndex = Math.min(tabIndex, newTabs.length - 1);\n setActiveTabId(newTabs[nextIndex].id);\n }\n\n // 如果所有 tab 都关闭了,创建一个新的\n if (newTabs.length === 0) {\n handleAddSession();\n }\n };\n\n const handleTabClick = (tabId: string) => {\n setActiveTabId(tabId);\n };\n\n const handleChatSubmit = useCallback(\n async (payload: ChatPayload, targetTabId?: string) => {\n // 使用传入的 targetTabId 负责使用当前的 activeTabId\n const tabId = targetTabId || activeTabId;\n if (!tabId) return;\n\n const currentTabData = tabsData.get(tabId);\n\n // 如果当前 tab 还没有 conversationId,则创建新的会话\n if (!currentTabData?.conversationId) {\n setSubmitDisabled(true);\n try {\n const res = await http.post<{\n data: { conversationId: string };\n }>(\n \"api/gateway/logic.llm.aiops_service/api/v1/elevo/conversations\",\n {}\n );\n const conversationId = res.data.conversationId;\n\n // 更新 tabsData\n setTabsData((prev) => {\n const newMap = new Map(prev);\n newMap.set(tabId, {\n conversationId,\n initialRequest: {\n ...payload,\n conversationId,\n spaceId: spaceDetail.instanceId,\n },\n });\n return newMap;\n });\n\n // 更新 tabs 中的 conversationId\n setTabs((prev) =>\n prev.map((tab) =>\n tab.id === tabId ? { ...tab, conversationId } : tab\n )\n );\n } catch (e) {\n handleHttpError(e);\n } finally {\n setSubmitDisabled(false);\n }\n }\n },\n [activeTabId, tabsData]\n );\n\n // 暴露 addNewSession 方法给父组件\n useImperativeHandle(\n ref,\n () => ({\n addNewSession: (initialRequest: RequestStore) => {\n const newTabId = handleAddSession();\n\n // 如果 initialRequest 有 conversationId 但没有 content,说明是要加载已有会话\n // 这种情况下,conversationId 保存到 tab,但 initialRequest 设为 null\n // 这样 useConversationDetail 会进入 resume 模式\n const conversationId = initialRequest?.conversationId || null;\n const hasContent = initialRequest?.content;\n\n // 更新新 tab 的 initialRequest 和 conversationId\n setTabsData((prev) => {\n const newMap = new Map(prev);\n newMap.set(newTabId, {\n conversationId,\n // 只有当有 content 时才传递 initialRequest,否则传 null 触发 resume 模式\n initialRequest: hasContent ? initialRequest : null,\n });\n return newMap;\n });\n\n // 更新 tabs 中的 conversationId\n setTabs((prev) =>\n prev.map((tab) =>\n tab.id === newTabId\n ? {\n ...tab,\n conversationId,\n }\n : tab\n )\n );\n },\n sendMessage: async (payload: ChatPayload) => {\n const newTabId = handleAddSession();\n await handleChatSubmit(payload, newTabId);\n },\n }),\n [handleAddSession, handleChatSubmit]\n );\n\n const handleData = useCallback((data: ConversationPatch) => {\n // 如果收到了会话标题,更新对应的 tab 标题\n if (data.title && data.id) {\n setTabs((prev) =>\n prev.map((tab) =>\n tab.conversationId === data.id\n ? { ...tab, title: data.title! }\n : tab\n )\n );\n }\n\n // 当收到数据时,将该 conversationId 标记为已处理\n // 使用 ref 而不是 state,这样不会触发重新渲染,也不会中断 SSE 流\n // 当组件重新挂载时,我们会根据这个 ref 决定传 null 还是 initialRequest\n if (data.id) {\n processedConversationIdsRef.current.add(data.id);\n }\n }, []);\n\n const handleHistoryClick = () => {\n setHistoryDrawerVisible(true);\n };\n\n const handleHistoryDrawerClose = () => {\n setHistoryDrawerVisible(false);\n };\n\n const handleConversationClick = useCallback(\n (conversation: ConversationItem) => {\n // 检查是否已存在该 conversationId 的 tab\n const existingTab = tabs.find(\n (tab) => tab.conversationId === conversation.conversationId\n );\n\n if (existingTab) {\n // 如果已存在,直接激活该 tab\n setActiveTabId(existingTab.id);\n } else {\n // 如果不存在,创建新的 tab\n const newTab: SessionTab = {\n id: `session_${Date.now()}`,\n title: conversation.title || t(K.NEW_SESSION),\n conversationId: conversation.conversationId || null,\n };\n\n // 添加新 tab\n setTabs((prev) => [...prev, newTab]);\n setActiveTabId(newTab.id);\n\n // 初始化新 tab 的数据\n setTabsData((prev) => {\n const newMap = new Map(prev);\n newMap.set(newTab.id, {\n conversationId: conversation.conversationId || null,\n initialRequest: null,\n });\n return newMap;\n });\n }\n\n // 关闭历史抽屉\n setHistoryDrawerVisible(false);\n },\n [tabs]\n );\n\n const activeTab = tabs.find((tab) => tab.id === activeTabId);\n const activeTabData = activeTabId ? tabsData.get(activeTabId) : undefined;\n\n // 计算有效的 initialRequest\n // 如果该 conversationId 已经被处理过(已发送过初始消息),则返回 null\n // 这样组件重新挂载时会进入 resume 模式\n const effectiveInitialRequest = useMemo(() => {\n const conversationId = activeTabData?.conversationId;\n const initialRequest = activeTabData?.initialRequest;\n\n // 如果没有 conversationId 或 initialRequest,直接返回 null\n if (!conversationId || !initialRequest) {\n return null;\n }\n\n // 如果该 conversationId 已经被处理过,返回 null 进入 resume 模式\n if (processedConversationIdsRef.current.has(conversationId)) {\n return null;\n }\n\n return initialRequest;\n }, [activeTabData?.conversationId, activeTabData?.initialRequest]);\n\n return (\n <div className={styles.chatArea}>\n <Tabs\n tabs={tabs}\n activeTabId={activeTabId}\n onTabClick={handleTabClick}\n onTabClose={handleCloseTab}\n onAddSession={handleAddSession}\n onHistoryClick={handleHistoryClick}\n />\n\n <div className={styles.chatContent}>\n {activeTab && (\n <ChatPanelContent\n key={activeTab.id}\n ref={chatPanelRef}\n conversationId={activeTabData?.conversationId || null}\n initialRequest={effectiveInitialRequest}\n uploadOptions={uploadOptions}\n submitDisabled={submitDisabled}\n onChatSubmit={handleChatSubmit}\n onData={handleData}\n placeholder={t(K.PLEASE_ENTER)}\n help={{\n useBrick: {\n brick: \"ai-portal.space-chat-guide\",\n properties: {\n spaceDetail,\n },\n },\n }}\n />\n )}\n </div>\n\n <HistoryDrawer\n visible={historyDrawerVisible}\n onClose={handleHistoryDrawerClose}\n onConversationClick={handleConversationClick}\n />\n </div>\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, `.serviceFlows--dghUrey_{display:flex;flex-direction:column;width:349px;height:100%;min-height:0;background:rgba(248,250,252,0.5);border-left:1px solid #fff;border-radius:16px;overflow:hidden}.header--HgBAtPFj{display:flex;align-items:center;justify-content:space-between;padding:16px;min-height:70px;flex-shrink:0}.titleContainer--hGtBJGvI{display:flex;flex-direction:column;gap:2px}.title--TYLb924W{margin:0;font-size:14px;font-weight:500;color:rgba(0,0,0,0.85);font-family:\"PingFang SC\",sans-serif;line-height:20px;letter-spacing:-0.1504px}.subtitle--n0EaQNXr{margin:0;font-size:12px;font-weight:400;color:rgba(0,0,0,0.45);font-family:\"Inter\",\"Noto Sans JP\",\"Noto Sans SC\",sans-serif;line-height:15px;letter-spacing:0.1172px}.flowList--ip13G_aN{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:0 12px 20px;display:flex;flex-direction:column;gap:12px}.flowList--ip13G_aN::-webkit-scrollbar{width:6px}.flowList--ip13G_aN::-webkit-scrollbar-thumb{background:rgba(0,0,0,0.15);border-radius:3px}.flowCard--wg5hpF0c{display:flex;flex-direction:column;gap:14px;padding:15px 13px 17px;background:#fff;border:1px solid rgba(0,0,0,0.1);border-radius:8px;cursor:pointer;transition:all 0.2s ease}.flowCard--wg5hpF0c:hover{border-color:#a1b5ff;box-shadow:0px 2px 4px rgba(37,64,255,0.1)}.cardHeader--rf2tfv8J{display:flex;align-items:center;justify-content:space-between;gap:8px}.flowName--nim4ZVKD{flex:1;font-size:13px;font-weight:500;color:rgba(0,0,0,0.85);font-family:\"PingFang SC\",sans-serif;line-height:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detailButton--cE02SjSK{display:flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;border:none;background:none;cursor:pointer;color:rgba(0,0,0,0.45);transition:color 0.2s ease;flex-shrink:0}.detailButton--cE02SjSK:hover{color:#2540ff}.detailButton--cE02SjSK eo-icon{font-size:14px}.flowDescription--iszVp9Ni{margin:0;font-size:12px;font-weight:400;color:rgba(0,0,0,0.45);font-family:\"PingFang SC\",sans-serif;line-height:12.5px;letter-spacing:0.1172px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.stageProgress--q7IjLC9N{display:flex;gap:3px;height:4px;align-items:center;overflow:hidden}.progressBar--Lsi6PvRI{flex:1;height:4px;background:rgba(0,0,0,0.08);border-radius:2px;min-width:0}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"serviceFlows\": `serviceFlows--dghUrey_`,\n\t\"header\": `header--HgBAtPFj`,\n\t\"titleContainer\": `titleContainer--hGtBJGvI`,\n\t\"title\": `title--TYLb924W`,\n\t\"subtitle\": `subtitle--n0EaQNXr`,\n\t\"flowList\": `flowList--ip13G_aN`,\n\t\"flowCard\": `flowCard--wg5hpF0c`,\n\t\"cardHeader\": `cardHeader--rf2tfv8J`,\n\t\"flowName\": `flowName--nim4ZVKD`,\n\t\"detailButton\": `detailButton--cE02SjSK`,\n\t\"flowDescription\": `flowDescription--iszVp9Ni`,\n\t\"stageProgress\": `stageProgress--q7IjLC9N`,\n\t\"progressBar\": `progressBar--Lsi6PvRI`\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, `.configPreviewContainer--yNY3q35k{display:flex;flex-direction:column;height:100%;overflow:hidden}.configPreviewHeader--DNjrNlnV{display:flex;justify-content:flex-end;align-items:center;padding:12px 16px;background:transparent}.viewSwitcher--Gl55lnAi{display:flex;align-items:center;gap:8px;background:rgba(255,255,255,0.8);padding:4px;border-radius:6px;border:1px solid rgba(0,0,0,0.06)}.viewButton--whi8DhXt{display:flex;align-items:center;gap:4px;padding:4px 10px;font-size:12px;color:rgba(0,0,0,0.65);background:transparent;border:none;border-radius:4px;cursor:pointer;transition:all 0.2s}.viewButton--whi8DhXt:hover{color:#1d2129;background:rgba(0,0,0,0.04)}.viewButton--whi8DhXt.active--_wR37vdn{color:#2540ff;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,0.06)}.viewButtonIcon--oU5oLu_G{width:14px;height:14px}.configPreviewBody--K4kW1OkP{flex:1;overflow:auto;padding:0 24px 24px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"configPreviewContainer\": `configPreviewContainer--yNY3q35k`,\n\t\"configPreviewHeader\": `configPreviewHeader--DNjrNlnV`,\n\t\"viewSwitcher\": `viewSwitcher--Gl55lnAi`,\n\t\"viewButton\": `viewButton--whi8DhXt`,\n\t\"active\": `active--_wR37vdn`,\n\t\"viewButtonIcon\": `viewButtonIcon--oU5oLu_G`,\n\t\"configPreviewBody\": `configPreviewBody--K4kW1OkP`\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, `.chatArea--YKYBTPRs{display:flex;flex-direction:column;flex:1;min-height:0;height:100%;background:rgba(248,250,252,0.5);border-radius:16px;overflow:hidden;box-shadow:0px 0px 0px 1px rgba(0,0,0,0.06)}.chatContent--TopyzJBe{flex:1;min-height:0;overflow:hidden;position:relative;padding:20px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"chatArea\": `chatArea--YKYBTPRs`,\n\t\"chatContent\": `chatContent--TopyzJBe`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../home-container/images/background.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.container--IEVu6SwI{display:block;width:100%;height:100%;position:relative}.container--IEVu6SwI::before{content:\"\";position:fixed;z-index:-1;top:0;right:0;bottom:0;left:0;background-color:#f1f1f1;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-position:center;background-size:cover;background-repeat:no-repeat;background-attachment:fixed}.spaceWorkbenchContainer--gkoOVSLf{display:flex;flex-direction:column;height:100vh}.spaceWorkbenchContent--ccPayY4y{display:flex;gap:15px;flex:1;min-height:0;padding:0 24px 20px;overflow:hidden;align-items:stretch}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": `container--IEVu6SwI`,\n\t\"spaceWorkbenchContainer\": `spaceWorkbenchContainer--gkoOVSLf`,\n\t\"spaceWorkbenchContent\": `spaceWorkbenchContent--ccPayY4y`\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, `.businessFlowPreview--mNpMh7gZ{background:#fff;border-radius:12px;padding:24px;box-shadow:0 1px 3px rgba(0,0,0,0.04)}.flowHeader--NE0UwE3g{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:24px}.flowTitleArea--_BBntwB4{display:flex;flex-direction:column;gap:4px}.flowTitle--iDw5rVFR{font-size:18px;font-weight:600;color:#1d2129}.flowDescription--IV2wzffp{font-size:13px;color:rgba(0,0,0,0.45)}.flowBadge--fiNjj0d0{padding:4px 12px;font-size:12px;font-weight:500;color:#2540ff;background:rgba(37,64,255,0.08);border:1px solid rgba(37,64,255,0.2);border-radius:16px;white-space:nowrap}.flowSection--i1oQlw1W{margin-bottom:24px}.flowSection--i1oQlw1W:last-child{margin-bottom:0}.sectionTitle--tELiGZeX{display:flex;align-items:center;gap:8px}.prerequisitesIcon--OfQsltW6{width:16px;height:16px;color:#2540ff}.prerequisitesSubtitle--kiyi4Euv{font-size:13px;color:rgba(0,0,0,0.65);margin-bottom:8px}.prerequisitesList--PrLQhk8U{display:flex;flex-direction:column;gap:8px;padding-left:4px}.prerequisiteItem--ByEEG3PH{display:flex;align-items:flex-start;gap:8px;font-size:13px;color:rgba(0,0,0,0.65);line-height:1.5}.prerequisiteItem--ByEEG3PH::before{content:\"•\";color:rgba(0,0,0,0.25);flex-shrink:0}.stagesContainer--oWEV6pXE{display:flex;gap:24px;border:1px solid rgba(0,0,0,0.1);border-radius:12px;padding:23px 26px;background:#fff;overflow:hidden}.stageColumn--kV8p6j24{flex:1;min-width:0;display:flex;flex-direction:column;gap:15px}.stageActivities--rGeR247I{display:flex;flex-direction:column;gap:8px}.stageIndicator--V0xwXYtQ{display:flex;align-items:center;gap:12px;flex-shrink:0}.stageIndicatorNumber--sAzIQr3N{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:#e6ebef;border:2px solid #e6ebef;border-radius:50%;font-family:\"PingFang SC\",sans-serif;font-size:14px;font-weight:600;line-height:20px;color:#45556c;flex-shrink:0}.stageIndicatorName--mNJqDA6j{font-family:\"PingFang SC\",sans-serif;font-size:14px;font-weight:600;line-height:20px;color:#1d293d;letter-spacing:0.35px;white-space:nowrap;flex-shrink:0}.stageIndicatorLine--KEldEXve{height:0;border-top:1px dashed rgba(0,0,0,0.15);flex:1;min-width:40px}.jsonView--TxF2k1Ea{background:#fff;border-radius:12px;padding:16px;box-shadow:0 1px 3px rgba(0,0,0,0.04);overflow:auto;height:100%}.jsonView--TxF2k1Ea pre{margin:0;font-family:\"SF Mono\",\"Monaco\",\"Inconsolata\",\"Fira Mono\",\"Droid Sans Mono\",monospace;font-size:12px;line-height:1.6;color:#1d2129;white-space:pre-wrap;word-break:break-all}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"businessFlowPreview\": `businessFlowPreview--mNpMh7gZ`,\n\t\"flowHeader\": `flowHeader--NE0UwE3g`,\n\t\"flowTitleArea\": `flowTitleArea--_BBntwB4`,\n\t\"flowTitle\": `flowTitle--iDw5rVFR`,\n\t\"flowDescription\": `flowDescription--IV2wzffp`,\n\t\"flowBadge\": `flowBadge--fiNjj0d0`,\n\t\"flowSection\": `flowSection--i1oQlw1W`,\n\t\"sectionTitle\": `sectionTitle--tELiGZeX`,\n\t\"prerequisitesIcon\": `prerequisitesIcon--OfQsltW6`,\n\t\"prerequisitesSubtitle\": `prerequisitesSubtitle--kiyi4Euv`,\n\t\"prerequisitesList\": `prerequisitesList--PrLQhk8U`,\n\t\"prerequisiteItem\": `prerequisiteItem--ByEEG3PH`,\n\t\"stagesContainer\": `stagesContainer--oWEV6pXE`,\n\t\"stageColumn\": `stageColumn--kV8p6j24`,\n\t\"stageActivities\": `stageActivities--rGeR247I`,\n\t\"stageIndicator\": `stageIndicator--V0xwXYtQ`,\n\t\"stageIndicatorNumber\": `stageIndicatorNumber--sAzIQr3N`,\n\t\"stageIndicatorName\": `stageIndicatorName--mNJqDA6j`,\n\t\"stageIndicatorLine\": `stageIndicatorLine--KEldEXve`,\n\t\"jsonView\": `jsonView--TxF2k1Ea`\n};\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["ElevoSpaceApi_listServiceFlow","async","spaceId","params","options","http","get","data","ElevoObjectApi_updateServiceObjectInstance","objectId","instanceId","put","ElevoSpaceApi_listActivityLogs","ElevoSpaceApi_createActivityLog","post","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","undefined","ActivityLogs","_ref","objectInstanceId","onLinkConversation","activities","setActivities","useState","loading","setLoading","totalCount","setTotalCount","submitDisabled","setSubmitDisabled","commentValue","setCommentValue","listContainerRef","useRef","isSubmittingCommentRef","fetchActivities","useCallback","_res$list","res","limit","list","length","error","handleHttpError","useEffect","current","scrollTop","handleCommentSubmit","trim","username","auth","getAuth","actionType","userName","payload","content","handleKeyDown","e","key","shiftKey","preventDefault","React","className","styles","container","header","title","t","K","ACTIVITY_RECORD","countBadge","loadingState","LOADING","EmptyState","empty","NO_ACTIVITY_RECORD","listContainer","ref","map","activity","clickable","isClickable","iconType","getIconType","description","time","timestamp","createTime","humanizeTime","HumanizeTimeFormat","relative","CREATED_INSTANCE","fieldNames","Object","keys","new","join","EDITED_INSTANCE","COMMENTED","STARTED_CONVERSATION","STATUS_CHANGED","conversationTitle","CONVERSATION","CHANGED_STATUS_TO","status","formatActivityText","activityId","activityCard","disabled","onClick","conversationId","handleCardClick","iconWrapper","WrappedIcon","lib","icon","style","fontSize","titleRow","activityTitle","timeText","activityDesc","footer","WrappedTextarea","themeVariant","placeholder","ADD_COMMENT_PLACEHOLDER","value","autoSize","minRows","maxRows","onValueChange","detail","onKeyDown","wrapBrick","WrappedChatInput","onChatSubmit","onTerminate","InstDetailManagement","instance","businessObject","onClose","onNewConversation","onInstanceUpdate","uploadOptions","spaceDetail","useContext","WorkbenchContext","activeFile","setActiveFile","taskContextValue","useMemo","handleChatSubmit","newConversationId","requestPayload","agentId","cmd","type","spaceInstanceId","serviceObjectId","handleAttrChange","attrId","updatedInstance","handleFileClick","file","TaskContext","Provider","instanceDetailContainer","instanceDetailHeader","instanceDetailTitle","objectName","closeButton","instanceDetailBody","instanceDetailLeft","instanceDetailLeftWrapper","instanceDetailContent","InstFieldsView","attrs","attributes","onAttrChange","onFileClick","instanceDetailFooter","INSTANCE_DETAIL_CHAT_PLACEHOLDER","instanceDetailRight","FilePreview","___CSS_LOADER_EXPORT___","push","module","id","ActivityCard","assignee","active","classNames","activityCardActive","activityContent","activityName","activityNameActive","activityDescription","activityAssignee","WrappedModal","onConfirm","onCancel","onOpen","WrappedUserOrUserGroupSelect","WrappedSelect","WrappedMarkdownDisplay","WrappedEasyopsAvatar","ActivityDetailModal","_aiEmployees$map","_activity$hilUser","_activity","visible","onChange","onlyRead","aiEmployees","setAiEmployees","setActivity","aiEmployeeName","_employee$name","aiEmployeeId","employee","find","emp","employeeId","name","ElevoApi_listElevoAiEmployees","page","page_size","filter","item","fetchAssignees","modalTitle","width","noFooter","maskClosable","section","sectionTitle","ACTIVITY_DESCRIPTION","descriptionContent","emptyDescription","NO_DESCRIPTION","RESPONSIBLE_AI_EMPLOYEE","readOnlyDisplay","category","readOnlyIcon","readOnlyText","NOT_SET","label","SELECT_AI_EMPLOYEE_PLACEHOLDER","event","newActivity","select","hilRules","HITL_RULES","hitlRuleItem","HITL_INTERVENTION_USER","hilUser","nameOrInstanceId","showName","size","SELECT_HITL_USER_PLACEHOLDER","optionsMode","userKey","isMultiple","BusinessFlowPreview","_data$spec","viewType","activityOnlyRead","selectedActivity","setSelectedActivity","modifyActivity","ConfigContext","currentStage","jsonView","JSON","stringify","businessFlowPreview","flowHeader","flowTitleArea","flowTitle","flowDescription","prerequisite","flowSection","prerequisitesIcon","PREREQUISITES","prerequisitesSubtitle","PREREQUISITES_SUBTITLE","prerequisitesList","spec","stagesContainer","stage","index","_stage$serviceFlowAct","stageColumn","stageIndicator","stageIndicatorNumber","stageIndicatorName","stageIndicatorLine","stageActivities","serviceFlowActivities","actIndex","handleActivityClick","stageName","handleCloseActivityDetail","createContext","ChatPanelContent","forwardRef","initialRequest","help","fromModal","onData","inputRef","activeImages","setActiveImages","conversation","tasks","errors","humanInputRef","useConversationDetail","conversationAvailable","conversationState","state","conversationDone","DONE_STATES","includes","conversationFinished","finished","earlyFinished","mode","NON_WORKING_STATES","canChat","messages","jobMap","useConversationStream","showHumanActions","skipActivitySubTasks","humanInput","input","action","extra","_humanInputRef$curren","call","depsReady","setDepsReady","ignore","Promise","race","preloadHighlighter","resolve","setTimeout","finally","scrollContainerRef","scrollContentRef","scrollable","scrollToBottom","toggleAutoScroll","useAutoScroll","useImperativeHandle","setInputValue","_inputRef$current","setValue","focus","_inputRef$current2","showFile","streamContextValue","lastDetail","planMap","setUserClosedAside","StreamContext","panel","main","chat","narrow","msg","message","role","UserMessage","files","AssistantMessage","chunks","scopeState","isLatest","scrollStyles","floatingStyles","bottom","hidden","theme","spinning","ReactUseMultipleBricks","useBrick","suggestionsPlacement","supportsTerminate","ImagesPreview","images","ServiceFlows","props","businessFlows","onFlowClick","selectedFlow","setSelectedFlow","isModalVisible","setIsModalVisible","handleCloseModal","serviceFlows","titleContainer","FLOW_SIDEBAR_TITLE","subtitle","FLOW_SIDEBAR_SUBTITLE","flowList","flow","flowCard","handleFlowClick","cardHeader","flowName","detailButton","handleDetailClick","stopPropagation","stageProgress","progressBar","NO_SERVICE_FLOWS","_extends","xmlns","height","fill","viewBox","fillOpacity","d","emptyState","EmptyStateIcon","emptyStateIcon","emptyStateTitle","emptyStateDescription","ElevoObjectApi_listServiceObjects","workspaceId","WrappedButton","KnowledgesList","knowledges","onKnowledgeClick","onAddKnowledge","addKnowledgeButton","ADD_KNOWLEDGE","knowledgesList","knowledge","getFileTypeAndIcon","knowledgeCard","handleKnowledgeClick","src","alt","fileIcon","knowledgeInfo","knowledgeName","knowledgeMeta","moment","mtime","ctime","format","NO_KNOWLEDGE","loadingContainer","loadingIcon","loadingText","ElevoObjectApi_importServiceObjectInstances","InstanceList","instances","selectedInstanceId","onSelect","onDelete","NO_INSTANCES_IDENTIFIED","NO_INSTANCES_IDENTIFIED_DESCRIPTION","instanceList","InstanceCard","_id_","isSelected","_ref2","_businessObject$attri","_businessObject$attri2","firstAttr","statusAttr","attr","instanceCard","selected","cardTitle","cardActions","deleteButton","DELETE_INSTANCE","cardStatus","statusTag","generateInstanceId","Date","now","Math","random","toString","substr","AddObjectInstModal","onSuccess","confirmLoading","setConfirmLoading","setConversationId","setSelectedInstanceId","setInitialRequest","instanceSchema","setInstanceSchema","imports","handleCancel","handleData","_data$tasks","_firstPart$data","_firstPart$data2","firstPart","jobs","parts","contentStr","currentInstanceSchema","parse","console","prevInstanceSchema","_prevInstanceSchema$i","_currentInstanceSchem2","_currentInstanceSchem","deleteIds","Set","deletes","importMap","Map","forEach","has","set","instanceWithId","existingEntry","Array","from","entries","_","existingItem","mergedDeletes","values","mergeInstanceSchema","handleDeleteInstance","prev","inst","handleSelectInstance","selectedInstance","headerBordered","ADD_INSTANCE_MODAL_TITLE","closeWhenConfirm","_instanceSchema$impor","rest","confirmText","CONFIRM_CREATE","cancelText","CANCEL","confirmDisabled","modalContent","aiAssistantArea","ADD_INSTANCE_ASSISTANT_PLACEHOLDER","brick","properties","text","ADD_INSTANCE_ASSISTANT_WELCOME","instanceListArea","instanceListHeader","headerTitle","IDENTIFIED_INSTANCES","instanceCount","detailArea","BusinessInstanceCard","INSTANCE_DETAIL","SpaceSidebar","knowledgeList","onInstanceClick","onKnowledgeAdd","instanceUpdateTrigger","activeTab","setActiveTab","handleTabChange","tab","spaceSidebar","tabList","tabButton","BUSINESS_OBJECTS","KNOWLEDGE","sidebarContent","tabContent","tabContentActive","BusinessCategoryPanel","BusinessObjectItem","activeInstanceId","isExpanded","onToggleExpand","onAddClick","getShowAttrIds","isLoading","setIsLoading","hasError","setHasError","setInstances","loadInstances","pageSize","ElevoObjectApi_listServiceObjectInstances","refresh","updateInstance","updatedData","prevInstances","objectGroup","expanded","objectHeader","handleHeaderClick","objectHeaderActions","addIcon","expandIcon","errorContainer","handleRetryClick","errorText","LOAD_FAILED","retryText","CLICK_TO_RETRY","NO_INSTANCES","_getShowAttrIds","_getShowAttrIds2","handleInstanceClick","instanceHeader","instanceName","instanceTime","valueOf","instanceStatus","businessObjects","setBusinessObjects","isInitialLoading","setIsInitialLoading","setActiveInstanceId","addModalVisible","setAddModalVisible","selectedObject","setSelectedObject","expandedObjectId","setExpandedObjectId","businessObjectItemRefs","includeDetails","fetchBusinessFlows","_businessObjects$find","_attrs$find","Boolean","handleAddInstance","obj","o","handleModalSuccess","_businessObjectItemRe","handleToggleExpand","prevId","_businessObjectItemRe2","businessObjectList","handleModalCancel","NO_BUSINESS_OBJECTS","ElevoApi_listElevoConversations","WrappedLink","WrappedDrawer","WrappedTag","WrappedInput","NS","locales","en","DESCRIPTION","SPACE_GUIDE_SECTION_TITLE","SPACE_GUIDE_CARD_1_TITLE","SPACE_GUIDE_CARD_2_TITLE","SPACE_GUIDE_CARD_3_TITLE","BUSINESS_FLOWS","NO_BUSINESS_OBJECTS_FLOWS","GUIDE_AI_TO_GENERATE_CONFIG","NO_CONFIGURATION_DATA","FIELD_DEFINITIONS","LIFECYCLE_STATUS","SPACE_CONFIGURATION","SAVE_CONFIGURATION","PLEASE_ENTER","CONFIG_ASSISTANT_PLACEHOLDER","CONFIG_ASSISTANT_WELCOME","MINUTES_AGO","HOURS_AGO","DAYS_AGO","NEW_SESSION","HISTORY_SESSIONS","CLOSE_TAB","NO_HISTORY","LOAD_MORE","NO_DETAIL","EDIT_INSTANCE","NO_DETAIL_HINT","NO_ACTIVITY_RECORD_DESCRIPTION","INITIATING_SERVICE_FLOW","zh","i18n","getFixedT","editingFieldId","setEditingFieldId","editingValue","setEditingValue","originalValueRef","editingContainerRef","fileAttrs","textAttrs","otherAttrs","handleClickOutside","contains","target","document","addEventListener","removeEventListener","handleInputBlur","fieldsViewContainer","fieldsViewList","isFileType","isArray","some","isStringEditable","fieldsViewItem","fullWidth","fieldsViewLabelRow","fieldsViewLabel","editButton","handleEditClick","currentValue","stringValue","fieldsViewValue","renderAttrValue","isEditing","displayValue","inputWrapper","autoFocus","handleInputChange","onBlur","fieldTextValue","String","display","alignItems","gap","flexWrap","fieldsViewSection","fieldsViewSectionHeader","fieldsViewSectionIcon","fieldsViewFileList","idx","mimeType","fieldsViewFileItem","fieldsViewFileIcon","fieldsViewFileContent","fieldsViewFileName","fieldsViewFileSize","formatFileSize","fieldsViewTextContent","instanceCardWrapper","instanceCardTitle","ElevoSpaceApi_getSpaceSchema","ElevoSpaceApi_importSpaceSchema","BusinessObjectPreview","_data$attributes","_data$relations","businessObjectPreview","objectTitleArea","objectTitle","objectDescription","objectSection","sectionIcon","fieldGrid","field","fieldItem","fieldName","fieldType","relations","relation","relation_id","linkIcon","relationType","lifecycle","lifecycleContainer","ConfigPreview","businessFlow","externalViewType","onViewTypeChange","internalViewType","setInternalViewType","handleViewTypeChange","showBusinessObject","hasData","configPreviewContainer","configPreviewHeader","viewSwitcher","viewButton","viewButtonIcon","configPreviewBody","TabType","BusinessManage","_configSchema$busines","_configSchema$busines2","configSchema","selectedItem","setSelectedItem","setViewType","currentList","prevItem","getItemId","currentId","handleItemSelect","_configSchema","row","isBusinessObject","configListArea","configListTabs","configListTab","BusinessCardList","itemList","activeId","onItemClick","configPreviewArea","cardList","cardItem","cardItemName","cardItemDesc","SpaceConfigModal","initialConfigSchema","onSave","setConfigSchema","currentEditSchema","mergedConfigSchema","prevSchema","_currentEditSchema$de","_currentEditSchema$de3","_currentEditSchema$de5","_currentEditSchema$bu","_currentEditSchema$ob","_currentEditSchema$bu2","mergedBusinessObjects","deleteObjects","_currentEditSchema$de2","mergedObjectRelations","objectRelations","deleteRelations","rel","_currentEditSchema$de4","mergedBusinessFlows","deleteFlows","_currentEditSchema$de6","existingObjectMap","existingRelationMap","existingFlowMap","mergeConfigSchema","prevConfigSchema","newConfigSchema","hasModified","updatedBusinessFlows","stageIndex","findIndex","targetStage","activityIndex","updatedActivities","updatedSpec","warn","handleModifyActivity","WrappedNoticeDropdown","onNoticeClick","onMarkAllRead","WrappedSpaceLogo","SpaceNav","notices","notifyCenterUrl","onBack","onSpaceEdit","showDescription","setShowDescription","configModalVisible","setConfigModalVisible","schema","fetchSchema","spaceWorkbenchHeader","headerLeft","iconButton","spaceTitle","actionIcons","handleQuestionClick","headerRight","dataSource","dropdownContentStyle","minWidth","hideNotifyCenterButton","urlTarget","spaceDescription","spaceDescriptionVisible","descriptionHeader","descriptionTitle","descriptionEditButton","JsonStorage","constructor","storage","prefix","arguments","this","setItem","getItem","removeItem","clear","Tab","tabRef","scrollIntoView","behavior","block","inline","tabIcon","tabTitle","Tabs","tabs","activeTabId","onTabClick","onTabClose","onAddSession","onHistoryClick","tabBar","tabActions","actionButton","divider","HistoryDrawer","onConversationClick","conversations","setConversations","hasMore","setHasMore","nextToken","setNextToken","listRef","initialRef","onlyOwner","interceptorParams","ignoreLoadingBar","_error","loadInitialHistory","placement","customTitle","drawer","historyList","historyItem","handleConversationClick","historyItemHeader","historyItemTitle","historyItemPreview","historyItemFooter","timeIcon","historyItemTime","updatedAt","startTime","loadMoreContainer","token","emptyStateText","ChatArea","_props","setTabs","setActiveTabId","chatPanelRef","historyDrawerVisible","setHistoryDrawerVisible","processedConversationIdsRef","localStorage","storageActiveTabsKey","storageActiveTabIdKey","tabsData","setTabsData","handleAddSession","newTab","newMap","savedTabs","savedActiveTabId","tabExists","newTabsData","targetTabId","tabId","currentTabData","addNewSession","newTabId","hasContent","sendMessage","add","existingTab","activeTabData","effectiveInitialRequest","chatArea","handleCloseTab","tabIndex","closingTab","newTabs","delete","nextIndex","min","handleHistoryClick","chatContent","handleHistoryDrawerClose","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_REPLACEMENT_0___"],"sourceRoot":""}