[package]
name = "op-smoke"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
description = "Headless smoke runner for op-orchestrator — drives one design turn against AnthropicProvider and dumps every event to stderr"

[[bin]]
name = "op-smoke"
path = "src/main.rs"

[dependencies]
# AnthropicProvider — the `anthropic` feature gates the real HTTP client.
agent = { path = "../../vendor/agent/crates/agent", default-features = false, features = ["anthropic", "openai"] }
# The orchestrator + its types. Smoke calls `Orchestrator::new().run(...)`
# directly on the current thread, bypassing the actor-channel model
# `DesignSession` uses for UI safety — we want the simplest possible
# trace so debugging the LLM/orchestrator side stays linear.
op-orchestrator = { path = "../op-orchestrator" }
# `EditorState` + `EditorCommand` — the smoke's own `InlineDocSink` owns
# one and applies commands on it.
op-editor-core = { path = "../op-editor-core" }
# `futures` for `BoxStream` + `mpsc` channels in the LlmClient impl.
futures = "0.3"
# `tokio` for the runtime that `Orchestrator::run` (async) runs on.
# `rt-multi-thread` so the LLM HTTP client can spawn its own tasks.
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
