Files
IdeA/crates/infrastructure/Cargo.toml
Blomios 171c6c923c feat(wave): #119/#122/#131/#132 verts + sprint plugins ESM/persistance #135/#136/#139
État d'intégration confiné à la branche batch. Les tickets #119 (skills →
capacités agent découvrables), #122 (override permissions par défaut), #131
(effort par agent/presets) et #132 (outil MCP d'édition du contexte projet)
sont verts en périmètre. Le sprint plugins multi-fichiers ESM / persistance
plugin-owned (#135/#136/#139) est co-implémenté dans les MÊMES fichiers de
câblage (frontend/src/ports/index.ts, backend/src/lib.rs, domain/ports.rs,
backend/dto.rs), inséparable sans staging interactif (indisponible ici).

Commit unique volontaire : préserve l'état vert QA sans découpe hunk risquée.
NON mergé vers develop tant que #137 (QA e2e plugins) n'est pas vert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-03 11:06:23 +02:00

67 lines
3.3 KiB
TOML

[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 }
futures-util = { workspace = true }
fs4 = { workspace = true }
# Ergonomic error enums for the MCP adapter (tool-mapping / transport errors).
thiserror = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
sha2 = { workspace = true }
hex = { workspace = true }
zip = { version = "2", default-features = false, features = ["deflate"] }
# AEAD encryption for the at-rest `SecretStore` adapter (ticket #92, lot B2).
# Already vendored transitively (rustls/reqwest use it) — made an explicit direct
# dependency here rather than adding a new crate to the tree.
ring = "0.17"
# 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", "stream"] }
# 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 = []
# Real in-process ONNX embedder (`localOnnx`). OFF by default, same posture.
vector-onnx = ["dep:fastembed"]