pub struct CapabilityScope<K: ScopeKind> { /* private fields */ }Expand description
Typed immutable catalog and monotonic governance scope.
The value is deliberately not Clone: its owner must close it explicitly.
Borrowed CapabilityLease values carry the marker type and cannot outlive
this owner. Dropping the owner synchronously cancels and aborts supervised
tasks; it never starts asynchronous cleanup.
Implementations§
Source§impl CapabilityScope<Session>
impl CapabilityScope<Session>
pub fn new_session( local_id: impl Into<String>, set: Arc<CapabilitySet>, ceiling: CapabilityCeiling, ) -> Result<Self, CapabilityScopeError>
pub fn new_session_with_close_policy( local_id: impl Into<String>, set: Arc<CapabilitySet>, ceiling: CapabilityCeiling, close_policy: ScopeClosePolicy, ) -> Result<Self, CapabilityScopeError>
Sourcepub fn new_session_with_cancellation(
local_id: impl Into<String>,
set: Arc<CapabilitySet>,
ceiling: CapabilityCeiling,
cancellation: CancellationToken,
) -> Result<Self, CapabilityScopeError>
pub fn new_session_with_cancellation( local_id: impl Into<String>, set: Arc<CapabilitySet>, ceiling: CapabilityCeiling, cancellation: CancellationToken, ) -> Result<Self, CapabilityScopeError>
Create a Session scope rooted in a host-owned cancellation tree.
Every admitted descendant derives its token from this exact root, so a Run cannot remain active after its host invocation or Session lifetime has been cancelled.
pub fn new_session_with_close_policy_and_cancellation( local_id: impl Into<String>, set: Arc<CapabilitySet>, ceiling: CapabilityCeiling, close_policy: ScopeClosePolicy, cancellation: CancellationToken, ) -> Result<Self, CapabilityScopeError>
Sourcepub fn admit_run(
&self,
local_id: impl Into<String>,
ceiling: CapabilityCeiling,
) -> Result<CapabilityScope<Run>, CapabilityScopeError>
pub fn admit_run( &self, local_id: impl Into<String>, ceiling: CapabilityCeiling, ) -> Result<CapabilityScope<Run>, CapabilityScopeError>
Admit a Run for a catalog without an upstream A3S Use cursor.
Sourcepub fn admit_use_run<L>(
&self,
local_id: impl Into<String>,
ceiling: CapabilityCeiling,
lease: L,
) -> Result<CapabilityScope<Run>, CapabilityScopeError>where
L: RetainedUseGeneration,
pub fn admit_use_run<L>(
&self,
local_id: impl Into<String>,
ceiling: CapabilityCeiling,
lease: L,
) -> Result<CapabilityScope<Run>, CapabilityScopeError>where
L: RetainedUseGeneration,
Admit a Run while retaining the exact, non-clone A3S Use generation lease for the complete Run lifetime.
Source§impl CapabilityScope<Run>
impl CapabilityScope<Run>
pub fn turn( &self, local_id: impl Into<String>, ceiling: CapabilityCeiling, ) -> Result<CapabilityScope<Turn>, CapabilityScopeError>
pub fn subtask( &self, local_id: impl Into<String>, ceiling: CapabilityCeiling, ) -> Result<CapabilityScope<Subtask>, CapabilityScopeError>
Source§impl CapabilityScope<Turn>
impl CapabilityScope<Turn>
pub fn subtask( &self, local_id: impl Into<String>, ceiling: CapabilityCeiling, ) -> Result<CapabilityScope<Subtask>, CapabilityScopeError>
Source§impl CapabilityScope<Subtask>
impl CapabilityScope<Subtask>
Sourcepub fn turn(
&self,
local_id: impl Into<String>,
ceiling: CapabilityCeiling,
) -> Result<CapabilityScope<Turn>, CapabilityScopeError>
pub fn turn( &self, local_id: impl Into<String>, ceiling: CapabilityCeiling, ) -> Result<CapabilityScope<Turn>, CapabilityScopeError>
Start one model/tool Turn inside a delegated execution scope.
This transition makes the hierarchy recursively composable: a child Agent can own Turns, whose tool calls can in turn create Subtasks.
pub fn subtask( &self, local_id: impl Into<String>, ceiling: CapabilityCeiling, ) -> Result<CapabilityScope<Subtask>, CapabilityScopeError>
Source§impl<K: ScopeKind> CapabilityScope<K>
impl<K: ScopeKind> CapabilityScope<K>
pub fn id(&self) -> &CapabilityScopeId
pub const fn kind(&self) -> CapabilityScopeKind
pub fn parent_id(&self) -> Option<&CapabilityScopeId>
pub fn catalog_digest(&self) -> &Sha256Digest
pub fn ceiling(&self) -> &CapabilityCeiling
pub fn use_generation(&self) -> Option<&UseCapabilityGeneration>
pub fn is_active(&self) -> bool
pub fn cancellation(&self) -> CancellationToken
pub fn handle(&self) -> CapabilityScopeHandle<K>
pub fn lease(&self) -> Result<CapabilityLease<'_, K>, CapabilityScopeError>
pub fn register_effect<E>(&self, effect: E) -> Result<(), CapabilityScopeError>where
E: CapabilityEffect,
pub fn spawn_task<F>( &self, name: impl Into<String>, task: F, ) -> Result<SupervisedTaskId, CapabilityScopeError>
pub fn cancel(&self)
pub async fn close(&self) -> Result<ScopeCloseReport, CapabilityScopeError>
Trait Implementations§
Source§impl<K: ScopeKind> Debug for CapabilityScope<K>
impl<K: ScopeKind> Debug for CapabilityScope<K>
Source§impl<K: ScopeKind> Drop for CapabilityScope<K>
impl<K: ScopeKind> Drop for CapabilityScope<K>
Auto Trait Implementations§
impl<K> Freeze for CapabilityScope<K>where
PhantomData<K>: Freeze,
impl<K> RefUnwindSafe for CapabilityScope<K>where
PhantomData<K>: RefUnwindSafe,
impl<K> Send for CapabilityScope<K>where
PhantomData<K>: Send,
impl<K> Sync for CapabilityScope<K>where
PhantomData<K>: Sync,
impl<K> Unpin for CapabilityScope<K>where
PhantomData<K>: Unpin,
impl<K> UnsafeUnpin for CapabilityScope<K>where
PhantomData<K>: UnsafeUnpin,
impl<K> UnwindSafe for CapabilityScope<K>where
PhantomData<K>: UnwindSafe,
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
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> ⓘ
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> ⓘ
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