Skip to main content

conversation_api/
response.rs

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, Eq)]
78#[serde(rename_all = "camelCase")]
79pub struct InteractionSubmitResponse {
80    pub request_id: String,
81    pub disposition: InteractionSubmitDisposition,
82}
83
84#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
85#[serde(rename_all = "snake_case")]
86pub enum InteractionSubmitDisposition {
87    Accepted,
88}
89
90#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
91#[serde(rename_all = "camelCase")]
92pub struct RequestCancelResponse {
93    pub request_id: String,
94    pub phase: RequestCancelPhase,
95    pub outcome: RequestCancelOutcome,
96    pub queue_version: u64,
97}
98
99#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
100#[serde(rename_all = "snake_case")]
101pub enum RequestCancelPhase {
102    Waiting,
103    Running,
104}
105
106#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
107#[serde(rename_all = "snake_case")]
108pub enum RequestCancelOutcome {
109    Cancelled,
110    Cancelling,
111}