pub struct DaemonRequestFrame {
pub ops: String,
pub presentation: Option<String>,
pub presentation_per_op: Option<Vec<Option<String>>>,
pub namespace: String,
pub config_id: String,
pub protocol_version: u32,
pub probe_only: bool,
pub format: Option<String>,
pub format_per_op: Option<Vec<Option<String>>>,
pub from_wire: bool,
}Expand description
Request frame sent from a client to the daemon.
Fields§
§ops: String§presentation: Option<String>§presentation_per_op: Option<Vec<Option<String>>>§namespace: String§config_id: StringFingerprint of the client’s resolved runtime config (packs, db target,
embedders). The daemon rejects a request whose config_id differs from
its own so a restricted client (e.g. --pack kg, --db :memory:) never
dispatches through the broader default daemon. See ADR-027 / ADR-049.
protocol_version: u32IPC protocol version sent by the client. Pre-versioning clients omit
this field (deserializes to 0). The daemon compares against
PROTOCOL_VERSION and rejects mismatches with an explicit error.
probe_only: boolWhen true, the daemon returns an identity frame (ok=true, result=None)
immediately after identity validation — without calling the dispatcher.
Used by the client’s under-lock recovery probe to confirm a daemon is
alive and identity-matching without dispatching any mutating verb.
Pre-probe clients omit this field (deserializes to false → normal dispatch).
format: Option<String>Output format for this request (ADR-078). Forwarded to the daemon’s
serialization seam. None means use the daemon’s resolved default.
format_per_op: Option<Vec<Option<String>>>Per-operation output format overrides (ADR-078).
from_wire: boolWhether this request originated from the agent-facing MCP request
tool (the wire surface). When true, the daemon enforces verb
visibility — Visibility::Subhandler verbs are rejected because agents
must not invoke internal subhandlers. When false (the default, and the
only value any operator path sends), subhandlers are allowed: kkernel exec and other in-process callers are trusted operator surfaces.
This is the origin discriminator, not a daemon-vs-local one: operator
requests flow through the daemon by default too, so the gate cannot key
on transport. Pre-versioning clients omit this field (deserializes to
false → ungated), which is safe: the only way to reach the gated wire
surface is the MCP request tool, which always sets it explicitly.