Metadata-Version: 2.4
Name: onejudge
Version: 0.3.2
Summary: Typed async Python SDK for onejudge
Keywords: agent,evaluation,judge,harness
Author: Nick DeRobertis
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Typing :: Typed
Requires-Dist: jsonschema>=4.18,<5
Requires-Dist: onejudge-cli==0.3.2
Requires-Python: >=3.9
Project-URL: Homepage, https://github.com/nickderobertis/onejudge
Project-URL: Repository, https://github.com/nickderobertis/onejudge
Description-Content-Type: text/markdown

# onejudge

Typed async Python access to the `onejudge` CLI. The distribution is
`onejudge`, the import is `onejudge_sdk`, and each release depends on the
exact same `onejudge-cli` version.

```console
pip install onejudge
```

```python
import asyncio

from onejudge_sdk import OneJudge


async def main() -> None:
    result = await OneJudge().run(
        {"provider": {"kind": "oneharness"}},
        "Review this repository",
        cwd="/path/to/repository",
        timeout=3600,
    )
    print(result.completed, result.assistant_turns, result.verdicts)


asyncio.run(main())
```

`run` validates the config before starting the CLI, writes a temporary effective
JSON config (JSON is valid YAML), and always sends the task over stdin with
`--task -`. It accepts a `provider` override, subprocess `cwd`, additional `env`
(including `ONEHARNESS_HISTORY_LABELS` and `ONEHARNESS_TIMEOUT`), and a timeout.
Executable resolution is the constructor's `executable`, then `ONEJUDGE_BIN`,
then `onejudge` on `PATH`.

Exit 0 and 1 return `RunResult`: `exit_code` and `stderr` remain available, and
`raw`, `completed`, `verdicts`, `usage`, `assistant_turns`, and `agent_turns`
cover ai-orchestrator's dispatch needs. Exit 2 (bad config or provider/runtime
failure) and unexpected nonzero exits raise `OneJudgeProcessError` without
discarding the exit code or stderr. A caller timeout raises
`OneJudgeTimeoutError`.

There is no `run_stream` method. `onejudge run` currently emits one final JSON
report; the JSONL interface in `docs/protocol.md` is the internal provider
protocol, not a CLI result stream.
