agentv 5.0.0-next.1 → 5.2.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.
- package/README.md +239 -53
- package/dist/{agentv-provider-AYXH7WLW-NJRC6UQX.js → agentv-provider-AYXH7WLW-6YZKZ7PS.js} +2 -2
- package/dist/{artifact-writer-QD52FC56.js → artifact-writer-SN6UNL5G.js} +15 -8
- package/dist/{chunk-GZJMODLW.js → chunk-3S6A2RKR.js} +45880 -30542
- package/dist/chunk-3S6A2RKR.js.map +1 -0
- package/dist/{chunk-6Q56CEXV.js → chunk-3X357HS4.js} +7900 -8985
- package/dist/chunk-3X357HS4.js.map +1 -0
- package/dist/{chunk-6JVM4GJI.js → chunk-46K2OET3.js} +187 -80
- package/dist/chunk-46K2OET3.js.map +1 -0
- package/dist/{chunk-IJEZFZJR.js → chunk-7BGERE6L.js} +2 -2
- package/dist/chunk-7BGERE6L.js.map +1 -0
- package/dist/{chunk-UG4JHZYM.js → chunk-ALVZQUZP.js} +670 -1427
- package/dist/chunk-ALVZQUZP.js.map +1 -0
- package/dist/{chunk-RCIEHFQ2.js → chunk-PEUTJS7B.js} +3 -3
- package/dist/{chunk-5H446C7X.js → chunk-QMRVH5ZP.js} +2 -8
- package/dist/{chunk-IBI7A5RP.js → chunk-T4AD3H3Y.js} +3444 -2251
- package/dist/chunk-T4AD3H3Y.js.map +1 -0
- package/dist/cli.js +8 -9
- package/dist/cli.js.map +1 -1
- package/dist/dashboard/assets/{index-D5_8DE_B.js → index-DNgf3qJ2.js} +1 -1
- package/dist/dashboard/assets/index-D_bokML8.css +1 -0
- package/dist/dashboard/assets/index-r_jSJmlw.js +121 -0
- package/dist/dashboard/index.html +2 -2
- package/dist/{dist-KJ6PELQY.js → dist-DEPJOMCA.js} +74 -60
- package/dist/{docker-workspace-ZJ2ESVBI-6UDETQII.js → docker-workspace-NNK4Z6FR-QRTIG6TM.js} +3 -3
- package/dist/{exec-MYPAJJP7-C5HD5WG5.js → exec-4HFFRQ3B-AXDMJNLJ.js} +3 -3
- package/dist/index.js +8 -9
- package/dist/{interactive-2WMVAASS.js → interactive-36ZNMQB2.js} +13 -29
- package/dist/interactive-36ZNMQB2.js.map +1 -0
- package/dist/skills/agentv-bench/SKILL.md +38 -34
- package/dist/skills/agentv-bench/agents/analyzer.md +6 -6
- package/dist/skills/agentv-bench/agents/comparator.md +4 -5
- package/dist/skills/agentv-bench/agents/grader.md +4 -4
- package/dist/skills/agentv-bench/references/autoresearch.md +3 -3
- package/dist/skills/agentv-bench/references/description-optimization.md +2 -2
- package/dist/skills/agentv-bench/references/environment-adaptation.md +10 -10
- package/dist/skills/agentv-bench/references/eval-yaml-spec.md +51 -30
- package/dist/skills/agentv-bench/references/migrating-from-skill-creator.md +4 -4
- package/dist/skills/agentv-bench/references/subagent-pipeline.md +13 -12
- package/dist/skills/agentv-eval-migrations/SKILL.md +33 -0
- package/dist/skills/agentv-eval-migrations/references/breaking-changes.md +1012 -0
- package/dist/skills/agentv-eval-review/SKILL.md +6 -3
- package/dist/skills/agentv-eval-review/scripts/lint_eval.py +1 -1
- package/dist/skills/agentv-eval-writer/SKILL.md +380 -246
- package/dist/skills/agentv-eval-writer/references/{config-schema.json → config.schema.json} +6 -5
- package/dist/skills/agentv-eval-writer/references/custom-evaluators.md +23 -18
- package/dist/skills/agentv-eval-writer/references/eval.schema.json +9852 -0
- package/dist/skills/agentv-eval-writer/references/python-helpers.md +8 -8
- package/dist/skills/agentv-eval-writer/references/rubric-evaluator.md +21 -22
- package/dist/skills/agentv-trace-analyst/SKILL.md +4 -4
- package/dist/templates/.agentv/targets.yaml +41 -40
- package/dist/{ts-eval-loader-RE43OAGX-AMRCUKBZ.js → ts-eval-loader-OMG2JBHP-OP5RR7A3.js} +5 -4
- package/package.json +19 -4
- package/dist/chunk-6JVM4GJI.js.map +0 -1
- package/dist/chunk-6Q56CEXV.js.map +0 -1
- package/dist/chunk-76FOHROU.js +0 -96
- package/dist/chunk-76FOHROU.js.map +0 -1
- package/dist/chunk-GZJMODLW.js.map +0 -1
- package/dist/chunk-HSHTTN6C.js +0 -565
- package/dist/chunk-HSHTTN6C.js.map +0 -1
- package/dist/chunk-IBI7A5RP.js.map +0 -1
- package/dist/chunk-IJEZFZJR.js.map +0 -1
- package/dist/chunk-LRULMAAA.js +0 -1711
- package/dist/chunk-LRULMAAA.js.map +0 -1
- package/dist/chunk-R3CXYNTN.js +0 -1238
- package/dist/chunk-R3CXYNTN.js.map +0 -1
- package/dist/chunk-UG4JHZYM.js.map +0 -1
- package/dist/chunk-VQ2ZO7XJ.js +0 -2098
- package/dist/chunk-VQ2ZO7XJ.js.map +0 -1
- package/dist/chunk-XALGXSKB.js +0 -21
- package/dist/chunk-XALGXSKB.js.map +0 -1
- package/dist/dashboard/assets/index-BVMrdN8a.js +0 -119
- package/dist/dashboard/assets/index-DZWXfWsv.css +0 -1
- package/dist/esm-NNMQYIKT.js +0 -32
- package/dist/esm-R77SNOF5.js +0 -65
- package/dist/esm-RVQPUGWH.js +0 -1207
- package/dist/esm-RVQPUGWH.js.map +0 -1
- package/dist/esm-TTEMJEVV.js +0 -933
- package/dist/esm-TTEMJEVV.js.map +0 -1
- package/dist/esm-ZADQ4XQH-QUFGGZL4.js +0 -924
- package/dist/esm-ZADQ4XQH-QUFGGZL4.js.map +0 -1
- package/dist/exec-MYPAJJP7-C5HD5WG5.js.map +0 -1
- package/dist/getMachineId-bsd-HSK5LZMG.js +0 -41
- package/dist/getMachineId-bsd-HSK5LZMG.js.map +0 -1
- package/dist/getMachineId-darwin-4DP6CCJV.js +0 -41
- package/dist/getMachineId-darwin-4DP6CCJV.js.map +0 -1
- package/dist/getMachineId-linux-44LJ5UJB.js +0 -33
- package/dist/getMachineId-linux-44LJ5UJB.js.map +0 -1
- package/dist/getMachineId-unsupported-NVK6IATM.js +0 -24
- package/dist/getMachineId-unsupported-NVK6IATM.js.map +0 -1
- package/dist/getMachineId-win-YZ36S7VA.js +0 -43
- package/dist/getMachineId-win-YZ36S7VA.js.map +0 -1
- package/dist/interactive-2WMVAASS.js.map +0 -1
- package/dist/otlp-json-file-exporter-RY63S3IG-PZBQPVYY.js +0 -9
- package/dist/otlp-json-file-exporter-RY63S3IG-PZBQPVYY.js.map +0 -1
- package/dist/skills/agentv-eval-writer/references/eval-schema.json +0 -17295
- package/dist/skills/agentv-eval-writer/references/experiment-schema.json +0 -278
- package/dist/src-76ISS3LH.js +0 -1733
- package/dist/src-76ISS3LH.js.map +0 -1
- package/dist/ts-eval-loader-RE43OAGX-AMRCUKBZ.js.map +0 -1
- /package/dist/{agentv-provider-AYXH7WLW-NJRC6UQX.js.map → agentv-provider-AYXH7WLW-6YZKZ7PS.js.map} +0 -0
- /package/dist/{artifact-writer-QD52FC56.js.map → artifact-writer-SN6UNL5G.js.map} +0 -0
- /package/dist/{chunk-RCIEHFQ2.js.map → chunk-PEUTJS7B.js.map} +0 -0
- /package/dist/{chunk-5H446C7X.js.map → chunk-QMRVH5ZP.js.map} +0 -0
- /package/dist/{dist-KJ6PELQY.js.map → dist-DEPJOMCA.js.map} +0 -0
- /package/dist/{docker-workspace-ZJ2ESVBI-6UDETQII.js.map → docker-workspace-NNK4Z6FR-QRTIG6TM.js.map} +0 -0
- /package/dist/{esm-NNMQYIKT.js.map → exec-4HFFRQ3B-AXDMJNLJ.js.map} +0 -0
- /package/dist/{esm-R77SNOF5.js.map → ts-eval-loader-OMG2JBHP-OP5RR7A3.js.map} +0 -0
|
@@ -9,32 +9,51 @@ The grader agent uses this to evaluate assertions without the CLI.
|
|
|
9
9
|
|
|
10
10
|
- `name` (string, optional) — eval name
|
|
11
11
|
- `description` (string, optional) — description
|
|
12
|
-
- `
|
|
13
|
-
- `
|
|
14
|
-
- `
|
|
12
|
+
- `target` or `targets` (string | object | object[], optional) — system under test selection
|
|
13
|
+
- `environment` (object | `file://...`, optional) — AgentV coding-agent testbed recipe
|
|
14
|
+
- `env` (object, optional) — provider/eval environment variable overrides and template inputs
|
|
15
|
+
- `extensions` (array, optional) — lifecycle hooks such as `beforeAll`, `beforeEach`, `afterEach`, `afterAll`
|
|
16
|
+
- `prompts` (array, optional) — Promptfoo-compatible prompt matrix entries
|
|
15
17
|
- `tests` (array, required) — test cases
|
|
16
18
|
|
|
17
19
|
### Per-test fields
|
|
18
20
|
|
|
19
21
|
- `id` (string, required) — unique test identifier
|
|
20
|
-
- `
|
|
22
|
+
- `vars` (object, required when prompts need row data) — prompt-template variables for this row
|
|
21
23
|
- `expected_output` (string | Message[], optional) — passive reference answer. String shorthand expands to `[{role: assistant, content: "..."}]`. It is available to declared graders, but does not add an implicit grader when `assertions` is present.
|
|
22
24
|
- `criteria` (string, optional) — human-readable success criteria
|
|
23
|
-
- `
|
|
25
|
+
- `assert` (array, optional) — grader assertions
|
|
26
|
+
- `environment` (object | `file://...`, optional) — per-case testbed override
|
|
24
27
|
- `conversation_id` (string, optional) — groups related tests
|
|
25
28
|
- `execution` (object, optional) — per-test execution override
|
|
26
29
|
|
|
30
|
+
If `assert` already states the grading contract, omit `criteria` instead of
|
|
31
|
+
duplicating the same rubric. Prefer plain assertion strings for semantic checks
|
|
32
|
+
when the default LLM rubric grader can judge them; use multiple named
|
|
33
|
+
`type: llm-rubric` blocks only for custom prompts, custom grader targets, or
|
|
34
|
+
intentional grader panels. Write `expected_output` as a golden/reference answer,
|
|
35
|
+
not as criteria or scoring instructions.
|
|
36
|
+
|
|
37
|
+
For historical or repo-state evals, materialize the repository through
|
|
38
|
+
`environment.setup.command` and pass the repo/ref as argv inputs. A SHA in
|
|
39
|
+
prompt prose or metadata is context only; it does not give the agent an actual
|
|
40
|
+
checkout. `setup.command` is a non-empty string array. Put the executable at
|
|
41
|
+
`command[0]`, put CLI arguments in the remaining array entries, and use
|
|
42
|
+
`timeout_ms` for setup timeout.
|
|
43
|
+
|
|
27
44
|
## 2. Assertion Types and Grading Recipes
|
|
28
45
|
|
|
29
46
|
### Default grader contract
|
|
30
47
|
|
|
31
|
-
When a test has no `assertions`, AgentV uses the default `llm-
|
|
48
|
+
When a test has no `assertions`, AgentV uses the default `llm-rubric` with the case context,
|
|
32
49
|
including `criteria` and `expected_output` when present.
|
|
33
50
|
|
|
34
51
|
When `assertions` is present, the list is explicit: run only the declared
|
|
35
52
|
assertions/graders. `expected_output` remains reference data for graders that consume it,
|
|
36
|
-
such as `llm-
|
|
37
|
-
default `llm-
|
|
53
|
+
such as `llm-rubric`, `script`, or `field-accuracy`; it does not trigger an additional
|
|
54
|
+
default `llm-rubric`.
|
|
55
|
+
When the declared assertion strings fully express the semantic contract, do not
|
|
56
|
+
also add a duplicate `criteria` block.
|
|
38
57
|
|
|
39
58
|
For each assertion type: YAML config fields, grading recipe (exact pseudocode for deterministic types), and PASS/FAIL conditions.
|
|
40
59
|
|
|
@@ -154,9 +173,10 @@ Same as contains variants but explicitly case-insensitive.
|
|
|
154
173
|
|
|
155
174
|
#### `tool-trajectory`
|
|
156
175
|
|
|
157
|
-
- **Fields:** `expected` (array of expected tool calls), `mode` (string: `exact` | `
|
|
158
|
-
- **Recipe:** Inspect transcript
|
|
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.
|
|
159
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.
|
|
160
180
|
|
|
161
181
|
#### `skill-trigger`
|
|
162
182
|
|
|
@@ -166,10 +186,10 @@ Same as contains variants but explicitly case-insensitive.
|
|
|
166
186
|
|
|
167
187
|
### LLM-judged assertions (require Claude reasoning)
|
|
168
188
|
|
|
169
|
-
#### `llm-
|
|
189
|
+
#### `llm-rubric`
|
|
170
190
|
|
|
171
|
-
- **Fields:** `
|
|
172
|
-
- **Recipe:** Read the prompt. Evaluate the response against
|
|
191
|
+
- **Fields:** `value` (free-form or structured criteria), `rubrics` (itemized criteria), or `prompt` / exported `prompt_content` (custom grading prompt)
|
|
192
|
+
- **Recipe:** Read the rubric value, rubric items, or prompt. Evaluate the response against those criteria using your own reasoning. Produce score (0.0-1.0) with evidence.
|
|
173
193
|
- **PASS:** score >= 0.5 (configurable via `threshold`).
|
|
174
194
|
|
|
175
195
|
#### `rubric` / `rubrics`
|
|
@@ -180,27 +200,28 @@ Same as contains variants but explicitly case-insensitive.
|
|
|
180
200
|
|
|
181
201
|
### Script-based assertions
|
|
182
202
|
|
|
183
|
-
#### `
|
|
203
|
+
#### `script-grader`
|
|
184
204
|
|
|
185
205
|
- **Fields:** `path` (string, required — path to script), `command` (string[], optional — custom command)
|
|
186
|
-
- **Script SDK:** Use `
|
|
206
|
+
- **Script SDK:** Use `defineScriptGrader` from `@agentv/sdk`:
|
|
187
207
|
```typescript
|
|
188
|
-
import {
|
|
189
|
-
export default
|
|
208
|
+
import { defineScriptGrader } from '@agentv/sdk';
|
|
209
|
+
export default defineScriptGrader(({ output, trace }) => ({
|
|
190
210
|
score: (output ?? '').includes('expected') ? 1 : 0,
|
|
191
|
-
|
|
211
|
+
assert: [{ text: 'Contains expected', passed: (output ?? '').includes('expected') }],
|
|
192
212
|
}));
|
|
193
213
|
```
|
|
194
214
|
- **Recipe:** The CLI runs the script, passing canonical JSON on stdin (`{output, input, expected_output, ...}`). Script returns `{"score": N, "assertions": [...]}`
|
|
195
215
|
- **PASS:** score >= 0.5 (or as configured).
|
|
196
216
|
|
|
197
|
-
###
|
|
217
|
+
### Assertion groups
|
|
198
218
|
|
|
199
|
-
#### `
|
|
219
|
+
#### `assert-set`
|
|
200
220
|
|
|
201
|
-
- **Fields:** `
|
|
202
|
-
- **Recipe:** Evaluate each
|
|
203
|
-
- **PASS:**
|
|
221
|
+
- **Fields:** `assert` (array of child assertions), `threshold` (number, optional), `config` (object, optional), child `weight` fields.
|
|
222
|
+
- **Recipe:** Evaluate each child assertion and compute a weighted average.
|
|
223
|
+
- **PASS:** without `threshold`, every nonzero-weight child must pass. With `threshold`, the weighted score must meet the threshold.
|
|
224
|
+
- **Config:** parent `config` is inherited by children. Child `config` keys override parent keys.
|
|
204
225
|
|
|
205
226
|
## 3. Negate Support
|
|
206
227
|
|
|
@@ -254,7 +275,7 @@ Each line in the results JSONL file is an `EvaluationResult` object. In JSONL, f
|
|
|
254
275
|
- `assertions` (array of `{text, passed, evidence?}`)
|
|
255
276
|
- `weight` (number, optional)
|
|
256
277
|
- `verdict` (string: `pass` | `fail` | `skip`)
|
|
257
|
-
- `details` (object, optional — structured data from
|
|
278
|
+
- `details` (object, optional — structured data from script graders)
|
|
258
279
|
- `reasoning` (string, optional)
|
|
259
280
|
|
|
260
281
|
## 6. Eval Set Support
|
|
@@ -287,8 +308,8 @@ Extracts inputs, target commands, and grader configs from an eval YAML file.
|
|
|
287
308
|
│ ├── invoke.json ← {kind, command?, cwd?, timeout_ms?}
|
|
288
309
|
│ ├── criteria.md ← human-readable success criteria
|
|
289
310
|
│ ├── expected_output.json ← (if present)
|
|
290
|
-
│ ├──
|
|
291
|
-
│ └── llm_graders/<name>.json ← {name, weight, threshold?, prompt_content}
|
|
311
|
+
│ ├── script_graders/<name>.json ← {name, command, weight, config?}
|
|
312
|
+
│ └── llm_graders/<name>.json ← {name, type, weight, threshold?, prompt_content, value?, rubrics?}
|
|
292
313
|
```
|
|
293
314
|
|
|
294
315
|
**`manifest.json` format:**
|
|
@@ -307,15 +328,15 @@ Extracts inputs, target commands, and grader configs from an eval YAML file.
|
|
|
307
328
|
|
|
308
329
|
### `agentv pipeline grade <export-dir>`
|
|
309
330
|
|
|
310
|
-
Runs
|
|
331
|
+
Runs script-grader assertions against `response.md` files in each test directory.
|
|
311
332
|
|
|
312
333
|
**Prerequisites:** `pipeline input` has been run and `response.md` exists in each test dir.
|
|
313
334
|
|
|
314
|
-
**Output:** `<test-id>/
|
|
335
|
+
**Output:** `<test-id>/script_grader_results/<name>.json` for each script grader, containing:
|
|
315
336
|
```json
|
|
316
337
|
{
|
|
317
338
|
"name": "grader-name",
|
|
318
|
-
"type": "
|
|
339
|
+
"type": "script-grader",
|
|
319
340
|
"score": 1.0,
|
|
320
341
|
"weight": 1.0,
|
|
321
342
|
"assertions": [{"text": "...", "passed": true}]
|
|
@@ -324,7 +345,7 @@ Runs code-grader assertions against `response.md` files in each test directory.
|
|
|
324
345
|
|
|
325
346
|
### `agentv pipeline bench <export-dir>`
|
|
326
347
|
|
|
327
|
-
Merges
|
|
348
|
+
Merges script-grader results with LLM grader scores and produces final artifacts.
|
|
328
349
|
|
|
329
350
|
LLM grader results are read from disk at `<test-id>/llm_grader_results/<name>.json` per test.
|
|
330
351
|
|
|
@@ -20,7 +20,7 @@ AgentV automatically:
|
|
|
20
20
|
- Converts `assertions` → LLM-grader graders
|
|
21
21
|
- Resolves `files[]` paths relative to the evals.json directory
|
|
22
22
|
|
|
23
|
-
If you're using the `agentv-bench` skill, it orchestrates these same AgentV commands.
|
|
23
|
+
If you're using the `agentv-bench` skill, it orchestrates these same AgentV commands. script graders, grading, and artifact generation remain in AgentV core; the skill just orchestrates and summarizes the existing outputs.
|
|
24
24
|
|
|
25
25
|
## What You Gain
|
|
26
26
|
|
|
@@ -29,7 +29,7 @@ Moving from skill-creator's eval loop to AgentV's lifecycle skill gives you:
|
|
|
29
29
|
| Capability | skill-creator | AgentV lifecycle skill |
|
|
30
30
|
|-----------|---------------|----------------------|
|
|
31
31
|
| Workspace isolation | ❌ | ✅ Clone repos, run setup/teardown scripts |
|
|
32
|
-
|
|
|
32
|
+
| script graders | ❌ | ✅ Python/TypeScript grader scripts via `defineScriptGrader()` |
|
|
33
33
|
| Tool trajectory scoring | ❌ | ✅ Evaluate tool call sequences |
|
|
34
34
|
| Multi-provider comparison | with-skill vs without-skill | N-way: Claude, GPT, Copilot, Gemini, custom CLI |
|
|
35
35
|
| Multi-turn evaluation | ❌ | ✅ Conversation tracking with `conversation_id` |
|
|
@@ -64,14 +64,14 @@ When evals.json becomes limiting, convert to EVAL.yaml for the full feature set:
|
|
|
64
64
|
# Convert evals.json to EVAL.yaml
|
|
65
65
|
agentv convert evals.json
|
|
66
66
|
|
|
67
|
-
# Edit the generated YAML to add
|
|
67
|
+
# Edit the generated YAML to add environment setup, script graders, etc.
|
|
68
68
|
# Then run with the full lifecycle
|
|
69
69
|
agentv eval eval.yaml
|
|
70
70
|
```
|
|
71
71
|
|
|
72
72
|
EVAL.yaml unlocks:
|
|
73
73
|
- **Workspace setup/teardown** — clone repos, install dependencies, clean up after tests
|
|
74
|
-
- **
|
|
74
|
+
- **script graders** — write graders in Python or TypeScript, not just LLM prompts
|
|
75
75
|
- **Rubric-based grading** — multi-dimensional scoring with weighted criteria
|
|
76
76
|
- **Retry policies** — automatic retries for flaky tests with configurable backoff
|
|
77
77
|
- **Test groups** — organize tests by category with shared config
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# Subagent Pipeline — Running eval.yaml without CLI
|
|
2
2
|
|
|
3
|
-
This reference documents the detailed procedure for running evaluations in subagent mode
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
This reference documents the detailed procedure for running evaluations in subagent mode.
|
|
4
|
+
Subagent mode is an explicit opt-in fallback; the main `agentv-bench` flow defaults to
|
|
5
|
+
AgentV CLI mode. The orchestrating skill dispatches `executor` subagents to perform test
|
|
6
|
+
cases and `grader` subagents to evaluate outputs.
|
|
6
7
|
|
|
7
8
|
Read this reference when executing Step 3 (Run and Grade) in subagent mode.
|
|
8
9
|
|
|
@@ -49,12 +50,12 @@ code grading in one step. When `--out` is omitted, the output directory defaults
|
|
|
49
50
|
# Extract inputs and invoke all CLI targets in parallel:
|
|
50
51
|
agentv pipeline run evals/repro.eval.yaml
|
|
51
52
|
|
|
52
|
-
# Also run
|
|
53
|
+
# Also run script graders inline (instead of using pipeline grade separately):
|
|
53
54
|
agentv pipeline run evals/repro.eval.yaml --grader-type code
|
|
54
55
|
```
|
|
55
56
|
|
|
56
57
|
By default, `pipeline run` extracts inputs and invokes targets only. Pass `--grader-type code`
|
|
57
|
-
to also run
|
|
58
|
+
to also run script-graders inline, or use `agentv pipeline grade <run-dir>` as a separate step.
|
|
58
59
|
|
|
59
60
|
The run directory is printed to stdout. Then continue to the grading and merge phases
|
|
60
61
|
described in SKILL.md Step 3.
|
|
@@ -108,7 +109,7 @@ grading until all responses are present.
|
|
|
108
109
|
|
|
109
110
|
### Step 3 onward: Grade and merge
|
|
110
111
|
|
|
111
|
-
See SKILL.md Step 3 "Grading" section for the three-phase grading process (
|
|
112
|
+
See SKILL.md Step 3 "Grading" section for the three-phase grading process (script graders →
|
|
112
113
|
LLM grading → merge and validate).
|
|
113
114
|
|
|
114
115
|
## Step-by-Step Fine-Grained Control (CLI targets)
|
|
@@ -121,7 +122,7 @@ agentv pipeline input evals/repro.eval.yaml
|
|
|
121
122
|
|
|
122
123
|
# Step 2: run_tests.py invokes CLI targets (or use pipeline run instead)
|
|
123
124
|
|
|
124
|
-
# Step 3: Run
|
|
125
|
+
# Step 3: Run script graders
|
|
125
126
|
agentv pipeline grade <run-dir>
|
|
126
127
|
|
|
127
128
|
# Step 4: Subagent does LLM grading, writes results to llm_grader_results/<name>.json per test
|
|
@@ -135,8 +136,8 @@ agentv results validate <run-dir>
|
|
|
135
136
|
|
|
136
137
|
## LLM Grading JSON Format
|
|
137
138
|
|
|
138
|
-
The agent reads `llm_graders/<name>.json` for each test, grades the response using
|
|
139
|
-
content, and produces a scores JSON:
|
|
139
|
+
The agent reads `llm_graders/<name>.json` for each test, grades the response using
|
|
140
|
+
`value`, `rubrics`, or prompt content from the config, and produces a scores JSON:
|
|
140
141
|
|
|
141
142
|
```json
|
|
142
143
|
{
|
|
@@ -173,9 +174,9 @@ the eval.yaml. The target is recorded in `manifest.json` — one run = one targe
|
|
|
173
174
|
├── criteria.md ← grading criteria
|
|
174
175
|
├── response.md ← target/agent output
|
|
175
176
|
├── timing.json ← execution timing
|
|
176
|
-
├──
|
|
177
|
-
├── llm_graders/<name>.json ← LLM grader configs
|
|
178
|
-
├──
|
|
177
|
+
├── script_graders/<name>.json ← grader configs written by `pipeline input`: script-grader scripts AND built-in types (contains, regex, equals, etc.)
|
|
178
|
+
├── llm_graders/<name>.json ← LLM grader configs with prompt_content, value, or rubrics
|
|
179
|
+
├── script_grader_results/<name>.json ← script grader results
|
|
179
180
|
├── llm_grader_results/<name>.json ← LLM grader results (written by grader subagents; one file per grader)
|
|
180
181
|
└── grading.json ← merged grading (written by `pipeline bench` — do NOT write here directly)
|
|
181
182
|
```
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agentv-eval-migrations
|
|
3
|
+
description: >-
|
|
4
|
+
Migrate AgentV eval YAML across breaking schema changes, especially workspace
|
|
5
|
+
contract updates and portable-vs-local runtime binding cleanup.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# AgentV Eval Migrations
|
|
9
|
+
|
|
10
|
+
Use this skill when updating existing AgentV eval YAML, examples, docs, or
|
|
11
|
+
generated eval authoring guidance after a schema-breaking change.
|
|
12
|
+
|
|
13
|
+
Before editing, read `references/breaking-changes.md`. For stale evals from
|
|
14
|
+
AgentV v4.42.4, use that reference as the migration map: it lists the
|
|
15
|
+
v4.42.4-era shape, current shape, migration steps, verification commands, and
|
|
16
|
+
compatibility notes for each major breaking authoring change. Then compare the
|
|
17
|
+
eval file against the current portable contract:
|
|
18
|
+
|
|
19
|
+
- Keep committed eval YAML portable: prompts, cases, assertions, workspace
|
|
20
|
+
templates, repos, hooks, env checks, Docker preflight/container config, and
|
|
21
|
+
`workspace.scope`.
|
|
22
|
+
- Do not put machine-local existing workspace directories in eval YAML. Use
|
|
23
|
+
`--workspace-path` for one-off runs or `.agentv/config.local.yaml` with
|
|
24
|
+
`execution.workspace_path` for persistent local binding.
|
|
25
|
+
- Use `workspace.scope: suite | attempt` for portable workspace lifetime. Docker
|
|
26
|
+
config is not a replacement for workspace folder lifetime.
|
|
27
|
+
- Keep wire-format fields in `snake_case` and TypeScript internals in
|
|
28
|
+
`camelCase`.
|
|
29
|
+
|
|
30
|
+
After migration, validate with `bun apps/cli/src/cli.ts validate <file>` when
|
|
31
|
+
working in the AgentV repo, or `agentv validate <file>` from an installed CLI.
|
|
32
|
+
Run the repo's parser/schema tests for generated examples and fixtures when the
|
|
33
|
+
change affects shared skill data or examples.
|