Files
OpenJarvis/rust/Cargo.toml
T
d1ad3316b6 build(rust): pin MSRV to 1.88 + add rust-toolchain.toml (#469)
The Rust workspace fails to build on stable 1.86/1.87 with cryptic E0658
errors deep in dependencies: rig-core uses let-chains and
openjarvis-skills uses `is_multiple_of`, both stabilized in 1.88 (#252).

Add a rust-toolchain.toml pinning channel 1.88 (rustup then auto-selects
a working toolchain instead of erroring mid-build) and declare
rust-version = "1.88" in [workspace.package] to self-document it.

Because the toolchain pin makes CI's `cargo clippy -D warnings` run under
1.88 — whose clippy enables `uninlined_format_args` — also apply the
mechanical `format!("{}", x)` -> `format!("{x}")` rewrites across the
workspace (via `clippy --fix`; string output is identical, no logic
change). Verified clippy + fmt + `cargo test --workspace` clean on BOTH
1.88 and current stable.

Verified locally: cargo +1.86 and +1.87 fail (E0658), +1.88 builds and
tests cleanly. Supporting true 1.86 is infeasible without downgrading
rig-core below the versions exposing the token-usage symbols we use —
deferred.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 13:17:33 -07:00

58 lines
1.8 KiB
TOML

[workspace]
resolver = "2"
members = [
"crates/openjarvis-core",
"crates/openjarvis-engine",
"crates/openjarvis-agents",
"crates/openjarvis-tools",
"crates/openjarvis-learning",
"crates/openjarvis-telemetry",
"crates/openjarvis-traces",
"crates/openjarvis-security",
"crates/openjarvis-mcp",
"crates/openjarvis-python",
"crates/openjarvis-sessions",
"crates/openjarvis-workflow",
"crates/openjarvis-skills",
"crates/openjarvis-recipes",
"crates/openjarvis-templates",
"crates/openjarvis-a2a",
"crates/openjarvis-scheduler",
]
# Minimum supported Rust version. The workspace uses let-chains (via rig-core)
# and `is_multiple_of` (openjarvis-skills), both stabilized in Rust 1.88 —
# building on 1.86/1.87 fails with cryptic E0658 errors deep in dependencies
# (see #252). Declared here and pinned in rust-toolchain.toml so users get a
# clear "requires rustc 1.88" signal instead.
[workspace.package]
rust-version = "1.88"
[workspace.dependencies]
serde = { version = "1", features = ["derive"] }
serde_json = "1"
toml = "0.8"
thiserror = "2"
tracing = "0.1"
tokio = { version = "1", features = ["full"] }
reqwest = { version = "0.12", default-features = false, features = ["json", "stream", "blocking", "rustls-tls"] }
rusqlite = { version = "0.32", features = ["bundled", "column_decltype"] }
regex = "1"
once_cell = "1"
sha2 = "0.10"
uuid = { version = "1", features = ["v4"] }
rand = "0.8"
parking_lot = "0.12"
async-trait = "0.1"
pyo3 = { version = "0.23", features = ["extension-module"] }
meval = "0.2"
chrono = { version = "0.4", features = ["serde"] }
futures = "0.3"
tokio-stream = "0.1"
ed25519-dalek = { version = "2", features = ["rand_core"] }
fnmatch-regex = "0.2"
url = "2"
sysinfo = "0.33"
rig-core = "0.31"
schemars = "1"