verifiers 0.4.1.dev45__py3-none-any.whl → 0.4.1.dev47__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.
@@ -9,7 +9,7 @@ from typing import Annotated, Literal
9
9
  from pydantic import ConfigDict, Field, FiniteFloat
10
10
  from pydantic_config import BaseConfig
11
11
 
12
- from verifiers.v1.types import ID
12
+ from verifiers.v1.types import ID, DialectName
13
13
 
14
14
  PinnedVersion = Annotated[str, Field(pattern=r"^[A-Za-z0-9._+-]+$")]
15
15
  """A release/tag a harness pins its program install to."""
@@ -52,6 +52,9 @@ class HarnessConfig(BaseConfig):
52
52
  tool_timeout: FiniteFloat = Field(600.0, gt=0)
53
53
  """Seconds a single MCP tool call may take; raise it for tools that boot a VM."""
54
54
  disabled_tools: list[str] | None = None
55
+ dialect: DialectName | Literal["auto"] = "auto"
56
+ """Model API wire format the program speaks. `auto` lets the program pick, e.g. from
57
+ the model. Each harness narrows this to the formats it can select."""
55
58
  skills: list[SkillSource] = Field(default_factory=list)
56
59
  """Host skill folders or `{runtime: path}` roots of skills inside the runtime.
57
60
  Sources are installed in order; later files override matching earlier files.
@@ -1,4 +1,5 @@
1
1
  import os
2
+ from typing import Literal
2
3
 
3
4
  from pydantic import PositiveInt
4
5
  from pydantic_config import BaseConfig
@@ -38,6 +39,7 @@ class CompactionConfig(BaseConfig):
38
39
 
39
40
 
40
41
  class BashHarnessConfig(HarnessConfig):
42
+ dialect: Literal["chat_completions"] = "chat_completions"
41
43
  edit: bool = True
42
44
  """Offer the local `edit` tool (single-occurrence string replacement in a file) alongside
43
45
  `bash`. On by default; set `--env.agent.harness.edit false` for a bash-only agent."""
@@ -32,6 +32,7 @@ Finding elements: prefer the accessibility tree over screenshots. cdp("Accessibi
32
32
 
33
33
 
34
34
  class BrowserUseHarnessConfig(HarnessConfig):
35
+ dialect: Literal["chat_completions"] = "chat_completions"
35
36
  browser: Literal["chromium", "cdp"] = "chromium"
36
37
  """`chromium` launches locally; `cdp` attaches to `cdp_url` without owning it."""
37
38
 
@@ -1,6 +1,7 @@
1
1
  """Run Claude Code through the Claude Agent SDK ACP adapter."""
2
2
 
3
3
  import json
4
+ from typing import Literal
4
5
 
5
6
  from verifiers.v1.acp import ACPConfig, ACPHarness
6
7
  from verifiers.v1.clients import ModelContext
@@ -32,6 +33,7 @@ touch {ready}
32
33
 
33
34
 
34
35
  class ClaudeCodeHarnessConfig(HarnessConfig):
36
+ dialect: Literal["anthropic_messages"] = "anthropic_messages"
35
37
  version: PinnedVersion = "2.1.278"
36
38
  """Claude Code release to install, pinned for reproducibility."""
37
39
 
@@ -7,6 +7,7 @@ import re
7
7
  import tomllib
8
8
  from collections import Counter
9
9
  from pathlib import Path
10
+ from typing import Literal
10
11
 
11
12
  import tomli_w
12
13
 
@@ -48,6 +49,9 @@ GATE_HANDLER = {
48
49
 
49
50
 
50
51
  class CodexHarnessConfig(HarnessConfig):
52
+ # Codex accepts no other wire API:
53
+ # https://github.com/openai/codex/blob/rust-v0.155.1/codex-rs/model-provider-info/src/lib.rs#L61
54
+ dialect: Literal["responses"] = "responses"
51
55
  version: PinnedVersion = "0.155.1"
52
56
  """Codex release to install, pinned for reproducibility."""
53
57
  multi_agent: bool = False
@@ -2,6 +2,7 @@
2
2
 
3
3
  import json
4
4
  from pathlib import Path
5
+ from typing import Literal
5
6
 
6
7
  from verifiers.v1.acp import ACPConfig, ACPHarness
7
8
  from verifiers.v1.clients import ModelContext
@@ -25,6 +26,9 @@ touch "$VF_DEEPSEEK_DIR/.ready"
25
26
 
26
27
 
27
28
  class DeepSeekHarnessConfig(HarnessConfig):
29
+ # The `deepseek-official` route speaks Anthropic messages:
30
+ # https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.2.1-alpha.3/packages/llm/llm-deepseek/src/messages-api.ts#L14-L17
31
+ dialect: Literal["anthropic_messages"] = "anthropic_messages"
28
32
  version: PinnedVersion = "0.2.1-alpha.3"
29
33
  """DeepSeek CLI release, pinned to its shipped sdk-minimal composition."""
30
34
 
@@ -2,6 +2,7 @@
2
2
 
3
3
  import json
4
4
  from pathlib import Path
5
+ from typing import Literal
5
6
 
6
7
  from verifiers.v1.acp import ACPConfig, ACPHarness
7
8
  from verifiers.v1.clients import ModelContext
@@ -32,6 +33,10 @@ class HermesAgentHarnessConfig(HarnessConfig):
32
33
  """Hermes Agent Git release tag to install, pinned for reproducibility."""
33
34
  use_bundled_skill: bool = False
34
35
  """Enable Hermes Agent's bundled skill catalog in addition to uploaded skills."""
