pub struct ShellAliasTool;Expand description
A shell tool alias that transparently delegates to ctx_shell’s compression
logic. Registered for all MCP clients (see server::registry); it exists for
clients (like Codex Desktop) whose agent model prefers a tool named shell /
bash over ctx_shell and would otherwise fall back to a native, uncompressed
shell tool.
This solves the “Codex Desktop doesn’t compress” issue (#337): the Desktop app
loads the MCP server but the agent ignores ctx_shell and uses its native
Bash tool instead. By providing a shell tool with a familiar interface,
the model naturally routes commands through our compression pipeline.
Trait Implementations§
Source§impl McpTool for ShellAliasTool
impl McpTool for ShellAliasTool
Source§fn tool_def(&self) -> Tool
fn tool_def(&self) -> Tool
MCP tool definition including JSON schema. This replaces the
corresponding entry in
granular_tool_defs().Source§fn handle(
&self,
args: &Map<String, Value>,
ctx: &ToolContext,
) -> Result<ToolOutput, ErrorData>
fn handle( &self, args: &Map<String, Value>, ctx: &ToolContext, ) -> Result<ToolOutput, ErrorData>
Execute the tool. Args are the raw JSON-RPC arguments.
ctx provides access to resolved paths and project state.Auto Trait Implementations§
impl Freeze for ShellAliasTool
impl RefUnwindSafe for ShellAliasTool
impl Send for ShellAliasTool
impl Sync for ShellAliasTool
impl Unpin for ShellAliasTool
impl UnsafeUnpin for ShellAliasTool
impl UnwindSafe for ShellAliasTool
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
Mutably borrows from an owned value. Read more
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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>
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 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>
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