Files
IdeA/crates/app-tauri/Cargo.toml
Blomios 4ed0b168d2 feat(server): sous-commande idea --serve avec serveur HTTP sécurisé pairing+cookie (#13)
Lot B3 du chantier server/client mode : socle serveur sécurisé exposant le
cœur backend en mode client/serveur, sans PTY (reporté B5).

- crates/app-tauri/src/server.rs : sous-commande --serve, serveur HTTP
  sécurisé — /api/invoke sur allowlist, /api/pair → cookie de session,
  Origin strict, refus du secret en query, gate de bind. 16 tests dont les
  2 refus de sécurité (pairing_rejects_wrong_code,
  invoke_rejects_invalid_session_cookie).
- crates/app-tauri/src/lib.rs : câblage de la sous-commande --serve.
- crates/app-tauri/src/commands.rs : adaptations.
- crates/app-tauri/Cargo.toml : deps bytes/cookie/http/http-body-util,
  feature tokio net. Cargo.lock synchronisé.

Validé : cargo check --workspace vert, app-tauri 267 tests verts, cœur
backend agnostique confirmé, desktop non régressé.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 13:06:40 +02:00

58 lines
1.9 KiB
TOML

[package]
name = "app-tauri"
version = "0.3.0"
edition.workspace = true
license.workspace = true
rust-version.workspace = true
description = "IdeA — Tauri v2 shell: composition root (DI), IPC commands/events, PTY↔Channel bridge."
# The library carries all the wiring so it is unit-testable; the binary is a
# thin entry point.
[lib]
name = "app_tauri_lib"
crate-type = ["lib", "cdylib", "staticlib"]
[[bin]]
name = "app-tauri"
path = "src/main.rs"
[build-dependencies]
tauri-build = { workspace = true }
[dependencies]
domain = { workspace = true }
application = { workspace = true }
infrastructure = { workspace = true }
backend = { workspace = true }
tauri = { workspace = true }
tauri-plugin-dialog = { workspace = true }
# `io-std` gives the headless `mcp-server` bridge access to
# `tokio::io::{stdin,stdout}`; `net` is used only by the `--serve` HTTP adapter.
tokio = { workspace = true, features = ["io-std", "rt", "net"] }
serde = { workspace = true }
serde_json = { workspace = true }
thiserror = { workspace = true }
uuid = { workspace = true }
base64 = "0.22"
bytes = "1.11"
cookie = "0.18"
http = "1.4"
http-body-util = "0.1"
# `AppAgentResumer` implements the application's async `AgentResumer` port (LS7).
async-trait = { workspace = true }
# Cross-OS local IPC for the MCP loopback transport (M5a): Unix domain socket
# (Linux/macOS) + Windows named pipe behind one async API, no network port. Pulled
# in only here (the transport is an app-tauri/infra concern); its `tokio` feature
# keeps us off tokio's `net` feature workspace-wide.
interprocess = { version = "2.4", features = ["tokio"] }
[features]
# Passthrough toggles to enable the real embedders in an IDE build. OFF by default
# (founding posture: `none` ⇒ naïve recall, zero dependency).
vector-http = ["infrastructure/vector-http", "backend/vector-http"]
vector-onnx = ["infrastructure/vector-onnx", "backend/vector-onnx"]
[dev-dependencies]
uuid = { workspace = true }
async-trait = { workspace = true }