Skip to main content

SubAgentHandle

Struct SubAgentHandle 

Source
pub struct SubAgentHandle {
    pub id: String,
    pub def: SubAgentDef,
    pub task_id: String,
    pub state: SubAgentState,
    pub join_handle: Option<JoinHandle<Result<String, SubAgentError>>>,
    pub cancel: CancellationToken,
    pub status_rx: Receiver<SubAgentStatus>,
    pub grants: PermissionGrants,
    pub pending_secret_rx: Receiver<SecretRequest>,
    pub secret_tx: Sender<Option<String>>,
    pub started_at_str: String,
    pub transcript_dir: Option<PathBuf>,
}
Expand description

Handle to a spawned sub-agent task, owned by SubAgentManager.

Fields are public to allow test harnesses in downstream crates to construct handles without going through the full spawn lifecycle. Production code must not mutate grants or the cancellation state directly — use the SubAgentManager API instead.

The Drop implementation cancels the task and revokes all grants as a safety net.

Fields§

§id: String

Short display ID (same as task_id for non-resumed sessions).

§def: SubAgentDef

The definition that was used to spawn this agent.

§task_id: String

UUID assigned at spawn time (currently identical to id; separated for future use).

§state: SubAgentState

Cached state — may lag the background task by one watch broadcast.

§join_handle: Option<JoinHandle<Result<String, SubAgentError>>>

Tokio join handle for the background agent loop task.

§cancel: CancellationToken

Cancellation token; cancelled on SubAgentManager::cancel or drop.

§status_rx: Receiver<SubAgentStatus>

Watch receiver for live status updates from the agent loop.

§grants: PermissionGrants

Zero-trust TTL-bounded grants for this agent session.

§pending_secret_rx: Receiver<SecretRequest>

Receives secret requests from the sub-agent loop.

§secret_tx: Sender<Option<String>>

Delivers approval outcome to the sub-agent loop: None = denied, Some(_) = approved.

§started_at_str: String

ISO 8601 UTC timestamp recorded when the agent was spawned or resumed.

§transcript_dir: Option<PathBuf>

Resolved transcript directory at spawn time; None if transcripts were disabled.

Trait Implementations§

Source§

impl Debug for SubAgentHandle

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for SubAgentHandle

Source§

fn drop(&mut self)

Executes the destructor for this 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<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> 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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: 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: 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> 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