pub struct NodeTransport { /* private fields */ }Implementations§
Source§impl NodeTransport
impl NodeTransport
pub fn start( child: Child, stdin: ChildStdin, stdout: ChildStdout, ) -> Result<(Self, Value), String>
Sourcepub fn start_with_cleanup(
child: Child,
stdin: ChildStdin,
stdout: ChildStdout,
cleanup_path: Option<PathBuf>,
) -> Result<(Self, Value), String>
pub fn start_with_cleanup( child: Child, stdin: ChildStdin, stdout: ChildStdout, cleanup_path: Option<PathBuf>, ) -> Result<(Self, Value), String>
Start a transport and remove an optional host script when the child is
dropped. Windows cannot carry the embedded Node source in node -e
once the host grows beyond the CreateProcess command-line limit, so the
caller may launch a temporary .mjs file and hand its path to us.
Sourcepub fn start_with_cleanup_and_handlers(
child: Child,
stdin: ChildStdin,
stdout: ChildStdout,
cleanup_path: Option<PathBuf>,
initial_handlers: Vec<RuntimeHandler>,
) -> Result<(Self, Value), String>
pub fn start_with_cleanup_and_handlers( child: Child, stdin: ChildStdin, stdout: ChildStdout, cleanup_path: Option<PathBuf>, initial_handlers: Vec<RuntimeHandler>, ) -> Result<(Self, Value), String>
Start a transport with runtime handlers that are available while the
Node host is loading extension factories and lifecycle hooks. The host
may issue runtime_request messages before it publishes its id:0
initialization response, so the reader must be running before waiting
for that response.
Sourcepub fn start_pending_with_cleanup_and_handlers(
child: Child,
stdin: ChildStdin,
stdout: ChildStdout,
cleanup_path: Option<PathBuf>,
initial_handlers: Vec<RuntimeHandler>,
) -> Result<NodeTransportStartup, String>
pub fn start_pending_with_cleanup_and_handlers( child: Child, stdin: ChildStdin, stdout: ChildStdout, cleanup_path: Option<PathBuf>, initial_handlers: Vec<RuntimeHandler>, ) -> Result<NodeTransportStartup, String>
Spawn the transport and start its reader, returning before the Node
host’s initialization response arrives. This is the primitive used by
the lazy runtime so shutdown can kill a host whose extension factory is
stuck before it emits id:0.
Sourcepub fn shutdown(&self)
pub fn shutdown(&self)
Stop the Node host and resolve all currently pending requests with an error. Safe to call repeatedly and while other transport clones exist.
Sourcepub fn is_shutdown(&self) -> bool
pub fn is_shutdown(&self) -> bool
Whether the reader or an explicit shutdown has made this transport unusable. Lazy owners use this to discard a stale slot and retry on the next request.
Sourcepub fn same_instance(&self, other: &Self) -> bool
pub fn same_instance(&self, other: &Self) -> bool
Whether two handles refer to the same child process. Lazy startup can
briefly expose one handle through both its starting and transport
slots; callers updating shared runtime handlers must avoid appending the
same callback twice in that window.
pub fn begin_request( &self, method: &str, payload: Value, ) -> Result<PendingRequest, String>
pub fn request(&self, method: &str, payload: Value) -> Result<Value, String>
pub fn send_event(&self, event: Value) -> Result<(), String>
Sourcepub fn request_event(&self, event: Value) -> Result<Value, String>
pub fn request_event(&self, event: Value) -> Result<Value, String>
Send a host event and wait for a normal id-correlated response. This
is used for terminal input listeners, whose consume result must be
known before the outer Rust TUI dispatches the same key.
pub fn cancel(&self, id: u64) -> Result<(), String>
Sourcepub fn register_tool_update_handler(
&self,
tool_call_id: impl Into<String>,
handler: ToolUpdateHandler,
) -> Result<(), String>
pub fn register_tool_update_handler( &self, tool_call_id: impl Into<String>, handler: ToolUpdateHandler, ) -> Result<(), String>
Register a callback for partial updates emitted by one JS tool call.
The callback is intentionally keyed by the Pi tool-call id rather than the transport request id: the former is what Node receives and what remains stable when a request is cancelled or retried.
Sourcepub fn unregister_tool_update_handler(&self, tool_call_id: &str)
pub fn unregister_tool_update_handler(&self, tool_call_id: &str)
Stop routing partial updates after a tool call settles. This also suppresses updates sent by a JS tool after its execute promise resolves, matching the agent loop’s late-update gate.
pub fn replace_runtime_handlers( &self, handler: RuntimeHandler, ) -> Result<(), String>
pub fn add_runtime_handler(&self, handler: RuntimeHandler) -> Result<(), String>
Trait Implementations§
Auto Trait Implementations§
impl Freeze for NodeTransport
impl RefUnwindSafe for NodeTransport
impl Send for NodeTransport
impl Sync for NodeTransport
impl Unpin for NodeTransport
impl UnsafeUnpin for NodeTransport
impl UnwindSafe for NodeTransport
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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