//! kigi-chat-state — Actor-based chat state management for xAI agents. //! //! Holds the conversation state driven by `kigi-shell`'s `acp_session.rs`, //! following the same actor pattern as `kigi-hunk-tracker`: //! //! ```text //! ┌────────────────┐ ┌──────────────────────────────────────┐ //! │ SessionActor │ ─── Command ───▶ │ ChatStateActor │ //! │ (push_user, │ │ (runs in dedicated tokio task) │ //! │ build_req) │ │ │ //! └────────────────┘ │ State (no locks needed): │ //! │ - conversation: Vec│ //! ┌────────────────┐ │ - sampling_config: SamplingConfig │ //! │ Query (e.g. │ ── Cmd+Oneshot ─▶│ - prompt_index: usize │ //! │ get_conv) │ ◀── Response ────│ - total_tokens: u64 │ //! └────────────────┘ │ │ //! │ │ ChatStateEvent │ //! │ ▼ │ //! │ ┌──────────────────┐ │ //! │ │ event_tx │───▶ Session │ //! │ └──────────────────┘ │ //! └──────────────────────────────────────┘ //! ``` pub mod actor; pub mod commands; pub mod compaction_mode; pub mod compaction_transcript; pub mod compaction_utils; pub mod conversation_util; pub mod events; pub mod handle; pub mod persistence; pub mod types; pub mod usage; pub use actor::ChatStateActor; pub use actor::state::{ estimate_conversation_tokens, estimate_item_tokens, estimate_messages_tokens, estimate_system_message_tokens, estimate_tool_definition_tokens, estimate_tool_definitions_tokens, }; pub use commands::ModelMetadata; pub use compaction_mode::CompactionMode; pub use compaction_transcript::CompactionDetail; pub use events::ChatStateEvent; pub use handle::ChatStateHandle; pub use persistence::{ ChatPersistence, MockChatPersistence, MockPersistenceReceiver, NullChatPersistence, PersistenceRecord, }; pub use types::*; pub use usage::{UsageLedger, UsageTotals};