Expand description
oneharness-core: the reusable engine behind the oneharness CLI, and a
depend-able library for tools that install hooks into — or sync configs for
— the supported agentic coding harnesses (Claude Code, Codex, OpenCode,
Goose, Qwen Code, Crush, Copilot CLI, Cursor).
domainis pure: it builds argv, parses output, shapes the report, holds the harness registry, renders hooks, layers config, and computes the sync merge — with no process / filesystem / env / clock I/O.ioperforms the real I/O: PATH resolution, version probing, spawning, reading config, and writing harness config files and hooks.
The cross-harness capability a consumer most often wants: build a
domain::hooks::HookSpec and call io::hooks::install to write a
pre-tool hook into any harness in that harness’s native shape (a shared
config file, a dedicated hooks file, or a plugin). It is generic — the
command and plugin identity are caller-supplied, never hardcoded.
Modules§
- domain
- Pure core: no process, filesystem, env, clock, or terminal I/O lives here.
These modules build commands, shape the report, and parse output; all real
I/O stays behind the
ioandcommandsboundaries. - errors
- Typed errors surfaced only at the application boundary (see
dispatch). - io
- I/O boundary: PATH resolution, version probing, and subprocess execution.
Everything that touches the process, filesystem, env, or clock lives here or
in
commands, never indomain.