From a3ccc01519a51a33443d9e68eae60af4efbc5e7d Mon Sep 17 00:00:00 2001 From: Abhishek Gahlot Date: Fri, 23 Oct 2026 14:41:36 +0530 Subject: [PATCH] chore: release 0.6.0 --- deepgym/CHANGELOG.md | 5 ++++- deepgym/pyproject.toml | 2 +- deepgym/src/deepgym/__init__.py | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/deepgym/CHANGELOG.md b/deepgym/CHANGELOG.md index f089a90..b297bb4 100644 --- a/deepgym/CHANGELOG.md +++ b/deepgym/CHANGELOG.md @@ -1,7 +1,10 @@ # Changelog -## Unreleased +## 0.6.0 (2026-10-23) +- **Agent harnesses:** `deepgym.agents` adds `AnthropicComputerAgent`, `OpenAIComputerAgent`, `ClaudeCodeAgent` and `CodexAgent`, each driving a live session. `DeepGym.run_episode(env, agent, budget=...)` runs the episode and returns `(AgentResult, RunResult)`; the callable interface still returns `(Trajectory, RunResult)`. The Claude Code and Codex CLIs are installed at pinned versions and checked in the sandbox. See `docs/agents.md`. +- **Computer agents run uncapped (#98):** `AnthropicComputerAgent` streams with `max_tokens=128000` (the model maximum), `OpenAIComputerAgent` sends no `max_output_tokens`, and reasoning effort defaults to `max`. A response that doesn't complete returns `error` and applies no action. `Budget.max_turns`, `Budget.max_seconds` and the environments' `max_steps` accept `None` for no limit. `MultiTurnEnvironment.volumes` mounts Daytona volumes (`VolumeMount`). +- **API tool agents (#99):** `AnthropicToolAgent` and `OpenAIToolAgent` act only through HTTP routes an environment declares in `tools` (`HttpTool`, `HttpRoute`). Every write stays unsettled until the environment's `root_tool_settle` hook proves the app finished or dropped it; without that proof the result has no verdict (`unsettled_write`). Write tools can't be combined with step verifiers. Tool credentials stay root-only and are redacted from every record. Tool calls run only after a complete response, and cut-off or unparsable responses are recorded and never acted on. - **OSWorld computer-use tasks:** `scripts/import_osworld.py` imports 16 of OSWorld's (Apache-2.0) LibreOffice Calc and Writer tasks as computer-use environments, each with a reference episode, and writes OSWorld's license and a NOTICE next to them. They boot the Daytona snapshot `deepgym-osworld-libreoffice` (`--build-snapshot` creates it), since Daytona's default image has no LibreOffice; `metadata.json` takes a `snapshot`. The verifier scores the saved file with the task's own `compare_table` rules (ported into the shared `_checks.py`, standard library only) or its reference text, never a screenshot. Rules the starting file already holds, or holds once an empty sheet is added, are guards, so an untouched file or a blank sheet scores 0; a saved file the readers can't read (missing, corrupt, not a regular file, too large) scores 0, and reading and scoring run in a time- and memory-limited child whose failure also scores 0, so nothing in the file can crash or stall the verifier. `deepgym check` asks a computer-use folder for `reference_actions.json` instead of `reference_solution.*`, and is inconclusive on one off Daytona. ## 0.5.0 (2026-10-14) diff --git a/deepgym/pyproject.toml b/deepgym/pyproject.toml index 2ff0f6e..6670187 100644 --- a/deepgym/pyproject.toml +++ b/deepgym/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "deepgym" -version = "0.5.0" +version = "0.6.0" description = "RL training environments with verifiable rewards for coding and computer-use agents" readme = "README.md" license = {text = "PolyForm-Noncommercial-1.0.0"} diff --git a/deepgym/src/deepgym/__init__.py b/deepgym/src/deepgym/__init__.py index 71f7cff..779331b 100644 --- a/deepgym/src/deepgym/__init__.py +++ b/deepgym/src/deepgym/__init__.py @@ -1,6 +1,6 @@ """DeepGym — Managed RL training and evaluation infrastructure.""" -__version__ = '0.5.0' +__version__ = '0.6.0' from deepgym.async_core import AsyncDeepGym from deepgym.benchmark_envs import (