@blueking/chat-helper 0.0.12-beta.1 → 0.0.12-beta.11

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.
@@ -8,12 +8,19 @@ export * from './transform';
8
8
  */
9
9
  export declare const useHttp: (options: IUseChatHelperOptions) => {
10
10
  reset: (newOptions: IUseChatHelperOptions) => void;
11
+ /** 注册全局错误处理器 */
12
+ onError: (handler: import("./fetch").GlobalErrorHandler, options?: import("./fetch").ErrorHandlerOptions) => void;
11
13
  agent: {
12
14
  getAgentInfo: (config?: import("./fetch").IRequestConfig) => Promise<import("..").IAgentInfo>;
13
15
  };
14
16
  session: {
15
17
  clearSession: (sessionCode: string, config?: import("./fetch").IRequestConfig) => Promise<unknown>;
16
- getSessions: (config?: import("./fetch").IRequestConfig) => Promise<import("..").ISession<unknown, unknown>[]>;
18
+ getSessions: (params?: import("..").ISessionListParams, config?: import("./fetch").IRequestConfig) => Promise<{
19
+ page: number;
20
+ numPages: number;
21
+ count: number;
22
+ results: import("..").ISession<unknown, unknown>[];
23
+ }>;
17
24
  plusSession: (data: import("..").ISession, config?: import("./fetch").IRequestConfig) => Promise<import("..").ISession<unknown, unknown>>;
18
25
  modifySession: (data: import("..").ISession, config?: import("./fetch").IRequestConfig) => Promise<import("..").ISession<unknown, unknown>>;
19
26
  deleteSession: (sessionCode: string, config?: import("./fetch").IRequestConfig) => Promise<unknown>;
@@ -31,17 +38,21 @@ export declare const useHttp: (options: IUseChatHelperOptions) => {
31
38
  uploadFile: (sessionCode: string, file: File, config?: import("./fetch").IRequestConfig) => Promise<{
32
39
  download_url?: string;
33
40
  }>;
41
+ isResumeSession: (sessionCode: string, config?: import("./fetch").IRequestConfig) => Promise<boolean>;
34
42
  };
35
43
  message: {
36
44
  getMessages: (sessionCode: string, limit?: number, config?: import("./fetch").IRequestConfig) => Promise<import("..").IMessage[]>;
37
- 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>;
38
- 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>;
45
+ 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>;
46
+ 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>;
39
47
  deleteMessage: (id: string, config?: import("./fetch").IRequestConfig) => Promise<import("..").IMessage>;
40
48
  batchDeleteMessages: (ids: string[], config?: import("./fetch").IRequestConfig) => Promise<number>;
41
49
  shareMessages: (sessionCode: string, contentIds: string[], expiredAt?: number, config?: import("./fetch").IRequestConfig) => Promise<import("./module/message").IShareMessagesResponse>;
42
50
  stopChat: (sessionCode: string, config?: import("./fetch").IRequestConfig) => Promise<void>;
43
51
  getFlowAgentTaskInfo: (taskId: number, config?: import("./fetch").IRequestConfig) => Promise<unknown>;
44
52
  getFlowAgentTaskNodeInfo: (taskId: number, nodeId: string, config?: import("./fetch").IRequestConfig) => Promise<import("..").IFlowAgentTaskNodeInfo>;
53
+ retryFlowAgentTaskNode: (sessionCode: string, nodeId: string, taskId: number, config?: import("./fetch").IRequestConfig) => Promise<void>;
54
+ skipFlowAgentTaskNode: (sessionCode: string, nodeId: string, taskId: number, config?: import("./fetch").IRequestConfig) => Promise<void>;
55
+ userOperation: (sessionCode: string, operation: import("..").UserOperation, payload: import("..").IUserOperationPayload, config?: import("./fetch").IRequestConfig) => Promise<void>;
45
56
  };
46
57
  fetchClient: import("./fetch").FetchClient;
47
58
  };
@@ -88,6 +88,7 @@ export * from './transform/index.ts.js';
88
88
  // 创建 http 模块
89
89
  const http = useModule(fetchClient);
90
90
  return _object_spread_props(_object_spread({}, http), {
91
- reset
91
+ reset,
92
+ /** 注册全局错误处理器 */ onError: fetchClient.onError.bind(fetchClient)
92
93
  });
93
94
  };
@@ -10,7 +10,12 @@ export declare const useModule: (fetchClient: FetchClient) => {
10
10
  };
