pub struct KodaSession {
pub id: String,
pub agent: Arc<KodaAgent>,
pub db: Database,
pub provider: Box<dyn LlmProvider>,
pub mode: TrustMode,
pub cancel: CancellationToken,
pub file_tracker: FileTracker,
pub title_set: bool,
}Expand description
A single conversation session with its own state.
Each session has its own provider, trust mode, and cancel token.
Multiple sessions can share the same Arc<KodaAgent>.
Fields§
§id: StringUnique session identifier.
agent: Arc<KodaAgent>Shared agent configuration (tools, system prompt).
db: DatabaseDatabase handle for message persistence.
provider: Box<dyn LlmProvider>LLM provider for this session.
mode: TrustModeCurrent trust mode (Plan / Safe / Auto).
cancel: CancellationTokenCancellation token for graceful shutdown.
file_tracker: FileTrackerFile lifecycle tracker — tracks files created by Koda (#465).
title_set: boolWhether the session title has already been set (first-message guard).
Implementations§
Source§impl KodaSession
impl KodaSession
Sourcepub async fn new(
id: String,
agent: Arc<KodaAgent>,
db: Database,
config: &KodaConfig,
mode: TrustMode,
) -> Self
pub async fn new( id: String, agent: Arc<KodaAgent>, db: Database, config: &KodaConfig, mode: TrustMode, ) -> Self
Create a new session from an agent, config, and database.
Sourcepub async fn run_turn(
&mut self,
config: &KodaConfig,
pending_images: Option<Vec<ImageData>>,
sink: &dyn EngineSink,
cmd_rx: &mut Receiver<EngineCommand>,
) -> Result<()>
pub async fn run_turn( &mut self, config: &KodaConfig, pending_images: Option<Vec<ImageData>>, sink: &dyn EngineSink, cmd_rx: &mut Receiver<EngineCommand>, ) -> Result<()>
Run one inference turn: prompt → streaming → tool execution → response.
Emits TurnStart and TurnEnd lifecycle events. The loop-cap prompt is handled via EngineEvent::LoopCapReached / EngineCommand::LoopDecision
through the cmd_rx channel.
Sourcepub fn update_provider(&mut self, config: &KodaConfig)
pub fn update_provider(&mut self, config: &KodaConfig)
Replace the provider (e.g., after switching models or providers).
Auto Trait Implementations§
impl Freeze for KodaSession
impl !RefUnwindSafe for KodaSession
impl Send for KodaSession
impl Sync for KodaSession
impl Unpin for KodaSession
impl UnsafeUnpin for KodaSession
impl !UnwindSafe for KodaSession
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more