verifiers 0.3.2.dev57__py3-none-any.whl → 0.3.2.dev58__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.
@@ -490,13 +490,13 @@ class InterceptionServer(Interception):
490
490
  body = from_json(raw)
491
491
  except ValueError:
492
492
  body = json.loads(raw)
493
- req_hash = await _request_digest(raw)
493
+ body = dialect.apply_overrides(body, session.ctx.model, session.ctx.sampling)
494
+ streaming = dialect.streaming(body)
495
+ req_hash = await _request_digest(raw) if not streaming else b""
494
496
  # Keep `read()` for aiohttp's size guard, then release its cache and our local
495
497
  # alias after parsing so the wire body does not survive model inference.
496
498
  request._read_bytes = None
497
499
  del raw
498
- body = dialect.apply_overrides(body, session.ctx.model, session.ctx.sampling)
499
- streaming = dialect.streaming(body)
500
500
  try:
501
501
  acp, upstream_headers = extract_acp_info(request.headers)
502
502
  except ValueError as error:
@@ -638,7 +638,9 @@ class InterceptionServer(Interception):
638
638
 
639
639
  try:
640
640
  body, policy_paths = self.mediate_capabilities(session, dialect, body)
641
- model_request = dialect.parse_request(body)
641
+ # Restricted mediation can mutate the body without reporting policy paths.
642
+ if request_rewrites or session.network_policy.network_restricted:
643
+ model_request = dialect.parse_request(body)
642
644
  turn = graph.prepare_turn(session.trace, model_request.messages)
643
645
  except ValueError as error:
644
646
  return web.json_response(dialect.error_body(str(error)), status=400)
verifiers/v1/session.py CHANGED
@@ -158,22 +158,24 @@ class RolloutSession:
158
158
  """Run typed request interceptors and stops over one canonical request."""
159
159
  if not self.request_interceptors and (not run_stops or not self.request_stops):
160
160
  return request, [], None
161
- turn = graph.prepare_turn(self.trace, request.messages)
162
- prepared_users = self.prepared_users.copy()
163
161
  prepared: set[int] = set()
164
162
  candidates: set[int] = set()
165
- for position in range(turn.tail_start, len(request.messages)):
166
- message = request.messages[position]
167
- if isinstance(message, UserMessage):
168
- candidates.add(position)
169
- key = graph.message_hash(message)
170
- if prepared_users[key]:
171
- prepared_users[key] -= 1
172
- prepared.add(position)
173
- elif isinstance(message, ToolMessage):
174
- candidates.add(position)
175
- if self.prepared_tool_results.get(message.tool_call_id) == message:
176
- prepared.add(position)
163
+ if self.request_interceptors:
164
+ turn = graph.prepare_turn(self.trace, request.messages)
165
+ prepared_users = self.prepared_users.copy()
166
+ for position in range(turn.tail_start, len(request.messages)):
167
+ message = request.messages[position]
168
+ if isinstance(message, UserMessage):
169
+ candidates.add(position)
170
+ if prepared_users:
171
+ key = graph.message_hash(message)
172
+ if prepared_users[key]:
173
+ prepared_users[key] -= 1
174
+ prepared.add(position)
175
+ elif isinstance(message, ToolMessage):
176
+ candidates.add(position)
177
+ if self.prepared_tool_results.get(message.tool_call_id) == message:
178
+ prepared.add(position)
177
179
  already_intercepted = candidates and candidates == prepared
178
180
 
179
181
  current = request
@@ -240,7 +242,7 @@ class RolloutSession:
240
242
  def consume_prepared(self, messages: Messages) -> None:
241
243
  """Forget pre-harness rewrites only after their model request commits."""
242
244
  for message in messages:
243
- if isinstance(message, UserMessage):
245
+ if isinstance(message, UserMessage) and self.prepared_users:
244
246
  key = graph.message_hash(message)
245
247
  if self.prepared_users[key]:
246
248
  self.prepared_users[key] -= 1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: verifiers
3
- Version: 0.3.2.dev57
3
+ Version: 0.3.2.dev58
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
@@ -10,7 +10,7 @@ verifiers/v1/harness.py,sha256=Yx-XCIs1HAmqv1F-nhCTDBUwAx51xQWNWgFcWL1WRTM,13777
10
10
  verifiers/v1/judge.py,sha256=uqn-djkK2_7Q3kOjkDo6ipOvV_HOvuLa9y6AoDjRux8,9618
11
11
  verifiers/v1/rollout.py,sha256=FT6ZYfSqkKOFa5tm52XDTLijKxqpeLr3x2MBdLIk4xk,24021
