@blueking/chat-helper 0.0.12-beta.12 → 0.0.12-beta.14

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.
@@ -35,7 +35,6 @@
35
35
  }
36
36
  return obj;
37
37
  }
38
- import { mergeArtifactsActivityIntoMessages, transferMessageApi2Message } from '../http/transform/index.ts.js';
39
38
  import { ActivityType, MessageRole, MessageStatus, MessageType } from '../message/index.ts.js';
40
39
  import { CustomEventName, EventType, FlowTaskState, RunFinishedOutcomeType } from './type.ts.js';
41
40
  /**
@@ -246,7 +245,7 @@ import { CustomEventName, EventType, FlowTaskState, RunFinishedOutcomeType } fro
246
245
  * 用于同步多端消息状态
247
246
  */ handleMessagesSnapshotEvent(event) {
248
247
  if (event.messages && event.messages.length > 0) {
249
- this.messageModule.list.value = mergeArtifactsActivityIntoMessages(event.messages.map(transferMessageApi2Message));
248
+ this.messageModule.list.value = event.messages;
250
249
  }
251
250
  }
252
251
  /**
@@ -1,4 +1,4 @@
1
- import { type IMessageApi, type IMessageArtifact, type MessageRole, type MessageStatus } from '../message/type';
1
+ import { type IMessage, type IMessageArtifact, type MessageRole, type MessageStatus } from '../message/type';
2
2
  import type { JSONSchema4 } from 'json-schema';
3
3
  export declare enum CustomEventName {
4
4
  ArtifactsGenerated = "artifacts_generated",
@@ -176,7 +176,7 @@ export interface IKnowledgeRagTextContentCustomValue {
176
176
  * 同步多端消息状态
177
177
  */
178
178
  export interface IMessagesSnapshotEvent extends IBaseEvent {
179
- messages: IMessageApi[];
179
+ messages: IMessage[];
180
180
  type: EventType.MessagesSnapshot;
181
181
  }
