openai 0.20.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -0
  3. data/README.md +1 -1
  4. data/lib/openai/client.rb +4 -0
  5. data/lib/openai/internal/stream.rb +3 -2
  6. data/lib/openai/models/audio/speech_create_params.rb +6 -0
  7. data/lib/openai/models/chat/chat_completion_audio_param.rb +6 -0
  8. data/lib/openai/models/evals/run_cancel_response.rb +2 -2
  9. data/lib/openai/models/evals/run_create_params.rb +2 -2
  10. data/lib/openai/models/evals/run_create_response.rb +2 -2
  11. data/lib/openai/models/evals/run_list_response.rb +2 -2
  12. data/lib/openai/models/evals/run_retrieve_response.rb +2 -2
  13. data/lib/openai/models/realtime/client_secret_create_params.rb +93 -0
  14. data/lib/openai/models/realtime/client_secret_create_response.rb +300 -0
  15. data/lib/openai/models/realtime/conversation_created_event.rb +70 -0
  16. data/lib/openai/models/realtime/conversation_item.rb +44 -0
  17. data/lib/openai/models/realtime/conversation_item_added.rb +48 -0
  18. data/lib/openai/models/realtime/conversation_item_create_event.rb +57 -0
  19. data/lib/openai/models/realtime/conversation_item_created_event.rb +59 -0
  20. data/lib/openai/models/realtime/conversation_item_delete_event.rb +39 -0
  21. data/lib/openai/models/realtime/conversation_item_deleted_event.rb +38 -0
  22. data/lib/openai/models/realtime/conversation_item_done.rb +48 -0
  23. data/lib/openai/models/realtime/conversation_item_input_audio_transcription_completed_event.rb +189 -0
  24. data/lib/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rb +63 -0
  25. data/lib/openai/models/realtime/conversation_item_input_audio_transcription_failed_event.rb +96 -0
  26. data/lib/openai/models/realtime/conversation_item_input_audio_transcription_segment.rb +84 -0
  27. data/lib/openai/models/realtime/conversation_item_retrieve_event.rb +40 -0
  28. data/lib/openai/models/realtime/conversation_item_truncate_event.rb +68 -0
  29. data/lib/openai/models/realtime/conversation_item_truncated_event.rb +60 -0
  30. data/lib/openai/models/realtime/conversation_item_with_reference.rb +235 -0
  31. data/lib/openai/models/realtime/input_audio_buffer_append_event.rb +49 -0
  32. data/lib/openai/models/realtime/input_audio_buffer_clear_event.rb +29 -0
  33. data/lib/openai/models/realtime/input_audio_buffer_cleared_event.rb +29 -0
  34. data/lib/openai/models/realtime/input_audio_buffer_commit_event.rb +35 -0
  35. data/lib/openai/models/realtime/input_audio_buffer_committed_event.rb +51 -0
  36. data/lib/openai/models/realtime/input_audio_buffer_speech_started_event.rb +59 -0
  37. data/lib/openai/models/realtime/input_audio_buffer_speech_stopped_event.rb +51 -0
  38. data/lib/openai/models/realtime/input_audio_buffer_timeout_triggered.rb +52 -0
  39. data/lib/openai/models/realtime/log_prob_properties.rb +39 -0
  40. data/lib/openai/models/realtime/mcp_list_tools_completed.rb +36 -0
  41. data/lib/openai/models/realtime/mcp_list_tools_failed.rb +36 -0
  42. data/lib/openai/models/realtime/mcp_list_tools_in_progress.rb +36 -0
  43. data/lib/openai/models/realtime/output_audio_buffer_clear_event.rb +32 -0
  44. data/lib/openai/models/realtime/rate_limits_updated_event.rb +91 -0
  45. data/lib/openai/models/realtime/realtime_audio_config.rb +446 -0
  46. data/lib/openai/models/realtime/realtime_client_event.rb +123 -0
  47. data/lib/openai/models/realtime/realtime_client_secret_config.rb +64 -0
  48. data/lib/openai/models/realtime/realtime_conversation_item_assistant_message.rb +118 -0
  49. data/lib/openai/models/realtime/realtime_conversation_item_function_call.rb +94 -0
  50. data/lib/openai/models/realtime/realtime_conversation_item_function_call_output.rb +86 -0
  51. data/lib/openai/models/realtime/realtime_conversation_item_system_message.rb +118 -0
  52. data/lib/openai/models/realtime/realtime_conversation_item_user_message.rb +135 -0
  53. data/lib/openai/models/realtime/realtime_error.rb +55 -0
  54. data/lib/openai/models/realtime/realtime_error_event.rb +38 -0
  55. data/lib/openai/models/realtime/realtime_mcp_approval_request.rb +52 -0
  56. data/lib/openai/models/realtime/realtime_mcp_approval_response.rb +52 -0
  57. data/lib/openai/models/realtime/realtime_mcp_list_tools.rb +84 -0
  58. data/lib/openai/models/realtime/realtime_mcp_protocol_error.rb +29 -0
  59. data/lib/openai/models/realtime/realtime_mcp_tool_call.rb +94 -0
  60. data/lib/openai/models/realtime/realtime_mcp_tool_execution_error.rb +23 -0
  61. data/lib/openai/models/realtime/realtime_mcphttp_error.rb +29 -0
  62. data/lib/openai/models/realtime/realtime_response.rb +259 -0
  63. data/lib/openai/models/realtime/realtime_response_status.rb +103 -0
  64. data/lib/openai/models/realtime/realtime_response_usage.rb +61 -0
  65. data/lib/openai/models/realtime/realtime_response_usage_input_token_details.rb +36 -0
  66. data/lib/openai/models/realtime/realtime_response_usage_output_token_details.rb +28 -0
  67. data/lib/openai/models/realtime/realtime_server_event.rb +369 -0
  68. data/lib/openai/models/realtime/realtime_session.rb +696 -0
  69. data/lib/openai/models/realtime/realtime_session_create_request.rb +234 -0
  70. data/lib/openai/models/realtime/realtime_session_create_response.rb +579 -0
  71. data/lib/openai/models/realtime/realtime_tool_choice_config.rb +32 -0
  72. data/lib/openai/models/realtime/realtime_tools_config.rb +11 -0
  73. data/lib/openai/models/realtime/realtime_tools_config_union.rb +379 -0
  74. data/lib/openai/models/realtime/realtime_tracing_config.rb +61 -0
  75. data/lib/openai/models/realtime/realtime_transcription_session_create_request.rb +312 -0
  76. data/lib/openai/models/realtime/realtime_truncation.rb +67 -0
  77. data/lib/openai/models/realtime/response_audio_delta_event.rb +68 -0
  78. data/lib/openai/models/realtime/response_audio_done_event.rb +61 -0
  79. data/lib/openai/models/realtime/response_audio_transcript_delta_event.rb +68 -0
  80. data/lib/openai/models/realtime/response_audio_transcript_done_event.rb +70 -0
  81. data/lib/openai/models/realtime/response_cancel_event.rb +42 -0
  82. data/lib/openai/models/realtime/response_content_part_added_event.rb +120 -0
  83. data/lib/openai/models/realtime/response_content_part_done_event.rb +120 -0
  84. data/lib/openai/models/realtime/response_create_event.rb +391 -0
  85. data/lib/openai/models/realtime/response_created_event.rb +37 -0
  86. data/lib/openai/models/realtime/response_done_event.rb +38 -0
  87. data/lib/openai/models/realtime/response_function_call_arguments_delta_event.rb +72 -0
  88. data/lib/openai/models/realtime/response_function_call_arguments_done_event.rb +73 -0
  89. data/lib/openai/models/realtime/response_mcp_call_arguments_delta.rb +68 -0
  90. data/lib/openai/models/realtime/response_mcp_call_arguments_done.rb +60 -0
  91. data/lib/openai/models/realtime/response_mcp_call_completed.rb +44 -0
  92. data/lib/openai/models/realtime/response_mcp_call_failed.rb +44 -0
  93. data/lib/openai/models/realtime/response_mcp_call_in_progress.rb +44 -0
  94. data/lib/openai/models/realtime/response_output_item_added_event.rb +52 -0
  95. data/lib/openai/models/realtime/response_output_item_done_event.rb +53 -0
  96. data/lib/openai/models/realtime/response_text_delta_event.rb +68 -0
  97. data/lib/openai/models/realtime/response_text_done_event.rb +69 -0
  98. data/lib/openai/models/realtime/session_created_event.rb +38 -0
  99. data/lib/openai/models/realtime/session_update_event.rb +44 -0
  100. data/lib/openai/models/realtime/session_updated_event.rb +37 -0
  101. data/lib/openai/models/realtime/transcription_session_created.rb +278 -0
  102. data/lib/openai/models/realtime/transcription_session_update.rb +36 -0
  103. data/lib/openai/models/realtime/transcription_session_updated_event.rb +279 -0
  104. data/lib/openai/models/responses/response.rb +6 -3
  105. data/lib/openai/models/responses/response_create_params.rb +6 -3
  106. data/lib/openai/models/responses/tool.rb +3 -156
  107. data/lib/openai/models/responses/web_search_preview_tool.rb +124 -0
  108. data/lib/openai/models/responses/web_search_tool.rb +58 -21
  109. data/lib/openai/models/webhooks/realtime_call_incoming_webhook_event.rb +119 -0
  110. data/lib/openai/models/webhooks/unwrap_webhook_event.rb +4 -1
  111. data/lib/openai/models.rb +2 -0
  112. data/lib/openai/resources/realtime/client_secrets.rb +44 -0
  113. data/lib/openai/resources/realtime.rb +18 -0
  114. data/lib/openai/resources/responses.rb +2 -2
  115. data/lib/openai/resources/webhooks.rb +1 -1
  116. data/lib/openai/version.rb +1 -1
  117. data/lib/openai.rb +95 -0
  118. data/rbi/openai/client.rbi +3 -0
  119. data/rbi/openai/models/audio/speech_create_params.rbi +10 -0
  120. data/rbi/openai/models/chat/chat_completion_audio_param.rbi +10 -0
  121. data/rbi/openai/models/evals/run_cancel_response.rbi +4 -4
  122. data/rbi/openai/models/evals/run_create_params.rbi +8 -8
  123. data/rbi/openai/models/evals/run_create_response.rbi +4 -4
  124. data/rbi/openai/models/evals/run_list_response.rbi +4 -4
  125. data/rbi/openai/models/evals/run_retrieve_response.rbi +4 -4
  126. data/rbi/openai/models/realtime/client_secret_create_params.rbi +222 -0
  127. data/rbi/openai/models/realtime/client_secret_create_response.rbi +676 -0
  128. data/rbi/openai/models/realtime/conversation_created_event.rbi +164 -0
  129. data/rbi/openai/models/realtime/conversation_item.rbi +35 -0
  130. data/rbi/openai/models/realtime/conversation_item_added.rbi +105 -0
  131. data/rbi/openai/models/realtime/conversation_item_create_event.rbi +123 -0
  132. data/rbi/openai/models/realtime/conversation_item_created_event.rbi +117 -0
  133. data/rbi/openai/models/realtime/conversation_item_delete_event.rbi +57 -0
  134. data/rbi/openai/models/realtime/conversation_item_deleted_event.rbi +53 -0
  135. data/rbi/openai/models/realtime/conversation_item_done.rbi +105 -0
  136. data/rbi/openai/models/realtime/conversation_item_input_audio_transcription_completed_event.rbi +305 -0
  137. data/rbi/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rbi +93 -0
  138. data/rbi/openai/models/realtime/conversation_item_input_audio_transcription_failed_event.rbi +158 -0
  139. data/rbi/openai/models/realtime/conversation_item_input_audio_transcription_segment.rbi +107 -0
  140. data/rbi/openai/models/realtime/conversation_item_retrieve_event.rbi +58 -0
  141. data/rbi/openai/models/realtime/conversation_item_truncate_event.rbi +94 -0
  142. data/rbi/openai/models/realtime/conversation_item_truncated_event.rbi +80 -0
  143. data/rbi/openai/models/realtime/conversation_item_with_reference.rbi +549 -0
  144. data/rbi/openai/models/realtime/input_audio_buffer_append_event.rbi +65 -0
  145. data/rbi/openai/models/realtime/input_audio_buffer_clear_event.rbi +43 -0
  146. data/rbi/openai/models/realtime/input_audio_buffer_cleared_event.rbi +40 -0
  147. data/rbi/openai/models/realtime/input_audio_buffer_commit_event.rbi +49 -0
  148. data/rbi/openai/models/realtime/input_audio_buffer_committed_event.rbi +72 -0
  149. data/rbi/openai/models/realtime/input_audio_buffer_speech_started_event.rbi +82 -0
  150. data/rbi/openai/models/realtime/input_audio_buffer_speech_stopped_event.rbi +73 -0
  151. data/rbi/openai/models/realtime/input_audio_buffer_timeout_triggered.rbi +75 -0
  152. data/rbi/openai/models/realtime/log_prob_properties.rbi +55 -0
  153. data/rbi/openai/models/realtime/mcp_list_tools_completed.rbi +51 -0
  154. data/rbi/openai/models/realtime/mcp_list_tools_failed.rbi +51 -0
  155. data/rbi/openai/models/realtime/mcp_list_tools_in_progress.rbi +51 -0
  156. data/rbi/openai/models/realtime/output_audio_buffer_clear_event.rbi +46 -0
  157. data/rbi/openai/models/realtime/rate_limits_updated_event.rbi +187 -0
  158. data/rbi/openai/models/realtime/realtime_audio_config.rbi +1004 -0
  159. data/rbi/openai/models/realtime/realtime_client_event.rbi +38 -0
  160. data/rbi/openai/models/realtime/realtime_client_secret_config.rbi +147 -0
  161. data/rbi/openai/models/realtime/realtime_conversation_item_assistant_message.rbi +292 -0
  162. data/rbi/openai/models/realtime/realtime_conversation_item_function_call.rbi +199 -0
  163. data/rbi/openai/models/realtime/realtime_conversation_item_function_call_output.rbi +188 -0
  164. data/rbi/openai/models/realtime/realtime_conversation_item_system_message.rbi +292 -0
  165. data/rbi/openai/models/realtime/realtime_conversation_item_user_message.rbi +319 -0
  166. data/rbi/openai/models/realtime/realtime_error.rbi +72 -0
  167. data/rbi/openai/models/realtime/realtime_error_event.rbi +64 -0
  168. data/rbi/openai/models/realtime/realtime_mcp_approval_request.rbi +75 -0
  169. data/rbi/openai/models/realtime/realtime_mcp_approval_response.rbi +75 -0
  170. data/rbi/openai/models/realtime/realtime_mcp_list_tools.rbi +131 -0
  171. data/rbi/openai/models/realtime/realtime_mcp_protocol_error.rbi +40 -0
  172. data/rbi/openai/models/realtime/realtime_mcp_tool_call.rbi +145 -0
  173. data/rbi/openai/models/realtime/realtime_mcp_tool_execution_error.rbi +31 -0
  174. data/rbi/openai/models/realtime/realtime_mcphttp_error.rbi +40 -0
  175. data/rbi/openai/models/realtime/realtime_response.rbi +573 -0
  176. data/rbi/openai/models/realtime/realtime_response_status.rbi +233 -0
  177. data/rbi/openai/models/realtime/realtime_response_usage.rbi +121 -0
  178. data/rbi/openai/models/realtime/realtime_response_usage_input_token_details.rbi +68 -0
  179. data/rbi/openai/models/realtime/realtime_response_usage_output_token_details.rbi +51 -0
  180. data/rbi/openai/models/realtime/realtime_server_event.rbi +311 -0
  181. data/rbi/openai/models/realtime/realtime_session.rbi +1426 -0
  182. data/rbi/openai/models/realtime/realtime_session_create_request.rbi +560 -0
  183. data/rbi/openai/models/realtime/realtime_session_create_response.rbi +1249 -0
  184. data/rbi/openai/models/realtime/realtime_tool_choice_config.rbi +30 -0
  185. data/rbi/openai/models/realtime/realtime_tools_config.rbi +15 -0
  186. data/rbi/openai/models/realtime/realtime_tools_config_union.rbi +755 -0
  187. data/rbi/openai/models/realtime/realtime_tracing_config.rbi +95 -0
  188. data/rbi/openai/models/realtime/realtime_transcription_session_create_request.rbi +703 -0
  189. data/rbi/openai/models/realtime/realtime_truncation.rbi +117 -0
  190. data/rbi/openai/models/realtime/response_audio_delta_event.rbi +91 -0
  191. data/rbi/openai/models/realtime/response_audio_done_event.rbi +84 -0
  192. data/rbi/openai/models/realtime/response_audio_transcript_delta_event.rbi +91 -0
  193. data/rbi/openai/models/realtime/response_audio_transcript_done_event.rbi +93 -0
  194. data/rbi/openai/models/realtime/response_cancel_event.rbi +63 -0
  195. data/rbi/openai/models/realtime/response_content_part_added_event.rbi +219 -0
  196. data/rbi/openai/models/realtime/response_content_part_done_event.rbi +219 -0
  197. data/rbi/openai/models/realtime/response_create_event.rbi +863 -0
  198. data/rbi/openai/models/realtime/response_created_event.rbi +65 -0
  199. data/rbi/openai/models/realtime/response_done_event.rbi +66 -0
  200. data/rbi/openai/models/realtime/response_function_call_arguments_delta_event.rbi +91 -0
  201. data/rbi/openai/models/realtime/response_function_call_arguments_done_event.rbi +92 -0
  202. data/rbi/openai/models/realtime/response_mcp_call_arguments_delta.rbi +91 -0
  203. data/rbi/openai/models/realtime/response_mcp_call_arguments_done.rbi +83 -0
  204. data/rbi/openai/models/realtime/response_mcp_call_completed.rbi +67 -0
  205. data/rbi/openai/models/realtime/response_mcp_call_failed.rbi +67 -0
  206. data/rbi/openai/models/realtime/response_mcp_call_in_progress.rbi +67 -0
  207. data/rbi/openai/models/realtime/response_output_item_added_event.rbi +111 -0
  208. data/rbi/openai/models/realtime/response_output_item_done_event.rbi +112 -0
  209. data/rbi/openai/models/realtime/response_text_delta_event.rbi +91 -0
  210. data/rbi/openai/models/realtime/response_text_done_event.rbi +92 -0
  211. data/rbi/openai/models/realtime/session_created_event.rbi +64 -0
  212. data/rbi/openai/models/realtime/session_update_event.rbi +77 -0
  213. data/rbi/openai/models/realtime/session_updated_event.rbi +63 -0
  214. data/rbi/openai/models/realtime/transcription_session_created.rbi +653 -0
  215. data/rbi/openai/models/realtime/transcription_session_update.rbi +74 -0
  216. data/rbi/openai/models/realtime/transcription_session_updated_event.rbi +657 -0
  217. data/rbi/openai/models/responses/response.rbi +10 -4
  218. data/rbi/openai/models/responses/response_create_params.rbi +16 -10
  219. data/rbi/openai/models/responses/tool.rbi +2 -348
  220. data/rbi/openai/models/responses/web_search_preview_tool.rbi +245 -0
  221. data/rbi/openai/models/responses/web_search_tool.rbi +120 -23
  222. data/rbi/openai/models/webhooks/realtime_call_incoming_webhook_event.rbi +222 -0
  223. data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +1 -0
  224. data/rbi/openai/models.rbi +2 -0
  225. data/rbi/openai/resources/realtime/client_secrets.rbi +38 -0
  226. data/rbi/openai/resources/realtime.rbi +15 -0
  227. data/rbi/openai/resources/responses.rbi +12 -6
  228. data/rbi/openai/resources/webhooks.rbi +1 -0
  229. data/sig/openai/client.rbs +2 -0
  230. data/sig/openai/models/audio/speech_create_params.rbs +4 -0
  231. data/sig/openai/models/chat/chat_completion_audio_param.rbs +4 -0
  232. data/sig/openai/models/realtime/client_secret_create_params.rbs +89 -0
  233. data/sig/openai/models/realtime/client_secret_create_response.rbs +292 -0
  234. data/sig/openai/models/realtime/conversation_created_event.rbs +70 -0
  235. data/sig/openai/models/realtime/conversation_item.rbs +22 -0
  236. data/sig/openai/models/realtime/conversation_item_added.rbs +37 -0
  237. data/sig/openai/models/realtime/conversation_item_create_event.rbs +41 -0
  238. data/sig/openai/models/realtime/conversation_item_created_event.rbs +37 -0
  239. data/sig/openai/models/realtime/conversation_item_delete_event.rbs +30 -0
  240. data/sig/openai/models/realtime/conversation_item_deleted_event.rbs +32 -0
  241. data/sig/openai/models/realtime/conversation_item_done.rbs +37 -0
  242. data/sig/openai/models/realtime/conversation_item_input_audio_transcription_completed_event.rbs +136 -0
  243. data/sig/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rbs +51 -0
  244. data/sig/openai/models/realtime/conversation_item_input_audio_transcription_failed_event.rbs +77 -0
  245. data/sig/openai/models/realtime/conversation_item_input_audio_transcription_segment.rbs +62 -0
  246. data/sig/openai/models/realtime/conversation_item_retrieve_event.rbs +34 -0
  247. data/sig/openai/models/realtime/conversation_item_truncate_event.rbs +44 -0
  248. data/sig/openai/models/realtime/conversation_item_truncated_event.rbs +42 -0
  249. data/sig/openai/models/realtime/conversation_item_with_reference.rbs +207 -0
  250. data/sig/openai/models/realtime/input_audio_buffer_append_event.rbs +30 -0
  251. data/sig/openai/models/realtime/input_audio_buffer_clear_event.rbs +23 -0
  252. data/sig/openai/models/realtime/input_audio_buffer_cleared_event.rbs +24 -0
  253. data/sig/openai/models/realtime/input_audio_buffer_commit_event.rbs +23 -0
  254. data/sig/openai/models/realtime/input_audio_buffer_committed_event.rbs +37 -0
  255. data/sig/openai/models/realtime/input_audio_buffer_speech_started_event.rbs +37 -0
  256. data/sig/openai/models/realtime/input_audio_buffer_speech_stopped_event.rbs +37 -0
  257. data/sig/openai/models/realtime/input_audio_buffer_timeout_triggered.rbs +42 -0
  258. data/sig/openai/models/realtime/log_prob_properties.rbs +28 -0
  259. data/sig/openai/models/realtime/mcp_list_tools_completed.rbs +28 -0
  260. data/sig/openai/models/realtime/mcp_list_tools_failed.rbs +28 -0
  261. data/sig/openai/models/realtime/mcp_list_tools_in_progress.rbs +32 -0
  262. data/sig/openai/models/realtime/output_audio_buffer_clear_event.rbs +23 -0
  263. data/sig/openai/models/realtime/rate_limits_updated_event.rbs +85 -0
  264. data/sig/openai/models/realtime/realtime_audio_config.rbs +354 -0
  265. data/sig/openai/models/realtime/realtime_client_event.rbs +25 -0
  266. data/sig/openai/models/realtime/realtime_client_secret_config.rbs +60 -0
  267. data/sig/openai/models/realtime/realtime_conversation_item_assistant_message.rbs +117 -0
  268. data/sig/openai/models/realtime/realtime_conversation_item_function_call.rbs +86 -0
  269. data/sig/openai/models/realtime/realtime_conversation_item_function_call_output.rbs +79 -0
  270. data/sig/openai/models/realtime/realtime_conversation_item_system_message.rbs +117 -0
  271. data/sig/openai/models/realtime/realtime_conversation_item_user_message.rbs +132 -0
  272. data/sig/openai/models/realtime/realtime_error.rbs +42 -0
  273. data/sig/openai/models/realtime/realtime_error_event.rbs +32 -0
  274. data/sig/openai/models/realtime/realtime_mcp_approval_request.rbs +42 -0
  275. data/sig/openai/models/realtime/realtime_mcp_approval_response.rbs +42 -0
  276. data/sig/openai/models/realtime/realtime_mcp_list_tools.rbs +71 -0
  277. data/sig/openai/models/realtime/realtime_mcp_protocol_error.rbs +28 -0
  278. data/sig/openai/models/realtime/realtime_mcp_tool_call.rbs +68 -0
  279. data/sig/openai/models/realtime/realtime_mcp_tool_execution_error.rbs +18 -0
  280. data/sig/openai/models/realtime/realtime_mcphttp_error.rbs +24 -0
  281. data/sig/openai/models/realtime/realtime_response.rbs +210 -0
  282. data/sig/openai/models/realtime/realtime_response_status.rbs +90 -0
  283. data/sig/openai/models/realtime/realtime_response_usage.rbs +56 -0
  284. data/sig/openai/models/realtime/realtime_response_usage_input_token_details.rbs +34 -0
  285. data/sig/openai/models/realtime/realtime_response_usage_output_token_details.rbs +22 -0
  286. data/sig/openai/models/realtime/realtime_server_event.rbs +168 -0
  287. data/sig/openai/models/realtime/realtime_session.rbs +521 -0
  288. data/sig/openai/models/realtime/realtime_session_create_request.rbs +178 -0
  289. data/sig/openai/models/realtime/realtime_session_create_response.rbs +526 -0
  290. data/sig/openai/models/realtime/realtime_tool_choice_config.rbs +16 -0
  291. data/sig/openai/models/realtime/realtime_tools_config.rbs +10 -0
  292. data/sig/openai/models/realtime/realtime_tools_config_union.rbs +280 -0
  293. data/sig/openai/models/realtime/realtime_tracing_config.rbs +43 -0
  294. data/sig/openai/models/realtime/realtime_transcription_session_create_request.rbs +242 -0
  295. data/sig/openai/models/realtime/realtime_truncation.rbs +53 -0
  296. data/sig/openai/models/realtime/response_audio_delta_event.rbs +52 -0
  297. data/sig/openai/models/realtime/response_audio_done_event.rbs +47 -0
  298. data/sig/openai/models/realtime/response_audio_transcript_delta_event.rbs +52 -0
  299. data/sig/openai/models/realtime/response_audio_transcript_done_event.rbs +52 -0
  300. data/sig/openai/models/realtime/response_cancel_event.rbs +32 -0
  301. data/sig/openai/models/realtime/response_content_part_added_event.rbs +105 -0
  302. data/sig/openai/models/realtime/response_content_part_done_event.rbs +105 -0
  303. data/sig/openai/models/realtime/response_create_event.rbs +281 -0
  304. data/sig/openai/models/realtime/response_created_event.rbs +32 -0
  305. data/sig/openai/models/realtime/response_done_event.rbs +32 -0
  306. data/sig/openai/models/realtime/response_function_call_arguments_delta_event.rbs +52 -0
  307. data/sig/openai/models/realtime/response_function_call_arguments_done_event.rbs +52 -0
  308. data/sig/openai/models/realtime/response_mcp_call_arguments_delta.rbs +52 -0
  309. data/sig/openai/models/realtime/response_mcp_call_arguments_done.rbs +47 -0
  310. data/sig/openai/models/realtime/response_mcp_call_completed.rbs +37 -0
  311. data/sig/openai/models/realtime/response_mcp_call_failed.rbs +37 -0
  312. data/sig/openai/models/realtime/response_mcp_call_in_progress.rbs +37 -0
  313. data/sig/openai/models/realtime/response_output_item_added_event.rbs +42 -0
  314. data/sig/openai/models/realtime/response_output_item_done_event.rbs +42 -0
  315. data/sig/openai/models/realtime/response_text_delta_event.rbs +52 -0
  316. data/sig/openai/models/realtime/response_text_done_event.rbs +52 -0
  317. data/sig/openai/models/realtime/session_created_event.rbs +32 -0
  318. data/sig/openai/models/realtime/session_update_event.rbs +34 -0
  319. data/sig/openai/models/realtime/session_updated_event.rbs +32 -0
  320. data/sig/openai/models/realtime/transcription_session_created.rbs +282 -0
  321. data/sig/openai/models/realtime/transcription_session_update.rbs +34 -0
  322. data/sig/openai/models/realtime/transcription_session_updated_event.rbs +282 -0
  323. data/sig/openai/models/responses/tool.rbs +1 -121
  324. data/sig/openai/models/responses/web_search_preview_tool.rbs +96 -0
  325. data/sig/openai/models/responses/web_search_tool.rbs +39 -10
  326. data/sig/openai/models/webhooks/realtime_call_incoming_webhook_event.rbs +90 -0
  327. data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +1 -0
  328. data/sig/openai/models.rbs +2 -0
  329. data/sig/openai/resources/realtime/client_secrets.rbs +15 -0
  330. data/sig/openai/resources/realtime.rbs +9 -0
  331. data/sig/openai/resources/webhooks.rbs +1 -0
  332. metadata +287 -2
