import random from env.task_graders import TASK_AGENT_GRADERS # Declared for GET /tasks + openenv.yaml (Phase 1 task/grader discovery). TASK_MANIFEST = [ { "name": "easy", "description": ( "Fewer cache items and low volatility; easier to infer staleness from noisy observations." ), "difficulty": "easy", "max_steps": 10, "grader": True, "grader_kind": "programmatic", "grader_callable": "env.task_graders:easy_agent_grader", "score_range": [0.0, 1.0], }, { "name": "medium", "description": ( "More items and moderate volatility; invalidation vs keep tradeoffs matter more." ), "difficulty": "medium", "max_steps": 10, "grader": True, "grader_kind": "programmatic", "grader_callable": "env.task_graders:medium_agent_grader", "score_range": [0.0, 1.0], }, { "name": "hard", "description": ( "Most items and high volatility; staleness signal is noisy and costly mistakes are easier." ), "difficulty": "hard", "max_steps": 10, "grader": True, "grader_kind": "programmatic", "grader_callable": "env.task_graders:hard_agent_grader", "score_range": [0.0, 1.0], }, ] def get_task(task_id): if task_id == "easy": return {"num_items": 2, "volatility": 0.1} elif task_id == "medium": return {"num_items": 3, "volatility": 0.4} elif task_id == "hard": return {"num_items": 4, "volatility": 0.8} else: return { "num_items": 3, "volatility": 0.3, } def sample_task(rng=None): r = rng if rng is not None else random return r.choice(["easy", "medium", "hard"]) def list_graders(): """Return task ids that have an enabled agent grader.""" return [ { "task": name, "grader_enabled": fn is not None, "callable": getattr(fn, "__name__", str(fn)), } for name, fn in TASK_AGENT_GRADERS.items() ]