36
+ # Over Responses it replays an earlier turn without its reasoning.
37
+ dialect: Literal["chat_completions", "anthropic_messages", "auto"] = "auto"
38
+ """`auto` lets Hermes pick the transport from the model name on eval clients, and
39
+ chat completions on others."""
35
40
 
36
41
 
37
42
  class HermesAgentHarness(ACPHarness[HermesAgentHarnessConfig]):
@@ -94,7 +99,9 @@ class HermesAgentHarness(ACPHarness[HermesAgentHarnessConfig]):
94
99
  "api_key": secret,
95
100
  "discover_models": False,
96
101
  }
97
- if ctx.client.type == "eval":
102
+ if self.config.dialect != "auto":
103
+ provider["transport"] = self.config.dialect
104
+ elif ctx.client.type == "eval":
98
105
  provider["transport"] = "${HERMES_INTERCEPT_TRANSPORT}"
99
106
  config = {
100
107
  "model": model,
@@ -40,8 +40,7 @@ fi
40
40
  class KimiCodeHarnessConfig(HarnessConfig):
41
41
  version: PinnedVersion = "2.0.2"
42
42
  """Kimi Code release to install, pinned for reproducibility."""
43
- transport: DialectName = "chat_completions"
44
- """Model API transport."""
43
+ dialect: DialectName = "chat_completions"
45
44
 
46
45
 
47
46
  class KimiCodeHarness(ACPHarness[KimiCodeHarnessConfig]):
@@ -87,10 +86,10 @@ class KimiCodeHarness(ACPHarness[KimiCodeHarnessConfig]):
87
86
  "chat_completions": "openai",
88
87
  "responses": "openai_responses",
89
88
  "anthropic_messages": "anthropic",
90
- }[self.config.transport]
89
+ }[self.config.dialect]
91
90
  base_url = (
92
91
  endpoint.removesuffix("/v1")
93
- if self.config.transport == "anthropic_messages"
92
+ if self.config.dialect == "anthropic_messages"
94
93
  else endpoint
95
94
  )
