M0: scaffold Cargo workspace, core types, event bus, permission engine, storage actor
Sets up the Cargo workspace (harness-core, harness-tools, harness-providers, harness-mcp, harness-lsp, harness-app, harness-tui) and the ten architecture docs under docs/. harness-core gets its foundational types (session/message/part/model ids), an in-process event bus, a table-driven permission evaluate function, and a SQLite-backed storage actor with schema and roundtrip coverage. Every crate compiles empty and a bin stub prints its version.
This commit is contained in:
+65
@@ -0,0 +1,65 @@
|
||||
[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 }
|
||||
Reference in New Issue
Block a user