@blueking/chat-helper 0.0.12-beta.18 → 0.0.12-beta.19

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/README.md CHANGED
@@ -324,6 +324,17 @@ http.message; // Message API
324
324
 
325
325
  一般情况下,您不需要直接使用 `http` 模块,因为 `agent`、`session` 和 `message` 模块已经封装了常用的业务逻辑。
326
326
 
327
+ **`http.message.getMessages`(可单独使用)**:
328
+
329
+ ```typescript
330
+ // (sessionCode: string, limit?: number, config?: IRequestConfig, fuzzy?: string) => Promise<IMessage[]>
331
+ // GET session_content/content/ — 支持可选 fuzzy 模糊检索
332
+ const messages = await http.message.getMessages(sessionCode);
333
+ const filtered = await http.message.getMessages(sessionCode, undefined, undefined, '关键词');
334
+ ```
335
+
336
+ > 业务层 `message.getMessages(sessionCode)` 未透传 `fuzzy`。需要模糊检索时请直接调用 `http.message.getMessages`。`fuzzy` 位于参数末尾,不影响既有 `limit` / `config` 调用。
337
+
327
338
  ## 配置选项
328
339
 
329
340
  ### requestData(必需)
@@ -416,7 +427,6 @@ useChatHelper({
416
427
  **拦截器使用场景**:
417
428
 
418
429
  1. **请求拦截器**:
419
-
420
430
  - 添加认证 token
421
431
  - 添加请求时间戳
422
432
  - 添加请求 ID
@@ -994,8 +1004,8 @@ class SafeProtocol extends AGUIProtocol {
994
1004
  mode.value === 'creative'
995
1005
  ? 'chat_completion_creative/'
996
1006
  : mode.value === 'precise'
997
- ? 'chat_completion_precise/'
998
- : undefined;
1007
+ ? 'chat_completion_precise/'
1008
+ : undefined;
999
1009
 
1000
1010
  // 自定义请求参数
1001
1011
  agent.chat(userInput.value, session.current.sessionCode, endpoint, {
@@ -1555,13 +1565,11 @@ interface IToolMessage {
1555
1565
  **参数:**
1556
1566
 
1557
1567
  - `options.requestData` (必需)
1558
-
1559
1568
  - `urlPrefix: string` - API 基础路径
1560
1569
  - `data?: Record<string, unknown> | (() => Record<string, unknown>)` - 额外的请求数据
1561
1570
  - `headers?: Record<string, string> | (() => Record<string, string>)` - 额外的请求头
1562
1571
 
1563
1572
  - `options.interceptors` (可选)
1564
-
1565
1573
  - `request?: (config: IRequestConfig) => IRequestConfig` - 请求拦截器
1566
1574
  - `response?: (response: IResponse) => IResponse` - 响应拦截器
1567
1575
 
@@ -246,7 +246,7 @@ const getReconnectDelayMs = (attempt)=>Math.min(RECONNECT_BASE_DELAY_MS * Math.p
246
246
  runFinished = false;
247
247
  clearReconnectTimer(false);
248
248
  };
249
- /** 裁掉尾部尚未完成的非用户消息,避免 DLQ 重放时重复气泡 */ const pruneTrailingIncompleteMessages = ()=>{
249
+ /** 裁掉尾部尚未完成的非用户消息,避免断线重放时重复气泡 */ const pruneTrailingIncompleteMessages = ()=>{
250
250
  var _mediator_message;
251
251
  const list = (_mediator_message = mediator.message) === null || _mediator_message === void 0 ? void 0 : _mediator_message.list.value;
252
252
  if (!(list === null || list === void 0 ? void 0 : list.length)) {
@@ -401,7 +401,7 @@ const getReconnectDelayMs = (attempt)=>Math.min(RECONNECT_BASE_DELAY_MS * Math.p
401
401
  finishSuccessfully();
402
402
  return;
403
403
  }
404
- // 连接被干净掐断且未收到 RUN_FINISHED:尝试静默重连
404
+ // 连接被干净掐断且未收到终端事件(RUN_FINISHED / RUN_ERROR):尝试静默重连
405
405
  void attemptSilentReconnect(sessionCode, streamId).then((result)=>{
406
406
  if (!isActiveStream()) {
407
407
  return;
@@ -454,7 +454,9 @@ const getReconnectDelayMs = (attempt)=>Math.min(RECONNECT_BASE_DELAY_MS * Math.p
454
454
  return;
455
455
  }
456
456
  const typedEvent = event;
457
- if ((typedEvent === null || typedEvent === void 0 ? void 0 : typedEvent.type) === EventType.RunFinished) {
457
+ // RUN_FINISHED / RUN_ERROR 均为终端事件:关流后走正常收尾,勿静默重连
458
+ // (用户 stop 后后端推 RUN_ERROR「用户已取消」,而非 RUN_FINISHED)
459
+ if ((typedEvent === null || typedEvent === void 0 ? void 0 : typedEvent.type) === EventType.RunFinished || (typedEvent === null || typedEvent === void 0 ? void 0 : typedEvent.type) === EventType.RunError) {
458
460
  runFinished = true;
459
461
  }
460
462
  (_usedProtocol_onMessage = usedProtocol.onMessage) === null || _usedProtocol_onMessage === void 0 ? void 0 : _usedProtocol_onMessage.call(usedProtocol, event);
@@ -133,7 +133,7 @@ export declare class AGUIProtocol implements ISSEProtocol {
133
133
  handleTextMessageEndEvent(event: ITextMessageEndEvent): void;
134
134
  /**
135
135
  * 处理文本消息开始事件
136
- * 断线续传时 DLQ 会重放事件:同 messageId 已存在则重置内容,避免重复气泡/文本翻倍
136
+ * 断线续传时会重放缓存事件:同 messageId 已存在则重置内容,避免重复气泡/文本翻倍
137
137
  */
138
138
  handleTextMessageStartEvent(event: ITextMessageStartEvent): void;
139
139
  /**
@@ -380,7 +380,7 @@ import { CustomEventName, EventType, FlowTaskState, RunFinishedOutcomeType } fro
380
380
  }
381
381
  /**
382
382
  * 处理文本消息开始事件
383
- * 断线续传时 DLQ 会重放事件:同 messageId 已存在则重置内容,避免重复气泡/文本翻倍
383
+ * 断线续传时会重放缓存事件:同 messageId 已存在则重置内容,避免重复气泡/文本翻倍
384
384
  */ handleTextMessageStartEvent(event) {
385
385
  const existing = this.messageModule.getMessageByMessageId(event.messageId);
386
386
  if (existing) {
@@ -43,7 +43,7 @@ export declare const useHttp: (options: IUseChatHelperOptions) => {
43
43
  isResumeSession: (sessionCode: string, config?: import("./fetch").IRequestConfig) => Promise<boolean>;
44
44
  };
45
45
  message: {
46
- getMessages: (sessionCode: string, limit?: number, config?: import("./fetch").IRequestConfig) => Promise<import("..").IMessage[]>;
46
+ getMessages: (sessionCode: string, limit?: number, config?: import("./fetch").IRequestConfig, fuzzy?: string) => Promise<import("..").IMessage[]>;
47
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
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>;
@@ -38,7 +38,7 @@ export declare const useModule: (fetchClient: FetchClient) => {
38
38
  isResumeSession: (sessionCode: string, config?: import("../fetch").IRequestConfig) => Promise<boolean>;
39
39
  };
40
40
  message: {
41
- getMessages: (sessionCode: string, limit?: number, config?: import("../fetch").IRequestConfig) => Promise<import("../..").IMessage[]>;
41
+ getMessages: (sessionCode: string, limit?: number, config?: import("../fetch").IRequestConfig, fuzzy?: string) => Promise<import("../..").IMessage[]>;
42
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
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>;
@@ -19,7 +19,7 @@ export interface IShareMessagesResponse {
19
19
  * @returns message 相关 http 接口
20
20
  */
21
21
  export declare const useMessage: (fetchClient: FetchClient) => {
22
- getMessages: (sessionCode: string, limit?: number, config?: IRequestConfig) => Promise<IMessage[]>;
22
+ getMessages: (sessionCode: string, limit?: number, config?: IRequestConfig, fuzzy?: string) => Promise<IMessage[]>;
23
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
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>;
@@ -56,10 +56,11 @@ import { transferMessage2MessageApi, transferMessageApi2Message } from '../trans
56
56
  * @param fetchClient - 请求客户端
57
57
  * @returns message 相关 http 接口
58
58
  */ export const useMessage = (fetchClient)=>{
59
- // 获取会话内容列表
60
- const getMessages = (sessionCode, limit, config)=>fetchClient.get(`session_content/content/`, {
59
+ // 获取会话内容列表(fuzzy 置于末尾,避免影响既有 limit/config 调用)
60
+ const getMessages = (sessionCode, limit, config, fuzzy)=>fetchClient.get(`session_content/content/`, {
61
61
  session_code: sessionCode,
62
- limit
62
+ limit,
63
+ fuzzy
63
64
  }, config).then((res)=>res.map(transferMessageApi2Message));
64
65
  // 新增会话内容
65
66
  const plusMessage = (data, config)=>fetchClient.post(`session_content/`, transferMessage2MessageApi(data), config).then(transferMessageApi2Message);
package/dist/index.d.ts CHANGED
@@ -13380,7 +13380,7 @@ export declare const useChatHelper: (options: IUseChatHelperOptions) => {
13380
13380
  isResumeSession: (sessionCode: string, config?: import("./http").IRequestConfig) => Promise<boolean>;
13381
13381
  };
13382
13382
  message: {
13383
- getMessages: (sessionCode: string, limit?: number, config?: import("./http").IRequestConfig) => Promise<import("./message").IMessage[]>;
13383
+ getMessages: (sessionCode: string, limit?: number, config?: import("./http").IRequestConfig, fuzzy?: string) => Promise<import("./message").IMessage[]>;
13384
13384
  plusMessage: (data: import("./message").IMessage, config?: import("./http").IRequestConfig) => Promise<import("./message").IActivityMessage | import("./message").IAssistantMessage | import("./message").IDeveloperMessage | import("./message").IGuideMessage | import("./message").IHiddenAssistantMessage | import("./message").IHiddenGuideMessage | import("./message").IHiddenMessage | import("./message").IHiddenSystemMessage | import("./message").IHiddenUserMessage | import("./message").IInfoMessage | import("./message").IPauseMessage | import("./message").IPlaceholderMessage | import("./message").IReasoningMessage | import("./message").ISystemMessage | import("./message").ITemplateAssistantMessage | import("./message").ITemplateGuideMessage | import("./message").ITemplateHiddenMessage | import("./message").ITemplateSystemMessage | import("./message").ITemplateUserMessage | import("./message").IToolMessage | import("./message").IUserMessage | import("./message").IInterruptMessage>;
13385
13385
  modifyMessage: (data: import("./message").IMessage, config?: import("./http").IRequestConfig) => Promise<import("./message").IActivityMessage | import("./message").IAssistantMessage | import("./message").IDeveloperMessage | import("./message").IGuideMessage | import("./message").IHiddenAssistantMessage | import("./message").IHiddenGuideMessage | import("./message").IHiddenMessage | import("./message").IHiddenSystemMessage | import("./message").IHiddenUserMessage | import("./message").IInfoMessage | import("./message").IPauseMessage | import("./message").IPlaceholderMessage | import("./message").IReasoningMessage | import("./message").ISystemMessage | import("./message").ITemplateAssistantMessage | import("./message").ITemplateGuideMessage | import("./message").ITemplateHiddenMessage | import("./message").ITemplateSystemMessage | import("./message").ITemplateUserMessage | import("./message").IToolMessage | import("./message").IUserMessage | import("./message").IInterruptMessage>;
13386
13386
  deleteMessage: (id: string, config?: import("./http").IRequestConfig) => Promise<import("./message").IMessage>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blueking/chat-helper",
3
- "version": "0.0.12-beta.18",
3
+ "version": "0.0.12-beta.19",
4
4
  "description": "",
5
5
  "main": "./dist/index.ts.js",
6
6
  "types": "./dist/index.d.ts",