1use serde::{Deserialize, Serialize};
2
3use crate::ids::{RequestId, SessionId};
4use crate::parts::UserPart;
5use crate::permission::Decision;
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9#[serde(tag = "type", rename_all = "snake_case")]
10pub enum Op {
11 Prompt {
12 session: SessionId,
13 parts: Vec<UserPart>,
14 },
15 Cancel {
16 session: SessionId,
17 },
18 PermissionDecision {
19 request: RequestId,
20 decision: Decision,
21 },
22 Compact {
23 session: SessionId,
24 },
25 Shutdown,
26}