@fre4x/benchmark 1.1.0-beta.0 → 1.1.0-beta.3
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 +122 -18
- package/dist/fallback-catalog.json +613 -0
- package/dist/index.js +1218 -343
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
|
-
# benchmark —
|
|
1
|
+
# benchmark — Deterministic Agent Evaluation
|
|
2
2
|
|
|
3
|
-
This package exposes a consistent MCP workflow for benchmark-driven agent evaluation.
|
|
3
|
+
This package exposes a consistent MCP workflow for deterministic benchmark-driven agent evaluation.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
The rebuilt core is organized around challenge catalogs, typed task assets, and explicit checker kinds so coding, web, and OS-style tasks can share one MCP surface without relying on LLM judges.
|
|
6
6
|
|
|
7
7
|
## Tools
|
|
8
8
|
|
|
9
9
|
| Tool | Purpose |
|
|
10
10
|
|------|---------|
|
|
11
|
-
| `benchmark_list_challenges` | List
|
|
12
|
-
| `
|
|
13
|
-
| `
|
|
11
|
+
| `benchmark_list_challenges` | List deterministic benchmark suites with family, runner, and checker metadata |
|
|
12
|
+
| `benchmark_get_catalog_status` | Inspect catalog source configuration, cache state, and availability |
|
|
13
|
+
| `benchmark_sync_catalog` | Fetch and cache the remote benchmark catalog when a URL source is configured |
|
|
14
|
+
| `benchmark_start_challenge` | Start an attempt and return the first task |
|
|
15
|
+
| `benchmark_submit_solution` | Grade one task and return checker evidence plus the next task or final score |
|
|
14
16
|
| `benchmark_get_asset` | Read an attached benchmark asset by `asset_id` |
|
|
15
|
-
| `benchmark_get_attempt` | Inspect attempt status and
|
|
17
|
+
| `benchmark_get_attempt` | Inspect attempt status, current task, and paginated evaluation history |
|
|
16
18
|
| `benchmark_cancel_attempt` | Cancel an active attempt |
|
|
17
19
|
|
|
18
20
|
## Workflow
|
|
@@ -20,45 +22,147 @@ GAIA is the first built-in adapter, but the tool surface is generic so other ben
|
|
|
20
22
|
1. Call `benchmark_list_challenges`
|
|
21
23
|
2. Pick a `challenge_id`
|
|
22
24
|
3. Call `benchmark_start_challenge`
|
|
23
|
-
4. If the
|
|
25
|
+
4. If the task has assets, call `benchmark_get_asset`
|
|
24
26
|
5. Call `benchmark_submit_solution`
|
|
25
27
|
6. Repeat until `done: true`
|
|
26
28
|
|
|
27
29
|
Each response includes machine-readable guidance for the most likely next tool call.
|
|
28
30
|
|
|
31
|
+
## Fallback benchmark families
|
|
32
|
+
|
|
33
|
+
- **Code** — deterministic JSON/text answers backed by explicit checkers
|
|
34
|
+
- **Web** — DOM snapshot extraction tasks with JSON field assertions
|
|
35
|
+
- **OS** — filesystem/log review tasks with deterministic text grading
|
|
36
|
+
|
|
37
|
+
## Zero-config run
|
|
38
|
+
|
|
39
|
+
Run with the bundled fallback catalog and no extra configuration:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npx @fre4x/benchmark
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Or from this repo:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
cd /home/fritzprix/my_works/b1te
|
|
49
|
+
npm run inspector -w @fre4x/benchmark
|
|
50
|
+
```
|
|
51
|
+
|
|
29
52
|
## Mock Mode
|
|
30
53
|
|
|
31
|
-
Run
|
|
54
|
+
Run with the same bundled fallback catalog in mock mode:
|
|
32
55
|
|
|
33
56
|
```bash
|
|
34
57
|
MOCK=true npx @fre4x/benchmark
|
|
35
58
|
```
|
|
36
59
|
|
|
37
|
-
## Optional
|
|
60
|
+
## Optional environment
|
|
38
61
|
|
|
39
62
|
```bash
|
|
40
|
-
|
|
63
|
+
BENCHMARK_CATALOG_FILE=/absolute/path/to/benchmark-catalog.json
|
|
64
|
+
BENCHMARK_CATALOG_URL=https://example.com/benchmark-catalog.json
|
|
65
|
+
BENCHMARK_CACHE_DIR=/absolute/path/to/catalog-cache
|
|
66
|
+
BENCHMARK_CACHE_TTL_SECONDS=3600
|
|
41
67
|
BENCHMARK_STATE_DIR=/absolute/path/to/store-attempt-json
|
|
42
68
|
BENCHMARK_MOCK=true
|
|
43
69
|
```
|
|
44
70
|
|
|
45
|
-
- `
|
|
46
|
-
- `
|
|
71
|
+
- `BENCHMARK_CATALOG_FILE`: Optional JSON file with challenge definitions in the rebuilt deterministic catalog format
|
|
72
|
+
- `BENCHMARK_CATALOG_URL`: Optional remote JSON catalog URL for fetch/cache based ingestion
|
|
73
|
+
- `BENCHMARK_CACHE_DIR`: Optional cache directory for remote catalog snapshots
|
|
74
|
+
- `BENCHMARK_CACHE_TTL_SECONDS`: Freshness window for remote catalog cache reuse
|
|
75
|
+
- `BENCHMARK_STATE_DIR`: Where attempt files and lock directories are persisted
|
|
47
76
|
- `BENCHMARK_MOCK`: Alternate mock-mode flag
|
|
48
77
|
|
|
78
|
+
`BENCHMARK_GAIA_DATA_FILE` is still accepted as a backward-compatible alias, but the rebuilt package is no longer GAIA-first.
|
|
79
|
+
|
|
80
|
+
When `BENCHMARK_CATALOG_URL` is set, the package will reuse a fresh cached copy when available and can be explicitly refreshed with `benchmark_sync_catalog`.
|
|
81
|
+
|
|
82
|
+
## Catalog shape
|
|
83
|
+
|
|
84
|
+
External catalogs must be a JSON array of challenge definitions shaped like:
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
[
|
|
88
|
+
{
|
|
89
|
+
"challenge_id": "custom_suite",
|
|
90
|
+
"benchmark_id": "custom",
|
|
91
|
+
"family": "code",
|
|
92
|
+
"runner_kind": "code_runner",
|
|
93
|
+
"title": "Custom Challenge",
|
|
94
|
+
"description": "Deterministic single-task suite",
|
|
95
|
+
"version": "v1",
|
|
96
|
+
"source": "external",
|
|
97
|
+
"tasks": [
|
|
98
|
+
{
|
|
99
|
+
"task_id": "custom-1",
|
|
100
|
+
"title": "Return yes",
|
|
101
|
+
"prompt": "Return only yes.",
|
|
102
|
+
"response_format": "text",
|
|
103
|
+
"difficulty": 1,
|
|
104
|
+
"assets": [],
|
|
105
|
+
"checkers": [
|
|
106
|
+
{
|
|
107
|
+
"checker_id": "custom-yes",
|
|
108
|
+
"kind": "exact_text",
|
|
109
|
+
"expected": "yes"
|
|
110
|
+
}
|
|
111
|
+
]
|
|
112
|
+
}
|
|
113
|
+
]
|
|
114
|
+
}
|
|
115
|
+
]
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Supported checker kinds today:
|
|
119
|
+
|
|
120
|
+
- `exact_text`
|
|
121
|
+
- `normalized_text`
|
|
122
|
+
- `regex_match`
|
|
123
|
+
- `contains_all_text`
|
|
124
|
+
- `json_field_equals`
|
|
125
|
+
- `runner_fact_equals`
|
|
126
|
+
- `runner_log_contains_text`
|
|
127
|
+
|
|
128
|
+
Each submission now also records runner execution metadata:
|
|
129
|
+
|
|
130
|
+
- workspace directory
|
|
131
|
+
- materialized asset and submission artifacts
|
|
132
|
+
- runner facts
|
|
133
|
+
- runner logs
|
|
134
|
+
|
|
135
|
+
## Example external catalog
|
|
136
|
+
|
|
137
|
+
The repo includes the bundled fallback catalog source at:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
benchmark/catalogs/expanded-catalog.json
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Use it like this:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
cd /home/fritzprix/my_works/b1te
|
|
147
|
+
BENCHMARK_CATALOG_FILE=/home/fritzprix/my_works/b1te/benchmark/catalogs/expanded-catalog.json npm run inspector -w @fre4x/benchmark
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
If no catalog env is provided at runtime, the published package falls back to the bundled copy of this catalog automatically.
|
|
151
|
+
|
|
49
152
|
## Claude Desktop
|
|
50
153
|
|
|
51
154
|
```json
|
|
52
155
|
{
|
|
53
156
|
"mcpServers": {
|
|
54
157
|
"benchmark": {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
158
|
+
"command": "npx",
|
|
159
|
+
"args": ["-y", "@fre4x/benchmark"],
|
|
160
|
+
"env": {
|
|
161
|
+
"BENCHMARK_CATALOG_URL": "https://example.com/benchmark-catalog.json",
|
|
162
|
+
"BENCHMARK_CACHE_DIR": "/absolute/path/to/benchmark-cache"
|
|
163
|
+
}
|
|
59
164
|
}
|
|
60
165
|
}
|
|
61
|
-
}
|
|
62
166
|
}
|
|
63
167
|
```
|
|
64
168
|
|