[workspace] resolver = "2" members = [ "crates/harness-core", "crates/harness-providers", "crates/harness-tools", "crates/harness-mcp", "crates/harness-lsp", "crates/harness-app", "crates/harness-tui", ] [workspace.package] version = "0.1.0" edition = "2021" license = "MIT" repository = "https://github.com/esimon/ai-harness" [workspace.dependencies] harness-core = { path = "crates/harness-core" } harness-providers = { path = "crates/harness-providers" } harness-tools = { path = "crates/harness-tools" } harness-mcp = { path = "crates/harness-mcp" } harness-lsp = { path = "crates/harness-lsp" } harness-app = { path = "crates/harness-app" } tokio = { version = "1", features = ["full"] } tokio-util = "0.7" futures = "0.3" async-stream = "0.3" async-trait = "0.1" reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "stream", "json", "gzip"] } eventsource-stream = "0.2" serde = { version = "1", features = ["derive"] } serde_json = { version = "1", features = ["raw_value"] } schemars = "0.8" serde_yaml_ng = "0.10" jsonc-parser = { version = "0.26", features = ["serde"] } rusqlite = { version = "0.32", features = ["bundled"] } ratatui = "0.29" crossterm = { version = "0.28", features = ["event-stream"] } tui-textarea = "0.7" pulldown-cmark = "0.12" rmcp = "0.1" lsp-types = "0.97" ignore = "0.4" globset = "0.4" grep-searcher = "0.1" grep-regex = "0.1" grep-matcher = "0.1" similar = "2" ulid = { version = "1", features = ["serde"] } thiserror = "2" anyhow = "1" tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } tracing-appender = "0.2" dirs = "5" shell-words = "1" [workspace.lints.rust] unsafe_code = "deny" [workspace.lints.clippy] all = { level = "warn", priority = -1 }