@livekit/agents 1.0.36 → 1.0.37
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/dist/voice/testing/index.cjs +2 -0
- package/dist/voice/testing/index.cjs.map +1 -1
- package/dist/voice/testing/index.d.cts +1 -1
- package/dist/voice/testing/index.d.ts +1 -1
- package/dist/voice/testing/index.d.ts.map +1 -1
- package/dist/voice/testing/index.js +2 -0
- package/dist/voice/testing/index.js.map +1 -1
- package/dist/voice/testing/run_result.cjs +294 -5
- package/dist/voice/testing/run_result.cjs.map +1 -1
- package/dist/voice/testing/run_result.d.cts +149 -1
- package/dist/voice/testing/run_result.d.ts +149 -1
- package/dist/voice/testing/run_result.d.ts.map +1 -1
- package/dist/voice/testing/run_result.js +293 -5
- package/dist/voice/testing/run_result.js.map +1 -1
- package/package.json +1 -1
- package/src/voice/testing/index.ts +1 -0
- package/src/voice/testing/run_result.ts +373 -12
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import type { AgentHandoffItem, ChatItem } from '../../llm/chat_context.js';
|
|
1
|
+
import type { AgentHandoffItem, ChatItem, ChatRole } from '../../llm/chat_context.js';
|
|
2
|
+
import type { LLM } from '../../llm/llm.js';
|
|
2
3
|
import type { Task } from '../../utils.js';
|
|
3
4
|
import type { Agent } from '../agent.js';
|
|
4
5
|
import { type SpeechHandle } from '../speech_handle.js';
|
|
5
6
|
import { type AgentHandoffAssertOptions, type AgentHandoffEvent, type ChatMessageEvent, type EventType, type FunctionCallAssertOptions, type FunctionCallEvent, type FunctionCallOutputAssertOptions, type FunctionCallOutputEvent, type MessageAssertOptions, type RunEvent } from './types.js';
|
|
7
|
+
type AgentConstructor = new (...args: any[]) => Agent;
|
|
6
8
|
/**
|
|
7
9
|
* Result of a test run containing recorded events and assertion utilities.
|
|
8
10
|
*
|
|
@@ -122,6 +124,84 @@ export declare class RunAssert {
|
|
|
122
124
|
* ```
|
|
123
125
|
*/
|
|
124
126
|
skipNext(count?: number): this;
|
|
127
|
+
/**
|
|
128
|
+
* Conditionally skip the next event if it matches the specified criteria.
|
|
129
|
+
* Returns the event assertion if matched and skipped, or undefined if not matched.
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* ```typescript
|
|
133
|
+
* // Skip optional assistant message before function call
|
|
134
|
+
* result.expect.skipNextEventIf({ type: 'message', role: 'assistant' });
|
|
135
|
+
* result.expect.nextEvent().isFunctionCall({ name: 'foo' });
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
138
|
+
skipNextEventIf(options: {
|
|
139
|
+
type: 'message';
|
|
140
|
+
role?: ChatRole;
|
|
141
|
+
} | {
|
|
142
|
+
type: 'function_call';
|
|
143
|
+
name?: string;
|
|
144
|
+
args?: Record<string, unknown>;
|
|
145
|
+
} | {
|
|
146
|
+
type: 'function_call_output';
|
|
147
|
+
output?: string;
|
|
148
|
+
isError?: boolean;
|
|
149
|
+
} | {
|
|
150
|
+
type: 'agent_handoff';
|
|
151
|
+
newAgentType?: AgentConstructor;
|
|
152
|
+
}): MessageAssert | FunctionCallAssert | FunctionCallOutputAssert | AgentHandoffAssert | undefined;
|
|
153
|
+
/**
|
|
154
|
+
* Get an EventRangeAssert for a range of events.
|
|
155
|
+
* Similar to Python's slice access: expect[0:3] or expect[:]
|
|
156
|
+
*
|
|
157
|
+
* @param start - Start index (inclusive), defaults to 0
|
|
158
|
+
* @param end - End index (exclusive), defaults to events.length
|
|
159
|
+
*
|
|
160
|
+
* @example
|
|
161
|
+
* ```typescript
|
|
162
|
+
* // Search all events
|
|
163
|
+
* result.expect.range().containsFunctionCall({ name: 'foo' });
|
|
164
|
+
* // Search first 3 events
|
|
165
|
+
* result.expect.range(0, 3).containsMessage({ role: 'assistant' });
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
range(start?: number, end?: number): EventRangeAssert;
|
|
169
|
+
/**
|
|
170
|
+
* Assert that a function call matching criteria exists anywhere in the events.
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```typescript
|
|
174
|
+
* result.expect.containsFunctionCall({ name: 'order_item' });
|
|
175
|
+
* ```
|
|
176
|
+
*/
|
|
177
|
+
containsFunctionCall(options?: FunctionCallAssertOptions): FunctionCallAssert;
|
|
178
|
+
/**
|
|
179
|
+
* Assert that a message matching criteria exists anywhere in the events.
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* ```typescript
|
|
183
|
+
* result.expect.containsMessage({ role: 'assistant' });
|
|
184
|
+
* ```
|
|
185
|
+
*/
|
|
186
|
+
containsMessage(options?: MessageAssertOptions): MessageAssert;
|
|
187
|
+
/**
|
|
188
|
+
* Assert that a function call output matching criteria exists anywhere in the events.
|
|
189
|
+
*
|
|
190
|
+
* @example
|
|
191
|
+
* ```typescript
|
|
192
|
+
* result.expect.containsFunctionCallOutput({ isError: false });
|
|
193
|
+
* ```
|
|
194
|
+
*/
|
|
195
|
+
containsFunctionCallOutput(options?: FunctionCallOutputAssertOptions): FunctionCallOutputAssert;
|
|
196
|
+
/**
|
|
197
|
+
* Assert that an agent handoff matching criteria exists anywhere in the events.
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
* ```typescript
|
|
201
|
+
* result.expect.containsAgentHandoff({ newAgentType: MyAgent });
|
|
202
|
+
* ```
|
|
203
|
+
*/
|
|
204
|
+
containsAgentHandoff(options?: AgentHandoffAssertOptions): AgentHandoffAssert;
|
|
125
205
|
/**
|
|
126
206
|
* Assert that there are no further events.
|
|
127
207
|
*
|
|
@@ -185,6 +265,55 @@ export declare class EventAssert {
|
|
|
185
265
|
*/
|
|
186
266
|
isAgentHandoff(options?: AgentHandoffAssertOptions): AgentHandoffAssert;
|
|
187
267
|
}
|
|
268
|
+
/**
|
|
269
|
+
* Assertion wrapper for a range of events.
|
|
270
|
+
* Provides contains*() methods to search within the range.
|
|
271
|
+
*/
|
|
272
|
+
export declare class EventRangeAssert {
|
|
273
|
+
private _events;
|
|
274
|
+
private _parent;
|
|
275
|
+
private _range;
|
|
276
|
+
constructor(events: RunEvent[], parent: RunAssert, range: {
|
|
277
|
+
start: number;
|
|
278
|
+
end: number;
|
|
279
|
+
});
|
|
280
|
+
/**
|
|
281
|
+
* Assert that a function call matching criteria exists in this event range.
|
|
282
|
+
*
|
|
283
|
+
* @example
|
|
284
|
+
* ```typescript
|
|
285
|
+
* result.expect.range(0, 3).containsFunctionCall({ name: 'foo' });
|
|
286
|
+
* ```
|
|
287
|
+
*/
|
|
288
|
+
containsFunctionCall(options?: FunctionCallAssertOptions): FunctionCallAssert;
|
|
289
|
+
/**
|
|
290
|
+
* Assert that a message matching criteria exists in this event range.
|
|
291
|
+
*
|
|
292
|
+
* @example
|
|
293
|
+
* ```typescript
|
|
294
|
+
* result.expect.range(0, 2).containsMessage({ role: 'assistant' });
|
|
295
|
+
* ```
|
|
296
|
+
*/
|
|
297
|
+
containsMessage(options?: MessageAssertOptions): MessageAssert;
|
|
298
|
+
/**
|
|
299
|
+
* Assert that a function call output matching criteria exists in this event range.
|
|
300
|
+
*
|
|
301
|
+
* @example
|
|
302
|
+
* ```typescript
|
|
303
|
+
* result.expect.range(1, 4).containsFunctionCallOutput({ isError: true });
|
|
304
|
+
* ```
|
|
305
|
+
*/
|
|
306
|
+
containsFunctionCallOutput(options?: FunctionCallOutputAssertOptions): FunctionCallOutputAssert;
|
|
307
|
+
/**
|
|
308
|
+
* Assert that an agent handoff matching criteria exists in this event range.
|
|
309
|
+
*
|
|
310
|
+
* @example
|
|
311
|
+
* ```typescript
|
|
312
|
+
* result.expect.range(0, 3).containsAgentHandoff({ newAgentType: MyAgent });
|
|
313
|
+
* ```
|
|
314
|
+
*/
|
|
315
|
+
containsAgentHandoff(options?: AgentHandoffAssertOptions): AgentHandoffAssert;
|
|
316
|
+
}
|
|
188
317
|
/**
|
|
189
318
|
* Assertion wrapper for message events.
|
|
190
319
|
*/
|
|
@@ -192,6 +321,24 @@ export declare class MessageAssert extends EventAssert {
|
|
|
192
321
|
protected _event: ChatMessageEvent;
|
|
193
322
|
constructor(event: ChatMessageEvent, parent: RunAssert, index: number);
|
|
194
323
|
event(): ChatMessageEvent;
|
|
324
|
+
/**
|
|
325
|
+
* Evaluate whether the message fulfills the given intent using an LLM.
|
|
326
|
+
*
|
|
327
|
+
* @param llm - LLM instance for judgment
|
|
328
|
+
* @param options - Options containing the intent description
|
|
329
|
+
* @returns Self for chaining further assertions
|
|
330
|
+
*
|
|
331
|
+
* @example
|
|
332
|
+
* ```typescript
|
|
333
|
+
* await result.expect
|
|
334
|
+
* .nextEvent()
|
|
335
|
+
* .isMessage({ role: 'assistant' })
|
|
336
|
+
* .judge(llm, { intent: 'should ask for the drink size' });
|
|
337
|
+
* ```
|
|
338
|
+
*/
|
|
339
|
+
judge(llm: LLM, options: {
|
|
340
|
+
intent: string;
|
|
341
|
+
}): Promise<MessageAssert>;
|
|
195
342
|
}
|
|
196
343
|
/**
|
|
197
344
|
* Assertion wrapper for function call events.
|
|
@@ -223,4 +370,5 @@ export declare class AgentHandoffAssert extends EventAssert {
|
|
|
223
370
|
export declare class AssertionError extends Error {
|
|
224
371
|
constructor(message: string);
|
|
225
372
|
}
|
|
373
|
+
export {};
|
|
226
374
|
//# sourceMappingURL=run_result.d.ts.map
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import type { AgentHandoffItem, ChatItem } from '../../llm/chat_context.js';
|
|
1
|
+
import type { AgentHandoffItem, ChatItem, ChatRole } from '../../llm/chat_context.js';
|
|
2
|
+
import type { LLM } from '../../llm/llm.js';
|
|
2
3
|
import type { Task } from '../../utils.js';
|
|
3
4
|
import type { Agent } from '../agent.js';
|
|
4
5
|
import { type SpeechHandle } from '../speech_handle.js';
|
|
5
6
|
import { type AgentHandoffAssertOptions, type AgentHandoffEvent, type ChatMessageEvent, type EventType, type FunctionCallAssertOptions, type FunctionCallEvent, type FunctionCallOutputAssertOptions, type FunctionCallOutputEvent, type MessageAssertOptions, type RunEvent } from './types.js';
|
|
7
|
+
type AgentConstructor = new (...args: any[]) => Agent;
|
|
6
8
|
/**
|
|
7
9
|
* Result of a test run containing recorded events and assertion utilities.
|
|
8
10
|
*
|
|
@@ -122,6 +124,84 @@ export declare class RunAssert {
|
|
|
122
124
|
* ```
|
|
123
125
|
*/
|
|
124
126
|
skipNext(count?: number): this;
|
|
127
|
+
/**
|
|
128
|
+
* Conditionally skip the next event if it matches the specified criteria.
|
|
129
|
+
* Returns the event assertion if matched and skipped, or undefined if not matched.
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* ```typescript
|
|
133
|
+
* // Skip optional assistant message before function call
|
|
134
|
+
* result.expect.skipNextEventIf({ type: 'message', role: 'assistant' });
|
|
135
|
+
* result.expect.nextEvent().isFunctionCall({ name: 'foo' });
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
138
|
+
skipNextEventIf(options: {
|
|
139
|
+
type: 'message';
|
|
140
|
+
role?: ChatRole;
|
|
141
|
+
} | {
|
|
142
|
+
type: 'function_call';
|
|
143
|
+
name?: string;
|
|
144
|
+
args?: Record<string, unknown>;
|
|
145
|
+
} | {
|
|
146
|
+
type: 'function_call_output';
|
|
147
|
+
output?: string;
|
|
148
|
+
isError?: boolean;
|
|
149
|
+
} | {
|
|
150
|
+
type: 'agent_handoff';
|
|
151
|
+
newAgentType?: AgentConstructor;
|
|
152
|
+
}): MessageAssert | FunctionCallAssert | FunctionCallOutputAssert | AgentHandoffAssert | undefined;
|
|
153
|
+
/**
|
|
154
|
+
* Get an EventRangeAssert for a range of events.
|
|
155
|
+
* Similar to Python's slice access: expect[0:3] or expect[:]
|
|
156
|
+
*
|
|
157
|
+
* @param start - Start index (inclusive), defaults to 0
|
|
158
|
+
* @param end - End index (exclusive), defaults to events.length
|
|
159
|
+
*
|
|
160
|
+
* @example
|
|
161
|
+
* ```typescript
|
|
162
|
+
* // Search all events
|
|
163
|
+
* result.expect.range().containsFunctionCall({ name: 'foo' });
|
|
164
|
+
* // Search first 3 events
|
|
165
|
+
* result.expect.range(0, 3).containsMessage({ role: 'assistant' });
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
range(start?: number, end?: number): EventRangeAssert;
|
|
169
|
+
/**
|
|
170
|
+
* Assert that a function call matching criteria exists anywhere in the events.
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```typescript
|
|
174
|
+
* result.expect.containsFunctionCall({ name: 'order_item' });
|
|
175
|
+
* ```
|
|
176
|
+
*/
|
|
177
|
+
containsFunctionCall(options?: FunctionCallAssertOptions): FunctionCallAssert;
|
|
178
|
+
/**
|
|
179
|
+
* Assert that a message matching criteria exists anywhere in the events.
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* ```typescript
|
|
183
|
+
* result.expect.containsMessage({ role: 'assistant' });
|
|
184
|
+
* ```
|
|
185
|
+
*/
|
|
186
|
+
containsMessage(options?: MessageAssertOptions): MessageAssert;
|
|
187
|
+
/**
|
|
188
|
+
* Assert that a function call output matching criteria exists anywhere in the events.
|
|
189
|
+
*
|
|
190
|
+
* @example
|
|
191
|
+
* ```typescript
|
|
192
|
+
* result.expect.containsFunctionCallOutput({ isError: false });
|
|
193
|
+
* ```
|
|
194
|
+
*/
|
|
195
|
+
containsFunctionCallOutput(options?: FunctionCallOutputAssertOptions): FunctionCallOutputAssert;
|
|
196
|
+
/**
|
|
197
|
+
* Assert that an agent handoff matching criteria exists anywhere in the events.
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
* ```typescript
|
|
201
|
+
* result.expect.containsAgentHandoff({ newAgentType: MyAgent });
|
|
202
|
+
* ```
|
|
203
|
+
*/
|
|
204
|
+
containsAgentHandoff(options?: AgentHandoffAssertOptions): AgentHandoffAssert;
|
|
125
205
|
/**
|
|
126
206
|
* Assert that there are no further events.
|
|
127
207
|
*
|
|
@@ -185,6 +265,55 @@ export declare class EventAssert {
|
|
|
185
265
|
*/
|
|
186
266
|
isAgentHandoff(options?: AgentHandoffAssertOptions): AgentHandoffAssert;
|
|
187
267
|
}
|
|
268
|
+
/**
|
|
269
|
+
* Assertion wrapper for a range of events.
|
|
270
|
+
* Provides contains*() methods to search within the range.
|
|
271
|
+
*/
|
|
272
|
+
export declare class EventRangeAssert {
|
|
273
|
+
private _events;
|
|
274
|
+
private _parent;
|
|
275
|
+
private _range;
|
|
276
|
+
constructor(events: RunEvent[], parent: RunAssert, range: {
|
|
277
|
+
start: number;
|
|
278
|
+
end: number;
|
|
279
|
+
});
|
|
280
|
+
/**
|
|
281
|
+
* Assert that a function call matching criteria exists in this event range.
|
|
282
|
+
*
|
|
283
|
+
* @example
|
|
284
|
+
* ```typescript
|
|
285
|
+
* result.expect.range(0, 3).containsFunctionCall({ name: 'foo' });
|
|
286
|
+
* ```
|
|
287
|
+
*/
|
|
288
|
+
containsFunctionCall(options?: FunctionCallAssertOptions): FunctionCallAssert;
|
|
289
|
+
/**
|
|
290
|
+
* Assert that a message matching criteria exists in this event range.
|
|
291
|
+
*
|
|
292
|
+
* @example
|
|
293
|
+
* ```typescript
|
|
294
|
+
* result.expect.range(0, 2).containsMessage({ role: 'assistant' });
|
|
295
|
+
* ```
|
|
296
|
+
*/
|
|
297
|
+
containsMessage(options?: MessageAssertOptions): MessageAssert;
|
|
298
|
+
/**
|
|
299
|
+
* Assert that a function call output matching criteria exists in this event range.
|
|
300
|
+
*
|
|
301
|
+
* @example
|
|
302
|
+
* ```typescript
|
|
303
|
+
* result.expect.range(1, 4).containsFunctionCallOutput({ isError: true });
|
|
304
|
+
* ```
|
|
305
|
+
*/
|
|
306
|
+
containsFunctionCallOutput(options?: FunctionCallOutputAssertOptions): FunctionCallOutputAssert;
|
|
307
|
+
/**
|
|
308
|
+
* Assert that an agent handoff matching criteria exists in this event range.
|
|
309
|
+
*
|
|
310
|
+
* @example
|
|
311
|
+
* ```typescript
|
|
312
|
+
* result.expect.range(0, 3).containsAgentHandoff({ newAgentType: MyAgent });
|
|
313
|
+
* ```
|
|
314
|
+
*/
|
|
315
|
+
containsAgentHandoff(options?: AgentHandoffAssertOptions): AgentHandoffAssert;
|
|
316
|
+
}
|
|
188
317
|
/**
|
|
189
318
|
* Assertion wrapper for message events.
|
|
190
319
|
*/
|
|
@@ -192,6 +321,24 @@ export declare class MessageAssert extends EventAssert {
|
|
|
192
321
|
protected _event: ChatMessageEvent;
|
|
193
322
|
constructor(event: ChatMessageEvent, parent: RunAssert, index: number);
|
|
194
323
|
event(): ChatMessageEvent;
|
|
324
|
+
/**
|
|
325
|
+
* Evaluate whether the message fulfills the given intent using an LLM.
|
|
326
|
+
*
|
|
327
|
+
* @param llm - LLM instance for judgment
|
|
328
|
+
* @param options - Options containing the intent description
|
|
329
|
+
* @returns Self for chaining further assertions
|
|
330
|
+
*
|
|
331
|
+
* @example
|
|
332
|
+
* ```typescript
|
|
333
|
+
* await result.expect
|
|
334
|
+
* .nextEvent()
|
|
335
|
+
* .isMessage({ role: 'assistant' })
|
|
336
|
+
* .judge(llm, { intent: 'should ask for the drink size' });
|
|
337
|
+
* ```
|
|
338
|
+
*/
|
|
339
|
+
judge(llm: LLM, options: {
|
|
340
|
+
intent: string;
|
|
341
|
+
}): Promise<MessageAssert>;
|
|
195
342
|
}
|
|
196
343
|
/**
|
|
197
344
|
* Assertion wrapper for function call events.
|
|
@@ -223,4 +370,5 @@ export declare class AgentHandoffAssert extends EventAssert {
|
|
|
223
370
|
export declare class AssertionError extends Error {
|
|
224
371
|
constructor(message: string);
|
|
225
372
|
}
|
|
373
|
+
export {};
|
|
226
374
|
//# sourceMappingURL=run_result.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run_result.d.ts","sourceRoot":"","sources":["../../../src/voice/testing/run_result.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run_result.d.ts","sourceRoot":"","sources":["../../../src/voice/testing/run_result.ts"],"names":[],"mappings":"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"}
|