pub struct SubprocessToolExecutor { /* private fields */ }Expand description
Tool executor that runs tools as subprocesses via stdin/stdout JSON-RPC.
Implementations§
Source§impl SubprocessToolExecutor
impl SubprocessToolExecutor
pub fn new() -> Self
Sourcepub fn register(&mut self, name: &str, tool: SubprocessTool)
pub fn register(&mut self, name: &str, tool: SubprocessTool)
Register a subprocess tool.
Sourcepub fn with_fallback(self, fallback: Arc<dyn ToolExecutor>) -> Self
pub fn with_fallback(self, fallback: Arc<dyn ToolExecutor>) -> Self
Set a fallback executor for tools not registered as subprocesses.
Trait Implementations§
Source§impl Default for SubprocessToolExecutor
impl Default for SubprocessToolExecutor
Source§impl ToolExecutor for SubprocessToolExecutor
impl ToolExecutor for SubprocessToolExecutor
fn execute<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
tool: &'life1 str,
params: &'life2 Value,
) -> Pin<Box<dyn Future<Output = Result<Value, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Source§fn execute_with_action<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
tool: &'life1 str,
params: &'life2 Value,
action_id: &'life3 str,
) -> Pin<Box<dyn Future<Output = Result<Value, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn execute_with_action<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
tool: &'life1 str,
params: &'life2 Value,
action_id: &'life3 str,
) -> Pin<Box<dyn Future<Output = Result<Value, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Variant that also carries the originating proposal
Action.id.
WS-based executors (car-server-core::WsToolExecutor) use it so
the daemon-initiated tools.execute request to the client
carries the same id the host’s process-wide handler is keyed on
— without this round-trip the host can’t disambiguate concurrent
callbacks for the same tool (Parslee-ai/car-releases#43
follow-up). In-process executors that don’t need it can keep the
default forward to [execute].Auto Trait Implementations§
impl !Freeze for SubprocessToolExecutor
impl !RefUnwindSafe for SubprocessToolExecutor
impl Send for SubprocessToolExecutor
impl Sync for SubprocessToolExecutor
impl Unpin for SubprocessToolExecutor
impl UnsafeUnpin for SubprocessToolExecutor
impl !UnwindSafe for SubprocessToolExecutor
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
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