use std::future::Future;
use std::pin::Pin;
use crate::CommandError;
pub trait SessionControlAccess {
fn session_recap<'a>(
&'a mut self,
) -> Pin<Box<dyn Future<Output = Result<String, CommandError>> + Send + 'a>>;
fn compact_context<'a>(
&'a mut self,
) -> Pin<Box<dyn Future<Output = Result<String, CommandError>> + Send + 'a>>;
fn reset_conversation<'a>(
&'a mut self,
keep_plan: bool,
no_digest: bool,
) -> Pin<Box<dyn Future<Output = Result<String, CommandError>> + Send + 'a>>;
fn cache_stats(&self) -> String;
fn session_status<'a>(
&'a mut self,
) -> Pin<Box<dyn Future<Output = Result<String, CommandError>> + Send + 'a>>;
fn guardrail_status(&self) -> String;
fn focus_status(&self) -> String;
fn sidequest_status(&self) -> String;
fn load_image<'a>(
&'a mut self,
path: &'a str,
) -> Pin<Box<dyn Future<Output = Result<String, CommandError>> + Send + 'a>>;
fn handle_undo<'a>(
&'a mut self,
args: &'a str,
) -> Pin<Box<dyn Future<Output = Result<String, CommandError>> + Send + 'a>> {
let _ = args;
Box::pin(async move { Ok("Undo is not supported in this context.".to_owned()) })
}
fn handle_redo<'a>(
&'a mut self,
args: &'a str,
) -> Pin<Box<dyn Future<Output = Result<String, CommandError>> + Send + 'a>> {
let _ = args;
Box::pin(async move { Ok("Redo is not supported in this context.".to_owned()) })
}
fn handle_conv<'a>(
&'a mut self,
args: &'a str,
) -> Pin<Box<dyn Future<Output = Result<String, CommandError>> + Send + 'a>> {
let _ = args;
Box::pin(async move {
Ok("Conversation-session persistence is not enabled in this context.".to_owned())
})
}
}