pub enum BackendKind {
Claude,
Codex,
Droid,
Kimi,
Local,
Acp,
Cursor,
}Expand description
Which AgentBackend drives a role’s sessions.
Variants§
Claude
Codex
Droid
Kimi
Local
OpenAI-compatible HTTP endpoint, configured via the role’s baseUrl,
contextBudget, and optional temperature.
Acp
ACP (Agent Client Protocol) agent executable, configured via the
role’s acpCommand/acpArgs (KRZ-301; worker role only).
Cursor
Cursor CLI (agent --print --output-format stream-json), the decided
direct-parser route (docs/scoping/cursor-cli-backend.md). Opt-in
only, validator-first; never a default.
Implementations§
Source§impl BackendKind
impl BackendKind
pub fn as_str(self) -> &'static str
Sourcepub fn supports_sandbox_enforcement(self) -> bool
pub fn supports_sandbox_enforcement(self) -> bool
Whether this backend applies the engine-resolved OS sandbox
(crate::backend::SessionSpec::sandbox) to its sessions. Only the
claude backend wraps its spawned CLI in the resolved sandbox today;
the other CLI backends spawn their binaries directly (and local
runs in the engine process), so an enforced sandbox on them would be
silently unenforced — config::validate rejects that pair (fail
closed). Cursor’s own --sandbox flag is observed to be no isolation
boundary (docs/scoping/cursor-cli-backend.md), so it does not count
either. The match is deliberately exhaustive: a future backend must
declare itself here.
Sourcepub fn reports_cache_read_tokens(self) -> bool
pub fn reports_cache_read_tokens(self) -> bool
Whether this backend’s wire reports cache-READ input tokens the
parser records (outcomes-report context-reuse split, ticket
outcomes-report-task-class). Claude/droid read
cache_read_input_tokens; codex reads cached_input_tokens; cursor
reads cacheReadTokens off the terminal result event (present in the
committed fixture). Kimi’s
wire carries no usage at all, local hardcodes zeros, and ACP v1’s
usage_update reports context-window state rather than a token
split — for all three, a zero would be fabricated, so they report
nothing (absent, never 0%).
The match is deliberately exhaustive: a future backend must declare
itself here.
Sourcepub fn reports_cache_write_tokens(self) -> bool
pub fn reports_cache_write_tokens(self) -> bool
Whether this backend’s wire reports cache-WRITE (creation) input
tokens. Claude/droid carry cache_creation_input_tokens and cursor
carries cacheWriteTokens on its terminal result event; codex
has no such field (its cache write side is never recorded, so the
split’s cache-write column is absent for codex, never zero-filled).
Sourcepub fn supports_hook_status_signals(self) -> bool
pub fn supports_hook_status_signals(self) -> bool
Whether this backend exposes a lifecycle-hook surface the
hook-status lane can project onto (ticket
agent-hooks-status-signals, crate::hook_status). Only the
cursor CLI’s documented hooks.json lifecycle events qualify today;
every other backend IGNORES crate::backend::SessionSpec::hook_status
exactly like settings_json, so an enabled lane is a byte-identical
no-op there (the hooks-disabled regression). The match is
deliberately exhaustive: a future backend must declare itself here.
Trait Implementations§
Source§impl Clone for BackendKind
impl Clone for BackendKind
Source§fn clone(&self) -> BackendKind
fn clone(&self) -> BackendKind
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more