@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunks/551.ae5171a6.js","mappings":"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","sources":["webpack:///../../node_modules/@next-api-sdk/llm-sdk/dist/esm/api/llm/elevo/listElevoConversations.js","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:///./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-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:///../../node_modules/@next-api-sdk/llm-sdk/dist/esm/api/llm/elevo_space/listServiceFlow.js","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:///../../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:///./src/space-workbench/components/BusinessFlowPreview.module.css","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"],"sourcesContent":["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, `.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 { UseBrickConfOrRenderFunction } from \"@next-core/react-runtime\";\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: UseBrickConfOrRenderFunction };\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","// 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","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","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","// 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","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","// 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","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"],"names":["ElevoApi_listElevoConversations","async","params","options","http","get","data","___CSS_LOADER_EXPORT___","push","module","id","locals","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","undefined","ActivityCard","_ref","title","description","assignee","active","onClick","React","className","classNames","styles","activityCard","activityCardActive","activityContent","activityName","activityNameActive","activityDescription","activityAssignee","WrappedModal","wrapBrick","onClose","onConfirm","onCancel","onOpen","WrappedUserOrUserGroupSelect","onValueChange","WrappedSelect","WrappedMarkdownDisplay","WrappedIcon","WrappedEasyopsAvatar","ActivityDetailModal","_aiEmployees$map","_activity$hilUser","activity","_activity","visible","onChange","onlyRead","aiEmployees","setAiEmployees","useState","setActivity","aiEmployeeName","useMemo","_employee$name","aiEmployeeId","employee","find","emp","employeeId","name","useEffect","ElevoApi_listElevoAiEmployees","page","page_size","list","filter","item","error","handleHttpError","fetchAssignees","modalTitle","width","noFooter","maskClosable","content","section","sectionTitle","t","K","ACTIVITY_DESCRIPTION","descriptionContent","emptyDescription","NO_DESCRIPTION","RESPONSIBLE_AI_EMPLOYEE","readOnlyDisplay","lib","category","icon","readOnlyIcon","readOnlyText","NOT_SET","value","themeVariant","map","label","placeholder","SELECT_AI_EMPLOYEE_PLACEHOLDER","event","detail","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","useContext","ConfigContext","currentStage","useRef","jsonView","JSON","stringify","businessFlowPreview","flowHeader","flowTitleArea","flowTitle","flowDescription","prerequisite","flowSection","prerequisitesIcon","PREREQUISITES","prerequisitesSubtitle","PREREQUISITES_SUBTITLE","prerequisitesList","spec","length","stagesContainer","stage","index","_stage$serviceFlowAct","key","stageColumn","stageIndicator","stageIndicatorNumber","stageIndicatorName","stageIndicatorLine","stageActivities","serviceFlowActivities","actIndex","handleActivityClick","stageName","current","handleCloseActivityDetail","WorkbenchContext","createContext","ChatPanelContent","forwardRef","ref","conversationId","initialRequest","uploadOptions","help","fromModal","submitDisabled","onChatSubmit","onData","inputRef","activeFile","setActiveFile","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","useCallback","input","action","extra","_humanInputRef$curren","call","depsReady","setDepsReady","ignore","Promise","race","preloadHighlighter","resolve","setTimeout","finally","scrollContainerRef","scrollContentRef","scrollable","scrollToBottom","toggleAutoScroll","useAutoScroll","handleChatSubmit","payload","taskContextValue","useImperativeHandle","setInputValue","_inputRef$current","setValue","focus","_inputRef$current2","showFile","file","streamContextValue","lastDetail","planMap","setUserClosedAside","TaskContext","Provider","StreamContext","panel","main","chat","narrow","msg","message","role","UserMessage","files","AssistantMessage","chunks","scopeState","isLatest","scrollStyles","floatingStyles","style","bottom","hidden","theme","spinning","ReactUseMultipleBricks","useBrick","WrappedChatInput","suggestionsPlacement","supportsTerminate","e","FilePreview","ImagesPreview","images","ServiceFlows","props","businessFlows","onFlowClick","selectedFlow","setSelectedFlow","isModalVisible","setIsModalVisible","handleCloseModal","serviceFlows","header","titleContainer","FLOW_SIDEBAR_TITLE","subtitle","FLOW_SIDEBAR_SUBTITLE","flowList","flow","instanceId","flowCard","handleFlowClick","cardHeader","flowName","detailButton","handleDetailClick","stopPropagation","stageProgress","progressBar","EmptyState","NO_SERVICE_FLOWS","_extends","xmlns","height","fill","viewBox","fillOpacity","d","emptyState","EmptyStateIcon","emptyStateIcon","emptyStateTitle","emptyStateDescription","ElevoObjectApi_listServiceObjects","workspaceId","WrappedButton","KnowledgesList","knowledges","onKnowledgeClick","onAddKnowledge","addKnowledgeButton","type","ADD_KNOWLEDGE","knowledgesList","knowledge","getFileTypeAndIcon","knowledgeCard","handleKnowledgeClick","src","alt","fileIcon","knowledgeInfo","knowledgeName","knowledgeMeta","moment","mtime","ctime","format","NO_KNOWLEDGE","loadingContainer","loadingIcon","loadingText","LOADING","ElevoObjectApi_importServiceObjectInstances","objectId","post","InstanceList","instances","businessObject","selectedInstanceId","onSelect","onDelete","NO_INSTANCES_IDENTIFIED","NO_INSTANCES_IDENTIFIED_DESCRIPTION","instanceList","instance","InstanceCard","_id_","isSelected","_ref2","_businessObject$attri","_businessObject$attri2","firstAttr","attributes","statusAttr","attr","status","instanceCard","selected","cardTitle","cardActions","deleteButton","DELETE_INSTANCE","cardStatus","statusTag","generateInstanceId","Date","now","Math","random","toString","substr","AddObjectInstModal","spaceDetail","onSuccess","setSubmitDisabled","confirmLoading","setConfirmLoading","setConversationId","setSelectedInstanceId","setInitialRequest","instanceSchema","setInstanceSchema","imports","handleCancel","agentId","cmd","spaceInstanceId","serviceObjectId","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","handleAttrChange","attrId","headerBordered","ADD_INSTANCE_MODAL_TITLE","objectName","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","attrs","INSTANCE_DETAIL","onAttrChange","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","humanizeTime","valueOf","HumanizeTimeFormat","relative","instanceStatus","businessObjects","setBusinessObjects","isInitialLoading","setIsInitialLoading","setActiveInstanceId","addModalVisible","setAddModalVisible","selectedObject","setSelectedObject","expandedObjectId","setExpandedObjectId","businessObjectItemRefs","res","includeDetails","fetchBusinessFlows","_businessObjects$find","_attrs$find","Boolean","handleAddInstance","obj","o","handleModalSuccess","_businessObjectItemRe","handleToggleExpand","prevId","_businessObjectItemRe2","businessObjectList","handleModalCancel","NO_BUSINESS_OBJECTS","WrappedLink","WrappedDrawer","WrappedTag","WrappedInput","WrappedTextarea","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","ACTIVITY_RECORD","NO_ACTIVITY_RECORD","NO_ACTIVITY_RECORD_DESCRIPTION","INSTANCE_DETAIL_CHAT_PLACEHOLDER","INITIATING_SERVICE_FLOW","ADD_COMMENT_PLACEHOLDER","CREATED_INSTANCE","EDITED_INSTANCE","COMMENTED","STARTED_CONVERSATION","CHANGED_STATUS_TO","CONVERSATION","STATUS_CHANGED","zh","i18n","getFixedT","InstFieldsView","onFileClick","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","onKeyDown","fieldTextValue","String","display","alignItems","gap","join","flexWrap","fieldsViewSection","fieldsViewSectionHeader","fieldsViewSectionIcon","fieldsViewFileList","idx","mimeType","fieldsViewFileItem","fieldsViewFileIcon","fieldsViewFileContent","fieldsViewFileName","fieldsViewFileSize","formatFileSize","fieldsViewTextContent","instanceCardWrapper","instanceCardTitle","JsonStorage","constructor","storage","prefix","arguments","this","setItem","getItem","removeItem","clear","Tab","tabRef","scrollIntoView","behavior","block","inline","tabIcon","tabTitle","closeButton","Tabs","tabs","activeTabId","onTabClick","onTabClose","onAddSession","onHistoryClick","tabBar","tabActions","actionButton","divider","HistoryDrawer","onConversationClick","conversations","setConversations","loading","setLoading","hasMore","setHasMore","nextToken","setNextToken","listRef","initialRef","onlyOwner","limit","interceptorParams","ignoreLoadingBar","_error","loadInitialHistory","placement","customTitle","drawer","historyList","historyItem","handleConversationClick","historyItemHeader","historyItemTitle","historyItemPreview","historyItemFooter","timeIcon","historyItemTime","updatedAt","startTime","loadMoreContainer","disabled","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","spaceId","addNewSession","newTabId","hasContent","sendMessage","add","existingTab","activeTabData","effectiveInitialRequest","chatArea","handleCloseTab","tabIndex","findIndex","closingTab","newTabs","delete","nextIndex","min","handleHistoryClick","chatContent","handleHistoryDrawerClose","ElevoSpaceApi_listServiceFlow","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_REPLACEMENT_0___","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","targetStage","activities","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","ElevoObjectApi_updateServiceObjectInstance","put","ElevoSpaceApi_listActivityLogs","ElevoSpaceApi_createActivityLog","ActivityLogs","objectInstanceId","onLinkConversation","setActivities","totalCount","setTotalCount","commentValue","setCommentValue","listContainerRef","isSubmittingCommentRef","fetchActivities","_res$list","scrollTop","handleCommentSubmit","trim","username","auth","getAuth","actionType","userName","handleKeyDown","shiftKey","preventDefault","container","countBadge","loadingState","empty","listContainer","clickable","isClickable","iconType","getIconType","time","timestamp","createTime","fieldNames","Object","keys","new","conversationTitle","formatActivityText","activityId","handleCardClick","iconWrapper","fontSize","titleRow","activityTitle","timeText","activityDesc","footer","autoSize","minRows","maxRows","onTerminate","InstDetailManagement","onNewConversation","onInstanceUpdate","newConversationId","requestPayload","updatedInstance","handleFileClick","instanceDetailContainer","instanceDetailHeader","instanceDetailTitle","instanceDetailBody","instanceDetailLeft","instanceDetailLeftWrapper","instanceDetailContent","instanceDetailFooter","instanceDetailRight"],"sourceRoot":""}