roba-core 0.1.0

roba's clap-free, side-effect-free run engine: a Config in, a claude QueryResult out.
Documentation
# roba-core

roba's clap-free, side-effect-free run engine: a `Config` in, a claude
`QueryResult` out.

[roba](https://github.com/joshrotenberg/roba) is a single-prompt CLI runner
over `claude -p`. This crate is the run engine underneath it, split out from
the CLI so a programmatic caller (and, later, `serve`) can drive a run without
depending on clap or the terminal.

## What's here

- **`engine`** -- the config-and-run seam. `engine::run(&Config)` builds the
  claude client, maps the `Config` onto a `QueryCommand`, executes, and returns
  the typed `QueryResult`. No clap, no stdout/stderr, no `process::exit`, no
  TTY. `Config` is a curated struct: a `Permissions` posture, a `Session`
  selector, and the run knobs (model, effort, caps, timeout, MCP, system-prompt
  overrides, ...).
- **`session`** -- `apply_session`, the single `Config -> QueryCommand` mapper
  the engine feeds, plus the permission and agent-notice composition it
  consumes.

The `roba` binary resolves flags, profiles, and prompt composition into a
`Config` and renders the result around this seam, so there is one
flag-to-command mapper and no second copy to drift.

## Stability

Internal to roba for now: the API may change without a major bump until the
`serve` surface (roba#142) settles. Depend on it directly at your own risk.

## License

MIT OR Apache-2.0.