@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 CHANGED
@@ -1,18 +1,20 @@
1
- # benchmark — Unified Agent Evaluation
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
- GAIA is the first built-in adapter, but the tool surface is generic so other benchmarks can plug in later without changing client behavior.
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 available benchmark suites with version and asset metadata |
12
- | `benchmark_start_challenge` | Start an attempt and return the first question |
13
- | `benchmark_submit_solution` | Grade one answer and return the next question or final score |
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 the current question |
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 question has assets, call `benchmark_get_asset`
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 without any external dataset file:
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 Environment
60
+ ## Optional environment
38
61
 
39
62
  ```bash
40
- BENCHMARK_GAIA_DATA_FILE=/absolute/path/to/gaia-challenges.json
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
- - `BENCHMARK_GAIA_DATA_FILE`: Optional JSON file with GAIA-compatible normalized challenge definitions
46
- - `BENCHMARK_STATE_DIR`: Where attempt state is persisted
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
- "command": "npx",
56
- "args": ["-y", "@fre4x/benchmark"],
57
- "env": {
58
- "BENCHMARK_GAIA_DATA_FILE": "/absolute/path/to/gaia-challenges.json"
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