pub struct ServerStateConfig {Show 17 fields
pub journal_dir: PathBuf,
pub peer_audit_journal: Option<PathBuf>,
pub shared_memgine: Option<Arc<Mutex<MemgineEngine>>>,
pub identity_store: IdentityStore,
pub inference: Option<Arc<InferenceEngine>>,
pub a2a_runtime: Option<Arc<Runtime>>,
pub a2a_store: Option<Arc<dyn TaskStore>>,
pub a2a_card_source: Option<Arc<AgentCardSource>>,
pub approval_gate: Option<ApprovalGate>,
pub approval_journal: Option<PathBuf>,
pub trajectory_dir: Option<PathBuf>,
pub run_store_failures: Option<RunStoreFailureInjector>,
pub run_store_private_path_failures: Option<PrivatePathDurabilityFailureInjector>,
pub journal_failures: Option<JournalFailureInjector>,
pub selfheal_ledger: Option<PathBuf>,
pub selfheal_interval_secs: u64,
pub selfheal_source_probe: SelfhealSourceProbe,
/* private fields */
}Expand description
standalone car-server binary uses ServerState::standalone
which calls with_config under the hood.
Fields§
§journal_dir: PathBuf§peer_audit_journal: Option<PathBuf>Peer-message audit journal. None derives a path once from
Self::journal_dir and the construction-time CAR state root. Tests
and embedders can override it without mutating process-global CAR_HOME.
Optional pre-constructed memgine engine. When None, each
create_session call builds a fresh engine; embedders that want
to share a single engine across sessions can supply a clone of
their Arc<Mutex<MemgineEngine>> here.
identity_store: IdentityStoreAssistant identity/profile store. Production uses the CAR state root; tests and embedders inject a scratch root so identity writes and startup rehydration never touch the operator’s real profile.
inference: Option<Arc<InferenceEngine>>Optional pre-constructed inference engine.
a2a_runtime: Option<Arc<Runtime>>Optional embedder-supplied A2A runtime. Used by the in-core
A2aDispatcher to execute peer-driven proposals. When None,
the dispatcher uses a fresh Runtime with register_agent_basics
— peer agents see CAR’s built-in tools and nothing else,
matching the behaviour of the standalone start_a2a_listener.
a2a_store: Option<Arc<dyn TaskStore>>Optional embedder-supplied A2A task store. When None,
defaults to InMemoryTaskStore. tokhn-style embedders that
want a polling-friendly persistent store plug it in here.
a2a_card_source: Option<Arc<AgentCardSource>>Optional embedder-supplied agent card factory. When None,
the dispatcher serves a card built from the A2A runtime’s
tool schemas at construction time, advertising its public URL
as ws://127.0.0.1:9100/ (the WS surface the dispatcher itself
is reachable on).
approval_gate: Option<ApprovalGate>Approval-gate policy. When None, the dispatcher uses
ApprovalGate::default (gate ON, the macOS-automation
surface gated, 60s timeout). Pass
ApprovalGate::disabled to opt out — only appropriate
when no untrusted caller can reach the WS port.
approval_journal: Option<PathBuf>Journal path for the daemon-wide shared HITL approval ledger
(ServerState::approval_ledger). None = the default
~/.car/approvals.jsonl. Tests and embedders that must not touch the
user’s real home point this at their own path.
trajectory_dir: Option<PathBuf>Directory for the daemon-wide trajectory store
(ServerState::trajectory_store). None = the default
~/.car/trajectories/. Tests and embedders that must not touch the
user’s real home point this at their own path, same as
approval_journal.
run_store_failures: Option<RunStoreFailureInjector>Deterministic durability fault seam used by direct lifecycle tests.
run_store_private_path_failures: Option<PrivatePathDurabilityFailureInjector>Deterministic first-use directory-entry durability seam for RunStore.
journal_failures: Option<JournalFailureInjector>Deterministic critical-journal fault seam used by direct lifecycle tests.
selfheal_ledger: Option<PathBuf>Private self-heal detection and bounded-attempt ledger. The standalone daemon sets this to
<CAR_HOME>/selfheal/detections.jsonl; embedders/tests can isolate it.
selfheal_interval_secs: u64Detection cadence. Eligible default-on auto-fix runs from the same non-overlapping tick and is independently controlled by config.toml.
selfheal_source_probe: SelfhealSourceProbeBounded source-checkout probe. Embedders fail closed unless they supply candidates; the standalone daemon derives this from process-local paths.
Implementations§
Source§impl ServerStateConfig
impl ServerStateConfig
Sourcepub fn new(journal_dir: PathBuf) -> Self
pub fn new(journal_dir: PathBuf) -> Self
Minimal config suitable for the standalone car-server binary: only the journal dir is required; everything else is lazily constructed at first use.
Sourcepub fn with_identity_store(self, store: IdentityStore) -> Self
pub fn with_identity_store(self, store: IdentityStore) -> Self
Override the assistant identity/profile store.
Sourcepub fn with_peer_audit_journal(self, path: PathBuf) -> Self
pub fn with_peer_audit_journal(self, path: PathBuf) -> Self
Override the peer-message audit journal path.
Sourcepub fn with_approval_journal(self, path: PathBuf) -> Self
pub fn with_approval_journal(self, path: PathBuf) -> Self
Override the shared approval-ledger journal path (default
~/.car/approvals.jsonl).
pub fn with_trajectory_dir(self, dir: PathBuf) -> Self
pub fn with_run_store_failures(self, failures: RunStoreFailureInjector) -> Self
pub fn with_run_store_private_path_failures( self, failures: PrivatePathDurabilityFailureInjector, ) -> Self
pub fn with_journal_failures(self, failures: JournalFailureInjector) -> Self
pub fn with_selfheal_ledger(self, path: PathBuf) -> Self
pub fn with_selfheal_interval_secs(self, interval_secs: u64) -> Self
pub fn with_selfheal_source_probe(self, probe: SelfhealSourceProbe) -> Self
pub fn with_inference(self, engine: Arc<InferenceEngine>) -> Self
Sourcepub fn with_a2a_runtime(self, runtime: Arc<Runtime>) -> Self
pub fn with_a2a_runtime(self, runtime: Arc<Runtime>) -> Self
Plug in an embedder-supplied runtime for the A2A dispatcher.
Use case: tokhn-daemon wants peers to see its OPA preflight
tooling, not just CAR’s register_agent_basics defaults.
Sourcepub fn with_a2a_store(self, store: Arc<dyn TaskStore>) -> Self
pub fn with_a2a_store(self, store: Arc<dyn TaskStore>) -> Self
Plug in an embedder-supplied task store for the A2A dispatcher. Use case: tokhn’s polling-friendly persistent store keyed by their session id.
Sourcepub fn with_a2a_card_source(self, source: Arc<AgentCardSource>) -> Self
pub fn with_a2a_card_source(self, source: Arc<AgentCardSource>) -> Self
Plug in an embedder-supplied agent card factory. The factory
is invoked on every agent/getAuthenticatedExtendedCard
dispatch, so embedders can reflect runtime tool changes.
Sourcepub fn with_approval_gate(self, gate: ApprovalGate) -> Self
pub fn with_approval_gate(self, gate: ApprovalGate) -> Self
Override the approval-gate policy. Pass
ApprovalGate::disabled to skip the gate entirely (only
appropriate when no untrusted caller can reach the WS port);
pass a customised ApprovalGate to add or remove methods
or to change the timeout.
Auto Trait Implementations§
impl !RefUnwindSafe for ServerStateConfig
impl !UnwindSafe for ServerStateConfig
impl Freeze for ServerStateConfig
impl Send for ServerStateConfig
impl Sync for ServerStateConfig
impl Unpin for ServerStateConfig
impl UnsafeUnpin for ServerStateConfig
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