[package]
name = "claude-codes"
version = "2.1.310"
edition = "2021"
rust-version = "1.85"
authors = ["Matthew Goodman <d3a6d0cec0c16f3e@inboxnegative.com>"]
description = "Typed Rust SDK for the Claude Code agent CLI: serde models of its JSON-Lines (stream-json) protocol with streaming parsing, plus sync and async (Tokio) clients for driving Claude Code sessions, tools, and subagents."
documentation = "https://docs.rs/claude-codes"
homepage = "https://github.com/meawoppl/rust-code-agent-sdks"
repository = "https://github.com/meawoppl/rust-code-agent-sdks"
license = "Apache-2.0"
readme = "README.md"
keywords = ["claude-code", "claude", "anthropic", "agent", "llm"]
categories = ["api-bindings", "asynchronous", "encoding", "parsing"]
exclude = [
"test_cases/",
"*.sh",
]
[lints]
workspace = true
[dependencies]
chrono = { version = "0.4.41", features = ["serde"] }
serde = { workspace = true }
serde_json = { workspace = true }
thiserror = { workspace = true }
uuid = { version = "1.18.0", default-features = false, features = ["serde"] }
anyhow = { version = "1.0.99", optional = true }
tokio = { workspace = true, optional = true }
log = { workspace = true, optional = true }
which = { workspace = true, optional = true }
portable-pty = { version = "0.9.0", optional = true }
base64 = { version = "0.22.1", optional = true }
[features]
default = ["types", "sync-client", "async-client"]
types = []
sync-client = ["types", "anyhow", "log", "uuid/v4", "dep:which"]
async-client = ["types", "anyhow", "tokio", "log", "uuid/v4", "dep:which"]
integration-tests = []
corpus-test = []
log = ["dep:log"]
auth = ["types", "dep:portable-pty", "dep:base64"]
[dev-dependencies]
env_logger = { workspace = true }
base64 = "0.22.1"
uuid = { version = "1.18.0", features = ["v4"] }
tokio = { workspace = true }
anyhow = "1.0.99"
[[example]]
name = "async_client"
required-features = ["async-client"]
[[example]]
name = "basic_repl"
required-features = ["async-client"]
[[example]]
name = "sync_client"
required-features = ["sync-client"]
[[example]]
name = "login"
required-features = ["auth"]