pub struct TransactionToolDispatcher { /* private fields */ }Expand description
Transaction-owned dispatcher: allowlist, validation, capacity, handler, output check.
Implementations§
Source§impl TransactionToolDispatcher
impl TransactionToolDispatcher
Sourcepub fn new(
transaction_id: TransactionId,
session_key: SessionKey,
tools: ResolvedToolSet,
shared_capacity: Arc<SharedToolCapacity>,
max_concurrent_tools: usize,
max_queued_tools: usize,
) -> Arc<Self> ⓘ
pub fn new( transaction_id: TransactionId, session_key: SessionKey, tools: ResolvedToolSet, shared_capacity: Arc<SharedToolCapacity>, max_concurrent_tools: usize, max_queued_tools: usize, ) -> Arc<Self> ⓘ
Build a dispatcher for one admitted transaction (local spill for unit tests).
Sourcepub fn with_limits(
transaction_id: TransactionId,
session_key: SessionKey,
tools: ResolvedToolSet,
shared_capacity: Arc<SharedToolCapacity>,
limits: DispatcherLimits,
) -> Arc<Self> ⓘ
pub fn with_limits( transaction_id: TransactionId, session_key: SessionKey, tools: ResolvedToolSet, shared_capacity: Arc<SharedToolCapacity>, limits: DispatcherLimits, ) -> Arc<Self> ⓘ
Build with explicit concurrency and payload/output caps (D-015).
Sourcepub fn with_runtime_spill(
transaction_id: TransactionId,
session_key: SessionKey,
tools: ResolvedToolSet,
shared_capacity: Arc<SharedToolCapacity>,
tool_spill: Arc<OrphanToolPermitSet>,
limits: DispatcherLimits,
) -> Arc<Self> ⓘ
pub fn with_runtime_spill( transaction_id: TransactionId, session_key: SessionKey, tools: ResolvedToolSet, shared_capacity: Arc<SharedToolCapacity>, tool_spill: Arc<OrphanToolPermitSet>, limits: DispatcherLimits, ) -> Arc<Self> ⓘ
Build with a runtime-shared tool spill (production RuntimeOwner path).
Sourcepub fn with_runtime_resources(
transaction_id: TransactionId,
session_key: SessionKey,
tools: ResolvedToolSet,
shared_capacity: Arc<SharedToolCapacity>,
tool_spill: Arc<OrphanToolPermitSet>,
owned_processes: Arc<AtomicU32>,
process_registry: Arc<OwnedProcessRegistry>,
limits: DispatcherLimits,
) -> Arc<Self> ⓘ
pub fn with_runtime_resources( transaction_id: TransactionId, session_key: SessionKey, tools: ResolvedToolSet, shared_capacity: Arc<SharedToolCapacity>, tool_spill: Arc<OrphanToolPermitSet>, owned_processes: Arc<AtomicU32>, process_registry: Arc<OwnedProcessRegistry>, limits: DispatcherLimits, ) -> Arc<Self> ⓘ
Build with runtime-shared spill, owned-process counter, and process registry.
Sourcepub fn limits_from_transaction(limits: &TransactionLimits) -> DispatcherLimits
pub fn limits_from_transaction(limits: &TransactionLimits) -> DispatcherLimits
Map transaction-wide tool caps from TransactionLimits.
Sourcepub fn tools(&self) -> &ResolvedToolSet
pub fn tools(&self) -> &ResolvedToolSet
Resolved tool set (encoder / MCP projection).
Sourcepub fn transaction_id(&self) -> TransactionId
pub fn transaction_id(&self) -> TransactionId
Transaction identity.
Sourcepub fn session_key(&self) -> SessionKey
pub fn session_key(&self) -> SessionKey
Session key (clone under lock).
Sourcepub fn rebind_session(&self, session_key: SessionKey)
pub fn rebind_session(&self, session_key: SessionKey)
Replace provisional create key with the claimed authoritative key (D-026).
Sourcepub fn vault_pending_permits(&self) -> usize
pub fn vault_pending_permits(&self) -> usize
Permits held by unfinished/orphaned tool workers (§22.4 observability).
Sourcepub fn tool_spill(&self) -> &Arc<OrphanToolPermitSet> ⓘ
pub fn tool_spill(&self) -> &Arc<OrphanToolPermitSet> ⓘ
Runtime-scoped spill shared with the supervisor (when wired).
Sourcepub fn active_tools(&self) -> usize
pub fn active_tools(&self) -> usize
Active tool executions in this transaction (bounded concurrency observation).
Sourcepub fn queued_tools(&self) -> usize
pub fn queued_tools(&self) -> usize
Queued tool starts waiting for concurrency (bounded queue observation).
Sourcepub async fn dispatch(
self: &Arc<Self>,
request: DispatchRequest,
) -> DispatchOutcome
pub async fn dispatch( self: &Arc<Self>, request: DispatchRequest, ) -> DispatchOutcome
Dispatch one call end-to-end.
Sourcepub async fn dispatch_with_cancel(
self: &Arc<Self>,
request: DispatchRequest,
cancel: Option<Arc<StickyCancel>>,
) -> DispatchOutcome
pub async fn dispatch_with_cancel( self: &Arc<Self>, request: DispatchRequest, cancel: Option<Arc<StickyCancel>>, ) -> DispatchOutcome
Dispatch with an optional external cancel signal (D-028).
When cancel is notified, the dispatcher runs the same termination path as
an execution deadline so the worker is cancel/kill/joined instead of detached.