agentv 5.2.0-next.1 → 5.3.0-next.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.
Files changed (33) hide show
  1. package/dist/{artifact-writer-SN6UNL5G.js → artifact-writer-JFNIPMKW.js} +4 -4
  2. package/dist/{chunk-3S6A2RKR.js → chunk-6ZZCDZPD.js} +1357 -304
  3. package/dist/chunk-6ZZCDZPD.js.map +1 -0
  4. package/dist/{chunk-46K2OET3.js → chunk-BHKQHG26.js} +2 -2
  5. package/dist/{chunk-T4AD3H3Y.js → chunk-FVR4RQFK.js} +74 -16
  6. package/dist/chunk-FVR4RQFK.js.map +1 -0
  7. package/dist/{chunk-3X357HS4.js → chunk-T32NL3E6.js} +62 -6
  8. package/dist/chunk-T32NL3E6.js.map +1 -0
  9. package/dist/{chunk-ALVZQUZP.js → chunk-V52ATPTT.js} +2 -2
  10. package/dist/cli.js +5 -5
  11. package/dist/{dist-DEPJOMCA.js → dist-6Z7U473R.js} +11 -3
  12. package/dist/index.js +5 -5
  13. package/dist/{interactive-36ZNMQB2.js → interactive-RUY3OCBI.js} +5 -5
  14. package/dist/skills/agentv-bench/SKILL.md +1 -1
  15. package/dist/skills/agentv-bench/agents/analyzer.md +1 -1
  16. package/dist/skills/agentv-bench/agents/comparator.md +3 -3
  17. package/dist/skills/agentv-bench/agents/grader.md +4 -2
  18. package/dist/skills/agentv-bench/references/description-optimization.md +5 -6
  19. package/dist/skills/agentv-bench/references/environment-adaptation.md +2 -2
  20. package/dist/skills/agentv-bench/references/eval-yaml-spec.md +20 -9
  21. package/dist/skills/agentv-eval-migrations/references/breaking-changes.md +100 -2
  22. package/dist/skills/agentv-eval-writer/SKILL.md +27 -16
  23. package/dist/{ts-eval-loader-OMG2JBHP-OP5RR7A3.js → ts-eval-loader-DQDYRULE-V3377FOL.js} +2 -2
  24. package/package.json +1 -1
  25. package/dist/chunk-3S6A2RKR.js.map +0 -1
  26. package/dist/chunk-3X357HS4.js.map +0 -1
  27. package/dist/chunk-T4AD3H3Y.js.map +0 -1
  28. /package/dist/{artifact-writer-SN6UNL5G.js.map → artifact-writer-JFNIPMKW.js.map} +0 -0
  29. /package/dist/{chunk-46K2OET3.js.map → chunk-BHKQHG26.js.map} +0 -0
  30. /package/dist/{chunk-ALVZQUZP.js.map → chunk-V52ATPTT.js.map} +0 -0
  31. /package/dist/{dist-DEPJOMCA.js.map → dist-6Z7U473R.js.map} +0 -0
  32. /package/dist/{interactive-36ZNMQB2.js.map → interactive-RUY3OCBI.js.map} +0 -0
  33. /package/dist/{ts-eval-loader-OMG2JBHP-OP5RR7A3.js.map → ts-eval-loader-DQDYRULE-V3377FOL.js.map} +0 -0
@@ -16,7 +16,7 @@ import {
16
16
  prepareSharedWorkspaceSetup,
17
17
  readTranscriptJsonl,
18
18
  releaseSharedWorkspaceSetup
19
- } from "./chunk-3S6A2RKR.js";
19
+ } from "./chunk-6ZZCDZPD.js";
20
20
 
21
21
  // ../../packages/core/dist/index.js
22
22
  import { readFileSync } from "node:fs";
@@ -6089,4 +6089,4 @@ export {
6089
6089
  parseCopilotEvents,
6090
6090
  createAgentKernel
6091
6091
  };
6092
- //# sourceMappingURL=chunk-ALVZQUZP.js.map
6092
+ //# sourceMappingURL=chunk-V52ATPTT.js.map
package/dist/cli.js CHANGED
@@ -2,13 +2,13 @@
2
2
  import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
