pub struct AssistantRuntime {
pub runtime: Runtime,
pub tools: Vec<Value>,
pub description: String,
pub identity: AssistantIdentity,
pub sandboxed: bool,
pub gated_tools: Vec<String>,
pub proactive_memory: Arc<MemoryTools>,
pub tool_memory: Arc<ToolMemory>,
pub fallback_notice: Option<String>,
pub browser: Arc<BrowserTools>,
pub todos: Arc<Mutex<TodoList>>,
}Fields§
§runtime: RuntimeThe configured runtime (validator + policy + tiers + event log), whose
tool executor is the GeneralExecutor.
tools: Vec<Value>The model-visible tools (from GeneralExecutor::all_tool_defs()).
description: StringEnvironment description for the system prompt: the one-line substrate sentence, plus — on a local (non-sandboxed) session — an appended names-only, depth-bounded workspace snapshot (F7/L1).
identity: AssistantIdentityThe name this user chose for the assistant, plus the spoken aliases it
answers to. Loaded once here rather than at each prompt-building call
site, so every entry mode — one-shot, REPL, MCP, the coder’s discussion
— agrees on who the agent is. Falls back to the shipped default when
identity.json is missing or unreadable; car identity is the surface
that reports a broken record.
sandboxed: boolWhether execution is isolated in a container.
gated_tools: Vec<String>Tools that require human approval before running under the standing tier
(writes/shell on the local host without --full-access); empty when the
tier auto-allows everything. Feed into AssistantConfig::gated_tools.
proactive_memory: Arc<MemoryTools>Shared assistant memory bank used by the loop’s proactive memory pass and
by the model-visible remember / recall tools.
tool_memory: Arc<ToolMemory>The run’s learned tool repairs — which call recovered which kind of tool
failure, durable across sessions. Separate from proactive_memory on
purpose: that bank holds facts about the USER, this one holds procedural
trivia about the TOOLS, and mixing them would put shell::exit_1 in
front of a question about their dog. See tool_memory.
fallback_notice: Option<String>If the sandbox was requested but unavailable, why we fell back to local.
browser: Arc<BrowserTools>The run’s browser (Chromium still un-launched until the first browse
call). Exposed so the daemon can publish it as a browser.view.*
view for the drawer to watch and drive — the drawer has to reach the
browser an agent ACTUALLY uses, and this is the only handle on it.
todos: Arc<Mutex<TodoList>>The run’s task list (Parslee-ai/car#814), shared with the executor that
todo_write mutates. Exposed because rendering it is the loop’s job:
#814 item 2 (a per-turn state block) is the consumer, and without a
handle here that change could not reach the state it needs to render.
Auto Trait Implementations§
impl !Freeze for AssistantRuntime
impl !RefUnwindSafe for AssistantRuntime
impl !UnwindSafe for AssistantRuntime
impl Send for AssistantRuntime
impl Sync for AssistantRuntime
impl Unpin for AssistantRuntime
impl UnsafeUnpin for AssistantRuntime
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
impl<S, T> Duplex<S> for Twhere
T: FromSample<S> + ToSample<S>,
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
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