Skip to main content

Runtime

Struct Runtime 

Source
pub struct Runtime {
    pub watcher_exit_path: Option<PathBuf>,
    /* private fields */
}
Expand description

The core runtime — manages API communication, tool execution, authentication, and streaming for all SynapsCLI binaries (chat, chatui, server, agent, watcher).

Fields§

§watcher_exit_path: Option<PathBuf>

Path for watcher_exit tool to write handoff state (agent mode only)

Implementations§

Source§

impl Runtime

Source

pub async fn new() -> Result<Self>

Source

pub fn set_system_prompt(&mut self, prompt: String)

Source

pub fn system_prompt(&self) -> Option<&str>

Source

pub fn set_model(&mut self, model: String)

Source

pub fn set_tools(&mut self, tools: ToolRegistry)

Source

pub fn subagent_registry(&self) -> &Arc<Mutex<SubagentRegistry>>

Source

pub fn event_queue(&self) -> &Arc<EventQueue>

Source

pub fn hook_bus(&self) -> &Arc<HookBus>

Get a shared reference to the extension hook bus.

Source

pub fn tools_shared(&self) -> Arc<RwLock<ToolRegistry>>

Get a shared reference to the tool registry (for MCP lazy loading).

Source

pub fn model(&self) -> &str

Source

pub fn http_client(&self) -> &Client

Source

pub fn set_thinking_budget(&mut self, budget: u32)

Source

pub fn set_compaction_model(&mut self, model: Option<String>)

Source

pub fn set_context_window(&mut self, window: Option<u64>)

Source

pub fn compaction_model(&self) -> &str

Effective context window for the current model — user override if set, otherwise the model’s native window from models::context_window_for_model.

Source

pub fn context_window(&self) -> u64

Source

pub fn apply_config(&mut self, config: &SynapsConfig)

Apply a parsed config file to this runtime (model, thinking budget, etc.)

Source

pub fn thinking_budget(&self) -> u32

Source

pub fn max_tool_output(&self) -> usize

Source

pub fn bash_timeout(&self) -> u64

Source

pub fn bash_max_timeout(&self) -> u64

Source

pub fn subagent_timeout(&self) -> u64

Source

pub fn api_retries(&self) -> u32

Source

pub fn set_max_tool_output(&mut self, v: usize)

Source

pub fn set_bash_timeout(&mut self, v: u64)

Source

pub fn set_bash_max_timeout(&mut self, v: u64)

Source

pub fn set_subagent_timeout(&mut self, v: u64)

Source

pub fn set_api_retries(&mut self, v: u32)

Source

pub fn thinking_level(&self) -> &str

Source

pub async fn refresh_if_needed(&self) -> Result<()>

Check if the OAuth token is expired and refresh it if needed.

Source

pub async fn compact_call(&self, messages: Vec<Value>) -> Result<String>

Make a simple non-streaming API call for compaction (no tools).

Uses a dedicated summarization system prompt (not the user’s), omits all tools, and returns the raw text response. Caller supplies the full message array including the serialized conversation.

Source

pub async fn run_single(&self, prompt: &str) -> Result<String>

Run a single prompt synchronously (non-streaming). Handles tool execution internally, looping until the model produces a final text response.

Source

pub async fn run_stream( &self, prompt: String, cancel: CancellationToken, ) -> Pin<Box<dyn Stream<Item = StreamEvent> + Send>>

Run a prompt as a cancellable stream of StreamEvents. Convenience wrapper around [run_stream_with_messages] for single-turn usage.

Source

pub async fn run_stream_with_messages( &self, messages: Vec<Value>, cancel: CancellationToken, steering_rx: Option<UnboundedReceiver<String>>, secret_prompt: Option<SecretPromptHandle>, ) -> Pin<Box<dyn Stream<Item = StreamEvent> + Send>>

Run a multi-turn conversation as a cancellable stream of StreamEvents. This is the main entry point for chat UIs and agents. Handles tool execution, API retries, and dynamic tool registration (MCP) internally.

Trait Implementations§

Source§

impl Clone for Runtime

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. 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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &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)

Convert &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> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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
Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,