@scoutqa/ag-ui-client 0.0.42-fork.1
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 +78 -0
- package/dist/index.d.mts +446 -0
- package/dist/index.d.ts +446 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +8 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +46 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
import { Message, State, RunAgentInput, BaseEvent, RunStartedEvent, RunFinishedEvent, RunErrorEvent, StepStartedEvent, StepFinishedEvent, TextMessageStartEvent, TextMessageContentEvent, TextMessageEndEvent, ToolCallStartEvent, ToolCallArgsEvent, ToolCallEndEvent, ToolCallResultEvent, StateSnapshotEvent, StateDeltaEvent, MessagesSnapshotEvent, ActivitySnapshotEvent, ActivityMessage, ActivityDeltaEvent, RawEvent, CustomEvent, ToolCall } from '@ag-ui/core';
|
|
2
|
+
export * from '@ag-ui/core';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
|
|
6
|
+
interface AgentConfig {
|
|
7
|
+
agentId?: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
threadId?: string;
|
|
10
|
+
initialMessages?: Message[];
|
|
11
|
+
initialState?: State;
|
|
12
|
+
debug?: boolean;
|
|
13
|
+
}
|
|
14
|
+
interface HttpAgentConfig extends AgentConfig {
|
|
15
|
+
url: string;
|
|
16
|
+
headers?: Record<string, string>;
|
|
17
|
+
}
|
|
18
|
+
type RunAgentParameters = Partial<Pick<RunAgentInput, "runId" | "tools" | "context" | "forwardedProps">>;
|
|
19
|
+
|
|
20
|
+
declare const LegacyRuntimeProtocolEvent: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
|
|
21
|
+
type: z.ZodLiteral<"TextMessageStart">;
|
|
22
|
+
messageId: z.ZodString;
|
|
23
|
+
parentMessageId: z.ZodOptional<z.ZodString>;
|
|
24
|
+
role: z.ZodOptional<z.ZodString>;
|
|
25
|
+
}, "strip", z.ZodTypeAny, {
|
|
26
|
+
type: "TextMessageStart";
|
|
27
|
+
messageId: string;
|
|
28
|
+
role?: string | undefined;
|
|
29
|
+
parentMessageId?: string | undefined;
|
|
30
|
+
}, {
|
|
31
|
+
type: "TextMessageStart";
|
|
32
|
+
messageId: string;
|
|
33
|
+
role?: string | undefined;
|
|
34
|
+
parentMessageId?: string | undefined;
|
|
35
|
+
}>, z.ZodObject<{
|
|
36
|
+
type: z.ZodLiteral<"TextMessageContent">;
|
|
37
|
+
messageId: z.ZodString;
|
|
38
|
+
content: z.ZodString;
|
|
39
|
+
}, "strip", z.ZodTypeAny, {
|
|
40
|
+
type: "TextMessageContent";
|
|
41
|
+
messageId: string;
|
|
42
|
+
content: string;
|
|
43
|
+
}, {
|
|
44
|
+
type: "TextMessageContent";
|
|
45
|
+
messageId: string;
|
|
46
|
+
content: string;
|
|
47
|
+
}>, z.ZodObject<{
|
|
48
|
+
type: z.ZodLiteral<"TextMessageEnd">;
|
|
49
|
+
messageId: z.ZodString;
|
|
50
|
+
}, "strip", z.ZodTypeAny, {
|
|
51
|
+
type: "TextMessageEnd";
|
|
52
|
+
messageId: string;
|
|
53
|
+
}, {
|
|
54
|
+
type: "TextMessageEnd";
|
|
55
|
+
messageId: string;
|
|
56
|
+
}>, z.ZodObject<{
|
|
57
|
+
type: z.ZodLiteral<"ActionExecutionStart">;
|
|
58
|
+
actionExecutionId: z.ZodString;
|
|
59
|
+
actionName: z.ZodString;
|
|
60
|
+
parentMessageId: z.ZodOptional<z.ZodString>;
|
|
61
|
+
}, "strip", z.ZodTypeAny, {
|
|
62
|
+
type: "ActionExecutionStart";
|
|
63
|
+
actionExecutionId: string;
|
|
64
|
+
actionName: string;
|
|
65
|
+
parentMessageId?: string | undefined;
|
|
66
|
+
}, {
|
|
67
|
+
type: "ActionExecutionStart";
|
|
68
|
+
actionExecutionId: string;
|
|
69
|
+
actionName: string;
|
|
70
|
+
parentMessageId?: string | undefined;
|
|
71
|
+
}>, z.ZodObject<{
|
|
72
|
+
type: z.ZodLiteral<"ActionExecutionArgs">;
|
|
73
|
+
actionExecutionId: z.ZodString;
|
|
74
|
+
args: z.ZodString;
|
|
75
|
+
}, "strip", z.ZodTypeAny, {
|
|
76
|
+
type: "ActionExecutionArgs";
|
|
77
|
+
actionExecutionId: string;
|
|
78
|
+
args: string;
|
|
79
|
+
}, {
|
|
80
|
+
type: "ActionExecutionArgs";
|
|
81
|
+
actionExecutionId: string;
|
|
82
|
+
args: string;
|
|
83
|
+
}>, z.ZodObject<{
|
|
84
|
+
type: z.ZodLiteral<"ActionExecutionEnd">;
|
|
85
|
+
actionExecutionId: z.ZodString;
|
|
86
|
+
}, "strip", z.ZodTypeAny, {
|
|
87
|
+
type: "ActionExecutionEnd";
|
|
88
|
+
actionExecutionId: string;
|
|
89
|
+
}, {
|
|
90
|
+
type: "ActionExecutionEnd";
|
|
91
|
+
actionExecutionId: string;
|
|
92
|
+
}>, z.ZodObject<{
|
|
93
|
+
type: z.ZodLiteral<"ActionExecutionResult">;
|
|
94
|
+
actionName: z.ZodString;
|
|
95
|
+
actionExecutionId: z.ZodString;
|
|
96
|
+
result: z.ZodString;
|
|
97
|
+
}, "strip", z.ZodTypeAny, {
|
|
98
|
+
type: "ActionExecutionResult";
|
|
99
|
+
actionExecutionId: string;
|
|
100
|
+
actionName: string;
|
|
101
|
+
result: string;
|
|
102
|
+
}, {
|
|
103
|
+
type: "ActionExecutionResult";
|
|
104
|
+
actionExecutionId: string;
|
|
105
|
+
actionName: string;
|
|
106
|
+
result: string;
|
|
107
|
+
}>, z.ZodObject<{
|
|
108
|
+
type: z.ZodLiteral<"AgentStateMessage">;
|
|
109
|
+
threadId: z.ZodString;
|
|
110
|
+
agentName: z.ZodString;
|
|
111
|
+
nodeName: z.ZodString;
|
|
112
|
+
runId: z.ZodString;
|
|
113
|
+
active: z.ZodBoolean;
|
|
114
|
+
role: z.ZodString;
|
|
115
|
+
state: z.ZodString;
|
|
116
|
+
running: z.ZodBoolean;
|
|
117
|
+
}, "strip", z.ZodTypeAny, {
|
|
118
|
+
role: string;
|
|
119
|
+
runId: string;
|
|
120
|
+
threadId: string;
|
|
121
|
+
state: string;
|
|
122
|
+
type: "AgentStateMessage";
|
|
123
|
+
agentName: string;
|
|
124
|
+
nodeName: string;
|
|
125
|
+
active: boolean;
|
|
126
|
+
running: boolean;
|
|
127
|
+
}, {
|
|
128
|
+
role: string;
|
|
129
|
+
runId: string;
|
|
130
|
+
threadId: string;
|
|
131
|
+
state: string;
|
|
132
|
+
type: "AgentStateMessage";
|
|
133
|
+
agentName: string;
|
|
134
|
+
nodeName: string;
|
|
135
|
+
active: boolean;
|
|
136
|
+
running: boolean;
|
|
137
|
+
}>, z.ZodObject<{
|
|
138
|
+
type: z.ZodLiteral<"MetaEvent">;
|
|
139
|
+
name: z.ZodEnum<["LangGraphInterruptEvent", "PredictState", "Exit"]>;
|
|
140
|
+
value: z.ZodAny;
|
|
141
|
+
}, "strip", z.ZodTypeAny, {
|
|
142
|
+
type: "MetaEvent";
|
|
143
|
+
name: "LangGraphInterruptEvent" | "PredictState" | "Exit";
|
|
144
|
+
value?: any;
|
|
145
|
+
}, {
|
|
146
|
+
type: "MetaEvent";
|
|
147
|
+
name: "LangGraphInterruptEvent" | "PredictState" | "Exit";
|
|
148
|
+
value?: any;
|
|
149
|
+
}>, z.ZodObject<{
|
|
150
|
+
type: z.ZodLiteral<"RunError">;
|
|
151
|
+
message: z.ZodString;
|
|
152
|
+
code: z.ZodOptional<z.ZodString>;
|
|
153
|
+
}, "strip", z.ZodTypeAny, {
|
|
154
|
+
type: "RunError";
|
|
155
|
+
message: string;
|
|
156
|
+
code?: string | undefined;
|
|
157
|
+
}, {
|
|
158
|
+
type: "RunError";
|
|
159
|
+
message: string;
|
|
160
|
+
code?: string | undefined;
|
|
161
|
+
}>]>;
|
|
162
|
+
type LegacyRuntimeProtocolEvent = z.infer<typeof LegacyRuntimeProtocolEvent>;
|
|
163
|
+
|
|
164
|
+
interface RunHttpAgentConfig extends RunAgentParameters {
|
|
165
|
+
abortController?: AbortController;
|
|
166
|
+
}
|
|
167
|
+
declare class HttpAgent extends AbstractAgent {
|
|
168
|
+
url: string;
|
|
169
|
+
headers: Record<string, string>;
|
|
170
|
+
abortController: AbortController;
|
|
171
|
+
/**
|
|
172
|
+
* Returns the fetch config for the http request.
|
|
173
|
+
* Override this to customize the request.
|
|
174
|
+
*
|
|
175
|
+
* @returns The fetch config for the http request.
|
|
176
|
+
*/
|
|
177
|
+
protected requestInit(input: RunAgentInput): RequestInit;
|
|
178
|
+
runAgent(parameters?: RunHttpAgentConfig, subscriber?: AgentSubscriber): Promise<RunAgentResult>;
|
|
179
|
+
abortRun(): void;
|
|
180
|
+
constructor(config: HttpAgentConfig);
|
|
181
|
+
run(input: RunAgentInput): Observable<BaseEvent>;
|
|
182
|
+
clone(): HttpAgent;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
type MiddlewareFunction = (input: RunAgentInput, next: AbstractAgent) => Observable<BaseEvent>;
|
|
186
|
+
interface EventWithState {
|
|
187
|
+
event: BaseEvent;
|
|
188
|
+
messages: Message[];
|
|
189
|
+
state: any;
|
|
190
|
+
}
|
|
191
|
+
declare abstract class Middleware {
|
|
192
|
+
abstract run(input: RunAgentInput, next: AbstractAgent): Observable<BaseEvent>;
|
|
193
|
+
/**
|
|
194
|
+
* Runs the next agent in the chain with automatic chunk transformation.
|
|
195
|
+
*/
|
|
196
|
+
protected runNext(input: RunAgentInput, next: AbstractAgent): Observable<BaseEvent>;
|
|
197
|
+
/**
|
|
198
|
+
* Runs the next agent and tracks state, providing current messages and state with each event.
|
|
199
|
+
* The messages and state represent the state AFTER the event has been applied.
|
|
200
|
+
*/
|
|
201
|
+
protected runNextWithState(input: RunAgentInput, next: AbstractAgent): Observable<EventWithState>;
|
|
202
|
+
}
|
|
203
|
+
declare class FunctionMiddleware extends Middleware {
|
|
204
|
+
private fn;
|
|
205
|
+
constructor(fn: MiddlewareFunction);
|
|
206
|
+
run(input: RunAgentInput, next: AbstractAgent): Observable<BaseEvent>;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
type FilterToolCallsConfig = {
|
|
210
|
+
allowedToolCalls: string[];
|
|
211
|
+
disallowedToolCalls?: never;
|
|
212
|
+
} | {
|
|
213
|
+
disallowedToolCalls: string[];
|
|
214
|
+
allowedToolCalls?: never;
|
|
215
|
+
};
|
|
216
|
+
declare class FilterToolCallsMiddleware extends Middleware {
|
|
217
|
+
private blockedToolCallIds;
|
|
218
|
+
private readonly allowedTools?;
|
|
219
|
+
private readonly disallowedTools?;
|
|
220
|
+
constructor(config: FilterToolCallsConfig);
|
|
221
|
+
run(input: RunAgentInput, next: AbstractAgent): Observable<BaseEvent>;
|
|
222
|
+
private shouldFilterTool;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Middleware placeholder that maintains compatibility with AG-UI 0.0.39 flows.
|
|
227
|
+
* Currently it simply forwards all events to the next middleware/agent.
|
|
228
|
+
*/
|
|
229
|
+
declare class BackwardCompatibility_0_0_39 extends Middleware {
|
|
230
|
+
run(input: RunAgentInput, next: AbstractAgent): Observable<BaseEvent>;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
interface RunAgentResult {
|
|
234
|
+
result: any;
|
|
235
|
+
newMessages: Message[];
|
|
236
|
+
}
|
|
237
|
+
declare abstract class AbstractAgent {
|
|
238
|
+
agentId?: string;
|
|
239
|
+
description: string;
|
|
240
|
+
threadId: string;
|
|
241
|
+
messages: Message[];
|
|
242
|
+
state: State;
|
|
243
|
+
debug: boolean;
|
|
244
|
+
subscribers: AgentSubscriber[];
|
|
245
|
+
isRunning: boolean;
|
|
246
|
+
private middlewares;
|
|
247
|
+
private activeRunDetach$?;
|
|
248
|
+
private activeRunCompletionPromise?;
|
|
249
|
+
get maxVersion(): string;
|
|
250
|
+
constructor({ agentId, description, threadId, initialMessages, initialState, debug, }?: AgentConfig);
|
|
251
|
+
subscribe(subscriber: AgentSubscriber): {
|
|
252
|
+
unsubscribe: () => void;
|
|
253
|
+
};
|
|
254
|
+
abstract run(input: RunAgentInput): Observable<BaseEvent>;
|
|
255
|
+
use(...middlewares: (Middleware | MiddlewareFunction)[]): this;
|
|
256
|
+
runAgent(parameters?: RunAgentParameters, subscriber?: AgentSubscriber): Promise<RunAgentResult>;
|
|
257
|
+
protected connect(input: RunAgentInput): Observable<BaseEvent>;
|
|
258
|
+
connectAgent(parameters?: RunAgentParameters, subscriber?: AgentSubscriber): Promise<RunAgentResult>;
|
|
259
|
+
abortRun(): void;
|
|
260
|
+
detachActiveRun(): Promise<void>;
|
|
261
|
+
protected apply(input: RunAgentInput, events$: Observable<BaseEvent>, subscribers: AgentSubscriber[]): Observable<AgentStateMutation>;
|
|
262
|
+
protected processApplyEvents(input: RunAgentInput, events$: Observable<AgentStateMutation>, subscribers: AgentSubscriber[]): Observable<AgentStateMutation>;
|
|
263
|
+
protected prepareRunAgentInput(parameters?: RunAgentParameters): RunAgentInput;
|
|
264
|
+
protected onInitialize(input: RunAgentInput, subscribers: AgentSubscriber[]): Promise<void>;
|
|
265
|
+
protected onError(input: RunAgentInput, error: Error, subscribers: AgentSubscriber[]): Observable<AgentStateMutation>;
|
|
266
|
+
protected onFinalize(input: RunAgentInput, subscribers: AgentSubscriber[]): Promise<void>;
|
|
267
|
+
clone(): any;
|
|
268
|
+
addMessage(message: Message): void;
|
|
269
|
+
addMessages(messages: Message[]): void;
|
|
270
|
+
setMessages(messages: Message[]): void;
|
|
271
|
+
setState(state: State): void;
|
|
272
|
+
legacy_to_be_removed_runAgentBridged(config?: RunAgentParameters): Observable<LegacyRuntimeProtocolEvent>;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
interface AgentStateMutation {
|
|
276
|
+
messages?: Message[];
|
|
277
|
+
state?: State;
|
|
278
|
+
stopPropagation?: boolean;
|
|
279
|
+
}
|
|
280
|
+
interface AgentSubscriberParams {
|
|
281
|
+
messages: Message[];
|
|
282
|
+
state: State;
|
|
283
|
+
agent: AbstractAgent;
|
|
284
|
+
input: RunAgentInput;
|
|
285
|
+
}
|
|
286
|
+
type MaybePromise<T> = T | Promise<T>;
|
|
287
|
+
interface AgentSubscriber {
|
|
288
|
+
onRunInitialized?(params: AgentSubscriberParams): MaybePromise<Omit<AgentStateMutation, "stopPropagation"> | void>;
|
|
289
|
+
onRunFailed?(params: {
|
|
290
|
+
error: Error;
|
|
291
|
+
} & AgentSubscriberParams): MaybePromise<Omit<AgentStateMutation, "stopPropagation"> | void>;
|
|
292
|
+
onRunFinalized?(params: AgentSubscriberParams): MaybePromise<Omit<AgentStateMutation, "stopPropagation"> | void>;
|
|
293
|
+
onEvent?(params: {
|
|
294
|
+
event: BaseEvent;
|
|
295
|
+
} & AgentSubscriberParams): MaybePromise<AgentStateMutation | void>;
|
|
296
|
+
onRunStartedEvent?(params: {
|
|
297
|
+
event: RunStartedEvent;
|
|
298
|
+
} & AgentSubscriberParams): MaybePromise<AgentStateMutation | void>;
|
|
299
|
+
onRunFinishedEvent?(params: {
|
|
300
|
+
event: RunFinishedEvent;
|
|
301
|
+
result?: any;
|
|
302
|
+
} & AgentSubscriberParams): MaybePromise<AgentStateMutation | void>;
|
|
303
|
+
onRunErrorEvent?(params: {
|
|
304
|
+
event: RunErrorEvent;
|
|
305
|
+
} & AgentSubscriberParams): MaybePromise<AgentStateMutation | void>;
|
|
306
|
+
onStepStartedEvent?(params: {
|
|
307
|
+
event: StepStartedEvent;
|
|
308
|
+
} & AgentSubscriberParams): MaybePromise<AgentStateMutation | void>;
|
|
309
|
+
onStepFinishedEvent?(params: {
|
|
310
|
+
event: StepFinishedEvent;
|
|
311
|
+
} & AgentSubscriberParams): MaybePromise<AgentStateMutation | void>;
|
|
312
|
+
onTextMessageStartEvent?(params: {
|
|
313
|
+
event: TextMessageStartEvent;
|
|
314
|
+
} & AgentSubscriberParams): MaybePromise<AgentStateMutation | void>;
|
|
315
|
+
onTextMessageContentEvent?(params: {
|
|
316
|
+
event: TextMessageContentEvent;
|
|
317
|
+
textMessageBuffer: string;
|
|
318
|
+
} & AgentSubscriberParams): MaybePromise<AgentStateMutation | void>;
|
|
319
|
+
onTextMessageEndEvent?(params: {
|
|
320
|
+
event: TextMessageEndEvent;
|
|
321
|
+
textMessageBuffer: string;
|
|
322
|
+
} & AgentSubscriberParams): MaybePromise<AgentStateMutation | void>;
|
|
323
|
+
onToolCallStartEvent?(params: {
|
|
324
|
+
event: ToolCallStartEvent;
|
|
325
|
+
} & AgentSubscriberParams): MaybePromise<AgentStateMutation | void>;
|
|
326
|
+
onToolCallArgsEvent?(params: {
|
|
327
|
+
event: ToolCallArgsEvent;
|
|
328
|
+
toolCallBuffer: string;
|
|
329
|
+
toolCallName: string;
|
|
330
|
+
partialToolCallArgs: Record<string, any>;
|
|
331
|
+
} & AgentSubscriberParams): MaybePromise<AgentStateMutation | void>;
|
|
332
|
+
onToolCallEndEvent?(params: {
|
|
333
|
+
event: ToolCallEndEvent;
|
|
334
|
+
toolCallName: string;
|
|
335
|
+
toolCallArgs: Record<string, any>;
|
|
336
|
+
} & AgentSubscriberParams): MaybePromise<AgentStateMutation | void>;
|
|
337
|
+
onToolCallResultEvent?(params: {
|
|
338
|
+
event: ToolCallResultEvent;
|
|
339
|
+
} & AgentSubscriberParams): MaybePromise<AgentStateMutation | void>;
|
|
340
|
+
onStateSnapshotEvent?(params: {
|
|
341
|
+
event: StateSnapshotEvent;
|
|
342
|
+
} & AgentSubscriberParams): MaybePromise<AgentStateMutation | void>;
|
|
343
|
+
onStateDeltaEvent?(params: {
|
|
344
|
+
event: StateDeltaEvent;
|
|
345
|
+
} & AgentSubscriberParams): MaybePromise<AgentStateMutation | void>;
|
|
346
|
+
onMessagesSnapshotEvent?(params: {
|
|
347
|
+
event: MessagesSnapshotEvent;
|
|
348
|
+
} & AgentSubscriberParams): MaybePromise<AgentStateMutation | void>;
|
|
349
|
+
onActivitySnapshotEvent?(params: {
|
|
350
|
+
event: ActivitySnapshotEvent;
|
|
351
|
+
activityMessage?: ActivityMessage;
|
|
352
|
+
existingMessage?: Message;
|
|
353
|
+
} & AgentSubscriberParams): MaybePromise<AgentStateMutation | void>;
|
|
354
|
+
onActivityDeltaEvent?(params: {
|
|
355
|
+
event: ActivityDeltaEvent;
|
|
356
|
+
activityMessage?: ActivityMessage;
|
|
357
|
+
} & AgentSubscriberParams): MaybePromise<AgentStateMutation | void>;
|
|
358
|
+
onRawEvent?(params: {
|
|
359
|
+
event: RawEvent;
|
|
360
|
+
} & AgentSubscriberParams): MaybePromise<AgentStateMutation | void>;
|
|
361
|
+
onCustomEvent?(params: {
|
|
362
|
+
event: CustomEvent;
|
|
363
|
+
} & AgentSubscriberParams): MaybePromise<AgentStateMutation | void>;
|
|
364
|
+
onMessagesChanged?(params: Omit<AgentSubscriberParams, "input"> & {
|
|
365
|
+
input?: RunAgentInput;
|
|
366
|
+
}): MaybePromise<void>;
|
|
367
|
+
onStateChanged?(params: Omit<AgentSubscriberParams, "input"> & {
|
|
368
|
+
input?: RunAgentInput;
|
|
369
|
+
}): MaybePromise<void>;
|
|
370
|
+
onNewMessage?(params: {
|
|
371
|
+
message: Message;
|
|
372
|
+
} & Omit<AgentSubscriberParams, "input"> & {
|
|
373
|
+
input?: RunAgentInput;
|
|
374
|
+
}): MaybePromise<void>;
|
|
375
|
+
onNewToolCall?(params: {
|
|
376
|
+
toolCall: ToolCall;
|
|
377
|
+
} & Omit<AgentSubscriberParams, "input"> & {
|
|
378
|
+
input?: RunAgentInput;
|
|
379
|
+
}): MaybePromise<void>;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
declare const defaultApplyEvents: (input: RunAgentInput, events$: Observable<BaseEvent>, agent: AbstractAgent, subscribers: AgentSubscriber[]) => Observable<AgentStateMutation>;
|
|
383
|
+
|
|
384
|
+
declare const verifyEvents: (debug: boolean) => (source$: Observable<BaseEvent>) => Observable<BaseEvent>;
|
|
385
|
+
|
|
386
|
+
declare enum HttpEventType {
|
|
387
|
+
HEADERS = "headers",
|
|
388
|
+
DATA = "data"
|
|
389
|
+
}
|
|
390
|
+
interface HttpDataEvent {
|
|
391
|
+
type: HttpEventType.DATA;
|
|
392
|
+
data?: Uint8Array;
|
|
393
|
+
}
|
|
394
|
+
interface HttpHeadersEvent {
|
|
395
|
+
type: HttpEventType.HEADERS;
|
|
396
|
+
status: number;
|
|
397
|
+
headers: Headers;
|
|
398
|
+
}
|
|
399
|
+
type HttpEvent = HttpDataEvent | HttpHeadersEvent;
|
|
400
|
+
declare const runHttpRequest: (url: string, requestInit: RequestInit) => Observable<HttpEvent>;
|
|
401
|
+
|
|
402
|
+
/**
|
|
403
|
+
* Transforms HTTP events into BaseEvents using the appropriate format parser based on content type.
|
|
404
|
+
*/
|
|
405
|
+
declare const transformHttpEventStream: (source$: Observable<HttpEvent>) => Observable<BaseEvent>;
|
|
406
|
+
|
|
407
|
+
/**
|
|
408
|
+
* Parses a stream of HTTP events into a stream of JSON objects using Server-Sent Events (SSE) format.
|
|
409
|
+
* Strictly follows the SSE standard where:
|
|
410
|
+
* - Events are separated by double newlines ('\n\n')
|
|
411
|
+
* - Only 'data:' prefixed lines are processed
|
|
412
|
+
* - Multi-line data events are supported and joined
|
|
413
|
+
* - Non-data fields (event, id, retry) are ignored
|
|
414
|
+
*/
|
|
415
|
+
declare const parseSSEStream: (source$: Observable<HttpEvent>) => Observable<any>;
|
|
416
|
+
|
|
417
|
+
/**
|
|
418
|
+
* Parses a stream of HTTP events into a stream of BaseEvent objects using Protocol Buffer format.
|
|
419
|
+
* Each message is prefixed with a 4-byte length header (uint32 in big-endian format)
|
|
420
|
+
* followed by the protocol buffer encoded message.
|
|
421
|
+
*/
|
|
422
|
+
declare const parseProtoStream: (source$: Observable<HttpEvent>) => Observable<BaseEvent>;
|
|
423
|
+
|
|
424
|
+
declare const convertToLegacyEvents: (threadId: string, runId: string, agentName: string) => (events$: Observable<BaseEvent>) => Observable<LegacyRuntimeProtocolEvent>;
|
|
425
|
+
|
|
426
|
+
declare const structuredClone_: <T>(obj: T) => T;
|
|
427
|
+
/**
|
|
428
|
+
* Generate a random UUID v4
|
|
429
|
+
* Cross-platform compatible (Node.js, browsers, React Native)
|
|
430
|
+
*/
|
|
431
|
+
declare function randomUUID(): string;
|
|
432
|
+
|
|
433
|
+
/**
|
|
434
|
+
* Compacts streaming events by consolidating multiple deltas into single events.
|
|
435
|
+
* For text messages: multiple content deltas become one concatenated delta.
|
|
436
|
+
* For tool calls: multiple args deltas become one concatenated delta.
|
|
437
|
+
* Events between related streaming events are reordered to keep streaming events together.
|
|
438
|
+
*
|
|
439
|
+
* @param events - Array of events to compact
|
|
440
|
+
* @returns Compacted array of events
|
|
441
|
+
*/
|
|
442
|
+
declare function compactEvents(events: BaseEvent[]): BaseEvent[];
|
|
443
|
+
|
|
444
|
+
declare const transformChunks: (debug: boolean) => (events$: Observable<BaseEvent>) => Observable<BaseEvent>;
|
|
445
|
+
|
|
446
|
+
export { AbstractAgent, type AgentConfig, type AgentStateMutation, type AgentSubscriber, type AgentSubscriberParams, BackwardCompatibility_0_0_39, FilterToolCallsMiddleware, FunctionMiddleware, HttpAgent, type HttpAgentConfig, Middleware, type MiddlewareFunction, type RunAgentParameters, type RunAgentResult, compactEvents, convertToLegacyEvents, defaultApplyEvents, parseProtoStream, parseSSEStream, randomUUID, runHttpRequest, structuredClone_, transformChunks, transformHttpEventStream, verifyEvents };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";var Kt=Object.create;var tt=Object.defineProperty,Jt=Object.defineProperties,Vt=Object.getOwnPropertyDescriptor,Wt=Object.getOwnPropertyDescriptors,Yt=Object.getOwnPropertyNames,st=Object.getOwnPropertySymbols,qt=Object.getPrototypeOf,Tt=Object.prototype.hasOwnProperty,Ct=Object.prototype.propertyIsEnumerable;var Mt=(i,s,e)=>s in i?tt(i,s,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[s]=e,L=(i,s)=>{for(var e in s||(s={}))Tt.call(s,e)&&Mt(i,e,s[e]);if(st)for(var e of st(s))Ct.call(s,e)&&Mt(i,e,s[e]);return i},b=(i,s)=>Jt(i,Wt(s));var Rt=(i,s)=>{var e={};for(var n in i)Tt.call(i,n)&&s.indexOf(n)<0&&(e[n]=i[n]);if(i!=null&&st)for(var n of st(i))s.indexOf(n)<0&&Ct.call(i,n)&&(e[n]=i[n]);return e};var Qt=(i,s)=>{for(var e in s)tt(i,e,{get:s[e],enumerable:!0})},at=(i,s,e,n)=>{if(s&&typeof s=="object"||typeof s=="function")for(let t of Yt(s))!Tt.call(i,t)&&t!==e&&tt(i,t,{get:()=>s[t],enumerable:!(n=Vt(s,t))||n.enumerable});return i},D=(i,s,e)=>(at(i,s,"default"),e&&at(e,s,"default")),ot=(i,s,e)=>(e=i!=null?Kt(qt(i)):{},at(s||!i||!i.__esModule?tt(e,"default",{value:i,enumerable:!0}):e,i)),Zt=i=>at(tt({},"__esModule",{value:!0}),i);var P={};Qt(P,{AbstractAgent:()=>Q,BackwardCompatibility_0_0_39:()=>Y,FilterToolCallsMiddleware:()=>nt,FunctionMiddleware:()=>W,HttpAgent:()=>mt,Middleware:()=>U,compactEvents:()=>zt,convertToLegacyEvents:()=>dt,defaultApplyEvents:()=>J,parseProtoStream:()=>ct,parseSSEStream:()=>gt,randomUUID:()=>te,runHttpRequest:()=>lt,structuredClone_:()=>M,transformChunks:()=>$,transformHttpEventStream:()=>Et,verifyEvents:()=>V});module.exports=Zt(P);var x=require("@ag-ui/core"),K=require("rxjs/operators"),rt=require("rxjs");var It=require("uuid");var M=i=>{if(typeof structuredClone=="function")return structuredClone(i);try{return JSON.parse(JSON.stringify(i))}catch(s){return L({},i)}};function te(){return(0,It.v4)()}var St=require("fast-json-patch");async function N(i,s,e,n){let t=M(s),a=M(e),r=t,o=a,l;for(let d of i)try{let C=await n(d,r,o);if(C===void 0)continue;if(C.messages!==void 0&&(r=M(C.messages)),C.state!==void 0&&(o=M(C.state)),l=C.stopPropagation,l===!0)break}catch(C){process.env.NODE_ENV==="test"||process.env.JEST_WORKER_ID!==void 0||console.error("Subscriber error:",C);continue}return L(L(L({},r!==t?{messages:r}:{}),o!==a?{state:o}:{}),l!==void 0?{stopPropagation:l}:{})}var xt=ot(require("untruncate-json"));var J=(i,s,e,n)=>{let t=M(e.messages),a=M(i.state),r={},o=d=>{d.messages!==void 0&&(t=d.messages,r.messages=d.messages),d.state!==void 0&&(a=d.state,r.state=d.state)},l=()=>{let d=M(r);return r={},d.messages!==void 0||d.state!==void 0?(0,rt.of)(d):rt.EMPTY};return s.pipe((0,K.concatMap)(async d=>{var T,h,c,F,z;let C=await N(n,t,a,(E,g,p)=>{var m;return(m=E.onEvent)==null?void 0:m.call(E,{event:d,agent:e,input:i,messages:g,state:p})});if(o(C),C.stopPropagation===!0)return l();switch(d.type){case x.EventType.TEXT_MESSAGE_START:{let E=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onTextMessageStartEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});if(o(E),E.stopPropagation!==!0){let{messageId:g,role:p="assistant"}=d,m={id:g,role:p,content:""};t.push(m),o({messages:t})}return l()}case x.EventType.TEXT_MESSAGE_CONTENT:{let{messageId:E,delta:g}=d,p=t.find(u=>u.id===E);if(!p)return console.warn(`TEXT_MESSAGE_CONTENT: No message found with ID '${E}'`),l();let m=await N(n,t,a,(u,y,R)=>{var w;return(w=u.onTextMessageContentEvent)==null?void 0:w.call(u,{event:d,messages:y,state:R,agent:e,input:i,textMessageBuffer:typeof p.content=="string"?p.content:""})});if(o(m),m.stopPropagation!==!0){let u=typeof p.content=="string"?p.content:"";p.content=`${u}${g}`,o({messages:t})}return l()}case x.EventType.TEXT_MESSAGE_END:{let{messageId:E}=d,g=t.find(m=>m.id===E);if(!g)return console.warn(`TEXT_MESSAGE_END: No message found with ID '${E}'`),l();let p=await N(n,t,a,(m,u,y)=>{var R;return(R=m.onTextMessageEndEvent)==null?void 0:R.call(m,{event:d,messages:u,state:y,agent:e,input:i,textMessageBuffer:typeof g.content=="string"?g.content:""})});return o(p),await Promise.all(n.map(m=>{var u;(u=m.onNewMessage)==null||u.call(m,{message:g,messages:t,state:a,agent:e,input:i})})),l()}case x.EventType.TOOL_CALL_START:{let E=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onToolCallStartEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});if(o(E),E.stopPropagation!==!0){let{toolCallId:g,toolCallName:p,parentMessageId:m}=d,u;m&&t.length>0&&t[t.length-1].id===m?u=t[t.length-1]:(u={id:m||g,role:"assistant",toolCalls:[]},t.push(u)),(T=u.toolCalls)!=null||(u.toolCalls=[]),u.toolCalls.push({id:g,type:"function",function:{name:p,arguments:""}}),o({messages:t})}return l()}case x.EventType.TOOL_CALL_ARGS:{let{toolCallId:E,delta:g}=d,p=t.find(y=>{var R;return(R=y.toolCalls)==null?void 0:R.some(w=>w.id===E)});if(!p)return console.warn(`TOOL_CALL_ARGS: No message found containing tool call with ID '${E}'`),l();let m=p.toolCalls.find(y=>y.id===E);if(!m)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${E}'`),l();let u=await N(n,t,a,(y,R,w)=>{var ft;let H=m.function.arguments,k=m.function.name,Z={};try{Z=(0,xt.default)(H)}catch(fe){}return(ft=y.onToolCallArgsEvent)==null?void 0:ft.call(y,{event:d,messages:R,state:w,agent:e,input:i,toolCallBuffer:H,toolCallName:k,partialToolCallArgs:Z})});return o(u),u.stopPropagation!==!0&&(m.function.arguments+=g,o({messages:t})),l()}case x.EventType.TOOL_CALL_END:{let{toolCallId:E}=d,g=t.find(u=>{var y;return(y=u.toolCalls)==null?void 0:y.some(R=>R.id===E)});if(!g)return console.warn(`TOOL_CALL_END: No message found containing tool call with ID '${E}'`),l();let p=g.toolCalls.find(u=>u.id===E);if(!p)return console.warn(`TOOL_CALL_END: No tool call found with ID '${E}'`),l();let m=await N(n,t,a,(u,y,R)=>{var Z;let w=p.function.arguments,H=p.function.name,k={};try{k=JSON.parse(w)}catch(ft){}return(Z=u.onToolCallEndEvent)==null?void 0:Z.call(u,{event:d,messages:y,state:R,agent:e,input:i,toolCallName:H,toolCallArgs:k})});return o(m),await Promise.all(n.map(u=>{var y;(y=u.onNewToolCall)==null||y.call(u,{toolCall:p,messages:t,state:a,agent:e,input:i})})),l()}case x.EventType.TOOL_CALL_RESULT:{let E=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onToolCallResultEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});if(o(E),E.stopPropagation!==!0){let{messageId:g,toolCallId:p,content:m,role:u}=d,y={id:g,toolCallId:p,role:u||"tool",content:m};t.push(y),await Promise.all(n.map(R=>{var w;(w=R.onNewMessage)==null||w.call(R,{message:y,messages:t,state:a,agent:e,input:i})})),o({messages:t})}return l()}case x.EventType.STATE_SNAPSHOT:{let E=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onStateSnapshotEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});if(o(E),E.stopPropagation!==!0){let{snapshot:g}=d;a=g,o({state:a})}return l()}case x.EventType.STATE_DELTA:{let E=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onStateDeltaEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});if(o(E),E.stopPropagation!==!0){let{delta:g}=d;try{a=(0,St.applyPatch)(a,g,!0,!1).newDocument,o({state:a})}catch(p){let m=p instanceof Error?p.message:String(p);console.warn(`Failed to apply state patch:
|
|
2
|
+
Current state: ${JSON.stringify(a,null,2)}
|
|
3
|
+
Patch operations: ${JSON.stringify(g,null,2)}
|
|
4
|
+
Error: ${m}`)}}return l()}case x.EventType.MESSAGES_SNAPSHOT:{let E=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onMessagesSnapshotEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});if(o(E),E.stopPropagation!==!0){let{messages:g}=d;t=g,o({messages:t})}return l()}case x.EventType.ACTIVITY_SNAPSHOT:{let E=d,g=t.findIndex(R=>R.id===E.messageId),p=g>=0?t[g]:void 0,m=(p==null?void 0:p.role)==="activity"?p:void 0,u=(h=E.replace)!=null?h:!0,y=await N(n,t,a,(R,w,H)=>{var k;return(k=R.onActivitySnapshotEvent)==null?void 0:k.call(R,{event:E,messages:w,state:H,agent:e,input:i,activityMessage:m,existingMessage:p})});if(o(y),y.stopPropagation!==!0){let R={id:E.messageId,role:"activity",activityType:E.activityType,content:M(E.content)},w;g===-1?(t.push(R),w=R):m?u&&(t[g]=b(L({},m),{activityType:E.activityType,content:M(E.content)})):u&&(t[g]=R,w=R),o({messages:t}),w&&await Promise.all(n.map(H=>{var k;return(k=H.onNewMessage)==null?void 0:k.call(H,{message:w,messages:t,state:a,agent:e,input:i})}))}return l()}case x.EventType.ACTIVITY_DELTA:{let E=d,g=t.findIndex(y=>y.id===E.messageId);if(g===-1)return console.warn(`ACTIVITY_DELTA: No message found with ID '${E.messageId}' to apply patch`),l();let p=t[g];if(p.role!=="activity")return console.warn(`ACTIVITY_DELTA: Message '${E.messageId}' is not an activity message`),l();let m=p,u=await N(n,t,a,(y,R,w)=>{var H;return(H=y.onActivityDeltaEvent)==null?void 0:H.call(y,{event:E,messages:R,state:w,agent:e,input:i,activityMessage:m})});if(o(u),u.stopPropagation!==!0)try{let y=M((c=m.content)!=null?c:{}),w=(0,St.applyPatch)(y,(F=E.patch)!=null?F:[],!0,!1).newDocument;t[g]=b(L({},m),{content:M(w),activityType:E.activityType}),o({messages:t})}catch(y){let R=y instanceof Error?y.message:String(y);console.warn(`Failed to apply activity patch for '${E.messageId}': ${R}`)}return l()}case x.EventType.RAW:{let E=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onRawEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});return o(E),l()}case x.EventType.CUSTOM:{let E=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onCustomEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});return o(E),l()}case x.EventType.RUN_STARTED:{let E=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onRunStartedEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});if(o(E),E.stopPropagation!==!0){let g=d;if((z=g.input)!=null&&z.messages){for(let p of g.input.messages)t.find(u=>u.id===p.id)||t.push(p);o({messages:t})}}return l()}case x.EventType.RUN_FINISHED:{let E=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onRunFinishedEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i,result:d.result})});return o(E),l()}case x.EventType.RUN_ERROR:{let E=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onRunErrorEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});return o(E),l()}case x.EventType.STEP_STARTED:{let E=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onStepStartedEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});return o(E),l()}case x.EventType.STEP_FINISHED:{let E=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onStepFinishedEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});return o(E),l()}case x.EventType.TEXT_MESSAGE_CHUNK:throw new Error("TEXT_MESSAGE_CHUNK must be tranformed before being applied");case x.EventType.TOOL_CALL_CHUNK:throw new Error("TOOL_CALL_CHUNK must be tranformed before being applied");case x.EventType.THINKING_START:return l();case x.EventType.THINKING_END:return l();case x.EventType.THINKING_TEXT_MESSAGE_START:return l();case x.EventType.THINKING_TEXT_MESSAGE_CONTENT:return l();case x.EventType.THINKING_TEXT_MESSAGE_END:return l()}let S=d.type;return l()}),(0,K.mergeAll)(),n.length>0?(0,K.defaultIfEmpty)({}):d=>d)};var v=require("@ag-ui/core"),A=require("rxjs"),_t=require("rxjs/operators"),V=i=>s=>{let e=new Map,n=new Map,t=!1,a=!1,r=!1,o=new Map,l=!1,d=!1,C=!1,S=()=>{e.clear(),n.clear(),o.clear(),l=!1,d=!1,t=!1,a=!1,C=!0};return s.pipe((0,_t.mergeMap)(T=>{let h=T.type;if(i&&console.debug("[VERIFY]:",JSON.stringify(T)),a)return(0,A.throwError)(()=>new v.AGUIError(`Cannot send event type '${h}': The run has already errored with 'RUN_ERROR'. No further events can be sent.`));if(t&&h!==v.EventType.RUN_ERROR&&h!==v.EventType.RUN_STARTED)return(0,A.throwError)(()=>new v.AGUIError(`Cannot send event type '${h}': The run has already finished with 'RUN_FINISHED'. Start a new run with 'RUN_STARTED'.`));if(r){if(h===v.EventType.RUN_STARTED){if(C&&!t)return(0,A.throwError)(()=>new v.AGUIError("Cannot send 'RUN_STARTED' while a run is still active. The previous run must be finished with 'RUN_FINISHED' before starting a new run."));t&&S()}}else if(r=!0,h!==v.EventType.RUN_STARTED&&h!==v.EventType.RUN_ERROR)return(0,A.throwError)(()=>new v.AGUIError("First event must be 'RUN_STARTED'"));switch(h){case v.EventType.TEXT_MESSAGE_START:{let c=T.messageId;return e.has(c)?(0,A.throwError)(()=>new v.AGUIError(`Cannot send 'TEXT_MESSAGE_START' event: A text message with ID '${c}' is already in progress. Complete it with 'TEXT_MESSAGE_END' first.`)):(e.set(c,!0),(0,A.of)(T))}case v.EventType.TEXT_MESSAGE_CONTENT:{let c=T.messageId;return e.has(c)?(0,A.of)(T):(0,A.throwError)(()=>new v.AGUIError(`Cannot send 'TEXT_MESSAGE_CONTENT' event: No active text message found with ID '${c}'. Start a text message with 'TEXT_MESSAGE_START' first.`))}case v.EventType.TEXT_MESSAGE_END:{let c=T.messageId;return e.has(c)?(e.delete(c),(0,A.of)(T)):(0,A.throwError)(()=>new v.AGUIError(`Cannot send 'TEXT_MESSAGE_END' event: No active text message found with ID '${c}'. A 'TEXT_MESSAGE_START' event must be sent first.`))}case v.EventType.TOOL_CALL_START:{let c=T.toolCallId;return n.has(c)?(0,A.throwError)(()=>new v.AGUIError(`Cannot send 'TOOL_CALL_START' event: A tool call with ID '${c}' is already in progress. Complete it with 'TOOL_CALL_END' first.`)):(n.set(c,!0),(0,A.of)(T))}case v.EventType.TOOL_CALL_ARGS:{let c=T.toolCallId;return n.has(c)?(0,A.of)(T):(0,A.throwError)(()=>new v.AGUIError(`Cannot send 'TOOL_CALL_ARGS' event: No active tool call found with ID '${c}'. Start a tool call with 'TOOL_CALL_START' first.`))}case v.EventType.TOOL_CALL_END:{let c=T.toolCallId;return n.has(c)?(n.delete(c),(0,A.of)(T)):(0,A.throwError)(()=>new v.AGUIError(`Cannot send 'TOOL_CALL_END' event: No active tool call found with ID '${c}'. A 'TOOL_CALL_START' event must be sent first.`))}case v.EventType.STEP_STARTED:{let c=T.stepName;return o.has(c)?(0,A.throwError)(()=>new v.AGUIError(`Step "${c}" is already active for 'STEP_STARTED'`)):(o.set(c,!0),(0,A.of)(T))}case v.EventType.STEP_FINISHED:{let c=T.stepName;return o.has(c)?(o.delete(c),(0,A.of)(T)):(0,A.throwError)(()=>new v.AGUIError(`Cannot send 'STEP_FINISHED' for step "${c}" that was not started`))}case v.EventType.RUN_STARTED:return C=!0,(0,A.of)(T);case v.EventType.RUN_FINISHED:{if(o.size>0){let c=Array.from(o.keys()).join(", ");return(0,A.throwError)(()=>new v.AGUIError(`Cannot send 'RUN_FINISHED' while steps are still active: ${c}`))}if(e.size>0){let c=Array.from(e.keys()).join(", ");return(0,A.throwError)(()=>new v.AGUIError(`Cannot send 'RUN_FINISHED' while text messages are still active: ${c}`))}if(n.size>0){let c=Array.from(n.keys()).join(", ");return(0,A.throwError)(()=>new v.AGUIError(`Cannot send 'RUN_FINISHED' while tool calls are still active: ${c}`))}return t=!0,(0,A.of)(T)}case v.EventType.RUN_ERROR:return a=!0,(0,A.of)(T);case v.EventType.CUSTOM:return(0,A.of)(T);case v.EventType.THINKING_TEXT_MESSAGE_START:return l?d?(0,A.throwError)(()=>new v.AGUIError("Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking message is already in progress. Complete it with 'THINKING_TEXT_MESSAGE_END' first.")):(d=!0,(0,A.of)(T)):(0,A.throwError)(()=>new v.AGUIError("Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking step is not in progress. Create one with 'THINKING_START' first."));case v.EventType.THINKING_TEXT_MESSAGE_CONTENT:return d?(0,A.of)(T):(0,A.throwError)(()=>new v.AGUIError("Cannot send 'THINKING_TEXT_MESSAGE_CONTENT' event: No active thinking message found. Start a message with 'THINKING_TEXT_MESSAGE_START' first."));case v.EventType.THINKING_TEXT_MESSAGE_END:return d?(d=!1,(0,A.of)(T)):(0,A.throwError)(()=>new v.AGUIError("Cannot send 'THINKING_TEXT_MESSAGE_END' event: No active thinking message found. A 'THINKING_TEXT_MESSAGE_START' event must be sent first."));case v.EventType.THINKING_START:return l?(0,A.throwError)(()=>new v.AGUIError("Cannot send 'THINKING_START' event: A thinking step is already in progress. End it with 'THINKING_END' first.")):(l=!0,(0,A.of)(T));case v.EventType.THINKING_END:return l?(l=!1,(0,A.of)(T)):(0,A.throwError)(()=>new v.AGUIError("Cannot send 'THINKING_END' event: No active thinking step found. A 'THINKING_START' event must be sent first."));default:return(0,A.of)(T)}}))};var Ot=require("@ag-ui/core"),ut=require("rxjs");var B=require("rxjs"),it=require("rxjs/operators");var lt=(i,s)=>(0,B.defer)(()=>(0,B.from)(fetch(i,s))).pipe((0,it.switchMap)(e=>{var a;if(!e.ok){let r=e.headers.get("content-type")||"";return(0,B.from)(e.text()).pipe((0,it.mergeMap)(o=>{let l=o;if(r.includes("application/json"))try{l=JSON.parse(o)}catch(C){}let d=new Error(`HTTP ${e.status}: ${typeof l=="string"?l:JSON.stringify(l)}`);return d.status=e.status,d.payload=l,(0,B.throwError)(()=>d)}))}let n={type:"headers",status:e.status,headers:e.headers},t=(a=e.body)==null?void 0:a.getReader();return t?new B.Observable(r=>(r.next(n),(async()=>{try{for(;;){let{done:o,value:l}=await t.read();if(o)break;let d={type:"data",data:l};r.next(d)}r.complete()}catch(o){r.error(o)}})(),()=>{t.cancel().catch(o=>{if((o==null?void 0:o.name)!=="AbortError")throw o})})):(0,B.throwError)(()=>new Error("Failed to getReader() from response"))}));var Nt=require("rxjs");var gt=i=>{let s=new Nt.Subject,e=new TextDecoder("utf-8",{fatal:!1}),n="";i.subscribe({next:a=>{if(a.type!=="headers"&&a.type==="data"&&a.data){let r=e.decode(a.data,{stream:!0});n+=r;let o=n.split(/\n\n/);n=o.pop()||"";for(let l of o)t(l)}},error:a=>s.error(a),complete:()=>{n&&(n+=e.decode(),t(n)),s.complete()}});function t(a){let r=a.split(`
|
|
5
|
+
`),o=[];for(let l of r)l.startsWith("data: ")&&o.push(l.slice(6));if(o.length>0)try{let l=o.join(`
|
|
6
|
+
`),d=JSON.parse(l);s.next(d)}catch(l){s.error(l)}}return s.asObservable()};var wt=require("rxjs");var Lt=ot(require("@ag-ui/proto")),ct=i=>{let s=new wt.Subject,e=new Uint8Array(0);i.subscribe({next:t=>{if(t.type!=="headers"&&t.type==="data"&&t.data){let a=new Uint8Array(e.length+t.data.length);a.set(e,0),a.set(t.data,e.length),e=a,n()}},error:t=>s.error(t),complete:()=>{if(e.length>0)try{n()}catch(t){console.warn("Incomplete or invalid protocol buffer data at stream end")}s.complete()}});function n(){for(;e.length>=4;){let r=4+new DataView(e.buffer,e.byteOffset,4).getUint32(0,!1);if(e.length<r)break;try{let o=e.slice(4,r),l=Lt.decode(o);s.next(l),e=e.slice(r)}catch(o){let l=o instanceof Error?o.message:String(o);s.error(new Error(`Failed to decode protocol buffer message: ${l}`));return}}}return s.asObservable()};var Pt=ot(require("@ag-ui/proto")),Dt=require("@ag-ui/core"),Et=i=>{let s=new ut.Subject,e=new ut.ReplaySubject,n=!1;return i.subscribe({next:t=>{e.next(t),t.type==="headers"&&!n?(n=!0,t.headers.get("content-type")===Pt.AGUI_MEDIA_TYPE?ct(e).subscribe({next:r=>s.next(r),error:r=>s.error(r),complete:()=>s.complete()}):gt(e).subscribe({next:r=>{try{let o=Ot.EventSchemas.parse(r);s.next(o)}catch(o){s.error(o)}},error:r=>{if((r==null?void 0:r.name)==="AbortError"){s.next({type:Dt.EventType.RUN_ERROR,rawEvent:r}),s.complete();return}return s.error(r)},complete:()=>s.complete()})):n||s.error(new Error("No headers event received before data events"))},error:t=>{e.error(t),s.error(t)},complete:()=>{e.complete()}}),s.asObservable()};var Ht=require("rxjs/operators"),Gt=require("fast-json-patch"),O=require("@ag-ui/core");var f=require("zod"),_=f.z.enum(["TextMessageStart","TextMessageContent","TextMessageEnd","ActionExecutionStart","ActionExecutionArgs","ActionExecutionEnd","ActionExecutionResult","AgentStateMessage","MetaEvent","RunStarted","RunFinished","RunError","NodeStarted","NodeFinished"]),ee=f.z.enum(["LangGraphInterruptEvent","PredictState","Exit"]),ne=f.z.object({type:f.z.literal(_.enum.TextMessageStart),messageId:f.z.string(),parentMessageId:f.z.string().optional(),role:f.z.string().optional()}),se=f.z.object({type:f.z.literal(_.enum.TextMessageContent),messageId:f.z.string(),content:f.z.string()}),ae=f.z.object({type:f.z.literal(_.enum.TextMessageEnd),messageId:f.z.string()}),oe=f.z.object({type:f.z.literal(_.enum.ActionExecutionStart),actionExecutionId:f.z.string(),actionName:f.z.string(),parentMessageId:f.z.string().optional()}),re=f.z.object({type:f.z.literal(_.enum.ActionExecutionArgs),actionExecutionId:f.z.string(),args:f.z.string()}),ie=f.z.object({type:f.z.literal(_.enum.ActionExecutionEnd),actionExecutionId:f.z.string()}),le=f.z.object({type:f.z.literal(_.enum.ActionExecutionResult),actionName:f.z.string(),actionExecutionId:f.z.string(),result:f.z.string()}),ge=f.z.object({type:f.z.literal(_.enum.AgentStateMessage),threadId:f.z.string(),agentName:f.z.string(),nodeName:f.z.string(),runId:f.z.string(),active:f.z.boolean(),role:f.z.string(),state:f.z.string(),running:f.z.boolean()}),ce=f.z.object({type:f.z.literal(_.enum.MetaEvent),name:ee,value:f.z.any()}),ue=f.z.object({type:f.z.literal(_.enum.RunError),message:f.z.string(),code:f.z.string().optional()}),_n=f.z.discriminatedUnion("type",[ne,se,ae,oe,re,ie,le,ge,ce,ue]),Nn=f.z.object({id:f.z.string(),role:f.z.string(),content:f.z.string(),parentMessageId:f.z.string().optional()}),wn=f.z.object({id:f.z.string(),name:f.z.string(),arguments:f.z.any(),parentMessageId:f.z.string().optional()}),Ln=f.z.object({id:f.z.string(),result:f.z.any(),actionExecutionId:f.z.string(),actionName:f.z.string()});var bt=ot(require("untruncate-json"));var Ee=i=>{if(typeof i=="string")return i;if(!Array.isArray(i))return;let s=i.filter(e=>e.type==="text").map(e=>e.text).filter(e=>e.length>0);if(s.length!==0)return s.join(`
|
|
7
|
+
`)},dt=(i,s,e)=>n=>{let t={},a=!0,r=!0,o="",l=null,d=null,C=[],S={},T=h=>{typeof h=="object"&&h!==null&&("messages"in h&&delete h.messages,t=h)};return n.pipe((0,Ht.mergeMap)(h=>{switch(h.type){case O.EventType.TEXT_MESSAGE_START:{let c=h;return[{type:_.enum.TextMessageStart,messageId:c.messageId,role:c.role}]}case O.EventType.TEXT_MESSAGE_CONTENT:{let c=h;return[{type:_.enum.TextMessageContent,messageId:c.messageId,content:c.delta}]}case O.EventType.TEXT_MESSAGE_END:{let c=h;return[{type:_.enum.TextMessageEnd,messageId:c.messageId}]}case O.EventType.TOOL_CALL_START:{let c=h;return C.push({id:c.toolCallId,type:"function",function:{name:c.toolCallName,arguments:""}}),r=!0,S[c.toolCallId]=c.toolCallName,[{type:_.enum.ActionExecutionStart,actionExecutionId:c.toolCallId,actionName:c.toolCallName,parentMessageId:c.parentMessageId}]}case O.EventType.TOOL_CALL_ARGS:{let c=h,F=C.find(E=>E.id===c.toolCallId);if(!F)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${c.toolCallId}'`),[];F.function.arguments+=c.delta;let z=!1;if(d){let E=d.find(g=>g.tool==F.function.name);if(E)try{let g=JSON.parse((0,bt.default)(F.function.arguments));E.tool_argument&&E.tool_argument in g?(T(b(L({},t),{[E.state_key]:g[E.tool_argument]})),z=!0):E.tool_argument||(T(b(L({},t),{[E.state_key]:g})),z=!0)}catch(g){}}return[{type:_.enum.ActionExecutionArgs,actionExecutionId:c.toolCallId,args:c.delta},...z?[{type:_.enum.AgentStateMessage,threadId:i,agentName:e,nodeName:o,runId:s,running:a,role:"assistant",state:JSON.stringify(t),active:r}]:[]]}case O.EventType.TOOL_CALL_END:{let c=h;return[{type:_.enum.ActionExecutionEnd,actionExecutionId:c.toolCallId}]}case O.EventType.TOOL_CALL_RESULT:{let c=h;return[{type:_.enum.ActionExecutionResult,actionExecutionId:c.toolCallId,result:c.content,actionName:S[c.toolCallId]||"unknown"}]}case O.EventType.RAW:return[];case O.EventType.CUSTOM:{let c=h;switch(c.name){case"Exit":a=!1;break;case"PredictState":d=c.value;break}return[{type:_.enum.MetaEvent,name:c.name,value:c.value}]}case O.EventType.STATE_SNAPSHOT:return T(h.snapshot),[{type:_.enum.AgentStateMessage,threadId:i,agentName:e,nodeName:o,runId:s,running:a,role:"assistant",state:JSON.stringify(t),active:r}];case O.EventType.STATE_DELTA:{let F=(0,Gt.applyPatch)(t,h.delta,!0,!1);return F?(T(F.newDocument),[{type:_.enum.AgentStateMessage,threadId:i,agentName:e,nodeName:o,runId:s,running:a,role:"assistant",state:JSON.stringify(t),active:r}]):[]}case O.EventType.MESSAGES_SNAPSHOT:return l=h.messages,[{type:_.enum.AgentStateMessage,threadId:i,agentName:e,nodeName:o,runId:s,running:a,role:"assistant",state:JSON.stringify(L(L({},t),l?{messages:l}:{})),active:!0}];case O.EventType.RUN_STARTED:return[];case O.EventType.RUN_FINISHED:return l&&(t.messages=l),Object.keys(t).length===0?[]:[{type:_.enum.AgentStateMessage,threadId:i,agentName:e,nodeName:o,runId:s,running:a,role:"assistant",state:JSON.stringify(L(L({},t),l?{messages:de(l)}:{})),active:!1}];case O.EventType.RUN_ERROR:{let c=h;return[{type:_.enum.RunError,message:c.message,code:c.code}]}case O.EventType.STEP_STARTED:return o=h.stepName,C=[],d=null,[{type:_.enum.AgentStateMessage,threadId:i,agentName:e,nodeName:o,runId:s,running:a,role:"assistant",state:JSON.stringify(t),active:!0}];case O.EventType.STEP_FINISHED:return C=[],d=null,[{type:_.enum.AgentStateMessage,threadId:i,agentName:e,nodeName:o,runId:s,running:a,role:"assistant",state:JSON.stringify(t),active:!1}];default:return[]}}))};function de(i){var e;let s=[];for(let n of i)if(n.role==="assistant"||n.role==="user"||n.role==="system"){let t=Ee(n.content);if(t){let a={id:n.id,role:n.role,content:t};s.push(a)}if(n.role==="assistant"&&n.toolCalls&&n.toolCalls.length>0)for(let a of n.toolCalls){let r={id:a.id,name:a.function.name,arguments:JSON.parse(a.function.arguments),parentMessageId:n.id};s.push(r)}}else if(n.role==="tool"){let t="unknown";for(let r of i)if(r.role==="assistant"&&((e=r.toolCalls)!=null&&e.length)){for(let o of r.toolCalls)if(o.id===n.toolCallId){t=o.function.name;break}}let a={id:n.id,result:n.content,actionExecutionId:n.toolCallId,actionName:t};s.push(a)}return s}var q=require("uuid");var jt=require("compare-versions"),X=require("rxjs/operators"),vt=require("rxjs/operators"),At=require("rxjs/operators"),G=require("rxjs");var ht=require("rxjs");var pt=require("rxjs"),I=require("@ag-ui/core"),$=i=>s=>{let e,n,t,a=()=>{if(!e||t!=="text")throw new Error("No text message to close");let l={type:I.EventType.TEXT_MESSAGE_END,messageId:e.messageId};return t=void 0,e=void 0,i&&console.debug("[TRANSFORM]: TEXT_MESSAGE_END",JSON.stringify(l)),l},r=()=>{if(!n||t!=="tool")throw new Error("No tool call to close");let l={type:I.EventType.TOOL_CALL_END,toolCallId:n.toolCallId};return t=void 0,n=void 0,i&&console.debug("[TRANSFORM]: TOOL_CALL_END",JSON.stringify(l)),l},o=()=>t==="text"?[a()]:t==="tool"?[r()]:[];return s.pipe((0,pt.mergeMap)(l=>{switch(l.type){case I.EventType.TEXT_MESSAGE_START:case I.EventType.TEXT_MESSAGE_CONTENT:case I.EventType.TEXT_MESSAGE_END:case I.EventType.TOOL_CALL_START:case I.EventType.TOOL_CALL_ARGS:case I.EventType.TOOL_CALL_END:case I.EventType.TOOL_CALL_RESULT:case I.EventType.STATE_SNAPSHOT:case I.EventType.STATE_DELTA:case I.EventType.MESSAGES_SNAPSHOT:case I.EventType.CUSTOM:case I.EventType.RUN_STARTED:case I.EventType.RUN_FINISHED:case I.EventType.RUN_ERROR:case I.EventType.STEP_STARTED:case I.EventType.STEP_FINISHED:case I.EventType.THINKING_START:case I.EventType.THINKING_END:case I.EventType.THINKING_TEXT_MESSAGE_START:case I.EventType.THINKING_TEXT_MESSAGE_CONTENT:case I.EventType.THINKING_TEXT_MESSAGE_END:return[...o(),l];case I.EventType.RAW:case I.EventType.ACTIVITY_SNAPSHOT:case I.EventType.ACTIVITY_DELTA:return[l];case I.EventType.TEXT_MESSAGE_CHUNK:let C=l,S=[];if((t!=="text"||C.messageId!==void 0&&C.messageId!==(e==null?void 0:e.messageId))&&S.push(...o()),t!=="text"){if(C.messageId===void 0)throw new Error("First TEXT_MESSAGE_CHUNK must have a messageId");e={messageId:C.messageId},t="text";let c={type:I.EventType.TEXT_MESSAGE_START,messageId:C.messageId,role:C.role||"assistant"};S.push(c),i&&console.debug("[TRANSFORM]: TEXT_MESSAGE_START",JSON.stringify(c))}if(C.delta!==void 0){let c={type:I.EventType.TEXT_MESSAGE_CONTENT,messageId:e.messageId,delta:C.delta};S.push(c),i&&console.debug("[TRANSFORM]: TEXT_MESSAGE_CONTENT",JSON.stringify(c))}return S;case I.EventType.TOOL_CALL_CHUNK:let T=l,h=[];if((t!=="tool"||T.toolCallId!==void 0&&T.toolCallId!==(n==null?void 0:n.toolCallId))&&h.push(...o()),t!=="tool"){if(T.toolCallId===void 0)throw new Error("First TOOL_CALL_CHUNK must have a toolCallId");if(T.toolCallName===void 0)throw new Error("First TOOL_CALL_CHUNK must have a toolCallName");n={toolCallId:T.toolCallId,toolCallName:T.toolCallName,parentMessageId:T.parentMessageId},t="tool";let c={type:I.EventType.TOOL_CALL_START,toolCallId:T.toolCallId,toolCallName:T.toolCallName,parentMessageId:T.parentMessageId};h.push(c),i&&console.debug("[TRANSFORM]: TOOL_CALL_START",JSON.stringify(c))}if(T.delta!==void 0){let c={type:I.EventType.TOOL_CALL_ARGS,toolCallId:n.toolCallId,delta:T.delta};h.push(c),i&&console.debug("[TRANSFORM]: TOOL_CALL_ARGS",JSON.stringify(c))}return h}let d=l.type;return[]}),(0,pt.finalize)(()=>{o()}))};var yt=require("@ag-ui/core");var Ft=require("rxjs"),kt=require("rxjs/operators");var U=class{runNext(s,e){return e.run(s).pipe($(!1))}runNextWithState(s,e){let n=M(s.messages||[]),t=M(s.state||{}),a=new Ft.ReplaySubject;return J(s,a,e,[]).subscribe(o=>{o.messages!==void 0&&(n=o.messages),o.state!==void 0&&(t=o.state)}),this.runNext(s,e).pipe((0,kt.concatMap)(async o=>(a.next(o),await new Promise(l=>setTimeout(l,0)),{event:o,messages:M(n),state:M(t)})))}},W=class extends U{constructor(e){super();this.fn=e}run(e,n){return this.fn(e,n)}};var et=require("@ag-ui/core"),Bt=require("rxjs/operators"),nt=class extends U{constructor(e){super();this.blockedToolCallIds=new Set;if(e.allowedToolCalls&&e.disallowedToolCalls)throw new Error("Cannot specify both allowedToolCalls and disallowedToolCalls");if(!e.allowedToolCalls&&!e.disallowedToolCalls)throw new Error("Must specify either allowedToolCalls or disallowedToolCalls");e.allowedToolCalls?this.allowedTools=new Set(e.allowedToolCalls):e.disallowedToolCalls&&(this.disallowedTools=new Set(e.disallowedToolCalls))}run(e,n){return this.runNext(e,n).pipe((0,Bt.filter)(t=>{if(t.type===et.EventType.TOOL_CALL_START){let a=t;return this.shouldFilterTool(a.toolCallName)?(this.blockedToolCallIds.add(a.toolCallId),!1):!0}if(t.type===et.EventType.TOOL_CALL_ARGS){let a=t;return!this.blockedToolCallIds.has(a.toolCallId)}if(t.type===et.EventType.TOOL_CALL_END){let a=t;return!this.blockedToolCallIds.has(a.toolCallId)}if(t.type===et.EventType.TOOL_CALL_RESULT){let a=t;return this.blockedToolCallIds.has(a.toolCallId)?(this.blockedToolCallIds.delete(a.toolCallId),!1):!0}return!0}))}shouldFilterTool(e){return this.allowedTools?!this.allowedTools.has(e):this.disallowedTools?this.disallowedTools.has(e):!1}};function pe(i){let s=i.content;if(Array.isArray(s)){let e=s.filter(n=>typeof n=="object"&&n!==null&&"type"in n&&n.type==="text"&&typeof n.text=="string").map(n=>n.text).join("");return b(L({},i),{content:e})}return typeof s=="string"?i:b(L({},i),{content:""})}var Y=class extends U{run(s,e){let r=s,{parentRunId:n}=r,t=Rt(r,["parentRunId"]),a=b(L({},t),{messages:t.messages.map(pe)});return this.runNext(a,e)}};var Ut={name:"@scoutqa/ag-ui-client",author:"Markus Ecker <markus.ecker@gmail.com>",version:"0.0.42-fork.1",private:!1,publishConfig:{access:"public"},main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",sideEffects:!1,files:["dist/**","README.md"],scripts:{build:"tsup",dev:"tsup --watch",clean:"rm -rf dist .turbo node_modules",typecheck:"tsc --noEmit",test:"jest","link:global":"pnpm link --global","unlink:global":"pnpm unlink --global"},dependencies:{"@ag-ui/core":"workspace:*","@ag-ui/encoder":"workspace:*","@ag-ui/proto":"workspace:*","@types/uuid":"^10.0.0","compare-versions":"^6.1.1","fast-json-patch":"^3.1.1",rxjs:"7.8.1","untruncate-json":"^0.0.1",uuid:"^11.1.0",zod:"^3.22.4"},devDependencies:{"@types/jest":"^29.5.14","@types/node":"^20.11.19",jest:"^29.7.0","ts-jest":"^29.1.2",tsup:"^8.0.2",typescript:"^5.3.3"}};var Q=class{constructor({agentId:s,description:e,threadId:n,initialMessages:t,initialState:a,debug:r}={}){this.debug=!1;this.subscribers=[];this.isRunning=!1;this.middlewares=[];this.agentId=s,this.description=e!=null?e:"",this.threadId=n!=null?n:(0,q.v4)(),this.messages=M(t!=null?t:[]),this.state=M(a!=null?a:{}),this.debug=r!=null?r:!1,(0,jt.compareVersions)(this.maxVersion,"0.0.39")<=0&&this.middlewares.unshift(new Y)}get maxVersion(){return Ut.version}subscribe(s){return this.subscribers.push(s),{unsubscribe:()=>{this.subscribers=this.subscribers.filter(e=>e!==s)}}}use(...s){let e=s.map(n=>typeof n=="function"?new W(n):n);return this.middlewares.push(...e),this}async runAgent(s,e){var n;try{this.isRunning=!0,this.agentId=(n=this.agentId)!=null?n:(0,q.v4)();let t=this.prepareRunAgentInput(s),a,r=new Set(this.messages.map(S=>S.id)),o=[{onRunFinishedEvent:S=>{a=S.result}},...this.subscribers,e!=null?e:{}];await this.onInitialize(t,o),this.activeRunDetach$=new G.Subject;let l;this.activeRunCompletionPromise=new Promise(S=>{l=S});let d=(0,G.pipe)(()=>this.middlewares.length===0?this.run(t):this.middlewares.reduceRight((T,h)=>({run:c=>h.run(c,T)}),this).run(t),$(this.debug),V(this.debug),S=>S.pipe((0,At.takeUntil)(this.activeRunDetach$)),S=>this.apply(t,S,o),S=>this.processApplyEvents(t,S,o),(0,X.catchError)(S=>(this.isRunning=!1,this.onError(t,S,o))),(0,vt.finalize)(()=>{this.isRunning=!1,this.onFinalize(t,o),l==null||l(),l=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}));await(0,ht.lastValueFrom)(d((0,G.of)(null)));let C=M(this.messages).filter(S=>!r.has(S.id));return{result:a,newMessages:C}}finally{this.isRunning=!1}}connect(s){throw new yt.AGUIConnectNotImplementedError}async connectAgent(s,e){var n;try{this.isRunning=!0,this.agentId=(n=this.agentId)!=null?n:(0,q.v4)();let t=this.prepareRunAgentInput(s),a,r=new Set(this.messages.map(S=>S.id)),o=[{onRunFinishedEvent:S=>{a=S.result}},...this.subscribers,e!=null?e:{}];await this.onInitialize(t,o),this.activeRunDetach$=new G.Subject;let l;this.activeRunCompletionPromise=new Promise(S=>{l=S});let d=(0,G.pipe)(()=>this.connect(t),$(this.debug),V(this.debug),S=>S.pipe((0,At.takeUntil)(this.activeRunDetach$)),S=>this.apply(t,S,o),S=>this.processApplyEvents(t,S,o),(0,X.catchError)(S=>(this.isRunning=!1,S instanceof yt.AGUIConnectNotImplementedError?G.EMPTY:this.onError(t,S,o))),(0,vt.finalize)(()=>{this.isRunning=!1,this.onFinalize(t,o),l==null||l(),l=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}));await(0,ht.lastValueFrom)(d((0,G.of)(null)));let C=M(this.messages).filter(S=>!r.has(S.id));return{result:a,newMessages:C}}finally{this.isRunning=!1}}abortRun(){}async detachActiveRun(){var e,n;if(!this.activeRunDetach$)return;let s=(e=this.activeRunCompletionPromise)!=null?e:Promise.resolve();this.activeRunDetach$.next(),(n=this.activeRunDetach$)==null||n.complete(),await s}apply(s,e,n){return J(s,e,this,n)}processApplyEvents(s,e,n){return e.pipe((0,X.tap)(t=>{t.messages&&(this.messages=t.messages,n.forEach(a=>{var r;(r=a.onMessagesChanged)==null||r.call(a,{messages:this.messages,state:this.state,agent:this,input:s})})),t.state&&(this.state=t.state,n.forEach(a=>{var r;(r=a.onStateChanged)==null||r.call(a,{state:this.state,messages:this.messages,agent:this,input:s})}))}))}prepareRunAgentInput(s){var t,a,r;let n=M(this.messages).filter(o=>o.role!=="activity");return{threadId:this.threadId,runId:(s==null?void 0:s.runId)||(0,q.v4)(),tools:M((t=s==null?void 0:s.tools)!=null?t:[]),context:M((a=s==null?void 0:s.context)!=null?a:[]),forwardedProps:M((r=s==null?void 0:s.forwardedProps)!=null?r:{}),state:M(this.state),messages:n}}async onInitialize(s,e){let n=await N(e,this.messages,this.state,(t,a,r)=>{var o;return(o=t.onRunInitialized)==null?void 0:o.call(t,{messages:a,state:r,agent:this,input:s})});(n.messages!==void 0||n.state!==void 0)&&(n.messages&&(this.messages=n.messages,s.messages=n.messages,e.forEach(t=>{var a;(a=t.onMessagesChanged)==null||a.call(t,{messages:this.messages,state:this.state,agent:this,input:s})})),n.state&&(this.state=n.state,s.state=n.state,e.forEach(t=>{var a;(a=t.onStateChanged)==null||a.call(t,{state:this.state,messages:this.messages,agent:this,input:s})})))}onError(s,e,n){return(0,G.from)(N(n,this.messages,this.state,(t,a,r)=>{var o;return(o=t.onRunFailed)==null?void 0:o.call(t,{error:e,messages:a,state:r,agent:this,input:s})})).pipe((0,X.map)(t=>{let a=t;if((a.messages!==void 0||a.state!==void 0)&&(a.messages!==void 0&&(this.messages=a.messages,n.forEach(r=>{var o;(o=r.onMessagesChanged)==null||o.call(r,{messages:this.messages,state:this.state,agent:this,input:s})})),a.state!==void 0&&(this.state=a.state,n.forEach(r=>{var o;(o=r.onStateChanged)==null||o.call(r,{state:this.state,messages:this.messages,agent:this,input:s})}))),a.stopPropagation!==!0)throw console.error("Agent execution failed:",e),e;return{}}))}async onFinalize(s,e){let n=await N(e,this.messages,this.state,(t,a,r)=>{var o;return(o=t.onRunFinalized)==null?void 0:o.call(t,{messages:a,state:r,agent:this,input:s})});(n.messages!==void 0||n.state!==void 0)&&(n.messages!==void 0&&(this.messages=n.messages,e.forEach(t=>{var a;(a=t.onMessagesChanged)==null||a.call(t,{messages:this.messages,state:this.state,agent:this,input:s})})),n.state!==void 0&&(this.state=n.state,e.forEach(t=>{var a;(a=t.onStateChanged)==null||a.call(t,{state:this.state,messages:this.messages,agent:this,input:s})})))}clone(){let s=Object.create(Object.getPrototypeOf(this));return s.agentId=this.agentId,s.description=this.description,s.threadId=this.threadId,s.messages=M(this.messages),s.state=M(this.state),s.debug=this.debug,s.isRunning=this.isRunning,s.subscribers=[...this.subscribers],s.middlewares=[...this.middlewares],s}addMessage(s){this.messages.push(s),(async()=>{var e,n,t;for(let a of this.subscribers)await((e=a.onNewMessage)==null?void 0:e.call(a,{message:s,messages:this.messages,state:this.state,agent:this}));if(s.role==="assistant"&&s.toolCalls)for(let a of s.toolCalls)for(let r of this.subscribers)await((n=r.onNewToolCall)==null?void 0:n.call(r,{toolCall:a,messages:this.messages,state:this.state,agent:this}));for(let a of this.subscribers)await((t=a.onMessagesChanged)==null?void 0:t.call(a,{messages:this.messages,state:this.state,agent:this}))})()}addMessages(s){this.messages.push(...s),(async()=>{var e,n,t;for(let a of s){for(let r of this.subscribers)await((e=r.onNewMessage)==null?void 0:e.call(r,{message:a,messages:this.messages,state:this.state,agent:this}));if(a.role==="assistant"&&a.toolCalls)for(let r of a.toolCalls)for(let o of this.subscribers)await((n=o.onNewToolCall)==null?void 0:n.call(o,{toolCall:r,messages:this.messages,state:this.state,agent:this}))}for(let a of this.subscribers)await((t=a.onMessagesChanged)==null?void 0:t.call(a,{messages:this.messages,state:this.state,agent:this}))})()}setMessages(s){this.messages=M(s),(async()=>{var e;for(let n of this.subscribers)await((e=n.onMessagesChanged)==null?void 0:e.call(n,{messages:this.messages,state:this.state,agent:this}))})()}setState(s){this.state=M(s),(async()=>{var e;for(let n of this.subscribers)await((e=n.onStateChanged)==null?void 0:e.call(n,{messages:this.messages,state:this.state,agent:this}))})()}legacy_to_be_removed_runAgentBridged(s){var t;this.agentId=(t=this.agentId)!=null?t:(0,q.v4)();let e=this.prepareRunAgentInput(s);return(this.middlewares.length===0?this.run(e):this.middlewares.reduceRight((r,o)=>({run:l=>o.run(l,r)}),this).run(e)).pipe($(this.debug),V(this.debug),dt(this.threadId,e.runId,this.agentId),a=>a.pipe((0,X.map)(r=>(this.debug&&console.debug("[LEGACY]:",JSON.stringify(r)),r))))}};var mt=class extends Q{constructor(e){var n;super(e);this.abortController=new AbortController;this.url=e.url,this.headers=M((n=e.headers)!=null?n:{})}requestInit(e){return{method:"POST",headers:b(L({},this.headers),{"Content-Type":"application/json",Accept:"text/event-stream"}),body:JSON.stringify(e),signal:this.abortController.signal}}runAgent(e,n){var t;return this.abortController=(t=e==null?void 0:e.abortController)!=null?t:new AbortController,super.runAgent(e,n)}abortRun(){this.abortController.abort(),super.abortRun()}run(e){let n=lt(this.url,this.requestInit(e));return Et(n)}clone(){var a;let e=super.clone();e.url=this.url,e.headers=M((a=this.headers)!=null?a:{});let n=new AbortController,t=this.abortController.signal;return t.aborted&&n.abort(t.reason),e.abortController=n,e}};var j=require("@ag-ui/core");function zt(i){let s=[],e=new Map,n=new Map;for(let t of i)if(t.type===j.EventType.TEXT_MESSAGE_START){let a=t,r=a.messageId;e.has(r)||e.set(r,{contents:[],otherEvents:[]});let o=e.get(r);o.start=a}else if(t.type===j.EventType.TEXT_MESSAGE_CONTENT){let a=t,r=a.messageId;e.has(r)||e.set(r,{contents:[],otherEvents:[]}),e.get(r).contents.push(a)}else if(t.type===j.EventType.TEXT_MESSAGE_END){let a=t,r=a.messageId;e.has(r)||e.set(r,{contents:[],otherEvents:[]});let o=e.get(r);o.end=a,Xt(r,o,s),e.delete(r)}else if(t.type===j.EventType.TOOL_CALL_START){let a=t,r=a.toolCallId;n.has(r)||n.set(r,{args:[],otherEvents:[]});let o=n.get(r);o.start=a}else if(t.type===j.EventType.TOOL_CALL_ARGS){let a=t,r=a.toolCallId;n.has(r)||n.set(r,{args:[],otherEvents:[]}),n.get(r).args.push(a)}else if(t.type===j.EventType.TOOL_CALL_END){let a=t,r=a.toolCallId;n.has(r)||n.set(r,{args:[],otherEvents:[]});let o=n.get(r);o.end=a,$t(r,o,s),n.delete(r)}else{let a=!1;for(let[r,o]of e)if(o.start&&!o.end){o.otherEvents.push(t),a=!0;break}if(!a){for(let[r,o]of n)if(o.start&&!o.end){o.otherEvents.push(t),a=!0;break}}a||s.push(t)}for(let[t,a]of e)Xt(t,a,s);for(let[t,a]of n)$t(t,a,s);return s}function Xt(i,s,e){if(s.start&&e.push(s.start),s.contents.length>0){let n=s.contents.map(a=>a.delta).join(""),t={type:j.EventType.TEXT_MESSAGE_CONTENT,messageId:i,delta:n};e.push(t)}s.end&&e.push(s.end);for(let n of s.otherEvents)e.push(n)}function $t(i,s,e){if(s.start&&e.push(s.start),s.args.length>0){let n=s.args.map(a=>a.delta).join(""),t={type:j.EventType.TOOL_CALL_ARGS,toolCallId:i,delta:n};e.push(t)}s.end&&e.push(s.end);for(let n of s.otherEvents)e.push(n)}D(P,require("@ag-ui/core"),module.exports);0&&(module.exports={AbstractAgent,BackwardCompatibility_0_0_39,FilterToolCallsMiddleware,FunctionMiddleware,HttpAgent,Middleware,compactEvents,convertToLegacyEvents,defaultApplyEvents,parseProtoStream,parseSSEStream,randomUUID,runHttpRequest,structuredClone_,transformChunks,transformHttpEventStream,verifyEvents,...require("@ag-ui/core")});
|
|
8
|
+
//# sourceMappingURL=index.js.map
|