use cap_rs::core::{AgentEvent, AskKind, AskOption, ReverseRpc, RiskLevel, StopReason};
use crate::config::SessionId;
#[derive(Debug, Clone, PartialEq)]
#[non_exhaustive]
pub enum OrchestratorEvent {
SessionStarted {
session: SessionId,
},
Agent {
session: SessionId,
event: AgentEvent,
},
Ask {
session: SessionId,
req_id: String,
tool: String,
risk_level: RiskLevel,
},
AskUser {
session: SessionId,
ask_id: String,
prompt: String,
ask_kind: AskKind,
options: Vec<AskOption>,
},
ReverseRpc {
session: SessionId,
rpc_id: String,
rpc: ReverseRpc,
},
Routed {
from: SessionId,
to: SessionId,
},
SessionDone {
session: SessionId,
stop_reason: StopReason,
},
SessionFailed {
session: SessionId,
error: String,
},
AwaitSelection {
candidates: Vec<SessionId>,
},
FleetComplete,
}
#[derive(Debug, Clone, PartialEq)]
#[non_exhaustive]
pub enum OrchestratorControl {
Decision {
session: SessionId,
req_id: String,
allow: bool,
},
AskUserResponse {
session: SessionId,
ask_id: String,
value: serde_json::Value,
},
ReverseRpcResult {
session: SessionId,
rpc_id: String,
result: cap_rs::core::ReverseRpcResult,
},
Select { session: SessionId },
UserMessage { session: SessionId, text: String },
Cancel,
}