@mastra/evals 1.10.1 → 1.10.2-alpha.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/dist/{checks-DGTgg-nW.cjs → checks-CGRgwpDb.cjs} +20 -9
- package/dist/checks-CGRgwpDb.cjs.map +1 -0
- package/dist/{checks-64AonnEK.js → checks-DX9-p5w0.js} +21 -10
- package/dist/checks-DX9-p5w0.js.map +1 -0
- package/dist/checks.cjs +1 -1
- package/dist/checks.js +1 -1
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/scorers/code/checks/index.d.ts +5 -2
- package/dist/scorers/code/checks/index.d.ts.map +1 -1
- package/dist/scorers/code/trajectory/index.d.ts.map +1 -1
- package/dist/scorers/prebuilt/index.cjs +15 -13
- package/dist/scorers/prebuilt/index.cjs.map +1 -1
- package/dist/scorers/prebuilt/index.js +15 -13
- package/dist/scorers/prebuilt/index.js.map +1 -1
- package/dist/scorers/utils.cjs +91 -16
- package/dist/scorers/utils.cjs.map +1 -1
- package/dist/scorers/utils.d.ts +72 -10
- package/dist/scorers/utils.d.ts.map +1 -1
- package/dist/scorers/utils.js +91 -17
- package/dist/scorers/utils.js.map +1 -1
- package/package.json +4 -4
- package/dist/checks-64AonnEK.js.map +0 -1
- package/dist/checks-DGTgg-nW.cjs.map +0 -1
package/dist/scorers/utils.d.ts
CHANGED
|
@@ -250,8 +250,10 @@ export declare const getReasoningFromRunOutput: (output?: ScorerRunOutputForAgen
|
|
|
250
250
|
* @param options.toolCallId - Unique identifier for the tool call
|
|
251
251
|
* @param options.toolName - Name of the tool being called
|
|
252
252
|
* @param options.args - Arguments passed to the tool
|
|
253
|
-
* @param options.result - Result returned by the tool
|
|
253
|
+
* @param options.result - Result returned by the tool (absent for a thrown call)
|
|
254
254
|
* @param options.state - State of the invocation (default: 'result')
|
|
255
|
+
* @param options.errorText - Error text recorded when a tool threw (`state: 'output-error'`)
|
|
256
|
+
* @param options.isError - Set alongside `state: 'result'` when the executor reported a failure
|
|
255
257
|
* @returns A tool invocation object
|
|
256
258
|
*
|
|
257
259
|
* @example
|
|
@@ -262,20 +264,33 @@ export declare const getReasoningFromRunOutput: (output?: ScorerRunOutputForAgen
|
|
|
262
264
|
* args: { location: 'London' },
|
|
263
265
|
* result: { temperature: 20, condition: 'sunny' },
|
|
264
266
|
* });
|
|
267
|
+
*
|
|
268
|
+
* // A tool that threw
|
|
269
|
+
* const thrown = createToolInvocation({
|
|
270
|
+
* toolCallId: 'call-456',
|
|
271
|
+
* toolName: 'saveTool',
|
|
272
|
+
* args: { value: 'x' },
|
|
273
|
+
* state: 'output-error',
|
|
274
|
+
* errorText: 'Save failed',
|
|
275
|
+
* });
|
|
265
276
|
* ```
|
|
266
277
|
*/
|
|
267
|
-
export declare const createToolInvocation: ({ toolCallId, toolName, args, result, state, }: {
|
|
278
|
+
export declare const createToolInvocation: ({ toolCallId, toolName, args, result, state, errorText, isError, }: {
|
|
268
279
|
toolCallId: string;
|
|
269
280
|
toolName: string;
|
|
270
281
|
args: Record<string, any>;
|
|
271
|
-
result
|
|
272
|
-
state?: 'call' | 'partial-call' | 'result';
|
|
282
|
+
result?: Record<string, any>;
|
|
283
|
+
state?: 'call' | 'partial-call' | 'result' | 'output-error';
|
|
284
|
+
errorText?: string;
|
|
285
|
+
isError?: boolean;
|
|
273
286
|
}) => {
|
|
274
287
|
toolCallId: string;
|
|
275
288
|
toolName: string;
|
|
276
289
|
args: Record<string, any>;
|
|
277
|
-
result: Record<string, any
|
|
278
|
-
state:
|
|
290
|
+
result: Record<string, any> | undefined;
|
|
291
|
+
state: 'call' | 'partial-call' | 'result' | 'output-error';
|
|
292
|
+
errorText?: string;
|
|
293
|
+
isError?: boolean;
|
|
279
294
|
};
|
|
280
295
|
/**
|
|
281
296
|
* Creates a MastraDBMessage object for testing purposes.
|
|
@@ -308,9 +323,28 @@ export declare const createToolInvocation: ({ toolCallId, toolName, args, result
|
|
|
308
323
|
* state: 'result',
|
|
309
324
|
* }],
|
|
310
325
|
* });
|
|
326
|
+
*
|
|
327
|
+
* // With native V2 parts — the only form that can carry a thrown call
|
|
328
|
+
* const messageWithThrownTool = createTestMessage({
|
|
329
|
+
* content: 'That failed.',
|
|
330
|
+
* role: 'assistant',
|
|
331
|
+
* parts: [
|
|
332
|
+
* { type: 'text', text: 'That failed.' },
|
|
333
|
+
* {
|
|
334
|
+
* type: 'tool-invocation',
|
|
335
|
+
* toolInvocation: createToolInvocation({
|
|
336
|
+
* toolCallId: 'call-2',
|
|
337
|
+
* toolName: 'saveTool',
|
|
338
|
+
* args: { value: 'x' },
|
|
339
|
+
* state: 'output-error',
|
|
340
|
+
* errorText: 'Save failed',
|
|
341
|
+
* }),
|
|
342
|
+
* },
|
|
343
|
+
* ],
|
|
344
|
+
* });
|
|
311
345
|
* ```
|
|
312
346
|
*/
|
|
313
|
-
export declare function createTestMessage({ content, role, id, toolInvocations, }: {
|
|
347
|
+
export declare function createTestMessage({ content, role, id, toolInvocations, parts, }: {
|
|
314
348
|
content: string;
|
|
315
349
|
role: 'user' | 'assistant' | 'system';
|
|
316
350
|
id?: string;
|
|
@@ -318,9 +352,15 @@ export declare function createTestMessage({ content, role, id, toolInvocations,
|
|
|
318
352
|
toolCallId: string;
|
|
319
353
|
toolName: string;
|
|
320
354
|
args: Record<string, any>;
|
|
321
|
-
result
|
|
355
|
+
result?: Record<string, any>;
|
|
322
356
|
state: any;
|
|
323
357
|
}>;
|
|
358
|
+
/**
|
|
359
|
+
* Native V2 message parts. Replaces the default single text part when provided.
|
|
360
|
+
* Needed to express invocations the legacy array cannot carry, such as a thrown
|
|
361
|
+
* call (`state: 'output-error'` with `errorText`).
|
|
362
|
+
*/
|
|
363
|
+
parts?: MastraDBMessage['content']['parts'];
|
|
324
364
|
}): MastraDBMessage;
|
|
325
365
|
/**
|
|
326
366
|
* Creates a complete agent test run object for testing scorers.
|
|
@@ -410,11 +450,33 @@ export type ToolCallInfo = {
|
|
|
410
450
|
/** Index of the invocation within the message's tool invocations */
|
|
411
451
|
invocationIndex: number;
|
|
412
452
|
};
|
|
453
|
+
/**
|
|
454
|
+
* Merges the two places a message can store tool invocations into one list.
|
|
455
|
+
*
|
|
456
|
+
* A native message may carry `content.parts` tool-invocation entries, the legacy
|
|
457
|
+
* `content.toolInvocations` array, or both. Neither form is a superset of the
|
|
458
|
+
* other: thrown calls are recorded in parts as `state: 'output-error'` and can be
|
|
459
|
+
* missing from the legacy array, while older persisted messages may only carry the
|
|
460
|
+
* legacy array. Reading one form exclusively therefore hides real calls.
|
|
461
|
+
*
|
|
462
|
+
* Parts win when the same `toolCallId` appears in both, since they hold the real
|
|
463
|
+
* terminal state. Legacy-only calls are retained before their next shared anchor so
|
|
464
|
+
* compatible call order survives instead of being appended.
|
|
465
|
+
*
|
|
466
|
+
* Mirrors `extractTrajectory` in `@mastra/core` (`packages/core/src/evals/types.ts`)
|
|
467
|
+
* so tool-use checks and trajectory scorers agree on what a run actually called.
|
|
468
|
+
* Keep the two in step.
|
|
469
|
+
*
|
|
470
|
+
* @param message - A single message from the scorer run output
|
|
471
|
+
* @returns The merged tool invocations for that message
|
|
472
|
+
*/
|
|
473
|
+
export declare function mergeToolInvocations(message: MastraDBMessage | undefined): import("@mastra/core/agent/message-list").MastraToolInvocation[];
|
|
413
474
|
/**
|
|
414
475
|
* Extracts all tool calls from a scorer run output.
|
|
415
476
|
*
|
|
416
|
-
* Iterates through all messages and their tool invocations to collect
|
|
417
|
-
*
|
|
477
|
+
* Iterates through all messages and their tool invocations to collect information
|
|
478
|
+
* about tools that were called. A call counts regardless of outcome, so the states
|
|
479
|
+
* `'result'`, `'call'`, and `'output-error'` (a tool that threw) are all included.
|
|
418
480
|
*
|
|
419
481
|
* @param output - The scorer run output (array of MastraDBMessage)
|
|
420
482
|
* @returns An object containing tool names and detailed tool call info
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/scorers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EACV,YAAY,EACZ,sBAAsB,EACtB,uBAAuB,EACvB,YAAY,EACZ,qBAAqB,EAErB,UAAU,EACX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,MAAM,MAAM,yBAAyB,GACjC,sBAAsB,GACtB,MAAM,GACN;IACE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEN,MAAM,MAAM,0BAA0B,GAClC,uBAAuB,GACvB,MAAM,GACN,OAAO,EAAE,GACT;IACE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEN;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAsBlF;AA0BD,eAAO,MAAM,wBAAwB,UAAW,OAAO,KAAG,KAAK,IAAI,sBAQlE,CAAC;AAYF,eAAO,MAAM,yBAAyB,WAAY,OAAO,KAAG,MAAM,IAAI,uBAErE,CAAC;AA8BF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,kBAAkB,QAAS,MAAM,WAE7C,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAEnF;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,cAAc,EAAE;QACd,yBAAyB;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,mCAAmC;QACnC,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG;IAC3C,oDAAoD;IACpD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,aAAa,UACjB,MAAM,UACL,MAAM,sBACM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,mBACtB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KACnC,YAOF,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,0BAA0B,WAAY,OAAO,KAAG,MAAM,GAAG,SAarE,CAAC;AAIF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kCAAkC,WACrC,OAAO,YACL;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,KACjC,MAAM,GAAG,SAoBX,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,6BAA6B,WAAY,OAAO,KAAG,MAAM,EAqDrE,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,uBAAuB,WAAY,OAAO,KAAG,MAGzD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,gCAAgC,YAAa,OAAO,uBA8BhE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,yBAAyB,YAAa,uBAAuB,KAAG,MAAM,GAAG,SAgCrF,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/scorers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EACV,YAAY,EACZ,sBAAsB,EACtB,uBAAuB,EACvB,YAAY,EACZ,qBAAqB,EAErB,UAAU,EACX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,MAAM,MAAM,yBAAyB,GACjC,sBAAsB,GACtB,MAAM,GACN;IACE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEN,MAAM,MAAM,0BAA0B,GAClC,uBAAuB,GACvB,MAAM,GACN,OAAO,EAAE,GACT;IACE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEN;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAsBlF;AA0BD,eAAO,MAAM,wBAAwB,UAAW,OAAO,KAAG,KAAK,IAAI,sBAQlE,CAAC;AAYF,eAAO,MAAM,yBAAyB,WAAY,OAAO,KAAG,MAAM,IAAI,uBAErE,CAAC;AA8BF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,kBAAkB,QAAS,MAAM,WAE7C,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAEnF;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,cAAc,EAAE;QACd,yBAAyB;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,mCAAmC;QACnC,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG;IAC3C,oDAAoD;IACpD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,aAAa,UACjB,MAAM,UACL,MAAM,sBACM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,mBACtB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KACnC,YAOF,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,0BAA0B,WAAY,OAAO,KAAG,MAAM,GAAG,SAarE,CAAC;AAIF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kCAAkC,WACrC,OAAO,YACL;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,KACjC,MAAM,GAAG,SAoBX,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,6BAA6B,WAAY,OAAO,KAAG,MAAM,EAqDrE,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,uBAAuB,WAAY,OAAO,KAAG,MAGzD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,gCAAgC,YAAa,OAAO,uBA8BhE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,yBAAyB,YAAa,uBAAuB,KAAG,MAAM,GAAG,SAgCrF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,oBAAoB,uEAQ9B;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,QAAQ,GAAG,cAAc,CAAC;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,KAAG;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;IACxC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,QAAQ,GAAG,cAAc,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CAWnB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,IAAI,EACJ,EAAmB,EACnB,eAAoB,EACpB,KAAK,GACN,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,eAAe,CAAC,EAAE,KAAK,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7B,KAAK,EAAE,GAAG,CAAC;KACZ,CAAC,CAAC;IACH;;;;OAIG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC;CAC7C,GAAG,eAAe,CAoBlB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,kBAAkB,gHAQ5B;IACD,aAAa,CAAC,EAAE,sBAAsB,CAAC,eAAe,CAAC,CAAC;IACxD,MAAM,EAAE,uBAAuB,CAAC;IAChC,kBAAkB,CAAC,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,CAAC;IAClE,cAAc,CAAC,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAC1D,oBAAoB,CAAC,EAAE,sBAAsB,CAAC,sBAAsB,CAAC,CAAC;IACtE,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,KAAG;IACF,KAAK,EAAE,sBAAsB,CAAC;IAC9B,MAAM,EAAE,uBAAuB,CAAC;IAChC,cAAc,EAAE,cAAc,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;CAaf,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,uBAAuB,wIASjC;IACD,aAAa,CAAC,EAAE,sBAAsB,CAAC,eAAe,CAAC,CAAC;IACxD,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,CAAC,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,CAAC;IAClE,cAAc,CAAC,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAC1D,oBAAoB,CAAC,EAAE,sBAAsB,CAAC,sBAAsB,CAAC,CAAC;IACtE,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,qBAAqB,CAAC;CAC5C,KAAG;IACF,KAAK,EAAE,sBAAsB,CAAC;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,cAAc,EAAE,cAAc,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,CAAC,EAAE,qBAAqB,CAAC;CAc5C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,SAAS,oEA6BxE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,EAAE,YAAY,EAAE,CAAA;CAAE,CA+BpH;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,aAAc,sBAAsB,GAAG,SAAS,KAAG,MAAM,EAEzF,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,4BAA4B,cAAe,uBAAuB,KAAG,MAAM,EAEvF,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,kCAAkC;IAClC,MAAM,EAAE,GAAG,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,uBAAuB,GAAG,cAAc,EAAE,CAsBpF;AAID,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,UAAU,GAAG;IAAE,KAAK,EAAE,YAAY,EAAE,CAAA;CAAE,EAChD,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;IAC9C,kBAAkB,CAAC,EAAE,OAAO,CAAC;CACzB,GACL,0BAA0B,CA4C5B;AAED;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,yCAAyC;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,kEAAkE;IAClE,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,yDAAyD;IACzD,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,yDAAyD;IACzD,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAoOF;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,cAAc,EAAE,OAAO,CAAC;IACxB,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,eAAe,EAAE,OAAO,CAAC;IACzB,qCAAqC;IACrC,eAAe,EAAE,MAAM,CAAC;IACxB,+CAA+C;IAC/C,kBAAkB,EAAE,OAAO,CAAC;IAC5B,qEAAqE;IACrE,cAAc,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,UAAU,EACtB,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACvB,GACL,0BAA0B,CA8G5B;AAID;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,4CAA4C;IAC5C,iBAAiB,EAAE,MAAM,EAAE,EAAE,CAAC;CAC/B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,UAAU,EACtB,OAAO,GAAE;IACP,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;CAC9B,GACL,yBAAyB,CAuC3B;AAID;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,qBAAqB,EAAE,OAAO,CAAC;IAC/B,wCAAwC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6CAA6C;IAC7C,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,UAAU,EACtB,OAAO,GAAE;IACP,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACvB,GACL,yBAAyB,CAgE3B"}
|
package/dist/scorers/utils.js
CHANGED
|
@@ -351,8 +351,10 @@ const getReasoningFromRunOutput = (output) => {
|
|
|
351
351
|
* @param options.toolCallId - Unique identifier for the tool call
|
|
352
352
|
* @param options.toolName - Name of the tool being called
|
|
353
353
|
* @param options.args - Arguments passed to the tool
|
|
354
|
-
* @param options.result - Result returned by the tool
|
|
354
|
+
* @param options.result - Result returned by the tool (absent for a thrown call)
|
|
355
355
|
* @param options.state - State of the invocation (default: 'result')
|
|
356
|
+
* @param options.errorText - Error text recorded when a tool threw (`state: 'output-error'`)
|
|
357
|
+
* @param options.isError - Set alongside `state: 'result'` when the executor reported a failure
|
|
356
358
|
* @returns A tool invocation object
|
|
357
359
|
*
|
|
358
360
|
* @example
|
|
@@ -363,15 +365,26 @@ const getReasoningFromRunOutput = (output) => {
|
|
|
363
365
|
* args: { location: 'London' },
|
|
364
366
|
* result: { temperature: 20, condition: 'sunny' },
|
|
365
367
|
* });
|
|
368
|
+
*
|
|
369
|
+
* // A tool that threw
|
|
370
|
+
* const thrown = createToolInvocation({
|
|
371
|
+
* toolCallId: 'call-456',
|
|
372
|
+
* toolName: 'saveTool',
|
|
373
|
+
* args: { value: 'x' },
|
|
374
|
+
* state: 'output-error',
|
|
375
|
+
* errorText: 'Save failed',
|
|
376
|
+
* });
|
|
366
377
|
* ```
|
|
367
378
|
*/
|
|
368
|
-
const createToolInvocation = ({ toolCallId, toolName, args, result, state = "result" }) => {
|
|
379
|
+
const createToolInvocation = ({ toolCallId, toolName, args, result, state = "result", errorText, isError }) => {
|
|
369
380
|
return {
|
|
370
381
|
toolCallId,
|
|
371
382
|
toolName,
|
|
372
383
|
args,
|
|
373
384
|
result,
|
|
374
|
-
state
|
|
385
|
+
state,
|
|
386
|
+
...errorText !== void 0 && { errorText },
|
|
387
|
+
...isError !== void 0 && { isError }
|
|
375
388
|
};
|
|
376
389
|
};
|
|
377
390
|
/**
|
|
@@ -405,15 +418,34 @@ const createToolInvocation = ({ toolCallId, toolName, args, result, state = "res
|
|
|
405
418
|
* state: 'result',
|
|
406
419
|
* }],
|
|
407
420
|
* });
|
|
421
|
+
*
|
|
422
|
+
* // With native V2 parts — the only form that can carry a thrown call
|
|
423
|
+
* const messageWithThrownTool = createTestMessage({
|
|
424
|
+
* content: 'That failed.',
|
|
425
|
+
* role: 'assistant',
|
|
426
|
+
* parts: [
|
|
427
|
+
* { type: 'text', text: 'That failed.' },
|
|
428
|
+
* {
|
|
429
|
+
* type: 'tool-invocation',
|
|
430
|
+
* toolInvocation: createToolInvocation({
|
|
431
|
+
* toolCallId: 'call-2',
|
|
432
|
+
* toolName: 'saveTool',
|
|
433
|
+
* args: { value: 'x' },
|
|
434
|
+
* state: 'output-error',
|
|
435
|
+
* errorText: 'Save failed',
|
|
436
|
+
* }),
|
|
437
|
+
* },
|
|
438
|
+
* ],
|
|
439
|
+
* });
|
|
408
440
|
* ```
|
|
409
441
|
*/
|
|
410
|
-
function createTestMessage({ content, role, id = "test-message", toolInvocations = [] }) {
|
|
442
|
+
function createTestMessage({ content, role, id = "test-message", toolInvocations = [], parts }) {
|
|
411
443
|
return {
|
|
412
444
|
id,
|
|
413
445
|
role,
|
|
414
446
|
content: {
|
|
415
447
|
format: 2,
|
|
416
|
-
parts: [{
|
|
448
|
+
parts: parts ?? [{
|
|
417
449
|
type: "text",
|
|
418
450
|
text: content
|
|
419
451
|
}],
|
|
@@ -502,10 +534,56 @@ const createTrajectoryTestRun = ({ inputMessages = [], trajectory, rememberedMes
|
|
|
502
534
|
};
|
|
503
535
|
};
|
|
504
536
|
/**
|
|
537
|
+
* Merges the two places a message can store tool invocations into one list.
|
|
538
|
+
*
|
|
539
|
+
* A native message may carry `content.parts` tool-invocation entries, the legacy
|
|
540
|
+
* `content.toolInvocations` array, or both. Neither form is a superset of the
|
|
541
|
+
* other: thrown calls are recorded in parts as `state: 'output-error'` and can be
|
|
542
|
+
* missing from the legacy array, while older persisted messages may only carry the
|
|
543
|
+
* legacy array. Reading one form exclusively therefore hides real calls.
|
|
544
|
+
*
|
|
545
|
+
* Parts win when the same `toolCallId` appears in both, since they hold the real
|
|
546
|
+
* terminal state. Legacy-only calls are retained before their next shared anchor so
|
|
547
|
+
* compatible call order survives instead of being appended.
|
|
548
|
+
*
|
|
549
|
+
* Mirrors `extractTrajectory` in `@mastra/core` (`packages/core/src/evals/types.ts`)
|
|
550
|
+
* so tool-use checks and trajectory scorers agree on what a run actually called.
|
|
551
|
+
* Keep the two in step.
|
|
552
|
+
*
|
|
553
|
+
* @param message - A single message from the scorer run output
|
|
554
|
+
* @returns The merged tool invocations for that message
|
|
555
|
+
*/
|
|
556
|
+
function mergeToolInvocations(message) {
|
|
557
|
+
const legacy = message?.content?.toolInvocations;
|
|
558
|
+
const fromParts = message?.content?.parts?.filter((p) => p.type === "tool-invocation").map((p) => p.toolInvocation).filter(Boolean) ?? [];
|
|
559
|
+
const partCallIds = new Set(fromParts.map((invocation) => invocation.toolCallId).filter(Boolean));
|
|
560
|
+
const legacyInvocations = legacy ?? [];
|
|
561
|
+
const legacyPositions = new Map(legacyInvocations.map((invocation, index) => [invocation?.toolCallId, index]));
|
|
562
|
+
const toolInvocations = [];
|
|
563
|
+
let legacyIndex = 0;
|
|
564
|
+
for (const invocation of fromParts) {
|
|
565
|
+
const sharedIndex = invocation.toolCallId ? legacyPositions.get(invocation.toolCallId) : void 0;
|
|
566
|
+
if (sharedIndex !== void 0 && sharedIndex >= legacyIndex) {
|
|
567
|
+
for (; legacyIndex < sharedIndex; legacyIndex++) {
|
|
568
|
+
const previous = legacyInvocations[legacyIndex];
|
|
569
|
+
if (previous && !partCallIds.has(previous.toolCallId)) toolInvocations.push(previous);
|
|
570
|
+
}
|
|
571
|
+
legacyIndex++;
|
|
572
|
+
}
|
|
573
|
+
toolInvocations.push(invocation);
|
|
574
|
+
}
|
|
575
|
+
for (; legacyIndex < legacyInvocations.length; legacyIndex++) {
|
|
576
|
+
const invocation = legacyInvocations[legacyIndex];
|
|
577
|
+
if (invocation && !partCallIds.has(invocation.toolCallId)) toolInvocations.push(invocation);
|
|
578
|
+
}
|
|
579
|
+
return toolInvocations;
|
|
580
|
+
}
|
|
581
|
+
/**
|
|
505
582
|
* Extracts all tool calls from a scorer run output.
|
|
506
583
|
*
|
|
507
|
-
* Iterates through all messages and their tool invocations to collect
|
|
508
|
-
*
|
|
584
|
+
* Iterates through all messages and their tool invocations to collect information
|
|
585
|
+
* about tools that were called. A call counts regardless of outcome, so the states
|
|
586
|
+
* `'result'`, `'call'`, and `'output-error'` (a tool that threw) are all included.
|
|
509
587
|
*
|
|
510
588
|
* @param output - The scorer run output (array of MastraDBMessage)
|
|
511
589
|
* @returns An object containing tool names and detailed tool call info
|
|
@@ -527,13 +605,11 @@ function extractToolCalls(output) {
|
|
|
527
605
|
const toolCallInfos = [];
|
|
528
606
|
for (let messageIndex = 0; messageIndex < output.length; messageIndex++) {
|
|
529
607
|
const message = output[messageIndex];
|
|
530
|
-
const
|
|
531
|
-
|
|
532
|
-
const toolInvocations = legacy ?? fromParts;
|
|
533
|
-
if (!toolInvocations?.length) continue;
|
|
608
|
+
const toolInvocations = mergeToolInvocations(message);
|
|
609
|
+
if (!toolInvocations.length) continue;
|
|
534
610
|
for (let invocationIndex = 0; invocationIndex < toolInvocations.length; invocationIndex++) {
|
|
535
611
|
const invocation = toolInvocations[invocationIndex];
|
|
536
|
-
if (invocation && invocation.toolName && (invocation.state === "result" || invocation.state === "call")) {
|
|
612
|
+
if (invocation && invocation.toolName && (invocation.state === "result" || invocation.state === "call" || invocation.state === "output-error")) {
|
|
537
613
|
toolCalls.push(invocation.toolName);
|
|
538
614
|
toolCallInfos.push({
|
|
539
615
|
toolName: invocation.toolName,
|
|
@@ -615,10 +691,8 @@ const extractAgentResponseMessages = (runOutput) => {
|
|
|
615
691
|
function extractToolResults(output) {
|
|
616
692
|
const results = [];
|
|
617
693
|
for (const message of output) {
|
|
618
|
-
const
|
|
619
|
-
|
|
620
|
-
const toolInvocations = legacy ?? fromParts;
|
|
621
|
-
if (!toolInvocations?.length) continue;
|
|
694
|
+
const toolInvocations = mergeToolInvocations(message);
|
|
695
|
+
if (!toolInvocations.length) continue;
|
|
622
696
|
for (const invocation of toolInvocations) if (invocation.state === "result" && invocation.result !== void 0) results.push({
|
|
623
697
|
toolName: invocation.toolName,
|
|
624
698
|
toolCallId: invocation.toolCallId || "",
|
|
@@ -1000,6 +1074,6 @@ function analyzeToolFailures(trajectory, options = {}) {
|
|
|
1000
1074
|
};
|
|
1001
1075
|
}
|
|
1002
1076
|
//#endregion
|
|
1003
|
-
export { analyzeToolFailures, checkTrajectoryBlacklist, checkTrajectoryEfficiency, compareTrajectories, createAgentTestRun, createTestMessage, createTestRun, createToolInvocation, createTrajectoryTestRun, extractAgentResponseMessages, extractInputMessages, extractToolCalls, extractToolResults, extractTrajectory, getAssistantMessageFromRunOutput, getCombinedSystemPrompt, getConversationHistoryFromRunInput, getReasoningFromRunOutput, getSystemMessagesFromRunInput, getTextContentFromMastraDBMessage, getUserMessageFromRunInput, isCloserTo, isScorerRunInputForAgent, isScorerRunOutputForAgent, roundToTwoDecimals };
|
|
1077
|
+
export { analyzeToolFailures, checkTrajectoryBlacklist, checkTrajectoryEfficiency, compareTrajectories, createAgentTestRun, createTestMessage, createTestRun, createToolInvocation, createTrajectoryTestRun, extractAgentResponseMessages, extractInputMessages, extractToolCalls, extractToolResults, extractTrajectory, getAssistantMessageFromRunOutput, getCombinedSystemPrompt, getConversationHistoryFromRunInput, getReasoningFromRunOutput, getSystemMessagesFromRunInput, getTextContentFromMastraDBMessage, getUserMessageFromRunInput, isCloserTo, isScorerRunInputForAgent, isScorerRunOutputForAgent, mergeToolInvocations, roundToTwoDecimals };
|
|
1004
1078
|
|
|
1005
1079
|
//# sourceMappingURL=utils.js.map
|