Skip to main content

SdkRuntime

Trait SdkRuntime 

Source
pub trait SdkRuntime: Send + Sync {
Show 15 methods // Required methods fn describe<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<FrontendRuntimeDescriptor, SdkError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn attach<'life0, 'async_trait>( &'life0 self, history_limit: usize, ) -> Pin<Box<dyn Future<Output = Result<FrontendAttachment, SdkError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn send_input<'async_trait>( self: Arc<Self>, prompt: String, ) -> Pin<Box<dyn Future<Output = Result<(), SdkError>> + Send + 'async_trait>> where Self: 'async_trait; fn submit<'life0, 'async_trait>( &'life0 self, prompt: String, ) -> Pin<Box<dyn Future<Output = Result<String, SdkError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn interrupt<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<bool, SdkError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn steer<'life0, 'async_trait>( &'life0 self, prompt: String, ) -> Pin<Box<dyn Future<Output = Result<(), SdkError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn respond<'life0, 'async_trait>( &'life0 self, response: FrontendResponse, ) -> Pin<Box<dyn Future<Output = Result<(), SdkError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; // Provided methods fn send_input_with_images<'async_trait>( self: Arc<Self>, prompt: String, image_urls: Vec<String>, ) -> Pin<Box<dyn Future<Output = Result<(), SdkError>> + Send + 'async_trait>> where Self: 'async_trait { ... } fn submit_with_images<'life0, 'async_trait>( &'life0 self, prompt: String, image_urls: Vec<String>, ) -> Pin<Box<dyn Future<Output = Result<String, SdkError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait { ... } fn invoke<'life0, 'async_trait>( &'life0 self, operation: FrontendOperationInvocation, ) -> Pin<Box<dyn Future<Output = Result<FrontendOperationResult, SdkError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait { ... } fn lease_snapshot<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<RuntimeLeaseSnapshot, SdkError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait { ... } fn take_control<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<RuntimeLeaseSnapshot, SdkError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait { ... } fn heartbeat<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<RuntimeLeaseSnapshot, SdkError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait { ... } fn detach<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<RuntimeLeaseSnapshot, SdkError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait { ... } fn close<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<(), SdkError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait { ... }
}
Expand description

Canonical live-runtime contract owned by the SDK.

Frontend modules are projections of this trait. They may render events or add transport envelopes, but they do not own a second model loop.

Required Methods§

Source

fn describe<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<FrontendRuntimeDescriptor, SdkError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Describe runtime identity, modules, commands, actions, and state.

Source

fn attach<'life0, 'async_trait>( &'life0 self, history_limit: usize, ) -> Pin<Box<dyn Future<Output = Result<FrontendAttachment, SdkError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Atomically attach at the canonical history/live-event boundary.

Source

fn send_input<'async_trait>( self: Arc<Self>, prompt: String, ) -> Pin<Box<dyn Future<Output = Result<(), SdkError>> + Send + 'async_trait>>
where Self: 'async_trait,

Atomically accept a new user turn and return once ownership is claimed.

Exactly one simultaneous caller succeeds. The accepted turn continues on the SDK-owned runtime and publishes its result through the canonical event stream; a competing caller receives SdkErrorCode::Busy synchronously from this operation.

Source

fn submit<'life0, 'async_trait>( &'life0 self, prompt: String, ) -> Pin<Box<dyn Future<Output = Result<String, SdkError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Submit a new user turn.

Source

fn interrupt<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<bool, SdkError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Interrupt an active turn.

Source

fn steer<'life0, 'async_trait>( &'life0 self, prompt: String, ) -> Pin<Box<dyn Future<Output = Result<(), SdkError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Queue a steering instruction when supported.

Source

fn respond<'life0, 'async_trait>( &'life0 self, response: FrontendResponse, ) -> Pin<Box<dyn Future<Output = Result<(), SdkError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Answer a typed runtime request when supported.

Provided Methods§

Source

fn send_input_with_images<'async_trait>( self: Arc<Self>, prompt: String, image_urls: Vec<String>, ) -> Pin<Box<dyn Future<Output = Result<(), SdkError>> + Send + 'async_trait>>
where Self: 'async_trait,

Atomically accept a multimodal user turn and return once ownership is claimed. Implementations must preserve images natively or reject the action; silently folding them into text is never allowed.

Source

fn submit_with_images<'life0, 'async_trait>( &'life0 self, prompt: String, image_urls: Vec<String>, ) -> Pin<Box<dyn Future<Output = Result<String, SdkError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Submit a new user turn with canonical multimodal image inputs.

Frontends must pass only runtime-resolved URLs or data URIs here; the SDK runtime, not a remote display client, owns input interpretation.

Source

fn invoke<'life0, 'async_trait>( &'life0 self, operation: FrontendOperationInvocation, ) -> Pin<Box<dyn Future<Output = Result<FrontendOperationResult, SdkError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Invoke one operation from the descriptor’s explicit catalog.

Source

fn lease_snapshot<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<RuntimeLeaseSnapshot, SdkError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Read the one-controller/many-observer ownership state.

Source

fn take_control<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<RuntimeLeaseSnapshot, SdkError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Explicitly acquire the controller lease from another interactive client. Ordinary mutations never perform an implicit takeover.

Source

fn heartbeat<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<RuntimeLeaseSnapshot, SdkError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Refresh observer activity and a controller lease owned by this client.

Source

fn detach<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<RuntimeLeaseSnapshot, SdkError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Release this client’s observer/controller state without stopping the runtime.

Source

fn close<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<(), SdkError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Explicitly close the SDK-owned runtime when the negotiated descriptor grants that owner-level action. Dropping an attachment is always a detach and never calls this operation implicitly.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§