| 1 | [workspace] |
| 2 | resolver = "2" |
| 3 | members = [ |
| 4 | "crates/ed-agent", |
| 5 | "crates/ed-agent-ffi", |
| 6 | "crates/ed-agent-tauri", |
| 7 | "crates/ed-mcp", |
| 8 | "crates/ed-acp", |
| 9 | "crates/ed-acp-tauri", |
| 10 | "crates/ed-acp-tui", |
| 11 | "crates/ed-acp-testkit", |
| 12 | "crates/ed-onde-account", |
| 13 | "uniffi-bindgen", |
| 14 | ] |
| 15 | |
| 16 | # Shared across every crate in the workspace so a release moves one number. |
| 17 | # `sync-version` tooling (see the Makefile) reads these. |
| 18 | [workspace.package] |
| 19 | version = "1.3.3" |
| 20 | edition = "2021" |
| 21 | rust-version = "1.94" |
| 22 | license = "MIT OR Apache-2.0" |
| 23 | authors = ["Onde Inference"] |
| 24 | repository = "https://github.com/ondeinference/ed" |
| 25 | homepage = "https://ondeinference.com" |
| 26 | |
| 27 | [workspace.dependencies] |
| 28 | # The inference engine Ed wraps, resolved from crates.io like any dependency |
| 29 | # (there is no path override to a sibling checkout). 1.3.2 is the first release |
| 30 | # with ChatEngine::complete, which ed-acp's local provider calls. |
| 31 | onde = { version = "1.3.2" } |
| 32 | async-trait = "0.1" |
| 33 | serde = { version = "1", features = ["derive"] } |
| 34 | serde_json = "1" |
| 35 | log = "0.4" |
| 36 | thiserror = "2" |
| 37 | tokio = { version = "1", features = ["sync", "rt"] } |
| 38 | tauri = { version = "2", features = [] } |
| 39 | # Must match on the uniffi version `onde` is built with (=0.31.0). The |
| 40 | # bindgen extracts metadata that every crate in the staticlib embeds; mixed |
| 41 | # versions break extraction with "Invalid string data" errors. |
| 42 | uniffi = { version = "=0.31.0", features = ["tokio"] } |
| 43 | smbcloud-gresiq-sdk = "0.4.7" |
| 44 | |
| 45 | # Onde Agent Platform v0.1 baseline (onde-web .agents/specs/onde-agent-platform, §5.4). |
| 46 | # The ACP crates (ed-mcp, ed-acp, ed-acp-tui, ed-acp-testkit) use these; ed-agent does not. |
| 47 | agent-client-protocol = "2.2" |
| 48 | rmcp = { version = "3.5", default-features = false } |
| 49 | reqwest = { version = "0.13", default-features = false, features = ["json", "stream"] } |
| 50 | ratatui = { version = "0.30.2", default-features = false, features = ["crossterm", "layout-cache", "unstable-rendered-line-info"] } |
| 51 | crossterm = { version = "0.29", features = ["event-stream"] } |
| 52 | tokio-util = "0.7" |
| 53 | futures = "0.3" |
| 54 | anyhow = "1" |
| 55 | tracing = "0.1" |
| 56 | tracing-subscriber = { version = "0.3", features = ["env-filter"] } |
| 57 | uuid = { version = "1", features = ["v4"] } |
| 58 | directories = "6" |
| 59 | base64 = "0.23" |
| 60 | |
| 61 | # Internal |
| 62 | ed-agent = { version = "1.3.3", path = "crates/ed-agent" } |
| 63 | ed-mcp = { version = "1.3.3", path = "crates/ed-mcp" } |
| 64 | ed-acp = { version = "1.3.3", path = "crates/ed-acp" } |
| 65 | ed-acp-tauri = { version = "1.3.3", path = "crates/ed-acp-tauri" } |
| 66 | ed-acp-tui = { version = "1.3.3", path = "crates/ed-acp-tui" } |
| 67 | ed-acp-testkit = { version = "1.3.3", path = "crates/ed-acp-testkit" } |
| 68 | ed-onde-account = { version = "1.3.3", path = "crates/ed-onde-account" } |
| 69 | |
| 70 | # gemm-common (via candle, via onde) depends on sysctl for every |
| 71 | # `target_vendor = "apple"`, but sysctl 0.6.0 only has a `sys` module behind |
| 72 | # macOS/iOS/tvOS/visionOS/freeBSD — the watchOS build fails to resolve it. onde |
| 73 | # carries this same patch, but `[patch]` is only honoured from the manifest of |
| 74 | # the workspace being built, so depending on onde does not inherit it: Ed has to |
| 75 | # repeat it. The branch is cut from sysctl 0.6.0 rather than the fork's master |
| 76 | # (0.7.1) because a patch that is semver-incompatible with the requirement in |
| 77 | # the graph is silently ignored. |
| 78 | [patch.crates-io] |
| 79 | sysctl = { git = "https://github.com/setoelkahfi/sysctl-rs.git", branch = "feature/watchos-0.6" } |