fromJson static method
Implementation
static ResponseEvent fromJson(Map<String, dynamic> json) {
final type = json['type'] as String?;
if (type == null) {
throw ArgumentError('Event JSON is missing a "type" field.');
}
switch (type) {
// ────────── Core response lifecycle ──────────
case 'response.created':
return ResponseCreated.fromJson(json);
case 'response.in_progress':
return ResponseInProgress.fromJson(json);
case 'response.completed':
return ResponseCompleted.fromJson(json);
case 'response.failed':
return ResponseFailed.fromJson(json);
case 'response.incomplete':
return ResponseIncomplete.fromJson(json);
case 'response.queued':
return ResponseQueued.fromJson(json);
// ────────── Output-item level ──────────
case 'response.output_item.added':
return ResponseOutputItemAdded.fromJson(json);
case 'response.output_item.done':
return ResponseOutputItemDone.fromJson(json);
// ────────── Content-part level ──────────
case 'response.content_part.added':
return ResponseContentPartAdded.fromJson(json);
case 'response.content_part.done':
return ResponseContentPartDone.fromJson(json);
// ────────── Text streaming ──────────
case 'response.output_text.delta':
return ResponseOutputTextDelta.fromJson(json);
case 'response.output_text.done':
return ResponseOutputTextDone.fromJson(json);
// ────────── Refusal streaming ──────────
case 'response.refusal.delta':
return ResponseRefusalDelta.fromJson(json);
case 'response.refusal.done':
return ResponseRefusalDone.fromJson(json);
// ────────── Function-call arguments streaming ──────────
case 'response.function_call_arguments.delta':
return ResponseFunctionCallArgumentsDelta.fromJson(json);
case 'response.function_call_arguments.done':
return ResponeFunctionCallArgumentsDone.fromJson(json);
// ────────── File-search lifecycle ──────────
case 'response.file_search_call.in_progress':
return ResponseFileSearchCallInProgress.fromJson(json);
case 'response.file_search_call.searching':
return ResponseFileSearchCallSearching.fromJson(json);
case 'response.file_search_call.completed':
return ResponseFileSearchCallCompleted.fromJson(json);
// ────────── Web-search lifecycle ──────────
case 'response.web_search_call.in_progress':
return ResponseWebSearchCallInProgress.fromJson(json);
case 'response.web_search_call.searching':
return ResponseWebSearchCallSearching.fromJson(json);
case 'response.web_search_call.completed':
return ResponseWebSearchCallCompleted.fromJson(json);
// ────────── Image-generation lifecycle ──────────
case 'response.image_generation_call.in_progress':
return ResponseImageGenerationCallInProgress.fromJson(json);
case 'response.image_generation_call.generating':
return ResponseImageGenerationCallGenerating.fromJson(json);
case 'response.image_generation_call.completed':
return ResponseImageGenerationCallCompleted.fromJson(json);
case 'response.image_generation_call.partial_image':
return ResponseImageGenerationCallPartialImage.fromJson(json);
// ────────── Reasoning summary parts & text ──────────
case 'response.reasoning_summary_part.added':
return ResponseReasoningSummaryPartAdded.fromJson(json);
case 'response.reasoning_summary_part.done':
return ResponseReasoningSummaryPartDone.fromJson(json);
case 'response.reasoning_summary_text.delta':
return ResponseReasoningSummaryTextDelta.fromJson(json);
case 'response.reasoning_summary_text.done':
return ResponseReasoningSummaryTextDone.fromJson(json);
// ────────── Reasoning content streaming ──────────
case 'response.reasoning.delta':
return ResponseReasoningDelta.fromJson(json);
case 'response.reasoning.done':
return ResponseReasoningDone.fromJson(json);
case 'response.reasoning_summary.delta':
return ResponseReasoningSummaryDelta.fromJson(json);
case 'response.reasoning_summary.done':
return ResponseReasoningSummaryDone.fromJson(json);
// ────────── Output-text annotations ──────────
case 'response.output_text.annotation.added':
return ResponseTextAnnotationAdded.fromJson(json);
// ────────── MCP tool-call lifecycle & arg streaming ──────────
case 'response.mcp_call_arguments.delta':
return ResponseMcpCallArgumentsDelta.fromJson(json);
case 'response.mcp_call_arguments.done':
return ResponseMcpCallArgumentsDone.fromJson(json);
case 'response.mcp_call.in_progress':
return ResponseMcpCallInProgress.fromJson(json);
case 'response.mcp_call.completed':
return ResponseMcpCallCompleted.fromJson(json);
case 'response.mcp_call.failed':
return ResponseMcpCallFailed.fromJson(json);
// ────────── MCP list-tools lifecycle ──────────
case 'response.mcp_list_tools.in_progress':
return ResponseMcpListToolsInProgress.fromJson(json);
case 'response.mcp_list_tools.completed':
return ResponseMcpListToolsCompleted.fromJson(json);
case 'response.mcp_list_tools.failed':
return ResponseMcpListToolsFailed.fromJson(json);
// ────────── Code-interpreter code streaming ──────────
case 'response.code_interpreter_call_code.delta':
return ResponseCodeInterpreterCallCodeDelta.fromJson(json);
case 'response.code_interpreter_call_code.done':
return ResponseCodeInterpreterCallCodeDone.fromJson(json);
// ────────── Code-interpreter call lifecycle ──────────
case 'response.code_interpreter_call.interpreting':
return ResponseCodeInterpreterCallInterpreting.fromJson(json);
case 'response.code_interpreter_call.in_progress':
return ResponseCodeInterpreterCallInProgress.fromJson(json);
case 'response.code_interpreter_call.completed':
return ResponseCodeInterpreterCallCompleted.fromJson(json);
// ────────── Generic stream-level error ──────────
case 'error':
return ErrorEvent.fromJson(json["error"]);
// ────────── Unknown type ──────────
default:
return OtherResponseEvent(json);
}
}