Skip to main content

ExtensionProviderHooks

Struct ExtensionProviderHooks 

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

A ProviderHooks that dispatches to the registered extension handlers. Keeps the cdylib mappings alive via the keepalive (the handler fn pointers live inside the plugins).

Implementations§

Source§

impl ExtensionProviderHooks

Source

pub fn from_session(session: &ExtensionSession) -> Option<Self>

Build hooks over a loaded extension session’s registry snapshot. Returns None when nothing needs this bridge (so a session without provider or prompt hooks runs the plain no-op path).

Two independent reasons to install it, and both must be checked:

  • Provider-hook tags — a plugin observing request/response. Includes BeforeAgentStart, which is emitted from this bridge (see Self::before_request) because the harness never emits a prompt message event.
  • before_agent_start transformers — a plugin that replaces the system prompt. This is a separate slot, not an event subscription, so a plugin that only transforms the prompt registers no handlers at all; keying this check on the tags alone would skip the bridge and silently ignore its transform.

Trait Implementations§

Source§

impl ProviderHooks for ExtensionProviderHooks

Source§

fn transform_context( &self, _model: &Model, ctx: &Context, ) -> Option<ContextPatch>

pi’s transform_context / before_agent_start-returns-systemPrompt: let a plugin replace the prompt the request carries.

Computed once per prompt and cached, so every provider call of a run (the tool loop) sees the same prompt — see Self::last_forced_prompt. Returns None when no plugin registered a transformer, when they all declined, or when the registry is stale, all of which mean “leave the prompt alone”.

Source§

fn before_request( &self, model: &Model, ctx: &Context, opts: &SimpleStreamOptions, ) -> Option<SimpleStreamOptionsPatch>

Fan the planned request out to BeforeProviderRequest + BeforeProviderHeaders subscribers. Returns None for the stream options — observer-only (the event handler ABI has no result channel); a plugin’s influence on the prompt travels through Self::transform_context instead.

Source§

fn after_response(&self, _model: &Model, message: &AssistantMessage)

Fan the terminal assistant message out to AfterProviderResponse subscribers.

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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