pub struct CommandContext<'a> { /* private fields */ }Expand description
Context provided to commands during execution.
Provides controlled access to app functionality through methods rather than exposing internal state directly.
§Extension Data
Agents can provide custom extension data that commands can access:
// In agent setup:
agent.set_command_extension(MyContext { api_key: "..." });
// In command execution:
fn execute(&self, args: &str, ctx: &mut CommandContext) -> CommandResult {
let my_ctx = ctx.extension::<MyContext>().expect("MyContext required");
// use my_ctx.api_key
}Implementations§
Source§impl<'a> CommandContext<'a>
impl<'a> CommandContext<'a>
Sourcepub fn session_id(&self) -> i64
pub fn session_id(&self) -> i64
Get the current session ID.
Sourcepub fn agent_name(&self) -> &str
pub fn agent_name(&self) -> &str
Get the agent name.
Sourcepub fn commands(&self) -> &[Box<dyn SlashCommand>]
pub fn commands(&self) -> &[Box<dyn SlashCommand>]
Get all registered commands (useful for /help).
Sourcepub fn show_message(&mut self, msg: impl Into<String>)
pub fn show_message(&mut self, msg: impl Into<String>)
Display a system message in the conversation.
Sourcepub fn clear_conversation(&mut self)
pub fn clear_conversation(&mut self)
Request to clear the conversation.
This is deferred until after the command returns.
Sourcepub fn compact_conversation(&mut self)
pub fn compact_conversation(&mut self)
Request to compact the conversation history.
This is deferred until after the command returns.
Sourcepub fn open_theme_picker(&mut self)
pub fn open_theme_picker(&mut self)
Request to open the theme picker.
This is deferred until after the command returns.
Sourcepub fn open_session_picker(&mut self)
pub fn open_session_picker(&mut self)
Request to open the session picker.
This is deferred until after the command returns.
Sourcepub fn request_quit(&mut self)
pub fn request_quit(&mut self)
Request to quit the application.
This is deferred until after the command returns.
Sourcepub fn create_new_session(&mut self)
pub fn create_new_session(&mut self)
Request to create a new session.
This is deferred until after the command returns.
Sourcepub fn send_to_controller(&self, cmd: ControlCmd)
pub fn send_to_controller(&self, cmd: ControlCmd)
Send a control command to the controller.
This allows commands to interact with the LLM controller, for example to create a new session.
Sourcepub fn extension<T: 'static>(&self) -> Option<&T>
pub fn extension<T: 'static>(&self) -> Option<&T>
Get agent-specific extension data.
Returns None if no extension was provided or if the type doesn’t match.
§Example
struct MyContext { api_key: String }
fn execute(&self, args: &str, ctx: &mut CommandContext) -> CommandResult {
if let Some(my_ctx) = ctx.extension::<MyContext>() {
// Use my_ctx.api_key
}
}Auto Trait Implementations§
impl<'a> Freeze for CommandContext<'a>
impl<'a> !RefUnwindSafe for CommandContext<'a>
impl<'a> !Send for CommandContext<'a>
impl<'a> !Sync for CommandContext<'a>
impl<'a> Unpin for CommandContext<'a>
impl<'a> !UnwindSafe for CommandContext<'a>
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