pub struct SessionState {
pub messages: Vec<ConversationMessage>,
pub tool_calls: Vec<SessionToolCall>,
pub activity_log: Vec<SessionActivityEvent>,
pub working_memory: SessionWorkingMemory,
pub total_tokens: u64,
pub context_cache_key: Option<String>,
pub workspace_dir: Option<PathBuf>,
pub llm_config: Option<SessionLlmConfig>,
pub voice_config: Option<SessionVoiceConfig>,
pub tool_settings: Option<SessionToolSettings>,
pub reflection_settings: Option<SessionReflectionSettings>,
pub paused_execution: Option<PausedExecutionState>,
}Expand description
Persisted session state.
Fields§
§messages: Vec<ConversationMessage>Conversation history.
tool_calls: Vec<SessionToolCall>Tool call history.
activity_log: Vec<SessionActivityEvent>Replayable session activity timeline used to restore rich UI state.
working_memory: SessionWorkingMemoryShort-term working memory for this session.
total_tokens: u64Total tokens used in this session (best-effort).
context_cache_key: Option<String>Last context cache key (for smart context reduction).
workspace_dir: Option<PathBuf>Workspace directory for sandboxed file/shell operations.
llm_config: Option<SessionLlmConfig>Session-scoped LLM configuration.
voice_config: Option<SessionVoiceConfig>Session-scoped voice configuration.
tool_settings: Option<SessionToolSettings>Session-scoped tool settings.
reflection_settings: Option<SessionReflectionSettings>Session-scoped experiential reflection settings.
paused_execution: Option<PausedExecutionState>Paused execution state for resumable sessions.
When the user pauses (cancels) a streaming response, the execution state
is captured here so it can be resumed later via @continue (CLI) or the
resume button (GUI).
Implementations§
Source§impl SessionState
impl SessionState
Sourcepub fn with_workspace(workspace_dir: PathBuf) -> Self
pub fn with_workspace(workspace_dir: PathBuf) -> Self
Create a new session state with a workspace directory.
Sourcepub fn get_recent_messages(&self, limit: usize) -> Vec<&ConversationMessage>
pub fn get_recent_messages(&self, limit: usize) -> Vec<&ConversationMessage>
Get the most recent messages in the session.
Sourcepub fn add_user_message(&mut self, content: &str, source: MessageSource)
pub fn add_user_message(&mut self, content: &str, source: MessageSource)
Add a user message.
Sourcepub fn add_assistant_message(&mut self, content: &str, thinking: Option<String>)
pub fn add_assistant_message(&mut self, content: &str, thinking: Option<String>)
Add an assistant message.
Sourcepub fn remember_assistant_summary(
&mut self,
content: &str,
thinking: Option<String>,
)
pub fn remember_assistant_summary( &mut self, content: &str, thinking: Option<String>, )
Remember an assistant summary without appending a new conversation message.
Sourcepub fn append_to_last_assistant_message(
&mut self,
content: &str,
thinking: Option<String>,
) -> bool
pub fn append_to_last_assistant_message( &mut self, content: &str, thinking: Option<String>, ) -> bool
Append streamed continuation content to the most recent assistant message.
Returns true when the last conversation entry was an assistant message and
the additional content/thinking was merged into that entry.
Sourcepub fn add_tool_message(&mut self, tool_call_id: &str, content: &str)
pub fn add_tool_message(&mut self, tool_call_id: &str, content: &str)
Add a tool result message.
Sourcepub fn record_tool_call(&mut self, call: SessionToolCall)
pub fn record_tool_call(&mut self, call: SessionToolCall)
Record a tool call.
Sourcepub fn record_activity_event(
&mut self,
event_type: impl Into<String>,
payload: Option<Value>,
)
pub fn record_activity_event( &mut self, event_type: impl Into<String>, payload: Option<Value>, )
Append a replay/export activity event to the session timeline.
Sourcepub fn remember_decision(
&mut self,
summary: impl Into<String>,
rationale: Option<String>,
tags: Vec<String>,
)
pub fn remember_decision( &mut self, summary: impl Into<String>, rationale: Option<String>, tags: Vec<String>, )
Add a decision to session working memory.
Sourcepub fn remember_blocker(
&mut self,
summary: impl Into<String>,
detail: Option<String>,
)
pub fn remember_blocker( &mut self, summary: impl Into<String>, detail: Option<String>, )
Add or refresh a blocker in session working memory.
Sourcepub fn resolve_blocker(&mut self, summary: &str)
pub fn resolve_blocker(&mut self, summary: &str)
Resolve an existing blocker in session working memory.
Sourcepub fn remember_resource(
&mut self,
kind: SessionMemoryResourceKind,
label: impl Into<String>,
value: impl Into<String>,
source: impl Into<String>,
)
pub fn remember_resource( &mut self, kind: SessionMemoryResourceKind, label: impl Into<String>, value: impl Into<String>, source: impl Into<String>, )
Track an explicit resource in session working memory.
Sourcepub fn relevant_working_memory_sections(
&self,
query: &str,
limit: usize,
) -> Vec<String>
pub fn relevant_working_memory_sections( &self, query: &str, limit: usize, ) -> Vec<String>
Return prompt-ready short-term memory sections relevant to the query.
Sourcepub fn promotion_candidates(
&self,
limit: usize,
) -> Vec<SessionMemoryPromotionCandidate>
pub fn promotion_candidates( &self, limit: usize, ) -> Vec<SessionMemoryPromotionCandidate>
Return high-value short-term memory candidates for durable promotion.
Sourcepub fn to_pipeline_messages(&self) -> Vec<Message>
pub fn to_pipeline_messages(&self) -> Vec<Message>
Convert to pipeline messages.
Trait Implementations§
Source§impl Clone for SessionState
impl Clone for SessionState
Source§fn clone(&self) -> SessionState
fn clone(&self) -> SessionState
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SessionState
impl Debug for SessionState
Source§impl Default for SessionState
impl Default for SessionState
Source§fn default() -> SessionState
fn default() -> SessionState
Source§impl<'de> Deserialize<'de> for SessionState
impl<'de> Deserialize<'de> for SessionState
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for SessionState
impl RefUnwindSafe for SessionState
impl Send for SessionState
impl Sync for SessionState
impl Unpin for SessionState
impl UnsafeUnpin for SessionState
impl UnwindSafe for SessionState
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].