refactor(backend): abstraire le sink de stream hors de tauri::ipc::Channel (#13)

Lot B2 du chantier server/client mode : le cœur backend émet désormais ses
flux via une abstraction de sink agnostique, sans dépendre directement de
tauri::ipc::Channel, préalable au futur serveur web + PTY WebSocket.

- crates/backend : abstraction de sink (stream.rs) câblée dans lib.rs.
- crates/app-tauri : implémentation Tauri du sink (stream.rs) et adaptation
  des surfaces lib.rs, pty.rs, chat.rs.
- Nettoyage clippy des 2 warnings B2.

Validé : cargo check --workspace vert, tests backend/app-tauri verts,
cœur agnostique Tauri, clippy B2 propre.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-15 12:50:29 +02:00
parent 955db79e97
commit c8fef2a76a
6 changed files with 305 additions and 139 deletions

View File

@ -85,6 +85,7 @@ use infrastructure::{
pub mod mcp_endpoint;
pub mod openai_tools;
pub mod stream;
use crate::mcp_endpoint::{mcp_endpoint, AppMcpRuntimeProvider, McpEndpoint};
use crate::openai_tools::{AppOpenAiToolInvoker, LateBoundOpenAiToolInvoker};
@ -114,10 +115,8 @@ mod backend_core_build_tests {
#[test]
fn backend_core_builds_without_desktop_runtime() {
let dir = std::env::temp_dir().join(format!(
"idea-backend-core-build-{}",
uuid::Uuid::new_v4()
));
let dir =
std::env::temp_dir().join(format!("idea-backend-core-build-{}", uuid::Uuid::new_v4()));
let core = BackendCore::build(dir.clone());
assert!(!core.home_dir.is_empty());