@@ -0,0 +1,573 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Realtime
6
+ class RealtimeResponse < OpenAI::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(OpenAI::Realtime::RealtimeResponse, OpenAI::Internal::AnyHash)
10
+ end
11
+
12
+ # The unique ID of the response.
13
+ sig { returns(T.nilable(String)) }
14
+ attr_reader :id
15
+
16
+ sig { params(id: String).void }
17
+ attr_writer :id
18
+
19
+ # Which conversation the response is added to, determined by the `conversation`
20
+ # field in the `response.create` event. If `auto`, the response will be added to
21
+ # the default conversation and the value of `conversation_id` will be an id like
22
+ # `conv_1234`. If `none`, the response will not be added to any conversation and
23
+ # the value of `conversation_id` will be `null`. If responses are being triggered
24
+ # by server VAD, the response will be added to the default conversation, thus the
25
+ # `conversation_id` will be an id like `conv_1234`.
26
+ sig { returns(T.nilable(String)) }
27
+ attr_reader :conversation_id
28
+
29
+ sig { params(conversation_id: String).void }
30
+ attr_writer :conversation_id
31
+
32
+ # Maximum number of output tokens for a single assistant response, inclusive of
33
+ # tool calls, that was used in this response.
34
+ sig { returns(T.nilable(T.any(Integer, Symbol))) }
35
+ attr_reader :max_output_tokens
36
+
37
+ sig { params(max_output_tokens: T.any(Integer, Symbol)).void }
38
+ attr_writer :max_output_tokens
39
+
40
+ # Set of 16 key-value pairs that can be attached to an object. This can be useful
41
+ # for storing additional information about the object in a structured format, and
42
+ # querying for objects via API or the dashboard.
43
+ #
44
+ # Keys are strings with a maximum length of 64 characters. Values are strings with
45
+ # a maximum length of 512 characters.
46
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
47
+ attr_accessor :metadata
48
+
49
+ # The set of modalities the model used to respond. If there are multiple
50
+ # modalities, the model will pick one, for example if `modalities` is
51
+ # `["text", "audio"]`, the model could be responding in either text or audio.
52
+ sig do
53
+ returns(
54
+ T.nilable(
55
+ T::Array[OpenAI::Realtime::RealtimeResponse::Modality::OrSymbol]
56
+ )
57
+ )
58
+ end
59
+ attr_reader :modalities
60
+
61
+ sig do
62
+ params(
63
+ modalities:
64
+ T::Array[OpenAI::Realtime::RealtimeResponse::Modality::OrSymbol]
65
+ ).void
66
+ end
67
+ attr_writer :modalities
68
+
69
+ # The object type, must be `realtime.response`.
70
+ sig do
71
+ returns(
72
+ T.nilable(OpenAI::Realtime::RealtimeResponse::Object::OrSymbol)
73
+ )
74
+ end
75
+ attr_reader :object
76
+
77
+ sig do
78
+ params(
79
+ object: OpenAI::Realtime::RealtimeResponse::Object::OrSymbol
80
+ ).void
81
+ end
82
+ attr_writer :object
83
+
84
+ # The list of output items generated by the response.
85
+ sig do
86
+ returns(
87
+ T.nilable(
88
+ T::Array[
89
+ T.any(
90
+ OpenAI::Realtime::RealtimeConversationItemSystemMessage,
91
+ OpenAI::Realtime::RealtimeConversationItemUserMessage,
92
+ OpenAI::Realtime::RealtimeConversationItemAssistantMessage,
93
+ OpenAI::Realtime::RealtimeConversationItemFunctionCall,
94
+ OpenAI::Realtime::RealtimeConversationItemFunctionCallOutput,
95
+ OpenAI::Realtime::RealtimeMcpApprovalResponse,
96
+ OpenAI::Realtime::RealtimeMcpListTools,
97
+ OpenAI::Realtime::RealtimeMcpToolCall,
98
+ OpenAI::Realtime::RealtimeMcpApprovalRequest
99
+ )
100
+ ]
101
+ )
102
+ )
103
+ end
104
+ attr_reader :output
105
+
106
+ sig do
107
+ params(
108
+ output:
109
+ T::Array[
110
+ T.any(
111
+ OpenAI::Realtime::RealtimeConversationItemSystemMessage::OrHash,
112
+ OpenAI::Realtime::RealtimeConversationItemUserMessage::OrHash,
113
+ OpenAI::Realtime::RealtimeConversationItemAssistantMessage::OrHash,
114
+ OpenAI::Realtime::RealtimeConversationItemFunctionCall::OrHash,
115
+ OpenAI::Realtime::RealtimeConversationItemFunctionCallOutput::OrHash,
116
+ OpenAI::Realtime::RealtimeMcpApprovalResponse::OrHash,
117
+ OpenAI::Realtime::RealtimeMcpListTools::OrHash,
118
+ OpenAI::Realtime::RealtimeMcpToolCall::OrHash,
119
+ OpenAI::Realtime::RealtimeMcpApprovalRequest::OrHash
120
+ )
121
+ ]
122
+ ).void
123
+ end
124
+ attr_writer :output
125
+
126
+ # The format of output audio. Options are `pcm16`, `g711_ulaw`, or `g711_alaw`.
127
+ sig do
128
+ returns(
129
+ T.nilable(
130
+ OpenAI::Realtime::RealtimeResponse::OutputAudioFormat::OrSymbol
131
+ )
132
+ )
133
+ end
134
+ attr_reader :output_audio_format
135
+
136
+ sig do
137
+ params(
138
+ output_audio_format:
139
+ OpenAI::Realtime::RealtimeResponse::OutputAudioFormat::OrSymbol
140
+ ).void
141
+ end
142
+ attr_writer :output_audio_format
143
+
144
+ # The final status of the response (`completed`, `cancelled`, `failed`, or
145
+ # `incomplete`, `in_progress`).
146
+ sig do
147
+ returns(
148
+ T.nilable(OpenAI::Realtime::RealtimeResponse::Status::OrSymbol)
149
+ )
150
+ end
151
+ attr_reader :status
152
+
153
+ sig do
154
+ params(
155
+ status: OpenAI::Realtime::RealtimeResponse::Status::OrSymbol
156
+ ).void
157
+ end
158
+ attr_writer :status
159
+
160
+ # Additional details about the status.
161
+ sig { returns(T.nilable(OpenAI::Realtime::RealtimeResponseStatus)) }
162
+ attr_reader :status_details
163
+
164
+ sig do
165
+ params(
166
+ status_details: OpenAI::Realtime::RealtimeResponseStatus::OrHash
167
+ ).void
168
+ end
169
+ attr_writer :status_details
170
+
171
+ # Sampling temperature for the model, limited to [0.6, 1.2]. Defaults to 0.8.
172
+ sig { returns(T.nilable(Float)) }
173
+ attr_reader :temperature
174
+
175
+ sig { params(temperature: Float).void }
176
+ attr_writer :temperature
177
+
178
+ # Usage statistics for the Response, this will correspond to billing. A Realtime
179
+ # API session will maintain a conversation context and append new Items to the
180
+ # Conversation, thus output from previous turns (text and audio tokens) will
181
+ # become the input for later turns.
182
+ sig { returns(T.nilable(OpenAI::Realtime::RealtimeResponseUsage)) }
183
+ attr_reader :usage
184
+
185
+ sig do
186
+ params(usage: OpenAI::Realtime::RealtimeResponseUsage::OrHash).void
187
+ end
188
+ attr_writer :usage
189
+
190
+ # The voice the model used to respond. Current voice options are `alloy`, `ash`,
191
+ # `ballad`, `coral`, `echo`, `sage`, `shimmer`, and `verse`.
192
+ sig do
193
+ returns(
194
+ T.nilable(
195
+ T.any(String, OpenAI::Realtime::RealtimeResponse::Voice::OrSymbol)
196
+ )
197
+ )
198
+ end
199
+ attr_reader :voice
200
+
201
+ sig do
202
+ params(
203
+ voice:
204
+ T.any(String, OpenAI::Realtime::RealtimeResponse::Voice::OrSymbol)
205
+ ).void
206
+ end
207
+ attr_writer :voice
208
+
209
+ # The response resource.
210
+ sig do
211
+ params(
212
+ id: String,
213
+ conversation_id: String,
214
+ max_output_tokens: T.any(Integer, Symbol),
215
+ metadata: T.nilable(T::Hash[Symbol, String]),
216
+ modalities:
217
+ T::Array[OpenAI::Realtime::RealtimeResponse::Modality::OrSymbol],
218
+ object: OpenAI::Realtime::RealtimeResponse::Object::OrSymbol,
219
+ output:
220
+ T::Array[
221
+ T.any(
222
+ OpenAI::Realtime::RealtimeConversationItemSystemMessage::OrHash,
223
+ OpenAI::Realtime::RealtimeConversationItemUserMessage::OrHash,
224
+ OpenAI::Realtime::RealtimeConversationItemAssistantMessage::OrHash,
225
+ OpenAI::Realtime::RealtimeConversationItemFunctionCall::OrHash,
226
+ OpenAI::Realtime::RealtimeConversationItemFunctionCallOutput::OrHash,
227
+ OpenAI::Realtime::RealtimeMcpApprovalResponse::OrHash,
228
+ OpenAI::Realtime::RealtimeMcpListTools::OrHash,
229
+ OpenAI::Realtime::RealtimeMcpToolCall::OrHash,
230
+ OpenAI::Realtime::RealtimeMcpApprovalRequest::OrHash
231
+ )
232
+ ],
233
+ output_audio_format:
234
+ OpenAI::Realtime::RealtimeResponse::OutputAudioFormat::OrSymbol,
235
+ status: OpenAI::Realtime::RealtimeResponse::Status::OrSymbol,
236
+ status_details: OpenAI::Realtime::RealtimeResponseStatus::OrHash,
237
+ temperature: Float,
238
+ usage: OpenAI::Realtime::RealtimeResponseUsage::OrHash,
239
+ voice:
240
+ T.any(String, OpenAI::Realtime::RealtimeResponse::Voice::OrSymbol)
241
+ ).returns(T.attached_class)
242
+ end
243
+ def self.new(
244
+ # The unique ID of the response.
245
+ id: nil,
246
+ # Which conversation the response is added to, determined by the `conversation`
247
+ # field in the `response.create` event. If `auto`, the response will be added to
248
+ # the default conversation and the value of `conversation_id` will be an id like
249
+ # `conv_1234`. If `none`, the response will not be added to any conversation and
250
+ # the value of `conversation_id` will be `null`. If responses are being triggered
251
+ # by server VAD, the response will be added to the default conversation, thus the
252
+ # `conversation_id` will be an id like `conv_1234`.
253
+ conversation_id: nil,
254
+ # Maximum number of output tokens for a single assistant response, inclusive of
255
+ # tool calls, that was used in this response.
256
+ max_output_tokens: nil,
257
+ # Set of 16 key-value pairs that can be attached to an object. This can be useful
258
+ # for storing additional information about the object in a structured format, and
259
+ # querying for objects via API or the dashboard.
260
+ #
261
+ # Keys are strings with a maximum length of 64 characters. Values are strings with
262
+ # a maximum length of 512 characters.
263
+ metadata: nil,
264
+ # The set of modalities the model used to respond. If there are multiple
265
+ # modalities, the model will pick one, for example if `modalities` is
266
+ # `["text", "audio"]`, the model could be responding in either text or audio.
267
+ modalities: nil,
268
+ # The object type, must be `realtime.response`.
269
+ object: nil,
270
+ # The list of output items generated by the response.
271
+ output: nil,
272
+ # The format of output audio. Options are `pcm16`, `g711_ulaw`, or `g711_alaw`.
273
+ output_audio_format: nil,
274
+ # The final status of the response (`completed`, `cancelled`, `failed`, or
275
+ # `incomplete`, `in_progress`).
276
+ status: nil,
277
+ # Additional details about the status.
278
+ status_details: nil,
279
+ # Sampling temperature for the model, limited to [0.6, 1.2]. Defaults to 0.8.
280
+ temperature: nil,
281
+ # Usage statistics for the Response, this will correspond to billing. A Realtime
282
+ # API session will maintain a conversation context and append new Items to the
283
+ # Conversation, thus output from previous turns (text and audio tokens) will
284
+ # become the input for later turns.
285
+ usage: nil,
286
+ # The voice the model used to respond. Current voice options are `alloy`, `ash`,
287
+ # `ballad`, `coral`, `echo`, `sage`, `shimmer`, and `verse`.
288
+ voice: nil
289
+ )
290
+ end
291
+
292
+ sig do
293
+ override.returns(
294
+ {
295
+ id: String,
296
+ conversation_id: String,
297
+ max_output_tokens: T.any(Integer, Symbol),
298
+ metadata: T.nilable(T::Hash[Symbol, String]),
299
+ modalities:
300
+ T::Array[
301
+ OpenAI::Realtime::RealtimeResponse::Modality::OrSymbol
302
+ ],
303
+ object: OpenAI::Realtime::RealtimeResponse::Object::OrSymbol,
304
+ output:
305
+ T::Array[
306
+ T.any(
307
+ OpenAI::Realtime::RealtimeConversationItemSystemMessage,
308
+ OpenAI::Realtime::RealtimeConversationItemUserMessage,
309
+ OpenAI::Realtime::RealtimeConversationItemAssistantMessage,
310
+ OpenAI::Realtime::RealtimeConversationItemFunctionCall,
311
+ OpenAI::Realtime::RealtimeConversationItemFunctionCallOutput,
312
+ OpenAI::Realtime::RealtimeMcpApprovalResponse,
313
+ OpenAI::Realtime::RealtimeMcpListTools,
314
+ OpenAI::Realtime::RealtimeMcpToolCall,
315
+ OpenAI::Realtime::RealtimeMcpApprovalRequest
316
+ )
317
+ ],
318
+ output_audio_format:
319
+ OpenAI::Realtime::RealtimeResponse::OutputAudioFormat::OrSymbol,
320
+ status: OpenAI::Realtime::RealtimeResponse::Status::OrSymbol,
321
+ status_details: OpenAI::Realtime::RealtimeResponseStatus,
322
+ temperature: Float,
323
+ usage: OpenAI::Realtime::RealtimeResponseUsage,
324
+ voice:
325
+ T.any(
326
+ String,
327
+ OpenAI::Realtime::RealtimeResponse::Voice::OrSymbol
328
+ )
329
+ }
330
+ )
331
+ end
332
+ def to_hash
333
+ end
334
+
335
+ # Maximum number of output tokens for a single assistant response, inclusive of
336
+ # tool calls, that was used in this response.
337
+ module MaxOutputTokens
338
+ extend OpenAI::Internal::Type::Union
339
+
340
+ Variants = T.type_alias { T.any(Integer, Symbol) }
341
+
342
+ sig do
343
+ override.returns(
344
+ T::Array[
345
+ OpenAI::Realtime::RealtimeResponse::MaxOutputTokens::Variants
346
+ ]
347
+ )
348
+ end
349
+ def self.variants
350
+ end
351
+ end
352
+
353
+ module Modality
354
+ extend OpenAI::Internal::Type::Enum
355
+
356
+ TaggedSymbol =
357
+ T.type_alias do
358
+ T.all(Symbol, OpenAI::Realtime::RealtimeResponse::Modality)
359
+ end
360
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
361
+
362
+ TEXT =
363
+ T.let(
364
+ :text,
365
+ OpenAI::Realtime::RealtimeResponse::Modality::TaggedSymbol
366
+ )
367
+ AUDIO =
368
+ T.let(
369
+ :audio,
370
+ OpenAI::Realtime::RealtimeResponse::Modality::TaggedSymbol
371
+ )
372
+
373
+ sig do
374
+ override.returns(
375
+ T::Array[
376
+ OpenAI::Realtime::RealtimeResponse::Modality::TaggedSymbol
377
+ ]
378
+ )
379
+ end
380
+ def self.values
381
+ end
382
+ end
383
+
384
+ # The object type, must be `realtime.response`.
385
+ module Object
386
+ extend OpenAI::Internal::Type::Enum
387
+
388
+ TaggedSymbol =
389
+ T.type_alias do
390
+ T.all(Symbol, OpenAI::Realtime::RealtimeResponse::Object)
391
+ end
392
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
393
+
394
+ REALTIME_RESPONSE =
395
+ T.let(
396
+ :"realtime.response",
397
+ OpenAI::Realtime::RealtimeResponse::Object::TaggedSymbol
398
+ )
399
+
400
+ sig do
401
+ override.returns(
402
+ T::Array[OpenAI::Realtime::RealtimeResponse::Object::TaggedSymbol]
403
+ )
404
+ end
405
+ def self.values
406
+ end
407
+ end
408
+
409
+ # The format of output audio. Options are `pcm16`, `g711_ulaw`, or `g711_alaw`.
410
+ module OutputAudioFormat
411
+ extend OpenAI::Internal::Type::Enum
412
+
413
+ TaggedSymbol =
414
+ T.type_alias do
415
+ T.all(
416
+ Symbol,
417
+ OpenAI::Realtime::RealtimeResponse::OutputAudioFormat
418
+ )
419
+ end
420
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
421
+
422
+ PCM16 =
423
+ T.let(
424
+ :pcm16,
425
+ OpenAI::Realtime::RealtimeResponse::OutputAudioFormat::TaggedSymbol
426
+ )
427
+ G711_ULAW =
428
+ T.let(
429
+ :g711_ulaw,
430
+ OpenAI::Realtime::RealtimeResponse::OutputAudioFormat::TaggedSymbol
431
+ )
432
+ G711_ALAW =
433
+ T.let(
434
+ :g711_alaw,
435
+ OpenAI::Realtime::RealtimeResponse::OutputAudioFormat::TaggedSymbol
436
+ )
437
+
438
+ sig do
439
+ override.returns(
440
+ T::Array[
441
+ OpenAI::Realtime::RealtimeResponse::OutputAudioFormat::TaggedSymbol
442
+ ]
443
+ )
444
+ end
445
+ def self.values
446
+ end
447
+ end
448
+
449
+ # The final status of the response (`completed`, `cancelled`, `failed`, or
450
+ # `incomplete`, `in_progress`).
451
+ module Status
452
+ extend OpenAI::Internal::Type::Enum
453
+
454
+ TaggedSymbol =
455
+ T.type_alias do
456
+ T.all(Symbol, OpenAI::Realtime::RealtimeResponse::Status)
457
+ end
458
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
459
+
460
+ COMPLETED =
461
+ T.let(
462
+ :completed,
463
+ OpenAI::Realtime::RealtimeResponse::Status::TaggedSymbol
464
+ )
465
+ CANCELLED =
466
+ T.let(
467
+ :cancelled,
468
+ OpenAI::Realtime::RealtimeResponse::Status::TaggedSymbol
469
+ )
470
+ FAILED =
471
+ T.let(
472
+ :failed,
473
+ OpenAI::Realtime::RealtimeResponse::Status::TaggedSymbol
474
+ )
475
+ INCOMPLETE =
476
+ T.let(
477
+ :incomplete,
478
+ OpenAI::Realtime::RealtimeResponse::Status::TaggedSymbol
479
+ )
480
+ IN_PROGRESS =
481
+ T.let(
482
+ :in_progress,
483
+ OpenAI::Realtime::RealtimeResponse::Status::TaggedSymbol
484
+ )
485
+
486
+ sig do
487
+ override.returns(
488
+ T::Array[OpenAI::Realtime::RealtimeResponse::Status::TaggedSymbol]
489
+ )
490
+ end
491
+ def self.values
492
+ end
493
+ end
494
+
495
+ # The voice the model used to respond. Current voice options are `alloy`, `ash`,
496
+ # `ballad`, `coral`, `echo`, `sage`, `shimmer`, and `verse`.
497
+ module Voice
498
+ extend OpenAI::Internal::Type::Union
499
+
500
+ Variants =
501
+ T.type_alias do
502
+ T.any(
503
+ String,
504
+ OpenAI::Realtime::RealtimeResponse::Voice::TaggedSymbol
505
+ )
506
+ end
507
+
508
+ sig do
509
+ override.returns(
510
+ T::Array[OpenAI::Realtime::RealtimeResponse::Voice::Variants]
511
+ )
512
+ end
513
+ def self.variants
514
+ end
515
+
516
+ TaggedSymbol =
517
+ T.type_alias do
518
+ T.all(Symbol, OpenAI::Realtime::RealtimeResponse::Voice)
519
+ end
520
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
521
+
522
+ ALLOY =
523
+ T.let(
524
+ :alloy,
525
+ OpenAI::Realtime::RealtimeResponse::Voice::TaggedSymbol
526
+ )
527
+ ASH =
528
+ T.let(:ash, OpenAI::Realtime::RealtimeResponse::Voice::TaggedSymbol)
529
+ BALLAD =
530
+ T.let(
531
+ :ballad,
532
+ OpenAI::Realtime::RealtimeResponse::Voice::TaggedSymbol
533
+ )
534
+ CORAL =
535
+ T.let(
536
+ :coral,
537
+ OpenAI::Realtime::RealtimeResponse::Voice::TaggedSymbol
538
+ )
539
+ ECHO =
540
+ T.let(
541
+ :echo,
542
+ OpenAI::Realtime::RealtimeResponse::Voice::TaggedSymbol
543
+ )
544
+ SAGE =
545
+ T.let(
546
+ :sage,
547
+ OpenAI::Realtime::RealtimeResponse::Voice::TaggedSymbol
548
+ )
549
+ SHIMMER =
550
+ T.let(
551
+ :shimmer,
552
+ OpenAI::Realtime::RealtimeResponse::Voice::TaggedSymbol
553
+ )
554
+ VERSE =
555
+ T.let(
556
+ :verse,
557
+ OpenAI::Realtime::RealtimeResponse::Voice::TaggedSymbol
558
+ )
559
+ MARIN =
560
+ T.let(
561
+ :marin,
562
+ OpenAI::Realtime::RealtimeResponse::Voice::TaggedSymbol
563
+ )
564
+ CEDAR =
565
+ T.let(
566
+ :cedar,
567
+ OpenAI::Realtime::RealtimeResponse::Voice::TaggedSymbol
568
+ )
569
+ end
570
+ end
571
+ end
572
+ end
573
+ end