@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.
- package/README.md +962 -63
- package/dist/agent/type.d.ts +20 -2
- package/dist/agent/use-agent.d.ts +904 -402
- package/dist/agent/use-agent.ts.js +218 -25
- package/dist/event/ag-ui.d.ts +23 -7
- package/dist/event/ag-ui.ts.js +167 -150
- package/dist/event/type.d.ts +30 -107
- package/dist/event/type.ts.js +8 -11
- package/dist/http/fetch/fetch.d.ts +40 -36
- package/dist/http/fetch/fetch.ts.js +58 -34
- package/dist/http/fetch/index.d.ts +1 -0
- package/dist/http/fetch/index.ts.js +17 -1
- package/dist/http/index.d.ts +24 -16
- package/dist/http/index.ts.js +60 -3
- package/dist/http/module/agent.d.ts +2 -2
- package/dist/http/module/index.d.ts +22 -16
- package/dist/http/module/index.ts.js +2 -1
- package/dist/http/module/message.d.ts +22 -7
- package/dist/http/module/message.ts.js +49 -7
- package/dist/http/module/session.d.ts +14 -11
- package/dist/http/module/session.ts.js +66 -4
- package/dist/http/transform/agent.ts.js +6 -7
- package/dist/http/transform/message.d.ts +6 -6
- package/dist/http/transform/message.ts.js +540 -118
- package/dist/http/transform/session.ts.js +9 -1
- package/dist/index.d.ts +3151 -2641
- package/dist/index.ts.js +26 -5
- package/dist/mediator/index.d.ts +2 -0
- package/dist/mediator/index.ts.js +26 -0
- package/dist/mediator/type.d.ts +50 -0
- package/dist/mediator/type.ts.js +28 -0
- package/dist/mediator/use-mediator.d.ts +7 -0
- package/dist/mediator/use-mediator.ts.js +47 -0
- package/dist/message/type.d.ts +235 -142
- package/dist/message/type.ts.js +15 -15
- package/dist/message/use-message.d.ts +748 -758
- package/dist/message/use-message.ts.js +215 -27
- package/dist/session/type.d.ts +10 -0
- package/dist/session/use-session.d.ts +1741 -1733
- package/dist/session/use-session.ts.js +198 -33
- package/dist/type.d.ts +4 -4
- package/package.json +2 -1
package/dist/event/ag-ui.ts.js
CHANGED
|
@@ -35,11 +35,9 @@
|
|
|
35
35
|
}
|
|
36
36
|
return obj;
|
|
37
37
|
}
|
|
38
|
-
import { transferMessageApi2Message } from '../http/transform/
|
|
39
|
-
import {
|
|
40
|
-
import {
|
|
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.
|
|
65
|
-
case
|
|
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
|
-
|
|
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:',
|
|
126
|
+
// console.log('Raw:', _event);
|
|
83
127
|
}
|
|
84
128
|
/**
|
|
85
129
|
* 自定义事件 处理参考文档事件
|
|
86
130
|
*/ handleReferenceDocumentCustomEvent(event) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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.
|
|
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(
|
|
115
|
-
const message = this.messageModule.
|
|
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(
|
|
123
|
-
|
|
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:',
|
|
181
|
+
// console.log('StepFinished:', _event);
|
|
145
182
|
}
|
|
146
183
|
/**
|
|
147
184
|
* 处理步骤开始事件
|
|
148
185
|
*/ handleStepStartedEvent(_event) {
|
|
149
|
-
// console.log('StepStarted:',
|
|
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
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
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.
|
|
206
|
+
const message = this.messageModule.getMessageByMessageId(event.messageId);
|
|
175
207
|
if (message) {
|
|
176
|
-
|
|
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.
|
|
214
|
+
const message = this.messageModule.getMessageByMessageId(event.messageId);
|
|
186
215
|
if (message) {
|
|
187
|
-
|
|
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
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
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.
|
|
211
|
-
|
|
212
|
-
|
|
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(
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
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.
|
|
242
|
-
|
|
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(
|
|
258
|
+
// console.log(_event);
|
|
252
259
|
}
|
|
253
260
|
/**
|
|
254
261
|
* 处理思考文本消息开始事件
|
|
255
262
|
*/ handleThinkingTextMessageStartEvent(_event) {
|
|
256
|
-
|
|
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
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
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(
|
|
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
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
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
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
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
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
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
|
-
|
|
317
|
-
}
|
|
325
|
+
]
|
|
326
|
+
});
|
|
318
327
|
}
|
|
319
328
|
injectMessageModule(message) {
|
|
320
329
|
this.messageModule = message;
|
|
321
330
|
}
|
|
322
331
|
onDone() {
|
|
323
|
-
var
|
|
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
|
|
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) {
|