96
95
  config = {
@@ -1,4 +1,5 @@
1
1
  from pathlib import Path
2
+ from typing import Literal
2
3
 
3
4
  from verifiers.v1.clients import ModelContext
4
5
  from verifiers.v1.configs.harness import HarnessConfig, PinnedVersion
@@ -11,6 +12,7 @@ PROGRAM_SOURCE = (Path(__file__).resolve().parent / "program.py").read_text()
11
12
 
12
13
 
13
14
  class MiniSWEAgentHarnessConfig(HarnessConfig):
15
+ dialect: Literal["chat_completions"] = "chat_completions"
14
16
  version: PinnedVersion = "2.4.6"
15
17
  """mini-swe-agent release to install, pinned for reproducibility."""
16
18
 
@@ -1,3 +1,5 @@
1
+ from typing import Literal
2
+
1
3
  from verifiers.v1.clients import ModelContext
2
4
  from verifiers.v1.configs.harness import HarnessConfig
3
5
  from verifiers.v1.harness import Harness
@@ -11,7 +13,7 @@ from verifiers.v1.trace import Trace
11
13
 
12
14
 
13
15
  class NullHarnessConfig(HarnessConfig):
14
- pass
16
+ dialect: Literal["chat_completions"] = "chat_completions"
15
17
 
16
18
 
17
19
  class NullHarness(Harness[NullHarnessConfig]):
@@ -2,6 +2,7 @@
2
2
 
3
3
  import json
4
4
  import logging
5
+ from typing import Literal
5
6
 
6
7
  from verifiers.v1.acp import ACPConfig, ACPHarness
7
8
  from verifiers.v1.clients import ModelContext
@@ -118,6 +119,8 @@ wait "$acp_pid"
118
119
  class OpenClawHarnessConfig(HarnessConfig):
119
120
  version: PinnedVersion = "2026.9.5"
120
121
  """OpenClaw release to install, pinned for reproducibility."""
122
+ dialect: Literal["auto"] = "auto"
123
+ """OpenClaw takes the transport from its model catalog."""
121
124
  use_bundled_skill: bool = True
122
125
  """Enable OpenClaw's bundled skill catalog in addition to uploaded harness skills."""
123
126
 
@@ -30,8 +30,7 @@ npm install --prefix "$VF_OPENCODE_DIR" --no-audit --no-fund --omit=dev \
30
30
  class OpenCodeHarnessConfig(HarnessConfig):
31
31
  version: PinnedVersion = "2.0.26"
32
32
  """OpenCode 2 release to install, pinned for reproducibility."""
33
- transport: DialectName = "chat_completions"
34
- """Model API transport."""
33
+ dialect: DialectName = "chat_completions"
35
34
  disabled_tools: list[str] | None = None
36
35
  """OpenCode permission actions to deny, such as shell, read, or edit."""
37
36
 
@@ -87,7 +86,7 @@ class OpenCodeHarness(ACPHarness[OpenCodeHarnessConfig]):
87
86
  "chat_completions": "openai-compatible",
88
87
  "responses": "openai-compatible/responses",
89
88
  "anthropic_messages": "anthropic-compatible",
90
- }[self.config.transport]
89
+ }[self.config.dialect]
91
90
  settings = {
92
91
  "model": "intercept/model",
93
92
  "providers": {
@@ -50,8 +50,7 @@ fi
50
50
  class PiHarnessConfig(HarnessConfig):
51
51
  version: PinnedVersion = "0.86.1"
52
52
  """Pi release to install, pinned for reproducibility."""
53
- transport: DialectName = "chat_completions"
54
- """Model API transport."""
53
+ dialect: DialectName = "chat_completions"
55
54
  supports_developer_role: bool | None = None
56
55
  """Override Pi's chat-completions role detection for custom model endpoints."""
57
56
 
@@ -118,10 +117,10 @@ class PiHarness(ACPHarness[PiHarnessConfig]):
118
117
  "chat_completions": "openai-completions",
119
118
  "responses": "openai-responses",
120
119
  "anthropic_messages": "anthropic-messages",
121
- }[self.config.transport]
120
+ }[self.config.dialect]
122
121
  base_url = (
123
122
  endpoint.removesuffix("/v1")
124
- if self.config.transport == "anthropic_messages"
123
+ if self.config.dialect == "anthropic_messages"
125
124
  else endpoint
126
125
  )
127
126
  model_config = {
@@ -130,12 +129,12 @@ class PiHarness(ACPHarness[PiHarnessConfig]):
130
129
  "input": ["text", "image"],
131
130
  **(
132
131
  {"compat": {"sessionAffinityFormat": "openai-nosession"}}
133
- if self.config.transport == "responses"
132
+ if self.config.dialect == "responses"
134
133
  else {}
135
134
  ),
136
135
  }
137
136
  if (
138
- self.config.transport == "chat_completions"
137
+ self.config.dialect == "chat_completions"
139
138
  and self.config.supports_developer_role is not None
140
139
  ):
