core/src/tools/code_mode/response_adapter.rs
47 lines
use codex_code_mode::ImageDetail as CodeModeImageDetail;use codex_protocol::models::DEFAULT_IMAGE_DETAIL;use codex_protocol::models::FunctionCallOutputContentItem;use codex_protocol::models::ImageDetail;trait IntoProtocol<T> { fn into_protocol(self) -> T;}pub(super) fn into_function_call_output_content_items( items: Vec<codex_code_mode::FunctionCallOutputContentItem>,) -> Vec<FunctionCallOutputContentItem> { items.into_iter().map(IntoProtocol::into_protocol).collect()}impl IntoProtocol<ImageDetail> for CodeModeImageDetail { fn into_protocol(self) -> ImageDetail { let value = self; match value { CodeModeImageDetail::Auto => ImageDetail::Auto, CodeModeImageDetail::Low => ImageDetail::Low, CodeModeImageDetail::High => ImageDetail::High, CodeModeImageDetail::Original => ImageDetail::Original, } }}impl IntoProtocol<FunctionCallOutputContentItem> for codex_code_mode::FunctionCallOutputContentItem{ fn into_protocol(self) -> FunctionCallOutputContentItem { let value = self; match value { codex_code_mode::FunctionCallOutputContentItem::InputText { text } => { FunctionCallOutputContentItem::InputText { text } } codex_code_mode::FunctionCallOutputContentItem::InputImage { image_url, detail } => { FunctionCallOutputContentItem::InputImage { image_url, detail: detail .map(IntoProtocol::into_protocol) .or(Some(DEFAULT_IMAGE_DETAIL)), } } } }}