pub struct Session {Show 27 fields
pub input: String,
pub output_lines: Vec<String>,
pub workflow_tx: UnboundedSender<TuiMessage>,
pub workflow_state: WorkflowState,
pub config_toml: Option<String>,
pub secrets: Option<HashMap<String, String>>,
pub build_info: Option<BuildInfo>,
pub resume_info: Option<ResumeInfo>,
pub backup_resume_info: Option<ResumeInfo>,
pub todo_lines: Vec<String>,
pub cancel_token: CancellationToken,
pub pending_command: Option<String>,
pub handoff_pending: bool,
pub pending_tool_lines: Vec<(String, usize, Option<String>)>,
pub current_context_tokens: usize,
pub auto_handoff: AutoHandoffConfig,
pub mcp_servers: Vec<McpServerInfo>,
pub should_quit: bool,
pub auto_scroll: bool,
pub agent_name: String,
pub token_store: Option<Arc<dyn TokenStore>>,
pub project_id: Option<String>,
pub project_name: Option<String>,
pub session_id: Option<String>,
pub session_name: Option<String>,
pub home_dir: Option<PathBuf>,
pub workflow_permit: Option<OwnedSemaphorePermit>,
}Expand description
Core session state for the Trustee agent.
Holds all state that is independent of the presentation layer (TUI, API, Web). Frontend crates compose this struct and add their own UI-specific fields.
Fields§
§input: StringInput buffer for user commands
output_lines: Vec<String>Output log lines
workflow_tx: UnboundedSender<TuiMessage>Sender for messages from async workflows (clone and pass to workflow runners)
workflow_state: WorkflowStateCurrent workflow lifecycle state
config_toml: Option<String>Configuration TOML for ABK workflows
secrets: Option<HashMap<String, String>>Secrets for ABK workflows
build_info: Option<BuildInfo>Build info for ABK workflows
resume_info: Option<ResumeInfo>Resume info from the last completed task for session continuity
backup_resume_info: Option<ResumeInfo>Saved resume_info before execute_command consumes it; restored if task is cancelled before producing a real checkpoint (mistake-ENTER recovery).
todo_lines: Vec<String>Latest todo list from LLM todowrite tool
cancel_token: CancellationTokenCancellation token for aborting the current workflow
pending_command: Option<String>Command buffered by user during cancellation wind-down.
handoff_pending: boolWhether a session handoff (Ctrl+H) should fire once the current workflow cancels.
pending_tool_lines: Vec<(String, usize, Option<String>)>In-flight spinner entries: (tool_name, output_lines_index, hint).
current_context_tokens: usizeCurrent context token count (updated from ApiCallStarted events).
auto_handoff: AutoHandoffConfigAuto-handoff configuration parsed from [tui.auto_handoff].
mcp_servers: Vec<McpServerInfo>MCP server statuses received from agent init
should_quit: boolWhether the session should quit
auto_scroll: boolWhether auto-scroll is enabled (follows new output)
agent_name: StringAgent name for checkpoint/token paths (replaces ABK_AGENT_NAME env var). Defaults to “trustee”. Set from config at startup.
token_store: Option<Arc<dyn TokenStore>>Per-session token store (None = FileTokenStore fallback). When set, MCP credential flows use this instead of file-based storage.
project_id: Option<String>Storage partition key (replaces path hash). None = hash(working_dir)
project_name: Option<String>Human-readable project name. None = directory name
session_id: Option<String>Storage directory name (replaces timestamp slug). None = auto-generate
session_name: Option<String>Human-readable session name. None = no description
home_dir: Option<PathBuf>Per-user home directory for checkpoint storage. None = default ~/.{agent_name}/ Set to ~/.trustee/users/{user_hash}/ for per-user isolation in web mode.
workflow_permit: Option<OwnedSemaphorePermit>Concurrency permit — held while a workflow is running. When the workflow completes (state → Idle), this is dropped, releasing the permit back to the global semaphore. None when no workflow is running or when concurrency limiting is disabled.
Implementations§
Source§impl Session
impl Session
Sourcepub fn new() -> (Self, UnboundedReceiver<TuiMessage>)
pub fn new() -> (Self, UnboundedReceiver<TuiMessage>)
Create a new Session with default state and a fresh message channel.
Returns (Session, Receiver) so the caller can own the receiver
without locking the session (prevents deadlock in async drain loops).
Sourcepub fn parse_auto_handoff_config(&mut self)
pub fn parse_auto_handoff_config(&mut self)
Parse auto-handoff configuration from the stored config TOML.
Sourcepub fn handle_workflow_message(&mut self, msg: TuiMessage)
pub fn handle_workflow_message(&mut self, msg: TuiMessage)
Handle messages from async workflows.
This processes all workflow lifecycle events, output updates, and state transitions.
Returns true if the caller should check for pending commands/handoffs after.
Sourcepub fn execute_command(&mut self)
pub fn execute_command(&mut self)
Execute the current command in the input buffer.
Spawns an async ABK workflow task, clears the input buffer, and sets workflow_state to Running.
Sourcepub fn trigger_handoff(&mut self, hint: String)
pub fn trigger_handoff(&mut self, hint: String)
Trigger a session handoff.
Runs a single LLM call using the current session’s resume_info to generate
a briefing. On completion, sends TuiMessage::HandoffReady(briefing).