182
182
  /**
@@ -276,7 +276,12 @@ export class FetchClient {
276
276
  var _this = this;
277
277
  return _async_to_generator(function*() {
278
278
  const { url, fetchConfig, requestConfig, controller } = _this.prepareRequest(config);
279
- const timeoutId = requestConfig.timeout && requestConfig.timeout > 0 ? setTimeout(()=>controller.abort(), requestConfig.timeout) : undefined;
279
+ // 超时与用户主动取消共用同一个 AbortController,需靠此标记区分
280
+ let timedOut = false;
281
+ const timeoutId = requestConfig.timeout && requestConfig.timeout > 0 ? setTimeout(()=>{
282
+ timedOut = true;
283
+ controller.abort();
284
+ }, requestConfig.timeout) : undefined;
280
285
  try {
281
286
  const fetchResponse = yield fetch(url, fetchConfig);
282
287
  if (timeoutId) {
@@ -319,9 +324,8 @@ export class FetchClient {
319
324
  };
320
325
  const validateStatus = requestConfig.validateStatus || _this.defaults.validateStatus;
321
326
  if (!validateStatus(fetchResponse.status)) {
322
- var _response_data_error, _response_data;
323
- const message = ((_response_data = response.data) === null || _response_data === void 0 ? void 0 : (_response_data_error = _response_data.error) === null || _response_data_error === void 0 ? void 0 : _response_data_error.message) || `Request failed with status code ${fetchResponse.status}`;
324
- throw createError(message, requestConfig, `ERR_BAD_RESPONSE`, response);
327
+ const { code, message } = resolveErrorPayload(response.data, `Request failed with status code ${fetchResponse.status}`);
328
+ throw createError(message, requestConfig, code, response);
325
329
  }
326
330
  let finalResponse = response;
327
331
  _this.interceptors.response.forEach((interceptor)=>{
@@ -341,23 +345,28 @@ export class FetchClient {
341
345
  }
342
346
  // 检查业务状态码(区别于 HTTP 状态码)
343
347
  const apiResponse = finalResponse.data;
348
+ // 无响应体(如 204 或空 body)时没有业务码可校验,直接放行
349
+ if (!apiResponse) {
350
+ return undefined;
351
+ }
344
352
  if (![
345
353
  0,
346
354
  'success'
347
355
  ].includes(apiResponse.code)) {
348
- throw createError(apiResponse.message, requestConfig, apiResponse.code, finalResponse);
356
+ const { code, message } = resolveErrorPayload(apiResponse, `Request failed with code ${apiResponse.code}`);
357
+ throw createError(message, requestConfig, code, finalResponse);
349
358
  }
350
359
  return apiResponse.data;
351
360
  } catch (error) {
352
361
  if (timeoutId) {
353
362
  clearTimeout(timeoutId);
354
363
  }
355
- // 用户手动取消请求
356
- if (error instanceof Error && error.name === 'AbortError') {
364
+ // 用户手动取消请求;超时同样表现为 AbortError,需作为异常上报
365
+ if (error instanceof Error && error.name === 'AbortError' && !timedOut) {
357
366
  console.warn('User canceled request', error.message);
358
367
  return;
359
368
  }
360
- const requestError = error.isAxiosError === true ? error : createError(error.message, requestConfig, error.code, undefined);
369
+ const requestError = timedOut ? createError(`timeout of ${requestConfig.timeout}ms exceeded`, requestConfig, 'ECONNABORTED', undefined) : error.isAxiosError === true ? error : createError(error.message, requestConfig, error.code, undefined);
361
370
  _this.dispatchError(requestError);
362
371
  throw _this.applyResponseErrorInterceptors(requestError);
363
372
  }
@@ -396,17 +405,14 @@ export class FetchClient {
396
405
  const fetchResponse = yield fetch(url, fetchConfig);
397
406
  const validateStatus = requestConfig.validateStatus || _this.defaults.validateStatus;
398
407
  if (!validateStatus(fetchResponse.status)) {
399
- let message = `Request failed with status code ${fetchResponse.status}`;
408
+ let errorData = null;
400
409
  try {
401
- var _errorData_error;
402
- const errorData = yield fetchResponse.json();
403
- if (errorData === null || errorData === void 0 ? void 0 : (_errorData_error = errorData.error) === null || _errorData_error === void 0 ? void 0 : _errorData_error.message) {
404
- message = errorData.error.message;
405
- }
410
+ errorData = yield fetchResponse.json();
406
411
  } catch (_error) {
407
- message = `Request failed with status code ${fetchResponse.status}`;
412
+ errorData = null;
408
413
  }
409
- const error = createError(message, requestConfig, `ERR_BAD_RESPONSE`, undefined);
414
+ const { code, message } = resolveErrorPayload(errorData, `Request failed with status code ${fetchResponse.status}`);
415
+ const error = createError(message, requestConfig, code, undefined);
410
416
  wrappedOnError(error);
411
417
  return;
412
418
  }
@@ -503,6 +509,64 @@ function buildURL(url, params) {
503
509
  }
504
510
  return url;
505
511
  }
512
+ /**
513
+ * 从错误响应体中解析业务错误信息
514
+ *
515
+ * 后端错误体存在多种形态,需逐一兼容:
516
+ * - 新版网关 / aidev 插件:`{ error: { code, message, data } }`
517
+ * - 旧版蓝鲸标准(如 blueapps 登录态失效):`{ result, code, message, data }`
518
+ * - DRF 原生异常:`{ detail }`
519
+ */ function resolveErrorPayload(body, fallbackMessage) {
520
+ var _record_error;
521
+ const fallbackCode = 'ERR_BAD_RESPONSE';
522
+ if (!body || typeof body !== 'object') {
523
+ return {
524
+ code: fallbackCode,
525
+ message: fallbackMessage
526
+ };
527
+ }
528
+ const record = body;
529
+ if ((_record_error = record.error) === null || _record_error === void 0 ? void 0 : _record_error.message) {
530
+ var _record_error_code;
531
+ return {
532
+ code: (_record_error_code = record.error.code) !== null && _record_error_code !== void 0 ? _record_error_code : fallbackCode,
533
+ data: record.error.data,
534
+ message: stringifyErrorMessage(record.error.message, fallbackMessage)
535
+ };
536
+ }
537
+ if (record.message) {
538
+ var _record_code;
539
+ return {
540
+ code: (_record_code = record.code) !== null && _record_code !== void 0 ? _record_code : fallbackCode,
541
+ data: record.data,
542
+ message: stringifyErrorMessage(record.message, fallbackMessage)
543
+ };
544
+ }
545
+ if (record.detail) {
546
+ var _record_code1;
547
+ return {
548
+ code: (_record_code1 = record.code) !== null && _record_code1 !== void 0 ? _record_code1 : fallbackCode,
549
+ data: record.data,
550
+ message: stringifyErrorMessage(record.detail, fallbackMessage)
551
+ };
552
+ }
553
+ var _record_code2;
554
+ return {
555
+ code: (_record_code2 = record.code) !== null && _record_code2 !== void 0 ? _record_code2 : fallbackCode,
556
+ data: record.data,
557
+ message: fallbackMessage
558
+ };
559
+ }
560
+ /** 错误 message 可能是字符串以外的结构(如字段校验字典),统一转成可读文案 */ function stringifyErrorMessage(message, fallbackMessage) {
561
+ if (typeof message === 'string') {
562
+ return message || fallbackMessage;
563
+ }
564
+ try {
565
+ return JSON.stringify(message) || fallbackMessage;
566
+ } catch (_error) {
567
+ return fallbackMessage;
568
+ }
569
+ }
506
570
  function createError(message, config, code, response) {
507
571
  const error = new Error(message);
508
572
  error.config = config;
@@ -44,8 +44,8 @@ export declare const useHttp: (options: IUseChatHelperOptions) => {
44
44
  };
45
45
  message: {
46
46
  getMessages: (sessionCode: string, limit?: number, config?: import("./fetch").IRequestConfig) => Promise<import("..").IMessage[]>;
47
- plusMessage: (data: import("..").IMessage, config?: import("./fetch").IRequestConfig) => Promise<import("..").IActivityMessage | import("..").IAssistantMessage | import("..").IDeveloperMessage | import("..").IInterruptMessage | import("..").IGuideMessage | import("..").IHiddenAssistantMessage | import("..").IHiddenGuideMessage | import("..").IHiddenMessage | import("..").IHiddenSystemMessage | import("..").IHiddenUserMessage | import("..").IInfoMessage | import("..").IPauseMessage | import("..").IPlaceholderMessage | import("..").IReasoningMessage | import("..").ISystemMessage | import("..").ITemplateAssistantMessage | import("..").ITemplateGuideMessage | import("..").ITemplateHiddenMessage | import("..").ITemplateSystemMessage | import("..").ITemplateUserMessage | import("..").IToolMessage | import("..").IUserMessage>;
48
- modifyMessage: (data: import("..").IMessage, config?: import("./fetch").IRequestConfig) => Promise<import("..").IActivityMessage | import("..").IAssistantMessage | import("..").IDeveloperMessage | import("..").IInterruptMessage | import("..").IGuideMessage | import("..").IHiddenAssistantMessage | import("..").IHiddenGuideMessage | import("..").IHiddenMessage | import("..").IHiddenSystemMessage | import("..").IHiddenUserMessage | import("..").IInfoMessage | import("..").IPauseMessage | import("..").IPlaceholderMessage | import("..").IReasoningMessage | import("..").ISystemMessage | import("..").ITemplateAssistantMessage | import("..").ITemplateGuideMessage | import("..").ITemplateHiddenMessage | import("..").ITemplateSystemMessage | import("..").ITemplateUserMessage | import("..").IToolMessage | import("..").IUserMessage>;
47
+ plusMessage: (data: import("..").IMessage, config?: import("./fetch").IRequestConfig) => Promise<import("..").IActivityMessage | import("..").IAssistantMessage | import("..").IDeveloperMessage | import("..").IGuideMessage | import("..").IHiddenAssistantMessage | import("..").IHiddenGuideMessage | import("..").IHiddenMessage | import("..").IHiddenSystemMessage | import("..").IHiddenUserMessage | import("..").IInfoMessage | import("..").IPauseMessage | import("..").IPlaceholderMessage | import("..").IReasoningMessage | import("..").ISystemMessage | import("..").ITemplateAssistantMessage | import("..").ITemplateGuideMessage | import("..").ITemplateHiddenMessage | import("..").ITemplateSystemMessage | import("..").ITemplateUserMessage | import("..").IToolMessage | import("..").IUserMessage | import("..").IInterruptMessage>;
48
+ modifyMessage: (data: import("..").IMessage, config?: import("./fetch").IRequestConfig) => Promise<import("..").IActivityMessage | import("..").IAssistantMessage | import("..").IDeveloperMessage | import("..").IGuideMessage | import("..").IHiddenAssistantMessage | import("..").IHiddenGuideMessage | import("..").IHiddenMessage | import("..").IHiddenSystemMessage | import("..").IHiddenUserMessage | import("..").IInfoMessage | import("..").IPauseMessage | import("..").IPlaceholderMessage | import("..").IReasoningMessage | import("..").ISystemMessage | import("..").ITemplateAssistantMessage | import("..").ITemplateGuideMessage | import("..").ITemplateHiddenMessage | import("..").ITemplateSystemMessage | import("..").ITemplateUserMessage | import("..").IToolMessage | import("..").IUserMessage | import("..").IInterruptMessage>;
49
49
  deleteMessage: (id: string, config?: import("./fetch").IRequestConfig) => Promise<import("..").IMessage>;
50
50
  batchDeleteMessages: (ids: string[], config?: import("./fetch").IRequestConfig) => Promise<number>;
51
51
  shareMessages: (sessionCode: string, contentIds: string[], expiredAt?: number, config?: import("./fetch").IRequestConfig) => Promise<import("./module/message").IShareMessagesResponse>;
@@ -39,8 +39,8 @@ export declare const useModule: (fetchClient: FetchClient) => {
39
39
  };
40
40
  message: {
41
41
  getMessages: (sessionCode: string, limit?: number, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IMessage[]>;
42
- plusMessage: (data: import("../..").IMessage, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IActivityMessage | import("../..").IAssistantMessage | import("../..").IDeveloperMessage | import("../..").IInterruptMessage | import("../..").IGuideMessage | import("../..").IHiddenAssistantMessage | import("../..").IHiddenGuideMessage | import("../..").IHiddenMessage | import("../..").IHiddenSystemMessage | import("../..").IHiddenUserMessage | import("../..").IInfoMessage | import("../..").IPauseMessage | import("../..").IPlaceholderMessage | import("../..").IReasoningMessage | import("../..").ISystemMessage | import("../..").ITemplateAssistantMessage | import("../..").ITemplateGuideMessage | import("../..").ITemplateHiddenMessage | import("../..").ITemplateSystemMessage | import("../..").ITemplateUserMessage | import("../..").IToolMessage | import("../..").IUserMessage>;
43
- modifyMessage: (data: import("../..").IMessage, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IActivityMessage | import("../..").IAssistantMessage | import("../..").IDeveloperMessage | import("../..").IInterruptMessage | import("../..").IGuideMessage | import("../..").IHiddenAssistantMessage | import("../..").IHiddenGuideMessage | import("../..").IHiddenMessage | import("../..").IHiddenSystemMessage | import("../..").IHiddenUserMessage | import("../..").IInfoMessage | import("../..").IPauseMessage | import("../..").IPlaceholderMessage | import("../..").IReasoningMessage | import("../..").ISystemMessage | import("../..").ITemplateAssistantMessage | import("../..").ITemplateGuideMessage | import("../..").ITemplateHiddenMessage | import("../..").ITemplateSystemMessage | import("../..").ITemplateUserMessage | import("../..").IToolMessage | import("../..").IUserMessage>;
42
+ plusMessage: (data: import("../..").IMessage, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IActivityMessage | import("../..").IAssistantMessage | import("../..").IDeveloperMessage | import("../..").IGuideMessage | import("../..").IHiddenAssistantMessage | import("../..").IHiddenGuideMessage | import("../..").IHiddenMessage | import("../..").IHiddenSystemMessage | import("../..").IHiddenUserMessage | import("../..").IInfoMessage | import("../..").IPauseMessage | import("../..").IPlaceholderMessage | import("../..").IReasoningMessage | import("../..").ISystemMessage | import("../..").ITemplateAssistantMessage | import("../..").ITemplateGuideMessage | import("../..").ITemplateHiddenMessage | import("../..").ITemplateSystemMessage | import("../..").ITemplateUserMessage | import("../..").IToolMessage | import("../..").IUserMessage | import("../..").IInterruptMessage>;
43
+ modifyMessage: (data: import("../..").IMessage, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IActivityMessage | import("../..").IAssistantMessage | import("../..").IDeveloperMessage | import("../..").IGuideMessage | import("../..").IHiddenAssistantMessage | import("../..").IHiddenGuideMessage | import("../..").IHiddenMessage | import("../..").IHiddenSystemMessage | import("../..").IHiddenUserMessage | import("../..").IInfoMessage | import("../..").IPauseMessage | import("../..").IPlaceholderMessage | import("../..").IReasoningMessage | import("../..").ISystemMessage | import("../..").ITemplateAssistantMessage | import("../..").ITemplateGuideMessage | import("../..").ITemplateHiddenMessage | import("../..").ITemplateSystemMessage | import("../..").ITemplateUserMessage | import("../..").IToolMessage | import("../..").IUserMessage | import("../..").IInterruptMessage>;
44
44
  deleteMessage: (id: string, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IMessage>;
45
45
  batchDeleteMessages: (ids: string[], config?: import("../fetch").IRequestConfig) => Promise<number>;
46
46
  shareMessages: (sessionCode: string, contentIds: string[], expiredAt?: number, config?: import("../fetch").IRequestConfig) => Promise<import("./message").IShareMessagesResponse>;
@@ -20,8 +20,8 @@ export interface IShareMessagesResponse {
20
20
  */
21
21
  export declare const useMessage: (fetchClient: FetchClient) => {
22
22
  getMessages: (sessionCode: string, limit?: number, config?: IRequestConfig) => Promise<IMessage[]>;
23
- plusMessage: (data: IMessage, config?: IRequestConfig) => Promise<import("../../message/type").IActivityMessage | import("../../message/type").IAssistantMessage | import("../../message/type").IDeveloperMessage | import("../../message/type").IInterruptMessage | import("../../message/type").IGuideMessage | import("../../message/type").IHiddenAssistantMessage | import("../../message/type").IHiddenGuideMessage | import("../../message/type").IHiddenMessage | import("../../message/type").IHiddenSystemMessage | import("../../message/type").IHiddenUserMessage | import("../../message/type").IInfoMessage | import("../../message/type").IPauseMessage | import("../../message/type").IPlaceholderMessage | import("../../message/type").IReasoningMessage | import("../../message/type").ISystemMessage | import("../../message/type").ITemplateAssistantMessage | import("../../message/type").ITemplateGuideMessage | import("../../message/type").ITemplateHiddenMessage | import("../../message/type").ITemplateSystemMessage | import("../../message/type").ITemplateUserMessage | import("../../message/type").IToolMessage | import("../../message/type").IUserMessage>;
24
- modifyMessage: (data: IMessage, config?: IRequestConfig) => Promise<import("../../message/type").IActivityMessage | import("../../message/type").IAssistantMessage | import("../../message/type").IDeveloperMessage | import("../../message/type").IInterruptMessage | import("../../message/type").IGuideMessage | import("../../message/type").IHiddenAssistantMessage | import("../../message/type").IHiddenGuideMessage | import("../../message/type").IHiddenMessage | import("../../message/type").IHiddenSystemMessage | import("../../message/type").IHiddenUserMessage | import("../../message/type").IInfoMessage | import("../../message/type").IPauseMessage | import("../../message/type").IPlaceholderMessage | import("../../message/type").IReasoningMessage | import("../../message/type").ISystemMessage | import("../../message/type").ITemplateAssistantMessage | import("../../message/type").ITemplateGuideMessage | import("../../message/type").ITemplateHiddenMessage | import("../../message/type").ITemplateSystemMessage | import("../../message/type").ITemplateUserMessage | import("../../message/type").IToolMessage | import("../../message/type").IUserMessage>;
23
+ plusMessage: (data: IMessage, config?: IRequestConfig) => Promise<import("../../message/type").IActivityMessage | import("../../message/type").IAssistantMessage | import("../../message/type").IDeveloperMessage | import("../../message/type").IGuideMessage | import("../../message/type").IHiddenAssistantMessage | import("../../message/type").IHiddenGuideMessage | import("../../message/type").IHiddenMessage | import("../../message/type").IHiddenSystemMessage | import("../../message/type").IHiddenUserMessage | import("../../message/type").IInfoMessage | import("../../message/type").IPauseMessage | import("../../message/type").IPlaceholderMessage | import("../../message/type").IReasoningMessage | import("../../message/type").ISystemMessage | import("../../message/type").ITemplateAssistantMessage | import("../../message/type").ITemplateGuideMessage | import("../../message/type").ITemplateHiddenMessage | import("../../message/type").ITemplateSystemMessage | import("../../message/type").ITemplateUserMessage | import("../../message/type").IToolMessage | import("../../message/type").IUserMessage | import("../../message/type").IInterruptMessage>;
24
+ modifyMessage: (data: IMessage, config?: IRequestConfig) => Promise<import("../../message/type").IActivityMessage | import("../../message/type").IAssistantMessage | import("../../message/type").IDeveloperMessage | import("../../message/type").IGuideMessage | import("../../message/type").IHiddenAssistantMessage | import("../../message/type").IHiddenGuideMessage | import("../../message/type").IHiddenMessage | import("../../message/type").IHiddenSystemMessage | import("../../message/type").IHiddenUserMessage | import("../../message/type").IInfoMessage | import("../../message/type").IPauseMessage | import("../../message/type").IPlaceholderMessage | import("../../message/type").IReasoningMessage | import("../../message/type").ISystemMessage | import("../../message/type").ITemplateAssistantMessage | import("../../message/type").ITemplateGuideMessage | import("../../message/type").ITemplateHiddenMessage | import("../../message/type").ITemplateSystemMessage | import("../../message/type").ITemplateUserMessage | import("../../message/type").IToolMessage | import("../../message/type").IUserMessage | import("../../message/type").IInterruptMessage>;
25
25
  deleteMessage: (id: string, config?: IRequestConfig) => Promise<IMessage>;
26
26
  batchDeleteMessages: (ids: string[], config?: IRequestConfig) => Promise<number>;
27
27
  shareMessages: (sessionCode: string, contentIds: string[], expiredAt?: number, config?: IRequestConfig) => Promise<IShareMessagesResponse>;
@@ -50,7 +50,7 @@ function _object_spread(target) {
50
50
  }
51
51
  return target;
52
52
  }
53
- import { transferMessage2MessageApi, transferMessageApi2Message, mergeArtifactsActivityIntoMessages } from '../transform/message.ts.js';
53
+ import { transferMessage2MessageApi, transferMessageApi2Message } from '../transform/message.ts.js';
54
54
  /**
55
55
  * message 相关 http 接口
56
56
  * @param fetchClient - 请求客户端
@@ -60,7 +60,7 @@ import { transferMessage2MessageApi, transferMessageApi2Message, mergeArtifactsA
60
60
  const getMessages = (sessionCode, limit, config)=>fetchClient.get(`session_content/content/`, {
61
61
  session_code: sessionCode,
62
62
  limit
63
- }, config).then((res)=>mergeArtifactsActivityIntoMessages(res.map(transferMessageApi2Message)));
63
+ }, config).then((res)=>res.map(transferMessageApi2Message));
64
64
  // 新增会话内容
65
65
  const plusMessage = (data, config)=>fetchClient.post(`session_content/`, transferMessage2MessageApi(data), config).then(transferMessageApi2Message);
66
66
  // 修改会话内容
@@ -11,9 +11,3 @@ export declare const transferMessageApi2Message: (data: IMessageApi) => IMessage
11
11
  * @returns API 使用的消息数据
12
12
  */
13
13
  export declare const transferMessage2MessageApi: (data: IMessage) => IMessageApi;
14
- /**
15
- * 将历史/快照中的 artifacts_generated activity 合并到前一条 Assistant 的 property.artifacts,
16
- * 并过滤掉该 activity(UI 只从 Assistant.property.artifacts 渲染)。
17
- * 实时 SSE 已写过 property.artifacts;历史回填依赖此归一化。
18
- */
19
- export declare const mergeArtifactsActivityIntoMessages: (messages: IMessage[]) => IMessage[];
@@ -617,55 +617,3 @@ import { ActivityType, MessageRole, MessageType } from '../../message/type.ts.js
617
617
  }
618
618
  }
619
619
  };
620
- /**
621
- * 将历史/快照中的 artifacts_generated activity 合并到前一条 Assistant 的 property.artifacts,
622
- * 并过滤掉该 activity(UI 只从 Assistant.property.artifacts 渲染)。
623
- * 实时 SSE 已写过 property.artifacts;历史回填依赖此归一化。
624
- */ export const mergeArtifactsActivityIntoMessages = (messages)=>{
625
- const result = [];
626
- for (const message of messages){
627
- var _activity_content, _activity_property;
628
- if (message.role !== MessageRole.Activity) {
629
- result.push(message);
630
- continue;
631
- }
632
- const activity = message;
633
- if (activity.activityType !== ActivityType.ArtifactsGenerated) {
634
- result.push(message);
635
- continue;
636
- }
637
- const artifacts = (_activity_content = activity.content) === null || _activity_content === void 0 ? void 0 : _activity_content.artifacts;
638
- // status=empty 或无产物:丢弃 activity,不渲染
639
- if (!(artifacts === null || artifacts === void 0 ? void 0 : artifacts.length)) {
640
- continue;
641
- }
642
- const activityTurnId = (_activity_property = activity.property) === null || _activity_property === void 0 ? void 0 : _activity_property.turn_id;
643
- let matchedByTurn = -1;
644
- let nearestAssistant = -1;
645
- for(let i = result.length - 1; i >= 0; i -= 1){
646
- var _candidate_property;
647
- if (result[i].role !== MessageRole.Assistant) {
648
- continue;
649
- }
650
- const candidate = result[i];
651
- if (nearestAssistant < 0) {
652
- nearestAssistant = i;
653
- }
654
- if (activityTurnId && ((_candidate_property = candidate.property) === null || _candidate_property === void 0 ? void 0 : _candidate_property.turn_id) === activityTurnId) {
655
- matchedByTurn = i;
656
- break;
657
- }
658
- }
659
- const targetIndex = matchedByTurn >= 0 ? matchedByTurn : nearestAssistant;
660
- if (targetIndex >= 0) {
661
- const assistant = result[targetIndex];
662
- result[targetIndex] = _object_spread_props(_object_spread({}, assistant), {
663
- property: _object_spread_props(_object_spread({}, assistant.property), {
664
- artifacts
665
- })
666
- });
667
- }
668
- // 始终丢弃 artifacts_generated activity
669
- }
670
- return result;
671
- };