Skip to content

Commit 1ed65d6

Browse files
committed
fix unit tests
1 parent af892ac commit 1ed65d6

File tree

5 files changed

+70
-42
lines changed

5 files changed

+70
-42
lines changed

sdks/typescript/packages/client/src/agent/agent.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ export abstract class AbstractAgent {
3030
public subscribers: AgentSubscriber[] = [];
3131
private middlewares: Middleware[] = [];
3232

33+
public readonly maxVersion: string = "*";
34+
3335
constructor({
3436
agentId,
3537
description,
@@ -94,10 +96,11 @@ export abstract class AbstractAgent {
9496
}
9597

9698
const chainedAgent = this.middlewares.reduceRight(
97-
(nextAgent: AbstractAgent, middleware) => ({
98-
run: (i: RunAgentInput) => middleware.run(i, nextAgent),
99-
} as AbstractAgent),
100-
this // Original agent is the final 'next'
99+
(nextAgent: AbstractAgent, middleware) =>
100+
({
101+
run: (i: RunAgentInput) => middleware.run(i, nextAgent),
102+
}) as AbstractAgent,
103+
this, // Original agent is the final 'next'
101104
);
102105

103106
return chainedAgent.run(input);
@@ -447,10 +450,11 @@ export abstract class AbstractAgent {
447450
}
448451

449452
const chainedAgent = this.middlewares.reduceRight(
450-
(nextAgent: AbstractAgent, middleware) => ({
451-
run: (i: RunAgentInput) => middleware.run(i, nextAgent)
452-
} as AbstractAgent),
453-
this
453+
(nextAgent: AbstractAgent, middleware) =>
454+
({
455+
run: (i: RunAgentInput) => middleware.run(i, nextAgent),
456+
}) as AbstractAgent,
457+
this,
454458
);
455459

456460
return chainedAgent.run(input);

sdks/typescript/packages/client/src/middleware/__tests__/function-middleware.test.ts

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,25 +39,31 @@ describe("FunctionMiddleware", () => {
3939

4040
const middlewareFn: MiddlewareFunction = (middlewareInput, next) => {
4141
return new Observable<BaseEvent>((subscriber) => {
42-
subscriber.next({
43-
type: EventType.RUN_STARTED,
44-
threadId: middlewareInput.threadId,
45-
runId: middlewareInput.runId,
46-
});
47-
48-
next.run(middlewareInput).subscribe({
42+
const subscription = next.run(middlewareInput).subscribe({
4943
next: (event) => {
44+
if (event.type === EventType.RUN_STARTED) {
45+
subscriber.next({
46+
...event,
47+
metadata: { ...(event as any).metadata, fromMiddleware: true },
48+
});
49+
return;
50+
}
51+
5052
if (event.type === EventType.RUN_FINISHED) {
5153
subscriber.next({
5254
...event,
5355
result: { success: true },
5456
});
55-
} else {
56-
subscriber.next(event);
57+
return;
5758
}
59+
60+
subscriber.next(event);
5861
},
62+
error: (error) => subscriber.error(error),
5963
complete: () => subscriber.complete(),
6064
});
65+
66+
return () => subscription.unsubscribe();
6167
});
6268
};
6369

@@ -73,6 +79,7 @@ describe("FunctionMiddleware", () => {
7379

7480
expect(events.length).toBe(2);
7581
expect(events[0].type).toBe(EventType.RUN_STARTED);
82+
expect((events[0] as any).metadata).toEqual({ fromMiddleware: true });
7683
expect(events[1].type).toBe(EventType.RUN_FINISHED);
7784
expect((events[1] as any).result).toEqual({ success: true });
7885
});

sdks/typescript/packages/client/src/middleware/__tests__/middleware-live-events.test.ts

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,17 +42,27 @@ describe("Middleware live events", () => {
4242
class CustomMiddleware extends Middleware {
4343
run(input: RunAgentInput, next: AbstractAgent): Observable<BaseEvent> {
4444
return new Observable<BaseEvent>((subscriber) => {
45-
subscriber.next({
46-
type: EventType.RUN_STARTED,
47-
threadId: input.threadId,
48-
runId: input.runId,
49-
metadata: { custom: true },
50-
} as RunStartedEvent);
45+
const subscription = next.run(input).subscribe({
46+
next: (event) => {
47+
if (event.type === EventType.RUN_STARTED) {
48+
const started = event as RunStartedEvent;
49+
subscriber.next({
50+
...started,
51+
metadata: {
52+
...(started.metadata ?? {}),
53+
custom: true,
54+
},
55+
});
56+
return;
57+
}
5158

52-
next.run(input).subscribe({
53-
next: (event) => subscriber.next(event),
59+
subscriber.next(event);
60+
},
61+
error: (error) => subscriber.error(error),
5462
complete: () => subscriber.complete(),
5563
});
64+
65+
return () => subscription.unsubscribe();
5666
});
5767
}
5868
}
@@ -82,7 +92,7 @@ describe("Middleware live events", () => {
8292
expect(events.length).toBe(3);
8393
expect(events[0].type).toBe(EventType.RUN_STARTED);
8494
expect((events[0] as RunStartedEvent).metadata).toEqual({ custom: true });
85-
expect(events[1].type).toBe(EventType.RUN_STARTED);
86-
expect(events[2].type).toBe(EventType.TEXT_MESSAGE_CHUNK);
95+
expect(events[1].type).toBe(EventType.TEXT_MESSAGE_CHUNK);
96+
expect(events[2].type).toBe(EventType.RUN_FINISHED);
8797
});
8898
});

sdks/typescript/packages/client/src/middleware/__tests__/middleware-with-state.test.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,11 @@ describe("Middleware runNextWithState", () => {
7373
});
7474
});
7575

76-
expect(events.length).toBe(3);
76+
expect(events.length).toBe(5);
7777
expect(events[0].type).toBe(EventType.RUN_STARTED);
78-
expect(events[1].type).toBe(EventType.TEXT_MESSAGE_CHUNK);
79-
expect(events[2].type).toBe(EventType.RUN_FINISHED);
78+
expect(events[1].type).toBe(EventType.TEXT_MESSAGE_START);
79+
expect(events[2].type).toBe(EventType.TEXT_MESSAGE_CONTENT);
80+
expect(events[3].type).toBe(EventType.TEXT_MESSAGE_END);
81+
expect(events[4].type).toBe(EventType.RUN_FINISHED);
8082
});
8183
});

sdks/typescript/packages/client/src/middleware/__tests__/middleware.test.ts

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,23 @@ describe("Middleware", () => {
2828
class TestMiddleware extends Middleware {
2929
run(input: RunAgentInput, next: AbstractAgent): Observable<BaseEvent> {
3030
return new Observable<BaseEvent>((subscriber) => {
31-
subscriber.next({
32-
type: EventType.RUN_STARTED,
33-
threadId: input.threadId,
34-
runId: input.runId,
35-
metadata: { middleware: true },
36-
});
31+
const subscription = next.run(input).subscribe({
32+
next: (event) => {
33+
if (event.type === EventType.RUN_STARTED) {
34+
subscriber.next({
35+
...event,
36+
metadata: { ...(event as any).metadata, middleware: true },
37+
});
38+
return;
39+
}
3740

38-
next.run(input).subscribe({
39-
next: (event) => subscriber.next(event),
41+
subscriber.next(event);
42+
},
43+
error: (error) => subscriber.error(error),
4044
complete: () => subscriber.complete(),
4145
});
46+
47+
return () => subscription.unsubscribe();
4248
});
4349
}
4450
}
@@ -65,11 +71,10 @@ describe("Middleware", () => {
6571
});
6672
});
6773

68-
expect(events.length).toBe(3);
74+
expect(events.length).toBe(2);
6975
expect(events[0].type).toBe(EventType.RUN_STARTED);
7076
expect((events[0] as any).metadata).toEqual({ middleware: true });
71-
expect(events[1].type).toBe(EventType.RUN_STARTED);
72-
expect(events[2].type).toBe(EventType.RUN_FINISHED);
73-
expect((events[2] as any).result).toEqual({ success: true });
77+
expect(events[1].type).toBe(EventType.RUN_FINISHED);
78+
expect((events[1] as any).result).toEqual({ success: true });
7479
});
7580
});

0 commit comments

Comments
 (0)