verifiers 0.3.2.dev42__py3-none-any.whl → 0.3.2.dev43__py3-none-any.whl
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.
- verifiers/v1/agent.py +1 -7
- verifiers/v1/cli/eval/main.py +3 -5
- verifiers/v1/cli/gepa.py +1 -1
- verifiers/v1/cli/output.py +4 -7
- verifiers/v1/harness.py +0 -25
- verifiers/v1/harnesses/prime_agent/harness.py +0 -1
- verifiers/v1/mcp/launch.py +2 -8
- verifiers/v1/mcp/server.py +0 -3
- {verifiers-0.3.2.dev42.dist-info → verifiers-0.3.2.dev43.dist-info}/METADATA +1 -1
- {verifiers-0.3.2.dev42.dist-info → verifiers-0.3.2.dev43.dist-info}/RECORD +13 -13
- {verifiers-0.3.2.dev42.dist-info → verifiers-0.3.2.dev43.dist-info}/WHEEL +0 -0
- {verifiers-0.3.2.dev42.dist-info → verifiers-0.3.2.dev43.dist-info}/entry_points.txt +0 -0
- {verifiers-0.3.2.dev42.dist-info → verifiers-0.3.2.dev43.dist-info}/licenses/LICENSE +0 -0
verifiers/v1/agent.py
CHANGED
|
@@ -9,7 +9,7 @@ server; un-entered, each run brings its own."""
|
|
|
9
9
|
|
|
10
10
|
import asyncio
|
|
11
11
|
import logging
|
|
12
|
-
from collections.abc import AsyncIterator, Callable,
|
|
12
|
+
from collections.abc import AsyncIterator, Callable, Mapping
|
|
13
13
|
from contextlib import asynccontextmanager, nullcontext
|
|
14
14
|
from dataclasses import dataclass
|
|
15
15
|
from typing import Self
|
|
@@ -733,9 +733,3 @@ class Agents:
|
|
|
733
733
|
f"{sorted(agents) if agents else []}"
|
|
734
734
|
)
|
|
735
735
|
return agents[name]
|
|
736
|
-
|
|
737
|
-
def __iter__(self) -> Iterator[Agent]:
|
|
738
|
-
return iter(self._agents.values())
|
|
739
|
-
|
|
740
|
-
def __len__(self) -> int:
|
|
741
|
-
return len(self._agents)
|
verifiers/v1/cli/eval/main.py
CHANGED
|
@@ -46,11 +46,9 @@ def main(argv: list[str] | None = None) -> None:
|
|
|
46
46
|
narrow_config(EvalConfig, argv)
|
|
47
47
|
) # full option help, narrowed to the given ids
|
|
48
48
|
return
|
|
49
|
-
# An env-block flag
|
|
50
|
-
#
|
|
51
|
-
typed_axis = any(
|
|
52
|
-
a.startswith(("--env.", "--taskset.", "--harness.", "--serve.")) for a in argv
|
|
53
|
-
)
|
|
49
|
+
# An env-block flag skips the usage gate so the typed parse renders its
|
|
50
|
+
# did-you-mean instead of a bare usage line.
|
|
51
|
+
typed_axis = any(a.startswith(("--env.", "--serve.")) for a in argv)
|
|
54
52
|
if (
|
|
55
53
|
not extract_id(argv, "env.taskset")
|
|
56
54
|
and not references_config_file(argv)
|
verifiers/v1/cli/gepa.py
CHANGED
|
@@ -42,7 +42,7 @@ def main(argv: list[str] | None = None) -> None:
|
|
|
42
42
|
narrow_config(GEPAConfig, argv)
|
|
43
43
|
) # full option help, narrowed to the given ids
|
|
44
44
|
return
|
|
45
|
-
typed_axis = any(a.startswith(
|
|
45
|
+
typed_axis = any(a.startswith("--env.") for a in argv)
|
|
46
46
|
if (
|
|
47
47
|
not extract_id(argv, "env.taskset")
|
|
48
48
|
and not references_config_file(argv)
|
verifiers/v1/cli/output.py
CHANGED
|
@@ -72,13 +72,10 @@ def attempt_log_file(run_dir: Path) -> Path:
|
|
|
72
72
|
|
|
73
73
|
|
|
74
74
|
def saved_config_path(run_dir: Path) -> Path | None:
|
|
75
|
-
"""The run's saved resolved config (`configs/resolved/<cli>.json
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
if candidates:
|
|
80
|
-
return candidates[0]
|
|
81
|
-
return None
|
|
75
|
+
"""The run's saved resolved config (`configs/resolved/<cli>.json`), None if absent."""
|
|
76
|
+
config_dir = run_dir / CONFIG_DIR / RESOLVED_DIR
|
|
77
|
+
candidates = sorted(config_dir.glob("*.json")) if config_dir.is_dir() else []
|
|
78
|
+
return candidates[0] if candidates else None
|
|
82
79
|
|
|
83
80
|
|
|
84
81
|
# Compiling an adapter is the expensive part; run output reuses only a few model classes.
|
verifiers/v1/harness.py
CHANGED
|
@@ -117,31 +117,6 @@ class Harness(ABC, Generic[ConfigT]):
|
|
|
117
117
|
# `write` moves bytes, not modes; restore the execute bits scripts need.
|
|
118
118
|
await runtime.run(["chmod", "+x", *executables], {})
|
|
119
119
|
|
|
120
|
-
async def run(
|
|
121
|
-
self,
|
|
122
|
-
ctx: ModelContext,
|
|
123
|
-
trace: Trace,
|
|
124
|
-
runtime: Runtime,
|
|
125
|
-
endpoint: str,
|
|
126
|
-
secret: str,
|
|
127
|
-
mcp_urls: dict[str, str],
|
|
128
|
-
data: TaskData,
|
|
129
|
-
messages: Messages | None = None,
|
|
130
|
-
) -> None:
|
|
131
|
-
"""Run ONE segment of the exchange without retaining a process: the program
|
|
132
|
-
from launch (or, with `messages`, the user's next turn(s) via `resume`) until
|
|
133
|
-
it yields. The rollout loop owns the exchange across segments."""
|
|
134
|
-
async with boundary(HarnessError, f"harness {self.config.id!r}"):
|
|
135
|
-
if messages is None:
|
|
136
|
-
result = await self.launch(
|
|
137
|
-
ctx, trace, runtime, endpoint, secret, mcp_urls, data
|
|
138
|
-
)
|
|
139
|
-
else:
|
|
140
|
-
result = await self.resume(
|
|
141
|
-
ctx, trace, runtime, endpoint, secret, mcp_urls, data, messages
|
|
142
|
-
)
|
|
143
|
-
await self._check_result(trace, runtime, result)
|
|
144
|
-
|
|
145
120
|
async def _check_result(
|
|
146
121
|
self, trace: Trace, runtime: Runtime, result: ProgramResult
|
|
147
122
|
) -> None:
|
|
@@ -97,7 +97,6 @@ class PrimeAgentHarnessConfig(HarnessConfig):
|
|
|
97
97
|
class PrimeAgentHarness(ACPHarness[PrimeAgentHarnessConfig]):
|
|
98
98
|
APPENDS_SYSTEM_PROMPT = True
|
|
99
99
|
SUPPORTS_MCP = True
|
|
100
|
-
SUPPORTS_RESUME = True
|
|
101
100
|
SUPPORTS_SKILLS = True
|
|
102
101
|
|
|
103
102
|
def acp_turn_result(self, trace: Trace, result: ACPTurn) -> None:
|
verifiers/v1/mcp/launch.py
CHANGED
|
@@ -201,9 +201,8 @@ async def _install_in_sandbox(server: ServerBase, runtime: Runtime) -> str:
|
|
|
201
201
|
await runtime.write(env_remote, env_data)
|
|
202
202
|
venv = str(PurePosixPath(workdir) / ".vf-venv")
|
|
203
203
|
root_q, temp_q, cache_q, venv_q = map(shlex.quote, (root, temp, cache, venv))
|
|
204
|
-
extras = ",".join(type(server).EXTRAS)
|
|
205
204
|
vf_source = shlex.quote(vf_remote)
|
|
206
|
-
env_source = shlex.quote(env_remote
|
|
205
|
+
env_source = shlex.quote(env_remote)
|
|
207
206
|
setup = (
|
|
208
207
|
f"set -e; mkdir -p {root_q} {temp_q} {cache_q}; "
|
|
209
208
|
f"export TMPDIR={temp_q} UV_CACHE_DIR={cache_q}; "
|
|
@@ -279,12 +278,7 @@ async def serve_in_runtime(
|
|
|
279
278
|
env["MCP_PORT_FILE"] = port_file
|
|
280
279
|
python = sys.executable
|
|
281
280
|
if runtime.type != "subprocess":
|
|
282
|
-
|
|
283
|
-
# environment. Let those servers bypass redundant per-launch source
|
|
284
|
-
# uploads and installation while preserving the existing default.
|
|
285
|
-
python = getattr(type(server), "RUNTIME_PYTHON", None)
|
|
286
|
-
if python is None:
|
|
287
|
-
python = await _install_in_sandbox(server, runtime)
|
|
281
|
+
python = await _install_in_sandbox(server, runtime)
|
|
288
282
|
command = [python, "-m", type(server).__module__]
|
|
289
283
|
if runtime.type != "subprocess":
|
|
290
284
|
# Providers may invoke uv after the install shell exits, so preserve its PATH.
|
verifiers/v1/mcp/server.py
CHANGED
|
@@ -134,9 +134,6 @@ class ServerBase(Generic[ConfigT, StateT]):
|
|
|
134
134
|
tools bare (no `<server>_` prefix); name collisions across servers are then the taskset
|
|
135
135
|
author's concern."""
|
|
136
136
|
|
|
137
|
-
EXTRAS: ClassVar[tuple[str, ...]] = ()
|
|
138
|
-
"""Package extras the server's module needs, applied at sandbox install."""
|
|
139
|
-
|
|
140
137
|
def __init__(self, config: ConfigT) -> None:
|
|
141
138
|
self.config = config
|
|
142
139
|
self._state_cls = state_cls(type(self))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: verifiers
|
|
3
|
-
Version: 0.3.2.
|
|
3
|
+
Version: 0.3.2.dev43
|
|
4
4
|
Summary: Verifiers: Environments for LLM Reinforcement Learning
|
|
5
5
|
Project-URL: Homepage, https://github.com/primeintellect-ai/verifiers
|
|
6
6
|
Project-URL: Documentation, https://github.com/primeintellect-ai/verifiers
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
verifiers/__init__.py,sha256=yDYsckVQbUkwoh9mU_hBeCLGvS_aWgAxuoNm5LxQpDI,517
|
|
2
2
|
verifiers/v1/__init__.py,sha256=qJKOsiUADKX4C1tMKsAPQXiJMo9-80FNeyPpAyRVshY,8352
|
|
3
|
-
verifiers/v1/agent.py,sha256=
|
|
3
|
+
verifiers/v1/agent.py,sha256=doqKNn77Ldm1EIe-V69IwgBbMiN79FoVnvMcyZA0pNM,32223
|
|
4
4
|
verifiers/v1/env.py,sha256=CEhzjojhg5jqbOYruUnc5U7TtgDHDSx8NiiFA0qfbt8,18234
|
|
5
5
|
verifiers/v1/episode.py,sha256=uStvI4WqgJT50hmHIB55m5B-ASqqLz-fZ-ynBz9uzEY,5474
|
|
6
6
|
verifiers/v1/errors.py,sha256=uQySmCUrjDYFkBIii1vBFPiEcPFPQZ9EGpas_6HvcQI,5279
|
|
7
7
|
verifiers/v1/graph.py,sha256=F07EZIti0AspEQ-0R0Cg_E8wJeKRlBHP4CCWytSL_8Q,35496
|
|
8
|
-
verifiers/v1/harness.py,sha256=
|
|
8
|
+
verifiers/v1/harness.py,sha256=Yx-XCIs1HAmqv1F-nhCTDBUwAx51xQWNWgFcWL1WRTM,13777
|
|
9
9
|
verifiers/v1/judge.py,sha256=uqn-djkK2_7Q3kOjkDo6ipOvV_HOvuLa9y6AoDjRux8,9618
|
|
10
10
|
verifiers/v1/rollout.py,sha256=hoKGn1CbShbyjEM9PgYq8pdKgoC91VebTkBSgUHLtiE,23978
|
|
11
11
|
verifiers/v1/semantic.py,sha256=wssvBSEpY_tgzpFUADG9-N4HkDXgCZvNQ1pdf6qAsS0,4680
|
|
@@ -19,9 +19,9 @@ verifiers/v1/acp/__init__.py,sha256=wUPZVYBFjJuOnIIoYONBFuA04A1DJf_dOyKY3QwK37Q,
|
|
|
19
19
|
verifiers/v1/acp/runner.py,sha256=gMXFmsVg2qD0Zhrx7kvC6Me2Z-wsfBamRIO0i45UW8g,11097
|
|
20
20
|
verifiers/v1/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
21
|
verifiers/v1/cli/debug.py,sha256=x3bqOwwbwwfwQQpxHrZeKdxsW3ZVtUT9cAn_r4aOro4,11631
|
|
22
|
-
verifiers/v1/cli/gepa.py,sha256=
|
|
22
|
+
verifiers/v1/cli/gepa.py,sha256=zyUbZ0ykTEq6c-YlPUSk0kqsbkzqR-mkeW4Cl0WGeJo,4180
|
|
23
23
|
verifiers/v1/cli/init.py,sha256=LFF_1e2XTdgIKjWoqq_IAlOzAXcARPEroblcEGv0fCU,7599
|
|
24
|
-
verifiers/v1/cli/output.py,sha256=
|
|
24
|
+
verifiers/v1/cli/output.py,sha256=lAl6vwKf9mVuNZb8PzOexv6Q2h-H6t0oUPcapffY3uY,8351
|
|
25
25
|
verifiers/v1/cli/replay.py,sha256=2lL7h6MrIn6hIh7fuqbw7PmruCxkK5iqwoeKebr-z7Q,10246
|
|
26
26
|
verifiers/v1/cli/resolve.py,sha256=Q1EHM7wWQo0YkwJA898qtZbYLaIkjIVq3Q7kUp2YIxs,4346
|
|
27
27
|
verifiers/v1/cli/resume.py,sha256=hqV5AxxqeIInJeEZQerQznuijhMNijFEFcHZIltfLdE,470
|
|
@@ -32,7 +32,7 @@ verifiers/v1/cli/dashboard/eval.py,sha256=IgyEVBfTcyuKw_rXaHrRRFX4ESlwsekaPi-bxD
|
|
|
32
32
|
verifiers/v1/cli/dashboard/replay.py,sha256=_X5up9MJsRbd_sWe4LgNTPNT8k1ip4xNpo50hxI3Ljk,2697
|
|
33
33
|
verifiers/v1/cli/dashboard/validate.py,sha256=xrpK3Y90JsoDCQYLLvvsnJ4CPRMvSSJIghfHK62E6FQ,3687
|
|
34
34
|
verifiers/v1/cli/eval/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
|
-
verifiers/v1/cli/eval/main.py,sha256=
|
|
35
|
+
verifiers/v1/cli/eval/main.py,sha256=m-7ZqBx4J2asueMR4oA43qzifOvaUnrGMKrTHi8fEZQ,6250
|
|
36
36
|
verifiers/v1/cli/eval/resume.py,sha256=fYkWa0Fudq--IWfk25j_McLm67bXYWvksWmJR4u4QAU,3811
|
|
37
37
|
verifiers/v1/cli/eval/runner.py,sha256=tZDPWzd6U7-5N43HGRlV7p-RnUiDleYwMUBVHzWH7mk,10015
|
|
38
38
|
verifiers/v1/clients/__init__.py,sha256=Ysig0tE_0E4Jsfgfes1XHN-fK1s_RCXdqZD6E7lK4PU,507
|
|
@@ -107,7 +107,7 @@ verifiers/v1/harnesses/pi/harness.py,sha256=M0BRsfJxnBNP-KCrp0vT5gHlaJEDnyti5x_3
|
|
|
107
107
|
verifiers/v1/harnesses/pool/__init__.py,sha256=HTYsNiWGdiNEsSHj4xhPmshJSNb7SHjQ7d4yZQ4p3HM,127
|
|
108
108
|
verifiers/v1/harnesses/pool/harness.py,sha256=HKAogPbyLK5QpvPQ1teHOh_IyRQX-or2JF71nnZ_5Ps,3875
|
|
109
109
|
verifiers/v1/harnesses/prime_agent/__init__.py,sha256=xfPC4RrlnyYWaf38tPAOZq4YL6M55lMpj5BoRLmaK8I,171
|
|
110
|
-
verifiers/v1/harnesses/prime_agent/harness.py,sha256=
|
|
110
|
+
verifiers/v1/harnesses/prime_agent/harness.py,sha256=vswuKVWObWC9rcDBvlCnjjPRq1qCNqCzTknkOTN3cV8,11178
|
|
111
111
|
verifiers/v1/harnesses/rlm/__init__.py,sha256=hwx51xTdEWzzYgMj-p4ETNcptoub3IPMDbEdJ4uB8Ns,122
|
|
112
112
|
verifiers/v1/harnesses/rlm/harness.py,sha256=iVdI4dzbuXm5v6Pq28ctLjOmcXWtC2Vmp2aKOniq0ss,10532
|
|
113
113
|
verifiers/v1/harnesses/terminus_2/__init__.py,sha256=l1pwfg1HyVDEqT9efdnFWcXqaZwtKwe7TrplkyxZSA0,166
|
|
@@ -133,8 +133,8 @@ verifiers/v1/judges/reference.txt,sha256=Ej35kGXiT2uJ0LcHIeez49rCS_9uHmCQKoVdn93
|
|
|
133
133
|
verifiers/v1/judges/rubric.py,sha256=HGQYI3xdq8I84Ce0_sDeNgk5JM597es8rOVPipjCyxU,12025
|
|
134
134
|
verifiers/v1/judges/rubric.txt,sha256=3KA2ZeYYdcDweJhUGopxu9EFgARhu2aWft5S5cj8Bc8,323
|
|
135
135
|
verifiers/v1/mcp/__init__.py,sha256=pm8ZWBiL1q1tY4wHvJzM_QrZ9oR8aGm-bIRWiRJsgHI,408
|
|
136
|
-
verifiers/v1/mcp/launch.py,sha256=
|
|
137
|
-
verifiers/v1/mcp/server.py,sha256=
|
|
136
|
+
verifiers/v1/mcp/launch.py,sha256=K6M8ZaoOO7wt65s93wK_9Wl7bvjeQ4C8BLkrGE149DI,23373
|
|
137
|
+
verifiers/v1/mcp/server.py,sha256=Jqi8OMT8DnoZegXqM3UNNRzhVnbdrPEwx0DjOJo_K2A,13256
|
|
138
138
|
verifiers/v1/mcp/toolset.py,sha256=G2wzNdEMGLXoQUcrwF0TartJkqokNPI3o7YUOAaaa6U,1007
|
|
139
139
|
verifiers/v1/runtimes/__init__.py,sha256=ppc1R_sx-aMcuJSx4t99rTSjloUXI0M6EUj676-1PeY,2862
|
|
140
140
|
verifiers/v1/runtimes/base.py,sha256=SRTUNAcdW0xJIWjfS5RcijFXqdKyXmGvp2tvV58eu58,16826
|
|
@@ -185,8 +185,8 @@ verifiers/v1/utils/prime.py,sha256=UTYRjp9cbjNb6CVmBHda-1wWZAIIfxNOmTyNuT7_wL4,9
|
|
|
185
185
|
verifiers/v1/utils/retries.py,sha256=Y2ZgrAjn-qNkRKZP_RVNL_7EK0iaRcZeCa404lpGYi4,5417
|
|
186
186
|
verifiers/v1/utils/score.py,sha256=493yJVMw8teCu9JxapxMFPFzI0hNUqdo0Y2nGW4kckk,6200
|
|
187
187
|
verifiers/v1/utils/version.py,sha256=-obEo_-l9-D8FLef4hYxncOe-uJpxrM1g2Hig_37Sgs,1607
|
|
188
|
-
verifiers-0.3.2.
|
|
189
|
-
verifiers-0.3.2.
|
|
190
|
-
verifiers-0.3.2.
|
|
191
|
-
verifiers-0.3.2.
|
|
192
|
-
verifiers-0.3.2.
|
|
188
|
+
verifiers-0.3.2.dev43.dist-info/METADATA,sha256=Huath0kCeokBD7jCu4lpHpt9GEChtdkRYc0lARcJOPI,4065
|
|
189
|
+
verifiers-0.3.2.dev43.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
|
|
190
|
+
verifiers-0.3.2.dev43.dist-info/entry_points.txt,sha256=uqQje0TMsr7k6nXlWxlPs13Si0evb3pVCEDF6c-YL80,241
|
|
191
|
+
verifiers-0.3.2.dev43.dist-info/licenses/LICENSE,sha256=v0RrUsdV3IDoZhrRce297IXS3xMHNJ-_LdLpFAUWb9k,1072
|
|
192
|
+
verifiers-0.3.2.dev43.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|