CommandContext

Struct CommandContext 

Source
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>

Source

pub fn session_id(&self) -> i64

Get the current session ID.

Source

pub fn agent_name(&self) -> &str

Get the agent name.

Source

pub fn version(&self) -> &str

Get the agent version.

Source

pub fn commands(&self) -> &[Box<dyn SlashCommand>]

Get all registered commands (useful for /help).

Source

pub fn show_message(&mut self, msg: impl Into<String>)

Display a system message in the conversation.

Source

pub fn clear_conversation(&mut self)

Request to clear the conversation.

This is deferred until after the command returns.

Source

pub fn compact_conversation(&mut self)

Request to compact the conversation history.

This is deferred until after the command returns.

Source

pub fn open_theme_picker(&mut self)

Request to open the theme picker.

This is deferred until after the command returns.

Source

pub fn open_session_picker(&mut self)

Request to open the session picker.

This is deferred until after the command returns.

Source

pub fn request_quit(&mut self)

Request to quit the application.

This is deferred until after the command returns.

Source

pub fn create_new_session(&mut self)

Request to create a new session.

This is deferred until after the command returns.

Source

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.

Source

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more