roba-types 0.1.0

roba's stable machine contract: the --json envelope shapes and the exit-code map. No async runtime.
Documentation

roba-types

roba's stable machine contract, as a dependency-light library: the --json envelope shapes and the exit-code map. No async runtime (no tokio).

roba is meant to be driven as a subprocess whose --json output and exit code are a stable ABI. This crate is that ABI, so a downstream harness can deserialize against it and branch on the exit code without depending on the whole roba binary.

What's here

  • Exit codes -- EXIT_FAILURE (1) through EXIT_MAX_BUDGET (7), the full map the binary returns. The roba binary references these same constants.
  • Envelopes -- SuccessEnvelope<T> ({ version, result, refusal }), VersionedResult<T> ({ version, result }, the read-only commands), and ErrorEnvelope ({ version, error }). Each derives Serialize and Deserialize, so producer and consumer share one type per shape.
  • QueryResult -- claude's result payload, re-exported (not mirrored).

Example

use roba_types::{SuccessEnvelope, QueryResult, EXIT_MAX_TURNS};

let env: SuccessEnvelope<QueryResult> = serde_json::from_str(stdout)?;
if exit_code == EXIT_MAX_TURNS {
    // recoverable cap-hit: resume the session and finish the lifecycle
}

License

MIT OR Apache-2.0.