141
140
  model_config["compat"] = {
@@ -82,6 +82,8 @@ class PrimeAgentHarnessConfig(HarnessConfig):
82
82
 
83
83
  autonomous: bool = False
84
84
  """Enable Prime Agent's autonomous continuation loop."""
85
+ # Over Responses it replays an earlier turn without its reasoning.
86
+ dialect: Literal["chat_completions", "anthropic_messages"] = "chat_completions"
85
87
 
86
88
 
87
89
  class PrimeAgentHarness(ACPHarness[PrimeAgentHarnessConfig]):
@@ -209,8 +211,15 @@ class PrimeAgentHarness(ACPHarness[PrimeAgentHarnessConfig]):
209
211
  models = {
210
212
  "providers": {
211
213
  PROVIDER: {
212
- "baseUrl": endpoint,
213
- "api": "openai-completions",
214
+ # Its Anthropic provider appends `/v1/messages` to the base URL.
215
+ "baseUrl": endpoint.removesuffix("/v1")
216
+ if self.config.dialect == "anthropic_messages"
217
+ else endpoint,
218
+ "api": {
219
+ "chat_completions": "openai-completions",
220
+ "responses": "openai-responses",
221
+ "anthropic_messages": "anthropic-messages",
222
+ }[self.config.dialect],
214
223
  "apiKey": KEY_VAR,
215
224
  "models": [
216
225
  {
@@ -67,6 +67,7 @@ class CompactionConfig(BaseConfig):
67
67
 
68
68
 
69
69
  class RLMHarnessConfig(HarnessConfig):
70
+ dialect: Literal["chat_completions"] = "chat_completions"
70
71
  version: str = Field(
71
72
  default="77c3489d1a7f918b75c31e195480ed3556af60a5", min_length=1
72
73
  )
@@ -1,5 +1,6 @@
1
1
  import logging
2
2
  from pathlib import Path
3
+ from typing import Literal
3
4
 
4
5
  from verifiers.v1.clients import ModelContext
5
6
  from verifiers.v1.configs.harness import HarnessConfig, PinnedVersion
@@ -13,6 +14,7 @@ logger = logging.getLogger(__name__)
13
14
 
14
15
 
15
16
  class Terminus2HarnessConfig(HarnessConfig):
17
+ dialect: Literal["chat_completions"] = "chat_completions"
16
18
  version: PinnedVersion = "0.23.0"
17
19
  """Harbor release to install, pinned for reproducibility."""
18
20
 
@@ -19,7 +19,7 @@ def drop_blank_text(message: Message) -> Message:
19
19
 
20
20
  def strip_text(message: Message) -> Message:
21
21
  """Clients that store assistant text stripped, and pad a missing reasoning field
22
- with a single space on replay."""
22
+ (or Anthropic thinking block) with a single space on replay."""
23
23
  if not isinstance(message, AssistantMessage):
24
24
  return message
25
25
  update: dict = {}
@@ -27,4 +27,14 @@ def strip_text(message: Message) -> Message:
27
27
  update["content"] = message.content.strip() or None
28
28
  if message.reasoning_content is not None and not message.reasoning_content.strip():
29
29
  update["reasoning_content"] = None
30
+ if message.provider_state and any(
31
+ _blank_thinking(item) for item in message.provider_state
32
+ ):
33
+ update["provider_state"] = [
34
+ item for item in message.provider_state if not _blank_thinking(item)
35
+ ] or None
30
36
  return message.model_copy(update=update) if update else message
37
+
38
+
39
+ def _blank_thinking(item: dict) -> bool:
40
+ return item.get("type") == "thinking" and not str(item.get("thinking", "")).strip()
verifiers/v1/types.py CHANGED
@@ -126,8 +126,8 @@ class Request(BaseModel):
126
126
  FinishReason = Literal["stop", "length", "tool_calls"] | None
127
127
 
128
128
  DialectName = Literal["chat_completions", "responses", "anthropic_messages"]
129
- """A model API wire format: a `Dialect.name`, and the values of harness `transport`
130
- settings."""
129
+ """A model API wire format: a `Dialect.name`, and the values of the harness `dialect`
130
+ setting."""
131
131
 
132
132
 
133
133
  class Usage(BaseModel):
@@ -52,7 +52,8 @@ def narrow_plugin_field(
52
52
  ) -> None:
53
53
  raw = data.get(field)
54
54
  if isinstance(raw, BaseConfig):
55
- raw = raw.model_dump()
55
+ # Unset fields take the concrete type's defaults, which may narrow the base's.
56
+ raw = raw.model_dump(exclude_unset=True)
56
57
  raw = dict(raw or {})
57
58
  ident = raw.get("id") or default_id
58
59
  if not ident:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: verifiers
3
- Version: 0.4.1.dev45
3
+ Version: 0.4.1.dev47
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
@@ -15,7 +15,7 @@ verifiers/v1/state.py,sha256=EckF2bWp-vV4b1jYJ9sLI5xrfGuI5spIgYYwW926toI,595
15
15
  verifiers/v1/task.py,sha256=A9WmYSzjND0kJxgMxWZfZE1iXqdvu7bRDTCayEFSBkI,14754
16
16
  verifiers/v1/taskset.py,sha256=LE_3ogL7itU2Amk-N20cHkZ7Ev6MznJ0HpC8B1xb4w0,9482
17
17
  verifiers/v1/trace.py,sha256=6aXB1_af7pLZNESFOSJAs28dk2i1X0_u0NmfauWbrho,31383
18
- verifiers/v1/types.py,sha256=OJ5Vhg5h4oPeDu6vHUOuwLwrmz_u16-jnnQqSewVMO0,12001
18
+ verifiers/v1/types.py,sha256=TqYcmXMcJhXJJWB-wFDSFQkaRak_-aIleuLu_hWHSLc,12002
19
19
  verifiers/v1/acp/__init__.py,sha256=bz2ysCxjAXhV9TyT-MXGcFznE_tbOnJy1-nzHYIhZFw,16806
20
20
  verifiers/v1/acp/runner.py,sha256=sFsg0UgWeDjpjihejUidIV2yTapVj1Ap0cDTaEktjkI,15484
21
21
  verifiers/v1/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -45,7 +45,7 @@ verifiers/v1/configs/__init__.py,sha256=X7u6X7B3ieD1HZl79Tv1kg-yPHbT0QLvAebaGqxV
45
45
  verifiers/v1/configs/agent.py,sha256=32euw9mHcZN8GSJo-4SNVNvkn0cWpTBqwgl99gLcHCM,6555
46
46
  verifiers/v1/configs/client.py,sha256=5OW_kAmFf2DkmzH2cerd4bINrIL2t68MKKcREUdrQyQ,6224
47
47
  verifiers/v1/configs/env.py,sha256=k47XBYYWLOf-8P1dbek3x_s0ucNb726xxoryG69DIr4,7256
48
- verifiers/v1/configs/harness.py,sha256=ZrR-Egzfft95oMoqQ78bAq9TqP882Q68M_47Ajw9lE8,2918
48
+ verifiers/v1/configs/harness.py,sha256=NyWTaKsfo3eh6jfkmisJrRQEHetj9FF4H-2A8YT8VBU,3146
49
49
  verifiers/v1/configs/judge.py,sha256=rla9tET2hz__lmHwmTFG98JD68-uaEDhHlp2jNehgJI,2164
50
50
  verifiers/v1/configs/retries.py,sha256=GIrwS0lnMKnlQ_Wj1Z2J6NlEYK4jX5weZxYmQmLcpUI,1793
51
51
  verifiers/v1/configs/runtime.py,sha256=3LDAnKy-BotE6MqyT1l07Y_bAq9Wye1OU8JZ7lyUVvY,5474
@@ -83,43 +83,43 @@ verifiers/v1/gepa/runner.py,sha256=-pMy3u5sffEQ4-aDexQviHeQ9NXdNv5rBBnNmhyx_0U,5
83
83
  verifiers/v1/harnesses/__init__.py,sha256=COIgCm3KI62RvJiyobNauiGu-PHIhAh1jjfnia6OuKE,2073
84
84
  verifiers/v1/harnesses/node.py,sha256=Cci-zCNiVRCtLkJuNOt9iKr7ZIb3ik_YugefXtRyt78,4349
85
85
  verifiers/v1/harnesses/bash/__init__.py,sha256=IAV4eMMqDHSl-9ANb0Q3kxmBZ22SeHZFBM448X4gQio,140
86
- verifiers/v1/harnesses/bash/harness.py,sha256=rzpK5MnEXB0s3JUTaojRdgfEMkHH8xAUK8XzSidW_XA,5811
86
+ verifiers/v1/harnesses/bash/harness.py,sha256=uN0DyGTCrcxnc65g7bi9RMRu-2hFw2CL2_tAutu4AdM,5900
87
87
  verifiers/v1/harnesses/browser_use/__init__.py,sha256=yxm2IG5TDLadxZEkX8SL26XWbcPcODXcrJfPfm1GqwU,171
88
- verifiers/v1/harnesses/browser_use/harness.py,sha256=sIPRxF-dxiB5xXddCCCOMP6BF1kO01Azyr9AR16x4aw,5582
88
+ verifiers/v1/harnesses/browser_use/harness.py,sha256=EwrM9G1stH9OArYdUoiLhyJBzw-_PugHwxiExCNUSrc,5644
89
89
  verifiers/v1/harnesses/browser_use/program.py,sha256=hhQSU1-F3BtkBkHcddl_K7HvsfnVHjU-FGtietZeamg,10052
90
90
  verifiers/v1/harnesses/claude_code/__init__.py,sha256=JkZQylMSA3o1fvBx_NM41y_umuahmOSqFjTrJ2hryTw,171
91
- verifiers/v1/harnesses/claude_code/harness.py,sha256=qdYIT4YiOz60Leumph22dXeW4HjYwPfnsdY5IPjuE6A,5220
91
+ verifiers/v1/harnesses/claude_code/harness.py,sha256=KGd0GMu68zbWCle66R75R2TeRb7yHzyORkiFAh0Y-js,5313
92
92
  verifiers/v1/harnesses/codex/__init__.py,sha256=ocyBvlpSO8c3pT6D1ebrQohoXYESQcCyPT5kN3j1-N4,132
93
93
  verifiers/v1/harnesses/codex/gate.mjs,sha256=tOpjjH2adnmAOYeF7tufpYPB6sBFrrcu3-IjD6K4LGE,1183
94
- verifiers/v1/harnesses/codex/harness.py,sha256=B4njxMNqeFwy1Y552NyxOnXUMKUIO18ESVliAnIE3v4,9449
94
+ verifiers/v1/harnesses/codex/harness.py,sha256=ZWiUA5e3sjKw7Ohl1VnhZbdB3VvrA1zpGJVmwJthxw4,9664
95
95
  verifiers/v1/harnesses/deepseek/__init__.py,sha256=oKexAEE4D3tGRyYRluNZJPaFXc9pBme_cHp2_1I7g1o,160
96
96
  verifiers/v1/harnesses/deepseek/gate.mjs,sha256=BxGyYQKOPnZRruI6C-okOeerpoNDGdfNKaMU61dYcY0,440
97
- verifiers/v1/harnesses/deepseek/harness.py,sha256=lvHI6D24oX0cPH0qFwJ3pPrbCIGtIezEWtNTmx_jieU,5544
97
+ verifiers/v1/harnesses/deepseek/harness.py,sha256=RiSXzzrjlx4hpJxHsrC0lzBsxvDVnzXyt19ViBKS0Os,5832
98
98
  verifiers/v1/harnesses/deepseek/usage.mjs,sha256=nm6FU0wm25qti5gN2zDJZoDR7Vmug6z_UQFIdZux-qg,2649
99
99
  verifiers/v1/harnesses/hermes_agent/__init__.py,sha256=k84Y8UTTf1KOw5LGqPb2dk-hYFagPevDJBOF7qsR_vo,176
100
- verifiers/v1/harnesses/hermes_agent/harness.py,sha256=Fcyk9ukJjKJv-MCVov9u2Q7W2wYPn8DkL8lPRXAXrZE,5273
100
+ verifiers/v1/harnesses/hermes_agent/harness.py,sha256=1VGwmeo1_st2ng6SRC3AN7LbNRcOP6c5PSeAK-EoJXc,5672
101
101
  verifiers/v1/harnesses/hermes_agent/program.py,sha256=txA-Enc-bUZ9fYBuW6ImOywiTquQUgH5iCTX1Lit2H4,573
102
102
  verifiers/v1/harnesses/kimi_code/__init__.py,sha256=1BEotSfuzmVcE7UrxHeAREM5d7J20cGkonHuowlrzu4,161
103
- verifiers/v1/harnesses/kimi_code/harness.py,sha256=O5RW7VNBwM2lOkxYmjVdEj4ubYdxsoWdKoNPdYgWe68,5632
103
+ verifiers/v1/harnesses/kimi_code/harness.py,sha256=wRuNicxGeqStq58SeaSRWKAU_nJDYrgWdLRAG-O4hiw,5595
104
104
  verifiers/v1/harnesses/mini_swe_agent/__init__.py,sha256=1OBu2Y-XqL72-dGhFdgB6sr5uX_peEEXT9vEjPy1ovU,182
105
- verifiers/v1/harnesses/mini_swe_agent/harness.py,sha256=HKGtlDyhXDJqNtDFeb3D4JYUerIgXK6HAmyqOm1mkRo,2473
105
+ verifiers/v1/harnesses/mini_swe_agent/harness.py,sha256=OGsRF3Mo2U0vDmCsZ-AHloA4u2UA33GHreP3GQyqehs,2562
106
106
  verifiers/v1/harnesses/mini_swe_agent/program.py,sha256=VvF0q-0DD3_h_KFmMBP8zINQ8I7_w7R7BlmUi-AV4j4,168
107
107
  verifiers/v1/harnesses/null/__init__.py,sha256=XDeKOPeoXUQi9US9_Z3_yH9YaZ4EiOMKJmUtNNdtD7s,127
108
- verifiers/v1/harnesses/null/harness.py,sha256=qYPhdH_hnKVHoi1tYU7L8Fg47rEBccrWurk4Hij-Q1I,1552
108
+ verifiers/v1/harnesses/null/harness.py,sha256=9kf0KX9c_FKbyNVhgRyZU6C8oPenazJZwZZMxPvq-aE,1633
109
109
  verifiers/v1/harnesses/openclaw/__init__.py,sha256=kNyfPB1sGwEf4K3mTfKN0VEyxun3SGvNpvArVKvH-x8,160
110
- verifiers/v1/harnesses/openclaw/harness.py,sha256=NrvZw2v2QSDQIVfZ-m9Vunvs18mZfOSw_m7HKbcxUmg,9432
110
+ verifiers/v1/harnesses/openclaw/harness.py,sha256=Gh1DvbD_jd3heS1u_6amkU8dSrwSOhQeWS9WVPmZSyg,9560
111
111
  verifiers/v1/harnesses/opencode/__init__.py,sha256=NCMOVrleIgx5mt-d9hvTZNPhUjz0MQxPlMHOwiu39N4,160
112
- verifiers/v1/harnesses/opencode/harness.py,sha256=PqFy5aafXtwH3qqYnJZWPhD45Oyae115q-CgiltNfwY,5623
112
+ verifiers/v1/harnesses/opencode/harness.py,sha256=IXMO3AV5Wg55PoJUI2DPKQ1XFdTm_RwhZLVkT_Ve5k8,5588
113
113
  verifiers/v1/harnesses/opencode/mcp-ready.js,sha256=XBrA10Rs1Fcsq0tF2bizZkhW0wWBsWVvz_1IfKvp480,1905
114
114
  verifiers/v1/harnesses/pi/__init__.py,sha256=1mSnzOf-RdEchdeg6IHtcdobG5KIpAhuTdUIgsCIn74,117
115
115
  verifiers/v1/harnesses/pi/gate.mjs,sha256=vk_OqHXhRdYzQL7YMX8Teajm0fh9tokzDvLHVOd2I9o,449
116
- verifiers/v1/harnesses/pi/harness.py,sha256=S8KXr35JP2U8ydULopNXWTbc6hIHYWRR5VFVLbbIuns,8354
116
+ verifiers/v1/harnesses/pi/harness.py,sha256=sgNmLFM2ydzzed6bC13JkpFnVjm0Ua8xTTYQfadRBD4,8313
117
117
  verifiers/v1/harnesses/prime_agent/__init__.py,sha256=xfPC4RrlnyYWaf38tPAOZq4YL6M55lMpj5BoRLmaK8I,171
118
- verifiers/v1/harnesses/prime_agent/harness.py,sha256=fSaYhLsiS1L9cVSbtnEhH8HFlOIUAi5dlFiHc2V5qxg,11942
118
+ verifiers/v1/harnesses/prime_agent/harness.py,sha256=ncBGn5mdsqBmcqiE5Jh93AX8KrV9urDcwfHCDpG0uNM,12518
119
119
  verifiers/v1/harnesses/rlm/__init__.py,sha256=hwx51xTdEWzzYgMj-p4ETNcptoub3IPMDbEdJ4uB8Ns,122
120
- verifiers/v1/harnesses/rlm/harness.py,sha256=vx4tSzGZbNOU9DV6J2WRJh3f2sTcynhKN349RB2jLPw,14100
120
+ verifiers/v1/harnesses/rlm/harness.py,sha256=k_qpfUyAaVXn8fz4jN1112LXFJCV4Xj9OxIpkXDSYac,14162
121
121
  verifiers/v1/harnesses/terminus_2/__init__.py,sha256=l1pwfg1HyVDEqT9efdnFWcXqaZwtKwe7TrplkyxZSA0,166
122
- verifiers/v1/harnesses/terminus_2/harness.py,sha256=cKQJluW01mkxEccTLFwSWsVMavyiwq_w-NA4Hb_JkGU,3052
122
+ verifiers/v1/harnesses/terminus_2/harness.py,sha256=x7fmuU6dGXkIlefX6LpaBYzMCB3PuGrNO_LWo33d1aA,3141
123
123
  verifiers/v1/harnesses/terminus_2/program.py,sha256=X8MZdyItU3gbXGXnGOlJ9LWcUTnqIDaxlhkZvoRiqKY,2703
124
124
  verifiers/v1/harnesses/utils/__init__.py,sha256=eTS-Ft2HwoLiYn5u1t_KueLmaZB_W12cdYmcVsE-G5A,364
125
125
  verifiers/v1/harnesses/utils/compaction.py,sha256=DeY6CYLEsv7-vJm26sT2mRaPHu3W2ywiZhvFr_pi6Hg,10495
@@ -127,7 +127,7 @@ verifiers/v1/harnesses/utils/core.py,sha256=29Usc55cbLQE0vA8y05yk06sbjJMwYjOo2Tm
127
127
  verifiers/v1/harnesses/utils/install.py,sha256=20YFtGZ9cNViHffeI11OJrhJ6_y49gPEHIhs9VUn2FY,3458
128
128
  verifiers/v1/harnesses/utils/launch.py,sha256=Kg6x4Fl5y48pSgPiupSBj5ehQkkupk5vihUUvHtpcO8,2894
129
129
  verifiers/v1/harnesses/utils/mcp.py,sha256=EtDraHEqgsOB6xKvcF2z9C6HlQyKoST0ZDvmy47NWgM,7450
130
- verifiers/v1/harnesses/utils/replay.py,sha256=2BITLV0ebs0ikzvSfCiiWB3-H4MGkcSUt23_qBl-Ujc,1312
130
+ verifiers/v1/harnesses/utils/replay.py,sha256=RJMzD-3K0oz_Q0zhjSH4nhwxn95R8e9Q_CCN5sZp9RA,1720
131
131
  verifiers/v1/interception/__init__.py,sha256=JtSAGFDdMX46NBVSFIPzih-0uG6TIwqusOuLH8_J8kI,4251
132
132
  verifiers/v1/interception/base.py,sha256=Mg16Y104lyZilF9shdivdqYoqz4OYp978i_myyrulu8,2529
133
133
  verifiers/v1/interception/pool.py,sha256=sk_zcdTV8EVRuzqlYMXxon_42tSDAlFvwcyOO2EF7hw,6473
@@ -194,7 +194,7 @@ verifiers/v1/utils/generic.py,sha256=isejTTgRoFDJQOM18L3sWqfzBRQyYUkQvk-gNbrYAVc
194
194
  verifiers/v1/utils/git.py,sha256=MTRinOvG4EddfjdahHkFZUihHmhJ37n5ROtgjzjE1NA,8366
195
195
  verifiers/v1/utils/image.py,sha256=OFw_wdwVtbdwa8uJ3X3vYfhpUAi0CTH5HMBupjVsRRQ,282
196
196
  verifiers/v1/utils/interrupt.py,sha256=F-KKhc5ndPJJfhd3SuMqyqhXhA32FhCRy5KWFJpEoM4,1179
197
- verifiers/v1/utils/loaders.py,sha256=WhIHRnAXfFpfCEgH35J1XHd95KRarmg62nxUkUB4HME,12670
197
+ verifiers/v1/utils/loaders.py,sha256=TsHT-3VSFyxqF6KLLl4Xpn4rbNz2BmdG_ZThparKjQE,12775
198
198
  verifiers/v1/utils/logging.py,sha256=-zgaM-HZsgxumZ4wYNlRMZepp6JanCSjeL2wSVulwJM,2296
199
199
  verifiers/v1/utils/memory.py,sha256=ZkIvGk6uITAH5sKon65LifKPbvZr8mJ__PVc23FZpOQ,1835
200
200
  verifiers/v1/utils/paths.py,sha256=it_4JWf_8bPZe4TRcyvL7_KJ4fsbEsxhhIY_xA8Ikus,308
@@ -205,8 +205,8 @@ verifiers/v1/utils/scope.py,sha256=bzUEiWDOVdbj7dXOwGOlzsQ_-Xu0j9NR5TalQB-8TS8,8
205
205
  verifiers/v1/utils/score.py,sha256=493yJVMw8teCu9JxapxMFPFzI0hNUqdo0Y2nGW4kckk,6200
206
206
  verifiers/v1/utils/trace_store.py,sha256=Qo9qvsJAl8PoRUavjQAfUB2VNxmUtYQtU2ejLKPzY9c,3382
207
207
  verifiers/v1/utils/version.py,sha256=-obEo_-l9-D8FLef4hYxncOe-uJpxrM1g2Hig_37Sgs,1607
208
- verifiers-0.4.1.dev45.dist-info/METADATA,sha256=u8H1y7UiGH3qA-hceB4WzSWWjahE6n9csHY2JSwcedE,5362
209
- verifiers-0.4.1.dev45.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
210
- verifiers-0.4.1.dev45.dist-info/entry_points.txt,sha256=O1bIO0gyJWuLfWtTGF0h-JkNz6FkyXP7Z9iMFYnjeMI,222
211
- verifiers-0.4.1.dev45.dist-info/licenses/LICENSE,sha256=v0RrUsdV3IDoZhrRce297IXS3xMHNJ-_LdLpFAUWb9k,1072
212
- verifiers-0.4.1.dev45.dist-info/RECORD,,
208
+ verifiers-0.4.1.dev47.dist-info/METADATA,sha256=lL6Lg-HbH4os0O-nP-eKa7hiZQS9RIE1evlK1yjCJ18,5362
209
+ verifiers-0.4.1.dev47.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
210
+ verifiers-0.4.1.dev47.dist-info/entry_points.txt,sha256=O1bIO0gyJWuLfWtTGF0h-JkNz6FkyXP7Z9iMFYnjeMI,222
211
+ verifiers-0.4.1.dev47.dist-info/licenses/LICENSE,sha256=v0RrUsdV3IDoZhrRce297IXS3xMHNJ-_LdLpFAUWb9k,1072
212
+ verifiers-0.4.1.dev47.dist-info/RECORD,,