pub struct SubSession { /* private fields */ }Expand description
Long-lived conversation session for a subagent.
Implementations§
Source§impl SubSession
impl SubSession
Sourcepub fn close(self: Arc<Self>)
pub fn close(self: Arc<Self>)
Closes the session.
This is a no-op today: the input channel closes on its own once every sender clone is
dropped, and the runner exits at its next idle boundary. The method is kept as the single
place to hook explicit teardown (e.g. cancelling the runner) if that becomes necessary.
Sourcepub fn stop_background_task(&self, task_id: &str) -> bool
pub fn stop_background_task(&self, task_id: &str) -> bool
Actively stops a single background task running inside this session.
Marks the task as stopped so its remaining progress/end output is no longer forwarded, then
signals the task’s stop handle so the producer terminates it (a nested tool process is
killed; a nested subagent session receives a graceful /stop). Returns true if a live
task with task_id was found.
Trait Implementations§
Source§impl AgentHook for SubSession
impl AgentHook for SubSession
Source§fn on_background_start<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ctx: &'life1 AgentCtx,
handle: BackgroundHandle,
_req: &'life2 CompletionRequest,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn on_background_start<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ctx: &'life1 AgentCtx,
handle: BackgroundHandle,
_req: &'life2 CompletionRequest,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Called when an agent starts in the background. Read more
Source§fn on_background_progress<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 AgentCtx,
session_id: String,
output: AgentOutput,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn on_background_progress<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 AgentCtx,
session_id: String,
output: AgentOutput,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Called when an agent reports progress from a background task.
Source§fn on_background_end<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 AgentCtx,
session_id: String,
output: AgentOutput,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn on_background_end<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 AgentCtx,
session_id: String,
output: AgentOutput,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Called with the final output from a background agent task.
Source§fn before_agent_run<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 AgentCtx,
prompt: String,
resources: Vec<Resource>,
) -> Pin<Box<dyn Future<Output = Result<(String, Vec<Resource>), BoxError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn before_agent_run<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 AgentCtx,
prompt: String,
resources: Vec<Resource>,
) -> Pin<Box<dyn Future<Output = Result<(String, Vec<Resource>), BoxError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Called before an agent is executed, allowing you to modify the prompt and resources.
Source§fn after_agent_run<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 AgentCtx,
output: AgentOutput,
) -> Pin<Box<dyn Future<Output = Result<AgentOutput, BoxError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn after_agent_run<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 AgentCtx,
output: AgentOutput,
) -> Pin<Box<dyn Future<Output = Result<AgentOutput, BoxError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Called after an agent is executed, allowing you to modify the output. Read more
Source§impl ToolBackgroundHook for SubSession
impl ToolBackgroundHook for SubSession
Source§fn on_background_start<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 BaseCtx,
handle: BackgroundHandle,
_args: Json,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn on_background_start<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 BaseCtx,
handle: BackgroundHandle,
_args: Json,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Called when a tool starts a background task. Read more
Source§fn on_background_progress<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 BaseCtx,
task_id: String,
output: ToolOutput<Json>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn on_background_progress<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 BaseCtx,
task_id: String,
output: ToolOutput<Json>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Called when a tool reports progress from a background task.
Source§fn on_background_end<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 BaseCtx,
task_id: String,
output: ToolOutput<Json>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn on_background_end<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 BaseCtx,
task_id: String,
output: ToolOutput<Json>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Called with the final output from a background tool task.
Auto Trait Implementations§
impl !Freeze for SubSession
impl !RefUnwindSafe for SubSession
impl !UnwindSafe for SubSession
impl Send for SubSession
impl Sync for SubSession
impl Unpin for SubSession
impl UnsafeUnpin for SubSession
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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
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>
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)
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)
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
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<T> Fruit for T
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>
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 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>
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