mirror of
https://github.com/katanemo/plano.git
synced 2026-06-14 15:15:15 +02:00
- Convert ClaudeProcess::last_used from tokio::sync::Mutex<Instant> to
std::sync::Mutex<Instant>: the critical section is one Copy read/write
with no .await, so a sync mutex lets SessionManager iterate sessions
without holding the map lock across an await point. Fixes the
lock-across-await pattern in lru_session_id and evict_idle.
- Simplify SessionManager::get_or_spawn to a single map-lock acquisition
on the fast path; only release the lock for the rare case where we
need to await a victim shutdown before spawning.
- Replace the hand-rolled "deterministic UUID via DefaultHasher" with a
real UUIDv5 over the OID namespace (uuid feature `v5`). Stable across
Rust toolchain versions, unlike SipHash, and matches what the doc on
the helper claimed all along.
- Introduce ProcessError::MissingStdio { which } so spawns where
Stdio::piped() somehow returned None surface as their own programmer-
error variant rather than masquerading as ExitedEarly.
- Delete the dead is_zero() helper.
70 lines
2.1 KiB
TOML
70 lines
2.1 KiB
TOML
[package]
|
|
name = "brightstaff"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
|
|
[features]
|
|
default = ["jemalloc"]
|
|
jemalloc = ["tikv-jemallocator", "tikv-jemalloc-ctl"]
|
|
|
|
[[bin]]
|
|
name = "brightstaff"
|
|
path = "src/main.rs"
|
|
|
|
[[bin]]
|
|
name = "signals_replay"
|
|
path = "src/bin/signals_replay.rs"
|
|
|
|
[dependencies]
|
|
async-openai = "0.30.1"
|
|
async-trait = "0.1"
|
|
bytes = "1.10.1"
|
|
chrono = "0.4"
|
|
common = { version = "0.1.0", path = "../common" }
|
|
eventsource-client = "0.15.0"
|
|
eventsource-stream = "0.2.3"
|
|
flate2 = "1.0"
|
|
futures = "0.3.31"
|
|
futures-util = "0.3.31"
|
|
hermesllm = { version = "0.1.0", path = "../hermesllm" }
|
|
http-body = "1.0.1"
|
|
http-body-util = "0.1.3"
|
|
hyper = { version = "1.6.0", features = ["full"] }
|
|
hyper-util = "0.1.11"
|
|
opentelemetry = "0.31"
|
|
opentelemetry-http = "0.31"
|
|
opentelemetry-otlp = {version="0.31", features=["trace", "grpc-tonic"]}
|
|
opentelemetry-stdout = "0.31"
|
|
opentelemetry_sdk = { version = "0.31", features = ["rt-tokio"] }
|
|
pretty_assertions = "1.4.1"
|
|
rand = "0.9.2"
|
|
regex = "1.10"
|
|
lru = "0.12"
|
|
metrics = "0.23"
|
|
metrics-exporter-prometheus = { version = "0.15", default-features = false, features = ["http-listener"] }
|
|
metrics-process = "2.1"
|
|
redis = { version = "0.27", features = ["tokio-comp", "tokio-rustls-comp", "tls-rustls-webpki-roots"] }
|
|
reqwest = { version = "0.12.15", features = ["stream"] }
|
|
serde = { version = "1.0.219", features = ["derive"] }
|
|
serde_json = "1.0.140"
|
|
serde_with = "3.13.0"
|
|
strsim = "0.11"
|
|
serde_yaml = "0.9.34"
|
|
thiserror = "2.0.12"
|
|
tikv-jemallocator = { version = "0.6", optional = true }
|
|
tikv-jemalloc-ctl = { version = "0.6", features = ["stats"], optional = true }
|
|
tokio = { version = "1.44.2", features = ["full"] }
|
|
tokio-postgres = { version = "0.7", features = ["with-serde_json-1"] }
|
|
tokio-stream = "0.1"
|
|
time = { version = "0.3", features = ["formatting", "macros"] }
|
|
tracing = "0.1"
|
|
tracing-opentelemetry = "0.32.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
uuid = { version = "1.0", features = ["v4", "v5", "serde"] }
|
|
|
|
[dev-dependencies]
|
|
mockito = "1.0"
|
|
tokio-stream = "0.1.17"
|
|
tracing = "0.1.41"
|
|
tracing-opentelemetry = "0.32.1"
|
|
tracing-subscriber = { version = "0.3.19", features = ["env-filter", "fmt", "time"] }
|