| use schemars::JsonSchema; |
| use serde::Deserialize; |
| use serde::Serialize; |
| use ts_rs::TS; |
|
|
| |
| #[derive(Debug, Clone, PartialEq, Eq, Deserialize, Serialize, JsonSchema, TS)] |
| pub struct RealtimeItem { |
| pub id: String, |
| pub realtime_session_id: String, |
| #[serde(flatten)] |
| pub content: RealtimeItemContent, |
| } |
|
|
| |
| #[derive(Debug, Clone, PartialEq, Eq, Deserialize, Serialize, JsonSchema, TS)] |
| #[serde(tag = "type", rename_all = "snake_case")] |
| #[ts(tag = "type", rename_all = "snake_case")] |
| pub enum RealtimeItemContent { |
| RealtimeSessionStarted, |
| TranscriptSegment { |
| role: RealtimeTranscriptRole, |
| text: String, |
| }, |
| BemItemPromoted { |
| turn_id: String, |
| item_id: String, |
| presentation: BemItemPresentation, |
| }, |
| RealtimeSessionClosed { |
| outcome: RealtimeSessionOutcome, |
| }, |
| } |
|
|
| #[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize, Serialize, JsonSchema, TS)] |
| #[serde(rename_all = "snake_case")] |
| #[ts(rename_all = "snake_case")] |
| pub enum RealtimeSessionOutcome { |
| Ended, |
| Failed, |
| } |
|
|
| #[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize, Serialize, JsonSchema, TS)] |
| #[serde(rename_all = "snake_case")] |
| #[ts(rename_all = "snake_case")] |
| pub enum RealtimeTranscriptRole { |
| User, |
| Assistant, |
| } |
|
|
| |
| #[derive(Debug, Clone, PartialEq, Eq, Deserialize, Serialize, JsonSchema, TS)] |
| #[serde(tag = "type", rename_all = "snake_case")] |
| #[ts(tag = "type", rename_all = "snake_case")] |
| pub enum BemItemPresentation { |
| WholeItem, |
| InlineMarkdown, |
| InlineVisualization { index: u32 }, |
| } |
|
|