pub enum Op {
SendMessage {
content: String,
mode: String,
model: Option<String>,
model_provider: Option<String>,
allowed_tools: Option<Vec<String>>,
dynamic_tools: Vec<Value>,
provenance: String,
},
Steer {
content: String,
},
ContinueGoal,
RunShellCommand {
command: String,
},
SetGoalStatus {
status: String,
clear: bool,
},
Cancel,
Shutdown,
PreviewOutboundRequest {
json: bool,
base_prompt_only: bool,
},
}Expand description
Operations that can be submitted to the core engine. This is the
protocol view of crates/tui/src/core/ops::Op — same lifecycle,
same provenance gate — but serializable and free of mpsc / oneshot
fields. In-process callers convert at the boundary; out-of-process
callers send the JSON directly.
Variants§
SendMessage
Drive one model turn: role=user content plus the resolved route
receipt the engine will freeze at the client-freeze boundary. Headless
and TUI must produce byte-identical MessageRequests for identical
Op::SendMessage payloads.
Fields
Steer
Steer an in-flight turn with additional user content (drains into
the turn loop’s rx_steer channel).
ContinueGoal
Re-check and dispatch a goal continuation (synthetic turn that continues the same logical goal run).
RunShellCommand
Execute a local composer shell command without a model turn.
SetGoalStatus
Set goal status without dispatching a model turn.
Cancel
Shutdown
PreviewOutboundRequest
Describe the exact request the next turn would send without sending it
(/dryrun / /preview-request, #1004). Headless and TUI must render
identical manifests for identical inputs.