@blueking/chat-helper 0.0.1-beta.2 → 0.0.1-beta.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.
Files changed (42) hide show
  1. package/README.md +962 -63
  2. package/dist/agent/type.d.ts +20 -2
  3. package/dist/agent/use-agent.d.ts +904 -402
  4. package/dist/agent/use-agent.ts.js +218 -25
  5. package/dist/event/ag-ui.d.ts +23 -7
  6. package/dist/event/ag-ui.ts.js +167 -150
  7. package/dist/event/type.d.ts +30 -107
  8. package/dist/event/type.ts.js +8 -11
  9. package/dist/http/fetch/fetch.d.ts +40 -36
  10. package/dist/http/fetch/fetch.ts.js +58 -34
  11. package/dist/http/fetch/index.d.ts +1 -0
  12. package/dist/http/fetch/index.ts.js +17 -1
  13. package/dist/http/index.d.ts +24 -16
  14. package/dist/http/index.ts.js +60 -3
  15. package/dist/http/module/agent.d.ts +2 -2
  16. package/dist/http/module/index.d.ts +22 -16
  17. package/dist/http/module/index.ts.js +2 -1
  18. package/dist/http/module/message.d.ts +22 -7
  19. package/dist/http/module/message.ts.js +49 -7
  20. package/dist/http/module/session.d.ts +14 -11
  21. package/dist/http/module/session.ts.js +66 -4
  22. package/dist/http/transform/agent.ts.js +6 -7
  23. package/dist/http/transform/message.d.ts +6 -6
  24. package/dist/http/transform/message.ts.js +540 -118
  25. package/dist/http/transform/session.ts.js +9 -1
  26. package/dist/index.d.ts +3151 -2641
  27. package/dist/index.ts.js +26 -5
  28. package/dist/mediator/index.d.ts +2 -0
  29. package/dist/mediator/index.ts.js +26 -0
  30. package/dist/mediator/type.d.ts +50 -0
  31. package/dist/mediator/type.ts.js +28 -0
  32. package/dist/mediator/use-mediator.d.ts +7 -0
  33. package/dist/mediator/use-mediator.ts.js +47 -0
  34. package/dist/message/type.d.ts +235 -142
  35. package/dist/message/type.ts.js +15 -15
  36. package/dist/message/use-message.d.ts +748 -758
  37. package/dist/message/use-message.ts.js +215 -27
  38. package/dist/session/type.d.ts +10 -0
  39. package/dist/session/use-session.d.ts +1741 -1733
  40. package/dist/session/use-session.ts.js +198 -33
  41. package/dist/type.d.ts +4 -4
  42. package/package.json +2 -1
@@ -35,11 +35,9 @@
35
35
  }
36
36
  return obj;
37
37
  }
