1use crate::{ConversationQueue, LiveSnapshot, ThreadSnapshot, ThreadSummary};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5#[serde(rename_all = "camelCase")]
6pub struct ThreadSession {
7 pub activity_at_unix_ms: i64,
8}
9
10#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
11#[serde(tag = "mode", rename_all = "snake_case")]
12pub enum ThreadSync {
13 Unchanged {
14 snapshot_version: u64,
15 },
16 Delta {
17 base_snapshot_version: u64,
18 snapshot_version: u64,
19 events: Vec<crate::SnapshotUpdatedEvent>,
20 },
21 Snapshot {
22 snapshot: ThreadSnapshot,
23 },
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
27#[serde(rename_all = "camelCase")]
28pub struct ThreadLoadResponse {
29 pub thread: ThreadSummary,
30 pub session: ThreadSession,
31 pub sync: ThreadSync,
32 pub live: LiveSnapshot,
33 pub queue: ConversationQueue,
34}
35
36#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
37#[serde(rename_all = "camelCase")]
38pub struct MessageEnqueueResponse {
39 pub request_id: String,
40 pub disposition: MessageEnqueueDisposition,
41 pub queue_version: u64,
42}
43
44#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
45#[serde(rename_all = "snake_case")]
46pub enum MessageEnqueueDisposition {
47 Queued,
48 Duplicate,
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
52#[serde(rename_all = "camelCase")]
53pub struct TurnSubmitResponse {
54 pub request_id: String,
55 pub thread_id: String,
56 pub disposition: TurnSubmitDisposition,
57 pub session_disposition: TurnSessionDisposition,
58 pub queue_version: u64,
59}
60
61#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
62#[serde(rename_all = "snake_case")]
63pub enum TurnSubmitDisposition {
64 Queued,
65 Duplicate,
66 BlockedPendingInteraction,
67}
68
69#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
70#[serde(rename_all = "snake_case")]
71pub enum TurnSessionDisposition {
72 Existing,
73 Created,
74 RotatedIdleTimeout,
75}
76
77#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
78#[serde(rename_all = "camelCase")]
79pub struct SessionStartResponse {
80 pub operation_id: String,
81 pub thread_id: String,
82 pub disposition: SessionStartDisposition,
83 pub catalog: crate::ThreadCatalog,
84}
85
86#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
87#[serde(rename_all = "snake_case")]
88pub enum SessionStartDisposition {
89 Rotated,
90 AlreadyApplied,
91}
92
93#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
94#[serde(rename_all = "camelCase")]
95pub struct InteractionAnswerResponse {
96 pub request_id: String,
97 pub thread_id: String,
98 pub disposition: InteractionAnswerDisposition,
99}
100
101#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
102#[serde(rename_all = "snake_case")]
103pub enum InteractionAnswerDisposition {
104 Accepted,
105 Duplicate,
106 Unavailable,
107 ExpiredSession,
108}
109
110#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
111#[serde(rename_all = "camelCase")]
112pub struct InteractionSubmitResponse {
113 pub request_id: String,
114 pub disposition: InteractionSubmitDisposition,
115}
116
117#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
118#[serde(rename_all = "snake_case")]
119pub enum InteractionSubmitDisposition {
120 Accepted,
121}
122
123#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
124#[serde(rename_all = "camelCase")]
125pub struct RequestCancelResponse {
126 pub request_id: String,
127 pub phase: RequestCancelPhase,
128 pub outcome: RequestCancelOutcome,
129 pub queue_version: u64,
130}
131
132#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
133#[serde(rename_all = "snake_case")]
134pub enum RequestCancelPhase {
135 Waiting,
136 Running,
137}
138
139#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
140#[serde(rename_all = "snake_case")]
141pub enum RequestCancelOutcome {
142 Cancelled,
143 Cancelling,
144}