@zero-library/chat-copilot 3.1.18 → 3.1.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -44,7 +44,7 @@ var styles_module_default = {
44
44
  chatAttachments: "styles_module_chatAttachments",
45
45
  chatSender: "styles_module_chatSender"};
46
46
  var Attachments_default = forwardRef(({ fileUpload, fileUploadConfig, fileList = [], onChange, extraParams }, ref) => {
47
- const { message: message4 } = App.useApp();
47
+ const { message: message3 } = App.useApp();
48
48
  const chatStore = useChatStore();
49
49
  const configState = useSnapshot(chatStore.config);
50
50
  const fileListRef = useRef([]);
@@ -72,7 +72,7 @@ var Attachments_default = forwardRef(({ fileUpload, fileUploadConfig, fileList =
72
72
  onChange(files);
73
73
  }, [attachedFiles]);
74
74
  const onErrorTip = useDebounce((errorMsg) => {
75
- message4.error(errorMsg);
75
+ message3.error(errorMsg);
76
76
  }, 300);
77
77
  const findConfig = (file) => {
78
78
  return fileUploadConfig?.allowedTypes?.find((type) => type === getFileSuffixName(file.name)) || "";
@@ -833,7 +833,7 @@ var ChatInput = React10.forwardRef(
833
833
  }
834
834
  }
835
835
  ),
836
- placeholder: !stringValue ? /* @__PURE__ */ jsx("div", { className: index_module_default.promptEditorPlaceholder, children: placeholder || "\u4ECA\u5929\u5E2E\u4F60\u505A\u4E9B\u4EC0\u4E48\uFF1F\u8F93\u5165 '/' \u8C03\u7528\u6280\u80FD\u4E0E\u77E5\u8BC6\u5E93" }) : null,
836
+ placeholder: !stringValue ? /* @__PURE__ */ jsx("div", { className: index_module_default.promptEditorPlaceholder, children: placeholder || "\u4ECA\u5929\u5E2E\u4F60\u505A\u4E9B\u4EC0\u4E48\uFF1F" }) : null,
837
837
  ErrorBoundary: LexicalErrorBoundary
838
838
  }
839
839
  ),
@@ -1017,7 +1017,7 @@ var createChatService = (request, config) => {
1017
1017
  return request.put("/agents/conversations/favorite", { conversationIds: [conversationId], favorite: isFavorite });
1018
1018
  };
1019
1019
  const shareConversation = (conversationId) => {
1020
- return request.get(`/agents/conversations/${conversationId}/share/url`);
1020
+ return request.post(`/agents/conversations/${conversationId}/share/url`);
1021
1021
  };
1022
1022
  return {
1023
1023
  fetchModelList,
@@ -1317,6 +1317,7 @@ function createChatStore() {
1317
1317
  id: data || "",
1318
1318
  title: "",
1319
1319
  agentId: agent.agentInfo?.id || "",
1320
+ isFavorite: false,
1320
1321
  updatedAt: (/* @__PURE__ */ new Date()).toISOString(),
1321
1322
  spec: newSpec
1322
1323
  });
@@ -1617,7 +1618,7 @@ function createChatStore() {
1617
1618
  }
1618
1619
  if (isMain) config.hooks?.onStepMessage?.(msg);
1619
1620
  }
