From d89dd1431c40af8328d33e01d901aa231ee7a5ea Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Tue, 21 Oct 2025 02:07:53 -0400 Subject: [PATCH] image data --- .../messages/image_data_message.rs | 0 .../requests/listen_websocket/messages/mod.rs | 3 +- .../messages/websocket_server_message.rs | 32 +++++++++++++++++-- 3 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 crates/api_clients/grok_client/src/requests/listen_websocket/messages/image_data_message.rs diff --git a/crates/api_clients/grok_client/src/requests/listen_websocket/messages/image_data_message.rs b/crates/api_clients/grok_client/src/requests/listen_websocket/messages/image_data_message.rs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/crates/api_clients/grok_client/src/requests/listen_websocket/messages/mod.rs b/crates/api_clients/grok_client/src/requests/listen_websocket/messages/mod.rs index fc579ae42a..88fb5fee0e 100644 --- a/crates/api_clients/grok_client/src/requests/listen_websocket/messages/mod.rs +++ b/crates/api_clients/grok_client/src/requests/listen_websocket/messages/mod.rs @@ -1,2 +1,3 @@ pub mod websocket_client_message; -mod websocket_server_message; \ No newline at end of file +mod websocket_server_message; +mod image_data_message; \ No newline at end of file diff --git a/crates/api_clients/grok_client/src/requests/listen_websocket/messages/websocket_server_message.rs b/crates/api_clients/grok_client/src/requests/listen_websocket/messages/websocket_server_message.rs index e7a79632cd..a0d92a95dc 100644 --- a/crates/api_clients/grok_client/src/requests/listen_websocket/messages/websocket_server_message.rs +++ b/crates/api_clients/grok_client/src/requests/listen_websocket/messages/websocket_server_message.rs @@ -5,8 +5,7 @@ use serde::Deserialize; pub enum WebsocketServerMessage { /// Json with root `type = "image"` #[serde(rename = "image")] - PromptImageData { - }, + ImageData(ImageDataMessage), /// Json with root `type = "json"` #[serde(rename = "json")] @@ -18,6 +17,35 @@ pub enum WebsocketServerMessage { Unknown(serde_json::Value), } +/// Images with a binary blob and URLs. +/// We may receive several of these for a single prompt. +#[derive(Deserialize, Clone)] +pub struct ImageDataMessage { + pub id: Option, + pub job_id: Option, + pub request_id: Option, + + /// The original text prompt used + pub prompt: Option, + + /// Base64 encoded image blob. + pub blob: Option, + + /// URL to the image. + pub url: Option, + + /// NSFW flag + pub r_rated: Option, + + /// Name of the model used to generate the image + /// eg. "imagine_h_1" + pub model_name: Option, + + /// Not sure if we're getting incomplete images. + /// I've seen percentages of "50", so I imagine so. + pub percentage_complete: Option, +} + #[cfg(test)] mod tests {