3
3
  import {
4
4
  runCli
5
- } from "./chunk-3X357HS4.js";
6
- import "./chunk-T4AD3H3Y.js";
7
- import "./chunk-46K2OET3.js";
8
- import "./chunk-ALVZQUZP.js";
5
+ } from "./chunk-T32NL3E6.js";
6
+ import "./chunk-FVR4RQFK.js";
7
+ import "./chunk-BHKQHG26.js";
8
+ import "./chunk-V52ATPTT.js";
9
9
  import {
10
10
  killAllTrackedChildren
11
- } from "./chunk-3S6A2RKR.js";
11
+ } from "./chunk-6ZZCDZPD.js";
12
12
  import "./chunk-7BGERE6L.js";
13
13
  import "./chunk-PEUTJS7B.js";
14
14
  import "./chunk-M7BUKBAF.js";
@@ -54,7 +54,7 @@ import {
54
54
  transpileEvalYaml,
55
55
  transpileEvalYamlFile,
56
56
  trimBaselineResult
57
- } from "./chunk-ALVZQUZP.js";
57
+ } from "./chunk-V52ATPTT.js";
58
58
  import {
59
59
  AGENTV_CONFIG_FILE_NAME,
60
60
  AGENTV_CONFIG_YML_FILE_NAME,
@@ -83,6 +83,7 @@ import {
83
83
  ExternalTraceMetadataWireSchema,
84
84
  FieldAccuracyGrader,
85
85
  GraderRegistry,
86
+ LEGACY_METRICS_SCHEMA_VERSION,
86
87
  LatencyGrader,
87
88
  LlmGrader,
88
89
  METRICS_JSON_MEDIA_TYPE,
@@ -106,6 +107,7 @@ import {
106
107
  ResultRowSchemaError,
107
108
  ScriptGrader,
108
109
  SkillTriggerGrader,
110
+ SkillUsedGrader,
109
111
  TEST_MESSAGE_ROLES,
110
112
  TRACE_EVENT_TYPES,
111
113
  TRACE_REDACTION_LEVELS,
@@ -145,6 +147,7 @@ import {
145
147
  TraceSourceWireSchema,
146
148
  TraceSummaryBoundarySchema,
147
149
  TraceToolWireSchema,
150
+ TrajectoryGrader,
148
151
  WorkspaceCreationError,
149
152
  addProject,
150
153
  aggregateRunDir,
@@ -282,6 +285,7 @@ import {
282
285
  normalizeExperimentConfig,
283
286
  normalizeExperimentRunOverride,
284
287
  normalizeLineEndings,
288
+ normalizeMetricsArtifactWire,
285
289
  normalizeRepoIdentity,
286
290
  normalizeResultRow,
287
291
  omitExternalTraceMetadataKeys,
@@ -373,7 +377,7 @@ import {
373
377
  writeArtifactsFromResults,
374
378
  writeInitialRunSummaryArtifact,
375
379
  writePerTestArtifacts
376
- } from "./chunk-3S6A2RKR.js";
380
+ } from "./chunk-6ZZCDZPD.js";
377
381
  import "./chunk-7BGERE6L.js";
378
382
  import {
379
383
  DockerWorkspaceProvider
@@ -409,6 +413,7 @@ export {
409
413
  ExternalTraceMetadataWireSchema,
410
414
  FieldAccuracyGrader,
411
415
  GraderRegistry,
416
+ LEGACY_METRICS_SCHEMA_VERSION,
412
417
  LatencyGrader,
413
418
  LlmGrader,
414
419
  METRICS_JSON_MEDIA_TYPE,
@@ -433,6 +438,7 @@ export {
433
438
  RunBudgetTracker,
434
439
  ScriptGrader,
435
440
  SkillTriggerGrader,
441
+ SkillUsedGrader,
436
442
  TEST_MESSAGE_ROLES,
437
443
  TRACE_EVENT_TYPES,
438
444
  TRACE_REDACTION_LEVELS,
@@ -473,6 +479,7 @@ export {
473
479
  TraceSourceWireSchema,
474
480
  TraceSummaryBoundarySchema,
475
481
  TraceToolWireSchema,
482
+ TrajectoryGrader,
476
483
  TranscriptProvider,
477
484
  WorkspaceCreationError,
478
485
  addProject,
@@ -636,6 +643,7 @@ export {
636
643
  normalizeExperimentConfig,
637
644
  normalizeExperimentRunOverride,
638
645
  normalizeLineEndings,
646
+ normalizeMetricsArtifactWire,
639
647
  normalizeRepoIdentity,
640
648
  normalizeResultRow,
641
649
  normalizeResultsConfig,
@@ -754,4 +762,4 @@ export {
754
762
  writeInitialRunSummaryArtifact,
755
763
  writePerTestArtifacts
756
764
  };
757
- //# sourceMappingURL=dist-DEPJOMCA.js.map
765
+ //# sourceMappingURL=dist-6Z7U473R.js.map
package/dist/index.js CHANGED
@@ -6,11 +6,11 @@ import {
6
6
  runCli,
7
7
  shouldRunBeforeSessionHook,
8
8
  usesDeprecatedStudioAlias
9
- } from "./chunk-3X357HS4.js";
10
- import "./chunk-T4AD3H3Y.js";
11
- import "./chunk-46K2OET3.js";
12
- import "./chunk-ALVZQUZP.js";
13
- import "./chunk-3S6A2RKR.js";
9
+ } from "./chunk-T32NL3E6.js";
10
+ import "./chunk-FVR4RQFK.js";
11
+ import "./chunk-BHKQHG26.js";
12
+ import "./chunk-V52ATPTT.js";
13
+ import "./chunk-6ZZCDZPD.js";
14
14
  import "./chunk-7BGERE6L.js";
15
15
  import "./chunk-PEUTJS7B.js";
16
16
  import "./chunk-M7BUKBAF.js";
@@ -8,14 +8,14 @@ import {
8
8
  getCategories,
9
9
  resolveExistingRunPrimaryPath,
10
10
  runEvalCommand
11
- } from "./chunk-T4AD3H3Y.js";
12
- import "./chunk-46K2OET3.js";
13
- import "./chunk-ALVZQUZP.js";
11
+ } from "./chunk-FVR4RQFK.js";
12
+ import "./chunk-BHKQHG26.js";
13
+ import "./chunk-V52ATPTT.js";
14
14
  import {
15
15
  getAgentvConfigDir,
16
16
  listTargetNames,
17
17
  readTargetDefinitions
18
- } from "./chunk-3S6A2RKR.js";
18
+ } from "./chunk-6ZZCDZPD.js";
19
19
  import "./chunk-7BGERE6L.js";
20
20
  import "./chunk-PEUTJS7B.js";
21
21
  import "./chunk-M7BUKBAF.js";
@@ -344,4 +344,4 @@ ${ANSI_DIM}Retrying execution errors...${ANSI_RESET}
344
344
  export {
345
345
  launchInteractiveWizard
346
346
  };
347
- //# sourceMappingURL=interactive-36ZNMQB2.js.map
347
+ //# sourceMappingURL=interactive-RUY3OCBI.js.map
@@ -117,7 +117,7 @@ Start with 2-3 realistic test cases — the kind of thing a real user would actu
117
117
 
118
118
  Good assertions are objectively verifiable and have descriptive names. Subjective quality ("the output is good") is better evaluated qualitatively — don't force assertions onto things that need human judgment.
119
119
 
120
- **Grader types** (cheapest to most expensive): `exact`, `contains`, `regex`, `is-json`, `field-accuracy`, `assert-set`, `script`, `tool-trajectory`, `llm-rubric`. See `references/eval-yaml-spec.md` for full config and grading recipes for each type.
120
+ **Grader types** (cheapest to most expensive): `exact`, `contains`, `regex`, `is-json`, `field-accuracy`, `assert-set`, `skill-used`, `not-skill-used`, `trajectory:*`, `script`, `llm-rubric`. See `references/eval-yaml-spec.md` for full config and grading recipes for each type.
121
121
 
122
122
  Prefer deterministic graders over LLM graders whenever possible. If an assertion can be checked with `contains` or `regex`, don't use `llm-rubric`.
123
123
 
@@ -123,7 +123,7 @@ If a section has no findings, include the header with "None found." underneath.
123
123
  - **Be specific:** Every suggestion must include the test case ID, grader name, evidence from the results, and a concrete replacement config.
124
124
  - **Be conservative:** Only suggest deterministic upgrades when the pattern is clear and consistent. Partial or ambiguous evidence should be noted but not acted on.
125
125
  - **Prioritize by impact:** Order suggestions by estimated cost savings (`llm-rubric` → deterministic saves the most).
126
- - **Handle all grader types:** Process `script`, `tool-trajectory`, `llm-rubric`, `rubrics`, `assert-set`, and all deterministic types. Only LLM-based types are candidates for deterministic upgrades.
126
+ - **Handle all grader types:** Process `script`, `trajectory:*`, `skill-used`, `not-skill-used`, `llm-rubric`, `rubrics`, `assert-set`, and all deterministic types. Only LLM-based types are candidates for deterministic upgrades.
127
127
  - **Multi-provider awareness:** When results span multiple targets, note if a suggestion applies to all targets or is target-specific.
128
128
  - **No false positives:** It is better to miss a suggestion than to recommend an incorrect upgrade. If unsure, add the finding to a "Needs Review" subsection with your reasoning.
129
129
 
@@ -24,7 +24,7 @@ You are the Blind Comparator for AgentV's evaluation workflow. Your job is to co
24
24
  You will receive:
25
25
  - `outputs`: Array of evaluation outputs to compare. Each contains:
26
26
  - `target_id`: The provider/configuration identifier (DO NOT read this during scoring)
27
- - `evaluator_results`: Array of grader scores and details (script, tool-trajectory, llm-rubric, deterministic)
27
+ - `evaluator_results`: Array of grader scores and details (script, trajectory, skill-use, llm-rubric, deterministic)
28
28
  - `workspace_changes`: File changes made during workspace evaluation (if applicable)
29
29
  - `tool_calls`: Tool invocations and results from multi-turn conversations (if applicable)
30
30
  - `conversation`: Full multi-turn conversation history (if applicable)
@@ -91,7 +91,7 @@ For each content criterion, define:
91
91
  **Grader-Specific Scoring** — when grader results are present:
92
92
 
93
93
  - **script-grader**: Factor in pass/fail results, test coverage, assertion hit rates
94
- - **tool-trajectory**: Factor in tool call accuracy, sequence correctness, unnecessary tool calls
94
+ - **trajectory assertions**: Factor in tool call accuracy, sequence correctness, unnecessary tool calls
95
95
  - **llm-rubric**: Factor in existing LLM grader scores as a reference signal (not as ground truth)
96
96
  - **deterministic**: Factor in exact match / keyword hit rates
97
97
 
@@ -235,7 +235,7 @@ Also produce a human-readable markdown summary:
235
235
  - **Be evidence-based**: Every score must cite specific evidence from the output.
236
236
  - **Evaluate substance over style**: Correct, complete answers with rough formatting score higher than polished but incorrect answers.
237
237
  - **Handle missing data gracefully**: If an output lacks workspace changes or tool calls but others have them, score what is present — do not penalize for data the target wasn't expected to produce.
238
- - **Respect grader signals**: When script-grader or tool-trajectory results exist, they represent objective ground truth. Weight these heavily.
238
+ - **Respect grader signals**: When script-grader or trajectory assertion results exist, they represent objective ground truth. Weight these heavily.
239
239
 
240
240
  ## Edge Cases
241
241
 
@@ -80,8 +80,10 @@ For LLM-graded types: be rigorous and fair. Score based on substance, not exact
80
80
 
81
81
  | Type | How to evaluate |
82
82
  |------|----------------|
83
- | `tool-trajectory` | Inspect transcript for tool calls, match against expected sequence/mode |
84
- | `skill-trigger` | Check if the named skill was invoked in tool calls |
83
+ | `trajectory:tool-used` | Inspect transcript for tool presence and minimum call counts |
84
+ | `trajectory:tool-sequence` | Inspect transcript for expected tool call order |
85
+ | `trajectory:tool-args-match` | Inspect transcript for expected tool arguments |
86
+ | `skill-used` / `not-skill-used` | Check whether the named skill was invoked in tool calls |
85
87
 
86
88
  If transcript data is not available for tool inspection assertions, record `score: null` with a note that transcript data was not captured. Exclude from the weighted average.
87
89
 
@@ -6,7 +6,7 @@ core workflow step.
6
6
 
7
7
  **Provider compatibility**: Description optimization applies to any agent platform with
8
8
  skill-discovery mechanisms — Claude Code, Codex (`.agents/` or `.codex/` folders), Copilot,
9
- and others. The `skill-trigger` grader checks whether the agent invoked the right skill,
9
+ and others. The `skill-used` and `not-skill-used` graders check whether the agent invoked the right skill,
10
10
  regardless of how discovery works on that platform.
11
11
 
12
12
  ## Step 1: Generate Trigger EVAL.yaml
@@ -36,14 +36,13 @@ tests:
36
36
  - id: should-trigger-casual-optimize
37
37
  input: "ok so I have this agent that keeps failing on the code review tasks, can you help me figure out why and fix it"
38
38
  assert:
39
- - type: skill-trigger
40
- skill: agentv-bench
39
+ - type: skill-used
40
+ value: agentv-bench
41
41
  - id: should-not-trigger-build-error
42
42
  input: "my TypeScript build is failing with type errors in src/auth.ts"
43
43
  assert:
44
- - type: skill-trigger
45
- skill: agentv-bench
46
- should_trigger: false
44
+ - type: not-skill-used
45
+ value: agentv-bench
47
46
  ```
48
47
 
49
48
  ## Step 2: Review with User
@@ -28,7 +28,7 @@ to any platform with skill-discovery mechanisms. All listed providers support sk
28
28
 
29
29
  ## Unsupported Providers: Use a Code-Grader
30
30
 
31
- The built-in `skill-trigger` grader covers Claude, Copilot, Pi, Codex and VS Code out
31
+ The built-in `skill-used` and `not-skill-used` graders cover Claude, Copilot, Pi, Codex and VS Code out
32
32
  of the box. For providers with different tool-call formats, write a script-grader that inspects
33
33
  the agent's transcript messages or tool call trace.
34
34
 
@@ -37,7 +37,7 @@ transcript `messages`, and structured `trace`. Inspect `messages` or `trace.even
37
37
  tool calls; reserve `output` for final-answer text checks.
38
38
 
39
39
  ```yaml
40
- # Example: script-grader for Codex skill-trigger detection
40
+ # Example: script-grader for Codex skill-use detection
41
41
  tests:
42
42
  - id: should-trigger-codex
43
43
  input: "Analyze this CSV file"
@@ -171,18 +171,29 @@ Same as contains variants but explicitly case-insensitive.
171
171
 
172
172
  ### Tool inspection assertions
173
173
 
174
- #### `tool-trajectory`
174
+ #### `trajectory:tool-used`
175
175
 
176
- - **Fields:** `expected` (array of expected tool calls), `mode` (string: `any_order` | `in_order` | `exact` | `subset` | `superset`)
177
- - **Recipe:** Inspect AgentV-normalized transcript/tool-call data. Match against expected based on mode.
178
- - **PASS:** tool calls match expected pattern per mode.
179
- - **Boundary:** This is an AgentV extension. Promptfoo `trajectory:*`, `tool-call-f1`, `skill-used`, and `trace-*` assertion names are rejected until implemented directly.
176
+ - **Fields:** `value.name` (string, required), `value.min` (number, optional)
177
+ - **Recipe:** Inspect AgentV-normalized transcript/tool-call data and count matching tool calls.
178
+ - **PASS:** matching calls meet the requested minimum.
180
179
 
181
- #### `skill-trigger`
180
+ #### `trajectory:tool-sequence`
182
181
 
183
- - **Fields:** `skill_name` (string, required)
184
- - **Recipe:** Check if the agent invoked the named skill in its tool calls.
185
- - **PASS:** skill was triggered.
182
+ - **Fields:** `value.steps` (array of tool names, required), `value.mode` (`in_order` | `exact`)
183
+ - **Recipe:** Inspect AgentV-normalized transcript/tool-call data and compare the observed sequence.
184
+ - **PASS:** tool calls match the expected sequence for the selected mode.
185
+
186
+ #### `trajectory:tool-args-match`
187
+
188
+ - **Fields:** `value.name` (string, required), `value.args` (object, required), `value.mode` (`partial` | `exact`)
189
+ - **Recipe:** Inspect matching tool calls and compare arguments.
190
+ - **PASS:** at least one matching call has the expected arguments.
191
+
192
+ #### `skill-used` / `not-skill-used`
193
+
194
+ - **Fields:** `value` (skill name string or pattern object, required)
195
+ - **Recipe:** Check whether the agent invoked the named skill in its tool calls.
196
+ - **PASS:** `skill-used` finds the skill; `not-skill-used` confirms it is absent.
186
197
 
187
198
  ### LLM-judged assertions (require Claude reasoning)
188
199
 
@@ -51,9 +51,12 @@ For a v4.42.4-era eval:
51
51
  15. Replace authored `preprocessors` and deprecated Promptfoo `postprocess`
52
52
  with `transform` at `default_test.options`, `tests[].options`, or the
53
53
  assertion that needs the shaped output.
54
- 16. Keep raw cases under `tests` / `tests: file://...`; run full eval suites
54
+ 16. Replace `type: skill-trigger` with `skill-used` or `not-skill-used`.
55
+ 17. Replace `type: tool-trajectory` with Promptfoo-compatible `trajectory:*`
56
+ assertions where there is a direct mapping.
57
+ 18. Keep raw cases under `tests` / `tests: file://...`; run full eval suites
55
58
  directly with CLI multi-file selection and tags.
56
- 17. Validate with `bun apps/cli/src/cli.ts validate <eval-file>`.
59
+ 19. Validate with `bun apps/cli/src/cli.ts validate <eval-file>`.
57
60
 
58
61
  ## Assertions Renamed To `assert`
59
62
 
@@ -211,6 +214,101 @@ templates and custom graders can consume it. The breaking authoring change is
211
214
  that workers should not depend on missing `assert` plus `criteria` to define
212
215
  the whole grading contract for new migrated YAML.
213
216
 
217
+ ## `skill-trigger` And `tool-trajectory` Replaced By Promptfoo Assertions
218
+
219
+ ### v4.42.4 Shape
220
+
221
+ Older AgentV YAML used AgentV-specific skill and tool trajectory assertions:
222
+
223
+ ```yaml
224
+ assert:
225
+ - type: skill-trigger
226
+ skill: csv-analyzer
227
+ should_trigger: true
228
+ - type: tool-trajectory
229
+ mode: any_order
230
+ minimums:
231
+ search: 2
232
+ - type: tool-trajectory
233
+ mode: exact
234
+ expected:
235
+ - tool: search
236
+ args:
237
+ q: agentv
238
+ - tool: fetch
239
+ ```
240
+
241
+ ### Current Shape
242
+
243
+ Current authored eval YAML uses Promptfoo-compatible assertions:
244
+
245
+ ```yaml
246
+ assert:
247
+ - type: skill-used
248
+ value: csv-analyzer
249
+ - type: trajectory:tool-used
250
+ value:
251
+ name: search
252
+ min: 2
253
+ - type: trajectory:tool-sequence
254
+ value:
255
+ mode: exact
256
+ steps: [search, fetch]
257
+ - type: trajectory:tool-args-match
258
+ value:
259
+ name: search
260
+ args:
261
+ q: agentv
262
+ mode: partial
263
+ ```
264
+
265
+ ### Migration Steps
266
+
267
+ - Replace `type: skill-trigger`, `skill: X`, `should_trigger: true` with
268
+ `type: skill-used`, `value: X`.
269
+ - Replace `type: skill-trigger`, `skill: X`, `should_trigger: false` with
270
+ `type: not-skill-used`, `value: X`.
271
+ - Replace `type: tool-trajectory`, `mode: any_order`, and `minimums: { Tool: N }`
272
+ with one `trajectory:tool-used` assertion per tool:
273
+
274
+ ```yaml
275
+ - type: trajectory:tool-used
276
+ value:
277
+ name: Tool
278
+ min: N
279
+ ```
280
+
281
+ - Replace `mode: in_order` or `mode: exact` plus `expected` tool steps with
282
+ `trajectory:tool-sequence`:
283
+
284
+ ```yaml
285
+ - type: trajectory:tool-sequence
286
+ value:
287
+ mode: exact
288
+ steps: [search, fetch]
289
+ ```
290
+
291
+ - Move old `expected[].args` checks to `trajectory:tool-args-match`. Use
292
+ `mode: exact` only for exact argument equality; otherwise use Promptfoo's
293
+ partial argument matching.
294
+ - Do not carry old `max_duration_ms` per-tool latency checks under
295
+ `trajectory:*`. There is no Promptfoo-compatible equivalent in AgentV yet;
296
+ use a `script` assertion or track the behavior as future scope.
297
+
298
+ ### Verification
299
+
300
+ ```bash
301
+ bun apps/cli/src/cli.ts validate path/to/eval.eval.yaml
302
+ rg -n "skill-trigger|tool-trajectory" path/to/evals path/to/.agentv/templates
303
+ ```
304
+
305
+ ### Compatibility Notes
306
+
307
+ The runtime still has private compatibility classes and tests for older
308
+ helpers. That does not make `skill-trigger` or `tool-trajectory` valid authored
309
+ eval YAML. Normal Promptfoo-aligned eval files fail validation and parsing with
310
+ the replacement guidance above.
311
+
214
312
  ## Authored `input` Moved To `prompts` Plus Vars
215
313
 
216
314
  ### v4.42.4 Shape
@@ -569,22 +569,33 @@ Variables: `{{criteria}}`, `{{input}}`, `{{expected_output}}`, `{{output}}`, `{{
569
569
  ```
570
570
  Use `assert-set` for Promptfoo-aligned assertion grouping. Without `threshold`, the set passes only when every nonzero-weight child assertion passes. With `threshold`, the weighted aggregate score determines the set verdict. Parent `config` is inherited by children, and child `config` keys override parent keys. Do not use `type: composite`; AgentV rejects it.
571
571
 
572
- ### tool-trajectory
573
- ```yaml
574
- - name: tool_check
575
- type: tool-trajectory
576
- mode: any_order # any_order | in_order | exact
577
- minimums: # for any_order
578
- knowledgeSearch: 2
579
- expected: # for in_order/exact
580
- - tool: knowledgeSearch
581
- args: { query: "search term" } # partial deep equality match
582
- - tool: documentRetrieve
583
- args: any # any arguments accepted
584
- max_duration_ms: 5000 # per-tool latency assertion
585
- - tool: summarize # omit args to skip argument checking
586
- ```
587
- `tool-trajectory` is an AgentV-specific extension over AgentV-normalized transcripts. Do not use Promptfoo `trajectory:*`, `tool-call-f1`, `skill-used`, or `trace-*` names; AgentV rejects those until their trace semantics are implemented directly.
572
+ ### Skill And Trajectory Assertions
573
+ ```yaml
574
+ - type: skill-used
575
+ value: csv-analyzer
576
+ - type: not-skill-used
577
+ value:
578
+ pattern: "web-*"
579
+ max: 0
580
+ - type: trajectory:tool-used
581
+ value:
582
+ name: knowledgeSearch
583
+ min: 2
584
+ - type: trajectory:tool-sequence
585
+ value:
586
+ mode: exact
587
+ steps: [knowledgeSearch, documentRetrieve]
588
+ - type: trajectory:tool-args-match
589
+ value:
590
+ name: knowledgeSearch
591
+ args: { query: "search term" }
592
+ mode: partial
593
+ ```
594
+ Use Promptfoo-compatible `skill-used`, `not-skill-used`, and `trajectory:*`
595
+ assertions for new eval YAML. Do not author `skill-trigger` or
596
+ `tool-trajectory`; AgentV rejects them with migration guidance. Per-tool
597
+ latency checks from old `tool-trajectory` YAML do not have a Promptfoo
598
+ trajectory equivalent yet; use a `script` assertion for that behavior.
588
599
 
589
600
  ### field-accuracy
590
601
  ```yaml
@@ -2,7 +2,7 @@ import { createRequire } from 'node:module'; const require = createRequire(impor
2
2
  import {
3
3
  loadTsEvalFile,
4
4
  loadTsEvalSuite
5
- } from "./chunk-3S6A2RKR.js";
5
+ } from "./chunk-6ZZCDZPD.js";
6
6
  import "./chunk-7BGERE6L.js";
7
7
  import "./chunk-PEUTJS7B.js";
8
8
  import "./chunk-M7BUKBAF.js";
@@ -11,4 +11,4 @@ export {
11
11
  loadTsEvalFile,
12
12
  loadTsEvalSuite
13
13
  };
14
- //# sourceMappingURL=ts-eval-loader-OMG2JBHP-OP5RR7A3.js.map
14
+ //# sourceMappingURL=ts-eval-loader-DQDYRULE-V3377FOL.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentv",
3
- "version": "5.2.0-next.1",
3
+ "version": "5.3.0-next.1",
4
4
  "description": "CLI entry point for AgentV",
5
5
  "type": "module",
6
6
  "repository": {