Skip to main content

DispatchPipeline

Struct DispatchPipeline 

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

The dispatch pipeline processes tool calls through governance, rate limiting, circuit breaking, and karma tracking before and after the actual tool execution.

Implementations§

Source§

impl DispatchPipeline

Source

pub fn new( rate_limiter: Arc<RateLimiter>, circuit_breakers: Arc<CircuitBreakerRegistry>, dharma_gate: Arc<DharmaGate>, karma_ledger: Option<Arc<KarmaLedger>>, ) -> Self

Create a new dispatch pipeline with the given components.

Not const: the default-armed firebreak is built here (pattern sets compile once per pipeline).

Source

pub fn timeout_from_env() -> Option<Duration>

Parse the dispatch timeout from WM_DISPATCH_TIMEOUT_MS.

Unset → DEFAULT_DISPATCH_TIMEOUT; 0 → disabled; other values are milliseconds. Invalid values fall back to the default.

Source

pub const fn with_dispatch_timeout(self, timeout: Option<Duration>) -> Self

Bound tool execution with a timeout (None disables the bound).

Source

pub fn with_defaults() -> Self

Create a pipeline with default components and no karma ledger.

Source

pub const fn with_capability_mode(self, mode: CapabilityGateMode) -> Self

Override the capability-gate mode (tests, deliberate strict runs).

Source

pub fn with_gana_registry(self, registry: Arc<Mutex<GanaRegistry>>) -> Self

Attach a GanaRegistry for co-usage tracking (Phase 6).

Source

pub fn with_resource_rules(self, rules: Arc<ResourceRules>) -> Self

Attach ResourceRules (Yama) — evaluated on every dispatch.

Source

pub fn with_write_gate(self, gate: Arc<WriteGate>) -> Self

Attach the write gate (V8 S5 stage 2c) — runs between resource rules and the rate limiter: junk filter, dedup short-circuit, and class plausibility ceilings/floors on the memory-create path.

Source

pub fn with_write_audit(self, journal: Arc<WriteAuditJournal>) -> Self

Attach a write-audit journal — every dispatch appends a journal entry recording declared vs actual store mutations.

Source

pub fn with_flight_recorder(self, recorder: Option<Arc<FlightRecorder>>) -> Self

Attach a flight recorder (Q35b replay capture). OFF by default. Capture point matches args_digest (post-gate, pre-call) so the sidecar is always digest-aligned with the journal.

Source

pub fn with_secret_scan_option(self, scanner: Option<SharedSampler>) -> Self

Replace the default secret scanner — None disables output sampling entirely for this pipeline (tests, special constructions).

Source

pub fn secret_scan(&self) -> Option<&SecretSampler>

The secret scanner attached to this pipeline (if any).

Source

pub fn with_sandbox_executor( self, executor: Option<Arc<ScopedSandboxExecutor>>, ) -> Self

Attach the scoped-thread sandbox executor (P-SANDBOX-3). When attached, tools declaring Sandbox::StoreScoped run on a confined fresh thread; everything else keeps the ambient path.

Source

pub fn sandbox_executor(&self) -> Option<&ScopedSandboxExecutor>

The sandbox executor attached to this pipeline (if any).

Source

pub fn with_subprocess_sandbox( self, sandbox: Option<Arc<SubprocessSandbox>>, ) -> Self

Attach the subprocess spawn sandbox registry (B2). When attached, Sandbox::Subprocess tools receive a runner-backed spawn policy in their context; anything short of an active runner loud-degrades.

Source

pub fn subprocess_sandbox(&self) -> Option<&SubprocessSandbox>

The subprocess spawn sandbox registry attached to this pipeline.

Source

pub fn with_firebreak(self, firebreak: Arc<Firebreak>) -> Self

Attach a firebreak with an explicit arm state (tests, special constructions) — see Self::with_firebreak_option.

Source

pub fn with_firebreak_option(self, firebreak: Option<Arc<Firebreak>>) -> Self

Replace the default-armed firebreak — None disarms it entirely for this pipeline (the WM_FIREBREAK=0 env kill-switch operates inside wm_governance::Firebreak::promoted and is the normal off switch; this builder is for tests and special constructions).

Source

pub fn firebreak(&self) -> Option<&Firebreak>

The firebreak attached to this pipeline (if any).

Source

pub fn with_write_audit_option( self, journal: Option<Arc<WriteAuditJournal>>, ) -> Self

Optional variant of Self::with_write_audit — read-only servers pass None because journaling is itself an LMDB write.

Source

pub fn resource_rules(&self) -> Option<&ResourceRules>

The resource rules attached to this pipeline (if any).

Source

pub fn write_audit(&self) -> Option<&WriteAuditJournal>

The write-audit journal attached to this pipeline (if any).

Source

pub async fn dispatch( &self, tool: &dyn Tool, ctx: &mut Context, args: Args, ) -> Result<Output>

Dispatch a tool call through the full pipeline.

Source

pub async fn dispatch_by_name( &self, registry: &ToolRegistry, name: &str, ctx: &mut Context, args: Args, ) -> Result<Output>

Dispatch a tool by name, looking it up in a registry.

Convenience method that combines registry lookup with pipeline dispatch. Returns NotFound if the tool isn’t registered.

Source

pub fn rate_limiter(&self) -> &RateLimiter

Access the rate limiter.

Source

pub fn circuit_breakers(&self) -> &CircuitBreakerRegistry

Access the circuit breaker registry.

Source

pub fn dharma_gate(&self) -> &DharmaGate

Access the Dharma gate.

Source

pub fn karma_ledger(&self) -> Option<&KarmaLedger>

Access the karma ledger (if configured).

Trait Implementations§

Source§

impl Default for DispatchPipeline

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

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

Source§

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

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

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

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

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

Converts &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)

Converts &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> DowncastSend for T
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

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

Source§

fn into_any_sync(self: Box<T>) -> Box<dyn Any + Send + Sync>

Converts Box<Trait> (where Trait: DowncastSync) to Box<dyn Any + Send + Sync>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

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

Converts Arc<Trait> (where Trait: DowncastSync) to Arc<Any>, which can then be 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> Fruit for T
where T: Send + Downcast,

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

Source§

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

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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

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