Public declaration syntax from forge-rs/crates/forge-provider-session/src/session.rs Original source SHA-256: 507109decb20f63767993e720adfa674b1081f1dfa95df911529b717efd74f55 Function bodies and constant values are omitted. This is not the complete implementation. Source line 37 #[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)] pub struct SessionId(String); Source line 41 pub fn new() -> Self; Source line 46 pub fn from_string(id: impl Into) -> Self; Source line 51 pub fn as_str(&self) -> &str; Source line 81 #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)] #[serde(rename_all = "snake_case")] pub enum SessionState { /// Session has been created but not yet activated. Created, /// Session is active and accepting requests. Active, /// Session is temporarily paused (e.g., agent idle). Paused, /// Session is mid-swap to a different provider. Switching, /// Session has expired due to TTL or provider timeout. Expired, /// Session has been cleanly closed. Closed, } Source line 98 pub fn can_transition_to(&self, target: SessionState) -> bool; Source line 132 #[derive(Debug, Clone, Serialize, Deserialize)] pub struct SessionConfig { /// The agent that owns this session. pub agent_id: String, /// The initial provider to bind to. pub initial_provider_ref: String, /// Session TTL in seconds (overrides policy TTL if set). pub ttl_seconds: Option, /// Arbitrary metadata attached to the session. pub metadata: HashMap } Source line 163 #[derive(Debug, Clone, Serialize, Deserialize)] pub struct ProviderSession { } Source line 180 #[derive(Debug, Clone, Serialize, Deserialize)] pub struct ProviderSwapRecord { /// The provider that was replaced. pub from_provider: String, /// The provider that replaced it. pub to_provider: String, /// When the swap occurred. pub swapped_at: DateTime, /// Why the swap was initiated. pub reason: String } Source line 206 #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct SwapOutcome { /// The provider that was replaced. pub previous_provider: String, /// The new active provider. pub new_provider: String, /// Total number of swaps in this session's lifetime. pub swap_count: usize } Source line 217 pub fn new(config: SessionConfig) -> Self; Source line 240 pub fn id(&self) -> &SessionId; Source line 245 pub fn agent_id(&self) -> &str; Source line 250 pub fn provider_ref(&self) -> &str; Source line 255 pub fn state(&self) -> SessionState; Source line 260 pub fn created_at(&self) -> DateTime; Source line 265 pub fn last_active_at(&self) -> DateTime; Source line 270 pub fn expires_at(&self) -> Option>; Source line 275 pub fn total_requests(&self) -> u64; Source line 280 pub fn total_input_tokens(&self) -> u64; Source line 285 pub fn total_output_tokens(&self) -> u64; Source line 290 pub fn provider_history(&self) -> &[ProviderSwapRecord]; Source line 295 pub fn is_expired(&self) -> bool; Source line 309 pub fn transition_to(&mut self, target: SessionState) -> ProviderSessionResult<()>; Source line 331 pub fn activate(&mut self) -> ProviderSessionResult<()>; Source line 336 pub fn record_request(&mut self, input_tokens: u64, output_tokens: u64); Source line 356 pub fn swap_provider( &mut self, new_provider: impl Into, reason: impl Into, ) -> ProviderSessionResult; Source line 389 pub fn close(&mut self) -> ProviderSessionResult<()>; Source line 423 pub struct SessionManager { } Source line 430 pub fn new(engine: PolicyEngine) -> Self; Source line 438 pub fn engine(&self) -> &PolicyEngine; Source line 448 pub fn create_session(&mut self, config: SessionConfig) -> ProviderSessionResult; Source line 464 pub fn create_default_session( &mut self, agent_id: impl Into, ) -> ProviderSessionResult; Source line 491 pub fn create_routed_session( &mut self, agent_id: impl Into, task_mode: Option<&TaskMode>, domain: Option<&str>, ) -> ProviderSessionResult<(SessionId, PolicyDecision)>; Source line 514 pub fn get_session(&self, session_id: &str) -> Option<&ProviderSession>; Source line 519 pub fn get_session_mut(&mut self, session_id: &str) -> Option<&mut ProviderSession>; Source line 529 pub fn activate_session(&mut self, session_id: &str) -> ProviderSessionResult<()>; Source line 555 pub fn swap_provider( &mut self, session_id: &str, new_provider: &str, reason: &str, ) -> ProviderSessionResult; Source line 587 pub fn close_session(&mut self, session_id: &str) -> ProviderSessionResult<()>; Source line 597 pub fn active_session_ids(&self) -> Vec<&str>; Source line 606 pub fn session_count(&self) -> usize; Source line 611 pub fn gc_sessions(&mut self) -> usize;