pub struct V2ForkSessionBuilder<Counterpart, Run = NullRun>{ /* private fields */ }unstable_protocol_v2 and unstable_session_fork only.Expand description
Builder for an unstable draft protocol v2 session/fork request.
A successful fork creates a new independent session whose ID comes from the
v2::ForkSessionResponse. Register typed
v2::UpdateSessionNotification and interactive request handlers on
crate::Builder before connecting, then use Self::start_session to
obtain a command handle for the fork or on_proxy_session_start to forward
setup through a proxy.
This type is available with the unstable_session_fork feature. With
unstable_mcp_over_acp as well, with_mcp_server attaches an MCP server to
the forked session.
Implementations§
Source§impl<Counterpart, Run> V2ForkSessionBuilder<Counterpart, Run>
impl<Counterpart, Run> V2ForkSessionBuilder<Counterpart, Run>
Sourcepub fn with_mcp_server<McpRun>(
self,
mcp_server: McpServer<Counterpart, McpRun>,
) -> Result<V2ForkSessionBuilder<Counterpart, ChainRun<Run, McpRun>>, Error>where
McpRun: RunWithConnectionTo<Counterpart>,
Available on crate feature unstable_mcp_over_acp only.
pub fn with_mcp_server<McpRun>(
self,
mcp_server: McpServer<Counterpart, McpRun>,
) -> Result<V2ForkSessionBuilder<Counterpart, ChainRun<Run, McpRun>>, Error>where
McpRun: RunWithConnectionTo<Counterpart>,
unstable_mcp_over_acp only.Attach an MCP server to this forked protocol v2 session.
This method is available when unstable_mcp_over_acp is enabled in
addition to unstable_protocol_v2 and unstable_session_fork. MCP
routes are installed and their runner tasks receive an initial poll
before session/fork is published, allowing the agent to connect while
handling session setup. A successful attachment remains active for the
lifetime of the connection.
Sourcepub fn start_session(
self,
) -> SentRequest<OpenedV2Session<Counterpart, ForkSessionResponse>>where
Run: 'static,
pub fn start_session(
self,
) -> SentRequest<OpenedV2Session<Counterpart, ForkSessionResponse>>where
Run: 'static,
Send session/fork and return its independently consumable request.
The successful result contains both a cloneable command handle for the
newly created fork and the complete v2::ForkSessionResponse. Consume
the returned request with SentRequest::block_task,
SentRequest::on_receiving_result, or another explicit SentRequest
completion mode.
Attached MCP routes are installed and their runner tasks begin executing before the request is published. A valid success response promotes them to the connection lifetime independently from how this request handle is consumed; setup errors clean up the pending attachment.
Sourcepub fn on_proxy_session_start<F, Fut>(
self,
responder: Responder<ForkSessionResponse>,
op: F,
) -> Result<(), Error>
pub fn on_proxy_session_start<F, Fut>( self, responder: Responder<ForkSessionResponse>, op: F, ) -> Result<(), Error>
Fork a protocol v2 session through a proxy and forward its response.
The downstream request is ordered and inherits cancellation from the
upstream request. On success, this helper obtains the new session ID
from the response, installs session routing before later inbound traffic
is processed, forwards the complete response, and spawns op with an
OpenedV2Session containing the fork’s command handle and response.
Inbound updates and interactive requests remain independent connection
traffic.
The callback runs outside the ordered response barrier, so it may wait for later connection traffic without deadlocking the dispatch loop.