[package] name = "infrastructure" version = "0.3.0" edition.workspace = true license.workspace = true rust-version.workspace = true description = "IdeA — infrastructure layer: concrete adapters implementing the domain ports (fs, event bus, clock, id)." [dependencies] domain = { workspace = true } # The orchestrator filesystem watcher (driving adapter, ARCHITECTURE §14.3) drives # the application's `OrchestratorService`; infrastructure may depend on application. application = { workspace = true } # `process` (additive) powers LocalProcessSpawner; the workspace baseline keeps # rt/macros/sync/fs/io-util. tokio = { workspace = true, features = ["process", "time"] } uuid = { workspace = true } async-trait = { workspace = true } # Ergonomic error enums for the MCP adapter (tool-mapping / transport errors). thiserror = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } # Moteur regex du détecteur de limite de session niveau 2 (ARCHITECTURE §21.2-T2) : # le DOMAINE ne porte que la donnée du motif (`RateLimitPattern`) ; le moteur regex # vit ICI, jamais dans `domain` (qui reste dépendance-zéro). Version alignée sur # celle déjà présente dans le `Cargo.lock` (transitive). regex = "1" portable-pty = "0.9" git2 = { workspace = true } # OS sandbox (lot LP4-1) — Linux Landlock LSM, best-effort/ABI-compat. Linux-only # target dep so the Windows/macOS builds (and the Noop fallback) compile nothing # extra. `landlock` is a thin, dependency-light wrapper over the kernel ABI. # Filesystem change notifications used to *wake* the orchestrator poll loop early # (the poll loop remains the robust cross-platform correctness guarantee). notify = "6" # Optional HTTP client for the real `localServer`/`api` embedders (LOT C1a, # §14.5.3). `default-features = false` + `rustls-tls` keeps it OpenSSL-free so the # AppImage stays portable; pulled in *only* under the `vector-http` feature so the # zero-dependency default (`none` strategy) compiles nothing extra. reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"], optional = true } # Optional in-process ONNX embedder (LOT C1b, §14.5.3). rustls all the way down # (HF model download + ort binaries fetched at build time, NOT load-dynamic) so the # AppImage stays self-contained and OpenSSL-free. Pulled in *only* under the # `vector-onnx` feature; the zero-dependency default compiles nothing extra. fastembed = { version = "5", default-features = false, features = ["hf-hub-rustls-tls", "ort-download-binaries-rustls-tls"], optional = true } [target.'cfg(target_os = "linux")'.dependencies] landlock = "0.4.5" [features] # Real HTTP-backed embedders (`localServer` Ollama/llama.cpp, `api` OpenAI/Voyage…). # OFF by default: the founding posture is `none` ⇒ naïve recall, zero dependency. vector-http = ["dep:reqwest"] # Real in-process ONNX embedder (`localOnnx`). OFF by default, same posture. vector-onnx = ["dep:fastembed"]