1620
- function doneCallback(msg, message4, isMain) {
1621
+ function doneCallback(msg, message3, isMain) {
1621
1622
  conversation.messages[msg.conversationId].loading = false;
1622
1623
  const messages = conversation.messages[msg.conversationId]?.message;
1623
1624
  if (messages) {
@@ -1910,9 +1911,9 @@ function createChatStore() {
1910
1911
  }
1911
1912
  }
1912
1913
  }
1913
- function processMessageContent(message4, targetMessages) {
1914
+ function processMessageContent(message3, targetMessages) {
1914
1915
  const newMessage = {
1915
- ...message4,
1916
+ ...message3,
1916
1917
  agentId: agent.agentInfo.id
1917
1918
  };
1918
1919
  const isMain = !targetMessages;
@@ -1980,13 +1981,13 @@ function createChatStore() {
1980
1981
  }
1981
1982
  processMessageContent(newMessage);
1982
1983
  };
1983
- const sendMessage = async (message4, msgFiles = [], params) => {
1984
+ const sendMessage = async (message3, msgFiles = [], params) => {
1984
1985
  const conversationId = conversation.active.id;
1985
1986
  if (conversation.messages[conversationId].loading) return;
1986
1987
  let msgContent = "", files;
1987
1988
  const references = conversation.messages[conversationId].references;
1988
- if (message4) {
1989
- msgContent = message4;
1989
+ if (message3) {
1990
+ msgContent = message3;
1990
1991
  files = [...msgFiles, ...conversation.messages[conversationId].files || []];
1991
1992
  } else {
1992
1993
  if (references?.type === 1 && references?.content?.msgContent) {
@@ -2033,9 +2034,9 @@ function createChatStore() {
2033
2034
  };
2034
2035
  const extraParams = deepCopy(config.params?.params || {});
2035
2036
  const userInputParams = variablesToObject(conversation.active.userInput || []);
2036
- Object.assign(extraParams, message4 ? {} : { ...references?.params }, params, userInputParams);
2037
+ Object.assign(extraParams, message3 ? {} : { ...references?.params }, params, userInputParams);
2037
2038
  sendParams.params = extraParams;
2038
- if (!message4) {
2039
+ if (!message3) {
2039
2040
  setContent("");
2040
2041
  setContentParams();
2041
2042
  setReferences();
@@ -2236,7 +2237,7 @@ var ConversationFavoritesBtn_default = ({ icon, ...rest }) => {
2236
2237
  const activeConversation = useMemo(() => {
2237
2238
  return conversationsState.list.items.find((item) => item.id === conversationState.active.id);
2238
2239
  }, [conversationsState.list.items, conversationState.active.id]);
2239
- const isFavorite = activeConversation?.isFavorite === true;
2240
+ const isFavorite = activeConversation?.isFavorite;
2240
2241
  const handleToggleFavorite = () => {
2241
2242
  if (!conversationState.active.id) return;
2242
2243
  chatStore.collectConversation(conversationState.active.id, !isFavorite);
@@ -2259,14 +2260,9 @@ var ConversationShareBtn_default = ({ icon, ...rest }) => {
2259
2260
  const conversationState = useSnapshot(chatStore.conversation);
2260
2261
  const configState = useSnapshot(chatStore.config);
2261
2262
  const handleShareConversation = async () => {
2262
- try {
2263
- const { data } = await configState.services.request.shareConversation(conversationState.active.id);
2264
- if (data) {
2265
- copyText(data);
2266
- message.success("\u5206\u4EAB\u94FE\u63A5\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F");
2267
- }
2268
- } catch (error) {
2269
- message.error("\u5206\u4EAB\u4F1A\u8BDD\u5931\u8D25");
2263
+ const { data } = await configState.services.request.shareConversation(conversationState.active.id);
2264
+ if (data) {
2265
+ copyText(data.url);
2270
2266
  }
2271
2267
  };
2272
2268
  return /* @__PURE__ */ jsx(
@@ -2296,6 +2292,7 @@ var styles_module_default2 = {
2296
2292
  chatHeaderBtnGroup: "styles_module_chatHeaderBtnGroup",
2297
2293
  conversationListPanel: "styles_module_conversationListPanel",
2298
2294
  createConversationButton: "styles_module_createConversationButton",
2295
+ conversationListContent: "styles_module_conversationListContent",
2299
2296
  conversations: "styles_module_conversations",
2300
2297
  conversationTabs: "styles_module_conversationTabs",
2301
2298
  conversationTabPane: "styles_module_conversationTabPane",
@@ -2592,9 +2589,9 @@ var ConversationListHeader_default = ({ title = true, avatar = true, newConversa
2592
2589
  ] });
2593
2590
  };
2594
2591
  var ConversationListPanel = ({ header }) => {
2595
- return /* @__PURE__ */ jsxs(Flex, { vertical: true, className: classNames2("height-full", "zero-chat-conversations", styles_module_default2.conversationListPanel), children: [
2592
+ return /* @__PURE__ */ jsxs(Flex, { vertical: true, className: classNames2("zero-chat-conversations", styles_module_default2.conversationListPanel), children: [
2596
2593
  /* @__PURE__ */ jsx(RenderWrapper, { control: header, DefaultComponent: ConversationListHeader_default }),
2597
- /* @__PURE__ */ jsx("div", { className: "full-scroll", children: /* @__PURE__ */ jsx(ConversationList_default, {}) })
2594
+ /* @__PURE__ */ jsx("div", { className: styles_module_default2.conversationListContent, children: /* @__PURE__ */ jsx(ConversationList_default, {}) })
2598
2595
  ] });
2599
2596
  };
2600
2597
  var ConversationListPanel_default = ConversationListPanel;
@@ -3144,12 +3141,12 @@ var DocDrawer_default = ({ title, open, onClose, paramsStr }) => {
3144
3141
  }, [paramsStr]);
3145
3142
  return /* @__PURE__ */ jsx(Drawer, { title, push: false, size: "100%", open, onClose, children: /* @__PURE__ */ jsx(Spin, { spinning: loading, children: content ? /* @__PURE__ */ jsx(XMarkdown, { content }) : /* @__PURE__ */ jsx(Empty, { className: "m-t-32" }) }) });
3146
3143
  };
3147
- var IndexQuote_default = ({ data, loading, message: message4 }) => {
3144
+ var IndexQuote_default = ({ data, loading, message: message3 }) => {
3148
3145
  const [open, setOpen] = useState(false);
3149
3146
  const citation = useMemo(() => {
3150
- const citations = message4.content?.find((item) => item.type === "citation")?.citations ?? [];
3147
+ const citations = message3.content?.find((item) => item.type === "citation")?.citations ?? [];
3151
3148
  return citations?.find((item) => String(item.citationId) === String(data.citationId));
3152
- }, [data.citationId, message4.content]);
3149
+ }, [data.citationId, message3.content]);
3153
3150
  const onClick = () => {
3154
3151
  if (!citation?.citationUrl) return;
3155
3152
  if (isExternal(citation.citationUrl)) {
@@ -3164,7 +3161,7 @@ var IndexQuote_default = ({ data, loading, message: message4 }) => {
3164
3161
  open && /* @__PURE__ */ jsx(DocDrawer_default, { paramsStr: citation?.citationUrl, title: citation?.citationName, open, onClose: () => setOpen(false) })
3165
3162
  ] });
3166
3163
  };
3167
- var MarkImg_default = ({ data, loading, message: message4, ...rest }) => {
3164
+ var MarkImg_default = ({ data, loading, message: message3, ...rest }) => {
3168
3165
  const getPreviewFileUrl = (src) => {
3169
3166
  return buildUrlParams({ [TOKEN_KEY]: tokenManager.get() || "" }, src);
3170
3167
  };
@@ -3191,9 +3188,9 @@ var MdEdit_default = ({ data, loading }) => {
3191
3188
  !loading && /* @__PURE__ */ jsx(Flex, { justify: "end", className: "m-t-16", children: /* @__PURE__ */ jsx(Button, { color: "primary", variant: "outlined", onClick: onOk, children: btnText }) })
3192
3189
  ] });
3193
3190
  };
3194
- var PreviewLink_default = ({ data, loading, message: message4, ...rest }) => {
3191
+ var PreviewLink_default = ({ data, loading, message: message3, ...rest }) => {
3195
3192
  const chatStore = useChatStore();
3196
- const conversationWorkspacePrefix = "/workspace/conversation/";
3193
+ const conversationWorkspacePrefix = "/workspace";
3197
3194
  const getLinkFileName = (path) => {
3198
3195
  const lastSegment = path.split("/").pop();
3199
3196
  if (!lastSegment) {
@@ -3212,9 +3209,6 @@ var PreviewLink_default = ({ data, loading, message: message4, ...rest }) => {
3212
3209
  if (path.startsWith(conversationWorkspacePrefix)) {
3213
3210
  return path;
3214
3211
  }
3215
- if (path.startsWith(conversationWorkspacePrefix.slice(1))) {
3216
- return `/${path}`;
3217
- }
3218
3212
  const fileName = getLinkFileName(path);
3219
3213
  return `${conversationWorkspacePrefix}${fileName}`;
3220
3214
  };
@@ -3225,7 +3219,7 @@ var PreviewLink_default = ({ data, loading, message: message4, ...rest }) => {
3225
3219
  chatStore.setPreview({
3226
3220
  fileUrl: chatStore.config.services.request.getPreviewUrl({
3227
3221
  path: normalizedPath,
3228
- workspaceId: message4.conversationId
3222
+ workspaceId: message3.conversationId
3229
3223
  }),
3230
3224
  fileName,
3231
3225
  suffix
@@ -3338,7 +3332,7 @@ var adaptMarkdownComponent = (Component, payloadMapRef, messageRef) => {
3338
3332
  return WrappedComponent;
3339
3333
  };
3340
3334
  var adaptMarkdownComponents = (components, payloadMapRef, messageRef) => Object.fromEntries(Object.entries(components ?? {}).map(([key, Component]) => [key, adaptMarkdownComponent(Component, payloadMapRef, messageRef)]));
3341
- var XMarkdown_default = memo(({ message: message4, components = {}, content = "", ...rest }) => {
3335
+ var XMarkdown_default = memo(({ message: message3, components = {}, content = "", ...rest }) => {
3342
3336
  const config = useMemo(() => getMarkdownConfig(), []);
3343
3337
  const formattedContent = useMemo(() => formatMixedContent(content), [content]);
3344
3338
  const newComponents = useMemo(
@@ -3364,9 +3358,9 @@ var XMarkdown_default = memo(({ message: message4, components = {}, content = ""
3364
3358
  [formattedContent, payloadTagPattern]
3365
3359
  );
3366
3360
  const payloadMapRef = useRef(payloadMap);
3367
- const messageRef = useRef(message4);
3361
+ const messageRef = useRef(message3);
3368
3362
  payloadMapRef.current = payloadMap;
3369
- messageRef.current = message4;
3363
+ messageRef.current = message3;
3370
3364
  const markdownComponents = useMemo(() => adaptMarkdownComponents(newComponents, payloadMapRef, messageRef), [payloadTagPattern]);
3371
3365
  return /* @__PURE__ */ jsx(
3372
3366
  XMarkdown,
@@ -3793,10 +3787,10 @@ function extractDismissedSurfaceIdsFromMessages(messages) {
3793
3787
  const lastCreateIndexBySurface = /* @__PURE__ */ new Map();
3794
3788
  const lastActionIndexBySurface = /* @__PURE__ */ new Map();
3795
3789
  for (let messageIndex = 0; messageIndex < messages.length; messageIndex++) {
3796
- const message4 = messages[messageIndex];
3797
- const items = Array.isArray(message4?.content) ? message4.content : [];
3790
+ const message3 = messages[messageIndex];
3791
+ const items = Array.isArray(message3?.content) ? message3.content : [];
3798
3792
  for (const item of items) {
3799
- if (message4?.role !== 1) {
3793
+ if (message3?.role !== 1) {
3800
3794
  if (item?.type === "a2uiCommand" && item.command) {
3801
3795
  const surfaceId = String(item.command?.createSurface?.surfaceId || "").trim();
3802
3796
  if (surfaceId) lastCreateIndexBySurface.set(surfaceId, messageIndex);
@@ -3812,7 +3806,7 @@ function extractDismissedSurfaceIdsFromMessages(messages) {
3812
3806
  }
3813
3807
  }
3814
3808
  }
3815
- if (message4?.role === 1 && item?.type === "text") {
3809
+ if (message3?.role === 1 && item?.type === "text") {
3816
3810
  const text = item.messageContent || item.text || "";
3817
3811
  if (typeof text !== "string" || !text.includes("a2ui_action.v1")) continue;
3818
3812
  try {
@@ -4395,9 +4389,9 @@ function diffConversationMessages(messages, prevCursors) {
4395
4389
  const nextCursors = [];
4396
4390
  const pendingItems = [];
4397
4391
  for (let messageIndex = 0; messageIndex < messages.length; messageIndex += 1) {
4398
- const message4 = messages[messageIndex];
4399
- const messageId = String(message4?.messageId ?? messageIndex);
4400
- const items = Array.isArray(message4?.content) ? message4.content : [];
4392
+ const message3 = messages[messageIndex];
4393
+ const messageId = String(message3?.messageId ?? messageIndex);
4394
+ const items = Array.isArray(message3?.content) ? message3.content : [];
4401
4395
  const prevCursor = prevCursors[messageIndex];
4402
4396
  const startIndex = prevCursor ? prevCursor.contentLength : 0;
4403
4397
  if (prevCursor && (prevCursor.messageId !== messageId || items.length < prevCursor.contentLength)) {
@@ -4414,9 +4408,9 @@ function scanA2uiTagsFromMessages(messages, processedTagIds) {
4414
4408
  const newTags = [];
4415
4409
  const newTagIds = [];
4416
4410
  for (let messageIndex = 0; messageIndex < messages.length; messageIndex += 1) {
4417
- const message4 = messages[messageIndex];
4418
- const messageId = String(message4?.messageId ?? messageIndex);
4419
- const items = Array.isArray(message4?.content) ? message4.content : [];
4411
+ const message3 = messages[messageIndex];
4412
+ const messageId = String(message3?.messageId ?? messageIndex);
4413
+ const items = Array.isArray(message3?.content) ? message3.content : [];
4420
4414
  for (const item of items) {
4421
4415
  const text = extractItemTextForA2ui(item);
4422
4416
  if (typeof text !== "string" || !text.includes("<A2UI")) continue;
@@ -4472,9 +4466,9 @@ function reduceA2uiRuntimeMessages(state, messages) {
4472
4466
  processA2uiCommand(cmd, messageIndex, messageId, nextState, effects, deletedSurfaceIds, nextWizardSteps);
4473
4467
  }
4474
4468
  });
4475
- nextState.processedMessageCursors = shouldReplayAll ? messages.map((message4, messageIndex) => ({
4476
- messageId: String(message4?.messageId ?? messageIndex),
4477
- contentLength: Array.isArray(message4?.content) ? message4.content.length : 0
4469
+ nextState.processedMessageCursors = shouldReplayAll ? messages.map((message3, messageIndex) => ({
4470
+ messageId: String(message3?.messageId ?? messageIndex),
4471
+ contentLength: Array.isArray(message3?.content) ? message3.content.length : 0
4478
4472
  })) : nextCursors;
4479
4473
  nextState.wizardStepBySurface = { ...nextState.wizardStepBySurface, ...nextWizardSteps };
4480
4474
  if (deletedSurfaceIds.size) {
@@ -4822,8 +4816,8 @@ function readContextModelPath(context) {
4822
4816
  function buildLatestCommandIndexBySurface(messages) {
4823
4817
  const indexBySurface = {};
4824
4818
  let commandIndex = -1;
4825
- for (const message4 of messages) {
4826
- const items = Array.isArray(message4?.content) ? message4.content : [];
4819
+ for (const message3 of messages) {
4820
+ const items = Array.isArray(message3?.content) ? message3.content : [];
4827
4821
  for (const item of items) {
4828
4822
  if (item?.type === "a2uiCommand" && item.command) {
4829
4823
  commandIndex += 1;
@@ -5011,7 +5005,7 @@ var TextNode2 = React10__default.memo(
5011
5005
  item,
5012
5006
  role,
5013
5007
  customComponents,
5014
- message: message4
5008
+ message: message3
5015
5009
  }) => {
5016
5010
  const content = toA2uiDisplayText(role, item?.messageContent);
5017
5011
  const markdownComponents = {
@@ -5024,7 +5018,7 @@ var TextNode2 = React10__default.memo(
5024
5018
  const markdownContent = typeof content === "string" ? transformResourceText(content) : content;
5025
5019
  return /* @__PURE__ */ jsxs(Fragment, { children: [
5026
5020
  !!item.reasoningContent && /* @__PURE__ */ jsx(Think, { title: "\u6DF1\u5EA6\u601D\u8003", style: { marginBottom: "16px" }, children: item.reasoningContent }),
5027
- !!markdownContent && /* @__PURE__ */ jsx(XMarkdown_default, { message: message4, components: markdownComponents, content: markdownContent })
5021
+ !!markdownContent && /* @__PURE__ */ jsx(XMarkdown_default, { message: message3, components: markdownComponents, content: markdownContent })
5028
5022
  ] });
5029
5023
  }
5030
5024
  );
@@ -5352,9 +5346,9 @@ var ToolCallItem = ({ item }) => {
5352
5346
  };
5353
5347
  var tool_call_item_default = ToolCallItem;
5354
5348
  var RENDERABLE_MESSAGE_TYPES = ["runStarted", "toolCall", "toolResult", "text", "stepError", "runFailed", "files", "plan"];
5355
- var MessageRender_default = React10__default.memo(({ role, message: message4, messageIndex = -1, loading, containerRef, customComponents }) => {
5349
+ var MessageRender_default = React10__default.memo(({ role, message: message3, messageIndex = -1, loading, containerRef, customComponents }) => {
5356
5350
  const content = useMemo(() => {
5357
- return (message4.content || []).filter((item) => {
5351
+ return (message3.content || []).filter((item) => {
5358
5352
  if (!RENDERABLE_MESSAGE_TYPES.includes(item.type)) {
5359
5353
  return false;
5360
5354
  }
@@ -5367,12 +5361,12 @@ var MessageRender_default = React10__default.memo(({ role, message: message4, me
5367
5361
  }
5368
5362
  return true;
5369
5363
  });
5370
- }, [message4.content]);
5364
+ }, [message3.content]);
5371
5365
  const quoteMsg = useMemo(() => {
5372
5366
  const quoteMsg2 = {};
5373
- if (message4.params) {
5367
+ if (message3.params) {
5374
5368
  try {
5375
- const citation = JSON.parse(message4.params).citation;
5369
+ const citation = JSON.parse(message3.params).citation;
5376
5370
  if (citation) {
5377
5371
  quoteMsg2.messageContent = citation;
5378
5372
  }
@@ -5380,7 +5374,7 @@ var MessageRender_default = React10__default.memo(({ role, message: message4, me
5380
5374
  }
5381
5375
  }
5382
5376
  return isEmptyObj(quoteMsg2) ? null : quoteMsg2;
5383
- }, [message4.params, message4.quoteMsg]);
5377
+ }, [message3.params, message3.quoteMsg]);
5384
5378
  const showPending = loading && (content.length === 0 || content[content.length - 1].type !== "text");
5385
5379
  if (content.length === 0 && !showPending) return null;
5386
5380
  const lastToolCallIndex = (() => {
@@ -5404,20 +5398,20 @@ var MessageRender_default = React10__default.memo(({ role, message: message4, me
5404
5398
  TextNode2,
5405
5399
  {
5406
5400
  item,
5407
- role: message4.role,
5401
+ role: message3.role,
5408
5402
  customComponents,
5409
- message: message4,
5403
+ message: message3,
5410
5404
  messageIndex
5411
5405
  },
5412
5406
  `message-${index}`
5413
5407
  ),
5414
- (item.type === "stepError" || item.type === "runFailed") && (item.errorMessage ? /* @__PURE__ */ jsx(XMarkdown_default, { message: message4, components: customComponents, content: item.errorMessage }) : null),
5408
+ (item.type === "stepError" || item.type === "runFailed") && (item.errorMessage ? /* @__PURE__ */ jsx(XMarkdown_default, { message: message3, components: customComponents, content: item.errorMessage }) : null),
5415
5409
  item.type === "files" && /* @__PURE__ */ jsx(FilesNode, { item }, `files-${index}`),
5416
5410
  item.type === "plan" && /* @__PURE__ */ jsx(A2uiPlanNode, { item }, `plan-${index}`)
5417
5411
  ] })
5418
5412
  }
5419
5413
  ),
5420
- index === lastToolCallIndex && messageIndex >= 0 ? /* @__PURE__ */ jsx(A2uiMessageCards, { messageIndex, message: message4 }) : null
5414
+ index === lastToolCallIndex && messageIndex >= 0 ? /* @__PURE__ */ jsx(A2uiMessageCards, { messageIndex, message: message3 }) : null
5421
5415
  ] }, `message-${index}`)),
5422
5416
  showPending && role.user === "agent" && /* @__PURE__ */ jsx(Bubble, { role: role.user, placement: role.placement, content: /* @__PURE__ */ jsx(RunStartedNode, {}) }),
5423
5417
  quoteMsg && /* @__PURE__ */ jsx(QuoteMsgNode, { quoteMsg, role })
@@ -5513,13 +5507,13 @@ var BubbleListItems_default = ({
5513
5507
  const messageRefs = useRef({});
5514
5508
  const chatRecords = useMemo(() => {
5515
5509
  const chatRecords2 = [];
5516
- conversationMessages.forEach((message4, messageIndex) => {
5517
- const role = getRole(message4.role);
5510
+ conversationMessages.forEach((message3, messageIndex) => {
5511
+ const role = getRole(message3.role);
5518
5512
  const isLeftBubble = role.user === "agent";
5519
- const isMessageLoading = !!message4.generating;
5520
- const baseKey = `${message4.executionId}-${messageIndex}`;
5513
+ const isMessageLoading = !!message3.generating;
5514
+ const baseKey = `${message3.executionId}-${messageIndex}`;
5521
5515
  const footerNode = !isMessageLoading ? /* @__PURE__ */ jsxs(Flex, { align: "center", gap: 8, children: [
5522
- message4.stopFlag && isLeftBubble && /* @__PURE__ */ jsx(Text3, { type: "secondary", style: { flex: "none" }, children: "\u5DF2\u505C\u6B62" }),
5516
+ message3.stopFlag && isLeftBubble && /* @__PURE__ */ jsx(Text3, { type: "secondary", style: { flex: "none" }, children: "\u5DF2\u505C\u6B62" }),
5523
5517
  /* @__PURE__ */ jsx(Flex, { align: "center", gap: 4, children: role.user === "agent" && /* @__PURE__ */ jsxs(Fragment, { children: [
5524
5518
  /* @__PURE__ */ jsx(
5525
5519
  Button,
@@ -5539,21 +5533,21 @@ var BubbleListItems_default = ({
5539
5533
  /* @__PURE__ */ jsx(
5540
5534
  Button,
5541
5535
  {
5542
- color: message4.feedback === 1 ? "primary" : "default",
5536
+ color: message3.feedback === 1 ? "primary" : "default",
5543
5537
  size: "small",
5544
5538
  variant: "text",
5545
5539
  icon: /* @__PURE__ */ jsx(LikeOutlined, {}),
5546
- onClick: () => chatStore.feedback(message4.executionId, 1, messageIndex)
5540
+ onClick: () => chatStore.feedback(message3.executionId, 1, messageIndex)
5547
5541
  }
5548
5542
  ),
5549
5543
  /* @__PURE__ */ jsx(
5550
5544
  Button,
5551
5545
  {
5552
- color: message4.feedback === 2 ? "primary" : "default",
5546
+ color: message3.feedback === 2 ? "primary" : "default",
5553
5547
  size: "small",
5554
5548
  variant: "text",
5555
5549
  icon: /* @__PURE__ */ jsx(DislikeOutlined, {}),
5556
- onClick: () => chatStore.feedback(message4.executionId, 2, messageIndex)
5550
+ onClick: () => chatStore.feedback(message3.executionId, 2, messageIndex)
5557
5551
  }
5558
5552
  ),
5559
5553
  /* @__PURE__ */ jsx(
@@ -5561,7 +5555,7 @@ var BubbleListItems_default = ({
5561
5555
  {
5562
5556
  control: agentActions,
5563
5557
  ctx: {
5564
- message: message4,
5558
+ message: message3,
5565
5559
  get dom() {
5566
5560
  return messageRefs.current[baseKey];
5567
5561
  }
@@ -5579,7 +5573,7 @@ var BubbleListItems_default = ({
5579
5573
  MessageRender_default,
5580
5574
  {
5581
5575
  role,
5582
- message: message4,
5576
+ message: message3,
5583
5577
  messageIndex,
5584
5578
  customComponents,
5585
5579
  loading: isMessageLoading,
@@ -6055,7 +6049,8 @@ var ChatSender_default2 = forwardRef(
6055
6049
  skillsBtn = false,
6056
6050
  knowledgeBtn = false,
6057
6051
  modelSelect = false,
6058
- commandConfig = {}
6052
+ commandConfig,
6053
+ uploadConfig
6059
6054
  }, ref) => {
6060
6055
  const chatStore = useChatStore();
6061
6056
  const configState = useSnapshot(chatStore.config);
@@ -6102,7 +6097,7 @@ var ChatSender_default2 = forwardRef(
6102
6097
  onFocus: chatStore.config.hooks?.onSenderFocus,
6103
6098
  fileUpload: {
6104
6099
  request: fileUploadRequest,
6105
- config: agentState.agentInfo.config?.options?.fileUpload
6100
+ config: uploadConfig || agentState.agentInfo.config?.options?.fileUpload
6106
6101
  },
6107
6102
  sendBtnProps: isFunction(sendBtnProps) ? sendBtnProps() : {},
6108
6103
  extraFooterBelow: /* @__PURE__ */ jsx(RenderWrapper, { control: footerBelow }),
@@ -6652,13 +6647,13 @@ var layouts_default = forwardRef(({ theme: theme5, params, hooks, layout, config
6652
6647
  }, [hasPreView]);
6653
6648
  useWebSocket({
6654
6649
  url: configState.services.websocketUrls?.[0],
6655
- onMessage: (message4) => chatStore.acceptMessage(message4.payload),
6650
+ onMessage: (message3) => chatStore.acceptMessage(message3.payload),
6656
6651
  clientHeartbeat: false,
6657
6652
  reconnectInterval: 1e4
6658
6653
  });
6659
6654
  useWebSocket({
6660
6655
  url: configState.services.websocketUrls?.[1],
6661
- onMessage: (message4) => chatStore.acceptMessage(message4.payload),
6656
+ onMessage: (message3) => chatStore.acceptMessage(message3.payload),
6662
6657
  clientHeartbeat: false,
6663
6658
  reconnectInterval: 1e4
6664
6659
  });