lash_sansio/sansio/
mod.rs1use std::collections::{HashSet, VecDeque};
8use std::fmt::Debug;
9use std::sync::Arc;
10
11use serde::Serialize;
12use serde::de::DeserializeOwned;
13use serde_json::Value;
14
15use crate::llm::types::{
16 LlmAttachment, LlmOutputPart, LlmRequest, LlmResponse, LlmTerminalReason, LlmToolChoice,
17 LlmToolSpec, ProviderReplayMeta,
18};
19use crate::session_model::message::MessageOrigin;
20use crate::session_model::{
21 Message, MessageRole, MessageSequence, Part, PartKind, PruneState, SessionEvent,
22 SessionEventRecord, TokenUsage, TurnTerminationPolicyState, make_error_event,
23 reassign_part_ids, render_prompt,
24};
25use crate::{
26 CheckpointKind, ModelToolReturn, PluginMessage, ToolCallOutput, TurnOutcome, TurnStop,
27};
28
29pub trait TurnProtocol: Send + Sync + 'static {
32 type Event: Clone + Serialize + DeserializeOwned + Debug + Send + Sync + 'static;
33 type Termination: Clone + Default + Debug + Send + Sync + 'static;
34 type DriverState: Clone + Default + Serialize + DeserializeOwned + Debug + Send + Sync + 'static;
35}
36
37#[derive(Clone, Debug, Serialize, serde::Deserialize)]
38pub struct UnitTurnProtocol;
39
40include!("sections/turn_protocol.rs");
41include!("sections/machine_state.rs");
42include!("sections/turn_machine.rs");
43include!("sections/helpers.rs");
44
45#[cfg(test)]
46mod tests;