Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion deepgym/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
2 changes: 1 addition & 1 deletion deepgym/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"}
Expand Down
2 changes: 1 addition & 1 deletion deepgym/src/deepgym/__init__.py
Original file line number Diff line number Diff line change
@@ -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 (
Expand Down
Loading