38
- import { transferMessageApi2Message } from '../http/transform/message.ts.js';
39
- import { MessageContentStatus, MessageContentType, MessageRole, MessageStatus } from '../message/index.ts.js';
40
- import { CustomEventType, EventType } from './type.ts.js';
41
- // 临时存储时间戳
42
- let tempTimestamp = 0;
38
+ import { transferMessageApi2Message } from '../http/transform/index.ts.js';
39
+ import { ActivityType, MessageRole, MessageStatus, MessageType } from '../message/index.ts.js';
40
+ import { CustomEventName, EventType } from './type.ts.js';
43
41
  /**
44
42
  * AGUI 协议
45
43
  * @param message - 消息模块
@@ -47,85 +45,124 @@ let tempTimestamp = 0;
47
45
  /**
48
46
  * 处理活动增量更新事件
49
47
  * 使用 JSON Patch 格式增量更新活动数据
50
- */ handleActivityDeltaEvent(_event) {
51
- // 可以在这里实现 JSON Patch 逻辑
52
- // console.log('ActivityDelta:', event);
53
- }
48
+ */ handleActivityDeltaEvent(_event) {}
54
49
  /**
55
50
  * 处理活动快照事件
56
51
  * 记录活动的完整状态
57
- */ handleActivitySnapshotEvent(_event) {
58
- // 可以在这里存储活动快照
59
- // console.log('ActivitySnapshot:', event);
60
- }
52
+ */ handleActivitySnapshotEvent(_event) {}
61
53
  /**
62
54
  * 处理自定义事件
63
55
  */ handleCustomEvent(event) {
64
- switch(event.value.type){
65
- case CustomEventType.ReferenceDocument:
56
+ switch(event.name){
57
+ case CustomEventName.ReferenceDocument:
66
58
  this.handleReferenceDocumentCustomEvent(event);
67
59
  break;
60
+ case CustomEventName.KnowledgeRagStart:
61
+ this.handleKnowledgeRagStartCustomEvent(event);
62
+ break;
63
+ case CustomEventName.KnowledgeRagTextContent:
64
+ this.handleKnowledgeRagTextContentCustomEvent(event);
65
+ break;
66
+ case CustomEventName.KnowledgeRagResult:
67
+ this.handleKnowledgeRagResultCustomEvent(event);
68
+ break;
69
+ case CustomEventName.KnowledgeRagEnd:
70
+ this.handleKnowledgeRagEndCustomEvent(event);
71
+ break;
68
72
  default:
69
73
  break;
70
74
  }
71
75
  }
72
76
  /**
77
+ * 自定义事件 处理意图识别结束
78
+ */ handleKnowledgeRagEndCustomEvent(_event) {
79
+ const message = this.messageModule.getCurrentLoadingMessage();
80
+ if (message && message.role === MessageRole.Activity && message.activityType === ActivityType.KnowledgeRag) {
81
+ message.status = MessageStatus.Complete;
82
+ }
83
+ }
84
+ /**
85
+ * 自定义事件 处理意图识别结果
86
+ */ handleKnowledgeRagResultCustomEvent(event) {
87
+ const message = this.messageModule.getCurrentLoadingMessage();
88
+ if (message && message.role === MessageRole.Activity && message.activityType === ActivityType.KnowledgeRag) {
89
+ message.content.referenceDocument = event.value;
90
+ }
91
+ }
92
+ /**
93
+ * 自定义事件 处理意图识别开始
94
+ */ handleKnowledgeRagStartCustomEvent(_event) {
95
+ this.messageModule.plusMessage({
96
+ role: MessageRole.Activity,
97
+ activityType: ActivityType.KnowledgeRag,
98
+ content: {
99
+ content: '',
100
+ referenceDocument: []
101
+ },
102
+ status: MessageStatus.Streaming
103
+ });
104
+ }
105
+ /**
106
+ * 自定义事件 处理意图识别文本
107
+ */ handleKnowledgeRagTextContentCustomEvent(event) {
108
+ const message = this.messageModule.getCurrentLoadingMessage();
109
+ if (message && message.role === MessageRole.Activity && message.activityType === ActivityType.KnowledgeRag) {
110
+ const value = event.value;
111
+ message.content.content = value.cover ? value.chunk.content : message.content.content + value.chunk.content;
112
+ }
113
+ }
114
+ /**
73
115
  * 处理消息快照事件
74
116
  * 用于同步多端消息状态
75
117
  */ handleMessagesSnapshotEvent(event) {
76
- this.messageModule.list.value = event.messages.map(transferMessageApi2Message);
118
+ if (event.messages && event.messages.length > 0) {
119
+ this.messageModule.list.value = event.messages.map(transferMessageApi2Message);
120
+ }
77
121
  }
78
122
  /**
79
123
  * 处理原始事件
80
124
  * 透传底层 AI 服务的原始事件
81
125
  */ handleRawEvent(_event) {
82
- // console.log('Raw:', event);
126
+ // console.log('Raw:', _event);
83
127
  }
84
128
  /**
85
129
  * 自定义事件 处理参考文档事件
86
130
  */ handleReferenceDocumentCustomEvent(event) {
87
- const message = this.messageModule.getCurrentLoadingMessage();
88
- if (message && message.role === MessageRole.Assistant) {
89
- const referenceDocumentMessageContent = {
90
- type: MessageContentType.ReferenceDocument,
91
- data: event.value.data,
92
- status: MessageContentStatus.Streaming
93
- };
94
- message.content.push(referenceDocumentMessageContent);
95
- }
131
+ // 可以在这里处理参考文档事件
132
+ this.messageModule.plusMessage({
133
+ role: MessageRole.Activity,
134
+ activityType: ActivityType.ReferenceDocument,
135
+ content: event.value,
136
+ status: MessageStatus.Complete
137
+ });
96
138
  }
97
139
  /**
98
140
  * 处理运行错误事件
99
141
  */ handleRunErrorEvent(event) {
142
+ // 先把最后一个loading消息标记为complete
100
143
  const message = this.messageModule.getCurrentLoadingMessage();
101
144
  if (message) {
102
- message.status = MessageStatus.Error;
103
- message.content = [
104
- {
105
- type: MessageContentType.Text,
106
- data: event.message,
107
- status: MessageContentStatus.Error
108
- }
109
- ];
145
+ message.status = MessageStatus.Complete;
110
146
  }
147
+ // 然后创建一个错误消息
148
+ this.messageModule.plusMessage({
149
+ role: MessageRole.Assistant,
150
+ content: event.message,
151
+ status: MessageStatus.Error
152
+ });
111
153
  }
112
154
  /**
113
155
  * 处理运行完成事件
114
- */ handleRunFinishedEvent(event) {
115
- const message = this.messageModule.getMessageById(event.runId);
156
+ */ handleRunFinishedEvent(_event) {
157
+ const message = this.messageModule.getCurrentLoadingMessage();
116
158
  if (message) {
117
159
  message.status = MessageStatus.Complete;
118
160
  }
119
161
  }
120
162
  /**
121
163
  * 处理运行开始事件
122
- */ handleRunStartedEvent(event) {
123
- this.messageModule.plusMessage({
124
- id: event.runId,
125
- role: MessageRole.Assistant,
126
- content: [],
127
- status: MessageStatus.Streaming
128
- });
164
+ */ handleRunStartedEvent(_event) {
165
+ // 运行开始,可以在这里初始化相关状态
129
166
  }
130
167
  /**
131
168
  * 处理状态增量更新事件
@@ -141,190 +178,170 @@ let tempTimestamp = 0;
141
178
  /**
142
179
  * 处理步骤完成事件
143
180
  */ handleStepFinishedEvent(_event) {
144
- // console.log('StepFinished:', event);
181
+ // console.log('StepFinished:', _event);
145
182
  }
146
183
  /**
147
184
  * 处理步骤开始事件
148
185
  */ handleStepStartedEvent(_event) {
149
- // console.log('StepStarted:', event);
186
+ // console.log('StepStarted:', _event);
150
187
  }
151
188
  /**
152
- * 处理文本消息块事件(流式输出)
189
+ * 处理文本消息块事件
153
190
  */ handleTextMessageChunkEvent(event) {
154
191
  const message = this.messageModule.getCurrentLoadingMessage();
155
192
  if (message) {
156
- const messageContent = message.content.find((item)=>item.type === MessageContentType.Text && item.id === event.messageId);
157
- if (messageContent) {
158
- // 增量
159
- messageContent.data += event.delta;
160
- } else {
161
- // 新增
162
- message.content.push({
163
- id: event.messageId,
164
- status: MessageContentStatus.Complete,
165
- type: MessageContentType.Text,
166
- data: event.delta
167
- });
168
- }
193
+ message.content += event.delta || '';
194
+ } else {
195
+ this.messageModule.plusMessage({
196
+ role: event.role,
197
+ content: event.delta || '',
198
+ status: MessageStatus.Complete,
199
+ messageId: event.messageId
200
+ });
169
201
  }
170
202
  }
171
203
  /**
172
- * 处理文本消息内容事件
204
+ * 处理文本消息内容事件(流式输出)
173
205
  */ handleTextMessageContentEvent(event) {
174
- const message = this.messageModule.getCurrentLoadingMessage();
206
+ const message = this.messageModule.getMessageByMessageId(event.messageId);
175
207
  if (message) {
176
- const messageContent = message.content.find((item)=>item.type === MessageContentType.Text && item.id === event.messageId);
177
- if (messageContent) {
178
- messageContent.data += event.delta;
179
- }
208
+ message.content += event.delta;
180
209
  }
181
210
  }
182
211
  /**
183
212
  * 处理文本消息结束事件
184
213
  */ handleTextMessageEndEvent(event) {
185
- const message = this.messageModule.getCurrentLoadingMessage();
214
+ const message = this.messageModule.getMessageByMessageId(event.messageId);
186
215
  if (message) {
187
- const messageContent = message.content.find((item)=>item.type === MessageContentType.Text && item.id === event.messageId);
188
- if (messageContent) {
189
- messageContent.status = MessageContentStatus.Complete;
190
- }
216
+ message.status = MessageStatus.Complete;
191
217
  }
192
218
  }
193
219
  /**
194
220
  * 处理文本消息开始事件
195
221
  */ handleTextMessageStartEvent(event) {
196
- const message = this.messageModule.getCurrentLoadingMessage();
197
- if (message) {
198
- message.content.push({
199
- id: event.messageId,
200
- status: MessageContentStatus.Streaming,
201
- type: MessageContentType.Text,
202
- data: ''
203
- });
204
- }
222
+ this.messageModule.plusMessage({
223
+ role: event.role,
224
+ content: '',
225
+ status: MessageStatus.Streaming,
226
+ messageId: event.messageId
227
+ });
205
228
  }
206
229
  /**
207
230
  * 处理思考结束事件
208
231
  */ handleThinkingEndEvent(event) {
209
232
  const message = this.messageModule.getCurrentLoadingMessage();
210
- if (message && message.role === MessageRole.Assistant) {
211
- const lastThinkingMessageContent = message.content.findLast((item)=>item.type === MessageContentType.Thinking);
212
- if (lastThinkingMessageContent) {
213
- lastThinkingMessageContent.status = MessageContentStatus.Complete;
214
- lastThinkingMessageContent.data.duration = event.timestamp - tempTimestamp;
215
- }
233
+ if (message && message.role === MessageRole.Reasoning) {
234
+ message.duration = event.duration;
235
+ message.status = MessageStatus.Complete;
216
236
  }
217
237
  }
218
238
  /**
219
239
  * 处理思考开始事件
220
- */ handleThinkingStartEvent(event) {
221
- const message = this.messageModule.getCurrentLoadingMessage();
222
- if (message && message.role === MessageRole.Assistant) {
223
- // 临时存储时间戳
224
- tempTimestamp = event.timestamp;
225
- // 创建思考消息内容
226
- const thinkingMessageContent = {
227
- status: MessageContentStatus.Streaming,
228
- type: MessageContentType.Thinking,
229
- data: {
230
- text: '',
231
- title: event.title
232
- }
233
- };
234
- message.content.push(thinkingMessageContent);
235
- }
240
+ */ handleThinkingStartEvent(_event) {
241
+ this.messageModule.plusMessage({
242
+ role: MessageRole.Reasoning,
243
+ content: [],
244
+ status: MessageStatus.Streaming
245
+ });
236
246
  }
237
247
  /**
238
248
  * 处理思考文本消息内容事件
239
249
  */ handleThinkingTextMessageContentEvent(event) {
240
250
  const message = this.messageModule.getCurrentLoadingMessage();
241
- if (message && message.role === MessageRole.Assistant) {
242
- const lastThinkingMessageContent = message.content.findLast((item)=>item.type === MessageContentType.Thinking);
243
- if (lastThinkingMessageContent) {
244
- lastThinkingMessageContent.data.text += event.delta;
245
- }
251
+ if (message && message.role === MessageRole.Reasoning) {
252
+ message.content[message.content.length - 1] += event.delta;
246
253
  }
247
254
  }
248
255
  /**
249
256
  * 处理思考文本消息结束事件
250
257
  */ handleThinkingTextMessageEndEvent(_event) {
251
- // console.log(event);
258
+ // console.log(_event);
252
259
  }
253
260
  /**
254
261
  * 处理思考文本消息开始事件
255
262
  */ handleThinkingTextMessageStartEvent(_event) {
256
- // console.log(event);
263
+ const message = this.messageModule.getCurrentLoadingMessage();
264
+ if (message && message.role === MessageRole.Reasoning) {
265
+ message.content.push('');
266
+ }
257
267
  }
258
268
  /**
259
269
  * 处理工具调用参数事件
260
270
  */ handleToolCallArgsEvent(event) {
261
- const message = this.messageModule.getCurrentLoadingMessage();
262
- if (message && message.role === MessageRole.Assistant) {
263
- const toolCallMessageContent = message.content.find((item)=>item.type === MessageContentType.ToolCall && item.data.toolCallId === event.toolCallId);
264
- if ((toolCallMessageContent === null || toolCallMessageContent === void 0 ? void 0 : toolCallMessageContent.type) === MessageContentType.ToolCall) {
265
- toolCallMessageContent.data.args += event.delta;
271
+ this.messageModule.list.value.forEach((item)=>{
272
+ if (item.role === MessageRole.Assistant && item.toolCalls) {
273
+ item.toolCalls.forEach((toolCall)=>{
274
+ if (toolCall.id === event.toolCallId) {
275
+ toolCall['function'].arguments += event.delta;
276
+ }
277
+ });
266
278
  }
267
- }
279
+ });
268
280
  }
269
281
  /**
270
282
  * 处理工具调用块事件
271
- */ handleToolCallChunkEvent(event) {
272
- const message = this.messageModule.getCurrentLoadingMessage();
273
- if (message && message.role === MessageRole.Assistant) {
274
- const toolCallMessageContent = message.content.find((item)=>item.type === MessageContentType.ToolCall && item.data.toolCallId === event.toolCallId);
275
- if ((toolCallMessageContent === null || toolCallMessageContent === void 0 ? void 0 : toolCallMessageContent.type) === MessageContentType.ToolCall) {
276
- toolCallMessageContent.data.chunk += event.delta;
277
- }
278
- }
279
- }
283
+ */ handleToolCallChunkEvent(_event) {}
280
284
  /**
281
285
  * 处理工具调用结束事件
282
286
  */ handleToolCallEndEvent(event) {
283
- const message = this.messageModule.getCurrentLoadingMessage();
284
- if (message && message.role === MessageRole.Assistant) {
285
- const toolCallMessageContent = message.content.find((item)=>item.type === MessageContentType.ToolCall && item.data.toolCallId === event.toolCallId);
286
- if ((toolCallMessageContent === null || toolCallMessageContent === void 0 ? void 0 : toolCallMessageContent.type) === MessageContentType.ToolCall) {
287
- toolCallMessageContent.status = MessageContentStatus.Complete;
287
+ this.messageModule.list.value.forEach((item)=>{
288
+ if (item.role === MessageRole.Assistant && item.toolCalls) {
289
+ if (item.toolCalls.some((toolCall)=>toolCall.id === event.toolCallId)) {
290
+ item.status = MessageStatus.Complete;
291
+ }
288
292
  }
289
- }
293
+ });
290
294
  }
291
295
  /**
292
296
  * 处理工具调用结果事件
293
297
  */ handleToolCallResultEvent(event) {
294
- const message = this.messageModule.getCurrentLoadingMessage();
295
- if (message && message.role === MessageRole.Assistant) {
296
- const toolCallMessageContent = message.content.find((item)=>item.type === MessageContentType.ToolCall && item.data.toolCallId === event.toolCallId);
297
- if ((toolCallMessageContent === null || toolCallMessageContent === void 0 ? void 0 : toolCallMessageContent.type) === MessageContentType.ToolCall) {
298
- toolCallMessageContent.data.result += event.content;
299
- }
300
- }
298
+ this.messageModule.plusMessage({
299
+ role: MessageRole.Tool,
300
+ content: event.content,
301
+ duration: event.duration,
302
+ status: MessageStatus.Complete,
303
+ toolCallId: event.toolCallId,
304
+ messageId: event.messageId
305
+ });
301
306
  }
302
307
  /**
303
308
  * 处理工具调用开始事件
304
309
  */ handleToolCallStartEvent(event) {
305
- const message = this.messageModule.getCurrentLoadingMessage();
306
- if (message && message.role === MessageRole.Assistant) {
307
- const toolCallMessageContent = {
308
- status: MessageContentStatus.Streaming,
309
- type: MessageContentType.ToolCall,
310
- data: {
311
- toolCallId: event.toolCallId,
312
- toolCallName: event.toolCallName,
313
- parentMessageId: event.parentMessageId
310
+ this.messageModule.plusMessage({
311
+ role: MessageRole.Assistant,
312
+ content: '',
313
+ status: MessageStatus.Streaming,
314
+ toolCalls: [
315
+ {
316
+ id: event.toolCallId,
317
+ type: MessageType.Function,
318
+ function: {
319
+ mcpName: event.mcpName,
320
+ name: event.toolCallName,
321
+ arguments: '',
322
+ description: event.description
323
+ }
314
324
  }
315
- };
316
- message.content.push(toolCallMessageContent);
317
- }
325
+ ]
326
+ });
318
327
  }
319
328
  injectMessageModule(message) {
320
329
  this.messageModule = message;
321
330
  }
322
331
  onDone() {
323
- var _this_onDoneCallback, _this;
332
+ var // 回调给上层
333
+ _this_onDoneCallback, _this;
324
334
  (_this_onDoneCallback = (_this = this).onDoneCallback) === null || _this_onDoneCallback === void 0 ? void 0 : _this_onDoneCallback.call(_this);
325
335
  }
326
336
  onError(error) {
327
- var _this_onErrorCallback, _this;
337
+ var // 回调给上层
338
+ _this_onErrorCallback, _this;
339
+ // 创建一个错误消息
340
+ this.messageModule.plusMessage({
341
+ role: MessageRole.Assistant,
342
+ content: error.message,
343
+ status: MessageStatus.Error
344
+ });
328
345
  (_this_onErrorCallback = (_this = this).onErrorCallback) === null || _this_onErrorCallback === void 0 ? void 0 : _this_onErrorCallback.call(_this, error);
329
346
  }
330
347
  onMessage(message) {