12
12
  verifiers/v1/semantic.py,sha256=VQ_buw6Ya6QtRoh_fiYI5Avs5RmIQCfWH0H0bQc4aoc,4704
13
- verifiers/v1/session.py,sha256=xM7JJJVJACk0JfH9RAN1Ts8gJJKr2tGGRiIgQTrdieY,18692
13
+ verifiers/v1/session.py,sha256=LAdP72ooTeLUv9GYRqg7b0csit1dmIeVca0cHOU0Q_Q,18865
14
14
  verifiers/v1/state.py,sha256=EckF2bWp-vV4b1jYJ9sLI5xrfGuI5spIgYYwW926toI,595
15
15
  verifiers/v1/task.py,sha256=9YhllEDgoHSz72-1fcYwBADl-rOzASnrSVimLheWmwI,12237
16
16
  verifiers/v1/taskset.py,sha256=fp2E0IEhL_Ybj9cegZwljfTmW27p_30zTWHFKw_kXE4,4374
@@ -125,7 +125,7 @@ verifiers/v1/harnesses/utils/mcp.py,sha256=Sss-DVMtxdE1eGEfq1ycdi1v7SBsmUU5UcpcI
125
125
  verifiers/v1/interception/__init__.py,sha256=5Kvo7tcBUVaa65s9A1NiOH3CPpzw-P5btXwxB4Nbbvs,4251
126
126
  verifiers/v1/interception/base.py,sha256=Mg16Y104lyZilF9shdivdqYoqz4OYp978i_myyrulu8,2529
127
127
  verifiers/v1/interception/pool.py,sha256=sk_zcdTV8EVRuzqlYMXxon_42tSDAlFvwcyOO2EF7hw,6473
128
- verifiers/v1/interception/server.py,sha256=2WBh7HQAF8wQvL5jui03i2dVjyKwewwTAzmdn0eH2gg,52079
128
+ verifiers/v1/interception/server.py,sha256=0pImNyVDKJOwL3l9KgFmjRKfp3Mwn9DjSkzliYSXg5s,52274
129
129
  verifiers/v1/interception/tool.py,sha256=ZyZPxLYM_HsGkz-ZbCREQVGtiKZK9lQLChBNF_bBuuc,259
130
130
  verifiers/v1/interception/tunnel/__init__.py,sha256=eVNZJszj6myrKhx9jmJz7VRd9qlfj0AUvUZwI2bXEj8,893
131
131
  verifiers/v1/interception/tunnel/base.py,sha256=DZB6uPLwM4Qy7n7m0vKeyg-Px87MhsmpYTpe2vpPEng,1998
@@ -189,8 +189,8 @@ verifiers/v1/utils/prime.py,sha256=UTYRjp9cbjNb6CVmBHda-1wWZAIIfxNOmTyNuT7_wL4,9
189
189
  verifiers/v1/utils/retries.py,sha256=Y2ZgrAjn-qNkRKZP_RVNL_7EK0iaRcZeCa404lpGYi4,5417
190
190
  verifiers/v1/utils/score.py,sha256=493yJVMw8teCu9JxapxMFPFzI0hNUqdo0Y2nGW4kckk,6200
191
191
  verifiers/v1/utils/version.py,sha256=-obEo_-l9-D8FLef4hYxncOe-uJpxrM1g2Hig_37Sgs,1607
192
- verifiers-0.3.2.dev57.dist-info/METADATA,sha256=0TbLIm4QKGNQoSm54MoeFlzZV4esh0OxCatJga_9d74,4204
193
- verifiers-0.3.2.dev57.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
194
- verifiers-0.3.2.dev57.dist-info/entry_points.txt,sha256=uqQje0TMsr7k6nXlWxlPs13Si0evb3pVCEDF6c-YL80,241
195
- verifiers-0.3.2.dev57.dist-info/licenses/LICENSE,sha256=v0RrUsdV3IDoZhrRce297IXS3xMHNJ-_LdLpFAUWb9k,1072
196
- verifiers-0.3.2.dev57.dist-info/RECORD,,
192
+ verifiers-0.3.2.dev58.dist-info/METADATA,sha256=mcfdGp2tdTNlTuzju_6bwpiQ983YaKliEFdSBprt1Hw,4204
193
+ verifiers-0.3.2.dev58.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
194
+ verifiers-0.3.2.dev58.dist-info/entry_points.txt,sha256=uqQje0TMsr7k6nXlWxlPs13Si0evb3pVCEDF6c-YL80,241
195
+ verifiers-0.3.2.dev58.dist-info/licenses/LICENSE,sha256=v0RrUsdV3IDoZhrRce297IXS3xMHNJ-_LdLpFAUWb9k,1072
196
+ verifiers-0.3.2.dev58.dist-info/RECORD,,