diff --git a/Cargo.toml b/Cargo.toml index e64cd1c..5797164 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,12 +5,24 @@ edition = "2024" # The floor edition 2024 requires, and where the strictest dependencies (uuid, # getrandom) sit. Derived from the dependency graph rather than compile-tested. rust-version = "1.85" -description = "Drive Claude Code, Codex and Copilot CLIs headlessly from Rust, as a library." +description = "Drive the Claude Code, Codex and GitHub Copilot CLIs headlessly from Rust. One request type, one event stream and one session model across all three, with resume and fork." license = "MIT" repository = "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/pathscale/RustAgentAbstraction" readme = "README.md" -keywords = ["agent", "claude", "codex", "copilot", "cli"] -categories = ["development-tools"] +# The published package is the library. Tests that spawn real agents, CI config +# and repo docs are noise in a downloaded crate and would fail for a consumer +# who has none of the three CLIs installed. +exclude = [ + "tests/**", + ".github/**", + "AGENTS.md", + "CLAUDE.md", +] +# Five is the crates.io maximum. "llm" earns a slot over "cli" because it is how +# someone finds this without already knowing the crate exists; the three agent +# names are the other searches that should land here. +keywords = ["agent", "claude", "codex", "copilot", "llm"] +categories = ["development-tools", "api-bindings", "asynchronous"] # Library only, by design. There is no binary: the consumer (an agencyzero GUI, # a service, a test) links this crate and spawns the agent directly, so nothing diff --git a/README.md b/README.md index 61427b4..8bcc2ca 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,20 @@ -# RustAgentAbstraction +# agent-abstraction -`agent-abstraction` drives **Claude Code**, **Codex** and **GitHub Copilot** headlessly from -Rust: one request type, one event vocabulary, one session model across three CLIs that agree -on none of those things. +[![crates.io](https://img.shields.io/crates/v/agent-abstraction.svg)](https://crates.io/crates/agent-abstraction) +[![docs.rs](https://img.shields.io/docsrs/agent-abstraction)](https://docs.rs/agent-abstraction) +[![license](https://img.shields.io/crates/l/agent-abstraction.svg)](LICENSE) + +Drive **Claude Code**, **Codex** and **GitHub Copilot** headlessly from Rust: one request +type, one event vocabulary, one session model across three CLIs that agree on none of those +things. + +```toml +[dependencies] +agent-abstraction = "0.1" +``` + +Every flag mapping and output shape here was verified against the installed CLIs rather than +taken from documentation, which is the part that keeps being wrong. It is a **library, not a CLI**. Your program links it and spawns the agent directly, so nothing marshals a request through a command line and back out of stdout twice.