use serde::{Deserialize, Serialize};
use utoipa::ToSchema;
use crate::types::responses::{OutputContent, OutputItem, Response, ResponseLogProb, SummaryPart};
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
#[schema(no_recursion)]
#[serde(tag = "type")]
pub enum ResponseStreamEvent {
#[serde(rename = "response.created")]
ResponseCreated(ResponseCreatedEvent),
#[serde(rename = "response.in_progress")]
ResponseInProgress(ResponseInProgressEvent),
#[serde(rename = "response.completed")]
ResponseCompleted(ResponseCompletedEvent),
#[serde(rename = "response.failed")]
ResponseFailed(ResponseFailedEvent),
#[serde(rename = "response.incomplete")]
ResponseIncomplete(ResponseIncompleteEvent),
#[serde(rename = "response.output_item.added")]
ResponseOutputItemAdded(ResponseOutputItemAddedEvent),
#[serde(rename = "response.output_item.done")]
ResponseOutputItemDone(ResponseOutputItemDoneEvent),
#[serde(rename = "response.content_part.added")]
ResponseContentPartAdded(ResponseContentPartAddedEvent),
#[serde(rename = "response.content_part.done")]
ResponseContentPartDone(ResponseContentPartDoneEvent),
#[serde(rename = "response.output_text.delta")]
ResponseOutputTextDelta(ResponseTextDeltaEvent),
#[serde(rename = "response.output_text.done")]
ResponseOutputTextDone(ResponseTextDoneEvent),
#[serde(rename = "response.refusal.delta")]
ResponseRefusalDelta(ResponseRefusalDeltaEvent),
#[serde(rename = "response.refusal.done")]
ResponseRefusalDone(ResponseRefusalDoneEvent),
#[serde(rename = "response.function_call_arguments.delta")]
ResponseFunctionCallArgumentsDelta(ResponseFunctionCallArgumentsDeltaEvent),
#[serde(rename = "response.function_call_arguments.done")]
ResponseFunctionCallArgumentsDone(ResponseFunctionCallArgumentsDoneEvent),
#[serde(rename = "response.file_search_call.in_progress")]
ResponseFileSearchCallInProgress(ResponseFileSearchCallInProgressEvent),
#[serde(rename = "response.file_search_call.searching")]
ResponseFileSearchCallSearching(ResponseFileSearchCallSearchingEvent),
#[serde(rename = "response.file_search_call.completed")]
ResponseFileSearchCallCompleted(ResponseFileSearchCallCompletedEvent),
#[serde(rename = "response.web_search_call.in_progress")]
ResponseWebSearchCallInProgress(ResponseWebSearchCallInProgressEvent),
#[serde(rename = "response.web_search_call.searching")]
ResponseWebSearchCallSearching(ResponseWebSearchCallSearchingEvent),
#[serde(rename = "response.web_search_call.completed")]
ResponseWebSearchCallCompleted(ResponseWebSearchCallCompletedEvent),
#[serde(rename = "response.reasoning_summary_part.added")]
ResponseReasoningSummaryPartAdded(ResponseReasoningSummaryPartAddedEvent),
#[serde(rename = "response.reasoning_summary_part.done")]
ResponseReasoningSummaryPartDone(ResponseReasoningSummaryPartDoneEvent),
#[serde(rename = "response.reasoning_summary_text.delta")]
ResponseReasoningSummaryTextDelta(ResponseReasoningSummaryTextDeltaEvent),
#[serde(rename = "response.reasoning_summary_text.done")]
ResponseReasoningSummaryTextDone(ResponseReasoningSummaryTextDoneEvent),
#[serde(rename = "response.reasoning_text.delta")]
ResponseReasoningTextDelta(ResponseReasoningTextDeltaEvent),
#[serde(rename = "response.reasoning_text.done")]
ResponseReasoningTextDone(ResponseReasoningTextDoneEvent),
#[serde(rename = "response.image_generation_call.completed")]
ResponseImageGenerationCallCompleted(ResponseImageGenCallCompletedEvent),
#[serde(rename = "response.image_generation_call.generating")]
ResponseImageGenerationCallGenerating(ResponseImageGenCallGeneratingEvent),
#[serde(rename = "response.image_generation_call.in_progress")]
ResponseImageGenerationCallInProgress(ResponseImageGenCallInProgressEvent),
#[serde(rename = "response.image_generation_call.partial_image")]
ResponseImageGenerationCallPartialImage(ResponseImageGenCallPartialImageEvent),
#[serde(rename = "response.mcp_call_arguments.delta")]
ResponseMCPCallArgumentsDelta(ResponseMCPCallArgumentsDeltaEvent),
#[serde(rename = "response.mcp_call_arguments.done")]
ResponseMCPCallArgumentsDone(ResponseMCPCallArgumentsDoneEvent),
#[serde(rename = "response.mcp_call.completed")]
ResponseMCPCallCompleted(ResponseMCPCallCompletedEvent),
#[serde(rename = "response.mcp_call.failed")]
ResponseMCPCallFailed(ResponseMCPCallFailedEvent),
#[serde(rename = "response.mcp_call.in_progress")]
ResponseMCPCallInProgress(ResponseMCPCallInProgressEvent),
#[serde(rename = "response.mcp_list_tools.completed")]
ResponseMCPListToolsCompleted(ResponseMCPListToolsCompletedEvent),
#[serde(rename = "response.mcp_list_tools.failed")]
ResponseMCPListToolsFailed(ResponseMCPListToolsFailedEvent),
#[serde(rename = "response.mcp_list_tools.in_progress")]
ResponseMCPListToolsInProgress(ResponseMCPListToolsInProgressEvent),
#[serde(rename = "response.code_interpreter_call.in_progress")]
ResponseCodeInterpreterCallInProgress(ResponseCodeInterpreterCallInProgressEvent),
#[serde(rename = "response.code_interpreter_call.interpreting")]
ResponseCodeInterpreterCallInterpreting(ResponseCodeInterpreterCallInterpretingEvent),
#[serde(rename = "response.code_interpreter_call.completed")]
ResponseCodeInterpreterCallCompleted(ResponseCodeInterpreterCallCompletedEvent),
#[serde(rename = "response.code_interpreter_call_code.delta")]
ResponseCodeInterpreterCallCodeDelta(ResponseCodeInterpreterCallCodeDeltaEvent),
#[serde(rename = "response.code_interpreter_call_code.done")]
ResponseCodeInterpreterCallCodeDone(ResponseCodeInterpreterCallCodeDoneEvent),
#[serde(rename = "response.output_text.annotation.added")]
ResponseOutputTextAnnotationAdded(ResponseOutputTextAnnotationAddedEvent),
#[serde(rename = "response.queued")]
ResponseQueued(ResponseQueuedEvent),
#[serde(rename = "response.custom_tool_call_input.delta")]
ResponseCustomToolCallInputDelta(ResponseCustomToolCallInputDeltaEvent),
#[serde(rename = "response.custom_tool_call_input.done")]
ResponseCustomToolCallInputDone(ResponseCustomToolCallInputDoneEvent),
#[serde(rename = "error")]
ResponseError(ResponseErrorEvent),
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseCreatedEvent {
pub sequence_number: u64,
pub response: Response,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseInProgressEvent {
pub sequence_number: u64,
pub response: Response,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseCompletedEvent {
pub sequence_number: u64,
pub response: Response,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseFailedEvent {
pub sequence_number: u64,
pub response: Response,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseIncompleteEvent {
pub sequence_number: u64,
pub response: Response,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseOutputItemAddedEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item: OutputItem,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseOutputItemDoneEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item: OutputItem,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseContentPartAddedEvent {
pub sequence_number: u64,
pub item_id: String,
pub output_index: u32,
pub content_index: u32,
pub part: OutputContent,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseContentPartDoneEvent {
pub sequence_number: u64,
pub item_id: String,
pub output_index: u32,
pub content_index: u32,
pub part: OutputContent,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseTextDeltaEvent {
pub sequence_number: u64,
pub item_id: String,
pub output_index: u32,
pub content_index: u32,
pub delta: String,
pub logprobs: Option<Vec<ResponseLogProb>>,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseTextDoneEvent {
pub sequence_number: u64,
pub item_id: String,
pub output_index: u32,
pub content_index: u32,
pub text: String,
pub logprobs: Option<Vec<ResponseLogProb>>,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseRefusalDeltaEvent {
pub sequence_number: u64,
pub item_id: String,
pub output_index: u32,
pub content_index: u32,
pub delta: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseRefusalDoneEvent {
pub sequence_number: u64,
pub item_id: String,
pub output_index: u32,
pub content_index: u32,
pub refusal: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseFunctionCallArgumentsDeltaEvent {
pub sequence_number: u64,
pub item_id: String,
pub output_index: u32,
pub delta: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseFunctionCallArgumentsDoneEvent {
pub name: Option<String>,
pub sequence_number: u64,
pub item_id: String,
pub output_index: u32,
pub arguments: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseFileSearchCallInProgressEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseFileSearchCallSearchingEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseFileSearchCallCompletedEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseWebSearchCallInProgressEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseWebSearchCallSearchingEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseWebSearchCallCompletedEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseReasoningSummaryPartAddedEvent {
pub sequence_number: u64,
pub item_id: String,
pub output_index: u32,
pub summary_index: u32,
pub part: SummaryPart,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseReasoningSummaryPartDoneEvent {
pub sequence_number: u64,
pub item_id: String,
pub output_index: u32,
pub summary_index: u32,
pub part: SummaryPart,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseReasoningSummaryTextDeltaEvent {
pub sequence_number: u64,
pub item_id: String,
pub output_index: u32,
pub summary_index: u32,
pub delta: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseReasoningSummaryTextDoneEvent {
pub sequence_number: u64,
pub item_id: String,
pub output_index: u32,
pub summary_index: u32,
pub text: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseReasoningTextDeltaEvent {
pub sequence_number: u64,
pub item_id: String,
pub output_index: u32,
pub content_index: u32,
pub delta: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseReasoningTextDoneEvent {
pub sequence_number: u64,
pub item_id: String,
pub output_index: u32,
pub content_index: u32,
pub text: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseImageGenCallCompletedEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseImageGenCallGeneratingEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseImageGenCallInProgressEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseImageGenCallPartialImageEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
pub partial_image_index: u32,
pub partial_image_b64: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseMCPCallArgumentsDeltaEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
pub delta: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseMCPCallArgumentsDoneEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
pub arguments: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseMCPCallCompletedEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseMCPCallFailedEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseMCPCallInProgressEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseMCPListToolsCompletedEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseMCPListToolsFailedEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseMCPListToolsInProgressEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseCodeInterpreterCallInProgressEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseCodeInterpreterCallInterpretingEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseCodeInterpreterCallCompletedEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseCodeInterpreterCallCodeDeltaEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
pub delta: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseCodeInterpreterCallCodeDoneEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
pub code: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseOutputTextAnnotationAddedEvent {
pub sequence_number: u64,
pub output_index: u32,
pub content_index: u32,
pub annotation_index: u32,
pub item_id: String,
pub annotation: serde_json::Value,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseQueuedEvent {
pub sequence_number: u64,
pub response: Response,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseCustomToolCallInputDeltaEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
pub delta: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseCustomToolCallInputDoneEvent {
pub sequence_number: u64,
pub output_index: u32,
pub item_id: String,
pub input: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, ToSchema)]
pub struct ResponseErrorEvent {
pub sequence_number: u64,
pub code: Option<String>,
pub message: String,
pub param: Option<String>,
}