Lot 6 : plusieurs discussions côté Rust (chat::sessions)

Port des opérations de chat_sessions.go et de LoadConversation :
discussion active créée au besoin (reprise du fil unique d'avant les
discussions, clé d'origine gardée), chargement au démarrage qui réessaie et
n'écrit rien sur une base illisible, liste du projet actif, création,
bascule (la courante enregistrée sous SON identifiant), renommage,
suppression (l'écriture en vol ne la fait pas renaître ; bascule sur la plus
récente restante ou une neuve : toujours une discussion active).

Les opérations sont sérialisées ; l'index partage son verrou avec
l'écrivain (StoreSink::index_lock, convIndexMu en Go). Fichiers, travaux,
critères, mode, résultats d'outils d'une discussion supprimée et
préchauffage après bascule passent par SessionHooks. Store gagne
get_open / put_seal (getStoreBytesErr / putStoreBytes).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016tcGfJWefW5kUGoC2wL8cv
This commit is contained in:
Claude committed 2026-10-15 10:09:00 +00:00
1 parent 74c2d5105c
commit a73b20ea04
5 files changed
+574 -7

No files matched your search

+2
View File
@@ -11,6 +11,7 @@
//! - [`conv`] : la discussion en mémoire (état, epoch, verrou du tour,
//! abonnés) ;
//! - [`persist`] : format en base, index des discussions, écrivain unique ;
//! - [`sessions`] : plusieurs discussions (index, bascules, chargement) ;
//! - [`lease`] : bail du moteur (verrou de génération partagé avec le Go).
pub mod compact;
@@ -19,6 +20,7 @@ pub mod engine;
pub mod journal;
pub mod lease;
pub mod persist;
pub mod sessions;
pub mod stream;
pub mod types;
pub mod wire;