sameerkatte Claude Opus 4.6 (1M context) commited on
Commit
ee2d45e
·
1 Parent(s): 2ee6649

Fix /reset to accept empty/missing body for validator compatibility

Browse files

The OpenEnv validator calls POST /reset with no body, which was failing
with 422 (missing body field). This change makes the ResetRequest body
optional and defaults task_id to 'dependency_review' when omitted.

- ResetRequest.task_id is now Optional[str]
- /reset endpoint accepts Optional[ResetRequest] (None when no body sent)
- Falls back to DEFAULT_TASK_ID when task_id is missing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Files changed (2) hide show
  1. app/main.py +12 -3
  2. app/models.py +1 -1
app/main.py CHANGED
@@ -1,5 +1,5 @@
1
  from fastapi import FastAPI, HTTPException
2
- from typing import List
3
 
4
  from app.models import (
5
  ResetRequest, ResetResponse, StepRequest, StepResponse, TaskInfo
@@ -14,6 +14,8 @@ app = FastAPI(
14
 
15
  env = SecureReviewEnvironment()
16
 
 
 
17
 
18
  @app.get("/health")
19
  async def health():
@@ -26,9 +28,16 @@ async def get_tasks():
26
 
27
 
28
  @app.post("/reset", response_model=ResetResponse)
29
- async def reset(request: ResetRequest):
 
30
  try:
31
- observation, info = env.reset(request.task_id, request.scenario_id)
 
 
 
 
 
 
32
  return ResetResponse(observation=observation, info=info)
33
  except ValueError as e:
34
  raise HTTPException(status_code=400, detail=str(e))
 
1
  from fastapi import FastAPI, HTTPException
2
+ from typing import List, Optional
3
 
4
  from app.models import (
5
  ResetRequest, ResetResponse, StepRequest, StepResponse, TaskInfo
 
14
 
15
  env = SecureReviewEnvironment()
16
 
17
+ DEFAULT_TASK_ID = "dependency_review"
18
+
19
 
20
  @app.get("/health")
21
  async def health():
 
28
 
29
 
30
  @app.post("/reset", response_model=ResetResponse)
31
+ async def reset(request: Optional[ResetRequest] = None):
32
+ """Reset the environment. Body is optional; defaults to dependency_review task."""
33
  try:
34
+ if request is None:
35
+ task_id = DEFAULT_TASK_ID
36
+ scenario_id = None
37
+ else:
38
+ task_id = request.task_id or DEFAULT_TASK_ID
39
+ scenario_id = request.scenario_id
40
+ observation, info = env.reset(task_id, scenario_id)
41
  return ResetResponse(observation=observation, info=info)
42
  except ValueError as e:
43
  raise HTTPException(status_code=400, detail=str(e))
app/models.py CHANGED
@@ -77,7 +77,7 @@ class Reward(BaseModel):
77
  # === API Request/Response Models ===
78
 
79
  class ResetRequest(BaseModel):
80
- task_id: str
81
  scenario_id: Optional[str] = None
82
 
83
 
 
77
  # === API Request/Response Models ===
78
 
79
  class ResetRequest(BaseModel):
80
+ task_id: Optional[str] = None
81
  scenario_id: Optional[str] = None
82
 
83