Skip to main content

Shell

Struct Shell 

Source
pub struct Shell {
    pub workspace: Arc<dyn Workspace>,
    pub launcher: Launcher,
    pub live: Option<Live>,
    pub spill: Option<Spill>,
    pub cut: Option<OutputLimit>,
    pub confine: bool,
    pub max_timeout: u64,
    pub quiet: Duration,
}
Expand description

Runs a command with sh -c in its own session and process group, in its Workspace, as its Launcher starts processes. Its stdout and stderr come back interleaved line by line, as each line ends, without terminal escape sequences such as colours; output past the OutputLimit keeps its first and last lines and the first and last errors and failures from between. Publishes how the command ended (ExitStatus) beside its output, and how the output was cut (OutputCut) when it was, and reports the output as it comes to its Live, if it has one.

Fields§

§workspace: Arc<dyn Workspace>

Where the command runs.

§launcher: Launcher

How the command is started: a wrapper, a directory, its variables.

§live: Option<Live>

Where each piece of output is reported as it comes, before the command ends.

§spill: Option<Spill>

Where output that is cut is kept whole, named in the cut output.

§cut: Option<OutputLimit>

How much of the output the result keeps; None keeps all of it, up to the 10 MB the command is killed at, for a host that cuts output itself.

§confine: bool

Whether a cwd that resolves outside the launcher’s directory is refused. What the command itself does is not confined: it may still cd anywhere.

§max_timeout: u64

The most seconds a call may ask for in timeout_secs; a longer timeout is cut to it.

§quiet: Duration

How long a call with the default timeout may print nothing before it is stopped, such as a loop that never ends; one that names its timeout_secs may be quiet as long as that.

Implementations§

Source§

impl Shell

Source

pub async fn run(&self, args: ShellArgs) -> Result<ShellRun, ToolExecutionError>

Runs args as the tool does, waiting on a thread of its own, and returns the output and how the command ended. Dropping the future stops the command’s process group at once: SIGTERM, then SIGKILL after STOP_GRACE.

Trait Implementations§

Source§

impl Clone for Shell

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Shell

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Shell

Source§

fn default() -> Self

Started on this machine as this process starts it, nothing spilled or reported live, output cut as OutputLimit::default cuts it, timeouts of at most ten minutes, stopped after a minute of printing nothing unless the call names its timeout.

Source§

impl Tool for Shell

Source§

const NAME: &'static str = "shell"

Unique registration and provider-facing name.
Source§

type Args = ShellArgs

Typed JSON arguments.
Source§

type Output = String

Output convertible into Rig’s canonical model presentation. Read more
Source§

type Error = ToolExecutionError

Typed error returned by direct calls to this tool. Read more
Source§

fn description(&self) -> String

Model-facing description.
Source§

fn parameters(&self) -> Value

JSON Schema for arguments.
Source§

fn annotations(&self) -> ToolAnnotations

What calling the tool does to the world, for the host’s policies (approval, plan mode, which calls run side by side). Nothing is stated by default, which reads as the protocol’s defaults (ToolAnnotations).
Source§

async fn call( &self, context: &mut ToolContext, args: ShellArgs, ) -> Result<String, ToolExecutionError>

Execute the tool.
Source§

fn footprint(&self, args: &Self::Args) -> Touches

What a call with args may read and change, so a host runs the calls of one reply that touch different things side by side. The default reads it from the annotations: a read-only tool reads anything, any other writes anything.
Source§

fn map_error(&self, error: Self::Error) -> ToolExecutionError

Normalize a typed author-facing error for runtime policy and telemetry. Read more

Auto Trait Implementations§

§

impl !RefUnwindSafe for Shell

§

impl !UnwindSafe for Shell

§

impl Freeze for Shell

§

impl Send for Shell

§

impl Sync for Shell

§

impl Unpin for Shell

§

impl UnsafeUnpin for Shell

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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> WasmCompatSend for T
where T: Send,

Source§

impl<T> WasmCompatSync for T
where T: Sync,

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