Skip to main content

ProcessExtension

Struct ProcessExtension 

Source
pub struct ProcessExtension { /* private fields */ }
Expand description

A running extension process communicating via JSON-RPC 2.0 over stdio.

Implementations§

Source§

impl ProcessExtension

Source

pub async fn spawn( id: &str, command: &str, args: &[String], ) -> Result<Self, String>

Source

pub async fn spawn_with_cwd( id: &str, command: &str, args: &[String], cwd: Option<PathBuf>, ) -> Result<Self, String>

Spawn command with args and optional working directory.

Child stderr is captured and forwarded to debug tracing with the extension id so extension authors can inspect diagnostics without corrupting stdout.

Source

pub fn with_restart_policy(self, policy: RestartPolicy) -> Self

Override the restart policy. Intended for tests.

Source

pub fn restart_count(&self) -> usize

Source

pub async fn set_permissions(&self, perms: PermissionSet)

Public for tests: set the permission set used by inbound RPC handlers (e.g. memory.append). Called by the manager after manifest validation.

Source

pub async fn initialize( &self, plugin_root: Option<PathBuf>, config: Value, ) -> Result<InitializeCapabilitiesResult, String>

Trait Implementations§

Source§

impl ExtensionHandler for ProcessExtension

Source§

fn id(&self) -> &str

Unique identifier for this extension.
Source§

fn call_tool<'life0, 'life1, 'async_trait>( &'life0 self, name: &'life1 str, input: Value, ) -> Pin<Box<dyn Future<Output = Result<Value, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Call an extension-provided tool.
Source§

fn provider_complete<'life0, 'async_trait>( &'life0 self, params: ProviderCompleteParams, ) -> Pin<Box<dyn Future<Output = Result<ProviderCompleteResult, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Complete a chat request through an extension-provided model provider.
Source§

fn provider_stream<'life0, 'async_trait>( &'life0 self, params: ProviderCompleteParams, sink: UnboundedSender<ProviderStreamEvent>, ) -> Pin<Box<dyn Future<Output = Result<ProviderCompleteResult, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Stream a chat request through an extension-provided model provider. Read more
Source§

fn invoke_command<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, command: &'life1 str, args: Vec<String>, request_id: &'life2 str, sink: UnboundedSender<InvokeCommandEvent>, ) -> Pin<Box<dyn Future<Output = Result<Value, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Invoke a plugin-registered interactive slash command. The handler must forward command.output notifications matching request_id and any task.* notifications to sink. Returns the final response value.
Source§

fn handle<'life0, 'life1, 'async_trait>( &'life0 self, event: &'life1 HookEvent, ) -> Pin<Box<dyn Future<Output = HookResult> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Handle a hook event. Returns the handler’s decision.
Source§

fn get_info<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<PluginInfo, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Fetch optional plugin capability/build/model information.
Source§

fn sidecar_spawn_args<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<SidecarSpawnArgs, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Ask the plugin to supply sidecar spawn arguments. Used by the modality-neutral sidecar bootstrap path (see crate::sidecar::spawn); plugins that don’t host a sidecar should leave the default Err in place. Core treats the returned [SidecarSpawnArgs::args] as opaque.
Source§

fn settings_editor_open<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, category: &'life1 str, field: &'life2 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,

Open a plugin-owned custom settings editor and return its initial render payload.
Source§

fn settings_editor_key<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, category: &'life1 str, field: &'life2 str, key: &'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,

Forward a keypress to the active plugin-owned custom settings editor.
Source§

fn settings_editor_commit<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, category: &'life1 str, field: &'life2 str, value: 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,

Ask the plugin to commit a custom editor value selected by the UI.
Source§

fn shutdown<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Gracefully shut down the extension.
Source§

fn restart_count<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = usize> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Number of transport restarts observed by this handler.
Source§

fn health<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ExtensionHealth> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Current health state of this handler.

Auto Trait Implementations§

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> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
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> Same for T

Source§

type Output = T

Should always be Self
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,