11
11
  session: {
12
12
  clearSession: (sessionCode: string, config?: import("../fetch").IRequestConfig) => Promise<unknown>;
13
- getSessions: (config?: import("../fetch").IRequestConfig) => Promise<import("../..").ISession<unknown, unknown>[]>;
13
+ getSessions: (params?: import("../..").ISessionListParams, config?: import("../fetch").IRequestConfig) => Promise<{
14
+ page: number;
15
+ numPages: number;
16
+ count: number;
17
+ results: import("../..").ISession<unknown, unknown>[];
18
+ }>;
14
19
  plusSession: (data: import("../..").ISession, config?: import("../fetch").IRequestConfig) => Promise<import("../..").ISession<unknown, unknown>>;
15
20
  modifySession: (data: import("../..").ISession, config?: import("../fetch").IRequestConfig) => Promise<import("../..").ISession<unknown, unknown>>;
16
21
  deleteSession: (sessionCode: string, config?: import("../fetch").IRequestConfig) => Promise<unknown>;
@@ -28,17 +33,21 @@ export declare const useModule: (fetchClient: FetchClient) => {
28
33
  uploadFile: (sessionCode: string, file: File, config?: import("../fetch").IRequestConfig) => Promise<{
29
34
  download_url?: string;
30
35
  }>;
36
+ isResumeSession: (sessionCode: string, config?: import("../fetch").IRequestConfig) => Promise<boolean>;
31
37
  };
32
38
  message: {
33
39
  getMessages: (sessionCode: string, limit?: number, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IMessage[]>;
34
- 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>;
35
- 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>;
40
+ 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>;
41
+ 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>;
36
42
  deleteMessage: (id: string, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IMessage>;
37
43
  batchDeleteMessages: (ids: string[], config?: import("../fetch").IRequestConfig) => Promise<number>;
38
44
  shareMessages: (sessionCode: string, contentIds: string[], expiredAt?: number, config?: import("../fetch").IRequestConfig) => Promise<import("./message").IShareMessagesResponse>;
39
45
  stopChat: (sessionCode: string, config?: import("../fetch").IRequestConfig) => Promise<void>;
40
46
  getFlowAgentTaskInfo: (taskId: number, config?: import("../fetch").IRequestConfig) => Promise<unknown>;
41
47
  getFlowAgentTaskNodeInfo: (taskId: number, nodeId: string, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IFlowAgentTaskNodeInfo>;
48
+ retryFlowAgentTaskNode: (sessionCode: string, nodeId: string, taskId: number, config?: import("../fetch").IRequestConfig) => Promise<void>;
49
+ skipFlowAgentTaskNode: (sessionCode: string, nodeId: string, taskId: number, config?: import("../fetch").IRequestConfig) => Promise<void>;
50
+ userOperation: (sessionCode: string, operation: import("../..").UserOperation, payload: import("../..").IUserOperationPayload, config?: import("../fetch").IRequestConfig) => Promise<void>;
42
51
  };
43
52
  fetchClient: FetchClient;
44
53
  };
@@ -1,4 +1,4 @@
1
- import type { IFlowAgentTaskNodeInfo, IMessage } from '../../message/type';
1
+ import type { IFlowAgentTaskNodeInfo, IMessage, IUserOperationPayload, UserOperation } from '../../message/type';
2
2
  import type { FetchClient, IRequestConfig } from '../fetch';
3
3
  /**
4
4
  * 分享消息接口返回数据
@@ -20,12 +20,15 @@ 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").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").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").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>;
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>;
28
28
  stopChat: (sessionCode: string, config?: IRequestConfig) => Promise<void>;
29
29
  getFlowAgentTaskInfo: (taskId: number, config?: IRequestConfig) => Promise<unknown>;
30
30
  getFlowAgentTaskNodeInfo: (taskId: number, nodeId: string, config?: IRequestConfig) => Promise<IFlowAgentTaskNodeInfo>;
31
+ retryFlowAgentTaskNode: (sessionCode: string, nodeId: string, taskId: number, config?: IRequestConfig) => Promise<void>;
32
+ skipFlowAgentTaskNode: (sessionCode: string, nodeId: string, taskId: number, config?: IRequestConfig) => Promise<void>;
33
+ userOperation: (sessionCode: string, operation: UserOperation, payload: IUserOperationPayload, config?: IRequestConfig) => Promise<void>;
31
34
  };
@@ -86,6 +86,20 @@ import { transferMessage2MessageApi, transferMessageApi2Message } from '../trans
86
86
  const getFlowAgentTaskInfo = (taskId, config)=>fetchClient.get(`flow_agent/${taskId}/task_info/`, undefined, config);
87
87
  // 获取流程引擎任务节点详情
88
88
  const getFlowAgentTaskNodeInfo = (taskId, nodeId, config)=>fetchClient.get(`flow_agent/${taskId}/task_node_info/${nodeId}/`, undefined, config);
89
+ // 重试流程引擎任务节点
90
+ const retryFlowAgentTaskNode = (sessionCode, nodeId, taskId, config)=>fetchClient.post(`flow_agent/${sessionCode}/node/${nodeId}/retry/`, {
91
+ task_id: taskId
92
+ }, config);
93
+ // 跳过流程引擎任务节点
94
+ const skipFlowAgentTaskNode = (sessionCode, nodeId, taskId, config)=>fetchClient.post(`flow_agent/${sessionCode}/node/${nodeId}/skip/`, {
95
+ task_id: taskId
96
+ }, config);
97
+ // 用户操作
98
+ const userOperation = (sessionCode, operation, payload, config)=>fetchClient.post(`user_operation/`, {
99
+ session_code: sessionCode,
100
+ operation,
101
+ payload
102
+ }, config);
89
103
  return {
90
104
  getMessages,
91
105
  plusMessage,
@@ -95,6 +109,9 @@ import { transferMessage2MessageApi, transferMessageApi2Message } from '../trans
95
109
  shareMessages,
96
110
  stopChat,
97
111
  getFlowAgentTaskInfo,
98
- getFlowAgentTaskNodeInfo
112
+ getFlowAgentTaskNodeInfo,
113
+ retryFlowAgentTaskNode,
114
+ skipFlowAgentTaskNode,
115
+ userOperation
99
116
  };
100
117
  };
@@ -1,4 +1,4 @@
1
- import type { ISession, ISessionFeedback } from '../../session/type';
1
+ import type { ISession, ISessionFeedback, ISessionListParams } from '../../session/type';
2
2
  import type { FetchClient, IRequestConfig } from '../fetch';
3
3
  /**
4
4
  * session 相关 http 接口
@@ -7,7 +7,12 @@ import type { FetchClient, IRequestConfig } from '../fetch';
7
7
  */
8
8
  export declare const useSession: (fetchClient: FetchClient) => {
9
9
  clearSession: (sessionCode: string, config?: IRequestConfig) => Promise<unknown>;
10
- getSessions: (config?: IRequestConfig) => Promise<ISession<unknown, unknown>[]>;
10
+ getSessions: (params?: ISessionListParams, config?: IRequestConfig) => Promise<{
11
+ page: number;
12
+ numPages: number;
13
+ count: number;
14
+ results: ISession<unknown, unknown>[];
15
+ }>;
11
16
  plusSession: (data: ISession, config?: IRequestConfig) => Promise<ISession<unknown, unknown>>;
12
17
  modifySession: (data: ISession, config?: IRequestConfig) => Promise<ISession<unknown, unknown>>;
13
18
  deleteSession: (sessionCode: string, config?: IRequestConfig) => Promise<unknown>;
@@ -25,4 +30,5 @@ export declare const useSession: (fetchClient: FetchClient) => {
25
30
  uploadFile: (sessionCode: string, file: File, config?: IRequestConfig) => Promise<{
26
31
  download_url?: string;
27
32
  }>;
33
+ isResumeSession: (sessionCode: string, config?: IRequestConfig) => Promise<boolean>;
28
34
  };
@@ -75,6 +75,28 @@ function _object_spread_props(target, source) {
75
75
  return target;
76
76
  }
77
77
  import { transferSession2SessionApi, transferSessionApi2Session, transferSessionFeedback2SessionFeedbackApi, transferSessionFeedbackApi2SessionFeedback } from '../transform/session.ts.js';
78
+ import { resolveRequestValue } from '../fetch/index.ts.js';
79
+ /** 上传接口传输用文件名前缀,与原始展示名解耦 */ const UPLOAD_FILE_NAME_PREFIX = 'upload_file';
80
+ /** 会话列表默认每页条数 */ const DEFAULT_PAGE_SIZE = 20;
81
+ /** 从原始文件名提取 ASCII 安全扩展名,用于保留文件类型 */ const getSafeFileExtension = (fileName)=>{
82
+ const extension = fileName.split('.').pop();
83
+ if (!extension || extension === fileName) {
84
+ return '';
85
+ }
86
+ const safeExtension = extension.replace(/[^A-Za-z0-9]/g, '').slice(0, 20).toLowerCase();
87
+ return safeExtension ? `.${safeExtension}` : '';
88
+ };
89
+ /**
90
+ * 生成上传接口使用的 ASCII 安全文件名。
91
+ * 中文等非 ASCII 原名不能用于 URL path / Content-Disposition(浏览器与后端均可能编码失败),
92
+ * 原始 file.name 仍保留在 File 对象上,由 chat-x 发送消息时作为展示名使用。
93
+ */ const buildSafeUploadFileName = (file)=>{
94
+ const suffix = `${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
95
+ return `${UPLOAD_FILE_NAME_PREFIX}_${suffix}${getSafeFileExtension(file.name)}`;
96
+ };
97
+ /** Content-Disposition 仅允许 ASCII,须与 upload path 中的 file_name 一致 */ const buildUploadContentDisposition = (fileName)=>{
98
+ return `attachment; filename="${fileName}"`;
99
+ };
78
100
  /**
79
101
  * session 相关 http 接口
80
102
  * @param fetchClient - 请求客户端
@@ -82,8 +104,19 @@ import { transferSession2SessionApi, transferSessionApi2Session, transferSession
82
104
  */ export const useSession = (fetchClient)=>{
83
105
  // 清除聊天上下文
84
106
  const clearSession = (sessionCode, config)=>fetchClient.post(`chat_completion/${sessionCode}/clear/`, undefined, config);
85
- // 获取会话列表
86
- const getSessions = (config)=>fetchClient.get(`session/`, undefined, config).then((res)=>res.map(transferSessionApi2Session));
107
+ // 获取会话列表(分页)
108
+ const getSessions = (params, config)=>{
109
+ var _params_page, _params_page_size;
110
+ return fetchClient.get(`session/`, {
111
+ page: (_params_page = params === null || params === void 0 ? void 0 : params.page) !== null && _params_page !== void 0 ? _params_page : 1,
112
+ page_size: (_params_page_size = params === null || params === void 0 ? void 0 : params.page_size) !== null && _params_page_size !== void 0 ? _params_page_size : DEFAULT_PAGE_SIZE
113
+ }, config).then((res)=>({
114
+ page: res.page,
115
+ numPages: res.num_pages,
116
+ count: res.count,
117
+ results: res.results.map(transferSessionApi2Session)
118
+ }));
119
+ };
87
120
  // 新增会话
88
121
  const plusSession = (data, config)=>fetchClient.post(`session/`, transferSession2SessionApi(data), config).then((res)=>transferSessionApi2Session(res));
89
122
  // 修改会话
@@ -104,15 +137,20 @@ import { transferSession2SessionApi, transferSessionApi2Session, transferSession
104
137
  }, config);
105
138
  // 会话重命名
106
139
  const renameSession = (sessionCode, config)=>fetchClient.post(`session/${sessionCode}/ai_rename/`, undefined, config).then((res)=>transferSessionApi2Session(res));
107
- // 上传文件到会话
140
+ // 上传文件到会话(传输名与展示名分离,见 buildSafeUploadFileName)
108
141
  const uploadFile = (sessionCode, file, config)=>{
109
- const fileName = encodeURIComponent(file.name);
142
+ const safeFileName = buildSafeUploadFileName(file);
143
+ const fileName = encodeURIComponent(safeFileName);
144
+ var _resolveRequestValue;
145
+ const headers = (_resolveRequestValue = resolveRequestValue(config === null || config === void 0 ? void 0 : config.headers)) !== null && _resolveRequestValue !== void 0 ? _resolveRequestValue : {};
110
146
  return file.arrayBuffer().then((content)=>fetchClient.post(`session/${sessionCode}/upload/${fileName}/`, content, _object_spread_props(_object_spread({}, config), {
111
- headers: {
112
- 'Content-Disposition': `attachment; filename="${file.name}"`
113
- }
147
+ headers: _object_spread_props(_object_spread({}, headers), {
148
+ 'Content-Disposition': buildUploadContentDisposition(safeFileName)
149
+ })
114
150
  })));
115
151
  };
152
+ // 轮询接口,判断是否可以继续聊天
153
+ const isResumeSession = (sessionCode, config)=>fetchClient.get(`session/${sessionCode}/is_resume/`, undefined, config);
116
154
  return {
117
155
  clearSession,
118
156
  getSessions,
@@ -124,6 +162,7 @@ import { transferSession2SessionApi, transferSessionApi2Session, transferSession
124
162
  postSessionFeedback,
125
163
  getSessionFeedbackReasons,
126
164
  renameSession,
127
- uploadFile
165
+ uploadFile,
166
+ isResumeSession
128
167
  };
129
168
  };
@@ -337,6 +337,11 @@ import { ActivityType, MessageRole, MessageType } from '../../message/type.ts.js
337
337
  });
338
338
  return result;
339
339
  }
340
+ case MessageRole.Interrupt:
341
+ {
342
+ const result = _object_spread({}, baseMessage, data);
343
+ return result;
344
+ }
340
345
  }
341
346
  };
342
347
  /**
@@ -601,5 +606,10 @@ import { ActivityType, MessageRole, MessageType } from '../../message/type.ts.js
601
606
  });
602
607
  return result;
603
608
  }
609
+ case MessageRole.Interrupt:
610
+ {
611
+ const result = _object_spread({}, baseMessage, data);
612
+ return result;
613
+ }
604
614
  }
605
615
  };