From 2e1dbba5900cf6fd6596941856325d128d5d588c Mon Sep 17 00:00:00 2001 From: Jack Amadeo Date: Tue, 2 Jun 2026 22:49:59 -0400 Subject: [PATCH] refactor: move provider image format type Signed-off-by: Jack Amadeo --- crates/goose-providers/src/image.rs | 20 ++++++++++++++++++++ crates/goose-providers/src/lib.rs | 1 + crates/goose/src/providers/utils.rs | 9 ++------- 3 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 crates/goose-providers/src/image.rs diff --git a/crates/goose-providers/src/image.rs b/crates/goose-providers/src/image.rs new file mode 100644 index 000000000000..880ec3a9f7b6 --- /dev/null +++ b/crates/goose-providers/src/image.rs @@ -0,0 +1,20 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Copy, Clone, Serialize, Deserialize, PartialEq, Eq)] +pub enum ImageFormat { + OpenAi, + Anthropic, +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn image_format_round_trips_through_json() { + let encoded = serde_json::to_string(&ImageFormat::OpenAi).unwrap(); + assert_eq!(encoded, "\"OpenAi\""); + let decoded: ImageFormat = serde_json::from_str(&encoded).unwrap(); + assert_eq!(decoded, ImageFormat::OpenAi); + } +} diff --git a/crates/goose-providers/src/lib.rs b/crates/goose-providers/src/lib.rs index e41eb0563e5a..f6c6efe042bc 100644 --- a/crates/goose-providers/src/lib.rs +++ b/crates/goose-providers/src/lib.rs @@ -5,6 +5,7 @@ pub mod errors; pub mod function_name; pub mod google_response; pub mod http_status; +pub mod image; pub mod json; pub mod metadata; pub mod models; diff --git a/crates/goose/src/providers/utils.rs b/crates/goose/src/providers/utils.rs index f4a51ad5f8fa..530ceda2d8bc 100644 --- a/crates/goose/src/providers/utils.rs +++ b/crates/goose/src/providers/utils.rs @@ -5,6 +5,7 @@ use anyhow::Result; use base64::Engine; pub use goose_providers::function_name::{is_valid_function_name, sanitize_function_name}; pub use goose_providers::google_response::{handle_response_google_compat, is_google_model}; +pub use goose_providers::image::ImageFormat; pub use goose_providers::json::{ get_model, json_escape_control_chars_in_string, safely_parse_json, unescape_json_values, }; @@ -13,17 +14,11 @@ pub use goose_types::{ extract_reasoning_effort, is_openai_responses_model, openai_reasoning_effort_for_thinking, }; use rmcp::model::{AnnotateAble, ImageContent, RawImageContent}; -use serde::{Deserialize, Serialize}; +use serde::Serialize; use serde_json::{json, Value}; use std::io::Read; use std::path::Path; -#[derive(Debug, Copy, Clone, Serialize, Deserialize)] -pub enum ImageFormat { - OpenAi, - Anthropic, -} - /// Convert an image content into an image json based on format pub fn convert_image(image: &ImageContent, image_format: &ImageFormat) -> Value { match image_format {